More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 643 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 18732532 | 233 days ago | IN | 0 ETH | 0.00215744 | ||||
Withdraw | 18732479 | 233 days ago | IN | 0 ETH | 0.0021927 | ||||
Withdraw | 18133040 | 317 days ago | IN | 0 ETH | 0.00083843 | ||||
Buy | 15559996 | 678 days ago | IN | 0.00198849 ETH | 0.00009407 | ||||
Withdraw | 15430197 | 698 days ago | IN | 0 ETH | 0.00045337 | ||||
Withdraw | 15395617 | 704 days ago | IN | 0 ETH | 0.00059494 | ||||
Withdraw | 15372543 | 707 days ago | IN | 0 ETH | 0.000462 | ||||
Withdraw | 15367040 | 708 days ago | IN | 0 ETH | 0.00074916 | ||||
Withdraw | 15338928 | 713 days ago | IN | 0 ETH | 0.00034947 | ||||
Withdraw | 15272611 | 723 days ago | IN | 0 ETH | 0.00062191 | ||||
Withdraw | 14655728 | 823 days ago | IN | 0 ETH | 0.00487864 | ||||
Buy | 14473824 | 852 days ago | IN | 0.000035 ETH | 0.0020974 | ||||
Buy | 14429252 | 859 days ago | IN | 0.000069 ETH | 0.00165541 | ||||
Buy | 14336048 | 873 days ago | IN | 0.0007 ETH | 0.00315263 | ||||
Buy | 14329757 | 874 days ago | IN | 0.000453 ETH | 0.00453266 | ||||
Buy | 14288198 | 881 days ago | IN | 0.11 ETH | 0.00134687 | ||||
Buy | 14279569 | 882 days ago | IN | 0.01326695 ETH | 0.00101129 | ||||
Buy | 14278237 | 882 days ago | IN | 0.009833 ETH | 0.00618786 | ||||
Buy | 14262285 | 885 days ago | IN | 0.01 ETH | 0.00518689 | ||||
Buy | 14261801 | 885 days ago | IN | 0.024 ETH | 0.0032358 | ||||
Buy | 14261795 | 885 days ago | IN | 0.03 ETH | 0.00322804 | ||||
Buy | 14257933 | 885 days ago | IN | 0.065 ETH | 0.00840539 | ||||
Buy | 14255511 | 886 days ago | IN | 0.00033669 ETH | 0.00383611 | ||||
Buyforstakingwit... | 14254354 | 886 days ago | IN | 0.114466 ETH | 0.01050627 | ||||
Buy | 14253712 | 886 days ago | IN | 0.022868 ETH | 0.00860783 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
14473824 | 852 days ago | 0.000035 ETH | ||||
14429252 | 859 days ago | 0.000069 ETH | ||||
14336048 | 873 days ago | 0.0007 ETH | ||||
14329757 | 874 days ago | 0.000453 ETH | ||||
14278237 | 882 days ago | 0.009833 ETH | ||||
14262285 | 885 days ago | 0.01 ETH | ||||
14261801 | 885 days ago | 0.024 ETH | ||||
14261795 | 885 days ago | 0.03 ETH | ||||
14257933 | 885 days ago | 0.065 ETH | ||||
14255511 | 886 days ago | 0.00033669 ETH | ||||
14254354 | 886 days ago | 0.114466 ETH | ||||
14253712 | 886 days ago | 0.022868 ETH | ||||
14246119 | 887 days ago | 0.172616 ETH | ||||
14244519 | 887 days ago | 0.03405262 ETH | ||||
14238547 | 888 days ago | 0.120192 ETH | ||||
14233131 | 889 days ago | 0.11 ETH | ||||
14224797 | 890 days ago | 0.02754809 ETH | ||||
14217638 | 892 days ago | 0.024638 ETH | ||||
14217464 | 892 days ago | 0.0135 ETH | ||||
14216820 | 892 days ago | 0.035071 ETH | ||||
14215020 | 892 days ago | 0.11 ETH | ||||
14211138 | 893 days ago | 0.052519 ETH | ||||
14208631 | 893 days ago | 0.013392 ETH | ||||
14204067 | 894 days ago | 0.34297 ETH | ||||
14200295 | 894 days ago | 0.03058571 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
Staking
Compiler Version
v0.8.3+commit.8d00100c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-24 */ /** *Submitted for verification at Etherscan.io on 2021-06-13 */ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /* * @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 GSN 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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () { } function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } //ownerable 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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { 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 onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract Staking is Ownable{ using SafeMath for uint256; using SafeERC20 for IERC20; event Withdraw(address a,uint256 amount); event Stake(address a,uint256 amount,uint256 unlocktime); struct staker{ uint256 amount; uint256 lockedtime; uint256 rate; } mapping (address => staker) public _stakers; //staking steps uint256[] private times; uint256[] private rates; //locked balance in contract uint256 public lockedBalance; //buyforstaking IERC20 public usdt = IERC20 (0xdAC17F958D2ee523a2206206994597C13D831ec7); IERC20 public weth =IERC20 (0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); IERC20 public atari = IERC20 (0xdacD69347dE42baBfAEcD09dC88958378780FB62); address private pairAtariEth = 0xc4d9102e36c5063b98010A03C1F7C8bD44c32A00; address public pairEthUsdt = 0x0d4a11d5EEaaC28EC3F61d100daF4d40471f1852; constructor(){ times.push(2592000); times.push(7776000); times.push(15552000); times.push(31104000); rates.push(1); rates.push(5); rates.push(12); rates.push(30); } function stake(uint256 amount,uint256 stakestep) external { require(_stakers[msg.sender].amount==0,"already stake exist"); require(amount!=0 ,"amount must not 0"); require(times[stakestep]!=0,"lockedtime must not 0"); atari.transferFrom(msg.sender,address(this),amount); uint256 lockBalance=amount.mul(rates[stakestep].add(100)).div(100); lockedBalance=lockedBalance.add(lockBalance); require(lockedBalance<atari.balanceOf(address(this)),"Stake : staking is full"); _stakers[msg.sender]= staker(lockBalance,block.timestamp.add(times[stakestep]),rates[stakestep]); emit Stake(msg.sender,lockBalance,block.timestamp.add(times[stakestep])); } function withdraw() external { require(_stakers[msg.sender].amount>0,"there is no staked amount"); require(_stakers[msg.sender].lockedtime<block.timestamp,"not ready to withdraw"); lockedBalance=lockedBalance.sub(_stakers[msg.sender].amount); atari.transfer(msg.sender,_stakers[msg.sender].amount); _stakers[msg.sender]=staker(0,0,0); } function getlocktime(address a)external view returns (uint256){ if(block.timestamp>_stakers[a].lockedtime) return 0; return _stakers[a].lockedtime.sub(block.timestamp); } function getamount(address a)external view returns(uint256){ return _stakers[a].amount; } function getTotoalAmount() external view returns(uint256){ return atari.balanceOf(address(this)); } //for Owner function withdrawOwner(uint256 amount) external onlyOwner{ require(amount<atari.balanceOf(address(this)).sub(lockedBalance)); atari.transfer(_msgSender(),amount); } function withdrawOwnerETH(uint256 amount) external payable onlyOwner{ require(address(this).balance>amount); _msgSender().transfer(amount); } function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) { require(amountIn > 0, 'Uniswap: INSUFFICIENT_OUTPUT_AMOUNT'); require(reserveIn > 0 && reserveOut > 0, 'Uniswap: INSUFFICIENT_LIQUIDITY'); uint numerator = amountIn.mul(reserveOut); uint denominator = reserveIn.add(amountIn); amountOut = numerator / denominator; } function tokenPriceOut(uint256 amountin) public view returns(uint256){ uint256 ethAmount = weth.balanceOf(pairAtariEth); uint256 atariAmount = atari.balanceOf(pairAtariEth); return getAmountOut(amountin,ethAmount,atariAmount); } function tokenPriceOutUsdt(uint256 amountin) public view returns(uint256){ //get eth amount with usdt amount uint256 ethAmount = weth.balanceOf(pairEthUsdt); uint256 usdtAmount = usdt.balanceOf(pairEthUsdt); uint256 amountin1 = getAmountOut(amountin,usdtAmount,ethAmount); uint256 ethAmount1 = weth.balanceOf(pairAtariEth); uint256 atariAmount = atari.balanceOf(pairAtariEth); return getAmountOut(amountin1,ethAmount1,atariAmount); } function buyforstakingwithexactEHTforToken(uint256 stakestep) external payable { uint256 tokenAmount=tokenPriceOut(msg.value.mul(100).div(100-rates[stakestep])); lockedBalance=lockedBalance.add(tokenAmount); require(lockedBalance<atari.balanceOf(address(this)),"Stake : staking is full"); _stakers[msg.sender]=staker(tokenAmount,block.timestamp.add(times[stakestep]),rates[stakestep]); payable(owner()).transfer(msg.value); emit Stake(msg.sender,tokenAmount,block.timestamp.add(times[stakestep])); } function buyforstakingwithexactUsdtforToken(uint256 amount, uint256 stakestep) external { uint256 tokenAmount=tokenPriceOutUsdt(amount.mul(100).div(100-rates[stakestep])); usdt.safeTransferFrom(msg.sender,owner(),amount); lockedBalance=lockedBalance.add(tokenAmount); require(lockedBalance<atari.balanceOf(address(this)),"Stake : staking is full"); _stakers[msg.sender]=staker(tokenAmount,block.timestamp.add(times[stakestep]),rates[stakestep]); emit Stake(msg.sender,tokenAmount,block.timestamp.add(times[stakestep])); } function buy() external payable { uint256 tokenAmount=tokenPriceOut(msg.value); require(atari.balanceOf(address(this)).sub(lockedBalance)>tokenAmount, "stake: atari balance not enough"); atari.transfer(msg.sender,tokenAmount); payable(owner()).transfer(msg.value); } function buyforUsdt(uint256 amount) external { uint256 tokenAmount=tokenPriceOutUsdt(amount); require(atari.balanceOf(address(this)).sub(lockedBalance)>tokenAmount, "stake: atari balance not enough"); atari.transfer(msg.sender,tokenAmount); usdt.safeTransferFrom(msg.sender,owner(),amount); } // function buyforstakingwithEHTforexactToken(uint256 amountOut,uint256 stakestep) external payable { // uint256 ETHAmount=tokenPriceIn(amountOut).mul(100-rates[stakestep]).div(100); // require(ETHAmount==msg.value,"buyforstaking : wrong ETH amount"); // lockedBalance=lockedBalance.add(amountOut); // _stakers[msg.sender]=staker(amountOut,block.timestamp.add(times[stakestep]),rates[stakestep]); // emit Stake(msg.sender,amountOut,block.timestamp.add(times[stakestep])); // } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"a","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlocktime","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"a","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_stakers","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lockedtime","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"atari","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyforUsdt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakestep","type":"uint256"}],"name":"buyforstakingwithexactEHTforToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stakestep","type":"uint256"}],"name":"buyforstakingwithexactUsdtforToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTotoalAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"getamount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"getlocktime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockedBalance","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":"pairEthUsdt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stakestep","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountin","type":"uint256"}],"name":"tokenPriceOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountin","type":"uint256"}],"name":"tokenPriceOutUsdt","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":[],"name":"usdt","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawOwnerETH","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405273dac17f958d2ee523a2206206994597c13d831ec7600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dacd69347de42babfaecd09dc88958378780fb62600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c4d9102e36c5063b98010a03c1f7c8bd44c32a00600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730d4a11d5eeaac28ec3f61d100daf4d40471f1852600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001ba57600080fd5b506000620001cd620003ca60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600262278d00908060018154018082558091505060019003906000526020600020016000909190919091505560026276a7009080600181540180825580915050600190039060005260206000200160009091909190915055600262ed4e00908060018154018082558091505060019003906000526020600020016000909190919091505560026301da9c0090806001815401808255809150506001900390600052602060002001600090919091909150556003600190806001815401808255809150506001900390600052602060002001600090919091909150556003600590806001815401808255809150506001900390600052602060002001600090919091909150556003600c90806001815401808255809150506001900390600052602060002001600090919091909150556003601e9080600181540180825580915050600190039060005260206000200160009091909190915055620003d2565b600033905090565b6139f380620003e26000396000f3fe6080604052600436106101355760003560e01c80637b0472f0116100ab578063a1026d161161006f578063a1026d16146103c2578063a6f2ae3a146103ff578063b4cef28d14610409578063dacb4c6114610446578063e6158ce114610471578063f2fde38b146104ae57610135565b80637b0472f0146102dd5780637b80889b146103065780638a14a3b7146103315780638da5cb5b1461035a57806392eafd311461038557610135565b8063568cfe9a116100fd578063568cfe9a146101ee5780636abd26a7146102195780636ef98b2114610235578063715018a61461025e57806372c20de31461027557806375e032f41461029e57610135565b80632f48ab7d1461013a578063388262e1146101655780633ccfd60b146101905780633fc8cef3146101a757806345972f36146101d2575b600080fd5b34801561014657600080fd5b5061014f6104d7565b60405161015c9190613110565b60405180910390f35b34801561017157600080fd5b5061017a6104fd565b6040516101879190613035565b60405180910390f35b34801561019c57600080fd5b506101a5610523565b005b3480156101b357600080fd5b506101bc6107fb565b6040516101c99190613110565b60405180910390f35b6101ec60048036038101906101e79190612cba565b610821565b005b3480156101fa57600080fd5b50610203610913565b604051610210919061334d565b60405180910390f35b610233600480360381019061022e9190612cba565b6109c5565b005b34801561024157600080fd5b5061025c60048036038101906102579190612cba565b610d48565b005b34801561026a57600080fd5b50610273610f61565b005b34801561028157600080fd5b5061029c60048036038101906102979190612cba565b6110b4565b005b3480156102aa57600080fd5b506102c560048036038101906102c09190612c68565b6112cb565b6040516102d493929190613368565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff9190612d0c565b6112f5565b005b34801561031257600080fd5b5061031b61182d565b604051610328919061334d565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190612d0c565b611833565b005b34801561036657600080fd5b5061036f611bbf565b60405161037c9190613035565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a79190612cba565b611be8565b6040516103b9919061334d565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190612c68565b611f53565b6040516103f6919061334d565b60405180910390f35b610407612005565b005b34801561041557600080fd5b50610430600480360381019061042b9190612c68565b612213565b60405161043d919061334d565b60405180910390f35b34801561045257600080fd5b5061045b61225f565b6040516104689190613110565b60405180910390f35b34801561047d57600080fd5b5061049860048036038101906104939190612cba565b612285565b6040516104a5919061334d565b60405180910390f35b3480156104ba57600080fd5b506104d560048036038101906104d09190612c68565b61243c565b005b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154116105a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059f906131ed565b60405180910390fd5b42600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101541061062c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106239061332d565b60405180910390fd5b610683600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546004546124dd90919063ffffffff16565b600481905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546040518363ffffffff1660e01b81526004016107289291906130b0565b602060405180830381600087803b15801561074257600080fd5b505af1158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190612c91565b50604051806060016040528060008152602001600081526020016000815250600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610829612527565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ad9061326d565b60405180910390fd5b8047116108c257600080fd5b6108ca612527565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561090f573d6000803e3d6000fd5b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109709190613035565b60206040518083038186803b15801561098857600080fd5b505afa15801561099c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c09190612ce3565b905090565b6000610a45610a4060038481548110610a07577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546064610a1e91906134b2565b610a3260643461252f90919063ffffffff16565b6125aa90919063ffffffff16565b612285565b9050610a5c816004546125f490919063ffffffff16565b600481905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610abd9190613035565b60206040518083038186803b158015610ad557600080fd5b505afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0d9190612ce3565b60045410610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b479061328d565b60405180910390fd5b6040518060600160405280828152602001610bb860028581548110610b9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154426125f490919063ffffffff16565b815260200160038481548110610bf7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154815250600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050610c6d611bbf565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610cb2573d6000803e3d6000fd5b507f5af417134f72a9d41143ace85b0a26dce6f550f894f2cbc1eeee8810603d91b63382610d2d60028681548110610d13577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154426125f490919063ffffffff16565b604051610d3c939291906130d9565b60405180910390a15050565b610d50612527565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd49061326d565b60405180910390fd5b610e9c600454600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e3e9190613035565b60206040518083038186803b158015610e5657600080fd5b505afa158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e9190612ce3565b6124dd90919063ffffffff16565b8110610ea757600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610eed612527565b836040518363ffffffff1660e01b8152600401610f0b929190613050565b602060405180830381600087803b158015610f2557600080fd5b505af1158015610f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5d9190612c91565b5050565b610f69612527565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed9061326d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006110bf82611be8565b905080611181600454600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111239190613035565b60206040518083038186803b15801561113b57600080fd5b505afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111739190612ce3565b6124dd90919063ffffffff16565b116111c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b89061314d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161121e9291906130b0565b602060405180830381600087803b15801561123857600080fd5b505af115801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190612c91565b506112c73361127d611bbf565b84600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612652909392919063ffffffff16565b5050565b60016020528060005260406000206000915090508060000154908060010154908060020154905083565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541461137a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113719061320d565b60405180910390fd5b60008214156113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b5906131ad565b60405180910390fd5b6000600282815481106113fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001541415611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d9061324d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016114a593929190613079565b602060405180830381600087803b1580156114bf57600080fd5b505af11580156114d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f79190612c91565b506000611577606461156961155a606460038781548110611541577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546125f490919063ffffffff16565b8661252f90919063ffffffff16565b6125aa90919063ffffffff16565b905061158e816004546125f490919063ffffffff16565b600481905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115ef9190613035565b60206040518083038186803b15801561160757600080fd5b505afa15801561161b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163f9190612ce3565b60045410611682576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116799061328d565b60405180910390fd5b60405180606001604052808281526020016116ea600285815481106116d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154426125f490919063ffffffff16565b815260200160038481548110611729577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154815250600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050507f5af417134f72a9d41143ace85b0a26dce6f550f894f2cbc1eeee8810603d91b63382611811600286815481106117f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154426125f490919063ffffffff16565b604051611820939291906130d9565b60405180910390a1505050565b60045481565b60006118b36118ae60038481548110611875577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154606461188c91906134b2565b6118a060648761252f90919063ffffffff16565b6125aa90919063ffffffff16565b611be8565b905061190b336118c1611bbf565b85600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612652909392919063ffffffff16565b611920816004546125f490919063ffffffff16565b600481905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119819190613035565b60206040518083038186803b15801561199957600080fd5b505afa1580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d19190612ce3565b60045410611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b9061328d565b60405180910390fd5b6040518060600160405280828152602001611a7c60028581548110611a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154426125f490919063ffffffff16565b815260200160038481548110611abb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154815250600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050507f5af417134f72a9d41143ace85b0a26dce6f550f894f2cbc1eeee8810603d91b63382611ba360028681548110611b89577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154426125f490919063ffffffff16565b604051611bb2939291906130d9565b60405180910390a1505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611c689190613035565b60206040518083038186803b158015611c8057600080fd5b505afa158015611c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb89190612ce3565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611d399190613035565b60206040518083038186803b158015611d5157600080fd5b505afa158015611d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d899190612ce3565b90506000611d988583856126db565b90506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611e199190613035565b60206040518083038186803b158015611e3157600080fd5b505afa158015611e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e699190612ce3565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611eea9190613035565b60206040518083038186803b158015611f0257600080fd5b505afa158015611f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3a9190612ce3565b9050611f478383836126db565b95505050505050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154421115611fa85760009050612000565b611ffd42600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546124dd90919063ffffffff16565b90505b919050565b600061201034612285565b9050806120d2600454600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120749190613035565b60206040518083038186803b15801561208c57600080fd5b505afa1580156120a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c49190612ce3565b6124dd90919063ffffffff16565b11612112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121099061314d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161216f9291906130b0565b602060405180830381600087803b15801561218957600080fd5b505af115801561219d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c19190612c91565b506121ca611bbf565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561220f573d6000803e3d6000fd5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016123059190613035565b60206040518083038186803b15801561231d57600080fd5b505afa158015612331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123559190612ce3565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016123d69190613035565b60206040518083038186803b1580156123ee57600080fd5b505afa158015612402573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124269190612ce3565b90506124338483836126db565b92505050919050565b612444612527565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c89061326d565b60405180910390fd5b6124da816127b3565b50565b600061251f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128e0565b905092915050565b600033905090565b60008083141561254257600090506125a4565b600082846125509190613458565b905082848261255f9190613427565b1461259f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125969061322d565b60405180910390fd5b809150505b92915050565b60006125ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612944565b905092915050565b600080828461260391906133d1565b905083811015612648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263f9061318d565b60405180910390fd5b8091505092915050565b6126d5846323b872dd60e01b85858560405160240161267393929190613079565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129a7565b50505050565b600080841161271f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127169061330d565b60405180910390fd5b60008311801561272f5750600082115b61276e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612765906132ad565b60405180910390fd5b6000612783838661252f90919063ffffffff16565b9050600061279a86866125f490919063ffffffff16565b905080826127a89190613427565b925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281a9061316d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290612928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291f919061312b565b60405180910390fd5b506000838561293791906134b2565b9050809150509392505050565b6000808311829061298b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612982919061312b565b60405180910390fd5b506000838561299a9190613427565b9050809150509392505050565b6000612a09826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612a6e9092919063ffffffff16565b9050600081511115612a695780806020019051810190612a299190612c91565b612a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5f906132ed565b60405180910390fd5b5b505050565b6060612a7d8484600085612a86565b90509392505050565b606082471015612acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac2906131cd565b60405180910390fd5b612ad485612b9a565b612b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0a906132cd565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b3c919061301e565b60006040518083038185875af1925050503d8060008114612b79576040519150601f19603f3d011682016040523d82523d6000602084013e612b7e565b606091505b5091509150612b8e828286612bad565b92505050949350505050565b600080823b905060008111915050919050565b60608315612bbd57829050612c0d565b600083511115612bd05782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c04919061312b565b60405180910390fd5b9392505050565b600081359050612c2381613978565b92915050565b600081519050612c388161398f565b92915050565b600081359050612c4d816139a6565b92915050565b600081519050612c62816139a6565b92915050565b600060208284031215612c7a57600080fd5b6000612c8884828501612c14565b91505092915050565b600060208284031215612ca357600080fd5b6000612cb184828501612c29565b91505092915050565b600060208284031215612ccc57600080fd5b6000612cda84828501612c3e565b91505092915050565b600060208284031215612cf557600080fd5b6000612d0384828501612c53565b91505092915050565b60008060408385031215612d1f57600080fd5b6000612d2d85828601612c3e565b9250506020612d3e85828601612c3e565b9150509250929050565b612d518161352e565b82525050565b612d60816134e6565b82525050565b6000612d718261339f565b612d7b81856133b5565b9350612d8b818560208601613588565b80840191505092915050565b612da081613540565b82525050565b6000612db1826133aa565b612dbb81856133c0565b9350612dcb818560208601613588565b612dd481613619565b840191505092915050565b6000612dec601f836133c0565b9150612df78261362a565b602082019050919050565b6000612e0f6026836133c0565b9150612e1a82613653565b604082019050919050565b6000612e32601b836133c0565b9150612e3d826136a2565b602082019050919050565b6000612e556011836133c0565b9150612e60826136cb565b602082019050919050565b6000612e786026836133c0565b9150612e83826136f4565b604082019050919050565b6000612e9b6019836133c0565b9150612ea682613743565b602082019050919050565b6000612ebe6013836133c0565b9150612ec98261376c565b602082019050919050565b6000612ee16021836133c0565b9150612eec82613795565b604082019050919050565b6000612f046015836133c0565b9150612f0f826137e4565b602082019050919050565b6000612f276020836133c0565b9150612f328261380d565b602082019050919050565b6000612f4a6017836133c0565b9150612f5582613836565b602082019050919050565b6000612f6d601f836133c0565b9150612f788261385f565b602082019050919050565b6000612f90601d836133c0565b9150612f9b82613888565b602082019050919050565b6000612fb3602a836133c0565b9150612fbe826138b1565b604082019050919050565b6000612fd66023836133c0565b9150612fe182613900565b604082019050919050565b6000612ff96015836133c0565b91506130048261394f565b602082019050919050565b61301881613524565b82525050565b600061302a8284612d66565b915081905092915050565b600060208201905061304a6000830184612d57565b92915050565b60006040820190506130656000830185612d48565b613072602083018461300f565b9392505050565b600060608201905061308e6000830186612d57565b61309b6020830185612d57565b6130a8604083018461300f565b949350505050565b60006040820190506130c56000830185612d57565b6130d2602083018461300f565b9392505050565b60006060820190506130ee6000830186612d57565b6130fb602083018561300f565b613108604083018461300f565b949350505050565b60006020820190506131256000830184612d97565b92915050565b600060208201905081810360008301526131458184612da6565b905092915050565b6000602082019050818103600083015261316681612ddf565b9050919050565b6000602082019050818103600083015261318681612e02565b9050919050565b600060208201905081810360008301526131a681612e25565b9050919050565b600060208201905081810360008301526131c681612e48565b9050919050565b600060208201905081810360008301526131e681612e6b565b9050919050565b6000602082019050818103600083015261320681612e8e565b9050919050565b6000602082019050818103600083015261322681612eb1565b9050919050565b6000602082019050818103600083015261324681612ed4565b9050919050565b6000602082019050818103600083015261326681612ef7565b9050919050565b6000602082019050818103600083015261328681612f1a565b9050919050565b600060208201905081810360008301526132a681612f3d565b9050919050565b600060208201905081810360008301526132c681612f60565b9050919050565b600060208201905081810360008301526132e681612f83565b9050919050565b6000602082019050818103600083015261330681612fa6565b9050919050565b6000602082019050818103600083015261332681612fc9565b9050919050565b6000602082019050818103600083015261334681612fec565b9050919050565b6000602082019050613362600083018461300f565b92915050565b600060608201905061337d600083018661300f565b61338a602083018561300f565b613397604083018461300f565b949350505050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006133dc82613524565b91506133e783613524565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561341c5761341b6135bb565b5b828201905092915050565b600061343282613524565b915061343d83613524565b92508261344d5761344c6135ea565b5b828204905092915050565b600061346382613524565b915061346e83613524565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134a7576134a66135bb565b5b828202905092915050565b60006134bd82613524565b91506134c883613524565b9250828210156134db576134da6135bb565b5b828203905092915050565b60006134f182613504565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061353982613564565b9050919050565b600061354b82613552565b9050919050565b600061355d82613504565b9050919050565b600061356f82613576565b9050919050565b600061358182613504565b9050919050565b60005b838110156135a657808201518184015260208101905061358b565b838111156135b5576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f7374616b653a2061746172692062616c616e6365206e6f7420656e6f75676800600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f616d6f756e74206d757374206e6f742030000000000000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f7468657265206973206e6f207374616b656420616d6f756e7400000000000000600082015250565b7f616c7265616479207374616b6520657869737400000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f6c6f636b656474696d65206d757374206e6f7420300000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5374616b65203a207374616b696e672069732066756c6c000000000000000000600082015250565b7f556e69737761703a20494e53554646494349454e545f4c495155494449545900600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f556e69737761703a20494e53554646494349454e545f4f55545055545f414d4f60008201527f554e540000000000000000000000000000000000000000000000000000000000602082015250565b7f6e6f7420726561647920746f2077697468647261770000000000000000000000600082015250565b613981816134e6565b811461398c57600080fd5b50565b613998816134f8565b81146139a357600080fd5b50565b6139af81613524565b81146139ba57600080fd5b5056fea2646970667358221220fb305471e496ec15ef0f6d16e2ba300a177834fd39f9004cfc3e2248c125f73164736f6c63430008030033
Deployed Bytecode
0x6080604052600436106101355760003560e01c80637b0472f0116100ab578063a1026d161161006f578063a1026d16146103c2578063a6f2ae3a146103ff578063b4cef28d14610409578063dacb4c6114610446578063e6158ce114610471578063f2fde38b146104ae57610135565b80637b0472f0146102dd5780637b80889b146103065780638a14a3b7146103315780638da5cb5b1461035a57806392eafd311461038557610135565b8063568cfe9a116100fd578063568cfe9a146101ee5780636abd26a7146102195780636ef98b2114610235578063715018a61461025e57806372c20de31461027557806375e032f41461029e57610135565b80632f48ab7d1461013a578063388262e1146101655780633ccfd60b146101905780633fc8cef3146101a757806345972f36146101d2575b600080fd5b34801561014657600080fd5b5061014f6104d7565b60405161015c9190613110565b60405180910390f35b34801561017157600080fd5b5061017a6104fd565b6040516101879190613035565b60405180910390f35b34801561019c57600080fd5b506101a5610523565b005b3480156101b357600080fd5b506101bc6107fb565b6040516101c99190613110565b60405180910390f35b6101ec60048036038101906101e79190612cba565b610821565b005b3480156101fa57600080fd5b50610203610913565b604051610210919061334d565b60405180910390f35b610233600480360381019061022e9190612cba565b6109c5565b005b34801561024157600080fd5b5061025c60048036038101906102579190612cba565b610d48565b005b34801561026a57600080fd5b50610273610f61565b005b34801561028157600080fd5b5061029c60048036038101906102979190612cba565b6110b4565b005b3480156102aa57600080fd5b506102c560048036038101906102c09190612c68565b6112cb565b6040516102d493929190613368565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff9190612d0c565b6112f5565b005b34801561031257600080fd5b5061031b61182d565b604051610328919061334d565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190612d0c565b611833565b005b34801561036657600080fd5b5061036f611bbf565b60405161037c9190613035565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a79190612cba565b611be8565b6040516103b9919061334d565b60405180910390f35b3480156103ce57600080fd5b506103e960048036038101906103e49190612c68565b611f53565b6040516103f6919061334d565b60405180910390f35b610407612005565b005b34801561041557600080fd5b50610430600480360381019061042b9190612c68565b612213565b60405161043d919061334d565b60405180910390f35b34801561045257600080fd5b5061045b61225f565b6040516104689190613110565b60405180910390f35b34801561047d57600080fd5b5061049860048036038101906104939190612cba565b612285565b6040516104a5919061334d565b60405180910390f35b3480156104ba57600080fd5b506104d560048036038101906104d09190612c68565b61243c565b005b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154116105a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059f906131ed565b60405180910390fd5b42600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101541061062c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106239061332d565b60405180910390fd5b610683600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546004546124dd90919063ffffffff16565b600481905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546040518363ffffffff1660e01b81526004016107289291906130b0565b602060405180830381600087803b15801561074257600080fd5b505af1158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190612c91565b50604051806060016040528060008152602001600081526020016000815250600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610829612527565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ad9061326d565b60405180910390fd5b8047116108c257600080fd5b6108ca612527565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561090f573d6000803e3d6000fd5b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109709190613035565b60206040518083038186803b15801561098857600080fd5b505afa15801561099c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c09190612ce3565b905090565b6000610a45610a4060038481548110610a07577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546064610a1e91906134b2565b610a3260643461252f90919063ffffffff16565b6125aa90919063ffffffff16565b612285565b9050610a5c816004546125f490919063ffffffff16565b600481905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610abd9190613035565b60206040518083038186803b158015610ad557600080fd5b505afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0d9190612ce3565b60045410610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b479061328d565b60405180910390fd5b6040518060600160405280828152602001610bb860028581548110610b9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154426125f490919063ffffffff16565b815260200160038481548110610bf7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154815250600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050610c6d611bbf565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610cb2573d6000803e3d6000fd5b507f5af417134f72a9d41143ace85b0a26dce6f550f894f2cbc1eeee8810603d91b63382610d2d60028681548110610d13577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154426125f490919063ffffffff16565b604051610d3c939291906130d9565b60405180910390a15050565b610d50612527565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd49061326d565b60405180910390fd5b610e9c600454600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e3e9190613035565b60206040518083038186803b158015610e5657600080fd5b505afa158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e9190612ce3565b6124dd90919063ffffffff16565b8110610ea757600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610eed612527565b836040518363ffffffff1660e01b8152600401610f0b929190613050565b602060405180830381600087803b158015610f2557600080fd5b505af1158015610f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5d9190612c91565b5050565b610f69612527565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed9061326d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006110bf82611be8565b905080611181600454600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111239190613035565b60206040518083038186803b15801561113b57600080fd5b505afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111739190612ce3565b6124dd90919063ffffffff16565b116111c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b89061314d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161121e9291906130b0565b602060405180830381600087803b15801561123857600080fd5b505af115801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190612c91565b506112c73361127d611bbf565b84600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612652909392919063ffffffff16565b5050565b60016020528060005260406000206000915090508060000154908060010154908060020154905083565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541461137a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113719061320d565b60405180910390fd5b60008214156113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b5906131ad565b60405180910390fd5b6000600282815481106113fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001541415611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d9061324d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016114a593929190613079565b602060405180830381600087803b1580156114bf57600080fd5b505af11580156114d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f79190612c91565b506000611577606461156961155a606460038781548110611541577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001546125f490919063ffffffff16565b8661252f90919063ffffffff16565b6125aa90919063ffffffff16565b905061158e816004546125f490919063ffffffff16565b600481905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115ef9190613035565b60206040518083038186803b15801561160757600080fd5b505afa15801561161b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163f9190612ce3565b60045410611682576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116799061328d565b60405180910390fd5b60405180606001604052808281526020016116ea600285815481106116d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154426125f490919063ffffffff16565b815260200160038481548110611729577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154815250600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050507f5af417134f72a9d41143ace85b0a26dce6f550f894f2cbc1eeee8810603d91b63382611811600286815481106117f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154426125f490919063ffffffff16565b604051611820939291906130d9565b60405180910390a1505050565b60045481565b60006118b36118ae60038481548110611875577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154606461188c91906134b2565b6118a060648761252f90919063ffffffff16565b6125aa90919063ffffffff16565b611be8565b905061190b336118c1611bbf565b85600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612652909392919063ffffffff16565b611920816004546125f490919063ffffffff16565b600481905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119819190613035565b60206040518083038186803b15801561199957600080fd5b505afa1580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d19190612ce3565b60045410611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b9061328d565b60405180910390fd5b6040518060600160405280828152602001611a7c60028581548110611a62577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154426125f490919063ffffffff16565b815260200160038481548110611abb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154815250600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050507f5af417134f72a9d41143ace85b0a26dce6f550f894f2cbc1eeee8810603d91b63382611ba360028681548110611b89577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154426125f490919063ffffffff16565b604051611bb2939291906130d9565b60405180910390a1505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611c689190613035565b60206040518083038186803b158015611c8057600080fd5b505afa158015611c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb89190612ce3565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611d399190613035565b60206040518083038186803b158015611d5157600080fd5b505afa158015611d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d899190612ce3565b90506000611d988583856126db565b90506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611e199190613035565b60206040518083038186803b158015611e3157600080fd5b505afa158015611e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e699190612ce3565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611eea9190613035565b60206040518083038186803b158015611f0257600080fd5b505afa158015611f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3a9190612ce3565b9050611f478383836126db565b95505050505050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154421115611fa85760009050612000565b611ffd42600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546124dd90919063ffffffff16565b90505b919050565b600061201034612285565b9050806120d2600454600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120749190613035565b60206040518083038186803b15801561208c57600080fd5b505afa1580156120a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c49190612ce3565b6124dd90919063ffffffff16565b11612112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121099061314d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161216f9291906130b0565b602060405180830381600087803b15801561218957600080fd5b505af115801561219d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c19190612c91565b506121ca611bbf565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561220f573d6000803e3d6000fd5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016123059190613035565b60206040518083038186803b15801561231d57600080fd5b505afa158015612331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123559190612ce3565b90506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016123d69190613035565b60206040518083038186803b1580156123ee57600080fd5b505afa158015612402573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124269190612ce3565b90506124338483836126db565b92505050919050565b612444612527565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c89061326d565b60405180910390fd5b6124da816127b3565b50565b600061251f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128e0565b905092915050565b600033905090565b60008083141561254257600090506125a4565b600082846125509190613458565b905082848261255f9190613427565b1461259f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125969061322d565b60405180910390fd5b809150505b92915050565b60006125ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612944565b905092915050565b600080828461260391906133d1565b905083811015612648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263f9061318d565b60405180910390fd5b8091505092915050565b6126d5846323b872dd60e01b85858560405160240161267393929190613079565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129a7565b50505050565b600080841161271f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127169061330d565b60405180910390fd5b60008311801561272f5750600082115b61276e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612765906132ad565b60405180910390fd5b6000612783838661252f90919063ffffffff16565b9050600061279a86866125f490919063ffffffff16565b905080826127a89190613427565b925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281a9061316d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290612928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291f919061312b565b60405180910390fd5b506000838561293791906134b2565b9050809150509392505050565b6000808311829061298b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612982919061312b565b60405180910390fd5b506000838561299a9190613427565b9050809150509392505050565b6000612a09826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612a6e9092919063ffffffff16565b9050600081511115612a695780806020019051810190612a299190612c91565b612a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5f906132ed565b60405180910390fd5b5b505050565b6060612a7d8484600085612a86565b90509392505050565b606082471015612acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac2906131cd565b60405180910390fd5b612ad485612b9a565b612b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0a906132cd565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b3c919061301e565b60006040518083038185875af1925050503d8060008114612b79576040519150601f19603f3d011682016040523d82523d6000602084013e612b7e565b606091505b5091509150612b8e828286612bad565b92505050949350505050565b600080823b905060008111915050919050565b60608315612bbd57829050612c0d565b600083511115612bd05782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c04919061312b565b60405180910390fd5b9392505050565b600081359050612c2381613978565b92915050565b600081519050612c388161398f565b92915050565b600081359050612c4d816139a6565b92915050565b600081519050612c62816139a6565b92915050565b600060208284031215612c7a57600080fd5b6000612c8884828501612c14565b91505092915050565b600060208284031215612ca357600080fd5b6000612cb184828501612c29565b91505092915050565b600060208284031215612ccc57600080fd5b6000612cda84828501612c3e565b91505092915050565b600060208284031215612cf557600080fd5b6000612d0384828501612c53565b91505092915050565b60008060408385031215612d1f57600080fd5b6000612d2d85828601612c3e565b9250506020612d3e85828601612c3e565b9150509250929050565b612d518161352e565b82525050565b612d60816134e6565b82525050565b6000612d718261339f565b612d7b81856133b5565b9350612d8b818560208601613588565b80840191505092915050565b612da081613540565b82525050565b6000612db1826133aa565b612dbb81856133c0565b9350612dcb818560208601613588565b612dd481613619565b840191505092915050565b6000612dec601f836133c0565b9150612df78261362a565b602082019050919050565b6000612e0f6026836133c0565b9150612e1a82613653565b604082019050919050565b6000612e32601b836133c0565b9150612e3d826136a2565b602082019050919050565b6000612e556011836133c0565b9150612e60826136cb565b602082019050919050565b6000612e786026836133c0565b9150612e83826136f4565b604082019050919050565b6000612e9b6019836133c0565b9150612ea682613743565b602082019050919050565b6000612ebe6013836133c0565b9150612ec98261376c565b602082019050919050565b6000612ee16021836133c0565b9150612eec82613795565b604082019050919050565b6000612f046015836133c0565b9150612f0f826137e4565b602082019050919050565b6000612f276020836133c0565b9150612f328261380d565b602082019050919050565b6000612f4a6017836133c0565b9150612f5582613836565b602082019050919050565b6000612f6d601f836133c0565b9150612f788261385f565b602082019050919050565b6000612f90601d836133c0565b9150612f9b82613888565b602082019050919050565b6000612fb3602a836133c0565b9150612fbe826138b1565b604082019050919050565b6000612fd66023836133c0565b9150612fe182613900565b604082019050919050565b6000612ff96015836133c0565b91506130048261394f565b602082019050919050565b61301881613524565b82525050565b600061302a8284612d66565b915081905092915050565b600060208201905061304a6000830184612d57565b92915050565b60006040820190506130656000830185612d48565b613072602083018461300f565b9392505050565b600060608201905061308e6000830186612d57565b61309b6020830185612d57565b6130a8604083018461300f565b949350505050565b60006040820190506130c56000830185612d57565b6130d2602083018461300f565b9392505050565b60006060820190506130ee6000830186612d57565b6130fb602083018561300f565b613108604083018461300f565b949350505050565b60006020820190506131256000830184612d97565b92915050565b600060208201905081810360008301526131458184612da6565b905092915050565b6000602082019050818103600083015261316681612ddf565b9050919050565b6000602082019050818103600083015261318681612e02565b9050919050565b600060208201905081810360008301526131a681612e25565b9050919050565b600060208201905081810360008301526131c681612e48565b9050919050565b600060208201905081810360008301526131e681612e6b565b9050919050565b6000602082019050818103600083015261320681612e8e565b9050919050565b6000602082019050818103600083015261322681612eb1565b9050919050565b6000602082019050818103600083015261324681612ed4565b9050919050565b6000602082019050818103600083015261326681612ef7565b9050919050565b6000602082019050818103600083015261328681612f1a565b9050919050565b600060208201905081810360008301526132a681612f3d565b9050919050565b600060208201905081810360008301526132c681612f60565b9050919050565b600060208201905081810360008301526132e681612f83565b9050919050565b6000602082019050818103600083015261330681612fa6565b9050919050565b6000602082019050818103600083015261332681612fc9565b9050919050565b6000602082019050818103600083015261334681612fec565b9050919050565b6000602082019050613362600083018461300f565b92915050565b600060608201905061337d600083018661300f565b61338a602083018561300f565b613397604083018461300f565b949350505050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006133dc82613524565b91506133e783613524565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561341c5761341b6135bb565b5b828201905092915050565b600061343282613524565b915061343d83613524565b92508261344d5761344c6135ea565b5b828204905092915050565b600061346382613524565b915061346e83613524565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134a7576134a66135bb565b5b828202905092915050565b60006134bd82613524565b91506134c883613524565b9250828210156134db576134da6135bb565b5b828203905092915050565b60006134f182613504565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061353982613564565b9050919050565b600061354b82613552565b9050919050565b600061355d82613504565b9050919050565b600061356f82613576565b9050919050565b600061358182613504565b9050919050565b60005b838110156135a657808201518184015260208101905061358b565b838111156135b5576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f7374616b653a2061746172692062616c616e6365206e6f7420656e6f75676800600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f616d6f756e74206d757374206e6f742030000000000000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f7468657265206973206e6f207374616b656420616d6f756e7400000000000000600082015250565b7f616c7265616479207374616b6520657869737400000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f6c6f636b656474696d65206d757374206e6f7420300000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5374616b65203a207374616b696e672069732066756c6c000000000000000000600082015250565b7f556e69737761703a20494e53554646494349454e545f4c495155494449545900600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f556e69737761703a20494e53554646494349454e545f4f55545055545f414d4f60008201527f554e540000000000000000000000000000000000000000000000000000000000602082015250565b7f6e6f7420726561647920746f2077697468647261770000000000000000000000600082015250565b613981816134e6565b811461398c57600080fd5b50565b613998816134f8565b81146139a357600080fd5b50565b6139af81613524565b81146139ba57600080fd5b5056fea2646970667358221220fb305471e496ec15ef0f6d16e2ba300a177834fd39f9004cfc3e2248c125f73164736f6c63430008030033
Deployed Bytecode Sourcemap
21797:7037:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22380:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22703:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23837:396;;;;;;;;;;;;;:::i;:::-;;22459:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24924:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24578:112;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26406:568;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24725:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21097:130;;;;;;;;;;;;;:::i;:::-;;27917:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22129:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;23050:775;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22312:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26986:600;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20495:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25845:541;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24245:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27598:307;;;:::i;:::-;;24463:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22537:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25553:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21372:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22380:72;;;;;;;;;;;;;:::o;22703:71::-;;;;;;;;;;;;;:::o;23837:396::-;23913:1;23885:8;:20;23894:10;23885:20;;;;;;;;;;;;;;;:27;;;:29;23877:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23994:15;23962:8;:20;23971:10;23962:20;;;;;;;;;;;;;;;:31;;;:47;23954:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;24069:46;24087:8;:20;24096:10;24087:20;;;;;;;;;;;;;;;:27;;;24069:13;;:17;;:46;;;;:::i;:::-;24055:13;:60;;;;24126:5;;;;;;;;;;;:14;;;24141:10;24152:8;:20;24161:10;24152:20;;;;;;;;;;;;;;;:27;;;24126:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24212:13;;;;;;;;24219:1;24212:13;;;;24221:1;24212:13;;;;24223:1;24212:13;;;24191:8;:20;24200:10;24191:20;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;23837:396::o;22459:71::-;;;;;;;;;;;;;:::o;24924:168::-;20699:12;:10;:12::i;:::-;20689:22;;:6;;;;;;;;;;:22;;;20681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25033:6:::1;25011:21;:28;25003:37;;;::::0;::::1;;25051:12;:10;:12::i;:::-;:21;;:29;25073:6;25051:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24924:168:::0;:::o;24578:112::-;24627:7;24652:5;;;;;;;;;;;:15;;;24676:4;24652:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24645:37;;24578:112;:::o;26406:568::-;26496:19;26516:59;26530:44;26557:5;26563:9;26557:16;;;;;;;;;;;;;;;;;;;;;;;;26553:3;:20;;;;:::i;:::-;26530:18;26544:3;26530:9;:13;;:18;;;;:::i;:::-;:22;;:44;;;;:::i;:::-;26516:13;:59::i;:::-;26496:79;;26610:30;26628:11;26610:13;;:17;;:30;;;;:::i;:::-;26596:13;:44;;;;26673:5;;;;;;;;;;;:15;;;26697:4;26673:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26659:13;;:44;26651:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;26762:74;;;;;;;;26769:11;26762:74;;;;26781:37;26801:5;26807:9;26801:16;;;;;;;;;;;;;;;;;;;;;;;;26781:15;:19;;:37;;;;:::i;:::-;26762:74;;;;26819:5;26825:9;26819:16;;;;;;;;;;;;;;;;;;;;;;;;26762:74;;;26741:8;:20;26750:10;26741:20;;;;;;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;;;;;;;;;;26855:7;:5;:7::i;:::-;26847:25;;:36;26873:9;26847:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26899:67;26905:10;26916:11;26928:37;26948:5;26954:9;26948:16;;;;;;;;;;;;;;;;;;;;;;;;26928:15;:19;;:37;;;;:::i;:::-;26899:67;;;;;;;;:::i;:::-;;;;;;;;26406:568;;:::o;24725:187::-;20699:12;:10;:12::i;:::-;20689:22;;:6;;;;;;;;;;:22;;;20681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24808:49:::1;24843:13;;24808:5;;;;;;;;;;;:15;;;24832:4;24808:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;:49;;;;:::i;:::-;24801:6;:56;24793:65;;;::::0;::::1;;24869:5;;;;;;;;;;;:14;;;24884:12;:10;:12::i;:::-;24897:6;24869:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24725:187:::0;:::o;21097:130::-;20699:12;:10;:12::i;:::-;20689:22;;:6;;;;;;;;;;:22;;;20681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21192:1:::1;21155:40;;21176:6;::::0;::::1;;;;;;;;21155:40;;;;;;;;;;;;21219:1;21202:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;21097:130::o:0;27917:334::-;27974:19;27994:25;28012:6;27994:17;:25::i;:::-;27974:45;;28088:11;28038:49;28073:13;;28038:5;;;;;;;;;;;:15;;;28062:4;28038:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;:49;;;;:::i;:::-;:61;28030:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;28146:5;;;;;;;;;;;:14;;;28161:10;28172:11;28146:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28195:48;28217:10;28228:7;:5;:7::i;:::-;28236:6;28195:4;;;;;;;;;;;:21;;;;:48;;;;;;:::i;:::-;27917:334;;:::o;22129:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23050:775::-;23156:1;23127:8;:20;23136:10;23127:20;;;;;;;;;;;;;;;:27;;;:30;23119:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23207:1;23199:6;:9;;23191:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;23267:1;23249:5;23255:9;23249:16;;;;;;;;;;;;;;;;;;;;;;;;:19;;23241:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;23314:5;;;;;;;;;;;:18;;;23333:10;23352:4;23358:6;23314:51;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23386:19;23406:46;23448:3;23406:37;23417:25;23438:3;23417:5;23423:9;23417:16;;;;;;;;;;;;;;;;;;;;;;;;:20;;:25;;;;:::i;:::-;23406:6;:10;;:37;;;;:::i;:::-;:41;;:46;;;;:::i;:::-;23386:66;;23477:30;23495:11;23477:13;;:17;;:30;;;;:::i;:::-;23463:13;:44;;;;23550:5;;;;;;;;;;;:15;;;23574:4;23550:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23536:13;;:44;23528:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;23650:74;;;;;;;;23657:11;23650:74;;;;23669:37;23689:5;23695:9;23689:16;;;;;;;;;;;;;;;;;;;;;;;;23669:15;:19;;:37;;;;:::i;:::-;23650:74;;;;23707:5;23713:9;23707:16;;;;;;;;;;;;;;;;;;;;;;;;23650:74;;;23628:8;:20;23637:10;23628:20;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;;;;;;;;;;23750:67;23756:10;23767:11;23779:37;23799:5;23805:9;23799:16;;;;;;;;;;;;;;;;;;;;;;;;23779:15;:19;;:37;;;;:::i;:::-;23750:67;;;;;;;;:::i;:::-;;;;;;;;23050:775;;;:::o;22312:28::-;;;;:::o;26986:600::-;27095:19;27115:60;27133:41;27157:5;27163:9;27157:16;;;;;;;;;;;;;;;;;;;;;;;;27153:3;:20;;;;:::i;:::-;27133:15;27144:3;27133:6;:10;;:15;;;;:::i;:::-;:19;;:41;;;;:::i;:::-;27115:17;:60::i;:::-;27095:80;;27186:48;27208:10;27219:7;:5;:7::i;:::-;27227:6;27186:4;;;;;;;;;;;:21;;;;:48;;;;;;:::i;:::-;27259:30;27277:11;27259:13;;:17;;:30;;;;:::i;:::-;27245:13;:44;;;;27322:5;;;;;;;;;;;:15;;;27346:4;27322:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27308:13;;:44;27300:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;27411:74;;;;;;;;27418:11;27411:74;;;;27430:37;27450:5;27456:9;27450:16;;;;;;;;;;;;;;;;;;;;;;;;27430:15;:19;;:37;;;;:::i;:::-;27411:74;;;;27468:5;27474:9;27468:16;;;;;;;;;;;;;;;;;;;;;;;;27411:74;;;27390:8;:20;27399:10;27390:20;;;;;;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;;;;;;;;;;27511:67;27517:10;27528:11;27540:37;27560:5;27566:9;27560:16;;;;;;;;;;;;;;;;;;;;;;;;27540:15;:19;;:37;;;;:::i;:::-;27511:67;;;;;;;;:::i;:::-;;;;;;;;26986:600;;;:::o;20495:73::-;20533:7;20556:6;;;;;;;;;;;20549:13;;20495:73;:::o;25845:541::-;25910:7;25982:17;26002:4;;;;;;;;;;;:14;;;26017:11;;;;;;;;;;;26002:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25982:47;;26040:18;26061:4;;;;;;;;;;;:14;;;26076:11;;;;;;;;;;;26061:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26040:48;;26109:17;26129:43;26142:8;26151:10;26162:9;26129:12;:43::i;:::-;26109:63;;26193:18;26214:4;;;;;;;;;;;:14;;;26229:12;;;;;;;;;;;26214:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26193:49;;26253:19;26275:5;;;;;;;;;;;:15;;;26291:12;;;;;;;;;;;26275:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26253:51;;26332:46;26345:9;26355:10;26366:11;26332:12;:46::i;:::-;26325:53;;;;;;;25845:541;;;:::o;24245:206::-;24299:7;24337:8;:11;24346:1;24337:11;;;;;;;;;;;;;;;:22;;;24321:15;:38;24318:64;;;24381:1;24374:8;;;;24318:64;24400:43;24427:15;24400:8;:11;24409:1;24400:11;;;;;;;;;;;;;;;:22;;;:26;;:43;;;;:::i;:::-;24393:50;;24245:206;;;;:::o;27598:307::-;27641:19;27661:24;27675:9;27661:13;:24::i;:::-;27641:44;;27754:11;27704:49;27739:13;;27704:5;;;;;;;;;;;:15;;;27728:4;27704:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;:49;;;;:::i;:::-;:61;27696:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;27812:5;;;;;;;;;;;:14;;;27827:10;27838:11;27812:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27869:7;:5;:7::i;:::-;27861:25;;:36;27887:9;27861:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27598:307;:::o;24463:103::-;24514:7;24540:8;:11;24549:1;24540:11;;;;;;;;;;;;;;;:18;;;24533:25;;24463:103;;;:::o;22537:73::-;;;;;;;;;;;;;:::o;25553:280::-;25614:7;25643:17;25663:4;;;;;;;;;;;:14;;;25678:12;;;;;;;;;;;25663:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25643:48;;25702:19;25724:5;;;;;;;;;;;:15;;;25740:12;;;;;;;;;;;25724:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25702:51;;25781:44;25794:8;25803:9;25813:11;25781:12;:44::i;:::-;25774:51;;;;25553:280;;;:::o;21372:103::-;20699:12;:10;:12::i;:::-;20689:22;;:6;;;;;;;;;;:22;;;20681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21441:28:::1;21460:8;21441:18;:28::i;:::-;21372:103:::0;:::o;15203:130::-;15261:7;15284:43;15288:1;15291;15284:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;15277:50;;15203:130;;;;:::o;19691:101::-;19736:15;19775:10;19760:26;;19691:101;:::o;16017:431::-;16075:7;16309:1;16304;:6;16300:37;;;16328:1;16321:8;;;;16300:37;16345:9;16361:1;16357;:5;;;;:::i;:::-;16345:17;;16386:1;16381;16377;:5;;;;:::i;:::-;:10;16369:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16441:1;16434:8;;;16017:431;;;;;:::o;16892:126::-;16950:7;16973:39;16977:1;16980;16973:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;16966:46;;16892:126;;;;:::o;14781:167::-;14839:7;14855:9;14871:1;14867;:5;;;;:::i;:::-;14855:17;;14892:1;14887;:6;;14879:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;14941:1;14934:8;;;14781:167;;;;:::o;10890:248::-;11034:96;11054:5;11084:27;;;11113:4;11119:2;11123:5;11061:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11034:19;:96::i;:::-;10890:248;;;;:::o;25104:425::-;25197:14;25243:1;25232:8;:12;25224:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25315:1;25303:9;:13;:31;;;;;25333:1;25320:10;:14;25303:31;25295:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25381:14;25398:24;25411:10;25398:8;:12;;:24;;;;:::i;:::-;25381:41;;25433:16;25452:23;25466:8;25452:9;:13;;:23;;;;:::i;:::-;25433:42;;25510:11;25498:9;:23;;;;:::i;:::-;25486:35;;25104:425;;;;;;;:::o;21573:215::-;21663:1;21643:22;;:8;:22;;;;21635:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21749:8;21720:38;;21741:6;;;;;;;;;;21720:38;;;;;;;;;;;;21774:8;21765:6;;:17;;;;;;;;;;;;;;;;;;21573:215;:::o;15608:178::-;15694:7;15723:1;15718;:6;;15726:12;15710:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;15746:9;15762:1;15758;:5;;;;:::i;:::-;15746:17;;15779:1;15772:8;;;15608:178;;;;;:::o;17482:323::-;17568:7;17659:1;17655;:5;17662:12;17647:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17682:9;17698:1;17694;:5;;;;:::i;:::-;17682:17;;17798:1;17791:8;;;17482:323;;;;;:::o;13244:716::-;13668:23;13694:69;13722:4;13694:69;;;;;;;;;;;;;;;;;13702:5;13694:27;;;;:69;;;;;:::i;:::-;13668:95;;13798:1;13778:10;:17;:21;13774:179;;;13875:10;13864:30;;;;;;;;;;;;:::i;:::-;13856:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13774:179;13244:716;;;:::o;6302:229::-;6439:12;6471:52;6493:6;6501:4;6507:1;6510:12;6471:21;:52::i;:::-;6464:59;;6302:229;;;;;:::o;7422:511::-;7592:12;7650:5;7625:21;:30;;7617:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;7717:18;7728:6;7717:10;:18::i;:::-;7709:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7783:12;7797:23;7824:6;:11;;7843:5;7850:4;7824:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7782:73;;;;7873:52;7891:7;7900:10;7912:12;7873:17;:52::i;:::-;7866:59;;;;7422:511;;;;;;:::o;3496:387::-;3556:4;3764:12;3831:7;3819:20;3811:28;;3874:1;3867:4;:8;3860:15;;;3496:387;;;:::o;9891:712::-;10041:12;10070:7;10066:530;;;10101:10;10094:17;;;;10066:530;10235:1;10215:10;:17;:21;10211:374;;;10413:10;10407:17;10474:15;10461:10;10457:2;10453:19;10446:44;10361:148;10556:12;10549:20;;;;;;;;;;;:::i;:::-;;;;;;;;9891:712;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:137::-;;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;212:77;;;;:::o;295:139::-;;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;347:87;;;;:::o;440:143::-;;528:6;522:13;513:22;;544:33;571:5;544:33;:::i;:::-;503:80;;;;:::o;589:262::-;;697:2;685:9;676:7;672:23;668:32;665:2;;;713:1;710;703:12;665:2;756:1;781:53;826:7;817:6;806:9;802:22;781:53;:::i;:::-;771:63;;727:117;655:196;;;;:::o;857:278::-;;973:2;961:9;952:7;948:23;944:32;941:2;;;989:1;986;979:12;941:2;1032:1;1057:61;1110:7;1101:6;1090:9;1086:22;1057:61;:::i;:::-;1047:71;;1003:125;931:204;;;;:::o;1141:262::-;;1249:2;1237:9;1228:7;1224:23;1220:32;1217:2;;;1265:1;1262;1255:12;1217:2;1308:1;1333:53;1378:7;1369:6;1358:9;1354:22;1333:53;:::i;:::-;1323:63;;1279:117;1207:196;;;;:::o;1409:284::-;;1528:2;1516:9;1507:7;1503:23;1499:32;1496:2;;;1544:1;1541;1534:12;1496:2;1587:1;1612:64;1668:7;1659:6;1648:9;1644:22;1612:64;:::i;:::-;1602:74;;1558:128;1486:207;;;;:::o;1699:407::-;;;1824:2;1812:9;1803:7;1799:23;1795:32;1792:2;;;1840:1;1837;1830:12;1792:2;1883:1;1908:53;1953:7;1944:6;1933:9;1929:22;1908:53;:::i;:::-;1898:63;;1854:117;2010:2;2036:53;2081:7;2072:6;2061:9;2057:22;2036:53;:::i;:::-;2026:63;;1981:118;1782:324;;;;;:::o;2112:147::-;2207:45;2246:5;2207:45;:::i;:::-;2202:3;2195:58;2185:74;;:::o;2265:118::-;2352:24;2370:5;2352:24;:::i;:::-;2347:3;2340:37;2330:53;;:::o;2389:373::-;;2521:38;2553:5;2521:38;:::i;:::-;2575:88;2656:6;2651:3;2575:88;:::i;:::-;2568:95;;2672:52;2717:6;2712:3;2705:4;2698:5;2694:16;2672:52;:::i;:::-;2749:6;2744:3;2740:16;2733:23;;2497:265;;;;;:::o;2768:157::-;2868:50;2912:5;2868:50;:::i;:::-;2863:3;2856:63;2846:79;;:::o;2931:364::-;;3047:39;3080:5;3047:39;:::i;:::-;3102:71;3166:6;3161:3;3102:71;:::i;:::-;3095:78;;3182:52;3227:6;3222:3;3215:4;3208:5;3204:16;3182:52;:::i;:::-;3259:29;3281:6;3259:29;:::i;:::-;3254:3;3250:39;3243:46;;3023:272;;;;;:::o;3301:366::-;;3464:67;3528:2;3523:3;3464:67;:::i;:::-;3457:74;;3540:93;3629:3;3540:93;:::i;:::-;3658:2;3653:3;3649:12;3642:19;;3447:220;;;:::o;3673:366::-;;3836:67;3900:2;3895:3;3836:67;:::i;:::-;3829:74;;3912:93;4001:3;3912:93;:::i;:::-;4030:2;4025:3;4021:12;4014:19;;3819:220;;;:::o;4045:366::-;;4208:67;4272:2;4267:3;4208:67;:::i;:::-;4201:74;;4284:93;4373:3;4284:93;:::i;:::-;4402:2;4397:3;4393:12;4386:19;;4191:220;;;:::o;4417:366::-;;4580:67;4644:2;4639:3;4580:67;:::i;:::-;4573:74;;4656:93;4745:3;4656:93;:::i;:::-;4774:2;4769:3;4765:12;4758:19;;4563:220;;;:::o;4789:366::-;;4952:67;5016:2;5011:3;4952:67;:::i;:::-;4945:74;;5028:93;5117:3;5028:93;:::i;:::-;5146:2;5141:3;5137:12;5130:19;;4935:220;;;:::o;5161:366::-;;5324:67;5388:2;5383:3;5324:67;:::i;:::-;5317:74;;5400:93;5489:3;5400:93;:::i;:::-;5518:2;5513:3;5509:12;5502:19;;5307:220;;;:::o;5533:366::-;;5696:67;5760:2;5755:3;5696:67;:::i;:::-;5689:74;;5772:93;5861:3;5772:93;:::i;:::-;5890:2;5885:3;5881:12;5874:19;;5679:220;;;:::o;5905:366::-;;6068:67;6132:2;6127:3;6068:67;:::i;:::-;6061:74;;6144:93;6233:3;6144:93;:::i;:::-;6262:2;6257:3;6253:12;6246:19;;6051:220;;;:::o;6277:366::-;;6440:67;6504:2;6499:3;6440:67;:::i;:::-;6433:74;;6516:93;6605:3;6516:93;:::i;:::-;6634:2;6629:3;6625:12;6618:19;;6423:220;;;:::o;6649:366::-;;6812:67;6876:2;6871:3;6812:67;:::i;:::-;6805:74;;6888:93;6977:3;6888:93;:::i;:::-;7006:2;7001:3;6997:12;6990:19;;6795:220;;;:::o;7021:366::-;;7184:67;7248:2;7243:3;7184:67;:::i;:::-;7177:74;;7260:93;7349:3;7260:93;:::i;:::-;7378:2;7373:3;7369:12;7362:19;;7167:220;;;:::o;7393:366::-;;7556:67;7620:2;7615:3;7556:67;:::i;:::-;7549:74;;7632:93;7721:3;7632:93;:::i;:::-;7750:2;7745:3;7741:12;7734:19;;7539:220;;;:::o;7765:366::-;;7928:67;7992:2;7987:3;7928:67;:::i;:::-;7921:74;;8004:93;8093:3;8004:93;:::i;:::-;8122:2;8117:3;8113:12;8106:19;;7911:220;;;:::o;8137:366::-;;8300:67;8364:2;8359:3;8300:67;:::i;:::-;8293:74;;8376:93;8465:3;8376:93;:::i;:::-;8494:2;8489:3;8485:12;8478:19;;8283:220;;;:::o;8509:366::-;;8672:67;8736:2;8731:3;8672:67;:::i;:::-;8665:74;;8748:93;8837:3;8748:93;:::i;:::-;8866:2;8861:3;8857:12;8850:19;;8655:220;;;:::o;8881:366::-;;9044:67;9108:2;9103:3;9044:67;:::i;:::-;9037:74;;9120:93;9209:3;9120:93;:::i;:::-;9238:2;9233:3;9229:12;9222:19;;9027:220;;;:::o;9253:118::-;9340:24;9358:5;9340:24;:::i;:::-;9335:3;9328:37;9318:53;;:::o;9377:271::-;;9529:93;9618:3;9609:6;9529:93;:::i;:::-;9522:100;;9639:3;9632:10;;9511:137;;;;:::o;9654:222::-;;9785:2;9774:9;9770:18;9762:26;;9798:71;9866:1;9855:9;9851:17;9842:6;9798:71;:::i;:::-;9752:124;;;;:::o;9882:348::-;;10049:2;10038:9;10034:18;10026:26;;10062:79;10138:1;10127:9;10123:17;10114:6;10062:79;:::i;:::-;10151:72;10219:2;10208:9;10204:18;10195:6;10151:72;:::i;:::-;10016:214;;;;;:::o;10236:442::-;;10423:2;10412:9;10408:18;10400:26;;10436:71;10504:1;10493:9;10489:17;10480:6;10436:71;:::i;:::-;10517:72;10585:2;10574:9;10570:18;10561:6;10517:72;:::i;:::-;10599;10667:2;10656:9;10652:18;10643:6;10599:72;:::i;:::-;10390:288;;;;;;:::o;10684:332::-;;10843:2;10832:9;10828:18;10820:26;;10856:71;10924:1;10913:9;10909:17;10900:6;10856:71;:::i;:::-;10937:72;11005:2;10994:9;10990:18;10981:6;10937:72;:::i;:::-;10810:206;;;;;:::o;11022:442::-;;11209:2;11198:9;11194:18;11186:26;;11222:71;11290:1;11279:9;11275:17;11266:6;11222:71;:::i;:::-;11303:72;11371:2;11360:9;11356:18;11347:6;11303:72;:::i;:::-;11385;11453:2;11442:9;11438:18;11429:6;11385:72;:::i;:::-;11176:288;;;;;;:::o;11470:248::-;;11614:2;11603:9;11599:18;11591:26;;11627:84;11708:1;11697:9;11693:17;11684:6;11627:84;:::i;:::-;11581:137;;;;:::o;11724:313::-;;11875:2;11864:9;11860:18;11852:26;;11924:9;11918:4;11914:20;11910:1;11899:9;11895:17;11888:47;11952:78;12025:4;12016:6;11952:78;:::i;:::-;11944:86;;11842:195;;;;:::o;12043:419::-;;12247:2;12236:9;12232:18;12224:26;;12296:9;12290:4;12286:20;12282:1;12271:9;12267:17;12260:47;12324:131;12450:4;12324:131;:::i;:::-;12316:139;;12214:248;;;:::o;12468:419::-;;12672:2;12661:9;12657:18;12649:26;;12721:9;12715:4;12711:20;12707:1;12696:9;12692:17;12685:47;12749:131;12875:4;12749:131;:::i;:::-;12741:139;;12639:248;;;:::o;12893:419::-;;13097:2;13086:9;13082:18;13074:26;;13146:9;13140:4;13136:20;13132:1;13121:9;13117:17;13110:47;13174:131;13300:4;13174:131;:::i;:::-;13166:139;;13064:248;;;:::o;13318:419::-;;13522:2;13511:9;13507:18;13499:26;;13571:9;13565:4;13561:20;13557:1;13546:9;13542:17;13535:47;13599:131;13725:4;13599:131;:::i;:::-;13591:139;;13489:248;;;:::o;13743:419::-;;13947:2;13936:9;13932:18;13924:26;;13996:9;13990:4;13986:20;13982:1;13971:9;13967:17;13960:47;14024:131;14150:4;14024:131;:::i;:::-;14016:139;;13914:248;;;:::o;14168:419::-;;14372:2;14361:9;14357:18;14349:26;;14421:9;14415:4;14411:20;14407:1;14396:9;14392:17;14385:47;14449:131;14575:4;14449:131;:::i;:::-;14441:139;;14339:248;;;:::o;14593:419::-;;14797:2;14786:9;14782:18;14774:26;;14846:9;14840:4;14836:20;14832:1;14821:9;14817:17;14810:47;14874:131;15000:4;14874:131;:::i;:::-;14866:139;;14764:248;;;:::o;15018:419::-;;15222:2;15211:9;15207:18;15199:26;;15271:9;15265:4;15261:20;15257:1;15246:9;15242:17;15235:47;15299:131;15425:4;15299:131;:::i;:::-;15291:139;;15189:248;;;:::o;15443:419::-;;15647:2;15636:9;15632:18;15624:26;;15696:9;15690:4;15686:20;15682:1;15671:9;15667:17;15660:47;15724:131;15850:4;15724:131;:::i;:::-;15716:139;;15614:248;;;:::o;15868:419::-;;16072:2;16061:9;16057:18;16049:26;;16121:9;16115:4;16111:20;16107:1;16096:9;16092:17;16085:47;16149:131;16275:4;16149:131;:::i;:::-;16141:139;;16039:248;;;:::o;16293:419::-;;16497:2;16486:9;16482:18;16474:26;;16546:9;16540:4;16536:20;16532:1;16521:9;16517:17;16510:47;16574:131;16700:4;16574:131;:::i;:::-;16566:139;;16464:248;;;:::o;16718:419::-;;16922:2;16911:9;16907:18;16899:26;;16971:9;16965:4;16961:20;16957:1;16946:9;16942:17;16935:47;16999:131;17125:4;16999:131;:::i;:::-;16991:139;;16889:248;;;:::o;17143:419::-;;17347:2;17336:9;17332:18;17324:26;;17396:9;17390:4;17386:20;17382:1;17371:9;17367:17;17360:47;17424:131;17550:4;17424:131;:::i;:::-;17416:139;;17314:248;;;:::o;17568:419::-;;17772:2;17761:9;17757:18;17749:26;;17821:9;17815:4;17811:20;17807:1;17796:9;17792:17;17785:47;17849:131;17975:4;17849:131;:::i;:::-;17841:139;;17739:248;;;:::o;17993:419::-;;18197:2;18186:9;18182:18;18174:26;;18246:9;18240:4;18236:20;18232:1;18221:9;18217:17;18210:47;18274:131;18400:4;18274:131;:::i;:::-;18266:139;;18164:248;;;:::o;18418:419::-;;18622:2;18611:9;18607:18;18599:26;;18671:9;18665:4;18661:20;18657:1;18646:9;18642:17;18635:47;18699:131;18825:4;18699:131;:::i;:::-;18691:139;;18589:248;;;:::o;18843:222::-;;18974:2;18963:9;18959:18;18951:26;;18987:71;19055:1;19044:9;19040:17;19031:6;18987:71;:::i;:::-;18941:124;;;;:::o;19071:442::-;;19258:2;19247:9;19243:18;19235:26;;19271:71;19339:1;19328:9;19324:17;19315:6;19271:71;:::i;:::-;19352:72;19420:2;19409:9;19405:18;19396:6;19352:72;:::i;:::-;19434;19502:2;19491:9;19487:18;19478:6;19434:72;:::i;:::-;19225:288;;;;;;:::o;19519:98::-;;19604:5;19598:12;19588:22;;19577:40;;;:::o;19623:99::-;;19709:5;19703:12;19693:22;;19682:40;;;:::o;19728:147::-;;19866:3;19851:18;;19841:34;;;;:::o;19881:169::-;;19999:6;19994:3;19987:19;20039:4;20034:3;20030:14;20015:29;;19977:73;;;;:::o;20056:305::-;;20115:20;20133:1;20115:20;:::i;:::-;20110:25;;20149:20;20167:1;20149:20;:::i;:::-;20144:25;;20303:1;20235:66;20231:74;20228:1;20225:81;20222:2;;;20309:18;;:::i;:::-;20222:2;20353:1;20350;20346:9;20339:16;;20100:261;;;;:::o;20367:185::-;;20424:20;20442:1;20424:20;:::i;:::-;20419:25;;20458:20;20476:1;20458:20;:::i;:::-;20453:25;;20497:1;20487:2;;20502:18;;:::i;:::-;20487:2;20544:1;20541;20537:9;20532:14;;20409:143;;;;:::o;20558:348::-;;20621:20;20639:1;20621:20;:::i;:::-;20616:25;;20655:20;20673:1;20655:20;:::i;:::-;20650:25;;20843:1;20775:66;20771:74;20768:1;20765:81;20760:1;20753:9;20746:17;20742:105;20739:2;;;20850:18;;:::i;:::-;20739:2;20898:1;20895;20891:9;20880:20;;20606:300;;;;:::o;20912:191::-;;20972:20;20990:1;20972:20;:::i;:::-;20967:25;;21006:20;21024:1;21006:20;:::i;:::-;21001:25;;21045:1;21042;21039:8;21036:2;;;21050:18;;:::i;:::-;21036:2;21095:1;21092;21088:9;21080:17;;20957:146;;;;:::o;21109:96::-;;21175:24;21193:5;21175:24;:::i;:::-;21164:35;;21154:51;;;:::o;21211:90::-;;21288:5;21281:13;21274:21;21263:32;;21253:48;;;:::o;21307:126::-;;21384:42;21377:5;21373:54;21362:65;;21352:81;;;:::o;21439:77::-;;21505:5;21494:16;;21484:32;;;:::o;21522:134::-;;21613:37;21644:5;21613:37;:::i;:::-;21600:50;;21590:66;;;:::o;21662:152::-;;21758:50;21802:5;21758:50;:::i;:::-;21745:63;;21735:79;;;:::o;21820:126::-;;21916:24;21934:5;21916:24;:::i;:::-;21903:37;;21893:53;;;:::o;21952:126::-;;22035:37;22066:5;22035:37;:::i;:::-;22022:50;;22012:66;;;:::o;22084:113::-;;22167:24;22185:5;22167:24;:::i;:::-;22154:37;;22144:53;;;:::o;22203:307::-;22271:1;22281:113;22295:6;22292:1;22289:13;22281:113;;;22380:1;22375:3;22371:11;22365:18;22361:1;22356:3;22352:11;22345:39;22317:2;22314:1;22310:10;22305:15;;22281:113;;;22412:6;22409:1;22406:13;22403:2;;;22492:1;22483:6;22478:3;22474:16;22467:27;22403:2;22252:258;;;;:::o;22516:180::-;22564:77;22561:1;22554:88;22661:4;22658:1;22651:15;22685:4;22682:1;22675:15;22702:180;22750:77;22747:1;22740:88;22847:4;22844:1;22837:15;22871:4;22868:1;22861:15;22888:102;;22980:2;22976:7;22971:2;22964:5;22960:14;22956:28;22946:38;;22936:54;;;:::o;22996:181::-;23136:33;23132:1;23124:6;23120:14;23113:57;23102:75;:::o;23183:225::-;23323:34;23319:1;23311:6;23307:14;23300:58;23392:8;23387:2;23379:6;23375:15;23368:33;23289:119;:::o;23414:177::-;23554:29;23550:1;23542:6;23538:14;23531:53;23520:71;:::o;23597:167::-;23737:19;23733:1;23725:6;23721:14;23714:43;23703:61;:::o;23770:225::-;23910:34;23906:1;23898:6;23894:14;23887:58;23979:8;23974:2;23966:6;23962:15;23955:33;23876:119;:::o;24001:175::-;24141:27;24137:1;24129:6;24125:14;24118:51;24107:69;:::o;24182:169::-;24322:21;24318:1;24310:6;24306:14;24299:45;24288:63;:::o;24357:220::-;24497:34;24493:1;24485:6;24481:14;24474:58;24566:3;24561:2;24553:6;24549:15;24542:28;24463:114;:::o;24583:171::-;24723:23;24719:1;24711:6;24707:14;24700:47;24689:65;:::o;24760:182::-;24900:34;24896:1;24888:6;24884:14;24877:58;24866:76;:::o;24948:173::-;25088:25;25084:1;25076:6;25072:14;25065:49;25054:67;:::o;25127:181::-;25267:33;25263:1;25255:6;25251:14;25244:57;25233:75;:::o;25314:179::-;25454:31;25450:1;25442:6;25438:14;25431:55;25420:73;:::o;25499:229::-;25639:34;25635:1;25627:6;25623:14;25616:58;25708:12;25703:2;25695:6;25691:15;25684:37;25605:123;:::o;25734:222::-;25874:34;25870:1;25862:6;25858:14;25851:58;25943:5;25938:2;25930:6;25926:15;25919:30;25840:116;:::o;25962:171::-;26102:23;26098:1;26090:6;26086:14;26079:47;26068:65;:::o;26139:122::-;26212:24;26230:5;26212:24;:::i;:::-;26205:5;26202:35;26192:2;;26251:1;26248;26241:12;26192:2;26182:79;:::o;26267:116::-;26337:21;26352:5;26337:21;:::i;:::-;26330:5;26327:32;26317:2;;26373:1;26370;26363:12;26317:2;26307:76;:::o;26389:122::-;26462:24;26480:5;26462:24;:::i;:::-;26455:5;26452:35;26442:2;;26501:1;26498;26491:12;26442:2;26432:79;:::o
Swarm Source
ipfs://fb305471e496ec15ef0f6d16e2ba300a177834fd39f9004cfc3e2248c125f731
Loading...
Loading
Loading...
Loading
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.