Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
948,623.08 AKREP
Holders
2
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 2 Decimals)
Balance
3,156.48 AKREPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AKREPToken
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-10-05 */ // File: @openzeppelin/contracts/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/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/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/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/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/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 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 { 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 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 granted `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}. * ==== */ 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); } function _grantRole(bytes32 role, address account) private { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } function _revokeRole(bytes32 role, address account) private { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } // File: @openzeppelin/contracts/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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/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/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: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @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: contracts/AKREPToken.sol //SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract AKREPToken is ERC20, AccessControl { string private __name = "Antalyaspor Token"; string private __symbol = "AKREP"; uint8 private __decimals = 2; uint private __INITIAL_SUPPLY = 7777777700; bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE"); event Burned(address addr, uint256 amount); constructor() public ERC20(__name, __symbol) { _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); _setupRole(BURNER_ROLE, msg.sender); _mint(msg.sender, __INITIAL_SUPPLY); } function burn(address from, uint256 amount) public { require(hasRole(BURNER_ROLE, _msgSender()), "AKREP Token: Caller is not a burner"); _burn(from, amount); emit Burned(from, amount); } function decimals() public view virtual override returns (uint8) { return __decimals; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burned","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"},{"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":[{"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":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","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":[{"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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280601181526020017f416e74616c796173706f7220546f6b656e00000000000000000000000000000081525060069080519060200190620000519291906200058c565b506040518060400160405280600581526020017f414b524550000000000000000000000000000000000000000000000000000000815250600790805190602001906200009f9291906200058c565b506002600860006101000a81548160ff021916908360ff1602179055506401cf977824600955348015620000d257600080fd5b5060068054620000e29062000746565b80601f0160208091040260200160405190810160405280929190818152602001828054620001109062000746565b8015620001615780601f10620001355761010080835404028352916020019162000161565b820191906000526020600020905b8154815290600101906020018083116200014357829003601f168201915b505050505060078054620001759062000746565b80601f0160208091040260200160405190810160405280929190818152602001828054620001a39062000746565b8015620001f45780601f10620001c857610100808354040283529160200191620001f4565b820191906000526020600020905b815481529060010190602001808311620001d657829003601f168201915b50505050508160039080519060200190620002119291906200058c565b5080600490805190602001906200022a9291906200058c565b505050620002426000801b336200028e60201b60201c565b620002747f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848336200028e60201b60201c565b6200028833600954620002a460201b60201c565b620007da565b620002a082826200041d60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000317576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030e906200068f565b60405180910390fd5b6200032b600083836200050f60201b60201c565b80600260008282546200033f9190620006df565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003969190620006df565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003fd9190620006b1565b60405180910390a362000419600083836200051460201b60201c565b5050565b6200042f82826200051960201b60201c565b6200050b5760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004b06200058460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b505050565b505050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b8280546200059a9062000746565b90600052602060002090601f016020900481019282620005be57600085556200060a565b82601f10620005d957805160ff19168380011785556200060a565b828001600101855582156200060a579182015b8281111562000609578251825591602001919060010190620005ec565b5b5090506200061991906200061d565b5090565b5b80821115620006385760008160009055506001016200061e565b5090565b60006200064b601f83620006ce565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b62000689816200073c565b82525050565b60006020820190508181036000830152620006aa816200063c565b9050919050565b6000602082019050620006c860008301846200067e565b92915050565b600082825260208201905092915050565b6000620006ec826200073c565b9150620006f9836200073c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200073157620007306200077c565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200075f57607f821691505b60208210811415620007765762000775620007ab565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61250980620007ea6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806339509351116100ad578063a217fddf11610071578063a217fddf1461036b578063a457c2d714610389578063a9059cbb146103b9578063d547741f146103e9578063dd62ed3e146104055761012c565b806339509351146102a157806370a08231146102d157806391d148541461030157806395d89b41146103315780639dc29fac1461034f5761012c565b8063248a9ca3116100f4578063248a9ca3146101fd578063282c51f31461022d5780632f2ff15d1461024b578063313ce5671461026757806336568abe146102855761012c565b806301ffc9a71461013157806306fdde0314610161578063095ea7b31461017f57806318160ddd146101af57806323b872dd146101cd575b600080fd5b61014b60048036038101906101469190611972565b610435565b6040516101589190611fd5565b60405180910390f35b6101696104af565b604051610176919061200b565b60405180910390f35b610199600480360381019061019491906118d1565b610541565b6040516101a69190611fd5565b60405180910390f35b6101b761055f565b6040516101c491906121ad565b60405180910390f35b6101e760048036038101906101e29190611882565b610569565b6040516101f49190611fd5565b60405180910390f35b6102176004803603810190610212919061190d565b610661565b6040516102249190611ff0565b60405180910390f35b610235610681565b6040516102429190611ff0565b60405180910390f35b61026560048036038101906102609190611936565b6106a5565b005b61026f6106ce565b60405161027c91906121c8565b60405180910390f35b61029f600480360381019061029a9190611936565b6106e5565b005b6102bb60048036038101906102b691906118d1565b610768565b6040516102c89190611fd5565b60405180910390f35b6102eb60048036038101906102e6919061181d565b610814565b6040516102f891906121ad565b60405180910390f35b61031b60048036038101906103169190611936565b61085c565b6040516103289190611fd5565b60405180910390f35b6103396108c7565b604051610346919061200b565b60405180910390f35b610369600480360381019061036491906118d1565b610959565b005b610373610a10565b6040516103809190611ff0565b60405180910390f35b6103a3600480360381019061039e91906118d1565b610a17565b6040516103b09190611fd5565b60405180910390f35b6103d360048036038101906103ce91906118d1565b610b02565b6040516103e09190611fd5565b60405180910390f35b61040360048036038101906103fe9190611936565b610b20565b005b61041f600480360381019061041a9190611846565b610b49565b60405161042c91906121ad565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a857506104a782610bd0565b5b9050919050565b6060600380546104be906123d6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ea906123d6565b80156105375780601f1061050c57610100808354040283529160200191610537565b820191906000526020600020905b81548152906001019060200180831161051a57829003601f168201915b5050505050905090565b600061055561054e610c3a565b8484610c42565b6001905092915050565b6000600254905090565b6000610576848484610e0d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105c1610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610638906120ed565b60405180910390fd5b6106558561064d610c3a565b858403610c42565b60019150509392505050565b600060056000838152602001908152602001600020600101549050919050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6106ae82610661565b6106bf816106ba610c3a565b61108e565b6106c9838361112b565b505050565b6000600860009054906101000a900460ff16905090565b6106ed610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461075a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107519061218d565b60405180910390fd5b610764828261120c565b5050565b600061080a610775610c3a565b848460016000610783610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610805919061220a565b610c42565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600480546108d6906123d6565b80601f0160208091040260200160405190810160405280929190818152602001828054610902906123d6565b801561094f5780601f106109245761010080835404028352916020019161094f565b820191906000526020600020905b81548152906001019060200180831161093257829003601f168201915b5050505050905090565b61098a7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848610985610c3a565b61085c565b6109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c0906120ad565b60405180910390fd5b6109d382826112ee565b7f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df78282604051610a04929190611fac565b60405180910390a15050565b6000801b81565b60008060016000610a26610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada9061216d565b60405180910390fd5b610af7610aee610c3a565b85858403610c42565b600191505092915050565b6000610b16610b0f610c3a565b8484610e0d565b6001905092915050565b610b2982610661565b610b3a81610b35610c3a565b61108e565b610b44838361120c565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca99061214d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d199061208d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e0091906121ad565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e749061212d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee49061204d565b60405180910390fd5b610ef88383836114c5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f75906120cd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611011919061220a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107591906121ad565b60405180910390a36110888484846114ca565b50505050565b611098828261085c565b611127576110bd8173ffffffffffffffffffffffffffffffffffffffff1660146114cf565b6110cb8360001c60206114cf565b6040516020016110dc929190611f72565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e919061200b565b60405180910390fd5b5050565b611135828261085c565b6112085760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111ad610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611216828261085c565b156112ea5760006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061128f610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561135e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113559061210d565b60405180910390fd5b61136a826000836114c5565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e79061206d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461144791906122ba565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114ac91906121ad565b60405180910390a36114c0836000846114ca565b505050565b505050565b505050565b6060600060028360026114e29190612260565b6114ec919061220a565b67ffffffffffffffff81111561152b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561155d5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611645577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026116859190612260565b61168f919061220a565b90505b600181111561177b577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106116f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110611734577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611774906123ac565b9050611692565b50600084146117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b69061202d565b60405180910390fd5b8091505092915050565b6000813590506117d881612477565b92915050565b6000813590506117ed8161248e565b92915050565b600081359050611802816124a5565b92915050565b600081359050611817816124bc565b92915050565b60006020828403121561182f57600080fd5b600061183d848285016117c9565b91505092915050565b6000806040838503121561185957600080fd5b6000611867858286016117c9565b9250506020611878858286016117c9565b9150509250929050565b60008060006060848603121561189757600080fd5b60006118a5868287016117c9565b93505060206118b6868287016117c9565b92505060406118c786828701611808565b9150509250925092565b600080604083850312156118e457600080fd5b60006118f2858286016117c9565b925050602061190385828601611808565b9150509250929050565b60006020828403121561191f57600080fd5b600061192d848285016117de565b91505092915050565b6000806040838503121561194957600080fd5b6000611957858286016117de565b9250506020611968858286016117c9565b9150509250929050565b60006020828403121561198457600080fd5b6000611992848285016117f3565b91505092915050565b6119a4816122ee565b82525050565b6119b381612300565b82525050565b6119c28161230c565b82525050565b60006119d3826121e3565b6119dd81856121ee565b93506119ed818560208601612379565b6119f681612466565b840191505092915050565b6000611a0c826121e3565b611a1681856121ff565b9350611a26818560208601612379565b80840191505092915050565b6000611a3f6020836121ee565b91507f537472696e67733a20686578206c656e67746820696e73756666696369656e746000830152602082019050919050565b6000611a7f6023836121ee565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ae56022836121ee565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b4b6022836121ee565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bb16023836121ee565b91507f414b52455020546f6b656e3a2043616c6c6572206973206e6f7420612062757260008301527f6e657200000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c176026836121ee565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c7d6028836121ee565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ce36021836121ee565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d496025836121ee565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611daf6024836121ee565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e156017836121ff565b91507f416363657373436f6e74726f6c3a206163636f756e74200000000000000000006000830152601782019050919050565b6000611e556025836121ee565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ebb6011836121ff565b91507f206973206d697373696e6720726f6c65200000000000000000000000000000006000830152601182019050919050565b6000611efb602f836121ee565b91507f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008301527f20726f6c657320666f722073656c6600000000000000000000000000000000006020830152604082019050919050565b611f5d81612362565b82525050565b611f6c8161236c565b82525050565b6000611f7d82611e08565b9150611f898285611a01565b9150611f9482611eae565b9150611fa08284611a01565b91508190509392505050565b6000604082019050611fc1600083018561199b565b611fce6020830184611f54565b9392505050565b6000602082019050611fea60008301846119aa565b92915050565b600060208201905061200560008301846119b9565b92915050565b6000602082019050818103600083015261202581846119c8565b905092915050565b6000602082019050818103600083015261204681611a32565b9050919050565b6000602082019050818103600083015261206681611a72565b9050919050565b6000602082019050818103600083015261208681611ad8565b9050919050565b600060208201905081810360008301526120a681611b3e565b9050919050565b600060208201905081810360008301526120c681611ba4565b9050919050565b600060208201905081810360008301526120e681611c0a565b9050919050565b6000602082019050818103600083015261210681611c70565b9050919050565b6000602082019050818103600083015261212681611cd6565b9050919050565b6000602082019050818103600083015261214681611d3c565b9050919050565b6000602082019050818103600083015261216681611da2565b9050919050565b6000602082019050818103600083015261218681611e48565b9050919050565b600060208201905081810360008301526121a681611eee565b9050919050565b60006020820190506121c26000830184611f54565b92915050565b60006020820190506121dd6000830184611f63565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061221582612362565b915061222083612362565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561225557612254612408565b5b828201905092915050565b600061226b82612362565b915061227683612362565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156122af576122ae612408565b5b828202905092915050565b60006122c582612362565b91506122d083612362565b9250828210156122e3576122e2612408565b5b828203905092915050565b60006122f982612342565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561239757808201518184015260208101905061237c565b838111156123a6576000848401525b50505050565b60006123b782612362565b915060008214156123cb576123ca612408565b5b600182039050919050565b600060028204905060018216806123ee57607f821691505b6020821081141561240257612401612437565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b612480816122ee565b811461248b57600080fd5b50565b6124978161230c565b81146124a257600080fd5b50565b6124ae81612316565b81146124b957600080fd5b50565b6124c581612362565b81146124d057600080fd5b5056fea2646970667358221220b4273c7a8b83831021e8a573bf28ea075c425d1f24da80e78884244500dee38b64736f6c63430008000033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806339509351116100ad578063a217fddf11610071578063a217fddf1461036b578063a457c2d714610389578063a9059cbb146103b9578063d547741f146103e9578063dd62ed3e146104055761012c565b806339509351146102a157806370a08231146102d157806391d148541461030157806395d89b41146103315780639dc29fac1461034f5761012c565b8063248a9ca3116100f4578063248a9ca3146101fd578063282c51f31461022d5780632f2ff15d1461024b578063313ce5671461026757806336568abe146102855761012c565b806301ffc9a71461013157806306fdde0314610161578063095ea7b31461017f57806318160ddd146101af57806323b872dd146101cd575b600080fd5b61014b60048036038101906101469190611972565b610435565b6040516101589190611fd5565b60405180910390f35b6101696104af565b604051610176919061200b565b60405180910390f35b610199600480360381019061019491906118d1565b610541565b6040516101a69190611fd5565b60405180910390f35b6101b761055f565b6040516101c491906121ad565b60405180910390f35b6101e760048036038101906101e29190611882565b610569565b6040516101f49190611fd5565b60405180910390f35b6102176004803603810190610212919061190d565b610661565b6040516102249190611ff0565b60405180910390f35b610235610681565b6040516102429190611ff0565b60405180910390f35b61026560048036038101906102609190611936565b6106a5565b005b61026f6106ce565b60405161027c91906121c8565b60405180910390f35b61029f600480360381019061029a9190611936565b6106e5565b005b6102bb60048036038101906102b691906118d1565b610768565b6040516102c89190611fd5565b60405180910390f35b6102eb60048036038101906102e6919061181d565b610814565b6040516102f891906121ad565b60405180910390f35b61031b60048036038101906103169190611936565b61085c565b6040516103289190611fd5565b60405180910390f35b6103396108c7565b604051610346919061200b565b60405180910390f35b610369600480360381019061036491906118d1565b610959565b005b610373610a10565b6040516103809190611ff0565b60405180910390f35b6103a3600480360381019061039e91906118d1565b610a17565b6040516103b09190611fd5565b60405180910390f35b6103d360048036038101906103ce91906118d1565b610b02565b6040516103e09190611fd5565b60405180910390f35b61040360048036038101906103fe9190611936565b610b20565b005b61041f600480360381019061041a9190611846565b610b49565b60405161042c91906121ad565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a857506104a782610bd0565b5b9050919050565b6060600380546104be906123d6565b80601f01602080910402602001604051908101604052809291908181526020018280546104ea906123d6565b80156105375780601f1061050c57610100808354040283529160200191610537565b820191906000526020600020905b81548152906001019060200180831161051a57829003601f168201915b5050505050905090565b600061055561054e610c3a565b8484610c42565b6001905092915050565b6000600254905090565b6000610576848484610e0d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105c1610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610638906120ed565b60405180910390fd5b6106558561064d610c3a565b858403610c42565b60019150509392505050565b600060056000838152602001908152602001600020600101549050919050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6106ae82610661565b6106bf816106ba610c3a565b61108e565b6106c9838361112b565b505050565b6000600860009054906101000a900460ff16905090565b6106ed610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461075a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107519061218d565b60405180910390fd5b610764828261120c565b5050565b600061080a610775610c3a565b848460016000610783610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610805919061220a565b610c42565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600480546108d6906123d6565b80601f0160208091040260200160405190810160405280929190818152602001828054610902906123d6565b801561094f5780601f106109245761010080835404028352916020019161094f565b820191906000526020600020905b81548152906001019060200180831161093257829003601f168201915b5050505050905090565b61098a7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848610985610c3a565b61085c565b6109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c0906120ad565b60405180910390fd5b6109d382826112ee565b7f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df78282604051610a04929190611fac565b60405180910390a15050565b6000801b81565b60008060016000610a26610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada9061216d565b60405180910390fd5b610af7610aee610c3a565b85858403610c42565b600191505092915050565b6000610b16610b0f610c3a565b8484610e0d565b6001905092915050565b610b2982610661565b610b3a81610b35610c3a565b61108e565b610b44838361120c565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca99061214d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d199061208d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e0091906121ad565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e749061212d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee49061204d565b60405180910390fd5b610ef88383836114c5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f75906120cd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611011919061220a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161107591906121ad565b60405180910390a36110888484846114ca565b50505050565b611098828261085c565b611127576110bd8173ffffffffffffffffffffffffffffffffffffffff1660146114cf565b6110cb8360001c60206114cf565b6040516020016110dc929190611f72565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e919061200b565b60405180910390fd5b5050565b611135828261085c565b6112085760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111ad610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611216828261085c565b156112ea5760006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061128f610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561135e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113559061210d565b60405180910390fd5b61136a826000836114c5565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e79061206d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461144791906122ba565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114ac91906121ad565b60405180910390a36114c0836000846114ca565b505050565b505050565b505050565b6060600060028360026114e29190612260565b6114ec919061220a565b67ffffffffffffffff81111561152b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561155d5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611645577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026116859190612260565b61168f919061220a565b90505b600181111561177b577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106116f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110611734577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611774906123ac565b9050611692565b50600084146117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b69061202d565b60405180910390fd5b8091505092915050565b6000813590506117d881612477565b92915050565b6000813590506117ed8161248e565b92915050565b600081359050611802816124a5565b92915050565b600081359050611817816124bc565b92915050565b60006020828403121561182f57600080fd5b600061183d848285016117c9565b91505092915050565b6000806040838503121561185957600080fd5b6000611867858286016117c9565b9250506020611878858286016117c9565b9150509250929050565b60008060006060848603121561189757600080fd5b60006118a5868287016117c9565b93505060206118b6868287016117c9565b92505060406118c786828701611808565b9150509250925092565b600080604083850312156118e457600080fd5b60006118f2858286016117c9565b925050602061190385828601611808565b9150509250929050565b60006020828403121561191f57600080fd5b600061192d848285016117de565b91505092915050565b6000806040838503121561194957600080fd5b6000611957858286016117de565b9250506020611968858286016117c9565b9150509250929050565b60006020828403121561198457600080fd5b6000611992848285016117f3565b91505092915050565b6119a4816122ee565b82525050565b6119b381612300565b82525050565b6119c28161230c565b82525050565b60006119d3826121e3565b6119dd81856121ee565b93506119ed818560208601612379565b6119f681612466565b840191505092915050565b6000611a0c826121e3565b611a1681856121ff565b9350611a26818560208601612379565b80840191505092915050565b6000611a3f6020836121ee565b91507f537472696e67733a20686578206c656e67746820696e73756666696369656e746000830152602082019050919050565b6000611a7f6023836121ee565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ae56022836121ee565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b4b6022836121ee565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bb16023836121ee565b91507f414b52455020546f6b656e3a2043616c6c6572206973206e6f7420612062757260008301527f6e657200000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c176026836121ee565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c7d6028836121ee565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ce36021836121ee565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d496025836121ee565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611daf6024836121ee565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e156017836121ff565b91507f416363657373436f6e74726f6c3a206163636f756e74200000000000000000006000830152601782019050919050565b6000611e556025836121ee565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ebb6011836121ff565b91507f206973206d697373696e6720726f6c65200000000000000000000000000000006000830152601182019050919050565b6000611efb602f836121ee565b91507f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008301527f20726f6c657320666f722073656c6600000000000000000000000000000000006020830152604082019050919050565b611f5d81612362565b82525050565b611f6c8161236c565b82525050565b6000611f7d82611e08565b9150611f898285611a01565b9150611f9482611eae565b9150611fa08284611a01565b91508190509392505050565b6000604082019050611fc1600083018561199b565b611fce6020830184611f54565b9392505050565b6000602082019050611fea60008301846119aa565b92915050565b600060208201905061200560008301846119b9565b92915050565b6000602082019050818103600083015261202581846119c8565b905092915050565b6000602082019050818103600083015261204681611a32565b9050919050565b6000602082019050818103600083015261206681611a72565b9050919050565b6000602082019050818103600083015261208681611ad8565b9050919050565b600060208201905081810360008301526120a681611b3e565b9050919050565b600060208201905081810360008301526120c681611ba4565b9050919050565b600060208201905081810360008301526120e681611c0a565b9050919050565b6000602082019050818103600083015261210681611c70565b9050919050565b6000602082019050818103600083015261212681611cd6565b9050919050565b6000602082019050818103600083015261214681611d3c565b9050919050565b6000602082019050818103600083015261216681611da2565b9050919050565b6000602082019050818103600083015261218681611e48565b9050919050565b600060208201905081810360008301526121a681611eee565b9050919050565b60006020820190506121c26000830184611f54565b92915050565b60006020820190506121dd6000830184611f63565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061221582612362565b915061222083612362565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561225557612254612408565b5b828201905092915050565b600061226b82612362565b915061227683612362565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156122af576122ae612408565b5b828202905092915050565b60006122c582612362565b91506122d083612362565b9250828210156122e3576122e2612408565b5b828203905092915050565b60006122f982612342565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561239757808201518184015260208101905061237c565b838111156123a6576000848401525b50505050565b60006123b782612362565b915060008214156123cb576123ca612408565b5b600182039050919050565b600060028204905060018216806123ee57607f821691505b6020821081141561240257612401612437565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b612480816122ee565b811461248b57600080fd5b50565b6124978161230c565b81146124a257600080fd5b50565b6124ae81612316565b81146124b957600080fd5b50565b6124c581612362565b81146124d057600080fd5b5056fea2646970667358221220b4273c7a8b83831021e8a573bf28ea075c425d1f24da80e78884244500dee38b64736f6c63430008000033
Deployed Bytecode Sourcemap
30418:883:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10184:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20353:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22520:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21473:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23171:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11595:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30643:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11980:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31195:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13028:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24072:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21644:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10480:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20572:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30969:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9571:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24790:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21984:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12372:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22222:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10184:204;10269:4;10308:32;10293:47;;;:11;:47;;;;:87;;;;10344:36;10368:11;10344:23;:36::i;:::-;10293:87;10286:94;;10184:204;;;:::o;20353:100::-;20407:13;20440:5;20433:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20353:100;:::o;22520:169::-;22603:4;22620:39;22629:12;:10;:12::i;:::-;22643:7;22652:6;22620:8;:39::i;:::-;22677:4;22670:11;;22520:169;;;;:::o;21473:108::-;21534:7;21561:12;;21554:19;;21473:108;:::o;23171:492::-;23311:4;23328:36;23338:6;23346:9;23357:6;23328:9;:36::i;:::-;23377:24;23404:11;:19;23416:6;23404:19;;;;;;;;;;;;;;;:33;23424:12;:10;:12::i;:::-;23404:33;;;;;;;;;;;;;;;;23377:60;;23476:6;23456:16;:26;;23448:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;23563:57;23572:6;23580:12;:10;:12::i;:::-;23613:6;23594:16;:25;23563:8;:57::i;:::-;23651:4;23644:11;;;23171:492;;;;;:::o;11595:123::-;11661:7;11688:6;:12;11695:4;11688:12;;;;;;;;;;;:22;;;11681:29;;11595:123;;;:::o;30643:62::-;30681:24;30643:62;:::o;11980:147::-;12063:18;12076:4;12063:12;:18::i;:::-;10062:30;10073:4;10079:12;:10;:12::i;:::-;10062:10;:30::i;:::-;12094:25:::1;12105:4;12111:7;12094:10;:25::i;:::-;11980:147:::0;;;:::o;31195:101::-;31253:5;31278:10;;;;;;;;;;;31271:17;;31195:101;:::o;13028:218::-;13135:12;:10;:12::i;:::-;13124:23;;:7;:23;;;13116:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;13212:26;13224:4;13230:7;13212:11;:26::i;:::-;13028:218;;:::o;24072:215::-;24160:4;24177:80;24186:12;:10;:12::i;:::-;24200:7;24246:10;24209:11;:25;24221:12;:10;:12::i;:::-;24209:25;;;;;;;;;;;;;;;:34;24235:7;24209:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;24177:8;:80::i;:::-;24275:4;24268:11;;24072:215;;;;:::o;21644:127::-;21718:7;21745:9;:18;21755:7;21745:18;;;;;;;;;;;;;;;;21738:25;;21644:127;;;:::o;10480:139::-;10558:4;10582:6;:12;10589:4;10582:12;;;;;;;;;;;:20;;:29;10603:7;10582:29;;;;;;;;;;;;;;;;;;;;;;;;;10575:36;;10480:139;;;;:::o;20572:104::-;20628:13;20661:7;20654:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20572:104;:::o;30969:218::-;31039:34;30681:24;31060:12;:10;:12::i;:::-;31039:7;:34::i;:::-;31031:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;31124:19;31130:4;31136:6;31124:5;:19::i;:::-;31159:20;31166:4;31172:6;31159:20;;;;;;;:::i;:::-;;;;;;;;30969:218;;:::o;9571:49::-;9616:4;9571:49;;;:::o;24790:413::-;24883:4;24900:24;24927:11;:25;24939:12;:10;:12::i;:::-;24927:25;;;;;;;;;;;;;;;:34;24953:7;24927:34;;;;;;;;;;;;;;;;24900:61;;25000:15;24980:16;:35;;24972:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;25093:67;25102:12;:10;:12::i;:::-;25116:7;25144:15;25125:16;:34;25093:8;:67::i;:::-;25191:4;25184:11;;;24790:413;;;;:::o;21984:175::-;22070:4;22087:42;22097:12;:10;:12::i;:::-;22111:9;22122:6;22087:9;:42::i;:::-;22147:4;22140:11;;21984:175;;;;:::o;12372:149::-;12456:18;12469:4;12456:12;:18::i;:::-;10062:30;10073:4;10079:12;:10;:12::i;:::-;10062:10;:30::i;:::-;12487:26:::1;12499:4;12505:7;12487:11;:26::i;:::-;12372:149:::0;;;:::o;22222:151::-;22311:7;22338:11;:18;22350:5;22338:18;;;;;;;;;;;;;;;:27;22357:7;22338:27;;;;;;;;;;;;;;;;22331:34;;22222:151;;;;:::o;7517:157::-;7602:4;7641:25;7626:40;;;:11;:40;;;;7619:47;;7517:157;;;:::o;3596:98::-;3649:7;3676:10;3669:17;;3596:98;:::o;28474:380::-;28627:1;28610:19;;:5;:19;;;;28602:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28708:1;28689:21;;:7;:21;;;;28681:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28792:6;28762:11;:18;28774:5;28762:18;;;;;;;;;;;;;;;:27;28781:7;28762:27;;;;;;;;;;;;;;;:36;;;;28830:7;28814:32;;28823:5;28814:32;;;28839:6;28814:32;;;;;;:::i;:::-;;;;;;;;28474:380;;;:::o;25693:733::-;25851:1;25833:20;;:6;:20;;;;25825:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25935:1;25914:23;;:9;:23;;;;25906:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25990:47;26011:6;26019:9;26030:6;25990:20;:47::i;:::-;26050:21;26074:9;:17;26084:6;26074:17;;;;;;;;;;;;;;;;26050:41;;26127:6;26110:13;:23;;26102:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;26248:6;26232:13;:22;26212:9;:17;26222:6;26212:17;;;;;;;;;;;;;;;:42;;;;26300:6;26276:9;:20;26286:9;26276:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;26341:9;26324:35;;26333:6;26324:35;;;26352:6;26324:35;;;;;;:::i;:::-;;;;;;;;26372:46;26392:6;26400:9;26411:6;26372:19;:46::i;:::-;25693:733;;;;:::o;10909:497::-;10990:22;10998:4;11004:7;10990;:22::i;:::-;10985:414;;11178:41;11206:7;11178:41;;11216:2;11178:19;:41::i;:::-;11292:38;11320:4;11312:13;;11327:2;11292:19;:38::i;:::-;11083:270;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11029:358;;;;;;;;;;;:::i;:::-;;;;;;;;10985:414;10909:497;;:::o;14332:229::-;14407:22;14415:4;14421:7;14407;:22::i;:::-;14402:152;;14478:4;14446:6;:12;14453:4;14446:12;;;;;;;;;;;:20;;:29;14467:7;14446:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;14529:12;:10;:12::i;:::-;14502:40;;14520:7;14502:40;;14514:4;14502:40;;;;;;;;;;14402:152;14332:229;;:::o;14569:230::-;14644:22;14652:4;14658:7;14644;:22::i;:::-;14640:152;;;14715:5;14683:6;:12;14690:4;14683:12;;;;;;;;;;;:20;;:29;14704:7;14683:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;14767:12;:10;:12::i;:::-;14740:40;;14758:7;14740:40;;14752:4;14740:40;;;;;;;;;;14640:152;14569:230;;:::o;27445:591::-;27548:1;27529:21;;:7;:21;;;;27521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27601:49;27622:7;27639:1;27643:6;27601:20;:49::i;:::-;27663:22;27688:9;:18;27698:7;27688:18;;;;;;;;;;;;;;;;27663:43;;27743:6;27725:14;:24;;27717:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27862:6;27845:14;:23;27824:9;:18;27834:7;27824:18;;;;;;;;;;;;;;;:44;;;;27906:6;27890:12;;:22;;;;;;;:::i;:::-;;;;;;;;27956:1;27930:37;;27939:7;27930:37;;;27960:6;27930:37;;;;;;:::i;:::-;;;;;;;;27980:48;28000:7;28017:1;28021:6;27980:19;:48::i;:::-;27445:591;;;:::o;29454:125::-;;;;:::o;30183:124::-;;;;:::o;5418:451::-;5493:13;5519:19;5564:1;5555:6;5551:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;5541:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5519:47;;5577:15;:6;5584:1;5577:9;;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;5603;:6;5610:1;5603:9;;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;5634:9;5659:1;5650:6;5646:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;5634:26;;5629:135;5666:1;5662;:5;5629:135;;;5701:12;5722:3;5714:5;:11;5701:25;;;;;;;;;;;;;;;;;;5689:6;5696:1;5689:9;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;5751:1;5741:11;;;;;5669:3;;;;:::i;:::-;;;5629:135;;;;5791:1;5782:5;:10;5774:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;5854:6;5840:21;;;5418:451;;;;:::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:118::-;3271:24;3289:5;3271:24;:::i;:::-;3266:3;3259:37;3249:53;;:::o;3308:109::-;3389:21;3404:5;3389:21;:::i;:::-;3384:3;3377:34;3367:50;;:::o;3423:118::-;3510:24;3528:5;3510:24;:::i;:::-;3505:3;3498:37;3488:53;;:::o;3547:364::-;;3663:39;3696:5;3663:39;:::i;:::-;3718:71;3782:6;3777:3;3718:71;:::i;:::-;3711:78;;3798:52;3843:6;3838:3;3831:4;3824:5;3820:16;3798:52;:::i;:::-;3875:29;3897:6;3875:29;:::i;:::-;3870:3;3866:39;3859:46;;3639:272;;;;;:::o;3917:377::-;;4051:39;4084:5;4051:39;:::i;:::-;4106:89;4188:6;4183:3;4106:89;:::i;:::-;4099:96;;4204:52;4249:6;4244:3;4237:4;4230:5;4226:16;4204:52;:::i;:::-;4281:6;4276:3;4272:16;4265:23;;4027:267;;;;;:::o;4300:330::-;;4463:67;4527:2;4522:3;4463:67;:::i;:::-;4456:74;;4560:34;4556:1;4551:3;4547:11;4540:55;4621:2;4616:3;4612:12;4605:19;;4446:184;;;:::o;4636:367::-;;4799:67;4863:2;4858:3;4799:67;:::i;:::-;4792:74;;4896:34;4892:1;4887:3;4883:11;4876:55;4962:5;4957:2;4952:3;4948:12;4941:27;4994:2;4989:3;4985:12;4978:19;;4782:221;;;:::o;5009:366::-;;5172:67;5236:2;5231:3;5172:67;:::i;:::-;5165:74;;5269:34;5265:1;5260:3;5256:11;5249:55;5335:4;5330:2;5325:3;5321:12;5314:26;5366:2;5361:3;5357:12;5350:19;;5155:220;;;:::o;5381:366::-;;5544:67;5608:2;5603:3;5544:67;:::i;:::-;5537:74;;5641:34;5637:1;5632:3;5628:11;5621:55;5707:4;5702:2;5697:3;5693:12;5686:26;5738:2;5733:3;5729:12;5722:19;;5527:220;;;:::o;5753:367::-;;5916:67;5980:2;5975:3;5916:67;:::i;:::-;5909:74;;6013:34;6009:1;6004:3;6000:11;5993:55;6079:5;6074:2;6069:3;6065:12;6058:27;6111:2;6106:3;6102:12;6095:19;;5899:221;;;:::o;6126:370::-;;6289:67;6353:2;6348:3;6289:67;:::i;:::-;6282:74;;6386:34;6382:1;6377:3;6373:11;6366:55;6452:8;6447:2;6442:3;6438:12;6431:30;6487:2;6482:3;6478:12;6471:19;;6272:224;;;:::o;6502:372::-;;6665:67;6729:2;6724:3;6665:67;:::i;:::-;6658:74;;6762:34;6758:1;6753:3;6749:11;6742:55;6828:10;6823:2;6818:3;6814:12;6807:32;6865:2;6860:3;6856:12;6849:19;;6648:226;;;:::o;6880:365::-;;7043:67;7107:2;7102:3;7043:67;:::i;:::-;7036:74;;7140:34;7136:1;7131:3;7127:11;7120:55;7206:3;7201:2;7196:3;7192:12;7185:25;7236:2;7231:3;7227:12;7220:19;;7026:219;;;:::o;7251:369::-;;7414:67;7478:2;7473:3;7414:67;:::i;:::-;7407:74;;7511:34;7507:1;7502:3;7498:11;7491:55;7577:7;7572:2;7567:3;7563:12;7556:29;7611:2;7606:3;7602:12;7595:19;;7397:223;;;:::o;7626:368::-;;7789:67;7853:2;7848:3;7789:67;:::i;:::-;7782:74;;7886:34;7882:1;7877:3;7873:11;7866:55;7952:6;7947:2;7942:3;7938:12;7931:28;7985:2;7980:3;7976:12;7969:19;;7772:222;;;:::o;8000:357::-;;8181:85;8263:2;8258:3;8181:85;:::i;:::-;8174:92;;8296:25;8292:1;8287:3;8283:11;8276:46;8348:2;8343:3;8339:12;8332:19;;8164:193;;;:::o;8363:369::-;;8526:67;8590:2;8585:3;8526:67;:::i;:::-;8519:74;;8623:34;8619:1;8614:3;8610:11;8603:55;8689:7;8684:2;8679:3;8675:12;8668:29;8723:2;8718:3;8714:12;8707:19;;8509:223;;;:::o;8738:351::-;;8919:85;9001:2;8996:3;8919:85;:::i;:::-;8912:92;;9034:19;9030:1;9025:3;9021:11;9014:40;9080:2;9075:3;9071:12;9064:19;;8902:187;;;:::o;9095:379::-;;9258:67;9322:2;9317:3;9258:67;:::i;:::-;9251:74;;9355:34;9351:1;9346:3;9342:11;9335:55;9421:17;9416:2;9411:3;9407:12;9400:39;9465:2;9460:3;9456:12;9449:19;;9241:233;;;:::o;9480:118::-;9567:24;9585:5;9567:24;:::i;:::-;9562:3;9555:37;9545:53;;:::o;9604:112::-;9687:22;9703:5;9687:22;:::i;:::-;9682:3;9675:35;9665:51;;:::o;9722:967::-;;10126:148;10270:3;10126:148;:::i;:::-;10119:155;;10291:95;10382:3;10373:6;10291:95;:::i;:::-;10284:102;;10403:148;10547:3;10403:148;:::i;:::-;10396:155;;10568:95;10659:3;10650:6;10568:95;:::i;:::-;10561:102;;10680:3;10673:10;;10108:581;;;;;:::o;10695:332::-;;10854:2;10843:9;10839:18;10831:26;;10867:71;10935:1;10924:9;10920:17;10911:6;10867:71;:::i;:::-;10948:72;11016:2;11005:9;11001:18;10992:6;10948:72;:::i;:::-;10821:206;;;;;:::o;11033:210::-;;11158:2;11147:9;11143:18;11135:26;;11171:65;11233:1;11222:9;11218:17;11209:6;11171:65;:::i;:::-;11125:118;;;;:::o;11249:222::-;;11380:2;11369:9;11365:18;11357:26;;11393:71;11461:1;11450:9;11446:17;11437:6;11393:71;:::i;:::-;11347:124;;;;:::o;11477:313::-;;11628:2;11617:9;11613:18;11605:26;;11677:9;11671:4;11667:20;11663:1;11652:9;11648:17;11641:47;11705:78;11778:4;11769:6;11705:78;:::i;:::-;11697:86;;11595:195;;;;:::o;11796:419::-;;12000:2;11989:9;11985:18;11977:26;;12049:9;12043:4;12039:20;12035:1;12024:9;12020:17;12013:47;12077:131;12203:4;12077:131;:::i;:::-;12069:139;;11967:248;;;:::o;12221:419::-;;12425:2;12414:9;12410:18;12402:26;;12474:9;12468:4;12464:20;12460:1;12449:9;12445:17;12438:47;12502:131;12628:4;12502:131;:::i;:::-;12494:139;;12392:248;;;:::o;12646:419::-;;12850:2;12839:9;12835:18;12827:26;;12899:9;12893:4;12889:20;12885:1;12874:9;12870:17;12863:47;12927:131;13053:4;12927:131;:::i;:::-;12919:139;;12817:248;;;:::o;13071:419::-;;13275:2;13264:9;13260:18;13252:26;;13324:9;13318:4;13314:20;13310:1;13299:9;13295:17;13288:47;13352:131;13478:4;13352:131;:::i;:::-;13344:139;;13242:248;;;:::o;13496:419::-;;13700:2;13689:9;13685:18;13677:26;;13749:9;13743:4;13739:20;13735:1;13724:9;13720:17;13713:47;13777:131;13903:4;13777:131;:::i;:::-;13769:139;;13667:248;;;:::o;13921:419::-;;14125:2;14114:9;14110:18;14102:26;;14174:9;14168:4;14164:20;14160:1;14149:9;14145:17;14138:47;14202:131;14328:4;14202:131;:::i;:::-;14194:139;;14092:248;;;:::o;14346:419::-;;14550:2;14539:9;14535:18;14527:26;;14599:9;14593:4;14589:20;14585:1;14574:9;14570:17;14563:47;14627:131;14753:4;14627:131;:::i;:::-;14619:139;;14517:248;;;:::o;14771:419::-;;14975:2;14964:9;14960:18;14952:26;;15024:9;15018:4;15014:20;15010:1;14999:9;14995:17;14988:47;15052:131;15178:4;15052:131;:::i;:::-;15044:139;;14942:248;;;:::o;15196:419::-;;15400:2;15389:9;15385:18;15377:26;;15449:9;15443:4;15439:20;15435:1;15424:9;15420:17;15413:47;15477:131;15603:4;15477:131;:::i;:::-;15469:139;;15367:248;;;:::o;15621:419::-;;15825:2;15814:9;15810:18;15802:26;;15874:9;15868:4;15864:20;15860:1;15849:9;15845:17;15838:47;15902:131;16028:4;15902:131;:::i;:::-;15894:139;;15792:248;;;:::o;16046:419::-;;16250:2;16239:9;16235:18;16227:26;;16299:9;16293:4;16289:20;16285:1;16274:9;16270:17;16263:47;16327:131;16453:4;16327:131;:::i;:::-;16319:139;;16217:248;;;:::o;16471:419::-;;16675:2;16664:9;16660:18;16652:26;;16724:9;16718:4;16714:20;16710:1;16699:9;16695:17;16688:47;16752:131;16878:4;16752:131;:::i;:::-;16744:139;;16642:248;;;:::o;16896:222::-;;17027:2;17016:9;17012:18;17004:26;;17040:71;17108:1;17097:9;17093:17;17084:6;17040:71;:::i;:::-;16994:124;;;;:::o;17124:214::-;;17251:2;17240:9;17236:18;17228:26;;17264:67;17328:1;17317:9;17313:17;17304:6;17264:67;:::i;:::-;17218:120;;;;:::o;17344:99::-;;17430:5;17424:12;17414:22;;17403:40;;;:::o;17449:169::-;;17567:6;17562:3;17555:19;17607:4;17602:3;17598:14;17583:29;;17545:73;;;;:::o;17624:148::-;;17763:3;17748:18;;17738:34;;;;:::o;17778:305::-;;17837:20;17855:1;17837:20;:::i;:::-;17832:25;;17871:20;17889:1;17871:20;:::i;:::-;17866:25;;18025:1;17957:66;17953:74;17950:1;17947:81;17944:2;;;18031:18;;:::i;:::-;17944:2;18075:1;18072;18068:9;18061:16;;17822:261;;;;:::o;18089:348::-;;18152:20;18170:1;18152:20;:::i;:::-;18147:25;;18186:20;18204:1;18186:20;:::i;:::-;18181:25;;18374:1;18306:66;18302:74;18299:1;18296:81;18291:1;18284:9;18277:17;18273:105;18270:2;;;18381:18;;:::i;:::-;18270:2;18429:1;18426;18422:9;18411:20;;18137:300;;;;:::o;18443:191::-;;18503:20;18521:1;18503:20;:::i;:::-;18498:25;;18537:20;18555:1;18537:20;:::i;:::-;18532:25;;18576:1;18573;18570:8;18567:2;;;18581:18;;:::i;:::-;18567:2;18626:1;18623;18619:9;18611:17;;18488:146;;;;:::o;18640:96::-;;18706:24;18724:5;18706:24;:::i;:::-;18695:35;;18685:51;;;:::o;18742:90::-;;18819:5;18812:13;18805:21;18794:32;;18784:48;;;:::o;18838:77::-;;18904:5;18893:16;;18883:32;;;:::o;18921:149::-;;18997:66;18990:5;18986:78;18975:89;;18965:105;;;:::o;19076:126::-;;19153:42;19146:5;19142:54;19131:65;;19121:81;;;:::o;19208:77::-;;19274:5;19263:16;;19253:32;;;:::o;19291:86::-;;19366:4;19359:5;19355:16;19344:27;;19334:43;;;:::o;19383:307::-;19451:1;19461:113;19475:6;19472:1;19469:13;19461:113;;;19560:1;19555:3;19551:11;19545:18;19541:1;19536:3;19532:11;19525:39;19497:2;19494:1;19490:10;19485:15;;19461:113;;;19592:6;19589:1;19586:13;19583:2;;;19672:1;19663:6;19658:3;19654:16;19647:27;19583:2;19432:258;;;;:::o;19696:171::-;;19758:24;19776:5;19758:24;:::i;:::-;19749:33;;19804:4;19797:5;19794:15;19791:2;;;19812:18;;:::i;:::-;19791:2;19859:1;19852:5;19848:13;19841:20;;19739:128;;;:::o;19873:320::-;;19954:1;19948:4;19944:12;19934:22;;20001:1;19995:4;19991:12;20022:18;20012:2;;20078:4;20070:6;20066:17;20056:27;;20012:2;20140;20132:6;20129:14;20109:18;20106:38;20103:2;;;20159:18;;:::i;:::-;20103:2;19924:269;;;;:::o;20199:180::-;20247:77;20244:1;20237:88;20344:4;20341:1;20334:15;20368:4;20365:1;20358:15;20385:180;20433:77;20430:1;20423:88;20530:4;20527:1;20520:15;20554:4;20551:1;20544:15;20571:102;;20663:2;20659:7;20654:2;20647:5;20643:14;20639:28;20629:38;;20619:54;;;:::o;20679:122::-;20752:24;20770:5;20752:24;:::i;:::-;20745:5;20742:35;20732:2;;20791:1;20788;20781:12;20732:2;20722:79;:::o;20807:122::-;20880:24;20898:5;20880:24;:::i;:::-;20873:5;20870:35;20860:2;;20919:1;20916;20909:12;20860:2;20850:79;:::o;20935:120::-;21007:23;21024:5;21007:23;:::i;:::-;21000:5;20997:34;20987:2;;21045:1;21042;21035:12;20987:2;20977:78;:::o;21061:122::-;21134:24;21152:5;21134:24;:::i;:::-;21127:5;21124:35;21114:2;;21173:1;21170;21163:12;21114:2;21104:79;:::o
Swarm Source
ipfs://b4273c7a8b83831021e8a573bf28ea075c425d1f24da80e78884244500dee38b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.