Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Latest 25 from a total of 4,202 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Stake And Unstak... | 18180259 | 572 days ago | IN | 0 ETH | 0.00219569 | ||||
Claim All | 18180255 | 572 days ago | IN | 0 ETH | 0.00114573 | ||||
Stake And Unstak... | 17851091 | 619 days ago | IN | 0 ETH | 0.00257736 | ||||
Claim All | 17851045 | 619 days ago | IN | 0 ETH | 0.00111402 | ||||
Stake And Unstak... | 17828531 | 622 days ago | IN | 0 ETH | 0.00675287 | ||||
Emergency Withdr... | 17758739 | 631 days ago | IN | 0 ETH | 0.00119188 | ||||
Stake And Unstak... | 17722433 | 637 days ago | IN | 0 ETH | 0.01188149 | ||||
Claim All | 17683068 | 642 days ago | IN | 0 ETH | 0.00109117 | ||||
Claim All | 17579693 | 657 days ago | IN | 0 ETH | 0.00103001 | ||||
Stake And Unstak... | 17574201 | 657 days ago | IN | 0 ETH | 0.00215746 | ||||
Claim All | 17464358 | 673 days ago | IN | 0 ETH | 0.00119247 | ||||
Stake And Unstak... | 17418388 | 679 days ago | IN | 0 ETH | 0.00495253 | ||||
Claim All | 17417836 | 679 days ago | IN | 0 ETH | 0.00121322 | ||||
Claim All | 17381771 | 684 days ago | IN | 0 ETH | 0.00273257 | ||||
Claim All | 17352048 | 689 days ago | IN | 0 ETH | 0.00153854 | ||||
Stake And Unstak... | 17234792 | 705 days ago | IN | 0 ETH | 0.01514151 | ||||
Claim All | 17118914 | 721 days ago | IN | 0 ETH | 0.00246374 | ||||
Stake And Unstak... | 17046915 | 732 days ago | IN | 0 ETH | 0.00510292 | ||||
Claim All | 16948210 | 746 days ago | IN | 0 ETH | 0.00260826 | ||||
Claim All | 16930110 | 748 days ago | IN | 0 ETH | 0.00186226 | ||||
Stake And Unstak... | 16928890 | 748 days ago | IN | 0 ETH | 0.00329281 | ||||
Claim All | 16928890 | 748 days ago | IN | 0 ETH | 0.00210468 | ||||
Stake And Unstak... | 16876191 | 756 days ago | IN | 0 ETH | 0.02901873 | ||||
Claim All | 16863249 | 758 days ago | IN | 0 ETH | 0.00182426 | ||||
Claim All | 16829427 | 762 days ago | IN | 0 ETH | 0.00308482 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 16479578 | 811 days ago | 0.0188227 ETH |
Loading...
Loading
Contract Name:
BCCStaking
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-21 */ // File: @openzeppelin/contracts/utils/Context.sol pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File: BCC.sol pragma solidity 0.8.7; contract BCCStaking is Ownable { // Modifiers modifier eoaOnly { require(msg.sender == tx.origin); _; } modifier whenNotPaused { require((!paused) || (msg.sender == owner()), 'The contract is paused!'); _; } // Events event Staked(address indexed from, uint indexed tokenId, uint timestamp); event Unstaked(address indexed from, uint indexed tokenId, uint timestamp); event RewardChanged(uint oldReward, uint newReward, uint timestamp); // Storage Variables uint oldBaseReward; uint baseRewardPerSecond; uint rewardChangedAt; mapping(uint => address) public ownerOf; mapping(address => uint) public lastClaimOfAccount; mapping(address => uint[]) public addressToOwnedTokens; bool public paused = false; IERC721Enumerable nftContract; IERC20 bccContract; // Constructor constructor(IERC721Enumerable nftContract_, IERC20 bccContract_, uint baseRewardPerDay_, bool paused_) { bccContract = bccContract_; nftContract = nftContract_; paused = paused_; baseRewardPerSecond = ((baseRewardPerDay_ * 1e18) / 1 days) + 1; } // External functions function stakeAndUnstakeMultiple(uint[] memory stakeTokenIds, uint[] memory unstakeTokenIds) whenNotPaused eoaOnly external { require(nftContract.isApprovedForAll(msg.sender,address(this)),"Approve the contract to transfer your tokens first!"); claimAll(); for(uint i = 0; i < stakeTokenIds.length; i++) { stake(stakeTokenIds[i]); } for(uint i = 0; i < unstakeTokenIds.length; i++) { unstake(unstakeTokenIds[i]); } } function stakeMultiple(uint[] memory tokenIds) whenNotPaused eoaOnly external { require(nftContract.isApprovedForAll(msg.sender,address(this)),"Approve the contract to transfer your tokens first!"); claimAll(); for(uint i = 0; i < tokenIds.length; i++) { stake(tokenIds[i]); } } function unstakeMultiple(uint[] memory tokenIds) whenNotPaused eoaOnly external { claimAll(); for(uint i = 0; i < tokenIds.length; i++) { unstake(tokenIds[i]); } } function claimAll() whenNotPaused eoaOnly public { uint reward = getClaimAmountOfAccount(msg.sender); if(reward > 0) { bccContract.transfer(msg.sender,reward); } lastClaimOfAccount[msg.sender] = block.timestamp; } // View Only function getTokensOfAccount(address account) external view returns(uint[] memory tokens) { return addressToOwnedTokens[account]; } function getClaimAmountOfAccount(address account) public view returns(uint total) { uint tokens = addressToOwnedTokens[account].length; if(tokens == 0) { return 0; } uint rewardChangedAt_ = rewardChangedAt; uint lastClaim = lastClaimOfAccount[account]; uint endTimestamp = block.timestamp; if(endTimestamp < rewardChangedAt_ || rewardChangedAt_ == 0) { return (((endTimestamp - lastClaim) * ( rewardChangedAt_ == 0 ? baseRewardPerSecond : oldBaseReward)) * tokens); } else if(lastClaim > rewardChangedAt_) { return (((endTimestamp - lastClaim) * baseRewardPerSecond) * tokens); } else { return ((((endTimestamp - rewardChangedAt_) * baseRewardPerSecond) + ((rewardChangedAt_ - lastClaim) * oldBaseReward)) * tokens); } } function balanceOf(address account) public view returns(uint balance) { return addressToOwnedTokens[account].length; } function rewardPerDayPerToken() external view returns(uint rewardPerDay) { if(block.timestamp < rewardChangedAt || rewardChangedAt == 0) return ((rewardChangedAt == 0 ? baseRewardPerSecond : oldBaseReward) * 86400) / 1e18; return (baseRewardPerSecond * 86400) / 1e18; } // Internal function stake(uint tokenId) internal { nftContract.transferFrom(msg.sender,address(this),tokenId); ownerOf[tokenId] = msg.sender; addressToOwnedTokens[msg.sender].push(tokenId); emit Staked(msg.sender,tokenId,block.timestamp); } function unstake(uint tokenId) internal { require(ownerOf[tokenId] == msg.sender, "Only the owner of the token can withdraw it!"); bool removed = false; uint[] memory ownedTokens = addressToOwnedTokens[msg.sender]; for( uint i = 0; i < ownedTokens.length; i++) { if(ownedTokens[i] == tokenId) { addressToOwnedTokens[msg.sender][i] = ownedTokens[ownedTokens.length - 1]; addressToOwnedTokens[msg.sender].pop(); removed = true; break; } } require(removed, "Internal error!"); ownerOf[tokenId] = address(0); nftContract.transferFrom(address(this),msg.sender,tokenId); emit Unstaked(msg.sender,tokenId,block.timestamp); } // Owner Only function setBaseRewardPerDay(uint perDay, uint timestamp) external onlyOwner { oldBaseReward = baseRewardPerSecond; rewardChangedAt = timestamp; baseRewardPerSecond = ((perDay * 1e18) / 1 days) + 1; emit RewardChanged(oldBaseReward, baseRewardPerSecond, timestamp); } function airdrop(address[] memory targets,uint[] memory amounts) external onlyOwner { require(targets.length == amounts.length, "Invalid data"); for(uint i = 0; i < targets.length; i++) { bccContract.transfer(targets[i],amounts[i]); } } function setContracts(IERC721Enumerable nftContract_, IERC20 bccContract_) external onlyOwner { bccContract = bccContract_; nftContract = nftContract_; } function setPaused(bool state) external onlyOwner { paused = state; } function setEmergency(bool state) external onlyOwner { emergency = state; } function emergencyWithdrawBCCTokens(uint amount) external onlyOwner { bccContract.transfer(msg.sender,amount); } // Emergency Only bool internal emergency = false; function emergencyReturnToken(uint tokenId) eoaOnly external { require(emergency, 'You can only use this function in case of an emergency'); unstake(tokenId); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IERC721Enumerable","name":"nftContract_","type":"address"},{"internalType":"contract IERC20","name":"bccContract_","type":"address"},{"internalType":"uint256","name":"baseRewardPerDay_","type":"uint256"},{"internalType":"bool","name":"paused_","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldReward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newReward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"RewardChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressToOwnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"emergencyReturnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emergencyWithdrawBCCTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getClaimAmountOfAccount","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getTokensOfAccount","outputs":[{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimOfAccount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerDayPerToken","outputs":[{"internalType":"uint256","name":"rewardPerDay","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"perDay","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"setBaseRewardPerDay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC721Enumerable","name":"nftContract_","type":"address"},{"internalType":"contract IERC20","name":"bccContract_","type":"address"}],"name":"setContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setEmergency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"stakeTokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"unstakeTokenIds","type":"uint256[]"}],"name":"stakeAndUnstakeMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stakeMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstakeMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526007805460ff191690556008805460ff60a01b191690553480156200002857600080fd5b50604051620019b7380380620019b78339810160408190526200004b916200012b565b6200005633620000db565b600880546001600160a01b0319166001600160a01b0385811691909117909155600780546001600160a81b0319166101009287169290920260ff19169190911782151517905562015180620000b483670de0b6b3a7640000620001c9565b620000c09190620001a6565b620000cd9060016200018b565b600255506200021a92505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600080608085870312156200014257600080fd5b84516200014f8162000201565b6020860151909450620001628162000201565b60408601516060870151919450925080151581146200018057600080fd5b939692955090935050565b60008219821115620001a157620001a1620001eb565b500190565b600082620001c457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615620001e657620001e6620001eb565b500290565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146200021757600080fd5b50565b61178d806200022a6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063b2f954ae1161007c578063b2f954ae146102da578063b69ee923146102fa578063d1058e5914610302578063d8952a491461030a578063e4bfe05e1461031d578063f2fde38b1461033057600080fd5b806370a0823114610265578063715018a61461028e578063761f9032146102965780638da5cb5b146102b6578063a9c69553146102c757600080fd5b80635ac317171161010a5780635ac31717146101bb5780635c975abb146101ce5780636088f1ed146101eb5780636352211e146101fe578063640f15e91461023f578063672434821461025257600080fd5b80630501d5561461014757806316c38b3c1461015c578063238b1d9a1461016f578063367fb1231461018257806344030f5c14610195575b600080fd5b61015a61015536600461144b565b610343565b005b61015a61016a36600461144b565b610394565b61015a61017d3660046114d7565b6103d1565b61015a6101903660046113fe565b61047f565b6101a86101a33660046112a8565b6105f2565b6040519081526020015b60405180910390f35b61015a6101c93660046113c1565b6106d3565b6007546101db9060ff1681565b60405190151581526020016101b2565b6101a86101f93660046112cc565b610756565b61022761020c3660046114be565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101b2565b61015a61024d3660046114be565b610787565b61015a6102603660046112f8565b610835565b6101a86102733660046112a8565b6001600160a01b031660009081526006602052604090205490565b61015a61098c565b6101a86102a43660046112a8565b60056020526000908152604090205481565b6000546001600160a01b0316610227565b61015a6102d53660046113c1565b6109c2565b6102ed6102e83660046112a8565b610ae2565b6040516101b291906114f9565b6101a8610b4e565b61015a610bba565b61015a610318366004611485565b610cac565b61015a61032b3660046114be565b610d11565b61015a61033e3660046112a8565b610da1565b6000546001600160a01b031633146103765760405162461bcd60e51b815260040161036d90611590565b60405180910390fd5b60088054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146103be5760405162461bcd60e51b815260040161036d90611590565b6007805460ff1916911515919091179055565b6000546001600160a01b031633146103fb5760405162461bcd60e51b815260040161036d90611590565b60025460015560038190556201518061041c83670de0b6b3a764000061168b565b6104269190611669565b610431906001611651565b60028190556001546040805191825260208201929092529081018290527f6453e8c2331a41f0e9b69ad7b009c62d37bc815e44dd889d5e03749225d8b68f9060600160405180910390a15050565b60075460ff16158061049b57506000546001600160a01b031633145b6104b75760405162461bcd60e51b815260040161036d906115c5565b3332146104c357600080fd5b60075460405163e985e9c560e01b81523360048201523060248201526101009091046001600160a01b03169063e985e9c59060440160206040518083038186803b15801561051057600080fd5b505afa158015610524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105489190611468565b6105645760405162461bcd60e51b815260040161036d9061153d565b61056c610bba565b60005b82518110156105ac5761059a83828151811061058d5761058d611708565b6020026020010151610e39565b806105a4816116c1565b91505061056f565b5060005b81518110156105ed576105db8282815181106105ce576105ce611708565b6020026020010151610f1e565b806105e5816116c1565b9150506105b0565b505050565b6001600160a01b038116600090815260066020526040812054806106195750600092915050565b6003546001600160a01b0384166000908152600560205260409020544282811080610642575082155b15610682578383156106565760015461065a565b6002545b61066484846116aa565b61066e919061168b565b610678919061168b565b9695505050505050565b8282111561069957600254849061066484846116aa565b60015484906106a884866116aa565b6106b2919061168b565b6002546106bf86856116aa565b6106c9919061168b565b61066e9190611651565b60075460ff1615806106ef57506000546001600160a01b031633145b61070b5760405162461bcd60e51b815260040161036d906115c5565b33321461071757600080fd5b61071f610bba565b60005b8151811015610752576107408282815181106105ce576105ce611708565b8061074a816116c1565b915050610722565b5050565b6006602052816000526040600020818154811061077257600080fd5b90600052602060002001600091509150505481565b6000546001600160a01b031633146107b15760405162461bcd60e51b815260040161036d90611590565b60085460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b1580156107fd57600080fd5b505af1158015610811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107529190611468565b6000546001600160a01b0316331461085f5760405162461bcd60e51b815260040161036d90611590565b805182511461089f5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206461746160a01b604482015260640161036d565b60005b82518110156105ed5760085483516001600160a01b039091169063a9059cbb908590849081106108d4576108d4611708565b60200260200101518484815181106108ee576108ee611708565b60200260200101516040518363ffffffff1660e01b81526004016109279291906001600160a01b03929092168252602082015260400190565b602060405180830381600087803b15801561094157600080fd5b505af1158015610955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109799190611468565b5080610984816116c1565b9150506108a2565b6000546001600160a01b031633146109b65760405162461bcd60e51b815260040161036d90611590565b6109c060006111e6565b565b60075460ff1615806109de57506000546001600160a01b031633145b6109fa5760405162461bcd60e51b815260040161036d906115c5565b333214610a0657600080fd5b60075460405163e985e9c560e01b81523360048201523060248201526101009091046001600160a01b03169063e985e9c59060440160206040518083038186803b158015610a5357600080fd5b505afa158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611468565b610aa75760405162461bcd60e51b815260040161036d9061153d565b610aaf610bba565b60005b815181101561075257610ad082828151811061058d5761058d611708565b80610ada816116c1565b915050610ab2565b6001600160a01b038116600090815260066020908152604091829020805483518184028101840190945280845260609392830182828015610b4257602002820191906000526020600020905b815481526020019060010190808311610b2e575b50505050509050919050565b6000600354421080610b605750600354155b15610ba057670de0b6b3a7640000600354600014610b8057600154610b84565b6002545b610b91906201518061168b565b610b9b9190611669565b905090565b670de0b6b3a764000060025462015180610b91919061168b565b60075460ff161580610bd657506000546001600160a01b031633145b610bf25760405162461bcd60e51b815260040161036d906115c5565b333214610bfe57600080fd5b6000610c09336105f2565b90508015610c975760085460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b158015610c5d57600080fd5b505af1158015610c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c959190611468565b505b50336000908152600560205260409020429055565b6000546001600160a01b03163314610cd65760405162461bcd60e51b815260040161036d90611590565b600880546001600160a01b0319166001600160a01b0392831617905560078054610100600160a81b0319166101009390921692909202179055565b333214610d1d57600080fd5b600854600160a01b900460ff16610d955760405162461bcd60e51b815260206004820152603660248201527f596f752063616e206f6e6c792075736520746869732066756e6374696f6e20696044820152756e2063617365206f6620616e20656d657267656e637960501b606482015260840161036d565b610d9e81610f1e565b50565b6000546001600160a01b03163314610dcb5760405162461bcd60e51b815260040161036d90611590565b6001600160a01b038116610e305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161036d565b610d9e816111e6565b6007546040516323b872dd60e01b8152336004820152306024820152604481018390526101009091046001600160a01b0316906323b872dd90606401600060405180830381600087803b158015610e8f57600080fd5b505af1158015610ea3573d6000803e3d6000fd5b505050600082815260046020908152604080832080546001600160a01b0319163390811790915580845260068352818420805460018101825590855293839020909301859055514281528493507f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a350565b6000818152600460205260409020546001600160a01b03163314610f995760405162461bcd60e51b815260206004820152602c60248201527f4f6e6c7920746865206f776e6572206f662074686520746f6b656e2063616e2060448201526b77697468647261772069742160a01b606482015260840161036d565b33600090815260066020908152604080832080548251818502810185019093528083528493830182828015610fed57602002820191906000526020600020905b815481526020019060010190808311610fd9575b5050505050905060005b81518110156110db578382828151811061101357611013611708565b602002602001015114156110c957816001835161103091906116aa565b8151811061104057611040611708565b602002602001015160066000336001600160a01b03166001600160a01b03168152602001908152602001600020828154811061107e5761107e611708565b60009182526020808320909101929092553381526006909152604090208054806110aa576110aa6116f2565b60019003818190600052602060002001600090559055600192506110db565b806110d3816116c1565b915050610ff7565b508161111b5760405162461bcd60e51b815260206004820152600f60248201526e496e7465726e616c206572726f722160881b604482015260640161036d565b60008381526004602081905260409182902080546001600160a01b031916905560075491516323b872dd60e01b81523091810191909152336024820152604481018590526101009091046001600160a01b0316906323b872dd90606401600060405180830381600087803b15801561119257600080fd5b505af11580156111a6573d6000803e3d6000fd5b50506040514281528592503391507f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e9060200160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082601f83011261124757600080fd5b8135602061125c6112578361162d565b6115fc565b80838252828201915082860187848660051b890101111561127c57600080fd5b60005b8581101561129b5781358452928401929084019060010161127f565b5090979650505050505050565b6000602082840312156112ba57600080fd5b81356112c581611734565b9392505050565b600080604083850312156112df57600080fd5b82356112ea81611734565b946020939093013593505050565b6000806040838503121561130b57600080fd5b823567ffffffffffffffff8082111561132357600080fd5b818501915085601f83011261133757600080fd5b813560206113476112578361162d565b8083825282820191508286018a848660051b890101111561136757600080fd5b600096505b8487101561139357803561137f81611734565b83526001969096019591830191830161136c565b50965050860135925050808211156113aa57600080fd5b506113b785828601611236565b9150509250929050565b6000602082840312156113d357600080fd5b813567ffffffffffffffff8111156113ea57600080fd5b6113f684828501611236565b949350505050565b6000806040838503121561141157600080fd5b823567ffffffffffffffff8082111561142957600080fd5b61143586838701611236565b935060208501359150808211156113aa57600080fd5b60006020828403121561145d57600080fd5b81356112c581611749565b60006020828403121561147a57600080fd5b81516112c581611749565b6000806040838503121561149857600080fd5b82356114a381611734565b915060208301356114b381611734565b809150509250929050565b6000602082840312156114d057600080fd5b5035919050565b600080604083850312156114ea57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561153157835183529284019291840191600101611515565b50909695505050505050565b60208082526033908201527f417070726f76652074686520636f6e747261637420746f207472616e7366657260408201527220796f757220746f6b656e732066697273742160681b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54686520636f6e74726163742069732070617573656421000000000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff811182821017156116255761162561171e565b604052919050565b600067ffffffffffffffff8211156116475761164761171e565b5060051b60200190565b60008219821115611664576116646116dc565b500190565b60008261168657634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156116a5576116a56116dc565b500290565b6000828210156116bc576116bc6116dc565b500390565b60006000198214156116d5576116d56116dc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610d9e57600080fd5b8015158114610d9e57600080fdfea2646970667358221220b38aa120dae1e0c78423768c5e11962fcc8c8d8198842438759fb958f50504d164736f6c63430008070033000000000000000000000000d8537b0ea5b21ca39af493525a3c54b6fa8f32b3000000000000000000000000e1f59c2b1e0fe659830fe312e59d5e1e4f734deb00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063b2f954ae1161007c578063b2f954ae146102da578063b69ee923146102fa578063d1058e5914610302578063d8952a491461030a578063e4bfe05e1461031d578063f2fde38b1461033057600080fd5b806370a0823114610265578063715018a61461028e578063761f9032146102965780638da5cb5b146102b6578063a9c69553146102c757600080fd5b80635ac317171161010a5780635ac31717146101bb5780635c975abb146101ce5780636088f1ed146101eb5780636352211e146101fe578063640f15e91461023f578063672434821461025257600080fd5b80630501d5561461014757806316c38b3c1461015c578063238b1d9a1461016f578063367fb1231461018257806344030f5c14610195575b600080fd5b61015a61015536600461144b565b610343565b005b61015a61016a36600461144b565b610394565b61015a61017d3660046114d7565b6103d1565b61015a6101903660046113fe565b61047f565b6101a86101a33660046112a8565b6105f2565b6040519081526020015b60405180910390f35b61015a6101c93660046113c1565b6106d3565b6007546101db9060ff1681565b60405190151581526020016101b2565b6101a86101f93660046112cc565b610756565b61022761020c3660046114be565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101b2565b61015a61024d3660046114be565b610787565b61015a6102603660046112f8565b610835565b6101a86102733660046112a8565b6001600160a01b031660009081526006602052604090205490565b61015a61098c565b6101a86102a43660046112a8565b60056020526000908152604090205481565b6000546001600160a01b0316610227565b61015a6102d53660046113c1565b6109c2565b6102ed6102e83660046112a8565b610ae2565b6040516101b291906114f9565b6101a8610b4e565b61015a610bba565b61015a610318366004611485565b610cac565b61015a61032b3660046114be565b610d11565b61015a61033e3660046112a8565b610da1565b6000546001600160a01b031633146103765760405162461bcd60e51b815260040161036d90611590565b60405180910390fd5b60088054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146103be5760405162461bcd60e51b815260040161036d90611590565b6007805460ff1916911515919091179055565b6000546001600160a01b031633146103fb5760405162461bcd60e51b815260040161036d90611590565b60025460015560038190556201518061041c83670de0b6b3a764000061168b565b6104269190611669565b610431906001611651565b60028190556001546040805191825260208201929092529081018290527f6453e8c2331a41f0e9b69ad7b009c62d37bc815e44dd889d5e03749225d8b68f9060600160405180910390a15050565b60075460ff16158061049b57506000546001600160a01b031633145b6104b75760405162461bcd60e51b815260040161036d906115c5565b3332146104c357600080fd5b60075460405163e985e9c560e01b81523360048201523060248201526101009091046001600160a01b03169063e985e9c59060440160206040518083038186803b15801561051057600080fd5b505afa158015610524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105489190611468565b6105645760405162461bcd60e51b815260040161036d9061153d565b61056c610bba565b60005b82518110156105ac5761059a83828151811061058d5761058d611708565b6020026020010151610e39565b806105a4816116c1565b91505061056f565b5060005b81518110156105ed576105db8282815181106105ce576105ce611708565b6020026020010151610f1e565b806105e5816116c1565b9150506105b0565b505050565b6001600160a01b038116600090815260066020526040812054806106195750600092915050565b6003546001600160a01b0384166000908152600560205260409020544282811080610642575082155b15610682578383156106565760015461065a565b6002545b61066484846116aa565b61066e919061168b565b610678919061168b565b9695505050505050565b8282111561069957600254849061066484846116aa565b60015484906106a884866116aa565b6106b2919061168b565b6002546106bf86856116aa565b6106c9919061168b565b61066e9190611651565b60075460ff1615806106ef57506000546001600160a01b031633145b61070b5760405162461bcd60e51b815260040161036d906115c5565b33321461071757600080fd5b61071f610bba565b60005b8151811015610752576107408282815181106105ce576105ce611708565b8061074a816116c1565b915050610722565b5050565b6006602052816000526040600020818154811061077257600080fd5b90600052602060002001600091509150505481565b6000546001600160a01b031633146107b15760405162461bcd60e51b815260040161036d90611590565b60085460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b1580156107fd57600080fd5b505af1158015610811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107529190611468565b6000546001600160a01b0316331461085f5760405162461bcd60e51b815260040161036d90611590565b805182511461089f5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206461746160a01b604482015260640161036d565b60005b82518110156105ed5760085483516001600160a01b039091169063a9059cbb908590849081106108d4576108d4611708565b60200260200101518484815181106108ee576108ee611708565b60200260200101516040518363ffffffff1660e01b81526004016109279291906001600160a01b03929092168252602082015260400190565b602060405180830381600087803b15801561094157600080fd5b505af1158015610955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109799190611468565b5080610984816116c1565b9150506108a2565b6000546001600160a01b031633146109b65760405162461bcd60e51b815260040161036d90611590565b6109c060006111e6565b565b60075460ff1615806109de57506000546001600160a01b031633145b6109fa5760405162461bcd60e51b815260040161036d906115c5565b333214610a0657600080fd5b60075460405163e985e9c560e01b81523360048201523060248201526101009091046001600160a01b03169063e985e9c59060440160206040518083038186803b158015610a5357600080fd5b505afa158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611468565b610aa75760405162461bcd60e51b815260040161036d9061153d565b610aaf610bba565b60005b815181101561075257610ad082828151811061058d5761058d611708565b80610ada816116c1565b915050610ab2565b6001600160a01b038116600090815260066020908152604091829020805483518184028101840190945280845260609392830182828015610b4257602002820191906000526020600020905b815481526020019060010190808311610b2e575b50505050509050919050565b6000600354421080610b605750600354155b15610ba057670de0b6b3a7640000600354600014610b8057600154610b84565b6002545b610b91906201518061168b565b610b9b9190611669565b905090565b670de0b6b3a764000060025462015180610b91919061168b565b60075460ff161580610bd657506000546001600160a01b031633145b610bf25760405162461bcd60e51b815260040161036d906115c5565b333214610bfe57600080fd5b6000610c09336105f2565b90508015610c975760085460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b158015610c5d57600080fd5b505af1158015610c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c959190611468565b505b50336000908152600560205260409020429055565b6000546001600160a01b03163314610cd65760405162461bcd60e51b815260040161036d90611590565b600880546001600160a01b0319166001600160a01b0392831617905560078054610100600160a81b0319166101009390921692909202179055565b333214610d1d57600080fd5b600854600160a01b900460ff16610d955760405162461bcd60e51b815260206004820152603660248201527f596f752063616e206f6e6c792075736520746869732066756e6374696f6e20696044820152756e2063617365206f6620616e20656d657267656e637960501b606482015260840161036d565b610d9e81610f1e565b50565b6000546001600160a01b03163314610dcb5760405162461bcd60e51b815260040161036d90611590565b6001600160a01b038116610e305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161036d565b610d9e816111e6565b6007546040516323b872dd60e01b8152336004820152306024820152604481018390526101009091046001600160a01b0316906323b872dd90606401600060405180830381600087803b158015610e8f57600080fd5b505af1158015610ea3573d6000803e3d6000fd5b505050600082815260046020908152604080832080546001600160a01b0319163390811790915580845260068352818420805460018101825590855293839020909301859055514281528493507f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90910160405180910390a350565b6000818152600460205260409020546001600160a01b03163314610f995760405162461bcd60e51b815260206004820152602c60248201527f4f6e6c7920746865206f776e6572206f662074686520746f6b656e2063616e2060448201526b77697468647261772069742160a01b606482015260840161036d565b33600090815260066020908152604080832080548251818502810185019093528083528493830182828015610fed57602002820191906000526020600020905b815481526020019060010190808311610fd9575b5050505050905060005b81518110156110db578382828151811061101357611013611708565b602002602001015114156110c957816001835161103091906116aa565b8151811061104057611040611708565b602002602001015160066000336001600160a01b03166001600160a01b03168152602001908152602001600020828154811061107e5761107e611708565b60009182526020808320909101929092553381526006909152604090208054806110aa576110aa6116f2565b60019003818190600052602060002001600090559055600192506110db565b806110d3816116c1565b915050610ff7565b508161111b5760405162461bcd60e51b815260206004820152600f60248201526e496e7465726e616c206572726f722160881b604482015260640161036d565b60008381526004602081905260409182902080546001600160a01b031916905560075491516323b872dd60e01b81523091810191909152336024820152604481018590526101009091046001600160a01b0316906323b872dd90606401600060405180830381600087803b15801561119257600080fd5b505af11580156111a6573d6000803e3d6000fd5b50506040514281528592503391507f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e9060200160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082601f83011261124757600080fd5b8135602061125c6112578361162d565b6115fc565b80838252828201915082860187848660051b890101111561127c57600080fd5b60005b8581101561129b5781358452928401929084019060010161127f565b5090979650505050505050565b6000602082840312156112ba57600080fd5b81356112c581611734565b9392505050565b600080604083850312156112df57600080fd5b82356112ea81611734565b946020939093013593505050565b6000806040838503121561130b57600080fd5b823567ffffffffffffffff8082111561132357600080fd5b818501915085601f83011261133757600080fd5b813560206113476112578361162d565b8083825282820191508286018a848660051b890101111561136757600080fd5b600096505b8487101561139357803561137f81611734565b83526001969096019591830191830161136c565b50965050860135925050808211156113aa57600080fd5b506113b785828601611236565b9150509250929050565b6000602082840312156113d357600080fd5b813567ffffffffffffffff8111156113ea57600080fd5b6113f684828501611236565b949350505050565b6000806040838503121561141157600080fd5b823567ffffffffffffffff8082111561142957600080fd5b61143586838701611236565b935060208501359150808211156113aa57600080fd5b60006020828403121561145d57600080fd5b81356112c581611749565b60006020828403121561147a57600080fd5b81516112c581611749565b6000806040838503121561149857600080fd5b82356114a381611734565b915060208301356114b381611734565b809150509250929050565b6000602082840312156114d057600080fd5b5035919050565b600080604083850312156114ea57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561153157835183529284019291840191600101611515565b50909695505050505050565b60208082526033908201527f417070726f76652074686520636f6e747261637420746f207472616e7366657260408201527220796f757220746f6b656e732066697273742160681b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54686520636f6e74726163742069732070617573656421000000000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff811182821017156116255761162561171e565b604052919050565b600067ffffffffffffffff8211156116475761164761171e565b5060051b60200190565b60008219821115611664576116646116dc565b500190565b60008261168657634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156116a5576116a56116dc565b500290565b6000828210156116bc576116bc6116dc565b500390565b60006000198214156116d5576116d56116dc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610d9e57600080fd5b8015158114610d9e57600080fdfea2646970667358221220b38aa120dae1e0c78423768c5e11962fcc8c8d8198842438759fb958f50504d164736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d8537b0ea5b21ca39af493525a3c54b6fa8f32b3000000000000000000000000e1f59c2b1e0fe659830fe312e59d5e1e4f734deb00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : nftContract_ (address): 0xD8537b0eA5B21cA39AF493525A3C54b6Fa8F32B3
Arg [1] : bccContract_ (address): 0xe1f59c2B1e0fE659830fE312e59d5E1E4f734dEb
Arg [2] : baseRewardPerDay_ (uint256): 50
Arg [3] : paused_ (bool): False
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000d8537b0ea5b21ca39af493525a3c54b6fa8f32b3
Arg [1] : 000000000000000000000000e1f59c2b1e0fe659830fe312e59d5e1e4f734deb
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
12649:6787:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18925:89;;;;;;:::i;:::-;;:::i;:::-;;18830:83;;;;;;:::i;:::-;;:::i;18029:308::-;;;;;;:::i;:::-;;:::i;13986:501::-;;;;;;:::i;:::-;;:::i;15538:867::-;;;;;;:::i;:::-;;:::i;:::-;;;10026:25:1;;;10014:2;9999:18;15538:867:0;;;;;;;;14853:208;;;;;;:::i;:::-;;:::i;13511:26::-;;;;;;;;;;;;6792:14:1;;6785:22;6767:41;;6755:2;6740:18;13511:26:0;6627:187:1;13444:54:0;;;;;;:::i;:::-;;:::i;13341:39::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;13341:39:0;;;;;;-1:-1:-1;;;;;4978:32:1;;;4960:51;;4948:2;4933:18;13341:39:0;4814:203:1;19026:126:0;;;;;;:::i;:::-;;:::i;18349:281::-;;;;;;:::i;:::-;;:::i;16417:132::-;;;;;;:::i;:::-;-1:-1:-1;;;;;16505:29:0;16473:12;16505:29;;;:20;:29;;;;;:36;;16417:132;2488:94;;;:::i;13387:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;1837:87;1883:7;1910:6;-1:-1:-1;;;;;1910:6:0;1837:87;;14499:342;;;;;;:::i;:::-;;:::i;15382:144::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16561:305::-;;;:::i;15073:267::-;;;:::i;18642:176::-;;;;;;:::i;:::-;;:::i;19243:184::-;;;;;;:::i;:::-;;:::i;2737:192::-;;;;;;:::i;:::-;;:::i;18925:89::-;1883:7;1910:6;-1:-1:-1;;;;;1910:6:0;705:10;2057:23;2049:68;;;;-1:-1:-1;;;2049:68:0;;;;;;;:::i;:::-;;;;;;;;;18989:9:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;18989:17:0::1;-1:-1:-1::0;;;;18989:17:0;;::::1;::::0;;;::::1;::::0;;18925:89::o;18830:83::-;1883:7;1910:6;-1:-1:-1;;;;;1910:6:0;705:10;2057:23;2049:68;;;;-1:-1:-1;;;2049:68:0;;;;;;;:::i;:::-;18891:6:::1;:14:::0;;-1:-1:-1;;18891:14:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18830:83::o;18029:308::-;1883:7;1910:6;-1:-1:-1;;;;;1910:6:0;705:10;2057:23;2049:68;;;;-1:-1:-1;;;2049:68:0;;;;;;;:::i;:::-;18133:19:::1;::::0;18117:13:::1;:35:::0;18163:15:::1;:27:::0;;;18242:6:::1;18225:13;:6:::0;18234:4:::1;18225:13;:::i;:::-;18224:24;;;;:::i;:::-;18223:30;::::0;18252:1:::1;18223:30;:::i;:::-;18201:19;:52:::0;;;18283:13:::1;::::0;18269:60:::1;::::0;;10264:25:1;;;10320:2;10305:18;;10298:34;;;;10348:18;;;10341:34;;;18269:60:0::1;::::0;10252:2:1;10237:18;18269:60:0::1;;;;;;;18029:308:::0;;:::o;13986:501::-;12853:6;;;;12852:7;;12851:36;;-1:-1:-1;1883:7:0;1910:6;-1:-1:-1;;;;;1910:6:0;12865:10;:21;12851:36;12843:72;;;;-1:-1:-1;;;12843:72:0;;;;;;;:::i;:::-;12753:10:::1;12767:9;12753:23;12745:32;;;::::0;::::1;;14129:11:::2;::::0;:54:::2;::::0;-1:-1:-1;;;14129:54:0;;14158:10:::2;14129:54;::::0;::::2;5234:34:1::0;14177:4:0::2;5284:18:1::0;;;5277:43;14129:11:0::2;::::0;;::::2;-1:-1:-1::0;;;;;14129:11:0::2;::::0;:28:::2;::::0;5169:18:1;;14129:54:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14121:117;;;;-1:-1:-1::0;;;14121:117:0::2;;;;;;;:::i;:::-;14249:10;:8;:10::i;:::-;14274:6;14270:97;14290:13;:20;14286:1;:24;14270:97;;;14332:23;14338:13;14352:1;14338:16;;;;;;;;:::i;:::-;;;;;;;14332:5;:23::i;:::-;14312:3:::0;::::2;::::0;::::2;:::i;:::-;;;;14270:97;;;;14381:6;14377:103;14397:15;:22;14393:1;:26;14377:103;;;14441:27;14449:15;14465:1;14449:18;;;;;;;;:::i;:::-;;;;;;;14441:7;:27::i;:::-;14421:3:::0;::::2;::::0;::::2;:::i;:::-;;;;14377:103;;;;13986:501:::0;;:::o;15538:867::-;-1:-1:-1;;;;;15645:29:0;;15608:10;15645:29;;;:20;:29;;;;;:36;15695:11;15692:51;;-1:-1:-1;15730:1:0;;15538:867;-1:-1:-1;;15538:867:0:o;15692:51::-;15777:15;;-1:-1:-1;;;;;15820:27:0;;15753:21;15820:27;;;:18;:27;;;;;;15878:15;15907:31;;;;:56;;-1:-1:-1;15942:21:0;;15907:56;15904:494;;;16084:6;16020:21;;:59;;16066:13;;16020:59;;;16044:19;;16020:59;15990:24;16005:9;15990:12;:24;:::i;:::-;15989:91;;;;:::i;:::-;15988:102;;;;:::i;:::-;15980:111;15538:867;-1:-1:-1;;;;;;15538:867:0:o;15904:494::-;16124:16;16112:9;:28;16109:289;;;16195:19;;16218:6;;16167:24;16182:9;16167:12;:24;:::i;16109:289::-;16361:13;;16379:6;;16329:28;16348:9;16329:16;:28;:::i;:::-;16328:46;;;;:::i;:::-;16304:19;;16269:31;16284:16;16269:12;:31;:::i;:::-;16268:55;;;;:::i;:::-;16267:108;;;;:::i;14853:208::-;12853:6;;;;12852:7;;12851:36;;-1:-1:-1;1883:7:0;1910:6;-1:-1:-1;;;;;1910:6:0;12865:10;:21;12851:36;12843:72;;;;-1:-1:-1;;;12843:72:0;;;;;;;:::i;:::-;12753:10:::1;12767:9;12753:23;12745:32;;;::::0;::::1;;14944:10:::2;:8;:10::i;:::-;14969:6;14965:89;14985:8;:15;14981:1;:19;14965:89;;;15022:20;15030:8;15039:1;15030:11;;;;;;;;:::i;15022:20::-;15002:3:::0;::::2;::::0;::::2;:::i;:::-;;;;14965:89;;;;14853:208:::0;:::o;13444:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19026:126::-;1883:7;1910:6;-1:-1:-1;;;;;1910:6:0;705:10;2057:23;2049:68;;;;-1:-1:-1;;;2049:68:0;;;;;;;:::i;:::-;19105:11:::1;::::0;:39:::1;::::0;-1:-1:-1;;;19105:39:0;;19126:10:::1;19105:39;::::0;::::1;5885:51:1::0;5952:18;;;5945:34;;;-1:-1:-1;;;;;19105:11:0;;::::1;::::0;:20:::1;::::0;5858:18:1;;19105:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18349:281::-:0;1883:7;1910:6;-1:-1:-1;;;;;1910:6:0;705:10;2057:23;2049:68;;;;-1:-1:-1;;;2049:68:0;;;;;;;:::i;:::-;18470:7:::1;:14;18452:7;:14;:32;18444:57;;;::::0;-1:-1:-1;;;18444:57:0;;7848:2:1;18444:57:0::1;::::0;::::1;7830:21:1::0;7887:2;7867:18;;;7860:30;-1:-1:-1;;;7906:18:1;;;7899:42;7958:18;;18444:57:0::1;7646:336:1::0;18444:57:0::1;18516:6;18512:111;18532:7;:14;18528:1;:18;18512:111;;;18568:11;::::0;18589:10;;-1:-1:-1;;;;;18568:11:0;;::::1;::::0;:20:::1;::::0;18589:7;;18597:1;;18589:10;::::1;;;;;:::i;:::-;;;;;;;18600:7;18608:1;18600:10;;;;;;;;:::i;:::-;;;;;;;18568:43;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5903:32:1;;;;5885:51;;5967:2;5952:18;;5945:34;5873:2;5858:18;;5711:274;18568:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18548:3:0;::::1;::::0;::::1;:::i;:::-;;;;18512:111;;2488:94:::0;1883:7;1910:6;-1:-1:-1;;;;;1910:6:0;705:10;2057:23;2049:68;;;;-1:-1:-1;;;2049:68:0;;;;;;;:::i;:::-;2553:21:::1;2571:1;2553:9;:21::i;:::-;2488:94::o:0;14499:342::-;12853:6;;;;12852:7;;12851:36;;-1:-1:-1;1883:7:0;1910:6;-1:-1:-1;;;;;1910:6:0;12865:10;:21;12851:36;12843:72;;;;-1:-1:-1;;;12843:72:0;;;;;;;:::i;:::-;12753:10:::1;12767:9;12753:23;12745:32;;;::::0;::::1;;14596:11:::2;::::0;:54:::2;::::0;-1:-1:-1;;;14596:54:0;;14625:10:::2;14596:54;::::0;::::2;5234:34:1::0;14644:4:0::2;5284:18:1::0;;;5277:43;14596:11:0::2;::::0;;::::2;-1:-1:-1::0;;;;;14596:11:0::2;::::0;:28:::2;::::0;5169:18:1;;14596:54:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14588:117;;;;-1:-1:-1::0;;;14588:117:0::2;;;;;;;:::i;:::-;14716:10;:8;:10::i;:::-;14741:6;14737:87;14757:8;:15;14753:1;:19;14737:87;;;14794:18;14800:8;14809:1;14800:11;;;;;;;;:::i;14794:18::-;14774:3:::0;::::2;::::0;::::2;:::i;:::-;;;;14737:87;;15382:144:::0;-1:-1:-1;;;;;15489:29:0;;;;;;:20;:29;;;;;;;;;15482:36;;;;;;;;;;;;;;;;;15449:20;;15482:36;;;15489:29;15482:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15382:144;;;:::o;16561:305::-;16615:17;16666:15;;16648;:33;:57;;;-1:-1:-1;16685:15:0;;:20;16648:57;16645:159;;;16800:4;16729:15;;16748:1;16729:20;:58;;16774:13;;16729:58;;;16752:19;;16729:58;16728:68;;16791:5;16728:68;:::i;:::-;16727:77;;;;:::i;:::-;16720:84;;16561:305;:::o;16645:159::-;16854:4;16823:19;;16845:5;16823:27;;;;:::i;15073:267::-;12853:6;;;;12852:7;;12851:36;;-1:-1:-1;1883:7:0;1910:6;-1:-1:-1;;;;;1910:6:0;12865:10;:21;12851:36;12843:72;;;;-1:-1:-1;;;12843:72:0;;;;;;;:::i;:::-;12753:10:::1;12767:9;12753:23;12745:32;;;::::0;::::1;;15133:11:::2;15147:35;15171:10;15147:23;:35::i;:::-;15133:49:::0;-1:-1:-1;15196:10:0;;15193:81:::2;;15223:11;::::0;:39:::2;::::0;-1:-1:-1;;;15223:39:0;;15244:10:::2;15223:39;::::0;::::2;5885:51:1::0;5952:18;;;5945:34;;;-1:-1:-1;;;;;15223:11:0;;::::2;::::0;:20:::2;::::0;5858:18:1;;15223:39:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15193:81;-1:-1:-1::0;15303:10:0::2;15284:30;::::0;;;:18:::2;:30;::::0;;;;15317:15:::2;15284:48:::0;;15073:267::o;18642:176::-;1883:7;1910:6;-1:-1:-1;;;;;1910:6:0;705:10;2057:23;2049:68;;;;-1:-1:-1;;;2049:68:0;;;;;;;:::i;:::-;18747:11:::1;:26:::0;;-1:-1:-1;;;;;;18747:26:0::1;-1:-1:-1::0;;;;;18747:26:0;;::::1;;::::0;;18784:11:::1;:26:::0;;-1:-1:-1;;;;;;18784:26:0::1;18747;18784::::0;;;::::1;::::0;;;::::1;;::::0;;18642:176::o;19243:184::-;12753:10;12767:9;12753:23;12745:32;;;;;;19323:9:::1;::::0;-1:-1:-1;;;19323:9:0;::::1;;;19315:76;;;::::0;-1:-1:-1;;;19315:76:0;;9246:2:1;19315:76:0::1;::::0;::::1;9228:21:1::0;9285:2;9265:18;;;9258:30;9324:34;9304:18;;;9297:62;-1:-1:-1;;;9375:18:1;;;9368:52;9437:19;;19315:76:0::1;9044:418:1::0;19315:76:0::1;19402:16;19410:7;19402;:16::i;:::-;19243:184:::0;:::o;2737:192::-;1883:7;1910:6;-1:-1:-1;;;;;1910:6:0;705:10;2057:23;2049:68;;;;-1:-1:-1;;;2049:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2826:22:0;::::1;2818:73;;;::::0;-1:-1:-1;;;2818:73:0;;7021:2:1;2818:73:0::1;::::0;::::1;7003:21:1::0;7060:2;7040:18;;;7033:30;7099:34;7079:18;;;7072:62;-1:-1:-1;;;7150:18:1;;;7143:36;7196:19;;2818:73:0::1;6819:402:1::0;2818:73:0::1;2902:19;2912:8;2902:9;:19::i;16907:270::-:0;16956:11;;:58;;-1:-1:-1;;;16956:58:0;;16981:10;16956:58;;;5571:34:1;17000:4:0;5621:18:1;;;5614:43;5673:18;;;5666:34;;;16956:11:0;;;;-1:-1:-1;;;;;16956:11:0;;:24;;5506:18:1;;16956:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17025:16:0;;;;:7;:16;;;;;;;;:29;;-1:-1:-1;;;;;;17025:29:0;17044:10;17025:29;;;;;;17065:32;;;:20;:32;;;;;:46;;-1:-1:-1;17065:46:0;;;;;;;;;;;;;;;;;17127:42;17153:15;10026:25:1;;17025:16:0;;-1:-1:-1;17127:42:0;;9999:18:1;17127:42:0;;;;;;;16907:270;:::o;17189:797::-;17248:16;;;;:7;:16;;;;;;-1:-1:-1;;;;;17248:16:0;17268:10;17248:30;17240:87;;;;-1:-1:-1;;;17240:87:0;;9669:2:1;17240:87:0;;;9651:21:1;9708:2;9688:18;;;9681:30;9747:34;9727:18;;;9720:62;-1:-1:-1;;;9798:18:1;;;9791:42;9850:19;;17240:87:0;9467:408:1;17240:87:0;17418:10;17338:12;17397:32;;;:20;:32;;;;;;;;17369:60;;;;;;;;;;;;;;;;;17338:12;;17369:60;;17397:32;17369:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17445:6;17440:324;17461:11;:18;17457:1;:22;17440:324;;;17522:7;17504:11;17516:1;17504:14;;;;;;;;:::i;:::-;;;;;;;:25;17501:252;;;17588:11;17621:1;17600:11;:18;:22;;;;:::i;:::-;17588:35;;;;;;;;:::i;:::-;;;;;;;17550:20;:32;17571:10;-1:-1:-1;;;;;17550:32:0;-1:-1:-1;;;;;17550:32:0;;;;;;;;;;;;17583:1;17550:35;;;;;;;;:::i;:::-;;;;;;;;;;;;:73;;;;17663:10;17642:32;;:20;:32;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;17709:4;17699:14;;17732:5;;17501:252;17481:3;;;;:::i;:::-;;;;17440:324;;;;17782:7;17774:35;;;;-1:-1:-1;;;17774:35:0;;8902:2:1;17774:35:0;;;8884:21:1;8941:2;8921:18;;;8914:30;-1:-1:-1;;;8960:18:1;;;8953:45;9015:18;;17774:35:0;8700:339:1;17774:35:0;17847:1;17820:16;;;:7;:16;;;;;;;;;:29;;-1:-1:-1;;;;;;17820:29:0;;;17860:11;;:58;;-1:-1:-1;;;17860:58:0;;17893:4;17860:58;;;5571:34:1;;;;17899:10:0;5621:18:1;;;5614:43;5673:18;;;5666:34;;;17820:29:0;17860:11;;;-1:-1:-1;;;;;17860:11:0;;:24;;5506:18:1;;17860:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17934:44:0;;17962:15;10026:25:1;;17954:7:0;;-1:-1:-1;17943:10:0;;-1:-1:-1;17934:44:0;;10014:2:1;9999:18;17934:44:0;;;;;;;17229:757;;17189:797;:::o;2937:173::-;2993:16;3012:6;;-1:-1:-1;;;;;3029:17:0;;;-1:-1:-1;;;;;;3029:17:0;;;;;;3062:40;;3012:6;;;;;;;3062:40;;2993:16;3062:40;2982:128;2937:173;:::o;14:673:1:-;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;175:6;162:20;201:4;225:60;241:43;281:2;241:43;:::i;:::-;225:60;:::i;:::-;307:3;331:2;326:3;319:15;359:2;354:3;350:12;343:19;;394:2;386:6;382:15;446:3;441:2;435;432:1;428:10;420:6;416:23;412:32;409:41;406:61;;;463:1;460;453:12;406:61;485:1;495:163;509:2;506:1;503:9;495:163;;;566:17;;554:30;;604:12;;;;636;;;;527:1;520:9;495:163;;;-1:-1:-1;676:5:1;;14:673;-1:-1:-1;;;;;;;14:673:1:o;692:247::-;751:6;804:2;792:9;783:7;779:23;775:32;772:52;;;820:1;817;810:12;772:52;859:9;846:23;878:31;903:5;878:31;:::i;:::-;928:5;692:247;-1:-1:-1;;;692:247:1:o;944:315::-;1012:6;1020;1073:2;1061:9;1052:7;1048:23;1044:32;1041:52;;;1089:1;1086;1079:12;1041:52;1128:9;1115:23;1147:31;1172:5;1147:31;:::i;:::-;1197:5;1249:2;1234:18;;;;1221:32;;-1:-1:-1;;;944:315:1:o;1264:1226::-;1382:6;1390;1443:2;1431:9;1422:7;1418:23;1414:32;1411:52;;;1459:1;1456;1449:12;1411:52;1499:9;1486:23;1528:18;1569:2;1561:6;1558:14;1555:34;;;1585:1;1582;1575:12;1555:34;1623:6;1612:9;1608:22;1598:32;;1668:7;1661:4;1657:2;1653:13;1649:27;1639:55;;1690:1;1687;1680:12;1639:55;1726:2;1713:16;1748:4;1772:60;1788:43;1828:2;1788:43;:::i;1772:60::-;1854:3;1878:2;1873:3;1866:15;1906:2;1901:3;1897:12;1890:19;;1937:2;1933;1929:11;1985:7;1980:2;1974;1971:1;1967:10;1963:2;1959:19;1955:28;1952:41;1949:61;;;2006:1;2003;1996:12;1949:61;2028:1;2019:10;;2038:238;2052:2;2049:1;2046:9;2038:238;;;2123:3;2110:17;2140:31;2165:5;2140:31;:::i;:::-;2184:18;;2070:1;2063:9;;;;;2222:12;;;;2254;;2038:238;;;-1:-1:-1;2295:5:1;-1:-1:-1;;2338:18:1;;2325:32;;-1:-1:-1;;2369:16:1;;;2366:36;;;2398:1;2395;2388:12;2366:36;;2421:63;2476:7;2465:8;2454:9;2450:24;2421:63;:::i;:::-;2411:73;;;1264:1226;;;;;:::o;2495:348::-;2579:6;2632:2;2620:9;2611:7;2607:23;2603:32;2600:52;;;2648:1;2645;2638:12;2600:52;2688:9;2675:23;2721:18;2713:6;2710:30;2707:50;;;2753:1;2750;2743:12;2707:50;2776:61;2829:7;2820:6;2809:9;2805:22;2776:61;:::i;:::-;2766:71;2495:348;-1:-1:-1;;;;2495:348:1:o;2848:595::-;2966:6;2974;3027:2;3015:9;3006:7;3002:23;2998:32;2995:52;;;3043:1;3040;3033:12;2995:52;3083:9;3070:23;3112:18;3153:2;3145:6;3142:14;3139:34;;;3169:1;3166;3159:12;3139:34;3192:61;3245:7;3236:6;3225:9;3221:22;3192:61;:::i;:::-;3182:71;;3306:2;3295:9;3291:18;3278:32;3262:48;;3335:2;3325:8;3322:16;3319:36;;;3351:1;3348;3341:12;3448:241;3504:6;3557:2;3545:9;3536:7;3532:23;3528:32;3525:52;;;3573:1;3570;3563:12;3525:52;3612:9;3599:23;3631:28;3653:5;3631:28;:::i;3694:245::-;3761:6;3814:2;3802:9;3793:7;3789:23;3785:32;3782:52;;;3830:1;3827;3820:12;3782:52;3862:9;3856:16;3881:28;3903:5;3881:28;:::i;3944:427::-;4051:6;4059;4112:2;4100:9;4091:7;4087:23;4083:32;4080:52;;;4128:1;4125;4118:12;4080:52;4167:9;4154:23;4186:31;4211:5;4186:31;:::i;:::-;4236:5;-1:-1:-1;4293:2:1;4278:18;;4265:32;4306:33;4265:32;4306:33;:::i;:::-;4358:7;4348:17;;;3944:427;;;;;:::o;4376:180::-;4435:6;4488:2;4476:9;4467:7;4463:23;4459:32;4456:52;;;4504:1;4501;4494:12;4456:52;-1:-1:-1;4527:23:1;;4376:180;-1:-1:-1;4376:180:1:o;4561:248::-;4629:6;4637;4690:2;4678:9;4669:7;4665:23;4661:32;4658:52;;;4706:1;4703;4696:12;4658:52;-1:-1:-1;;4729:23:1;;;4799:2;4784:18;;;4771:32;;-1:-1:-1;4561:248:1:o;5990:632::-;6161:2;6213:21;;;6283:13;;6186:18;;;6305:22;;;6132:4;;6161:2;6384:15;;;;6358:2;6343:18;;;6132:4;6427:169;6441:6;6438:1;6435:13;6427:169;;;6502:13;;6490:26;;6571:15;;;;6536:12;;;;6463:1;6456:9;6427:169;;;-1:-1:-1;6613:3:1;;5990:632;-1:-1:-1;;;;;;5990:632:1:o;7226:415::-;7428:2;7410:21;;;7467:2;7447:18;;;7440:30;7506:34;7501:2;7486:18;;7479:62;-1:-1:-1;;;7572:2:1;7557:18;;7550:49;7631:3;7616:19;;7226:415::o;7987:356::-;8189:2;8171:21;;;8208:18;;;8201:30;8267:34;8262:2;8247:18;;8240:62;8334:2;8319:18;;7987:356::o;8348:347::-;8550:2;8532:21;;;8589:2;8569:18;;;8562:30;8628:25;8623:2;8608:18;;8601:53;8686:2;8671:18;;8348:347::o;10386:275::-;10457:2;10451:9;10522:2;10503:13;;-1:-1:-1;;10499:27:1;10487:40;;10557:18;10542:34;;10578:22;;;10539:62;10536:88;;;10604:18;;:::i;:::-;10640:2;10633:22;10386:275;;-1:-1:-1;10386:275:1:o;10666:183::-;10726:4;10759:18;10751:6;10748:30;10745:56;;;10781:18;;:::i;:::-;-1:-1:-1;10826:1:1;10822:14;10838:4;10818:25;;10666:183::o;10854:128::-;10894:3;10925:1;10921:6;10918:1;10915:13;10912:39;;;10931:18;;:::i;:::-;-1:-1:-1;10967:9:1;;10854:128::o;10987:217::-;11027:1;11053;11043:132;;11097:10;11092:3;11088:20;11085:1;11078:31;11132:4;11129:1;11122:15;11160:4;11157:1;11150:15;11043:132;-1:-1:-1;11189:9:1;;10987:217::o;11209:168::-;11249:7;11315:1;11311;11307:6;11303:14;11300:1;11297:21;11292:1;11285:9;11278:17;11274:45;11271:71;;;11322:18;;:::i;:::-;-1:-1:-1;11362:9:1;;11209:168::o;11382:125::-;11422:4;11450:1;11447;11444:8;11441:34;;;11455:18;;:::i;:::-;-1:-1:-1;11492:9:1;;11382:125::o;11512:135::-;11551:3;-1:-1:-1;;11572:17:1;;11569:43;;;11592:18;;:::i;:::-;-1:-1:-1;11639:1:1;11628:13;;11512:135::o;11652:127::-;11713:10;11708:3;11704:20;11701:1;11694:31;11744:4;11741:1;11734:15;11768:4;11765:1;11758:15;11784:127;11845:10;11840:3;11836:20;11833:1;11826:31;11876:4;11873:1;11866:15;11900:4;11897:1;11890:15;11916:127;11977:10;11972:3;11968:20;11965:1;11958:31;12008:4;12005:1;11998:15;12032:4;12029:1;12022:15;12048:127;12109:10;12104:3;12100:20;12097:1;12090:31;12140:4;12137:1;12130:15;12164:4;12161:1;12154:15;12180:131;-1:-1:-1;;;;;12255:31:1;;12245:42;;12235:70;;12301:1;12298;12291:12;12316:118;12402:5;12395:13;12388:21;12381:5;12378:32;12368:60;;12424:1;12421;12414:12
Swarm Source
ipfs://b38aa120dae1e0c78423768c5e11962fcc8c8d8198842438759fb958f50504d1
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.