More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 89 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 21300374 | 40 days ago | IN | 0 ETH | 0.00048866 | ||||
Stake | 21281469 | 42 days ago | IN | 0 ETH | 0.00151007 | ||||
Stake | 21274196 | 43 days ago | IN | 0 ETH | 0.00150294 | ||||
Withdraw | 21271758 | 44 days ago | IN | 0 ETH | 0.00106396 | ||||
Withdraw | 21268125 | 44 days ago | IN | 0 ETH | 0.00051051 | ||||
Stake | 21257218 | 46 days ago | IN | 0 ETH | 0.00084397 | ||||
Stake | 21252756 | 46 days ago | IN | 0 ETH | 0.00168804 | ||||
Stake | 21252208 | 46 days ago | IN | 0 ETH | 0.0019566 | ||||
Stake | 21244363 | 47 days ago | IN | 0 ETH | 0.00133371 | ||||
Stake | 21238276 | 48 days ago | IN | 0 ETH | 0.00190514 | ||||
Stake | 21237793 | 48 days ago | IN | 0 ETH | 0.00178853 | ||||
Stake | 21231650 | 49 days ago | IN | 0 ETH | 0.00180537 | ||||
Stake | 21224426 | 50 days ago | IN | 0 ETH | 0.00195829 | ||||
Withdraw | 21224402 | 50 days ago | IN | 0 ETH | 0.0017058 | ||||
Stake | 21219086 | 51 days ago | IN | 0 ETH | 0.00089009 | ||||
Withdraw | 21216107 | 51 days ago | IN | 0 ETH | 0.00167546 | ||||
Withdraw | 21212835 | 52 days ago | IN | 0 ETH | 0.0007364 | ||||
Withdraw | 21211149 | 52 days ago | IN | 0 ETH | 0.00059562 | ||||
Withdraw | 21206393 | 53 days ago | IN | 0 ETH | 0.00067594 | ||||
Stake | 21201981 | 53 days ago | IN | 0 ETH | 0.00106399 | ||||
Stake | 21197306 | 54 days ago | IN | 0 ETH | 0.00104593 | ||||
Withdraw | 21196833 | 54 days ago | IN | 0 ETH | 0.00091144 | ||||
Withdraw | 21163817 | 59 days ago | IN | 0 ETH | 0.00184971 | ||||
Stake | 21123410 | 64 days ago | IN | 0 ETH | 0.00100661 | ||||
Stake | 21072976 | 71 days ago | IN | 0 ETH | 0.00200939 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
StakingContract
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-10-15 */ //SPDX-License-Identifier: MIT pragma solidity 0.8.20; /** * @title Owner * @dev Set & change owner */ contract Ownable { address private owner; // event for EVM logging event OwnerSet(address indexed oldOwner, address indexed newOwner); // modifier to check if caller is owner modifier onlyOwner() { // If the first argument of 'require' evaluates to 'false', execution terminates and all // changes to the state and to Ether balances are reverted. // This used to consume all gas in old EVM versions, but not anymore. // It is often a good idea to use 'require' to check if functions are called correctly. // As a second argument, you can also provide an explanation about what went wrong. require(msg.sender == owner, "Caller is not owner"); _; } /** * @dev Set contract deployer as owner */ constructor() { owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor emit OwnerSet(address(0), owner); } /** * @dev Change owner * @param newOwner address of new owner */ function changeOwner(address newOwner) public onlyOwner { emit OwnerSet(owner, newOwner); owner = newOwner; } /** * @dev Return owner address * @return address of owner */ function getOwner() external view returns (address) { return owner; } } interface IERC20 { function totalSupply() external view returns (uint256); function symbol() external view returns(string memory); function name() external view returns(string memory); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Returns the number of decimal places */ function decimals() external view returns (uint8); /** * @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); } contract StakingContract is Ownable { // name and symbol for tokenized contract string private _name = "Staked FIRE"; string private _symbol = "SFIRE"; uint8 private constant _decimals = 18; // lock time in seconds uint256 public lockTime = 30 days; // fee for leaving staking early uint256 public leaveEarlyFee = 25; // recipient of fee address public feeRecipient = 0x42290Ba8C7770f7eFa8d8224675Ca3b658a9834C; // Staking Token address public constant token = 0xe0C18Fe05895314F20E5100729f08baB3f3C3A45; // Reward Token address public constant reward = 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599; // User Info struct UserInfo { uint256 amount; uint256 unlockTime; uint256 totalExcluded; } // Address => UserInfo mapping ( address => UserInfo ) public userInfo; // Tracks Dividends uint256 public totalRewards; uint256 private totalShares; uint256 private dividendsPerShare; uint256 private constant precision = 10**18; // Events event SetLockTime(uint LockTime); event SetEarlyFee(uint earlyFee); event SetFeeRecipient(address FeeRecipient); event Transfer(address indexed from, address indexed to, uint256 value); constructor(){ emit Transfer(address(0), msg.sender, 0); } /** Returns the total number of tokens in existence */ function totalSupply() external view returns (uint256) { return totalShares; } /** Returns the number of tokens owned by `account` */ function balanceOf(address account) public view returns (uint256) { return userInfo[account].amount; } /** Token Name */ function name() public view returns (string memory) { return _name; } /** Token Ticker Symbol */ function symbol() public view returns (string memory) { return _symbol; } /** Tokens decimals */ function decimals() public pure returns (uint8) { return _decimals; } function setLockTime(uint256 newLockTime) external onlyOwner { require( newLockTime <= 10**7, 'Lock Time Too Long' ); lockTime = newLockTime; emit SetLockTime(newLockTime); } function setLeaveEarlyFee(uint256 newEarlyFee) external onlyOwner { require( newEarlyFee < 100, 'Fee Too High' ); leaveEarlyFee = newEarlyFee; emit SetEarlyFee(newEarlyFee); } function setFeeRecipient(address newFeeRecipient) external onlyOwner { require( newFeeRecipient != address(0), 'Zero Address' ); feeRecipient = newFeeRecipient; emit SetFeeRecipient(newFeeRecipient); } function withdrawForeignToken(address token_) external onlyOwner { require( token != token_, 'Cannot Withdraw Staked Token' ); require( IERC20(token_).transfer( msg.sender, IERC20(token_).balanceOf(address(this)) ), 'Failure On Token Withdraw' ); } function claimRewards() external { _claimReward(msg.sender); } function withdraw(uint256 amount) external { require( amount <= userInfo[msg.sender].amount, 'Insufficient Amount' ); require( amount > 0, 'Zero Amount' ); if (userInfo[msg.sender].amount > 0) { _claimReward(msg.sender); } totalShares -= amount; userInfo[msg.sender].amount -= amount; userInfo[msg.sender].totalExcluded = getCumulativeDividends(userInfo[msg.sender].amount); uint fee = timeUntilUnlock(msg.sender) == 0 ? 0 : ( amount * leaveEarlyFee ) / 100; if (fee > 0) { require( IERC20(token).transfer(feeRecipient, fee), 'Failure On Token Transfer' ); } uint sendAmount = amount - fee; require( IERC20(token).transfer(msg.sender, sendAmount), 'Failure On Token Transfer To Sender' ); emit Transfer(msg.sender, address(0), amount); } function stake(uint256 amount) external { if (userInfo[msg.sender].amount > 0) { _claimReward(msg.sender); } // transfer in tokens uint received = _transferIn(token, amount); // update data unchecked { totalShares += received; userInfo[msg.sender].amount += received; userInfo[msg.sender].unlockTime = block.timestamp + lockTime; } userInfo[msg.sender].totalExcluded = getCumulativeDividends(userInfo[msg.sender].amount); emit Transfer(address(0), msg.sender, amount); } function depositRewards(uint256 amount) external { if (totalShares == 0) { return; } // transfer in reward token uint received = _transferIn(reward, amount); // update state unchecked { dividendsPerShare += ( received * precision ) / totalShares; totalRewards += received; } } function _claimReward(address user) internal { // exit if zero value locked if (userInfo[user].amount == 0) { return; } // fetch pending rewards uint256 amount = pendingRewards(user); // exit if zero rewards if (amount == 0) { return; } // update total excluded userInfo[user].totalExcluded = getCumulativeDividends(userInfo[user].amount); // transfer reward to user require( IERC20(reward).transfer(user, amount), 'Failure On Token Claim' ); } function _transferIn(address _token, uint256 amount) internal returns (uint256) { uint before = IERC20(_token).balanceOf(address(this)); IERC20(_token).transferFrom(msg.sender, address(this), amount); uint After = IERC20(_token).balanceOf(address(this)); require( After > before, 'Error On TransferIn' ); return After - before; } function timeUntilUnlock(address user) public view returns (uint256) { return userInfo[user].unlockTime < block.timestamp ? 0 : userInfo[user].unlockTime - block.timestamp; } function pendingRewards(address shareholder) public view returns (uint256) { if(userInfo[shareholder].amount == 0){ return 0; } uint256 totalDividends = getCumulativeDividends(userInfo[shareholder].amount); uint256 tExcluded = userInfo[shareholder].totalExcluded; if(totalDividends <= tExcluded){ return 0; } return totalDividends <= tExcluded ? 0 : totalDividends - tExcluded; } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return ( share * dividendsPerShare ) / precision; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"earlyFee","type":"uint256"}],"name":"SetEarlyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"FeeRecipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"LockTime","type":"uint256"}],"name":"SetLockTime","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"leaveEarlyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeRecipient","type":"address"}],"name":"setFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newEarlyFee","type":"uint256"}],"name":"setLeaveEarlyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLockTime","type":"uint256"}],"name":"setLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"timeUntilUnlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewards","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":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"unlockTime","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"withdrawForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600b60809081526a5374616b6564204649524560a81b60a0526001906200002c9082620001ba565b50604080518082019091526005815264534649524560d81b6020820152600290620000589082620001ba565b5062278d006003556019600455600580546001600160a01b0319167342290ba8c7770f7efa8d8224675ca3b658a9834c1790553480156200009857600080fd5b50600080546001600160a01b0319163390811782556040519091907f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a735908290a3604051600080825233917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362000286565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014057607f821691505b6020821081036200016157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b557600081815260208120601f850160051c81016020861015620001905750805b601f850160051c820191505b81811015620001b1578281556001016200019c565b5050505b505050565b81516001600160401b03811115620001d657620001d662000115565b620001ee81620001e784546200012b565b8462000167565b602080601f8311600181146200022657600084156200020d5750858301515b600019600386901b1c1916600185901b178555620001b1565b600085815260208120601f198616915b82811015620002575788860151825594840194600190910190840162000236565b5085821015620002765787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61141280620002966000396000f3fe60806040526004361061014f5760003560e01c806370a08231116100b6578063a694fc3a1161006f578063a694fc3a146103de578063a6f9dae1146103fe578063ae04d45d1461041e578063d0228e8f1461043e578063e74b981b1461045e578063fc0c546a1461047e57600080fd5b806370a0823114610315578063885a4cd01461034b578063893d20e81461036b5780638bdf67f2146103895780638beceeea146103a957806395d89b41146103c957600080fd5b80632e1a7d4d116101085780632e1a7d4d1461026c578063313ce5671461028e57806331d7a262146102aa578063372500ab146102ca57806346904840146102df57806358d9e685146102ff57600080fd5b806306fdde031461015b5780630d668087146101865780630e15561a146101aa57806318160ddd146101c05780631959a002146101d5578063228cb7331461022c57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b506101706104a6565b60405161017d919061122b565b60405180910390f35b34801561019257600080fd5b5061019c60035481565b60405190815260200161017d565b3480156101b657600080fd5b5061019c60075481565b3480156101cc57600080fd5b5060085461019c565b3480156101e157600080fd5b506102116101f0366004611279565b60066020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161017d565b34801561023857600080fd5b50610254732260fac5e5542a773aa44fbcfedf7c193bc2c59981565b6040516001600160a01b03909116815260200161017d565b34801561027857600080fd5b5061028c6102873660046112a9565b610538565b005b34801561029a57600080fd5b506040516012815260200161017d565b3480156102b657600080fd5b5061019c6102c5366004611279565b610885565b3480156102d657600080fd5b5061028c610920565b3480156102eb57600080fd5b50600554610254906001600160a01b031681565b34801561030b57600080fd5b5061019c60045481565b34801561032157600080fd5b5061019c610330366004611279565b6001600160a01b031660009081526006602052604090205490565b34801561035757600080fd5b5061028c610366366004611279565b61092b565b34801561037757600080fd5b506000546001600160a01b0316610254565b34801561039557600080fd5b5061028c6103a43660046112a9565b610af1565b3480156103b557600080fd5b5061028c6103c43660046112a9565b610b55565b3480156103d557600080fd5b50610170610bfa565b3480156103ea57600080fd5b5061028c6103f93660046112a9565b610c09565b34801561040a57600080fd5b5061028c610419366004611279565b610cd7565b34801561042a57600080fd5b5061028c6104393660046112a9565b610d5c565b34801561044a57600080fd5b5061019c610459366004611279565b610e03565b34801561046a57600080fd5b5061028c610479366004611279565b610e5a565b34801561048a57600080fd5b5061025473e0c18fe05895314f20e5100729f08bab3f3c3a4581565b6060600180546104b5906112c2565b80601f01602080910402602001604051908101604052809291908181526020018280546104e1906112c2565b801561052e5780601f106105035761010080835404028352916020019161052e565b820191906000526020600020905b81548152906001019060200180831161051157829003601f168201915b5050505050905090565b336000908152600660205260409020548111156105925760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064015b60405180910390fd5b600081116105d05760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8105b5bdd5b9d60aa1b6044820152606401610589565b33600090815260066020526040902054156105ee576105ee33610f17565b80600860008282546106009190611312565b90915550503360009081526006602052604081208054839290610624908490611312565b9091555050336000908152600660205260409020546106429061105b565b3360008181526006602052604081206002019290925561066190610e03565b15610685576064600454836106769190611325565b6106809190611352565b610688565b60005b905080156107655760055460405163a9059cbb60e01b81526001600160a01b0390911660048201526024810182905273e0c18fe05895314f20e5100729f08bab3f3c3a459063a9059cbb906044016020604051808303816000875af11580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107199190611374565b6107655760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e205472616e73666572000000000000006044820152606401610589565b60006107718284611312565b60405163a9059cbb60e01b81523360048201526024810182905290915073e0c18fe05895314f20e5100729f08bab3f3c3a459063a9059cbb906044016020604051808303816000875af11580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190611374565b6108485760405162461bcd60e51b815260206004820152602360248201527f4661696c757265204f6e20546f6b656e205472616e7366657220546f2053656e6044820152623232b960e91b6064820152608401610589565b60405183815260009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b03811660009081526006602052604081205481036108ac57506000919050565b6001600160a01b0382166000908152600660205260408120546108ce9061105b565b6001600160a01b0384166000908152600660205260409020600201549091508082116108fe575060009392505050565b80821115610915576109108183611312565b610918565b60005b949350505050565b61092933610f17565b565b6000546001600160a01b031633146109555760405162461bcd60e51b815260040161058990611396565b6001600160a01b03811673e0c18fe05895314f20e5100729f08bab3f3c3a45036109c15760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74205769746864726177205374616b656420546f6b656e000000006044820152606401610589565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3391906113c3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190611374565b610aee5760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e205769746864726177000000000000006044820152606401610589565b50565b600854600003610afe5750565b6000610b1e732260fac5e5542a773aa44fbcfedf7c193bc2c5998361107e565b9050600854670de0b6b3a7640000820281610b3b57610b3b61133c565b600980549290910491909101905560078054909101905550565b6000546001600160a01b03163314610b7f5760405162461bcd60e51b815260040161058990611396565b60648110610bbe5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40a8dede4090d2ced60a31b6044820152606401610589565b60048190556040518181527fb0e634e13e11168144d6e7d86eb92c547a79c0181bd24d62d324d567af12692a906020015b60405180910390a150565b6060600280546104b5906112c2565b3360009081526006602052604090205415610c2757610c2733610f17565b6000610c4773e0c18fe05895314f20e5100729f08bab3f3c3a458361107e565b600880548201905533600090815260066020526040902080548201808255600354420160019290920191909155909150610c809061105b565b336000818152600660205260408082206002019390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ccb9086815260200190565b60405180910390a35050565b6000546001600160a01b03163314610d015760405162461bcd60e51b815260040161058990611396565b600080546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d865760405162461bcd60e51b815260040161058990611396565b62989680811115610dce5760405162461bcd60e51b81526020600482015260126024820152714c6f636b2054696d6520546f6f204c6f6e6760701b6044820152606401610589565b60038190556040518181527fc086f5f6e9e89874e8a7189be0f242117750ec05ebe4fe22a4d33e5668acdbc090602001610bef565b6001600160a01b0381166000908152600660205260408120600101544211610e51576001600160a01b038216600090815260066020526040902060010154610e4c904290611312565b610e54565b60005b92915050565b6000546001600160a01b03163314610e845760405162461bcd60e51b815260040161058990611396565b6001600160a01b038116610ec95760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610589565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a7390602001610bef565b6001600160a01b0381166000908152600660205260408120549003610f395750565b6000610f4482610885565b905080600003610f52575050565b6001600160a01b038216600090815260066020526040902054610f749061105b565b6001600160a01b0383166000818152600660205260409081902060020192909255905163a9059cbb60e01b8152600481019190915260248101829052732260fac5e5542a773aa44fbcfedf7c193bc2c5999063a9059cbb906044016020604051808303816000875af1158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190611374565b6110575760405162461bcd60e51b81526020600482015260166024820152754661696c757265204f6e20546f6b656e20436c61696d60501b6044820152606401610589565b5050565b6000670de0b6b3a7640000600954836110749190611325565b610e549190611352565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb91906113c3565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015611141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111659190611374565b506040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906113c3565b90508181116112185760405162461bcd60e51b815260206004820152601360248201527222b93937b91027b7102a3930b739b332b924b760691b6044820152606401610589565b6112228282611312565b95945050505050565b600060208083528351808285015260005b818110156112585785810183015185820160400152820161123c565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561128b57600080fd5b81356001600160a01b03811681146112a257600080fd5b9392505050565b6000602082840312156112bb57600080fd5b5035919050565b600181811c908216806112d657607f821691505b6020821081036112f657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5457610e546112fc565b8082028115828204841417610e5457610e546112fc565b634e487b7160e01b600052601260045260246000fd5b60008261136f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561138657600080fd5b815180151581146112a257600080fd5b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b6000602082840312156113d557600080fd5b505191905056fea2646970667358221220b2aa5c2b579fe94eb46586fb2c6fe97fea6641b5e7845a63d69267dbf133bfc564736f6c63430008140033
Deployed Bytecode
0x60806040526004361061014f5760003560e01c806370a08231116100b6578063a694fc3a1161006f578063a694fc3a146103de578063a6f9dae1146103fe578063ae04d45d1461041e578063d0228e8f1461043e578063e74b981b1461045e578063fc0c546a1461047e57600080fd5b806370a0823114610315578063885a4cd01461034b578063893d20e81461036b5780638bdf67f2146103895780638beceeea146103a957806395d89b41146103c957600080fd5b80632e1a7d4d116101085780632e1a7d4d1461026c578063313ce5671461028e57806331d7a262146102aa578063372500ab146102ca57806346904840146102df57806358d9e685146102ff57600080fd5b806306fdde031461015b5780630d668087146101865780630e15561a146101aa57806318160ddd146101c05780631959a002146101d5578063228cb7331461022c57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b506101706104a6565b60405161017d919061122b565b60405180910390f35b34801561019257600080fd5b5061019c60035481565b60405190815260200161017d565b3480156101b657600080fd5b5061019c60075481565b3480156101cc57600080fd5b5060085461019c565b3480156101e157600080fd5b506102116101f0366004611279565b60066020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161017d565b34801561023857600080fd5b50610254732260fac5e5542a773aa44fbcfedf7c193bc2c59981565b6040516001600160a01b03909116815260200161017d565b34801561027857600080fd5b5061028c6102873660046112a9565b610538565b005b34801561029a57600080fd5b506040516012815260200161017d565b3480156102b657600080fd5b5061019c6102c5366004611279565b610885565b3480156102d657600080fd5b5061028c610920565b3480156102eb57600080fd5b50600554610254906001600160a01b031681565b34801561030b57600080fd5b5061019c60045481565b34801561032157600080fd5b5061019c610330366004611279565b6001600160a01b031660009081526006602052604090205490565b34801561035757600080fd5b5061028c610366366004611279565b61092b565b34801561037757600080fd5b506000546001600160a01b0316610254565b34801561039557600080fd5b5061028c6103a43660046112a9565b610af1565b3480156103b557600080fd5b5061028c6103c43660046112a9565b610b55565b3480156103d557600080fd5b50610170610bfa565b3480156103ea57600080fd5b5061028c6103f93660046112a9565b610c09565b34801561040a57600080fd5b5061028c610419366004611279565b610cd7565b34801561042a57600080fd5b5061028c6104393660046112a9565b610d5c565b34801561044a57600080fd5b5061019c610459366004611279565b610e03565b34801561046a57600080fd5b5061028c610479366004611279565b610e5a565b34801561048a57600080fd5b5061025473e0c18fe05895314f20e5100729f08bab3f3c3a4581565b6060600180546104b5906112c2565b80601f01602080910402602001604051908101604052809291908181526020018280546104e1906112c2565b801561052e5780601f106105035761010080835404028352916020019161052e565b820191906000526020600020905b81548152906001019060200180831161051157829003601f168201915b5050505050905090565b336000908152600660205260409020548111156105925760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064015b60405180910390fd5b600081116105d05760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8105b5bdd5b9d60aa1b6044820152606401610589565b33600090815260066020526040902054156105ee576105ee33610f17565b80600860008282546106009190611312565b90915550503360009081526006602052604081208054839290610624908490611312565b9091555050336000908152600660205260409020546106429061105b565b3360008181526006602052604081206002019290925561066190610e03565b15610685576064600454836106769190611325565b6106809190611352565b610688565b60005b905080156107655760055460405163a9059cbb60e01b81526001600160a01b0390911660048201526024810182905273e0c18fe05895314f20e5100729f08bab3f3c3a459063a9059cbb906044016020604051808303816000875af11580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107199190611374565b6107655760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e205472616e73666572000000000000006044820152606401610589565b60006107718284611312565b60405163a9059cbb60e01b81523360048201526024810182905290915073e0c18fe05895314f20e5100729f08bab3f3c3a459063a9059cbb906044016020604051808303816000875af11580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190611374565b6108485760405162461bcd60e51b815260206004820152602360248201527f4661696c757265204f6e20546f6b656e205472616e7366657220546f2053656e6044820152623232b960e91b6064820152608401610589565b60405183815260009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b03811660009081526006602052604081205481036108ac57506000919050565b6001600160a01b0382166000908152600660205260408120546108ce9061105b565b6001600160a01b0384166000908152600660205260409020600201549091508082116108fe575060009392505050565b80821115610915576109108183611312565b610918565b60005b949350505050565b61092933610f17565b565b6000546001600160a01b031633146109555760405162461bcd60e51b815260040161058990611396565b6001600160a01b03811673e0c18fe05895314f20e5100729f08bab3f3c3a45036109c15760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74205769746864726177205374616b656420546f6b656e000000006044820152606401610589565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3391906113c3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190611374565b610aee5760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e205769746864726177000000000000006044820152606401610589565b50565b600854600003610afe5750565b6000610b1e732260fac5e5542a773aa44fbcfedf7c193bc2c5998361107e565b9050600854670de0b6b3a7640000820281610b3b57610b3b61133c565b600980549290910491909101905560078054909101905550565b6000546001600160a01b03163314610b7f5760405162461bcd60e51b815260040161058990611396565b60648110610bbe5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40a8dede4090d2ced60a31b6044820152606401610589565b60048190556040518181527fb0e634e13e11168144d6e7d86eb92c547a79c0181bd24d62d324d567af12692a906020015b60405180910390a150565b6060600280546104b5906112c2565b3360009081526006602052604090205415610c2757610c2733610f17565b6000610c4773e0c18fe05895314f20e5100729f08bab3f3c3a458361107e565b600880548201905533600090815260066020526040902080548201808255600354420160019290920191909155909150610c809061105b565b336000818152600660205260408082206002019390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ccb9086815260200190565b60405180910390a35050565b6000546001600160a01b03163314610d015760405162461bcd60e51b815260040161058990611396565b600080546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d865760405162461bcd60e51b815260040161058990611396565b62989680811115610dce5760405162461bcd60e51b81526020600482015260126024820152714c6f636b2054696d6520546f6f204c6f6e6760701b6044820152606401610589565b60038190556040518181527fc086f5f6e9e89874e8a7189be0f242117750ec05ebe4fe22a4d33e5668acdbc090602001610bef565b6001600160a01b0381166000908152600660205260408120600101544211610e51576001600160a01b038216600090815260066020526040902060010154610e4c904290611312565b610e54565b60005b92915050565b6000546001600160a01b03163314610e845760405162461bcd60e51b815260040161058990611396565b6001600160a01b038116610ec95760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610589565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a7390602001610bef565b6001600160a01b0381166000908152600660205260408120549003610f395750565b6000610f4482610885565b905080600003610f52575050565b6001600160a01b038216600090815260066020526040902054610f749061105b565b6001600160a01b0383166000818152600660205260409081902060020192909255905163a9059cbb60e01b8152600481019190915260248101829052732260fac5e5542a773aa44fbcfedf7c193bc2c5999063a9059cbb906044016020604051808303816000875af1158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190611374565b6110575760405162461bcd60e51b81526020600482015260166024820152754661696c757265204f6e20546f6b656e20436c61696d60501b6044820152606401610589565b5050565b6000670de0b6b3a7640000600954836110749190611325565b610e549190611352565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb91906113c3565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015611141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111659190611374565b506040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906113c3565b90508181116112185760405162461bcd60e51b815260206004820152601360248201527222b93937b91027b7102a3930b739b332b924b760691b6044820152606401610589565b6112228282611312565b95945050505050565b600060208083528351808285015260005b818110156112585785810183015185820160400152820161123c565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561128b57600080fd5b81356001600160a01b03811681146112a257600080fd5b9392505050565b6000602082840312156112bb57600080fd5b5035919050565b600181811c908216806112d657607f821691505b6020821081036112f657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5457610e546112fc565b8082028115828204841417610e5457610e546112fc565b634e487b7160e01b600052601260045260246000fd5b60008261136f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561138657600080fd5b815180151581146112a257600080fd5b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b6000602082840312156113d557600080fd5b505191905056fea2646970667358221220b2aa5c2b579fe94eb46586fb2c6fe97fea6641b5e7845a63d69267dbf133bfc564736f6c63430008140033
Deployed Bytecode Sourcemap
4356:7344:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6119:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4605:33;;;;;;;;;;;;;;;;;;;713:25:1;;;701:2;686:18;4605:33:0;567:177:1;5286:27:0;;;;;;;;;;;;;;;;5809:94;;;;;;;;;;-1:-1:-1;5883:11:0;;5809:94;;5205:47;;;;;;;;;;-1:-1:-1;5205:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1242:25:1;;;1298:2;1283:18;;1276:34;;;;1326:18;;;1319:34;1230:2;1215:18;5205:47:0;1040:319:1;4959:75:0;;;;;;;;;;;;4992:42;4959:75;;;;;-1:-1:-1;;;;;1528:32:1;;;1510:51;;1498:2;1483:18;4959:75:0;1364:203:1;7711:1045:0;;;;;;;;;;-1:-1:-1;7711:1045:0;;;;;:::i;:::-;;:::i;:::-;;6365:83;;;;;;;;;;-1:-1:-1;6365:83:0;;4565:2;1899:36:1;;1887:2;1872:18;6365:83:0;1757:184:1;11069:435:0;;;;;;;;;;-1:-1:-1;11069:435:0;;;;;:::i;:::-;;:::i;7627:76::-;;;;;;;;;;;;;:::i;4752:72::-;;;;;;;;;;-1:-1:-1;4752:72:0;;;;-1:-1:-1;;;;;4752:72:0;;;4685:33;;;;;;;;;;;;;;;;5971:117;;;;;;;;;;-1:-1:-1;5971:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;6056:17:0;6028:7;6056:17;;;:8;:17;;;;;:24;;5971:117;7231:388;;;;;;;;;;-1:-1:-1;7231:388:0;;;;;:::i;:::-;;:::i;1437:83::-;;;;;;;;;;-1:-1:-1;1480:7:0;1507:5;-1:-1:-1;;;;;1507:5:0;1437:83;;9394:403;;;;;;;;;;-1:-1:-1;9394:403:0;;;;;:::i;:::-;;:::i;6705:242::-;;;;;;;;;;-1:-1:-1;6705:242:0;;;;;:::i;:::-;;:::i;6242:87::-;;;;;;;;;;;;;:::i;8764:622::-;;;;;;;;;;-1:-1:-1;8764:622:0;;;;;:::i;:::-;;:::i;1211:132::-;;;;;;;;;;-1:-1:-1;1211:132:0;;;;;:::i;:::-;;:::i;6456:241::-;;;;;;;;;;-1:-1:-1;6456:241:0;;;;;:::i;:::-;;:::i;10873:188::-;;;;;;;;;;-1:-1:-1;10873:188:0;;;;;:::i;:::-;;:::i;6955:268::-;;;;;;;;;;-1:-1:-1;6955:268:0;;;;;:::i;:::-;;:::i;4855:74::-;;;;;;;;;;;;4887:42;4855:74;;6119:83;6156:13;6189:5;6182:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6119:83;:::o;7711:1045::-;7806:10;7797:20;;;;:8;:20;;;;;:27;7787:37;;;7765:106;;;;-1:-1:-1;;;7765:106:0;;2533:2:1;7765:106:0;;;2515:21:1;2572:2;2552:18;;;2545:30;-1:-1:-1;;;2591:18:1;;;2584:49;2650:18;;7765:106:0;;;;;;;;;7913:1;7904:6;:10;7882:71;;;;-1:-1:-1;;;7882:71:0;;2881:2:1;7882:71:0;;;2863:21:1;2920:2;2900:18;;;2893:30;-1:-1:-1;;;2939:18:1;;;2932:41;2990:18;;7882:71:0;2679:335:1;7882:71:0;7977:10;7998:1;7968:20;;;:8;:20;;;;;:27;:31;7964:88;;8016:24;8029:10;8016:12;:24::i;:::-;8079:6;8064:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;8105:10:0;8096:20;;;;:8;:20;;;;;:37;;8127:6;;8096:20;:37;;8127:6;;8096:37;:::i;:::-;;;;-1:-1:-1;;8213:10:0;8204:20;;;;:8;:20;;;;;:27;8181:51;;:22;:51::i;:::-;8153:10;8144:20;;;;:8;:20;;;;;:34;;:88;;;;8256:27;;:15;:27::i;:::-;:32;:71;;8324:3;8306:13;;8297:6;:22;;;;:::i;:::-;8295:32;;;;:::i;:::-;8256:71;;;8291:1;8256:71;8245:82;-1:-1:-1;8342:7:0;;8338:168;;8415:12;;8392:41;;-1:-1:-1;;;8392:41:0;;-1:-1:-1;;;;;8415:12:0;;;8392:41;;;3985:51:1;4052:18;;;4045:34;;;4887:42:0;;8392:22;;3958:18:1;;8392:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8366:128;;;;-1:-1:-1;;;8366:128:0;;4574:2:1;8366:128:0;;;4556:21:1;4613:2;4593:18;;;4586:30;4652:27;4632:18;;;4625:55;4697:18;;8366:128:0;4372:349:1;8366:128:0;8518:15;8536:12;8545:3;8536:6;:12;:::i;:::-;8581:46;;-1:-1:-1;;;8581:46:0;;8604:10;8581:46;;;3985:51:1;4052:18;;;4045:34;;;8518:30:0;;-1:-1:-1;4887:42:0;;8581:22;;3958:18:1;;8581:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8559:131;;;;-1:-1:-1;;;8559:131:0;;4928:2:1;8559:131:0;;;4910:21:1;4967:2;4947:18;;;4940:30;5006:34;4986:18;;;4979:62;-1:-1:-1;;;5057:18:1;;;5050:33;5100:19;;8559:131:0;4726:399:1;8559:131:0;8708:40;;713:25:1;;;8737:1:0;;8717:10;;8708:40;;701:2:1;686:18;8708:40:0;;;;;;;7754:1002;;7711:1045;:::o;11069:435::-;-1:-1:-1;;;;;11158:21:0;;11135:7;11158:21;;;:8;:21;;;;;:28;:33;;11155:50;;-1:-1:-1;11201:1:0;;11069:435;-1:-1:-1;11069:435:0:o;11155:50::-;-1:-1:-1;;;;;11265:21:0;;11217:22;11265:21;;;:8;:21;;;;;:28;11242:52;;:22;:52::i;:::-;-1:-1:-1;;;;;11325:21:0;;11305:17;11325:21;;;:8;:21;;;;;:35;;;11217:77;;-1:-1:-1;11376:27:0;;;11373:44;;-1:-1:-1;11413:1:0;;11069:435;-1:-1:-1;;;11069:435:0:o;11373:44::-;11454:9;11436:14;:27;;:60;;11470:26;11487:9;11470:14;:26;:::i;:::-;11436:60;;;11466:1;11436:60;11429:67;11069:435;-1:-1:-1;;;;11069:435:0:o;7627:76::-;7671:24;7684:10;7671:12;:24::i;:::-;7627:76::o;7231:388::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7329:15:0;::::1;4887:42;7329:15:::0;7307:93:::1;;;::::0;-1:-1:-1;;;7307:93:0;;5680:2:1;7307:93:0::1;::::0;::::1;5662:21:1::0;5719:2;5699:18;;;5692:30;5758;5738:18;;;5731:58;5806:18;;7307:93:0::1;5478:352:1::0;7307:93:0::1;7504:39;::::0;-1:-1:-1;;;7504:39:0;;7537:4:::1;7504:39;::::0;::::1;1510:51:1::0;-1:-1:-1;;;;;7433:23:0;::::1;::::0;::::1;::::0;7475:10:::1;::::0;7433:23;;7504:24:::1;::::0;1483:18:1;;7504:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7433:125;::::0;-1:-1:-1;;;;;;7433:125:0::1;::::0;;;;;;-1:-1:-1;;;;;4003:32:1;;;7433:125:0::1;::::0;::::1;3985:51:1::0;4052:18;;;4045:34;3958:18;;7433:125:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7411:200;;;::::0;-1:-1:-1;;;7411:200:0;;6226:2:1;7411:200:0::1;::::0;::::1;6208:21:1::0;6265:2;6245:18;;;6238:30;6304:27;6284:18;;;6277:55;6349:18;;7411:200:0::1;6024:349:1::0;7411:200:0::1;7231:388:::0;:::o;9394:403::-;9458:11;;9473:1;9458:16;9454:55;;9394:403;:::o;9454:55::-;9566:13;9582:27;4992:42;9602:6;9582:11;:27::i;:::-;9566:43;;9720:11;;5431:6;9695:8;:20;9693:38;;;;;:::i;:::-;9672:17;:59;;9693:38;;;;9672:59;;;;;;9746:12;:24;;;;;;;-1:-1:-1;9394:403:0:o;6705:242::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;6818:3:::1;6804:11;:17;6782:79;;;::::0;-1:-1:-1;;;6782:79:0;;6580:2:1;6782:79:0::1;::::0;::::1;6562:21:1::0;6619:2;6599:18;;;6592:30;-1:-1:-1;;;6638:18:1;;;6631:42;6690:18;;6782:79:0::1;6378:336:1::0;6782:79:0::1;6872:13;:27:::0;;;6915:24:::1;::::0;713:25:1;;;6915:24:0::1;::::0;701:2:1;686:18;6915:24:0::1;;;;;;;;6705:242:::0;:::o;6242:87::-;6281:13;6314:7;6307:14;;;;;:::i;8764:622::-;8828:10;8849:1;8819:20;;;:8;:20;;;;;:27;:31;8815:88;;8867:24;8880:10;8867:12;:24::i;:::-;8946:13;8962:26;4887:42;8981:6;8962:11;:26::i;:::-;9058:11;:23;;;;;;9105:10;9058:11;9096:20;;;:8;:20;;;;;:39;;;;;;;9202:8;;9184:15;:26;-1:-1:-1;9150:31:0;;;;:60;;;;8946:42;;-1:-1:-1;9269:51:0;;:22;:51::i;:::-;9241:10;9232:20;;;;:8;:20;;;;;;:34;;:88;;;;9338:40;;9241:10;;9232:20;9338:40;;;;9371:6;713:25:1;;701:2;686:18;;567:177;9338:40:0;;;;;;;;8804:582;8764:622;:::o;1211:132::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;1292:5:::1;::::0;;1283:25:::1;::::0;-1:-1:-1;;;;;1283:25:0;;::::1;::::0;1292:5;::::1;::::0;1283:25:::1;::::0;::::1;1319:5;:16:::0;;-1:-1:-1;;;;;;1319:16:0::1;-1:-1:-1::0;;;;;1319:16:0;;;::::1;::::0;;;::::1;::::0;;1211:132::o;6456:241::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;6565:5:::1;6550:11;:20;;6528:88;;;::::0;-1:-1:-1;;;6528:88:0;;6921:2:1;6528:88:0::1;::::0;::::1;6903:21:1::0;6960:2;6940:18;;;6933:30;-1:-1:-1;;;6979:18:1;;;6972:48;7037:18;;6528:88:0::1;6719:342:1::0;6528:88:0::1;6627:8;:22:::0;;;6665:24:::1;::::0;713:25:1;;;6665:24:0::1;::::0;701:2:1;686:18;6665:24:0::1;567:177:1::0;10873:188:0;-1:-1:-1;;;;;10960:14:0;;10933:7;10960:14;;;:8;:14;;;;;:25;;;10988:15;-1:-1:-1;10960:93:0;;-1:-1:-1;;;;;11010:14:0;;;;;;:8;:14;;;;;:25;;;:43;;11038:15;;11010:43;:::i;:::-;10960:93;;;11006:1;10960:93;10953:100;10873:188;-1:-1:-1;;10873:188:0:o;6955:268::-;818:5;;-1:-1:-1;;;;;818:5:0;804:10;:19;796:51;;;;-1:-1:-1;;;796:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7057:29:0;::::1;7035:91;;;::::0;-1:-1:-1;;;7035:91:0;;7268:2:1;7035:91:0::1;::::0;::::1;7250:21:1::0;7307:2;7287:18;;;7280:30;-1:-1:-1;;;7326:18:1;;;7319:42;7378:18;;7035:91:0::1;7066:336:1::0;7035:91:0::1;7137:12;:30:::0;;-1:-1:-1;;;;;;7137:30:0::1;-1:-1:-1::0;;;;;7137:30:0;::::1;::::0;;::::1;::::0;;;7183:32:::1;::::0;1510:51:1;;;7183:32:0::1;::::0;1498:2:1;1483:18;7183:32:0::1;1364:203:1::0;9807:636:0;-1:-1:-1;;;;;9907:14:0;;;;;;:8;:14;;;;;:21;:26;;9903:65;;9807:636;:::o;9903:65::-;10014:14;10031:20;10046:4;10031:14;:20::i;:::-;10014:37;;10109:6;10119:1;10109:11;10105:50;;10137:7;9807:636;:::o;10105:50::-;-1:-1:-1;;;;;10255:14:0;;;;;;:8;:14;;;;;:21;10232:45;;:22;:45::i;:::-;-1:-1:-1;;;;;10201:14:0;;;;;;:8;:14;;;;;;;:28;;:76;;;;10348:37;;-1:-1:-1;;;10348:37:0;;;;;3985:51:1;;;;4052:18;;;4045:34;;;4992:42:0;;10348:23;;3958:18:1;;10348:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10326:109;;;;-1:-1:-1;;;10326:109:0;;7609:2:1;10326:109:0;;;7591:21:1;7648:2;7628:18;;;7621:30;-1:-1:-1;;;7667:18:1;;;7660:52;7729:18;;10326:109:0;7407:346:1;10326:109:0;9852:591;9807:636;:::o;11512:146::-;11582:7;5431:6;11619:17;;11611:5;:25;;;;:::i;:::-;11609:41;;;;:::i;10451:414::-;10556:39;;-1:-1:-1;;;10556:39:0;;10589:4;10556:39;;;1510:51:1;10522:7:0;;;;-1:-1:-1;;;;;10556:24:0;;;;;1483:18:1;;10556:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10606:62;;-1:-1:-1;;;10606:62:0;;10634:10;10606:62;;;7998:34:1;10654:4:0;8048:18:1;;;8041:43;8100:18;;;8093:34;;;10542:53:0;;-1:-1:-1;;;;;;10606:27:0;;;;;7933:18:1;;10606:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10692:39:0;;-1:-1:-1;;;10692:39:0;;10725:4;10692:39;;;1510:51:1;10679:10:0;;-1:-1:-1;;;;;10692:24:0;;;;;1483:18:1;;10692:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10679:52;;10772:6;10764:5;:14;10742:83;;;;-1:-1:-1;;;10742:83:0;;8340:2:1;10742:83:0;;;8322:21:1;8379:2;8359:18;;;8352:30;-1:-1:-1;;;8398:18:1;;;8391:49;8457:18;;10742:83:0;8138:343:1;10742:83:0;10843:14;10851:6;10843:5;:14;:::i;:::-;10836:21;10451:414;-1:-1:-1;;;;;10451:414:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;749:286::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;903:23;;-1:-1:-1;;;;;955:31:1;;945:42;;935:70;;1001:1;998;991:12;935:70;1024:5;749:286;-1:-1:-1;;;749:286:1:o;1572:180::-;1631:6;1684:2;1672:9;1663:7;1659:23;1655:32;1652:52;;;1700:1;1697;1690:12;1652:52;-1:-1:-1;1723:23:1;;1572:180;-1:-1:-1;1572:180:1:o;1946:380::-;2025:1;2021:12;;;;2068;;;2089:61;;2143:4;2135:6;2131:17;2121:27;;2089:61;2196:2;2188:6;2185:14;2165:18;2162:38;2159:161;;2242:10;2237:3;2233:20;2230:1;2223:31;2277:4;2274:1;2267:15;2305:4;2302:1;2295:15;2159:161;;1946:380;;;:::o;3019:127::-;3080:10;3075:3;3071:20;3068:1;3061:31;3111:4;3108:1;3101:15;3135:4;3132:1;3125:15;3151:128;3218:9;;;3239:11;;;3236:37;;;3253:18;;:::i;3284:168::-;3357:9;;;3388;;3405:15;;;3399:22;;3385:37;3375:71;;3426:18;;:::i;3457:127::-;3518:10;3513:3;3509:20;3506:1;3499:31;3549:4;3546:1;3539:15;3573:4;3570:1;3563:15;3589:217;3629:1;3655;3645:132;;3699:10;3694:3;3690:20;3687:1;3680:31;3734:4;3731:1;3724:15;3762:4;3759:1;3752:15;3645:132;-1:-1:-1;3791:9:1;;3589:217::o;4090:277::-;4157:6;4210:2;4198:9;4189:7;4185:23;4181:32;4178:52;;;4226:1;4223;4216:12;4178:52;4258:9;4252:16;4311:5;4304:13;4297:21;4290:5;4287:32;4277:60;;4333:1;4330;4323:12;5130:343;5332:2;5314:21;;;5371:2;5351:18;;;5344:30;-1:-1:-1;;;5405:2:1;5390:18;;5383:49;5464:2;5449:18;;5130:343::o;5835:184::-;5905:6;5958:2;5946:9;5937:7;5933:23;5929:32;5926:52;;;5974:1;5971;5964:12;5926:52;-1:-1:-1;5997:16:1;;5835:184;-1:-1:-1;5835:184:1:o
Swarm Source
ipfs://b2aa5c2b579fe94eb46586fb2c6fe97fea6641b5e7845a63d69267dbf133bfc5
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.