Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 69 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 20684279 | 14 days ago | IN | 0 ETH | 0.00011949 | ||||
Burn | 20522268 | 36 days ago | IN | 0 ETH | 0.00004779 | ||||
Burn | 20520091 | 37 days ago | IN | 0 ETH | 0.00008781 | ||||
Transfer | 20492209 | 41 days ago | IN | 0 ETH | 0.00023958 | ||||
Transfer | 20491749 | 41 days ago | IN | 0 ETH | 0.00039032 | ||||
Transfer | 20491736 | 41 days ago | IN | 0 ETH | 0.000359 | ||||
Transfer | 20091008 | 97 days ago | IN | 0 ETH | 0.00048128 | ||||
Transfer | 20090983 | 97 days ago | IN | 0 ETH | 0.00046662 | ||||
Transfer | 20090949 | 97 days ago | IN | 0 ETH | 0.00072288 | ||||
Transfer | 20085520 | 97 days ago | IN | 0 ETH | 0.00045363 | ||||
Transfer | 20074316 | 99 days ago | IN | 0 ETH | 0.00048893 | ||||
Burn | 20042630 | 103 days ago | IN | 0 ETH | 0.00031943 | ||||
Transfer | 19926102 | 120 days ago | IN | 0 ETH | 0.00087661 | ||||
Burn | 19669313 | 156 days ago | IN | 0 ETH | 0.00066588 | ||||
Transfer | 19562902 | 170 days ago | IN | 0 ETH | 0.00147389 | ||||
Burn | 19281616 | 210 days ago | IN | 0 ETH | 0.00113591 | ||||
Transfer | 19262463 | 213 days ago | IN | 0 ETH | 0.00251486 | ||||
Burn | 19076633 | 239 days ago | IN | 0 ETH | 0.00046906 | ||||
Transfer | 19040246 | 244 days ago | IN | 0 ETH | 0.00124723 | ||||
Burn | 18829990 | 273 days ago | IN | 0 ETH | 0.00208702 | ||||
Transfer | 18813787 | 276 days ago | IN | 0 ETH | 0.00555995 | ||||
Transfer | 18613856 | 304 days ago | IN | 0 ETH | 0.00096214 | ||||
Transfer | 18613833 | 304 days ago | IN | 0 ETH | 0.00175716 | ||||
Burn | 18563607 | 311 days ago | IN | 0 ETH | 0.00189965 | ||||
Transfer | 18542474 | 314 days ago | IN | 0 ETH | 0.0026982 |
Loading...
Loading
Contract Name:
TUZLAToken
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-03 */ // File: @openzeppelin/contracts/access/IAccessControl.sol // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/access/AccessControl.sol // OpenZeppelin Contracts v4.4.1 (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 revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.1 (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 // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts v4.4.1 (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/TUZLAToken.sol //SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract TUZLAToken is ERC20, AccessControl { string private __name = "Tuzlaspor Token"; string private __symbol = "TUZLA"; uint8 private __decimals = 2; uint private __INITIAL_SUPPLY = 1000000000; 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()), "TUZLA 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
60806040526040518060400160405280600f81526020017f54757a6c6173706f7220546f6b656e000000000000000000000000000000000081525060069080519060200190620000519291906200058b565b506040518060400160405280600581526020017f54555a4c41000000000000000000000000000000000000000000000000000000815250600790805190602001906200009f9291906200058b565b506002600860006101000a81548160ff021916908360ff160217905550633b9aca00600955348015620000d157600080fd5b5060068054620000e1906200066a565b80601f01602080910402602001604051908101604052809291908181526020018280546200010f906200066a565b8015620001605780601f10620001345761010080835404028352916020019162000160565b820191906000526020600020905b8154815290600101906020018083116200014257829003601f168201915b50505050506007805462000174906200066a565b80601f0160208091040260200160405190810160405280929190818152602001828054620001a2906200066a565b8015620001f35780601f10620001c757610100808354040283529160200191620001f3565b820191906000526020600020905b815481529060010190602001808311620001d557829003601f168201915b50505050508160039080519060200190620002109291906200058b565b508060049080519060200190620002299291906200058b565b505050620002416000801b336200028d60201b60201c565b620002737f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848336200028d60201b60201c565b6200028733600954620002a360201b60201c565b620007e7565b6200029f82826200041c60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000316576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030d9062000701565b60405180910390fd5b6200032a600083836200050e60201b60201c565b80600260008282546200033e91906200075c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200039591906200075c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003fc9190620007ca565b60405180910390a362000418600083836200051360201b60201c565b5050565b6200042e82826200051860201b60201c565b6200050a5760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004af6200058360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b505050565b505050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b82805462000599906200066a565b90600052602060002090601f016020900481019282620005bd576000855562000609565b82601f10620005d857805160ff191683800117855562000609565b8280016001018555821562000609579182015b8281111562000608578251825591602001919060010190620005eb565b5b5090506200061891906200061c565b5090565b5b80821115620006375760008160009055506001016200061d565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200068357607f821691505b602082108114156200069a57620006996200063b565b5b50919050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620006e9601f83620006a0565b9150620006f682620006b1565b602082019050919050565b600060208201905081810360008301526200071c81620006da565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007698262000723565b9150620007768362000723565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620007ae57620007ad6200072d565b5b828201905092915050565b620007c48162000723565b82525050565b6000602082019050620007e16000830184620007b9565b92915050565b61257280620007f76000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806339509351116100ad578063a217fddf11610071578063a217fddf1461036b578063a457c2d714610389578063a9059cbb146103b9578063d547741f146103e9578063dd62ed3e146104055761012c565b806339509351146102a157806370a08231146102d157806391d148541461030157806395d89b41146103315780639dc29fac1461034f5761012c565b8063248a9ca3116100f4578063248a9ca3146101fd578063282c51f31461022d5780632f2ff15d1461024b578063313ce5671461026757806336568abe146102855761012c565b806301ffc9a71461013157806306fdde0314610161578063095ea7b31461017f57806318160ddd146101af57806323b872dd146101cd575b600080fd5b61014b60048036038101906101469190611768565b610435565b60405161015891906117b0565b60405180910390f35b6101696104af565b6040516101769190611864565b60405180910390f35b6101996004803603810190610194919061191a565b610541565b6040516101a691906117b0565b60405180910390f35b6101b761055f565b6040516101c49190611969565b60405180910390f35b6101e760048036038101906101e29190611984565b610569565b6040516101f491906117b0565b60405180910390f35b61021760048036038101906102129190611a0d565b610661565b6040516102249190611a49565b60405180910390f35b610235610681565b6040516102429190611a49565b60405180910390f35b61026560048036038101906102609190611a64565b6106a5565b005b61026f6106ce565b60405161027c9190611ac0565b60405180910390f35b61029f600480360381019061029a9190611a64565b6106e5565b005b6102bb60048036038101906102b6919061191a565b610768565b6040516102c891906117b0565b60405180910390f35b6102eb60048036038101906102e69190611adb565b610814565b6040516102f89190611969565b60405180910390f35b61031b60048036038101906103169190611a64565b61085c565b60405161032891906117b0565b60405180910390f35b6103396108c7565b6040516103469190611864565b60405180910390f35b6103696004803603810190610364919061191a565b610959565b005b610373610a10565b6040516103809190611a49565b60405180910390f35b6103a3600480360381019061039e919061191a565b610a17565b6040516103b091906117b0565b60405180910390f35b6103d360048036038101906103ce919061191a565b610b02565b6040516103e091906117b0565b60405180910390f35b61040360048036038101906103fe9190611a64565b610b20565b005b61041f600480360381019061041a9190611b08565b610b49565b60405161042c9190611969565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a857506104a782610bd0565b5b9050919050565b6060600380546104be90611b77565b80601f01602080910402602001604051908101604052809291908181526020018280546104ea90611b77565b80156105375780601f1061050c57610100808354040283529160200191610537565b820191906000526020600020905b81548152906001019060200180831161051a57829003601f168201915b5050505050905090565b600061055561054e610c3a565b8484610c42565b6001905092915050565b6000600254905090565b6000610576848484610e0d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105c1610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890611c1b565b60405180910390fd5b6106558561064d610c3a565b858403610c42565b60019150509392505050565b600060056000838152602001908152602001600020600101549050919050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6106ae82610661565b6106bf816106ba610c3a565b61108e565b6106c9838361112b565b505050565b6000600860009054906101000a900460ff16905090565b6106ed610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461075a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075190611cad565b60405180910390fd5b610764828261120c565b5050565b600061080a610775610c3a565b848460016000610783610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108059190611cfc565b610c42565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600480546108d690611b77565b80601f016020809104026020016040519081016040528092919081815260200182805461090290611b77565b801561094f5780601f106109245761010080835404028352916020019161094f565b820191906000526020600020905b81548152906001019060200180831161093257829003601f168201915b5050505050905090565b61098a7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848610985610c3a565b61085c565b6109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c090611dc4565b60405180910390fd5b6109d382826112ee565b7f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df78282604051610a04929190611df3565b60405180910390a15050565b6000801b81565b60008060016000610a26610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90611e8e565b60405180910390fd5b610af7610aee610c3a565b85858403610c42565b600191505092915050565b6000610b16610b0f610c3a565b8484610e0d565b6001905092915050565b610b2982610661565b610b3a81610b35610c3a565b61108e565b610b44838361120c565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990611f20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990611fb2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e009190611969565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7490612044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee4906120d6565b60405180910390fd5b610ef88383836114c5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590612168565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110119190611cfc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110759190611969565b60405180910390a36110888484846114ca565b50505050565b611098828261085c565b611127576110bd8173ffffffffffffffffffffffffffffffffffffffff1660146114cf565b6110cb8360001c60206114cf565b6040516020016110dc92919061225c565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e9190611864565b60405180910390fd5b5050565b611135828261085c565b6112085760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111ad610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611216828261085c565b156112ea5760006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061128f610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590612308565b60405180910390fd5b61136a826000836114c5565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e79061239a565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461144791906123ba565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114ac9190611969565b60405180910390a36114c0836000846114ca565b505050565b505050565b505050565b6060600060028360026114e291906123ee565b6114ec9190611cfc565b67ffffffffffffffff81111561150557611504612448565b5b6040519080825280601f01601f1916602001820160405280156115375781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061156f5761156e612477565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106115d3576115d2612477565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261161391906123ee565b61161d9190611cfc565b90505b60018111156116bd577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061165f5761165e612477565b5b1a60f81b82828151811061167657611675612477565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806116b6906124a6565b9050611620565b5060008414611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061251c565b60405180910390fd5b8091505092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61174581611710565b811461175057600080fd5b50565b6000813590506117628161173c565b92915050565b60006020828403121561177e5761177d61170b565b5b600061178c84828501611753565b91505092915050565b60008115159050919050565b6117aa81611795565b82525050565b60006020820190506117c560008301846117a1565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156118055780820151818401526020810190506117ea565b83811115611814576000848401525b50505050565b6000601f19601f8301169050919050565b6000611836826117cb565b61184081856117d6565b93506118508185602086016117e7565b6118598161181a565b840191505092915050565b6000602082019050818103600083015261187e818461182b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118b182611886565b9050919050565b6118c1816118a6565b81146118cc57600080fd5b50565b6000813590506118de816118b8565b92915050565b6000819050919050565b6118f7816118e4565b811461190257600080fd5b50565b600081359050611914816118ee565b92915050565b600080604083850312156119315761193061170b565b5b600061193f858286016118cf565b925050602061195085828601611905565b9150509250929050565b611963816118e4565b82525050565b600060208201905061197e600083018461195a565b92915050565b60008060006060848603121561199d5761199c61170b565b5b60006119ab868287016118cf565b93505060206119bc868287016118cf565b92505060406119cd86828701611905565b9150509250925092565b6000819050919050565b6119ea816119d7565b81146119f557600080fd5b50565b600081359050611a07816119e1565b92915050565b600060208284031215611a2357611a2261170b565b5b6000611a31848285016119f8565b91505092915050565b611a43816119d7565b82525050565b6000602082019050611a5e6000830184611a3a565b92915050565b60008060408385031215611a7b57611a7a61170b565b5b6000611a89858286016119f8565b9250506020611a9a858286016118cf565b9150509250929050565b600060ff82169050919050565b611aba81611aa4565b82525050565b6000602082019050611ad56000830184611ab1565b92915050565b600060208284031215611af157611af061170b565b5b6000611aff848285016118cf565b91505092915050565b60008060408385031215611b1f57611b1e61170b565b5b6000611b2d858286016118cf565b9250506020611b3e858286016118cf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b8f57607f821691505b60208210811415611ba357611ba2611b48565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611c056028836117d6565b9150611c1082611ba9565b604082019050919050565b60006020820190508181036000830152611c3481611bf8565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611c97602f836117d6565b9150611ca282611c3b565b604082019050919050565b60006020820190508181036000830152611cc681611c8a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611d07826118e4565b9150611d12836118e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d4757611d46611ccd565b5b828201905092915050565b7f54555a4c4120546f6b656e3a2043616c6c6572206973206e6f7420612062757260008201527f6e65720000000000000000000000000000000000000000000000000000000000602082015250565b6000611dae6023836117d6565b9150611db982611d52565b604082019050919050565b60006020820190508181036000830152611ddd81611da1565b9050919050565b611ded816118a6565b82525050565b6000604082019050611e086000830185611de4565b611e15602083018461195a565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611e786025836117d6565b9150611e8382611e1c565b604082019050919050565b60006020820190508181036000830152611ea781611e6b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611f0a6024836117d6565b9150611f1582611eae565b604082019050919050565b60006020820190508181036000830152611f3981611efd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f9c6022836117d6565b9150611fa782611f40565b604082019050919050565b60006020820190508181036000830152611fcb81611f8f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061202e6025836117d6565b915061203982611fd2565b604082019050919050565b6000602082019050818103600083015261205d81612021565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006120c06023836117d6565b91506120cb82612064565b604082019050919050565b600060208201905081810360008301526120ef816120b3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006121526026836117d6565b915061215d826120f6565b604082019050919050565b6000602082019050818103600083015261218181612145565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006121c9601783612188565b91506121d482612193565b601782019050919050565b60006121ea826117cb565b6121f48185612188565b93506122048185602086016117e7565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000612246601183612188565b915061225182612210565b601182019050919050565b6000612267826121bc565b915061227382856121df565b915061227e82612239565b915061228a82846121df565b91508190509392505050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006122f26021836117d6565b91506122fd82612296565b604082019050919050565b60006020820190508181036000830152612321816122e5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006123846022836117d6565b915061238f82612328565b604082019050919050565b600060208201905081810360008301526123b381612377565b9050919050565b60006123c5826118e4565b91506123d0836118e4565b9250828210156123e3576123e2611ccd565b5b828203905092915050565b60006123f9826118e4565b9150612404836118e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561243d5761243c611ccd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006124b1826118e4565b915060008214156124c5576124c4611ccd565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006125066020836117d6565b9150612511826124d0565b602082019050919050565b60006020820190508181036000830152612535816124f9565b905091905056fea26469706673582212201188482fa6e86fd69457bd2b3ab4009701d882b299c6160b10a7a899bb8bc4c464736f6c634300080a0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806339509351116100ad578063a217fddf11610071578063a217fddf1461036b578063a457c2d714610389578063a9059cbb146103b9578063d547741f146103e9578063dd62ed3e146104055761012c565b806339509351146102a157806370a08231146102d157806391d148541461030157806395d89b41146103315780639dc29fac1461034f5761012c565b8063248a9ca3116100f4578063248a9ca3146101fd578063282c51f31461022d5780632f2ff15d1461024b578063313ce5671461026757806336568abe146102855761012c565b806301ffc9a71461013157806306fdde0314610161578063095ea7b31461017f57806318160ddd146101af57806323b872dd146101cd575b600080fd5b61014b60048036038101906101469190611768565b610435565b60405161015891906117b0565b60405180910390f35b6101696104af565b6040516101769190611864565b60405180910390f35b6101996004803603810190610194919061191a565b610541565b6040516101a691906117b0565b60405180910390f35b6101b761055f565b6040516101c49190611969565b60405180910390f35b6101e760048036038101906101e29190611984565b610569565b6040516101f491906117b0565b60405180910390f35b61021760048036038101906102129190611a0d565b610661565b6040516102249190611a49565b60405180910390f35b610235610681565b6040516102429190611a49565b60405180910390f35b61026560048036038101906102609190611a64565b6106a5565b005b61026f6106ce565b60405161027c9190611ac0565b60405180910390f35b61029f600480360381019061029a9190611a64565b6106e5565b005b6102bb60048036038101906102b6919061191a565b610768565b6040516102c891906117b0565b60405180910390f35b6102eb60048036038101906102e69190611adb565b610814565b6040516102f89190611969565b60405180910390f35b61031b60048036038101906103169190611a64565b61085c565b60405161032891906117b0565b60405180910390f35b6103396108c7565b6040516103469190611864565b60405180910390f35b6103696004803603810190610364919061191a565b610959565b005b610373610a10565b6040516103809190611a49565b60405180910390f35b6103a3600480360381019061039e919061191a565b610a17565b6040516103b091906117b0565b60405180910390f35b6103d360048036038101906103ce919061191a565b610b02565b6040516103e091906117b0565b60405180910390f35b61040360048036038101906103fe9190611a64565b610b20565b005b61041f600480360381019061041a9190611b08565b610b49565b60405161042c9190611969565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a857506104a782610bd0565b5b9050919050565b6060600380546104be90611b77565b80601f01602080910402602001604051908101604052809291908181526020018280546104ea90611b77565b80156105375780601f1061050c57610100808354040283529160200191610537565b820191906000526020600020905b81548152906001019060200180831161051a57829003601f168201915b5050505050905090565b600061055561054e610c3a565b8484610c42565b6001905092915050565b6000600254905090565b6000610576848484610e0d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105c1610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890611c1b565b60405180910390fd5b6106558561064d610c3a565b858403610c42565b60019150509392505050565b600060056000838152602001908152602001600020600101549050919050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6106ae82610661565b6106bf816106ba610c3a565b61108e565b6106c9838361112b565b505050565b6000600860009054906101000a900460ff16905090565b6106ed610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461075a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075190611cad565b60405180910390fd5b610764828261120c565b5050565b600061080a610775610c3a565b848460016000610783610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108059190611cfc565b610c42565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600480546108d690611b77565b80601f016020809104026020016040519081016040528092919081815260200182805461090290611b77565b801561094f5780601f106109245761010080835404028352916020019161094f565b820191906000526020600020905b81548152906001019060200180831161093257829003601f168201915b5050505050905090565b61098a7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848610985610c3a565b61085c565b6109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c090611dc4565b60405180910390fd5b6109d382826112ee565b7f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df78282604051610a04929190611df3565b60405180910390a15050565b6000801b81565b60008060016000610a26610c3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90611e8e565b60405180910390fd5b610af7610aee610c3a565b85858403610c42565b600191505092915050565b6000610b16610b0f610c3a565b8484610e0d565b6001905092915050565b610b2982610661565b610b3a81610b35610c3a565b61108e565b610b44838361120c565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990611f20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990611fb2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e009190611969565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7490612044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee4906120d6565b60405180910390fd5b610ef88383836114c5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590612168565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110119190611cfc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110759190611969565b60405180910390a36110888484846114ca565b50505050565b611098828261085c565b611127576110bd8173ffffffffffffffffffffffffffffffffffffffff1660146114cf565b6110cb8360001c60206114cf565b6040516020016110dc92919061225c565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e9190611864565b60405180910390fd5b5050565b611135828261085c565b6112085760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111ad610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611216828261085c565b156112ea5760006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061128f610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590612308565b60405180910390fd5b61136a826000836114c5565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e79061239a565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461144791906123ba565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114ac9190611969565b60405180910390a36114c0836000846114ca565b505050565b505050565b505050565b6060600060028360026114e291906123ee565b6114ec9190611cfc565b67ffffffffffffffff81111561150557611504612448565b5b6040519080825280601f01601f1916602001820160405280156115375781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061156f5761156e612477565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106115d3576115d2612477565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261161391906123ee565b61161d9190611cfc565b90505b60018111156116bd577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061165f5761165e612477565b5b1a60f81b82828151811061167657611675612477565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806116b6906124a6565b9050611620565b5060008414611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061251c565b60405180910390fd5b8091505092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61174581611710565b811461175057600080fd5b50565b6000813590506117628161173c565b92915050565b60006020828403121561177e5761177d61170b565b5b600061178c84828501611753565b91505092915050565b60008115159050919050565b6117aa81611795565b82525050565b60006020820190506117c560008301846117a1565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156118055780820151818401526020810190506117ea565b83811115611814576000848401525b50505050565b6000601f19601f8301169050919050565b6000611836826117cb565b61184081856117d6565b93506118508185602086016117e7565b6118598161181a565b840191505092915050565b6000602082019050818103600083015261187e818461182b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118b182611886565b9050919050565b6118c1816118a6565b81146118cc57600080fd5b50565b6000813590506118de816118b8565b92915050565b6000819050919050565b6118f7816118e4565b811461190257600080fd5b50565b600081359050611914816118ee565b92915050565b600080604083850312156119315761193061170b565b5b600061193f858286016118cf565b925050602061195085828601611905565b9150509250929050565b611963816118e4565b82525050565b600060208201905061197e600083018461195a565b92915050565b60008060006060848603121561199d5761199c61170b565b5b60006119ab868287016118cf565b93505060206119bc868287016118cf565b92505060406119cd86828701611905565b9150509250925092565b6000819050919050565b6119ea816119d7565b81146119f557600080fd5b50565b600081359050611a07816119e1565b92915050565b600060208284031215611a2357611a2261170b565b5b6000611a31848285016119f8565b91505092915050565b611a43816119d7565b82525050565b6000602082019050611a5e6000830184611a3a565b92915050565b60008060408385031215611a7b57611a7a61170b565b5b6000611a89858286016119f8565b9250506020611a9a858286016118cf565b9150509250929050565b600060ff82169050919050565b611aba81611aa4565b82525050565b6000602082019050611ad56000830184611ab1565b92915050565b600060208284031215611af157611af061170b565b5b6000611aff848285016118cf565b91505092915050565b60008060408385031215611b1f57611b1e61170b565b5b6000611b2d858286016118cf565b9250506020611b3e858286016118cf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b8f57607f821691505b60208210811415611ba357611ba2611b48565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611c056028836117d6565b9150611c1082611ba9565b604082019050919050565b60006020820190508181036000830152611c3481611bf8565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611c97602f836117d6565b9150611ca282611c3b565b604082019050919050565b60006020820190508181036000830152611cc681611c8a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611d07826118e4565b9150611d12836118e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d4757611d46611ccd565b5b828201905092915050565b7f54555a4c4120546f6b656e3a2043616c6c6572206973206e6f7420612062757260008201527f6e65720000000000000000000000000000000000000000000000000000000000602082015250565b6000611dae6023836117d6565b9150611db982611d52565b604082019050919050565b60006020820190508181036000830152611ddd81611da1565b9050919050565b611ded816118a6565b82525050565b6000604082019050611e086000830185611de4565b611e15602083018461195a565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611e786025836117d6565b9150611e8382611e1c565b604082019050919050565b60006020820190508181036000830152611ea781611e6b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611f0a6024836117d6565b9150611f1582611eae565b604082019050919050565b60006020820190508181036000830152611f3981611efd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f9c6022836117d6565b9150611fa782611f40565b604082019050919050565b60006020820190508181036000830152611fcb81611f8f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061202e6025836117d6565b915061203982611fd2565b604082019050919050565b6000602082019050818103600083015261205d81612021565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006120c06023836117d6565b91506120cb82612064565b604082019050919050565b600060208201905081810360008301526120ef816120b3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006121526026836117d6565b915061215d826120f6565b604082019050919050565b6000602082019050818103600083015261218181612145565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006121c9601783612188565b91506121d482612193565b601782019050919050565b60006121ea826117cb565b6121f48185612188565b93506122048185602086016117e7565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000612246601183612188565b915061225182612210565b601182019050919050565b6000612267826121bc565b915061227382856121df565b915061227e82612239565b915061228a82846121df565b91508190509392505050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006122f26021836117d6565b91506122fd82612296565b604082019050919050565b60006020820190508181036000830152612321816122e5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006123846022836117d6565b915061238f82612328565b604082019050919050565b600060208201905081810360008301526123b381612377565b9050919050565b60006123c5826118e4565b91506123d0836118e4565b9250828210156123e3576123e2611ccd565b5b828203905092915050565b60006123f9826118e4565b9150612404836118e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561243d5761243c611ccd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006124b1826118e4565b915060008214156124c5576124c4611ccd565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006125066020836117d6565b9150612511826124d0565b602082019050919050565b60006020820190508181036000830152612535816124f9565b905091905056fea26469706673582212201188482fa6e86fd69457bd2b3ab4009701d882b299c6160b10a7a899bb8bc4c464736f6c634300080a0033
Deployed Bytecode Sourcemap
31316:881:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10548:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21251:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23418:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22371:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24069:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11959:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31539:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12344:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32091:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13392:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24970:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22542:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10844:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21470:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31865:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9935:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25688:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22882:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12736:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23120:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10548:204;10633:4;10672:32;10657:47;;;:11;:47;;;;:87;;;;10708:36;10732:11;10708:23;:36::i;:::-;10657:87;10650:94;;10548:204;;;:::o;21251:100::-;21305:13;21338:5;21331:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21251:100;:::o;23418:169::-;23501:4;23518:39;23527:12;:10;:12::i;:::-;23541:7;23550:6;23518:8;:39::i;:::-;23575:4;23568:11;;23418:169;;;;:::o;22371:108::-;22432:7;22459:12;;22452:19;;22371:108;:::o;24069:492::-;24209:4;24226:36;24236:6;24244:9;24255:6;24226:9;:36::i;:::-;24275:24;24302:11;:19;24314:6;24302:19;;;;;;;;;;;;;;;:33;24322:12;:10;:12::i;:::-;24302:33;;;;;;;;;;;;;;;;24275:60;;24374:6;24354:16;:26;;24346:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;24461:57;24470:6;24478:12;:10;:12::i;:::-;24511:6;24492:16;:25;24461:8;:57::i;:::-;24549:4;24542:11;;;24069:492;;;;;:::o;11959:123::-;12025:7;12052:6;:12;12059:4;12052:12;;;;;;;;;;;:22;;;12045:29;;11959:123;;;:::o;31539:62::-;31577:24;31539:62;:::o;12344:147::-;12427:18;12440:4;12427:12;:18::i;:::-;10426:30;10437:4;10443:12;:10;:12::i;:::-;10426:10;:30::i;:::-;12458:25:::1;12469:4;12475:7;12458:10;:25::i;:::-;12344:147:::0;;;:::o;32091:101::-;32149:5;32174:10;;;;;;;;;;;32167:17;;32091:101;:::o;13392:218::-;13499:12;:10;:12::i;:::-;13488:23;;:7;:23;;;13480:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;13576:26;13588:4;13594:7;13576:11;:26::i;:::-;13392:218;;:::o;24970:215::-;25058:4;25075:80;25084:12;:10;:12::i;:::-;25098:7;25144:10;25107:11;:25;25119:12;:10;:12::i;:::-;25107:25;;;;;;;;;;;;;;;:34;25133:7;25107:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;25075:8;:80::i;:::-;25173:4;25166:11;;24970:215;;;;:::o;22542:127::-;22616:7;22643:9;:18;22653:7;22643:18;;;;;;;;;;;;;;;;22636:25;;22542:127;;;:::o;10844:139::-;10922:4;10946:6;:12;10953:4;10946:12;;;;;;;;;;;:20;;:29;10967:7;10946:29;;;;;;;;;;;;;;;;;;;;;;;;;10939:36;;10844:139;;;;:::o;21470:104::-;21526:13;21559:7;21552:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21470:104;:::o;31865:218::-;31935:34;31577:24;31956:12;:10;:12::i;:::-;31935:7;:34::i;:::-;31927:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;32020:19;32026:4;32032:6;32020:5;:19::i;:::-;32055:20;32062:4;32068:6;32055:20;;;;;;;:::i;:::-;;;;;;;;31865:218;;:::o;9935:49::-;9980:4;9935:49;;;:::o;25688:413::-;25781:4;25798:24;25825:11;:25;25837:12;:10;:12::i;:::-;25825:25;;;;;;;;;;;;;;;:34;25851:7;25825:34;;;;;;;;;;;;;;;;25798:61;;25898:15;25878:16;:35;;25870:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;25991:67;26000:12;:10;:12::i;:::-;26014:7;26042:15;26023:16;:34;25991:8;:67::i;:::-;26089:4;26082:11;;;25688:413;;;;:::o;22882:175::-;22968:4;22985:42;22995:12;:10;:12::i;:::-;23009:9;23020:6;22985:9;:42::i;:::-;23045:4;23038:11;;22882:175;;;;:::o;12736:149::-;12820:18;12833:4;12820:12;:18::i;:::-;10426:30;10437:4;10443:12;:10;:12::i;:::-;10426:10;:30::i;:::-;12851:26:::1;12863:4;12869:7;12851:11;:26::i;:::-;12736:149:::0;;;:::o;23120:151::-;23209:7;23236:11;:18;23248:5;23236:18;;;;;;;;;;;;;;;:27;23255:7;23236:27;;;;;;;;;;;;;;;;23229:34;;23120:151;;;;:::o;7820:157::-;7905:4;7944:25;7929:40;;;:11;:40;;;;7922:47;;7820:157;;;:::o;3712:98::-;3765:7;3792:10;3785:17;;3712:98;:::o;29372:380::-;29525:1;29508:19;;:5;:19;;;;29500:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29606:1;29587:21;;:7;:21;;;;29579:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29690:6;29660:11;:18;29672:5;29660:18;;;;;;;;;;;;;;;:27;29679:7;29660:27;;;;;;;;;;;;;;;:36;;;;29728:7;29712:32;;29721:5;29712:32;;;29737:6;29712:32;;;;;;:::i;:::-;;;;;;;;29372:380;;;:::o;26591:733::-;26749:1;26731:20;;:6;:20;;;;26723:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26833:1;26812:23;;:9;:23;;;;26804:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26888:47;26909:6;26917:9;26928:6;26888:20;:47::i;:::-;26948:21;26972:9;:17;26982:6;26972:17;;;;;;;;;;;;;;;;26948:41;;27025:6;27008:13;:23;;27000:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;27146:6;27130:13;:22;27110:9;:17;27120:6;27110:17;;;;;;;;;;;;;;;:42;;;;27198:6;27174:9;:20;27184:9;27174:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;27239:9;27222:35;;27231:6;27222:35;;;27250:6;27222:35;;;;;;:::i;:::-;;;;;;;;27270:46;27290:6;27298:9;27309:6;27270:19;:46::i;:::-;26712:612;26591:733;;;:::o;11273:497::-;11354:22;11362:4;11368:7;11354;:22::i;:::-;11349:414;;11542:41;11570:7;11542:41;;11580:2;11542:19;:41::i;:::-;11656:38;11684:4;11676:13;;11691:2;11656:19;:38::i;:::-;11447:270;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11393:358;;;;;;;;;;;:::i;:::-;;;;;;;;11349:414;11273:497;;:::o;14893:238::-;14977:22;14985:4;14991:7;14977;:22::i;:::-;14972:152;;15048:4;15016:6;:12;15023:4;15016:12;;;;;;;;;;;:20;;:29;15037:7;15016:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;15099:12;:10;:12::i;:::-;15072:40;;15090:7;15072:40;;15084:4;15072:40;;;;;;;;;;14972:152;14893:238;;:::o;15263:239::-;15347:22;15355:4;15361:7;15347;:22::i;:::-;15343:152;;;15418:5;15386:6;:12;15393:4;15386:12;;;;;;;;;;;:20;;:29;15407:7;15386:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15470:12;:10;:12::i;:::-;15443:40;;15461:7;15443:40;;15455:4;15443:40;;;;;;;;;;15343:152;15263:239;;:::o;28343:591::-;28446:1;28427:21;;:7;:21;;;;28419:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28499:49;28520:7;28537:1;28541:6;28499:20;:49::i;:::-;28561:22;28586:9;:18;28596:7;28586:18;;;;;;;;;;;;;;;;28561:43;;28641:6;28623:14;:24;;28615:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28760:6;28743:14;:23;28722:9;:18;28732:7;28722:18;;;;;;;;;;;;;;;:44;;;;28804:6;28788:12;;:22;;;;;;;:::i;:::-;;;;;;;;28854:1;28828:37;;28837:7;28828:37;;;28858:6;28828:37;;;;;;:::i;:::-;;;;;;;;28878:48;28898:7;28915:1;28919:6;28878:19;:48::i;:::-;28408:526;28343:591;;:::o;30352:125::-;;;;:::o;31081:124::-;;;;:::o;5588:451::-;5663:13;5689:19;5734:1;5725:6;5721:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;5711:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5689:47;;5747:15;:6;5754:1;5747:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;5773;:6;5780:1;5773:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;5804:9;5829:1;5820:6;5816:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;5804:26;;5799:135;5836:1;5832;:5;5799:135;;;5871:12;5892:3;5884:5;:11;5871:25;;;;;;;:::i;:::-;;;;;5859:6;5866:1;5859:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;5921:1;5911:11;;;;;5839:3;;;;:::i;:::-;;;5799:135;;;;5961:1;5952:5;:10;5944:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;6024:6;6010:21;;;5588:451;;;;:::o;88:117:1:-;197:1;194;187:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:126::-;2945:7;2985:42;2978:5;2974:54;2963:65;;2908:126;;;:::o;3040:96::-;3077:7;3106:24;3124:5;3106:24;:::i;:::-;3095:35;;3040:96;;;:::o;3142:122::-;3215:24;3233:5;3215:24;:::i;:::-;3208:5;3205:35;3195:63;;3254:1;3251;3244:12;3195:63;3142:122;:::o;3270:139::-;3316:5;3354:6;3341:20;3332:29;;3370:33;3397:5;3370:33;:::i;:::-;3270:139;;;;:::o;3415:77::-;3452:7;3481:5;3470:16;;3415:77;;;:::o;3498:122::-;3571:24;3589:5;3571:24;:::i;:::-;3564:5;3561:35;3551:63;;3610:1;3607;3600:12;3551:63;3498:122;:::o;3626:139::-;3672:5;3710:6;3697:20;3688:29;;3726:33;3753:5;3726:33;:::i;:::-;3626:139;;;;:::o;3771:474::-;3839:6;3847;3896:2;3884:9;3875:7;3871:23;3867:32;3864:119;;;3902:79;;:::i;:::-;3864:119;4022:1;4047:53;4092:7;4083:6;4072:9;4068:22;4047:53;:::i;:::-;4037:63;;3993:117;4149:2;4175:53;4220:7;4211:6;4200:9;4196:22;4175:53;:::i;:::-;4165:63;;4120:118;3771:474;;;;;:::o;4251:118::-;4338:24;4356:5;4338:24;:::i;:::-;4333:3;4326:37;4251:118;;:::o;4375:222::-;4468:4;4506:2;4495:9;4491:18;4483:26;;4519:71;4587:1;4576:9;4572:17;4563:6;4519:71;:::i;:::-;4375:222;;;;:::o;4603:619::-;4680:6;4688;4696;4745:2;4733:9;4724:7;4720:23;4716:32;4713:119;;;4751:79;;:::i;:::-;4713:119;4871:1;4896:53;4941:7;4932:6;4921:9;4917:22;4896:53;:::i;:::-;4886:63;;4842:117;4998:2;5024:53;5069:7;5060:6;5049:9;5045:22;5024:53;:::i;:::-;5014:63;;4969:118;5126:2;5152:53;5197:7;5188:6;5177:9;5173:22;5152:53;:::i;:::-;5142:63;;5097:118;4603:619;;;;;:::o;5228:77::-;5265:7;5294:5;5283:16;;5228:77;;;:::o;5311:122::-;5384:24;5402:5;5384:24;:::i;:::-;5377:5;5374:35;5364:63;;5423:1;5420;5413:12;5364:63;5311:122;:::o;5439:139::-;5485:5;5523:6;5510:20;5501:29;;5539:33;5566:5;5539:33;:::i;:::-;5439:139;;;;:::o;5584:329::-;5643:6;5692:2;5680:9;5671:7;5667:23;5663:32;5660:119;;;5698:79;;:::i;:::-;5660:119;5818:1;5843:53;5888:7;5879:6;5868:9;5864:22;5843:53;:::i;:::-;5833:63;;5789:117;5584:329;;;;:::o;5919:118::-;6006:24;6024:5;6006:24;:::i;:::-;6001:3;5994:37;5919:118;;:::o;6043:222::-;6136:4;6174:2;6163:9;6159:18;6151:26;;6187:71;6255:1;6244:9;6240:17;6231:6;6187:71;:::i;:::-;6043:222;;;;:::o;6271:474::-;6339:6;6347;6396:2;6384:9;6375:7;6371:23;6367:32;6364:119;;;6402:79;;:::i;:::-;6364:119;6522:1;6547:53;6592:7;6583:6;6572:9;6568:22;6547:53;:::i;:::-;6537:63;;6493:117;6649:2;6675:53;6720:7;6711:6;6700:9;6696:22;6675:53;:::i;:::-;6665:63;;6620:118;6271:474;;;;;:::o;6751:86::-;6786:7;6826:4;6819:5;6815:16;6804:27;;6751:86;;;:::o;6843:112::-;6926:22;6942:5;6926:22;:::i;:::-;6921:3;6914:35;6843:112;;:::o;6961:214::-;7050:4;7088:2;7077:9;7073:18;7065:26;;7101:67;7165:1;7154:9;7150:17;7141:6;7101:67;:::i;:::-;6961:214;;;;:::o;7181:329::-;7240:6;7289:2;7277:9;7268:7;7264:23;7260:32;7257:119;;;7295:79;;:::i;:::-;7257:119;7415:1;7440:53;7485:7;7476:6;7465:9;7461:22;7440:53;:::i;:::-;7430:63;;7386:117;7181:329;;;;:::o;7516:474::-;7584:6;7592;7641:2;7629:9;7620:7;7616:23;7612:32;7609:119;;;7647:79;;:::i;:::-;7609:119;7767:1;7792:53;7837:7;7828:6;7817:9;7813:22;7792:53;:::i;:::-;7782:63;;7738:117;7894:2;7920:53;7965:7;7956:6;7945:9;7941:22;7920:53;:::i;:::-;7910:63;;7865:118;7516:474;;;;;:::o;7996:180::-;8044:77;8041:1;8034:88;8141:4;8138:1;8131:15;8165:4;8162:1;8155:15;8182:320;8226:6;8263:1;8257:4;8253:12;8243:22;;8310:1;8304:4;8300:12;8331:18;8321:81;;8387:4;8379:6;8375:17;8365:27;;8321:81;8449:2;8441:6;8438:14;8418:18;8415:38;8412:84;;;8468:18;;:::i;:::-;8412:84;8233:269;8182:320;;;:::o;8508:227::-;8648:34;8644:1;8636:6;8632:14;8625:58;8717:10;8712:2;8704:6;8700:15;8693:35;8508:227;:::o;8741:366::-;8883:3;8904:67;8968:2;8963:3;8904:67;:::i;:::-;8897:74;;8980:93;9069:3;8980:93;:::i;:::-;9098:2;9093:3;9089:12;9082:19;;8741:366;;;:::o;9113:419::-;9279:4;9317:2;9306:9;9302:18;9294:26;;9366:9;9360:4;9356:20;9352:1;9341:9;9337:17;9330:47;9394:131;9520:4;9394:131;:::i;:::-;9386:139;;9113:419;;;:::o;9538:234::-;9678:34;9674:1;9666:6;9662:14;9655:58;9747:17;9742:2;9734:6;9730:15;9723:42;9538:234;:::o;9778:366::-;9920:3;9941:67;10005:2;10000:3;9941:67;:::i;:::-;9934:74;;10017:93;10106:3;10017:93;:::i;:::-;10135:2;10130:3;10126:12;10119:19;;9778:366;;;:::o;10150:419::-;10316:4;10354:2;10343:9;10339:18;10331:26;;10403:9;10397:4;10393:20;10389:1;10378:9;10374:17;10367:47;10431:131;10557:4;10431:131;:::i;:::-;10423:139;;10150:419;;;:::o;10575:180::-;10623:77;10620:1;10613:88;10720:4;10717:1;10710:15;10744:4;10741:1;10734:15;10761:305;10801:3;10820:20;10838:1;10820:20;:::i;:::-;10815:25;;10854:20;10872:1;10854:20;:::i;:::-;10849:25;;11008:1;10940:66;10936:74;10933:1;10930:81;10927:107;;;11014:18;;:::i;:::-;10927:107;11058:1;11055;11051:9;11044:16;;10761:305;;;;:::o;11072:222::-;11212:34;11208:1;11200:6;11196:14;11189:58;11281:5;11276:2;11268:6;11264:15;11257:30;11072:222;:::o;11300:366::-;11442:3;11463:67;11527:2;11522:3;11463:67;:::i;:::-;11456:74;;11539:93;11628:3;11539:93;:::i;:::-;11657:2;11652:3;11648:12;11641:19;;11300:366;;;:::o;11672:419::-;11838:4;11876:2;11865:9;11861:18;11853:26;;11925:9;11919:4;11915:20;11911:1;11900:9;11896:17;11889:47;11953:131;12079:4;11953:131;:::i;:::-;11945:139;;11672:419;;;:::o;12097:118::-;12184:24;12202:5;12184:24;:::i;:::-;12179:3;12172:37;12097:118;;:::o;12221:332::-;12342:4;12380:2;12369:9;12365:18;12357:26;;12393:71;12461:1;12450:9;12446:17;12437:6;12393:71;:::i;:::-;12474:72;12542:2;12531:9;12527:18;12518:6;12474:72;:::i;:::-;12221:332;;;;;:::o;12559:224::-;12699:34;12695:1;12687:6;12683:14;12676:58;12768:7;12763:2;12755:6;12751:15;12744:32;12559:224;:::o;12789:366::-;12931:3;12952:67;13016:2;13011:3;12952:67;:::i;:::-;12945:74;;13028:93;13117:3;13028:93;:::i;:::-;13146:2;13141:3;13137:12;13130:19;;12789:366;;;:::o;13161:419::-;13327:4;13365:2;13354:9;13350:18;13342:26;;13414:9;13408:4;13404:20;13400:1;13389:9;13385:17;13378:47;13442:131;13568:4;13442:131;:::i;:::-;13434:139;;13161:419;;;:::o;13586:223::-;13726:34;13722:1;13714:6;13710:14;13703:58;13795:6;13790:2;13782:6;13778:15;13771:31;13586:223;:::o;13815:366::-;13957:3;13978:67;14042:2;14037:3;13978:67;:::i;:::-;13971:74;;14054:93;14143:3;14054:93;:::i;:::-;14172:2;14167:3;14163:12;14156:19;;13815:366;;;:::o;14187:419::-;14353:4;14391:2;14380:9;14376:18;14368:26;;14440:9;14434:4;14430:20;14426:1;14415:9;14411:17;14404:47;14468:131;14594:4;14468:131;:::i;:::-;14460:139;;14187:419;;;:::o;14612:221::-;14752:34;14748:1;14740:6;14736:14;14729:58;14821:4;14816:2;14808:6;14804:15;14797:29;14612:221;:::o;14839:366::-;14981:3;15002:67;15066:2;15061:3;15002:67;:::i;:::-;14995:74;;15078:93;15167:3;15078:93;:::i;:::-;15196:2;15191:3;15187:12;15180:19;;14839:366;;;:::o;15211:419::-;15377:4;15415:2;15404:9;15400:18;15392:26;;15464:9;15458:4;15454:20;15450:1;15439:9;15435:17;15428:47;15492:131;15618:4;15492:131;:::i;:::-;15484:139;;15211:419;;;:::o;15636:224::-;15776:34;15772:1;15764:6;15760:14;15753:58;15845:7;15840:2;15832:6;15828:15;15821:32;15636:224;:::o;15866:366::-;16008:3;16029:67;16093:2;16088:3;16029:67;:::i;:::-;16022:74;;16105:93;16194:3;16105:93;:::i;:::-;16223:2;16218:3;16214:12;16207:19;;15866:366;;;:::o;16238:419::-;16404:4;16442:2;16431:9;16427:18;16419:26;;16491:9;16485:4;16481:20;16477:1;16466:9;16462:17;16455:47;16519:131;16645:4;16519:131;:::i;:::-;16511:139;;16238:419;;;:::o;16663:222::-;16803:34;16799:1;16791:6;16787:14;16780:58;16872:5;16867:2;16859:6;16855:15;16848:30;16663:222;:::o;16891:366::-;17033:3;17054:67;17118:2;17113:3;17054:67;:::i;:::-;17047:74;;17130:93;17219:3;17130:93;:::i;:::-;17248:2;17243:3;17239:12;17232:19;;16891:366;;;:::o;17263:419::-;17429:4;17467:2;17456:9;17452:18;17444:26;;17516:9;17510:4;17506:20;17502:1;17491:9;17487:17;17480:47;17544:131;17670:4;17544:131;:::i;:::-;17536:139;;17263:419;;;:::o;17688:225::-;17828:34;17824:1;17816:6;17812:14;17805:58;17897:8;17892:2;17884:6;17880:15;17873:33;17688:225;:::o;17919:366::-;18061:3;18082:67;18146:2;18141:3;18082:67;:::i;:::-;18075:74;;18158:93;18247:3;18158:93;:::i;:::-;18276:2;18271:3;18267:12;18260:19;;17919:366;;;:::o;18291:419::-;18457:4;18495:2;18484:9;18480:18;18472:26;;18544:9;18538:4;18534:20;18530:1;18519:9;18515:17;18508:47;18572:131;18698:4;18572:131;:::i;:::-;18564:139;;18291:419;;;:::o;18716:148::-;18818:11;18855:3;18840:18;;18716:148;;;;:::o;18870:173::-;19010:25;19006:1;18998:6;18994:14;18987:49;18870:173;:::o;19049:402::-;19209:3;19230:85;19312:2;19307:3;19230:85;:::i;:::-;19223:92;;19324:93;19413:3;19324:93;:::i;:::-;19442:2;19437:3;19433:12;19426:19;;19049:402;;;:::o;19457:377::-;19563:3;19591:39;19624:5;19591:39;:::i;:::-;19646:89;19728:6;19723:3;19646:89;:::i;:::-;19639:96;;19744:52;19789:6;19784:3;19777:4;19770:5;19766:16;19744:52;:::i;:::-;19821:6;19816:3;19812:16;19805:23;;19567:267;19457:377;;;;:::o;19840:167::-;19980:19;19976:1;19968:6;19964:14;19957:43;19840:167;:::o;20013:402::-;20173:3;20194:85;20276:2;20271:3;20194:85;:::i;:::-;20187:92;;20288:93;20377:3;20288:93;:::i;:::-;20406:2;20401:3;20397:12;20390:19;;20013:402;;;:::o;20421:967::-;20803:3;20825:148;20969:3;20825:148;:::i;:::-;20818:155;;20990:95;21081:3;21072:6;20990:95;:::i;:::-;20983:102;;21102:148;21246:3;21102:148;:::i;:::-;21095:155;;21267:95;21358:3;21349:6;21267:95;:::i;:::-;21260:102;;21379:3;21372:10;;20421:967;;;;;:::o;21394:220::-;21534:34;21530:1;21522:6;21518:14;21511:58;21603:3;21598:2;21590:6;21586:15;21579:28;21394:220;:::o;21620:366::-;21762:3;21783:67;21847:2;21842:3;21783:67;:::i;:::-;21776:74;;21859:93;21948:3;21859:93;:::i;:::-;21977:2;21972:3;21968:12;21961:19;;21620:366;;;:::o;21992:419::-;22158:4;22196:2;22185:9;22181:18;22173:26;;22245:9;22239:4;22235:20;22231:1;22220:9;22216:17;22209:47;22273:131;22399:4;22273:131;:::i;:::-;22265:139;;21992:419;;;:::o;22417:221::-;22557:34;22553:1;22545:6;22541:14;22534:58;22626:4;22621:2;22613:6;22609:15;22602:29;22417:221;:::o;22644:366::-;22786:3;22807:67;22871:2;22866:3;22807:67;:::i;:::-;22800:74;;22883:93;22972:3;22883:93;:::i;:::-;23001:2;22996:3;22992:12;22985:19;;22644:366;;;:::o;23016:419::-;23182:4;23220:2;23209:9;23205:18;23197:26;;23269:9;23263:4;23259:20;23255:1;23244:9;23240:17;23233:47;23297:131;23423:4;23297:131;:::i;:::-;23289:139;;23016:419;;;:::o;23441:191::-;23481:4;23501:20;23519:1;23501:20;:::i;:::-;23496:25;;23535:20;23553:1;23535:20;:::i;:::-;23530:25;;23574:1;23571;23568:8;23565:34;;;23579:18;;:::i;:::-;23565:34;23624:1;23621;23617:9;23609:17;;23441:191;;;;:::o;23638:348::-;23678:7;23701:20;23719:1;23701:20;:::i;:::-;23696:25;;23735:20;23753:1;23735:20;:::i;:::-;23730:25;;23923:1;23855:66;23851:74;23848:1;23845:81;23840:1;23833:9;23826:17;23822:105;23819:131;;;23930:18;;:::i;:::-;23819:131;23978:1;23975;23971:9;23960:20;;23638:348;;;;:::o;23992:180::-;24040:77;24037:1;24030:88;24137:4;24134:1;24127:15;24161:4;24158:1;24151:15;24178:180;24226:77;24223:1;24216:88;24323:4;24320:1;24313:15;24347:4;24344:1;24337:15;24364:171;24403:3;24426:24;24444:5;24426:24;:::i;:::-;24417:33;;24472:4;24465:5;24462:15;24459:41;;;24480:18;;:::i;:::-;24459:41;24527:1;24520:5;24516:13;24509:20;;24364:171;;;:::o;24541:182::-;24681:34;24677:1;24669:6;24665:14;24658:58;24541:182;:::o;24729:366::-;24871:3;24892:67;24956:2;24951:3;24892:67;:::i;:::-;24885:74;;24968:93;25057:3;24968:93;:::i;:::-;25086:2;25081:3;25077:12;25070:19;;24729:366;;;:::o;25101:419::-;25267:4;25305:2;25294:9;25290:18;25282:26;;25354:9;25348:4;25344:20;25340:1;25329:9;25325:17;25318:47;25382:131;25508:4;25382:131;:::i;:::-;25374:139;;25101:419;;;:::o
Swarm Source
ipfs://1188482fa6e86fd69457bd2b3ab4009701d882b299c6160b10a7a899bb8bc4c4
Loading...
Loading
Loading...
Loading
OVERVIEW
Tuzlaspor Token is the official fan token of the Tuzlaspor Football Club, a sports club taking place in the Turkish Super League.Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.