Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 11 from a total of 11 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Clock_In | 17556912 | 552 days ago | IN | 0.001 ETH | 0.00100053 | ||||
Transfer | 17556847 | 552 days ago | IN | 0.00001 ETH | 0.000848 | ||||
Transfer | 17556277 | 552 days ago | IN | 0.00001 ETH | 0.00072006 | ||||
Transfer | 17556078 | 553 days ago | IN | 0.00001 ETH | 0.000807 | ||||
Transfer | 17556029 | 553 days ago | IN | 0.00001 ETH | 0.00173139 | ||||
Set Wallet Z | 17509352 | 559 days ago | IN | 0 ETH | 0.00039503 | ||||
Set Wallet X | 17506738 | 559 days ago | IN | 0 ETH | 0.0004279 | ||||
Set Wallet X | 17506698 | 559 days ago | IN | 0 ETH | 0.00042024 | ||||
Check Success | 17503587 | 560 days ago | IN | 0.001 ETH | 0.00150129 | ||||
Clock_Out | 17503579 | 560 days ago | IN | 0.001 ETH | 0.00118612 | ||||
Clock_In | 17502986 | 560 days ago | IN | 0.001 ETH | 0.00118483 |
Latest 8 internal transactions
Advanced mode:
Loading...
Loading
Contract Name:
amatotoClock
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-18 */ // SPDX-License-Identifier: MIT 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); } /** * @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); } /** * @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; } } /** * @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.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * 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}. * * 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 default value returned by this function, unless * it's 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; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _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; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _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; // Overflow not possible: amount <= accountBalance <= totalSupply. _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 {} } /** * @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); } } /** * @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. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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); } } //------------------------------------------- //contact: amatoto.io or amatoto.com/ email: [email protected] //clock_In(), clock_Out() and challengeSucceed() to play with this contract. //setDate() to reset the activity or send at exaxt x time any amount to the contract //----------------------------------------------- //import the uniswap router //the contract needs to use swapExactTokensForTokens //this will allow us to import swapExactTokensForTokens into our contract //--------------------------------------------------- contract amatotoClock is ERC20, ERC20Burnable, Ownable { using SafeMath for uint256; address Owner; address walletX=0x1B40e137AAe767a6E408fdC1fD5590c0323d4709; address WalletY=0x5B83881c229F12846D1a4e698A71E357e8EAb2C3; address WalletZ=0x1902711bBf8c0b23D50E3300ee0c33bEE2FafAED; address anyWallet=0x7996F7D4c4A23DD06bFF79cBD26C66Ec391247E5; uint timeHours;uint timeReset; uint walletDate;uint amatotoDate; mapping(address=>uint) private clockIn; mapping(address=>uint) private clockOut; uint256 tokenPaid=15000000; uint256 limitToken=0; uint tranferChoice=1; uint qtToken=3; uint mintOrStock=1; constructor() ERC20("amatotoClock", "AMACLOCK") { walletDate = block.timestamp; amatotoDate = block.timestamp; timeHours=3 hours; timeReset=4 hours; Owner=msg.sender; } // count number first 501 users obtain more tokens function alimitToken() public view returns (uint256) { return limitToken; } function xDaysHavePassed(uint xdays) private view returns (bool) { return (xdays == (amatotoDate + 2 days)); } function setDate()external onlyOwner{ amatotoDate = block.timestamp; } function setTimeHours(uint _timeHours)external onlyOwner{ require(_timeHours >=3,"time < 3 hours, add one more at least"); timeHours=_timeHours; timeReset=_timeHours + 1 hours; } function clock_In()external payable{ require(msg.value ==1e15 wei, "Not enough funds"); payable(walletX).transfer(msg.value); require(clockIn[msg.sender]==0,"User has already clocked in"); clockIn[msg.sender] = block.timestamp; } function clock_Out()external payable{ require(clockIn[msg.sender]>0,"User did not clock in"); require(msg.value ==1e15 wei, "Not enough funds"); payable(WalletZ).transfer(msg.value); require(clockOut[msg.sender]==0,"User has already clocked out"); clockOut[msg.sender] = block.timestamp; } function timeUser()external view returns (uint){ require(clockOut[msg.sender]>0,"User did not clock out"); uint timeIn=clockIn[msg.sender] ; uint timeOut=clockOut[msg.sender]; uint diff= timeOut - timeIn; return diff; } function timeOutUser() public view returns (uint){ require(clockOut[msg.sender]>0,"User did not clock out"); uint timeOut=clockOut[msg.sender]; return timeOut; } ///use this after clock out function checkSuccess() external payable{ require(msg.value ==1e15 wei, "Not enough funds"); require(clockIn[msg.sender]>0,"User did not clock in"); require(clockOut[msg.sender]>0,"User did not clock out"); payable(walletX).transfer(msg.value); uint timeOut=timeOutUser(); if (timeOut >(amatotoDate + 2 hours)) { if(timeOut < amatotoDate + timeHours){ //mint token for user _mint(msg.sender, tokenPaid * 10**18); if (limitToken <=501){ tokenPaid=100; limitToken +=1; }else{ tokenPaid=10; } } } clockIn[msg.sender] =0; clockOut[msg.sender] =0; } function timeInUser()external view returns (uint){ require(clockIn[msg.sender]>0,"User did not clock out"); uint timeIn=clockIn[msg.sender] ; return timeIn; } function withdraw() public onlyOwner { payable(msg.sender).transfer(address(this).balance); } function setWalletX(address walletPay)external onlyOwner { walletX = walletPay; } function setWalletY(address walletPay)external onlyOwner { WalletY = walletPay; } function setWalletZ(address walletPay)external onlyOwner { WalletZ = walletPay; } function any_Wallet()external payable returns (address){ require(msg.value ==1e18 wei, "Not enough funds"); payable(walletX).transfer(msg.value); return anyWallet; } function Wallet_Y()external view returns (address){ return WalletY; } function Wallet_X()external view returns (address){ return walletX; } /* function setqtToken(uint _qtToken)external onlyOwner { qtToken = _qtToken; } */ function setTranferChoice(uint choice)external onlyOwner { tranferChoice = choice;// } function setAnyWallet(address payable anyWalletPay) public { require(block.timestamp > walletDate + 12 hours);//now +12 hours or in 12 hours anyWallet = anyWalletPay; walletDate = block.timestamp;//reset it to now time } function resetAllWallet()external onlyOwner{ walletX=0x1B40e137AAe767a6E408fdC1fD5590c0323d4709; WalletY=0x5B83881c229F12846D1a4e698A71E357e8EAb2C3; WalletZ=0x1902711bBf8c0b23D50E3300ee0c33bEE2FafAED; anyWallet=0x7996F7D4c4A23DD06bFF79cBD26C66Ec391247E5; } //----------------------------------------------- uint256 amountu; /// @notice Handles when funds are sent directly to the contract address for donation receive() external payable { amountu = msg.value * qtToken; if (tranferChoice==0){ payable(walletX).transfer(msg.value); _mint(msg.sender, amountu * 10**18); }else if(tranferChoice==1){ payable(WalletY).transfer(msg.value); _mint(msg.sender, amountu * 10**18); }else if(tranferChoice==2){ payable(anyWallet).transfer(msg.value); _mint(msg.sender, amountu * 10**18); }else{ // send the wei earned to the token owner payable(Owner).transfer((msg.value).div(2)); // send half ether earned to a service wallet for the project payable(WalletZ).transfer((msg.value).div(2)); _mint(msg.sender, amountu * 10**18); /* if(mintOrStock==0){ uint256 amount = msg.value * qtToken; // ensure you have enough tokens to sell require(balanceOf(address(this)) >= amount, "Not enough tokens"); // transfer the token to the buyer _transfer(address(this), msg.sender, amount); // emit an event to inform of the transfer emit Transfer(address(this), msg.sender, amount); } */ } //----------reset the time automatically------------------ if(block.timestamp > amatotoDate + timeReset){ amatotoDate=block.timestamp; } } } /** * @title SafeMathInt * @dev Math operations for int256 with overflow safety checks. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheArtHatr than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } //-------------------end safeMath------------
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Wallet_X","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Wallet_Y","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"alimitToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"any_Wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkSuccess","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"clock_In","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"clock_Out","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetAllWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"anyWalletPay","type":"address"}],"name":"setAnyWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeHours","type":"uint256"}],"name":"setTimeHours","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"choice","type":"uint256"}],"name":"setTranferChoice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletPay","type":"address"}],"name":"setWalletX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletPay","type":"address"}],"name":"setWalletY","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletPay","type":"address"}],"name":"setWalletZ","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeInUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeOutUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeUser","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":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052731b40e137aae767a6e408fdc1fd5590c0323d4709600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735b83881c229f12846d1a4e698a71e357e8eab2c3600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731902711bbf8c0b23d50e3300ee0c33bee2fafaed600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737996f7d4c4a23dd06bff79cbd26c66ec391247e5600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062e4e1c060115560006012556001601355600360145560016015553480156200018057600080fd5b506040518060400160405280600c81526020017f616d61746f746f436c6f636b00000000000000000000000000000000000000008152506040518060400160405280600881526020017f414d41434c4f434b0000000000000000000000000000000000000000000000008152508160039081620001fe9190620005e2565b508060049081620002109190620005e2565b50505062000233620002276200029a60201b60201c565b620002a260201b60201c565b42600d8190555042600e81905550612a30600b81905550613840600c8190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006c9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003ea57607f821691505b6020821081036200040057620003ff620003a2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200046a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200042b565b6200047686836200042b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004c3620004bd620004b7846200048e565b62000498565b6200048e565b9050919050565b6000819050919050565b620004df83620004a2565b620004f7620004ee82620004ca565b84845462000438565b825550505050565b600090565b6200050e620004ff565b6200051b818484620004d4565b505050565b5b8181101562000543576200053760008262000504565b60018101905062000521565b5050565b601f82111562000592576200055c8162000406565b62000567846200041b565b8101602085101562000577578190505b6200058f62000586856200041b565b83018262000520565b50505b505050565b600082821c905092915050565b6000620005b76000198460080262000597565b1980831691505092915050565b6000620005d28383620005a4565b9150826002028217905092915050565b620005ed8262000368565b67ffffffffffffffff81111562000609576200060862000373565b5b620006158254620003d1565b6200062282828562000547565b600060209050601f8311600181146200065a576000841562000645578287015190505b620006518582620005c4565b865550620006c1565b601f1984166200066a8662000406565b60005b8281101562000694578489015182556001820191506020850194506020810190506200066d565b86831015620006b45784890151620006b0601f891682620005a4565b8355505b6001600288020188555050505b505050505050565b61353080620006d96000396000f3fe6080604052600436106102085760003560e01c806377d5ae6411610118578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e146109e0578063f2fde38b14610a1d578063f985000814610a46578063f9e382cf14610a5d578063fe6bef4214610a8857610521565b8063a9059cbb14610931578063c81247461461096e578063cd8cd05b14610999578063d808d0ab146109c257610521565b806395d89b41116100e757806395d89b411461088c5780639ffdb853146108b7578063a457c2d7146108c1578063a5ff9d6b146108fe578063a8f8a4fe1461090857610521565b806377d5ae64146107e457806379cc67901461080d578063849a275b146108365780638da5cb5b1461086157610521565b8063395093511161019b578063686961691161016a578063686961691461072357806368c7bf841461074e578063696f936e1461076557806370a0823114610790578063715018a6146107cd57610521565b8063395093511461067d5780633ccfd60b146106ba57806342966c68146106d157806345a8ce6b146106fa57610521565b806318160ddd116101d757806318160ddd146105c15780631a4a0278146105ec57806323b872dd14610615578063313ce5671461065257610521565b8063011e64921461052657806306fdde0314610530578063095ea7b31461055b5780630f51ed521461059857610521565b36610521576014543461021b9190612676565b6016819055506000601354036102b857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610293573d6000803e3d6000fd5b506102b333670de0b6b3a76400006016546102ae9190612676565b610ab3565b610500565b60016013540361034f57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561032a573d6000803e3d6000fd5b5061034a33670de0b6b3a76400006016546103459190612676565b610ab3565b6104ff565b6002601354036103e657600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156103c1573d6000803e3d6000fd5b506103e133670de0b6b3a76400006016546103dc9190612676565b610ab3565b6104fe565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc610436600234610c0990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015610461573d6000803e3d6000fd5b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6104b2600234610c0990919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156104dd573d6000803e3d6000fd5b506104fd33670de0b6b3a76400006016546104f89190612676565b610ab3565b5b5b5b600c54600e5461051091906126b8565b42111561051f5742600e819055505b005b600080fd5b61052e610c61565b005b34801561053c57600080fd5b50610545610f3a565b604051610552919061277c565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d919061282d565b610fcc565b60405161058f9190612888565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba91906128e1565b610fef565b005b3480156105cd57600080fd5b506105d6611055565b6040516105e3919061291d565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e9190612938565b61105f565b005b34801561062157600080fd5b5061063c60048036038101906106379190612965565b6110c9565b6040516106499190612888565b60405180910390f35b34801561065e57600080fd5b506106676110f8565b60405161067491906129d4565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f919061282d565b611101565b6040516106b19190612888565b60405180910390f35b3480156106c657600080fd5b506106cf611138565b005b3480156106dd57600080fd5b506106f860048036038101906106f39190612938565b611189565b005b34801561070657600080fd5b50610721600480360381019061071c91906129ef565b61119d565b005b34801561072f57600080fd5b506107386111e9565b6040516107459190612a2b565b60405180910390f35b34801561075a57600080fd5b50610763611213565b005b34801561077157600080fd5b5061077a611371565b604051610787919061291d565b60405180910390f35b34801561079c57600080fd5b506107b760048036038101906107b291906129ef565b61143f565b6040516107c4919061291d565b60405180910390f35b3480156107d957600080fd5b506107e2611487565b005b3480156107f057600080fd5b5061080b600480360381019061080691906129ef565b61149b565b005b34801561081957600080fd5b50610834600480360381019061082f919061282d565b6114e7565b005b34801561084257600080fd5b5061084b611507565b6040516108589190612a2b565b60405180910390f35b34801561086d57600080fd5b50610876611531565b6040516108839190612a2b565b60405180910390f35b34801561089857600080fd5b506108a161155b565b6040516108ae919061277c565b60405180910390f35b6108bf6115ed565b005b3480156108cd57600080fd5b506108e860048036038101906108e3919061282d565b611767565b6040516108f59190612888565b60405180910390f35b6109066117de565b005b34801561091457600080fd5b5061092f600480360381019061092a9190612938565b6119da565b005b34801561093d57600080fd5b506109586004803603810190610953919061282d565b6119ec565b6040516109659190612888565b60405180910390f35b34801561097a57600080fd5b50610983611a0f565b604051610990919061291d565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb91906129ef565b611b33565b005b6109ca611b7f565b6040516109d79190612a2b565b60405180910390f35b3480156109ec57600080fd5b50610a076004803603810190610a029190612a46565b611c5c565b604051610a14919061291d565b60405180910390f35b348015610a2957600080fd5b50610a446004803603810190610a3f91906129ef565b611ce3565b005b348015610a5257600080fd5b50610a5b611d66565b005b348015610a6957600080fd5b50610a72611d77565b604051610a7f919061291d565b60405180910390f35b348015610a9457600080fd5b50610a9d611d81565b604051610aaa919061291d565b60405180910390f35b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990612ad2565b60405180910390fd5b610b2e60008383611e4f565b8060026000828254610b4091906126b8565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bf1919061291d565b60405180910390a3610c0560008383611e54565b5050565b6000808211610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490612b3e565b60405180910390fd5b8183610c599190612b8d565b905092915050565b66038d7ea4c680003414610caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca190612c0a565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2390612c76565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da590612ce2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610e16573d6000803e3d6000fd5b506000610e21611371565b9050611c20600e54610e3391906126b8565b811115610ead57600b54600e54610e4a91906126b8565b811015610eac57610e7033670de0b6b3a7640000601154610e6b9190612676565b610ab3565b6101f560125411610ea2576064601181905550600160126000828254610e9691906126b8565b92505081905550610eab565b600a6011819055505b5b5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b606060038054610f4990612d31565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7590612d31565b8015610fc25780601f10610f9757610100808354040283529160200191610fc2565b820191906000526020600020905b815481529060010190602001808311610fa557829003601f168201915b5050505050905090565b600080610fd7611e59565b9050610fe4818585611e61565b600191505092915050565b61a8c0600d54610fff91906126b8565b421161100a57600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600d8190555050565b6000600254905090565b61106761202a565b60038110156110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a290612dd4565b60405180910390fd5b80600b81905550610e10816110c091906126b8565b600c8190555050565b6000806110d4611e59565b90506110e18582856120a8565b6110ec858585612134565b60019150509392505050565b60006012905090565b60008061110c611e59565b905061112d81858561111e8589611c5c565b61112891906126b8565b611e61565b600191505092915050565b61114061202a565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611186573d6000803e3d6000fd5b50565b61119a611194611e59565b826123aa565b50565b6111a561202a565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61121b61202a565b731b40e137aae767a6e408fdc1fd5590c0323d4709600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735b83881c229f12846d1a4e698a71e357e8eab2c3600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731902711bbf8c0b23d50e3300ee0c33bee2fafaed600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737996f7d4c4a23dd06bff79cbd26c66ec391247e5600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb90612ce2565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508091505090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61148f61202a565b6114996000612577565b565b6114a361202a565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114f9826114f3611e59565b836120a8565b61150382826123aa565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461156a90612d31565b80601f016020809104026020016040519081016040528092919081815260200182805461159690612d31565b80156115e35780601f106115b8576101008083540402835291602001916115e3565b820191906000526020600020905b8154815290600101906020018083116115c657829003601f168201915b5050505050905090565b66038d7ea4c680003414611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162d90612c0a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561169e573d6000803e3d6000fd5b506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171890612e40565b60405180910390fd5b42600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600080611772611e59565b905060006117808286611c5c565b9050838110156117c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bc90612ed2565b60405180910390fd5b6117d28286868403611e61565b60019250505092915050565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185790612c76565b60405180910390fd5b66038d7ea4c6800034146118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a090612c0a565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611911573d6000803e3d6000fd5b506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b90612f3e565b60405180910390fd5b42601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6119e261202a565b8060138190555050565b6000806119f7611e59565b9050611a04818585612134565b600191505092915050565b600080601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990612ce2565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008282611b289190612f5e565b905080935050505090565b611b3b61202a565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000670de0b6b3a76400003414611bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc290612c0a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611c33573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ceb61202a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5190613004565b60405180910390fd5b611d6381612577565b50565b611d6e61202a565b42600e81905550565b6000601254905090565b600080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb90612ce2565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508091505090565b505050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec790613096565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3690613128565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161201d919061291d565b60405180910390a3505050565b612032611e59565b73ffffffffffffffffffffffffffffffffffffffff16612050611531565b73ffffffffffffffffffffffffffffffffffffffff16146120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90613194565b60405180910390fd5b565b60006120b48484611c5c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461212e5781811015612120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211790613200565b60405180910390fd5b61212d8484848403611e61565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90613292565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220990613324565b60405180910390fd5b61221d838383611e4f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229a906133b6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612391919061291d565b60405180910390a36123a4848484611e54565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241090613448565b60405180910390fd5b61242582600083611e4f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156124ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a2906134da565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161255e919061291d565b60405180910390a361257283600084611e54565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126818261263d565b915061268c8361263d565b925082820261269a8161263d565b915082820484148315176126b1576126b0612647565b5b5092915050565b60006126c38261263d565b91506126ce8361263d565b92508282019050808211156126e6576126e5612647565b5b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561272657808201518184015260208101905061270b565b60008484015250505050565b6000601f19601f8301169050919050565b600061274e826126ec565b61275881856126f7565b9350612768818560208601612708565b61277181612732565b840191505092915050565b600060208201905081810360008301526127968184612743565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127ce826127a3565b9050919050565b6127de816127c3565b81146127e957600080fd5b50565b6000813590506127fb816127d5565b92915050565b61280a8161263d565b811461281557600080fd5b50565b60008135905061282781612801565b92915050565b600080604083850312156128445761284361279e565b5b6000612852858286016127ec565b925050602061286385828601612818565b9150509250929050565b60008115159050919050565b6128828161286d565b82525050565b600060208201905061289d6000830184612879565b92915050565b60006128ae826127a3565b9050919050565b6128be816128a3565b81146128c957600080fd5b50565b6000813590506128db816128b5565b92915050565b6000602082840312156128f7576128f661279e565b5b6000612905848285016128cc565b91505092915050565b6129178161263d565b82525050565b6000602082019050612932600083018461290e565b92915050565b60006020828403121561294e5761294d61279e565b5b600061295c84828501612818565b91505092915050565b60008060006060848603121561297e5761297d61279e565b5b600061298c868287016127ec565b935050602061299d868287016127ec565b92505060406129ae86828701612818565b9150509250925092565b600060ff82169050919050565b6129ce816129b8565b82525050565b60006020820190506129e960008301846129c5565b92915050565b600060208284031215612a0557612a0461279e565b5b6000612a13848285016127ec565b91505092915050565b612a25816127c3565b82525050565b6000602082019050612a406000830184612a1c565b92915050565b60008060408385031215612a5d57612a5c61279e565b5b6000612a6b858286016127ec565b9250506020612a7c858286016127ec565b9150509250929050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612abc601f836126f7565b9150612ac782612a86565b602082019050919050565b60006020820190508181036000830152612aeb81612aaf565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b6000612b28601a836126f7565b9150612b3382612af2565b602082019050919050565b60006020820190508181036000830152612b5781612b1b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b988261263d565b9150612ba38361263d565b925082612bb357612bb2612b5e565b5b828204905092915050565b7f4e6f7420656e6f7567682066756e647300000000000000000000000000000000600082015250565b6000612bf46010836126f7565b9150612bff82612bbe565b602082019050919050565b60006020820190508181036000830152612c2381612be7565b9050919050565b7f5573657220646964206e6f7420636c6f636b20696e0000000000000000000000600082015250565b6000612c606015836126f7565b9150612c6b82612c2a565b602082019050919050565b60006020820190508181036000830152612c8f81612c53565b9050919050565b7f5573657220646964206e6f7420636c6f636b206f757400000000000000000000600082015250565b6000612ccc6016836126f7565b9150612cd782612c96565b602082019050919050565b60006020820190508181036000830152612cfb81612cbf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d4957607f821691505b602082108103612d5c57612d5b612d02565b5b50919050565b7f74696d65203c203320686f7572732c20616464206f6e65206d6f72652061742060008201527f6c65617374000000000000000000000000000000000000000000000000000000602082015250565b6000612dbe6025836126f7565b9150612dc982612d62565b604082019050919050565b60006020820190508181036000830152612ded81612db1565b9050919050565b7f557365722068617320616c726561647920636c6f636b656420696e0000000000600082015250565b6000612e2a601b836126f7565b9150612e3582612df4565b602082019050919050565b60006020820190508181036000830152612e5981612e1d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612ebc6025836126f7565b9150612ec782612e60565b604082019050919050565b60006020820190508181036000830152612eeb81612eaf565b9050919050565b7f557365722068617320616c726561647920636c6f636b6564206f757400000000600082015250565b6000612f28601c836126f7565b9150612f3382612ef2565b602082019050919050565b60006020820190508181036000830152612f5781612f1b565b9050919050565b6000612f698261263d565b9150612f748361263d565b9250828203905081811115612f8c57612f8b612647565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612fee6026836126f7565b9150612ff982612f92565b604082019050919050565b6000602082019050818103600083015261301d81612fe1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130806024836126f7565b915061308b82613024565b604082019050919050565b600060208201905081810360008301526130af81613073565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131126022836126f7565b915061311d826130b6565b604082019050919050565b6000602082019050818103600083015261314181613105565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061317e6020836126f7565b915061318982613148565b602082019050919050565b600060208201905081810360008301526131ad81613171565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006131ea601d836126f7565b91506131f5826131b4565b602082019050919050565b60006020820190508181036000830152613219816131dd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061327c6025836126f7565b915061328782613220565b604082019050919050565b600060208201905081810360008301526132ab8161326f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061330e6023836126f7565b9150613319826132b2565b604082019050919050565b6000602082019050818103600083015261333d81613301565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006133a06026836126f7565b91506133ab82613344565b604082019050919050565b600060208201905081810360008301526133cf81613393565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006134326021836126f7565b915061343d826133d6565b604082019050919050565b6000602082019050818103600083015261346181613425565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c46022836126f7565b91506134cf82613468565b604082019050919050565b600060208201905081810360008301526134f3816134b7565b905091905056fea26469706673582212208c6e679b9679befe1fe72bec34231d9d44c2a929cc1d57ba5ca81dcab224b6a564736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102085760003560e01c806377d5ae6411610118578063a9059cbb116100a0578063dd62ed3e1161006f578063dd62ed3e146109e0578063f2fde38b14610a1d578063f985000814610a46578063f9e382cf14610a5d578063fe6bef4214610a8857610521565b8063a9059cbb14610931578063c81247461461096e578063cd8cd05b14610999578063d808d0ab146109c257610521565b806395d89b41116100e757806395d89b411461088c5780639ffdb853146108b7578063a457c2d7146108c1578063a5ff9d6b146108fe578063a8f8a4fe1461090857610521565b806377d5ae64146107e457806379cc67901461080d578063849a275b146108365780638da5cb5b1461086157610521565b8063395093511161019b578063686961691161016a578063686961691461072357806368c7bf841461074e578063696f936e1461076557806370a0823114610790578063715018a6146107cd57610521565b8063395093511461067d5780633ccfd60b146106ba57806342966c68146106d157806345a8ce6b146106fa57610521565b806318160ddd116101d757806318160ddd146105c15780631a4a0278146105ec57806323b872dd14610615578063313ce5671461065257610521565b8063011e64921461052657806306fdde0314610530578063095ea7b31461055b5780630f51ed521461059857610521565b36610521576014543461021b9190612676565b6016819055506000601354036102b857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610293573d6000803e3d6000fd5b506102b333670de0b6b3a76400006016546102ae9190612676565b610ab3565b610500565b60016013540361034f57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561032a573d6000803e3d6000fd5b5061034a33670de0b6b3a76400006016546103459190612676565b610ab3565b6104ff565b6002601354036103e657600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156103c1573d6000803e3d6000fd5b506103e133670de0b6b3a76400006016546103dc9190612676565b610ab3565b6104fe565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc610436600234610c0990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015610461573d6000803e3d6000fd5b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6104b2600234610c0990919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156104dd573d6000803e3d6000fd5b506104fd33670de0b6b3a76400006016546104f89190612676565b610ab3565b5b5b5b600c54600e5461051091906126b8565b42111561051f5742600e819055505b005b600080fd5b61052e610c61565b005b34801561053c57600080fd5b50610545610f3a565b604051610552919061277c565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d919061282d565b610fcc565b60405161058f9190612888565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba91906128e1565b610fef565b005b3480156105cd57600080fd5b506105d6611055565b6040516105e3919061291d565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e9190612938565b61105f565b005b34801561062157600080fd5b5061063c60048036038101906106379190612965565b6110c9565b6040516106499190612888565b60405180910390f35b34801561065e57600080fd5b506106676110f8565b60405161067491906129d4565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f919061282d565b611101565b6040516106b19190612888565b60405180910390f35b3480156106c657600080fd5b506106cf611138565b005b3480156106dd57600080fd5b506106f860048036038101906106f39190612938565b611189565b005b34801561070657600080fd5b50610721600480360381019061071c91906129ef565b61119d565b005b34801561072f57600080fd5b506107386111e9565b6040516107459190612a2b565b60405180910390f35b34801561075a57600080fd5b50610763611213565b005b34801561077157600080fd5b5061077a611371565b604051610787919061291d565b60405180910390f35b34801561079c57600080fd5b506107b760048036038101906107b291906129ef565b61143f565b6040516107c4919061291d565b60405180910390f35b3480156107d957600080fd5b506107e2611487565b005b3480156107f057600080fd5b5061080b600480360381019061080691906129ef565b61149b565b005b34801561081957600080fd5b50610834600480360381019061082f919061282d565b6114e7565b005b34801561084257600080fd5b5061084b611507565b6040516108589190612a2b565b60405180910390f35b34801561086d57600080fd5b50610876611531565b6040516108839190612a2b565b60405180910390f35b34801561089857600080fd5b506108a161155b565b6040516108ae919061277c565b60405180910390f35b6108bf6115ed565b005b3480156108cd57600080fd5b506108e860048036038101906108e3919061282d565b611767565b6040516108f59190612888565b60405180910390f35b6109066117de565b005b34801561091457600080fd5b5061092f600480360381019061092a9190612938565b6119da565b005b34801561093d57600080fd5b506109586004803603810190610953919061282d565b6119ec565b6040516109659190612888565b60405180910390f35b34801561097a57600080fd5b50610983611a0f565b604051610990919061291d565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb91906129ef565b611b33565b005b6109ca611b7f565b6040516109d79190612a2b565b60405180910390f35b3480156109ec57600080fd5b50610a076004803603810190610a029190612a46565b611c5c565b604051610a14919061291d565b60405180910390f35b348015610a2957600080fd5b50610a446004803603810190610a3f91906129ef565b611ce3565b005b348015610a5257600080fd5b50610a5b611d66565b005b348015610a6957600080fd5b50610a72611d77565b604051610a7f919061291d565b60405180910390f35b348015610a9457600080fd5b50610a9d611d81565b604051610aaa919061291d565b60405180910390f35b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990612ad2565b60405180910390fd5b610b2e60008383611e4f565b8060026000828254610b4091906126b8565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bf1919061291d565b60405180910390a3610c0560008383611e54565b5050565b6000808211610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490612b3e565b60405180910390fd5b8183610c599190612b8d565b905092915050565b66038d7ea4c680003414610caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca190612c0a565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2390612c76565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da590612ce2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610e16573d6000803e3d6000fd5b506000610e21611371565b9050611c20600e54610e3391906126b8565b811115610ead57600b54600e54610e4a91906126b8565b811015610eac57610e7033670de0b6b3a7640000601154610e6b9190612676565b610ab3565b6101f560125411610ea2576064601181905550600160126000828254610e9691906126b8565b92505081905550610eab565b600a6011819055505b5b5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b606060038054610f4990612d31565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7590612d31565b8015610fc25780601f10610f9757610100808354040283529160200191610fc2565b820191906000526020600020905b815481529060010190602001808311610fa557829003601f168201915b5050505050905090565b600080610fd7611e59565b9050610fe4818585611e61565b600191505092915050565b61a8c0600d54610fff91906126b8565b421161100a57600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600d8190555050565b6000600254905090565b61106761202a565b60038110156110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a290612dd4565b60405180910390fd5b80600b81905550610e10816110c091906126b8565b600c8190555050565b6000806110d4611e59565b90506110e18582856120a8565b6110ec858585612134565b60019150509392505050565b60006012905090565b60008061110c611e59565b905061112d81858561111e8589611c5c565b61112891906126b8565b611e61565b600191505092915050565b61114061202a565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611186573d6000803e3d6000fd5b50565b61119a611194611e59565b826123aa565b50565b6111a561202a565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61121b61202a565b731b40e137aae767a6e408fdc1fd5590c0323d4709600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735b83881c229f12846d1a4e698a71e357e8eab2c3600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731902711bbf8c0b23d50e3300ee0c33bee2fafaed600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737996f7d4c4a23dd06bff79cbd26c66ec391247e5600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116113f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113eb90612ce2565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508091505090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61148f61202a565b6114996000612577565b565b6114a361202a565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114f9826114f3611e59565b836120a8565b61150382826123aa565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461156a90612d31565b80601f016020809104026020016040519081016040528092919081815260200182805461159690612d31565b80156115e35780601f106115b8576101008083540402835291602001916115e3565b820191906000526020600020905b8154815290600101906020018083116115c657829003601f168201915b5050505050905090565b66038d7ea4c680003414611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162d90612c0a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561169e573d6000803e3d6000fd5b506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171890612e40565b60405180910390fd5b42600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600080611772611e59565b905060006117808286611c5c565b9050838110156117c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bc90612ed2565b60405180910390fd5b6117d28286868403611e61565b60019250505092915050565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185790612c76565b60405180910390fd5b66038d7ea4c6800034146118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a090612c0a565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611911573d6000803e3d6000fd5b506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b90612f3e565b60405180910390fd5b42601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6119e261202a565b8060138190555050565b6000806119f7611e59565b9050611a04818585612134565b600191505092915050565b600080601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990612ce2565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008282611b289190612f5e565b905080935050505090565b611b3b61202a565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000670de0b6b3a76400003414611bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc290612c0a565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611c33573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ceb61202a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5190613004565b60405180910390fd5b611d6381612577565b50565b611d6e61202a565b42600e81905550565b6000601254905090565b600080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb90612ce2565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508091505090565b505050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec790613096565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3690613128565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161201d919061291d565b60405180910390a3505050565b612032611e59565b73ffffffffffffffffffffffffffffffffffffffff16612050611531565b73ffffffffffffffffffffffffffffffffffffffff16146120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90613194565b60405180910390fd5b565b60006120b48484611c5c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461212e5781811015612120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211790613200565b60405180910390fd5b61212d8484848403611e61565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90613292565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220990613324565b60405180910390fd5b61221d838383611e4f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229a906133b6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612391919061291d565b60405180910390a36123a4848484611e54565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241090613448565b60405180910390fd5b61242582600083611e4f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156124ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a2906134da565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161255e919061291d565b60405180910390a361257283600084611e54565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126818261263d565b915061268c8361263d565b925082820261269a8161263d565b915082820484148315176126b1576126b0612647565b5b5092915050565b60006126c38261263d565b91506126ce8361263d565b92508282019050808211156126e6576126e5612647565b5b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561272657808201518184015260208101905061270b565b60008484015250505050565b6000601f19601f8301169050919050565b600061274e826126ec565b61275881856126f7565b9350612768818560208601612708565b61277181612732565b840191505092915050565b600060208201905081810360008301526127968184612743565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127ce826127a3565b9050919050565b6127de816127c3565b81146127e957600080fd5b50565b6000813590506127fb816127d5565b92915050565b61280a8161263d565b811461281557600080fd5b50565b60008135905061282781612801565b92915050565b600080604083850312156128445761284361279e565b5b6000612852858286016127ec565b925050602061286385828601612818565b9150509250929050565b60008115159050919050565b6128828161286d565b82525050565b600060208201905061289d6000830184612879565b92915050565b60006128ae826127a3565b9050919050565b6128be816128a3565b81146128c957600080fd5b50565b6000813590506128db816128b5565b92915050565b6000602082840312156128f7576128f661279e565b5b6000612905848285016128cc565b91505092915050565b6129178161263d565b82525050565b6000602082019050612932600083018461290e565b92915050565b60006020828403121561294e5761294d61279e565b5b600061295c84828501612818565b91505092915050565b60008060006060848603121561297e5761297d61279e565b5b600061298c868287016127ec565b935050602061299d868287016127ec565b92505060406129ae86828701612818565b9150509250925092565b600060ff82169050919050565b6129ce816129b8565b82525050565b60006020820190506129e960008301846129c5565b92915050565b600060208284031215612a0557612a0461279e565b5b6000612a13848285016127ec565b91505092915050565b612a25816127c3565b82525050565b6000602082019050612a406000830184612a1c565b92915050565b60008060408385031215612a5d57612a5c61279e565b5b6000612a6b858286016127ec565b9250506020612a7c858286016127ec565b9150509250929050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612abc601f836126f7565b9150612ac782612a86565b602082019050919050565b60006020820190508181036000830152612aeb81612aaf565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b6000612b28601a836126f7565b9150612b3382612af2565b602082019050919050565b60006020820190508181036000830152612b5781612b1b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b988261263d565b9150612ba38361263d565b925082612bb357612bb2612b5e565b5b828204905092915050565b7f4e6f7420656e6f7567682066756e647300000000000000000000000000000000600082015250565b6000612bf46010836126f7565b9150612bff82612bbe565b602082019050919050565b60006020820190508181036000830152612c2381612be7565b9050919050565b7f5573657220646964206e6f7420636c6f636b20696e0000000000000000000000600082015250565b6000612c606015836126f7565b9150612c6b82612c2a565b602082019050919050565b60006020820190508181036000830152612c8f81612c53565b9050919050565b7f5573657220646964206e6f7420636c6f636b206f757400000000000000000000600082015250565b6000612ccc6016836126f7565b9150612cd782612c96565b602082019050919050565b60006020820190508181036000830152612cfb81612cbf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d4957607f821691505b602082108103612d5c57612d5b612d02565b5b50919050565b7f74696d65203c203320686f7572732c20616464206f6e65206d6f72652061742060008201527f6c65617374000000000000000000000000000000000000000000000000000000602082015250565b6000612dbe6025836126f7565b9150612dc982612d62565b604082019050919050565b60006020820190508181036000830152612ded81612db1565b9050919050565b7f557365722068617320616c726561647920636c6f636b656420696e0000000000600082015250565b6000612e2a601b836126f7565b9150612e3582612df4565b602082019050919050565b60006020820190508181036000830152612e5981612e1d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612ebc6025836126f7565b9150612ec782612e60565b604082019050919050565b60006020820190508181036000830152612eeb81612eaf565b9050919050565b7f557365722068617320616c726561647920636c6f636b6564206f757400000000600082015250565b6000612f28601c836126f7565b9150612f3382612ef2565b602082019050919050565b60006020820190508181036000830152612f5781612f1b565b9050919050565b6000612f698261263d565b9150612f748361263d565b9250828203905081811115612f8c57612f8b612647565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612fee6026836126f7565b9150612ff982612f92565b604082019050919050565b6000602082019050818103600083015261301d81612fe1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130806024836126f7565b915061308b82613024565b604082019050919050565b600060208201905081810360008301526130af81613073565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131126022836126f7565b915061311d826130b6565b604082019050919050565b6000602082019050818103600083015261314181613105565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061317e6020836126f7565b915061318982613148565b602082019050919050565b600060208201905081810360008301526131ad81613171565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006131ea601d836126f7565b91506131f5826131b4565b602082019050919050565b60006020820190508181036000830152613219816131dd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061327c6025836126f7565b915061328782613220565b604082019050919050565b600060208201905081810360008301526132ab8161326f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061330e6023836126f7565b9150613319826132b2565b604082019050919050565b6000602082019050818103600083015261333d81613301565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006133a06026836126f7565b91506133ab82613344565b604082019050919050565b600060208201905081810360008301526133cf81613393565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006134326021836126f7565b915061343d826133d6565b604082019050919050565b6000602082019050818103600083015261346181613425565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c46022836126f7565b91506134cf82613468565b604082019050919050565b600060208201905081810360008301526134f3816134b7565b905091905056fea26469706673582212208c6e679b9679befe1fe72bec34231d9d44c2a929cc1d57ba5ca81dcab224b6a564736f6c63430008120033
Deployed Bytecode Sourcemap
21067:6343:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26164:7;;26152:9;:19;;;;:::i;:::-;26142:7;:29;;;;26199:1;26184:13;;:16;26180:1046;;26215:7;;;;;;;;;;;26207:25;;:36;26233:9;26207:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26255:35;26261:10;26283:6;26273:7;;:16;;;;:::i;:::-;26255:5;:35::i;:::-;26180:1046;;;26322:1;26307:13;;:16;26304:922;;26342:7;;;;;;;;;;;26334:25;;:36;26360:9;26334:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26380:35;26386:10;26408:6;26398:7;;:16;;;;:::i;:::-;26380:5;:35::i;:::-;26304:922;;;26447:1;26432:13;;:16;26429:797;;26467:9;;;;;;;;;;;26459:27;;:38;26487:9;26459:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26507:35;26513:10;26535:6;26525:7;;:16;;;;:::i;:::-;26507:5;:35::i;:::-;26429:797;;;26620:5;;;;;;;;;;;26612:23;;:43;26636:18;26652:1;26637:9;26636:15;;:18;;;;:::i;:::-;26612:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26734:7;;;;;;;;;;;26726:25;;:45;26752:18;26768:1;26753:9;26752:15;;:18;;;;:::i;:::-;26726:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26782:35;26788:10;26810:6;26800:7;;:16;;;;:::i;:::-;26782:5;:35::i;:::-;26429:797;26304:922;26180:1046;27334:9;;27320:11;;:23;;;;:::i;:::-;27302:15;:41;27299:97;;;27369:15;27357:11;:27;;;;27299:97;21067:6343;;;;;23618:678;;;:::i;:::-;;6030:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8390:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25423:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7159:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22299:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9171:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7001:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9841:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24491:100;;;;;;;;;;;;;:::i;:::-;;17402:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24774:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25148:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25663:279;;;;;;;;;;;;;:::i;:::-;;23394:190;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7330:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19701:103;;;;;;;;;;;;;:::i;:::-;;24594:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17812:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25058:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19060:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6249:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22505:265;;;:::i;:::-;;10582:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22782:333;;;:::i;:::-;;25329:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7663:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23121:262;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24685:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24864:189;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7919:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19959:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22221:75;;;;;;;;;;;;;:::i;:::-;;22007:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24300:186;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12581:548;12684:1;12665:21;;:7;:21;;;12657:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12735:49;12764:1;12768:7;12777:6;12735:20;:49::i;:::-;12813:6;12797:12;;:22;;;;;;;:::i;:::-;;;;;;;;12990:6;12968:9;:18;12978:7;12968:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;13044:7;13023:37;;13040:1;13023:37;;;13053:6;13023:37;;;;;;:::i;:::-;;;;;;;;13073:48;13101:1;13105:7;13114:6;13073:19;:48::i;:::-;12581:548;;:::o;31224:153::-;31282:7;31314:1;31310;:5;31302:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;31368:1;31364;:5;;;;:::i;:::-;31357:12;;31224:153;;;;:::o;23618:678::-;23687:8;23675:9;:20;23667:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23753:1;23733:7;:19;23741:10;23733:19;;;;;;;;;;;;;;;;:21;23725:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;23817:1;23796:8;:20;23805:10;23796:20;;;;;;;;;;;;;;;;:22;23788:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23869:7;;;;;;;;;;;23861:25;;:36;23887:9;23861:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23906:12;23919:13;:11;:13::i;:::-;23906:26;;23963:7;23949:11;;:21;;;;:::i;:::-;23939:7;:32;23935:307;;;24009:9;;23995:11;;:23;;;;:::i;:::-;23985:7;:33;23982:257;;;24053:37;24059:10;24083:6;24071:9;;:18;;;;:::i;:::-;24053:5;:37::i;:::-;24118:3;24105:10;;:16;24101:127;;24147:3;24137:9;:13;;;;24178:1;24165:10;;:14;;;;;;;:::i;:::-;;;;;;;;24101:127;;;24216:2;24206:9;:12;;;;24101:127;23982:257;23935:307;24265:1;24244:7;:19;24252:10;24244:19;;;;;;;;;;;;;;;:22;;;;24291:1;24269:8;:20;24278:10;24269:20;;;;;;;;;;;;;;;:23;;;;23658:638;23618:678::o;6030:100::-;6084:13;6117:5;6110:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6030:100;:::o;8390:201::-;8473:4;8490:13;8506:12;:10;:12::i;:::-;8490:28;;8529:32;8538:5;8545:7;8554:6;8529:8;:32::i;:::-;8579:4;8572:11;;;8390:201;;;;:::o;25423:234::-;25527:8;25514:10;;:21;;;;:::i;:::-;25496:15;:39;25488:48;;;;;;25583:12;25571:9;;:24;;;;;;;;;;;;;;;;;;25615:15;25602:10;:28;;;;25423:234;:::o;7159:108::-;7220:7;7247:12;;7240:19;;7159:108;:::o;22299:200::-;18946:13;:11;:13::i;:::-;22382:1:::1;22369:10;:14;;22361:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;22442:10;22432:9;:20;;;;22483:7;22470:10;:20;;;;:::i;:::-;22460:9;:30;;;;22299:200:::0;:::o;9171:261::-;9268:4;9285:15;9303:12;:10;:12::i;:::-;9285:30;;9326:38;9342:4;9348:7;9357:6;9326:15;:38::i;:::-;9375:27;9385:4;9391:2;9395:6;9375:9;:27::i;:::-;9420:4;9413:11;;;9171:261;;;;;:::o;7001:93::-;7059:5;7084:2;7077:9;;7001:93;:::o;9841:238::-;9929:4;9946:13;9962:12;:10;:12::i;:::-;9946:28;;9985:64;9994:5;10001:7;10038:10;10010:25;10020:5;10027:7;10010:9;:25::i;:::-;:38;;;;:::i;:::-;9985:8;:64::i;:::-;10067:4;10060:11;;;9841:238;;;;:::o;24491:100::-;18946:13;:11;:13::i;:::-;24544:10:::1;24536:28;;:51;24565:21;24536:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24491:100::o:0;17402:91::-;17458:27;17464:12;:10;:12::i;:::-;17478:6;17458:5;:27::i;:::-;17402:91;:::o;24774:86::-;18946:13;:11;:13::i;:::-;24846:9:::1;24836:7;;:19;;;;;;;;;;;;;;;;;;24774:86:::0;:::o;25148:83::-;25190:7;25214;;;;;;;;;;;25207:14;;25148:83;:::o;25663:279::-;18946:13;:11;:13::i;:::-;25721:42:::1;25713:7;;:50;;;;;;;;;;;;;;;;;;25778:42;25770:7;;:50;;;;;;;;;;;;;;;;;;25835:42;25827:7;;:50;;;;;;;;;;;;;;;;;;25894:42;25884:9;;:52;;;;;;;;;;;;;;;;;;25663:279::o:0;23394:190::-;23438:4;23481:1;23460:8;:20;23469:10;23460:20;;;;;;;;;;;;;;;;:22;23452:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23517:12;23530:8;:20;23539:10;23530:20;;;;;;;;;;;;;;;;23517:33;;23567:7;23560:14;;;23394:190;:::o;7330:127::-;7404:7;7431:9;:18;7441:7;7431:18;;;;;;;;;;;;;;;;7424:25;;7330:127;;;:::o;19701:103::-;18946:13;:11;:13::i;:::-;19766:30:::1;19793:1;19766:18;:30::i;:::-;19701:103::o:0;24594:86::-;18946:13;:11;:13::i;:::-;24666:9:::1;24656:7;;:19;;;;;;;;;;;;;;;;;;24594:86:::0;:::o;17812:164::-;17889:46;17905:7;17914:12;:10;:12::i;:::-;17928:6;17889:15;:46::i;:::-;17946:22;17952:7;17961:6;17946:5;:22::i;:::-;17812:164;;:::o;25058:83::-;25100:7;25124;;;;;;;;;;;25117:14;;25058:83;:::o;19060:87::-;19106:7;19133:6;;;;;;;;;;;19126:13;;19060:87;:::o;6249:104::-;6305:13;6338:7;6331:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6249:104;:::o;22505:265::-;22569:8;22557:9;:20;22549:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22615:7;;;;;;;;;;;22607:25;;:36;22633:9;22607:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22680:1;22659:7;:19;22667:10;22659:19;;;;;;;;;;;;;;;;:22;22651:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22744:15;22721:7;:19;22729:10;22721:19;;;;;;;;;;;;;;;:38;;;;22505:265::o;10582:436::-;10675:4;10692:13;10708:12;:10;:12::i;:::-;10692:28;;10731:24;10758:25;10768:5;10775:7;10758:9;:25::i;:::-;10731:52;;10822:15;10802:16;:35;;10794:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10915:60;10924:5;10931:7;10959:15;10940:16;:34;10915:8;:60::i;:::-;11006:4;10999:11;;;;10582:436;;;;:::o;22782:333::-;22855:1;22835:7;:19;22843:10;22835:19;;;;;;;;;;;;;;;;:21;22827:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;22910:8;22898:9;:20;22890:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22956:7;;;;;;;;;;;22948:25;;:36;22974:9;22948:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23023:1;23001:8;:20;23010:10;23001:20;;;;;;;;;;;;;;;;:23;22993:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;23089:15;23065:8;:20;23074:10;23065:20;;;;;;;;;;;;;;;:39;;;;22782:333::o;25329:91::-;18946:13;:11;:13::i;:::-;25407:6:::1;25391:13;:22;;;;25329:91:::0;:::o;7663:193::-;7742:4;7759:13;7775:12;:10;:12::i;:::-;7759:28;;7798;7808:5;7815:2;7819:6;7798:9;:28::i;:::-;7844:4;7837:11;;;7663:193;;;;:::o;23121:262::-;23163:4;23206:1;23185:8;:20;23194:10;23185:20;;;;;;;;;;;;;;;;:22;23177:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23242:11;23254:7;:19;23262:10;23254:19;;;;;;;;;;;;;;;;23242:31;;23283:12;23296:8;:20;23305:10;23296:20;;;;;;;;;;;;;;;;23283:33;;23326:9;23347:6;23337:7;:16;;;;:::i;:::-;23326:27;;23369:4;23362:11;;;;;23121:262;:::o;24685:86::-;18946:13;:11;:13::i;:::-;24757:9:::1;24747:7;;:19;;;;;;;;;;;;;;;;;;24685:86:::0;:::o;24864:189::-;24911:7;24946:8;24934:9;:20;24926:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;24990:7;;;;;;;;;;;24982:25;;:36;25008:9;24982:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25034:9;;;;;;;;;;;25027:16;;24864:189;:::o;7919:151::-;8008:7;8035:11;:18;8047:5;8035:18;;;;;;;;;;;;;;;:27;8054:7;8035:27;;;;;;;;;;;;;;;;8028:34;;7919:151;;;;:::o;19959:201::-;18946:13;:11;:13::i;:::-;20068:1:::1;20048:22;;:8;:22;;::::0;20040:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20124:28;20143:8;20124:18;:28::i;:::-;19959:201:::0;:::o;22221:75::-;18946:13;:11;:13::i;:::-;22276:15:::1;22262:11;:29;;;;22221:75::o:0;22007:83::-;22051:7;22074:10;;22067:17;;22007:83;:::o;24300:186::-;24344:4;24386:1;24366:7;:19;24374:10;24366:19;;;;;;;;;;;;;;;;:21;24358:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;24422:11;24434:7;:19;24442:10;24434:19;;;;;;;;;;;;;;;;24422:31;;24470:6;24463:13;;;24300:186;:::o;16231:91::-;;;;:::o;16926:90::-;;;;:::o;3834:98::-;3887:7;3914:10;3907:17;;3834:98;:::o;14575:346::-;14694:1;14677:19;;:5;:19;;;14669:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14775:1;14756:21;;:7;:21;;;14748:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14859:6;14829:11;:18;14841:5;14829:18;;;;;;;;;;;;;;;:27;14848:7;14829:27;;;;;;;;;;;;;;;:36;;;;14897:7;14881:32;;14890:5;14881:32;;;14906:6;14881:32;;;;;;:::i;:::-;;;;;;;;14575:346;;;:::o;19225:132::-;19300:12;:10;:12::i;:::-;19289:23;;:7;:5;:7::i;:::-;:23;;;19281:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19225:132::o;15212:419::-;15313:24;15340:25;15350:5;15357:7;15340:9;:25::i;:::-;15313:52;;15400:17;15380:16;:37;15376:248;;15462:6;15442:16;:26;;15434:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15546:51;15555:5;15562:7;15590:6;15571:16;:25;15546:8;:51::i;:::-;15376:248;15302:329;15212:419;;;:::o;11488:806::-;11601:1;11585:18;;:4;:18;;;11577:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11678:1;11664:16;;:2;:16;;;11656:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11733:38;11754:4;11760:2;11764:6;11733:20;:38::i;:::-;11784:19;11806:9;:15;11816:4;11806:15;;;;;;;;;;;;;;;;11784:37;;11855:6;11840:11;:21;;11832:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11972:6;11958:11;:20;11940:9;:15;11950:4;11940:15;;;;;;;;;;;;;;;:38;;;;12175:6;12158:9;:13;12168:2;12158:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12225:2;12210:26;;12219:4;12210:26;;;12229:6;12210:26;;;;;;:::i;:::-;;;;;;;;12249:37;12269:4;12275:2;12279:6;12249:19;:37::i;:::-;11566:728;11488:806;;;:::o;13462:675::-;13565:1;13546:21;;:7;:21;;;13538:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13618:49;13639:7;13656:1;13660:6;13618:20;:49::i;:::-;13680:22;13705:9;:18;13715:7;13705:18;;;;;;;;;;;;;;;;13680:43;;13760:6;13742:14;:24;;13734:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13879:6;13862:14;:23;13841:9;:18;13851:7;13841:18;;;;;;;;;;;;;;;:44;;;;13996:6;13980:12;;:22;;;;;;;;;;;14057:1;14031:37;;14040:7;14031:37;;;14061:6;14031:37;;;;;;:::i;:::-;;;;;;;;14081:48;14101:7;14118:1;14122:6;14081:19;:48::i;:::-;13527:610;13462:675;;:::o;20320:191::-;20394:16;20413:6;;;;;;;;;;;20394:25;;20439:8;20430:6;;:17;;;;;;;;;;;;;;;;;;20494:8;20463:40;;20484:8;20463:40;;;;;;;;;;;;20383:128;20320:191;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:410;316:7;339:20;357:1;339:20;:::i;:::-;334:25;;373:20;391:1;373:20;:::i;:::-;368:25;;428:1;425;421:9;450:30;468:11;450:30;:::i;:::-;439:41;;629:1;620:7;616:15;613:1;610:22;590:1;583:9;563:83;540:139;;659:18;;:::i;:::-;540:139;324:362;276:410;;;;:::o;692:191::-;732:3;751:20;769:1;751:20;:::i;:::-;746:25;;785:20;803:1;785:20;:::i;:::-;780:25;;828:1;825;821:9;814:16;;849:3;846:1;843:10;840:36;;;856:18;;:::i;:::-;840:36;692:191;;;;:::o;889:99::-;941:6;975:5;969:12;959:22;;889:99;;;:::o;994:169::-;1078:11;1112:6;1107:3;1100:19;1152:4;1147:3;1143:14;1128:29;;994:169;;;;:::o;1169:246::-;1250:1;1260:113;1274:6;1271:1;1268:13;1260:113;;;1359:1;1354:3;1350:11;1344:18;1340:1;1335:3;1331:11;1324:39;1296:2;1293:1;1289:10;1284:15;;1260:113;;;1407:1;1398:6;1393:3;1389:16;1382:27;1231:184;1169:246;;;:::o;1421:102::-;1462:6;1513:2;1509:7;1504:2;1497:5;1493:14;1489:28;1479:38;;1421:102;;;:::o;1529:377::-;1617:3;1645:39;1678:5;1645:39;:::i;:::-;1700:71;1764:6;1759:3;1700:71;:::i;:::-;1693:78;;1780:65;1838:6;1833:3;1826:4;1819:5;1815:16;1780:65;:::i;:::-;1870:29;1892:6;1870:29;:::i;:::-;1865:3;1861:39;1854:46;;1621:285;1529:377;;;;:::o;1912:313::-;2025:4;2063:2;2052:9;2048:18;2040:26;;2112:9;2106:4;2102:20;2098:1;2087:9;2083:17;2076:47;2140:78;2213:4;2204:6;2140:78;:::i;:::-;2132:86;;1912:313;;;;:::o;2312:117::-;2421:1;2418;2411:12;2558:126;2595:7;2635:42;2628:5;2624:54;2613:65;;2558:126;;;:::o;2690:96::-;2727:7;2756:24;2774:5;2756:24;:::i;:::-;2745:35;;2690:96;;;:::o;2792:122::-;2865:24;2883:5;2865:24;:::i;:::-;2858:5;2855:35;2845:63;;2904:1;2901;2894:12;2845:63;2792:122;:::o;2920:139::-;2966:5;3004:6;2991:20;2982:29;;3020:33;3047:5;3020:33;:::i;:::-;2920:139;;;;:::o;3065:122::-;3138:24;3156:5;3138:24;:::i;:::-;3131:5;3128:35;3118:63;;3177:1;3174;3167:12;3118:63;3065:122;:::o;3193:139::-;3239:5;3277:6;3264:20;3255:29;;3293:33;3320:5;3293:33;:::i;:::-;3193:139;;;;:::o;3338:474::-;3406:6;3414;3463:2;3451:9;3442:7;3438:23;3434:32;3431:119;;;3469:79;;:::i;:::-;3431:119;3589:1;3614:53;3659:7;3650:6;3639:9;3635:22;3614:53;:::i;:::-;3604:63;;3560:117;3716:2;3742:53;3787:7;3778:6;3767:9;3763:22;3742:53;:::i;:::-;3732:63;;3687:118;3338:474;;;;;:::o;3818:90::-;3852:7;3895:5;3888:13;3881:21;3870:32;;3818:90;;;:::o;3914:109::-;3995:21;4010:5;3995:21;:::i;:::-;3990:3;3983:34;3914:109;;:::o;4029:210::-;4116:4;4154:2;4143:9;4139:18;4131:26;;4167:65;4229:1;4218:9;4214:17;4205:6;4167:65;:::i;:::-;4029:210;;;;:::o;4245:104::-;4290:7;4319:24;4337:5;4319:24;:::i;:::-;4308:35;;4245:104;;;:::o;4355:138::-;4436:32;4462:5;4436:32;:::i;:::-;4429:5;4426:43;4416:71;;4483:1;4480;4473:12;4416:71;4355:138;:::o;4499:155::-;4553:5;4591:6;4578:20;4569:29;;4607:41;4642:5;4607:41;:::i;:::-;4499:155;;;;:::o;4660:345::-;4727:6;4776:2;4764:9;4755:7;4751:23;4747:32;4744:119;;;4782:79;;:::i;:::-;4744:119;4902:1;4927:61;4980:7;4971:6;4960:9;4956:22;4927:61;:::i;:::-;4917:71;;4873:125;4660:345;;;;:::o;5011:118::-;5098:24;5116:5;5098:24;:::i;:::-;5093:3;5086:37;5011:118;;:::o;5135:222::-;5228:4;5266:2;5255:9;5251:18;5243:26;;5279:71;5347:1;5336:9;5332:17;5323:6;5279:71;:::i;:::-;5135:222;;;;:::o;5363:329::-;5422:6;5471:2;5459:9;5450:7;5446:23;5442:32;5439:119;;;5477:79;;:::i;:::-;5439:119;5597:1;5622:53;5667:7;5658:6;5647:9;5643:22;5622:53;:::i;:::-;5612:63;;5568:117;5363:329;;;;:::o;5698:619::-;5775:6;5783;5791;5840:2;5828:9;5819:7;5815:23;5811:32;5808:119;;;5846:79;;:::i;:::-;5808:119;5966:1;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;:::i;:::-;5981:63;;5937:117;6093:2;6119:53;6164:7;6155:6;6144:9;6140:22;6119:53;:::i;:::-;6109:63;;6064:118;6221:2;6247:53;6292:7;6283:6;6272:9;6268:22;6247:53;:::i;:::-;6237:63;;6192:118;5698:619;;;;;:::o;6323:86::-;6358:7;6398:4;6391:5;6387:16;6376:27;;6323:86;;;:::o;6415:112::-;6498:22;6514:5;6498:22;:::i;:::-;6493:3;6486:35;6415:112;;:::o;6533:214::-;6622:4;6660:2;6649:9;6645:18;6637:26;;6673:67;6737:1;6726:9;6722:17;6713:6;6673:67;:::i;:::-;6533:214;;;;:::o;6753:329::-;6812:6;6861:2;6849:9;6840:7;6836:23;6832:32;6829:119;;;6867:79;;:::i;:::-;6829:119;6987:1;7012:53;7057:7;7048:6;7037:9;7033:22;7012:53;:::i;:::-;7002:63;;6958:117;6753:329;;;;:::o;7088:118::-;7175:24;7193:5;7175:24;:::i;:::-;7170:3;7163:37;7088:118;;:::o;7212:222::-;7305:4;7343:2;7332:9;7328:18;7320:26;;7356:71;7424:1;7413:9;7409:17;7400:6;7356:71;:::i;:::-;7212:222;;;;:::o;7440:474::-;7508:6;7516;7565:2;7553:9;7544:7;7540:23;7536:32;7533:119;;;7571:79;;:::i;:::-;7533:119;7691:1;7716:53;7761:7;7752:6;7741:9;7737:22;7716:53;:::i;:::-;7706:63;;7662:117;7818:2;7844:53;7889:7;7880:6;7869:9;7865:22;7844:53;:::i;:::-;7834:63;;7789:118;7440:474;;;;;:::o;7920:181::-;8060:33;8056:1;8048:6;8044:14;8037:57;7920:181;:::o;8107:366::-;8249:3;8270:67;8334:2;8329:3;8270:67;:::i;:::-;8263:74;;8346:93;8435:3;8346:93;:::i;:::-;8464:2;8459:3;8455:12;8448:19;;8107:366;;;:::o;8479:419::-;8645:4;8683:2;8672:9;8668:18;8660:26;;8732:9;8726:4;8722:20;8718:1;8707:9;8703:17;8696:47;8760:131;8886:4;8760:131;:::i;:::-;8752:139;;8479:419;;;:::o;8904:176::-;9044:28;9040:1;9032:6;9028:14;9021:52;8904:176;:::o;9086:366::-;9228:3;9249:67;9313:2;9308:3;9249:67;:::i;:::-;9242:74;;9325:93;9414:3;9325:93;:::i;:::-;9443:2;9438:3;9434:12;9427:19;;9086:366;;;:::o;9458:419::-;9624:4;9662:2;9651:9;9647:18;9639:26;;9711:9;9705:4;9701:20;9697:1;9686:9;9682:17;9675:47;9739:131;9865:4;9739:131;:::i;:::-;9731:139;;9458:419;;;:::o;9883:180::-;9931:77;9928:1;9921:88;10028:4;10025:1;10018:15;10052:4;10049:1;10042:15;10069:185;10109:1;10126:20;10144:1;10126:20;:::i;:::-;10121:25;;10160:20;10178:1;10160:20;:::i;:::-;10155:25;;10199:1;10189:35;;10204:18;;:::i;:::-;10189:35;10246:1;10243;10239:9;10234:14;;10069:185;;;;:::o;10260:166::-;10400:18;10396:1;10388:6;10384:14;10377:42;10260:166;:::o;10432:366::-;10574:3;10595:67;10659:2;10654:3;10595:67;:::i;:::-;10588:74;;10671:93;10760:3;10671:93;:::i;:::-;10789:2;10784:3;10780:12;10773:19;;10432:366;;;:::o;10804:419::-;10970:4;11008:2;10997:9;10993:18;10985:26;;11057:9;11051:4;11047:20;11043:1;11032:9;11028:17;11021:47;11085:131;11211:4;11085:131;:::i;:::-;11077:139;;10804:419;;;:::o;11229:171::-;11369:23;11365:1;11357:6;11353:14;11346:47;11229:171;:::o;11406:366::-;11548:3;11569:67;11633:2;11628:3;11569:67;:::i;:::-;11562:74;;11645:93;11734:3;11645:93;:::i;:::-;11763:2;11758:3;11754:12;11747:19;;11406:366;;;:::o;11778:419::-;11944:4;11982:2;11971:9;11967:18;11959:26;;12031:9;12025:4;12021:20;12017:1;12006:9;12002:17;11995:47;12059:131;12185:4;12059:131;:::i;:::-;12051:139;;11778:419;;;:::o;12203:172::-;12343:24;12339:1;12331:6;12327:14;12320:48;12203:172;:::o;12381:366::-;12523:3;12544:67;12608:2;12603:3;12544:67;:::i;:::-;12537:74;;12620:93;12709:3;12620:93;:::i;:::-;12738:2;12733:3;12729:12;12722:19;;12381:366;;;:::o;12753:419::-;12919:4;12957:2;12946:9;12942:18;12934:26;;13006:9;13000:4;12996:20;12992:1;12981:9;12977:17;12970:47;13034:131;13160:4;13034:131;:::i;:::-;13026:139;;12753:419;;;:::o;13178:180::-;13226:77;13223:1;13216:88;13323:4;13320:1;13313:15;13347:4;13344:1;13337:15;13364:320;13408:6;13445:1;13439:4;13435:12;13425:22;;13492:1;13486:4;13482:12;13513:18;13503:81;;13569:4;13561:6;13557:17;13547:27;;13503:81;13631:2;13623:6;13620:14;13600:18;13597:38;13594:84;;13650:18;;:::i;:::-;13594:84;13415:269;13364:320;;;:::o;13690:224::-;13830:34;13826:1;13818:6;13814:14;13807:58;13899:7;13894:2;13886:6;13882:15;13875:32;13690:224;:::o;13920:366::-;14062:3;14083:67;14147:2;14142:3;14083:67;:::i;:::-;14076:74;;14159:93;14248:3;14159:93;:::i;:::-;14277:2;14272:3;14268:12;14261:19;;13920:366;;;:::o;14292:419::-;14458:4;14496:2;14485:9;14481:18;14473:26;;14545:9;14539:4;14535:20;14531:1;14520:9;14516:17;14509:47;14573:131;14699:4;14573:131;:::i;:::-;14565:139;;14292:419;;;:::o;14717:177::-;14857:29;14853:1;14845:6;14841:14;14834:53;14717:177;:::o;14900:366::-;15042:3;15063:67;15127:2;15122:3;15063:67;:::i;:::-;15056:74;;15139:93;15228:3;15139:93;:::i;:::-;15257:2;15252:3;15248:12;15241:19;;14900:366;;;:::o;15272:419::-;15438:4;15476:2;15465:9;15461:18;15453:26;;15525:9;15519:4;15515:20;15511:1;15500:9;15496:17;15489:47;15553:131;15679:4;15553:131;:::i;:::-;15545:139;;15272:419;;;:::o;15697:224::-;15837:34;15833:1;15825:6;15821:14;15814:58;15906:7;15901:2;15893:6;15889:15;15882:32;15697:224;:::o;15927:366::-;16069:3;16090:67;16154:2;16149:3;16090:67;:::i;:::-;16083:74;;16166:93;16255:3;16166:93;:::i;:::-;16284:2;16279:3;16275:12;16268:19;;15927:366;;;:::o;16299:419::-;16465:4;16503:2;16492:9;16488:18;16480:26;;16552:9;16546:4;16542:20;16538:1;16527:9;16523:17;16516:47;16580:131;16706:4;16580:131;:::i;:::-;16572:139;;16299:419;;;:::o;16724:178::-;16864:30;16860:1;16852:6;16848:14;16841:54;16724:178;:::o;16908:366::-;17050:3;17071:67;17135:2;17130:3;17071:67;:::i;:::-;17064:74;;17147:93;17236:3;17147:93;:::i;:::-;17265:2;17260:3;17256:12;17249:19;;16908:366;;;:::o;17280:419::-;17446:4;17484:2;17473:9;17469:18;17461:26;;17533:9;17527:4;17523:20;17519:1;17508:9;17504:17;17497:47;17561:131;17687:4;17561:131;:::i;:::-;17553:139;;17280:419;;;:::o;17705:194::-;17745:4;17765:20;17783:1;17765:20;:::i;:::-;17760:25;;17799:20;17817:1;17799:20;:::i;:::-;17794:25;;17843:1;17840;17836:9;17828:17;;17867:1;17861:4;17858:11;17855:37;;;17872:18;;:::i;:::-;17855:37;17705:194;;;;:::o;17905:225::-;18045:34;18041:1;18033:6;18029:14;18022:58;18114:8;18109:2;18101:6;18097:15;18090:33;17905:225;:::o;18136:366::-;18278:3;18299:67;18363:2;18358:3;18299:67;:::i;:::-;18292:74;;18375:93;18464:3;18375:93;:::i;:::-;18493:2;18488:3;18484:12;18477:19;;18136:366;;;:::o;18508:419::-;18674:4;18712:2;18701:9;18697:18;18689:26;;18761:9;18755:4;18751:20;18747:1;18736:9;18732:17;18725:47;18789:131;18915:4;18789:131;:::i;:::-;18781:139;;18508:419;;;:::o;18933:223::-;19073:34;19069:1;19061:6;19057:14;19050:58;19142:6;19137:2;19129:6;19125:15;19118:31;18933:223;:::o;19162:366::-;19304:3;19325:67;19389:2;19384:3;19325:67;:::i;:::-;19318:74;;19401:93;19490:3;19401:93;:::i;:::-;19519:2;19514:3;19510:12;19503:19;;19162:366;;;:::o;19534:419::-;19700:4;19738:2;19727:9;19723:18;19715:26;;19787:9;19781:4;19777:20;19773:1;19762:9;19758:17;19751:47;19815:131;19941:4;19815:131;:::i;:::-;19807:139;;19534:419;;;:::o;19959:221::-;20099:34;20095:1;20087:6;20083:14;20076:58;20168:4;20163:2;20155:6;20151:15;20144:29;19959:221;:::o;20186:366::-;20328:3;20349:67;20413:2;20408:3;20349:67;:::i;:::-;20342:74;;20425:93;20514:3;20425:93;:::i;:::-;20543:2;20538:3;20534:12;20527:19;;20186:366;;;:::o;20558:419::-;20724:4;20762:2;20751:9;20747:18;20739:26;;20811:9;20805:4;20801:20;20797:1;20786:9;20782:17;20775:47;20839:131;20965:4;20839:131;:::i;:::-;20831:139;;20558:419;;;:::o;20983:182::-;21123:34;21119:1;21111:6;21107:14;21100:58;20983:182;:::o;21171:366::-;21313:3;21334:67;21398:2;21393:3;21334:67;:::i;:::-;21327:74;;21410:93;21499:3;21410:93;:::i;:::-;21528:2;21523:3;21519:12;21512:19;;21171:366;;;:::o;21543:419::-;21709:4;21747:2;21736:9;21732:18;21724:26;;21796:9;21790:4;21786:20;21782:1;21771:9;21767:17;21760:47;21824:131;21950:4;21824:131;:::i;:::-;21816:139;;21543:419;;;:::o;21968:179::-;22108:31;22104:1;22096:6;22092:14;22085:55;21968:179;:::o;22153:366::-;22295:3;22316:67;22380:2;22375:3;22316:67;:::i;:::-;22309:74;;22392:93;22481:3;22392:93;:::i;:::-;22510:2;22505:3;22501:12;22494:19;;22153:366;;;:::o;22525:419::-;22691:4;22729:2;22718:9;22714:18;22706:26;;22778:9;22772:4;22768:20;22764:1;22753:9;22749:17;22742:47;22806:131;22932:4;22806:131;:::i;:::-;22798:139;;22525:419;;;:::o;22950:224::-;23090:34;23086:1;23078:6;23074:14;23067:58;23159:7;23154:2;23146:6;23142:15;23135:32;22950:224;:::o;23180:366::-;23322:3;23343:67;23407:2;23402:3;23343:67;:::i;:::-;23336:74;;23419:93;23508:3;23419:93;:::i;:::-;23537:2;23532:3;23528:12;23521:19;;23180:366;;;:::o;23552:419::-;23718:4;23756:2;23745:9;23741:18;23733:26;;23805:9;23799:4;23795:20;23791:1;23780:9;23776:17;23769:47;23833:131;23959:4;23833:131;:::i;:::-;23825:139;;23552:419;;;:::o;23977:222::-;24117:34;24113:1;24105:6;24101:14;24094:58;24186:5;24181:2;24173:6;24169:15;24162:30;23977:222;:::o;24205:366::-;24347:3;24368:67;24432:2;24427:3;24368:67;:::i;:::-;24361:74;;24444:93;24533:3;24444:93;:::i;:::-;24562:2;24557:3;24553:12;24546:19;;24205:366;;;:::o;24577:419::-;24743:4;24781:2;24770:9;24766:18;24758:26;;24830:9;24824:4;24820:20;24816:1;24805:9;24801:17;24794:47;24858:131;24984:4;24858:131;:::i;:::-;24850:139;;24577:419;;;:::o;25002:225::-;25142:34;25138:1;25130:6;25126:14;25119:58;25211:8;25206:2;25198:6;25194:15;25187:33;25002:225;:::o;25233:366::-;25375:3;25396:67;25460:2;25455:3;25396:67;:::i;:::-;25389:74;;25472:93;25561:3;25472:93;:::i;:::-;25590:2;25585:3;25581:12;25574:19;;25233:366;;;:::o;25605:419::-;25771:4;25809:2;25798:9;25794:18;25786:26;;25858:9;25852:4;25848:20;25844:1;25833:9;25829:17;25822:47;25886:131;26012:4;25886:131;:::i;:::-;25878:139;;25605:419;;;:::o;26030:220::-;26170:34;26166:1;26158:6;26154:14;26147:58;26239:3;26234:2;26226:6;26222:15;26215:28;26030:220;:::o;26256:366::-;26398:3;26419:67;26483:2;26478:3;26419:67;:::i;:::-;26412:74;;26495:93;26584:3;26495:93;:::i;:::-;26613:2;26608:3;26604:12;26597:19;;26256:366;;;:::o;26628:419::-;26794:4;26832:2;26821:9;26817:18;26809:26;;26881:9;26875:4;26871:20;26867:1;26856:9;26852:17;26845:47;26909:131;27035:4;26909:131;:::i;:::-;26901:139;;26628:419;;;:::o;27053:221::-;27193:34;27189:1;27181:6;27177:14;27170:58;27262:4;27257:2;27249:6;27245:15;27238:29;27053:221;:::o;27280:366::-;27422:3;27443:67;27507:2;27502:3;27443:67;:::i;:::-;27436:74;;27519:93;27608:3;27519:93;:::i;:::-;27637:2;27632:3;27628:12;27621:19;;27280:366;;;:::o;27652:419::-;27818:4;27856:2;27845:9;27841:18;27833:26;;27905:9;27899:4;27895:20;27891:1;27880:9;27876:17;27869:47;27933:131;28059:4;27933:131;:::i;:::-;27925:139;;27652:419;;;:::o
Swarm Source
ipfs://8c6e679b9679befe1fe72bec34231d9d44c2a929cc1d57ba5ca81dcab224b6a5
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.