ERC-20
Overview
Max Total Supply
10,000,000,000 T2T2
Holders
2,387
Market
Price
$0.00 @ 0.000000 ETH (+9.36%)
Onchain Market Cap
$1,867,400.00
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000235832 T2T2Value
$0.00 ( ~0 Eth) [0.0000%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
T2T2Coin
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-26 */ // SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.20; //0.8.21 9974 shanghai library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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 acount) 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); } 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 ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; uint256 private _totalMintedSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @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 sysmbol_) { _name = name_; _symbol = sysmbol_; _decimals=18; _totalSupply =10000000000000000000000000000; _totalMintedSupply=0; } /** * @dev Retruns 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}. */ /** * @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 _decimals; } function _setDecimals(uint8 decimals_) internal virtual{ _decimals = decimals_; } function _resetNameErc20( string memory name_, string memory symbol_ ) internal virtual { _name = name_; _symbol = symbol_; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {ERC20-totalSupply}. */ function totalMintedSupply() public view returns (uint256) { return _totalMintedSupply; } /** * @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; } 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; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } 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[sender] = senderBalance.sub(amount); } // _balances[recipient] += amount; _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalMintedSupply = _totalMintedSupply.add(amount); require(_totalMintedSupply<=_totalSupply," totalSupply error "); _beforeTokenTransfer(address(0), account, amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); // require(_totalSupply>=amount, "ERC20: burn not enough _totalSupply"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { // _balances[account] = accountBalance - amount; _balances[account] = accountBalance.sub(amount); } // _totalSupply -= amount; _totalMintedSupply = _totalMintedSupply.sub(amount); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } 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 _beforeTokenTransfer( address from, address to, uint256 ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } 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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner */ function owner() public view virtual returns(address){ return _owner; } /** * @dev Throws if called by any account other than the owner */ modifier onlyOwner(){ 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{ _setOwner(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"); _setOwner(newOwner); } /** * @dev Returns the address of the current owner. */ function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } contract Utilities is Ownable,Pausable{ modifier nonZeroAddress(address _address){ require(address(0)!=_address,"0 address"); _; } modifier nonZeroLength(uint[] memory _array){ require(_array.length > 0, "Empty array"); _; } modifier lengthsAreEqual(uint[] memory _array1, uint[] memory _array2) { require(_array1.length == _array2.length, "Unequal lengths"); _; } modifier onlyEOA(){ require(msg.sender==tx.origin,"No contracts"); _; } function isOwner() internal view returns(bool) { return owner()==msg.sender; } } contract Adminable is Utilities{ mapping(address=>bool) private admins; constructor(){ } function addAdmin(address _address) external onlyOwner{ admins[_address]=true; } function addAdmins(address[] calldata _addresses) external onlyOwner{ uint256 len = _addresses.length; for(uint256 i=0;i<len;i++) { admins[_addresses[i]]=true; } } function removeAdmin(address _address) external onlyOwner{ admins[_address]=false; } function removeAdmins(address[] calldata _addresses) external onlyOwner{ uint256 len = _addresses.length; for(uint256 i=0;i<len;i++) { admins[_addresses[i]]=false; } } function setPause(bool _shouldPause) external onlyAdminOrOwner{ if(_shouldPause) { _pause(); }else { _unpause(); } } function isAdmin(address _address) public view returns(bool){ return admins[_address]; } modifier onlyAdmin(){ require(admins[msg.sender], "Not admin"); _; } modifier onlyAdminOrOwner(){ require(admins[msg.sender]||isOwner(), "Not admin or owner"); _; } } contract T2T2Coin is ERC20,Adminable { // address => allowedToCallFunctions mapping(address => bool) private admins; constructor() ERC20("T2T2", "T2T2") { } function setDecimals(uint8 decimals_) external onlyOwner{ _setDecimals(decimals_); } function resetNameCoin(string calldata name_,string calldata symbol_) external onlyOwner{ _resetNameErc20(name_,symbol_); } /** * mints $T2T2 to a recipient * @param to the recipient of the $T2T2 * @param amount the amount of $T2T2 to mint */ function mint(address to, uint256 amount) external whenNotPaused onlyAdminOrOwner { require(isAdmin(msg.sender), "T2T2: Only admins can mint"); _mint(to, amount); } /** * @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 to, uint256 amount ) public override whenNotPaused returns (bool) { return super.transferFrom(sender, to, amount); } function balanceOf(address account) public view virtual override returns (uint256) { return super.balanceOf(account); } function transfer(address recipient, uint256 amount) public virtual override whenNotPaused returns (bool) { return super.transfer(recipient, amount); } // Not ensuring state changed in this block as it would needlessly increase gas function allowance(address owner, address spender) public view virtual override whenNotPaused returns (uint256) { return super.allowance(owner, spender); } // Not ensuring state changed in this block as it would needlessly increase gas function approve(address spender, uint256 amount) public virtual override whenNotPaused returns (bool) { return super.approve(spender, amount); } // Not ensuring state changed in this block as it would needlessly increase gas function increaseAllowance(address spender, uint256 addedValue) public virtual override whenNotPaused returns (bool) { return super.increaseAllowance(spender, addedValue); } // Not ensuring state changed in this block as it would needlessly increase gas function decreaseAllowance(address spender, uint256 subtractedValue) public virtual override whenNotPaused returns (bool) { return super.decreaseAllowance(spender, subtractedValue); } }
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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"addAdmins","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"removeAdmins","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"name":"resetNameCoin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"decimals_","type":"uint8"}],"name":"setDecimals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_shouldPause","type":"bool"}],"name":"setPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMintedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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
608060405234801562000010575f80fd5b506040805180820182526004808252632a192a1960e11b602080840182905284518086019095528285528401529091906200004c83826200019d565b5060056200005b82826200019d565b50506006805460ff19166012179055506b204fce5e3e250261100000006002555f600355620000916200008b3390565b620000a4565b6006805460ff60a81b1916905562000265565b600680546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200012657607f821691505b6020821081036200014557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000198575f81815260208120601f850160051c81016020861015620001735750805b601f850160051c820191505b8181101562000194578281556001016200017f565b5050505b505050565b81516001600160401b03811115620001b957620001b9620000fd565b620001d181620001ca845462000111565b846200014b565b602080601f83116001811462000207575f8415620001ef5750858301515b5f19600386901b1c1916600185901b17855562000194565b5f85815260208120601f198616915b82811015620002375788860151825594840194600190910190840162000216565b50858210156200025557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b61163a80620002735f395ff3fe608060405234801561000f575f80fd5b506004361061016d575f3560e01c806370480275116100d95780639c54df6411610093578063a9059cbb1161006e578063a9059cbb1461032a578063bedb86fb1461033d578063dd62ed3e14610350578063f2fde38b14610363575f80fd5b80639c54df64146102f15780639ef87d5414610304578063a457c2d714610317575f80fd5b8063704802751461027f57806370a0823114610292578063715018a6146102a55780637a1395aa146102ad5780638da5cb5b146102c057806395d89b41146102e9575f80fd5b8063313ce5671161012a578063313ce56714610217578063377e11e01461022c578063395093511461023f57806340c10f19146102525780635c975abb14610265578063601e260314610277575f80fd5b806306fdde0314610171578063095ea7b31461018f5780631785f53c146101b257806318160ddd146101c757806323b872dd146101d957806324d7806c146101ec575b5f80fd5b610179610376565b6040516101869190611195565b60405180910390f35b6101a261019d3660046111fb565b610406565b6040519015158152602001610186565b6101c56101c0366004611223565b610422565b005b6002545b604051908152602001610186565b6101a26101e736600461123c565b61047b565b6101a26101fa366004611223565b6001600160a01b03165f9081526007602052604090205460ff1690565b60065460405160ff9091168152602001610186565b6101c561023a366004611275565b610497565b6101a261024d3660046111fb565b61053c565b6101c56102603660046111fb565b61054f565b600654600160a81b900460ff166101a2565b6003546101cb565b6101c561028d366004611223565b610624565b6101cb6102a0366004611223565b610677565b6101c5610694565b6101c56102bb3660046112e4565b6106cf565b60065461010090046001600160a01b03166040516001600160a01b039091168152602001610186565b610179610714565b6101c56102ff366004611275565b610723565b6101c5610312366004611349565b6107c3565b6101a26103253660046111fb565b610864565b6101a26103383660046111fb565b610877565b6101c561034b3660046113b0565b61088a565b6101cb61035e3660046113cf565b610901565b6101c5610371366004611223565b610934565b60606004805461038590611400565b80601f01602080910402602001604051908101604052809291908181526020018280546103b190611400565b80156103fc5780601f106103d3576101008083540402835291602001916103fc565b820191905f5260205f20905b8154815290600101906020018083116103df57829003601f168201915b5050505050905090565b5f61040f6109d2565b6104198383610a1f565b90505b92915050565b6006546001600160a01b0361010090910416331461045b5760405162461bcd60e51b815260040161045290611438565b60405180910390fd5b6001600160a01b03165f908152600760205260409020805460ff19169055565b5f6104846109d2565b61048f848484610a34565b949350505050565b6006546001600160a01b036101009091041633146104c75760405162461bcd60e51b815260040161045290611438565b805f5b81811015610536575f60075f8686858181106104e8576104e861146d565b90506020020160208101906104fd9190611223565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061052e81611495565b9150506104ca565b50505050565b5f6105456109d2565b6104198383610adc565b6105576109d2565b335f9081526007602052604090205460ff16806105775750610577610b17565b6105b85760405162461bcd60e51b81526020600482015260126024820152712737ba1030b236b4b71037b91037bbb732b960711b6044820152606401610452565b335f9081526007602052604090205460ff166106165760405162461bcd60e51b815260206004820152601a60248201527f543254323a204f6e6c792061646d696e732063616e206d696e740000000000006044820152606401610452565b6106208282610b40565b5050565b6006546001600160a01b036101009091041633146106545760405162461bcd60e51b815260040161045290611438565b6001600160a01b03165f908152600760205260409020805460ff19166001179055565b6001600160a01b0381165f9081526020819052604081205461041c565b6006546001600160a01b036101009091041633146106c45760405162461bcd60e51b815260040161045290611438565b6106cd5f610c65565b565b6006546001600160a01b036101009091041633146106ff5760405162461bcd60e51b815260040161045290611438565b6006805460ff191660ff831617905550565b50565b60606005805461038590611400565b6006546001600160a01b036101009091041633146107535760405162461bcd60e51b815260040161045290611438565b805f5b8181101561053657600160075f8686858181106107755761077561146d565b905060200201602081019061078a9190611223565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806107bb81611495565b915050610756565b6006546001600160a01b036101009091041633146107f35760405162461bcd60e51b815260040161045290611438565b61053684848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f880181900481028201810190925286815292508691508590819084018382808284375f92019190915250610cbe92505050565b5f61086d6109d2565b6104198383610cdc565b5f6108806109d2565b6104198383610d74565b335f9081526007602052604090205460ff16806108aa57506108aa610b17565b6108eb5760405162461bcd60e51b81526020600482015260126024820152712737ba1030b236b4b71037b91037bbb732b960711b6044820152606401610452565b80156108f957610711610d80565b610711610de0565b5f61090a6109d2565b6001600160a01b038084165f90815260016020908152604080832093861683529290522054610419565b6006546001600160a01b036101009091041633146109645760405162461bcd60e51b815260040161045290611438565b6001600160a01b0381166109c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610452565b61071181610c65565b600654600160a81b900460ff16156106cd5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610452565b5f610a2b338484610e1c565b50600192915050565b5f610a40848484610f3f565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610ac45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610452565b610ad18533858403610e1c565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a2b918590610b129086906114ad565b610e1c565b5f33610b316006546001600160a01b036101009091041690565b6001600160a01b031614905090565b6001600160a01b038216610b965760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610452565b600354610ba3908261110c565b60038190556002541015610bef5760405162461bcd60e51b81526020600482015260136024820152720103a37ba30b629bab838363c9032b93937b91606d1b6044820152606401610452565b6001600160a01b0382165f90815260208190526040902054610c11908261110c565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600680546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6004610cca8382611521565b506005610cd78282611521565b505050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610d5d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610452565b610d6a3385858403610e1c565b5060019392505050565b5f610a2b338484610f3f565b610d886109d2565b6006805460ff60a81b1916600160a81b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610dc33390565b6040516001600160a01b03909116815260200160405180910390a1565b610de861112a565b6006805460ff60a81b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33610dc3565b6001600160a01b038316610e7e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610452565b6001600160a01b038216610edf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610452565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fa35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610452565b6001600160a01b0382166110055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610452565b6001600160a01b0383165f908152602081905260409020548181101561107c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610452565b611086818361117a565b6001600160a01b038086165f9081526020819052604080822093909355908516815220546110b4908361110c565b6001600160a01b038481165f818152602081815260409182902094909455518581529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610536565b5f8061111883856114ad565b905083811015610419576104196115dd565b600654600160a81b900460ff166106cd5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610452565b5f8282111561118b5761118b6115dd565b61041982846115f1565b5f6020808352835180828501525f5b818110156111c0578581018301518582016040015282016111a4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146111f6575f80fd5b919050565b5f806040838503121561120c575f80fd5b611215836111e0565b946020939093013593505050565b5f60208284031215611233575f80fd5b610419826111e0565b5f805f6060848603121561124e575f80fd5b611257846111e0565b9250611265602085016111e0565b9150604084013590509250925092565b5f8060208385031215611286575f80fd5b823567ffffffffffffffff8082111561129d575f80fd5b818501915085601f8301126112b0575f80fd5b8135818111156112be575f80fd5b8660208260051b85010111156112d2575f80fd5b60209290920196919550909350505050565b5f602082840312156112f4575f80fd5b813560ff81168114610419575f80fd5b5f8083601f840112611314575f80fd5b50813567ffffffffffffffff81111561132b575f80fd5b602083019150836020828501011115611342575f80fd5b9250929050565b5f805f806040858703121561135c575f80fd5b843567ffffffffffffffff80821115611373575f80fd5b61137f88838901611304565b90965094506020870135915080821115611397575f80fd5b506113a487828801611304565b95989497509550505050565b5f602082840312156113c0575f80fd5b81358015158114610419575f80fd5b5f80604083850312156113e0575f80fd5b6113e9836111e0565b91506113f7602084016111e0565b90509250929050565b600181811c9082168061141457607f821691505b60208210810361143257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016114a6576114a6611481565b5060010190565b8082018082111561041c5761041c611481565b634e487b7160e01b5f52604160045260245ffd5b601f821115610cd7575f81815260208120601f850160051c810160208610156114fa5750805b601f850160051c820191505b8181101561151957828155600101611506565b505050505050565b815167ffffffffffffffff81111561153b5761153b6114c0565b61154f816115498454611400565b846114d4565b602080601f831160018114611582575f841561156b5750858301515b5f19600386901b1c1916600185901b178555611519565b5f85815260208120601f198616915b828110156115b057888601518255948401946001909101908401611591565b50858210156115cd57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52600160045260245ffd5b8181038181111561041c5761041c61148156fea2646970667358221220f7715dde9bd29c0f55f2f003a4d7786a5463a332ed9639e7e83745d5f9c85a8a64736f6c63430008150033
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061016d575f3560e01c806370480275116100d95780639c54df6411610093578063a9059cbb1161006e578063a9059cbb1461032a578063bedb86fb1461033d578063dd62ed3e14610350578063f2fde38b14610363575f80fd5b80639c54df64146102f15780639ef87d5414610304578063a457c2d714610317575f80fd5b8063704802751461027f57806370a0823114610292578063715018a6146102a55780637a1395aa146102ad5780638da5cb5b146102c057806395d89b41146102e9575f80fd5b8063313ce5671161012a578063313ce56714610217578063377e11e01461022c578063395093511461023f57806340c10f19146102525780635c975abb14610265578063601e260314610277575f80fd5b806306fdde0314610171578063095ea7b31461018f5780631785f53c146101b257806318160ddd146101c757806323b872dd146101d957806324d7806c146101ec575b5f80fd5b610179610376565b6040516101869190611195565b60405180910390f35b6101a261019d3660046111fb565b610406565b6040519015158152602001610186565b6101c56101c0366004611223565b610422565b005b6002545b604051908152602001610186565b6101a26101e736600461123c565b61047b565b6101a26101fa366004611223565b6001600160a01b03165f9081526007602052604090205460ff1690565b60065460405160ff9091168152602001610186565b6101c561023a366004611275565b610497565b6101a261024d3660046111fb565b61053c565b6101c56102603660046111fb565b61054f565b600654600160a81b900460ff166101a2565b6003546101cb565b6101c561028d366004611223565b610624565b6101cb6102a0366004611223565b610677565b6101c5610694565b6101c56102bb3660046112e4565b6106cf565b60065461010090046001600160a01b03166040516001600160a01b039091168152602001610186565b610179610714565b6101c56102ff366004611275565b610723565b6101c5610312366004611349565b6107c3565b6101a26103253660046111fb565b610864565b6101a26103383660046111fb565b610877565b6101c561034b3660046113b0565b61088a565b6101cb61035e3660046113cf565b610901565b6101c5610371366004611223565b610934565b60606004805461038590611400565b80601f01602080910402602001604051908101604052809291908181526020018280546103b190611400565b80156103fc5780601f106103d3576101008083540402835291602001916103fc565b820191905f5260205f20905b8154815290600101906020018083116103df57829003601f168201915b5050505050905090565b5f61040f6109d2565b6104198383610a1f565b90505b92915050565b6006546001600160a01b0361010090910416331461045b5760405162461bcd60e51b815260040161045290611438565b60405180910390fd5b6001600160a01b03165f908152600760205260409020805460ff19169055565b5f6104846109d2565b61048f848484610a34565b949350505050565b6006546001600160a01b036101009091041633146104c75760405162461bcd60e51b815260040161045290611438565b805f5b81811015610536575f60075f8686858181106104e8576104e861146d565b90506020020160208101906104fd9190611223565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061052e81611495565b9150506104ca565b50505050565b5f6105456109d2565b6104198383610adc565b6105576109d2565b335f9081526007602052604090205460ff16806105775750610577610b17565b6105b85760405162461bcd60e51b81526020600482015260126024820152712737ba1030b236b4b71037b91037bbb732b960711b6044820152606401610452565b335f9081526007602052604090205460ff166106165760405162461bcd60e51b815260206004820152601a60248201527f543254323a204f6e6c792061646d696e732063616e206d696e740000000000006044820152606401610452565b6106208282610b40565b5050565b6006546001600160a01b036101009091041633146106545760405162461bcd60e51b815260040161045290611438565b6001600160a01b03165f908152600760205260409020805460ff19166001179055565b6001600160a01b0381165f9081526020819052604081205461041c565b6006546001600160a01b036101009091041633146106c45760405162461bcd60e51b815260040161045290611438565b6106cd5f610c65565b565b6006546001600160a01b036101009091041633146106ff5760405162461bcd60e51b815260040161045290611438565b6006805460ff191660ff831617905550565b50565b60606005805461038590611400565b6006546001600160a01b036101009091041633146107535760405162461bcd60e51b815260040161045290611438565b805f5b8181101561053657600160075f8686858181106107755761077561146d565b905060200201602081019061078a9190611223565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806107bb81611495565b915050610756565b6006546001600160a01b036101009091041633146107f35760405162461bcd60e51b815260040161045290611438565b61053684848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f880181900481028201810190925286815292508691508590819084018382808284375f92019190915250610cbe92505050565b5f61086d6109d2565b6104198383610cdc565b5f6108806109d2565b6104198383610d74565b335f9081526007602052604090205460ff16806108aa57506108aa610b17565b6108eb5760405162461bcd60e51b81526020600482015260126024820152712737ba1030b236b4b71037b91037bbb732b960711b6044820152606401610452565b80156108f957610711610d80565b610711610de0565b5f61090a6109d2565b6001600160a01b038084165f90815260016020908152604080832093861683529290522054610419565b6006546001600160a01b036101009091041633146109645760405162461bcd60e51b815260040161045290611438565b6001600160a01b0381166109c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610452565b61071181610c65565b600654600160a81b900460ff16156106cd5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610452565b5f610a2b338484610e1c565b50600192915050565b5f610a40848484610f3f565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610ac45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610452565b610ad18533858403610e1c565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a2b918590610b129086906114ad565b610e1c565b5f33610b316006546001600160a01b036101009091041690565b6001600160a01b031614905090565b6001600160a01b038216610b965760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610452565b600354610ba3908261110c565b60038190556002541015610bef5760405162461bcd60e51b81526020600482015260136024820152720103a37ba30b629bab838363c9032b93937b91606d1b6044820152606401610452565b6001600160a01b0382165f90815260208190526040902054610c11908261110c565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600680546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6004610cca8382611521565b506005610cd78282611521565b505050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610d5d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610452565b610d6a3385858403610e1c565b5060019392505050565b5f610a2b338484610f3f565b610d886109d2565b6006805460ff60a81b1916600160a81b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610dc33390565b6040516001600160a01b03909116815260200160405180910390a1565b610de861112a565b6006805460ff60a81b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33610dc3565b6001600160a01b038316610e7e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610452565b6001600160a01b038216610edf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610452565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fa35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610452565b6001600160a01b0382166110055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610452565b6001600160a01b0383165f908152602081905260409020548181101561107c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610452565b611086818361117a565b6001600160a01b038086165f9081526020819052604080822093909355908516815220546110b4908361110c565b6001600160a01b038481165f818152602081815260409182902094909455518581529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610536565b5f8061111883856114ad565b905083811015610419576104196115dd565b600654600160a81b900460ff166106cd5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610452565b5f8282111561118b5761118b6115dd565b61041982846115f1565b5f6020808352835180828501525f5b818110156111c0578581018301518582016040015282016111a4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146111f6575f80fd5b919050565b5f806040838503121561120c575f80fd5b611215836111e0565b946020939093013593505050565b5f60208284031215611233575f80fd5b610419826111e0565b5f805f6060848603121561124e575f80fd5b611257846111e0565b9250611265602085016111e0565b9150604084013590509250925092565b5f8060208385031215611286575f80fd5b823567ffffffffffffffff8082111561129d575f80fd5b818501915085601f8301126112b0575f80fd5b8135818111156112be575f80fd5b8660208260051b85010111156112d2575f80fd5b60209290920196919550909350505050565b5f602082840312156112f4575f80fd5b813560ff81168114610419575f80fd5b5f8083601f840112611314575f80fd5b50813567ffffffffffffffff81111561132b575f80fd5b602083019150836020828501011115611342575f80fd5b9250929050565b5f805f806040858703121561135c575f80fd5b843567ffffffffffffffff80821115611373575f80fd5b61137f88838901611304565b90965094506020870135915080821115611397575f80fd5b506113a487828801611304565b95989497509550505050565b5f602082840312156113c0575f80fd5b81358015158114610419575f80fd5b5f80604083850312156113e0575f80fd5b6113e9836111e0565b91506113f7602084016111e0565b90509250929050565b600181811c9082168061141457607f821691505b60208210810361143257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016114a6576114a6611481565b5060010190565b8082018082111561041c5761041c611481565b634e487b7160e01b5f52604160045260245ffd5b601f821115610cd7575f81815260208120601f850160051c810160208610156114fa5750805b601f850160051c820191505b8181101561151957828155600101611506565b505050505050565b815167ffffffffffffffff81111561153b5761153b6114c0565b61154f816115498454611400565b846114d4565b602080601f831160018114611582575f841561156b5750858301515b5f19600386901b1c1916600185901b178555611519565b5f85815260208120601f198616915b828110156115b057888601518255948401946001909101908401611591565b50858210156115cd57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52600160045260245ffd5b8181038181111561041c5761041c61148156fea2646970667358221220f7715dde9bd29c0f55f2f003a4d7786a5463a332ed9639e7e83745d5f9c85a8a64736f6c63430008150033
Deployed Bytecode Sourcemap
19562:2797:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21649:153;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;21649:153:0;1004:187:1;18681:98:0;;;;;;:::i;:::-;;:::i;:::-;;7513:108;7601:12;;7513:108;;;1533:25:1;;;1521:2;1506:18;7513:108:0;1387:177:1;20796:200:0;;;;;;:::i;:::-;;:::i;19228:102::-;;;;;;:::i;:::-;-1:-1:-1;;;;;19306:16:0;19283:4;19306:16;;;:6;:16;;;;;;;;;19228:102;7064:100;7147:9;;7064:100;;7147:9;;;;2044:36:1;;2032:2;2017:18;7064:100:0;1902:184:1;18787:233:0;;;;;;:::i;:::-;;:::i;21891:181::-;;;;;;:::i;:::-;;:::i;20144:182::-;;;;;;:::i;:::-;;:::i;16549:86::-;16620:7;;-1:-1:-1;;;16620:7:0;;;;16549:86;;7684:105;7763:18;;7684:105;;18324:112;;;;;;:::i;:::-;;:::i;21004:135::-;;;;;;:::i;:::-;;:::i;14779:89::-;;;:::i;19755:95::-;;;;;;:::i;:::-;;:::i;14137:84::-;14208:6;;;;;-1:-1:-1;;;;;14208:6:0;14137:84;;-1:-1:-1;;;;;3149:32:1;;;3131:51;;3119:2;3104:18;14137:84:0;2985:203:1;5687:104:0;;;:::i;18444:229::-;;;;;;:::i;:::-;;:::i;19857:133::-;;;;;;:::i;:::-;;:::i;22161:191::-;;;;;;:::i;:::-;;:::i;21145:163::-;;;;;;:::i;:::-;;:::i;19028:192::-;;;;;;:::i;:::-;;:::i;21397:163::-;;;;;;:::i;:::-;;:::i;15026:192::-;;;;;;:::i;:::-;;:::i;5468:100::-;5522:13;5555:5;5548:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:100;:::o;21649:153::-;21746:4;16154:19;:17;:19::i;:::-;21766:30:::1;21780:7;21789:6;21766:13;:30::i;:::-;21759:37;;16184:1;21649:153:::0;;;;:::o;18681:98::-;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;18749:16:0::1;18766:5;18749:16:::0;;;:6:::1;:16;::::0;;;;:22;;-1:-1:-1;;18749:22:0::1;::::0;;18681:98::o;20796:200::-;20928:4;16154:19;:17;:19::i;:::-;20952:38:::1;20971:6;20979:2;20983:6;20952:18;:38::i;:::-;20945:45:::0;20796:200;-1:-1:-1;;;;20796:200:0:o;18787:233::-;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;18883:10;18869:11:::1;18911:102;18929:3;18927:1;:5;18911:102;;;18996:5;18974:6;:21;18981:10;;18992:1;18981:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18974:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18974:21:0;:27;;-1:-1:-1;;18974:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18933:3;::::1;::::0;::::1;:::i;:::-;;;;18911:102;;;;18858:162;18787:233:::0;;:::o;21891:181::-;22002:4;16154:19;:17;:19::i;:::-;22022:44:::1;22046:7;22055:10;22022:23;:44::i;20144:182::-:0;16154:19;:17;:19::i;:::-;19490:10:::1;19483:18;::::0;;;:6:::1;:18;::::0;;;;;::::1;;::::0;:29:::1;;;19503:9;:7;:9::i;:::-;19475:60;;;::::0;-1:-1:-1;;;19475:60:0;;6167:2:1;19475:60:0::1;::::0;::::1;6149:21:1::0;6206:2;6186:18;;;6179:30;-1:-1:-1;;;6225:18:1;;;6218:48;6283:18;;19475:60:0::1;5965:342:1::0;19475:60:0::1;20254:10:::2;19283:4:::0;19306:16;;;:6;:16;;;;;;;;20238:58:::2;;;::::0;-1:-1:-1;;;20238:58:0;;6514:2:1;20238:58:0::2;::::0;::::2;6496:21:1::0;6553:2;6533:18;;;6526:30;6592:28;6572:18;;;6565:56;6638:18;;20238:58:0::2;6312:350:1::0;20238:58:0::2;20303:17;20309:2;20313:6;20303:5;:17::i;:::-;20144:182:::0;;:::o;18324:112::-;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18397:16:0::1;;::::0;;;:6:::1;:16;::::0;;;;:21;;-1:-1:-1;;18397:21:0::1;18414:4;18397:21;::::0;;18324:112::o;21004:135::-;-1:-1:-1;;;;;7969:18:0;;21080:7;7969:18;;;;;;;;;;;21109:24;7852:143;14779:89;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;14840:21:::1;14858:1;14840:9;:21::i;:::-;14779:89::o:0;19755:95::-;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;7238:9;:21;;-1:-1:-1;;7238:21:0;;;;;;;19755:95;:::o;19821:23::-:1;19755:95:::0;:::o;5687:104::-;5743:13;5776:7;5769:14;;;;;:::i;18444:229::-;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;18537:10;18523:11:::1;18565:101;18583:3;18581:1;:5;18565:101;;;18650:4;18628:6;:21;18635:10;;18646:1;18635:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18628:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18628:21:0;:26;;-1:-1:-1;;18628:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18587:3;::::1;::::0;::::1;:::i;:::-;;;;18565:101;;19857:133:::0;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;19954:30:::1;19970:5;;19954:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;19954:30:0::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;19976:7:0;;-1:-1:-1;19976:7:0;;;;19954:30;::::1;19976:7:::0;;;;19954:30;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;19954:15:0::1;::::0;-1:-1:-1;;;19954:30:0:i:1;22161:191::-:0;22277:4;16154:19;:17;:19::i;:::-;22297:49:::1;22321:7;22330:15;22297:23;:49::i;21145:163::-:0;21246:4;16154:19;:17;:19::i;:::-;21269:33:::1;21284:9;21295:6;21269:14;:33::i;19028:192::-:0;19490:10;19483:18;;;;:6;:18;;;;;;;;;:29;;;19503:9;:7;:9::i;:::-;19475:60;;;;-1:-1:-1;;;19475:60:0;;6167:2:1;19475:60:0;;;6149:21:1;6206:2;6186:18;;;6179:30;-1:-1:-1;;;6225:18:1;;;6218:48;6283:18;;19475:60:0;5965:342:1;19475:60:0;19104:12:::1;19101:112;;;19142:8;:6;:8::i;19101:112::-;19191:10;:8;:10::i;21397:163::-:0;21500:7;16154:19;:17;:19::i;:::-;-1:-1:-1;;;;;8612:18:0;;;8585:7;8612:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;21523:31:::1;8471:176:::0;15026:192;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15115:22:0;::::1;15107:73;;;::::0;-1:-1:-1;;;15107:73:0;;6869:2:1;15107:73:0::1;::::0;::::1;6851:21:1::0;6908:2;6888:18;;;6881:30;6947:34;6927:18;;;6920:62;-1:-1:-1;;;6998:18:1;;;6991:36;7044:19;;15107:73:0::1;6667:402:1::0;15107:73:0::1;15191:19;15201:8;15191:9;:19::i;16708:108::-:0;16620:7;;-1:-1:-1;;;16620:7:0;;;;16778:9;16770:38;;;;-1:-1:-1;;;16770:38:0;;7276:2:1;16770:38:0;;;7258:21:1;7315:2;7295:18;;;7288:30;-1:-1:-1;;;7334:18:1;;;7327:46;7390:18;;16770:38:0;7074:340:1;8794:194:0;8902:4;8919:39;1277:10;8942:7;8951:6;8919:8;:39::i;:::-;-1:-1:-1;8976:4:0;8794:194;;;;:::o;8996:527::-;9136:4;9153:36;9163:6;9171:9;9182:6;9153:9;:36::i;:::-;-1:-1:-1;;;;;9227:19:0;;9200:24;9227:19;;;:11;:19;;;;;;;;1277:10;9227:33;;;;;;;;9293:26;;;;9271:116;;;;-1:-1:-1;;;9271:116:0;;7621:2:1;9271:116:0;;;7603:21:1;7660:2;7640:18;;;7633:30;7699:34;7679:18;;;7672:62;-1:-1:-1;;;7750:18:1;;;7743:38;7798:19;;9271:116:0;7419:404:1;9271:116:0;9423:57;9432:6;1277:10;9473:6;9454:16;:25;9423:8;:57::i;:::-;-1:-1:-1;9511:4:0;;8996:527;-1:-1:-1;;;;8996:527:0:o;9531:290::-;1277:10;9644:4;9733:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9733:34:0;;;;;;;;;;9644:4;;9661:130;;9711:7;;9733:47;;9770:10;;9733:47;:::i;:::-;9661:8;:130::i;18100:97::-;18141:4;18179:10;18170:7;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;;14137:84;18170:7;-1:-1:-1;;;;;18170:19:0;;18163:26;;18100:97;:::o;11704:528::-;-1:-1:-1;;;;;11788:21:0;;11780:65;;;;-1:-1:-1;;;11780:65:0;;8160:2:1;11780:65:0;;;8142:21:1;8199:2;8179:18;;;8172:30;8238:33;8218:18;;;8211:61;8289:18;;11780:65:0;7958:355:1;11780:65:0;11877:18;;:30;;11900:6;11877:22;:30::i;:::-;11856:18;:51;;;11946:12;;-1:-1:-1;11926:32:0;11918:63;;;;-1:-1:-1;;;11918:63:0;;8520:2:1;11918:63:0;;;8502:21:1;8559:2;8539:18;;;8532:30;-1:-1:-1;;;8578:18:1;;;8571:49;8637:18;;11918:63:0;8318:343:1;11918:63:0;-1:-1:-1;;;;;12073:18:0;;:9;:18;;;;;;;;;;;:30;;12096:6;12073:22;:30::i;:::-;-1:-1:-1;;;;;12052:18:0;;:9;:18;;;;;;;;;;;:51;;;;12128:37;;1533:25:1;;;12052:18:0;;:9;;12128:37;;1506:18:1;12128:37:0;;;;;;;20144:182;;:::o;15299:173::-;15374:6;;;-1:-1:-1;;;;;15391:17:0;;;15374:6;15391:17;;;-1:-1:-1;;;;;;15391:17:0;;;;;;15424:40;;15374:6;;;;;;;;15424:40;;15355:16;;15424:40;15344:128;15299:173;:::o;7277:171::-;7399:5;:13;7407:5;7399;:13;:::i;:::-;-1:-1:-1;7423:7:0;:17;7433:7;7423;:17;:::i;:::-;;7277:171;;:::o;9829:475::-;1277:10;9947:4;9991:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9991:34:0;;;;;;;;;;10058:35;;;;10036:122;;;;-1:-1:-1;;;10036:122:0;;11204:2:1;10036:122:0;;;11186:21:1;11243:2;11223:18;;;11216:30;11282:34;11262:18;;;11255:62;-1:-1:-1;;;11333:18:1;;;11326:35;11378:19;;10036:122:0;11002:401:1;10036:122:0;10194:67;1277:10;10217:7;10245:15;10226:16;:34;10194:8;:67::i;:::-;-1:-1:-1;10292:4:0;;9829:475;-1:-1:-1;;;9829:475:0:o;8208:200::-;8319:4;8336:42;1277:10;8360:9;8371:6;8336:9;:42::i;17145:118::-;16154:19;:17;:19::i;:::-;17205:7:::1;:14:::0;;-1:-1:-1;;;;17205:14:0::1;-1:-1:-1::0;;;17205:14:0::1;::::0;;17235:20:::1;17242:12;1277:10:::0;;1197:98;17242:12:::1;17235:20;::::0;-1:-1:-1;;;;;3149:32:1;;;3131:51;;3119:2;3104:18;17235:20:0::1;;;;;;;17145:118::o:0;17404:120::-;16413:16;:14;:16::i;:::-;17463:7:::1;:15:::0;;-1:-1:-1;;;;17463:15:0::1;::::0;;17494:22:::1;1277:10:::0;17503:12:::1;1197:98:::0;13098:380;-1:-1:-1;;;;;13234:19:0;;13226:68;;;;-1:-1:-1;;;13226:68:0;;11610:2:1;13226:68:0;;;11592:21:1;11649:2;11629:18;;;11622:30;11688:34;11668:18;;;11661:62;-1:-1:-1;;;11739:18:1;;;11732:34;11783:19;;13226:68:0;11408:400:1;13226:68:0;-1:-1:-1;;;;;13313:21:0;;13305:68;;;;-1:-1:-1;;;13305:68:0;;12015:2:1;13305:68:0;;;11997:21:1;12054:2;12034:18;;;12027:30;12093:34;12073:18;;;12066:62;-1:-1:-1;;;12144:18:1;;;12137:32;12186:19;;13305:68:0;11813:398:1;13305:68:0;-1:-1:-1;;;;;13386:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13438:32;;1533:25:1;;;13438:32:0;;1506:18:1;13438:32:0;;;;;;;13098:380;;;:::o;10796:900::-;-1:-1:-1;;;;;10936:20:0;;10928:70;;;;-1:-1:-1;;;10928:70:0;;12418:2:1;10928:70:0;;;12400:21:1;12457:2;12437:18;;;12430:30;12496:34;12476:18;;;12469:62;-1:-1:-1;;;12547:18:1;;;12540:35;12592:19;;10928:70:0;12216:401:1;10928:70:0;-1:-1:-1;;;;;11017:23:0;;11009:71;;;;-1:-1:-1;;;11009:71:0;;12824:2:1;11009:71:0;;;12806:21:1;12863:2;12843:18;;;12836:30;12902:34;12882:18;;;12875:62;-1:-1:-1;;;12953:18:1;;;12946:33;12996:19;;11009:71:0;12622:399:1;11009:71:0;-1:-1:-1;;;;;11175:17:0;;11151:21;11175:17;;;;;;;;;;;11225:23;;;;11203:111;;;;-1:-1:-1;;;11203:111:0;;13228:2:1;11203:111:0;;;13210:21:1;13267:2;13247:18;;;13240:30;13306:34;13286:18;;;13279:62;-1:-1:-1;;;13357:18:1;;;13350:36;13403:19;;11203:111:0;13026:402:1;11203:111:0;11430:25;:13;11448:6;11430:17;:25::i;:::-;-1:-1:-1;;;;;11410:17:0;;;:9;:17;;;;;;;;;;;:45;;;;11544:20;;;;;;;:32;;11569:6;11544:24;:32::i;:::-;-1:-1:-1;;;;;11521:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;11594:35;1533:25:1;;;11521:20:0;;11594:35;;;;;;1506:18:1;11594:35:0;;;;;;;11642:46;7277:171;1022:133;1080:7;;1108:5;1112:1;1108;:5;:::i;:::-;1096:17;;1132:1;1127;:6;;1120:14;;;;:::i;16893:108::-;16620:7;;-1:-1:-1;;;16620:7:0;;;;16952:41;;;;-1:-1:-1;;;16952:41:0;;13767:2:1;16952:41:0;;;13749:21:1;13806:2;13786:18;;;13779:30;-1:-1:-1;;;13825:18:1;;;13818:50;13885:18;;16952:41:0;13565:344:1;842:113:0;900:7;928:1;923;:6;;916:14;;;;:::i;:::-;944:5;948:1;944;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1196:186::-;1255:6;1308:2;1296:9;1287:7;1283:23;1279:32;1276:52;;;1324:1;1321;1314:12;1276:52;1347:29;1366:9;1347:29;:::i;1569:328::-;1646:6;1654;1662;1715:2;1703:9;1694:7;1690:23;1686:32;1683:52;;;1731:1;1728;1721:12;1683:52;1754:29;1773:9;1754:29;:::i;:::-;1744:39;;1802:38;1836:2;1825:9;1821:18;1802:38;:::i;:::-;1792:48;;1887:2;1876:9;1872:18;1859:32;1849:42;;1569:328;;;;;:::o;2091:615::-;2177:6;2185;2238:2;2226:9;2217:7;2213:23;2209:32;2206:52;;;2254:1;2251;2244:12;2206:52;2294:9;2281:23;2323:18;2364:2;2356:6;2353:14;2350:34;;;2380:1;2377;2370:12;2350:34;2418:6;2407:9;2403:22;2393:32;;2463:7;2456:4;2452:2;2448:13;2444:27;2434:55;;2485:1;2482;2475:12;2434:55;2525:2;2512:16;2551:2;2543:6;2540:14;2537:34;;;2567:1;2564;2557:12;2537:34;2620:7;2615:2;2605:6;2602:1;2598:14;2594:2;2590:23;2586:32;2583:45;2580:65;;;2641:1;2638;2631:12;2580:65;2672:2;2664:11;;;;;2694:6;;-1:-1:-1;2091:615:1;;-1:-1:-1;;;;2091:615:1:o;2711:269::-;2768:6;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2926:4;2919:5;2915:16;2908:5;2905:27;2895:55;;2946:1;2943;2936:12;3193:348;3245:8;3255:6;3309:3;3302:4;3294:6;3290:17;3286:27;3276:55;;3327:1;3324;3317:12;3276:55;-1:-1:-1;3350:20:1;;3393:18;3382:30;;3379:50;;;3425:1;3422;3415:12;3379:50;3462:4;3454:6;3450:17;3438:29;;3514:3;3507:4;3498:6;3490;3486:19;3482:30;3479:39;3476:59;;;3531:1;3528;3521:12;3476:59;3193:348;;;;;:::o;3546:721::-;3638:6;3646;3654;3662;3715:2;3703:9;3694:7;3690:23;3686:32;3683:52;;;3731:1;3728;3721:12;3683:52;3771:9;3758:23;3800:18;3841:2;3833:6;3830:14;3827:34;;;3857:1;3854;3847:12;3827:34;3896:59;3947:7;3938:6;3927:9;3923:22;3896:59;:::i;:::-;3974:8;;-1:-1:-1;3870:85:1;-1:-1:-1;4062:2:1;4047:18;;4034:32;;-1:-1:-1;4078:16:1;;;4075:36;;;4107:1;4104;4097:12;4075:36;;4146:61;4199:7;4188:8;4177:9;4173:24;4146:61;:::i;:::-;3546:721;;;;-1:-1:-1;4226:8:1;-1:-1:-1;;;;3546:721:1:o;4272:273::-;4328:6;4381:2;4369:9;4360:7;4356:23;4352:32;4349:52;;;4397:1;4394;4387:12;4349:52;4436:9;4423:23;4489:5;4482:13;4475:21;4468:5;4465:32;4455:60;;4511:1;4508;4501:12;4550:260;4618:6;4626;4679:2;4667:9;4658:7;4654:23;4650:32;4647:52;;;4695:1;4692;4685:12;4647:52;4718:29;4737:9;4718:29;:::i;:::-;4708:39;;4766:38;4800:2;4789:9;4785:18;4766:38;:::i;:::-;4756:48;;4550:260;;;;;:::o;4815:380::-;4894:1;4890:12;;;;4937;;;4958:61;;5012:4;5004:6;5000:17;4990:27;;4958:61;5065:2;5057:6;5054:14;5034:18;5031:38;5028:161;;5111:10;5106:3;5102:20;5099:1;5092:31;5146:4;5143:1;5136:15;5174:4;5171:1;5164:15;5028:161;;4815:380;;;:::o;5200:356::-;5402:2;5384:21;;;5421:18;;;5414:30;5480:34;5475:2;5460:18;;5453:62;5547:2;5532:18;;5200:356::o;5561:127::-;5622:10;5617:3;5613:20;5610:1;5603:31;5653:4;5650:1;5643:15;5677:4;5674:1;5667:15;5693:127;5754:10;5749:3;5745:20;5742:1;5735:31;5785:4;5782:1;5775:15;5809:4;5806:1;5799:15;5825:135;5864:3;5885:17;;;5882:43;;5905:18;;:::i;:::-;-1:-1:-1;5952:1:1;5941:13;;5825:135::o;7828:125::-;7893:9;;;7914:10;;;7911:36;;;7927:18;;:::i;8666:127::-;8727:10;8722:3;8718:20;8715:1;8708:31;8758:4;8755:1;8748:15;8782:4;8779:1;8772:15;8924:545;9026:2;9021:3;9018:11;9015:448;;;9062:1;9087:5;9083:2;9076:17;9132:4;9128:2;9118:19;9202:2;9190:10;9186:19;9183:1;9179:27;9173:4;9169:38;9238:4;9226:10;9223:20;9220:47;;;-1:-1:-1;9261:4:1;9220:47;9316:2;9311:3;9307:12;9304:1;9300:20;9294:4;9290:31;9280:41;;9371:82;9389:2;9382:5;9379:13;9371:82;;;9434:17;;;9415:1;9404:13;9371:82;;;9375:3;;;8924:545;;;:::o;9645:1352::-;9771:3;9765:10;9798:18;9790:6;9787:30;9784:56;;;9820:18;;:::i;:::-;9849:97;9939:6;9899:38;9931:4;9925:11;9899:38;:::i;:::-;9893:4;9849:97;:::i;:::-;10001:4;;10065:2;10054:14;;10082:1;10077:663;;;;10784:1;10801:6;10798:89;;;-1:-1:-1;10853:19:1;;;10847:26;10798:89;-1:-1:-1;;9602:1:1;9598:11;;;9594:24;9590:29;9580:40;9626:1;9622:11;;;9577:57;10900:81;;10047:944;;10077:663;8871:1;8864:14;;;8908:4;8895:18;;-1:-1:-1;;10113:20:1;;;10231:236;10245:7;10242:1;10239:14;10231:236;;;10334:19;;;10328:26;10313:42;;10426:27;;;;10394:1;10382:14;;;;10261:19;;10231:236;;;10235:3;10495:6;10486:7;10483:19;10480:201;;;10556:19;;;10550:26;-1:-1:-1;;10639:1:1;10635:14;;;10651:3;10631:24;10627:37;10623:42;10608:58;10593:74;;10480:201;-1:-1:-1;;;;;10727:1:1;10711:14;;;10707:22;10694:36;;-1:-1:-1;9645:1352:1:o;13433:127::-;13494:10;13489:3;13485:20;13482:1;13475:31;13525:4;13522:1;13515:15;13549:4;13546:1;13539:15;13914:128;13981:9;;;14002:11;;;13999:37;;;14016:18;;:::i
Swarm Source
ipfs://f7715dde9bd29c0f55f2f003a4d7786a5463a332ed9639e7e83745d5f9c85a8a
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.