ERC-20
Overview
Max Total Supply
100,000,000 JPEGS
Holders
1,617
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:
IlliquidDao
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-04 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity 0.8.11; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // 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); } // File: @openzeppelin/contracts/utils/Context.sol // 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; } } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // 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 {} } // File: illiquid_token.sol contract IlliquidDao is ERC20 { uint256 public constant MAX_SUPPLY = uint248(1e8 ether); // for team uint256 public constant AMOUNT_TEAM = MAX_SUPPLY / 100 * 5; address public constant ADDR_TEAM = 0xc18CC7bbfbfcEc0fc08f9AF8d2e6742800DD3cfC; // for treasury uint256 public constant AMOUNT_TREASURY = MAX_SUPPLY / 100 * 13; address public constant ADDR_TREASURY = 0xeea89C8843E8BEb56e411bb4CAc6DBc2d937eE1d; // for liquidity providers uint256 public constant AMOUNT_LP = MAX_SUPPLY / 100 * 12; address public constant ADDR_LP = 0xb0d14504AFDBeD2Bd3aAE53BE846342A76A7Ea89; // for airdrop uint256 public constant AMOUNT_AIRDROP = MAX_SUPPLY - (AMOUNT_TEAM + AMOUNT_TREASURY + AMOUNT_LP); address public constant ADDR_AIRDROP = 0x08e125729Dcd88BfAe7D8441c702DFf9B59DA844; constructor() ERC20("IlliquidDAO", "JPEGS") { _mint(ADDR_TEAM, AMOUNT_TEAM); _mint(ADDR_TREASURY, AMOUNT_TREASURY); _mint(ADDR_LP, AMOUNT_LP); _mint(ADDR_TEAM, AMOUNT_AIRDROP); } }
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":[],"name":"ADDR_AIRDROP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADDR_LP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADDR_TEAM","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADDR_TREASURY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_AIRDROP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_LP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_TEAM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AMOUNT_TREASURY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[],"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":[{"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"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f496c6c697175696444414f0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4a50454753000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620004d6565b508060049080519060200190620000af929190620004d6565b5050506200012073c18cc7bbfbfcec0fc08f9af8d2e6742800dd3cfc600560646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620001089190620005ee565b62000114919062000626565b6200035360201b60201c565b6200018e73eea89c8843e8beb56e411bb4cac6dbc2d937ee1d600d60646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620001769190620005ee565b62000182919062000626565b6200035360201b60201c565b620001fc73b0d14504afdbed2bd3aae53be846342a76a7ea89600c60646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620001e49190620005ee565b620001f0919062000626565b6200035360201b60201c565b6200034d73c18cc7bbfbfcec0fc08f9af8d2e6742800dd3cfc600c60646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620002529190620005ee565b6200025e919062000626565b600d60646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166200029b9190620005ee565b620002a7919062000626565b600560646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620002e49190620005ee565b620002f0919062000626565b620002fc919062000687565b62000308919062000687565b6a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620003419190620006e4565b6200035360201b60201c565b62000835565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620003c6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003bd9062000780565b60405180910390fd5b620003da60008383620004cc60201b60201c565b8060026000828254620003ee919062000687565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000445919062000687565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004ac9190620007b3565b60405180910390a3620004c860008383620004d160201b60201c565b5050565b505050565b505050565b828054620004e490620007ff565b90600052602060002090601f01602090048101928262000508576000855562000554565b82601f106200052357805160ff191683800117855562000554565b8280016001018555821562000554579182015b828111156200055357825182559160200191906001019062000536565b5b50905062000563919062000567565b5090565b5b808211156200058257600081600090555060010162000568565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005fb8262000586565b9150620006088362000586565b9250826200061b576200061a62000590565b5b828204905092915050565b6000620006338262000586565b9150620006408362000586565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200067c576200067b620005bf565b5b828202905092915050565b6000620006948262000586565b9150620006a18362000586565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006d957620006d8620005bf565b5b828201905092915050565b6000620006f18262000586565b9150620006fe8362000586565b925082821015620007145762000713620005bf565b5b828203905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000768601f836200071f565b9150620007758262000730565b602082019050919050565b600060208201905081810360008301526200079b8162000759565b9050919050565b620007ad8162000586565b82525050565b6000602082019050620007ca6000830184620007a2565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200081857607f821691505b602082108114156200082f576200082e620007d0565b5b50919050565b6118d880620008456000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063403959e8116100ad57806395d89b411161007157806395d89b411461033b578063a457c2d714610359578063a9059cbb14610389578063b8fcfa5e146103b9578063dd62ed3e146103d75761012c565b8063403959e81461029357806346de2673146102b157806370a08231146102cf57806380ef0160146102ff57806386fdbdc11461031d5761012c565b806323b872dd116100f457806323b872dd146101d95780632acf25ab14610209578063313ce5671461022757806332cb6b0c1461024557806339509351146102635761012c565b80630389223d1461013157806306fdde031461014f578063095ea7b31461016d57806314fafbe21461019d57806318160ddd146101bb575b600080fd5b610139610407565b6040516101469190610fd4565b60405180910390f35b61015761044f565b6040516101649190611088565b60405180910390f35b61018760048036038101906101829190611139565b6104e1565b6040516101949190611194565b60405180910390f35b6101a56104ff565b6040516101b29190610fd4565b60405180910390f35b6101c3610547565b6040516101d09190610fd4565b60405180910390f35b6101f360048036038101906101ee91906111af565b610551565b6040516102009190611194565b60405180910390f35b610211610649565b60405161021e9190611211565b60405180910390f35b61022f610661565b60405161023c9190611248565b60405180910390f35b61024d61066a565b60405161025a9190610fd4565b60405180910390f35b61027d60048036038101906102789190611139565b61069a565b60405161028a9190611194565b60405180910390f35b61029b610746565b6040516102a89190611211565b60405180910390f35b6102b961075e565b6040516102c69190611211565b60405180910390f35b6102e960048036038101906102e49190611263565b610776565b6040516102f69190610fd4565b60405180910390f35b6103076107be565b6040516103149190610fd4565b60405180910390f35b6103256108db565b6040516103329190610fd4565b60405180910390f35b610343610923565b6040516103509190611088565b60405180910390f35b610373600480360381019061036e9190611139565b6109b5565b6040516103809190611194565b60405180910390f35b6103a3600480360381019061039e9190611139565b610aa0565b6040516103b09190611194565b60405180910390f35b6103c1610abe565b6040516103ce9190611211565b60405180910390f35b6103f160048036038101906103ec9190611290565b610ad6565b6040516103fe9190610fd4565b60405180910390f35b600560646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610442919061132e565b61044c919061135f565b81565b60606003805461045e906113e8565b80601f016020809104026020016040519081016040528092919081815260200182805461048a906113e8565b80156104d75780601f106104ac576101008083540402835291602001916104d7565b820191906000526020600020905b8154815290600101906020018083116104ba57829003601f168201915b5050505050905090565b60006104f56104ee610b5d565b8484610b65565b6001905092915050565b600d60646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661053a919061132e565b610544919061135f565b81565b6000600254905090565b600061055e848484610d30565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a9610b5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610629576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106209061148c565b60405180910390fd5b61063d85610635610b5d565b858403610b65565b60019150509392505050565b73eea89c8843e8beb56e411bb4cac6dbc2d937ee1d81565b60006012905090565b6a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b600061073c6106a7610b5d565b8484600160006106b5610b5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461073791906114ac565b610b65565b6001905092915050565b7308e125729dcd88bfae7d8441c702dff9b59da84481565b73b0d14504afdbed2bd3aae53be846342a76a7ea8981565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166107f9919061132e565b610803919061135f565b600d60646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661083e919061132e565b610848919061135f565b600560646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610883919061132e565b61088d919061135f565b61089791906114ac565b6108a191906114ac565b6a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166108d89190611502565b81565b600c60646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610916919061132e565b610920919061135f565b81565b606060048054610932906113e8565b80601f016020809104026020016040519081016040528092919081815260200182805461095e906113e8565b80156109ab5780601f10610980576101008083540402835291602001916109ab565b820191906000526020600020905b81548152906001019060200180831161098e57829003601f168201915b5050505050905090565b600080600160006109c4610b5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a78906115a8565b60405180910390fd5b610a95610a8c610b5d565b85858403610b65565b600191505092915050565b6000610ab4610aad610b5d565b8484610d30565b6001905092915050565b73c18cc7bbfbfcec0fc08f9af8d2e6742800dd3cfc81565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc9061163a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c906116cc565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d239190610fd4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d979061175e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e07906117f0565b60405180910390fd5b610e1b838383610fb1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890611882565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f3491906114ac565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f989190610fd4565b60405180910390a3610fab848484610fb6565b50505050565b505050565b505050565b6000819050919050565b610fce81610fbb565b82525050565b6000602082019050610fe96000830184610fc5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561102957808201518184015260208101905061100e565b83811115611038576000848401525b50505050565b6000601f19601f8301169050919050565b600061105a82610fef565b6110648185610ffa565b935061107481856020860161100b565b61107d8161103e565b840191505092915050565b600060208201905081810360008301526110a2818461104f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110da826110af565b9050919050565b6110ea816110cf565b81146110f557600080fd5b50565b600081359050611107816110e1565b92915050565b61111681610fbb565b811461112157600080fd5b50565b6000813590506111338161110d565b92915050565b600080604083850312156111505761114f6110aa565b5b600061115e858286016110f8565b925050602061116f85828601611124565b9150509250929050565b60008115159050919050565b61118e81611179565b82525050565b60006020820190506111a96000830184611185565b92915050565b6000806000606084860312156111c8576111c76110aa565b5b60006111d6868287016110f8565b93505060206111e7868287016110f8565b92505060406111f886828701611124565b9150509250925092565b61120b816110cf565b82525050565b60006020820190506112266000830184611202565b92915050565b600060ff82169050919050565b6112428161122c565b82525050565b600060208201905061125d6000830184611239565b92915050565b600060208284031215611279576112786110aa565b5b6000611287848285016110f8565b91505092915050565b600080604083850312156112a7576112a66110aa565b5b60006112b5858286016110f8565b92505060206112c6858286016110f8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061133982610fbb565b915061134483610fbb565b925082611354576113536112d0565b5b828204905092915050565b600061136a82610fbb565b915061137583610fbb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156113ae576113ad6112ff565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061140057607f821691505b60208210811415611414576114136113b9565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611476602883610ffa565b91506114818261141a565b604082019050919050565b600060208201905081810360008301526114a581611469565b9050919050565b60006114b782610fbb565b91506114c283610fbb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156114f7576114f66112ff565b5b828201905092915050565b600061150d82610fbb565b915061151883610fbb565b92508282101561152b5761152a6112ff565b5b828203905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611592602583610ffa565b915061159d82611536565b604082019050919050565b600060208201905081810360008301526115c181611585565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611624602483610ffa565b915061162f826115c8565b604082019050919050565b6000602082019050818103600083015261165381611617565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006116b6602283610ffa565b91506116c18261165a565b604082019050919050565b600060208201905081810360008301526116e5816116a9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611748602583610ffa565b9150611753826116ec565b604082019050919050565b600060208201905081810360008301526117778161173b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006117da602383610ffa565b91506117e58261177e565b604082019050919050565b60006020820190508181036000830152611809816117cd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061186c602683610ffa565b915061187782611810565b604082019050919050565b6000602082019050818103600083015261189b8161185f565b905091905056fea2646970667358221220d924ff99149475ec44230704290cfbacfb0971fa132d3a67bf06c4d61eea461564736f6c634300080b0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063403959e8116100ad57806395d89b411161007157806395d89b411461033b578063a457c2d714610359578063a9059cbb14610389578063b8fcfa5e146103b9578063dd62ed3e146103d75761012c565b8063403959e81461029357806346de2673146102b157806370a08231146102cf57806380ef0160146102ff57806386fdbdc11461031d5761012c565b806323b872dd116100f457806323b872dd146101d95780632acf25ab14610209578063313ce5671461022757806332cb6b0c1461024557806339509351146102635761012c565b80630389223d1461013157806306fdde031461014f578063095ea7b31461016d57806314fafbe21461019d57806318160ddd146101bb575b600080fd5b610139610407565b6040516101469190610fd4565b60405180910390f35b61015761044f565b6040516101649190611088565b60405180910390f35b61018760048036038101906101829190611139565b6104e1565b6040516101949190611194565b60405180910390f35b6101a56104ff565b6040516101b29190610fd4565b60405180910390f35b6101c3610547565b6040516101d09190610fd4565b60405180910390f35b6101f360048036038101906101ee91906111af565b610551565b6040516102009190611194565b60405180910390f35b610211610649565b60405161021e9190611211565b60405180910390f35b61022f610661565b60405161023c9190611248565b60405180910390f35b61024d61066a565b60405161025a9190610fd4565b60405180910390f35b61027d60048036038101906102789190611139565b61069a565b60405161028a9190611194565b60405180910390f35b61029b610746565b6040516102a89190611211565b60405180910390f35b6102b961075e565b6040516102c69190611211565b60405180910390f35b6102e960048036038101906102e49190611263565b610776565b6040516102f69190610fd4565b60405180910390f35b6103076107be565b6040516103149190610fd4565b60405180910390f35b6103256108db565b6040516103329190610fd4565b60405180910390f35b610343610923565b6040516103509190611088565b60405180910390f35b610373600480360381019061036e9190611139565b6109b5565b6040516103809190611194565b60405180910390f35b6103a3600480360381019061039e9190611139565b610aa0565b6040516103b09190611194565b60405180910390f35b6103c1610abe565b6040516103ce9190611211565b60405180910390f35b6103f160048036038101906103ec9190611290565b610ad6565b6040516103fe9190610fd4565b60405180910390f35b600560646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610442919061132e565b61044c919061135f565b81565b60606003805461045e906113e8565b80601f016020809104026020016040519081016040528092919081815260200182805461048a906113e8565b80156104d75780601f106104ac576101008083540402835291602001916104d7565b820191906000526020600020905b8154815290600101906020018083116104ba57829003601f168201915b5050505050905090565b60006104f56104ee610b5d565b8484610b65565b6001905092915050565b600d60646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661053a919061132e565b610544919061135f565b81565b6000600254905090565b600061055e848484610d30565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105a9610b5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610629576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106209061148c565b60405180910390fd5b61063d85610635610b5d565b858403610b65565b60019150509392505050565b73eea89c8843e8beb56e411bb4cac6dbc2d937ee1d81565b60006012905090565b6a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b600061073c6106a7610b5d565b8484600160006106b5610b5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461073791906114ac565b610b65565b6001905092915050565b7308e125729dcd88bfae7d8441c702dff9b59da84481565b73b0d14504afdbed2bd3aae53be846342a76a7ea8981565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166107f9919061132e565b610803919061135f565b600d60646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661083e919061132e565b610848919061135f565b600560646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610883919061132e565b61088d919061135f565b61089791906114ac565b6108a191906114ac565b6a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166108d89190611502565b81565b600c60646a52b7d2dcc80cd2e40000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610916919061132e565b610920919061135f565b81565b606060048054610932906113e8565b80601f016020809104026020016040519081016040528092919081815260200182805461095e906113e8565b80156109ab5780601f10610980576101008083540402835291602001916109ab565b820191906000526020600020905b81548152906001019060200180831161098e57829003601f168201915b5050505050905090565b600080600160006109c4610b5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a78906115a8565b60405180910390fd5b610a95610a8c610b5d565b85858403610b65565b600191505092915050565b6000610ab4610aad610b5d565b8484610d30565b6001905092915050565b73c18cc7bbfbfcec0fc08f9af8d2e6742800dd3cfc81565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc9061163a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c906116cc565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d239190610fd4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d979061175e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e07906117f0565b60405180910390fd5b610e1b838383610fb1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890611882565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f3491906114ac565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f989190610fd4565b60405180910390a3610fab848484610fb6565b50505050565b505050565b505050565b6000819050919050565b610fce81610fbb565b82525050565b6000602082019050610fe96000830184610fc5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561102957808201518184015260208101905061100e565b83811115611038576000848401525b50505050565b6000601f19601f8301169050919050565b600061105a82610fef565b6110648185610ffa565b935061107481856020860161100b565b61107d8161103e565b840191505092915050565b600060208201905081810360008301526110a2818461104f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110da826110af565b9050919050565b6110ea816110cf565b81146110f557600080fd5b50565b600081359050611107816110e1565b92915050565b61111681610fbb565b811461112157600080fd5b50565b6000813590506111338161110d565b92915050565b600080604083850312156111505761114f6110aa565b5b600061115e858286016110f8565b925050602061116f85828601611124565b9150509250929050565b60008115159050919050565b61118e81611179565b82525050565b60006020820190506111a96000830184611185565b92915050565b6000806000606084860312156111c8576111c76110aa565b5b60006111d6868287016110f8565b93505060206111e7868287016110f8565b92505060406111f886828701611124565b9150509250925092565b61120b816110cf565b82525050565b60006020820190506112266000830184611202565b92915050565b600060ff82169050919050565b6112428161122c565b82525050565b600060208201905061125d6000830184611239565b92915050565b600060208284031215611279576112786110aa565b5b6000611287848285016110f8565b91505092915050565b600080604083850312156112a7576112a66110aa565b5b60006112b5858286016110f8565b92505060206112c6858286016110f8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061133982610fbb565b915061134483610fbb565b925082611354576113536112d0565b5b828204905092915050565b600061136a82610fbb565b915061137583610fbb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156113ae576113ad6112ff565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061140057607f821691505b60208210811415611414576114136113b9565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611476602883610ffa565b91506114818261141a565b604082019050919050565b600060208201905081810360008301526114a581611469565b9050919050565b60006114b782610fbb565b91506114c283610fbb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156114f7576114f66112ff565b5b828201905092915050565b600061150d82610fbb565b915061151883610fbb565b92508282101561152b5761152a6112ff565b5b828203905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611592602583610ffa565b915061159d82611536565b604082019050919050565b600060208201905081810360008301526115c181611585565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611624602483610ffa565b915061162f826115c8565b604082019050919050565b6000602082019050818103600083015261165381611617565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006116b6602283610ffa565b91506116c18261165a565b604082019050919050565b600060208201905081810360008301526116e5816116a9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611748602583610ffa565b9150611753826116ec565b604082019050919050565b600060208201905081810360008301526117778161173b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006117da602383610ffa565b91506117e58261177e565b604082019050919050565b60006020820190508181036000830152611809816117cd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061186c602683610ffa565b915061187782611810565b604082019050919050565b6000602082019050818103600083015261189b8161185f565b905091905056fea2646970667358221220d924ff99149475ec44230704290cfbacfb0971fa132d3a67bf06c4d61eea461564736f6c634300080b0033
Deployed Bytecode Sourcemap
16584:1067:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16702:58;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6584:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8751:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16875:63;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7704:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9402:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16945:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7546:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16621:55;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10303:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17341:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17132:76;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7875:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17237:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17068:57;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6803:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11021:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8215:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16767:78;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8453:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16702:58;16759:1;16753:3;16666:9;16740:10;;:16;;;;:::i;:::-;:20;;;;:::i;:::-;16702:58;:::o;6584:100::-;6638:13;6671:5;6664:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6584:100;:::o;8751:169::-;8834:4;8851:39;8860:12;:10;:12::i;:::-;8874:7;8883:6;8851:8;:39::i;:::-;8908:4;8901:11;;8751:169;;;;:::o;16875:63::-;16936:2;16930:3;16666:9;16917:10;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;16875:63;:::o;7704:108::-;7765:7;7792:12;;7785:19;;7704:108;:::o;9402:492::-;9542:4;9559:36;9569:6;9577:9;9588:6;9559:9;:36::i;:::-;9608:24;9635:11;:19;9647:6;9635:19;;;;;;;;;;;;;;;:33;9655:12;:10;:12::i;:::-;9635:33;;;;;;;;;;;;;;;;9608:60;;9707:6;9687:16;:26;;9679:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9794:57;9803:6;9811:12;:10;:12::i;:::-;9844:6;9825:16;:25;9794:8;:57::i;:::-;9882:4;9875:11;;;9402:492;;;;;:::o;16945:82::-;16985:42;16945:82;:::o;7546:93::-;7604:5;7629:2;7622:9;;7546:93;:::o;16621:55::-;16666:9;16621:55;;;:::o;10303:215::-;10391:4;10408:80;10417:12;:10;:12::i;:::-;10431:7;10477:10;10440:11;:25;10452:12;:10;:12::i;:::-;10440:25;;;;;;;;;;;;;;;:34;10466:7;10440:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10408:8;:80::i;:::-;10506:4;10499:11;;10303:215;;;;:::o;17341:81::-;17380:42;17341:81;:::o;17132:76::-;17166:42;17132:76;:::o;7875:127::-;7949:7;7976:9;:18;7986:7;7976:18;;;;;;;;;;;;;;;;7969:25;;7875:127;;;:::o;17237:97::-;17123:2;17117:3;16666:9;17104:10;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;16936:2;16930:3;16666:9;16917:10;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;16759:1;16753:3;16666:9;16740:10;;:16;;;;:::i;:::-;:20;;;;:::i;:::-;17292:29;;;;:::i;:::-;:41;;;;:::i;:::-;16666:9;17278:10;;:56;;;;:::i;:::-;17237:97;:::o;17068:57::-;17123:2;17117:3;16666:9;17104:10;;:16;;;;:::i;:::-;:21;;;;:::i;:::-;17068:57;:::o;6803:104::-;6859:13;6892:7;6885:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6803:104;:::o;11021:413::-;11114:4;11131:24;11158:11;:25;11170:12;:10;:12::i;:::-;11158:25;;;;;;;;;;;;;;;:34;11184:7;11158:34;;;;;;;;;;;;;;;;11131:61;;11231:15;11211:16;:35;;11203:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11324:67;11333:12;:10;:12::i;:::-;11347:7;11375:15;11356:16;:34;11324:8;:67::i;:::-;11422:4;11415:11;;;11021:413;;;;:::o;8215:175::-;8301:4;8318:42;8328:12;:10;:12::i;:::-;8342:9;8353:6;8318:9;:42::i;:::-;8378:4;8371:11;;8215:175;;;;:::o;16767:78::-;16803:42;16767:78;:::o;8453:151::-;8542:7;8569:11;:18;8581:5;8569:18;;;;;;;;;;;;;;;:27;8588:7;8569:27;;;;;;;;;;;;;;;;8562:34;;8453:151;;;;:::o;4264:98::-;4317:7;4344:10;4337:17;;4264:98;:::o;14705:380::-;14858:1;14841:19;;:5;:19;;;;14833:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14939:1;14920:21;;:7;:21;;;;14912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15023:6;14993:11;:18;15005:5;14993:18;;;;;;;;;;;;;;;:27;15012:7;14993:27;;;;;;;;;;;;;;;:36;;;;15061:7;15045:32;;15054:5;15045:32;;;15070:6;15045:32;;;;;;:::i;:::-;;;;;;;;14705:380;;;:::o;11924:733::-;12082:1;12064:20;;:6;:20;;;;12056:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12166:1;12145:23;;:9;:23;;;;12137:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12221:47;12242:6;12250:9;12261:6;12221:20;:47::i;:::-;12281:21;12305:9;:17;12315:6;12305:17;;;;;;;;;;;;;;;;12281:41;;12358:6;12341:13;:23;;12333:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12479:6;12463:13;:22;12443:9;:17;12453:6;12443:17;;;;;;;;;;;;;;;:42;;;;12531:6;12507:9;:20;12517:9;12507:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12572:9;12555:35;;12564:6;12555:35;;;12583:6;12555:35;;;;;;:::i;:::-;;;;;;;;12603:46;12623:6;12631:9;12642:6;12603:19;:46::i;:::-;12045:612;11924:733;;;:::o;15685:125::-;;;;:::o;16414:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:118::-;4558:24;4576:5;4558:24;:::i;:::-;4553:3;4546:37;4471:118;;:::o;4595:222::-;4688:4;4726:2;4715:9;4711:18;4703:26;;4739:71;4807:1;4796:9;4792:17;4783:6;4739:71;:::i;:::-;4595:222;;;;:::o;4823:86::-;4858:7;4898:4;4891:5;4887:16;4876:27;;4823:86;;;:::o;4915:112::-;4998:22;5014:5;4998:22;:::i;:::-;4993:3;4986:35;4915:112;;:::o;5033:214::-;5122:4;5160:2;5149:9;5145:18;5137:26;;5173:67;5237:1;5226:9;5222:17;5213:6;5173:67;:::i;:::-;5033:214;;;;:::o;5253:329::-;5312:6;5361:2;5349:9;5340:7;5336:23;5332:32;5329:119;;;5367:79;;:::i;:::-;5329:119;5487:1;5512:53;5557:7;5548:6;5537:9;5533:22;5512:53;:::i;:::-;5502:63;;5458:117;5253:329;;;;:::o;5588:474::-;5656:6;5664;5713:2;5701:9;5692:7;5688:23;5684:32;5681:119;;;5719:79;;:::i;:::-;5681:119;5839:1;5864:53;5909:7;5900:6;5889:9;5885:22;5864:53;:::i;:::-;5854:63;;5810:117;5966:2;5992:53;6037:7;6028:6;6017:9;6013:22;5992:53;:::i;:::-;5982:63;;5937:118;5588:474;;;;;:::o;6068:180::-;6116:77;6113:1;6106:88;6213:4;6210:1;6203:15;6237:4;6234:1;6227:15;6254:180;6302:77;6299:1;6292:88;6399:4;6396:1;6389:15;6423:4;6420:1;6413:15;6440:185;6480:1;6497:20;6515:1;6497:20;:::i;:::-;6492:25;;6531:20;6549:1;6531:20;:::i;:::-;6526:25;;6570:1;6560:35;;6575:18;;:::i;:::-;6560:35;6617:1;6614;6610:9;6605:14;;6440:185;;;;:::o;6631:348::-;6671:7;6694:20;6712:1;6694:20;:::i;:::-;6689:25;;6728:20;6746:1;6728:20;:::i;:::-;6723:25;;6916:1;6848:66;6844:74;6841:1;6838:81;6833:1;6826:9;6819:17;6815:105;6812:131;;;6923:18;;:::i;:::-;6812:131;6971:1;6968;6964:9;6953:20;;6631:348;;;;:::o;6985:180::-;7033:77;7030:1;7023:88;7130:4;7127:1;7120:15;7154:4;7151:1;7144:15;7171:320;7215:6;7252:1;7246:4;7242:12;7232:22;;7299:1;7293:4;7289:12;7320:18;7310:81;;7376:4;7368:6;7364:17;7354:27;;7310:81;7438:2;7430:6;7427:14;7407:18;7404:38;7401:84;;;7457:18;;:::i;:::-;7401:84;7222:269;7171:320;;;:::o;7497:227::-;7637:34;7633:1;7625:6;7621:14;7614:58;7706:10;7701:2;7693:6;7689:15;7682:35;7497:227;:::o;7730:366::-;7872:3;7893:67;7957:2;7952:3;7893:67;:::i;:::-;7886:74;;7969:93;8058:3;7969:93;:::i;:::-;8087:2;8082:3;8078:12;8071:19;;7730:366;;;:::o;8102:419::-;8268:4;8306:2;8295:9;8291:18;8283:26;;8355:9;8349:4;8345:20;8341:1;8330:9;8326:17;8319:47;8383:131;8509:4;8383:131;:::i;:::-;8375:139;;8102:419;;;:::o;8527:305::-;8567:3;8586:20;8604:1;8586:20;:::i;:::-;8581:25;;8620:20;8638:1;8620:20;:::i;:::-;8615:25;;8774:1;8706:66;8702:74;8699:1;8696:81;8693:107;;;8780:18;;:::i;:::-;8693:107;8824:1;8821;8817:9;8810:16;;8527:305;;;;:::o;8838:191::-;8878:4;8898:20;8916:1;8898:20;:::i;:::-;8893:25;;8932:20;8950:1;8932:20;:::i;:::-;8927:25;;8971:1;8968;8965:8;8962:34;;;8976:18;;:::i;:::-;8962:34;9021:1;9018;9014:9;9006:17;;8838:191;;;;:::o;9035:224::-;9175:34;9171:1;9163:6;9159:14;9152:58;9244:7;9239:2;9231:6;9227:15;9220:32;9035:224;:::o;9265:366::-;9407:3;9428:67;9492:2;9487:3;9428:67;:::i;:::-;9421:74;;9504:93;9593:3;9504:93;:::i;:::-;9622:2;9617:3;9613:12;9606:19;;9265:366;;;:::o;9637:419::-;9803:4;9841:2;9830:9;9826:18;9818:26;;9890:9;9884:4;9880:20;9876:1;9865:9;9861:17;9854:47;9918:131;10044:4;9918:131;:::i;:::-;9910:139;;9637:419;;;:::o;10062:223::-;10202:34;10198:1;10190:6;10186:14;10179:58;10271:6;10266:2;10258:6;10254:15;10247:31;10062:223;:::o;10291:366::-;10433:3;10454:67;10518:2;10513:3;10454:67;:::i;:::-;10447:74;;10530:93;10619:3;10530:93;:::i;:::-;10648:2;10643:3;10639:12;10632:19;;10291:366;;;:::o;10663:419::-;10829:4;10867:2;10856:9;10852:18;10844:26;;10916:9;10910:4;10906:20;10902:1;10891:9;10887:17;10880:47;10944:131;11070:4;10944:131;:::i;:::-;10936:139;;10663:419;;;:::o;11088:221::-;11228:34;11224:1;11216:6;11212:14;11205:58;11297:4;11292:2;11284:6;11280:15;11273:29;11088:221;:::o;11315:366::-;11457:3;11478:67;11542:2;11537:3;11478:67;:::i;:::-;11471:74;;11554:93;11643:3;11554:93;:::i;:::-;11672:2;11667:3;11663:12;11656:19;;11315:366;;;:::o;11687:419::-;11853:4;11891:2;11880:9;11876:18;11868:26;;11940:9;11934:4;11930:20;11926:1;11915:9;11911:17;11904:47;11968:131;12094:4;11968:131;:::i;:::-;11960:139;;11687:419;;;:::o;12112:224::-;12252:34;12248:1;12240:6;12236:14;12229:58;12321:7;12316:2;12308:6;12304:15;12297:32;12112:224;:::o;12342:366::-;12484:3;12505:67;12569:2;12564:3;12505:67;:::i;:::-;12498:74;;12581:93;12670:3;12581:93;:::i;:::-;12699:2;12694:3;12690:12;12683:19;;12342:366;;;:::o;12714:419::-;12880:4;12918:2;12907:9;12903:18;12895:26;;12967:9;12961:4;12957:20;12953:1;12942:9;12938:17;12931:47;12995:131;13121:4;12995:131;:::i;:::-;12987:139;;12714:419;;;:::o;13139:222::-;13279:34;13275:1;13267:6;13263:14;13256:58;13348:5;13343:2;13335:6;13331:15;13324:30;13139:222;:::o;13367:366::-;13509:3;13530:67;13594:2;13589:3;13530:67;:::i;:::-;13523:74;;13606:93;13695:3;13606:93;:::i;:::-;13724:2;13719:3;13715:12;13708:19;;13367:366;;;:::o;13739:419::-;13905:4;13943:2;13932:9;13928:18;13920:26;;13992:9;13986:4;13982:20;13978:1;13967:9;13963:17;13956:47;14020:131;14146:4;14020:131;:::i;:::-;14012:139;;13739:419;;;:::o;14164:225::-;14304:34;14300:1;14292:6;14288:14;14281:58;14373:8;14368:2;14360:6;14356:15;14349:33;14164:225;:::o;14395:366::-;14537:3;14558:67;14622:2;14617:3;14558:67;:::i;:::-;14551:74;;14634:93;14723:3;14634:93;:::i;:::-;14752:2;14747:3;14743:12;14736:19;;14395:366;;;:::o;14767:419::-;14933:4;14971:2;14960:9;14956:18;14948:26;;15020:9;15014:4;15010:20;15006:1;14995:9;14991:17;14984:47;15048:131;15174:4;15048:131;:::i;:::-;15040:139;;14767:419;;;:::o
Swarm Source
ipfs://d924ff99149475ec44230704290cfbacfb0971fa132d3a67bf06c4d61eea4615
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.