More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 7,765 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 70441435 | 29 mins ago | IN | 0 POL | 0.00141738 | ||||
Transfer | 70436174 | 3 hrs ago | IN | 0 POL | 0.0016516 | ||||
Transfer | 70435733 | 3 hrs ago | IN | 0 POL | 0.00163974 | ||||
Transfer | 70425650 | 9 hrs ago | IN | 0 POL | 0.0016516 | ||||
Transfer | 70424879 | 10 hrs ago | IN | 0 POL | 0.0016401 | ||||
Approve | 70423565 | 11 hrs ago | IN | 0 POL | 0.0008961 | ||||
Approve | 70423544 | 11 hrs ago | IN | 0 POL | 0.00081174 | ||||
Approve | 70423495 | 11 hrs ago | IN | 0 POL | 0.00140874 | ||||
Transfer | 70423454 | 11 hrs ago | IN | 0 POL | 0.00112674 | ||||
Transfer | 70423362 | 11 hrs ago | IN | 0 POL | 0.00112674 | ||||
Approve | 70423178 | 11 hrs ago | IN | 0 POL | 0.00141738 | ||||
Approve | 70422804 | 11 hrs ago | IN | 0 POL | 0.00080994 | ||||
Approve | 70422776 | 11 hrs ago | IN | 0 POL | 0.00140694 | ||||
Approve | 70419905 | 13 hrs ago | IN | 0 POL | 0.00141522 | ||||
Approve | 70418266 | 14 hrs ago | IN | 0 POL | 0.00141738 | ||||
Approve | 70418132 | 14 hrs ago | IN | 0 POL | 0.00354255 | ||||
Approve | 70417441 | 14 hrs ago | IN | 0 POL | 0.00141738 | ||||
Approve | 70414626 | 16 hrs ago | IN | 0 POL | 0.0014091 | ||||
Transfer | 70412750 | 17 hrs ago | IN | 0 POL | 0.00163974 | ||||
Transfer | 70412391 | 17 hrs ago | IN | 0 POL | 0.0016516 | ||||
Transfer | 70412205 | 17 hrs ago | IN | 0 POL | 0.00165281 | ||||
Transfer | 70411756 | 18 hrs ago | IN | 0 POL | 0.00306084 | ||||
Transfer | 70411600 | 18 hrs ago | IN | 0 POL | 0.00163974 | ||||
Transfer | 70411441 | 18 hrs ago | IN | 0 POL | 0.00165281 | ||||
Transfer | 70411420 | 18 hrs ago | IN | 0 POL | 0.00174629 |
Loading...
Loading
Contract Name:
PathEarn
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-09-02 */ /* _______ ________ _______ __ __ ________ _______ ______ ______ ______ / \ / |/ \ / \ / | / |/ \ / \ / \ / \ $$$$$$$ |$$$$$$$$/ $$$$$$$ |$$ \ $$ | $$$$$$$$/ $$$$$$$ |/$$$$$$ | /$$$$$$ |/$$$$$$ | $$ |__$$ | $$ | $$ |__$$ |$$$ \$$ | $$ |__ $$ |__$$ |$$ | $$/ ______$$____$$ |$$$ \$$ | $$ $$/ $$ | $$ $$< $$$$ $$ | $$ | $$ $$< $$ | / |/ $$/ $$$$ $$ | $$$$$$$/ $$ | $$$$$$$ |$$ $$ $$ | $$$$$/ $$$$$$$ |$$ | __$$$$$$//$$$$$$/ $$ $$ $$ | $$ | $$ | $$ | $$ |$$ |$$$$ | $$ |_____ $$ | $$ |$$ \__/ | $$ |_____ $$ \$$$$ | $$ | $$ | $$ | $$ |$$ | $$$ | $$ |$$ | $$ |$$ $$/ $$ |$$ $$$/ $$/ $$/ $$/ $$/ $$/ $$/ $$$$$$$$/ $$/ $$/ $$$$$$/ $$$$$$$$/ $$$$$$/ */ // SPDX-License-Identifier: MIT // 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/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/security/Pausable.sol // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // 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 (last updated v4.7.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol) pragma solidity ^0.8.0; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } } // File: contracts/PTRN_contract_02.09.2022_v_1.0.sol pragma solidity ^0.8.0; contract PathEarn is ERC20, ERC20Burnable, Pausable, Ownable { uint256 private immutable _cap; uint256 private _total_minted; uint256 private _service_fee; uint256 private immutable _max_service_fee; uint256 private _single_mint_service_fee; uint256 private immutable _max_single_mint_service_fee; address private _fee_wallet; // Token distribution mapping(string => uint256) public currentDistribution; mapping(string => uint256) public distributionLimits; string public distributionList = "public_distribution,private_sale,initial_dex_offering,liquidity,marketing,team_and_advisors,partnerships,airdrop"; constructor ( address fee_wallet_) ERC20("PTRN smart contract v1.0", "PTRN" ) { _cap = 300000000000000000000000000; _service_fee = 1000000000000000000; _max_service_fee = 5000000000000000000; _single_mint_service_fee = 1500000000000000000; _max_single_mint_service_fee = 5500000000000000000; _total_minted = 0; _fee_wallet = fee_wallet_; // distribution. currentDistribution["public_distribution"] = 0; currentDistribution["private_sale"] = 0; currentDistribution["initial_dex_offering"] = 0; currentDistribution["liquidity"] = 0; currentDistribution["marketing"] = 0; currentDistribution["team_and_advisors"] = 0; currentDistribution["partnerships"] = 0; currentDistribution["airdrop"] = 0; distributionLimits["public_distribution"] = 150000000000000000000000000; distributionLimits["private_sale"] = 27000000000000000000000000; distributionLimits["initial_dex_offering"] = 15000000000000000000000000; distributionLimits["liquidity"] = 30000000000000000000000000; distributionLimits["marketing"] = 30000000000000000000000000; distributionLimits["team_and_advisors"] = 36000000000000000000000000; distributionLimits["partnerships"] = 9000000000000000000000000; distributionLimits["airdrop"] = 3000000000000000000000000; } // Returns the maximum number of tokens available for minting. function cap() public view returns (uint256) { return _cap; } // Set another wallet for collecting fees. function changeFeeWallet(address wallet) public onlyOwner returns (address){ _fee_wallet = wallet; return wallet; } // Returns the fee collector wallet. function feeWallet() public view returns (address){ return _fee_wallet; } // Checking the cap before minting. function _mint(address account, uint256 amount) internal override { require(ERC20.totalSupply() + amount <= cap(), "ERC20Capped: cap exceeded"); super._mint(account, amount); } // Freeze the contrant. Only owner can do it. function pause() public onlyOwner { _pause(); } // Unfreeze the contract. Only owner can do it. function unpause() public onlyOwner { _unpause(); } // Minting can be executed by owner only! Custom mint function. Mints acording to distribution. function mint(address account, uint256 amount, string calldata beneficiary) public onlyOwner { require(currentDistribution[beneficiary] + amount <= distributionLimits[beneficiary], "Cannot mint. Beneficiary limit exceeded!"); _mint(account, amount); _total_minted += amount; currentDistribution[beneficiary] += amount; } // Returns what is available for minting according to distribution. function checkBeneficiaryLeftToMint(string calldata beneficiary) public view onlyOwner returns (uint256){ uint256 result = distributionLimits[beneficiary] - currentDistribution[beneficiary]; return result; } // Owner can change bulk mint fee. function setServiceFee(uint256 value) public onlyOwner returns (bool){ require(value <= _max_service_fee, "Service fee can't be greater than max service fee!"); _service_fee = value; return true; } // Owner can change single mint fee. function setSingleMintServiceFee(uint256 value) public onlyOwner returns (bool){ require(value <= _max_single_mint_service_fee, "Single mint service fee can't be greater than max single mint service fee!"); _single_mint_service_fee = value; return true; } // returns the current service fee. function serviceFee() public view returns (uint256){ return _service_fee; } // returns the current single mint service fee. function singleMintServiceFee() public view returns (uint256){ return _single_mint_service_fee; } // returns the current max bulk mint service fee. function maxServiceFee() public view returns (uint256){ return _max_service_fee; } // returns the max single mint service fee. function maxSingleMintServiceFee() public view returns (uint256){ return _max_single_mint_service_fee; } // In this way contract holder can order mass transfer. function bulkTransfer(address[] calldata toAddr, uint256[] calldata values) public onlyOwner whenNotPaused { require(toAddr.length == values.length && toAddr.length >= 1, "Data for bulk payment not correct!"); for (uint256 i = 0; i < toAddr.length; i++) { transfer(toAddr[i], values[i]); } } // In this way contract holder can order bulk mint. function bulkMint(address[] calldata toAddr, uint256[] calldata values, string[] calldata beneficiary) public onlyOwner whenNotPaused { require(toAddr.length == values.length && toAddr.length >= 1, "Data for bulk payment not correct!"); for (uint256 i = 0; i < toAddr.length; i++) { mint(toAddr[i], values[i], beneficiary[i]); } } // Custom view showing max minting when capped. Check ERC 20 Capped!!! function toBeMinted() public view onlyOwner returns (uint256){ return _cap - _total_minted; } // ERC 20 standard implementation from OpenZeppelin done when ERC20 - Pausable is inherited. function _beforeTokenTransfer(address from, address to, uint256 amount) internal whenNotPaused override { super._beforeTokenTransfer(from, to, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"fee_wallet_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"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":"toAddr","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"beneficiary","type":"string[]"}],"name":"bulkMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"toAddr","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"bulkTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"changeFeeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"beneficiary","type":"string"}],"name":"checkBeneficiaryLeftToMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"currentDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"distributionLimits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributionList","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"maxServiceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSingleMintServiceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"beneficiary","type":"string"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"serviceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setServiceFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setSingleMintServiceFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"singleMintServiceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toBeMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e06040526040518060a001604052806070815260200162003e3660709139600c90816200002e9190620007a8565b503480156200003c57600080fd5b5060405162003ea638038062003ea68339818101604052810190620000629190620008f9565b6040518060400160405280601881526020017f5054524e20736d61727420636f6e74726163742076312e3000000000000000008152506040518060400160405280600481526020017f5054524e000000000000000000000000000000000000000000000000000000008152508160039081620000df9190620007a8565b508060049081620000f19190620007a8565b5050506000600560006101000a81548160ff0219169083151502179055506200012f620001236200046060201b60201c565b6200046860201b60201c565b6af8277896582678ac00000060808181525050670de0b6b3a7640000600781905550674563918244f4000060a081815250506714d1120d7b160000600881905550674c53ecdc18a6000060c08181525050600060068190555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a604051620001db9062000986565b9081526020016040518091039020819055506000600a604051620001ff90620009ed565b9081526020016040518091039020819055506000600a604051620002239062000a54565b9081526020016040518091039020819055506000600a604051620002479062000abb565b9081526020016040518091039020819055506000600a6040516200026b9062000b22565b9081526020016040518091039020819055506000600a6040516200028f9062000b89565b9081526020016040518091039020819055506000600a604051620002b39062000bf0565b9081526020016040518091039020819055506000600a604051620002d79062000c57565b9081526020016040518091039020819055506a7c13bc4b2c133c56000000600b604051620003059062000986565b9081526020016040518091039020819055506a165578eecf9d0ffb000000600b6040516200033390620009ed565b9081526020016040518091039020819055506a0c685fa11e01ec6f000000600b604051620003619062000a54565b9081526020016040518091039020819055506a18d0bf423c03d8de000000600b6040516200038f9062000abb565b9081526020016040518091039020819055506a18d0bf423c03d8de000000600b604051620003bd9062000b22565b9081526020016040518091039020819055506a1dc74be914d16aa4000000600b604051620003eb9062000b89565b9081526020016040518091039020819055506a0771d2fa45345aa9000000600b604051620004199062000bf0565b9081526020016040518091039020819055506a027b46536c66c8e3000000600b604051620004479062000c57565b9081526020016040518091039020819055505062000c6e565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005b057607f821691505b602082108103620005c657620005c562000568565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005f1565b6200063c8683620005f1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000689620006836200067d8462000654565b6200065e565b62000654565b9050919050565b6000819050919050565b620006a58362000668565b620006bd620006b48262000690565b848454620005fe565b825550505050565b600090565b620006d4620006c5565b620006e18184846200069a565b505050565b5b818110156200070957620006fd600082620006ca565b600181019050620006e7565b5050565b601f82111562000758576200072281620005cc565b6200072d84620005e1565b810160208510156200073d578190505b620007556200074c85620005e1565b830182620006e6565b50505b505050565b600082821c905092915050565b60006200077d600019846008026200075d565b1980831691505092915050565b60006200079883836200076a565b9150826002028217905092915050565b620007b3826200052e565b67ffffffffffffffff811115620007cf57620007ce62000539565b5b620007db825462000597565b620007e88282856200070d565b600060209050601f8311600181146200082057600084156200080b578287015190505b6200081785826200078a565b86555062000887565b601f1984166200083086620005cc565b60005b828110156200085a5784890151825560018201915060208501945060208101905062000833565b868310156200087a578489015162000876601f8916826200076a565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008c18262000894565b9050919050565b620008d381620008b4565b8114620008df57600080fd5b50565b600081519050620008f381620008c8565b92915050565b6000602082840312156200091257620009116200088f565b5b60006200092284828501620008e2565b91505092915050565b600081905092915050565b7f7075626c69635f646973747269627574696f6e00000000000000000000000000600082015250565b60006200096e6013836200092b565b91506200097b8262000936565b601382019050919050565b600062000993826200095f565b9150819050919050565b7f707269766174655f73616c650000000000000000000000000000000000000000600082015250565b6000620009d5600c836200092b565b9150620009e2826200099d565b600c82019050919050565b6000620009fa82620009c6565b9150819050919050565b7f696e697469616c5f6465785f6f66666572696e67000000000000000000000000600082015250565b600062000a3c6014836200092b565b915062000a498262000a04565b601482019050919050565b600062000a618262000a2d565b9150819050919050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b600062000aa36009836200092b565b915062000ab08262000a6b565b600982019050919050565b600062000ac88262000a94565b9150819050919050565b7f6d61726b6574696e670000000000000000000000000000000000000000000000600082015250565b600062000b0a6009836200092b565b915062000b178262000ad2565b600982019050919050565b600062000b2f8262000afb565b9150819050919050565b7f7465616d5f616e645f61647669736f7273000000000000000000000000000000600082015250565b600062000b716011836200092b565b915062000b7e8262000b39565b601182019050919050565b600062000b968262000b62565b9150819050919050565b7f706172746e657273686970730000000000000000000000000000000000000000600082015250565b600062000bd8600c836200092b565b915062000be58262000ba0565b600c82019050919050565b600062000bfd8262000bc9565b9150819050919050565b7f61697264726f7000000000000000000000000000000000000000000000000000600082015250565b600062000c3f6007836200092b565b915062000c4c8262000c07565b600782019050919050565b600062000c648262000c30565b9150819050919050565b60805160a05160c05161318362000cb3600039600081816107b401526108bf015260008181610c390152610e68015260008181610a770152610be801526131836000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80636ec0eafd1161012557806399e9fac0116100ad578063d3fc98641161007c578063d3fc986414610645578063d57d491c14610661578063dd62ed3e14610691578063f25f4b56146106c1578063f2fde38b146106df5761021c565b806399e9fac0146105975780639de83a07146105c7578063a457c2d7146105e5578063a9059cbb146106155761021c565b80637c8f3849116100f45780637c8f3849146105035780638456cb59146105335780638abdf5aa1461053d5780638da5cb5b1461055b57806395d89b41146105795761021c565b80636ec0eafd1461048f57806370a08231146104ad578063715018a6146104dd57806379cc6790146104e75761021c565b8063355274ea116101a857806342966c681161017757806342966c68146103e95780634b5fd215146104055780635bb35995146104235780635c975abb146104415780635cdf76f81461045f5761021c565b8063355274ea14610361578063395093511461037f5780633e4d0310146103af5780633f4ba83a146103df5761021c565b8063158d3641116101ef578063158d3641146102a957806318160ddd146102d957806323b872dd146102f757806327a5cd7314610327578063313ce567146103435761021c565b806306fdde0314610221578063095ea7b31461023f57806311ecb6fc1461026f578063153a1f3e1461028d575b600080fd5b6102296106fb565b6040516102369190611d7e565b60405180910390f35b61025960048036038101906102549190611e48565b61078d565b6040516102669190611ea3565b60405180910390f35b6102776107b0565b6040516102849190611ecd565b60405180910390f35b6102a760048036038101906102a29190611fa3565b6107d8565b005b6102c360048036038101906102be9190612024565b6108b3565b6040516102d09190611ea3565b60405180910390f35b6102e1610930565b6040516102ee9190611ecd565b60405180910390f35b610311600480360381019061030c9190612051565b61093a565b60405161031e9190611ea3565b60405180910390f35b610341600480360381019061033c91906120fa565b610969565b005b61034b610a6a565b60405161035891906121ca565b60405180910390f35b610369610a73565b6040516103769190611ecd565b60405180910390f35b61039960048036038101906103949190611e48565b610a9b565b6040516103a69190611ea3565b60405180910390f35b6103c960048036038101906103c491906121e5565b610ad2565b6040516103d69190612221565b60405180910390f35b6103e7610b25565b005b61040360048036038101906103fe9190612024565b610b37565b005b61040d610b4b565b60405161041a9190611d7e565b60405180910390f35b61042b610bd9565b6040516104389190611ecd565b60405180910390f35b610449610c16565b6040516104569190611ea3565b60405180910390f35b61047960048036038101906104749190612024565b610c2d565b6040516104869190611ea3565b60405180910390f35b610497610caa565b6040516104a49190611ecd565b60405180910390f35b6104c760048036038101906104c291906121e5565b610cb4565b6040516104d49190611ecd565b60405180910390f35b6104e5610cfc565b005b61050160048036038101906104fc9190611e48565b610d10565b005b61051d6004803603810190610518919061236c565b610d30565b60405161052a9190611ecd565b60405180910390f35b61053b610d5e565b005b610545610d70565b6040516105529190611ecd565b60405180910390f35b610563610d7a565b6040516105709190612221565b60405180910390f35b610581610da4565b60405161058e9190611d7e565b60405180910390f35b6105b160048036038101906105ac919061236c565b610e36565b6040516105be9190611ecd565b60405180910390f35b6105cf610e64565b6040516105dc9190611ecd565b60405180910390f35b6105ff60048036038101906105fa9190611e48565b610e8c565b60405161060c9190611ea3565b60405180910390f35b61062f600480360381019061062a9190611e48565b610f03565b60405161063c9190611ea3565b60405180910390f35b61065f600480360381019061065a919061240b565b610f26565b005b61067b6004803603810190610676919061247f565b61101c565b6040516106889190611ecd565b60405180910390f35b6106ab60048036038101906106a691906124cc565b611080565b6040516106b89190611ecd565b60405180910390f35b6106c9611107565b6040516106d69190612221565b60405180910390f35b6106f960048036038101906106f491906121e5565b611131565b005b60606003805461070a9061253b565b80601f01602080910402602001604051908101604052809291908181526020018280546107369061253b565b80156107835780601f1061075857610100808354040283529160200191610783565b820191906000526020600020905b81548152906001019060200180831161076657829003601f168201915b5050505050905090565b6000806107986111b4565b90506107a58185856111bc565b600191505092915050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6107e0611385565b6107e8611403565b8181905084849050148015610801575060018484905010155b610840576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610837906125de565b60405180910390fd5b60005b848490508110156108ac57610898858583818110610864576108636125fe565b5b905060200201602081019061087991906121e5565b84848481811061088c5761088b6125fe565b5b90506020020135610f03565b5080806108a49061265c565b915050610843565b5050505050565b60006108bd611385565b7f0000000000000000000000000000000000000000000000000000000000000000821115610920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109179061273c565b60405180910390fd5b8160088190555060019050919050565b6000600254905090565b6000806109456111b4565b905061095285828561144d565b61095d8585856114d9565b60019150509392505050565b610971611385565b610979611403565b8383905086869050148015610992575060018686905010155b6109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c8906125de565b60405180910390fd5b60005b86869050811015610a6157610a4e8787838181106109f5576109f46125fe565b5b9050602002016020810190610a0a91906121e5565b868684818110610a1d57610a1c6125fe565b5b90506020020135858585818110610a3757610a366125fe565b5b9050602002810190610a49919061276b565b610f26565b8080610a599061265c565b9150506109d4565b50505050505050565b60006012905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600080610aa66111b4565b9050610ac7818585610ab88589611080565b610ac291906127ce565b6111bc565b600191505092915050565b6000610adc611385565b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550819050919050565b610b2d611385565b610b35611758565b565b610b48610b426111b4565b826117bb565b50565b600c8054610b589061253b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b849061253b565b8015610bd15780601f10610ba657610100808354040283529160200191610bd1565b820191906000526020600020905b815481529060010190602001808311610bb457829003601f168201915b505050505081565b6000610be3611385565b6006547f0000000000000000000000000000000000000000000000000000000000000000610c119190612802565b905090565b6000600560009054906101000a900460ff16905090565b6000610c37611385565b7f0000000000000000000000000000000000000000000000000000000000000000821115610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c91906128a8565b60405180910390fd5b8160078190555060019050919050565b6000600854905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d04611385565b610d0e6000611991565b565b610d2282610d1c6111b4565b8361144d565b610d2c82826117bb565b5050565b600a818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b610d66611385565b610d6e611a57565b565b6000600754905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610db39061253b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ddf9061253b565b8015610e2c5780601f10610e0157610100808354040283529160200191610e2c565b820191906000526020600020905b815481529060010190602001808311610e0f57829003601f168201915b5050505050905090565b600b818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600080610e976111b4565b90506000610ea58286611080565b905083811015610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee19061293a565b60405180910390fd5b610ef782868684036111bc565b60019250505092915050565b600080610f0e6111b4565b9050610f1b8185856114d9565b600191505092915050565b610f2e611385565b600b8282604051610f4092919061298a565b90815260200160405180910390205483600a8484604051610f6292919061298a565b908152602001604051809103902054610f7b91906127ce565b1115610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390612a15565b60405180910390fd5b610fc68484611aba565b8260066000828254610fd891906127ce565b9250508190555082600a8383604051610ff292919061298a565b9081526020016040518091039020600082825461100f91906127ce565b9250508190555050505050565b6000611026611385565b6000600a848460405161103a92919061298a565b908152602001604051809103902054600b858560405161105b92919061298a565b9081526020016040518091039020546110749190612802565b90508091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611139611385565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119f90612aa7565b60405180910390fd5b6111b181611991565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122290612b39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129190612bcb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113789190611ecd565b60405180910390a3505050565b61138d6111b4565b73ffffffffffffffffffffffffffffffffffffffff166113ab610d7a565b73ffffffffffffffffffffffffffffffffffffffff1614611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f890612c37565b60405180910390fd5b565b61140b610c16565b1561144b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144290612ca3565b60405180910390fd5b565b60006114598484611080565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114d357818110156114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc90612d0f565b60405180910390fd5b6114d284848484036111bc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90612da1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90612e33565b60405180910390fd5b6115c2838383611b24565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f90612ec5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116db91906127ce565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161173f9190611ecd565b60405180910390a3611752848484611b3c565b50505050565b611760611b41565b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6117a46111b4565b6040516117b19190612221565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182190612f57565b60405180910390fd5b61183682600083611b24565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390612fe9565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546119139190612802565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119789190611ecd565b60405180910390a361198c83600084611b3c565b505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611a5f611403565b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611aa36111b4565b604051611ab09190612221565b60405180910390a1565b611ac2610a73565b81611acb610930565b611ad591906127ce565b1115611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d90613055565b60405180910390fd5b611b208282611b8a565b5050565b611b2c611403565b611b37838383611ce9565b505050565b505050565b611b49610c16565b611b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7f906130c1565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf09061312d565b60405180910390fd5b611c0560008383611b24565b8060026000828254611c1791906127ce565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c6c91906127ce565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cd19190611ecd565b60405180910390a3611ce560008383611b3c565b5050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d28578082015181840152602081019050611d0d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611d5082611cee565b611d5a8185611cf9565b9350611d6a818560208601611d0a565b611d7381611d34565b840191505092915050565b60006020820190508181036000830152611d988184611d45565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ddf82611db4565b9050919050565b611def81611dd4565b8114611dfa57600080fd5b50565b600081359050611e0c81611de6565b92915050565b6000819050919050565b611e2581611e12565b8114611e3057600080fd5b50565b600081359050611e4281611e1c565b92915050565b60008060408385031215611e5f57611e5e611daa565b5b6000611e6d85828601611dfd565b9250506020611e7e85828601611e33565b9150509250929050565b60008115159050919050565b611e9d81611e88565b82525050565b6000602082019050611eb86000830184611e94565b92915050565b611ec781611e12565b82525050565b6000602082019050611ee26000830184611ebe565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f0d57611f0c611ee8565b5b8235905067ffffffffffffffff811115611f2a57611f29611eed565b5b602083019150836020820283011115611f4657611f45611ef2565b5b9250929050565b60008083601f840112611f6357611f62611ee8565b5b8235905067ffffffffffffffff811115611f8057611f7f611eed565b5b602083019150836020820283011115611f9c57611f9b611ef2565b5b9250929050565b60008060008060408587031215611fbd57611fbc611daa565b5b600085013567ffffffffffffffff811115611fdb57611fda611daf565b5b611fe787828801611ef7565b9450945050602085013567ffffffffffffffff81111561200a57612009611daf565b5b61201687828801611f4d565b925092505092959194509250565b60006020828403121561203a57612039611daa565b5b600061204884828501611e33565b91505092915050565b60008060006060848603121561206a57612069611daa565b5b600061207886828701611dfd565b935050602061208986828701611dfd565b925050604061209a86828701611e33565b9150509250925092565b60008083601f8401126120ba576120b9611ee8565b5b8235905067ffffffffffffffff8111156120d7576120d6611eed565b5b6020830191508360208202830111156120f3576120f2611ef2565b5b9250929050565b6000806000806000806060878903121561211757612116611daa565b5b600087013567ffffffffffffffff81111561213557612134611daf565b5b61214189828a01611ef7565b9650965050602087013567ffffffffffffffff81111561216457612163611daf565b5b61217089828a01611f4d565b9450945050604087013567ffffffffffffffff81111561219357612192611daf565b5b61219f89828a016120a4565b92509250509295509295509295565b600060ff82169050919050565b6121c4816121ae565b82525050565b60006020820190506121df60008301846121bb565b92915050565b6000602082840312156121fb576121fa611daa565b5b600061220984828501611dfd565b91505092915050565b61221b81611dd4565b82525050565b60006020820190506122366000830184612212565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61227982611d34565b810181811067ffffffffffffffff8211171561229857612297612241565b5b80604052505050565b60006122ab611da0565b90506122b78282612270565b919050565b600067ffffffffffffffff8211156122d7576122d6612241565b5b6122e082611d34565b9050602081019050919050565b82818337600083830152505050565b600061230f61230a846122bc565b6122a1565b90508281526020810184848401111561232b5761232a61223c565b5b6123368482856122ed565b509392505050565b600082601f83011261235357612352611ee8565b5b81356123638482602086016122fc565b91505092915050565b60006020828403121561238257612381611daa565b5b600082013567ffffffffffffffff8111156123a05761239f611daf565b5b6123ac8482850161233e565b91505092915050565b60008083601f8401126123cb576123ca611ee8565b5b8235905067ffffffffffffffff8111156123e8576123e7611eed565b5b60208301915083600182028301111561240457612403611ef2565b5b9250929050565b6000806000806060858703121561242557612424611daa565b5b600061243387828801611dfd565b945050602061244487828801611e33565b935050604085013567ffffffffffffffff81111561246557612464611daf565b5b612471878288016123b5565b925092505092959194509250565b6000806020838503121561249657612495611daa565b5b600083013567ffffffffffffffff8111156124b4576124b3611daf565b5b6124c0858286016123b5565b92509250509250929050565b600080604083850312156124e3576124e2611daa565b5b60006124f185828601611dfd565b925050602061250285828601611dfd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061255357607f821691505b6020821081036125665761256561250c565b5b50919050565b7f4461746120666f722062756c6b207061796d656e74206e6f7420636f7272656360008201527f7421000000000000000000000000000000000000000000000000000000000000602082015250565b60006125c8602283611cf9565b91506125d38261256c565b604082019050919050565b600060208201905081810360008301526125f7816125bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061266782611e12565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126995761269861262d565b5b600182019050919050565b7f53696e676c65206d696e742073657276696365206665652063616e277420626560008201527f2067726561746572207468616e206d61782073696e676c65206d696e7420736560208201527f7276696365206665652100000000000000000000000000000000000000000000604082015250565b6000612726604a83611cf9565b9150612731826126a4565b606082019050919050565b6000602082019050818103600083015261275581612719565b9050919050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126127885761278761275c565b5b80840192508235915067ffffffffffffffff8211156127aa576127a9612761565b5b6020830192506001820236038313156127c6576127c5612766565b5b509250929050565b60006127d982611e12565b91506127e483611e12565b92508282019050808211156127fc576127fb61262d565b5b92915050565b600061280d82611e12565b915061281883611e12565b92508282039050818111156128305761282f61262d565b5b92915050565b7f53657276696365206665652063616e277420626520677265617465722074686160008201527f6e206d6178207365727669636520666565210000000000000000000000000000602082015250565b6000612892603283611cf9565b915061289d82612836565b604082019050919050565b600060208201905081810360008301526128c181612885565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612924602583611cf9565b915061292f826128c8565b604082019050919050565b6000602082019050818103600083015261295381612917565b9050919050565b600081905092915050565b6000612971838561295a565b935061297e8385846122ed565b82840190509392505050565b6000612997828486612965565b91508190509392505050565b7f43616e6e6f74206d696e742e2042656e6566696369617279206c696d6974206560008201527f7863656564656421000000000000000000000000000000000000000000000000602082015250565b60006129ff602883611cf9565b9150612a0a826129a3565b604082019050919050565b60006020820190508181036000830152612a2e816129f2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a91602683611cf9565b9150612a9c82612a35565b604082019050919050565b60006020820190508181036000830152612ac081612a84565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b23602483611cf9565b9150612b2e82612ac7565b604082019050919050565b60006020820190508181036000830152612b5281612b16565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612bb5602283611cf9565b9150612bc082612b59565b604082019050919050565b60006020820190508181036000830152612be481612ba8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c21602083611cf9565b9150612c2c82612beb565b602082019050919050565b60006020820190508181036000830152612c5081612c14565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612c8d601083611cf9565b9150612c9882612c57565b602082019050919050565b60006020820190508181036000830152612cbc81612c80565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612cf9601d83611cf9565b9150612d0482612cc3565b602082019050919050565b60006020820190508181036000830152612d2881612cec565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d8b602583611cf9565b9150612d9682612d2f565b604082019050919050565b60006020820190508181036000830152612dba81612d7e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e1d602383611cf9565b9150612e2882612dc1565b604082019050919050565b60006020820190508181036000830152612e4c81612e10565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612eaf602683611cf9565b9150612eba82612e53565b604082019050919050565b60006020820190508181036000830152612ede81612ea2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f41602183611cf9565b9150612f4c82612ee5565b604082019050919050565b60006020820190508181036000830152612f7081612f34565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fd3602283611cf9565b9150612fde82612f77565b604082019050919050565b6000602082019050818103600083015261300281612fc6565b9050919050565b7f45524332304361707065643a2063617020657863656564656400000000000000600082015250565b600061303f601983611cf9565b915061304a82613009565b602082019050919050565b6000602082019050818103600083015261306e81613032565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006130ab601483611cf9565b91506130b682613075565b602082019050919050565b600060208201905081810360008301526130da8161309e565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613117601f83611cf9565b9150613122826130e1565b602082019050919050565b600060208201905081810360008301526131468161310a565b905091905056fea2646970667358221220d577e9f610430590fa3a7dd905badd815031da84e617f2375e2ab30b1e3d859b64736f6c634300081000337075626c69635f646973747269627574696f6e2c707269766174655f73616c652c696e697469616c5f6465785f6f66666572696e672c6c69717569646974792c6d61726b6574696e672c7465616d5f616e645f61647669736f72732c706172746e657273686970732c61697264726f7000000000000000000000000064a2458a36b0e510edb14ddd34cfd297b4316173
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061021c5760003560e01c80636ec0eafd1161012557806399e9fac0116100ad578063d3fc98641161007c578063d3fc986414610645578063d57d491c14610661578063dd62ed3e14610691578063f25f4b56146106c1578063f2fde38b146106df5761021c565b806399e9fac0146105975780639de83a07146105c7578063a457c2d7146105e5578063a9059cbb146106155761021c565b80637c8f3849116100f45780637c8f3849146105035780638456cb59146105335780638abdf5aa1461053d5780638da5cb5b1461055b57806395d89b41146105795761021c565b80636ec0eafd1461048f57806370a08231146104ad578063715018a6146104dd57806379cc6790146104e75761021c565b8063355274ea116101a857806342966c681161017757806342966c68146103e95780634b5fd215146104055780635bb35995146104235780635c975abb146104415780635cdf76f81461045f5761021c565b8063355274ea14610361578063395093511461037f5780633e4d0310146103af5780633f4ba83a146103df5761021c565b8063158d3641116101ef578063158d3641146102a957806318160ddd146102d957806323b872dd146102f757806327a5cd7314610327578063313ce567146103435761021c565b806306fdde0314610221578063095ea7b31461023f57806311ecb6fc1461026f578063153a1f3e1461028d575b600080fd5b6102296106fb565b6040516102369190611d7e565b60405180910390f35b61025960048036038101906102549190611e48565b61078d565b6040516102669190611ea3565b60405180910390f35b6102776107b0565b6040516102849190611ecd565b60405180910390f35b6102a760048036038101906102a29190611fa3565b6107d8565b005b6102c360048036038101906102be9190612024565b6108b3565b6040516102d09190611ea3565b60405180910390f35b6102e1610930565b6040516102ee9190611ecd565b60405180910390f35b610311600480360381019061030c9190612051565b61093a565b60405161031e9190611ea3565b60405180910390f35b610341600480360381019061033c91906120fa565b610969565b005b61034b610a6a565b60405161035891906121ca565b60405180910390f35b610369610a73565b6040516103769190611ecd565b60405180910390f35b61039960048036038101906103949190611e48565b610a9b565b6040516103a69190611ea3565b60405180910390f35b6103c960048036038101906103c491906121e5565b610ad2565b6040516103d69190612221565b60405180910390f35b6103e7610b25565b005b61040360048036038101906103fe9190612024565b610b37565b005b61040d610b4b565b60405161041a9190611d7e565b60405180910390f35b61042b610bd9565b6040516104389190611ecd565b60405180910390f35b610449610c16565b6040516104569190611ea3565b60405180910390f35b61047960048036038101906104749190612024565b610c2d565b6040516104869190611ea3565b60405180910390f35b610497610caa565b6040516104a49190611ecd565b60405180910390f35b6104c760048036038101906104c291906121e5565b610cb4565b6040516104d49190611ecd565b60405180910390f35b6104e5610cfc565b005b61050160048036038101906104fc9190611e48565b610d10565b005b61051d6004803603810190610518919061236c565b610d30565b60405161052a9190611ecd565b60405180910390f35b61053b610d5e565b005b610545610d70565b6040516105529190611ecd565b60405180910390f35b610563610d7a565b6040516105709190612221565b60405180910390f35b610581610da4565b60405161058e9190611d7e565b60405180910390f35b6105b160048036038101906105ac919061236c565b610e36565b6040516105be9190611ecd565b60405180910390f35b6105cf610e64565b6040516105dc9190611ecd565b60405180910390f35b6105ff60048036038101906105fa9190611e48565b610e8c565b60405161060c9190611ea3565b60405180910390f35b61062f600480360381019061062a9190611e48565b610f03565b60405161063c9190611ea3565b60405180910390f35b61065f600480360381019061065a919061240b565b610f26565b005b61067b6004803603810190610676919061247f565b61101c565b6040516106889190611ecd565b60405180910390f35b6106ab60048036038101906106a691906124cc565b611080565b6040516106b89190611ecd565b60405180910390f35b6106c9611107565b6040516106d69190612221565b60405180910390f35b6106f960048036038101906106f491906121e5565b611131565b005b60606003805461070a9061253b565b80601f01602080910402602001604051908101604052809291908181526020018280546107369061253b565b80156107835780601f1061075857610100808354040283529160200191610783565b820191906000526020600020905b81548152906001019060200180831161076657829003601f168201915b5050505050905090565b6000806107986111b4565b90506107a58185856111bc565b600191505092915050565b60007f0000000000000000000000000000000000000000000000004c53ecdc18a60000905090565b6107e0611385565b6107e8611403565b8181905084849050148015610801575060018484905010155b610840576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610837906125de565b60405180910390fd5b60005b848490508110156108ac57610898858583818110610864576108636125fe565b5b905060200201602081019061087991906121e5565b84848481811061088c5761088b6125fe565b5b90506020020135610f03565b5080806108a49061265c565b915050610843565b5050505050565b60006108bd611385565b7f0000000000000000000000000000000000000000000000004c53ecdc18a60000821115610920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109179061273c565b60405180910390fd5b8160088190555060019050919050565b6000600254905090565b6000806109456111b4565b905061095285828561144d565b61095d8585856114d9565b60019150509392505050565b610971611385565b610979611403565b8383905086869050148015610992575060018686905010155b6109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c8906125de565b60405180910390fd5b60005b86869050811015610a6157610a4e8787838181106109f5576109f46125fe565b5b9050602002016020810190610a0a91906121e5565b868684818110610a1d57610a1c6125fe565b5b90506020020135858585818110610a3757610a366125fe565b5b9050602002810190610a49919061276b565b610f26565b8080610a599061265c565b9150506109d4565b50505050505050565b60006012905090565b60007f000000000000000000000000000000000000000000f8277896582678ac000000905090565b600080610aa66111b4565b9050610ac7818585610ab88589611080565b610ac291906127ce565b6111bc565b600191505092915050565b6000610adc611385565b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550819050919050565b610b2d611385565b610b35611758565b565b610b48610b426111b4565b826117bb565b50565b600c8054610b589061253b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b849061253b565b8015610bd15780601f10610ba657610100808354040283529160200191610bd1565b820191906000526020600020905b815481529060010190602001808311610bb457829003601f168201915b505050505081565b6000610be3611385565b6006547f000000000000000000000000000000000000000000f8277896582678ac000000610c119190612802565b905090565b6000600560009054906101000a900460ff16905090565b6000610c37611385565b7f0000000000000000000000000000000000000000000000004563918244f40000821115610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c91906128a8565b60405180910390fd5b8160078190555060019050919050565b6000600854905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d04611385565b610d0e6000611991565b565b610d2282610d1c6111b4565b8361144d565b610d2c82826117bb565b5050565b600a818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b610d66611385565b610d6e611a57565b565b6000600754905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610db39061253b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ddf9061253b565b8015610e2c5780601f10610e0157610100808354040283529160200191610e2c565b820191906000526020600020905b815481529060010190602001808311610e0f57829003601f168201915b5050505050905090565b600b818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b60007f0000000000000000000000000000000000000000000000004563918244f40000905090565b600080610e976111b4565b90506000610ea58286611080565b905083811015610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee19061293a565b60405180910390fd5b610ef782868684036111bc565b60019250505092915050565b600080610f0e6111b4565b9050610f1b8185856114d9565b600191505092915050565b610f2e611385565b600b8282604051610f4092919061298a565b90815260200160405180910390205483600a8484604051610f6292919061298a565b908152602001604051809103902054610f7b91906127ce565b1115610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390612a15565b60405180910390fd5b610fc68484611aba565b8260066000828254610fd891906127ce565b9250508190555082600a8383604051610ff292919061298a565b9081526020016040518091039020600082825461100f91906127ce565b9250508190555050505050565b6000611026611385565b6000600a848460405161103a92919061298a565b908152602001604051809103902054600b858560405161105b92919061298a565b9081526020016040518091039020546110749190612802565b90508091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611139611385565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119f90612aa7565b60405180910390fd5b6111b181611991565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122290612b39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129190612bcb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113789190611ecd565b60405180910390a3505050565b61138d6111b4565b73ffffffffffffffffffffffffffffffffffffffff166113ab610d7a565b73ffffffffffffffffffffffffffffffffffffffff1614611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f890612c37565b60405180910390fd5b565b61140b610c16565b1561144b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144290612ca3565b60405180910390fd5b565b60006114598484611080565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114d357818110156114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc90612d0f565b60405180910390fd5b6114d284848484036111bc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90612da1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90612e33565b60405180910390fd5b6115c2838383611b24565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f90612ec5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116db91906127ce565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161173f9190611ecd565b60405180910390a3611752848484611b3c565b50505050565b611760611b41565b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6117a46111b4565b6040516117b19190612221565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182190612f57565b60405180910390fd5b61183682600083611b24565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390612fe9565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546119139190612802565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119789190611ecd565b60405180910390a361198c83600084611b3c565b505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611a5f611403565b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611aa36111b4565b604051611ab09190612221565b60405180910390a1565b611ac2610a73565b81611acb610930565b611ad591906127ce565b1115611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d90613055565b60405180910390fd5b611b208282611b8a565b5050565b611b2c611403565b611b37838383611ce9565b505050565b505050565b611b49610c16565b611b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7f906130c1565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf09061312d565b60405180910390fd5b611c0560008383611b24565b8060026000828254611c1791906127ce565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c6c91906127ce565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cd19190611ecd565b60405180910390a3611ce560008383611b3c565b5050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d28578082015181840152602081019050611d0d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611d5082611cee565b611d5a8185611cf9565b9350611d6a818560208601611d0a565b611d7381611d34565b840191505092915050565b60006020820190508181036000830152611d988184611d45565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ddf82611db4565b9050919050565b611def81611dd4565b8114611dfa57600080fd5b50565b600081359050611e0c81611de6565b92915050565b6000819050919050565b611e2581611e12565b8114611e3057600080fd5b50565b600081359050611e4281611e1c565b92915050565b60008060408385031215611e5f57611e5e611daa565b5b6000611e6d85828601611dfd565b9250506020611e7e85828601611e33565b9150509250929050565b60008115159050919050565b611e9d81611e88565b82525050565b6000602082019050611eb86000830184611e94565b92915050565b611ec781611e12565b82525050565b6000602082019050611ee26000830184611ebe565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f0d57611f0c611ee8565b5b8235905067ffffffffffffffff811115611f2a57611f29611eed565b5b602083019150836020820283011115611f4657611f45611ef2565b5b9250929050565b60008083601f840112611f6357611f62611ee8565b5b8235905067ffffffffffffffff811115611f8057611f7f611eed565b5b602083019150836020820283011115611f9c57611f9b611ef2565b5b9250929050565b60008060008060408587031215611fbd57611fbc611daa565b5b600085013567ffffffffffffffff811115611fdb57611fda611daf565b5b611fe787828801611ef7565b9450945050602085013567ffffffffffffffff81111561200a57612009611daf565b5b61201687828801611f4d565b925092505092959194509250565b60006020828403121561203a57612039611daa565b5b600061204884828501611e33565b91505092915050565b60008060006060848603121561206a57612069611daa565b5b600061207886828701611dfd565b935050602061208986828701611dfd565b925050604061209a86828701611e33565b9150509250925092565b60008083601f8401126120ba576120b9611ee8565b5b8235905067ffffffffffffffff8111156120d7576120d6611eed565b5b6020830191508360208202830111156120f3576120f2611ef2565b5b9250929050565b6000806000806000806060878903121561211757612116611daa565b5b600087013567ffffffffffffffff81111561213557612134611daf565b5b61214189828a01611ef7565b9650965050602087013567ffffffffffffffff81111561216457612163611daf565b5b61217089828a01611f4d565b9450945050604087013567ffffffffffffffff81111561219357612192611daf565b5b61219f89828a016120a4565b92509250509295509295509295565b600060ff82169050919050565b6121c4816121ae565b82525050565b60006020820190506121df60008301846121bb565b92915050565b6000602082840312156121fb576121fa611daa565b5b600061220984828501611dfd565b91505092915050565b61221b81611dd4565b82525050565b60006020820190506122366000830184612212565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61227982611d34565b810181811067ffffffffffffffff8211171561229857612297612241565b5b80604052505050565b60006122ab611da0565b90506122b78282612270565b919050565b600067ffffffffffffffff8211156122d7576122d6612241565b5b6122e082611d34565b9050602081019050919050565b82818337600083830152505050565b600061230f61230a846122bc565b6122a1565b90508281526020810184848401111561232b5761232a61223c565b5b6123368482856122ed565b509392505050565b600082601f83011261235357612352611ee8565b5b81356123638482602086016122fc565b91505092915050565b60006020828403121561238257612381611daa565b5b600082013567ffffffffffffffff8111156123a05761239f611daf565b5b6123ac8482850161233e565b91505092915050565b60008083601f8401126123cb576123ca611ee8565b5b8235905067ffffffffffffffff8111156123e8576123e7611eed565b5b60208301915083600182028301111561240457612403611ef2565b5b9250929050565b6000806000806060858703121561242557612424611daa565b5b600061243387828801611dfd565b945050602061244487828801611e33565b935050604085013567ffffffffffffffff81111561246557612464611daf565b5b612471878288016123b5565b925092505092959194509250565b6000806020838503121561249657612495611daa565b5b600083013567ffffffffffffffff8111156124b4576124b3611daf565b5b6124c0858286016123b5565b92509250509250929050565b600080604083850312156124e3576124e2611daa565b5b60006124f185828601611dfd565b925050602061250285828601611dfd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061255357607f821691505b6020821081036125665761256561250c565b5b50919050565b7f4461746120666f722062756c6b207061796d656e74206e6f7420636f7272656360008201527f7421000000000000000000000000000000000000000000000000000000000000602082015250565b60006125c8602283611cf9565b91506125d38261256c565b604082019050919050565b600060208201905081810360008301526125f7816125bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061266782611e12565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126995761269861262d565b5b600182019050919050565b7f53696e676c65206d696e742073657276696365206665652063616e277420626560008201527f2067726561746572207468616e206d61782073696e676c65206d696e7420736560208201527f7276696365206665652100000000000000000000000000000000000000000000604082015250565b6000612726604a83611cf9565b9150612731826126a4565b606082019050919050565b6000602082019050818103600083015261275581612719565b9050919050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126127885761278761275c565b5b80840192508235915067ffffffffffffffff8211156127aa576127a9612761565b5b6020830192506001820236038313156127c6576127c5612766565b5b509250929050565b60006127d982611e12565b91506127e483611e12565b92508282019050808211156127fc576127fb61262d565b5b92915050565b600061280d82611e12565b915061281883611e12565b92508282039050818111156128305761282f61262d565b5b92915050565b7f53657276696365206665652063616e277420626520677265617465722074686160008201527f6e206d6178207365727669636520666565210000000000000000000000000000602082015250565b6000612892603283611cf9565b915061289d82612836565b604082019050919050565b600060208201905081810360008301526128c181612885565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612924602583611cf9565b915061292f826128c8565b604082019050919050565b6000602082019050818103600083015261295381612917565b9050919050565b600081905092915050565b6000612971838561295a565b935061297e8385846122ed565b82840190509392505050565b6000612997828486612965565b91508190509392505050565b7f43616e6e6f74206d696e742e2042656e6566696369617279206c696d6974206560008201527f7863656564656421000000000000000000000000000000000000000000000000602082015250565b60006129ff602883611cf9565b9150612a0a826129a3565b604082019050919050565b60006020820190508181036000830152612a2e816129f2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a91602683611cf9565b9150612a9c82612a35565b604082019050919050565b60006020820190508181036000830152612ac081612a84565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b23602483611cf9565b9150612b2e82612ac7565b604082019050919050565b60006020820190508181036000830152612b5281612b16565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612bb5602283611cf9565b9150612bc082612b59565b604082019050919050565b60006020820190508181036000830152612be481612ba8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c21602083611cf9565b9150612c2c82612beb565b602082019050919050565b60006020820190508181036000830152612c5081612c14565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612c8d601083611cf9565b9150612c9882612c57565b602082019050919050565b60006020820190508181036000830152612cbc81612c80565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612cf9601d83611cf9565b9150612d0482612cc3565b602082019050919050565b60006020820190508181036000830152612d2881612cec565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d8b602583611cf9565b9150612d9682612d2f565b604082019050919050565b60006020820190508181036000830152612dba81612d7e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e1d602383611cf9565b9150612e2882612dc1565b604082019050919050565b60006020820190508181036000830152612e4c81612e10565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612eaf602683611cf9565b9150612eba82612e53565b604082019050919050565b60006020820190508181036000830152612ede81612ea2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f41602183611cf9565b9150612f4c82612ee5565b604082019050919050565b60006020820190508181036000830152612f7081612f34565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fd3602283611cf9565b9150612fde82612f77565b604082019050919050565b6000602082019050818103600083015261300281612fc6565b9050919050565b7f45524332304361707065643a2063617020657863656564656400000000000000600082015250565b600061303f601983611cf9565b915061304a82613009565b602082019050919050565b6000602082019050818103600083015261306e81613032565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006130ab601483611cf9565b91506130b682613075565b602082019050919050565b600060208201905081810360008301526130da8161309e565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613117601f83611cf9565b9150613122826130e1565b602082019050919050565b600060208201905081810360008301526131468161310a565b905091905056fea2646970667358221220d577e9f610430590fa3a7dd905badd815031da84e617f2375e2ab30b1e3d859b64736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000064a2458a36b0e510edb14ddd34cfd297b4316173
-----Decoded View---------------
Arg [0] : fee_wallet_ (address): 0x64a2458a36B0E510edB14Ddd34cfd297B4316173
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000064a2458a36b0e510edb14ddd34cfd297b4316173
Deployed Bytecode Sourcemap
25017:6514:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12983:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15334:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30069:118;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30258:338;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29252:289;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14103:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16115:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30663:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13945:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27242:75;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16819:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27371:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28077:65;;;:::i;:::-;;24352:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25534:147;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31124:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6241:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28971:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29742:111;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14274:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3751:103;;;:::i;:::-;;24762:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25415:53;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27955:61;;;:::i;:::-;;29592:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3103:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13202:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25475:52;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29916:96;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17560:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14607:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28251:361;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28693:230;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14863:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27559:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4009:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12983:100;13037:13;13070:5;13063:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12983:100;:::o;15334:201::-;15417:4;15434:13;15450:12;:10;:12::i;:::-;15434:28;;15473:32;15482:5;15489:7;15498:6;15473:8;:32::i;:::-;15523:4;15516:11;;;15334:201;;;;:::o;30069:118::-;30125:7;30151:28;30144:35;;30069:118;:::o;30258:338::-;2989:13;:11;:13::i;:::-;5846:19:::1;:17;:19::i;:::-;30401:6:::2;;:13;;30384:6;;:13;;:30;:52;;;;;30435:1;30418:6;;:13;;:18;;30384:52;30376:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;30493:9;30488:101;30512:6;;:13;;30508:1;:17;30488:101;;;30547:30;30556:6;;30563:1;30556:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30567:6;;30574:1;30567:9;;;;;;;:::i;:::-;;;;;;;;30547:8;:30::i;:::-;;30527:3;;;;;:::i;:::-;;;;30488:101;;;;30258:338:::0;;;;:::o;29252:289::-;29326:4;2989:13;:11;:13::i;:::-;29359:28:::1;29350:5;:37;;29342:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;29504:5;29477:24;:32;;;;29529:4;29522:11;;29252:289:::0;;;:::o;14103:108::-;14164:7;14191:12;;14184:19;;14103:108;:::o;16115:295::-;16246:4;16263:15;16281:12;:10;:12::i;:::-;16263:30;;16304:38;16320:4;16326:7;16335:6;16304:15;:38::i;:::-;16353:27;16363:4;16369:2;16373:6;16353:9;:27::i;:::-;16398:4;16391:11;;;16115:295;;;;;:::o;30663:377::-;2989:13;:11;:13::i;:::-;5846:19:::1;:17;:19::i;:::-;30833:6:::2;;:13;;30816:6;;:13;;:30;:52;;;;;30867:1;30850:6;;:13;;:18;;30816:52;30808:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;30925:9;30920:113;30944:6;;:13;;30940:1;:17;30920:113;;;30979:42;30984:6;;30991:1;30984:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30995:6;;31002:1;30995:9;;;;;;;:::i;:::-;;;;;;;;31006:11;;31018:1;31006:14;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;30979:4;:42::i;:::-;30959:3;;;;;:::i;:::-;;;;30920:113;;;;30663:377:::0;;;;;;:::o;13945:93::-;14003:5;14028:2;14021:9;;13945:93;:::o;27242:75::-;27278:7;27305:4;27298:11;;27242:75;:::o;16819:238::-;16907:4;16924:13;16940:12;:10;:12::i;:::-;16924:28;;16963:64;16972:5;16979:7;17016:10;16988:25;16998:5;17005:7;16988:9;:25::i;:::-;:38;;;;:::i;:::-;16963:8;:64::i;:::-;17045:4;17038:11;;;16819:238;;;;:::o;27371:138::-;27438:7;2989:13;:11;:13::i;:::-;27471:6:::1;27457:11;;:20;;;;;;;;;;;;;;;;;;27495:6;27488:13;;27371:138:::0;;;:::o;28077:65::-;2989:13;:11;:13::i;:::-;28124:10:::1;:8;:10::i;:::-;28077:65::o:0;24352:91::-;24408:27;24414:12;:10;:12::i;:::-;24428:6;24408:5;:27::i;:::-;24352:91;:::o;25534:147::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31124:107::-;31177:7;2989:13;:11;:13::i;:::-;31210::::1;;31203:4;:20;;;;:::i;:::-;31196:27;;31124:107:::0;:::o;6241:86::-;6288:4;6312:7;;;;;;;;;;;6305:14;;6241:86;:::o;28971:231::-;29035:4;2989:13;:11;:13::i;:::-;29068:16:::1;29059:5;:25;;29051:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;29165:5;29150:12;:20;;;;29190:4;29183:11;;28971:231:::0;;;:::o;29742:111::-;29795:7;29821:24;;29814:31;;29742:111;:::o;14274:127::-;14348:7;14375:9;:18;14385:7;14375:18;;;;;;;;;;;;;;;;14368:25;;14274:127;;;:::o;3751:103::-;2989:13;:11;:13::i;:::-;3816:30:::1;3843:1;3816:18;:30::i;:::-;3751:103::o:0;24762:164::-;24839:46;24855:7;24864:12;:10;:12::i;:::-;24878:6;24839:15;:46::i;:::-;24896:22;24902:7;24911:6;24896:5;:22::i;:::-;24762:164;;:::o;25415:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27955:61::-;2989:13;:11;:13::i;:::-;28000:8:::1;:6;:8::i;:::-;27955:61::o:0;29592:89::-;29635:7;29661:12;;29654:19;;29592:89;:::o;3103:87::-;3149:7;3176:6;;;;;;;;;;;3169:13;;3103:87;:::o;13202:104::-;13258:13;13291:7;13284:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13202:104;:::o;25475:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29916:96::-;29962:7;29988:16;29981:23;;29916:96;:::o;17560:436::-;17653:4;17670:13;17686:12;:10;:12::i;:::-;17670:28;;17709:24;17736:25;17746:5;17753:7;17736:9;:25::i;:::-;17709:52;;17800:15;17780:16;:35;;17772:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17893:60;17902:5;17909:7;17937:15;17918:16;:34;17893:8;:60::i;:::-;17984:4;17977:11;;;;17560:436;;;;:::o;14607:193::-;14686:4;14703:13;14719:12;:10;:12::i;:::-;14703:28;;14742;14752:5;14759:2;14763:6;14742:9;:28::i;:::-;14788:4;14781:11;;;14607:193;;;;:::o;28251:361::-;2989:13;:11;:13::i;:::-;28408:18:::1;28427:11;;28408:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;28398:6;28363:19;28383:11;;28363:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;:41;;;;:::i;:::-;:76;;28355:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;28495:22;28501:7;28510:6;28495:5;:22::i;:::-;28545:6;28528:13;;:23;;;;;;;:::i;:::-;;;;;;;;28598:6;28562:19;28582:11;;28562:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;28251:361:::0;;;;:::o;28693:230::-;28789:7;2989:13;:11;:13::i;:::-;28808:14:::1;28859:19;28879:11;;28859:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;28825:18;28844:11;;28825:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;:66;;;;:::i;:::-;28808:83;;28909:6;28902:13;;;28693:230:::0;;;;:::o;14863:151::-;14952:7;14979:11;:18;14991:5;14979:18;;;;;;;;;;;;;;;:27;14998:7;14979:27;;;;;;;;;;;;;;;;14972:34;;14863:151;;;;:::o;27559:87::-;27601:7;27627:11;;;;;;;;;;;27620:18;;27559:87;:::o;4009:201::-;2989:13;:11;:13::i;:::-;4118:1:::1;4098:22;;:8;:22;;::::0;4090:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4174:28;4193:8;4174:18;:28::i;:::-;4009:201:::0;:::o;1654:98::-;1707:7;1734:10;1727:17;;1654:98;:::o;21185:380::-;21338:1;21321:19;;:5;:19;;;21313:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21419:1;21400:21;;:7;:21;;;21392:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21503:6;21473:11;:18;21485:5;21473:18;;;;;;;;;;;;;;;:27;21492:7;21473:27;;;;;;;;;;;;;;;:36;;;;21541:7;21525:32;;21534:5;21525:32;;;21550:6;21525:32;;;;;;:::i;:::-;;;;;;;;21185:380;;;:::o;3268:132::-;3343:12;:10;:12::i;:::-;3332:23;;:7;:5;:7::i;:::-;:23;;;3324:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3268:132::o;6400:108::-;6471:8;:6;:8::i;:::-;6470:9;6462:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6400:108::o;21856:453::-;21991:24;22018:25;22028:5;22035:7;22018:9;:25::i;:::-;21991:52;;22078:17;22058:16;:37;22054:248;;22140:6;22120:16;:26;;22112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22224:51;22233:5;22240:7;22268:6;22249:16;:25;22224:8;:51::i;:::-;22054:248;21980:329;21856:453;;;:::o;18466:671::-;18613:1;18597:18;;:4;:18;;;18589:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18690:1;18676:16;;:2;:16;;;18668:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18745:38;18766:4;18772:2;18776:6;18745:20;:38::i;:::-;18796:19;18818:9;:15;18828:4;18818:15;;;;;;;;;;;;;;;;18796:37;;18867:6;18852:11;:21;;18844:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;18984:6;18970:11;:20;18952:9;:15;18962:4;18952:15;;;;;;;;;;;;;;;:38;;;;19029:6;19012:9;:13;19022:2;19012:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;19068:2;19053:26;;19062:4;19053:26;;;19072:6;19053:26;;;;;;:::i;:::-;;;;;;;;19092:37;19112:4;19118:2;19122:6;19092:19;:37::i;:::-;18578:559;18466:671;;;:::o;7096:120::-;6105:16;:14;:16::i;:::-;7165:5:::1;7155:7;;:15;;;;;;;;;;;;;;;;;;7186:22;7195:12;:10;:12::i;:::-;7186:22;;;;;;:::i;:::-;;;;;;;;7096:120::o:0;20156:591::-;20259:1;20240:21;;:7;:21;;;20232:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20312:49;20333:7;20350:1;20354:6;20312:20;:49::i;:::-;20374:22;20399:9;:18;20409:7;20399:18;;;;;;;;;;;;;;;;20374:43;;20454:6;20436:14;:24;;20428:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20573:6;20556:14;:23;20535:9;:18;20545:7;20535:18;;;;;;;;;;;;;;;:44;;;;20617:6;20601:12;;:22;;;;;;;:::i;:::-;;;;;;;;20667:1;20641:37;;20650:7;20641:37;;;20671:6;20641:37;;;;;;:::i;:::-;;;;;;;;20691:48;20711:7;20728:1;20732:6;20691:19;:48::i;:::-;20221:526;20156:591;;:::o;4370:191::-;4444:16;4463:6;;;;;;;;;;;4444:25;;4489:8;4480:6;;:17;;;;;;;;;;;;;;;;;;4544:8;4513:40;;4534:8;4513:40;;;;;;;;;;;;4433:128;4370:191;:::o;6837:118::-;5846:19;:17;:19::i;:::-;6907:4:::1;6897:7;;:14;;;;;;;;;;;;;;;;;;6927:20;6934:12;:10;:12::i;:::-;6927:20;;;;;;:::i;:::-;;;;;;;;6837:118::o:0;27695:199::-;27812:5;:3;:5::i;:::-;27802:6;27780:19;:17;:19::i;:::-;:28;;;;:::i;:::-;:37;;27772:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;27858:28;27870:7;27879:6;27858:11;:28::i;:::-;27695:199;;:::o;31341:187::-;5846:19;:17;:19::i;:::-;31476:44:::1;31503:4;31509:2;31513:6;31476:26;:44::i;:::-;31341:187:::0;;;:::o;23638:124::-;;;;:::o;6585:108::-;6652:8;:6;:8::i;:::-;6644:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;6585:108::o;19424:399::-;19527:1;19508:21;;:7;:21;;;19500:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;19578:49;19607:1;19611:7;19620:6;19578:20;:49::i;:::-;19656:6;19640:12;;:22;;;;;;;:::i;:::-;;;;;;;;19695:6;19673:9;:18;19683:7;19673:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;19738:7;19717:37;;19734:1;19717:37;;;19747:6;19717:37;;;;;;:::i;:::-;;;;;;;;19767:48;19795:1;19799:7;19808:6;19767:19;:48::i;:::-;19424:399;;:::o;22909:125::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:117::-;3907:1;3904;3897:12;3921:117;4030:1;4027;4020:12;4044:117;4153:1;4150;4143:12;4184:568;4257:8;4267:6;4317:3;4310:4;4302:6;4298:17;4294:27;4284:122;;4325:79;;:::i;:::-;4284:122;4438:6;4425:20;4415:30;;4468:18;4460:6;4457:30;4454:117;;;4490:79;;:::i;:::-;4454:117;4604:4;4596:6;4592:17;4580:29;;4658:3;4650:4;4642:6;4638:17;4628:8;4624:32;4621:41;4618:128;;;4665:79;;:::i;:::-;4618:128;4184:568;;;;;:::o;4775:::-;4848:8;4858:6;4908:3;4901:4;4893:6;4889:17;4885:27;4875:122;;4916:79;;:::i;:::-;4875:122;5029:6;5016:20;5006:30;;5059:18;5051:6;5048:30;5045:117;;;5081:79;;:::i;:::-;5045:117;5195:4;5187:6;5183:17;5171:29;;5249:3;5241:4;5233:6;5229:17;5219:8;5215:32;5212:41;5209:128;;;5256:79;;:::i;:::-;5209:128;4775:568;;;;;:::o;5349:934::-;5471:6;5479;5487;5495;5544:2;5532:9;5523:7;5519:23;5515:32;5512:119;;;5550:79;;:::i;:::-;5512:119;5698:1;5687:9;5683:17;5670:31;5728:18;5720:6;5717:30;5714:117;;;5750:79;;:::i;:::-;5714:117;5863:80;5935:7;5926:6;5915:9;5911:22;5863:80;:::i;:::-;5845:98;;;;5641:312;6020:2;6009:9;6005:18;5992:32;6051:18;6043:6;6040:30;6037:117;;;6073:79;;:::i;:::-;6037:117;6186:80;6258:7;6249:6;6238:9;6234:22;6186:80;:::i;:::-;6168:98;;;;5963:313;5349:934;;;;;;;:::o;6289:329::-;6348:6;6397:2;6385:9;6376:7;6372:23;6368:32;6365:119;;;6403:79;;:::i;:::-;6365:119;6523:1;6548:53;6593:7;6584:6;6573:9;6569:22;6548:53;:::i;:::-;6538:63;;6494:117;6289:329;;;;:::o;6624:619::-;6701:6;6709;6717;6766:2;6754:9;6745:7;6741:23;6737:32;6734:119;;;6772:79;;:::i;:::-;6734:119;6892:1;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6863:117;7019:2;7045:53;7090:7;7081:6;7070:9;7066:22;7045:53;:::i;:::-;7035:63;;6990:118;7147:2;7173:53;7218:7;7209:6;7198:9;7194:22;7173:53;:::i;:::-;7163:63;;7118:118;6624:619;;;;;:::o;7265:580::-;7350:8;7360:6;7410:3;7403:4;7395:6;7391:17;7387:27;7377:122;;7418:79;;:::i;:::-;7377:122;7531:6;7518:20;7508:30;;7561:18;7553:6;7550:30;7547:117;;;7583:79;;:::i;:::-;7547:117;7697:4;7689:6;7685:17;7673:29;;7751:3;7743:4;7735:6;7731:17;7721:8;7717:32;7714:41;7711:128;;;7758:79;;:::i;:::-;7711:128;7265:580;;;;;:::o;7851:1333::-;8021:6;8029;8037;8045;8053;8061;8110:2;8098:9;8089:7;8085:23;8081:32;8078:119;;;8116:79;;:::i;:::-;8078:119;8264:1;8253:9;8249:17;8236:31;8294:18;8286:6;8283:30;8280:117;;;8316:79;;:::i;:::-;8280:117;8429:80;8501:7;8492:6;8481:9;8477:22;8429:80;:::i;:::-;8411:98;;;;8207:312;8586:2;8575:9;8571:18;8558:32;8617:18;8609:6;8606:30;8603:117;;;8639:79;;:::i;:::-;8603:117;8752:80;8824:7;8815:6;8804:9;8800:22;8752:80;:::i;:::-;8734:98;;;;8529:313;8909:2;8898:9;8894:18;8881:32;8940:18;8932:6;8929:30;8926:117;;;8962:79;;:::i;:::-;8926:117;9075:92;9159:7;9150:6;9139:9;9135:22;9075:92;:::i;:::-;9057:110;;;;8852:325;7851:1333;;;;;;;;:::o;9190:86::-;9225:7;9265:4;9258:5;9254:16;9243:27;;9190:86;;;:::o;9282:112::-;9365:22;9381:5;9365:22;:::i;:::-;9360:3;9353:35;9282:112;;:::o;9400:214::-;9489:4;9527:2;9516:9;9512:18;9504:26;;9540:67;9604:1;9593:9;9589:17;9580:6;9540:67;:::i;:::-;9400:214;;;;:::o;9620:329::-;9679:6;9728:2;9716:9;9707:7;9703:23;9699:32;9696:119;;;9734:79;;:::i;:::-;9696:119;9854:1;9879:53;9924:7;9915:6;9904:9;9900:22;9879:53;:::i;:::-;9869:63;;9825:117;9620:329;;;;:::o;9955:118::-;10042:24;10060:5;10042:24;:::i;:::-;10037:3;10030:37;9955:118;;:::o;10079:222::-;10172:4;10210:2;10199:9;10195:18;10187:26;;10223:71;10291:1;10280:9;10276:17;10267:6;10223:71;:::i;:::-;10079:222;;;;:::o;10307:117::-;10416:1;10413;10406:12;10430:180;10478:77;10475:1;10468:88;10575:4;10572:1;10565:15;10599:4;10596:1;10589:15;10616:281;10699:27;10721:4;10699:27;:::i;:::-;10691:6;10687:40;10829:6;10817:10;10814:22;10793:18;10781:10;10778:34;10775:62;10772:88;;;10840:18;;:::i;:::-;10772:88;10880:10;10876:2;10869:22;10659:238;10616:281;;:::o;10903:129::-;10937:6;10964:20;;:::i;:::-;10954:30;;10993:33;11021:4;11013:6;10993:33;:::i;:::-;10903:129;;;:::o;11038:308::-;11100:4;11190:18;11182:6;11179:30;11176:56;;;11212:18;;:::i;:::-;11176:56;11250:29;11272:6;11250:29;:::i;:::-;11242:37;;11334:4;11328;11324:15;11316:23;;11038:308;;;:::o;11352:146::-;11449:6;11444:3;11439;11426:30;11490:1;11481:6;11476:3;11472:16;11465:27;11352:146;;;:::o;11504:425::-;11582:5;11607:66;11623:49;11665:6;11623:49;:::i;:::-;11607:66;:::i;:::-;11598:75;;11696:6;11689:5;11682:21;11734:4;11727:5;11723:16;11772:3;11763:6;11758:3;11754:16;11751:25;11748:112;;;11779:79;;:::i;:::-;11748:112;11869:54;11916:6;11911:3;11906;11869:54;:::i;:::-;11588:341;11504:425;;;;;:::o;11949:340::-;12005:5;12054:3;12047:4;12039:6;12035:17;12031:27;12021:122;;12062:79;;:::i;:::-;12021:122;12179:6;12166:20;12204:79;12279:3;12271:6;12264:4;12256:6;12252:17;12204:79;:::i;:::-;12195:88;;12011:278;11949:340;;;;:::o;12295:509::-;12364:6;12413:2;12401:9;12392:7;12388:23;12384:32;12381:119;;;12419:79;;:::i;:::-;12381:119;12567:1;12556:9;12552:17;12539:31;12597:18;12589:6;12586:30;12583:117;;;12619:79;;:::i;:::-;12583:117;12724:63;12779:7;12770:6;12759:9;12755:22;12724:63;:::i;:::-;12714:73;;12510:287;12295:509;;;;:::o;12824:553::-;12882:8;12892:6;12942:3;12935:4;12927:6;12923:17;12919:27;12909:122;;12950:79;;:::i;:::-;12909:122;13063:6;13050:20;13040:30;;13093:18;13085:6;13082:30;13079:117;;;13115:79;;:::i;:::-;13079:117;13229:4;13221:6;13217:17;13205:29;;13283:3;13275:4;13267:6;13263:17;13253:8;13249:32;13246:41;13243:128;;;13290:79;;:::i;:::-;13243:128;12824:553;;;;;:::o;13383:819::-;13472:6;13480;13488;13496;13545:2;13533:9;13524:7;13520:23;13516:32;13513:119;;;13551:79;;:::i;:::-;13513:119;13671:1;13696:53;13741:7;13732:6;13721:9;13717:22;13696:53;:::i;:::-;13686:63;;13642:117;13798:2;13824:53;13869:7;13860:6;13849:9;13845:22;13824:53;:::i;:::-;13814:63;;13769:118;13954:2;13943:9;13939:18;13926:32;13985:18;13977:6;13974:30;13971:117;;;14007:79;;:::i;:::-;13971:117;14120:65;14177:7;14168:6;14157:9;14153:22;14120:65;:::i;:::-;14102:83;;;;13897:298;13383:819;;;;;;;:::o;14208:529::-;14279:6;14287;14336:2;14324:9;14315:7;14311:23;14307:32;14304:119;;;14342:79;;:::i;:::-;14304:119;14490:1;14479:9;14475:17;14462:31;14520:18;14512:6;14509:30;14506:117;;;14542:79;;:::i;:::-;14506:117;14655:65;14712:7;14703:6;14692:9;14688:22;14655:65;:::i;:::-;14637:83;;;;14433:297;14208:529;;;;;:::o;14743:474::-;14811:6;14819;14868:2;14856:9;14847:7;14843:23;14839:32;14836:119;;;14874:79;;:::i;:::-;14836:119;14994:1;15019:53;15064:7;15055:6;15044:9;15040:22;15019:53;:::i;:::-;15009:63;;14965:117;15121:2;15147:53;15192:7;15183:6;15172:9;15168:22;15147:53;:::i;:::-;15137:63;;15092:118;14743:474;;;;;:::o;15223:180::-;15271:77;15268:1;15261:88;15368:4;15365:1;15358:15;15392:4;15389:1;15382:15;15409:320;15453:6;15490:1;15484:4;15480:12;15470:22;;15537:1;15531:4;15527:12;15558:18;15548:81;;15614:4;15606:6;15602:17;15592:27;;15548:81;15676:2;15668:6;15665:14;15645:18;15642:38;15639:84;;15695:18;;:::i;:::-;15639:84;15460:269;15409:320;;;:::o;15735:221::-;15875:34;15871:1;15863:6;15859:14;15852:58;15944:4;15939:2;15931:6;15927:15;15920:29;15735:221;:::o;15962:366::-;16104:3;16125:67;16189:2;16184:3;16125:67;:::i;:::-;16118:74;;16201:93;16290:3;16201:93;:::i;:::-;16319:2;16314:3;16310:12;16303:19;;15962:366;;;:::o;16334:419::-;16500:4;16538:2;16527:9;16523:18;16515:26;;16587:9;16581:4;16577:20;16573:1;16562:9;16558:17;16551:47;16615:131;16741:4;16615:131;:::i;:::-;16607:139;;16334:419;;;:::o;16759:180::-;16807:77;16804:1;16797:88;16904:4;16901:1;16894:15;16928:4;16925:1;16918:15;16945:180;16993:77;16990:1;16983:88;17090:4;17087:1;17080:15;17114:4;17111:1;17104:15;17131:233;17170:3;17193:24;17211:5;17193:24;:::i;:::-;17184:33;;17239:66;17232:5;17229:77;17226:103;;17309:18;;:::i;:::-;17226:103;17356:1;17349:5;17345:13;17338:20;;17131:233;;;:::o;17370:298::-;17510:34;17506:1;17498:6;17494:14;17487:58;17579:34;17574:2;17566:6;17562:15;17555:59;17648:12;17643:2;17635:6;17631:15;17624:37;17370:298;:::o;17674:366::-;17816:3;17837:67;17901:2;17896:3;17837:67;:::i;:::-;17830:74;;17913:93;18002:3;17913:93;:::i;:::-;18031:2;18026:3;18022:12;18015:19;;17674:366;;;:::o;18046:419::-;18212:4;18250:2;18239:9;18235:18;18227:26;;18299:9;18293:4;18289:20;18285:1;18274:9;18270:17;18263:47;18327:131;18453:4;18327:131;:::i;:::-;18319:139;;18046:419;;;:::o;18471:117::-;18580:1;18577;18570:12;18594:117;18703:1;18700;18693:12;18717:117;18826:1;18823;18816:12;18840:725;18918:4;18924:6;18980:11;18967:25;19080:1;19074:4;19070:12;19059:8;19043:14;19039:29;19035:48;19015:18;19011:73;19001:168;;19088:79;;:::i;:::-;19001:168;19200:18;19190:8;19186:33;19178:41;;19252:4;19239:18;19229:28;;19280:18;19272:6;19269:30;19266:117;;;19302:79;;:::i;:::-;19266:117;19410:2;19404:4;19400:13;19392:21;;19467:4;19459:6;19455:17;19439:14;19435:38;19429:4;19425:49;19422:136;;;19477:79;;:::i;:::-;19422:136;18931:634;18840:725;;;;;:::o;19571:191::-;19611:3;19630:20;19648:1;19630:20;:::i;:::-;19625:25;;19664:20;19682:1;19664:20;:::i;:::-;19659:25;;19707:1;19704;19700:9;19693:16;;19728:3;19725:1;19722:10;19719:36;;;19735:18;;:::i;:::-;19719:36;19571:191;;;;:::o;19768:194::-;19808:4;19828:20;19846:1;19828:20;:::i;:::-;19823:25;;19862:20;19880:1;19862:20;:::i;:::-;19857:25;;19906:1;19903;19899:9;19891:17;;19930:1;19924:4;19921:11;19918:37;;;19935:18;;:::i;:::-;19918:37;19768:194;;;;:::o;19968:237::-;20108:34;20104:1;20096:6;20092:14;20085:58;20177:20;20172:2;20164:6;20160:15;20153:45;19968:237;:::o;20211:366::-;20353:3;20374:67;20438:2;20433:3;20374:67;:::i;:::-;20367:74;;20450:93;20539:3;20450:93;:::i;:::-;20568:2;20563:3;20559:12;20552:19;;20211:366;;;:::o;20583:419::-;20749:4;20787:2;20776:9;20772:18;20764:26;;20836:9;20830:4;20826:20;20822:1;20811:9;20807:17;20800:47;20864:131;20990:4;20864:131;:::i;:::-;20856:139;;20583:419;;;:::o;21008:224::-;21148:34;21144:1;21136:6;21132:14;21125:58;21217:7;21212:2;21204:6;21200:15;21193:32;21008:224;:::o;21238:366::-;21380:3;21401:67;21465:2;21460:3;21401:67;:::i;:::-;21394:74;;21477:93;21566:3;21477:93;:::i;:::-;21595:2;21590:3;21586:12;21579:19;;21238:366;;;:::o;21610:419::-;21776:4;21814:2;21803:9;21799:18;21791:26;;21863:9;21857:4;21853:20;21849:1;21838:9;21834:17;21827:47;21891:131;22017:4;21891:131;:::i;:::-;21883:139;;21610:419;;;:::o;22035:148::-;22137:11;22174:3;22159:18;;22035:148;;;;:::o;22213:330::-;22329:3;22350:89;22432:6;22427:3;22350:89;:::i;:::-;22343:96;;22449:56;22498:6;22493:3;22486:5;22449:56;:::i;:::-;22530:6;22525:3;22521:16;22514:23;;22213:330;;;;;:::o;22549:295::-;22691:3;22713:105;22814:3;22805:6;22797;22713:105;:::i;:::-;22706:112;;22835:3;22828:10;;22549:295;;;;;:::o;22850:227::-;22990:34;22986:1;22978:6;22974:14;22967:58;23059:10;23054:2;23046:6;23042:15;23035:35;22850:227;:::o;23083:366::-;23225:3;23246:67;23310:2;23305:3;23246:67;:::i;:::-;23239:74;;23322:93;23411:3;23322:93;:::i;:::-;23440:2;23435:3;23431:12;23424:19;;23083:366;;;:::o;23455:419::-;23621:4;23659:2;23648:9;23644:18;23636:26;;23708:9;23702:4;23698:20;23694:1;23683:9;23679:17;23672:47;23736:131;23862:4;23736:131;:::i;:::-;23728:139;;23455:419;;;:::o;23880:225::-;24020:34;24016:1;24008:6;24004:14;23997:58;24089:8;24084:2;24076:6;24072:15;24065:33;23880:225;:::o;24111:366::-;24253:3;24274:67;24338:2;24333:3;24274:67;:::i;:::-;24267:74;;24350:93;24439:3;24350:93;:::i;:::-;24468:2;24463:3;24459:12;24452:19;;24111:366;;;:::o;24483:419::-;24649:4;24687:2;24676:9;24672:18;24664:26;;24736:9;24730:4;24726:20;24722:1;24711:9;24707:17;24700:47;24764:131;24890:4;24764:131;:::i;:::-;24756:139;;24483:419;;;:::o;24908:223::-;25048:34;25044:1;25036:6;25032:14;25025:58;25117:6;25112:2;25104:6;25100:15;25093:31;24908:223;:::o;25137:366::-;25279:3;25300:67;25364:2;25359:3;25300:67;:::i;:::-;25293:74;;25376:93;25465:3;25376:93;:::i;:::-;25494:2;25489:3;25485:12;25478:19;;25137:366;;;:::o;25509:419::-;25675:4;25713:2;25702:9;25698:18;25690:26;;25762:9;25756:4;25752:20;25748:1;25737:9;25733:17;25726:47;25790:131;25916:4;25790:131;:::i;:::-;25782:139;;25509:419;;;:::o;25934:221::-;26074:34;26070:1;26062:6;26058:14;26051:58;26143:4;26138:2;26130:6;26126:15;26119:29;25934:221;:::o;26161:366::-;26303:3;26324:67;26388:2;26383:3;26324:67;:::i;:::-;26317:74;;26400:93;26489:3;26400:93;:::i;:::-;26518:2;26513:3;26509:12;26502:19;;26161:366;;;:::o;26533:419::-;26699:4;26737:2;26726:9;26722:18;26714:26;;26786:9;26780:4;26776:20;26772:1;26761:9;26757:17;26750:47;26814:131;26940:4;26814:131;:::i;:::-;26806:139;;26533:419;;;:::o;26958:182::-;27098:34;27094:1;27086:6;27082:14;27075:58;26958:182;:::o;27146:366::-;27288:3;27309:67;27373:2;27368:3;27309:67;:::i;:::-;27302:74;;27385:93;27474:3;27385:93;:::i;:::-;27503:2;27498:3;27494:12;27487:19;;27146:366;;;:::o;27518:419::-;27684:4;27722:2;27711:9;27707:18;27699:26;;27771:9;27765:4;27761:20;27757:1;27746:9;27742:17;27735:47;27799:131;27925:4;27799:131;:::i;:::-;27791:139;;27518:419;;;:::o;27943:166::-;28083:18;28079:1;28071:6;28067:14;28060:42;27943:166;:::o;28115:366::-;28257:3;28278:67;28342:2;28337:3;28278:67;:::i;:::-;28271:74;;28354:93;28443:3;28354:93;:::i;:::-;28472:2;28467:3;28463:12;28456:19;;28115:366;;;:::o;28487:419::-;28653:4;28691:2;28680:9;28676:18;28668:26;;28740:9;28734:4;28730:20;28726:1;28715:9;28711:17;28704:47;28768:131;28894:4;28768:131;:::i;:::-;28760:139;;28487:419;;;:::o;28912:179::-;29052:31;29048:1;29040:6;29036:14;29029:55;28912:179;:::o;29097:366::-;29239:3;29260:67;29324:2;29319:3;29260:67;:::i;:::-;29253:74;;29336:93;29425:3;29336:93;:::i;:::-;29454:2;29449:3;29445:12;29438:19;;29097:366;;;:::o;29469:419::-;29635:4;29673:2;29662:9;29658:18;29650:26;;29722:9;29716:4;29712:20;29708:1;29697:9;29693:17;29686:47;29750:131;29876:4;29750:131;:::i;:::-;29742:139;;29469:419;;;:::o;29894:224::-;30034:34;30030:1;30022:6;30018:14;30011:58;30103:7;30098:2;30090:6;30086:15;30079:32;29894:224;:::o;30124:366::-;30266:3;30287:67;30351:2;30346:3;30287:67;:::i;:::-;30280:74;;30363:93;30452:3;30363:93;:::i;:::-;30481:2;30476:3;30472:12;30465:19;;30124:366;;;:::o;30496:419::-;30662:4;30700:2;30689:9;30685:18;30677:26;;30749:9;30743:4;30739:20;30735:1;30724:9;30720:17;30713:47;30777:131;30903:4;30777:131;:::i;:::-;30769:139;;30496:419;;;:::o;30921:222::-;31061:34;31057:1;31049:6;31045:14;31038:58;31130:5;31125:2;31117:6;31113:15;31106:30;30921:222;:::o;31149:366::-;31291:3;31312:67;31376:2;31371:3;31312:67;:::i;:::-;31305:74;;31388:93;31477:3;31388:93;:::i;:::-;31506:2;31501:3;31497:12;31490:19;;31149:366;;;:::o;31521:419::-;31687:4;31725:2;31714:9;31710:18;31702:26;;31774:9;31768:4;31764:20;31760:1;31749:9;31745:17;31738:47;31802:131;31928:4;31802:131;:::i;:::-;31794:139;;31521:419;;;:::o;31946:225::-;32086:34;32082:1;32074:6;32070:14;32063:58;32155:8;32150:2;32142:6;32138:15;32131:33;31946:225;:::o;32177:366::-;32319:3;32340:67;32404:2;32399:3;32340:67;:::i;:::-;32333:74;;32416:93;32505:3;32416:93;:::i;:::-;32534:2;32529:3;32525:12;32518:19;;32177:366;;;:::o;32549:419::-;32715:4;32753:2;32742:9;32738:18;32730:26;;32802:9;32796:4;32792:20;32788:1;32777:9;32773:17;32766:47;32830:131;32956:4;32830:131;:::i;:::-;32822:139;;32549:419;;;:::o;32974:220::-;33114:34;33110:1;33102:6;33098:14;33091:58;33183:3;33178:2;33170:6;33166:15;33159:28;32974:220;:::o;33200:366::-;33342:3;33363:67;33427:2;33422:3;33363:67;:::i;:::-;33356:74;;33439:93;33528:3;33439:93;:::i;:::-;33557:2;33552:3;33548:12;33541:19;;33200:366;;;:::o;33572:419::-;33738:4;33776:2;33765:9;33761:18;33753:26;;33825:9;33819:4;33815:20;33811:1;33800:9;33796:17;33789:47;33853:131;33979:4;33853:131;:::i;:::-;33845:139;;33572:419;;;:::o;33997:221::-;34137:34;34133:1;34125:6;34121:14;34114:58;34206:4;34201:2;34193:6;34189:15;34182:29;33997:221;:::o;34224:366::-;34366:3;34387:67;34451:2;34446:3;34387:67;:::i;:::-;34380:74;;34463:93;34552:3;34463:93;:::i;:::-;34581:2;34576:3;34572:12;34565:19;;34224:366;;;:::o;34596:419::-;34762:4;34800:2;34789:9;34785:18;34777:26;;34849:9;34843:4;34839:20;34835:1;34824:9;34820:17;34813:47;34877:131;35003:4;34877:131;:::i;:::-;34869:139;;34596:419;;;:::o;35021:175::-;35161:27;35157:1;35149:6;35145:14;35138:51;35021:175;:::o;35202:366::-;35344:3;35365:67;35429:2;35424:3;35365:67;:::i;:::-;35358:74;;35441:93;35530:3;35441:93;:::i;:::-;35559:2;35554:3;35550:12;35543:19;;35202:366;;;:::o;35574:419::-;35740:4;35778:2;35767:9;35763:18;35755:26;;35827:9;35821:4;35817:20;35813:1;35802:9;35798:17;35791:47;35855:131;35981:4;35855:131;:::i;:::-;35847:139;;35574:419;;;:::o;35999:170::-;36139:22;36135:1;36127:6;36123:14;36116:46;35999:170;:::o;36175:366::-;36317:3;36338:67;36402:2;36397:3;36338:67;:::i;:::-;36331:74;;36414:93;36503:3;36414:93;:::i;:::-;36532:2;36527:3;36523:12;36516:19;;36175:366;;;:::o;36547:419::-;36713:4;36751:2;36740:9;36736:18;36728:26;;36800:9;36794:4;36790:20;36786:1;36775:9;36771:17;36764:47;36828:131;36954:4;36828:131;:::i;:::-;36820:139;;36547:419;;;:::o;36972:181::-;37112:33;37108:1;37100:6;37096:14;37089:57;36972:181;:::o;37159:366::-;37301:3;37322:67;37386:2;37381:3;37322:67;:::i;:::-;37315:74;;37398:93;37487:3;37398:93;:::i;:::-;37516:2;37511:3;37507:12;37500:19;;37159:366;;;:::o;37531:419::-;37697:4;37735:2;37724:9;37720:18;37712:26;;37784:9;37778:4;37774:20;37770:1;37759:9;37755:17;37748:47;37812:131;37938:4;37812:131;:::i;:::-;37804:139;;37531:419;;;:::o
Swarm Source
ipfs://d577e9f610430590fa3a7dd905badd815031da84e617f2375e2ab30b1e3d859b
Loading...
Loading
OVERVIEW
PTRN, the data collection utility token, is designed to be used to exchange value in a secure, transparent and fair blockchain based smart contracting ecosystem. PTRN is associated with an AI-powered decentralized network that aims to enhance the accessibility, affordability and transparency of dataLoading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.