Contract Overview
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
0x33efe19ad5ae6a406b5f32efc9f54c3d89741d0aecdcec171821d88049b213f6 | Update Pool | 8980057 | 672 days 18 hrs ago | 0x1f427a6fcdb95a7393c58552093e10a932890fa8 | IN | 0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e60 | 0 ETH | 0.000140946787 | |
0x1994b92aa16d7f0f3bda8aaad115cf84a22aa2c0957a1cdc8bf317d337e054d0 | Update Pool | 5703530 | 716 days 2 hrs ago | 0x1f427a6fcdb95a7393c58552093e10a932890fa8 | IN | 0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e60 | 0 ETH | 0.000105903098 | |
0x8c08eb9c5afab409d728c5f27ffe5cd6211a4e07b21267059d7d272f0dd17511 | Transfer Ownersh... | 4047044 | 757 days 2 hrs ago | ZipSwap: Deployer | IN | 0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e60 | 0 ETH | 0.000176380186 | |
0xe34df8cbc9dc96c4b42438aaab0f2f3d15a3c2216789c2f28e32de84696a0010 | Owner Set Master... | 4046973 | 757 days 2 hrs ago | ZipSwap: Deployer | IN | 0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e60 | 0 ETH | 0.000168890734 | |
0x33936abcec12e58a403e142cc2ca3e7a3dc2bb2219792d7ec8fd258f79de4d26 | 0x60c06040 | 4046969 | 757 days 2 hrs ago | ZipSwap: Deployer | IN | Create: SecondaryRewards | 0 ETH | 0.004876985157 |
[ Download CSV Export ]
Latest 3 internal transactions
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xedb722519d41e8d0d2cdc697b22655befa2dd72de56c0a95b429840d98c788e3 | 8922988 | 673 days 17 hrs ago | Synapse: Bridge | 0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e60 | 0.002 ETH | ||
0x8cbaa3f7a1dfede7f666e445fefbdaa385d195e06c6a4693cfcb4faed90cbd94 | 5372472 | 722 days 12 hrs ago | Synapse: Bridge | 0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e60 | 0.002 ETH | ||
0x3ebb9c0b338b33fe9fde7a10a925dff57de6bcfdad637803dc9a54f248038155 | 4222917 | 751 days 8 hrs ago | Synapse: Bridge | 0x10400eb8f8a44630cb703cd3a6df4ba0afcb6e60 | 0.002 ETH |
[ Download CSV Export ]
Contract Name:
SecondaryRewards
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.11; import { Ownable } from "Ownable.sol"; import "BoringERC20.sol"; import "IERC20.sol"; interface IZipRewards { struct UserInfo { uint128 amount; int128 rewardDebt; } function userInfo(uint pid, address user) external view returns (UserInfo memory); } abstract contract SecondaryRewarder { function notify_onDeposit(uint pid, uint depositedAmount, uint finalBalance, address sender, address to) virtual external; //to may be a zapper contract function notify_onWithdrawal(uint pid, uint withdrawnAmount, uint remainingAmount, address user, address to) virtual external; function notify_onHarvest(uint pid, uint zipAmount, address user, address recipient) virtual external; //view functions for the gui function pendingTokens(address user) virtual external view returns (IERC20[] memory, uint256[] memory); function rewardRates() virtual external view returns (IERC20[] memory, uint256[] memory); } // note: withdrawals can't be paused contract SecondaryRewards is SecondaryRewarder, Ownable { using BoringERC20 for IERC20; /// @notice Info of each user. /// `amount` LP token amount the user has provided. /// `rewardDebt` The amount of zipToken entitled to the user. struct UserInfo { uint128 amount; int128 rewardDebt; } /// @notice Address of zipToken contract. IERC20 public immutable zipToken; /// @notice Address of the master farm contract. IZipRewards public immutable zipRewards; uint public accZipPerShare; uint public lastRewardTime; uint public zipPerSecond; //total sum of all current deposits uint public lpSupply; //only needed for forceSyncDeposits uint public masterFarmPid; /// @notice Info of each user that stakes LP tokens. mapping (address => UserInfo) public userInfo; //note: maximum theoretically possible balance of Uni2 LP is 2**112-1 //accZipPerShare is 256 bit. therefore, the maximum supported reward balance is ~10^25 units (*18 decimals) uint private constant ACC_ZIP_PRECISION = 2**112-1; event SecondaryDeposit(address indexed user, uint256 amount, address indexed to); event SecondaryWithdraw(address indexed user, uint256 amount); event SecondaryHarvest(address indexed user, address recipient, uint256 amount); event SecondaryLogZipPerSecond(uint256 zipPerSecond); event SecondaryLogUpdatePool(uint256 lastRewardTime, uint256 lpSupply, uint256 accZipPerShare); modifier onlyFromZipRewards() { require(msg.sender == address(zipRewards), "must be called by ZipRewards"); _; } /// @param _rewardToken The rewardToken token contract address. constructor(IERC20 _rewardToken, IZipRewards _zipRewards) { zipToken = _rewardToken; assert(ACC_ZIP_PRECISION != 0); lastRewardTime = block.timestamp; zipRewards = _zipRewards; masterFarmPid = type(uint).max; } // GUI VIEW FUNCTIONS START function pendingTokens(address user) external view override returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) { IERC20[] memory _rewardTokens = new IERC20[](1); _rewardTokens[0] = (zipToken); uint256[] memory _rewardAmounts = new uint256[](1); _rewardAmounts[0] = pendingReward(user); return (_rewardTokens, _rewardAmounts); } function rewardRates() external view override returns (IERC20[] memory, uint256[] memory) { IERC20[] memory _rewardTokens = new IERC20[](1); _rewardTokens[0] = (zipToken); uint256[] memory _rewardRates = new uint256[](1); _rewardRates[0] = zipPerSecond; return (_rewardTokens, _rewardRates); } /// @notice View function to see pending zipToken on frontend. /// @param _user Address of user. /// @return pending zipToken reward for a given user. function pendingReward(address _user) internal view returns (uint pending) { UserInfo storage user = userInfo[_user]; uint _accZipPerShare = accZipPerShare; if (lpSupply > 0) { uint time; if(block.timestamp > zipRewardsSpentTime) { if(lastRewardTime < zipRewardsSpentTime) { time = zipRewardsSpentTime - lastRewardTime; } else { time = 0; } } else { time = block.timestamp - lastRewardTime; } uint tokenReward = time*zipPerSecond; _accZipPerShare += tokenReward*ACC_ZIP_PRECISION / lpSupply; } pending = uint(int(uint(user.amount)*_accZipPerShare/ACC_ZIP_PRECISION) - user.rewardDebt); } // GUI VIEW FUNCTIONS END function notify_onDeposit(uint pid, uint depositedAmount, uint _finalBalance, address sender, address to) external override onlyFromZipRewards { require(depositedAmount == uint(uint128(depositedAmount))); deposit(sender, uint128(depositedAmount), to); } function notify_onWithdrawal(uint pid, uint withdrawnAmount, uint remainingAmount, address user, address to) external override onlyFromZipRewards { require(withdrawnAmount == uint(uint128(withdrawnAmount))); withdraw(user, uint128(withdrawnAmount)); } function notify_onHarvest(uint pid, uint zipAmount, address user, address recipient) external override onlyFromZipRewards { harvest(user, recipient); } /* in case some deposits happen before rewarder is set on the master farm contract or rewarder is removed on the main contract and then reenabled */ function forceSyncDeposit(address who) external { require(masterFarmPid < type(uint).max); uint128 externalAmount = zipRewards.userInfo(masterFarmPid, who).amount; UserInfo storage user = userInfo[who]; uint128 localAmount = user.amount; require(externalAmount != localAmount, 'balance correct'); if(localAmount < externalAmount) { deposit(who, externalAmount-localAmount, who); } else { withdraw(who, localAmount-externalAmount); } } /// @notice Update reward variables of the pool. function updatePool() public { if (block.timestamp > lastRewardTime) { if (lpSupply > 0) { uint time; if(block.timestamp > zipRewardsSpentTime) { if(lastRewardTime < zipRewardsSpentTime) { time = zipRewardsSpentTime - lastRewardTime; } else { time = 0; } } else { time = block.timestamp - lastRewardTime; } uint tokenReward = time*zipPerSecond; accZipPerShare += tokenReward*ACC_ZIP_PRECISION / lpSupply; } lastRewardTime = block.timestamp; emit SecondaryLogUpdatePool(lastRewardTime, lpSupply, accZipPerShare); } } /// @notice Deposit LP tokens for zipToken allocation. /// @param amount LP token amount to deposit. /// @param to The receiver of `amount` deposit benefit. function deposit(address who, uint128 amount, address to) internal { updatePool(); UserInfo storage user = userInfo[to]; user.amount += amount; lpSupply += amount; uint rewardDebtChange = uint(amount)*accZipPerShare / ACC_ZIP_PRECISION; user.rewardDebt += int128(uint128(rewardDebtChange)); emit SecondaryDeposit(who, amount, to); } /// @notice Withdraw LP tokens. /// @param amount LP token amount to withdraw. function withdraw(address who, uint128 amount) internal { (UserInfo storage user, uint accumulatedZip, uint pendingZip) = getUserDataUpdatePool(who); user.rewardDebt -= int128(uint128(uint(amount)*accZipPerShare / ACC_ZIP_PRECISION)); user.amount -= amount; lpSupply -= amount; emit SecondaryWithdraw(who, amount); } function harvest(address who, address to) internal { (UserInfo storage user, uint accumulatedZip, uint pendingZip) = getUserDataUpdatePool(who); user.rewardDebt = int128(uint128(accumulatedZip)); if(pendingZip != 0) { totalPaidRewards += pendingZip; zipToken.safeTransfer(to, pendingZip); } emit SecondaryHarvest(who, to, pendingZip); } function getUserDataUpdatePool(address who) internal returns (UserInfo storage user, uint accumulatedZip, uint pendingZip) { updatePool(); user = userInfo[who]; accumulatedZip = uint(user.amount)*accZipPerShare / ACC_ZIP_PRECISION; pendingZip = uint(int(accumulatedZip)-int(user.rewardDebt)); } ////////////////////////////////////////////////////////////////////////////////////////////////////// // OWNER FUNCTIONS // ////////////////////////////////////////////////////////////////////////////////////////////////////// // note: owner can't transfer users' deposits or block withdrawals uint public totalPaidRewards; //timestamp when zip rewards run out given current balance uint64 public zipRewardsSpentTime; uint64 public totalAccumulatedRewardsLastSetTimestamp; uint public totalAccumulatedZipRewards; /// @notice Sets the zipToken per second to be distributed. Can only be called by the owner. /// @param newZipPerSecond The amount of zipToken to be distributed per second. /// uint128 because that makes overflow while multiplying zipPerSecond (as uint256) impossible. function setRewardTokenPerSecond(uint128 newZipPerSecond) external onlyOwner { updatePool(); if(block.timestamp <= zipRewardsSpentTime) { //contract didn't run out of rewards totalAccumulatedZipRewards += zipPerSecond*(block.timestamp-uint(totalAccumulatedRewardsLastSetTimestamp)); } else { //contract has run out of rewards if(totalAccumulatedRewardsLastSetTimestamp < zipRewardsSpentTime) { totalAccumulatedZipRewards += zipPerSecond*uint(zipRewardsSpentTime-totalAccumulatedRewardsLastSetTimestamp); } } uint unclaimedZip = totalAccumulatedZipRewards-totalPaidRewards; uint zipForNewRewards = zipToken.balanceOf(address(this))-unclaimedZip; uint secondsRewardsCanLast = zipForNewRewards/newZipPerSecond; zipRewardsSpentTime = uint64(block.timestamp+secondsRewardsCanLast); zipPerSecond = uint(newZipPerSecond); totalAccumulatedRewardsLastSetTimestamp = uint64(block.timestamp); lastRewardTime = block.timestamp; emit SecondaryLogZipPerSecond(newZipPerSecond); } function ownerWithdrawToken(IERC20 _token, address recipient, uint amount) external onlyOwner returns (uint) { if(amount == 0) { amount = _token.balanceOf(address(this)); } BoringERC20.safeTransfer(_token, recipient, amount); return amount; } function ownerSetMasterFarmPid(uint _masterFarmPid) external onlyOwner { masterFarmPid = _masterFarmPid; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.11; abstract contract Ownable { address private _owner; address private newOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(msg.sender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address _newOwner) public virtual onlyOwner { require(_newOwner != address(0), "Ownable: new owner is the zero address"); newOwner = _newOwner; } function acceptOwnership() public virtual { require(msg.sender == newOwner, "Ownable: sender != newOwner"); _transferOwnership(msg.sender); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address _newOwner) internal virtual { address oldOwner = _owner; _owner = _newOwner; emit OwnershipTransferred(oldOwner, _newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.11; import "IERC20.sol"; // solhint-disable avoid-low-level-calls library BoringERC20 { bytes4 private constant SIG_SYMBOL = 0x95d89b41; // symbol() bytes4 private constant SIG_NAME = 0x06fdde03; // name() bytes4 private constant SIG_DECIMALS = 0x313ce567; // decimals() bytes4 private constant SIG_BALANCE_OF = 0x70a08231; // balanceOf(address) bytes4 private constant SIG_TRANSFER = 0xa9059cbb; // transfer(address,uint256) bytes4 private constant SIG_TRANSFER_FROM = 0x23b872dd; // transferFrom(address,address,uint256) function returnDataToString(bytes memory data) internal pure returns (string memory) { unchecked { if (data.length >= 64) { return abi.decode(data, (string)); } else if (data.length == 32) { uint8 i = 0; while (i < 32 && data[i] != 0) { i++; } bytes memory bytesArray = new bytes(i); for (i = 0; i < 32 && data[i] != 0; i++) { bytesArray[i] = data[i]; } return string(bytesArray); } else { return "???"; } } } /// @notice Provides a safe ERC20.symbol version which returns '???' as fallback string. /// @param token The address of the ERC-20 token contract. /// @return (string) Token symbol. function safeSymbol(IERC20 token) internal view returns (string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_SYMBOL)); return success ? returnDataToString(data) : "???"; } /// @notice Provides a safe ERC20.name version which returns '???' as fallback string. /// @param token The address of the ERC-20 token contract. /// @return (string) Token name. function safeName(IERC20 token) internal view returns (string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_NAME)); return success ? returnDataToString(data) : "???"; } /// @notice Provides a safe ERC20.decimals version which returns '18' as fallback value. /// @param token The address of the ERC-20 token contract. /// @return (uint8) Token decimals. function safeDecimals(IERC20 token) internal view returns (uint8) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_DECIMALS)); return success && data.length == 32 ? abi.decode(data, (uint8)) : 18; } /// @notice Provides a gas-optimized balance check to avoid a redundant extcodesize check in addition to the returndatasize check. /// @param token The address of the ERC-20 token. /// @param to The address of the user to check. /// @return amount The token amount. function safeBalanceOf(IERC20 token, address to) internal view returns (uint256 amount) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_BALANCE_OF, to)); require(success && data.length >= 32, "BoringERC20: BalanceOf failed"); amount = abi.decode(data, (uint256)); } /// @notice Provides a safe ERC20.transfer version for different ERC-20 implementations. /// Reverts on a failed transfer. /// @param token The address of the ERC-20 token. /// @param to Transfer tokens to. /// @param amount The token amount. function safeTransfer( IERC20 token, address to, uint256 amount ) internal { (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(SIG_TRANSFER, to, amount)); require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: Transfer failed"); } /// @notice Provides a safe ERC20.transferFrom version for different ERC-20 implementations. /// Reverts on a failed transfer. /// @param token The address of the ERC-20 token. /// @param from Transfer tokens from. /// @param to Transfer tokens to. /// @param amount The token amount. function safeTransferFrom( IERC20 token, address from, address to, uint256 amount ) internal { (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(SIG_TRANSFER_FROM, from, to, amount)); require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: TransferFrom failed"); } }
pragma solidity >=0.5.0; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 500 }, "libraries": { "SecondaryRewards.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_rewardToken","type":"address"},{"internalType":"contract IZipRewards","name":"_zipRewards","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"SecondaryDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SecondaryHarvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lastRewardTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lpSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accZipPerShare","type":"uint256"}],"name":"SecondaryLogUpdatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"zipPerSecond","type":"uint256"}],"name":"SecondaryLogZipPerSecond","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SecondaryWithdraw","type":"event"},{"inputs":[],"name":"accZipPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"forceSyncDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastRewardTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterFarmPid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"_finalBalance","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"notify_onDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"zipAmount","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"notify_onHarvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"withdrawnAmount","type":"uint256"},{"internalType":"uint256","name":"remainingAmount","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"notify_onWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_masterFarmPid","type":"uint256"}],"name":"ownerSetMasterFarmPid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ownerWithdrawToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"pendingTokens","outputs":[{"internalType":"contract IERC20[]","name":"rewardTokens","type":"address[]"},{"internalType":"uint256[]","name":"rewardAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRates","outputs":[{"internalType":"contract IERC20[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"newZipPerSecond","type":"uint128"}],"name":"setRewardTokenPerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAccumulatedRewardsLastSetTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAccumulatedZipRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPaidRewards","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":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"int128","name":"rewardDebt","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zipPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zipRewards","outputs":[{"internalType":"contract IZipRewards","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zipRewardsSpentTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zipToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c06040523480156200001157600080fd5b5060405162001c4438038062001c448339810160408190526200003491620000ca565b6200003f3362000061565b6001600160a01b03918216608052426003551660a05260001960065562000109565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000c757600080fd5b50565b60008060408385031215620000de57600080fd5b8251620000eb81620000b1565b6020840151909250620000fe81620000b1565b809150509250929050565b60805160a051611add62000167600039600081816101b8015281816106b30152818161080d015281816109f10152610b3501526000818161032b0152818161056901528181610a9101528181610beb01526112b20152611add6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806379ba5097116100ee578063bbe70ace11610097578063e4438ce711610071578063e4438ce7146103be578063e8741b2a146103c7578063f2fde38b146103d0578063f585b64f146103e357600080fd5b8063bbe70ace14610390578063c031a66f146103a3578063e3161ddd146103b657600080fd5b80638da5cb5b116100c85780638da5cb5b146103605780639231cf7414610371578063a88a5c161461037a57600080fd5b806379ba50971461031e5780637f37b4101461032657806386c9956a1461034d57600080fd5b8063449163241161015b5780635ce31d0b116101355780635ce31d0b146102d557806362c962a2146102f057806365e4080f14610303578063715018a61461031657600080fd5b806344916324146102b05780634e9fcfcb146102b957806355f6b7d3146102cc57600080fd5b80632a7907201161018c5780632a790720146102635780633b22fc031461027a578063425d1c991461028357600080fd5b80630a1aef7c146101b35780631959a002146101f757806319bdbd5a1461024e575b600080fd5b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61022c6102053660046115e2565b6007602052600090815260409020546001600160801b03811690600160801b9004600f0b82565b604080516001600160801b039093168352600f9190910b6020830152016101ee565b61026161025c36600461161b565b6103f6565b005b61026c60065481565b6040519081526020016101ee565b61026c60055481565b6009546102979067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ee565b61026c60045481565b6102616102c73660046115e2565b610686565b61026c60085481565b60095461029790600160401b900467ffffffffffffffff1681565b6102616102fe366004611638565b610802565b61026161031136600461168e565b6108a0565b61026161090e565b610261610983565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b61026161035b3660046116a7565b6109e6565b6000546001600160a01b03166101da565b61026c60035481565b610382610a68565b6040516101ee9291906116f1565b61026161039e366004611638565b610b2a565b6103826103b13660046115e2565b610bc2565b610261610c8b565b61026c600a5481565b61026c60025481565b6102616103de3660046115e2565b610d9b565b61026c6103f1366004611775565b610e98565b336104096000546001600160a01b031690565b6001600160a01b0316146104645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61046c610c8b565b60095467ffffffffffffffff1642116104c65760095461049d90600160401b900467ffffffffffffffff16426117cc565b6004546104aa91906117e3565b600a60008282546104bb9190611802565b909155506105329050565b60095467ffffffffffffffff808216600160401b909204161015610532576009546105049067ffffffffffffffff600160401b82048116911661181a565b67ffffffffffffffff1660045461051b91906117e3565b600a600082825461052c9190611802565b90915550505b6000600854600a5461054491906117cc565b6040516370a0823160e01b815230600482015290915060009082906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d49190611843565b6105de91906117cc565b905060006105f56001600160801b0385168361185c565b90506106018142611802565b600980546001600160801b038716600481905567ffffffffffffffff9384166fffffffffffffffffffffffffffffffff1990921691909117600160401b4294851602179091556003919091556040519081527f3d5c20aef7f62af877eb5dd5fe5e4b7c9f2bece3abb562f6a5eec4ec7eee9b999060200160405180910390a150505050565b6000196006541061069657600080fd5b6006546040516393f1a40b60e01b81526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916393f1a40b916106fa9186906004019182526001600160a01b0316602082015260400190565b6040805180830381865afa158015610716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073a919061187e565b516001600160a01b03831660009081526007602052604090208054919250906001600160801b039081169083168114156107b65760405162461bcd60e51b815260206004820152600f60248201527f62616c616e636520636f72726563740000000000000000000000000000000000604482015260640161045b565b826001600160801b0316816001600160801b031610156107e9576107e4846107de83866118f2565b86610f85565b6107fc565b6107fc846107f785846118f2565b6110db565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461087a5760405162461bcd60e51b815260206004820152601c60248201527f6d7573742062652063616c6c6564206279205a69705265776172647300000000604482015260640161045b565b836001600160801b0316841461088f57600080fd5b61089982856110db565b5050505050565b336108b36000546001600160a01b031690565b6001600160a01b0316146109095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b600655565b336109216000546001600160a01b031690565b6001600160a01b0316146109775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b61098160006111fd565b565b6001546001600160a01b031633146109dd5760405162461bcd60e51b815260206004820152601b60248201527f4f776e61626c653a2073656e64657220213d206e65774f776e65720000000000604482015260640161045b565b610981336111fd565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a5e5760405162461bcd60e51b815260206004820152601c60248201527f6d7573742062652063616c6c6564206279205a69705265776172647300000000604482015260640161045b565b6107fc828261125a565b6040805160018082528183019092526060918291600091602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610ac357610ac3611912565b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260009181602001602082028036833701905050905060045481600081518110610b1657610b16611912565b602090810291909101015290939092509050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ba25760405162461bcd60e51b815260206004820152601c60248201527f6d7573742062652063616c6c6564206279205a69705265776172647300000000604482015260640161045b565b836001600160801b03168414610bb757600080fd5b610899828583610f85565b6040805160018082528183019092526060918291600091602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610c1d57610c1d611912565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020016020820280368337019050509050610c638561131c565b81600081518110610c7657610c76611912565b60209081029190910101529094909350915050565b6003544211156109815760055415610d4f5760095460009067ffffffffffffffff16421115610cf55760095460035467ffffffffffffffff9091161115610ced57600354600954610ce6919067ffffffffffffffff166117cc565b9050610d05565b506000610d05565b600354610d0290426117cc565b90505b600060045482610d1591906117e3565b600554909150610d2c6001600160701b03836117e3565b610d36919061185c565b60026000828254610d479190611802565b909155505050505b42600381905560055460025460408051938452602084019290925282820152517f8fab20431759bff599200e12ec1be9fa0d583aca6434239ee51902b0d1bef8579181900360600190a1565b33610dae6000546001600160a01b031690565b6001600160a01b031614610e045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b6001600160a01b038116610e695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161045b565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600033610ead6000546001600160a01b031690565b6001600160a01b031614610f035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b81610f73576040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190611843565b91505b610f7e84848461142d565b5092915050565b610f8d610c8b565b6001600160a01b0381166000908152600760205260408120805490918491839190610fc29084906001600160801b0316611928565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550826001600160801b0316600560008282546110019190611802565b90915550506002546000906001600160701b0390611028906001600160801b0387166117e3565b611032919061185c565b825490915081908390601090611053908490600160801b9004600f0b611953565b92506101000a8154816001600160801b030219169083600f0b6001600160801b03160217905550826001600160a01b0316856001600160a01b03167f8b877e6b1064b5889e5540ad45c5e217984c5654267002d78b18d907af50ca2d866040516110cc91906001600160801b0391909116815260200190565b60405180910390a35050505050565b60008060006110e985611556565b9250925092506001600160701b03600254856001600160801b031661110e91906117e3565b611118919061185c565b83548490601090611134908490600160801b9004600f0b6119a2565b82546101009290920a6001600160801b038181021990931691831602179091558454869250859160009161116a918591166118f2565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550836001600160801b0316600560008282546111a991906117cc565b90915550506040516001600160801b03851681526001600160a01b038616907f2688d1d3fc5dea3571ef8bfe771ccbfd5f847fbc451f1127d8463d70defb4b77906020015b60405180910390a25050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600061126885611556565b82546001600160801b03808416600160801b0291161783559194509250905080156112d957806008600082825461129f9190611802565b909155506112d990506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016858361142d565b604080516001600160a01b038681168252602082018490528716917ff2cae54821e786d228c3656c39d8551ac64edd1282545091850211b60146644491016111ee565b6001600160a01b0381166000908152600760205260408120600254600554156113e75760095460009067ffffffffffffffff164211156113975760095460035467ffffffffffffffff909116111561138f57600354600954611388919067ffffffffffffffff166117cc565b90506113a7565b5060006113a7565b6003546113a490426117cc565b90505b6000600454826113b791906117e3565b6005549091506113ce6001600160701b03836117e3565b6113d8919061185c565b6113e29084611802565b925050505b8154600160801b8104600f0b906001600160701b03906114119084906001600160801b03166117e3565b61141b919061185c565b61142591906119f2565b949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052915160009283929087169161149e9190611a4a565b6000604051808303816000865af19150503d80600081146114db576040519150601f19603f3d011682016040523d82523d6000602084013e6114e0565b606091505b509150915081801561150a57508051158061150a57508080602001905181019061150a9190611a85565b6108995760405162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015260640161045b565b6000806000611563610c8b565b6001600160a01b038416600090815260076020526040902060025481549194506001600160701b039161159f91906001600160801b03166117e3565b6115a9919061185c565b83549092506115c290600160801b9004600f0b836119f2565b929491935050565b6001600160a01b03811681146115df57600080fd5b50565b6000602082840312156115f457600080fd5b81356115ff816115ca565b9392505050565b6001600160801b03811681146115df57600080fd5b60006020828403121561162d57600080fd5b81356115ff81611606565b600080600080600060a0868803121561165057600080fd5b8535945060208601359350604086013592506060860135611670816115ca565b91506080860135611680816115ca565b809150509295509295909350565b6000602082840312156116a057600080fd5b5035919050565b600080600080608085870312156116bd57600080fd5b843593506020850135925060408501356116d6816115ca565b915060608501356116e6816115ca565b939692955090935050565b604080825283519082018190526000906020906060840190828701845b828110156117335781516001600160a01b03168452928401929084019060010161170e565b5050508381038285015284518082528583019183019060005b818110156117685783518352928401929184019160010161174c565b5090979650505050505050565b60008060006060848603121561178a57600080fd5b8335611795816115ca565b925060208401356117a5816115ca565b929592945050506040919091013590565b634e487b7160e01b600052601160045260246000fd5b6000828210156117de576117de6117b6565b500390565b60008160001904831182151516156117fd576117fd6117b6565b500290565b60008219821115611815576118156117b6565b500190565b600067ffffffffffffffff8381169083168181101561183b5761183b6117b6565b039392505050565b60006020828403121561185557600080fd5b5051919050565b60008261187957634e487b7160e01b600052601260045260246000fd5b500490565b60006040828403121561189057600080fd5b6040516040810181811067ffffffffffffffff821117156118c157634e487b7160e01b600052604160045260246000fd5b60405282516118cf81611606565b81526020830151600f81900b81146118e657600080fd5b60208201529392505050565b60006001600160801b038381169083168181101561183b5761183b6117b6565b634e487b7160e01b600052603260045260246000fd5b60006001600160801b0380831681851680830382111561194a5761194a6117b6565b01949350505050565b600081600f0b83600f0b600082128260016001607f1b030382138115161561197d5761197d6117b6565b8260016001607f1b0319038212811615611999576119996117b6565b50019392505050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156119cd576119cd6117b6565b8160016001607f1b030183138116156119e8576119e86117b6565b5090039392505050565b60008083128015600160ff1b850184121615611a1057611a106117b6565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615611a4457611a446117b6565b50500390565b6000825160005b81811015611a6b5760208186018101518583015201611a51565b81811115611a7a576000828501525b509190910192915050565b600060208284031215611a9757600080fd5b815180151581146115ff57600080fdfea2646970667358221220b4ca66eff4968aacef888b9330437a7c77f92523108771e4a92601dd20e0cc7f64736f6c634300080c00330000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c806379ba5097116100ee578063bbe70ace11610097578063e4438ce711610071578063e4438ce7146103be578063e8741b2a146103c7578063f2fde38b146103d0578063f585b64f146103e357600080fd5b8063bbe70ace14610390578063c031a66f146103a3578063e3161ddd146103b657600080fd5b80638da5cb5b116100c85780638da5cb5b146103605780639231cf7414610371578063a88a5c161461037a57600080fd5b806379ba50971461031e5780637f37b4101461032657806386c9956a1461034d57600080fd5b8063449163241161015b5780635ce31d0b116101355780635ce31d0b146102d557806362c962a2146102f057806365e4080f14610303578063715018a61461031657600080fd5b806344916324146102b05780634e9fcfcb146102b957806355f6b7d3146102cc57600080fd5b80632a7907201161018c5780632a790720146102635780633b22fc031461027a578063425d1c991461028357600080fd5b80630a1aef7c146101b35780631959a002146101f757806319bdbd5a1461024e575b600080fd5b6101da7f0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c81565b6040516001600160a01b0390911681526020015b60405180910390f35b61022c6102053660046115e2565b6007602052600090815260409020546001600160801b03811690600160801b9004600f0b82565b604080516001600160801b039093168352600f9190910b6020830152016101ee565b61026161025c36600461161b565b6103f6565b005b61026c60065481565b6040519081526020016101ee565b61026c60055481565b6009546102979067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ee565b61026c60045481565b6102616102c73660046115e2565b610686565b61026c60085481565b60095461029790600160401b900467ffffffffffffffff1681565b6102616102fe366004611638565b610802565b61026161031136600461168e565b6108a0565b61026161090e565b610261610983565b6101da7f0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb81565b61026161035b3660046116a7565b6109e6565b6000546001600160a01b03166101da565b61026c60035481565b610382610a68565b6040516101ee9291906116f1565b61026161039e366004611638565b610b2a565b6103826103b13660046115e2565b610bc2565b610261610c8b565b61026c600a5481565b61026c60025481565b6102616103de3660046115e2565b610d9b565b61026c6103f1366004611775565b610e98565b336104096000546001600160a01b031690565b6001600160a01b0316146104645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61046c610c8b565b60095467ffffffffffffffff1642116104c65760095461049d90600160401b900467ffffffffffffffff16426117cc565b6004546104aa91906117e3565b600a60008282546104bb9190611802565b909155506105329050565b60095467ffffffffffffffff808216600160401b909204161015610532576009546105049067ffffffffffffffff600160401b82048116911661181a565b67ffffffffffffffff1660045461051b91906117e3565b600a600082825461052c9190611802565b90915550505b6000600854600a5461054491906117cc565b6040516370a0823160e01b815230600482015290915060009082906001600160a01b037f0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb16906370a0823190602401602060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d49190611843565b6105de91906117cc565b905060006105f56001600160801b0385168361185c565b90506106018142611802565b600980546001600160801b038716600481905567ffffffffffffffff9384166fffffffffffffffffffffffffffffffff1990921691909117600160401b4294851602179091556003919091556040519081527f3d5c20aef7f62af877eb5dd5fe5e4b7c9f2bece3abb562f6a5eec4ec7eee9b999060200160405180910390a150505050565b6000196006541061069657600080fd5b6006546040516393f1a40b60e01b81526000916001600160a01b037f0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c16916393f1a40b916106fa9186906004019182526001600160a01b0316602082015260400190565b6040805180830381865afa158015610716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073a919061187e565b516001600160a01b03831660009081526007602052604090208054919250906001600160801b039081169083168114156107b65760405162461bcd60e51b815260206004820152600f60248201527f62616c616e636520636f72726563740000000000000000000000000000000000604482015260640161045b565b826001600160801b0316816001600160801b031610156107e9576107e4846107de83866118f2565b86610f85565b6107fc565b6107fc846107f785846118f2565b6110db565b50505050565b336001600160a01b037f0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c161461087a5760405162461bcd60e51b815260206004820152601c60248201527f6d7573742062652063616c6c6564206279205a69705265776172647300000000604482015260640161045b565b836001600160801b0316841461088f57600080fd5b61089982856110db565b5050505050565b336108b36000546001600160a01b031690565b6001600160a01b0316146109095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b600655565b336109216000546001600160a01b031690565b6001600160a01b0316146109775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b61098160006111fd565b565b6001546001600160a01b031633146109dd5760405162461bcd60e51b815260206004820152601b60248201527f4f776e61626c653a2073656e64657220213d206e65774f776e65720000000000604482015260640161045b565b610981336111fd565b336001600160a01b037f0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c1614610a5e5760405162461bcd60e51b815260206004820152601c60248201527f6d7573742062652063616c6c6564206279205a69705265776172647300000000604482015260640161045b565b6107fc828261125a565b6040805160018082528183019092526060918291600091602080830190803683370190505090507f0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb81600081518110610ac357610ac3611912565b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260009181602001602082028036833701905050905060045481600081518110610b1657610b16611912565b602090810291909101015290939092509050565b336001600160a01b037f0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c1614610ba25760405162461bcd60e51b815260206004820152601c60248201527f6d7573742062652063616c6c6564206279205a69705265776172647300000000604482015260640161045b565b836001600160801b03168414610bb757600080fd5b610899828583610f85565b6040805160018082528183019092526060918291600091602080830190803683370190505090507f0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb81600081518110610c1d57610c1d611912565b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252600091816020016020820280368337019050509050610c638561131c565b81600081518110610c7657610c76611912565b60209081029190910101529094909350915050565b6003544211156109815760055415610d4f5760095460009067ffffffffffffffff16421115610cf55760095460035467ffffffffffffffff9091161115610ced57600354600954610ce6919067ffffffffffffffff166117cc565b9050610d05565b506000610d05565b600354610d0290426117cc565b90505b600060045482610d1591906117e3565b600554909150610d2c6001600160701b03836117e3565b610d36919061185c565b60026000828254610d479190611802565b909155505050505b42600381905560055460025460408051938452602084019290925282820152517f8fab20431759bff599200e12ec1be9fa0d583aca6434239ee51902b0d1bef8579181900360600190a1565b33610dae6000546001600160a01b031690565b6001600160a01b031614610e045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b6001600160a01b038116610e695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161045b565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600033610ead6000546001600160a01b031690565b6001600160a01b031614610f035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161045b565b81610f73576040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190611843565b91505b610f7e84848461142d565b5092915050565b610f8d610c8b565b6001600160a01b0381166000908152600760205260408120805490918491839190610fc29084906001600160801b0316611928565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550826001600160801b0316600560008282546110019190611802565b90915550506002546000906001600160701b0390611028906001600160801b0387166117e3565b611032919061185c565b825490915081908390601090611053908490600160801b9004600f0b611953565b92506101000a8154816001600160801b030219169083600f0b6001600160801b03160217905550826001600160a01b0316856001600160a01b03167f8b877e6b1064b5889e5540ad45c5e217984c5654267002d78b18d907af50ca2d866040516110cc91906001600160801b0391909116815260200190565b60405180910390a35050505050565b60008060006110e985611556565b9250925092506001600160701b03600254856001600160801b031661110e91906117e3565b611118919061185c565b83548490601090611134908490600160801b9004600f0b6119a2565b82546101009290920a6001600160801b038181021990931691831602179091558454869250859160009161116a918591166118f2565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550836001600160801b0316600560008282546111a991906117cc565b90915550506040516001600160801b03851681526001600160a01b038616907f2688d1d3fc5dea3571ef8bfe771ccbfd5f847fbc451f1127d8463d70defb4b77906020015b60405180910390a25050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600061126885611556565b82546001600160801b03808416600160801b0291161783559194509250905080156112d957806008600082825461129f9190611802565b909155506112d990506001600160a01b037f0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb16858361142d565b604080516001600160a01b038681168252602082018490528716917ff2cae54821e786d228c3656c39d8551ac64edd1282545091850211b60146644491016111ee565b6001600160a01b0381166000908152600760205260408120600254600554156113e75760095460009067ffffffffffffffff164211156113975760095460035467ffffffffffffffff909116111561138f57600354600954611388919067ffffffffffffffff166117cc565b90506113a7565b5060006113a7565b6003546113a490426117cc565b90505b6000600454826113b791906117e3565b6005549091506113ce6001600160701b03836117e3565b6113d8919061185c565b6113e29084611802565b925050505b8154600160801b8104600f0b906001600160701b03906114119084906001600160801b03166117e3565b61141b919061185c565b61142591906119f2565b949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052915160009283929087169161149e9190611a4a565b6000604051808303816000865af19150503d80600081146114db576040519150601f19603f3d011682016040523d82523d6000602084013e6114e0565b606091505b509150915081801561150a57508051158061150a57508080602001905181019061150a9190611a85565b6108995760405162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015260640161045b565b6000806000611563610c8b565b6001600160a01b038416600090815260076020526040902060025481549194506001600160701b039161159f91906001600160801b03166117e3565b6115a9919061185c565b83549092506115c290600160801b9004600f0b836119f2565b929491935050565b6001600160a01b03811681146115df57600080fd5b50565b6000602082840312156115f457600080fd5b81356115ff816115ca565b9392505050565b6001600160801b03811681146115df57600080fd5b60006020828403121561162d57600080fd5b81356115ff81611606565b600080600080600060a0868803121561165057600080fd5b8535945060208601359350604086013592506060860135611670816115ca565b91506080860135611680816115ca565b809150509295509295909350565b6000602082840312156116a057600080fd5b5035919050565b600080600080608085870312156116bd57600080fd5b843593506020850135925060408501356116d6816115ca565b915060608501356116e6816115ca565b939692955090935050565b604080825283519082018190526000906020906060840190828701845b828110156117335781516001600160a01b03168452928401929084019060010161170e565b5050508381038285015284518082528583019183019060005b818110156117685783518352928401929184019160010161174c565b5090979650505050505050565b60008060006060848603121561178a57600080fd5b8335611795816115ca565b925060208401356117a5816115ca565b929592945050506040919091013590565b634e487b7160e01b600052601160045260246000fd5b6000828210156117de576117de6117b6565b500390565b60008160001904831182151516156117fd576117fd6117b6565b500290565b60008219821115611815576118156117b6565b500190565b600067ffffffffffffffff8381169083168181101561183b5761183b6117b6565b039392505050565b60006020828403121561185557600080fd5b5051919050565b60008261187957634e487b7160e01b600052601260045260246000fd5b500490565b60006040828403121561189057600080fd5b6040516040810181811067ffffffffffffffff821117156118c157634e487b7160e01b600052604160045260246000fd5b60405282516118cf81611606565b81526020830151600f81900b81146118e657600080fd5b60208201529392505050565b60006001600160801b038381169083168181101561183b5761183b6117b6565b634e487b7160e01b600052603260045260246000fd5b60006001600160801b0380831681851680830382111561194a5761194a6117b6565b01949350505050565b600081600f0b83600f0b600082128260016001607f1b030382138115161561197d5761197d6117b6565b8260016001607f1b0319038212811615611999576119996117b6565b50019392505050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156119cd576119cd6117b6565b8160016001607f1b030183138116156119e8576119e86117b6565b5090039392505050565b60008083128015600160ff1b850184121615611a1057611a106117b6565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615611a4457611a446117b6565b50500390565b6000825160005b81811015611a6b5760208186018101518583015201611a51565b81811115611a7a576000828501525b509190910192915050565b600060208284031215611a9757600080fd5b815180151581146115ff57600080fdfea2646970667358221220b4ca66eff4968aacef888b9330437a7c77f92523108771e4a92601dd20e0cc7f64736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c
-----Decoded View---------------
Arg [0] : _rewardToken (address): 0x0b5740c6b4a97f90eF2F0220651Cca420B868FfB
Arg [1] : _zipRewards (address): 0x1e2F8e5f94f366eF5Dc041233c0738b1c1C2Cb0c
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000b5740c6b4a97f90ef2f0220651cca420b868ffb
Arg [1] : 0000000000000000000000001e2f8e5f94f366ef5dc041233c0738b1c1c2cb0c
Deployed ByteCode Sourcemap
1050:10377:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1522:39;;;;;;;;-1:-1:-1;;;;;197:55:4;;;179:74;;167:2;152:18;1522:39:3;;;;;;;;1857:45;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1857:45:3;;;-1:-1:-1;;;1857:45:3;;;;;;;;;;-1:-1:-1;;;;;865:47:4;;;847:66;;960:2;949:22;;;;944:2;929:18;;922:50;820:18;1857:45:3;675:303:4;9855:1150:3;;;;;;:::i;:::-;;:::i;:::-;;1768:25;;;;;;;;;1532::4;;;1520:2;1505:18;1768:25:3;1386:177:4;1702:20:3;;;;;;9427:33;;;;;;;;;;;;1742:18:4;1730:31;;;1712:50;;1700:2;1685:18;9427:33:3;1568:200:4;1632:24:3;;;;;;5725:534;;;;;;:::i;:::-;;:::i;9330:28::-;;;;;;9466:53;;;;;-1:-1:-1;;;9466:53:3;;;;;;5110:271;;;;;;:::i;:::-;;:::i;11307:118::-;;;;;;:::i;:::-;;:::i;1102:101:2:-;;;:::i;1550:161::-;;;:::i;1431:32:3:-;;;;;5387:163;;;;;;:::i;:::-;;:::i;472:85:2:-;518:7;544:6;-1:-1:-1;;;;;544:6:2;472:85;;1600:26:3;;;;;;3448:337;;;:::i;:::-;;;;;;;;:::i;4831:273::-;;;;;;:::i;:::-;;:::i;3047:391::-;;;;;;:::i;:::-;;:::i;6318:843::-;;;:::i;9525:38::-;;;;;;1568:26;;;;;;1352:192:2;;;;;;:::i;:::-;;:::i;11011:290:3:-;;;;;;:::i;:::-;;:::i;9855:1150::-;695:10:2;684:7;518;544:6;-1:-1:-1;;;;;544:6:2;;472:85;684:7;-1:-1:-1;;;;;684:21:2;;676:66;;;;-1:-1:-1;;;676:66:2;;5460:2:4;676:66:2;;;5442:21:4;;;5479:18;;;5472:30;5538:34;5518:18;;;5511:62;5590:18;;676:66:2;;;;;;;;;9942:12:3::1;:10;:12::i;:::-;9986:19;::::0;::::1;;9967:15;:38;9964:514;;10135:39;::::0;10114:61:::1;::::0;-1:-1:-1;;;10135:39:3;::::1;;;10114:15;:61;:::i;:::-;10100:12;;:76;;;;:::i;:::-;10070:26;;:106;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;9964:514:3::1;::::0;-1:-1:-1;9964:514:3::1;;10306:19;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;;10264:39:3;;::::1;;:61;10261:207;;;10413:39;::::0;10393:59:::1;::::0;10413:39:::1;-1:-1:-1::0;;;10413:39:3;::::1;::::0;::::1;::::0;10393:19:::1;:59;:::i;:::-;10388:65;;10375:12;;:78;;;;:::i;:::-;10345:26;;:108;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;10261:207:3::1;10487:17;10534:16;;10507:26;;:43;;;;:::i;:::-;10584:33;::::0;-1:-1:-1;;;10584:33:3;;10611:4:::1;10584:33;::::0;::::1;179:74:4::0;10487:63:3;;-1:-1:-1;10560:21:3::1;::::0;10487:63;;-1:-1:-1;;;;;10584:8:3::1;:18;::::0;::::1;::::0;152::4;;10584:33:3::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;:::i;:::-;10560:70:::0;-1:-1:-1;10640:26:3::1;10669:32;-1:-1:-1::0;;;;;10669:32:3;::::1;10560:70:::0;10669:32:::1;:::i;:::-;10640:61:::0;-1:-1:-1;10740:37:3::1;10640:61:::0;10740:15:::1;:37;:::i;:::-;10711:19;:67:::0;;-1:-1:-1;;;;;10803:21:3;::::1;10788:12;:36:::0;;;10711:67:::1;::::0;;::::1;-1:-1:-1::0;;10834:65:3;;;;;;;-1:-1:-1;;;10883:15:3::1;10834:65:::0;;::::1;;;::::0;;;10910:14:::1;:32:::0;;;;10957:41:::1;::::0;6978:66:4;;;10957:41:3::1;::::0;6966:2:4;6951:18;10957:41:3::1;;;;;;;9932:1073;;;9855:1150:::0;:::o;5725:534::-;-1:-1:-1;;5791:13:3;;:30;5783:39;;;;;;5877:13;;5857:39;;-1:-1:-1;;;5857:39:3;;5832:22;;-1:-1:-1;;;;;5857:10:3;:19;;;;:39;;5892:3;;5857:39;;7229:25:4;;;-1:-1:-1;;;;;7290:55:4;7285:2;7270:18;;7263:83;7217:2;7202:18;;7055:297;5857:39:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;-1:-1:-1;;;;;5937:13:3;;5857:46;5937:13;;;:8;:13;;;;;5982:11;;5857:46;;-1:-1:-1;5937:13:3;-1:-1:-1;;;;;5982:11:3;;;;6011:29;;;;;6003:57;;;;-1:-1:-1;;;6003:57:3;;8465:2:4;6003:57:3;;;8447:21:4;8504:2;8484:18;;;8477:30;8543:17;8523:18;;;8516:45;8578:18;;6003:57:3;8263:339:4;6003:57:3;6087:14;-1:-1:-1;;;;;6073:28:3;:11;-1:-1:-1;;;;;6073:28:3;;6070:183;;;6117:45;6125:3;6130:26;6145:11;6130:14;:26;:::i;:::-;6158:3;6117:7;:45::i;:::-;6070:183;;;6201:41;6210:3;6215:26;6227:14;6215:11;:26;:::i;:::-;6201:8;:41::i;:::-;5773:486;;;5725:534;:::o;5110:271::-;2597:10;-1:-1:-1;;;;;2619:10:3;2597:33;;2589:74;;;;-1:-1:-1;;;2589:74:3;;9060:2:4;2589:74:3;;;9042:21:4;9099:2;9079:18;;;9072:30;9138;9118:18;;;9111:58;9186:18;;2589:74:3;8858:352:4;2589:74:3;5306:15:::1;-1:-1:-1::0;;;;;5293:30:3::1;5274:15;:49;5266:58;;;::::0;::::1;;5334:40;5343:4;5357:15;5334:8;:40::i;:::-;5110:271:::0;;;;;:::o;11307:118::-;695:10:2;684:7;518;544:6;-1:-1:-1;;;;;544:6:2;;472:85;684:7;-1:-1:-1;;;;;684:21:2;;676:66;;;;-1:-1:-1;;;676:66:2;;5460:2:4;676:66:2;;;5442:21:4;;;5479:18;;;5472:30;5538:34;5518:18;;;5511:62;5590:18;;676:66:2;5258:356:4;676:66:2;11388:13:3::1;:30:::0;11307:118::o;1102:101:2:-;695:10;684:7;518;544:6;-1:-1:-1;;;;;544:6:2;;472:85;684:7;-1:-1:-1;;;;;684:21:2;;676:66;;;;-1:-1:-1;;;676:66:2;;5460:2:4;676:66:2;;;5442:21:4;;;5479:18;;;5472:30;5538:34;5518:18;;;5511:62;5590:18;;676:66:2;5258:356:4;676:66:2;1166:30:::1;1193:1;1166:18;:30::i;:::-;1102:101::o:0;1550:161::-;1624:8;;-1:-1:-1;;;;;1624:8:2;1610:10;:22;1602:62;;;;-1:-1:-1;;;1602:62:2;;9417:2:4;1602:62:2;;;9399:21:4;9456:2;9436:18;;;9429:30;9495:29;9475:18;;;9468:57;9542:18;;1602:62:2;9215:351:4;1602:62:2;1674:30;1693:10;1674:18;:30::i;5387:163:3:-;2597:10;-1:-1:-1;;;;;2619:10:3;2597:33;;2589:74;;;;-1:-1:-1;;;2589:74:3;;9060:2:4;2589:74:3;;;9042:21:4;9099:2;9079:18;;;9072:30;9138;9118:18;;;9111:58;9186:18;;2589:74:3;8858:352:4;2589:74:3;5519:24:::1;5527:4;5533:9;5519:7;:24::i;3448:337::-:0;3580:15;;;3593:1;3580:15;;;;;;;;;3503;;;;3548:29;;3580:15;;;;;;;;;;;-1:-1:-1;3580:15:3;3548:47;;3625:8;3605:13;3619:1;3605:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3605:29:3;;;;:16;;;;;;;;;;;:29;3676:16;;;3690:1;3676:16;;;;;;;;;3644:29;;3676:16;;;;;;;;;;;;-1:-1:-1;3676:16:3;3644:48;;3720:12;;3702;3715:1;3702:15;;;;;;;;:::i;:::-;;;;;;;;;;:30;3750:13;;3765:12;;-1:-1:-1;3448:337:3;-1:-1:-1;3448:337:3:o;4831:273::-;2597:10;-1:-1:-1;;;;;2619:10:3;2597:33;;2589:74;;;;-1:-1:-1;;;2589:74:3;;9060:2:4;2589:74:3;;;9042:21:4;9099:2;9079:18;;;9072:30;9138;9118:18;;;9111:58;9186:18;;2589:74:3;8858:352:4;2589:74:3;5024:15:::1;-1:-1:-1::0;;;;;5011:30:3::1;4992:15;:49;4984:58;;;::::0;::::1;;5052:45;5060:6;5076:15;5094:2;5052:7;:45::i;3047:391::-:0;3220:15;;;3233:1;3220:15;;;;;;;;;3116:28;;;;3188:29;;3220:15;;;;;;;;;;;-1:-1:-1;3220:15:3;3188:47;;3265:8;3245:13;3259:1;3245:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3245:29:3;;;;:16;;;;;;;;;;;:29;3318:16;;;3332:1;3318:16;;;;;;;;;3284:31;;3318:16;;;;;;;;;;;;-1:-1:-1;3318:16:3;3284:50;;3364:19;3378:4;3364:13;:19::i;:::-;3344:14;3359:1;3344:17;;;;;;;;:::i;:::-;;;;;;;;;;:39;3401:13;;3416:14;;-1:-1:-1;3047:391:3;-1:-1:-1;;3047:391:3:o;6318:843::-;6379:14;;6361:15;:32;6357:798;;;6413:8;;:12;6409:607;;6493:19;;6445:9;;6493:19;;6475:15;:37;6472:400;;;6556:19;;6539:14;;6556:19;;;;-1:-1:-1;6536:216:3;;;6632:14;;6610:19;;:36;;6632:14;6610:19;;:36;:::i;:::-;6603:43;;6472:400;;6536:216;-1:-1:-1;6728:1:3;6472:400;;;6839:14;;6821:32;;:15;:32;:::i;:::-;6814:39;;6472:400;6889:16;6913:12;;6908:4;:17;;;;:::i;:::-;6993:8;;6889:36;;-1:-1:-1;6961:29:3;-1:-1:-1;;;;;6889:36:3;6961:29;:::i;:::-;:40;;;;:::i;:::-;6943:14;;:58;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;6409:607:3;7046:15;7029:14;:32;;;7119:8;;7129:14;;7080:64;;;9905:25:4;;;9961:2;9946:18;;9939:34;;;;9989:18;;;9982:34;7080:64:3;;;;;;9893:2:4;7080:64:3;;;6318:843::o;1352:192:2:-;695:10;684:7;518;544:6;-1:-1:-1;;;;;544:6:2;;472:85;684:7;-1:-1:-1;;;;;684:21:2;;676:66;;;;-1:-1:-1;;;676:66:2;;5460:2:4;676:66:2;;;5442:21:4;;;5479:18;;;5472:30;5538:34;5518:18;;;5511:62;5590:18;;676:66:2;5258:356:4;676:66:2;-1:-1:-1;;;;;1441:23:2;::::1;1433:74;;;::::0;-1:-1:-1;;;1433:74:2;;10229:2:4;1433:74:2::1;::::0;::::1;10211:21:4::0;10268:2;10248:18;;;10241:30;10307:34;10287:18;;;10280:62;-1:-1:-1;;;10358:18:4;;;10351:36;10404:19;;1433:74:2::1;10027:402:4::0;1433:74:2::1;1517:8;:20:::0;;-1:-1:-1;;1517:20:2::1;-1:-1:-1::0;;;;;1517:20:2;;;::::1;::::0;;;::::1;::::0;;1352:192::o;11011:290:3:-;11114:4;695:10:2;684:7;518;544:6;-1:-1:-1;;;;;544:6:2;;472:85;684:7;-1:-1:-1;;;;;684:21:2;;676:66;;;;-1:-1:-1;;;676:66:2;;5460:2:4;676:66:2;;;5442:21:4;;;5479:18;;;5472:30;5538:34;5518:18;;;5511:62;5590:18;;676:66:2;5258:356:4;676:66:2;11133:11:3;11130:81:::1;;11169:31;::::0;-1:-1:-1;;;11169:31:3;;11194:4:::1;11169:31;::::0;::::1;179:74:4::0;-1:-1:-1;;;;;11169:16:3;::::1;::::0;::::1;::::0;152:18:4;;11169:31:3::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11160:40;;11130:81;11220:51;11245:6;11253:9;11264:6;11220:24;:51::i;:::-;-1:-1:-1::0;11288:6:3;11011:290;-1:-1:-1;;11011:290:3:o;7336:393::-;7413:12;:10;:12::i;:::-;-1:-1:-1;;;;;7459:12:3;;7435:21;7459:12;;;:8;:12;;;;;7482:21;;7459:12;;7497:6;;7459:12;;7435:21;7482;;7497:6;;-1:-1:-1;;;;;7482:21:3;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;7482:21:3;;;;;-1:-1:-1;;;;;7482:21:3;;;;;;7525:6;-1:-1:-1;;;;;7513:18:3;:8;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;7578:14:3;;7541:21;;-1:-1:-1;;;;;2137:8:3;7565:27;;-1:-1:-1;;;;;7565:12:3;;:27;:::i;:::-;:47;;;;:::i;:::-;7622:52;;7541:71;;-1:-1:-1;7541:71:3;;7622:4;;:15;;:52;;7541:71;;-1:-1:-1;;;7622:52:3;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;7622:52:3;;;;;;;-1:-1:-1;;;;;7622:52:3;;;;;;7719:2;-1:-1:-1;;;;;7689:33:3;7706:3;-1:-1:-1;;;;;7689:33:3;;7711:6;7689:33;;;;;-1:-1:-1;;;;;6996:47:4;;;;6978:66;;6966:2;6951:18;;6832:218;7689:33:3;;;;;;;;7403:326;;7336:393;;;:::o;7822:362::-;7889:21;7912:19;7933:15;7952:26;7974:3;7952:21;:26::i;:::-;7888:90;;;;;;-1:-1:-1;;;;;8036:14:3;;8028:6;-1:-1:-1;;;;;8023:12:3;:27;;;;:::i;:::-;:47;;;;:::i;:::-;7989:83;;:4;;:15;;:83;;;;-1:-1:-1;;;7989:83:3;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;7989:83:3;;;;;;;;;;;;;;;8082:21;;8097:6;;-1:-1:-1;8082:21:3;;-1:-1:-1;;8082:21:3;;8097:6;;8082:21;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;8082:21:3;;;;;-1:-1:-1;;;;;8082:21:3;;;;;;8125:6;-1:-1:-1;;;;;8113:18:3;:8;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;8147:30:3;;-1:-1:-1;;;;;6996:47:4;;6978:66;;-1:-1:-1;;;;;8147:30:3;;;;;6966:2:4;6951:18;8147:30:3;;;;;;;;7878:306;;;7822:362;;:::o;1865:190:2:-;1939:16;1958:6;;-1:-1:-1;;;;;1974:18:2;;;-1:-1:-1;;1974:18:2;;;;;;2007:41;;1958:6;;;;;;;2007:41;;1939:16;2007:41;1929:126;1865:190;:::o;8190:405:3:-;8252:21;8275:19;8296:15;8315:26;8337:3;8315:21;:26::i;:::-;8351:49;;-1:-1:-1;;;;;8351:49:3;;;-1:-1:-1;;;8351:49:3;;;;;;8251:90;;-1:-1:-1;8251:90:3;-1:-1:-1;8251:90:3;-1:-1:-1;8413:15:3;;8410:126;;8464:10;8444:16;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;8488:37:3;;-1:-1:-1;;;;;;8488:8:3;:21;8510:2;8514:10;8488:21;:37::i;:::-;8551;;;-1:-1:-1;;;;;11688:55:4;;;11670:74;;11775:2;11760:18;;11753:34;;;8551:37:3;;;;;11643:18:4;8551:37:3;11496:297:4;3954:840:3;-1:-1:-1;;;;;4063:15:3;;4015:12;4063:15;;;:8;:15;;;;;4111:14;;4140:8;;:12;4136:552;;4212:19;;4168:9;;4212:19;;4194:15;:37;4191:364;;;4271:19;;4254:14;;4271:19;;;;-1:-1:-1;4251:196:3;;;4343:14;;4321:19;;:36;;4343:14;4321:19;;:36;:::i;:::-;4314:43;;4191:364;;4251:196;-1:-1:-1;4427:1:3;4191:364;;;4526:14;;4508:32;;:15;:32;:::i;:::-;4501:39;;4191:364;4568:16;4592:12;;4587:4;:17;;;;:::i;:::-;4669:8;;4568:36;;-1:-1:-1;4637:29:3;-1:-1:-1;;;;;4568:36:3;4637:29;:::i;:::-;:40;;;;:::i;:::-;4618:59;;;;:::i;:::-;;;4154:534;;4136:552;4771:15;;-1:-1:-1;;;4771:15:3;;;;;-1:-1:-1;;;;;2137:8:3;4716:33;;4734:15;;-1:-1:-1;;;;;4721:11:3;4716:33;:::i;:::-;:51;;;;:::i;:::-;4712:74;;;;:::i;:::-;4697:90;3954:840;-1:-1:-1;;;;3954:840:3:o;3507:333:0:-;3676:48;;;-1:-1:-1;;;;;11688:55:4;;;3676:48:0;;;11670:74:4;11760:18;;;;11753:34;;;3676:48:0;;;;;;;;;;11643:18:4;;;;3676:48:0;;;;;;;;;-1:-1:-1;;;3676:48:0;;;3656:69;;-1:-1:-1;;;;3656:19:0;;;;:69;;3676:48;3656:69;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3620:105;;;;3743:7;:57;;;;-1:-1:-1;3755:11:0;;:16;;:44;;;3786:4;3775:24;;;;;;;;;;;;:::i;:::-;3735:98;;;;-1:-1:-1;;;3735:98:0;;13032:2:4;3735:98:0;;;13014:21:4;13071:2;13051:18;;;13044:30;13110;13090:18;;;13083:58;13158:18;;3735:98:0;12830:352:4;8601:330:3;8663:21;8686:19;8707:15;8734:12;:10;:12::i;:::-;-1:-1:-1;;;;;8763:13:3;;;;;;:8;:13;;;;;8821:14;;8808:11;;8763:13;;-1:-1:-1;;;;;;2137:8:3;8803:32;;8821:14;-1:-1:-1;;;;;8808:11:3;8803:32;:::i;:::-;:52;;;;:::i;:::-;8907:15;;8786:69;;-1:-1:-1;8883:40:3;;-1:-1:-1;;;8907:15:3;;;;8786:69;8883:40;:::i;:::-;8601:330;;;;-1:-1:-1;;8601:330:3:o;264:154:4:-;-1:-1:-1;;;;;343:5:4;339:54;332:5;329:65;319:93;;408:1;405;398:12;319:93;264:154;:::o;423:247::-;482:6;535:2;523:9;514:7;510:23;506:32;503:52;;;551:1;548;541:12;503:52;590:9;577:23;609:31;634:5;609:31;:::i;:::-;659:5;423:247;-1:-1:-1;;;423:247:4:o;983:146::-;-1:-1:-1;;;;;1062:5:4;1058:46;1051:5;1048:57;1038:85;;1119:1;1116;1109:12;1134:247;1193:6;1246:2;1234:9;1225:7;1221:23;1217:32;1214:52;;;1262:1;1259;1252:12;1214:52;1301:9;1288:23;1320:31;1345:5;1320:31;:::i;1773:594::-;1868:6;1876;1884;1892;1900;1953:3;1941:9;1932:7;1928:23;1924:33;1921:53;;;1970:1;1967;1960:12;1921:53;2006:9;1993:23;1983:33;;2063:2;2052:9;2048:18;2035:32;2025:42;;2114:2;2103:9;2099:18;2086:32;2076:42;;2168:2;2157:9;2153:18;2140:32;2181:31;2206:5;2181:31;:::i;:::-;2231:5;-1:-1:-1;2288:3:4;2273:19;;2260:33;2302;2260;2302;:::i;:::-;2354:7;2344:17;;;1773:594;;;;;;;;:::o;2372:180::-;2431:6;2484:2;2472:9;2463:7;2459:23;2455:32;2452:52;;;2500:1;2497;2490:12;2452:52;-1:-1:-1;2523:23:4;;2372:180;-1:-1:-1;2372:180:4:o;2802:525::-;2888:6;2896;2904;2912;2965:3;2953:9;2944:7;2940:23;2936:33;2933:53;;;2982:1;2979;2972:12;2933:53;3018:9;3005:23;2995:33;;3075:2;3064:9;3060:18;3047:32;3037:42;;3129:2;3118:9;3114:18;3101:32;3142:31;3167:5;3142:31;:::i;:::-;3192:5;-1:-1:-1;3249:2:4;3234:18;;3221:32;3262:33;3221:32;3262:33;:::i;:::-;2802:525;;;;-1:-1:-1;2802:525:4;;-1:-1:-1;;2802:525:4:o;3563:1215::-;3845:2;3857:21;;;3927:13;;3830:18;;;3949:22;;;3797:4;;4024;;4002:2;3987:18;;;4051:15;;;3797:4;4094:218;4108:6;4105:1;4102:13;4094:218;;;4173:13;;-1:-1:-1;;;;;4169:62:4;4157:75;;4252:12;;;;4287:15;;;;4130:1;4123:9;4094:218;;;-1:-1:-1;;;4348:19:4;;;4328:18;;;4321:47;4418:13;;4440:21;;;4516:15;;;;4479:12;;;4551:1;4561:189;4577:8;4572:3;4569:17;4561:189;;;4646:15;;4632:30;;4723:17;;;;4684:14;;;;4605:1;4596:11;4561:189;;;-1:-1:-1;4767:5:4;;3563:1215;-1:-1:-1;;;;;;;3563:1215:4:o;4783:470::-;4874:6;4882;4890;4943:2;4931:9;4922:7;4918:23;4914:32;4911:52;;;4959:1;4956;4949:12;4911:52;4998:9;4985:23;5017:31;5042:5;5017:31;:::i;:::-;5067:5;-1:-1:-1;5124:2:4;5109:18;;5096:32;5137:33;5096:32;5137:33;:::i;:::-;4783:470;;5189:7;;-1:-1:-1;;;5243:2:4;5228:18;;;;5215:32;;4783:470::o;5619:127::-;5680:10;5675:3;5671:20;5668:1;5661:31;5711:4;5708:1;5701:15;5735:4;5732:1;5725:15;5751:125;5791:4;5819:1;5816;5813:8;5810:34;;;5824:18;;:::i;:::-;-1:-1:-1;5861:9:4;;5751:125::o;5881:168::-;5921:7;5987:1;5983;5979:6;5975:14;5972:1;5969:21;5964:1;5957:9;5950:17;5946:45;5943:71;;;5994:18;;:::i;:::-;-1:-1:-1;6034:9:4;;5881:168::o;6054:128::-;6094:3;6125:1;6121:6;6118:1;6115:13;6112:39;;;6131:18;;:::i;:::-;-1:-1:-1;6167:9:4;;6054:128::o;6187:229::-;6226:4;6255:18;6323:10;;;;6293;;6345:12;;;6342:38;;;6360:18;;:::i;:::-;6397:13;;6187:229;-1:-1:-1;;;6187:229:4:o;6421:184::-;6491:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:52;;;6560:1;6557;6550:12;6512:52;-1:-1:-1;6583:16:4;;6421:184;-1:-1:-1;6421:184:4:o;6610:217::-;6650:1;6676;6666:132;;6720:10;6715:3;6711:20;6708:1;6701:31;6755:4;6752:1;6745:15;6783:4;6780:1;6773:15;6666:132;-1:-1:-1;6812:9:4;;6610:217::o;7489:769::-;7584:6;7637:2;7625:9;7616:7;7612:23;7608:32;7605:52;;;7653:1;7650;7643:12;7605:52;7686:2;7680:9;7728:2;7720:6;7716:15;7797:6;7785:10;7782:22;7761:18;7749:10;7746:34;7743:62;7740:185;;;7847:10;7842:3;7838:20;7835:1;7828:31;7882:4;7879:1;7872:15;7910:4;7907:1;7900:15;7740:185;7941:2;7934:22;7978:16;;8003:31;7978:16;8003:31;:::i;:::-;8043:21;;8109:2;8094:18;;8088:25;8155:2;8144:23;;;8132:36;;8122:64;;8182:1;8179;8172:12;8122:64;8214:2;8202:15;;8195:32;8206:6;7489:769;-1:-1:-1;;;7489:769:4:o;8607:246::-;8647:4;-1:-1:-1;;;;;8760:10:4;;;;8730;;8782:12;;;8779:38;;;8797:18;;:::i;9571:127::-;9632:10;9627:3;9623:20;9620:1;9613:31;9663:4;9660:1;9653:15;9687:4;9684:1;9677:15;10434:253;10474:3;-1:-1:-1;;;;;10563:2:4;10560:1;10556:10;10593:2;10590:1;10586:10;10624:3;10620:2;10616:12;10611:3;10608:21;10605:47;;;10632:18;;:::i;:::-;10668:13;;10434:253;-1:-1:-1;;;;10434:253:4:o;10692:396::-;10731:3;10775:1;10771:2;10760:17;10812:1;10808:2;10797:17;10842:1;10837:3;10833:11;10921:3;-1:-1:-1;;;;;10881:44:4;10876:3;10872:54;10867:2;10860:10;10856:71;10853:97;;;10930:18;;:::i;:::-;11024:3;-1:-1:-1;;;;;10983:39:4;10979:49;10974:3;10970:59;10966:2;10962:68;10959:94;;;11033:18;;:::i;:::-;-1:-1:-1;11069:13:4;;10692:396;-1:-1:-1;;;10692:396:4:o;11093:398::-;11132:4;11177:1;11173:2;11162:17;11214:1;11210:2;11199:17;11244:1;11239:3;11235:11;11328:3;-1:-1:-1;;;;;11287:39:4;11283:49;11278:3;11274:59;11269:2;11262:10;11258:76;11255:102;;;11337:18;;:::i;:::-;11426:3;-1:-1:-1;;;;;11386:44:4;11381:3;11377:54;11373:2;11369:63;11366:89;;;11435:18;;:::i;:::-;-1:-1:-1;11472:13:4;;;11093:398;-1:-1:-1;;;11093:398:4:o;11798:314::-;11837:4;11866:9;;;11891:10;;-1:-1:-1;;;11910:19:4;;11903:27;;11887:44;11884:70;;;11934:18;;:::i;:::-;12053:1;11985:66;11981:74;11978:1;11974:82;11970:2;11966:91;11963:117;;;12060:18;;:::i;:::-;-1:-1:-1;;12097:9:4;;11798:314::o;12117:426::-;12246:3;12284:6;12278:13;12309:1;12319:129;12333:6;12330:1;12327:13;12319:129;;;12431:4;12415:14;;;12411:25;;12405:32;12392:11;;;12385:53;12348:12;12319:129;;;12466:6;12463:1;12460:13;12457:48;;;12501:1;12492:6;12487:3;12483:16;12476:27;12457:48;-1:-1:-1;12521:16:4;;;;;12117:426;-1:-1:-1;;12117:426:4:o;12548:277::-;12615:6;12668:2;12656:9;12647:7;12643:23;12639:32;12636:52;;;12684:1;12681;12674:12;12636:52;12716:9;12710:16;12769:5;12762:13;12755:21;12748:5;12745:32;12735:60;;12791:1;12788;12781:12
Swarm Source
ipfs://b4ca66eff4968aacef888b9330437a7c77f92523108771e4a92601dd20e0cc7f
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.