Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,034 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw ETH | 20313817 | 134 days ago | IN | 0 ETH | 0.0005463 | ||||
Un Stake | 19805506 | 205 days ago | IN | 0 ETH | 0.00110231 | ||||
Claim Eth | 19805498 | 205 days ago | IN | 0 ETH | 0.00276622 | ||||
Claim Eth | 19763557 | 211 days ago | IN | 0 ETH | 0.00072081 | ||||
Claim Eth | 19717532 | 217 days ago | IN | 0 ETH | 0.00192171 | ||||
Claim Eth | 19679575 | 223 days ago | IN | 0 ETH | 0.00155107 | ||||
Claim Eth | 19673015 | 224 days ago | IN | 0 ETH | 0.00081206 | ||||
Claim Eth | 19668472 | 224 days ago | IN | 0 ETH | 0.00194524 | ||||
Claim Eth | 19668469 | 224 days ago | IN | 0 ETH | 0.00190485 | ||||
Claim Eth | 19668424 | 224 days ago | IN | 0 ETH | 0.00161319 | ||||
Claim Eth | 19663089 | 225 days ago | IN | 0 ETH | 0.00132392 | ||||
Stake | 19662488 | 225 days ago | IN | 0 ETH | 0.0098353 | ||||
Claim Eth | 19660344 | 225 days ago | IN | 0 ETH | 0.00309383 | ||||
Claim Eth | 19659977 | 226 days ago | IN | 0 ETH | 0.00211555 | ||||
Claim Eth | 19657120 | 226 days ago | IN | 0 ETH | 0.00020124 | ||||
Claim Eth | 19633889 | 229 days ago | IN | 0 ETH | 0.00646587 | ||||
Claim Eth | 19631310 | 230 days ago | IN | 0 ETH | 0.00294048 | ||||
Claim Eth | 19630031 | 230 days ago | IN | 0 ETH | 0.00108529 | ||||
Claim Eth | 19628746 | 230 days ago | IN | 0 ETH | 0.00104878 | ||||
Claim Eth | 19627499 | 230 days ago | IN | 0 ETH | 0.00832208 | ||||
Claim Eth | 19626671 | 230 days ago | IN | 0 ETH | 0.00246854 | ||||
Claim Eth | 19624464 | 231 days ago | IN | 0 ETH | 0.0014462 | ||||
Claim Eth | 19622634 | 231 days ago | IN | 0 ETH | 0.00202328 | ||||
Claim Eth | 19622549 | 231 days ago | IN | 0 ETH | 0.00138714 | ||||
Claim Eth | 19622107 | 231 days ago | IN | 0 ETH | 0.00214626 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20313817 | 134 days ago | 3.08457185 ETH | ||||
19805498 | 205 days ago | 0.088587 ETH | ||||
19805498 | 205 days ago | 0.088587 ETH | ||||
19763557 | 211 days ago | 0.0066732 ETH | ||||
19763557 | 211 days ago | 0.02669283 ETH | ||||
19717532 | 217 days ago | 0.02113698 ETH | ||||
19717532 | 217 days ago | 0.02113698 ETH | ||||
19679575 | 223 days ago | 0.34875355 ETH | ||||
19673015 | 224 days ago | 0.01134465 ETH | ||||
19673015 | 224 days ago | 0.01134465 ETH | ||||
19668472 | 224 days ago | 0.04532551 ETH | ||||
19668472 | 224 days ago | 0.04532551 ETH | ||||
19668469 | 224 days ago | 0.08081051 ETH | ||||
19668469 | 224 days ago | 0.08081051 ETH | ||||
19668424 | 224 days ago | 0.48411686 ETH | ||||
19663089 | 225 days ago | 0.19969561 ETH | ||||
19660344 | 225 days ago | 0.07212672 ETH | ||||
19660344 | 225 days ago | 0.07212672 ETH | ||||
19659977 | 226 days ago | 0.02942284 ETH | ||||
19659977 | 226 days ago | 0.02942284 ETH | ||||
19633889 | 229 days ago | 0.02204398 ETH | ||||
19633889 | 229 days ago | 0.08817593 ETH | ||||
19631310 | 230 days ago | 0.019589 ETH | ||||
19631310 | 230 days ago | 0.07835603 ETH | ||||
19630031 | 230 days ago | 0.26788353 ETH |
Loading...
Loading
Contract Name:
ShieldStaking
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-06 */ // File: @openzeppelin/contracts/security/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == _ENTERED; } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must * understand this adds an external call which potentially creates a reentrancy vulnerability. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: ShieldStakingMainnet.sol //SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract ShieldStaking is Ownable { IERC20 public token; IERC721 public nft; constructor( address _token, address _nft, address _treasury) { token = IERC20(_token); nft = IERC721(_nft); treasury = _treasury; } bool public stakingPaused = true; address treasury; uint256 public tokensStaked = 0;//total tokens staked uint256 public stakers = 0;//total wallets staking uint256 public totalEthPaid = 0;//total eth paid out uint256 public rate1 = 50;//No NFTs uint256 public rate2 = 80;//1 NFT uint256 public rate3 = 90;//2 NFTs uint256 public rate4 = 100;//3 NFTs uint256 public stakeTime1 = 3888000;//45 Days uint256 public nftFund = 0;//The amount of rewards not sent from people not having 3 Shield NFTs uint256 public earlyClaimFee1 = 10; uint256 public minStake = (1000 * 10**18); uint256 public lastUpdateTime = block.timestamp; uint256 public tokensXseconds = 0; uint256 public ethDeposits = 0; function setStakingPaused(bool _state) public onlyOwner{ stakingPaused = _state; } function setRate1(uint256 _rate1) public onlyOwner{ rate1 = _rate1; } function setRate2(uint256 _rate2) public onlyOwner{ rate2 = _rate2; } function setRate3(uint256 _rate3) public onlyOwner{ rate3 = _rate3; } function setRate4(uint256 _rate4) public onlyOwner{ rate4 = _rate4; } function setStakeTime1(uint256 _stakeTime1) public onlyOwner{ stakeTime1 = _stakeTime1; } function setTreasury(address _treasury) public onlyOwner{ treasury = _treasury; } function setEarlyClaimFee1(uint256 _earlyClaimFee1) public onlyOwner { require(_earlyClaimFee1 <= 30, "fee to high try again, 30% max"); earlyClaimFee1 = _earlyClaimFee1; } function setMinStake(uint256 _minStake) public onlyOwner{ minStake = _minStake; } function withdrawETH() public onlyOwner { payable(owner()).transfer(address(this).balance); } function withdrawERC20(address _tokenAddress, uint256 _tokenAmount) public virtual onlyOwner { IERC20(_tokenAddress).transfer(msg.sender, _tokenAmount); } struct StakerVault { uint256 tokensStaked; uint256 shields; uint256 stakeDuration; uint256 tokensXseconds; uint256 rewardsRate; uint256 stakedSince; uint256 stakedTill; uint256 lastClaimTime; uint256 lastClaimNumber; uint256 ethClaimed; bool isStaked; } struct EthDeposit { uint256 timestamp; uint256 ethAmt; uint256 tokensXseconds; } mapping(address => StakerVault) public stakerVaults; mapping(uint256 => EthDeposit) public EthDeposits; //The following is going to be a function that will keep track of the tokensXseconds for the contract as a whole //This function will need to be called each time tokens come in or leave the contract such as stake / unstake function updateGlobalTokensXseconds() internal { uint256 addAmt = 0; addAmt += (block.timestamp - lastUpdateTime) * tokensStaked; tokensXseconds += addAmt; lastUpdateTime = block.timestamp; } function updateUserTokensXseconds() internal { uint256 addAmt = 0; addAmt += (block.timestamp - stakerVaults[msg.sender].lastClaimTime) * stakerVaults[msg.sender].tokensStaked; stakerVaults[msg.sender].tokensXseconds += addAmt; stakerVaults[msg.sender].lastClaimTime = block.timestamp; } function calculateRewardsRate () internal { stakerVaults[msg.sender].shields = IERC721(nft).balanceOf(msg.sender); if (stakerVaults[msg.sender].shields == 0 && stakerVaults[msg.sender].stakeDuration == stakeTime1) { stakerVaults[msg.sender].rewardsRate = rate1; } if (stakerVaults[msg.sender].shields == 1) { stakerVaults[msg.sender].rewardsRate = rate2; } if (stakerVaults[msg.sender].shields == 2) { stakerVaults[msg.sender].rewardsRate = rate3; } if (stakerVaults[msg.sender].shields >= 3) { stakerVaults[msg.sender].rewardsRate = rate4; } } function stake(uint256 _amount) public { require(stakingPaused == false, "STAKING IS PAUSED"); uint256 userBalance = IERC20(token).balanceOf(msg.sender); require(userBalance >= _amount, "Insufficient Balance"); require((_amount + stakerVaults[msg.sender].tokensStaked) >= minStake, "You Need More Tokens To Stake"); updateGlobalTokensXseconds(); uint256 claimableEth = viewClaimableEth(msg.sender); if (claimableEth > 0) { claimEth(); } token.approve(address(this), _amount); token.approve(treasury, _amount); token.transferFrom(msg.sender, treasury, _amount); if (stakerVaults[msg.sender].isStaked == true) { updateUserTokensXseconds(); stakerVaults[msg.sender].tokensStaked += _amount; tokensStaked += _amount; } if (stakerVaults[msg.sender].isStaked == false) { uint256 nftBalance = IERC721(nft).balanceOf(msg.sender); stakerVaults[msg.sender].stakeDuration = stakeTime1; stakerVaults[msg.sender].stakedTill = block.timestamp + stakeTime1; stakerVaults[msg.sender].tokensStaked += _amount; stakerVaults[msg.sender].stakedSince = block.timestamp; stakerVaults[msg.sender].isStaked = true; stakerVaults[msg.sender].tokensXseconds = 0; stakerVaults[msg.sender].shields = nftBalance; stakerVaults[msg.sender].lastClaimTime = block.timestamp; stakerVaults[msg.sender].ethClaimed = 0; stakerVaults[msg.sender].lastClaimNumber = ethDeposits; calculateRewardsRate(); tokensStaked += _amount; stakers += 1; } } function unStake(uint256 _tokens) public { require(stakerVaults[msg.sender].tokensStaked >= _tokens, "You don't have that many tokens"); require(token.balanceOf(treasury) >= _tokens, "Not Enough Funds In Treasury"); require(!stakingPaused, "Staking is paused"); require(stakerVaults[msg.sender].isStaked == true); uint256 claimableEth = viewClaimableEth(msg.sender); if (claimableEth > 0) { claimEth(); } updateGlobalTokensXseconds(); uint256 remainingStake = stakerVaults[msg.sender].tokensStaked - _tokens; uint256 unstakedTokens = 0; uint256 penalizedTokens = 0; uint256 claimedTokens = 0; if (remainingStake < minStake) { unstakedTokens = stakerVaults[msg.sender].tokensStaked; if (stakerVaults[msg.sender].stakedTill > block.timestamp && stakerVaults[msg.sender].stakeDuration == stakeTime1) { penalizedTokens = earlyClaimFee1 * unstakedTokens / 100; claimedTokens = unstakedTokens - penalizedTokens; require(token.transferFrom(treasury, msg.sender, claimedTokens), "Tokens could not be sent to Staker"); } if (stakerVaults[msg.sender].stakedTill <= block.timestamp) { require(token.transferFrom(treasury, msg.sender, unstakedTokens), "Tokens could not be sent to Staker"); } stakerVaults[msg.sender].tokensStaked = 0; stakerVaults[msg.sender].shields = 0; stakerVaults[msg.sender].stakeDuration = 0; stakerVaults[msg.sender].tokensXseconds = 0; stakerVaults[msg.sender].rewardsRate = 0; stakerVaults[msg.sender].stakedSince = 0; stakerVaults[msg.sender].stakedTill = 0; stakerVaults[msg.sender].lastClaimTime = 0; stakerVaults[msg.sender].lastClaimNumber = 0; stakerVaults[msg.sender].ethClaimed = 0; stakerVaults[msg.sender].isStaked = false; tokensStaked -= unstakedTokens; stakers --; } if (remainingStake >= minStake) { unstakedTokens = _tokens; if (stakerVaults[msg.sender].stakedTill > block.timestamp && stakerVaults[msg.sender].stakeDuration == stakeTime1) { penalizedTokens = earlyClaimFee1 * unstakedTokens / 100; claimedTokens = unstakedTokens - penalizedTokens; require(token.transferFrom(treasury, msg.sender, claimedTokens), "Tokens could not be sent to Staker"); } if (stakerVaults[msg.sender].stakedTill <= block.timestamp) { require(token.transferFrom(treasury, msg.sender, unstakedTokens), "Tokens could not be sent to Staker"); } updateUserTokensXseconds(); stakerVaults[msg.sender].tokensStaked -= unstakedTokens; tokensStaked -= unstakedTokens; } } function claimEth() public { require(stakerVaults[msg.sender].lastClaimNumber < ethDeposits); require(stakerVaults[msg.sender].isStaked == true); calculateRewardsRate(); uint256 claimableEth = 0; for (uint256 i = stakerVaults[msg.sender].lastClaimNumber; i < ethDeposits; i++) { if (stakerVaults[msg.sender].tokensXseconds == 0) { uint256 time = EthDeposits[i+1].timestamp - stakerVaults[msg.sender].lastClaimTime; uint256 stakerTokensXseconds = (time * stakerVaults[msg.sender].tokensStaked); uint256 claimablePercentage = ((stakerTokensXseconds * 10**18) / EthDeposits[i+1].tokensXseconds); claimableEth += (claimablePercentage * EthDeposits[i+1].ethAmt) / 10**18; stakerVaults[msg.sender].lastClaimTime = EthDeposits[i+1].timestamp; stakerVaults[msg.sender].lastClaimNumber ++; } if (stakerVaults[msg.sender].tokensXseconds > 0) { uint256 time = EthDeposits[i+1].timestamp - stakerVaults[msg.sender].lastClaimTime;//this needs correcting uint256 stakerTokensXseconds = ((time * stakerVaults[msg.sender].tokensStaked) + stakerVaults[msg.sender].tokensXseconds); uint256 claimablePercentage = ((stakerTokensXseconds * 10**18) / EthDeposits[i+1].tokensXseconds); claimableEth += (claimablePercentage * EthDeposits[i+1].ethAmt) / 10**18; stakerVaults[msg.sender].tokensXseconds = 0; stakerVaults[msg.sender].lastClaimTime = EthDeposits[i+1].timestamp; stakerVaults[msg.sender].lastClaimNumber ++; } } uint256 ethSentToStaker = (claimableEth * stakerVaults[msg.sender].rewardsRate) / 100; payable(msg.sender).transfer(ethSentToStaker); uint256 ethToNftFund = claimableEth - ethSentToStaker; if (ethToNftFund > 0) { payable(treasury).transfer(ethToNftFund); } stakerVaults[msg.sender].ethClaimed += ethSentToStaker; totalEthPaid += ethSentToStaker; nftFund += ethToNftFund; } function viewRewardsRate (address user) public view returns (uint256) { uint256 shield = IERC721(nft).balanceOf(user); uint256 rate = 0; if (shield == 0 && stakerVaults[user].stakeDuration == stakeTime1) { rate = rate1; } if (shield == 1) { rate = rate2; } if (shield == 2) { rate = rate3; } if (shield >= 3) { rate = rate4; } return rate; } function viewClaimableEth(address user) public view returns(uint256 amount) { uint256 rate = viewRewardsRate(user); uint256 claimTime = stakerVaults[user].lastClaimTime; uint256 claimNumber = stakerVaults[user].lastClaimNumber; uint256 ethSentToStaker = 0; uint256 claimableEth = 0; uint256 stakerTokensXseconds = stakerVaults[user].tokensXseconds; for (uint256 i = claimNumber; i < ethDeposits; i++) { // Changed ethDeposits to ethDeposits.length if (stakerVaults[user].tokensXseconds == 0) { uint256 time = EthDeposits[i+1].timestamp - claimTime; // Changed stakerVaults[user].lastClaimTime to claimTime stakerTokensXseconds = time * stakerVaults[user].tokensStaked; uint256 claimablePercentage = (stakerTokensXseconds * 10**18) / EthDeposits[i+1].tokensXseconds; claimableEth += (claimablePercentage * EthDeposits[i+1].ethAmt) / 10**18; ethSentToStaker = claimableEth * rate / 100; claimTime = EthDeposits[i+1].timestamp; claimNumber++; } if (stakerVaults[user].tokensXseconds > 0) { uint256 time = EthDeposits[i+1].timestamp - stakerVaults[user].lastClaimTime; uint256 claimableTokensXseconds = (time * stakerVaults[user].tokensStaked) + stakerTokensXseconds; uint256 claimablePercentage = (claimableTokensXseconds * 10**18) / EthDeposits[i+1].tokensXseconds; claimableEth += (claimablePercentage * EthDeposits[i+1].ethAmt) / 10**18; ethSentToStaker = claimableEth * rate / 100; stakerTokensXseconds = 0; claimTime = EthDeposits[i+1].timestamp; claimNumber++; } } return ethSentToStaker; } function DepositEth(uint256 _weiAmt) external payable onlyOwner { require(_weiAmt > 0, "Amount sent must be greater than zero"); updateGlobalTokensXseconds(); payable(address(this)).transfer(_weiAmt); uint256 index = (ethDeposits + 1); EthDeposits[index] = EthDeposit(block.timestamp, _weiAmt, tokensXseconds); tokensXseconds = 0; lastUpdateTime = block.timestamp; ethDeposits ++; } receive() external payable { } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_nft","type":"address"},{"internalType":"address","name":"_treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"_weiAmt","type":"uint256"}],"name":"DepositEth","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"EthDeposits","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"ethAmt","type":"uint256"},{"internalType":"uint256","name":"tokensXseconds","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyClaimFee1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nft","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftFund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_earlyClaimFee1","type":"uint256"}],"name":"setEarlyClaimFee1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minStake","type":"uint256"}],"name":"setMinStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate1","type":"uint256"}],"name":"setRate1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate2","type":"uint256"}],"name":"setRate2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate3","type":"uint256"}],"name":"setRate3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate4","type":"uint256"}],"name":"setRate4","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakeTime1","type":"uint256"}],"name":"setStakeTime1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setStakingPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakeTime1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakerVaults","outputs":[{"internalType":"uint256","name":"tokensStaked","type":"uint256"},{"internalType":"uint256","name":"shields","type":"uint256"},{"internalType":"uint256","name":"stakeDuration","type":"uint256"},{"internalType":"uint256","name":"tokensXseconds","type":"uint256"},{"internalType":"uint256","name":"rewardsRate","type":"uint256"},{"internalType":"uint256","name":"stakedSince","type":"uint256"},{"internalType":"uint256","name":"stakedTill","type":"uint256"},{"internalType":"uint256","name":"lastClaimTime","type":"uint256"},{"internalType":"uint256","name":"lastClaimNumber","type":"uint256"},{"internalType":"uint256","name":"ethClaimed","type":"uint256"},{"internalType":"bool","name":"isStaked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensXseconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEthPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"unStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"viewClaimableEth","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"viewRewardsRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600260146101000a81548160ff02191690831515021790555060006004556000600555600060065560326007556050600855605a6009556064600a55623b5380600b556000600c55600a600d55683635c9adc5dea00000600e5542600f55600060105560006011553480156200007b57600080fd5b506040516200489c3803806200489c8339818101604052810190620000a1919062000270565b620000c1620000b56200018d60201b60201c565b6200019560201b60201c565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200031f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000815190506200026a8162000305565b92915050565b6000806000606084860312156200028c576200028b62000300565b5b60006200029c8682870162000259565b9350506020620002af8682870162000259565b9250506040620002c28682870162000259565b9150509250925092565b6000620002d982620002e0565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200031081620002cc565b81146200031c57600080fd5b50565b61456d806200032f6000396000f3fe6080604052600436106102345760003560e01c8063aff1f15f1161012e578063cf99770d116100ab578063f2fde38b1161006f578063f2fde38b146107e9578063f3728b6714610812578063f555b8151461083b578063fc0c546a14610866578063fed1252a146108915761023b565b8063cf99770d1461072a578063dbe9a18114610755578063e086e5ec1461077e578063f0d3d31814610795578063f0f44260146107c05761023b565b8063c361d71e116100f2578063c361d71e14610655578063c577191414610680578063c8f33c91146106ab578063ce6d88f4146106d6578063cf854969146106ff5761023b565b8063aff1f15f14610582578063b7cdddcb146105ad578063b86b14cd146105c4578063b9617b9a146105ed578063bbb781cc1461062a5761023b565b806361a99c4b116101bc5780638c80fd90116101805780638c80fd90146104b15780638da5cb5b146104da57806399a0331614610505578063a1db978214610530578063a694fc3a146105595761023b565b806361a99c4b146103f2578063715018a61461041d57806371b207f71461043457806379e32a621461045f57806384e4191e146104885761023b565b80634410764511610203578063441076451461031857806347ccca02146103575780634839e169146103825780635d3eea911461039e5780635dd8eb50146103c75761023b565b806305b217781461024057806315b31bbb1461027d578063199464c6146102a6578063375b3c0a146102ed5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190613a1b565b6108bc565b6040516102749190613f34565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190613a88565b610d88565b005b3480156102b257600080fd5b506102cd60048036038101906102c89190613a1b565b610dad565b6040516102e49b9a99989796959493929190613f86565b60405180910390f35b3480156102f957600080fd5b50610302610e14565b60405161030f9190613f34565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190613ae2565b610e1a565b60405161034e93929190613f4f565b60405180910390f35b34801561036357600080fd5b5061036c610e44565b6040516103799190613db9565b60405180910390f35b61039c60048036038101906103979190613ae2565b610e6a565b005b3480156103aa57600080fd5b506103c560048036038101906103c09190613ae2565b610f93565b005b3480156103d357600080fd5b506103dc611cf4565b6040516103e99190613f34565b60405180910390f35b3480156103fe57600080fd5b50610407611cfa565b6040516104149190613f34565b60405180910390f35b34801561042957600080fd5b50610432611d00565b005b34801561044057600080fd5b50610449611d14565b6040516104569190613f34565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190613ae2565b611d1a565b005b34801561049457600080fd5b506104af60048036038101906104aa9190613ae2565b611d2c565b005b3480156104bd57600080fd5b506104d860048036038101906104d39190613ae2565b611d3e565b005b3480156104e657600080fd5b506104ef611d50565b6040516104fc9190613d08565b60405180910390f35b34801561051157600080fd5b5061051a611d79565b6040516105279190613f34565b60405180910390f35b34801561053c57600080fd5b5061055760048036038101906105529190613a48565b611d7f565b005b34801561056557600080fd5b50610580600480360381019061057b9190613ae2565b611e19565b005b34801561058e57600080fd5b50610597612793565b6040516105a49190613f34565b60405180910390f35b3480156105b957600080fd5b506105c2612799565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190613ae2565b612fd7565b005b3480156105f957600080fd5b50610614600480360381019061060f9190613a1b565b612fe9565b6040516106219190613f34565b60405180910390f35b34801561063657600080fd5b5061063f61312e565b60405161064c9190613d83565b60405180910390f35b34801561066157600080fd5b5061066a613141565b6040516106779190613f34565b60405180910390f35b34801561068c57600080fd5b50610695613147565b6040516106a29190613f34565b60405180910390f35b3480156106b757600080fd5b506106c061314d565b6040516106cd9190613f34565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190613ae2565b613153565b005b34801561070b57600080fd5b50610714613165565b6040516107219190613f34565b60405180910390f35b34801561073657600080fd5b5061073f61316b565b60405161074c9190613f34565b60405180910390f35b34801561076157600080fd5b5061077c60048036038101906107779190613ae2565b613171565b005b34801561078a57600080fd5b506107936131c7565b005b3480156107a157600080fd5b506107aa61321f565b6040516107b79190613f34565b60405180910390f35b3480156107cc57600080fd5b506107e760048036038101906107e29190613a1b565b613225565b005b3480156107f557600080fd5b50610810600480360381019061080b9190613a1b565b613271565b005b34801561081e57600080fd5b5061083960048036038101906108349190613ae2565b6132f5565b005b34801561084757600080fd5b50610850613307565b60405161085d9190613f34565b60405180910390f35b34801561087257600080fd5b5061087b61330d565b6040516108889190613d9e565b60405180910390f35b34801561089d57600080fd5b506108a6613333565b6040516108b39190613f34565b60405180910390f35b6000806108c883612fe9565b90506000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015490506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008015490506000806000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154905060008490505b601154811015610d79576000601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541415610b625760008660136000600185610a119190614042565b815260200190815260200160002060000154610a2d9190614123565b9050601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015481610a7d91906140c9565b9250600060136000600185610a929190614042565b815260200190815260200160002060020154670de0b6b3a764000085610ab891906140c9565b610ac29190614098565b9050670de0b6b3a764000060136000600186610ade9190614042565b81526020019081526020016000206001015482610afb91906140c9565b610b059190614098565b85610b109190614042565b945060648986610b2091906140c9565b610b2a9190614098565b955060136000600185610b3d9190614042565b81526020019081526020016000206000015497508680610b5c90614211565b97505050505b6000601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541115610d66576000601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015460136000600185610c039190614042565b815260200190815260200160002060000154610c1f9190614123565b9050600083601260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015483610c7291906140c9565b610c7c9190614042565b9050600060136000600186610c919190614042565b815260200190815260200160002060020154670de0b6b3a764000083610cb791906140c9565b610cc19190614098565b9050670de0b6b3a764000060136000600187610cdd9190614042565b81526020019081526020016000206001015482610cfa91906140c9565b610d049190614098565b86610d0f9190614042565b955060648a87610d1f91906140c9565b610d299190614098565b96506000945060136000600186610d409190614042565b81526020019081526020016000206000015498508780610d5f90614211565b9850505050505b8080610d7190614211565b9150506109a8565b50829650505050505050919050565b610d90613339565b80600260146101000a81548160ff02191690831515021790555050565b601260205280600052604060002060009150905080600001549080600101549080600201549080600301549080600401549080600501549080600601549080600701549080600801549080600901549080600a0160009054906101000a900460ff1690508b565b600e5481565b60136020528060005260406000206000915090508060000154908060010154908060020154905083565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e72613339565b60008111610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac90613df4565b60405180910390fd5b610ebd6133b7565b3073ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f03573d6000803e3d6000fd5b5060006001601154610f159190614042565b9050604051806060016040528042815260200183815260200160105481525060136000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600060108190555042600f8190555060116000815480929190610f8a90614211565b91905055505050565b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90613e94565b60405180910390fd5b80600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016110969190613d08565b60206040518083038186803b1580156110ae57600080fd5b505afa1580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e69190613b0f565b1015611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90613e54565b60405180910390fd5b600260149054906101000a900460ff1615611177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116e90613f14565b60405180910390fd5b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff161515146111d757600080fd5b60006111e2336108bc565b905060008111156111f6576111f5612799565b5b6111fe6133b7565b600082601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461124e9190614123565b90506000806000600e5484101561193357601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154925042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601541180156113385750600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b1561147a57606483600d5461134d91906140c9565b6113579190614098565b915081836113659190614123565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b81526004016113e893929190613d23565b602060405180830381600087803b15801561140257600080fd5b505af1158015611416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143a9190613ab5565b611479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147090613e74565b60405180910390fd5b5b42601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154116115d657600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633866040518463ffffffff1660e01b815260040161154493929190613d23565b602060405180830381600087803b15801561155e57600080fd5b505af1158015611572573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115969190613ab5565b6115d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cc90613e74565b60405180910390fd5b5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160006101000a81548160ff02191690831515021790555082600460008282546119139190614123565b925050819055506005600081548092919061192d906141e7565b91905055505b600e548410611cec5785925042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601541180156119d35750600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b15611b1557606483600d546119e891906140c9565b6119f29190614098565b91508183611a009190614123565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b8152600401611a8393929190613d23565b602060405180830381600087803b158015611a9d57600080fd5b505af1158015611ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad59190613ab5565b611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0b90613e74565b60405180910390fd5b5b42601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015411611c7157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633866040518463ffffffff1660e01b8152600401611bdf93929190613d23565b602060405180830381600087803b158015611bf957600080fd5b505af1158015611c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c319190613ab5565b611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790613e74565b60405180910390fd5b5b611c79613404565b82601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254611ccb9190614123565b925050819055508260046000828254611ce49190614123565b925050819055505b505050505050565b600a5481565b60115481565b611d08613339565b611d126000613551565b565b60065481565b611d22613339565b8060088190555050565b611d34613339565b80600a8190555050565b611d46613339565b80600e8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b611d87613339565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611dc2929190613d5a565b602060405180830381600087803b158015611ddc57600080fd5b505af1158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e149190613ab5565b505050565b60001515600260149054906101000a900460ff16151514611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6690613ef4565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611ecc9190613d08565b60206040518083038186803b158015611ee457600080fd5b505afa158015611ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1c9190613b0f565b905081811015611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890613ed4565b60405180910390fd5b600e54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015483611fb29190614042565b1015611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90613e34565b60405180910390fd5b611ffb6133b7565b6000612006336108bc565b9050600081111561201a57612019612799565b5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b330856040518363ffffffff1660e01b8152600401612077929190613d5a565b602060405180830381600087803b15801561209157600080fd5b505af11580156120a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c99190613ab5565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401612149929190613d5a565b602060405180830381600087803b15801561216357600080fd5b505af1158015612177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219b9190613ab5565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b815260040161221d93929190613d23565b602060405180830381600087803b15801561223757600080fd5b505af115801561224b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226f9190613ab5565b5060011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff1615151415612347576122d4613404565b82601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546123269190614042565b92505081905550826004600082825461233f9190614042565b925050819055505b60001515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff161515141561278e576000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016124009190613d08565b60206040518083038186803b15801561241857600080fd5b505afa15801561242c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124509190613b0f565b9050600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600b54426124a99190614042565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555083601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546125419190614042565b9250508190555042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160006101000a81548160ff0219169083151502179055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555080601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090181905550601154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080181905550612759613615565b836004600082825461276b9190614042565b925050819055506001600560008282546127859190614042565b92505081905550505b505050565b60095481565b601154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154106127e957600080fd5b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff1615151461284957600080fd5b612851613615565b600080601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008015490505b601154811015612e1e576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541415612b0d576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154601360006001856129459190614042565b8152602001908152602001600020600001546129619190614123565b90506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154826129b391906140c9565b90506000601360006001866129c89190614042565b815260200190815260200160002060020154670de0b6b3a7640000836129ee91906140c9565b6129f89190614098565b9050670de0b6b3a764000060136000600187612a149190614042565b81526020019081526020016000206001015482612a3191906140c9565b612a3b9190614098565b85612a469190614042565b945060136000600186612a599190614042565b815260200190815260200160002060000154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181905550601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008016000815480929190612b0490614211565b91905055505050505b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541115612e0b576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015460136000600185612bae9190614042565b815260200190815260200160002060000154612bca9190614123565b90506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015483612c5f91906140c9565b612c699190614042565b9050600060136000600186612c7e9190614042565b815260200190815260200160002060020154670de0b6b3a764000083612ca491906140c9565b612cae9190614098565b9050670de0b6b3a764000060136000600187612cca9190614042565b81526020019081526020016000206001015482612ce791906140c9565b612cf19190614098565b85612cfc9190614042565b94506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555060136000600186612d579190614042565b815260200190815260200160002060000154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181905550601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008016000815480929190612e0290614211565b91905055505050505b8080612e1690614211565b91505061289a565b5060006064601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015483612e7191906140c9565b612e7b9190614098565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ec3573d6000803e3d6000fd5b5060008183612ed29190614123565b90506000811115612f4757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f45573d6000803e3d6000fd5b505b81601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009016000828254612f999190614042565b925050819055508160066000828254612fb29190614042565b9250508190555080600c6000828254612fcb9190614042565b92505081905550505050565b612fdf613339565b8060078190555050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016130479190613d08565b60206040518083038186803b15801561305f57600080fd5b505afa158015613073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130979190613b0f565b9050600080821480156130ed5750600b54601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b156130f85760075490505b60018214156131075760085490505b60028214156131165760095490505b6003821061312457600a5490505b8092505050919050565b600260149054906101000a900460ff1681565b600d5481565b600c5481565b600f5481565b61315b613339565b80600b8190555050565b60075481565b60105481565b613179613339565b601e8111156131bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b490613e14565b60405180910390fd5b80600d8190555050565b6131cf613339565b6131d7611d50565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561321c573d6000803e3d6000fd5b50565b600b5481565b61322d613339565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613279613339565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156132e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e090613dd4565b60405180910390fd5b6132f281613551565b50565b6132fd613339565b8060098190555050565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6133416139aa565b73ffffffffffffffffffffffffffffffffffffffff1661335f611d50565b73ffffffffffffffffffffffffffffffffffffffff16146133b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ac90613eb4565b60405180910390fd5b565b6000600454600f54426133ca9190614123565b6133d491906140c9565b816133df9190614042565b905080601060008282546133f39190614042565b9250508190555042600f8190555050565b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154426134979190614123565b6134a191906140c9565b816134ac9190614042565b905080601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008282546135009190614042565b9250508190555042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016136709190613d08565b60206040518083038186803b15801561368857600080fd5b505afa15801561369c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c09190613b0f565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015414801561379b5750600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b156137ea57600754601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154141561387f57600854601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b6002601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154141561391457600954601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b6003601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154106139a857600a54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b565b600033905090565b6000813590506139c1816144f2565b92915050565b6000813590506139d681614509565b92915050565b6000815190506139eb81614509565b92915050565b600081359050613a0081614520565b92915050565b600081519050613a1581614520565b92915050565b600060208284031215613a3157613a306142b8565b5b6000613a3f848285016139b2565b91505092915050565b60008060408385031215613a5f57613a5e6142b8565b5b6000613a6d858286016139b2565b9250506020613a7e858286016139f1565b9150509250929050565b600060208284031215613a9e57613a9d6142b8565b5b6000613aac848285016139c7565b91505092915050565b600060208284031215613acb57613aca6142b8565b5b6000613ad9848285016139dc565b91505092915050565b600060208284031215613af857613af76142b8565b5b6000613b06848285016139f1565b91505092915050565b600060208284031215613b2557613b246142b8565b5b6000613b3384828501613a06565b91505092915050565b613b4581614157565b82525050565b613b5481614169565b82525050565b613b638161419f565b82525050565b613b72816141b1565b82525050565b6000613b85602683614031565b9150613b90826142bd565b604082019050919050565b6000613ba8602583614031565b9150613bb38261430c565b604082019050919050565b6000613bcb601e83614031565b9150613bd68261435b565b602082019050919050565b6000613bee601d83614031565b9150613bf982614384565b602082019050919050565b6000613c11601c83614031565b9150613c1c826143ad565b602082019050919050565b6000613c34602283614031565b9150613c3f826143d6565b604082019050919050565b6000613c57601f83614031565b9150613c6282614425565b602082019050919050565b6000613c7a602083614031565b9150613c858261444e565b602082019050919050565b6000613c9d601483614031565b9150613ca882614477565b602082019050919050565b6000613cc0601183614031565b9150613ccb826144a0565b602082019050919050565b6000613ce3601183614031565b9150613cee826144c9565b602082019050919050565b613d0281614195565b82525050565b6000602082019050613d1d6000830184613b3c565b92915050565b6000606082019050613d386000830186613b3c565b613d456020830185613b3c565b613d526040830184613cf9565b949350505050565b6000604082019050613d6f6000830185613b3c565b613d7c6020830184613cf9565b9392505050565b6000602082019050613d986000830184613b4b565b92915050565b6000602082019050613db36000830184613b5a565b92915050565b6000602082019050613dce6000830184613b69565b92915050565b60006020820190508181036000830152613ded81613b78565b9050919050565b60006020820190508181036000830152613e0d81613b9b565b9050919050565b60006020820190508181036000830152613e2d81613bbe565b9050919050565b60006020820190508181036000830152613e4d81613be1565b9050919050565b60006020820190508181036000830152613e6d81613c04565b9050919050565b60006020820190508181036000830152613e8d81613c27565b9050919050565b60006020820190508181036000830152613ead81613c4a565b9050919050565b60006020820190508181036000830152613ecd81613c6d565b9050919050565b60006020820190508181036000830152613eed81613c90565b9050919050565b60006020820190508181036000830152613f0d81613cb3565b9050919050565b60006020820190508181036000830152613f2d81613cd6565b9050919050565b6000602082019050613f496000830184613cf9565b92915050565b6000606082019050613f646000830186613cf9565b613f716020830185613cf9565b613f7e6040830184613cf9565b949350505050565b600061016082019050613f9c600083018e613cf9565b613fa9602083018d613cf9565b613fb6604083018c613cf9565b613fc3606083018b613cf9565b613fd0608083018a613cf9565b613fdd60a0830189613cf9565b613fea60c0830188613cf9565b613ff760e0830187613cf9565b614005610100830186613cf9565b614013610120830185613cf9565b614021610140830184613b4b565b9c9b505050505050505050505050565b600082825260208201905092915050565b600061404d82614195565b915061405883614195565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561408d5761408c61425a565b5b828201905092915050565b60006140a382614195565b91506140ae83614195565b9250826140be576140bd614289565b5b828204905092915050565b60006140d482614195565b91506140df83614195565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141185761411761425a565b5b828202905092915050565b600061412e82614195565b915061413983614195565b92508282101561414c5761414b61425a565b5b828203905092915050565b600061416282614175565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006141aa826141c3565b9050919050565b60006141bc826141c3565b9050919050565b60006141ce826141d5565b9050919050565b60006141e082614175565b9050919050565b60006141f282614195565b915060008214156142065761420561425a565b5b600182039050919050565b600061421c82614195565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561424f5761424e61425a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e742073656e74206d7573742062652067726561746572207468616e60008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f66656520746f20686967682074727920616761696e2c20333025206d61780000600082015250565b7f596f75204e656564204d6f726520546f6b656e7320546f205374616b65000000600082015250565b7f4e6f7420456e6f7567682046756e647320496e20547265617375727900000000600082015250565b7f546f6b656e7320636f756c64206e6f742062652073656e7420746f205374616b60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520646f6e277420686176652074686174206d616e7920746f6b656e7300600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b7f5354414b494e4720495320504155534544000000000000000000000000000000600082015250565b7f5374616b696e6720697320706175736564000000000000000000000000000000600082015250565b6144fb81614157565b811461450657600080fd5b50565b61451281614169565b811461451d57600080fd5b50565b61452981614195565b811461453457600080fd5b5056fea2646970667358221220dbedd15994e80f90091206990dc3b7d2e55203183463a174cce9f1907ee904d964736f6c63430008070033000000000000000000000000d8b90d2e680ea535eacce1b025c998b347892f6800000000000000000000000009d535b5ceb3a447bebd3b415281299b60a437e5000000000000000000000000a3448c405b665503163053f8caec2595b7f415bd
Deployed Bytecode
0x6080604052600436106102345760003560e01c8063aff1f15f1161012e578063cf99770d116100ab578063f2fde38b1161006f578063f2fde38b146107e9578063f3728b6714610812578063f555b8151461083b578063fc0c546a14610866578063fed1252a146108915761023b565b8063cf99770d1461072a578063dbe9a18114610755578063e086e5ec1461077e578063f0d3d31814610795578063f0f44260146107c05761023b565b8063c361d71e116100f2578063c361d71e14610655578063c577191414610680578063c8f33c91146106ab578063ce6d88f4146106d6578063cf854969146106ff5761023b565b8063aff1f15f14610582578063b7cdddcb146105ad578063b86b14cd146105c4578063b9617b9a146105ed578063bbb781cc1461062a5761023b565b806361a99c4b116101bc5780638c80fd90116101805780638c80fd90146104b15780638da5cb5b146104da57806399a0331614610505578063a1db978214610530578063a694fc3a146105595761023b565b806361a99c4b146103f2578063715018a61461041d57806371b207f71461043457806379e32a621461045f57806384e4191e146104885761023b565b80634410764511610203578063441076451461031857806347ccca02146103575780634839e169146103825780635d3eea911461039e5780635dd8eb50146103c75761023b565b806305b217781461024057806315b31bbb1461027d578063199464c6146102a6578063375b3c0a146102ed5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190613a1b565b6108bc565b6040516102749190613f34565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190613a88565b610d88565b005b3480156102b257600080fd5b506102cd60048036038101906102c89190613a1b565b610dad565b6040516102e49b9a99989796959493929190613f86565b60405180910390f35b3480156102f957600080fd5b50610302610e14565b60405161030f9190613f34565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190613ae2565b610e1a565b60405161034e93929190613f4f565b60405180910390f35b34801561036357600080fd5b5061036c610e44565b6040516103799190613db9565b60405180910390f35b61039c60048036038101906103979190613ae2565b610e6a565b005b3480156103aa57600080fd5b506103c560048036038101906103c09190613ae2565b610f93565b005b3480156103d357600080fd5b506103dc611cf4565b6040516103e99190613f34565b60405180910390f35b3480156103fe57600080fd5b50610407611cfa565b6040516104149190613f34565b60405180910390f35b34801561042957600080fd5b50610432611d00565b005b34801561044057600080fd5b50610449611d14565b6040516104569190613f34565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190613ae2565b611d1a565b005b34801561049457600080fd5b506104af60048036038101906104aa9190613ae2565b611d2c565b005b3480156104bd57600080fd5b506104d860048036038101906104d39190613ae2565b611d3e565b005b3480156104e657600080fd5b506104ef611d50565b6040516104fc9190613d08565b60405180910390f35b34801561051157600080fd5b5061051a611d79565b6040516105279190613f34565b60405180910390f35b34801561053c57600080fd5b5061055760048036038101906105529190613a48565b611d7f565b005b34801561056557600080fd5b50610580600480360381019061057b9190613ae2565b611e19565b005b34801561058e57600080fd5b50610597612793565b6040516105a49190613f34565b60405180910390f35b3480156105b957600080fd5b506105c2612799565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190613ae2565b612fd7565b005b3480156105f957600080fd5b50610614600480360381019061060f9190613a1b565b612fe9565b6040516106219190613f34565b60405180910390f35b34801561063657600080fd5b5061063f61312e565b60405161064c9190613d83565b60405180910390f35b34801561066157600080fd5b5061066a613141565b6040516106779190613f34565b60405180910390f35b34801561068c57600080fd5b50610695613147565b6040516106a29190613f34565b60405180910390f35b3480156106b757600080fd5b506106c061314d565b6040516106cd9190613f34565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190613ae2565b613153565b005b34801561070b57600080fd5b50610714613165565b6040516107219190613f34565b60405180910390f35b34801561073657600080fd5b5061073f61316b565b60405161074c9190613f34565b60405180910390f35b34801561076157600080fd5b5061077c60048036038101906107779190613ae2565b613171565b005b34801561078a57600080fd5b506107936131c7565b005b3480156107a157600080fd5b506107aa61321f565b6040516107b79190613f34565b60405180910390f35b3480156107cc57600080fd5b506107e760048036038101906107e29190613a1b565b613225565b005b3480156107f557600080fd5b50610810600480360381019061080b9190613a1b565b613271565b005b34801561081e57600080fd5b5061083960048036038101906108349190613ae2565b6132f5565b005b34801561084757600080fd5b50610850613307565b60405161085d9190613f34565b60405180910390f35b34801561087257600080fd5b5061087b61330d565b6040516108889190613d9e565b60405180910390f35b34801561089d57600080fd5b506108a6613333565b6040516108b39190613f34565b60405180910390f35b6000806108c883612fe9565b90506000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015490506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008015490506000806000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154905060008490505b601154811015610d79576000601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541415610b625760008660136000600185610a119190614042565b815260200190815260200160002060000154610a2d9190614123565b9050601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015481610a7d91906140c9565b9250600060136000600185610a929190614042565b815260200190815260200160002060020154670de0b6b3a764000085610ab891906140c9565b610ac29190614098565b9050670de0b6b3a764000060136000600186610ade9190614042565b81526020019081526020016000206001015482610afb91906140c9565b610b059190614098565b85610b109190614042565b945060648986610b2091906140c9565b610b2a9190614098565b955060136000600185610b3d9190614042565b81526020019081526020016000206000015497508680610b5c90614211565b97505050505b6000601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541115610d66576000601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015460136000600185610c039190614042565b815260200190815260200160002060000154610c1f9190614123565b9050600083601260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015483610c7291906140c9565b610c7c9190614042565b9050600060136000600186610c919190614042565b815260200190815260200160002060020154670de0b6b3a764000083610cb791906140c9565b610cc19190614098565b9050670de0b6b3a764000060136000600187610cdd9190614042565b81526020019081526020016000206001015482610cfa91906140c9565b610d049190614098565b86610d0f9190614042565b955060648a87610d1f91906140c9565b610d299190614098565b96506000945060136000600186610d409190614042565b81526020019081526020016000206000015498508780610d5f90614211565b9850505050505b8080610d7190614211565b9150506109a8565b50829650505050505050919050565b610d90613339565b80600260146101000a81548160ff02191690831515021790555050565b601260205280600052604060002060009150905080600001549080600101549080600201549080600301549080600401549080600501549080600601549080600701549080600801549080600901549080600a0160009054906101000a900460ff1690508b565b600e5481565b60136020528060005260406000206000915090508060000154908060010154908060020154905083565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e72613339565b60008111610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac90613df4565b60405180910390fd5b610ebd6133b7565b3073ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f03573d6000803e3d6000fd5b5060006001601154610f159190614042565b9050604051806060016040528042815260200183815260200160105481525060136000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600060108190555042600f8190555060116000815480929190610f8a90614211565b91905055505050565b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90613e94565b60405180910390fd5b80600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016110969190613d08565b60206040518083038186803b1580156110ae57600080fd5b505afa1580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e69190613b0f565b1015611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90613e54565b60405180910390fd5b600260149054906101000a900460ff1615611177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116e90613f14565b60405180910390fd5b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff161515146111d757600080fd5b60006111e2336108bc565b905060008111156111f6576111f5612799565b5b6111fe6133b7565b600082601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461124e9190614123565b90506000806000600e5484101561193357601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154925042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601541180156113385750600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b1561147a57606483600d5461134d91906140c9565b6113579190614098565b915081836113659190614123565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b81526004016113e893929190613d23565b602060405180830381600087803b15801561140257600080fd5b505af1158015611416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143a9190613ab5565b611479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147090613e74565b60405180910390fd5b5b42601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154116115d657600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633866040518463ffffffff1660e01b815260040161154493929190613d23565b602060405180830381600087803b15801561155e57600080fd5b505af1158015611572573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115969190613ab5565b6115d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cc90613e74565b60405180910390fd5b5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160006101000a81548160ff02191690831515021790555082600460008282546119139190614123565b925050819055506005600081548092919061192d906141e7565b91905055505b600e548410611cec5785925042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601541180156119d35750600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b15611b1557606483600d546119e891906140c9565b6119f29190614098565b91508183611a009190614123565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b8152600401611a8393929190613d23565b602060405180830381600087803b158015611a9d57600080fd5b505af1158015611ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad59190613ab5565b611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0b90613e74565b60405180910390fd5b5b42601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015411611c7157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633866040518463ffffffff1660e01b8152600401611bdf93929190613d23565b602060405180830381600087803b158015611bf957600080fd5b505af1158015611c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c319190613ab5565b611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790613e74565b60405180910390fd5b5b611c79613404565b82601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254611ccb9190614123565b925050819055508260046000828254611ce49190614123565b925050819055505b505050505050565b600a5481565b60115481565b611d08613339565b611d126000613551565b565b60065481565b611d22613339565b8060088190555050565b611d34613339565b80600a8190555050565b611d46613339565b80600e8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b611d87613339565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611dc2929190613d5a565b602060405180830381600087803b158015611ddc57600080fd5b505af1158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e149190613ab5565b505050565b60001515600260149054906101000a900460ff16151514611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6690613ef4565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611ecc9190613d08565b60206040518083038186803b158015611ee457600080fd5b505afa158015611ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1c9190613b0f565b905081811015611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890613ed4565b60405180910390fd5b600e54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015483611fb29190614042565b1015611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90613e34565b60405180910390fd5b611ffb6133b7565b6000612006336108bc565b9050600081111561201a57612019612799565b5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b330856040518363ffffffff1660e01b8152600401612077929190613d5a565b602060405180830381600087803b15801561209157600080fd5b505af11580156120a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c99190613ab5565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401612149929190613d5a565b602060405180830381600087803b15801561216357600080fd5b505af1158015612177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219b9190613ab5565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b815260040161221d93929190613d23565b602060405180830381600087803b15801561223757600080fd5b505af115801561224b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226f9190613ab5565b5060011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff1615151415612347576122d4613404565b82601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546123269190614042565b92505081905550826004600082825461233f9190614042565b925050819055505b60001515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff161515141561278e576000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016124009190613d08565b60206040518083038186803b15801561241857600080fd5b505afa15801561242c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124509190613b0f565b9050600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600b54426124a99190614042565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555083601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546125419190614042565b9250508190555042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160006101000a81548160ff0219169083151502179055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555080601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090181905550601154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080181905550612759613615565b836004600082825461276b9190614042565b925050819055506001600560008282546127859190614042565b92505081905550505b505050565b60095481565b601154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154106127e957600080fd5b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff1615151461284957600080fd5b612851613615565b600080601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008015490505b601154811015612e1e576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541415612b0d576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154601360006001856129459190614042565b8152602001908152602001600020600001546129619190614123565b90506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154826129b391906140c9565b90506000601360006001866129c89190614042565b815260200190815260200160002060020154670de0b6b3a7640000836129ee91906140c9565b6129f89190614098565b9050670de0b6b3a764000060136000600187612a149190614042565b81526020019081526020016000206001015482612a3191906140c9565b612a3b9190614098565b85612a469190614042565b945060136000600186612a599190614042565b815260200190815260200160002060000154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181905550601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008016000815480929190612b0490614211565b91905055505050505b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541115612e0b576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015460136000600185612bae9190614042565b815260200190815260200160002060000154612bca9190614123565b90506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015483612c5f91906140c9565b612c699190614042565b9050600060136000600186612c7e9190614042565b815260200190815260200160002060020154670de0b6b3a764000083612ca491906140c9565b612cae9190614098565b9050670de0b6b3a764000060136000600187612cca9190614042565b81526020019081526020016000206001015482612ce791906140c9565b612cf19190614098565b85612cfc9190614042565b94506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555060136000600186612d579190614042565b815260200190815260200160002060000154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181905550601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008016000815480929190612e0290614211565b91905055505050505b8080612e1690614211565b91505061289a565b5060006064601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015483612e7191906140c9565b612e7b9190614098565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ec3573d6000803e3d6000fd5b5060008183612ed29190614123565b90506000811115612f4757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f45573d6000803e3d6000fd5b505b81601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009016000828254612f999190614042565b925050819055508160066000828254612fb29190614042565b9250508190555080600c6000828254612fcb9190614042565b92505081905550505050565b612fdf613339565b8060078190555050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016130479190613d08565b60206040518083038186803b15801561305f57600080fd5b505afa158015613073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130979190613b0f565b9050600080821480156130ed5750600b54601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b156130f85760075490505b60018214156131075760085490505b60028214156131165760095490505b6003821061312457600a5490505b8092505050919050565b600260149054906101000a900460ff1681565b600d5481565b600c5481565b600f5481565b61315b613339565b80600b8190555050565b60075481565b60105481565b613179613339565b601e8111156131bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b490613e14565b60405180910390fd5b80600d8190555050565b6131cf613339565b6131d7611d50565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561321c573d6000803e3d6000fd5b50565b600b5481565b61322d613339565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613279613339565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156132e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e090613dd4565b60405180910390fd5b6132f281613551565b50565b6132fd613339565b8060098190555050565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6133416139aa565b73ffffffffffffffffffffffffffffffffffffffff1661335f611d50565b73ffffffffffffffffffffffffffffffffffffffff16146133b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ac90613eb4565b60405180910390fd5b565b6000600454600f54426133ca9190614123565b6133d491906140c9565b816133df9190614042565b905080601060008282546133f39190614042565b9250508190555042600f8190555050565b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154426134979190614123565b6134a191906140c9565b816134ac9190614042565b905080601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008282546135009190614042565b9250508190555042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016136709190613d08565b60206040518083038186803b15801561368857600080fd5b505afa15801561369c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c09190613b0f565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015414801561379b5750600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b156137ea57600754601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154141561387f57600854601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b6002601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154141561391457600954601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b6003601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154106139a857600a54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b565b600033905090565b6000813590506139c1816144f2565b92915050565b6000813590506139d681614509565b92915050565b6000815190506139eb81614509565b92915050565b600081359050613a0081614520565b92915050565b600081519050613a1581614520565b92915050565b600060208284031215613a3157613a306142b8565b5b6000613a3f848285016139b2565b91505092915050565b60008060408385031215613a5f57613a5e6142b8565b5b6000613a6d858286016139b2565b9250506020613a7e858286016139f1565b9150509250929050565b600060208284031215613a9e57613a9d6142b8565b5b6000613aac848285016139c7565b91505092915050565b600060208284031215613acb57613aca6142b8565b5b6000613ad9848285016139dc565b91505092915050565b600060208284031215613af857613af76142b8565b5b6000613b06848285016139f1565b91505092915050565b600060208284031215613b2557613b246142b8565b5b6000613b3384828501613a06565b91505092915050565b613b4581614157565b82525050565b613b5481614169565b82525050565b613b638161419f565b82525050565b613b72816141b1565b82525050565b6000613b85602683614031565b9150613b90826142bd565b604082019050919050565b6000613ba8602583614031565b9150613bb38261430c565b604082019050919050565b6000613bcb601e83614031565b9150613bd68261435b565b602082019050919050565b6000613bee601d83614031565b9150613bf982614384565b602082019050919050565b6000613c11601c83614031565b9150613c1c826143ad565b602082019050919050565b6000613c34602283614031565b9150613c3f826143d6565b604082019050919050565b6000613c57601f83614031565b9150613c6282614425565b602082019050919050565b6000613c7a602083614031565b9150613c858261444e565b602082019050919050565b6000613c9d601483614031565b9150613ca882614477565b602082019050919050565b6000613cc0601183614031565b9150613ccb826144a0565b602082019050919050565b6000613ce3601183614031565b9150613cee826144c9565b602082019050919050565b613d0281614195565b82525050565b6000602082019050613d1d6000830184613b3c565b92915050565b6000606082019050613d386000830186613b3c565b613d456020830185613b3c565b613d526040830184613cf9565b949350505050565b6000604082019050613d6f6000830185613b3c565b613d7c6020830184613cf9565b9392505050565b6000602082019050613d986000830184613b4b565b92915050565b6000602082019050613db36000830184613b5a565b92915050565b6000602082019050613dce6000830184613b69565b92915050565b60006020820190508181036000830152613ded81613b78565b9050919050565b60006020820190508181036000830152613e0d81613b9b565b9050919050565b60006020820190508181036000830152613e2d81613bbe565b9050919050565b60006020820190508181036000830152613e4d81613be1565b9050919050565b60006020820190508181036000830152613e6d81613c04565b9050919050565b60006020820190508181036000830152613e8d81613c27565b9050919050565b60006020820190508181036000830152613ead81613c4a565b9050919050565b60006020820190508181036000830152613ecd81613c6d565b9050919050565b60006020820190508181036000830152613eed81613c90565b9050919050565b60006020820190508181036000830152613f0d81613cb3565b9050919050565b60006020820190508181036000830152613f2d81613cd6565b9050919050565b6000602082019050613f496000830184613cf9565b92915050565b6000606082019050613f646000830186613cf9565b613f716020830185613cf9565b613f7e6040830184613cf9565b949350505050565b600061016082019050613f9c600083018e613cf9565b613fa9602083018d613cf9565b613fb6604083018c613cf9565b613fc3606083018b613cf9565b613fd0608083018a613cf9565b613fdd60a0830189613cf9565b613fea60c0830188613cf9565b613ff760e0830187613cf9565b614005610100830186613cf9565b614013610120830185613cf9565b614021610140830184613b4b565b9c9b505050505050505050505050565b600082825260208201905092915050565b600061404d82614195565b915061405883614195565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561408d5761408c61425a565b5b828201905092915050565b60006140a382614195565b91506140ae83614195565b9250826140be576140bd614289565b5b828204905092915050565b60006140d482614195565b91506140df83614195565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141185761411761425a565b5b828202905092915050565b600061412e82614195565b915061413983614195565b92508282101561414c5761414b61425a565b5b828203905092915050565b600061416282614175565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006141aa826141c3565b9050919050565b60006141bc826141c3565b9050919050565b60006141ce826141d5565b9050919050565b60006141e082614175565b9050919050565b60006141f282614195565b915060008214156142065761420561425a565b5b600182039050919050565b600061421c82614195565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561424f5761424e61425a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e742073656e74206d7573742062652067726561746572207468616e60008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f66656520746f20686967682074727920616761696e2c20333025206d61780000600082015250565b7f596f75204e656564204d6f726520546f6b656e7320546f205374616b65000000600082015250565b7f4e6f7420456e6f7567682046756e647320496e20547265617375727900000000600082015250565b7f546f6b656e7320636f756c64206e6f742062652073656e7420746f205374616b60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520646f6e277420686176652074686174206d616e7920746f6b656e7300600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b7f5354414b494e4720495320504155534544000000000000000000000000000000600082015250565b7f5374616b696e6720697320706175736564000000000000000000000000000000600082015250565b6144fb81614157565b811461450657600080fd5b50565b61451281614169565b811461451d57600080fd5b50565b61452981614195565b811461453457600080fd5b5056fea2646970667358221220dbedd15994e80f90091206990dc3b7d2e55203183463a174cce9f1907ee904d964736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d8b90d2e680ea535eacce1b025c998b347892f6800000000000000000000000009d535b5ceb3a447bebd3b415281299b60a437e5000000000000000000000000a3448c405b665503163053f8caec2595b7f415bd
-----Decoded View---------------
Arg [0] : _token (address): 0xd8B90D2e680ea535eAcCe1b025c998B347892f68
Arg [1] : _nft (address): 0x09D535b5ceb3a447bEBD3b415281299B60a437e5
Arg [2] : _treasury (address): 0xA3448C405b665503163053F8caEC2595B7f415Bd
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000d8b90d2e680ea535eacce1b025c998b347892f68
Arg [1] : 00000000000000000000000009d535b5ceb3a447bebd3b415281299b60a437e5
Arg [2] : 000000000000000000000000a3448c405b665503163053f8caec2595b7f415bd
Deployed Bytecode Sourcemap
15845:14718:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28149:1892;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16919:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18752:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;16732:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18810:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15914:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30049:468;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22218:3046;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16488:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16880:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14916:103;;;;;;;;;;;;;:::i;:::-;;16302:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17127:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17865:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14268:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16182:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18091:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20382:1828;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16446:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25272:2322;;;;;;;;;;;;;:::i;:::-;;17028:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27602:537;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16113:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16689:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16584:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16782:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17424:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16362:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16838:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17654:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17976:107;;;;;;;;;;;;;:::i;:::-;;16531:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17543:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15174:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17226:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16405:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15888:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16243:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28149:1892;28209:14;28236:12;28251:21;28267:4;28251:15;:21::i;:::-;28236:36;;28283:17;28303:12;:18;28316:4;28303:18;;;;;;;;;;;;;;;:32;;;28283:52;;28346:19;28368:12;:18;28381:4;28368:18;;;;;;;;;;;;;;;:34;;;28346:56;;28413:23;28451:20;28486:28;28517:12;:18;28530:4;28517:18;;;;;;;;;;;;;;;:33;;;28486:64;;28568:9;28580:11;28568:23;;28563:1436;28597:11;;28593:1;:15;28563:1436;;;28716:1;28679:12;:18;28692:4;28679:18;;;;;;;;;;;;;;;:33;;;:38;28675:625;;;28738:12;28782:9;28753:11;:16;28767:1;28765;:3;;;;:::i;:::-;28753:16;;;;;;;;;;;:26;;;:38;;;;:::i;:::-;28738:53;;28897:12;:18;28910:4;28897:18;;;;;;;;;;;;;;;:31;;;28890:4;:38;;;;:::i;:::-;28867:61;;28947:27;29011:11;:16;29025:1;29023;:3;;;;:::i;:::-;29011:16;;;;;;;;;;;:31;;;29001:6;28978:20;:29;;;;:::i;:::-;28977:65;;;;:::i;:::-;28947:95;;29127:6;29100:11;:16;29114:1;29112;:3;;;;:::i;:::-;29100:16;;;;;;;;;;;:23;;;29078:19;:45;;;;:::i;:::-;29077:56;;;;:::i;:::-;29061:72;;;;;:::i;:::-;;;29192:3;29185:4;29170:12;:19;;;;:::i;:::-;:25;;;;:::i;:::-;29152:43;;29226:11;:16;29240:1;29238;:3;;;;:::i;:::-;29226:16;;;;;;;;;;;:26;;;29214:38;;29271:13;;;;;:::i;:::-;;;;28719:581;;28675:625;29356:1;29320:12;:18;29333:4;29320:18;;;;;;;;;;;;;;;:33;;;:37;29316:672;;;29378:12;29422;:18;29435:4;29422:18;;;;;;;;;;;;;;;:32;;;29393:11;:16;29407:1;29405;:3;;;;:::i;:::-;29393:16;;;;;;;;;;;:26;;;:61;;;;:::i;:::-;29378:76;;29473:31;29550:20;29515:12;:18;29528:4;29515:18;;;;;;;;;;;;;;;:31;;;29508:4;:38;;;;:::i;:::-;29507:63;;;;:::i;:::-;29473:97;;29589:27;29656:11;:16;29670:1;29668;:3;;;;:::i;:::-;29656:16;;;;;;;;;;;:31;;;29646:6;29620:23;:32;;;;:::i;:::-;29619:68;;;;:::i;:::-;29589:98;;29772:6;29745:11;:16;29759:1;29757;:3;;;;:::i;:::-;29745:16;;;;;;;;;;;:23;;;29723:19;:45;;;;:::i;:::-;29722:56;;;;:::i;:::-;29706:72;;;;;:::i;:::-;;;29837:3;29830:4;29815:12;:19;;;;:::i;:::-;:25;;;;:::i;:::-;29797:43;;29882:1;29859:24;;29914:11;:16;29928:1;29926;:3;;;;:::i;:::-;29914:16;;;;;;;;;;;:26;;;29902:38;;29959:13;;;;;:::i;:::-;;;;29359:629;;;29316:672;28610:3;;;;;:::i;:::-;;;;28563:1436;;;;30018:15;30011:22;;;;;;;;28149:1892;;;:::o;16919:101::-;14154:13;:11;:13::i;:::-;17006:6:::1;16990:13;;:22;;;;;;;;;;;;;;;;;;16919:101:::0;:::o;18752:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16732:41::-;;;;:::o;18810:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15914:18::-;;;;;;;;;;;;;:::o;30049:468::-;14154:13;:11;:13::i;:::-;30143:1:::1;30133:7;:11;30125:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;30198:28;:26;:28::i;:::-;30254:4;30238:31;;:40;30270:7;30238:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;30290:13;30321:1;30307:11;;:15;;;;:::i;:::-;30290:33;;30356:52;;;;;;;;30367:15;30356:52;;;;30384:7;30356:52;;;;30393:14;;30356:52;;::::0;30335:11:::1;:18;30347:5;30335:18;;;;;;;;;;;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;30437:1;30420:14;:18;;;;30467:15;30450:14;:32;;;;30494:11;;:14;;;;;;;;;:::i;:::-;;;;;;30113:404;30049:468:::0;:::o;22218:3046::-;22319:7;22278:12;:24;22291:10;22278:24;;;;;;;;;;;;;;;:37;;;:48;;22270:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;22410:7;22381:5;;;;;;;;;;;:15;;;22397:8;;;;;;;;;;;22381:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;22373:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;22470:13;;;;;;;;;;;22469:14;22461:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;22562:4;22525:41;;:12;:24;22538:10;22525:24;;;;;;;;;;;;;;;:33;;;;;;;;;;;;:41;;;22517:50;;;;;;22580:20;22603:28;22620:10;22603:16;:28::i;:::-;22580:51;;22665:1;22650:12;:16;22646:63;;;22686:10;:8;:10::i;:::-;22646:63;22721:28;:26;:28::i;:::-;22762:22;22827:7;22787:12;:24;22800:10;22787:24;;;;;;;;;;;;;;;:37;;;:47;;;;:::i;:::-;22762:72;;22845:22;22882:23;22920:21;22979:8;;22962:14;:25;22958:1421;;;23021:12;:24;23034:10;23021:24;;;;;;;;;;;;;;;:37;;;23004:54;;23117:15;23079:12;:24;23092:10;23079:24;;;;;;;;;;;;;;;:35;;;:53;:109;;;;;23178:10;;23136:12;:24;23149:10;23136:24;;;;;;;;;;;;;;;:38;;;:52;23079:109;23075:393;;;23261:3;23244:14;23227;;:31;;;;:::i;:::-;:37;;;;:::i;:::-;23209:55;;23316:15;23299:14;:32;;;;:::i;:::-;23283:48;;23358:5;;;;;;;;;;;:18;;;23377:8;;;;;;;;;;;23387:10;23399:13;23358:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23350:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;23075:393;23527:15;23488:12;:24;23501:10;23488:24;;;;;;;;;;;;;;;:35;;;:54;23484:198;;23571:5;;;;;;;;;;;:18;;;23590:8;;;;;;;;;;;23600:10;23612:14;23571:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23563:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;23484:198;23738:1;23698:12;:24;23711:10;23698:24;;;;;;;;;;;;;;;:37;;:41;;;;23789:1;23754:12;:24;23767:10;23754:24;;;;;;;;;;;;;;;:32;;:36;;;;23846:1;23805:12;:24;23818:10;23805:24;;;;;;;;;;;;;;;:38;;:42;;;;23904:1;23862:12;:24;23875:10;23862:24;;;;;;;;;;;;;;;:39;;:43;;;;23959:1;23920:12;:24;23933:10;23920:24;;;;;;;;;;;;;;;:36;;:40;;;;24014:1;23975:12;:24;23988:10;23975:24;;;;;;;;;;;;;;;:36;;:40;;;;24068:1;24030:12;:24;24043:10;24030:24;;;;;;;;;;;;;;;:35;;:39;;;;24125:1;24084:12;:24;24097:10;24084:24;;;;;;;;;;;;;;;:38;;:42;;;;24184:1;24141:12;:24;24154:10;24141:24;;;;;;;;;;;;;;;:40;;:44;;;;24238:1;24200:12;:24;24213:10;24200:24;;;;;;;;;;;;;;;:35;;:39;;;;24290:5;24254:12;:24;24267:10;24254:24;;;;;;;;;;;;;;;:33;;;:41;;;;;;;;;;;;;;;;;;24328:14;24312:12;;:30;;;;;;;:::i;:::-;;;;;;;;24357:7;;:10;;;;;;;;;:::i;:::-;;;;;;22958:1421;24413:8;;24395:14;:26;24391:866;;24455:7;24438:24;;24521:15;24483:12;:24;24496:10;24483:24;;;;;;;;;;;;;;;:35;;;:53;:109;;;;;24582:10;;24540:12;:24;24553:10;24540:24;;;;;;;;;;;;;;;:38;;;:52;24483:109;24479:393;;;24665:3;24648:14;24631;;:31;;;;:::i;:::-;:37;;;;:::i;:::-;24613:55;;24720:15;24703:14;:32;;;;:::i;:::-;24687:48;;24762:5;;;;;;;;;;;:18;;;24781:8;;;;;;;;;;;24791:10;24803:13;24762:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24754:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;24479:393;24931:15;24892:12;:24;24905:10;24892:24;;;;;;;;;;;;;;;:35;;;:54;24888:198;;24975:5;;;;;;;;;;;:18;;;24994:8;;;;;;;;;;;25004:10;25016:14;24975:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24967:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24888:198;25102:26;:24;:26::i;:::-;25184:14;25143:12;:24;25156:10;25143:24;;;;;;;;;;;;;;;:37;;;:55;;;;;;;:::i;:::-;;;;;;;;25231:14;25215:12;;:30;;;;;;;:::i;:::-;;;;;;;;24391:866;22259:3005;;;;;22218:3046;:::o;16488:26::-;;;;:::o;16880:30::-;;;;:::o;14916:103::-;14154:13;:11;:13::i;:::-;14981:30:::1;15008:1;14981:18;:30::i;:::-;14916:103::o:0;16302:31::-;;;;:::o;17127:91::-;14154:13;:11;:13::i;:::-;17200:6:::1;17192:5;:14;;;;17127:91:::0;:::o;17325:::-;14154:13;:11;:13::i;:::-;17398:6:::1;17390:5;:14;;;;17325:91:::0;:::o;17865:103::-;14154:13;:11;:13::i;:::-;17948:9:::1;17937:8;:20;;;;17865:103:::0;:::o;14268:87::-;14314:7;14341:6;;;;;;;;;;;14334:13;;14268:87;:::o;16182:31::-;;;;:::o;18091:168::-;14154:13;:11;:13::i;:::-;18202::::1;18195:30;;;18226:10;18238:12;18195:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18091:168:::0;;:::o;20382:1828::-;20457:5;20440:22;;:13;;;;;;;;;;;:22;;;20432:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20495:19;20524:5;;;;;;;;;;;20517:23;;;20541:10;20517:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20495:57;;20588:7;20573:11;:22;;20565:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;20692:8;;20650:12;:24;20663:10;20650:24;;;;;;;;;;;;;;;:37;;;20640:7;:47;;;;:::i;:::-;20639:61;;20631:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;20755:28;:26;:28::i;:::-;20794:20;20817:28;20834:10;20817:16;:28::i;:::-;20794:51;;20879:1;20864:12;:16;20860:63;;;20900:10;:8;:10::i;:::-;20860:63;20935:5;;;;;;;;;;;:13;;;20957:4;20964:7;20935:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20983:5;;;;;;;;;;;:13;;;20997:8;;;;;;;;;;;21007:7;20983:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21026:5;;;;;;;;;;;:18;;;21045:10;21057:8;;;;;;;;;;;21067:7;21026:49;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21137:4;21100:41;;:12;:24;21113:10;21100:24;;;;;;;;;;;;;;;:33;;;;;;;;;;;;:41;;;21096:201;;;21158:26;:24;:26::i;:::-;21240:7;21199:12;:24;21212:10;21199:24;;;;;;;;;;;;;;;:37;;;:48;;;;;;;:::i;:::-;;;;;;;;21278:7;21262:12;;:23;;;;;;;:::i;:::-;;;;;;;;21096:201;21350:5;21313:42;;:12;:24;21326:10;21313:24;;;;;;;;;;;;;;;:33;;;;;;;;;;;;:42;;;21309:894;;;21372:18;21401:3;;;;;;;;;;;21393:22;;;21416:10;21393:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21372:55;;21483:10;;21442:12;:24;21455:10;21442:24;;;;;;;;;;;;;;;:38;;:51;;;;21564:10;;21546:15;:28;;;;:::i;:::-;21508:12;:24;21521:10;21508:24;;;;;;;;;;;;;;;:35;;:66;;;;21630:7;21589:12;:24;21602:10;21589:24;;;;;;;;;;;;;;;:37;;;:48;;;;;;;:::i;:::-;;;;;;;;21691:15;21652:12;:24;21665:10;21652:24;;;;;;;;;;;;;;;:36;;:54;;;;21757:4;21721:12;:24;21734:10;21721:24;;;;;;;;;;;;;;;:33;;;:40;;;;;;;;;;;;;;;;;;21818:1;21776:12;:24;21789:10;21776:24;;;;;;;;;;;;;;;:39;;:43;;;;21869:10;21834:12;:24;21847:10;21834:24;;;;;;;;;;;;;;;:32;;:45;;;;21935:15;21894:12;:24;21907:10;21894:24;;;;;;;;;;;;;;;:38;;:56;;;;22003:1;21965:12;:24;21978:10;21965:24;;;;;;;;;;;;;;;:35;;:39;;;;22062:11;;22019:12;:24;22032:10;22019:24;;;;;;;;;;;;;;;:40;;:54;;;;22090:22;:20;:22::i;:::-;22153:7;22137:12;;:23;;;;;;;:::i;:::-;;;;;;;;22186:1;22175:7;;:12;;;;;;;:::i;:::-;;;;;;;;21357:846;21309:894;20421:1789;;20382:1828;:::o;16446:25::-;;;;:::o;25272:2322::-;25362:11;;25319:12;:24;25332:10;25319:24;;;;;;;;;;;;;;;:40;;;:54;25311:63;;;;;;25430:4;25393:41;;:12;:24;25406:10;25393:24;;;;;;;;;;;;;;;:33;;;;;;;;;;;;:41;;;25385:50;;;;;;25446:22;:20;:22::i;:::-;25493:20;25539:9;25551:12;:24;25564:10;25551:24;;;;;;;;;;;;;;;:40;;;25539:52;;25534:1582;25597:11;;25593:1;:15;25534:1582;;;25682:1;25639:12;:24;25652:10;25639:24;;;;;;;;;;;;;;;:39;;;:44;25635:646;;;25708:12;25752;:24;25765:10;25752:24;;;;;;;;;;;;;;;:38;;;25723:11;:16;25737:1;25735;:3;;;;:::i;:::-;25723:16;;;;;;;;;;;:26;;;:67;;;;:::i;:::-;25708:82;;25813:28;25852:12;:24;25865:10;25852:24;;;;;;;;;;;;;;;:37;;;25845:4;:44;;;;:::i;:::-;25813:77;;25913:27;25978:11;:16;25992:1;25990;:3;;;;:::i;:::-;25978:16;;;;;;;;;;;:31;;;25968:6;25945:20;:29;;;;:::i;:::-;25944:65;;;;:::i;:::-;25913:97;;26099:6;26072:11;:16;26086:1;26084;:3;;;;:::i;:::-;26072:16;;;;;;;;;;;:23;;;26050:19;:45;;;;:::i;:::-;26049:56;;;;:::i;:::-;26033:72;;;;;:::i;:::-;;;26169:11;:16;26183:1;26181;:3;;;;:::i;:::-;26169:16;;;;;;;;;;;:26;;;26128:12;:24;26141:10;26128:24;;;;;;;;;;;;;;;:38;;:67;;;;26218:12;:24;26231:10;26218:24;;;;;;;;;;;;;;;:40;;;:43;;;;;;;;;:::i;:::-;;;;;;25685:596;;;25635:646;26363:1;26321:12;:24;26334:10;26321:24;;;;;;;;;;;;;;;:39;;;:43;26317:778;;;26389:12;26433;:24;26446:10;26433:24;;;;;;;;;;;;;;;:38;;;26404:11;:16;26418:1;26416;:3;;;;:::i;:::-;26404:16;;;;;;;;;;;:26;;;:67;;;;:::i;:::-;26389:82;;26517:28;26598:12;:24;26611:10;26598:24;;;;;;;;;;;;;;;:39;;;26557:12;:24;26570:10;26557:24;;;;;;;;;;;;;;;:37;;;26550:4;:44;;;;:::i;:::-;26549:88;;;;:::i;:::-;26517:121;;26661:27;26726:11;:16;26740:1;26738;:3;;;;:::i;:::-;26726:16;;;;;;;;;;;:31;;;26716:6;26693:20;:29;;;;:::i;:::-;26692:65;;;;:::i;:::-;26661:97;;26847:6;26820:11;:16;26834:1;26832;:3;;;;:::i;:::-;26820:16;;;;;;;;;;;:23;;;26798:19;:45;;;;:::i;:::-;26797:56;;;;:::i;:::-;26781:72;;;;;:::i;:::-;;;26918:1;26876:12;:24;26889:10;26876:24;;;;;;;;;;;;;;;:39;;:43;;;;26983:11;:16;26997:1;26995;:3;;;;:::i;:::-;26983:16;;;;;;;;;;;:26;;;26942:12;:24;26955:10;26942:24;;;;;;;;;;;;;;;:38;;:67;;;;27032:12;:24;27045:10;27032:24;;;;;;;;;;;;;;;:40;;;:43;;;;;;;;;:::i;:::-;;;;;;26366:729;;;26317:778;25610:3;;;;;:::i;:::-;;;;25534:1582;;;;27128:23;27210:3;27170:12;:24;27183:10;27170:24;;;;;;;;;;;;;;;:36;;;27155:12;:51;;;;:::i;:::-;27154:59;;;;:::i;:::-;27128:85;;27232:10;27224:28;;:45;27253:15;27224:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27281:20;27319:15;27304:12;:30;;;;:::i;:::-;27281:53;;27366:1;27351:12;:16;27347:89;;;27392:8;;;;;;;;;;;27384:26;;:40;27411:12;27384:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27347:89;27495:15;27456:12;:24;27469:10;27456:24;;;;;;;;;;;;;;;:35;;;:54;;;;;;;:::i;:::-;;;;;;;;27537:15;27521:12;;:31;;;;;;;:::i;:::-;;;;;;;;27574:12;27563:7;;:23;;;;;;;:::i;:::-;;;;;;;;25299:2295;;;25272:2322::o;17028:91::-;14154:13;:11;:13::i;:::-;17101:6:::1;17093:5;:14;;;;17028:91:::0;:::o;27602:537::-;27663:7;27693:14;27718:3;;;;;;;;;;;27710:22;;;27733:4;27710:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27693:45;;27750:12;27794:1;27784:6;:11;:61;;;;;27835:10;;27799:12;:18;27812:4;27799:18;;;;;;;;;;;;;;;:32;;;:46;27784:61;27780:109;;;27871:5;;27864:12;;27780:109;27917:1;27907:6;:11;27903:59;;;27944:5;;27937:12;;27903:59;27990:1;27980:6;:11;27976:59;;;28017:5;;28010:12;;27976:59;28063:1;28053:6;:11;28049:59;;28090:5;;28083:12;;28049:59;28126:4;28119:11;;;;27602:537;;;:::o;16113:32::-;;;;;;;;;;;;;:::o;16689:34::-;;;;:::o;16584:26::-;;;;:::o;16782:47::-;;;;:::o;17424:111::-;14154:13;:11;:13::i;:::-;17512:11:::1;17499:10;:24;;;;17424:111:::0;:::o;16362:25::-;;;;:::o;16838:33::-;;;;:::o;17654:203::-;14154:13;:11;:13::i;:::-;17761:2:::1;17742:15;:21;;17734:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17831:15;17814:14;:32;;;;17654:203:::0;:::o;17976:107::-;14154:13;:11;:13::i;:::-;18035:7:::1;:5;:7::i;:::-;18027:25;;:48;18053:21;18027:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17976:107::o:0;16531:35::-;;;;:::o;17543:103::-;14154:13;:11;:13::i;:::-;17626:9:::1;17615:8;;:20;;;;;;;;;;;;;;;;;;17543:103:::0;:::o;15174:201::-;14154:13;:11;:13::i;:::-;15283:1:::1;15263:22;;:8;:22;;;;15255:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15339:28;15358:8;15339:18;:28::i;:::-;15174:201:::0;:::o;17226:91::-;14154:13;:11;:13::i;:::-;17299:6:::1;17291:5;:14;;;;17226:91:::0;:::o;16405:25::-;;;;:::o;15888:19::-;;;;;;;;;;;;;:::o;16243:26::-;;;;:::o;14433:132::-;14508:12;:10;:12::i;:::-;14497:23;;:7;:5;:7::i;:::-;:23;;;14489:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14433:132::o;19103:233::-;19161:14;19238:12;;19220:14;;19202:15;:32;;;;:::i;:::-;19201:49;;;;:::i;:::-;19191:59;;;;;:::i;:::-;;;19279:6;19261:14;;:24;;;;;;;:::i;:::-;;;;;;;;19313:15;19296:14;:32;;;;19150:186;19103:233::o;19344:328::-;19400:14;19500:12;:24;19513:10;19500:24;;;;;;;;;;;;;;;:37;;;19458:12;:24;19471:10;19458:24;;;;;;;;;;;;;;;:38;;;19440:15;:56;;;;:::i;:::-;19439:98;;;;:::i;:::-;19429:108;;;;;:::i;:::-;;;19591:6;19548:12;:24;19561:10;19548:24;;;;;;;;;;;;;;;:39;;;:49;;;;;;;:::i;:::-;;;;;;;;19649:15;19608:12;:24;19621:10;19608:24;;;;;;;;;;;;;;;:38;;:56;;;;19389:283;19344:328::o;15535:191::-;15609:16;15628:6;;;;;;;;;;;15609:25;;15654:8;15645:6;;:17;;;;;;;;;;;;;;;;;;15709:8;15678:40;;15699:8;15678:40;;;;;;;;;;;;15598:128;15535:191;:::o;19680:694::-;19776:3;;;;;;;;;;;19768:22;;;19791:10;19768:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19733:12;:24;19746:10;19733:24;;;;;;;;;;;;;;;:32;;:69;;;;19855:1;19819:12;:24;19832:10;19819:24;;;;;;;;;;;;;;;:32;;;:37;:93;;;;;19902:10;;19860:12;:24;19873:10;19860:24;;;;;;;;;;;;;;;:38;;;:52;19819:93;19815:171;;;19969:5;;19930:12;:24;19943:10;19930:24;;;;;;;;;;;;;;;:36;;:44;;;;19815:171;20038:1;20002:12;:24;20015:10;20002:24;;;;;;;;;;;;;;;:32;;;:37;19998:115;;;20096:5;;20057:12;:24;20070:10;20057:24;;;;;;;;;;;;;;;:36;;:44;;;;19998:115;20165:1;20129:12;:24;20142:10;20129:24;;;;;;;;;;;;;;;:32;;;:37;20125:115;;;20223:5;;20184:12;:24;20197:10;20184:24;;;;;;;;;;;;;;;:36;;:44;;;;20125:115;20292:1;20256:12;:24;20269:10;20256:24;;;;;;;;;;;;;;;:32;;;:37;20252:115;;20350:5;;20311:12;:24;20324:10;20311:24;;;;;;;;;;;;;;;:36;;:44;;;;20252:115;19680:694::o;12819:98::-;12872:7;12899:10;12892:17;;12819:98;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;152:133;;;;:::o;291:137::-;345:5;376:6;370:13;361:22;;392:30;416:5;392:30;:::i;:::-;291:137;;;;:::o;434:139::-;480:5;518:6;505:20;496:29;;534:33;561:5;534:33;:::i;:::-;434:139;;;;:::o;579:143::-;636:5;667:6;661:13;652:22;;683:33;710:5;683:33;:::i;:::-;579:143;;;;:::o;728:329::-;787:6;836:2;824:9;815:7;811:23;807:32;804:119;;;842:79;;:::i;:::-;804:119;962:1;987:53;1032:7;1023:6;1012:9;1008:22;987:53;:::i;:::-;977:63;;933:117;728:329;;;;:::o;1063:474::-;1131:6;1139;1188:2;1176:9;1167:7;1163:23;1159:32;1156:119;;;1194:79;;:::i;:::-;1156:119;1314:1;1339:53;1384:7;1375:6;1364:9;1360:22;1339:53;:::i;:::-;1329:63;;1285:117;1441:2;1467:53;1512:7;1503:6;1492:9;1488:22;1467:53;:::i;:::-;1457:63;;1412:118;1063:474;;;;;:::o;1543:323::-;1599:6;1648:2;1636:9;1627:7;1623:23;1619:32;1616:119;;;1654:79;;:::i;:::-;1616:119;1774:1;1799:50;1841:7;1832:6;1821:9;1817:22;1799:50;:::i;:::-;1789:60;;1745:114;1543:323;;;;:::o;1872:345::-;1939:6;1988:2;1976:9;1967:7;1963:23;1959:32;1956:119;;;1994:79;;:::i;:::-;1956:119;2114:1;2139:61;2192:7;2183:6;2172:9;2168:22;2139:61;:::i;:::-;2129:71;;2085:125;1872:345;;;;:::o;2223:329::-;2282:6;2331:2;2319:9;2310:7;2306:23;2302:32;2299:119;;;2337:79;;:::i;:::-;2299:119;2457:1;2482:53;2527:7;2518:6;2507:9;2503:22;2482:53;:::i;:::-;2472:63;;2428:117;2223:329;;;;:::o;2558:351::-;2628:6;2677:2;2665:9;2656:7;2652:23;2648:32;2645:119;;;2683:79;;:::i;:::-;2645:119;2803:1;2828:64;2884:7;2875:6;2864:9;2860:22;2828:64;:::i;:::-;2818:74;;2774:128;2558:351;;;;:::o;2915:118::-;3002:24;3020:5;3002:24;:::i;:::-;2997:3;2990:37;2915:118;;:::o;3039:109::-;3120:21;3135:5;3120:21;:::i;:::-;3115:3;3108:34;3039:109;;:::o;3154:159::-;3255:51;3300:5;3255:51;:::i;:::-;3250:3;3243:64;3154:159;;:::o;3319:161::-;3421:52;3467:5;3421:52;:::i;:::-;3416:3;3409:65;3319:161;;:::o;3486:366::-;3628:3;3649:67;3713:2;3708:3;3649:67;:::i;:::-;3642:74;;3725:93;3814:3;3725:93;:::i;:::-;3843:2;3838:3;3834:12;3827:19;;3486:366;;;:::o;3858:::-;4000:3;4021:67;4085:2;4080:3;4021:67;:::i;:::-;4014:74;;4097:93;4186:3;4097:93;:::i;:::-;4215:2;4210:3;4206:12;4199:19;;3858:366;;;:::o;4230:::-;4372:3;4393:67;4457:2;4452:3;4393:67;:::i;:::-;4386:74;;4469:93;4558:3;4469:93;:::i;:::-;4587:2;4582:3;4578:12;4571:19;;4230:366;;;:::o;4602:::-;4744:3;4765:67;4829:2;4824:3;4765:67;:::i;:::-;4758:74;;4841:93;4930:3;4841:93;:::i;:::-;4959:2;4954:3;4950:12;4943:19;;4602:366;;;:::o;4974:::-;5116:3;5137:67;5201:2;5196:3;5137:67;:::i;:::-;5130:74;;5213:93;5302:3;5213:93;:::i;:::-;5331:2;5326:3;5322:12;5315:19;;4974:366;;;:::o;5346:::-;5488:3;5509:67;5573:2;5568:3;5509:67;:::i;:::-;5502:74;;5585:93;5674:3;5585:93;:::i;:::-;5703:2;5698:3;5694:12;5687:19;;5346:366;;;:::o;5718:::-;5860:3;5881:67;5945:2;5940:3;5881:67;:::i;:::-;5874:74;;5957:93;6046:3;5957:93;:::i;:::-;6075:2;6070:3;6066:12;6059:19;;5718:366;;;:::o;6090:::-;6232:3;6253:67;6317:2;6312:3;6253:67;:::i;:::-;6246:74;;6329:93;6418:3;6329:93;:::i;:::-;6447:2;6442:3;6438:12;6431:19;;6090:366;;;:::o;6462:::-;6604:3;6625:67;6689:2;6684:3;6625:67;:::i;:::-;6618:74;;6701:93;6790:3;6701:93;:::i;:::-;6819:2;6814:3;6810:12;6803:19;;6462:366;;;:::o;6834:::-;6976:3;6997:67;7061:2;7056:3;6997:67;:::i;:::-;6990:74;;7073:93;7162:3;7073:93;:::i;:::-;7191:2;7186:3;7182:12;7175:19;;6834:366;;;:::o;7206:::-;7348:3;7369:67;7433:2;7428:3;7369:67;:::i;:::-;7362:74;;7445:93;7534:3;7445:93;:::i;:::-;7563:2;7558:3;7554:12;7547:19;;7206:366;;;:::o;7578:118::-;7665:24;7683:5;7665:24;:::i;:::-;7660:3;7653:37;7578:118;;:::o;7702:222::-;7795:4;7833:2;7822:9;7818:18;7810:26;;7846:71;7914:1;7903:9;7899:17;7890:6;7846:71;:::i;:::-;7702:222;;;;:::o;7930:442::-;8079:4;8117:2;8106:9;8102:18;8094:26;;8130:71;8198:1;8187:9;8183:17;8174:6;8130:71;:::i;:::-;8211:72;8279:2;8268:9;8264:18;8255:6;8211:72;:::i;:::-;8293;8361:2;8350:9;8346:18;8337:6;8293:72;:::i;:::-;7930:442;;;;;;:::o;8378:332::-;8499:4;8537:2;8526:9;8522:18;8514:26;;8550:71;8618:1;8607:9;8603:17;8594:6;8550:71;:::i;:::-;8631:72;8699:2;8688:9;8684:18;8675:6;8631:72;:::i;:::-;8378:332;;;;;:::o;8716:210::-;8803:4;8841:2;8830:9;8826:18;8818:26;;8854:65;8916:1;8905:9;8901:17;8892:6;8854:65;:::i;:::-;8716:210;;;;:::o;8932:250::-;9039:4;9077:2;9066:9;9062:18;9054:26;;9090:85;9172:1;9161:9;9157:17;9148:6;9090:85;:::i;:::-;8932:250;;;;:::o;9188:252::-;9296:4;9334:2;9323:9;9319:18;9311:26;;9347:86;9430:1;9419:9;9415:17;9406:6;9347:86;:::i;:::-;9188:252;;;;:::o;9446:419::-;9612:4;9650:2;9639:9;9635:18;9627:26;;9699:9;9693:4;9689:20;9685:1;9674:9;9670:17;9663:47;9727:131;9853:4;9727:131;:::i;:::-;9719:139;;9446:419;;;:::o;9871:::-;10037:4;10075:2;10064:9;10060:18;10052:26;;10124:9;10118:4;10114:20;10110:1;10099:9;10095:17;10088:47;10152:131;10278:4;10152:131;:::i;:::-;10144:139;;9871:419;;;:::o;10296:::-;10462:4;10500:2;10489:9;10485:18;10477:26;;10549:9;10543:4;10539:20;10535:1;10524:9;10520:17;10513:47;10577:131;10703:4;10577:131;:::i;:::-;10569:139;;10296:419;;;:::o;10721:::-;10887:4;10925:2;10914:9;10910:18;10902:26;;10974:9;10968:4;10964:20;10960:1;10949:9;10945:17;10938:47;11002:131;11128:4;11002:131;:::i;:::-;10994:139;;10721:419;;;:::o;11146:::-;11312:4;11350:2;11339:9;11335:18;11327:26;;11399:9;11393:4;11389:20;11385:1;11374:9;11370:17;11363:47;11427:131;11553:4;11427:131;:::i;:::-;11419:139;;11146:419;;;:::o;11571:::-;11737:4;11775:2;11764:9;11760:18;11752:26;;11824:9;11818:4;11814:20;11810:1;11799:9;11795:17;11788:47;11852:131;11978:4;11852:131;:::i;:::-;11844:139;;11571:419;;;:::o;11996:::-;12162:4;12200:2;12189:9;12185:18;12177:26;;12249:9;12243:4;12239:20;12235:1;12224:9;12220:17;12213:47;12277:131;12403:4;12277:131;:::i;:::-;12269:139;;11996:419;;;:::o;12421:::-;12587:4;12625:2;12614:9;12610:18;12602:26;;12674:9;12668:4;12664:20;12660:1;12649:9;12645:17;12638:47;12702:131;12828:4;12702:131;:::i;:::-;12694:139;;12421:419;;;:::o;12846:::-;13012:4;13050:2;13039:9;13035:18;13027:26;;13099:9;13093:4;13089:20;13085:1;13074:9;13070:17;13063:47;13127:131;13253:4;13127:131;:::i;:::-;13119:139;;12846:419;;;:::o;13271:::-;13437:4;13475:2;13464:9;13460:18;13452:26;;13524:9;13518:4;13514:20;13510:1;13499:9;13495:17;13488:47;13552:131;13678:4;13552:131;:::i;:::-;13544:139;;13271:419;;;:::o;13696:::-;13862:4;13900:2;13889:9;13885:18;13877:26;;13949:9;13943:4;13939:20;13935:1;13924:9;13920:17;13913:47;13977:131;14103:4;13977:131;:::i;:::-;13969:139;;13696:419;;;:::o;14121:222::-;14214:4;14252:2;14241:9;14237:18;14229:26;;14265:71;14333:1;14322:9;14318:17;14309:6;14265:71;:::i;:::-;14121:222;;;;:::o;14349:442::-;14498:4;14536:2;14525:9;14521:18;14513:26;;14549:71;14617:1;14606:9;14602:17;14593:6;14549:71;:::i;:::-;14630:72;14698:2;14687:9;14683:18;14674:6;14630:72;:::i;:::-;14712;14780:2;14769:9;14765:18;14756:6;14712:72;:::i;:::-;14349:442;;;;;;:::o;14797:1320::-;15165:4;15203:3;15192:9;15188:19;15180:27;;15217:71;15285:1;15274:9;15270:17;15261:6;15217:71;:::i;:::-;15298:72;15366:2;15355:9;15351:18;15342:6;15298:72;:::i;:::-;15380;15448:2;15437:9;15433:18;15424:6;15380:72;:::i;:::-;15462;15530:2;15519:9;15515:18;15506:6;15462:72;:::i;:::-;15544:73;15612:3;15601:9;15597:19;15588:6;15544:73;:::i;:::-;15627;15695:3;15684:9;15680:19;15671:6;15627:73;:::i;:::-;15710;15778:3;15767:9;15763:19;15754:6;15710:73;:::i;:::-;15793;15861:3;15850:9;15846:19;15837:6;15793:73;:::i;:::-;15876;15944:3;15933:9;15929:19;15920:6;15876:73;:::i;:::-;15959;16027:3;16016:9;16012:19;16003:6;15959:73;:::i;:::-;16042:68;16105:3;16094:9;16090:19;16080:7;16042:68;:::i;:::-;14797:1320;;;;;;;;;;;;;;:::o;16204:169::-;16288:11;16322:6;16317:3;16310:19;16362:4;16357:3;16353:14;16338:29;;16204:169;;;;:::o;16379:305::-;16419:3;16438:20;16456:1;16438:20;:::i;:::-;16433:25;;16472:20;16490:1;16472:20;:::i;:::-;16467:25;;16626:1;16558:66;16554:74;16551:1;16548:81;16545:107;;;16632:18;;:::i;:::-;16545:107;16676:1;16673;16669:9;16662:16;;16379:305;;;;:::o;16690:185::-;16730:1;16747:20;16765:1;16747:20;:::i;:::-;16742:25;;16781:20;16799:1;16781:20;:::i;:::-;16776:25;;16820:1;16810:35;;16825:18;;:::i;:::-;16810:35;16867:1;16864;16860:9;16855:14;;16690:185;;;;:::o;16881:348::-;16921:7;16944:20;16962:1;16944:20;:::i;:::-;16939:25;;16978:20;16996:1;16978:20;:::i;:::-;16973:25;;17166:1;17098:66;17094:74;17091:1;17088:81;17083:1;17076:9;17069:17;17065:105;17062:131;;;17173:18;;:::i;:::-;17062:131;17221:1;17218;17214:9;17203:20;;16881:348;;;;:::o;17235:191::-;17275:4;17295:20;17313:1;17295:20;:::i;:::-;17290:25;;17329:20;17347:1;17329:20;:::i;:::-;17324:25;;17368:1;17365;17362:8;17359:34;;;17373:18;;:::i;:::-;17359:34;17418:1;17415;17411:9;17403:17;;17235:191;;;;:::o;17432:96::-;17469:7;17498:24;17516:5;17498:24;:::i;:::-;17487:35;;17432:96;;;:::o;17534:90::-;17568:7;17611:5;17604:13;17597:21;17586:32;;17534:90;;;:::o;17630:126::-;17667:7;17707:42;17700:5;17696:54;17685:65;;17630:126;;;:::o;17762:77::-;17799:7;17828:5;17817:16;;17762:77;;;:::o;17845:140::-;17909:9;17942:37;17973:5;17942:37;:::i;:::-;17929:50;;17845:140;;;:::o;17991:141::-;18056:9;18089:37;18120:5;18089:37;:::i;:::-;18076:50;;17991:141;;;:::o;18138:126::-;18188:9;18221:37;18252:5;18221:37;:::i;:::-;18208:50;;18138:126;;;:::o;18270:113::-;18320:9;18353:24;18371:5;18353:24;:::i;:::-;18340:37;;18270:113;;;:::o;18389:171::-;18428:3;18451:24;18469:5;18451:24;:::i;:::-;18442:33;;18497:4;18490:5;18487:15;18484:41;;;18505:18;;:::i;:::-;18484:41;18552:1;18545:5;18541:13;18534:20;;18389:171;;;:::o;18566:233::-;18605:3;18628:24;18646:5;18628:24;:::i;:::-;18619:33;;18674:66;18667:5;18664:77;18661:103;;;18744:18;;:::i;:::-;18661:103;18791:1;18784:5;18780:13;18773:20;;18566:233;;;:::o;18805:180::-;18853:77;18850:1;18843:88;18950:4;18947:1;18940:15;18974:4;18971:1;18964:15;18991:180;19039:77;19036:1;19029:88;19136:4;19133:1;19126:15;19160:4;19157:1;19150:15;19300:117;19409:1;19406;19399:12;19423:225;19563:34;19559:1;19551:6;19547:14;19540:58;19632:8;19627:2;19619:6;19615:15;19608:33;19423:225;:::o;19654:224::-;19794:34;19790:1;19782:6;19778:14;19771:58;19863:7;19858:2;19850:6;19846:15;19839:32;19654:224;:::o;19884:180::-;20024:32;20020:1;20012:6;20008:14;20001:56;19884:180;:::o;20070:179::-;20210:31;20206:1;20198:6;20194:14;20187:55;20070:179;:::o;20255:178::-;20395:30;20391:1;20383:6;20379:14;20372:54;20255:178;:::o;20439:221::-;20579:34;20575:1;20567:6;20563:14;20556:58;20648:4;20643:2;20635:6;20631:15;20624:29;20439:221;:::o;20666:181::-;20806:33;20802:1;20794:6;20790:14;20783:57;20666:181;:::o;20853:182::-;20993:34;20989:1;20981:6;20977:14;20970:58;20853:182;:::o;21041:170::-;21181:22;21177:1;21169:6;21165:14;21158:46;21041:170;:::o;21217:167::-;21357:19;21353:1;21345:6;21341:14;21334:43;21217:167;:::o;21390:::-;21530:19;21526:1;21518:6;21514:14;21507:43;21390:167;:::o;21563:122::-;21636:24;21654:5;21636:24;:::i;:::-;21629:5;21626:35;21616:63;;21675:1;21672;21665:12;21616:63;21563:122;:::o;21691:116::-;21761:21;21776:5;21761:21;:::i;:::-;21754:5;21751:32;21741:60;;21797:1;21794;21787:12;21741:60;21691:116;:::o;21813:122::-;21886:24;21904:5;21886:24;:::i;:::-;21879:5;21876:35;21866:63;;21925:1;21922;21915:12;21866:63;21813:122;:::o
Swarm Source
ipfs://dbedd15994e80f90091206990dc3b7d2e55203183463a174cce9f1907ee904d9
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.