Polygon Sponsored slots available. Book your slot here!
Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
XVMCgovernor
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-06-08 */ // File: xvmc-contracts/libs/standard/Address.sol pragma solidity >=0.6.12 <=0.8.0; /** * @dev Collection of functions related to the address type */ 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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 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); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal 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); } } } } // File: xvmc-contracts/libs/standard/IERC20.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // File: xvmc-contracts/libs/standard/SafeERC20.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ 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"); } } } // File: xvmc-contracts/governor.sol pragma solidity 0.8.0; interface IacPool { function setCallFee(uint256 _callFee) external; function totalShares() external returns (uint256); function totalVotesFor(uint256 proposalID) external returns (uint256); function setAdmin(address _admin, address _treasury) external; function setTreasury(address _treasury) external; function addAndExtendStake(address _recipientAddr, uint256 _amount, uint256 _stakeID, uint256 _lockUpTokensInSeconds) external; function giftDeposit(uint256 _amount, address _toAddress, uint256 _minToServeInSecs) external; function harvest() external; function calculateHarvestXVMCRewards() external view returns (uint256); } interface IMasterChef { function set(uint256 _pid, uint256 _allocPoint, uint16 _depositFeeBP, bool _withUpdate) external; function updateEmissionRate(uint256 _gajPerBlock) external; function setFeeAddress(address _feeAddress) external; function dev(address _devaddr) external; function transferOwnership(address newOwner) external; function XVMCPerBlock() external returns (uint256); function totalAllocPoint() external returns (uint256); function updatePool(uint256 _pid) external; function owner() external returns (address); function setGovernorFee(uint256 _amount) external; } interface IXVMCtreasury { function requestWithdraw(address _token, address _receiver, uint _value) external; } interface IOldChef { function burnTokens(uint256 _amount) external; } interface IConsensus { function totalXVMCStaked() external view returns(uint256); function tokensCastedPerVote(uint256 _forID) external view returns(uint256); function isGovInvalidated(address _failedGov) external view returns(bool, bool); } interface IPolygonMultisig { function isOwner(address) external view returns(bool); } interface IRewardBoost { function updateDelayBetweenEvents(uint256 _delay) external; function updateGrandEventLength(uint256 _length) external; } /** * XVMC governor is a decentralized masterchef governed by it's users * Works as a decentralized cryptocurrency with no third-party control * Effectively creating a DAO through time-deposits * * In order to earn staking rewards, users must lock up their tokens. * Certificates of deposit or time deposit are the biggest market in the world * The longer the lockup period, the higher the rewards(APY) and voting power * The locked up stakers create the governance council, through which * the protocol can be upgraded in a decentralized manner. * * Users are utilized as oracles through on-chain voting regulating the entire system(events, * rewards, APYs, fees, bonuses,...) * The token voting is overpowered by the consensus mechanism(locked up stakers) * * It is a real DAO creating an actual decentralized finance ecosystem * * https://macncheese.finance/ */ contract XVMCgovernor { using SafeERC20 for IERC20; uint256 public immutable goldenRatio = 1618; //1.618 is the golden ratio address public immutable oldToken = 0x6d0c966c8A09e354Df9C48b446A474CE3343D912; address public immutable token = 0x970ccEe657Dd831e9C37511Aa3eb5302C1Eb5EEe; //XVMC token //masterchef address address public immutable masterchef = 0x6ff40a8a1fe16075bD6008A48befB768BE08b4b0; address public immutable oldChefOwner = 0x27771BB243c37B35091b0A1e8b69C816249c2E71; //https://docs.polygon.technology/docs/faq/commit-chain-multisigs/ address public immutable polygonMultisig = 0x355b8E02e7F5301E6fac9b7cAc1D6D9c86C0343f; address public immutable consensusContract = 0xDDd4982e3E9e5C5C489321D2143b8a027f535112; address public immutable farmContract = 0xdf47e7a036A6a85F92898176b5A8B4B4b9fBF25A; address public immutable fibonacceningContract = 0xff5a8072565726A055690bd14924022DE020623A; //reward boost contract address public immutable basicContract = 0xEBD2e542F593d8E03543661BCc70ad2474e6DBad; address public immutable nftStakingContract = 0xD7bf9953d090D6Eb5fC8f6707e88Ea057beD08cB; address public immutable nftAllocationContract = 0x765A3045902B164dA1a7619BEc58DE64cf7Bdfe2; //Addresses for treasuryWallet and NFT wallet address public treasuryWallet = 0xC44D3FB20a7fA7eff7437c1C39d34A68A2046BA7; address public nftWallet = 0xcCb906C2233A39aA14f60d2F836EB24492D83713; //addresses for time-locked deposits(autocompounding pools) address public immutable acPool1 = 0xfFB71361dD8Fc3ef0831871Ec8dd51B413ed093C; address public immutable acPool2 = 0x9a9AEF66624C3fa77DaACcA9B51DE307FA09bd50; address public immutable acPool3 = 0x1F8a5D98f1e2F10e93331D27CF22eD7985EF6a12; address public immutable acPool4 = 0x30019481FC501aFa449781ac671103Feb0d6363C; address public immutable acPool5 = 0x8c96105ea574727e94d9C199c632128f1cA584cF; address public immutable acPool6 = 0x605c5AA14BdBf0d50a99836e7909C631cf3C8d46; //pool ID in the masterchef for respective Pool address and dummy token uint256 public immutable acPool1ID = 2; uint256 public immutable acPool2ID = 3; uint256 public immutable acPool3ID = 4; uint256 public immutable acPool4ID = 5; uint256 public immutable acPool5ID = 6; uint256 public immutable acPool6ID = 7; uint256 public immutable nftStakingPoolID = 10; mapping(address => uint256) private _rollBonus; mapping(address => address[]) public signaturesConfirmed; //for multi-sig mapping(address => mapping(address => bool)) public alreadySigned; //alreadySigned[owner][newGovernor] uint256 public newGovernorBlockDelay = 189000; //in blocks (roughly 5 days at beginning) uint256 public costToVote = 500000 * 1e18; // 500K coins. All proposals are valid unless rejected. This is a minimum to prevent spam uint256 public delayBeforeEnforce = 3 days; //minimum number of TIME between when proposal is initiated and executed uint256 public maximumVoteTokens; // maximum tokens that can be voted with to prevent tyrany //fibonaccening event can be scheduled once minimum threshold of tokens have been collected uint256 public thresholdFibonaccening = 10000000000 * 1e18; //10B coins //delays for Fibonnaccening Events uint256 public immutable minDelay = 1 days; // has to be called minimum 1 day in advance uint256 public immutable maxDelay = 31 days; //1month.. is that good? i think yes uint256 public lastRegularReward = 33333000000000000000000; //remembers the last reward used(outside of boost) bool public eventFibonacceningActive = true; // prevent some functions if event is active ..threshold and durations for fibonaccening //NOT: IS set to active at launch as the reward boost is already active! uint256 public blocksPerSecond = 434783; // divide by a million uint256 public durationForCalculation= 12 hours; //period used to calculate block time uint256 public lastBlockHeight; //block number when counting is activated uint256 public recordTimeStart; //timestamp when counting is activated bool public countingBlocks; bool public isInflationStatic; // if static, inflation stays perpetually at 1.618% annually. If dynamic, it reduces by 1.618% on each reward boost uint256 public totalFibonacciEventsAfterGrand; //used for rebalancing inflation after Grand Fib uint256 public newGovernorRequestBlock; address public eligibleNewGovernor; //used for changing smart contract bool public changeGovernorActivated; bool public fibonacciDelayed; //used to delay fibonaccening events through vote uint256 public lastHarvestedTime; bool public setFarmRewards; event SetInflation(uint256 rewardPerBlock); event TransferOwner(address newOwner, uint256 timestamp); event EnforceGovernor(address _newGovernor, address indexed enforcer); event GiveRolloverBonus(address recipient, uint256 amount, address poolInto); event Harvest(address indexed sender, uint256 callFee); event Multisig(address signer, address newGovernor, bool sign, uint256 idToVoteFor); constructor( address _acPool1, address _acPool2, address _acPool3, address _acPool4, address _acPool5, address _acPool6) { _rollBonus[_acPool1] = 75; _rollBonus[_acPool2] = 100; _rollBonus[_acPool3] = 150; _rollBonus[_acPool4] = 250; _rollBonus[_acPool5] = 350; _rollBonus[_acPool6] = 500; } /** * Updates circulating supply and maximum vote token variables */ function updateMaximumVotetokens() external { maximumVoteTokens = getTotalSupply() / 10000; } /** * Calculates average block time * No decimals so we keep track of "100blocks" per second * It will be used in the future to keep inflation static, while block production can be dynamic * (bitcoin adjusts to 1 block per 10minutes, XVMC inflation is dependant on the production of blocks on Polygon which can vary) */ function startCountingBlocks() external { require(!countingBlocks, "already counting blocks"); countingBlocks = true; lastBlockHeight = block.number; recordTimeStart = block.timestamp; } function calculateAverageBlockTime() external { require(countingBlocks && (recordTimeStart + durationForCalculation) <= block.timestamp); blocksPerSecond = 1000000 * (block.number - lastBlockHeight) / (block.timestamp - recordTimeStart); countingBlocks = false; } function getRollBonus(address _bonusForPool) external view returns (uint256) { return _rollBonus[_bonusForPool]; } /** * Return total(circulating) supply. * Total supply = total supply of XVMC token(new) + (total supply of oldToken - supply of old token inside contract of new token) * 1000 * New XVMC token = 1000 * old token (can be swapped inside the token contract, contract holds old tokens) * Old XVMC tokens held inside the contract of token are basically tokens that have been swapped to new token at a ratio of (1:1000) */ function getTotalSupply() public view returns(uint256) { return (IERC20(token).totalSupply() + 1000 * (IERC20(oldToken).totalSupply() - IERC20(oldToken).balanceOf(token))); } /** * Mass equivalent to massUpdatePools in masterchef, but only for relevant pools */ function updateAllPools() external { IMasterChef(masterchef).updatePool(0); // XVMC-USDC and XVMC-wmatic IMasterChef(masterchef).updatePool(1); IMasterChef(masterchef).updatePool(8); //meme pool 8,9 IMasterChef(masterchef).updatePool(9); IMasterChef(masterchef).updatePool(10); // NFT staking IMasterChef(masterchef).updatePool(acPool1ID); IMasterChef(masterchef).updatePool(acPool2ID); IMasterChef(masterchef).updatePool(acPool3ID); IMasterChef(masterchef).updatePool(acPool4ID); IMasterChef(masterchef).updatePool(acPool5ID); IMasterChef(masterchef).updatePool(acPool6ID); } /** * Rebalances farms in masterchef */ function rebalanceFarms() external { IMasterChef(masterchef).updatePool(0); IMasterChef(masterchef).updatePool(1); } /** * Rebalances Pools and allocates rewards in masterchef * Pools with higher time-lock must always pay higher rewards in relative terms * Eg. for 1XVMC staked in the pool 6, you should always be receiving * 50% more rewards compared to staking in pool 4 * * QUESTION: should we create a modifier to prevent rebalancing during inflation events? * Longer pools compound on their interests and earn much faster? * On the other hand it could also be an incentive to hop to pools with longer lockup * Could also make it changeable through voting */ function rebalancePools() public { uint256 balancePool1 = IERC20(token).balanceOf(acPool1); uint256 balancePool2 = IERC20(token).balanceOf(acPool2); uint256 balancePool3 = IERC20(token).balanceOf(acPool3); uint256 balancePool4 = IERC20(token).balanceOf(acPool4); uint256 balancePool5 = IERC20(token).balanceOf(acPool5); uint256 balancePool6 = IERC20(token).balanceOf(acPool6); IMasterChef(masterchef).set(acPool1ID, (balancePool1 * 2 / 1e26), 0, false); IMasterChef(masterchef).set(acPool2ID, (balancePool2 * 3 / 1e26), 0, false); IMasterChef(masterchef).set(acPool3ID, (balancePool3 * 5 / 1e26), 0, false); IMasterChef(masterchef).set(acPool4ID, (balancePool4 * 10 / 1e26), 0, false); IMasterChef(masterchef).set(acPool5ID, (balancePool5 * 13 / 1e26), 0, false); IMasterChef(masterchef).set(acPool6ID, (balancePool6 * 15 / 1e26), 0, false); //equivalent to massUpdatePools() in masterchef, but we loop just through relevant pools IMasterChef(masterchef).updatePool(acPool1ID); IMasterChef(masterchef).updatePool(acPool2ID); IMasterChef(masterchef).updatePool(acPool3ID); IMasterChef(masterchef).updatePool(acPool4ID); IMasterChef(masterchef).updatePool(acPool5ID); IMasterChef(masterchef).updatePool(acPool6ID); } function harvestAll() public { IacPool(acPool1).harvest(); IacPool(acPool2).harvest(); IacPool(acPool3).harvest(); IacPool(acPool4).harvest(); IacPool(acPool5).harvest(); IacPool(acPool6).harvest(); } /** * Harvests from all pools and rebalances rewards */ function harvest() external { require(msg.sender == tx.origin, "no proxy/contracts"); uint256 totalFee = pendingHarvestRewards(); harvestAll(); rebalancePools(); lastHarvestedTime = block.timestamp; IERC20(token).safeTransfer(msg.sender, totalFee); emit Harvest(msg.sender, totalFee); } // Shifting the decimal on pool rebalancing and have to increase farm rewards as well function initiatePools() external { require(!setFarmRewards, "already set"); IMasterChef(masterchef).set(0, 4000, 0, false); IMasterChef(masterchef).set(1, 2000, 0, false); setFarmRewards = true; } function pendingHarvestRewards() public view returns (uint256) { uint256 totalRewards = IacPool(acPool1).calculateHarvestXVMCRewards() + IacPool(acPool2).calculateHarvestXVMCRewards() + IacPool(acPool3).calculateHarvestXVMCRewards() + IacPool(acPool4).calculateHarvestXVMCRewards() + IacPool(acPool5).calculateHarvestXVMCRewards() + IacPool(acPool6).calculateHarvestXVMCRewards(); return totalRewards; } /** * Mechanism, where the governor gives the bonus * to user for extending(re-commiting) their stake * tldr; sends the gift deposit, which resets the timer * the pool is responsible for calculating the bonus */ function stakeRolloverBonus(address _toAddress, address _depositToPool, uint256 _bonusToPay, uint256 _stakeID) external { require( msg.sender == acPool1 || msg.sender == acPool2 || msg.sender == acPool3 || msg.sender == acPool4 || msg.sender == acPool5 || msg.sender == acPool6); IacPool(_depositToPool).addAndExtendStake(_toAddress, _bonusToPay, _stakeID, 0); emit GiveRolloverBonus(_toAddress, _bonusToPay, _depositToPool); } /** * Sets inflation in Masterchef */ function setInflation(uint256 rewardPerBlock) external { require(msg.sender == fibonacceningContract); IMasterChef(masterchef).updateEmissionRate(rewardPerBlock); emit SetInflation(rewardPerBlock); } function rememberReward() external { require(msg.sender == fibonacceningContract); lastRegularReward = IMasterChef(masterchef).XVMCPerBlock(); } function enforceGovernor() external { require(msg.sender == consensusContract); require(newGovernorRequestBlock + newGovernorBlockDelay < block.number, "time delay not yet passed"); IMasterChef(masterchef).setFeeAddress(eligibleNewGovernor); IMasterChef(masterchef).dev(eligibleNewGovernor); IMasterChef(masterchef).transferOwnership(eligibleNewGovernor); //transfer masterchef ownership IERC20(token).safeTransfer(eligibleNewGovernor, IERC20(token).balanceOf(address(this))); // send collected XVMC tokens to new governor emit EnforceGovernor(eligibleNewGovernor, msg.sender); } function setNewGovernor(address beneficiary) external { require(msg.sender == consensusContract); newGovernorRequestBlock = block.number; eligibleNewGovernor = beneficiary; changeGovernorActivated = true; } function governorRejected() external { require(changeGovernorActivated, "not active"); (bool _govInvalidated, ) = IConsensus(consensusContract).isGovInvalidated(eligibleNewGovernor); if(_govInvalidated) { changeGovernorActivated = false; } } function treasuryRequest(address _tokenAddr, address _recipient, uint256 _amountToSend) external { require(msg.sender == consensusContract); IXVMCtreasury(treasuryWallet).requestWithdraw( _tokenAddr, _recipient, _amountToSend ); } function updateDurationForCalculation(uint256 _newDuration) external { require(msg.sender == basicContract); durationForCalculation = _newDuration; } function delayFibonacci(bool _arg) external { require(msg.sender == consensusContract); fibonacciDelayed = _arg; } function setActivateFibonaccening(bool _arg) external { require(msg.sender == fibonacceningContract); eventFibonacceningActive = _arg; } function setPool(uint256 _pid, uint256 _allocPoint, uint16 _depositFeeBP, bool _withUpdate) external { require(msg.sender == farmContract); IMasterChef(masterchef).set(_pid, _allocPoint, _depositFeeBP, _withUpdate); } function setThresholdFibonaccening(uint256 newThreshold) external { require(msg.sender == basicContract); thresholdFibonaccening = newThreshold; } function updateDelayBeforeEnforce(uint256 newDelay) external { require(msg.sender == basicContract); delayBeforeEnforce = newDelay; } function setCallFee(address _acPool, uint256 _newCallFee) external { require(msg.sender == basicContract); IacPool(_acPool).setCallFee(_newCallFee); } function updateCostToVote(uint256 newCostToVote) external { require(msg.sender == basicContract); costToVote = newCostToVote; } function updateRolloverBonus(address _forPool, uint256 _bonus) external { require(msg.sender == basicContract); require(_bonus <= 1500, "15% hard limit"); _rollBonus[_forPool] = _bonus; } function burnFromOldChef(uint256 _amount) external { require(msg.sender == farmContract || msg.sender == fibonacceningContract); IOldChef(oldChefOwner).burnTokens(_amount); } function setGovernorTax(uint256 _amount) external { require(msg.sender == farmContract); IMasterChef(masterchef).setGovernorFee(_amount); } function postGrandFibIncreaseCount() external { require(msg.sender == fibonacceningContract); totalFibonacciEventsAfterGrand++; } function updateDelayBetweenEvents(uint256 _amount) external { require(msg.sender == basicContract); IRewardBoost(fibonacceningContract).updateDelayBetweenEvents(_amount); } function updateGrandEventLength(uint256 _amount) external { require(msg.sender == basicContract); IRewardBoost(fibonacceningContract).updateGrandEventLength(_amount); } /** * Transfers collected fees into treasury wallet(but not XVMC...for now) */ function transferCollectedFees(address _tokenContract) external { require(msg.sender == tx.origin); require(_tokenContract != token, "not XVMC!"); uint256 amount = IERC20(_tokenContract).balanceOf(address(this)); IERC20(_tokenContract).safeTransfer(treasuryWallet, amount); } /* * newGovernorBlockDelay is the delay during which the governor proposal can be voted against * As the time passes, changes should take longer to enforce(greater security) * Prioritize speed and efficiency at launch. Prioritize security once established * Delay increases by 2500 blocks(roughly 1.6hours) per each day after launch * Delay starts at 189000 blocks(roughly 5 days) * After a month, delay will be roughly 7 days (increases 2days/month) * After a year, 29 days. After 2 years, 53 days,... * Can be ofcourse changed by replacing governor contract */ function updateGovernorChangeDelay() external { newGovernorBlockDelay = 189000 + (((block.timestamp - 1654528957) / 86400) * 2500); } /** * The weak point, Polygon-ETH bridge is secured by a 5/8 multisig. * Can change governing contract thru a multisig(without consensus) and 42% of weighted votes voting in favor * https://docs.polygon.technology/docs/faq/commit-chain-multisigs/ */ function multiSigGovernorChange(address _newGovernor) external { uint _signatureCount = 0; uint _ownersLength = signaturesConfirmed[_newGovernor].length; require(_ownersLength >= 5, "minimum 5 signatures required"); for(uint i=0; i< _ownersLength; i++) {//owners can change, must check if still active if(IPolygonMultisig(polygonMultisig).isOwner(signaturesConfirmed[_newGovernor][i])) { _signatureCount++; } } require(_signatureCount >= 5, "Minimum 5/8 signatures required"); uint256 _totalStaked = IConsensus(consensusContract).totalXVMCStaked(); uint256 _totalVotedInFavor = IConsensus(consensusContract).tokensCastedPerVote(uint256(uint160(_newGovernor))); require(_totalVotedInFavor >= (_totalStaked * 42 / 100), "Minimum 42% weighted vote required"); IMasterChef(masterchef).setFeeAddress(_newGovernor); IMasterChef(masterchef).dev(_newGovernor); IMasterChef(masterchef).transferOwnership(_newGovernor); IERC20(token).safeTransfer(_newGovernor, IERC20(token).balanceOf(address(this))); } function signMultisig(address _newGovernor) external { bool _isOwner = IPolygonMultisig(polygonMultisig).isOwner(msg.sender); require(_isOwner, "Signer is not multisig owner"); require(!alreadySigned[msg.sender][_newGovernor], "already signed"); alreadySigned[msg.sender][_newGovernor] = true; signaturesConfirmed[_newGovernor].push(msg.sender); //adds vote emit Multisig(msg.sender, _newGovernor, true, uint256(uint160(_newGovernor))); } function unSignMultisig(address _newGovernor) external { require(alreadySigned[msg.sender][_newGovernor], "not signed"); uint256 _lastIndex = signaturesConfirmed[_newGovernor].length - 1; uint256 _index; while(signaturesConfirmed[_newGovernor][_index] != msg.sender) { _index++; } alreadySigned[msg.sender][_newGovernor] = false; if(_index != _lastIndex) { signaturesConfirmed[_newGovernor][_index] = signaturesConfirmed[_newGovernor][_lastIndex]; } signaturesConfirmed[_newGovernor].pop(); emit Multisig(msg.sender, _newGovernor, false, uint256(uint160(_newGovernor))); } function addressToUint256(address _address) external pure returns(uint256) { return(uint256(uint160(_address))); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_acPool1","type":"address"},{"internalType":"address","name":"_acPool2","type":"address"},{"internalType":"address","name":"_acPool3","type":"address"},{"internalType":"address","name":"_acPool4","type":"address"},{"internalType":"address","name":"_acPool5","type":"address"},{"internalType":"address","name":"_acPool6","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"enforcer","type":"address"}],"name":"EnforceGovernor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"poolInto","type":"address"}],"name":"GiveRolloverBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"callFee","type":"uint256"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"signer","type":"address"},{"indexed":false,"internalType":"address","name":"newGovernor","type":"address"},{"indexed":false,"internalType":"bool","name":"sign","type":"bool"},{"indexed":false,"internalType":"uint256","name":"idToVoteFor","type":"uint256"}],"name":"Multisig","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rewardPerBlock","type":"uint256"}],"name":"SetInflation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TransferOwner","type":"event"},{"inputs":[],"name":"acPool1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acPool1ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acPool2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acPool2ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acPool3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acPool3ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acPool4","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acPool4ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acPool5","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acPool5ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acPool6","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acPool6ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addressToUint256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"alreadySigned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"basicContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blocksPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burnFromOldChef","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"calculateAverageBlockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"changeGovernorActivated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"consensusContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"costToVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"countingBlocks","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayBeforeEnforce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_arg","type":"bool"}],"name":"delayFibonacci","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"durationForCalculation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eligibleNewGovernor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enforceGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eventFibonacceningActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"farmContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fibonacceningContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fibonacciDelayed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_bonusForPool","type":"address"}],"name":"getRollBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldenRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governorRejected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"harvestAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initiatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInflationStatic","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastHarvestedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRegularReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterchef","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumVoteTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"}],"name":"multiSigGovernorChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"newGovernorBlockDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newGovernorRequestBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftAllocationContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftStakingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftStakingPoolID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldChefOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingHarvestRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"polygonMultisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"postGrandFibIncreaseCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebalanceFarms","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebalancePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recordTimeStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rememberReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_arg","type":"bool"}],"name":"setActivateFibonaccening","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_acPool","type":"address"},{"internalType":"uint256","name":"_newCallFee","type":"uint256"}],"name":"setCallFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setFarmRewards","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setGovernorTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardPerBlock","type":"uint256"}],"name":"setInflation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"setNewGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint16","name":"_depositFeeBP","type":"uint16"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"setPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"setThresholdFibonaccening","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"}],"name":"signMultisig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"signaturesConfirmed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_toAddress","type":"address"},{"internalType":"address","name":"_depositToPool","type":"address"},{"internalType":"uint256","name":"_bonusToPay","type":"uint256"},{"internalType":"uint256","name":"_stakeID","type":"uint256"}],"name":"stakeRolloverBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startCountingBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"thresholdFibonaccening","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFibonacciEventsAfterGrand","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"transferCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amountToSend","type":"uint256"}],"name":"treasuryRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"}],"name":"unSignMultisig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateAllPools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCostToVote","type":"uint256"}],"name":"updateCostToVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"updateDelayBeforeEnforce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateDelayBetweenEvents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newDuration","type":"uint256"}],"name":"updateDurationForCalculation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateGovernorChangeDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateGrandEventLength","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateMaximumVotetokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_forPool","type":"address"},{"internalType":"uint256","name":"_bonus","type":"uint256"}],"name":"updateRolloverBonus","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6103e06040526106526080527f6d0c966c8a09e354df9c48b446a474ce3343d91200000000000000000000000060a0527f970ccee657dd831e9c37511aa3eb5302c1eb5eee00000000000000000000000060c0527f6ff40a8a1fe16075bd6008a48befb768be08b4b000000000000000000000000060e0527f27771bb243c37b35091b0a1e8b69c816249c2e71000000000000000000000000610100527f355b8e02e7f5301e6fac9b7cac1d6d9c86c0343f000000000000000000000000610120527fddd4982e3e9e5c5c489321d2143b8a027f535112000000000000000000000000610140527fdf47e7a036a6a85f92898176b5a8b4b4b9fbf25a000000000000000000000000610160527fff5a8072565726a055690bd14924022de020623a000000000000000000000000610180527febd2e542f593d8e03543661bcc70ad2474e6dbad0000000000000000000000006101a0527fd7bf9953d090d6eb5fc8f6707e88ea057bed08cb0000000000000000000000006101c0527f765a3045902b164da1a7619bec58de64cf7bdfe20000000000000000000000006101e052600080546001600160a01b031990811673c44d3fb20a7fa7eff7437c1c39d34a68a2046ba7179091556001805490911673ccb906c2233a39aa14f60d2f836eb24492d837131781557fffb71361dd8fc3ef0831871ec8dd51b413ed093c000000000000000000000000610200527f9a9aef66624c3fa77daacca9b51de307fa09bd50000000000000000000000000610220527f1f8a5d98f1e2f10e93331d27cf22ed7985ef6a12000000000000000000000000610240527f30019481fc501afa449781ac671103feb0d6363c000000000000000000000000610260527f8c96105ea574727e94d9c199c632128f1ca584cf000000000000000000000000610280527f605c5aa14bdbf0d50a99836e7909c631cf3c8d460000000000000000000000006102a05260026102c05260036102e052600461030052600561032081905260066103408190526007610360819052600a6103808190526202e2489093556969e10de76676d08000009091556203f48090556b204fce5e3e25026110000000600955620151806103a0526228de806103c05269070efc4d0e326fb400009055600b805460ff191690911790556206a25f600c5561a8c0600d553480156200036657600080fd5b506040516200586b3803806200586b833981016040819052620003899162000406565b6001600160a01b03958616600090815260026020526040808220604b9055958716815285812060649055938616845284842060969055918516835283832060fa90558416825282822061015e9055909216825290206101f4905562000486565b80516001600160a01b03811681146200040157600080fd5b919050565b60008060008060008060c087890312156200041f578182fd5b6200042a87620003e9565b95506200043a60208801620003e9565b94506200044a60408801620003e9565b93506200045a60608801620003e9565b92506200046a60808801620003e9565b91506200047a60a08801620003e9565b90509295509295509295565b60805160a05160601c60c05160601c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c6101805160601c6101a05160601c6101c05160601c6101e05160601c6102005160601c6102205160601c6102405160601c6102605160601c6102805160601c6102a05160601c6102c0516102e05161030051610320516103405161036051610380516103a0516103c051614f256200094660003960006140dc01526000612a83015260006109a6015260008181610f0b0152818161280b01528181613aa80152613e980152600081816120470152818161276d015281816139e10152613dfa015260008181612023015281816126cf0152818161391a0152613d5c015260008181610e1b01528181612631015281816138530152613cbe01526000818161090a015281816125930152818161378c0152613c20015260008181611fd5015281816124f5015281816136c70152613b8201526000818161092e01528181611ebb0152818161360901528181614003015261416f015260008181611e480152818161354901528181613fd00152818161414801526142000152600081816112ba01528181611dd50152818161348901528181613f9d0152614291015260008181611d62015281816121b0015281816133c901528181613f6a0152614322015260008181610c8401528181611cef0152818161330901528181613f3701526143b3015260008181610cb101528181611c7c0152818161325c01528181613f0501526144440152600061285901526000610c60015260008181610cde015281816112e7015281816113210152818161149c01528181611a9201528181611f5d01528181612170015281816130b4015261450d0152600081816114dd015281816117ae01528181611b1501528181611f9e01528181612835015281816130260152818161313301526141090152600081816118b401528181611ff901528181612f730152612ff4015260008181610a0b01528181610c0001528181610d7501528181610f3e015281816119e801528181611f3001528181612c2e0152612cc301526000818161098201528181610a6d0152612aec0152600081816130680152613106015260008181610fb001528181611033015281816110b50152818161138a0152818161140f015281816117da015281816118f5015281816120900152818161210d0152818161224d015281816122ca01528181612349015281816123c801528181612447015281816124c60152818161256401528181612602015281816126a00152818161273e015281816127dc01528181612db501528181612e3101528181612eaf01528181612fb401528181613174015281816136a00152818161375d01528181613824015281816138eb015281816139b201528181613a7901528181613b5301528181613bf101528181613c8f01528181613d2d01528181613dcb01528181613e69015261453a015260008181610e9801528181611141015281816111d201528181611b84015281816128c2015281816129e301528181612f1e0152818161322f015281816132da0152818161339a0152818161345a0152818161351a015281816135da015261455e0152600081816121d401528181612895015261293c015260006118870152614f256000f3fe608060405234801561001057600080fd5b50600436106104ee5760003560e01c8063879010f41161028e578063c4e41b2211610167578063e0a8ed52116100d9578063f2fa0bb011610092578063f2fa0bb0146108d8578063f7007608146108e0578063f7bd54f7146108e8578063f95a42e9146108f0578063fb1db278146108f8578063fc0c546a14610900576104ee565b8063e0a8ed5214610887578063e0e01a611461089a578063e5f59bc1146108a2578063e9a4e6ba146108b5578063ed49d2f8146108bd578063f0929fc8146108c5576104ee565b8063d3b7c5111161012b578063d3b7c51114610841578063d487bc2414610849578063dc73559e14610851578063dda1dccd14610864578063ded6e1c91461086c578063e0676b011461087f576104ee565b8063c4e41b22146107f8578063c63c4e9b14610800578063c710303614610808578063d06482e51461081b578063d28708641461082e576104ee565b8063abc090d411610200578063b31c710a116101c4578063b31c710a146107c8578063b60f0531146107d0578063b61841e1146107d8578063b9ec7d74146107e0578063bb20d1e1146107e8578063c4c57bad146107f0576104ee565b8063abc090d414610795578063ae8853521461079d578063aec92998146107a5578063b1e37008146107b8578063b2922ec4146107c0576104ee565b80639d2252bc116102525780639d2252bc146107655780639eb0e9651461076d578063a569e89614610775578063a7708fb31461077d578063a83a33dd14610785578063aaf5ab8d1461078d576104ee565b8063879010f4146107275780638a22abb11461073a5780638ed955b914610742578063931cc2d41461074a5780639bc643a414610752576104ee565b80634ed3dded116103cb578063655ea8eb1161033d5780636f3d3542116102f65780636f3d3542146106e157806373d95bc5146106e9578063758fb955146106fc5780637668702a1461070f57806376b4c85c146107175780637943ac0b1461071f576104ee565b8063655ea8eb146106a657806366813f63146106ae5780636a0ab9a9146106b65780636ce57221146106be5780636d557c2e146106c65780636ea9e374146106d9576104ee565b80635ec232f11161038f5780635ec232f11461064a578063615cef7d146106525780636355a2bb14610665578063638598ce14610678578063640ba48d1461068057806364b8cf3d14610693576104ee565b80634ed3dded1461062257806351a41dec1461062a5780635553c956146106325780635a4972e61461063a5780635d8ee0b914610642576104ee565b8063296d77fb1161046457806334733cc91161042857806334733cc9146105f2578063368e9c6c146105fa5780633ab3feb2146106025780634626402b1461060a5780634641257d146106125780634b60ae631461061a576104ee565b8063296d77fb146105b45780632a5626f2146105bc5780632a9f51d7146105c45780632b976cf6146105cc5780632d72b864146105df576104ee565b80631cde0e4b116104b65780631cde0e4b146105565780631ecff8301461055e5780632254ea331461057157806323572fc914610586578063249558461461059957806328382258146105ac576104ee565b80630919475d146104f3578063092b4a3e14610511578063129ebc4b14610526578063136e89231461053b5780631cc9841f1461054e575b600080fd5b6104fb610908565b6040516105089190614a91565b60405180910390f35b61051961092c565b60405161050891906149c1565b61052e610950565b6040516105089190614a86565b61052e6105493660046147de565b610960565b610519610980565b6104fb6109a4565b61051961056c36600461488c565b6109c8565b61058461057f3660046148b5565b610a00565b005b6105846105943660046147c4565b610a53565b6105846105a73660046147c4565b610bf5565b610519610c5e565b610519610c82565b61052e610ca6565b610519610caf565b6105846105da36600461488c565b610cd3565b6105846105ed366004614810565b610d6a565b6104fb610e0a565b61052e610e10565b6104fb610e19565b610519610e3d565b610584610e4c565b6104fb610f03565b6104fb610f09565b6104fb610f2d565b610584610f33565b61052e611240565b61058461124e565b6105196112b8565b610584610660366004614926565b6112dc565b610584610673366004614926565b611316565b610584611350565b61058461068e366004614926565b611491565b6105846106a13660046147c4565b611547565b6105846117a3565b610519611870565b6104fb61187f565b6104fb611885565b6105846106d4366004614956565b6118a9565b610584611968565b6105846119a2565b6105846106f736600461488c565b611a87565b6104fb61070a3660046147c4565b611afa565b610584611b0a565b6104fb611b56565b610584611b5c565b6105846107353660046147c4565b611b76565b6104fb611c74565b610584611c7a565b610519611f2e565b610584610760366004614926565b611f52565b6104fb611fd3565b610519611ff7565b6104fb61201b565b6104fb612021565b6104fb612045565b61052e612069565b610584612079565b6104fb61215f565b6105846107b3366004614926565b612165565b61051961219f565b6105196121ae565b6105196121d2565b6104fb6121f6565b6105846121fc565b610584612236565b610519612833565b610519612857565b6104fb61287b565b6104fb612a81565b6105846108163660046147c4565b612aa5565b610584610829366004614926565b612f68565b61058461083c366004614926565b612fe9565b6104fb61309d565b6104fb6130a3565b61058461085f366004614926565b6130a9565b6104fb6130e3565b6104fb61087a3660046147c4565b6130e9565b610519613104565b610584610895366004614926565b613128565b610584613215565b6105846108b036600461484b565b613efa565b6104fb6140d4565b6104fb6140da565b6105846108d33660046148b5565b6140fe565b610519614146565b6104fb61416a565b61051961450b565b61052e61452f565b610519614538565b61051961455c565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b601354600160a81b900460ff1681565b600460209081526000928352604080842090915290825290205460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600360205281600052604060002081815481106109e457600080fd5b6000918252602090912001546001600160a01b03169150829050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3557600080fd5b60138054911515600160a81b0260ff60a81b19909216919091179055565b6040516317aa5fb760e11b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632f54bf6e90610aa29033906004016149c1565b60206040518083038186803b158015610aba57600080fd5b505afa158015610ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af291906148d1565b905080610b1a5760405162461bcd60e51b8152600401610b1190614bc6565b60405180910390fd5b3360009081526004602090815260408083206001600160a01b038616845290915290205460ff1615610b5e5760405162461bcd60e51b8152600401610b1190614c60565b3360008181526004602090815260408083206001600160a01b038716808552908352818420805460ff1916600190811790915560038452828520805480830182559086529390942090920180546001600160a01b03191685179055517fe33d821ee0252a5c507075137daf759d5ec3bab8afacd3bfc12c76716926312c93610be993909287926149d5565b60405180910390a15050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c2a57600080fd5b436012556013805460ff60a01b196001600160a01b039093166001600160a01b03199091161791909116600160a01b179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d0857600080fd5b6040516313232c1360e11b81526001600160a01b03831690632646582690610d34908490600401614a91565b600060405180830381600087803b158015610d4e57600080fd5b505af1158015610d62573d6000803e3d6000fd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d9f57600080fd5b60005460405163d7b7142360e01b81526001600160a01b039091169063d7b7142390610dd390869086908690600401614a00565b600060405180830381600087803b158015610ded57600080fd5b505af1158015610e01573d6000803e3d6000fd5b50505050505050565b60075481565b60155460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031681565b333214610e6b5760405162461bcd60e51b8152600401610b1190614bfd565b6000610e7561416a565b9050610e7f611c7a565b610e87613215565b42601455610ebf6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383614580565b336001600160a01b03167fc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba82604051610ef89190614a91565b60405180910390a250565b600e5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60065481565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f6857600080fd5b43600554601254610f799190614e16565b10610f965760405162461bcd60e51b8152600401610b1190614c29565b6013546040516321c17f3560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692638705fcd492610fe99291909116906004016149c1565b600060405180830381600087803b15801561100357600080fd5b505af1158015611017573d6000803e3d6000fd5b50506013546040516346c4548760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169450638d88a90e935061106b9216906004016149c1565b600060405180830381600087803b15801561108557600080fd5b505af1158015611099573d6000803e3d6000fd5b505060135460405163f2fde38b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116945063f2fde38b93506110ed9216906004016149c1565b600060405180830381600087803b15801561110757600080fd5b505af115801561111b573d6000803e3d6000fd5b50506013546040516370a0823160e01b81526111f993506001600160a01b0391821692507f0000000000000000000000000000000000000000000000000000000000000000909116906370a08231906111789030906004016149c1565b60206040518083038186803b15801561119057600080fd5b505afa1580156111a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c8919061493e565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190614580565b60135460405133917f5296de069a121d7d0bc5ab079d0b2aaad96d23909ae242cabb658a592247ce6291611236916001600160a01b0316906149c1565b60405180910390a2565b601054610100900460ff1681565b60105460ff16801561126f575042600d54600f5461126c9190614e16565b11155b61127857600080fd5b600f546112859042614e6d565b600e546112929043614e6d565b61129f90620f4240614e4e565b6112a99190614e2e565b600c556010805460ff19169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461131157600080fd5b600755565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461134b57600080fd5b600955565b60155460ff16156113735760405162461bcd60e51b8152600401610b1190614dc9565b604051636cb1c21160e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d9638422906113c890600090610fa09082908190600401614a9a565b600060405180830381600087803b1580156113e257600080fd5b505af11580156113f6573d6000803e3d6000fd5b5050604051636cb1c21160e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063d96384229150611450906001906107d0906000908190600401614a9a565b600060405180830381600087803b15801561146a57600080fd5b505af115801561147e573d6000803e3d6000fd5b50506015805460ff191660011790555050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114c657600080fd5b60405163640ba48d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063640ba48d90611512908490600401614a91565b600060405180830381600087803b15801561152c57600080fd5b505af1158015611540573d6000803e3d6000fd5b5050505050565b3360009081526004602090815260408083206001600160a01b038516845290915290205460ff1661158a5760405162461bcd60e51b8152600401610b1190614cf6565b6001600160a01b0381166000908152600360205260408120546115af90600190614e6d565b905060005b6001600160a01b03831660009081526003602052604090208054339190839081106115ef57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161461161b578061161381614eb0565b9150506115b4565b3360009081526004602090815260408083206001600160a01b03871684529091529020805460ff191690558082146116ff576001600160a01b038316600090815260036020526040902080548390811061168557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b038681168452600390925260409092208054919092169190839081106116d057634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6001600160a01b038316600090815260036020526040902080548061173457634e487b7160e01b600052603160045260246000fd5b600082815260208120820160001990810180546001600160a01b03191690559091019091556040517fe33d821ee0252a5c507075137daf759d5ec3bab8afacd3bfc12c76716926312c9161179691339187916001600160a01b038316906149d5565b60405180910390a1505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117d857600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663135d31d76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561183357600080fd5b505af1158015611847573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186b919061493e565b600a55565b6013546001600160a01b031681565b60125481565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118de57600080fd5b604051636cb1c21160e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d963842290611930908790879087908790600401614a9a565b600060405180830381600087803b15801561194a57600080fd5b505af115801561195e573d6000803e3d6000fd5b5050505050505050565b60105460ff161561198b5760405162461bcd60e51b8152600401610b1190614b25565b6010805460ff1916600117905543600e5542600f55565b601354600160a01b900460ff166119cb5760405162461bcd60e51b8152600401610b1190614b5c565b60135460405163050168c160e01b81526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263050168c192611a1e9216906004016149c1565b604080518083038186803b158015611a3557600080fd5b505afa158015611a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6d91906148ed565b5090508015611a84576013805460ff60a01b191690555b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611abc57600080fd5b6105dc811115611ade5760405162461bcd60e51b8152600401610b1190614dee565b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b0381165b919050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b3f57600080fd5b60118054906000611b4f83614eb0565b9190505550565b60115481565b612710611b6761287b565b611b719190614e2e565b600855565b333214611b8257600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161415611bd45760405162461bcd60e51b8152600401610b1190614d1a565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190611c039030906004016149c1565b60206040518083038186803b158015611c1b57600080fd5b505afa158015611c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c53919061493e565b600054909150611c70906001600160a01b03848116911683614580565b5050565b600c5481565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634641257d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611cd557600080fd5b505af1158015611ce9573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634641257d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d4857600080fd5b505af1158015611d5c573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634641257d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611dbb57600080fd5b505af1158015611dcf573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634641257d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e2e57600080fd5b505af1158015611e42573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634641257d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634641257d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f1457600080fd5b505af1158015611f28573d6000803e3d6000fd5b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611f8757600080fd5b6040516326f190e960e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639bc643a490611512908490600401614a91565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b601354600160a01b900460ff1681565b6040516328f582d360e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906351eb05a6906120c690600090600401614a91565b600060405180830381600087803b1580156120e057600080fd5b505af11580156120f4573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a6915061214590600190600401614a91565b600060405180830381600087803b158015611f1457600080fd5b60095481565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461219a57600080fd5b600655565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60145481565b6201518061220e63629e1bbd42614e6d565b6122189190614e2e565b612224906109c4614e4e565b612231906202e248614e16565b600555565b6040516328f582d360e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906351eb05a69061228390600090600401614a91565b600060405180830381600087803b15801561229d57600080fd5b505af11580156122b1573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a6915061230290600190600401614a91565b600060405180830381600087803b15801561231c57600080fd5b505af1158015612330573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a6915061238190600890600401614a91565b600060405180830381600087803b15801561239b57600080fd5b505af11580156123af573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a6915061240090600990600401614a91565b600060405180830381600087803b15801561241a57600080fd5b505af115801561242e573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a6915061247f90600a90600401614a91565b600060405180830381600087803b15801561249957600080fd5b505af11580156124ad573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a6915061251d907f000000000000000000000000000000000000000000000000000000000000000090600401614a91565b600060405180830381600087803b15801561253757600080fd5b505af115801561254b573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a691506125bb907f000000000000000000000000000000000000000000000000000000000000000090600401614a91565b600060405180830381600087803b1580156125d557600080fd5b505af11580156125e9573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a69150612659907f000000000000000000000000000000000000000000000000000000000000000090600401614a91565b600060405180830381600087803b15801561267357600080fd5b505af1158015612687573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a691506126f7907f000000000000000000000000000000000000000000000000000000000000000090600401614a91565b600060405180830381600087803b15801561271157600080fd5b505af1158015612725573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a69150612795907f000000000000000000000000000000000000000000000000000000000000000090600401614a91565b600060405180830381600087803b1580156127af57600080fd5b505af11580156127c3573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a69150612145907f000000000000000000000000000000000000000000000000000000000000000090600401614a91565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906128ea907f0000000000000000000000000000000000000000000000000000000000000000906004016149c1565b60206040518083038186803b15801561290257600080fd5b505afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a919061493e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561299357600080fd5b505afa1580156129a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cb919061493e565b6129d59190614e6d565b6129e1906103e8614e4e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3a57600080fd5b505afa158015612a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a72919061493e565b612a7c9190614e16565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152600360205260408120546005811015612adf5760405162461bcd60e51b8152600401610b1190614aee565b60005b81811015612c08577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632f54bf6e60036000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110612b5d57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160e01b031960e084901b168152612b93916001600160a01b0316906004016149c1565b60206040518083038186803b158015612bab57600080fd5b505afa158015612bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be391906148d1565b15612bf65782612bf281614eb0565b9350505b80612c0081614eb0565b915050612ae2565b506005821015612c2a5760405162461bcd60e51b8152600401610b1190614c88565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166319cbe9506040518163ffffffff1660e01b815260040160206040518083038186803b158015612c8557600080fd5b505afa158015612c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbd919061493e565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637e57e8ff866001600160a01b03166040518263ffffffff1660e01b8152600401612d169190614a91565b60206040518083038186803b158015612d2e57600080fd5b505afa158015612d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d66919061493e565b90506064612d7583602a614e4e565b612d7f9190614e2e565b811015612d9e5760405162461bcd60e51b8152600401610b1190614d87565b6040516321c17f3560e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638705fcd490612dea9088906004016149c1565b600060405180830381600087803b158015612e0457600080fd5b505af1158015612e18573d6000803e3d6000fd5b50506040516346c4548760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250638d88a90e9150612e689088906004016149c1565b600060405180830381600087803b158015612e8257600080fd5b505af1158015612e96573d6000803e3d6000fd5b505060405163f2fde38b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063f2fde38b9150612ee69088906004016149c1565b600060405180830381600087803b158015612f0057600080fd5b505af1158015612f14573d6000803e3d6000fd5b50505050611540857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161117891906149c1565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612f9d57600080fd5b60405163a3d7a33960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a3d7a33990611512908490600401614a91565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806130485750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61305157600080fd5b604051636d1b229d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636d1b229d90611512908490600401614a91565b60055481565b600f5481565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146130de57600080fd5b600d55565b600d5481565b6001600160a01b031660009081526002602052604090205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461315d57600080fd5b6040516305d4266960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630ba84cd2906131a9908490600401614a91565b600060405180830381600087803b1580156131c357600080fd5b505af11580156131d7573d6000803e3d6000fd5b505050507fa2c906d360736c15f8fc6c4b049228f49b9f4f8dbe56808aa82f316833a055be8160405161320a9190614a91565b60405180910390a150565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190613284907f0000000000000000000000000000000000000000000000000000000000000000906004016149c1565b60206040518083038186803b15801561329c57600080fd5b505afa1580156132b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d4919061493e565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161334491906149c1565b60206040518083038186803b15801561335c57600080fd5b505afa158015613370573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613394919061493e565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161340491906149c1565b60206040518083038186803b15801561341c57600080fd5b505afa158015613430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613454919061493e565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016134c491906149c1565b60206040518083038186803b1580156134dc57600080fd5b505afa1580156134f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613514919061493e565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161358491906149c1565b60206040518083038186803b15801561359c57600080fd5b505afa1580156135b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d4919061493e565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161364491906149c1565b60206040518083038186803b15801561365c57600080fd5b505afa158015613670573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613694919061493e565b90506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d96384227f00000000000000000000000000000000000000000000000000000000000000006a52b7d2dcc80cd2e40000006136fd8a6002614e4e565b6137079190614e2e565b6000806040518563ffffffff1660e01b81526004016137299493929190614a9a565b600060405180830381600087803b15801561374357600080fd5b505af1158015613757573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d96384227f00000000000000000000000000000000000000000000000000000000000000006a52b7d2dcc80cd2e40000008860036137c49190614e4e565b6137ce9190614e2e565b6000806040518563ffffffff1660e01b81526004016137f09493929190614a9a565b600060405180830381600087803b15801561380a57600080fd5b505af115801561381e573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d96384227f00000000000000000000000000000000000000000000000000000000000000006a52b7d2dcc80cd2e400000087600561388b9190614e4e565b6138959190614e2e565b6000806040518563ffffffff1660e01b81526004016138b79493929190614a9a565b600060405180830381600087803b1580156138d157600080fd5b505af11580156138e5573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d96384227f00000000000000000000000000000000000000000000000000000000000000006a52b7d2dcc80cd2e400000086600a6139529190614e4e565b61395c9190614e2e565b6000806040518563ffffffff1660e01b815260040161397e9493929190614a9a565b600060405180830381600087803b15801561399857600080fd5b505af11580156139ac573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d96384227f00000000000000000000000000000000000000000000000000000000000000006a52b7d2dcc80cd2e400000085600d613a199190614e4e565b613a239190614e2e565b6000806040518563ffffffff1660e01b8152600401613a459493929190614a9a565b600060405180830381600087803b158015613a5f57600080fd5b505af1158015613a73573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d96384227f00000000000000000000000000000000000000000000000000000000000000006a52b7d2dcc80cd2e400000084600f613ae09190614e4e565b613aea9190614e2e565b6000806040518563ffffffff1660e01b8152600401613b0c9493929190614a9a565b600060405180830381600087803b158015613b2657600080fd5b505af1158015613b3a573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a69150613baa907f000000000000000000000000000000000000000000000000000000000000000090600401614a91565b600060405180830381600087803b158015613bc457600080fd5b505af1158015613bd8573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a69150613c48907f000000000000000000000000000000000000000000000000000000000000000090600401614a91565b600060405180830381600087803b158015613c6257600080fd5b505af1158015613c76573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a69150613ce6907f000000000000000000000000000000000000000000000000000000000000000090600401614a91565b600060405180830381600087803b158015613d0057600080fd5b505af1158015613d14573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a69150613d84907f000000000000000000000000000000000000000000000000000000000000000090600401614a91565b600060405180830381600087803b158015613d9e57600080fd5b505af1158015613db2573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a69150613e22907f000000000000000000000000000000000000000000000000000000000000000090600401614a91565b600060405180830381600087803b158015613e3c57600080fd5b505af1158015613e50573d6000803e3d6000fd5b50506040516328f582d360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506351eb05a69150613ec0907f000000000000000000000000000000000000000000000000000000000000000090600401614a91565b600060405180830381600087803b158015613eda57600080fd5b505af1158015613eee573d6000803e3d6000fd5b50505050505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480613f595750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b80613f8c5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b80613fbf5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b80613ff25750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b806140255750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61402e57600080fd5b60405163b3f5f65560e01b81526001600160a01b0384169063b3f5f6559061406190879086908690600090600401614a60565b600060405180830381600087803b15801561407b57600080fd5b505af115801561408f573d6000803e3d6000fd5b505050507fd1e293b75a6aeb3a9ab5df2765badd46e6e7c83a001a37e4b9cadea14c8183718483856040516140c693929190614a3d565b60405180910390a150505050565b60085481565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461413357600080fd5b600b805460ff1916911515919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e89bfdab6040518163ffffffff1660e01b815260040160206040518083038186803b1580156141c657600080fd5b505afa1580156141da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141fe919061493e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e89bfdab6040518163ffffffff1660e01b815260040160206040518083038186803b15801561425757600080fd5b505afa15801561426b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061428f919061493e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e89bfdab6040518163ffffffff1660e01b815260040160206040518083038186803b1580156142e857600080fd5b505afa1580156142fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614320919061493e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e89bfdab6040518163ffffffff1660e01b815260040160206040518083038186803b15801561437957600080fd5b505afa15801561438d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143b1919061493e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e89bfdab6040518163ffffffff1660e01b815260040160206040518083038186803b15801561440a57600080fd5b505afa15801561441e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614442919061493e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e89bfdab6040518163ffffffff1660e01b815260040160206040518083038186803b15801561449b57600080fd5b505afa1580156144af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144d3919061493e565b6144dd9190614e16565b6144e79190614e16565b6144f19190614e16565b6144fb9190614e16565b6145059190614e16565b91505090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60105460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6145d68363a9059cbb60e01b848460405160240161459f929190614a24565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526145db565b505050565b6000614630826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661466a9092919063ffffffff16565b8051909150156145d6578080602001905181019061464e91906148d1565b6145d65760405162461bcd60e51b8152600401610b1190614d3d565b60606146798484600085614683565b90505b9392505050565b6060824710156146a55760405162461bcd60e51b8152600401610b1190614b80565b6146ae85614743565b6146ca5760405162461bcd60e51b8152600401610b1190614cbf565b600080866001600160a01b031685876040516146e691906149a5565b60006040518083038185875af1925050503d8060008114614723576040519150601f19603f3d011682016040523d82523d6000602084013e614728565b606091505b5091509150614738828286614774565b979650505050505050565b600080826001600160a01b0316803b806020016040519081016040528181526000908060200190933c511192915050565b6060831561478357508161467c565b8251156147935782518084602001fd5b8160405162461bcd60e51b8152600401610b119190614abb565b80356001600160a01b0381168114611b0557600080fd5b6000602082840312156147d5578081fd5b61467c826147ad565b600080604083850312156147f0578081fd5b6147f9836147ad565b9150614807602084016147ad565b90509250929050565b600080600060608486031215614824578081fd5b61482d846147ad565b925061483b602085016147ad565b9150604084013590509250925092565b60008060008060808587031215614860578081fd5b614869856147ad565b9350614877602086016147ad565b93969395505050506040820135916060013590565b6000806040838503121561489e578182fd5b6148a7836147ad565b946020939093013593505050565b6000602082840312156148c6578081fd5b813561467c81614ee1565b6000602082840312156148e2578081fd5b815161467c81614ee1565b600080604083850312156148ff578182fd5b825161490a81614ee1565b602084015190925061491b81614ee1565b809150509250929050565b600060208284031215614937578081fd5b5035919050565b60006020828403121561494f578081fd5b5051919050565b6000806000806080858703121561496b578384fd5b8435935060208501359250604085013561ffff8116811461498a578283fd5b9150606085013561499a81614ee1565b939692955090935050565b600082516149b7818460208701614e84565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292909316602083015215156040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b901515815260200190565b90815260200190565b938452602084019290925261ffff1660408301521515606082015260800190565b6000602082528251806020840152614ada816040850160208701614e84565b601f01601f19169190910160400192915050565b6020808252601d908201527f6d696e696d756d2035207369676e617475726573207265717569726564000000604082015260600190565b60208082526017908201527f616c726561647920636f756e74696e6720626c6f636b73000000000000000000604082015260600190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252601c908201527f5369676e6572206973206e6f74206d756c7469736967206f776e657200000000604082015260600190565b6020808252601290820152716e6f2070726f78792f636f6e74726163747360701b604082015260600190565b60208082526019908201527f74696d652064656c6179206e6f74207965742070617373656400000000000000604082015260600190565b6020808252600e908201526d185b1c9958591e481cda59db995960921b604082015260600190565b6020808252601f908201527f4d696e696d756d20352f38207369676e61747572657320726571756972656400604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252600a90820152691b9bdd081cda59db995960b21b604082015260600190565b6020808252600990820152686e6f742058564d432160b81b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526022908201527f4d696e696d756d2034322520776569676874656420766f746520726571756972604082015261195960f21b606082015260800190565b6020808252600b908201526a185b1c9958591e481cd95d60aa1b604082015260600190565b6020808252600e908201526d0c4d49481a185c99081b1a5b5a5d60921b604082015260600190565b60008219821115614e2957614e29614ecb565b500190565b600082614e4957634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615614e6857614e68614ecb565b500290565b600082821015614e7f57614e7f614ecb565b500390565b60005b83811015614e9f578181015183820152602001614e87565b83811115611f285750506000910152565b6000600019821415614ec457614ec4614ecb565b5060010190565b634e487b7160e01b600052601160045260246000fd5b8015158114611a8457600080fdfea2646970667358221220ca697cadc0b7783e7a8d6c1a71ff20320028e27a361c90b262260f294548fada64736f6c63430008000033000000000000000000000000ffb71361dd8fc3ef0831871ec8dd51b413ed093c0000000000000000000000009a9aef66624c3fa77daacca9b51de307fa09bd500000000000000000000000001f8a5d98f1e2f10e93331d27cf22ed7985ef6a1200000000000000000000000030019481fc501afa449781ac671103feb0d6363c0000000000000000000000008c96105ea574727e94d9c199c632128f1ca584cf000000000000000000000000605c5aa14bdbf0d50a99836e7909c631cf3c8d46
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ffb71361dd8fc3ef0831871ec8dd51b413ed093c0000000000000000000000009a9aef66624c3fa77daacca9b51de307fa09bd500000000000000000000000001f8a5d98f1e2f10e93331d27cf22ed7985ef6a1200000000000000000000000030019481fc501afa449781ac671103feb0d6363c0000000000000000000000008c96105ea574727e94d9c199c632128f1ca584cf000000000000000000000000605c5aa14bdbf0d50a99836e7909c631cf3c8d46
-----Decoded View---------------
Arg [0] : _acPool1 (address): 0xffb71361dd8fc3ef0831871ec8dd51b413ed093c
Arg [1] : _acPool2 (address): 0x9a9aef66624c3fa77daacca9b51de307fa09bd50
Arg [2] : _acPool3 (address): 0x1f8a5d98f1e2f10e93331d27cf22ed7985ef6a12
Arg [3] : _acPool4 (address): 0x30019481fc501afa449781ac671103feb0d6363c
Arg [4] : _acPool5 (address): 0x8c96105ea574727e94d9c199c632128f1ca584cf
Arg [5] : _acPool6 (address): 0x605c5aa14bdbf0d50a99836e7909c631cf3c8d46
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000ffb71361dd8fc3ef0831871ec8dd51b413ed093c
Arg [1] : 0000000000000000000000009a9aef66624c3fa77daacca9b51de307fa09bd50
Arg [2] : 0000000000000000000000001f8a5d98f1e2f10e93331d27cf22ed7985ef6a12
Arg [3] : 00000000000000000000000030019481fc501afa449781ac671103feb0d6363c
Arg [4] : 0000000000000000000000008c96105ea574727e94d9c199c632128f1ca584cf
Arg [5] : 000000000000000000000000605c5aa14bdbf0d50a99836e7909c631cf3c8d46
Deployed ByteCode Sourcemap
18347:20663:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20549:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20333:77;;;:::i;:::-;;;;;;;:::i;23051:28::-;;;:::i;:::-;;;;;;;:::i;20962:65::-;;;;;;:::i;:::-;;:::i;18947:85::-;;;:::i;20774:46::-;;;:::i;20886:56::-;;;;;;:::i;:::-;;:::i;33019:128::-;;;;;;:::i;:::-;;:::i;:::-;;37793:466;;;;;;:::i;:::-;;:::i;32078:247::-;;;;;;:::i;:::-;;:::i;19438:88::-;;;:::i;19997:77::-;;;:::i;22060:43::-;;;:::i;19913:77::-;;;:::i;33858:164::-;;;;;;:::i;:::-;;:::i;32599:245::-;;;;;;:::i;:::-;;:::i;21309:42::-;;;:::i;23174:26::-;;;:::i;20594:38::-;;;:::i;19685:74::-;;;:::i;29116:343::-;;;:::i;22441:31::-;;;:::i;20729:38::-;;;:::i;21170:41::-;;;:::i;31430:639::-;;;:::i;22629:29::-;;;:::i;24777:295::-;;;:::i;20165:77::-;;;:::i;33705:147::-;;;;;;:::i;:::-;;:::i;33539:160::-;;;;;;:::i;:::-;;:::i;29553:213::-;;;:::i;34869:183::-;;;;;;:::i;:::-;;:::i;38265:617::-;;;;;;:::i;:::-;;:::i;31260:152::-;;;:::i;22934:34::-;;;:::i;22889:38::-;;;:::i;18415:43::-;;;:::i;33302:231::-;;;;;;:::i;:::-;;:::i;24543:227::-;;;:::i;32331:263::-;;;:::i;34175:204::-;;;;;;:::i;:::-;;:::i;38888:119::-;;;;;;:::i;:::-;;:::i;34726:137::-;;;:::i;22781:46::-;;;:::i;24073:107::-;;;:::i;35346:324::-;;;;;;:::i;:::-;;:::i;22280:39::-;;;:::i;28815:220::-;;;:::i;19043:87::-;;;:::i;35055:179::-;;;;;;:::i;:::-;;:::i;20504:38::-;;;:::i;19137:82::-;;;:::i;21944:58::-;;;:::i;20639:38::-;;;:::i;20684:::-;;;:::i;23010:35::-;;;:::i;26704:134::-;;;:::i;21634:58::-;;;:::i;34028:141::-;;;;;;:::i;:::-;;:::i;19766:69::-;;;:::i;20081:77::-;;;:::i;18490:78::-;;;:::i;23136:32::-;;;:::i;36271:138::-;;;:::i;25978:656::-;;;:::i;19226:91::-;;;:::i;19530:::-;;;:::i;25669:194::-;;;:::i;21757:42::-;;;:::i;36696:1092::-;;;;;;:::i;:::-;;:::i;34573:147::-;;;;;;:::i;:::-;;:::i;34385:182::-;;;;;;:::i;:::-;;:::i;21070:45::-;;;:::i;22521:30::-;;;:::i;32850:163::-;;;;;;:::i;:::-;;:::i;22349:47::-;;;:::i;25084:128::-;;;;;;:::i;:::-;;:::i;18789:82::-;;;:::i;31024:230::-;;;;;;:::i;:::-;;:::i;27459:1350::-;;;:::i;30456:505::-;;;;;;:::i;:::-;;:::i;21433:32::-;;;:::i;21851:43::-;;;:::i;33153:144::-;;;;;;:::i;:::-;;:::i;20249:77::-;;;:::i;29771:425::-;;;:::i;19348:83::-;;;:::i;22597:26::-;;;:::i;18702:80::-;;;:::i;18575:75::-;;;:::i;20549:38::-;;;:::o;20333:77::-;;;:::o;23051:28::-;;;-1:-1:-1;;;23051:28:0;;;;;:::o;20962:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18947:85::-;;;:::o;20774:46::-;;;:::o;20886:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20886:56:0;;-1:-1:-1;20886:56:0;;-1:-1:-1;20886:56:0:o;33019:128::-;33079:10;-1:-1:-1;;;;;33093:17:0;33079:31;;33071:40;;;;;;33119:16;:23;;;;;-1:-1:-1;;;33119:23:0;-1:-1:-1;;;;33119:23:0;;;;;;;;;33019:128::o;37793:466::-;37867:53;;-1:-1:-1;;;37867:53:0;;37851:13;;-1:-1:-1;;;;;37884:15:0;37867:41;;;;:53;;37909:10;;37867:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37851:69;;37933:8;37925:49;;;;-1:-1:-1;;;37925:49:0;;;;;;;:::i;:::-;;;;;;;;;38006:10;37992:25;;;;:13;:25;;;;;;;;-1:-1:-1;;;;;37992:39:0;;;;;;;;;;;;37991:40;37983:67;;;;-1:-1:-1;;;37983:67:0;;;;;;;:::i;:::-;38069:10;38055:25;;;;:13;:25;;;;;;;;-1:-1:-1;;;;;38055:39:0;;;;;;;;;;;:46;;-1:-1:-1;;38055:46:0;38097:4;38055:46;;;;;;38106:19;:33;;;;;:50;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;38106:50:0;;;;;38182:72;;;;;38069:10;;38081:12;;38182:72;:::i;:::-;;;;;;;;37793:466;;:::o;32078:247::-;32151:10;-1:-1:-1;;;;;32165:17:0;32151:31;;32143:40;;;;;;32220:12;32194:23;:38;32243:19;:33;;-1:-1:-1;;;;;;;;;32243:33:0;;;-1:-1:-1;;;;;;32243:33:0;;;;32287:30;;;;-1:-1:-1;;;32287:30:0;;;32078:247::o;19438:88::-;;;:::o;19997:77::-;;;:::o;22060:43::-;;;;;;:::o;19913:77::-;;;:::o;33858:164::-;33941:10;-1:-1:-1;;;;;33955:13:0;33941:27;;33933:36;;;;;;33977:40;;-1:-1:-1;;;33977:40:0;;-1:-1:-1;;;;;33977:27:0;;;;;:40;;34005:11;;33977:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33858:164;;:::o;32599:245::-;32709:10;-1:-1:-1;;;;;32723:17:0;32709:31;;32701:40;;;;;;32760:14;;32746:93;;-1:-1:-1;;;32746:93:0;;-1:-1:-1;;;;;32760:14:0;;;;32746:45;;:93;;32797:10;;32809;;32821:13;;32746:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32599:245;;;:::o;21309:42::-;;;;:::o;23174:26::-;;;;;;:::o;20594:38::-;;;:::o;19685:74::-;;;-1:-1:-1;;;;;19685:74:0;;:::o;29116:343::-;29163:10;29177:9;29163:23;29155:54;;;;-1:-1:-1;;;29155:54:0;;;;;;;:::i;:::-;29222:16;29241:23;:21;:23::i;:::-;29222:42;;29271:12;:10;:12::i;:::-;29294:16;:14;:16::i;:::-;29339:15;29319:17;:35;29362:48;-1:-1:-1;;;;;29369:5:0;29362:26;29389:10;29401:8;29362:26;:48::i;:::-;29430:10;-1:-1:-1;;;;;29422:29:0;;29442:8;29422:29;;;;;;:::i;:::-;;;;;;;;29116:343;:::o;22441:31::-;;;;:::o;20729:38::-;;;:::o;21170:41::-;;;;:::o;31430:639::-;31485:10;-1:-1:-1;;;;;31499:17:0;31485:31;;31477:40;;;;;;31580:12;31556:21;;31530:23;;:47;;;;:::i;:::-;:62;31522:100;;;;-1:-1:-1;;;31522:100:0;;;;;;;:::i;:::-;31667:19;;31629:58;;-1:-1:-1;;;31629:58:0;;-1:-1:-1;;;;;31641:10:0;31629:37;;;;;:58;;31667:19;;;;;31629:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31726:19:0;;31698:48;;-1:-1:-1;;;31698:48:0;;-1:-1:-1;;;;;31710:10:0;31698:27;;;-1:-1:-1;31698:27:0;;-1:-1:-1;31698:48:0;;31726:19;;31698:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31799:19:0;;31757:62;;-1:-1:-1;;;31757:62:0;;-1:-1:-1;;;;;31769:10:0;31757:41;;;-1:-1:-1;31757:41:0;;-1:-1:-1;31757:62:0;;31799:19;;31757:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31887:19:0;;31908:38;;-1:-1:-1;;;31908:38:0;;31860:87;;-1:-1:-1;;;;;;31887:19:0;;;;-1:-1:-1;31915:5:0;31908:23;;;;;;:38;;31940:4;;31908:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31867:5:0;31860:26;;:87;:26;:87::i;:::-;32029:19;;32013:48;;32050:10;;32013:48;;;;-1:-1:-1;;;;;32029:19:0;;32013:48;:::i;:::-;;;;;;;;31430:639::o;22629:29::-;;;;;;;;;:::o;24777:295::-;24842:14;;;;:79;;;;;24906:15;24879:22;;24861:15;;:40;;;;:::i;:::-;24860:61;;24842:79;24834:88;;;;;;25015:15;;24997:33;;:15;:33;:::i;:::-;24977:15;;24962:30;;:12;:30;:::i;:::-;24951:42;;:7;:42;:::i;:::-;:80;;;;:::i;:::-;24933:15;:98;25042:14;:22;;-1:-1:-1;;25042:22:0;;;24777:295::o;20165:77::-;;;:::o;33705:147::-;33782:10;-1:-1:-1;;;;;33796:13:0;33782:27;;33774:36;;;;;;33818:18;:29;33705:147::o;33539:160::-;33621:10;-1:-1:-1;;;;;33635:13:0;33621:27;;33613:36;;;;;;33657:22;:37;33539:160::o;29553:213::-;29601:14;;;;29600:15;29592:39;;;;-1:-1:-1;;;29592:39:0;;;;;;;:::i;:::-;29636:46;;-1:-1:-1;;;29636:46:0;;-1:-1:-1;;;;;29648:10:0;29636:27;;;;:46;;29664:1;;29667:4;;29664:1;;;;29636:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29688:46:0;;-1:-1:-1;;;29688:46:0;;-1:-1:-1;;;;;29700:10:0;29688:27;;-1:-1:-1;29688:27:0;;-1:-1:-1;29688:46:0;;29716:1;;29719:4;;29725:1;;;;29688:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29740:14:0;:21;;-1:-1:-1;;29740:21:0;29757:4;29740:21;;;-1:-1:-1;;29553:213:0:o;34869:183::-;34945:10;-1:-1:-1;;;;;34959:13:0;34945:27;;34937:36;;;;;;34978:69;;-1:-1:-1;;;34978:69:0;;-1:-1:-1;;;;;34991:21:0;34978:60;;;;:69;;35039:7;;34978:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34869:183;:::o;38265:617::-;38347:10;38333:25;;;;:13;:25;;;;;;;;-1:-1:-1;;;;;38333:39:0;;;;;;;;;;;;38325:62;;;;-1:-1:-1;;;38325:62:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38413:33:0;;38392:18;38413:33;;;:19;:33;;;;;:40;:44;;38456:1;;38413:44;:::i;:::-;38392:65;;38462:14;38481:83;-1:-1:-1;;;;;38487:33:0;;;;;;:19;:33;;;;;:41;;38532:10;;38487:33;38521:6;;38487:41;;;;-1:-1:-1;;;38487:41:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38487:41:0;:55;38481:83;;38550:8;;;;:::i;:::-;;;;38481:83;;;38582:10;38610:5;38568:25;;;:13;:25;;;;;;;;-1:-1:-1;;;;;38568:39:0;;;;;;;;;:47;;-1:-1:-1;;38568:47:0;;;38623:20;;;38620:126;;-1:-1:-1;;;;;38695:33:0;;;;;;:19;:33;;;;;:45;;38729:10;;38695:45;;;;-1:-1:-1;;;38695:45:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38651:33:0;;;;;:19;:33;;;;;;;:41;;38695:45;;;;;38651:33;38685:6;;38651:41;;;;-1:-1:-1;;;38651:41:0;;;;;;;;;;;;;;;;;:89;;;;;-1:-1:-1;;;;;38651:89:0;;;;;-1:-1:-1;;;;;38651:89:0;;;;;;38620:126;-1:-1:-1;;;;;38751:33:0;;;;;;:19;:33;;;;;:39;;;;;-1:-1:-1;;;38751:39:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;38751:39:0;;;;;-1:-1:-1;;;;;;38751:39:0;;;;;;;;;38804:73;;;;;;38813:10;;38825:12;;-1:-1:-1;;;;;38846:30:0;;;38804:73;:::i;:::-;;;;;;;;38265:617;;;:::o;31260:152::-;31308:10;-1:-1:-1;;;;;31322:21:0;31308:35;;31300:44;;;;;;31381:10;-1:-1:-1;;;;;31369:36:0;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31349:17;:58;31260:152::o;22934:34::-;;;-1:-1:-1;;;;;22934:34:0;;:::o;22889:38::-;;;;:::o;18415:43::-;;;:::o;33302:231::-;33419:10;-1:-1:-1;;;;;33433:12:0;33419:26;;33411:35;;;;;;33454:74;;-1:-1:-1;;;33454:74:0;;-1:-1:-1;;;;;33466:10:0;33454:27;;;;:74;;33482:4;;33488:11;;33501:13;;33516:11;;33454:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33302:231;;;;:::o;24543:227::-;24603:14;;;;24602:15;24594:51;;;;-1:-1:-1;;;24594:51:0;;;;;;;:::i;:::-;24656:14;:21;;-1:-1:-1;;24656:21:0;24673:4;24656:21;;;24706:12;24688:15;:30;24747:15;24729;:33;24543:227::o;32331:263::-;32381:23;;-1:-1:-1;;;32381:23:0;;;;32373:46;;;;-1:-1:-1;;;32373:46:0;;;;;;;:::i;:::-;32502:19;;32455:67;;-1:-1:-1;;;32455:67:0;;32429:20;;-1:-1:-1;;;;;32466:17:0;32455:46;;;;;:67;;32502:19;;32455:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32428:94;;;32530:15;32527:63;;;32553:23;:31;;-1:-1:-1;;;;32553:31:0;;;32527:63;32331:263;:::o;34175:204::-;34263:10;-1:-1:-1;;;;;34277:13:0;34263:27;;34255:36;;;;;;34314:4;34304:6;:14;;34296:41;;;;-1:-1:-1;;;34296:41:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34345:20:0;;;;;;;:10;:20;;;;;:29;34175:204::o;38888:119::-;-1:-1:-1;;;;;38975:26:0;;38888:119;;;;:::o;34726:137::-;34785:10;-1:-1:-1;;;;;34799:21:0;34785:35;;34777:44;;;;;;34826:30;:32;;;:30;:32;;;:::i;:::-;;;;;;34726:137::o;22781:46::-;;;;:::o;24073:107::-;24167:5;24148:16;:14;:16::i;:::-;:24;;;;:::i;:::-;24128:17;:44;24073:107::o;35346:324::-;35429:10;35443:9;35429:23;35421:32;;;;;;35484:5;-1:-1:-1;;;;;35466:23:0;:14;-1:-1:-1;;;;;35466:23:0;;;35458:45;;;;-1:-1:-1;;;35458:45:0;;;;;;;:::i;:::-;35535:47;;-1:-1:-1;;;35535:47:0;;35518:14;;-1:-1:-1;;;;;35535:32:0;;;;;:47;;35576:4;;35535:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35639:14;;35518:64;;-1:-1:-1;35603:59:0;;-1:-1:-1;;;;;35603:35:0;;;;35639:14;35518:64;35603:35;:59::i;:::-;35346:324;;:::o;22280:39::-;;;;:::o;28815:220::-;28857:7;-1:-1:-1;;;;;28849:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28888:7;-1:-1:-1;;;;;28880:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28919:7;-1:-1:-1;;;;;28911:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28950:7;-1:-1:-1;;;;;28942:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28981:7;-1:-1:-1;;;;;28973:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29012:7;-1:-1:-1;;;;;29004:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28815:220::o;19043:87::-;;;:::o;35055:179::-;35129:10;-1:-1:-1;;;;;35143:13:0;35129:27;;35121:36;;;;;;35162:67;;-1:-1:-1;;;35162:67:0;;-1:-1:-1;;;;;35175:21:0;35162:58;;;;:67;;35221:7;;35162:67;;;:::i;20504:38::-;;;:::o;19137:82::-;;;:::o;21944:58::-;;;;:::o;20639:38::-;;;:::o;20684:::-;;;:::o;23010:35::-;;;-1:-1:-1;;;23010:35:0;;;;;:::o;26704:134::-;26747:37;;-1:-1:-1;;;26747:37:0;;-1:-1:-1;;;;;26759:10:0;26747:34;;;;:37;;26782:1;;26747:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26792:37:0;;-1:-1:-1;;;26792:37:0;;-1:-1:-1;;;;;26804:10:0;26792:34;;-1:-1:-1;26792:34:0;;-1:-1:-1;26792:37:0;;26827:1;;26792:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;21634:58;;;;:::o;34028:141::-;34102:10;-1:-1:-1;;;;;34116:13:0;34102:27;;34094:36;;;;;;34138:10;:26;34028:141::o;19766:69::-;;;-1:-1:-1;;;;;19766:69:0;;:::o;20081:77::-;;;:::o;18490:78::-;;;:::o;23136:32::-;;;;:::o;36271:138::-;36390:5;36358:28;36376:10;36358:15;:28;:::i;:::-;36357:38;;;;:::i;:::-;36356:47;;36399:4;36356:47;:::i;:::-;36346:58;;:6;:58;:::i;:::-;36322:21;:82;36271:138::o;25978:656::-;26024:37;;-1:-1:-1;;;26024:37:0;;-1:-1:-1;;;;;26036:10:0;26024:34;;;;:37;;26059:1;;26024:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26098:37:0;;-1:-1:-1;;;26098:37:0;;-1:-1:-1;;;;;26110:10:0;26098:34;;-1:-1:-1;26098:34:0;;-1:-1:-1;26098:37:0;;26133:1;;26098:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26144:37:0;;-1:-1:-1;;;26144:37:0;;-1:-1:-1;;;;;26156:10:0;26144:34;;-1:-1:-1;26144:34:0;;-1:-1:-1;26144:37:0;;26179:1;;26144:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26205:37:0;;-1:-1:-1;;;26205:37:0;;-1:-1:-1;;;;;26217:10:0;26205:34;;-1:-1:-1;26205:34:0;;-1:-1:-1;26205:37:0;;26240:1;;26205:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26247:38:0;;-1:-1:-1;;;26247:38:0;;-1:-1:-1;;;;;26259:10:0;26247:34;;-1:-1:-1;26247:34:0;;-1:-1:-1;26247:38:0;;26282:2;;26247:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26311:45:0;;-1:-1:-1;;;26311:45:0;;-1:-1:-1;;;;;26323:10:0;26311:34;;-1:-1:-1;26311:34:0;;-1:-1:-1;26311:45:0;;26346:9;;26311:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26364:45:0;;-1:-1:-1;;;26364:45:0;;-1:-1:-1;;;;;26376:10:0;26364:34;;-1:-1:-1;26364:34:0;;-1:-1:-1;26364:45:0;;26399:9;;26364:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26418:45:0;;-1:-1:-1;;;26418:45:0;;-1:-1:-1;;;;;26430:10:0;26418:34;;-1:-1:-1;26418:34:0;;-1:-1:-1;26418:45:0;;26453:9;;26418:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26472:45:0;;-1:-1:-1;;;26472:45:0;;-1:-1:-1;;;;;26484:10:0;26472:34;;-1:-1:-1;26472:34:0;;-1:-1:-1;26472:45:0;;26507:9;;26472:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26526:45:0;;-1:-1:-1;;;26526:45:0;;-1:-1:-1;;;;;26538:10:0;26526:34;;-1:-1:-1;26526:34:0;;-1:-1:-1;26526:45:0;;26561:9;;26526:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26580:45:0;;-1:-1:-1;;;26580:45:0;;-1:-1:-1;;;;;26592:10:0;26580:34;;-1:-1:-1;26580:34:0;;-1:-1:-1;26580:45:0;;26615:9;;26580:45;;;:::i;19226:91::-;;;:::o;19530:::-;;;:::o;25669:194::-;25820:33;;-1:-1:-1;;;25820:33:0;;25715:7;;-1:-1:-1;;;;;25827:8:0;25820:26;;;;:33;;25847:5;;25820:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25794:8;-1:-1:-1;;;;;25787:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:66;;;;:::i;:::-;25779:75;;:4;:75;:::i;:::-;25750:5;-1:-1:-1;;;;;25743:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:111;;;;:::i;:::-;25735:120;;25669:194;:::o;21757:42::-;;;:::o;36696:1092::-;-1:-1:-1;;;;;36814:33:0;;36764:20;36814:33;;;:19;:33;;;;;:40;36884:1;36867:18;;;36859:60;;;;-1:-1:-1;;;36859:60:0;;;;;;;:::i;:::-;36928:6;36924:210;36941:13;36938:1;:16;36924:210;;;37034:15;-1:-1:-1;;;;;37017:41:0;;37059:19;:33;37079:12;-1:-1:-1;;;;;37059:33:0;-1:-1:-1;;;;;37059:33:0;;;;;;;;;;;;37093:1;37059:36;;;;;;-1:-1:-1;;;37059:36:0;;;;;;;;;;;;;;;;;;;37017:79;;-1:-1:-1;;;;;;37017:79:0;;;;;;;;;-1:-1:-1;;;;;37059:36:0;;37017:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37014:115;;;37105:17;;;;:::i;:::-;;;;37014:115;36956:3;;;;:::i;:::-;;;;36924:210;;;;37171:1;37152:15;:20;;37144:64;;;;-1:-1:-1;;;37144:64:0;;;;;;;:::i;:::-;37217:20;37251:17;-1:-1:-1;;;;;37240:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37217:70;;37292:26;37332:17;-1:-1:-1;;;;;37321:49:0;;37387:12;-1:-1:-1;;;;;37371:30:0;37321:81;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37292:110;-1:-1:-1;37462:3:0;37442:17;:12;37457:2;37442:17;:::i;:::-;:23;;;;:::i;:::-;37419:18;:47;;37411:94;;;;-1:-1:-1;;;37411:94:0;;;;;;;:::i;:::-;37526:51;;-1:-1:-1;;;37526:51:0;;-1:-1:-1;;;;;37538:10:0;37526:37;;;;:51;;37564:12;;37526:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;37588:41:0;;-1:-1:-1;;;37588:41:0;;-1:-1:-1;;;;;37600:10:0;37588:27;;-1:-1:-1;37588:27:0;;-1:-1:-1;37588:41:0;;37616:12;;37588:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;37640:55:0;;-1:-1:-1;;;37640:55:0;;-1:-1:-1;;;;;37652:10:0;37640:41;;-1:-1:-1;37640:41:0;;-1:-1:-1;37640:55:0;;37682:12;;37640:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37700:80;37727:12;37748:5;-1:-1:-1;;;;;37741:23:0;;37773:4;37741:38;;;;;;;;;;;;;;;:::i;34573:147::-;34636:10;-1:-1:-1;;;;;34650:12:0;34636:26;;34628:35;;;;;;34668:47;;-1:-1:-1;;;34668:47:0;;-1:-1:-1;;;;;34680:10:0;34668:38;;;;:47;;34707:7;;34668:47;;;:::i;34385:182::-;34449:10;-1:-1:-1;;;;;34463:12:0;34449:26;;;:65;;-1:-1:-1;34479:10:0;-1:-1:-1;;;;;34493:21:0;34479:35;;34449:65;34441:74;;;;;;34520:42;;-1:-1:-1;;;34520:42:0;;-1:-1:-1;;;;;34529:12:0;34520:33;;;;:42;;34554:7;;34520:42;;;:::i;21070:45::-;;;;:::o;22521:30::-;;;;:::o;32850:163::-;32935:10;-1:-1:-1;;;;;32949:13:0;32935:27;;32927:36;;;;;;32971:22;:37;32850:163::o;22349:47::-;;;;:::o;25084:128::-;-1:-1:-1;;;;;25179:25:0;25152:7;25179:25;;;:10;:25;;;;;;;25084:128::o;18789:82::-;;;:::o;31024:230::-;31098:10;-1:-1:-1;;;;;31112:21:0;31098:35;;31090:44;;;;;;31142:58;;-1:-1:-1;;;31142:58:0;;-1:-1:-1;;;;;31154:10:0;31142:42;;;;:58;;31185:14;;31142:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31218:28;31231:14;31218:28;;;;;;:::i;:::-;;;;;;;;31024:230;:::o;27459:1350::-;27523:32;;-1:-1:-1;;;27523:32:0;;27500:20;;-1:-1:-1;;;;;27530:5:0;27523:23;;;;:32;;27547:7;;27523:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27500:55;;27563:20;27593:5;-1:-1:-1;;;;;27586:23:0;;27610:7;27586:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27563:55;;27626:20;27656:5;-1:-1:-1;;;;;27649:23:0;;27673:7;27649:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27626:55;;27689:20;27719:5;-1:-1:-1;;;;;27712:23:0;;27736:7;27712:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27689:55;;27752:20;27782:5;-1:-1:-1;;;;;27775:23:0;;27799:7;27775:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27752:55;;27815:20;27845:5;-1:-1:-1;;;;;27838:23:0;;27862:7;27838:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27815:55;-1:-1:-1;;;;;;27894:10:0;27882:27;;27910:9;27941:4;27922:16;:12;27937:1;27922:16;:::i;:::-;:23;;;;:::i;:::-;27948:1;27951:5;27882:75;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27977:10;-1:-1:-1;;;;;27965:27:0;;27993:9;28024:4;28005:12;28020:1;28005:16;;;;:::i;:::-;:23;;;;:::i;:::-;28031:1;28034:5;27965:75;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28060:10;-1:-1:-1;;;;;28048:27:0;;28076:9;28107:4;28088:12;28103:1;28088:16;;;;:::i;:::-;:23;;;;:::i;:::-;28114:1;28117:5;28048:75;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28143:10;-1:-1:-1;;;;;28131:27:0;;28159:9;28191:4;28171:12;28186:2;28171:17;;;;:::i;:::-;:24;;;;:::i;:::-;28198:1;28201:5;28131:76;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28227:10;-1:-1:-1;;;;;28215:27:0;;28243:9;28275:4;28255:12;28270:2;28255:17;;;;:::i;:::-;:24;;;;:::i;:::-;28282:1;28285:5;28215:76;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28311:10;-1:-1:-1;;;;;28299:27:0;;28327:9;28359:4;28339:12;28354:2;28339:17;;;;:::i;:::-;:24;;;;:::i;:::-;28366:1;28369:5;28299:76;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28486:45:0;;-1:-1:-1;;;28486:45:0;;-1:-1:-1;;;;;28498:10:0;28486:34;;-1:-1:-1;28486:34:0;;-1:-1:-1;28486:45:0;;28521:9;;28486:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28539:45:0;;-1:-1:-1;;;28539:45:0;;-1:-1:-1;;;;;28551:10:0;28539:34;;-1:-1:-1;28539:34:0;;-1:-1:-1;28539:45:0;;28574:9;;28539:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28593:45:0;;-1:-1:-1;;;28593:45:0;;-1:-1:-1;;;;;28605:10:0;28593:34;;-1:-1:-1;28593:34:0;;-1:-1:-1;28593:45:0;;28628:9;;28593:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28647:45:0;;-1:-1:-1;;;28647:45:0;;-1:-1:-1;;;;;28659:10:0;28647:34;;-1:-1:-1;28647:34:0;;-1:-1:-1;28647:45:0;;28682:9;;28647:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28701:45:0;;-1:-1:-1;;;28701:45:0;;-1:-1:-1;;;;;28713:10:0;28701:34;;-1:-1:-1;28701:34:0;;-1:-1:-1;28701:45:0;;28736:9;;28701:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28755:45:0;;-1:-1:-1;;;28755:45:0;;-1:-1:-1;;;;;28767:10:0;28755:34;;-1:-1:-1;28755:34:0;;-1:-1:-1;28755:45:0;;28790:9;;28755:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27459:1350;;;;;;:::o;30456:505::-;30609:10;-1:-1:-1;;;;;30623:7:0;30609:21;;;:46;;-1:-1:-1;30634:10:0;-1:-1:-1;;;;;30648:7:0;30634:21;;30609:46;:71;;;-1:-1:-1;30659:10:0;-1:-1:-1;;;;;30673:7:0;30659:21;;30609:71;:109;;;-1:-1:-1;30697:10:0;-1:-1:-1;;;;;30711:7:0;30697:21;;30609:109;:134;;;-1:-1:-1;30722:10:0;-1:-1:-1;;;;;30736:7:0;30722:21;;30609:134;:159;;;-1:-1:-1;30747:10:0;-1:-1:-1;;;;;30761:7:0;30747:21;;30609:159;30587:182;;;;;;30790:79;;-1:-1:-1;;;30790:79:0;;-1:-1:-1;;;;;30790:41:0;;;;;:79;;30832:10;;30844:11;;30857:8;;30867:1;;30790:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30895:58;30913:10;30925:11;30938:14;30895:58;;;;;;;;:::i;:::-;;;;;;;;30456:505;;;;:::o;21433:32::-;;;;:::o;21851:43::-;;;:::o;33153:144::-;33220:10;-1:-1:-1;;;;;33234:21:0;33220:35;;33212:44;;;;;;33261:24;:31;;-1:-1:-1;;33261:31:0;;;;;;;;;;33153:144::o;20249:77::-;;;:::o;29771:425::-;29825:7;29839:20;30129:7;-1:-1:-1;;;;;30121:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30080:7;-1:-1:-1;;;;;30072:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30031:7;-1:-1:-1;;;;;30023:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29968:7;-1:-1:-1;;;;;29960:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29919:7;-1:-1:-1;;;;;29911:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29870:7;-1:-1:-1;;;;;29862:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:95;;;;:::i;:::-;:144;;;;:::i;:::-;:207;;;;:::i;:::-;:256;;;;:::i;:::-;:305;;;;:::i;:::-;29839:328;-1:-1:-1;;29771:425:0;:::o;19348:83::-;;;:::o;22597:26::-;;;;;;:::o;18702:80::-;;;:::o;18575:75::-;;;:::o;11997:211::-;12114:86;12134:5;12164:23;;;12189:2;12193:5;12141:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12141:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;12141:58:0;-1:-1:-1;;;;;;12141:58:0;;;;;;;;;;12114:19;:86::i;:::-;11997:211;;;:::o;14570:716::-;14994:23;15020:69;15048:4;15020:69;;;;;;;;;;;;;;;;;15028:5;-1:-1:-1;;;;;15020:27:0;;;:69;;;;;:::i;:::-;15104:17;;14994:95;;-1:-1:-1;15104:21:0;15100:179;;15201:10;15190:30;;;;;;;;;;;;:::i;:::-;15182:85;;;;-1:-1:-1;;;15182:85:0;;;;;;;:::i;3916:229::-;4053:12;4085:52;4107:6;4115:4;4121:1;4124:12;4085:21;:52::i;:::-;4078:59;;3916:229;;;;;;:::o;5036:510::-;5206:12;5264:5;5239:21;:30;;5231:81;;;;-1:-1:-1;;;5231:81:0;;;;;;;:::i;:::-;5331:18;5342:6;5331:10;:18::i;:::-;5323:60;;;;-1:-1:-1;;;5323:60:0;;;;;;;:::i;:::-;5397:12;5411:23;5438:6;-1:-1:-1;;;;;5438:11:0;5457:5;5464:4;5438:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5396:73;;;;5487:51;5504:7;5513:10;5525:12;5487:16;:51::i;:::-;5480:58;5036:510;-1:-1:-1;;;;;;;5036:510:0:o;1171:326::-;1231:4;1488:1;1466:7;-1:-1:-1;;;;;1466:12:0;;;;;;;;;;;;;;;;;;;;;;;;:19;:23;;1171:326;-1:-1:-1;;1171:326:0:o;7722:712::-;7872:12;7901:7;7897:530;;;-1:-1:-1;7932:10:0;7925:17;;7897:530;8046:17;;:21;8042:374;;8244:10;8238:17;8305:15;8292:10;8288:2;8284:19;8277:44;8192:148;8387:12;8380:20;;-1:-1:-1;;;8380:20:0;;;;;;;;:::i;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;397:274::-;;;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;575:31;596:9;575:31;:::i;:::-;565:41;;625:40;661:2;650:9;646:18;625:40;:::i;:::-;615:50;;484:187;;;;;:::o;676:342::-;;;;822:2;810:9;801:7;797:23;793:32;790:2;;;843:6;835;828:22;790:2;871:31;892:9;871:31;:::i;:::-;861:41;;921:40;957:2;946:9;942:18;921:40;:::i;:::-;911:50;;1008:2;997:9;993:18;980:32;970:42;;780:238;;;;;:::o;1023:411::-;;;;;1186:3;1174:9;1165:7;1161:23;1157:33;1154:2;;;1208:6;1200;1193:22;1154:2;1236:31;1257:9;1236:31;:::i;:::-;1226:41;;1286:40;1322:2;1311:9;1307:18;1286:40;:::i;:::-;1144:290;;1276:50;;-1:-1:-1;;;;1373:2:1;1358:18;;1345:32;;1424:2;1409:18;1396:32;;1144:290::o;1439:266::-;;;1568:2;1556:9;1547:7;1543:23;1539:32;1536:2;;;1589:6;1581;1574:22;1536:2;1617:31;1638:9;1617:31;:::i;:::-;1607:41;1695:2;1680:18;;;;1667:32;;-1:-1:-1;;;1526:179:1:o;1710:253::-;;1819:2;1807:9;1798:7;1794:23;1790:32;1787:2;;;1840:6;1832;1825:22;1787:2;1884:9;1871:23;1903:30;1927:5;1903:30;:::i;1968:257::-;;2088:2;2076:9;2067:7;2063:23;2059:32;2056:2;;;2109:6;2101;2094:22;2056:2;2146:9;2140:16;2165:30;2189:5;2165:30;:::i;2230:387::-;;;2364:2;2352:9;2343:7;2339:23;2335:32;2332:2;;;2385:6;2377;2370:22;2332:2;2422:9;2416:16;2441:30;2465:5;2441:30;:::i;:::-;2540:2;2525:18;;2519:25;2490:5;;-1:-1:-1;2553:32:1;2519:25;2553:32;:::i;:::-;2604:7;2594:17;;;2322:295;;;;;:::o;2622:190::-;;2734:2;2722:9;2713:7;2709:23;2705:32;2702:2;;;2755:6;2747;2740:22;2702:2;-1:-1:-1;2783:23:1;;2692:120;-1:-1:-1;2692:120:1:o;2817:194::-;;2940:2;2928:9;2919:7;2915:23;2911:32;2908:2;;;2961:6;2953;2946:22;2908:2;-1:-1:-1;2989:16:1;;2898:113;-1:-1:-1;2898:113:1:o;3016:566::-;;;;;3175:3;3163:9;3154:7;3150:23;3146:33;3143:2;;;3197:6;3189;3182:22;3143:2;3238:9;3225:23;3215:33;;3295:2;3284:9;3280:18;3267:32;3257:42;;3349:2;3338:9;3334:18;3321:32;3393:6;3386:5;3382:18;3375:5;3372:29;3362:2;;3420:6;3412;3405:22;3362:2;3448:5;-1:-1:-1;3505:2:1;3490:18;;3477:32;3518;3477;3518;:::i;:::-;3133:449;;;;-1:-1:-1;3133:449:1;;-1:-1:-1;;3133:449:1:o;3587:274::-;;3754:6;3748:13;3770:53;3816:6;3811:3;3804:4;3796:6;3792:17;3770:53;:::i;:::-;3839:16;;;;;3724:137;-1:-1:-1;;3724:137:1:o;3866:203::-;-1:-1:-1;;;;;4030:32:1;;;;4012:51;;4000:2;3985:18;;3967:102::o;4074:457::-;-1:-1:-1;;;;;4355:15:1;;;4337:34;;4407:15;;;;4402:2;4387:18;;4380:43;4466:14;4459:22;4454:2;4439:18;;4432:50;4513:2;4498:18;;4491:34;;;;4286:3;4271:19;;4253:278::o;4536:375::-;-1:-1:-1;;;;;4794:15:1;;;4776:34;;4846:15;;;;4841:2;4826:18;;4819:43;4893:2;4878:18;;4871:34;;;;4726:2;4711:18;;4693:218::o;4916:274::-;-1:-1:-1;;;;;5108:32:1;;;;5090:51;;5172:2;5157:18;;5150:34;5078:2;5063:18;;5045:145::o;5195:375::-;-1:-1:-1;;;;;5453:15:1;;;5435:34;;5500:2;5485:18;;5478:34;;;;5548:15;;;5543:2;5528:18;;5521:43;5385:2;5370:18;;5352:218::o;5575:425::-;-1:-1:-1;;;;;5832:32:1;;;;5814:51;;5896:2;5881:18;;5874:34;;;;5939:2;5924:18;;5917:34;5982:2;5967:18;;5960:34;5801:3;5786:19;;5768:232::o;6005:187::-;6170:14;;6163:22;6145:41;;6133:2;6118:18;;6100:92::o;6197:185::-;6351:25;;;6339:2;6324:18;;6306:76::o;6387:440::-;6638:25;;;6694:2;6679:18;;6672:34;;;;6754:6;6742:19;6737:2;6722:18;;6715:47;6805:14;6798:22;6793:2;6778:18;;6771:50;6625:3;6610:19;;6592:235::o;8038:383::-;;8187:2;8176:9;8169:21;8219:6;8213:13;8262:6;8257:2;8246:9;8242:18;8235:34;8278:66;8337:6;8332:2;8321:9;8317:18;8312:2;8304:6;8300:15;8278:66;:::i;:::-;8405:2;8384:15;-1:-1:-1;;8380:29:1;8365:45;;;;8412:2;8361:54;;8159:262;-1:-1:-1;;8159:262:1:o;8426:353::-;8628:2;8610:21;;;8667:2;8647:18;;;8640:30;8706:31;8701:2;8686:18;;8679:59;8770:2;8755:18;;8600:179::o;8784:347::-;8986:2;8968:21;;;9025:2;9005:18;;;8998:30;9064:25;9059:2;9044:18;;9037:53;9122:2;9107:18;;8958:173::o;9136:334::-;9338:2;9320:21;;;9377:2;9357:18;;;9350:30;-1:-1:-1;;;9411:2:1;9396:18;;9389:40;9461:2;9446:18;;9310:160::o;9475:402::-;9677:2;9659:21;;;9716:2;9696:18;;;9689:30;9755:34;9750:2;9735:18;;9728:62;-1:-1:-1;;;9821:2:1;9806:18;;9799:36;9867:3;9852:19;;9649:228::o;9882:352::-;10084:2;10066:21;;;10123:2;10103:18;;;10096:30;10162;10157:2;10142:18;;10135:58;10225:2;10210:18;;10056:178::o;10239:342::-;10441:2;10423:21;;;10480:2;10460:18;;;10453:30;-1:-1:-1;;;10514:2:1;10499:18;;10492:48;10572:2;10557:18;;10413:168::o;10586:349::-;10788:2;10770:21;;;10827:2;10807:18;;;10800:30;10866:27;10861:2;10846:18;;10839:55;10926:2;10911:18;;10760:175::o;10940:338::-;11142:2;11124:21;;;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11215:2:1;11200:18;;11193:44;11269:2;11254:18;;11114:164::o;11283:355::-;11485:2;11467:21;;;11524:2;11504:18;;;11497:30;11563:33;11558:2;11543:18;;11536:61;11629:2;11614:18;;11457:181::o;11643:353::-;11845:2;11827:21;;;11884:2;11864:18;;;11857:30;11923:31;11918:2;11903:18;;11896:59;11987:2;11972:18;;11817:179::o;12001:334::-;12203:2;12185:21;;;12242:2;12222:18;;;12215:30;-1:-1:-1;;;12276:2:1;12261:18;;12254:40;12326:2;12311:18;;12175:160::o;12340:332::-;12542:2;12524:21;;;12581:1;12561:18;;;12554:29;-1:-1:-1;;;12614:2:1;12599:18;;12592:39;12663:2;12648:18;;12514:158::o;12677:406::-;12879:2;12861:21;;;12918:2;12898:18;;;12891:30;12957:34;12952:2;12937:18;;12930:62;-1:-1:-1;;;13023:2:1;13008:18;;13001:40;13073:3;13058:19;;12851:232::o;13088:398::-;13290:2;13272:21;;;13329:2;13309:18;;;13302:30;13368:34;13363:2;13348:18;;13341:62;-1:-1:-1;;;13434:2:1;13419:18;;13412:32;13476:3;13461:19;;13262:224::o;13491:335::-;13693:2;13675:21;;;13732:2;13712:18;;;13705:30;-1:-1:-1;;;13766:2:1;13751:18;;13744:41;13817:2;13802:18;;13665:161::o;13831:338::-;14033:2;14015:21;;;14072:2;14052:18;;;14045:30;-1:-1:-1;;;14106:2:1;14091:18;;14084:44;14160:2;14145:18;;14005:164::o;15199:128::-;;15270:1;15266:6;15263:1;15260:13;15257:2;;;15276:18;;:::i;:::-;-1:-1:-1;15312:9:1;;15247:80::o;15332:217::-;;15398:1;15388:2;;-1:-1:-1;;;15423:31:1;;15477:4;15474:1;15467:15;15505:4;15430:1;15495:15;15388:2;-1:-1:-1;15534:9:1;;15378:171::o;15554:168::-;;15660:1;15656;15652:6;15648:14;15645:1;15642:21;15637:1;15630:9;15623:17;15619:45;15616:2;;;15667:18;;:::i;:::-;-1:-1:-1;15707:9:1;;15606:116::o;15727:125::-;;15795:1;15792;15789:8;15786:2;;;15800:18;;:::i;:::-;-1:-1:-1;15837:9:1;;15776:76::o;15857:258::-;15929:1;15939:113;15953:6;15950:1;15947:13;15939:113;;;16029:11;;;16023:18;16010:11;;;16003:39;15975:2;15968:10;15939:113;;;16070:6;16067:1;16064:13;16061:2;;;-1:-1:-1;;16105:1:1;16087:16;;16080:27;15910:205::o;16120:135::-;;-1:-1:-1;;16180:17:1;;16177:2;;;16200:18;;:::i;:::-;-1:-1:-1;16247:1:1;16236:13;;16167:88::o;16260:127::-;16321:10;16316:3;16312:20;16309:1;16302:31;16352:4;16349:1;16342:15;16376:4;16373:1;16366:15;16392:120;16480:5;16473:13;16466:21;16459:5;16456:32;16446:2;;16502:1;16499;16492:12
Swarm Source
ipfs://ca697cadc0b7783e7a8d6c1a71ff20320028e27a361c90b262260f294548fada
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.