More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 12,075 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 68730697 | 47 days ago | IN | 0 POL | 0.00221129 | ||||
Transfer | 68565377 | 51 days ago | IN | 0 POL | 0.03833956 | ||||
Approve | 66728823 | 97 days ago | IN | 0 POL | 0.0023137 | ||||
Approve | 65626381 | 125 days ago | IN | 0 POL | 0.02058793 | ||||
Transfer | 65307546 | 133 days ago | IN | 0 POL | 0.00326777 | ||||
Approve | 64718766 | 148 days ago | IN | 0 POL | 0.01417761 | ||||
Transfer | 64717358 | 148 days ago | IN | 0 POL | 0.02287775 | ||||
Permit | 64231125 | 160 days ago | IN | 0 POL | 0.00210914 | ||||
Approve | 63348530 | 182 days ago | IN | 0 POL | 0.00572966 | ||||
Approve | 63332769 | 183 days ago | IN | 0 POL | 0.00081977 | ||||
Transfer | 62289019 | 209 days ago | IN | 0 POL | 0.002568 | ||||
Approve | 61751759 | 222 days ago | IN | 0 POL | 0.0013965 | ||||
Approve | 61626263 | 225 days ago | IN | 0 POL | 0.0023137 | ||||
Transfer | 61379742 | 231 days ago | IN | 0 POL | 0.00463958 | ||||
Approve | 60743572 | 247 days ago | IN | 0 POL | 0.00080077 | ||||
Purchase Utility | 60424075 | 255 days ago | IN | 0 POL | 0.00238386 | ||||
Purchase Utility | 60424055 | 255 days ago | IN | 0 POL | 0.00340986 | ||||
Purchase Utility | 60351598 | 257 days ago | IN | 0 POL | 0.00255222 | ||||
Approve | 60242308 | 260 days ago | IN | 0 POL | 0.00146622 | ||||
Purchase Utility | 59305762 | 283 days ago | IN | 0 POL | 0.00255186 | ||||
Purchase Utility | 59092080 | 289 days ago | IN | 0 POL | 0.00360521 | ||||
Purchase Utility | 59092080 | 289 days ago | IN | 0 POL | 0.0041314 | ||||
Purchase Utility | 57758462 | 322 days ago | IN | 0 POL | 0.00255222 | ||||
Approve | 57627443 | 326 days ago | IN | 0 POL | 0.0023275 | ||||
Purchase Utility | 56768615 | 348 days ago | IN | 0 POL | 0.00345477 |
Loading...
Loading
Contract Name:
SpitToken
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.12; import "./ERC20.sol"; import "./FXBaseChildTunnel.sol"; import "./Ownable.sol"; /** __ _ / /| | __ _ _ __ ___ __ _/\ /\___ _ __ ___ ___ / / | |/ _` | '_ ` _ \ / _` \ \ / / _ \ '__/ __|/ _ \ / /__| | (_| | | | | | | (_| |\ V / __/ | \__ \ __/ \____/_|\__,_|_| |_| |_|\__,_| \_/ \___|_| |___/\___| **/ /// @title $SPIT Token /// @author delta devs (https://twitter.com/deltadevelopers) enum TokenType { StaticLlama, AnimatedLlama, SilverBoost, GoldBoost, PixletCanvas, LlamaDraws } contract SpitToken is ERC20, FxBaseChildTunnel, Ownable { /*/////////////////////////////////////////////////////////////// STORAGE /////////////////////////////////////////////////////////////*/ struct Rewards { uint256 staticLlama; uint256 animatedLlama; uint256 silverEnergy; uint256 goldEnergy; uint256 pixletCanvas; uint256 llamaDraws; } /// @notice The current reward rates per token type. Rewards public rewards; /// @notice Keeps track of the staking balances (how much is being staked) of each token type for all holders. mapping(address => mapping(uint256 => uint256)) public balances; /// @notice Keeps track of the timestamp of when a holder last withdrew their rewards. mapping(address => uint256) public lastUpdated; /*/////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(address _fxChild) FxBaseChildTunnel(_fxChild) ERC20("Spit Token", "SPIT", 18) { rewards.staticLlama = (uint256(10) * 1e18) / 1 days; rewards.animatedLlama = (uint256(30) * 1e18) / 1 days; rewards.silverEnergy = (uint256(4) * 1e18) / 1 days; rewards.goldEnergy = (uint256(12) * 1e18) / 1 days; rewards.llamaDraws = (uint256(1) * 1e18) / 1 days; rewards.pixletCanvas = (uint256(1) * 1e18) / 1 days; _mint(address(this), 100_000_000 * 1e18); uint256 allocation = (30_000_000 + 5_000_000 + 5_000_000 + 2_500_000) * 1e18; balanceOf[address(this)] -= allocation; unchecked { balanceOf[ 0xcc5cDaB325689Bcd654aB8611c528e60CC8CBe6A ] += (30_000_000 * 1e18); balanceOf[ 0x58B96f5C8ef1CdD7e12a9b71Bbbe575E7B26b142 ] += (5_000_000 * 1e18); balanceOf[ 0x58caDf06fcC222f573F81B08B6Cc156e420D35d7 ] += (5_000_000 * 1e18); balanceOf[ 0x5D31E4A33470e1a15e54aAdD1d913b613fd0E9ED ] += (2_500_000 * 1e18); } emit Transfer( address(this), 0xcc5cDaB325689Bcd654aB8611c528e60CC8CBe6A, 30_000_000 * 1e18 ); emit Transfer( address(this), 0x58B96f5C8ef1CdD7e12a9b71Bbbe575E7B26b142, 5_000_000 * 1e18 ); emit Transfer( address(this), 0x58caDf06fcC222f573F81B08B6Cc156e420D35d7, 5_000_000 * 1e18 ); emit Transfer( address(this), 0x5D31E4A33470e1a15e54aAdD1d913b613fd0E9ED, 2_500_000 * 1e18 ); } /*/////////////////////////////////////////////////////////////// STAKING LOGIC //////////////////////////////////////////////////////////////*/ /// @notice Called when withdrawing rewards. $SPIT is transferred to the address, and the lastUpdated field is updated. /// @param account The address to mint to. modifier updateReward(address account) { uint256 amount = earned(account); balanceOf[address(this)] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[account] += amount; } lastUpdated[account] = block.timestamp; emit Transfer(address(this), account, amount); _; } /// @notice Internal call to stake an amount of a specific token type. /// @param account The address which will be staking. /// @param tokenType The token type to stake. /// @param amount The amount to stake. function processStake( address account, TokenType tokenType, uint256 amount ) internal updateReward(account) { balances[account][uint256(tokenType)] += amount; } /// @notice Internal call to unstake an amount of a specific token type. /// @param account The address which will be unstaking. /// @param tokenType The token type to unstake. /// @param amount The amount to unstake. function processUnstake( address account, TokenType tokenType, uint256 amount ) internal updateReward(account) { balances[account][uint256(tokenType)] -= amount; } /** * @notice Process message received from FxChild * @param stateId unique state id * @param sender root message sender * @param message bytes message that was sent from Root Tunnel */ function _processMessageFromRoot( uint256 stateId, address sender, bytes memory message ) internal override validateSender(sender) { (address from, uint256 token, uint256 count, bool action) = abi.decode( message, (address, uint256, uint256, bool) ); action ? processStake(from, TokenType(token), count) : processUnstake(from, TokenType(token), count); } /*/////////////////////////////////////////////////////////////// USER UTILITIES //////////////////////////////////////////////////////////////*/ /// @notice Forwards a user's purchase in SPIT to this contract using EIP-2612 /// @dev This function exists so that the permit and transfer can be done in a single transaction. function purchaseUtility( address owner, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) public updateReward(owner) { permit(owner, msg.sender, value, deadline, v, r, s); transferFrom(owner, address(this), value); } /// @notice Calculates the total amount of rewards accumulated for a staker, for staking all owned token types. /// @dev Calculates based on when the staker last withdrew rewards, and compares it with the current block's timestamp. /// @param account The account to calculate the accumulated rewards for. function earned(address account) public view returns (uint256) { return spitPerSecond(account) * (block.timestamp - lastUpdated[account]); } /// @notice Calculates the current balance of the user including the unclaimed rewards. /// @dev Unclaimed rewards are withdrawn automatically when a utility purchase is made or an unstake/stake occurs. function totalBalance(address account) public view returns (uint256) { return balanceOf[account] + earned(account); } /// @notice Calculates the amount of SPIT earned per second by the given user /// @param account The account to calculate the accumulated rewards for. function spitPerSecond(address account) public view returns (uint256) { return ((balances[account][0] * rewards.staticLlama) + (balances[account][1] * rewards.animatedLlama) + (min(balances[account][2], balances[account][0]) * rewards.silverEnergy) + (min(balances[account][3], balances[account][1]) * rewards.goldEnergy) + (balances[account][4] * rewards.pixletCanvas) + (balances[account][5] * rewards.llamaDraws)); } /*/////////////////////////////////////////////////////////////// ADMIN UTILITIES //////////////////////////////////////////////////////////////*/ /// @notice Allows the contract owner to burn SPIT owned by the contract. function burn(uint256 amount) public onlyOwner { _burn(address(this), amount); } /// @notice Allows the contract owner to airdrop SPIT owned by the contract. function airdrop(address[] calldata accounts, uint256[] calldata amounts) public onlyOwner { require(accounts.length == amounts.length); for(uint i = 0; i < accounts.length; i++) { uint amount = amounts[i]; balanceOf[address(this)] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[accounts[i]] += amount; } emit Transfer(address(this), accounts[i], amount); } } /// @notice Allows the contract owner to mint SPIT to the contract. function mint(uint256 amount) public onlyOwner { _mint(address(this), amount); } /// @notice Withdraw $SPIT being held on this contract to the requested address. /// @param recipient The address to withdraw the funds to. /// @param amount The amount of SPIT to withdraw function withdrawSpit(address recipient, uint256 amount) public onlyOwner { balanceOf[address(this)] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[recipient] += amount; } emit Transfer(address(this), recipient, amount); } /// @notice Allows the contract deployer to sets the reward rates for each token type. /// @param staticLlama The reward rate for staking a static llama. /// @param animatedLlama The reward rate for staking an animated llama. /// @param silverEnergy The reward rate for staking a silver llama boost. /// @param goldEnergy The reward rate for staking a gold llama boost. /// @param pixletCanvas The reward rate for staking a pixlet canvas. function setRewardRates( uint256 staticLlama, uint256 animatedLlama, uint256 silverEnergy, uint256 goldEnergy, uint256 pixletCanvas, uint256 llamaDraws ) public onlyOwner { rewards.staticLlama = staticLlama; rewards.animatedLlama = animatedLlama; rewards.silverEnergy = silverEnergy; rewards.goldEnergy = goldEnergy; rewards.pixletCanvas = pixletCanvas; rewards.llamaDraws = llamaDraws; } function updateFxRootRunnel(address _fxRootTunnel) external onlyOwner { fxRootTunnel = _fxRootTunnel; } /*/////////////////////////////////////////////////////////////// HELPERS //////////////////////////////////////////////////////////////*/ function min(uint256 x, uint256 y) internal pure returns (uint256) { return x < y ? x : y; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Modern and gas efficient ERC20 + EIP-2612 implementation. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC20.sol) /// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol) /// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it. abstract contract ERC20 { /*/////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 amount); event Approval(address indexed owner, address indexed spender, uint256 amount); /*/////////////////////////////////////////////////////////////// METADATA STORAGE //////////////////////////////////////////////////////////////*/ string public name; string public symbol; uint8 public immutable decimals; /*/////////////////////////////////////////////////////////////// ERC20 STORAGE //////////////////////////////////////////////////////////////*/ uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; /*/////////////////////////////////////////////////////////////// EIP-2612 STORAGE //////////////////////////////////////////////////////////////*/ bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); uint256 internal immutable INITIAL_CHAIN_ID; bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR; mapping(address => uint256) public nonces; /*/////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor( string memory _name, string memory _symbol, uint8 _decimals ) { name = _name; symbol = _symbol; decimals = _decimals; INITIAL_CHAIN_ID = block.chainid; INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator(); } /*/////////////////////////////////////////////////////////////// ERC20 LOGIC //////////////////////////////////////////////////////////////*/ function approve(address spender, uint256 amount) public virtual returns (bool) { allowance[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address to, uint256 amount) public virtual returns (bool) { balanceOf[msg.sender] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(msg.sender, to, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual returns (bool) { uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals. if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount; balanceOf[from] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(from, to, amount); return true; } /*/////////////////////////////////////////////////////////////// EIP-2612 LOGIC //////////////////////////////////////////////////////////////*/ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) public virtual { require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED"); // Unchecked because the only math done is incrementing // the owner's nonce which cannot realistically overflow. unchecked { bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR(), keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER"); allowance[recoveredAddress][spender] = value; } emit Approval(owner, spender, value); } function DOMAIN_SEPARATOR() public view virtual returns (bytes32) { return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator(); } function computeDomainSeparator() internal view virtual returns (bytes32) { return keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(name)), keccak256("1"), block.chainid, address(this) ) ); } /*/////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint(address to, uint256 amount) internal virtual { totalSupply += amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(address(0), to, amount); } function _burn(address from, uint256 amount) internal virtual { balanceOf[from] -= amount; // Cannot underflow because a user's balance // will never be larger than the total supply. unchecked { totalSupply -= amount; } emit Transfer(from, address(0), amount); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // IFxMessageProcessor represents interface to process message interface IFxMessageProcessor { function processMessageFromRoot( uint256 stateId, address rootMessageSender, bytes calldata data ) external; } /** * @notice Mock child tunnel contract to receive and send message from L2 */ abstract contract FxBaseChildTunnel is IFxMessageProcessor { // MessageTunnel on L1 will get data from this event event MessageSent(bytes message); // fx child address public fxChild; // fx root tunnel address public fxRootTunnel; constructor(address _fxChild) { fxChild = _fxChild; } // Sender must be fxRootTunnel in case of ERC20 tunnel modifier validateSender(address sender) { require(sender == fxRootTunnel, "FxBaseChildTunnel: INVALID_SENDER_FROM_ROOT"); _; } // set fxRootTunnel if not set already function setFxRootTunnel(address _fxRootTunnel) external { require(fxRootTunnel == address(0x0), "FxBaseChildTunnel: ROOT_TUNNEL_ALREADY_SET"); fxRootTunnel = _fxRootTunnel; } function processMessageFromRoot( uint256 stateId, address rootMessageSender, bytes calldata data ) external override { require(msg.sender == fxChild, "FxBaseChildTunnel: INVALID_SENDER"); _processMessageFromRoot(stateId, rootMessageSender, data); } /** * @notice Emit message that can be received on Root Tunnel * @dev Call the internal function when need to emit message * @param message bytes message that will be sent to Root Tunnel * some message examples - * abi.encode(tokenId); * abi.encode(tokenId, tokenMetadata); * abi.encode(messageType, messageData); */ function _sendMessageToRoot(bytes memory message) internal { emit MessageSent(message); } /** * @notice Process message received from Root Tunnel * @dev function needs to be implemented to handle message as per requirement * This is called by onStateReceive function. * Since it is called via a system call, any event will not be emitted during its execution. * @param stateId unique state id * @param sender root message sender * @param message bytes message that was sent from Root Tunnel */ function _processMessageFromRoot( uint256 stateId, address sender, bytes memory message ) internal virtual; }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.10; error NotOwner(); // https://github.com/m1guelpf/erc721-drop/blob/main/src/LilOwnable.sol abstract contract Ownable { address internal _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); modifier onlyOwner() { require(_owner == msg.sender); _; } constructor() { _owner = msg.sender; } function owner() external view returns (address) { return _owner; } function transferOwnership(address _newOwner) external { if (msg.sender != _owner) revert NotOwner(); _owner = _newOwner; } function renounceOwnership() public { if (msg.sender != _owner) revert NotOwner(); _owner = address(0); } function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) { return interfaceId == 0x7f5828d0; // ERC165 Interface ID for ERC173 } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_fxChild","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"}],"name":"MessageSent","type":"event"},{"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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fxChild","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fxRootTunnel","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastUpdated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","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":"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"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stateId","type":"uint256"},{"internalType":"address","name":"rootMessageSender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"processMessageFromRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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"}],"name":"purchaseUtility","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewards","outputs":[{"internalType":"uint256","name":"staticLlama","type":"uint256"},{"internalType":"uint256","name":"animatedLlama","type":"uint256"},{"internalType":"uint256","name":"silverEnergy","type":"uint256"},{"internalType":"uint256","name":"goldEnergy","type":"uint256"},{"internalType":"uint256","name":"pixletCanvas","type":"uint256"},{"internalType":"uint256","name":"llamaDraws","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_fxRootTunnel","type":"address"}],"name":"setFxRootTunnel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"staticLlama","type":"uint256"},{"internalType":"uint256","name":"animatedLlama","type":"uint256"},{"internalType":"uint256","name":"silverEnergy","type":"uint256"},{"internalType":"uint256","name":"goldEnergy","type":"uint256"},{"internalType":"uint256","name":"pixletCanvas","type":"uint256"},{"internalType":"uint256","name":"llamaDraws","type":"uint256"}],"name":"setRewardRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"spitPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"totalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fxRootTunnel","type":"address"}],"name":"updateFxRootRunnel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawSpit","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e06040523480156200001157600080fd5b506040516200264d3803806200264d8339810160408190526200003491620005aa565b604080518082018252600a81526929b834ba102a37b5b2b760b11b60208083019182528351808501909452600484526314d4125560e21b908401528151849391601291620000859160009162000504565b5081516200009b90600190602085019062000504565b5060ff81166080524660a052620000b16200040c565b60c0525050600680546001600160a01b039093166001600160a01b031993841617905550600880549091163317905562015180620000f9600a670de0b6b3a7640000620005f2565b62000105919062000614565b6009556201518062000121601e670de0b6b3a7640000620005f2565b6200012d919062000614565b600a5562015180620001496004670de0b6b3a7640000620005f2565b62000155919062000614565b600b556201518062000171600c670de0b6b3a7640000620005f2565b6200017d919062000614565b600c5562015180620001996001670de0b6b3a7640000620005f2565b620001a5919062000614565b600e5562015180620001c16001670de0b6b3a7640000620005f2565b620001cd919062000614565b600d55620001e7306a52b7d2dcc80cd2e4000000620004a8565b30600090815260036020526040812080546a2327b99dd505733a800000928392916200021590849062000637565b9091555050600360209081527f0551b56a5f263bfefedbcb4bc1f7c3fbf3ef24df3a934bd0a2331ff25e54b83a80546a18d0bf423c03d8de0000009081019091557f68faadd0a6fb6124a1181eb8d65095d91aa37944ca5d44edef8262bb460fe99580546a0422ca8b0a00a4250000009081019091557f42131c8053be2cc290e562a573cc75ca7362ba6caf767be05e3ccdc90cde18b480549091019055735d31e4a33470e1a15e54aadd1d913b613fd0e9ed6000527f74a96a185cc1aa45fb002e8b6ca774581877fb4d0740ce1fbbbf8e07b7f2b7f180546a021165458500521280000001905560405190815273cc5cdab325689bcd654ab8611c528e60cc8cbe6a9130916000805160206200262d833981519152910160405180910390a36040516a0422ca8b0a00a42500000081527358b96f5c8ef1cdd7e12a9b71bbbe575e7b26b1429030906000805160206200262d8339815191529060200160405180910390a36040516a0422ca8b0a00a42500000081527358cadf06fcc222f573f81b08b6cc156e420d35d79030906000805160206200262d8339815191529060200160405180910390a36040516a02116545850052128000008152735d31e4a33470e1a15e54aadd1d913b613fd0e9ed9030906000805160206200262d8339815191529060200160405180910390a350506200074b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516200044091906200068d565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060026000828254620004bc919062000730565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481526000805160206200262d833981519152910160405180910390a35050565b828054620005129062000651565b90600052602060002090601f01602090048101928262000536576000855562000581565b82601f106200055157805160ff191683800117855562000581565b8280016001018555821562000581579182015b828111156200058157825182559160200191906001019062000564565b506200058f92915062000593565b5090565b5b808211156200058f576000815560010162000594565b600060208284031215620005bd57600080fd5b81516001600160a01b0381168114620005d557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200060f576200060f620005dc565b500290565b6000826200063257634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156200064c576200064c620005dc565b500390565b600181811c908216806200066657607f821691505b6020821081036200068757634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620006aa57607f831692505b60208084108203620006ca57634e487b7160e01b86526022600452602486fd5b818015620006e15760018114620006f35762000722565b60ff1986168952848901965062000722565b60008a81526020902060005b868110156200071a5781548b820152908501908301620006ff565b505084890196505b509498975050505050505050565b60008219821115620007465762000746620005dc565b500190565b60805160a05160c051611eb26200077b60003960006108800152600061084b0152600061035a0152611eb26000f3fe608060405234801561001057600080fd5b50600436106102255760003560e01c806370e22b8a1161012a5780639a7c4b71116100bd578063cbf1304d1161008c578063d505accf11610071578063d505accf1461057c578063dd62ed3e1461058f578063f2fde38b146105ba57600080fd5b8063cbf1304d1461053e578063cc9b52391461056957600080fd5b80639a7c4b71146104ba5780639ec5a894146104cd578063a0712d6814610518578063a9059cbb1461052b57600080fd5b806388837094116100f9578063888370941461047b5780638afe5fa71461048e5780638da5cb5b146104a157806395d89b41146104b257600080fd5b806370e22b8a1461042d578063715018a6146104405780637ecebe00146104485780637f1e9cb01461046857600080fd5b806330adf81f116101bd578063450d11f01161018c578063672434821161017157806367243482146103e75780636eacd398146103fa57806370a082311461040d57600080fd5b8063450d11f0146103a95780635362f69f146103d457600080fd5b806330adf81f1461032e578063313ce567146103555780633644e5151461038e57806342966c681461039657600080fd5b80630a6f93e6116101f95780630a6f93e6146102dd57806318160ddd146102fd57806323b872dd146103065780632836e4b41461031957600080fd5b80628cc2621461022a57806301ffc9a71461025057806306fdde03146102b5578063095ea7b3146102ca575b600080fd5b61023d6102383660046117e2565b6105cd565b6040519081526020015b60405180910390f35b6102a561025e3660046117ff565b7fffffffff00000000000000000000000000000000000000000000000000000000167f7f5828d0000000000000000000000000000000000000000000000000000000001490565b6040519015158152602001610247565b6102bd610609565b6040516102479190611841565b6102a56102d83660046118b4565b610697565b61023d6102eb3660046117e2565b60106020526000908152604090205481565b61023d60025481565b6102a56103143660046118e0565b610703565b61032c610327366004611921565b610813565b005b61023d7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61037c7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610247565b61023d610847565b61032c6103a4366004611964565b6108a2565b6006546103bc906001600160a01b031681565b6040516001600160a01b039091168152602001610247565b61032c6103e23660046117e2565b6108c6565b61032c6103f53660046119c9565b610917565b61023d6104083660046117e2565b610a76565b61023d61041b3660046117e2565b60036020526000908152604090205481565b61032c61043b3660046118b4565b610aa4565b61032c610b3d565b61023d6104563660046117e2565b60056020526000908152604090205481565b6007546103bc906001600160a01b031681565b61032c6104893660046117e2565b610bab565b61032c61049c366004611a4b565b610c49565b6008546001600160a01b03166103bc565b6102bd610d01565b61032c6104c8366004611aa5565b610d0e565b600954600a54600b54600c54600d54600e546104eb95949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610247565b61032c610526366004611964565b610def565b6102a56105393660046118b4565b610e10565b61023d61054c3660046118b4565b600f60209081526000928352604080842090915290825290205481565b61023d6105773660046117e2565b610e88565b61032c61058a366004611b2e565b611009565b61023d61059d366004611b9c565b600460209081526000928352604080842090915290825290205481565b61032c6105c83660046117e2565b6112f4565b6001600160a01b0381166000908152601060205260408120546105f09042611c04565b6105f983610e88565b6106039190611c1b565b92915050565b6000805461061690611c58565b80601f016020809104026020016040519081016040528092919081815260200182805461064290611c58565b801561068f5780601f106106645761010080835404028352916020019161068f565b820191906000526020600020905b81548152906001019060200180831161067257829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f29086815260200190565b60405180910390a350600192915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461077d576107588382611c04565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906107a5908490611c04565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108009087815260200190565b60405180910390a3506001949350505050565b6008546001600160a01b0316331461082a57600080fd5b600995909555600a93909355600b91909155600c55600d55600e55565b60007f0000000000000000000000000000000000000000000000000000000000000000461461087d57610878611372565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6008546001600160a01b031633146108b957600080fd5b6108c3308261140c565b50565b6008546001600160a01b031633146108dd57600080fd5b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6008546001600160a01b0316331461092e57600080fd5b82811461093a57600080fd5b60005b83811015610a6f57600083838381811061095957610959611cab565b9050602002013590508060036000306001600160a01b03166001600160a01b0316815260200190815260200160002060008282546109979190611c04565b90915550819050600360008888868181106109b4576109b4611cab565b90506020020160208101906109c991906117e2565b6001600160a01b031681526020810191909152604001600020805490910190558585838181106109fb576109fb611cab565b9050602002016020810190610a1091906117e2565b6001600160a01b0316306001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a5491815260200190565b60405180910390a35080610a6781611cda565b91505061093d565b5050505050565b6000610a81826105cd565b6001600160a01b0383166000908152600360205260409020546106039190611d12565b6008546001600160a01b03163314610abb57600080fd5b3060009081526003602052604081208054839290610ada908490611c04565b90915550506001600160a01b038216600081815260036020526040908190208054840190555130907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b319085815260200190565b60405180910390a35050565b6008546001600160a01b03163314610b81576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6007546001600160a01b0316156108dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4678426173654368696c6454756e6e656c3a20524f4f545f54554e4e454c5f4160448201527f4c52454144595f5345540000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b856000610c55826105cd565b30600090815260036020526040812080549293508392909190610c79908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb88338989898989611009565b610cf6883089610703565b505050505050505050565b6001805461061690611c58565b6006546001600160a01b03163314610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f52000000000000000000000000000000000000000000000000000000000000006064820152608401610c40565b610de9848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148092505050565b50505050565b6008546001600160a01b03163314610e0657600080fd5b6108c3308261158d565b33600090815260036020526040812080548391908390610e31908490611c04565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106f29086815260200190565b600e546001600160a01b0382166000908152600f60209081526040808320600584529091528120549091610ebb91611c1b565b600d546001600160a01b0384166000908152600f6020908152604080832060048452909152902054610eed9190611c1b565b600c546001600160a01b0385166000908152600f60209081526040808320600384529091528082205460018352912054610f2791906115f1565b610f319190611c1b565b600b546001600160a01b0386166000908152600f602090815260408083206002845290915280822054828052912054610f6a91906115f1565b610f749190611c1b565b600a546001600160a01b0387166000908152600f6020908152604080832060018452909152902054610fa69190611c1b565b6009546001600160a01b0388166000908152600f60209081526040808320838052909152902054610fd79190611c1b565b610fe19190611d12565b610feb9190611d12565b610ff59190611d12565b610fff9190611d12565b6106039190611d12565b42841015611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610c40565b600061107d610847565b6001600160a01b0389811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938c166060840152608083018b905260a083019390935260c08083018a90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156111cf573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906112235750886001600160a01b0316816001600160a01b0316145b611289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610c40565b6001600160a01b0390811660009081526004602090815260408083208b8516808552908352928190208a905551898152919350918a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6008546001600160a01b03163314611338576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516113a49190611d2a565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b03821660009081526003602052604081208054839290611434908490611c04565b90915550506002805482900390556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b31565b60075482906001600160a01b0380831691161461151f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f525f46524f4d5f524f4f540000000000000000000000000000000000000000006064820152608401610c40565b600080600080858060200190518101906115399190611dfc565b935093509350935080611567576115628484600581111561155c5761155c611e4d565b84611609565b611583565b6115838484600581111561157d5761157d611e4d565b846116f1565b5050505050505050565b806002600082825461159f9190611d12565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610b31565b60008183106116005781611602565b825b9392505050565b826000611615826105cd565b30600090815260036020526040812080549293508392909190611639908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0385166000908152600f6020526040812084918660058111156116c8576116c8611e4d565b815260200190815260200160002060008282546116e59190611c04565b90915550505050505050565b8260006116fd826105cd565b30600090815260036020526040812080549293508392909190611721908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0385166000908152600f6020526040812084918660058111156117b0576117b0611e4d565b815260200190815260200160002060008282546116e59190611d12565b6001600160a01b03811681146108c357600080fd5b6000602082840312156117f457600080fd5b8135611602816117cd565b60006020828403121561181157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461160257600080fd5b600060208083528351808285015260005b8181101561186e57858101830151858201604001528201611852565b81811115611880576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600080604083850312156118c757600080fd5b82356118d2816117cd565b946020939093013593505050565b6000806000606084860312156118f557600080fd5b8335611900816117cd565b92506020840135611910816117cd565b929592945050506040919091013590565b60008060008060008060c0878903121561193a57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60006020828403121561197657600080fd5b5035919050565b60008083601f84011261198f57600080fd5b50813567ffffffffffffffff8111156119a757600080fd5b6020830191508360208260051b85010111156119c257600080fd5b9250929050565b600080600080604085870312156119df57600080fd5b843567ffffffffffffffff808211156119f757600080fd5b611a038883890161197d565b90965094506020870135915080821115611a1c57600080fd5b50611a298782880161197d565b95989497509550505050565b803560ff81168114611a4657600080fd5b919050565b60008060008060008060c08789031215611a6457600080fd5b8635611a6f816117cd565b95506020870135945060408701359350611a8b60608801611a35565b92506080870135915060a087013590509295509295509295565b60008060008060608587031215611abb57600080fd5b843593506020850135611acd816117cd565b9250604085013567ffffffffffffffff80821115611aea57600080fd5b818701915087601f830112611afe57600080fd5b813581811115611b0d57600080fd5b886020828501011115611b1f57600080fd5b95989497505060200194505050565b600080600080600080600060e0888a031215611b4957600080fd5b8735611b54816117cd565b96506020880135611b64816117cd565b95506040880135945060608801359350611b8060808901611a35565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611baf57600080fd5b8235611bba816117cd565b91506020830135611bca816117cd565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611c1657611c16611bd5565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c5357611c53611bd5565b500290565b600181811c90821680611c6c57607f821691505b602082108103611ca5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d0b57611d0b611bd5565b5060010190565b60008219821115611d2557611d25611bd5565b500190565b600080835481600182811c915080831680611d4657607f831692505b60208084108203611d7e577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015611d925760018114611dc157611dee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650611dee565b60008a81526020902060005b86811015611de65781548b820152908501908301611dcd565b505084890196505b509498975050505050505050565b60008060008060808587031215611e1257600080fd5b8451611e1d816117cd565b80945050602085015192506040850151915060608501518015158114611e4257600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212206cbcb4f6de275324e9c40d3cabeac022d09c0a62b4bb98773fadc03162644ffa64736f6c634300080d0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0000000000000000000000008397259c983751daf40400790063935a11afa28a
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102255760003560e01c806370e22b8a1161012a5780639a7c4b71116100bd578063cbf1304d1161008c578063d505accf11610071578063d505accf1461057c578063dd62ed3e1461058f578063f2fde38b146105ba57600080fd5b8063cbf1304d1461053e578063cc9b52391461056957600080fd5b80639a7c4b71146104ba5780639ec5a894146104cd578063a0712d6814610518578063a9059cbb1461052b57600080fd5b806388837094116100f9578063888370941461047b5780638afe5fa71461048e5780638da5cb5b146104a157806395d89b41146104b257600080fd5b806370e22b8a1461042d578063715018a6146104405780637ecebe00146104485780637f1e9cb01461046857600080fd5b806330adf81f116101bd578063450d11f01161018c578063672434821161017157806367243482146103e75780636eacd398146103fa57806370a082311461040d57600080fd5b8063450d11f0146103a95780635362f69f146103d457600080fd5b806330adf81f1461032e578063313ce567146103555780633644e5151461038e57806342966c681461039657600080fd5b80630a6f93e6116101f95780630a6f93e6146102dd57806318160ddd146102fd57806323b872dd146103065780632836e4b41461031957600080fd5b80628cc2621461022a57806301ffc9a71461025057806306fdde03146102b5578063095ea7b3146102ca575b600080fd5b61023d6102383660046117e2565b6105cd565b6040519081526020015b60405180910390f35b6102a561025e3660046117ff565b7fffffffff00000000000000000000000000000000000000000000000000000000167f7f5828d0000000000000000000000000000000000000000000000000000000001490565b6040519015158152602001610247565b6102bd610609565b6040516102479190611841565b6102a56102d83660046118b4565b610697565b61023d6102eb3660046117e2565b60106020526000908152604090205481565b61023d60025481565b6102a56103143660046118e0565b610703565b61032c610327366004611921565b610813565b005b61023d7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61037c7f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff9091168152602001610247565b61023d610847565b61032c6103a4366004611964565b6108a2565b6006546103bc906001600160a01b031681565b6040516001600160a01b039091168152602001610247565b61032c6103e23660046117e2565b6108c6565b61032c6103f53660046119c9565b610917565b61023d6104083660046117e2565b610a76565b61023d61041b3660046117e2565b60036020526000908152604090205481565b61032c61043b3660046118b4565b610aa4565b61032c610b3d565b61023d6104563660046117e2565b60056020526000908152604090205481565b6007546103bc906001600160a01b031681565b61032c6104893660046117e2565b610bab565b61032c61049c366004611a4b565b610c49565b6008546001600160a01b03166103bc565b6102bd610d01565b61032c6104c8366004611aa5565b610d0e565b600954600a54600b54600c54600d54600e546104eb95949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610247565b61032c610526366004611964565b610def565b6102a56105393660046118b4565b610e10565b61023d61054c3660046118b4565b600f60209081526000928352604080842090915290825290205481565b61023d6105773660046117e2565b610e88565b61032c61058a366004611b2e565b611009565b61023d61059d366004611b9c565b600460209081526000928352604080842090915290825290205481565b61032c6105c83660046117e2565b6112f4565b6001600160a01b0381166000908152601060205260408120546105f09042611c04565b6105f983610e88565b6106039190611c1b565b92915050565b6000805461061690611c58565b80601f016020809104026020016040519081016040528092919081815260200182805461064290611c58565b801561068f5780601f106106645761010080835404028352916020019161068f565b820191906000526020600020905b81548152906001019060200180831161067257829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f29086815260200190565b60405180910390a350600192915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461077d576107588382611c04565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906107a5908490611c04565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108009087815260200190565b60405180910390a3506001949350505050565b6008546001600160a01b0316331461082a57600080fd5b600995909555600a93909355600b91909155600c55600d55600e55565b60007f0000000000000000000000000000000000000000000000000000000000000089461461087d57610878611372565b905090565b507fce0ccd319046c79e1db11e8e30bb37f98eb3f6882895139ea6ce54c5bad5f6fe90565b6008546001600160a01b031633146108b957600080fd5b6108c3308261140c565b50565b6008546001600160a01b031633146108dd57600080fd5b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6008546001600160a01b0316331461092e57600080fd5b82811461093a57600080fd5b60005b83811015610a6f57600083838381811061095957610959611cab565b9050602002013590508060036000306001600160a01b03166001600160a01b0316815260200190815260200160002060008282546109979190611c04565b90915550819050600360008888868181106109b4576109b4611cab565b90506020020160208101906109c991906117e2565b6001600160a01b031681526020810191909152604001600020805490910190558585838181106109fb576109fb611cab565b9050602002016020810190610a1091906117e2565b6001600160a01b0316306001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a5491815260200190565b60405180910390a35080610a6781611cda565b91505061093d565b5050505050565b6000610a81826105cd565b6001600160a01b0383166000908152600360205260409020546106039190611d12565b6008546001600160a01b03163314610abb57600080fd5b3060009081526003602052604081208054839290610ada908490611c04565b90915550506001600160a01b038216600081815260036020526040908190208054840190555130907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b319085815260200190565b60405180910390a35050565b6008546001600160a01b03163314610b81576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6007546001600160a01b0316156108dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4678426173654368696c6454756e6e656c3a20524f4f545f54554e4e454c5f4160448201527f4c52454144595f5345540000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b856000610c55826105cd565b30600090815260036020526040812080549293508392909190610c79908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb88338989898989611009565b610cf6883089610703565b505050505050505050565b6001805461061690611c58565b6006546001600160a01b03163314610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f52000000000000000000000000000000000000000000000000000000000000006064820152608401610c40565b610de9848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148092505050565b50505050565b6008546001600160a01b03163314610e0657600080fd5b6108c3308261158d565b33600090815260036020526040812080548391908390610e31908490611c04565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106f29086815260200190565b600e546001600160a01b0382166000908152600f60209081526040808320600584529091528120549091610ebb91611c1b565b600d546001600160a01b0384166000908152600f6020908152604080832060048452909152902054610eed9190611c1b565b600c546001600160a01b0385166000908152600f60209081526040808320600384529091528082205460018352912054610f2791906115f1565b610f319190611c1b565b600b546001600160a01b0386166000908152600f602090815260408083206002845290915280822054828052912054610f6a91906115f1565b610f749190611c1b565b600a546001600160a01b0387166000908152600f6020908152604080832060018452909152902054610fa69190611c1b565b6009546001600160a01b0388166000908152600f60209081526040808320838052909152902054610fd79190611c1b565b610fe19190611d12565b610feb9190611d12565b610ff59190611d12565b610fff9190611d12565b6106039190611d12565b42841015611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610c40565b600061107d610847565b6001600160a01b0389811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938c166060840152608083018b905260a083019390935260c08083018a90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156111cf573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b038116158015906112235750886001600160a01b0316816001600160a01b0316145b611289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610c40565b6001600160a01b0390811660009081526004602090815260408083208b8516808552908352928190208a905551898152919350918a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6008546001600160a01b03163314611338576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516113a49190611d2a565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b03821660009081526003602052604081208054839290611434908490611c04565b90915550506002805482900390556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b31565b60075482906001600160a01b0380831691161461151f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444560448201527f525f46524f4d5f524f4f540000000000000000000000000000000000000000006064820152608401610c40565b600080600080858060200190518101906115399190611dfc565b935093509350935080611567576115628484600581111561155c5761155c611e4d565b84611609565b611583565b6115838484600581111561157d5761157d611e4d565b846116f1565b5050505050505050565b806002600082825461159f9190611d12565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610b31565b60008183106116005781611602565b825b9392505050565b826000611615826105cd565b30600090815260036020526040812080549293508392909190611639908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0385166000908152600f6020526040812084918660058111156116c8576116c8611e4d565b815260200190815260200160002060008282546116e59190611c04565b90915550505050505050565b8260006116fd826105cd565b30600090815260036020526040812080549293508392909190611721908490611c04565b90915550506001600160a01b03821660008181526003602090815260408083208054860190556010825291829020429055905183815230917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b0385166000908152600f6020526040812084918660058111156117b0576117b0611e4d565b815260200190815260200160002060008282546116e59190611d12565b6001600160a01b03811681146108c357600080fd5b6000602082840312156117f457600080fd5b8135611602816117cd565b60006020828403121561181157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461160257600080fd5b600060208083528351808285015260005b8181101561186e57858101830151858201604001528201611852565b81811115611880576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600080604083850312156118c757600080fd5b82356118d2816117cd565b946020939093013593505050565b6000806000606084860312156118f557600080fd5b8335611900816117cd565b92506020840135611910816117cd565b929592945050506040919091013590565b60008060008060008060c0878903121561193a57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60006020828403121561197657600080fd5b5035919050565b60008083601f84011261198f57600080fd5b50813567ffffffffffffffff8111156119a757600080fd5b6020830191508360208260051b85010111156119c257600080fd5b9250929050565b600080600080604085870312156119df57600080fd5b843567ffffffffffffffff808211156119f757600080fd5b611a038883890161197d565b90965094506020870135915080821115611a1c57600080fd5b50611a298782880161197d565b95989497509550505050565b803560ff81168114611a4657600080fd5b919050565b60008060008060008060c08789031215611a6457600080fd5b8635611a6f816117cd565b95506020870135945060408701359350611a8b60608801611a35565b92506080870135915060a087013590509295509295509295565b60008060008060608587031215611abb57600080fd5b843593506020850135611acd816117cd565b9250604085013567ffffffffffffffff80821115611aea57600080fd5b818701915087601f830112611afe57600080fd5b813581811115611b0d57600080fd5b886020828501011115611b1f57600080fd5b95989497505060200194505050565b600080600080600080600060e0888a031215611b4957600080fd5b8735611b54816117cd565b96506020880135611b64816117cd565b95506040880135945060608801359350611b8060808901611a35565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611baf57600080fd5b8235611bba816117cd565b91506020830135611bca816117cd565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611c1657611c16611bd5565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c5357611c53611bd5565b500290565b600181811c90821680611c6c57607f821691505b602082108103611ca5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d0b57611d0b611bd5565b5060010190565b60008219821115611d2557611d25611bd5565b500190565b600080835481600182811c915080831680611d4657607f831692505b60208084108203611d7e577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015611d925760018114611dc157611dee565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650611dee565b60008a81526020902060005b86811015611de65781548b820152908501908301611dcd565b505084890196505b509498975050505050505050565b60008060008060808587031215611e1257600080fd5b8451611e1d816117cd565b80945050602085015192506040850151915060608501518015158114611e4257600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212206cbcb4f6de275324e9c40d3cabeac022d09c0a62b4bb98773fadc03162644ffa64736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008397259c983751daf40400790063935a11afa28a
-----Decoded View---------------
Arg [0] : _fxChild (address): 0x8397259c983751DAf40400790063935a11afa28a
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008397259c983751daf40400790063935a11afa28a
Deployed Bytecode Sourcemap
630:10492:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6786:164;;;;;;:::i;:::-;;:::i;:::-;;;571:25:4;;;559:2;544:18;6786:164:3;;;;;;;;840:201:2;;;;;;:::i;:::-;975:25;;;;;840:201;;;;1109:14:4;;1102:22;1084:41;;1072:2;1057:18;840:201:2;944:187:4;1032:18:0;;;:::i;:::-;;;;;;;:::i;2618:211::-;;;;;;:::i;:::-;;:::i;1433:46:3:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1306:26:0;;;;;;3214:592;;;;;;:::i;:::-;;:::i;10217:492:3:-;;;;;;:::i;:::-;;:::i;:::-;;1647:145:0;;1697:95;1647:145;;1084:31;;;;;;;;3460:4:4;3448:17;;;3430:36;;3418:2;3403:18;1084:31:0;3288:184:4;4996:177:0;;;:::i;8252:92:3:-;;;;;;:::i;:::-;;:::i;555:22:1:-;;;;;-1:-1:-1;;;;;555:22:1;;;;;;-1:-1:-1;;;;;3826:55:4;;;3808:74;;3796:2;3781:18;555:22:1;3662:226:4;10715:115:3;;;;;;:::i;:::-;;:::i;8431:570::-;;;;;;:::i;:::-;;:::i;7167:129::-;;;;;;:::i;:::-;;:::i;1339:44:0:-;;;;;;:::i;:::-;;;;;;;;;;;;;;9379:369:3;;;;;;:::i;:::-;;:::i;708:126:2:-;;;:::i;1907:41:0:-;;;;;;:::i;:::-;;;;;;;;;;;;;;606:27:1;;;;;-1:-1:-1;;;;;606:27:1;;;965:195;;;;;;:::i;:::-;;:::i;6159:304:3:-;;;;;;:::i;:::-;;:::i;473:79:2:-;539:6;;-1:-1:-1;;;;;539:6:2;473:79;;1057:20:0;;;:::i;1166:296:1:-;;;;;;:::i;:::-;;:::i;1128:22:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;6887:25:4;;;6943:2;6928:18;;6921:34;;;;6971:18;;;6964:34;;;;7029:2;7014:18;;7007:34;7072:3;7057:19;;7050:35;7116:3;7101:19;;7094:35;6874:3;6859:19;1128:22:3;6600:535:4;9079:92:3;;;;;;:::i;:::-;;:::i;2835:373:0:-;;;;;;:::i;:::-;;:::i;1272:63:3:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;7461:523;;;;;;:::i;:::-;;:::i;3997:993:0:-;;;;;;:::i;:::-;;:::i;1390:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;558:144:2;;;;;;:::i;:::-;;:::i;6786:164:3:-;-1:-1:-1;;;;;6922:20:3;;6840:7;6922:20;;;:11;:20;;;;;;6904:38;;:15;:38;:::i;:::-;6878:22;6892:7;6878:13;:22::i;:::-;:65;;;;:::i;:::-;6859:84;6786:164;-1:-1:-1;;6786:164:3:o;1032:18:0:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2618:211::-;2718:10;2692:4;2708:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2708:30:0;;;;;;;;;;:39;;;2763:37;2692:4;;2708:30;;2763:37;;;;2741:6;571:25:4;;559:2;544:18;;425:177;2763:37:0;;;;;;;;-1:-1:-1;2818:4:0;2618:211;;;;:::o;3214:592::-;-1:-1:-1;;;;;3366:15:0;;3332:4;3366:15;;;:9;:15;;;;;;;;3382:10;3366:27;;;;;;;;3455:17;3444:28;;3440:80;;3504:16;3514:6;3504:7;:16;:::i;:::-;-1:-1:-1;;;;;3474:15:0;;;;;;:9;:15;;;;;;;;3490:10;3474:27;;;;;;;:46;3440:80;-1:-1:-1;;;;;3531:15:0;;;;;;:9;:15;;;;;:25;;3550:6;;3531:15;:25;;3550:6;;3531:25;:::i;:::-;;;;-1:-1:-1;;;;;;;3702:13:0;;;;;;;:9;:13;;;;;;;:23;;;;;;3751:26;3702:13;;3751:26;;;;;;;3719:6;571:25:4;;559:2;544:18;;425:177;3751:26:0;;;;;;;;-1:-1:-1;3795:4:0;;3214:592;-1:-1:-1;;;;3214:592:0:o;10217:492:3:-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;10450:7:3::1;:33:::0;;;;10493:21;:37;;;;10540:20;:35;;;;10585:18;:31;10626:20;:35;10671:18;:31;10217:492::o;4996:177:0:-;5053:7;5096:16;5079:13;:33;:87;;5142:24;:22;:24::i;:::-;5072:94;;4996:177;:::o;5079:87::-;-1:-1:-1;5115:24:0;;4996:177::o;8252:92:3:-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;8309:28:3::1;8323:4;8330:6;8309:5;:28::i;:::-;8252:92:::0;:::o;10715:115::-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;10795:12:3::1;:28:::0;;;::::1;-1:-1:-1::0;;;;;10795:28:3;;;::::1;::::0;;;::::1;::::0;;10715:115::o;8431:570::-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;8540:33:3;;::::1;8532:42;;;::::0;::::1;;8588:6;8584:411;8600:19:::0;;::::1;8584:411;;;8640:11;8654:7;;8662:1;8654:10;;;;;;;:::i;:::-;;;;;;;8640:24;;8706:6;8678:9;:24;8696:4;-1:-1:-1::0;;;;;8678:24:3::1;-1:-1:-1::0;;;;;8678:24:3::1;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;8900:6:3;;-1:-1:-1;8874:9:3::1;:22;8884:8:::0;;8893:1;8884:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8874:22:3::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8874:22:3;:32;;;;::::1;::::0;;8964:8;;8973:1;8964:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8940:44:3::1;8957:4;-1:-1:-1::0;;;;;8940:44:3::1;;8977:6;8940:44;;;;571:25:4::0;;559:2;544:18;;425:177;8940:44:3::1;;;;;;;;-1:-1:-1::0;8621:3:3;::::1;::::0;::::1;:::i;:::-;;;;8584:411;;;;8431:570:::0;;;;:::o;7167:129::-;7227:7;7274:15;7281:7;7274:6;:15::i;:::-;-1:-1:-1;;;;;7253:18:3;;;;;;:9;:18;;;;;;:36;;;;:::i;9379:369::-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;9481:4:3::1;9463:24;::::0;;;:9:::1;:24;::::0;;;;:34;;9491:6;;9463:24;:34:::1;::::0;9491:6;;9463:34:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;9643:20:3;::::1;;::::0;;;:9:::1;:20;::::0;;;;;;:30;;;::::1;::::0;;9699:42;9716:4:::1;::::0;9699:42:::1;::::0;::::1;::::0;9667:6;571:25:4;;559:2;544:18;;425:177;9699:42:3::1;;;;;;;;9379:369:::0;;:::o;708:126:2:-;772:6;;-1:-1:-1;;;;;772:6:2;758:10;:20;754:43;;787:10;;;;;;;;;;;;;;754:43;808:6;:19;;;;;;708:126::o;965:195:1:-;1040:12;;-1:-1:-1;;;;;1040:12:1;:28;1032:83;;;;;;;9990:2:4;1032:83:1;;;9972:21:4;10029:2;10009:18;;;10002:30;10068:34;10048:18;;;10041:62;10139:12;10119:18;;;10112:40;10169:19;;1032:83:1;;;;;;;;6159:304:3;6337:5;3847:14;3864:15;3871:7;3864:6;:15::i;:::-;3907:4;3889:24;;;;:9;:24;;;;;:34;;3847:32;;-1:-1:-1;3847:32:3;;3889:24;;;:34;;3847:32;;3889:34;:::i;:::-;;;;-1:-1:-1;;;;;;;4069:18:3;;;;;;:9;:18;;;;;;;;:28;;;;;;4118:11;:20;;;;;;4141:15;4118:38;;4171:40;;571:25:4;;;4188:4:3;;4171:40;;544:18:4;4171:40:3;;;;;;;6354:51:::1;6361:5;6368:10;6380:5;6387:8;6397:1;6400;6403;6354:6;:51::i;:::-;6415:41;6428:5;6443:4;6450:5;6415:12;:41::i;:::-;;3837:392:::0;6159:304;;;;;;;:::o;1057:20:0:-;;;;;;;:::i;1166:296:1:-;1343:7;;-1:-1:-1;;;;;1343:7:1;1329:10;:21;1321:67;;;;;;;10401:2:4;1321:67:1;;;10383:21:4;10440:2;10420:18;;;10413:30;10479:34;10459:18;;;10452:62;10550:3;10530:18;;;10523:31;10571:19;;1321:67:1;10199:397:4;1321:67:1;1398:57;1422:7;1431:17;1450:4;;1398:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1398:23:1;;-1:-1:-1;;;1398:57:1:i;:::-;1166:296;;;;:::o;9079:92:3:-;372:6:2;;-1:-1:-1;;;;;372:6:2;382:10;372:20;364:29;;;;;;9136:28:3::1;9150:4;9157:6;9136:5;:28::i;2835:373:0:-:0;2931:10;2905:4;2921:21;;;:9;:21;;;;;:31;;2946:6;;2921:21;2905:4;;2921:31;;2946:6;;2921:31;:::i;:::-;;;;-1:-1:-1;;;;;;;3098:13:0;;;;;;:9;:13;;;;;;;:23;;;;;;3147:32;3156:10;;3147:32;;;;3115:6;571:25:4;;559:2;544:18;;425:177;7461:523:3;7957:18;;-1:-1:-1;;;;;7934:17:3;;7522:7;7934:17;;;:8;:17;;;;;;;;7957:18;7934:20;;;;;;;;7522:7;;7934:41;;;:::i;:::-;7897:20;;-1:-1:-1;;;;;7874:17:3;;;;;;:8;:17;;;;;;;;7897:20;7874;;;;;;;;:43;;7897:20;7874:43;:::i;:::-;7839:18;;-1:-1:-1;;;;;7777:17:3;;;;;;:8;:17;;;;;;;;7839:18;7777:20;;;;;;;;;7817:1;7799:20;;;;;7773:47;;7777:20;7773:3;:47::i;:::-;:84;;;;:::i;:::-;7736:20;;-1:-1:-1;;;;;7674:17:3;;;;;;:8;:17;;;;;;;;7736:20;7674;;;;;;;;;7696;;;;;;7670:47;;7674:20;7670:3;:47::i;:::-;:86;;;;:::i;:::-;7632:21;;-1:-1:-1;;;;;7609:17:3;;;;;;:8;:17;;;;;;;;7632:21;7609:20;;;;;;;;:44;;7632:21;7609:44;:::i;:::-;7573:7;:19;-1:-1:-1;;;;;7550:17:3;;7573:19;7550:17;;;:8;:17;;;;;;;;:20;;;;;;;;;:42;;7573:19;7550:42;:::i;:::-;7549:105;;;;:::i;:::-;:208;;;;:::i;:::-;:309;;;;:::i;:::-;:369;;;;:::i;:::-;:427;;;;:::i;3997:993:0:-;4216:15;4204:8;:27;;4196:63;;;;;;;10803:2:4;4196:63:0;;;10785:21:4;10842:2;10822:18;;;10815:30;10881:25;10861:18;;;10854:53;10924:18;;4196:63:0;10601:347:4;4196:63:0;4424:14;4538:18;:16;:18::i;:::-;-1:-1:-1;;;;;4639:13:0;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4588:77;;1697:95;4588:77;;;11240:25:4;11342:18;;;11335:43;;;;11414:15;;;11394:18;;;11387:43;11446:18;;;11439:34;;;11489:19;;;11482:35;;;;11533:19;;;;11526:35;;;4588:77:0;;;;;;;;;;11212:19:4;;;4588:77:0;;;4578:88;;;;;;;;11842:66:4;4468:216:0;;;11830:79:4;11925:11;;;11918:27;;;;11961:12;;;11954:28;;;;11998:12;;4468:216:0;;;;;;;;;;;;;4441:257;;4468:216;4441:257;;;;4713:24;4740:26;;;;;;;;;12248:25:4;;;12321:4;12309:17;;12289:18;;;12282:45;;;;12343:18;;;12336:34;;;12386:18;;;12379:34;;;4441:257:0;;-1:-1:-1;4713:24:0;4740:26;;12220:19:4;;4740:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4740:26:0;;;;;;-1:-1:-1;;;;;;;4789:30:0;;;;;;:59;;;4843:5;-1:-1:-1;;;;;4823:25:0;:16;-1:-1:-1;;;;;4823:25:0;;4789:59;4781:86;;;;;;;12626:2:4;4781:86:0;;;12608:21:4;12665:2;12645:18;;;12638:30;12704:16;12684:18;;;12677:44;12738:18;;4781:86:0;12424:338:4;4781:86:0;-1:-1:-1;;;;;4882:27:0;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;4952:31;571:25:4;;;4882:36:0;;-1:-1:-1;4952:31:0;;;;;;544:18:4;4952:31:0;;;;;;;3997:993;;;;;;;:::o;558:144:2:-;641:6;;-1:-1:-1;;;;;641:6:2;627:10;:20;623:43;;656:10;;;;;;;;;;;;;;623:43;677:6;:18;;;;-1:-1:-1;;;;;677:18:2;;;;;;;;;;558:144::o;5179:446:0:-;5244:7;5341:95;5474:4;5458:22;;;;;;:::i;:::-;;;;;;;;;;5309:295;;;14379:25:4;;;;14420:18;;14413:34;;;;5502:14:0;14463:18:4;;;14456:34;5538:13:0;14506:18:4;;;14499:34;5581:4:0;14549:19:4;;;14542:84;14351:19;;5309:295:0;;;;;;;;;;;;5282:336;;;;;;5263:355;;5179:446;:::o;6150:328::-;-1:-1:-1;;;;;6222:15:0;;;;;;:9;:15;;;;;:25;;6241:6;;6222:15;:25;;6241:6;;6222:25;:::i;:::-;;;;-1:-1:-1;;6390:11:0;:21;;;;;;;6437:34;;571:25:4;;;-1:-1:-1;;;;;;;6437:34:0;;;;;559:2:4;544:18;6437:34:0;425:177:4;5326:458:3;838:12:1;;5477:6:3;;-1:-1:-1;;;;;828:22:1;;;838:12;;828:22;820:78;;;;;;;14839:2:4;820:78:1;;;14821:21:4;14878:2;14858:18;;;14851:30;14917:34;14897:18;;;14890:62;14988:13;14968:18;;;14961:41;15019:19;;820:78:1;14637:407:4;820:78:1;5496:12:3::1;5510:13:::0;5525::::1;5540:11:::0;5579:7:::1;5555:88;;;;;;;;;;;;:::i;:::-;5495:148;;;;;;;;5653:6;:124;;5732:45;5747:4;5763:5;5753:16;;;;;;;;:::i;:::-;5771:5;5732:14;:45::i;:::-;5653:124;;;5674:43;5687:4;5703:5;5693:16;;;;;;;;:::i;:::-;5711:5;5674:12;:43::i;:::-;5485:299;;;;5326:458:::0;;;;:::o;5819:325:0:-;5904:6;5889:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6056:13:0;;;;;;:9;:13;;;;;;;;:23;;;;;;6105:32;571:25:4;;;6105:32:0;;544:18:4;6105:32:0;425:177:4;11016:104:3;11074:7;11104:1;11100;:5;:13;;11112:1;11100:13;;;11108:1;11100:13;11093:20;11016:104;-1:-1:-1;;;11016:104:3:o;4902:203::-;5032:7;3847:14;3864:15;3871:7;3864:6;:15::i;:::-;3907:4;3889:24;;;;:9;:24;;;;;:34;;3847:32;;-1:-1:-1;3847:32:3;;3889:24;;;:34;;3847:32;;3889:34;:::i;:::-;;;;-1:-1:-1;;;;;;;4069:18:3;;;;;;:9;:18;;;;;;;;:28;;;;;;4118:11;:20;;;;;;4141:15;4118:38;;4171:40;;571:25:4;;;4188:4:3;;4171:40;;544:18:4;4171:40:3;;;;;;;-1:-1:-1;;;;;5051:17:3;::::1;;::::0;;;:8:::1;:17;::::0;;;;5092:6;;5077:9;5069:18:::1;::::0;::::1;;;;;;:::i;:::-;5051:37;;;;;;;;;;;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;4902:203:3:o;4461:201::-;4589:7;3847:14;3864:15;3871:7;3864:6;:15::i;:::-;3907:4;3889:24;;;;:9;:24;;;;;:34;;3847:32;;-1:-1:-1;3847:32:3;;3889:24;;;:34;;3847:32;;3889:34;:::i;:::-;;;;-1:-1:-1;;;;;;;4069:18:3;;;;;;:9;:18;;;;;;;;:28;;;;;;4118:11;:20;;;;;;4141:15;4118:38;;4171:40;;571:25:4;;;4188:4:3;;4171:40;;544:18:4;4171:40:3;;;;;;;-1:-1:-1;;;;;4608:17:3;::::1;;::::0;;;:8:::1;:17;::::0;;;;4649:6;;4634:9;4626:18:::1;::::0;::::1;;;;;;:::i;:::-;4608:37;;;;;;;;;;;;:47;;;;;;;:::i;14:154:4:-:0;-1:-1:-1;;;;;93:5:4;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:247;232:6;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;340:9;327:23;359:31;384:5;359:31;:::i;607:332::-;665:6;718:2;706:9;697:7;693:23;689:32;686:52;;;734:1;731;724:12;686:52;773:9;760:23;823:66;816:5;812:78;805:5;802:89;792:117;;905:1;902;895:12;1136:656;1248:4;1277:2;1306;1295:9;1288:21;1338:6;1332:13;1381:6;1376:2;1365:9;1361:18;1354:34;1406:1;1416:140;1430:6;1427:1;1424:13;1416:140;;;1525:14;;;1521:23;;1515:30;1491:17;;;1510:2;1487:26;1480:66;1445:10;;1416:140;;;1574:6;1571:1;1568:13;1565:91;;;1644:1;1639:2;1630:6;1619:9;1615:22;1611:31;1604:42;1565:91;-1:-1:-1;1708:2:4;1696:15;1713:66;1692:88;1677:104;;;;1783:2;1673:113;;1136:656;-1:-1:-1;;;1136:656:4:o;1797:315::-;1865:6;1873;1926:2;1914:9;1905:7;1901:23;1897:32;1894:52;;;1942:1;1939;1932:12;1894:52;1981:9;1968:23;2000:31;2025:5;2000:31;:::i;:::-;2050:5;2102:2;2087:18;;;;2074:32;;-1:-1:-1;;;1797:315:4:o;2117:456::-;2194:6;2202;2210;2263:2;2251:9;2242:7;2238:23;2234:32;2231:52;;;2279:1;2276;2269:12;2231:52;2318:9;2305:23;2337:31;2362:5;2337:31;:::i;:::-;2387:5;-1:-1:-1;2444:2:4;2429:18;;2416:32;2457:33;2416:32;2457:33;:::i;:::-;2117:456;;2509:7;;-1:-1:-1;;;2563:2:4;2548:18;;;;2535:32;;2117:456::o;2578:523::-;2682:6;2690;2698;2706;2714;2722;2775:3;2763:9;2754:7;2750:23;2746:33;2743:53;;;2792:1;2789;2782:12;2743:53;-1:-1:-1;;2815:23:4;;;2885:2;2870:18;;2857:32;;-1:-1:-1;2936:2:4;2921:18;;2908:32;;2987:2;2972:18;;2959:32;;-1:-1:-1;3038:3:4;3023:19;;3010:33;;-1:-1:-1;3090:3:4;3075:19;3062:33;;-1:-1:-1;2578:523:4;-1:-1:-1;2578:523:4:o;3477:180::-;3536:6;3589:2;3577:9;3568:7;3564:23;3560:32;3557:52;;;3605:1;3602;3595:12;3557:52;-1:-1:-1;3628:23:4;;3477:180;-1:-1:-1;3477:180:4:o;3893:367::-;3956:8;3966:6;4020:3;4013:4;4005:6;4001:17;3997:27;3987:55;;4038:1;4035;4028:12;3987:55;-1:-1:-1;4061:20:4;;4104:18;4093:30;;4090:50;;;4136:1;4133;4126:12;4090:50;4173:4;4165:6;4161:17;4149:29;;4233:3;4226:4;4216:6;4213:1;4209:14;4201:6;4197:27;4193:38;4190:47;4187:67;;;4250:1;4247;4240:12;4187:67;3893:367;;;;;:::o;4265:773::-;4387:6;4395;4403;4411;4464:2;4452:9;4443:7;4439:23;4435:32;4432:52;;;4480:1;4477;4470:12;4432:52;4520:9;4507:23;4549:18;4590:2;4582:6;4579:14;4576:34;;;4606:1;4603;4596:12;4576:34;4645:70;4707:7;4698:6;4687:9;4683:22;4645:70;:::i;:::-;4734:8;;-1:-1:-1;4619:96:4;-1:-1:-1;4822:2:4;4807:18;;4794:32;;-1:-1:-1;4838:16:4;;;4835:36;;;4867:1;4864;4857:12;4835:36;;4906:72;4970:7;4959:8;4948:9;4944:24;4906:72;:::i;:::-;4265:773;;;;-1:-1:-1;4997:8:4;-1:-1:-1;;;;4265:773:4:o;5043:156::-;5109:20;;5169:4;5158:16;;5148:27;;5138:55;;5189:1;5186;5179:12;5138:55;5043:156;;;:::o;5204:592::-;5306:6;5314;5322;5330;5338;5346;5399:3;5387:9;5378:7;5374:23;5370:33;5367:53;;;5416:1;5413;5406:12;5367:53;5455:9;5442:23;5474:31;5499:5;5474:31;:::i;:::-;5524:5;-1:-1:-1;5576:2:4;5561:18;;5548:32;;-1:-1:-1;5627:2:4;5612:18;;5599:32;;-1:-1:-1;5650:36:4;5682:2;5667:18;;5650:36;:::i;:::-;5640:46;;5733:3;5722:9;5718:19;5705:33;5695:43;;5785:3;5774:9;5770:19;5757:33;5747:43;;5204:592;;;;;;;;:::o;5801:794::-;5889:6;5897;5905;5913;5966:2;5954:9;5945:7;5941:23;5937:32;5934:52;;;5982:1;5979;5972:12;5934:52;6018:9;6005:23;5995:33;;6078:2;6067:9;6063:18;6050:32;6091:31;6116:5;6091:31;:::i;:::-;6141:5;-1:-1:-1;6197:2:4;6182:18;;6169:32;6220:18;6250:14;;;6247:34;;;6277:1;6274;6267:12;6247:34;6315:6;6304:9;6300:22;6290:32;;6360:7;6353:4;6349:2;6345:13;6341:27;6331:55;;6382:1;6379;6372:12;6331:55;6422:2;6409:16;6448:2;6440:6;6437:14;6434:34;;;6464:1;6461;6454:12;6434:34;6509:7;6504:2;6495:6;6491:2;6487:15;6483:24;6480:37;6477:57;;;6530:1;6527;6520:12;6477:57;5801:794;;;;-1:-1:-1;;6561:2:4;6553:11;;-1:-1:-1;;;5801:794:4:o;7140:734::-;7251:6;7259;7267;7275;7283;7291;7299;7352:3;7340:9;7331:7;7327:23;7323:33;7320:53;;;7369:1;7366;7359:12;7320:53;7408:9;7395:23;7427:31;7452:5;7427:31;:::i;:::-;7477:5;-1:-1:-1;7534:2:4;7519:18;;7506:32;7547:33;7506:32;7547:33;:::i;:::-;7599:7;-1:-1:-1;7653:2:4;7638:18;;7625:32;;-1:-1:-1;7704:2:4;7689:18;;7676:32;;-1:-1:-1;7727:37:4;7759:3;7744:19;;7727:37;:::i;:::-;7717:47;;7811:3;7800:9;7796:19;7783:33;7773:43;;7863:3;7852:9;7848:19;7835:33;7825:43;;7140:734;;;;;;;;;;:::o;7879:388::-;7947:6;7955;8008:2;7996:9;7987:7;7983:23;7979:32;7976:52;;;8024:1;8021;8014:12;7976:52;8063:9;8050:23;8082:31;8107:5;8082:31;:::i;:::-;8132:5;-1:-1:-1;8189:2:4;8174:18;;8161:32;8202:33;8161:32;8202:33;:::i;:::-;8254:7;8244:17;;;7879:388;;;;;:::o;8272:184::-;8324:77;8321:1;8314:88;8421:4;8418:1;8411:15;8445:4;8442:1;8435:15;8461:125;8501:4;8529:1;8526;8523:8;8520:34;;;8534:18;;:::i;:::-;-1:-1:-1;8571:9:4;;8461:125::o;8591:228::-;8631:7;8757:1;8689:66;8685:74;8682:1;8679:81;8674:1;8667:9;8660:17;8656:105;8653:131;;;8764:18;;:::i;:::-;-1:-1:-1;8804:9:4;;8591:228::o;8824:437::-;8903:1;8899:12;;;;8946;;;8967:61;;9021:4;9013:6;9009:17;8999:27;;8967:61;9074:2;9066:6;9063:14;9043:18;9040:38;9037:218;;9111:77;9108:1;9101:88;9212:4;9209:1;9202:15;9240:4;9237:1;9230:15;9037:218;;8824:437;;;:::o;9266:184::-;9318:77;9315:1;9308:88;9415:4;9412:1;9405:15;9439:4;9436:1;9429:15;9455:195;9494:3;9525:66;9518:5;9515:77;9512:103;;9595:18;;:::i;:::-;-1:-1:-1;9642:1:4;9631:13;;9455:195::o;9655:128::-;9695:3;9726:1;9722:6;9719:1;9716:13;9713:39;;;9732:18;;:::i;:::-;-1:-1:-1;9768:9:4;;9655:128::o;12896:1219::-;13026:3;13055:1;13088:6;13082:13;13118:3;13140:1;13168:9;13164:2;13160:18;13150:28;;13228:2;13217:9;13213:18;13250;13240:61;;13294:4;13286:6;13282:17;13272:27;;13240:61;13320:2;13368;13360:6;13357:14;13337:18;13334:38;13331:222;;13407:77;13402:3;13395:90;13508:4;13505:1;13498:15;13538:4;13533:3;13526:17;13331:222;13569:18;13596:162;;;;13772:1;13767:323;;;;13562:528;;13596:162;13644:66;13633:9;13629:82;13624:3;13617:95;13741:6;13736:3;13732:16;13725:23;;13596:162;;13767:323;12843:1;12836:14;;;12880:4;12867:18;;13865:1;13879:165;13893:6;13890:1;13887:13;13879:165;;;13971:14;;13958:11;;;13951:35;14014:16;;;;13908:10;;13879:165;;;13883:3;;14073:6;14068:3;14064:16;14057:23;;13562:528;-1:-1:-1;14106:3:4;;12896:1219;-1:-1:-1;;;;;;;;12896:1219:4:o;15049:544::-;15151:6;15159;15167;15175;15228:3;15216:9;15207:7;15203:23;15199:33;15196:53;;;15245:1;15242;15235:12;15196:53;15277:9;15271:16;15296:31;15321:5;15296:31;:::i;:::-;15346:5;15336:15;;;15391:2;15380:9;15376:18;15370:25;15360:35;;15435:2;15424:9;15420:18;15414:25;15404:35;;15484:2;15473:9;15469:18;15463:25;15533:7;15526:15;15519:23;15510:7;15507:36;15497:64;;15557:1;15554;15547:12;15497:64;15049:544;;;;-1:-1:-1;15049:544:4;;-1:-1:-1;;15049:544:4:o;15598:184::-;15650:77;15647:1;15640:88;15747:4;15744:1;15737:15;15771:4;15768:1;15761:15
Swarm Source
ipfs://6cbcb4f6de275324e9c40d3cabeac022d09c0a62b4bb98773fadc03162644ffa
Loading...
Loading
Loading...
Loading
[ 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.