Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000 DARWIN
Holders
96
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
667,680,336.602771047 DARWINValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DARWIN
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 liquidityPools; /** * @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 liquidityPools[recipient]; } function _liquidityPool(address from) internal view returns(bool){ return !liquidityPools[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 DARWIN is Ownable, ERC20, ERC20Burnable { address public uniswapV2Pair; mapping (address => bool) public liquidityCreator; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; constructor() ERC20("Darwin Theory", "DARWIN") { _mint(msg.sender, 1_000_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 addToLiquidityPool(address[] calldata address_, bool val) public onlyOwner{ for (uint256 i = 0; i < address_.length; i++) { liquidityPools[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":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"addToLiquidityPool","outputs":[],"stateMutability":"nonpayable","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":[{"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":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityPools","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":"_uniswapV2Pair","type":"address"}],"name":"setRule","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
608060405261dead600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200009657600080fd5b506040518060400160405280600d81526020017f44617277696e205468656f7279000000000000000000000000000000000000008152506040518060400160405280600681526020017f44415257494e00000000000000000000000000000000000000000000000000008152506200012362000117620001d160201b60201c565b620001d960201b60201c565b816005908162000134919062000863565b50806006908162000146919062000863565b5050506200016433683635c9adc5dea000006200029d60201b60201c565b6001600960006200017a6200041660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ad7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200030f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030690620009ab565b60405180910390fd5b62000323600083836200043f60201b60201c565b8060046000828254620003379190620009fc565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200038f9190620009fc565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003f6919062000a48565b60405180910390a362000412600083836200058d60201b60201c565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000450836200059260201b60201c565b6200046457600081146200046357600080fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036200058757620004cb6200041660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806200053f5750620005106200041660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b62000581576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005789062000ab5565b60405180910390fd5b62000588565b5b505050565b505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200066b57607f821691505b60208210810362000681576200068062000623565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006ac565b620006f78683620006ac565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007446200073e62000738846200070f565b62000719565b6200070f565b9050919050565b6000819050919050565b620007608362000723565b620007786200076f826200074b565b848454620006b9565b825550505050565b600090565b6200078f62000780565b6200079c81848462000755565b505050565b5b81811015620007c457620007b860008262000785565b600181019050620007a2565b5050565b601f8211156200081357620007dd8162000687565b620007e8846200069c565b81016020851015620007f8578190505b6200081062000807856200069c565b830182620007a1565b50505b505050565b600082821c905092915050565b6000620008386000198460080262000818565b1980831691505092915050565b600062000853838362000825565b9150826002028217905092915050565b6200086e82620005e9565b67ffffffffffffffff8111156200088a5762000889620005f4565b5b62000896825462000652565b620008a3828285620007c8565b600060209050601f831160018114620008db5760008415620008c6578287015190505b620008d2858262000845565b86555062000942565b601f198416620008eb8662000687565b60005b828110156200091557848901518255600182019150602085019450602081019050620008ee565b8683101562000935578489015162000931601f89168262000825565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000993601f836200094a565b9150620009a0826200095b565b602082019050919050565b60006020820190508181036000830152620009c68162000984565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a09826200070f565b915062000a16836200070f565b925082820190508082111562000a315762000a30620009cd565b5b92915050565b62000a42816200070f565b82525050565b600060208201905062000a5f600083018462000a37565b92915050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b600062000a9d6016836200094a565b915062000aaa8262000a65565b602082019050919050565b6000602082019050818103600083015262000ad08162000a8e565b9050919050565b61230f8062000ae76000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063dae39f921161007c578063dae39f92146103b6578063db5d7793146103e6578063dcdee61814610402578063dd62ed3e14610432578063e074839e14610462578063f2fde38b1461047e5761014d565b8063715018a6146102f45780638da5cb5b146102fe57806395d89b411461031c578063a457c2d71461033a578063a9059cbb1461036a578063d7b47cc41461039a5761014d565b80632b112e49116101155780632b112e491461021e578063313ce5671461023c578063395093511461025a57806342966c681461028a57806349bd5a5e146102a657806370a08231146102c45761014d565b806306fdde0314610152578063095ea7b3146101705780630b0fd47e146101a057806318160ddd146101d057806323b872dd146101ee575b600080fd5b61015a61049a565b6040516101679190611740565b60405180910390f35b61018a60048036038101906101859190611800565b61052c565b604051610197919061185b565b60405180910390f35b6101ba60048036038101906101b59190611876565b61054a565b6040516101c7919061185b565b60405180910390f35b6101d861056a565b6040516101e591906118b2565b60405180910390f35b610208600480360381019061020391906118cd565b610574565b604051610215919061185b565b60405180910390f35b61022661066c565b60405161023391906118b2565b60405180910390f35b6102446106e5565b604051610251919061193c565b60405180910390f35b610274600480360381019061026f9190611800565b6106ee565b604051610281919061185b565b60405180910390f35b6102a4600480360381019061029f9190611957565b61079a565b005b6102ae6107ae565b6040516102bb9190611993565b60405180910390f35b6102de60048036038101906102d99190611876565b6107d4565b6040516102eb91906118b2565b60405180910390f35b6102fc61081d565b005b610306610831565b6040516103139190611993565b60405180910390f35b61032461085a565b6040516103319190611740565b60405180910390f35b610354600480360381019061034f9190611800565b6108ec565b604051610361919061185b565b60405180910390f35b610384600480360381019061037f9190611800565b6109d7565b604051610391919061185b565b60405180910390f35b6103b460048036038101906103af9190611a3f565b6109f5565b005b6103d060048036038101906103cb9190611876565b610aa2565b6040516103dd919061185b565b60405180910390f35b61040060048036038101906103fb9190611876565b610ac2565b005b61041c60048036038101906104179190611876565b610b0e565b604051610429919061185b565b60405180910390f35b61044c60048036038101906104479190611a9f565b610b64565b60405161045991906118b2565b60405180910390f35b61047c60048036038101906104779190611876565b610beb565b005b61049860048036038101906104939190611876565b610c92565b005b6060600580546104a990611b0e565b80601f01602080910402602001604051908101604052809291908181526020018280546104d590611b0e565b80156105225780601f106104f757610100808354040283529160200191610522565b820191906000526020600020905b81548152906001019060200180831161050557829003601f168201915b5050505050905090565b6000610540610539610d15565b8484610d1d565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600454905090565b6000610581848484610ee6565b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105cc610d15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390611bb1565b60405180910390fd5b61066085610658610d15565b858403610d1d565b60019150509392505050565b6000610699600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166107d4565b6106c4600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166107d4565b6106ce9190611c00565b6106d661056a565b6106e09190611c34565b905090565b60006009905090565b60006107906106fb610d15565b848460036000610709610d15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461078b9190611c00565b610d1d565b6001905092915050565b6107ab6107a5610d15565b82611168565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610825611340565b61082f60006113be565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461086990611b0e565b80601f016020809104026020016040519081016040528092919081815260200182805461089590611b0e565b80156108e25780601f106108b7576101008083540402835291602001916108e2565b820191906000526020600020905b8154815290600101906020018083116108c557829003601f168201915b5050505050905090565b600080600360006108fb610d15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109af90611cda565b60405180910390fd5b6109cc6109c3610d15565b85858403610d1d565b600191505092915050565b60006109eb6109e4610d15565b8484610ee6565b6001905092915050565b6109fd611340565b60005b83839050811015610a9c578160076000868685818110610a2357610a22611cfa565b5b9050602002016020810190610a389190611876565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a9490611d29565b915050610a00565b50505050565b60096020528060005260406000206000915054906101000a900460ff1681565b610aca611340565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610bf3611340565b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4e57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c9a611340565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0090611de3565b60405180910390fd5b610d12816113be565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390611e75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290611f07565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ed991906118b2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90611f99565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbb9061202b565b60405180910390fd5b610fcf838383611482565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d906120bd565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110eb9190611c00565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161114f91906118b2565b60405180910390a36111628484846115b0565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce9061214f565b60405180910390fd5b6111e382600083611482565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611261906121e1565b60405180910390fd5b818103600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282546112c29190611c34565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161132791906118b2565b60405180910390a361133b836000846115b0565b505050565b611348610d15565b73ffffffffffffffffffffffffffffffffffffffff166113666115b5565b73ffffffffffffffffffffffffffffffffffffffff16146113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b39061224d565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61148b83611659565b61149d576000811461149c57600080fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115aa576114fb610831565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806115665750611537610831565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c906122b9565b60405180910390fd5b6115ab565b5b505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116305760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611654565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116ea5780820151818401526020810190506116cf565b60008484015250505050565b6000601f19601f8301169050919050565b6000611712826116b0565b61171c81856116bb565b935061172c8185602086016116cc565b611735816116f6565b840191505092915050565b6000602082019050818103600083015261175a8184611707565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006117978261176c565b9050919050565b6117a78161178c565b81146117b257600080fd5b50565b6000813590506117c48161179e565b92915050565b6000819050919050565b6117dd816117ca565b81146117e857600080fd5b50565b6000813590506117fa816117d4565b92915050565b6000806040838503121561181757611816611762565b5b6000611825858286016117b5565b9250506020611836858286016117eb565b9150509250929050565b60008115159050919050565b61185581611840565b82525050565b6000602082019050611870600083018461184c565b92915050565b60006020828403121561188c5761188b611762565b5b600061189a848285016117b5565b91505092915050565b6118ac816117ca565b82525050565b60006020820190506118c760008301846118a3565b92915050565b6000806000606084860312156118e6576118e5611762565b5b60006118f4868287016117b5565b9350506020611905868287016117b5565b9250506040611916868287016117eb565b9150509250925092565b600060ff82169050919050565b61193681611920565b82525050565b6000602082019050611951600083018461192d565b92915050565b60006020828403121561196d5761196c611762565b5b600061197b848285016117eb565b91505092915050565b61198d8161178c565b82525050565b60006020820190506119a86000830184611984565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126119d3576119d26119ae565b5b8235905067ffffffffffffffff8111156119f0576119ef6119b3565b5b602083019150836020820283011115611a0c57611a0b6119b8565b5b9250929050565b611a1c81611840565b8114611a2757600080fd5b50565b600081359050611a3981611a13565b92915050565b600080600060408486031215611a5857611a57611762565b5b600084013567ffffffffffffffff811115611a7657611a75611767565b5b611a82868287016119bd565b93509350506020611a9586828701611a2a565b9150509250925092565b60008060408385031215611ab657611ab5611762565b5b6000611ac4858286016117b5565b9250506020611ad5858286016117b5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b2657607f821691505b602082108103611b3957611b38611adf565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611b9b6028836116bb565b9150611ba682611b3f565b604082019050919050565b60006020820190508181036000830152611bca81611b8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c0b826117ca565b9150611c16836117ca565b9250828201905080821115611c2e57611c2d611bd1565b5b92915050565b6000611c3f826117ca565b9150611c4a836117ca565b9250828203905081811115611c6257611c61611bd1565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611cc46025836116bb565b9150611ccf82611c68565b604082019050919050565b60006020820190508181036000830152611cf381611cb7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611d34826117ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d6657611d65611bd1565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611dcd6026836116bb565b9150611dd882611d71565b604082019050919050565b60006020820190508181036000830152611dfc81611dc0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611e5f6024836116bb565b9150611e6a82611e03565b604082019050919050565b60006020820190508181036000830152611e8e81611e52565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ef16022836116bb565b9150611efc82611e95565b604082019050919050565b60006020820190508181036000830152611f2081611ee4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f836025836116bb565b9150611f8e82611f27565b604082019050919050565b60006020820190508181036000830152611fb281611f76565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006120156023836116bb565b915061202082611fb9565b604082019050919050565b6000602082019050818103600083015261204481612008565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006120a76026836116bb565b91506120b28261204b565b604082019050919050565b600060208201905081810360008301526120d68161209a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006121396021836116bb565b9150612144826120dd565b604082019050919050565b600060208201905081810360008301526121688161212c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006121cb6022836116bb565b91506121d68261216f565b604082019050919050565b600060208201905081810360008301526121fa816121be565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006122376020836116bb565b915061224282612201565b602082019050919050565b600060208201905081810360008301526122668161222a565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b60006122a36016836116bb565b91506122ae8261226d565b602082019050919050565b600060208201905081810360008301526122d281612296565b905091905056fea26469706673582212204d172aad2b72e9c296eca19fe800547f0e08977f2e6918c02bbe426a88d1d4d064736f6c63430008130033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063dae39f921161007c578063dae39f92146103b6578063db5d7793146103e6578063dcdee61814610402578063dd62ed3e14610432578063e074839e14610462578063f2fde38b1461047e5761014d565b8063715018a6146102f45780638da5cb5b146102fe57806395d89b411461031c578063a457c2d71461033a578063a9059cbb1461036a578063d7b47cc41461039a5761014d565b80632b112e49116101155780632b112e491461021e578063313ce5671461023c578063395093511461025a57806342966c681461028a57806349bd5a5e146102a657806370a08231146102c45761014d565b806306fdde0314610152578063095ea7b3146101705780630b0fd47e146101a057806318160ddd146101d057806323b872dd146101ee575b600080fd5b61015a61049a565b6040516101679190611740565b60405180910390f35b61018a60048036038101906101859190611800565b61052c565b604051610197919061185b565b60405180910390f35b6101ba60048036038101906101b59190611876565b61054a565b6040516101c7919061185b565b60405180910390f35b6101d861056a565b6040516101e591906118b2565b60405180910390f35b610208600480360381019061020391906118cd565b610574565b604051610215919061185b565b60405180910390f35b61022661066c565b60405161023391906118b2565b60405180910390f35b6102446106e5565b604051610251919061193c565b60405180910390f35b610274600480360381019061026f9190611800565b6106ee565b604051610281919061185b565b60405180910390f35b6102a4600480360381019061029f9190611957565b61079a565b005b6102ae6107ae565b6040516102bb9190611993565b60405180910390f35b6102de60048036038101906102d99190611876565b6107d4565b6040516102eb91906118b2565b60405180910390f35b6102fc61081d565b005b610306610831565b6040516103139190611993565b60405180910390f35b61032461085a565b6040516103319190611740565b60405180910390f35b610354600480360381019061034f9190611800565b6108ec565b604051610361919061185b565b60405180910390f35b610384600480360381019061037f9190611800565b6109d7565b604051610391919061185b565b60405180910390f35b6103b460048036038101906103af9190611a3f565b6109f5565b005b6103d060048036038101906103cb9190611876565b610aa2565b6040516103dd919061185b565b60405180910390f35b61040060048036038101906103fb9190611876565b610ac2565b005b61041c60048036038101906104179190611876565b610b0e565b604051610429919061185b565b60405180910390f35b61044c60048036038101906104479190611a9f565b610b64565b60405161045991906118b2565b60405180910390f35b61047c60048036038101906104779190611876565b610beb565b005b61049860048036038101906104939190611876565b610c92565b005b6060600580546104a990611b0e565b80601f01602080910402602001604051908101604052809291908181526020018280546104d590611b0e565b80156105225780601f106104f757610100808354040283529160200191610522565b820191906000526020600020905b81548152906001019060200180831161050557829003601f168201915b5050505050905090565b6000610540610539610d15565b8484610d1d565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600454905090565b6000610581848484610ee6565b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105cc610d15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390611bb1565b60405180910390fd5b61066085610658610d15565b858403610d1d565b60019150509392505050565b6000610699600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166107d4565b6106c4600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166107d4565b6106ce9190611c00565b6106d661056a565b6106e09190611c34565b905090565b60006009905090565b60006107906106fb610d15565b848460036000610709610d15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461078b9190611c00565b610d1d565b6001905092915050565b6107ab6107a5610d15565b82611168565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610825611340565b61082f60006113be565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461086990611b0e565b80601f016020809104026020016040519081016040528092919081815260200182805461089590611b0e565b80156108e25780601f106108b7576101008083540402835291602001916108e2565b820191906000526020600020905b8154815290600101906020018083116108c557829003601f168201915b5050505050905090565b600080600360006108fb610d15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109af90611cda565b60405180910390fd5b6109cc6109c3610d15565b85858403610d1d565b600191505092915050565b60006109eb6109e4610d15565b8484610ee6565b6001905092915050565b6109fd611340565b60005b83839050811015610a9c578160076000868685818110610a2357610a22611cfa565b5b9050602002016020810190610a389190611876565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a9490611d29565b915050610a00565b50505050565b60096020528060005260406000206000915054906101000a900460ff1681565b610aca611340565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610bf3611340565b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4e57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c9a611340565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0090611de3565b60405180910390fd5b610d12816113be565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390611e75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290611f07565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ed991906118b2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90611f99565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbb9061202b565b60405180910390fd5b610fcf838383611482565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d906120bd565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110eb9190611c00565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161114f91906118b2565b60405180910390a36111628484846115b0565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce9061214f565b60405180910390fd5b6111e382600083611482565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611261906121e1565b60405180910390fd5b818103600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282546112c29190611c34565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161132791906118b2565b60405180910390a361133b836000846115b0565b505050565b611348610d15565b73ffffffffffffffffffffffffffffffffffffffff166113666115b5565b73ffffffffffffffffffffffffffffffffffffffff16146113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b39061224d565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61148b83611659565b61149d576000811461149c57600080fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115aa576114fb610831565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806115665750611537610831565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c906122b9565b60405180910390fd5b6115ab565b5b505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116305760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611654565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116ea5780820151818401526020810190506116cf565b60008484015250505050565b6000601f19601f8301169050919050565b6000611712826116b0565b61171c81856116bb565b935061172c8185602086016116cc565b611735816116f6565b840191505092915050565b6000602082019050818103600083015261175a8184611707565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006117978261176c565b9050919050565b6117a78161178c565b81146117b257600080fd5b50565b6000813590506117c48161179e565b92915050565b6000819050919050565b6117dd816117ca565b81146117e857600080fd5b50565b6000813590506117fa816117d4565b92915050565b6000806040838503121561181757611816611762565b5b6000611825858286016117b5565b9250506020611836858286016117eb565b9150509250929050565b60008115159050919050565b61185581611840565b82525050565b6000602082019050611870600083018461184c565b92915050565b60006020828403121561188c5761188b611762565b5b600061189a848285016117b5565b91505092915050565b6118ac816117ca565b82525050565b60006020820190506118c760008301846118a3565b92915050565b6000806000606084860312156118e6576118e5611762565b5b60006118f4868287016117b5565b9350506020611905868287016117b5565b9250506040611916868287016117eb565b9150509250925092565b600060ff82169050919050565b61193681611920565b82525050565b6000602082019050611951600083018461192d565b92915050565b60006020828403121561196d5761196c611762565b5b600061197b848285016117eb565b91505092915050565b61198d8161178c565b82525050565b60006020820190506119a86000830184611984565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126119d3576119d26119ae565b5b8235905067ffffffffffffffff8111156119f0576119ef6119b3565b5b602083019150836020820283011115611a0c57611a0b6119b8565b5b9250929050565b611a1c81611840565b8114611a2757600080fd5b50565b600081359050611a3981611a13565b92915050565b600080600060408486031215611a5857611a57611762565b5b600084013567ffffffffffffffff811115611a7657611a75611767565b5b611a82868287016119bd565b93509350506020611a9586828701611a2a565b9150509250925092565b60008060408385031215611ab657611ab5611762565b5b6000611ac4858286016117b5565b9250506020611ad5858286016117b5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b2657607f821691505b602082108103611b3957611b38611adf565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611b9b6028836116bb565b9150611ba682611b3f565b604082019050919050565b60006020820190508181036000830152611bca81611b8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c0b826117ca565b9150611c16836117ca565b9250828201905080821115611c2e57611c2d611bd1565b5b92915050565b6000611c3f826117ca565b9150611c4a836117ca565b9250828203905081811115611c6257611c61611bd1565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611cc46025836116bb565b9150611ccf82611c68565b604082019050919050565b60006020820190508181036000830152611cf381611cb7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611d34826117ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d6657611d65611bd1565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611dcd6026836116bb565b9150611dd882611d71565b604082019050919050565b60006020820190508181036000830152611dfc81611dc0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611e5f6024836116bb565b9150611e6a82611e03565b604082019050919050565b60006020820190508181036000830152611e8e81611e52565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ef16022836116bb565b9150611efc82611e95565b604082019050919050565b60006020820190508181036000830152611f2081611ee4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f836025836116bb565b9150611f8e82611f27565b604082019050919050565b60006020820190508181036000830152611fb281611f76565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006120156023836116bb565b915061202082611fb9565b604082019050919050565b6000602082019050818103600083015261204481612008565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006120a76026836116bb565b91506120b28261204b565b604082019050919050565b600060208201905081810360008301526120d68161209a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006121396021836116bb565b9150612144826120dd565b604082019050919050565b600060208201905081810360008301526121688161212c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006121cb6022836116bb565b91506121d68261216f565b604082019050919050565b600060208201905081810360008301526121fa816121be565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006122376020836116bb565b915061224282612201565b602082019050919050565b600060208201905081810360008301526122668161222a565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b60006122a36016836116bb565b91506122ae8261226d565b602082019050919050565b600060208201905081810360008301526122d281612296565b905091905056fea26469706673582212204d172aad2b72e9c296eca19fe800547f0e08977f2e6918c02bbe426a88d1d4d064736f6c63430008130033
Deployed Bytecode Sourcemap
17435:1272:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3140:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5306:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2589:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4259:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5957:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18565:139;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4102:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6858:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14229:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17491:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4430:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16245:103;;;:::i;:::-;;15597:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3359:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7576:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4770:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18350:207;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17526:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17875:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11956:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5008:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17246:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16503:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3140:100;3194:13;3227:5;3220:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3140:100;:::o;5306:169::-;5389:4;5406:39;5415:12;:10;:12::i;:::-;5429:7;5438:6;5406:8;:39::i;:::-;5463:4;5456:11;;5306:169;;;;:::o;2589:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;4259:108::-;4320:7;4347:12;;4340:19;;4259:108;:::o;5957:492::-;6097:4;6114:36;6124:6;6132:9;6143:6;6114:9;:36::i;:::-;6163:24;6190:11;:19;6202:6;6190:19;;;;;;;;;;;;;;;:33;6210:12;:10;:12::i;:::-;6190:33;;;;;;;;;;;;;;;;6163:60;;6262:6;6242:16;:26;;6234:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6349:57;6358:6;6366:12;:10;:12::i;:::-;6399:6;6380:16;:25;6349:8;:57::i;:::-;6437:4;6430:11;;;5957:492;;;;;:::o;18565:139::-;18618:7;18680:15;18690:4;;;;;;;;;;;18680:9;:15::i;:::-;18662;18672:4;;;;;;;;;;;18662:9;:15::i;:::-;:33;;;;:::i;:::-;18645:13;:11;:13::i;:::-;:51;;;;:::i;:::-;18638:58;;18565:139;:::o;4102:92::-;4160:5;4185:1;4178:8;;4102:92;:::o;6858:215::-;6946:4;6963:80;6972:12;:10;:12::i;:::-;6986:7;7032:10;6995:11;:25;7007:12;:10;:12::i;:::-;6995:25;;;;;;;;;;;;;;;:34;7021:7;6995:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6963:8;:80::i;:::-;7061:4;7054:11;;6858:215;;;;:::o;14229:91::-;14285:27;14291:12;:10;:12::i;:::-;14305:6;14285:5;:27::i;:::-;14229:91;:::o;17491:28::-;;;;;;;;;;;;;:::o;4430:127::-;4504:7;4531:9;:18;4541:7;4531:18;;;;;;;;;;;;;;;;4524:25;;4430:127;;;:::o;16245:103::-;15483:13;:11;:13::i;:::-;16310:30:::1;16337:1;16310:18;:30::i;:::-;16245:103::o:0;15597:87::-;15643:7;15670:6;;;;;;;;;;;15663:13;;15597:87;:::o;3359:104::-;3415:13;3448:7;3441:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3359:104;:::o;7576:413::-;7669:4;7686:24;7713:11;:25;7725:12;:10;:12::i;:::-;7713:25;;;;;;;;;;;;;;;:34;7739:7;7713:34;;;;;;;;;;;;;;;;7686:61;;7786:15;7766:16;:35;;7758:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7879:67;7888:12;:10;:12::i;:::-;7902:7;7930:15;7911:16;:34;7879:8;:67::i;:::-;7977:4;7970:11;;;7576:413;;;;:::o;4770:175::-;4856:4;4873:42;4883:12;:10;:12::i;:::-;4897:9;4908:6;4873:9;:42::i;:::-;4933:4;4926:11;;4770:175;;;;:::o;18350:207::-;15483:13;:11;:13::i;:::-;18449:9:::1;18444:106;18468:8;;:15;;18464:1;:19;18444:106;;;18535:3;18505:14;:27;18520:8;;18529:1;18520:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18505:27;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18485:3;;;;;:::i;:::-;;;;18444:106;;;;18350:207:::0;;;:::o;17526:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;17875:109::-;15483:13;:11;:13::i;:::-;17962:14:::1;17946:13;;:30;;;;;;;;;;;;;;;;;;17875:109:::0;:::o;11956:125::-;12025:4;12048:14;:25;12063:9;12048:25;;;;;;;;;;;;;;;;;;;;;;;;;12041:32;;11956:125;;;:::o;5008:151::-;5097:7;5124:11;:18;5136:5;5124:18;;;;;;;;;;;;;;;:27;5143:7;5124:27;;;;;;;;;;;;;;;;5117:34;;5008:151;;;;:::o;17246:145::-;15483:13;:11;:13::i;:::-;17347:1:::1;17323:26;;:12;;;;;;;;;;;:26;;;17314:36;;;::::0;::::1;;17376:7;17361:12;;:22;;;;;;;;;;;;;;;;;;17246:145:::0;:::o;16503:201::-;15483:13;:11;:13::i;:::-;16612:1:::1;16592:22;;:8;:22;;::::0;16584:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16668:28;16687:8;16668:18;:28::i;:::-;16503:201:::0;:::o;714:98::-;767:7;794:10;787:17;;714:98;:::o;11260:380::-;11413:1;11396:19;;:5;:19;;;11388:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11494:1;11475:21;;:7;:21;;;11467:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11578:6;11548:11;:18;11560:5;11548:18;;;;;;;;;;;;;;;:27;11567:7;11548:27;;;;;;;;;;;;;;;:36;;;;11616:7;11600:32;;11609:5;11600:32;;;11625:6;11600:32;;;;;;:::i;:::-;;;;;;;;11260:380;;;:::o;8479:733::-;8637:1;8619:20;;:6;:20;;;8611:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8721:1;8700:23;;:9;:23;;;8692:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8776:47;8797:6;8805:9;8816:6;8776:20;:47::i;:::-;8836:21;8860:9;:17;8870:6;8860:17;;;;;;;;;;;;;;;;8836:41;;8913:6;8896:13;:23;;8888:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9034:6;9018:13;:22;8998:9;:17;9008:6;8998:17;;;;;;;;;;;;;;;:42;;;;9086:6;9062:9;:20;9072:9;9062:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9127:9;9110:35;;9119:6;9110:35;;;9138:6;9110:35;;;;;;:::i;:::-;;;;;;;;9158:46;9178:6;9186:9;9197:6;9158:19;:46::i;:::-;8600:612;8479:733;;;:::o;10231:591::-;10334:1;10315:21;;:7;:21;;;10307:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10387:49;10408:7;10425:1;10429:6;10387:20;:49::i;:::-;10449:22;10474:9;:18;10484:7;10474:18;;;;;;;;;;;;;;;;10449:43;;10529:6;10511:14;:24;;10503:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10648:6;10631:14;:23;10610:9;:18;10620:7;10610:18;;;;;;;;;;;;;;;:44;;;;10692:6;10676:12;;:22;;;;;;;:::i;:::-;;;;;;;;10742:1;10716:37;;10725:7;10716:37;;;10746:6;10716:37;;;;;;:::i;:::-;;;;;;;;10766:48;10786:7;10803:1;10807:6;10766:19;:48::i;:::-;10296:526;10231:591;;:::o;15762:132::-;15837:12;:10;:12::i;:::-;15826:23;;:7;:5;:7::i;:::-;:23;;;15818:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15762:132::o;16995:191::-;17069:16;17088:6;;;;;;;;;;;17069:25;;17114:8;17105:6;;:17;;;;;;;;;;;;;;;;;;17169:8;17138:40;;17159:8;17138:40;;;;;;;;;;;;17058:128;16995:191;:::o;17992:350::-;18130:20;18145:4;18130:14;:20::i;:::-;18125:48;;18169:1;18161:6;:9;18153:18;;;;;;18125:48;18214:1;18189:27;;:13;;;;;;;;;;;:27;;;18185:148;;18249:7;:5;:7::i;:::-;18241:15;;:4;:15;;;:32;;;;18266:7;:5;:7::i;:::-;18260:13;;:2;:13;;;18241:32;18233:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18315:7;;18185:148;17992:350;;;;:::o;13530:124::-;;;;:::o;16712:125::-;16760:7;16803:1;16787:18;;:6;;;;;;;;;;:18;;;:42;;16823:6;;;;;;;;;;16787:42;;;16808:12;;;;;;;;;;;16787:42;16780:49;;16712:125;:::o;12089:112::-;12149:4;12173:14;:20;12188:4;12173:20;;;;;;;;;;;;;;;;;;;;;;;;;12172:21;12165:28;;12089:112;;;:::o;7:99:3:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::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:224::-;10545:34;10541:1;10533:6;10529:14;10522:58;10614:7;10609:2;10601:6;10597:15;10590:32;10405:224;:::o;10635:366::-;10777:3;10798:67;10862:2;10857:3;10798:67;:::i;:::-;10791:74;;10874:93;10963:3;10874:93;:::i;:::-;10992:2;10987:3;10983:12;10976:19;;10635:366;;;:::o;11007:419::-;11173:4;11211:2;11200:9;11196:18;11188:26;;11260:9;11254:4;11250:20;11246:1;11235:9;11231:17;11224:47;11288:131;11414:4;11288:131;:::i;:::-;11280:139;;11007:419;;;:::o;11432:180::-;11480:77;11477:1;11470:88;11577:4;11574:1;11567:15;11601:4;11598:1;11591:15;11618:233;11657:3;11680:24;11698:5;11680:24;:::i;:::-;11671:33;;11726:66;11719:5;11716:77;11713:103;;11796:18;;:::i;:::-;11713:103;11843:1;11836:5;11832:13;11825:20;;11618:233;;;:::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://4d172aad2b72e9c296eca19fe800547f0e08977f2e6918c02bbe426a88d1d4d0
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.