Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Sports
Overview
Max Total Supply
10,000,000,000 SPN
Holders
2 (0.00%)
Total Transfers
-
Market
Fully Diluted Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SportZchainToken
Compiler Version
v0.8.2+commit.661d1103
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-01 */ // SPDX-License-Identifier: MIT // Sources flattened with hardhat v2.9.2 https://hardhat.org // File @openzeppelin/contracts/token/ERC20/[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `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 Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File @openzeppelin/contracts/token/ERC20/extensions/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/token/ERC20/[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `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, _allowances[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 = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, 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: * * - `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; } _balances[to] += amount; 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; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Spend `amount` form the allowance of `owner` toward `spender`. * * 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 before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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 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 { _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); } } // File @openzeppelin/contracts/token/ERC20/extensions/ERC20Burna[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol) pragma solidity ^0.8.0; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } } // File @openzeppelin/contracts/security/[email protected] // OpenZeppelin Contracts v4.4.1 (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ 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 Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { 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()); } } // File @openzeppelin/contracts/token/ERC20/extensions/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20Pausable.sol) pragma solidity ^0.8.0; /** * @dev ERC20 token with pausable token transfers, minting and burning. * * Useful for scenarios such as preventing trades until the end of an evaluation * period, or having an emergency switch for freezing all token transfers in the * event of a large bug. */ abstract contract ERC20Pausable is ERC20, Pausable { /** * @dev See {ERC20-_beforeTokenTransfer}. * * Requirements: * * - the contract must not be paused. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._beforeTokenTransfer(from, to, amount); require(!paused(), "ERC20Pausable: token transfer while paused"); } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControl.sol) pragma solidity ^0.8.0; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view virtual override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } // File contracts/tokens/SportZchainToken.sol pragma solidity 0.8.2; /** * @title Contract for SportZchain token * @dev An ERC20 implementation of the SportZchain ecosystem token. All tokens are initially pre-assigned to * the creator, and can later be distributed freely using transfer transferFrom and other ERC20 functions. */ contract SportZchainToken is Ownable, ERC20Pausable, ERC20Burnable, AccessControl { bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE"); bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); /** * @dev Throws if called by any account other than the burner. */ modifier onlyBurner() { require(hasRole(BURNER_ROLE, msg.sender), "Caller is not a burner"); _; } /** * @dev Throws if called by any account other than the pauser. */ modifier onlyPauser() { require(hasRole(PAUSER_ROLE, msg.sender), "Caller is not a pauser"); _; } /** * @dev Constructor that gives msg.sender all of existing tokens. * * @param _name = token name * @param _symbol = token symbol * @param _decimals = token decimals * @param _totalSupply = token supply of the token */ constructor ( string memory _name, string memory _symbol, uint8 _decimals, uint256 _totalSupply ) ERC20(_name, _symbol) { // This is the only place where we ever mint tokens for initial supply _mint(_msgSender(), _totalSupply * (10 ** uint256(_decimals))); // set the owner as the admin _setupRole(DEFAULT_ADMIN_ROLE, _msgSender()); } /** * @dev Allow only users with burner role to burn tokens from the wallet, * There is no reason for a token holder to EVER call this method directly. It will be * used by the future SportZchain ecosystem. * * @param _amount = token amount to burn */ function burn( uint256 _amount ) public onlyBurner override (ERC20Burnable) { super.burn(_amount); } /** * @dev Allow only users with burner role to burn tokens from the a given address, * There is no reason for a token holder to EVER call this method directly. It will be * used by the future SportZchain ecosystem. * * @param account = burn from account * @param _amount = token amount to burn */ function burnFrom( address account, uint256 _amount ) public onlyBurner override (ERC20Burnable) { super.burnFrom(account, _amount); } /** * @dev Overrides _beforeTokenTransfer - See ERC20 and ERC20Pausable * * @param from = address from which the tokens needs to be transferred * @param to = address to which the tokens needs to be transferred * @param amount = token amount to be transferred */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override (ERC20,ERC20Pausable){ super._beforeTokenTransfer(from, to, amount); } /** * @dev Triggers stopped state. Can be paused only by the pauser */ function pause() external onlyPauser { _pause(); } /** * @dev Returns to normal state. Can be unpaused only by the pauser */ function unpause() external onlyPauser { _unpause(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"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":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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":[],"name":"BURNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162003c1238038062003c128339818101604052810190620000379190620006cc565b8383620000596200004d6200011560201b60201c565b6200011d60201b60201c565b8160049080519060200190620000719291906200057c565b5080600590805190602001906200008a9291906200057c565b5050506000600660006101000a81548160ff021916908315150217905550620000e7620000bc6200011560201b60201c565b8360ff16600a620000ce919062000952565b83620000db919062000a8f565b620001e160201b60201c565b6200010b6000801b620000ff6200011560201b60201c565b6200035b60201b60201c565b5050505062000d00565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000254576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024b90620007c9565b60405180910390fd5b62000268600083836200037160201b60201c565b80600360008282546200027c91906200089a565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002d491906200089a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200033b91906200080d565b60405180910390a362000357600083836200038e60201b60201c565b5050565b6200036d82826200039360201b60201c565b5050565b620003898383836200048560201b62000f481760201c565b505050565b505050565b620003a58282620004f560201b60201c565b620004815760016007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004266200011560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6200049d8383836200056060201b62000fa01760201c565b620004ad6200056560201b60201c565b15620004f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004e790620007eb565b60405180910390fd5b505050565b60006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b505050565b6000600660009054906101000a900460ff16905090565b8280546200058a9062000b3d565b90600052602060002090601f016020900481019282620005ae5760008555620005fa565b82601f10620005c957805160ff1916838001178555620005fa565b82800160010185558215620005fa579182015b82811115620005f9578251825591602001919060010190620005dc565b5b5090506200060991906200060d565b5090565b5b80821115620006285760008160009055506001016200060e565b5090565b6000620006436200063d8462000853565b6200082a565b9050828152602081018484840111156200065c57600080fd5b6200066984828562000b07565b509392505050565b600082601f8301126200068357600080fd5b8151620006958482602086016200062c565b91505092915050565b600081519050620006af8162000ccc565b92915050565b600081519050620006c68162000ce6565b92915050565b60008060008060808587031215620006e357600080fd5b600085015167ffffffffffffffff811115620006fe57600080fd5b6200070c8782880162000671565b945050602085015167ffffffffffffffff8111156200072a57600080fd5b620007388782880162000671565b93505060406200074b87828801620006b5565b92505060606200075e878288016200069e565b91505092959194509250565b600062000779601f8362000889565b9150620007868262000c54565b602082019050919050565b6000620007a0602a8362000889565b9150620007ad8262000c7d565b604082019050919050565b620007c38162000af0565b82525050565b60006020820190508181036000830152620007e4816200076a565b9050919050565b60006020820190508181036000830152620008068162000791565b9050919050565b6000602082019050620008246000830184620007b8565b92915050565b60006200083662000849565b905062000844828262000b73565b919050565b6000604051905090565b600067ffffffffffffffff82111562000871576200087062000c07565b5b6200087c8262000c36565b9050602081019050919050565b600082825260208201905092915050565b6000620008a78262000af0565b9150620008b48362000af0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620008ec57620008eb62000ba9565b5b828201905092915050565b6000808291508390505b6001851115620009495780860481111562000921576200092062000ba9565b5b6001851615620009315780820291505b8081029050620009418562000c47565b945062000901565b94509492505050565b60006200095f8262000af0565b91506200096c8362000af0565b92506200099b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009a3565b905092915050565b600082620009b5576001905062000a88565b81620009c5576000905062000a88565b8160018114620009de5760028114620009e95762000a1f565b600191505062000a88565b60ff841115620009fe57620009fd62000ba9565b5b8360020a91508482111562000a185762000a1762000ba9565b5b5062000a88565b5060208310610133831016604e8410600b841016171562000a595782820a90508381111562000a535762000a5262000ba9565b5b62000a88565b62000a688484846001620008f7565b9250905081840481111562000a825762000a8162000ba9565b5b81810290505b9392505050565b600062000a9c8262000af0565b915062000aa98362000af0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ae55762000ae462000ba9565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b60005b8381101562000b2757808201518184015260208101905062000b0a565b8381111562000b37576000848401525b50505050565b6000600282049050600182168062000b5657607f821691505b6020821081141562000b6d5762000b6c62000bd8565b5b50919050565b62000b7e8262000c36565b810181811067ffffffffffffffff8211171562000ba05762000b9f62000c07565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b62000cd78162000af0565b811462000ce357600080fd5b50565b62000cf18162000afa565b811462000cfd57600080fd5b50565b612f028062000d106000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a217fddf11610097578063d547741f11610071578063d547741f146104f7578063dd62ed3e14610513578063e63ab1e914610543578063f2fde38b14610561576101c4565b8063a217fddf14610479578063a457c2d714610497578063a9059cbb146104c7576101c4565b80638456cb59116100d35780638456cb59146104035780638da5cb5b1461040d57806391d148541461042b57806395d89b411461045b576101c4565b806370a08231146103ad578063715018a6146103dd57806379cc6790146103e7576101c4565b80632f2ff15d11610166578063395093511161014057806339509351146103395780633f4ba83a1461036957806342966c68146103735780635c975abb1461038f576101c4565b80632f2ff15d146102e3578063313ce567146102ff57806336568abe1461031d576101c4565b806318160ddd116101a257806318160ddd1461024757806323b872dd14610265578063248a9ca314610295578063282c51f3146102c5576101c4565b806301ffc9a7146101c957806306fdde03146101f9578063095ea7b314610217575b600080fd5b6101e360048036038101906101de9190612020565b61057d565b6040516101f09190612438565b60405180910390f35b6102016105f7565b60405161020e919061246e565b60405180910390f35b610231600480360381019061022c9190611f7f565b610689565b60405161023e9190612438565b60405180910390f35b61024f6106ac565b60405161025c91906126d0565b60405180910390f35b61027f600480360381019061027a9190611f30565b6106b6565b60405161028c9190612438565b60405180910390f35b6102af60048036038101906102aa9190611fbb565b6106e5565b6040516102bc9190612453565b60405180910390f35b6102cd610705565b6040516102da9190612453565b60405180910390f35b6102fd60048036038101906102f89190611fe4565b610729565b005b610307610752565b60405161031491906126eb565b60405180910390f35b61033760048036038101906103329190611fe4565b61075b565b005b610353600480360381019061034e9190611f7f565b6107de565b6040516103609190612438565b60405180910390f35b610371610888565b005b61038d60048036038101906103889190612049565b6108fb565b005b610397610970565b6040516103a49190612438565b60405180910390f35b6103c760048036038101906103c29190611ecb565b610987565b6040516103d491906126d0565b60405180910390f35b6103e56109d0565b005b61040160048036038101906103fc9190611f7f565b610a58565b005b61040b610acf565b005b610415610b42565b604051610422919061241d565b60405180910390f35b61044560048036038101906104409190611fe4565b610b6b565b6040516104529190612438565b60405180910390f35b610463610bd6565b604051610470919061246e565b60405180910390f35b610481610c68565b60405161048e9190612453565b60405180910390f35b6104b160048036038101906104ac9190611f7f565b610c6f565b6040516104be9190612438565b60405180910390f35b6104e160048036038101906104dc9190611f7f565b610d59565b6040516104ee9190612438565b60405180910390f35b610511600480360381019061050c9190611fe4565b610d7c565b005b61052d60048036038101906105289190611ef4565b610da5565b60405161053a91906126d0565b60405180910390f35b61054b610e2c565b6040516105589190612453565b60405180910390f35b61057b60048036038101906105769190611ecb565b610e50565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105f057506105ef82610fa5565b5b9050919050565b606060048054610606906128f9565b80601f0160208091040260200160405190810160405280929190818152602001828054610632906128f9565b801561067f5780601f106106545761010080835404028352916020019161067f565b820191906000526020600020905b81548152906001019060200180831161066257829003601f168201915b5050505050905090565b60008061069461100f565b90506106a1818585611017565b600191505092915050565b6000600354905090565b6000806106c161100f565b90506106ce8582856111e2565b6106d985858561126e565b60019150509392505050565b600060076000838152602001908152602001600020600101549050919050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b610732826106e5565b6107438161073e61100f565b6114f2565b61074d838361158f565b505050565b60006012905090565b61076361100f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c790612690565b60405180910390fd5b6107da8282611670565b5050565b6000806107e961100f565b905061087d818585600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610878919061272d565b611017565b600191505092915050565b6108b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610b6b565b6108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e890612650565b60405180910390fd5b6108f9611752565b565b6109257f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84833610b6b565b610964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095b906125b0565b60405180910390fd5b61096d816117f4565b50565b6000600660009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109d861100f565b73ffffffffffffffffffffffffffffffffffffffff166109f6610b42565b73ffffffffffffffffffffffffffffffffffffffff1614610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a43906125d0565b60405180910390fd5b610a566000611808565b565b610a827f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84833610b6b565b610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab8906125b0565b60405180910390fd5b610acb82826118cc565b5050565b610af97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610b6b565b610b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2f90612650565b60405180910390fd5b610b406118ec565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060058054610be5906128f9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c11906128f9565b8015610c5e5780601f10610c3357610100808354040283529160200191610c5e565b820191906000526020600020905b815481529060010190602001808311610c4157829003601f168201915b5050505050905090565b6000801b81565b600080610c7a61100f565b90506000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3790612670565b60405180910390fd5b610d4d8286868403611017565b60019250505092915050565b600080610d6461100f565b9050610d7181858561126e565b600191505092915050565b610d85826106e5565b610d9681610d9161100f565b6114f2565b610da08383611670565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610e5861100f565b73ffffffffffffffffffffffffffffffffffffffff16610e76610b42565b73ffffffffffffffffffffffffffffffffffffffff1614610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec3906125d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3390612510565b60405180910390fd5b610f4581611808565b50565b610f53838383610fa0565b610f5b610970565b15610f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f92906126b0565b60405180910390fd5b505050565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90612630565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90612530565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111d591906126d0565b60405180910390a3505050565b60006111ee8484610da5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611268578181101561125a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125190612550565b60405180910390fd5b6112678484848403611017565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d590612610565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561134e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611345906124b0565b60405180910390fd5b61135983838361198f565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d790612570565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611475919061272d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114d991906126d0565b60405180910390a36114ec84848461199f565b50505050565b6114fc8282610b6b565b61158b576115218173ffffffffffffffffffffffffffffffffffffffff1660146119a4565b61152f8360001c60206119a4565b6040516020016115409291906123e3565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611582919061246e565b60405180910390fd5b5050565b6115998282610b6b565b61166c5760016007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061161161100f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61167a8282610b6b565b1561174e5760006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116f361100f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b61175a610970565b611799576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611790906124d0565b60405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6117dd61100f565b6040516117ea919061241d565b60405180910390a1565b6118056117ff61100f565b82611c9e565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6118de826118d861100f565b836111e2565b6118e88282611c9e565b5050565b6118f4610970565b15611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b90612590565b60405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861197861100f565b604051611985919061241d565b60405180910390a1565b61199a838383610f48565b505050565b505050565b6060600060028360026119b79190612783565b6119c1919061272d565b67ffffffffffffffff811115611a00577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611a325781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611a90577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611b1a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611b5a9190612783565b611b64919061272d565b90505b6001811115611c50577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611bcc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110611c09577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611c49906128cf565b9050611b67565b5060008414611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90612490565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d05906125f0565b60405180910390fd5b611d1a8260008361198f565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d98906124f0565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160036000828254611df991906127dd565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e5e91906126d0565b60405180910390a3611e728360008461199f565b505050565b600081359050611e8681612e70565b92915050565b600081359050611e9b81612e87565b92915050565b600081359050611eb081612e9e565b92915050565b600081359050611ec581612eb5565b92915050565b600060208284031215611edd57600080fd5b6000611eeb84828501611e77565b91505092915050565b60008060408385031215611f0757600080fd5b6000611f1585828601611e77565b9250506020611f2685828601611e77565b9150509250929050565b600080600060608486031215611f4557600080fd5b6000611f5386828701611e77565b9350506020611f6486828701611e77565b9250506040611f7586828701611eb6565b9150509250925092565b60008060408385031215611f9257600080fd5b6000611fa085828601611e77565b9250506020611fb185828601611eb6565b9150509250929050565b600060208284031215611fcd57600080fd5b6000611fdb84828501611e8c565b91505092915050565b60008060408385031215611ff757600080fd5b600061200585828601611e8c565b925050602061201685828601611e77565b9150509250929050565b60006020828403121561203257600080fd5b600061204084828501611ea1565b91505092915050565b60006020828403121561205b57600080fd5b600061206984828501611eb6565b91505092915050565b61207b81612811565b82525050565b61208a81612823565b82525050565b6120998161282f565b82525050565b60006120aa82612706565b6120b48185612711565b93506120c481856020860161289c565b6120cd81612989565b840191505092915050565b60006120e382612706565b6120ed8185612722565b93506120fd81856020860161289c565b80840191505092915050565b6000612116602083612711565b91506121218261299a565b602082019050919050565b6000612139602383612711565b9150612144826129c3565b604082019050919050565b600061215c601483612711565b915061216782612a12565b602082019050919050565b600061217f602283612711565b915061218a82612a3b565b604082019050919050565b60006121a2602683612711565b91506121ad82612a8a565b604082019050919050565b60006121c5602283612711565b91506121d082612ad9565b604082019050919050565b60006121e8601d83612711565b91506121f382612b28565b602082019050919050565b600061220b602683612711565b915061221682612b51565b604082019050919050565b600061222e601083612711565b915061223982612ba0565b602082019050919050565b6000612251601683612711565b915061225c82612bc9565b602082019050919050565b6000612274602083612711565b915061227f82612bf2565b602082019050919050565b6000612297602183612711565b91506122a282612c1b565b604082019050919050565b60006122ba602583612711565b91506122c582612c6a565b604082019050919050565b60006122dd602483612711565b91506122e882612cb9565b604082019050919050565b6000612300601783612722565b915061230b82612d08565b601782019050919050565b6000612323601683612711565b915061232e82612d31565b602082019050919050565b6000612346602583612711565b915061235182612d5a565b604082019050919050565b6000612369601183612722565b915061237482612da9565b601182019050919050565b600061238c602f83612711565b915061239782612dd2565b604082019050919050565b60006123af602a83612711565b91506123ba82612e21565b604082019050919050565b6123ce81612885565b82525050565b6123dd8161288f565b82525050565b60006123ee826122f3565b91506123fa82856120d8565b91506124058261235c565b915061241182846120d8565b91508190509392505050565b60006020820190506124326000830184612072565b92915050565b600060208201905061244d6000830184612081565b92915050565b60006020820190506124686000830184612090565b92915050565b60006020820190508181036000830152612488818461209f565b905092915050565b600060208201905081810360008301526124a981612109565b9050919050565b600060208201905081810360008301526124c98161212c565b9050919050565b600060208201905081810360008301526124e98161214f565b9050919050565b6000602082019050818103600083015261250981612172565b9050919050565b6000602082019050818103600083015261252981612195565b9050919050565b60006020820190508181036000830152612549816121b8565b9050919050565b60006020820190508181036000830152612569816121db565b9050919050565b60006020820190508181036000830152612589816121fe565b9050919050565b600060208201905081810360008301526125a981612221565b9050919050565b600060208201905081810360008301526125c981612244565b9050919050565b600060208201905081810360008301526125e981612267565b9050919050565b600060208201905081810360008301526126098161228a565b9050919050565b60006020820190508181036000830152612629816122ad565b9050919050565b60006020820190508181036000830152612649816122d0565b9050919050565b6000602082019050818103600083015261266981612316565b9050919050565b6000602082019050818103600083015261268981612339565b9050919050565b600060208201905081810360008301526126a98161237f565b9050919050565b600060208201905081810360008301526126c9816123a2565b9050919050565b60006020820190506126e560008301846123c5565b92915050565b600060208201905061270060008301846123d4565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061273882612885565b915061274383612885565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127785761277761292b565b5b828201905092915050565b600061278e82612885565b915061279983612885565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127d2576127d161292b565b5b828202905092915050565b60006127e882612885565b91506127f383612885565b9250828210156128065761280561292b565b5b828203905092915050565b600061281c82612865565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156128ba57808201518184015260208101905061289f565b838111156128c9576000848401525b50505050565b60006128da82612885565b915060008214156128ee576128ed61292b565b5b600182039050919050565b6000600282049050600182168061291157607f821691505b602082108114156129255761292461295a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f43616c6c6572206973206e6f742061206275726e657200000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f43616c6c6572206973206e6f7420612070617573657200000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b612e7981612811565b8114612e8457600080fd5b50565b612e908161282f565b8114612e9b57600080fd5b50565b612ea781612839565b8114612eb257600080fd5b50565b612ebe81612885565b8114612ec957600080fd5b5056fea2646970667358221220de5ecaeebdd468e23b2db7f8d91636287216eefed6ababd666e0f062c3c53f0564736f6c63430008020033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000002540be400000000000000000000000000000000000000000000000000000000000000000b53706f72747a636861696e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000353504e0000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a217fddf11610097578063d547741f11610071578063d547741f146104f7578063dd62ed3e14610513578063e63ab1e914610543578063f2fde38b14610561576101c4565b8063a217fddf14610479578063a457c2d714610497578063a9059cbb146104c7576101c4565b80638456cb59116100d35780638456cb59146104035780638da5cb5b1461040d57806391d148541461042b57806395d89b411461045b576101c4565b806370a08231146103ad578063715018a6146103dd57806379cc6790146103e7576101c4565b80632f2ff15d11610166578063395093511161014057806339509351146103395780633f4ba83a1461036957806342966c68146103735780635c975abb1461038f576101c4565b80632f2ff15d146102e3578063313ce567146102ff57806336568abe1461031d576101c4565b806318160ddd116101a257806318160ddd1461024757806323b872dd14610265578063248a9ca314610295578063282c51f3146102c5576101c4565b806301ffc9a7146101c957806306fdde03146101f9578063095ea7b314610217575b600080fd5b6101e360048036038101906101de9190612020565b61057d565b6040516101f09190612438565b60405180910390f35b6102016105f7565b60405161020e919061246e565b60405180910390f35b610231600480360381019061022c9190611f7f565b610689565b60405161023e9190612438565b60405180910390f35b61024f6106ac565b60405161025c91906126d0565b60405180910390f35b61027f600480360381019061027a9190611f30565b6106b6565b60405161028c9190612438565b60405180910390f35b6102af60048036038101906102aa9190611fbb565b6106e5565b6040516102bc9190612453565b60405180910390f35b6102cd610705565b6040516102da9190612453565b60405180910390f35b6102fd60048036038101906102f89190611fe4565b610729565b005b610307610752565b60405161031491906126eb565b60405180910390f35b61033760048036038101906103329190611fe4565b61075b565b005b610353600480360381019061034e9190611f7f565b6107de565b6040516103609190612438565b60405180910390f35b610371610888565b005b61038d60048036038101906103889190612049565b6108fb565b005b610397610970565b6040516103a49190612438565b60405180910390f35b6103c760048036038101906103c29190611ecb565b610987565b6040516103d491906126d0565b60405180910390f35b6103e56109d0565b005b61040160048036038101906103fc9190611f7f565b610a58565b005b61040b610acf565b005b610415610b42565b604051610422919061241d565b60405180910390f35b61044560048036038101906104409190611fe4565b610b6b565b6040516104529190612438565b60405180910390f35b610463610bd6565b604051610470919061246e565b60405180910390f35b610481610c68565b60405161048e9190612453565b60405180910390f35b6104b160048036038101906104ac9190611f7f565b610c6f565b6040516104be9190612438565b60405180910390f35b6104e160048036038101906104dc9190611f7f565b610d59565b6040516104ee9190612438565b60405180910390f35b610511600480360381019061050c9190611fe4565b610d7c565b005b61052d60048036038101906105289190611ef4565b610da5565b60405161053a91906126d0565b60405180910390f35b61054b610e2c565b6040516105589190612453565b60405180910390f35b61057b60048036038101906105769190611ecb565b610e50565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105f057506105ef82610fa5565b5b9050919050565b606060048054610606906128f9565b80601f0160208091040260200160405190810160405280929190818152602001828054610632906128f9565b801561067f5780601f106106545761010080835404028352916020019161067f565b820191906000526020600020905b81548152906001019060200180831161066257829003601f168201915b5050505050905090565b60008061069461100f565b90506106a1818585611017565b600191505092915050565b6000600354905090565b6000806106c161100f565b90506106ce8582856111e2565b6106d985858561126e565b60019150509392505050565b600060076000838152602001908152602001600020600101549050919050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b610732826106e5565b6107438161073e61100f565b6114f2565b61074d838361158f565b505050565b60006012905090565b61076361100f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c790612690565b60405180910390fd5b6107da8282611670565b5050565b6000806107e961100f565b905061087d818585600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610878919061272d565b611017565b600191505092915050565b6108b27f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610b6b565b6108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e890612650565b60405180910390fd5b6108f9611752565b565b6109257f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84833610b6b565b610964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095b906125b0565b60405180910390fd5b61096d816117f4565b50565b6000600660009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109d861100f565b73ffffffffffffffffffffffffffffffffffffffff166109f6610b42565b73ffffffffffffffffffffffffffffffffffffffff1614610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a43906125d0565b60405180910390fd5b610a566000611808565b565b610a827f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84833610b6b565b610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab8906125b0565b60405180910390fd5b610acb82826118cc565b5050565b610af97f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610b6b565b610b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2f90612650565b60405180910390fd5b610b406118ec565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060058054610be5906128f9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c11906128f9565b8015610c5e5780601f10610c3357610100808354040283529160200191610c5e565b820191906000526020600020905b815481529060010190602001808311610c4157829003601f168201915b5050505050905090565b6000801b81565b600080610c7a61100f565b90506000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3790612670565b60405180910390fd5b610d4d8286868403611017565b60019250505092915050565b600080610d6461100f565b9050610d7181858561126e565b600191505092915050565b610d85826106e5565b610d9681610d9161100f565b6114f2565b610da08383611670565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610e5861100f565b73ffffffffffffffffffffffffffffffffffffffff16610e76610b42565b73ffffffffffffffffffffffffffffffffffffffff1614610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec3906125d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3390612510565b60405180910390fd5b610f4581611808565b50565b610f53838383610fa0565b610f5b610970565b15610f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f92906126b0565b60405180910390fd5b505050565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90612630565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90612530565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111d591906126d0565b60405180910390a3505050565b60006111ee8484610da5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611268578181101561125a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125190612550565b60405180910390fd5b6112678484848403611017565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d590612610565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561134e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611345906124b0565b60405180910390fd5b61135983838361198f565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d790612570565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611475919061272d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114d991906126d0565b60405180910390a36114ec84848461199f565b50505050565b6114fc8282610b6b565b61158b576115218173ffffffffffffffffffffffffffffffffffffffff1660146119a4565b61152f8360001c60206119a4565b6040516020016115409291906123e3565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611582919061246e565b60405180910390fd5b5050565b6115998282610b6b565b61166c5760016007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061161161100f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61167a8282610b6b565b1561174e5760006007600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116f361100f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b61175a610970565b611799576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611790906124d0565b60405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6117dd61100f565b6040516117ea919061241d565b60405180910390a1565b6118056117ff61100f565b82611c9e565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6118de826118d861100f565b836111e2565b6118e88282611c9e565b5050565b6118f4610970565b15611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b90612590565b60405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861197861100f565b604051611985919061241d565b60405180910390a1565b61199a838383610f48565b505050565b505050565b6060600060028360026119b79190612783565b6119c1919061272d565b67ffffffffffffffff811115611a00577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611a325781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611a90577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611b1a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611b5a9190612783565b611b64919061272d565b90505b6001811115611c50577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611bcc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110611c09577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611c49906128cf565b9050611b67565b5060008414611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90612490565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d05906125f0565b60405180910390fd5b611d1a8260008361198f565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d98906124f0565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160036000828254611df991906127dd565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e5e91906126d0565b60405180910390a3611e728360008461199f565b505050565b600081359050611e8681612e70565b92915050565b600081359050611e9b81612e87565b92915050565b600081359050611eb081612e9e565b92915050565b600081359050611ec581612eb5565b92915050565b600060208284031215611edd57600080fd5b6000611eeb84828501611e77565b91505092915050565b60008060408385031215611f0757600080fd5b6000611f1585828601611e77565b9250506020611f2685828601611e77565b9150509250929050565b600080600060608486031215611f4557600080fd5b6000611f5386828701611e77565b9350506020611f6486828701611e77565b9250506040611f7586828701611eb6565b9150509250925092565b60008060408385031215611f9257600080fd5b6000611fa085828601611e77565b9250506020611fb185828601611eb6565b9150509250929050565b600060208284031215611fcd57600080fd5b6000611fdb84828501611e8c565b91505092915050565b60008060408385031215611ff757600080fd5b600061200585828601611e8c565b925050602061201685828601611e77565b9150509250929050565b60006020828403121561203257600080fd5b600061204084828501611ea1565b91505092915050565b60006020828403121561205b57600080fd5b600061206984828501611eb6565b91505092915050565b61207b81612811565b82525050565b61208a81612823565b82525050565b6120998161282f565b82525050565b60006120aa82612706565b6120b48185612711565b93506120c481856020860161289c565b6120cd81612989565b840191505092915050565b60006120e382612706565b6120ed8185612722565b93506120fd81856020860161289c565b80840191505092915050565b6000612116602083612711565b91506121218261299a565b602082019050919050565b6000612139602383612711565b9150612144826129c3565b604082019050919050565b600061215c601483612711565b915061216782612a12565b602082019050919050565b600061217f602283612711565b915061218a82612a3b565b604082019050919050565b60006121a2602683612711565b91506121ad82612a8a565b604082019050919050565b60006121c5602283612711565b91506121d082612ad9565b604082019050919050565b60006121e8601d83612711565b91506121f382612b28565b602082019050919050565b600061220b602683612711565b915061221682612b51565b604082019050919050565b600061222e601083612711565b915061223982612ba0565b602082019050919050565b6000612251601683612711565b915061225c82612bc9565b602082019050919050565b6000612274602083612711565b915061227f82612bf2565b602082019050919050565b6000612297602183612711565b91506122a282612c1b565b604082019050919050565b60006122ba602583612711565b91506122c582612c6a565b604082019050919050565b60006122dd602483612711565b91506122e882612cb9565b604082019050919050565b6000612300601783612722565b915061230b82612d08565b601782019050919050565b6000612323601683612711565b915061232e82612d31565b602082019050919050565b6000612346602583612711565b915061235182612d5a565b604082019050919050565b6000612369601183612722565b915061237482612da9565b601182019050919050565b600061238c602f83612711565b915061239782612dd2565b604082019050919050565b60006123af602a83612711565b91506123ba82612e21565b604082019050919050565b6123ce81612885565b82525050565b6123dd8161288f565b82525050565b60006123ee826122f3565b91506123fa82856120d8565b91506124058261235c565b915061241182846120d8565b91508190509392505050565b60006020820190506124326000830184612072565b92915050565b600060208201905061244d6000830184612081565b92915050565b60006020820190506124686000830184612090565b92915050565b60006020820190508181036000830152612488818461209f565b905092915050565b600060208201905081810360008301526124a981612109565b9050919050565b600060208201905081810360008301526124c98161212c565b9050919050565b600060208201905081810360008301526124e98161214f565b9050919050565b6000602082019050818103600083015261250981612172565b9050919050565b6000602082019050818103600083015261252981612195565b9050919050565b60006020820190508181036000830152612549816121b8565b9050919050565b60006020820190508181036000830152612569816121db565b9050919050565b60006020820190508181036000830152612589816121fe565b9050919050565b600060208201905081810360008301526125a981612221565b9050919050565b600060208201905081810360008301526125c981612244565b9050919050565b600060208201905081810360008301526125e981612267565b9050919050565b600060208201905081810360008301526126098161228a565b9050919050565b60006020820190508181036000830152612629816122ad565b9050919050565b60006020820190508181036000830152612649816122d0565b9050919050565b6000602082019050818103600083015261266981612316565b9050919050565b6000602082019050818103600083015261268981612339565b9050919050565b600060208201905081810360008301526126a98161237f565b9050919050565b600060208201905081810360008301526126c9816123a2565b9050919050565b60006020820190506126e560008301846123c5565b92915050565b600060208201905061270060008301846123d4565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061273882612885565b915061274383612885565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127785761277761292b565b5b828201905092915050565b600061278e82612885565b915061279983612885565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127d2576127d161292b565b5b828202905092915050565b60006127e882612885565b91506127f383612885565b9250828210156128065761280561292b565b5b828203905092915050565b600061281c82612865565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156128ba57808201518184015260208101905061289f565b838111156128c9576000848401525b50505050565b60006128da82612885565b915060008214156128ee576128ed61292b565b5b600182039050919050565b6000600282049050600182168061291157607f821691505b602082108114156129255761292461295a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f43616c6c6572206973206e6f742061206275726e657200000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f43616c6c6572206973206e6f7420612070617573657200000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b612e7981612811565b8114612e8457600080fd5b50565b612e908161282f565b8114612e9b57600080fd5b50565b612ea781612839565b8114612eb257600080fd5b50565b612ebe81612885565b8114612ec957600080fd5b5056fea2646970667358221220de5ecaeebdd468e23b2db7f8d91636287216eefed6ababd666e0f062c3c53f0564736f6c63430008020033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000002540be400000000000000000000000000000000000000000000000000000000000000000b53706f72747a636861696e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000353504e0000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Sportzchain
Arg [1] : _symbol (string): SPN
Arg [2] : _decimals (uint8): 18
Arg [3] : _totalSupply (uint256): 10000000000
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 00000000000000000000000000000000000000000000000000000002540be400
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [5] : 53706f72747a636861696e000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 53504e0000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
39610:3221:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34268:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6768:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9119:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7888:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9900:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35695:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39699:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36088:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7730:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37136:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10604:240;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42750:78;;;:::i;:::-;;41257:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22401:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8059:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19280:103;;;:::i;:::-;;41753:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42578:74;;;:::i;:::-;;18629:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34564:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6987:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33655:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11347:438;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8392:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36480:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8648:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39768:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19538:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34268:204;34353:4;34392:32;34377:47;;;:11;:47;;;;:87;;;;34428:36;34452:11;34428:23;:36::i;:::-;34377:87;34370:94;;34268:204;;;:::o;6768:100::-;6822:13;6855:5;6848:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6768:100;:::o;9119:201::-;9202:4;9219:13;9235:12;:10;:12::i;:::-;9219:28;;9258:32;9267:5;9274:7;9283:6;9258:8;:32::i;:::-;9308:4;9301:11;;;9119:201;;;;:::o;7888:108::-;7949:7;7976:12;;7969:19;;7888:108;:::o;9900:295::-;10031:4;10048:15;10066:12;:10;:12::i;:::-;10048:30;;10089:38;10105:4;10111:7;10120:6;10089:15;:38::i;:::-;10138:27;10148:4;10154:2;10158:6;10138:9;:27::i;:::-;10183:4;10176:11;;;9900:295;;;;;:::o;35695:131::-;35769:7;35796:6;:12;35803:4;35796:12;;;;;;;;;;;:22;;;35789:29;;35695:131;;;:::o;39699:62::-;39737:24;39699:62;:::o;36088:147::-;36171:18;36184:4;36171:12;:18::i;:::-;34146:30;34157:4;34163:12;:10;:12::i;:::-;34146:10;:30::i;:::-;36202:25:::1;36213:4;36219:7;36202:10;:25::i;:::-;36088:147:::0;;;:::o;7730:93::-;7788:5;7813:2;7806:9;;7730:93;:::o;37136:218::-;37243:12;:10;:12::i;:::-;37232:23;;:7;:23;;;37224:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;37320:26;37332:4;37338:7;37320:11;:26::i;:::-;37136:218;;:::o;10604:240::-;10692:4;10709:13;10725:12;:10;:12::i;:::-;10709:28;;10748:66;10757:5;10764:7;10803:10;10773:11;:18;10785:5;10773:18;;;;;;;;;;;;;;;:27;10792:7;10773:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;10748:8;:66::i;:::-;10832:4;10825:11;;;10604:240;;;;:::o;42750:78::-;40180:32;39806:24;40201:10;40180:7;:32::i;:::-;40172:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42810:10:::1;:8;:10::i;:::-;42750:78::o:0;41257:143::-;39966:32;39737:24;39987:10;39966:7;:32::i;:::-;39958:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;41373:19:::1;41384:7;41373:10;:19::i;:::-;41257:143:::0;:::o;22401:86::-;22448:4;22472:7;;;;;;;;;;;22465:14;;22401:86;:::o;8059:127::-;8133:7;8160:9;:18;8170:7;8160:18;;;;;;;;;;;;;;;;8153:25;;8059:127;;;:::o;19280:103::-;18860:12;:10;:12::i;:::-;18849:23;;:7;:5;:7::i;:::-;:23;;;18841:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19345:30:::1;19372:1;19345:18;:30::i;:::-;19280:103::o:0;41753:186::-;39966:32;39737:24;39987:10;39966:7;:32::i;:::-;39958:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;41899:32:::1;41914:7;41923;41899:14;:32::i;:::-;41753:186:::0;;:::o;42578:74::-;40180:32;39806:24;40201:10;40180:7;:32::i;:::-;40172:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42636:8:::1;:6;:8::i;:::-;42578:74::o:0;18629:87::-;18675:7;18702:6;;;;;;;;;;;18695:13;;18629:87;:::o;34564:147::-;34650:4;34674:6;:12;34681:4;34674:12;;;;;;;;;;;:20;;:29;34695:7;34674:29;;;;;;;;;;;;;;;;;;;;;;;;;34667:36;;34564:147;;;;:::o;6987:104::-;7043:13;7076:7;7069:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6987:104;:::o;33655:49::-;33700:4;33655:49;;;:::o;11347:438::-;11440:4;11457:13;11473:12;:10;:12::i;:::-;11457:28;;11496:24;11523:11;:18;11535:5;11523:18;;;;;;;;;;;;;;;:27;11542:7;11523:27;;;;;;;;;;;;;;;;11496:54;;11589:15;11569:16;:35;;11561:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11682:60;11691:5;11698:7;11726:15;11707:16;:34;11682:8;:60::i;:::-;11773:4;11766:11;;;;11347:438;;;;:::o;8392:193::-;8471:4;8488:13;8504:12;:10;:12::i;:::-;8488:28;;8527;8537:5;8544:2;8548:6;8527:9;:28::i;:::-;8573:4;8566:11;;;8392:193;;;;:::o;36480:149::-;36564:18;36577:4;36564:12;:18::i;:::-;34146:30;34157:4;34163:12;:10;:12::i;:::-;34146:10;:30::i;:::-;36595:26:::1;36607:4;36613:7;36595:11;:26::i;:::-;36480:149:::0;;;:::o;8648:151::-;8737:7;8764:11;:18;8776:5;8764:18;;;;;;;;;;;;;;;:27;8783:7;8764:27;;;;;;;;;;;;;;;;8757:34;;8648:151;;;;:::o;39768:62::-;39806:24;39768:62;:::o;19538:201::-;18860:12;:10;:12::i;:::-;18849:23;;:7;:5;:7::i;:::-;:23;;;18841:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19647:1:::1;19627:22;;:8;:22;;;;19619:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;19703:28;19722:8;19703:18;:28::i;:::-;19538:201:::0;:::o;24261:272::-;24404:44;24431:4;24437:2;24441:6;24404:26;:44::i;:::-;24470:8;:6;:8::i;:::-;24469:9;24461:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24261:272;;;:::o;16703:125::-;;;;:::o;31509:157::-;31594:4;31633:25;31618:40;;;:11;:40;;;;31611:47;;31509:157;;;:::o;4404:98::-;4457:7;4484:10;4477:17;;4404:98;:::o;14983:380::-;15136:1;15119:19;;:5;:19;;;;15111:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15217:1;15198:21;;:7;:21;;;;15190:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15301:6;15271:11;:18;15283:5;15271:18;;;;;;;;;;;;;;;:27;15290:7;15271:27;;;;;;;;;;;;;;;:36;;;;15339:7;15323:32;;15332:5;15323:32;;;15348:6;15323:32;;;;;;:::i;:::-;;;;;;;;14983:380;;;:::o;15650:453::-;15785:24;15812:25;15822:5;15829:7;15812:9;:25::i;:::-;15785:52;;15872:17;15852:16;:37;15848:248;;15934:6;15914:16;:26;;15906:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16018:51;16027:5;16034:7;16062:6;16043:16;:25;16018:8;:51::i;:::-;15848:248;15650:453;;;;:::o;12264:671::-;12411:1;12395:18;;:4;:18;;;;12387:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12488:1;12474:16;;:2;:16;;;;12466:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12543:38;12564:4;12570:2;12574:6;12543:20;:38::i;:::-;12594:19;12616:9;:15;12626:4;12616:15;;;;;;;;;;;;;;;;12594:37;;12665:6;12650:11;:21;;12642:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12782:6;12768:11;:20;12750:9;:15;12760:4;12750:15;;;;;;;;;;;;;;;:38;;;;12827:6;12810:9;:13;12820:2;12810:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;12866:2;12851:26;;12860:4;12851:26;;;12870:6;12851:26;;;;;;:::i;:::-;;;;;;;;12890:37;12910:4;12916:2;12920:6;12890:19;:37::i;:::-;12264:671;;;;:::o;35001:505::-;35090:22;35098:4;35104:7;35090;:22::i;:::-;35085:414;;35278:41;35306:7;35278:41;;35316:2;35278:19;:41::i;:::-;35392:38;35420:4;35412:13;;35427:2;35392:19;:38::i;:::-;35183:270;;;;;;;;;:::i;:::-;;;;;;;;;;;;;35129:358;;;;;;;;;;;:::i;:::-;;;;;;;;35085:414;35001:505;;:::o;38637:238::-;38721:22;38729:4;38735:7;38721;:22::i;:::-;38716:152;;38792:4;38760:6;:12;38767:4;38760:12;;;;;;;;;;;:20;;:29;38781:7;38760:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;38843:12;:10;:12::i;:::-;38816:40;;38834:7;38816:40;;38828:4;38816:40;;;;;;;;;;38716:152;38637:238;;:::o;39007:239::-;39091:22;39099:4;39105:7;39091;:22::i;:::-;39087:152;;;39162:5;39130:6;:12;39137:4;39130:12;;;;;;;;;;;:20;;:29;39151:7;39130:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;39214:12;:10;:12::i;:::-;39187:40;;39205:7;39187:40;;39199:4;39187:40;;;;;;;;;;39087:152;39007:239;;:::o;23460:120::-;23004:8;:6;:8::i;:::-;22996:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;23529:5:::1;23519:7;;:15;;;;;;;;;;;;;;;;;;23550:22;23559:12;:10;:12::i;:::-;23550:22;;;;;;:::i;:::-;;;;;;;;23460:120::o:0;20684:91::-;20740:27;20746:12;:10;:12::i;:::-;20760:6;20740:5;:27::i;:::-;20684:91;:::o;19899:191::-;19973:16;19992:6;;;;;;;;;;;19973:25;;20018:8;20009:6;;:17;;;;;;;;;;;;;;;;;;20073:8;20042:40;;20063:8;20042:40;;;;;;;;;;;;19899:191;;:::o;21094:164::-;21171:46;21187:7;21196:12;:10;:12::i;:::-;21210:6;21171:15;:46::i;:::-;21228:22;21234:7;21243:6;21228:5;:22::i;:::-;21094:164;;:::o;23201:118::-;22727:8;:6;:8::i;:::-;22726:9;22718:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23271:4:::1;23261:7;;:14;;;;;;;;;;;;;;;;;;23291:20;23298:12;:10;:12::i;:::-;23291:20;;;;;;:::i;:::-;;;;;;;;23201:118::o:0;42251:231::-;42430:44;42457:4;42463:2;42467:6;42430:26;:44::i;:::-;42251:231;;;:::o;17432:124::-;;;;:::o;29259:451::-;29334:13;29360:19;29405:1;29396:6;29392:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;29382:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29360:47;;29418:15;:6;29425:1;29418:9;;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;29444;:6;29451:1;29444:9;;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;29475:9;29500:1;29491:6;29487:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;29475:26;;29470:135;29507:1;29503;:5;29470:135;;;29542:12;29563:3;29555:5;:11;29542:25;;;;;;;;;;;;;;;;;;29530:6;29537:1;29530:9;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;29592:1;29582:11;;;;;29510:3;;;;:::i;:::-;;;29470:135;;;;29632:1;29623:5;:10;29615:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;29695:6;29681:21;;;29259:451;;;;:::o;13954:591::-;14057:1;14038:21;;:7;:21;;;;14030:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14110:49;14131:7;14148:1;14152:6;14110:20;:49::i;:::-;14172:22;14197:9;:18;14207:7;14197:18;;;;;;;;;;;;;;;;14172:43;;14252:6;14234:14;:24;;14226:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14371:6;14354:14;:23;14333:9;:18;14343:7;14333:18;;;;;;;;;;;;;;;:44;;;;14415:6;14399:12;;:22;;;;;;;:::i;:::-;;;;;;;;14465:1;14439:37;;14448:7;14439:37;;;14469:6;14439:37;;;;;;:::i;:::-;;;;;;;;14489:48;14509:7;14526:1;14530:6;14489:19;:48::i;:::-;13954:591;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:137::-;;380:6;367:20;358:29;;396:32;422:5;396:32;:::i;:::-;348:86;;;;:::o;440:139::-;;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:262::-;;693:2;681:9;672:7;668:23;664:32;661:2;;;709:1;706;699:12;661:2;752:1;777:53;822:7;813:6;802:9;798:22;777:53;:::i;:::-;767:63;;723:117;651:196;;;;:::o;853:407::-;;;978:2;966:9;957:7;953:23;949:32;946:2;;;994:1;991;984:12;946:2;1037:1;1062:53;1107:7;1098:6;1087:9;1083:22;1062:53;:::i;:::-;1052:63;;1008:117;1164:2;1190:53;1235:7;1226:6;1215:9;1211:22;1190:53;:::i;:::-;1180:63;;1135:118;936:324;;;;;:::o;1266:552::-;;;;1408:2;1396:9;1387:7;1383:23;1379:32;1376:2;;;1424:1;1421;1414:12;1376:2;1467:1;1492:53;1537:7;1528:6;1517:9;1513:22;1492:53;:::i;:::-;1482:63;;1438:117;1594:2;1620:53;1665:7;1656:6;1645:9;1641:22;1620:53;:::i;:::-;1610:63;;1565:118;1722:2;1748:53;1793:7;1784:6;1773:9;1769:22;1748:53;:::i;:::-;1738:63;;1693:118;1366:452;;;;;:::o;1824:407::-;;;1949:2;1937:9;1928:7;1924:23;1920:32;1917:2;;;1965:1;1962;1955:12;1917:2;2008:1;2033:53;2078:7;2069:6;2058:9;2054:22;2033:53;:::i;:::-;2023:63;;1979:117;2135:2;2161:53;2206:7;2197:6;2186:9;2182:22;2161:53;:::i;:::-;2151:63;;2106:118;1907:324;;;;;:::o;2237:262::-;;2345:2;2333:9;2324:7;2320:23;2316:32;2313:2;;;2361:1;2358;2351:12;2313:2;2404:1;2429:53;2474:7;2465:6;2454:9;2450:22;2429:53;:::i;:::-;2419:63;;2375:117;2303:196;;;;:::o;2505:407::-;;;2630:2;2618:9;2609:7;2605:23;2601:32;2598:2;;;2646:1;2643;2636:12;2598:2;2689:1;2714:53;2759:7;2750:6;2739:9;2735:22;2714:53;:::i;:::-;2704:63;;2660:117;2816:2;2842:53;2887:7;2878:6;2867:9;2863:22;2842:53;:::i;:::-;2832:63;;2787:118;2588:324;;;;;:::o;2918:260::-;;3025:2;3013:9;3004:7;3000:23;2996:32;2993:2;;;3041:1;3038;3031:12;2993:2;3084:1;3109:52;3153:7;3144:6;3133:9;3129:22;3109:52;:::i;:::-;3099:62;;3055:116;2983:195;;;;:::o;3184:262::-;;3292:2;3280:9;3271:7;3267:23;3263:32;3260:2;;;3308:1;3305;3298:12;3260:2;3351:1;3376:53;3421:7;3412:6;3401:9;3397:22;3376:53;:::i;:::-;3366:63;;3322:117;3250:196;;;;:::o;3452:118::-;3539:24;3557:5;3539:24;:::i;:::-;3534:3;3527:37;3517:53;;:::o;3576:109::-;3657:21;3672:5;3657:21;:::i;:::-;3652:3;3645:34;3635:50;;:::o;3691:118::-;3778:24;3796:5;3778:24;:::i;:::-;3773:3;3766:37;3756:53;;:::o;3815:364::-;;3931:39;3964:5;3931:39;:::i;:::-;3986:71;4050:6;4045:3;3986:71;:::i;:::-;3979:78;;4066:52;4111:6;4106:3;4099:4;4092:5;4088:16;4066:52;:::i;:::-;4143:29;4165:6;4143:29;:::i;:::-;4138:3;4134:39;4127:46;;3907:272;;;;;:::o;4185:377::-;;4319:39;4352:5;4319:39;:::i;:::-;4374:89;4456:6;4451:3;4374:89;:::i;:::-;4367:96;;4472:52;4517:6;4512:3;4505:4;4498:5;4494:16;4472:52;:::i;:::-;4549:6;4544:3;4540:16;4533:23;;4295:267;;;;;:::o;4568:366::-;;4731:67;4795:2;4790:3;4731:67;:::i;:::-;4724:74;;4807:93;4896:3;4807:93;:::i;:::-;4925:2;4920:3;4916:12;4909:19;;4714:220;;;:::o;4940:366::-;;5103:67;5167:2;5162:3;5103:67;:::i;:::-;5096:74;;5179:93;5268:3;5179:93;:::i;:::-;5297:2;5292:3;5288:12;5281:19;;5086:220;;;:::o;5312:366::-;;5475:67;5539:2;5534:3;5475:67;:::i;:::-;5468:74;;5551:93;5640:3;5551:93;:::i;:::-;5669:2;5664:3;5660:12;5653:19;;5458:220;;;:::o;5684:366::-;;5847:67;5911:2;5906:3;5847:67;:::i;:::-;5840:74;;5923:93;6012:3;5923:93;:::i;:::-;6041:2;6036:3;6032:12;6025:19;;5830:220;;;:::o;6056:366::-;;6219:67;6283:2;6278:3;6219:67;:::i;:::-;6212:74;;6295:93;6384:3;6295:93;:::i;:::-;6413:2;6408:3;6404:12;6397:19;;6202:220;;;:::o;6428:366::-;;6591:67;6655:2;6650:3;6591:67;:::i;:::-;6584:74;;6667:93;6756:3;6667:93;:::i;:::-;6785:2;6780:3;6776:12;6769:19;;6574:220;;;:::o;6800:366::-;;6963:67;7027:2;7022:3;6963:67;:::i;:::-;6956:74;;7039:93;7128:3;7039:93;:::i;:::-;7157:2;7152:3;7148:12;7141:19;;6946:220;;;:::o;7172:366::-;;7335:67;7399:2;7394:3;7335:67;:::i;:::-;7328:74;;7411:93;7500:3;7411:93;:::i;:::-;7529:2;7524:3;7520:12;7513:19;;7318:220;;;:::o;7544:366::-;;7707:67;7771:2;7766:3;7707:67;:::i;:::-;7700:74;;7783:93;7872:3;7783:93;:::i;:::-;7901:2;7896:3;7892:12;7885:19;;7690:220;;;:::o;7916:366::-;;8079:67;8143:2;8138:3;8079:67;:::i;:::-;8072:74;;8155:93;8244:3;8155:93;:::i;:::-;8273:2;8268:3;8264:12;8257:19;;8062:220;;;:::o;8288:366::-;;8451:67;8515:2;8510:3;8451:67;:::i;:::-;8444:74;;8527:93;8616:3;8527:93;:::i;:::-;8645:2;8640:3;8636:12;8629:19;;8434:220;;;:::o;8660:366::-;;8823:67;8887:2;8882:3;8823:67;:::i;:::-;8816:74;;8899:93;8988:3;8899:93;:::i;:::-;9017:2;9012:3;9008:12;9001:19;;8806:220;;;:::o;9032:366::-;;9195:67;9259:2;9254:3;9195:67;:::i;:::-;9188:74;;9271:93;9360:3;9271:93;:::i;:::-;9389:2;9384:3;9380:12;9373:19;;9178:220;;;:::o;9404:366::-;;9567:67;9631:2;9626:3;9567:67;:::i;:::-;9560:74;;9643:93;9732:3;9643:93;:::i;:::-;9761:2;9756:3;9752:12;9745:19;;9550:220;;;:::o;9776:402::-;;9957:85;10039:2;10034:3;9957:85;:::i;:::-;9950:92;;10051:93;10140:3;10051:93;:::i;:::-;10169:2;10164:3;10160:12;10153:19;;9940:238;;;:::o;10184:366::-;;10347:67;10411:2;10406:3;10347:67;:::i;:::-;10340:74;;10423:93;10512:3;10423:93;:::i;:::-;10541:2;10536:3;10532:12;10525:19;;10330:220;;;:::o;10556:366::-;;10719:67;10783:2;10778:3;10719:67;:::i;:::-;10712:74;;10795:93;10884:3;10795:93;:::i;:::-;10913:2;10908:3;10904:12;10897:19;;10702:220;;;:::o;10928:402::-;;11109:85;11191:2;11186:3;11109:85;:::i;:::-;11102:92;;11203:93;11292:3;11203:93;:::i;:::-;11321:2;11316:3;11312:12;11305:19;;11092:238;;;:::o;11336:366::-;;11499:67;11563:2;11558:3;11499:67;:::i;:::-;11492:74;;11575:93;11664:3;11575:93;:::i;:::-;11693:2;11688:3;11684:12;11677:19;;11482:220;;;:::o;11708:366::-;;11871:67;11935:2;11930:3;11871:67;:::i;:::-;11864:74;;11947:93;12036:3;11947:93;:::i;:::-;12065:2;12060:3;12056:12;12049:19;;11854:220;;;:::o;12080:118::-;12167:24;12185:5;12167:24;:::i;:::-;12162:3;12155:37;12145:53;;:::o;12204:112::-;12287:22;12303:5;12287:22;:::i;:::-;12282:3;12275:35;12265:51;;:::o;12322:967::-;;12726:148;12870:3;12726:148;:::i;:::-;12719:155;;12891:95;12982:3;12973:6;12891:95;:::i;:::-;12884:102;;13003:148;13147:3;13003:148;:::i;:::-;12996:155;;13168:95;13259:3;13250:6;13168:95;:::i;:::-;13161:102;;13280:3;13273:10;;12708:581;;;;;:::o;13295:222::-;;13426:2;13415:9;13411:18;13403:26;;13439:71;13507:1;13496:9;13492:17;13483:6;13439:71;:::i;:::-;13393:124;;;;:::o;13523:210::-;;13648:2;13637:9;13633:18;13625:26;;13661:65;13723:1;13712:9;13708:17;13699:6;13661:65;:::i;:::-;13615:118;;;;:::o;13739:222::-;;13870:2;13859:9;13855:18;13847:26;;13883:71;13951:1;13940:9;13936:17;13927:6;13883:71;:::i;:::-;13837:124;;;;:::o;13967:313::-;;14118:2;14107:9;14103:18;14095:26;;14167:9;14161:4;14157:20;14153:1;14142:9;14138:17;14131:47;14195:78;14268:4;14259:6;14195:78;:::i;:::-;14187:86;;14085:195;;;;:::o;14286:419::-;;14490:2;14479:9;14475:18;14467:26;;14539:9;14533:4;14529:20;14525:1;14514:9;14510:17;14503:47;14567:131;14693:4;14567:131;:::i;:::-;14559:139;;14457:248;;;:::o;14711:419::-;;14915:2;14904:9;14900:18;14892:26;;14964:9;14958:4;14954:20;14950:1;14939:9;14935:17;14928:47;14992:131;15118:4;14992:131;:::i;:::-;14984:139;;14882:248;;;:::o;15136:419::-;;15340:2;15329:9;15325:18;15317:26;;15389:9;15383:4;15379:20;15375:1;15364:9;15360:17;15353:47;15417:131;15543:4;15417:131;:::i;:::-;15409:139;;15307:248;;;:::o;15561:419::-;;15765:2;15754:9;15750:18;15742:26;;15814:9;15808:4;15804:20;15800:1;15789:9;15785:17;15778:47;15842:131;15968:4;15842:131;:::i;:::-;15834:139;;15732:248;;;:::o;15986:419::-;;16190:2;16179:9;16175:18;16167:26;;16239:9;16233:4;16229:20;16225:1;16214:9;16210:17;16203:47;16267:131;16393:4;16267:131;:::i;:::-;16259:139;;16157:248;;;:::o;16411:419::-;;16615:2;16604:9;16600:18;16592:26;;16664:9;16658:4;16654:20;16650:1;16639:9;16635:17;16628:47;16692:131;16818:4;16692:131;:::i;:::-;16684:139;;16582:248;;;:::o;16836:419::-;;17040:2;17029:9;17025:18;17017:26;;17089:9;17083:4;17079:20;17075:1;17064:9;17060:17;17053:47;17117:131;17243:4;17117:131;:::i;:::-;17109:139;;17007:248;;;:::o;17261:419::-;;17465:2;17454:9;17450:18;17442:26;;17514:9;17508:4;17504:20;17500:1;17489:9;17485:17;17478:47;17542:131;17668:4;17542:131;:::i;:::-;17534:139;;17432:248;;;:::o;17686:419::-;;17890:2;17879:9;17875:18;17867:26;;17939:9;17933:4;17929:20;17925:1;17914:9;17910:17;17903:47;17967:131;18093:4;17967:131;:::i;:::-;17959:139;;17857:248;;;:::o;18111:419::-;;18315:2;18304:9;18300:18;18292:26;;18364:9;18358:4;18354:20;18350:1;18339:9;18335:17;18328:47;18392:131;18518:4;18392:131;:::i;:::-;18384:139;;18282:248;;;:::o;18536:419::-;;18740:2;18729:9;18725:18;18717:26;;18789:9;18783:4;18779:20;18775:1;18764:9;18760:17;18753:47;18817:131;18943:4;18817:131;:::i;:::-;18809:139;;18707:248;;;:::o;18961:419::-;;19165:2;19154:9;19150:18;19142:26;;19214:9;19208:4;19204:20;19200:1;19189:9;19185:17;19178:47;19242:131;19368:4;19242:131;:::i;:::-;19234:139;;19132:248;;;:::o;19386:419::-;;19590:2;19579:9;19575:18;19567:26;;19639:9;19633:4;19629:20;19625:1;19614:9;19610:17;19603:47;19667:131;19793:4;19667:131;:::i;:::-;19659:139;;19557:248;;;:::o;19811:419::-;;20015:2;20004:9;20000:18;19992:26;;20064:9;20058:4;20054:20;20050:1;20039:9;20035:17;20028:47;20092:131;20218:4;20092:131;:::i;:::-;20084:139;;19982:248;;;:::o;20236:419::-;;20440:2;20429:9;20425:18;20417:26;;20489:9;20483:4;20479:20;20475:1;20464:9;20460:17;20453:47;20517:131;20643:4;20517:131;:::i;:::-;20509:139;;20407:248;;;:::o;20661:419::-;;20865:2;20854:9;20850:18;20842:26;;20914:9;20908:4;20904:20;20900:1;20889:9;20885:17;20878:47;20942:131;21068:4;20942:131;:::i;:::-;20934:139;;20832:248;;;:::o;21086:419::-;;21290:2;21279:9;21275:18;21267:26;;21339:9;21333:4;21329:20;21325:1;21314:9;21310:17;21303:47;21367:131;21493:4;21367:131;:::i;:::-;21359:139;;21257:248;;;:::o;21511:419::-;;21715:2;21704:9;21700:18;21692:26;;21764:9;21758:4;21754:20;21750:1;21739:9;21735:17;21728:47;21792:131;21918:4;21792:131;:::i;:::-;21784:139;;21682:248;;;:::o;21936:222::-;;22067:2;22056:9;22052:18;22044:26;;22080:71;22148:1;22137:9;22133:17;22124:6;22080:71;:::i;:::-;22034:124;;;;:::o;22164:214::-;;22291:2;22280:9;22276:18;22268:26;;22304:67;22368:1;22357:9;22353:17;22344:6;22304:67;:::i;:::-;22258:120;;;;:::o;22384:99::-;;22470:5;22464:12;22454:22;;22443:40;;;:::o;22489:169::-;;22607:6;22602:3;22595:19;22647:4;22642:3;22638:14;22623:29;;22585:73;;;;:::o;22664:148::-;;22803:3;22788:18;;22778:34;;;;:::o;22818:305::-;;22877:20;22895:1;22877:20;:::i;:::-;22872:25;;22911:20;22929:1;22911:20;:::i;:::-;22906:25;;23065:1;22997:66;22993:74;22990:1;22987:81;22984:2;;;23071:18;;:::i;:::-;22984:2;23115:1;23112;23108:9;23101:16;;22862:261;;;;:::o;23129:348::-;;23192:20;23210:1;23192:20;:::i;:::-;23187:25;;23226:20;23244:1;23226:20;:::i;:::-;23221:25;;23414:1;23346:66;23342:74;23339:1;23336:81;23331:1;23324:9;23317:17;23313:105;23310:2;;;23421:18;;:::i;:::-;23310:2;23469:1;23466;23462:9;23451:20;;23177:300;;;;:::o;23483:191::-;;23543:20;23561:1;23543:20;:::i;:::-;23538:25;;23577:20;23595:1;23577:20;:::i;:::-;23572:25;;23616:1;23613;23610:8;23607:2;;;23621:18;;:::i;:::-;23607:2;23666:1;23663;23659:9;23651:17;;23528:146;;;;:::o;23680:96::-;;23746:24;23764:5;23746:24;:::i;:::-;23735:35;;23725:51;;;:::o;23782:90::-;;23859:5;23852:13;23845:21;23834:32;;23824:48;;;:::o;23878:77::-;;23944:5;23933:16;;23923:32;;;:::o;23961:149::-;;24037:66;24030:5;24026:78;24015:89;;24005:105;;;:::o;24116:126::-;;24193:42;24186:5;24182:54;24171:65;;24161:81;;;:::o;24248:77::-;;24314:5;24303:16;;24293:32;;;:::o;24331:86::-;;24406:4;24399:5;24395:16;24384:27;;24374:43;;;:::o;24423:307::-;24491:1;24501:113;24515:6;24512:1;24509:13;24501:113;;;24600:1;24595:3;24591:11;24585:18;24581:1;24576:3;24572:11;24565:39;24537:2;24534:1;24530:10;24525:15;;24501:113;;;24632:6;24629:1;24626:13;24623:2;;;24712:1;24703:6;24698:3;24694:16;24687:27;24623:2;24472:258;;;;:::o;24736:171::-;;24798:24;24816:5;24798:24;:::i;:::-;24789:33;;24844:4;24837:5;24834:15;24831:2;;;24852:18;;:::i;:::-;24831:2;24899:1;24892:5;24888:13;24881:20;;24779:128;;;:::o;24913:320::-;;24994:1;24988:4;24984:12;24974:22;;25041:1;25035:4;25031:12;25062:18;25052:2;;25118:4;25110:6;25106:17;25096:27;;25052:2;25180;25172:6;25169:14;25149:18;25146:38;25143:2;;;25199:18;;:::i;:::-;25143:2;24964:269;;;;:::o;25239:180::-;25287:77;25284:1;25277:88;25384:4;25381:1;25374:15;25408:4;25405:1;25398:15;25425:180;25473:77;25470:1;25463:88;25570:4;25567:1;25560:15;25594:4;25591:1;25584:15;25611:102;;25703:2;25699:7;25694:2;25687:5;25683:14;25679:28;25669:38;;25659:54;;;:::o;25719:182::-;25859:34;25855:1;25847:6;25843:14;25836:58;25825:76;:::o;25907:222::-;26047:34;26043:1;26035:6;26031:14;26024:58;26116:5;26111:2;26103:6;26099:15;26092:30;26013:116;:::o;26135:170::-;26275:22;26271:1;26263:6;26259:14;26252:46;26241:64;:::o;26311:221::-;26451:34;26447:1;26439:6;26435:14;26428:58;26520:4;26515:2;26507:6;26503:15;26496:29;26417:115;:::o;26538:225::-;26678:34;26674:1;26666:6;26662:14;26655:58;26747:8;26742:2;26734:6;26730:15;26723:33;26644:119;:::o;26769:221::-;26909:34;26905:1;26897:6;26893:14;26886:58;26978:4;26973:2;26965:6;26961:15;26954:29;26875:115;:::o;26996:179::-;27136:31;27132:1;27124:6;27120:14;27113:55;27102:73;:::o;27181:225::-;27321:34;27317:1;27309:6;27305:14;27298:58;27390:8;27385:2;27377:6;27373:15;27366:33;27287:119;:::o;27412:166::-;27552:18;27548:1;27540:6;27536:14;27529:42;27518:60;:::o;27584:172::-;27724:24;27720:1;27712:6;27708:14;27701:48;27690:66;:::o;27762:182::-;27902:34;27898:1;27890:6;27886:14;27879:58;27868:76;:::o;27950:220::-;28090:34;28086:1;28078:6;28074:14;28067:58;28159:3;28154:2;28146:6;28142:15;28135:28;28056:114;:::o;28176:224::-;28316:34;28312:1;28304:6;28300:14;28293:58;28385:7;28380:2;28372:6;28368:15;28361:32;28282:118;:::o;28406:223::-;28546:34;28542:1;28534:6;28530:14;28523:58;28615:6;28610:2;28602:6;28598:15;28591:31;28512:117;:::o;28635:173::-;28775:25;28771:1;28763:6;28759:14;28752:49;28741:67;:::o;28814:172::-;28954:24;28950:1;28942:6;28938:14;28931:48;28920:66;:::o;28992:224::-;29132:34;29128:1;29120:6;29116:14;29109:58;29201:7;29196:2;29188:6;29184:15;29177:32;29098:118;:::o;29222:167::-;29362:19;29358:1;29350:6;29346:14;29339:43;29328:61;:::o;29395:234::-;29535:34;29531:1;29523:6;29519:14;29512:58;29604:17;29599:2;29591:6;29587:15;29580:42;29501:128;:::o;29635:229::-;29775:34;29771:1;29763:6;29759:14;29752:58;29844:12;29839:2;29831:6;29827:15;29820:37;29741:123;:::o;29870:122::-;29943:24;29961:5;29943:24;:::i;:::-;29936:5;29933:35;29923:2;;29982:1;29979;29972:12;29923:2;29913:79;:::o;29998:122::-;30071:24;30089:5;30071:24;:::i;:::-;30064:5;30061:35;30051:2;;30110:1;30107;30100:12;30051:2;30041:79;:::o;30126:120::-;30198:23;30215:5;30198:23;:::i;:::-;30191:5;30188:34;30178:2;;30236:1;30233;30226:12;30178:2;30168:78;:::o;30252:122::-;30325:24;30343:5;30325:24;:::i;:::-;30318:5;30315:35;30305:2;;30364:1;30361;30354:12;30305:2;30295:79;:::o
Swarm Source
ipfs://de5ecaeebdd468e23b2db7f8d91636287216eefed6ababd666e0f062c3c53f05
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.