ERC-20
Fitness
Overview
Max Total Supply
1,000,000,000 SLEEPEE
Holders
339 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SLEEPFUTURE
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-12 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // OpenZeppelin Contracts v4.4.1 (token/ERC20/ERC20.sol) /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20Burnable.sol) /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { uint256 currentAllowance = allowance(account, _msgSender()); require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance"); unchecked { _approve(account, _msgSender(), currentAllowance - amount); } _burn(account, amount); } } contract VestingContract { IERC20 internal token; // start cliff time is deployment time uint256 internal amount; uint256 internal startReleaseDate; uint256 internal distributed; uint256 internal releasePeriod; uint256 internal distributedTime; uint256 internal percentage; address internal beneficiary; constructor (IERC20 _token, uint256 _amount, uint256 _distributed, address _beneficiary, uint256 _percentage, uint256 _cliffTime, uint256 _releasePeriod) { startReleaseDate = block.timestamp + _cliffTime; releasePeriod = _releasePeriod; token = _token; amount = _amount; distributed = _distributed; beneficiary = _beneficiary; percentage = _percentage; } function release() public { // fully release require(amount > distributed, "Vesting is fully released") ; require(startReleaseDate + distributedTime*releasePeriod < block.timestamp, "Token is still in lock"); uint256 periodReleaseToken = percentage*amount/10000; uint256 releaseToken = (amount - distributed) > periodReleaseToken ? periodReleaseToken: (amount - distributed); distributed = distributed + releaseToken; distributedTime++; token.transfer(beneficiary, releaseToken); } function vestingInfo() public view returns ( IERC20 _token, address _beneficiary, uint256 _amount, uint256 _distributed, uint256 _startReleaseDate, uint256 _releasePeriod, uint256 _distributedTime, uint256 _percentage) { return (token, beneficiary, amount, distributed, startReleaseDate, releasePeriod, distributedTime, percentage); } } contract SLEEPFUTURE is ERC20Burnable { uint256 constant TOTAL_SUPPLY = 1*(10**9)*(10**18); //1 billion tokens; uint256 internal token4Seed = 4*TOTAL_SUPPLY/100; //4% uint256 internal token4PrivateSale = 3*TOTAL_SUPPLY/100; //3% uint256 internal token4PreSale = 2*TOTAL_SUPPLY/100; //2% uint256 internal token4PublicSale = 1*TOTAL_SUPPLY/100; //1% uint256 internal token4Team = 16*TOTAL_SUPPLY/100; // 16% uint256 internal token4Rewards = 30*TOTAL_SUPPLY/100; // 30% uint256 internal token4Foundation = 20*TOTAL_SUPPLY/100; // 20% uint256 internal token4Marketing = 12*TOTAL_SUPPLY/100; // 12% uint256 internal token4Liquidity = 9*TOTAL_SUPPLY/100; // 9% uint256 internal token4Reserve = 3*TOTAL_SUPPLY/100; // 3% address[] internal vestingLists; //Total 100% constructor () ERC20 ("Sleep Future", "SLEEPEE"){ _genesisDistributeAndLock(); } function getVestings() public view returns (address[] memory vestings) { return vestingLists; } /** * distribute token for team, marketing, foundation, ... */ function _genesisDistributeAndLock() internal { address seedAddress = 0x43AedAdE0066A57247D8D8D45424E2AcaA9aEB70; address privateSaleAddress = 0xb0438dcd547653E5B651d09e279A10F5a5C0dad6; address presaleAddress = 0x2285dF9ffeb3Bd2d12147438C3b7D8a680Be8B49; address publicsaleAddress = 0x82Fa77dBA44b0b5bB4285d2b8dc495F5EFe38a50; address teamAddress = 0x4234f7E49306db385467b8c34Dca8126ebf99D9F; address rewardsAddress = 0xEd63440C8b4201472630ae73bC6290598010F2E5; address foundationAddress = 0x7D95666BfaEa4e64430C6B692B73755E87685acA; address marketingAddress = 0xb83ee3dD3B67DD7fC2f8a46837542f0203386E22; address liquidityAddress = 0x1cd5B0a4aB410313370eb6b0B5cD081CAD2Fa89c; address reserveAddress = 0x0e6593d0d2B1C3aFd627ce7136672D34648dEd7F; // distribute for ecosystem and stacking _distributeAndLockToken(500, token4Seed, seedAddress, 791, 90 days, 30 days); _distributeAndLockToken(500, token4PrivateSale, privateSaleAddress, 1055, 90 days, 30 days); _distributeAndLockToken(0, token4PreSale, presaleAddress, 2000, 10 days, 30 days); _distributeAndLockToken(1000, token4PublicSale, publicsaleAddress, 1000, 30 days, 30 days); _distributeAndLockToken(0, token4Team, teamAddress, 500, 365 days, 30 days); _distributeAndLockToken(0, token4Rewards, rewardsAddress, 500, 30 days, 30 days); _distributeAndLockToken(100, token4Foundation, foundationAddress, 450, 90 days, 30 days); _distributeAndLockToken(0, token4Marketing, marketingAddress, 300, 14 days, 30 days); _distributeAndLockToken(100, token4Liquidity, liquidityAddress, 500, 30 days, 30 days); _distributeAndLockToken(100, token4Reserve, reserveAddress, 500, 90 days, 30 days); } function _distributeAndLockToken(uint256 _tgePercent, uint256 _totalVesting, address _beneficiary, uint256 _periodPecentage, uint256 _cliffTime, uint256 _releasePeriod) internal { uint256 tgeToken = _tgePercent*_totalVesting/10000; // (IERC20 _token, uint _amount, uint _distributed, address _beneficiary, uint _percentage, uint _cliffTime, uint _releasePeriod) VestingContract vesting = new VestingContract( IERC20(this), _totalVesting, tgeToken, _beneficiary, _periodPecentage, _cliffTime, _releasePeriod ); vestingLists.push(address(vesting)); _mint(address(vesting), _totalVesting - tgeToken); if(tgeToken > 0) _mint(_beneficiary, tgeToken); } function transferToMany( address[] memory receivingWalletList_, uint256[] memory receivingAmountList_ ) external { require( receivingWalletList_.length == receivingAmountList_.length, "receivingWalletList_ and receivingAmountList_ not same length" ); for (uint256 i = 0; i < receivingWalletList_.length; i++) { _transfer( _msgSender(), receivingWalletList_[i], receivingAmountList_[i] ); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVestings","outputs":[{"internalType":"address[]","name":"vestings","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"receivingWalletList_","type":"address[]"},{"internalType":"uint256[]","name":"receivingAmountList_","type":"uint256[]"}],"name":"transferToMany","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260646200001f6b033b2e3c9fd0803ce8000000600462000721565b6200002b919062000743565b6005556064620000496b033b2e3c9fd0803ce8000000600362000721565b62000055919062000743565b6006556064620000736b033b2e3c9fd0803ce8000000600262000721565b6200007f919062000743565b60075560646200009d6b033b2e3c9fd0803ce8000000600162000721565b620000a9919062000743565b6008556064620000c76b033b2e3c9fd0803ce8000000601062000721565b620000d3919062000743565b6009556064620000f16b033b2e3c9fd0803ce8000000601e62000721565b620000fd919062000743565b600a5560646200011b6b033b2e3c9fd0803ce8000000601462000721565b62000127919062000743565b600b556064620001456b033b2e3c9fd0803ce8000000600c62000721565b62000151919062000743565b600c5560646200016f6b033b2e3c9fd0803ce8000000600962000721565b6200017b919062000743565b600d556064620001996b033b2e3c9fd0803ce8000000600362000721565b620001a5919062000743565b600e55348015620001b557600080fd5b50604080518082018252600c81526b536c6565702046757475726560a01b602080830191825283518085019094526007845266534c454550454560c81b908401528151919291620002099160039162000657565b5080516200021f90600490602084019062000657565b506200022d91505062000233565b620007d8565b6005547343aedade0066a57247d8d8d45424e2acaa9aeb709073b0438dcd547653e5b651d09e279a10f5a5c0dad690732285df9ffeb3bd2d12147438c3b7d8a680be8b49907382fa77dba44b0b5bb4285d2b8dc495f5efe38a5090734234f7e49306db385467b8c34dca8126ebf99d9f9073ed63440c8b4201472630ae73bc6290598010f2e590737d95666bfaea4e64430c6b692b73755e87685aca9073b83ee3dd3b67dd7fc2f8a46837542f0203386e2290731cd5b0a4ab410313370eb6b0b5cd081cad2fa89c90730e6593d0d2b1c3afd627ce7136672d34648ded7f906200032d906101f4908c6103176276a70062278d006200045c565b6200034f6101f46006548b61041f6276a70062278d006200045c60201b60201c565b6200037060006007548a6107d0620d2f0062278d006200045c60201b60201c565b6200038f6103e8600854896103e862278d00806200045c60201b60201c565b620003b16000600954886101f46301e1338062278d006200045c60201b60201c565b620003cf6000600a54876101f462278d00806200045c60201b60201c565b620003f06064600b54866101c26276a70062278d006200045c60201b60201c565b620004116000600c548561012c6212750062278d006200045c60201b60201c565b6200042f6064600d54846101f462278d00806200045c60201b60201c565b620004506064600e54836101f46276a70062278d006200045c60201b60201c565b50505050505050505050565b60006127106200046d878962000721565b62000479919062000743565b90506000308783888888886040516200049290620006e6565b6001600160a01b03978816815260208101969096526040860194909452949091166060840152608083015260a082019290925260c081019190915260e001604051809103906000f080158015620004ed573d6000803e3d6000fd5b50600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319166001600160a01b038316179055905062000552816200054c848a62000766565b6200056f565b811562000565576200056586836200056f565b5050505050505050565b6001600160a01b038216620005ca5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620005de919062000780565b90915550506001600160a01b038216600090815260208190526040812080548392906200060d90849062000780565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b82805462000665906200079b565b90600052602060002090601f016020900481019282620006895760008555620006d4565b82601f10620006a457805160ff1916838001178555620006d4565b82800160010185558215620006d4579182015b82811115620006d4578251825591602001919060010190620006b7565b50620006e2929150620006f4565b5090565b6104a480620016a883390190565b5b80821115620006e25760008155600101620006f5565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200073e576200073e6200070b565b500290565b6000826200076157634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156200077b576200077b6200070b565b500390565b600082198211156200079657620007966200070b565b500190565b600181811c90821680620007b057607f821691505b60208210811415620007d257634e487b7160e01b600052602260045260246000fd5b50919050565b610ec080620007e86000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063626a9b261161009757806395d89b411161006657806395d89b41146101fb578063a457c2d714610203578063a9059cbb14610216578063dd62ed3e1461022957600080fd5b8063626a9b261461019757806370a08231146101ac57806379cc6790146101d55780637c33ebfd146101e857600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806342966c681461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610262565b60405161010f9190610ab1565b60405180910390f35b61012b610126366004610b22565b6102f4565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b366004610b4c565b61030a565b6040516012815260200161010f565b61012b61017d366004610b22565b6103b9565b610195610190366004610b88565b6103f5565b005b61019f610402565b60405161010f9190610ba1565b61013f6101ba366004610bee565b6001600160a01b031660009081526020819052604090205490565b6101956101e3366004610b22565b610463565b6101956101f6366004610ce6565b6104e9565b6101026105bb565b61012b610211366004610b22565b6105ca565b61012b610224366004610b22565b610663565b61013f610237366004610da6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60606003805461027190610dd9565b80601f016020809104026020016040519081016040528092919081815260200182805461029d90610dd9565b80156102ea5780601f106102bf576101008083540402835291602001916102ea565b820191906000526020600020905b8154815290600101906020018083116102cd57829003601f168201915b5050505050905090565b6000610301338484610670565b50600192915050565b6000610317848484610794565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103a15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103ae8533858403610670565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103019185906103f0908690610e2a565b610670565b6103ff3382610963565b50565b6060600f8054806020026020016040519081016040528092919081815260200182805480156102ea57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161043c575050505050905090565b600061046f8333610237565b9050818110156104cd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610398565b6104da8333848403610670565b6104e48383610963565b505050565b80518251146105605760405162461bcd60e51b815260206004820152603d60248201527f726563656976696e6757616c6c65744c6973745f20616e64207265636569766960448201527f6e67416d6f756e744c6973745f206e6f742073616d65206c656e6774680000006064820152608401610398565b60005b82518110156104e4576105a93384838151811061058257610582610e42565b602002602001015184848151811061059c5761059c610e42565b6020026020010151610794565b806105b381610e58565b915050610563565b60606004805461027190610dd9565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561064c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610398565b6106593385858403610670565b5060019392505050565b6000610301338484610794565b6001600160a01b0383166106d25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610398565b6001600160a01b0382166107335760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610398565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610398565b6001600160a01b03821661085a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610398565b6001600160a01b038316600090815260208190526040902054818110156108d25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610398565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610909908490610e2a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161095591815260200190565b60405180910390a350505050565b6001600160a01b0382166109c35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610398565b6001600160a01b03821660009081526020819052604090205481811015610a375760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610398565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610a66908490610e73565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600060208083528351808285015260005b81811015610ade57858101830151858201604001528201610ac2565b81811115610af0576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610b1d57600080fd5b919050565b60008060408385031215610b3557600080fd5b610b3e83610b06565b946020939093013593505050565b600080600060608486031215610b6157600080fd5b610b6a84610b06565b9250610b7860208501610b06565b9150604084013590509250925092565b600060208284031215610b9a57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015610be25783516001600160a01b031683529284019291840191600101610bbd565b50909695505050505050565b600060208284031215610c0057600080fd5b610c0982610b06565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610c4f57610c4f610c10565b604052919050565b600067ffffffffffffffff821115610c7157610c71610c10565b5060051b60200190565b600082601f830112610c8c57600080fd5b81356020610ca1610c9c83610c57565b610c26565b82815260059290921b84018101918181019086841115610cc057600080fd5b8286015b84811015610cdb5780358352918301918301610cc4565b509695505050505050565b60008060408385031215610cf957600080fd5b823567ffffffffffffffff80821115610d1157600080fd5b818501915085601f830112610d2557600080fd5b81356020610d35610c9c83610c57565b82815260059290921b84018101918181019089841115610d5457600080fd5b948201945b83861015610d7957610d6a86610b06565b82529482019490820190610d59565b96505086013592505080821115610d8f57600080fd5b50610d9c85828601610c7b565b9150509250929050565b60008060408385031215610db957600080fd5b610dc283610b06565b9150610dd060208401610b06565b90509250929050565b600181811c90821680610ded57607f821691505b60208210811415610e0e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610e3d57610e3d610e14565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610e6c57610e6c610e14565b5060010190565b600082821015610e8557610e85610e14565b50039056fea26469706673582212207a7eaf38f97ed23f66a832ee7d0dcb7495eba7207c9dc69a4c13c24777e211a064736f6c63430008090033608060405234801561001057600080fd5b506040516104a43803806104a483398101604081905261002f9161009a565b6100398242610105565b60025560045550600080546001600160a01b03199081166001600160a01b039788161790915560019490945560039290925560078054909316931692909217905560065561012b565b6001600160a01b038116811461009757600080fd5b50565b600080600080600080600060e0888a0312156100b557600080fd5b87516100c081610082565b80975050602088015195506040880151945060608801516100e081610082565b809450506080880151925060a0880151915060c0880151905092959891949750929550565b6000821982111561012657634e487b7160e01b600052601160045260246000fd5b500190565b61036a8061013a6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806320df13441461003b57806386d1a69f1461009f575b600080fd5b600054600754600154600354600254600454600554600654604080516001600160a01b03998a168152989097166020890152878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b6100a76100a9565b005b600354600154116101015760405162461bcd60e51b815260206004820152601960248201527f56657374696e672069732066756c6c792072656c65617365640000000000000060448201526064015b60405180910390fd5b426004546005546101129190610280565b60025461011f919061029f565b106101655760405162461bcd60e51b8152602060048201526016602482015275546f6b656e206973207374696c6c20696e206c6f636b60501b60448201526064016100f8565b600061271060015460065461017a9190610280565b61018491906102b7565b905060008160035460015461019991906102d9565b116101b3576003546001546101ae91906102d9565b6101b5565b815b9050806003546101c5919061029f565b600355600580549060006101d8836102f0565b909155505060005460075460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561022d57600080fd5b505af1158015610241573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610265919061030b565b505050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561029a5761029a61026a565b500290565b600082198211156102b2576102b261026a565b500190565b6000826102d457634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156102eb576102eb61026a565b500390565b60006000198214156103045761030461026a565b5060010190565b60006020828403121561031d57600080fd5b8151801515811461032d57600080fd5b939250505056fea264697066735822122094f6a6517bc053a58f68f3d33ccb1d002a68c7290aa70a5a8173f4af81e108a464736f6c63430008090033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063626a9b261161009757806395d89b411161006657806395d89b41146101fb578063a457c2d714610203578063a9059cbb14610216578063dd62ed3e1461022957600080fd5b8063626a9b261461019757806370a08231146101ac57806379cc6790146101d55780637c33ebfd146101e857600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806342966c681461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610262565b60405161010f9190610ab1565b60405180910390f35b61012b610126366004610b22565b6102f4565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b366004610b4c565b61030a565b6040516012815260200161010f565b61012b61017d366004610b22565b6103b9565b610195610190366004610b88565b6103f5565b005b61019f610402565b60405161010f9190610ba1565b61013f6101ba366004610bee565b6001600160a01b031660009081526020819052604090205490565b6101956101e3366004610b22565b610463565b6101956101f6366004610ce6565b6104e9565b6101026105bb565b61012b610211366004610b22565b6105ca565b61012b610224366004610b22565b610663565b61013f610237366004610da6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60606003805461027190610dd9565b80601f016020809104026020016040519081016040528092919081815260200182805461029d90610dd9565b80156102ea5780601f106102bf576101008083540402835291602001916102ea565b820191906000526020600020905b8154815290600101906020018083116102cd57829003601f168201915b5050505050905090565b6000610301338484610670565b50600192915050565b6000610317848484610794565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103a15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103ae8533858403610670565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103019185906103f0908690610e2a565b610670565b6103ff3382610963565b50565b6060600f8054806020026020016040519081016040528092919081815260200182805480156102ea57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161043c575050505050905090565b600061046f8333610237565b9050818110156104cd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610398565b6104da8333848403610670565b6104e48383610963565b505050565b80518251146105605760405162461bcd60e51b815260206004820152603d60248201527f726563656976696e6757616c6c65744c6973745f20616e64207265636569766960448201527f6e67416d6f756e744c6973745f206e6f742073616d65206c656e6774680000006064820152608401610398565b60005b82518110156104e4576105a93384838151811061058257610582610e42565b602002602001015184848151811061059c5761059c610e42565b6020026020010151610794565b806105b381610e58565b915050610563565b60606004805461027190610dd9565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561064c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610398565b6106593385858403610670565b5060019392505050565b6000610301338484610794565b6001600160a01b0383166106d25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610398565b6001600160a01b0382166107335760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610398565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610398565b6001600160a01b03821661085a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610398565b6001600160a01b038316600090815260208190526040902054818110156108d25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610398565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610909908490610e2a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161095591815260200190565b60405180910390a350505050565b6001600160a01b0382166109c35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610398565b6001600160a01b03821660009081526020819052604090205481811015610a375760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610398565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610a66908490610e73565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600060208083528351808285015260005b81811015610ade57858101830151858201604001528201610ac2565b81811115610af0576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610b1d57600080fd5b919050565b60008060408385031215610b3557600080fd5b610b3e83610b06565b946020939093013593505050565b600080600060608486031215610b6157600080fd5b610b6a84610b06565b9250610b7860208501610b06565b9150604084013590509250925092565b600060208284031215610b9a57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015610be25783516001600160a01b031683529284019291840191600101610bbd565b50909695505050505050565b600060208284031215610c0057600080fd5b610c0982610b06565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610c4f57610c4f610c10565b604052919050565b600067ffffffffffffffff821115610c7157610c71610c10565b5060051b60200190565b600082601f830112610c8c57600080fd5b81356020610ca1610c9c83610c57565b610c26565b82815260059290921b84018101918181019086841115610cc057600080fd5b8286015b84811015610cdb5780358352918301918301610cc4565b509695505050505050565b60008060408385031215610cf957600080fd5b823567ffffffffffffffff80821115610d1157600080fd5b818501915085601f830112610d2557600080fd5b81356020610d35610c9c83610c57565b82815260059290921b84018101918181019089841115610d5457600080fd5b948201945b83861015610d7957610d6a86610b06565b82529482019490820190610d59565b96505086013592505080821115610d8f57600080fd5b50610d9c85828601610c7b565b9150509250929050565b60008060408385031215610db957600080fd5b610dc283610b06565b9150610dd060208401610b06565b90509250929050565b600181811c90821680610ded57607f821691505b60208210811415610e0e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610e3d57610e3d610e14565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610e6c57610e6c610e14565b5060010190565b600082821015610e8557610e85610e14565b50039056fea26469706673582212207a7eaf38f97ed23f66a832ee7d0dcb7495eba7207c9dc69a4c13c24777e211a064736f6c63430008090033
Deployed Bytecode Sourcemap
19296:4366:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6340:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8507:169;;;;;;:::i;:::-;;:::i;:::-;;;1218:14:1;;1211:22;1193:41;;1181:2;1166:18;8507:169:0;1053:187:1;7460:108:0;7548:12;;7460:108;;;1391:25:1;;;1379:2;1364:18;7460:108:0;1245:177:1;9158:492:0;;;;;;:::i;:::-;;:::i;7302:93::-;;;7385:2;1902:36:1;;1890:2;1875:18;7302:93:0;1760:184:1;10059:215:0;;;;;;:::i;:::-;;:::i;16759:91::-;;;;;;:::i;:::-;;:::i;:::-;;20236:109;;;:::i;:::-;;;;;;;:::i;7631:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;7732:18:0;7705:7;7732:18;;;;;;;;;;;;7631:127;17169:368;;;;;;:::i;:::-;;:::i;23099:560::-;;;;;;:::i;:::-;;:::i;6559:104::-;;;:::i;10777:413::-;;;;;;:::i;:::-;;:::i;7971:175::-;;;;;;:::i;:::-;;:::i;8209:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8325:18:0;;;8298:7;8325:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8209:151;6340:100;6394:13;6427:5;6420:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6340:100;:::o;8507:169::-;8590:4;8607:39;4168:10;8630:7;8639:6;8607:8;:39::i;:::-;-1:-1:-1;8664:4:0;8507:169;;;;:::o;9158:492::-;9298:4;9315:36;9325:6;9333:9;9344:6;9315:9;:36::i;:::-;-1:-1:-1;;;;;9391:19:0;;9364:24;9391:19;;;:11;:19;;;;;;;;4168:10;9391:33;;;;;;;;9443:26;;;;9435:79;;;;-1:-1:-1;;;9435:79:0;;6258:2:1;9435:79:0;;;6240:21:1;6297:2;6277:18;;;6270:30;6336:34;6316:18;;;6309:62;-1:-1:-1;;;6387:18:1;;;6380:38;6435:19;;9435:79:0;;;;;;;;;9550:57;9559:6;4168:10;9600:6;9581:16;:25;9550:8;:57::i;:::-;-1:-1:-1;9638:4:0;;9158:492;-1:-1:-1;;;;9158:492:0:o;10059:215::-;4168:10;10147:4;10196:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10196:34:0;;;;;;;;;;10147:4;;10164:80;;10187:7;;10196:47;;10233:10;;10196:47;:::i;:::-;10164:8;:80::i;16759:91::-;16815:27;4168:10;16835:6;16815:5;:27::i;:::-;16759:91;:::o;20236:109::-;20280:25;20325:12;20318:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20318:19:0;;;;;;;;;;;;;;;;;;;;;;20236:109;:::o;17169:368::-;17246:24;17273:32;17283:7;4168:10;8209:151;:::i;17273:32::-;17246:59;;17344:6;17324:16;:26;;17316:75;;;;-1:-1:-1;;;17316:75:0;;6932:2:1;17316:75:0;;;6914:21:1;6971:2;6951:18;;;6944:30;7010:34;6990:18;;;6983:62;-1:-1:-1;;;7061:18:1;;;7054:34;7105:19;;17316:75:0;6730:400:1;17316:75:0;17427:58;17436:7;4168:10;17478:6;17459:16;:25;17427:8;:58::i;:::-;17507:22;17513:7;17522:6;17507:5;:22::i;:::-;17235:302;17169:368;;:::o;23099:560::-;23299:20;:27;23268:20;:27;:58;23246:169;;;;-1:-1:-1;;;23246:169:0;;7337:2:1;23246:169:0;;;7319:21:1;7376:2;7356:18;;;7349:30;7415:34;7395:18;;;7388:62;7486:31;7466:18;;;7459:59;7535:19;;23246:169:0;7135:425:1;23246:169:0;23433:9;23428:224;23452:20;:27;23448:1;:31;23428:224;;;23501:139;4168:10;23560:20;23581:1;23560:23;;;;;;;;:::i;:::-;;;;;;;23602:20;23623:1;23602:23;;;;;;;;:::i;:::-;;;;;;;23501:9;:139::i;:::-;23481:3;;;;:::i;:::-;;;;23428:224;;6559:104;6615:13;6648:7;6641:14;;;;;:::i;10777:413::-;4168:10;10870:4;10914:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10914:34:0;;;;;;;;;;10967:35;;;;10959:85;;;;-1:-1:-1;;;10959:85:0;;8039:2:1;10959:85:0;;;8021:21:1;8078:2;8058:18;;;8051:30;8117:34;8097:18;;;8090:62;-1:-1:-1;;;8168:18:1;;;8161:35;8213:19;;10959:85:0;7837:401:1;10959:85:0;11080:67;4168:10;11103:7;11131:15;11112:16;:34;11080:8;:67::i;:::-;-1:-1:-1;11178:4:0;;10777:413;-1:-1:-1;;;10777:413:0:o;7971:175::-;8057:4;8074:42;4168:10;8098:9;8109:6;8074:9;:42::i;14461:380::-;-1:-1:-1;;;;;14597:19:0;;14589:68;;;;-1:-1:-1;;;14589:68:0;;8445:2:1;14589:68:0;;;8427:21:1;8484:2;8464:18;;;8457:30;8523:34;8503:18;;;8496:62;-1:-1:-1;;;8574:18:1;;;8567:34;8618:19;;14589:68:0;8243:400:1;14589:68:0;-1:-1:-1;;;;;14676:21:0;;14668:68;;;;-1:-1:-1;;;14668:68:0;;8850:2:1;14668:68:0;;;8832:21:1;8889:2;8869:18;;;8862:30;8928:34;8908:18;;;8901:62;-1:-1:-1;;;8979:18:1;;;8972:32;9021:19;;14668:68:0;8648:398:1;14668:68:0;-1:-1:-1;;;;;14749:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14801:32;;1391:25:1;;;14801:32:0;;1364:18:1;14801:32:0;;;;;;;14461:380;;;:::o;11680:733::-;-1:-1:-1;;;;;11820:20:0;;11812:70;;;;-1:-1:-1;;;11812:70:0;;9253:2:1;11812:70:0;;;9235:21:1;9292:2;9272:18;;;9265:30;9331:34;9311:18;;;9304:62;-1:-1:-1;;;9382:18:1;;;9375:35;9427:19;;11812:70:0;9051:401:1;11812:70:0;-1:-1:-1;;;;;11901:23:0;;11893:71;;;;-1:-1:-1;;;11893:71:0;;9659:2:1;11893:71:0;;;9641:21:1;9698:2;9678:18;;;9671:30;9737:34;9717:18;;;9710:62;-1:-1:-1;;;9788:18:1;;;9781:33;9831:19;;11893:71:0;9457:399:1;11893:71:0;-1:-1:-1;;;;;12061:17:0;;12037:21;12061:17;;;;;;;;;;;12097:23;;;;12089:74;;;;-1:-1:-1;;;12089:74:0;;10063:2:1;12089:74:0;;;10045:21:1;10102:2;10082:18;;;10075:30;10141:34;10121:18;;;10114:62;-1:-1:-1;;;10192:18:1;;;10185:36;10238:19;;12089:74:0;9861:402:1;12089:74:0;-1:-1:-1;;;;;12199:17:0;;;:9;:17;;;;;;;;;;;12219:22;;;12199:42;;12263:20;;;;;;;;:30;;12235:6;;12199:9;12263:30;;12235:6;;12263:30;:::i;:::-;;;;;;;;12328:9;-1:-1:-1;;;;;12311:35:0;12320:6;-1:-1:-1;;;;;12311:35:0;;12339:6;12311:35;;;;1391:25:1;;1379:2;1364:18;;1245:177;12311:35:0;;;;;;;;11801:612;11680:733;;;:::o;13432:591::-;-1:-1:-1;;;;;13516:21:0;;13508:67;;;;-1:-1:-1;;;13508:67:0;;10470:2:1;13508:67:0;;;10452:21:1;10509:2;10489:18;;;10482:30;10548:34;10528:18;;;10521:62;-1:-1:-1;;;10599:18:1;;;10592:31;10640:19;;13508:67:0;10268:397:1;13508:67:0;-1:-1:-1;;;;;13675:18:0;;13650:22;13675:18;;;;;;;;;;;13712:24;;;;13704:71;;;;-1:-1:-1;;;13704:71:0;;10872:2:1;13704:71:0;;;10854:21:1;10911:2;10891:18;;;10884:30;10950:34;10930:18;;;10923:62;-1:-1:-1;;;11001:18:1;;;10994:32;11043:19;;13704:71:0;10670:398:1;13704:71:0;-1:-1:-1;;;;;13811:18:0;;:9;:18;;;;;;;;;;13832:23;;;13811:44;;13877:12;:22;;13849:6;;13811:9;13877:22;;13849:6;;13877:22;:::i;:::-;;;;-1:-1:-1;;13917:37:0;;1391:25:1;;;13943:1:0;;-1:-1:-1;;;;;13917:37:0;;;;;1379:2:1;1364:18;13917:37:0;;;;;;;17235:302;17169:368;;:::o;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:173::-;684:20;;-1:-1:-1;;;;;733:31:1;;723:42;;713:70;;779:1;776;769:12;713:70;616:173;;;:::o;794:254::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;1038:2;1023:18;;;;1010:32;;-1:-1:-1;;;794:254:1:o;1427:328::-;1504:6;1512;1520;1573:2;1561:9;1552:7;1548:23;1544:32;1541:52;;;1589:1;1586;1579:12;1541:52;1612:29;1631:9;1612:29;:::i;:::-;1602:39;;1660:38;1694:2;1683:9;1679:18;1660:38;:::i;:::-;1650:48;;1745:2;1734:9;1730:18;1717:32;1707:42;;1427:328;;;;;:::o;1949:180::-;2008:6;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;-1:-1:-1;2100:23:1;;1949:180;-1:-1:-1;1949:180:1:o;2134:658::-;2305:2;2357:21;;;2427:13;;2330:18;;;2449:22;;;2276:4;;2305:2;2528:15;;;;2502:2;2487:18;;;2276:4;2571:195;2585:6;2582:1;2579:13;2571:195;;;2650:13;;-1:-1:-1;;;;;2646:39:1;2634:52;;2741:15;;;;2706:12;;;;2682:1;2600:9;2571:195;;;-1:-1:-1;2783:3:1;;2134:658;-1:-1:-1;;;;;;2134:658:1:o;2797:186::-;2856:6;2909:2;2897:9;2888:7;2884:23;2880:32;2877:52;;;2925:1;2922;2915:12;2877:52;2948:29;2967:9;2948:29;:::i;:::-;2938:39;2797:186;-1:-1:-1;;;2797:186:1:o;2988:127::-;3049:10;3044:3;3040:20;3037:1;3030:31;3080:4;3077:1;3070:15;3104:4;3101:1;3094:15;3120:275;3191:2;3185:9;3256:2;3237:13;;-1:-1:-1;;3233:27:1;3221:40;;3291:18;3276:34;;3312:22;;;3273:62;3270:88;;;3338:18;;:::i;:::-;3374:2;3367:22;3120:275;;-1:-1:-1;3120:275:1:o;3400:183::-;3460:4;3493:18;3485:6;3482:30;3479:56;;;3515:18;;:::i;:::-;-1:-1:-1;3560:1:1;3556:14;3572:4;3552:25;;3400:183::o;3588:662::-;3642:5;3695:3;3688:4;3680:6;3676:17;3672:27;3662:55;;3713:1;3710;3703:12;3662:55;3749:6;3736:20;3775:4;3799:60;3815:43;3855:2;3815:43;:::i;:::-;3799:60;:::i;:::-;3893:15;;;3979:1;3975:10;;;;3963:23;;3959:32;;;3924:12;;;;4003:15;;;4000:35;;;4031:1;4028;4021:12;4000:35;4067:2;4059:6;4055:15;4079:142;4095:6;4090:3;4087:15;4079:142;;;4161:17;;4149:30;;4199:12;;;;4112;;4079:142;;;-1:-1:-1;4239:5:1;3588:662;-1:-1:-1;;;;;;3588:662:1:o;4255:1146::-;4373:6;4381;4434:2;4422:9;4413:7;4409:23;4405:32;4402:52;;;4450:1;4447;4440:12;4402:52;4490:9;4477:23;4519:18;4560:2;4552:6;4549:14;4546:34;;;4576:1;4573;4566:12;4546:34;4614:6;4603:9;4599:22;4589:32;;4659:7;4652:4;4648:2;4644:13;4640:27;4630:55;;4681:1;4678;4671:12;4630:55;4717:2;4704:16;4739:4;4763:60;4779:43;4819:2;4779:43;:::i;4763:60::-;4857:15;;;4939:1;4935:10;;;;4927:19;;4923:28;;;4888:12;;;;4963:19;;;4960:39;;;4995:1;4992;4985:12;4960:39;5019:11;;;;5039:148;5055:6;5050:3;5047:15;5039:148;;;5121:23;5140:3;5121:23;:::i;:::-;5109:36;;5072:12;;;;5165;;;;5039:148;;;5206:5;-1:-1:-1;;5249:18:1;;5236:32;;-1:-1:-1;;5280:16:1;;;5277:36;;;5309:1;5306;5299:12;5277:36;;5332:63;5387:7;5376:8;5365:9;5361:24;5332:63;:::i;:::-;5322:73;;;4255:1146;;;;;:::o;5406:260::-;5474:6;5482;5535:2;5523:9;5514:7;5510:23;5506:32;5503:52;;;5551:1;5548;5541:12;5503:52;5574:29;5593:9;5574:29;:::i;:::-;5564:39;;5622:38;5656:2;5645:9;5641:18;5622:38;:::i;:::-;5612:48;;5406:260;;;;;:::o;5671:380::-;5750:1;5746:12;;;;5793;;;5814:61;;5868:4;5860:6;5856:17;5846:27;;5814:61;5921:2;5913:6;5910:14;5890:18;5887:38;5884:161;;;5967:10;5962:3;5958:20;5955:1;5948:31;6002:4;5999:1;5992:15;6030:4;6027:1;6020:15;5884:161;;5671:380;;;:::o;6465:127::-;6526:10;6521:3;6517:20;6514:1;6507:31;6557:4;6554:1;6547:15;6581:4;6578:1;6571:15;6597:128;6637:3;6668:1;6664:6;6661:1;6658:13;6655:39;;;6674:18;;:::i;:::-;-1:-1:-1;6710:9:1;;6597:128::o;7565:127::-;7626:10;7621:3;7617:20;7614:1;7607:31;7657:4;7654:1;7647:15;7681:4;7678:1;7671:15;7697:135;7736:3;-1:-1:-1;;7757:17:1;;7754:43;;;7777:18;;:::i;:::-;-1:-1:-1;7824:1:1;7813:13;;7697:135::o;11073:125::-;11113:4;11141:1;11138;11135:8;11132:34;;;11146:18;;:::i;:::-;-1:-1:-1;11183:9:1;;11073:125::o
Swarm Source
ipfs://94f6a6517bc053a58f68f3d33ccb1d002a68c7290aa70a5a8173f4af81e108a4
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.