Contract
0xd5f922e23693e552793fe0431f9a95ba67a60a23
1
Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
TimeTreasury
Compiler Version
v0.7.5+commit.eb77ed08
Contract Source Code (Solidity)
/** *Submitted for verification at snowtrace.io on 2021-11-25 */ // SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function add32(uint32 a, uint32 b) internal pure returns (uint32) { uint32 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function mul32(uint32 a, uint32 b) internal pure returns (uint32) { if (a == 0) { return 0; } uint32 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } library Address { function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IOwnable { function manager() external view returns (address); function renounceManagement() external; function pushManagement( address newOwner_ ) external; function pullManagement() external; } contract Ownable is IOwnable { address internal _owner; address internal _newOwner; event OwnershipPushed(address indexed previousOwner, address indexed newOwner); event OwnershipPulled(address indexed previousOwner, address indexed newOwner); constructor () { _owner = msg.sender; emit OwnershipPushed( address(0), _owner ); } function manager() public view override returns (address) { return _owner; } modifier onlyManager() { require( _owner == msg.sender, "Ownable: caller is not the owner" ); _; } function renounceManagement() public virtual override onlyManager() { emit OwnershipPushed( _owner, address(0) ); _owner = address(0); } function pushManagement( address newOwner_ ) public virtual override onlyManager() { require( newOwner_ != address(0), "Ownable: new owner is the zero address"); emit OwnershipPushed( _owner, newOwner_ ); _newOwner = newOwner_; } function pullManagement() public virtual override { require( msg.sender == _newOwner, "Ownable: must be new owner to pull"); emit OwnershipPulled( _owner, _newOwner ); _owner = _newOwner; } } interface IERC20 { function decimals() external view returns (uint8); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function approve(address spender, uint256 amount) external returns (bool); function totalSupply() external view returns (uint256); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeERC20 { using SafeMath for uint256; 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)); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } interface IERC20Mintable { function mint( uint256 amount_ ) external; function mint( address account_, uint256 ammount_ ) external; } interface IOHMERC20 { function burnFrom(address account_, uint256 amount_) external; } interface IBondCalculator { function valuation( address pair_, uint amount_ ) external view returns ( uint _value ); } contract TimeTreasury is Ownable { using SafeMath for uint; using SafeMath for uint32; using SafeERC20 for IERC20; event Deposit( address indexed token, uint amount, uint value ); event Withdrawal( address indexed token, uint amount, uint value ); event CreateDebt( address indexed debtor, address indexed token, uint amount, uint value ); event RepayDebt( address indexed debtor, address indexed token, uint amount, uint value ); event ReservesManaged( address indexed token, uint amount ); event ReservesUpdated( uint indexed totalReserves ); event ReservesAudited( uint indexed totalReserves ); event RewardsMinted( address indexed caller, address indexed recipient, uint amount ); event ChangeQueued( MANAGING indexed managing, address queued ); event ChangeActivated( MANAGING indexed managing, address activated, bool result ); enum MANAGING { RESERVEDEPOSITOR, RESERVESPENDER, RESERVETOKEN, RESERVEMANAGER, LIQUIDITYDEPOSITOR, LIQUIDITYTOKEN, LIQUIDITYMANAGER, DEBTOR, REWARDMANAGER, SOHM } address public immutable Time; uint32 public immutable secondsNeededForQueue; address[] public reserveTokens; // Push only, beware false-positives. mapping( address => bool ) public isReserveToken; mapping( address => uint32 ) public reserveTokenQueue; // Delays changes to mapping. address[] public reserveDepositors; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isReserveDepositor; mapping( address => uint32 ) public reserveDepositorQueue; // Delays changes to mapping. address[] public reserveSpenders; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isReserveSpender; mapping( address => uint32 ) public reserveSpenderQueue; // Delays changes to mapping. address[] public liquidityTokens; // Push only, beware false-positives. mapping( address => bool ) public isLiquidityToken; mapping( address => uint32 ) public LiquidityTokenQueue; // Delays changes to mapping. address[] public liquidityDepositors; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isLiquidityDepositor; mapping( address => uint32 ) public LiquidityDepositorQueue; // Delays changes to mapping. mapping( address => address ) public bondCalculator; // bond calculator for liquidity token address[] public reserveManagers; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isReserveManager; mapping( address => uint32 ) public ReserveManagerQueue; // Delays changes to mapping. address[] public liquidityManagers; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isLiquidityManager; mapping( address => uint32 ) public LiquidityManagerQueue; // Delays changes to mapping. address[] public debtors; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isDebtor; mapping( address => uint32 ) public debtorQueue; // Delays changes to mapping. mapping( address => uint ) public debtorBalance; address[] public rewardManagers; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isRewardManager; mapping( address => uint32 ) public rewardManagerQueue; // Delays changes to mapping. address public MEMOries; uint public sOHMQueue; // Delays change to sOHM address uint public totalReserves; // Risk-free value of all assets uint public totalDebt; constructor ( address _Time, address _MIM, uint32 _secondsNeededForQueue ) { require( _Time != address(0) ); Time = _Time; isReserveToken[ _MIM ] = true; reserveTokens.push( _MIM ); // isLiquidityToken[ _OHMDAI ] = true; // liquidityTokens.push( _OHMDAI ); secondsNeededForQueue = _secondsNeededForQueue; } /** @notice allow approved address to deposit an asset for OHM @param _amount uint @param _token address @param _profit uint @return send_ uint */ function deposit( uint _amount, address _token, uint _profit ) external returns ( uint send_ ) { require( isReserveToken[ _token ] || isLiquidityToken[ _token ], "Not accepted" ); IERC20( _token ).safeTransferFrom( msg.sender, address(this), _amount ); if ( isReserveToken[ _token ] ) { require( isReserveDepositor[ msg.sender ], "Not approved" ); } else { require( isLiquidityDepositor[ msg.sender ], "Not approved" ); } uint value = valueOf(_token, _amount); // mint OHM needed and store amount of rewards for distribution send_ = value.sub( _profit ); IERC20Mintable( Time ).mint( msg.sender, send_ ); totalReserves = totalReserves.add( value ); emit ReservesUpdated( totalReserves ); emit Deposit( _token, _amount, value ); } /** @notice allow approved address to burn OHM for reserves @param _amount uint @param _token address */ function withdraw( uint _amount, address _token ) external { require( isReserveToken[ _token ], "Not accepted" ); // Only reserves can be used for redemptions require( isReserveSpender[ msg.sender ] == true, "Not approved" ); uint value = valueOf( _token, _amount ); IOHMERC20( Time ).burnFrom( msg.sender, value ); totalReserves = totalReserves.sub( value ); emit ReservesUpdated( totalReserves ); IERC20( _token ).safeTransfer( msg.sender, _amount ); emit Withdrawal( _token, _amount, value ); } /** @notice allow approved address to borrow reserves @param _amount uint @param _token address */ function incurDebt( uint _amount, address _token ) external { require( isDebtor[ msg.sender ], "Not approved" ); require( isReserveToken[ _token ], "Not accepted" ); uint value = valueOf( _token, _amount ); uint maximumDebt = IERC20( MEMOries ).balanceOf( msg.sender ); // Can only borrow against sOHM held uint availableDebt = maximumDebt.sub( debtorBalance[ msg.sender ] ); require( value <= availableDebt, "Exceeds debt limit" ); debtorBalance[ msg.sender ] = debtorBalance[ msg.sender ].add( value ); totalDebt = totalDebt.add( value ); totalReserves = totalReserves.sub( value ); emit ReservesUpdated( totalReserves ); IERC20( _token ).transfer( msg.sender, _amount ); emit CreateDebt( msg.sender, _token, _amount, value ); } /** @notice allow approved address to repay borrowed reserves with reserves @param _amount uint @param _token address */ function repayDebtWithReserve( uint _amount, address _token ) external { require( isDebtor[ msg.sender ], "Not approved" ); require( isReserveToken[ _token ], "Not accepted" ); IERC20( _token ).safeTransferFrom( msg.sender, address(this), _amount ); uint value = valueOf( _token, _amount ); debtorBalance[ msg.sender ] = debtorBalance[ msg.sender ].sub( value ); totalDebt = totalDebt.sub( value ); totalReserves = totalReserves.add( value ); emit ReservesUpdated( totalReserves ); emit RepayDebt( msg.sender, _token, _amount, value ); } /** @notice allow approved address to repay borrowed reserves with OHM @param _amount uint */ function repayDebtWithOHM( uint _amount ) external { require( isDebtor[ msg.sender ], "Not approved" ); IOHMERC20( Time ).burnFrom( msg.sender, _amount ); debtorBalance[ msg.sender ] = debtorBalance[ msg.sender ].sub( _amount ); totalDebt = totalDebt.sub( _amount ); emit RepayDebt( msg.sender, Time, _amount, _amount ); } /** @notice allow approved address to withdraw assets @param _token address @param _amount uint */ function manage( address _token, uint _amount ) external { if( isLiquidityToken[ _token ] ) { require( isLiquidityManager[ msg.sender ], "Not approved" ); } else { require( isReserveManager[ msg.sender ], "Not approved" ); } uint value = valueOf(_token, _amount); require( value <= excessReserves(), "Insufficient reserves" ); totalReserves = totalReserves.sub( value ); emit ReservesUpdated( totalReserves ); IERC20( _token ).safeTransfer( msg.sender, _amount ); emit ReservesManaged( _token, _amount ); } /** @notice send epoch reward to staking contract */ function mintRewards( address _recipient, uint _amount ) external { require( isRewardManager[ msg.sender ], "Not approved" ); require( _amount <= excessReserves(), "Insufficient reserves" ); IERC20Mintable( Time ).mint( _recipient, _amount ); emit RewardsMinted( msg.sender, _recipient, _amount ); } /** @notice returns excess reserves not backing tokens @return uint */ function excessReserves() public view returns ( uint ) { return totalReserves.sub( IERC20( Time ).totalSupply().sub( totalDebt ) ); } /** @notice takes inventory of all tracked assets @notice always consolidate to recognized reserves before audit */ function auditReserves() external onlyManager() { uint reserves; for( uint i = 0; i < reserveTokens.length; i++ ) { reserves = reserves.add ( valueOf( reserveTokens[ i ], IERC20( reserveTokens[ i ] ).balanceOf( address(this) ) ) ); } for( uint i = 0; i < liquidityTokens.length; i++ ) { reserves = reserves.add ( valueOf( liquidityTokens[ i ], IERC20( liquidityTokens[ i ] ).balanceOf( address(this) ) ) ); } totalReserves = reserves; emit ReservesUpdated( reserves ); emit ReservesAudited( reserves ); } /** @notice returns OHM valuation of asset @param _token address @param _amount uint @return value_ uint */ function valueOf( address _token, uint _amount ) public view returns ( uint value_ ) { if ( isReserveToken[ _token ] ) { // convert amount to match OHM decimals value_ = _amount.mul( 10 ** IERC20( Time ).decimals() ).div( 10 ** IERC20( _token ).decimals() ); } else if ( isLiquidityToken[ _token ] ) { value_ = IBondCalculator( bondCalculator[ _token ] ).valuation( _token, _amount ); } } /** @notice queue address to change boolean in mapping @param _managing MANAGING @param _address address @return bool */ function queue( MANAGING _managing, address _address ) external onlyManager() returns ( bool ) { require( _address != address(0) ); if ( _managing == MANAGING.RESERVEDEPOSITOR ) { // 0 reserveDepositorQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue ); } else if ( _managing == MANAGING.RESERVESPENDER ) { // 1 reserveSpenderQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue ); } else if ( _managing == MANAGING.RESERVETOKEN ) { // 2 reserveTokenQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue ); } else if ( _managing == MANAGING.RESERVEMANAGER ) { // 3 ReserveManagerQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue.mul32( 2 ) ); } else if ( _managing == MANAGING.LIQUIDITYDEPOSITOR ) { // 4 LiquidityDepositorQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue ); } else if ( _managing == MANAGING.LIQUIDITYTOKEN ) { // 5 LiquidityTokenQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue ); } else if ( _managing == MANAGING.LIQUIDITYMANAGER ) { // 6 LiquidityManagerQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue.mul32( 2 ) ); } else if ( _managing == MANAGING.DEBTOR ) { // 7 debtorQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue ); } else if ( _managing == MANAGING.REWARDMANAGER ) { // 8 rewardManagerQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue ); } else if ( _managing == MANAGING.SOHM ) { // 9 sOHMQueue = uint32(block.timestamp).add32( secondsNeededForQueue ); } else return false; emit ChangeQueued( _managing, _address ); return true; } /** @notice verify queue then set boolean in mapping @param _managing MANAGING @param _address address @param _calculator address @return bool */ function toggle( MANAGING _managing, address _address, address _calculator ) external onlyManager() returns ( bool ) { require( _address != address(0) ); bool result; if ( _managing == MANAGING.RESERVEDEPOSITOR ) { // 0 if ( requirements( reserveDepositorQueue, isReserveDepositor, _address ) ) { reserveDepositorQueue[ _address ] = 0; if( !listContains( reserveDepositors, _address ) ) { reserveDepositors.push( _address ); } } result = !isReserveDepositor[ _address ]; isReserveDepositor[ _address ] = result; } else if ( _managing == MANAGING.RESERVESPENDER ) { // 1 if ( requirements( reserveSpenderQueue, isReserveSpender, _address ) ) { reserveSpenderQueue[ _address ] = 0; if( !listContains( reserveSpenders, _address ) ) { reserveSpenders.push( _address ); } } result = !isReserveSpender[ _address ]; isReserveSpender[ _address ] = result; } else if ( _managing == MANAGING.RESERVETOKEN ) { // 2 if ( requirements( reserveTokenQueue, isReserveToken, _address ) ) { reserveTokenQueue[ _address ] = 0; if( !listContains( reserveTokens, _address ) ) { reserveTokens.push( _address ); } } result = !isReserveToken[ _address ]; isReserveToken[ _address ] = result; } else if ( _managing == MANAGING.RESERVEMANAGER ) { // 3 if ( requirements( ReserveManagerQueue, isReserveManager, _address ) ) { reserveManagers.push( _address ); ReserveManagerQueue[ _address ] = 0; if( !listContains( reserveManagers, _address ) ) { reserveManagers.push( _address ); } } result = !isReserveManager[ _address ]; isReserveManager[ _address ] = result; } else if ( _managing == MANAGING.LIQUIDITYDEPOSITOR ) { // 4 if ( requirements( LiquidityDepositorQueue, isLiquidityDepositor, _address ) ) { liquidityDepositors.push( _address ); LiquidityDepositorQueue[ _address ] = 0; if( !listContains( liquidityDepositors, _address ) ) { liquidityDepositors.push( _address ); } } result = !isLiquidityDepositor[ _address ]; isLiquidityDepositor[ _address ] = result; } else if ( _managing == MANAGING.LIQUIDITYTOKEN ) { // 5 if ( requirements( LiquidityTokenQueue, isLiquidityToken, _address ) ) { LiquidityTokenQueue[ _address ] = 0; if( !listContains( liquidityTokens, _address ) ) { liquidityTokens.push( _address ); } } result = !isLiquidityToken[ _address ]; isLiquidityToken[ _address ] = result; bondCalculator[ _address ] = _calculator; } else if ( _managing == MANAGING.LIQUIDITYMANAGER ) { // 6 if ( requirements( LiquidityManagerQueue, isLiquidityManager, _address ) ) { LiquidityManagerQueue[ _address ] = 0; if( !listContains( liquidityManagers, _address ) ) { liquidityManagers.push( _address ); } } result = !isLiquidityManager[ _address ]; isLiquidityManager[ _address ] = result; } else if ( _managing == MANAGING.DEBTOR ) { // 7 if ( requirements( debtorQueue, isDebtor, _address ) ) { debtorQueue[ _address ] = 0; if( !listContains( debtors, _address ) ) { debtors.push( _address ); } } result = !isDebtor[ _address ]; isDebtor[ _address ] = result; } else if ( _managing == MANAGING.REWARDMANAGER ) { // 8 if ( requirements( rewardManagerQueue, isRewardManager, _address ) ) { rewardManagerQueue[ _address ] = 0; if( !listContains( rewardManagers, _address ) ) { rewardManagers.push( _address ); } } result = !isRewardManager[ _address ]; isRewardManager[ _address ] = result; } else if ( _managing == MANAGING.SOHM ) { // 9 sOHMQueue = 0; MEMOries = _address; result = true; } else return false; emit ChangeActivated( _managing, _address, result ); return true; } /** @notice checks requirements and returns altered structs @param queue_ mapping( address => uint ) @param status_ mapping( address => bool ) @param _address address @return bool */ function requirements( mapping( address => uint32 ) storage queue_, mapping( address => bool ) storage status_, address _address ) internal view returns ( bool ) { if ( !status_[ _address ] ) { require( queue_[ _address ] != 0, "Must queue" ); require( queue_[ _address ] <= uint32(block.timestamp), "Queue not expired" ); return true; } return false; } /** @notice checks array to ensure against duplicate @param _list address[] @param _token address @return bool */ function listContains( address[] storage _list, address _token ) internal view returns ( bool ) { for( uint i = 0; i < _list.length; i++ ) { if( _list[ i ] == _token ) { return true; } } return false; } }
[{"inputs":[{"internalType":"address","name":"_Time","type":"address"},{"internalType":"address","name":"_MIM","type":"address"},{"internalType":"uint32","name":"_secondsNeededForQueue","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"enum TimeTreasury.MANAGING","name":"managing","type":"uint8"},{"indexed":false,"internalType":"address","name":"activated","type":"address"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"ChangeActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"enum TimeTreasury.MANAGING","name":"managing","type":"uint8"},{"indexed":false,"internalType":"address","name":"queued","type":"address"}],"name":"ChangeQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"debtor","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"CreateDebt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPulled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPushed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"debtor","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RepayDebt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"totalReserves","type":"uint256"}],"name":"ReservesAudited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReservesManaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"totalReserves","type":"uint256"}],"name":"ReservesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"LiquidityDepositorQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"LiquidityManagerQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"LiquidityTokenQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MEMOries","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ReserveManagerQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Time","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auditReserves","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bondCalculator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"debtorBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"debtorQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"debtors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_profit","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"send_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"excessReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"incurDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDebtor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityDepositor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReserveDepositor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReserveManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReserveSpender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReserveToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isRewardManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"liquidityDepositors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"liquidityManagers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"liquidityTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"manage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pullManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"pushManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum TimeTreasury.MANAGING","name":"_managing","type":"uint8"},{"internalType":"address","name":"_address","type":"address"}],"name":"queue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"repayDebtWithOHM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"repayDebtWithReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reserveDepositorQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveDepositors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveManagers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reserveSpenderQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveSpenders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reserveTokenQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardManagerQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardManagers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sOHMQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"secondsNeededForQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum TimeTreasury.MANAGING","name":"_managing","type":"uint8"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"address","name":"_calculator","type":"address"}],"name":"toggle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"valueOf","outputs":[{"internalType":"uint256","name":"value_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c060405234801561001057600080fd5b5060405162003a7c38038062003a7c8339818101604052606081101561003557600080fd5b5080516020820151604092830151600080546001600160a01b031916331780825594519394929391926001600160a01b0316917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908290a36001600160a01b0383166100a057600080fd5b6001600160601b0319606084901b166080526001600160a01b039182166000818152600360205260408120805460ff1916600190811790915560028054918201815582527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319169092179091556001600160e01b031960e083901b1660a052919092169163ffffffff16906138d390620001a9903980611b9a52806121a0528061221d528061229a528061231652806123a8528061242552806124a1528061252352806125a0528061261d525080610a9e5280610e7e5280610fa8528061105c52806114935280611a8f5280611e0d52806126d652506138d36000f3fe608060405234801561001057600080fd5b50600436106103405760003560e01c8063869871bf116101bd578063cd85641a116100f9578063ee4e19a1116100a2578063fbfd393b1161007c578063fbfd393b14610958578063fc7b9c181461098f578063fd1ec01014610997578063fff9ee87146109b457610340565b8063ee4e19a114610904578063f8e157ea1461092a578063fb9395881461093257610340565b8063df89b344116100d3578063df89b34414610889578063e83afee3146108af578063ebd83cd8146108de57610340565b8063cd85641a1461081a578063d031370b14610840578063d796ffb81461085d57610340565b8063a1210a2d11610166578063b1bd38b011610140578063b1bd38b01461077f578063b5b1d560146107a5578063bc157ac1146107c2578063c24ad43e146107f457610340565b8063a1210a2d1461070d578063a569e57114610733578063ab319c9a1461075957610340565b80638f6a7b57116101975780638f6a7b57146106c25780638f840ddd146106df578063932cc8c3146106e757610340565b8063869871bf1461065957806387d67dff146106765780638f59c7271461069c57610340565b80632b7ce5001161028c5780635a96ac0a116102355780636b5e40a71161020f5780636b5e40a7146105d857806370a0502a146105f5578063788c6c01146106125780637a8960d81461065157610340565b80635a96ac0a1461057e57806368c31dd5146105865780636a20de92146105ac57610340565b8063481c6a7511610266578063481c6a751461054857806349880e52146105505780634e83423c1461055857610340565b80632b7ce500146104fd578063437f79121461050557806346f68ee91461052257610340565b80630f70431f116102ee5780631af4da70116102c85780631af4da70146104a35780631eec5a9a146104c95780632789de37146104f557610340565b80630f70431f14610420578063124154ca1461043d57806312422d231461047757610340565b8063094a86511161031f578063094a8651146103b45780630b0eee30146103ec5780630c3513a81461041857610340565b8062f714ce146103455780630619aff114610373578063089208d8146103ac575b600080fd5b6103716004803603604081101561035b57600080fd5b50803590602001356001600160a01b03166109da565b005b6103906004803603602081101561038957600080fd5b5035610bc3565b604080516001600160a01b039092168252519081900360200190f35b610371610bed565b6103da600480360360208110156103ca57600080fd5b50356001600160a01b0316610c96565b60408051918252519081900360200190f35b6103716004803603604081101561040257600080fd5b506001600160a01b038135169060200135610ca8565b6103da610e71565b6103716004803603602081101561043657600080fd5b5035610f15565b6104636004803603602081101561045357600080fd5b50356001600160a01b03166110ad565b604080519115158252519081900360200190f35b6103716004803603604081101561048d57600080fd5b50803590602001356001600160a01b03166110c2565b610390600480360360208110156104b957600080fd5b50356001600160a01b03166113af565b6103da600480360360408110156104df57600080fd5b506001600160a01b0381351690602001356113ca565b6103da6115f0565b6103716115f6565b6103906004803603602081101561051b57600080fd5b50356117dd565b6103716004803603602081101561053857600080fd5b50356001600160a01b03166117ed565b6103906118ec565b6103906118fb565b6104636004803603602081101561056e57600080fd5b50356001600160a01b031661190a565b61037161191f565b6104636004803603602081101561059c57600080fd5b50356001600160a01b03166119c9565b610371600480360360408110156105c257600080fd5b506001600160a01b0381351690602001356119de565b610390600480360360208110156105ee57600080fd5b5035611b60565b6103906004803603602081101561060b57600080fd5b5035611b70565b6106386004803603602081101561062857600080fd5b50356001600160a01b0316611b80565b6040805163ffffffff9092168252519081900360200190f35b610638611b98565b6103906004803603602081101561066f57600080fd5b5035611bbc565b6104636004803603602081101561068c57600080fd5b50356001600160a01b0316611bcc565b610638600480360360208110156106b257600080fd5b50356001600160a01b0316611be1565b610390600480360360208110156106d857600080fd5b5035611bf9565b6103da611c09565b610638600480360360208110156106fd57600080fd5b50356001600160a01b0316611c0f565b6104636004803603602081101561072357600080fd5b50356001600160a01b0316611c27565b6104636004803603602081101561074957600080fd5b50356001600160a01b0316611c3c565b6106386004803603602081101561076f57600080fd5b50356001600160a01b0316611c51565b6106386004803603602081101561079557600080fd5b50356001600160a01b0316611c69565b610390600480360360208110156107bb57600080fd5b5035611c81565b6103da600480360360608110156107d857600080fd5b508035906001600160a01b036020820135169060400135611c91565b6106386004803603602081101561080a57600080fd5b50356001600160a01b0316611f21565b6106386004803603602081101561083057600080fd5b50356001600160a01b0316611f39565b6103906004803603602081101561085657600080fd5b5035611f51565b6103716004803603604081101561087357600080fd5b50803590602001356001600160a01b0316611f61565b6104636004803603602081101561089f57600080fd5b50356001600160a01b03166120f6565b610463600480360360408110156108c557600080fd5b50803560ff1690602001356001600160a01b031661210b565b610463600480360360208110156108f457600080fd5b50356001600160a01b03166126aa565b6104636004803603602081101561091a57600080fd5b50356001600160a01b03166126bf565b6103906126d4565b6106386004803603602081101561094857600080fd5b50356001600160a01b03166126f8565b6104636004803603606081101561096e57600080fd5b5060ff813516906001600160a01b0360208201358116916040013516612710565b6103da613038565b610390600480360360208110156109ad57600080fd5b503561303e565b610638600480360360208110156109ca57600080fd5b50356001600160a01b031661304e565b6001600160a01b03811660009081526003602052604090205460ff16610a36576040805162461bcd60e51b815260206004820152600c60248201526b139bdd081858d8d95c1d195960a21b604482015290519081900360640190fd5b3360009081526009602052604090205460ff161515600114610a8e576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b6000610a9a82846113ca565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379cc679033836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610b1357600080fd5b505af1158015610b27573d6000803e3d6000fd5b5050602154610b399250905082613066565b60218190556040517f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6690600090a2610b7b6001600160a01b03831633856130a8565b604080518481526020810183905281516001600160a01b038516927fdf273cb619d95419a9cd0ec88123a0538c85064229baa6363788f743fff90deb928290030190a2505050565b60128181548110610bd357600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314610c4c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a3600080546001600160a01b0319169055565b601b6020526000908152604090205481565b6001600160a01b0382166000908152600c602052604090205460ff1615610d21573360009081526016602052604090205460ff16610d1c576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b610d74565b3360009081526013602052604090205460ff16610d74576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b6000610d8083836113ca565b9050610d8a610e71565b811115610dde576040805162461bcd60e51b815260206004820152601560248201527f496e73756666696369656e742072657365727665730000000000000000000000604482015290519081900360640190fd5b602154610deb9082613066565b60218190556040517f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6690600090a2610e2d6001600160a01b03841633846130a8565b6040805183815290516001600160a01b038516917f2bb2640731848fe9820ba48dbc978c1fc9bbd5f11b948bfab05b7dee3378fd80919081900360200190a2505050565b6000610f10610f076022547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed557600080fd5b505afa158015610ee9573d6000803e3d6000fd5b505050506040513d6020811015610eff57600080fd5b505190613066565b60215490613066565b905090565b3360009081526019602052604090205460ff16610f68576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b604080517f79cc67900000000000000000000000000000000000000000000000000000000081523360048201526024810183905290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916379cc679091604480830192600092919082900301818387803b158015610fef57600080fd5b505af1158015611003573d6000803e3d6000fd5b5050336000908152601b60205260409020546110229250905082613066565b336000908152601b602052604090205560225461103f9082613066565b602255604080518281526020810183905281516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169233927fc6d98eecfc9c78ab62c89a82950079b54874749f1f6f24090f7acc758bc2f309929081900390910190a350565b60066020526000908152604090205460ff1681565b3360009081526019602052604090205460ff16611115576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205460ff16611171576040805162461bcd60e51b815260206004820152600c60248201526b139bdd081858d8d95c1d195960a21b604482015290519081900360640190fd5b600061117d82846113ca565b601f54604080516370a0823160e01b815233600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156111ce57600080fd5b505afa1580156111e2573d6000803e3d6000fd5b505050506040513d60208110156111f857600080fd5b5051336000908152601b602052604081205491925090611219908390613066565b905080831115611270576040805162461bcd60e51b815260206004820152601260248201527f457863656564732064656274206c696d69740000000000000000000000000000604482015290519081900360640190fd5b336000908152601b602052604090205461128a9084613114565b336000908152601b60205260409020556022546112a79084613114565b6022556021546112b79084613066565b60218190556040517f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6690600090a26040805163a9059cbb60e01b81523360048201526024810187905290516001600160a01b0386169163a9059cbb9160448083019260209291908290030181600087803b15801561133457600080fd5b505af1158015611348573d6000803e3d6000fd5b505050506040513d602081101561135e57600080fd5b5050604080518681526020810185905281516001600160a01b0387169233927f7e1a939bed137a819b5d2979822c67f877689f7a863d5e4cb57cdca97b2977d6929081900390910190a35050505050565b6011602052600090815260409020546001600160a01b031681565b6001600160a01b03821660009081526003602052604081205460ff161561152057611519836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561142757600080fd5b505afa15801561143b573d6000803e3d6000fd5b505050506040513d602081101561145157600080fd5b5051604080517f313ce567000000000000000000000000000000000000000000000000000000008152905160ff909216600a0a91611513916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163313ce56791600480820192602092909190829003018186803b1580156114da57600080fd5b505afa1580156114ee573d6000803e3d6000fd5b505050506040513d602081101561150457600080fd5b5051859060ff16600a0a61316e565b906131c7565b90506115ea565b6001600160a01b0383166000908152600c602052604090205460ff16156115ea576001600160a01b038084166000818152601160209081526040918290205482517f4249719f00000000000000000000000000000000000000000000000000000000815260048101949094526024840187905291519190931692634249719f9260448082019391829003018186803b1580156115bb57600080fd5b505afa1580156115cf573d6000803e3d6000fd5b505050506040513d60208110156115e557600080fd5b505190505b92915050565b60205481565b6000546001600160a01b03163314611655576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805b60025481101561172d5761172361171c6002838154811061167657fe5b600091825260209091200154600280546001600160a01b03909216918590811061169c57fe5b60009182526020918290200154604080516370a0823160e01b815230600482015290516001600160a01b03909216926370a0823192602480840193829003018186803b1580156116eb57600080fd5b505afa1580156116ff573d6000803e3d6000fd5b505050506040513d602081101561171557600080fd5b50516113ca565b8390613114565b9150600101611659565b5060005b600b5481101561177e5761177461171c600b838154811061174e57fe5b600091825260209091200154600b80546001600160a01b03909216918590811061169c57fe5b9150600101611731565b50602181905560405181907f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6690600090a260405181907fec691f09f6924b27932253f85caf99bacc30360cc0e50a1cc4d2acc24601446690600090a250565b60088181548110610bd357600080fd5b6000546001600160a01b0316331461184c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166118915760405162461bcd60e51b815260040180806020018281038252602681526020018061380b6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b601f546001600160a01b031681565b601d6020526000908152604090205460ff1681565b6001546001600160a01b031633146119685760405162461bcd60e51b81526004018080602001828103825260228152602001806138316022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d91a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b60036020526000908152604090205460ff1681565b336000908152601d602052604090205460ff16611a31576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b611a39610e71565b811115611a8d576040805162461bcd60e51b815260206004820152601560248201527f496e73756666696369656e742072657365727665730000000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166340c10f1983836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611b0457600080fd5b505af1158015611b18573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693503392507ffa8ccab40e7da8146c2304cd0950334fd30a6ba093abe86261aa13911fed849c9181900360200190a35050565b60058181548110610bd357600080fd5b60158181548110610bd357600080fd5b60046020526000908152604090205463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60188181548110610bd357600080fd5b60096020526000908152604090205460ff1681565b600d6020526000908152604090205463ffffffff1681565b600e8181548110610bd357600080fd5b60215481565b60076020526000908152604090205463ffffffff1681565b600f6020526000908152604090205460ff1681565b600c6020526000908152604090205460ff1681565b60176020526000908152604090205463ffffffff1681565b60146020526000908152604090205463ffffffff1681565b601c8181548110610bd357600080fd5b6001600160a01b03821660009081526003602052604081205460ff1680611cd057506001600160a01b0383166000908152600c602052604090205460ff165b611d10576040805162461bcd60e51b815260206004820152600c60248201526b139bdd081858d8d95c1d195960a21b604482015290519081900360640190fd5b611d256001600160a01b038416333087613209565b6001600160a01b03831660009081526003602052604090205460ff1615611d9e573360009081526006602052604090205460ff16611d99576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b611df1565b336000908152600f602052604090205460ff16611df1576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b6000611dfd84866113ca565b9050611e098184613066565b91507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166340c10f1933846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611e8257600080fd5b505af1158015611e96573d6000803e3d6000fd5b5050602154611ea89250905082613114565b60218190556040517f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6690600090a2604080518681526020810183905281516001600160a01b038716927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15928290030190a2509392505050565b600a6020526000908152604090205463ffffffff1681565b601a6020526000908152604090205463ffffffff1681565b60028181548110610bd357600080fd5b3360009081526019602052604090205460ff16611fb4576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205460ff16612010576040805162461bcd60e51b815260206004820152600c60248201526b139bdd081858d8d95c1d195960a21b604482015290519081900360640190fd5b6120256001600160a01b038216333085613209565b600061203182846113ca565b336000908152601b602052604090205490915061204e9082613066565b336000908152601b602052604090205560225461206b9082613066565b60225560215461207b9082613114565b60218190556040517f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6690600090a2604080518481526020810183905281516001600160a01b0385169233927fc6d98eecfc9c78ab62c89a82950079b54874749f1f6f24090f7acc758bc2f309929081900390910190a3505050565b60166020526000908152604090205460ff1681565b600080546001600160a01b0316331461216b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03821661217e57600080fd5b600083600981111561218c57fe5b14156121fb576121c663ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152600760205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600183600981111561220957fe5b14156122785761224363ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152600a60205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600283600981111561228657fe5b14156122f5576122c063ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152600460205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600383600981111561230357fe5b14156123865761235161234163ffffffff7f00000000000000000000000000000000000000000000000000000000000000008116906002906132fa16565b63ffffffff428116919061329716565b6001600160a01b0383166000908152601460205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600483600981111561239457fe5b1415612403576123ce63ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152601060205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600583600981111561241157fe5b14156124805761244b63ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152600d60205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600683600981111561248e57fe5b1415612501576124cc61234163ffffffff7f00000000000000000000000000000000000000000000000000000000000000008116906002906132fa16565b6001600160a01b0383166000908152601760205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600783600981111561250f57fe5b141561257e5761254963ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152601a60205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600883600981111561258c57fe5b14156125fb576125c663ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152601e60205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600983600981111561260957fe5b14156126515761264363ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b63ffffffff16602055612659565b5060006115ea565b82600981111561266557fe5b604080516001600160a01b038516815290517f0e4f2c4b5bc209d509bc3d49348c787fefadc66a79351b470599ac0f5be52eaf9181900360200190a250600192915050565b60136020526000908152604090205460ff1681565b60196020526000908152604090205460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b601e6020526000908152604090205463ffffffff1681565b600080546001600160a01b03163314612770576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03831661278357600080fd5b60008085600981111561279257fe5b1415612858576127a5600760068661336b565b15612828576001600160a01b0384166000908152600760205260409020805463ffffffff191690556127d8600585613483565b61282857600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152600660205260409020805460ff81161560ff199091168117909155612fda565b600185600981111561286657fe5b141561292c57612879600a60098661336b565b156128fc576001600160a01b0384166000908152600a60205260409020805463ffffffff191690556128ac600885613483565b6128fc57600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152600960205260409020805460ff81161560ff199091168117909155612fda565b600285600981111561293a57fe5b1415612a005761294d600460038661336b565b156129d0576001600160a01b0384166000908152600460205260409020805463ffffffff19169055612980600285613483565b6129d057600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152600360205260409020805460ff81161560ff199091168117909155612fda565b6003856009811115612a0e57fe5b1415612b1157612a21601460138661336b565b15612ae157601280546001810182557fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b0319166001600160a01b0387169081179091556000908152601460205260409020805463ffffffff19169055612a919085613483565b612ae157601280546001810182556000919091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152601360205260409020805460ff81161560ff199091168117909155612fda565b6004856009811115612b1f57fe5b1415612c2257612b326010600f8661336b565b15612bf257600e80546001810182557fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b0387169081179091556000908152601060205260409020805463ffffffff19169055612ba29085613483565b612bf257600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152600f60205260409020805460ff81161560ff199091168117909155612fda565b6005856009811115612c3057fe5b1415612d1857612c43600d600c8661336b565b15612cc6576001600160a01b0384166000908152600d60205260409020805463ffffffff19169055612c76600b85613483565b612cc657600b80546001810182556000919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b038381166000908152600c60209081526040808320805460ff81161560ff199091168117909155601190925290912080546001600160a01b03191692851692909217909155612fda565b6006856009811115612d2657fe5b1415612dec57612d39601760168661336b565b15612dbc576001600160a01b0384166000908152601760205260409020805463ffffffff19169055612d6c601585613483565b612dbc57601580546001810182556000919091527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152601660205260409020805460ff81161560ff199091168117909155612fda565b6007856009811115612dfa57fe5b1415612ec057612e0d601a60198661336b565b15612e90576001600160a01b0384166000908152601a60205260409020805463ffffffff19169055612e40601885613483565b612e9057601880546001810182556000919091527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e0180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152601960205260409020805460ff81161560ff199091168117909155612fda565b6008856009811115612ece57fe5b1415612f9457612ee1601e601d8661336b565b15612f64576001600160a01b0384166000908152601e60205260409020805463ffffffff19169055612f14601c85613483565b612f6457601c80546001810182556000919091527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2110180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152601d60205260409020805460ff81161560ff199091168117909155612fda565b6009856009811115612fa257fe5b1415612fd057506000602055601f80546001600160a01b0319166001600160a01b0385161790556001612fda565b6000915050613031565b846009811115612fe657fe5b604080516001600160a01b0387168152831515602082015281517f0dcacb7e392f3d6a216ed2660e3dcfd40b7793d33591db2ba185a6b8e44fc477929181900390910190a260019150505b9392505050565b60225481565b600b8181548110610bd357600080fd5b60106020526000908152604090205463ffffffff1681565b600061303183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134d3565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261310f90849061356a565b505050565b600082820183811015613031576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008261317d575060006115ea565b8282028284828161318a57fe5b04146130315760405162461bcd60e51b81526004018080602001828103825260218152602001806138536021913960400191505060405180910390fd5b600061303183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061361b565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261329190859061356a565b50505050565b600082820163ffffffff8085169082161015613031576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600063ffffffff831661330f575060006115ea565b82820263ffffffff808416908086169083168161332857fe5b0463ffffffff16146130315760405162461bcd60e51b81526004018080602001828103825260218152602001806138536021913960400191505060405180910390fd5b6001600160a01b03811660009081526020839052604081205460ff16613479576001600160a01b03821660009081526020859052604090205463ffffffff166133fb576040805162461bcd60e51b815260206004820152600a60248201527f4d75737420717565756500000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526020859052604090205463ffffffff42811691161115613471576040805162461bcd60e51b815260206004820152601160248201527f5175657565206e6f742065787069726564000000000000000000000000000000604482015290519081900360640190fd5b506001613031565b5060009392505050565b6000805b835481101561347957826001600160a01b03168482815481106134a657fe5b6000918252602090912001546001600160a01b031614156134cb5760019150506115ea565b600101613487565b600081848411156135625760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561352757818101518382015260200161350f565b50505050905090810190601f1680156135545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60606135bf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136809092919063ffffffff16565b80519091501561310f578080602001905160208110156135de57600080fd5b505161310f5760405162461bcd60e51b815260040180806020018281038252602a815260200180613874602a913960400191505060405180910390fd5b6000818361366a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561352757818101518382015260200161350f565b50600083858161367657fe5b0495945050505050565b606061368f8484600085613697565b949350505050565b60606136a285613804565b6136f3576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106137325780518252601f199092019160209182019101613713565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613794576040519150601f19603f3d011682016040523d82523d6000602084013e613799565b606091505b509150915081156137ad57915061368f9050565b8051156137bd5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561352757818101518382015260200161350f565b3b15159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220431ee5775ec5a18026a34d8da41a2f0cb958b40da6dad92ff063830edb48358b64736f6c63430007050033000000000000000000000000f2f7ce610a091b94d41d69f4ff1129434a82e2f0000000000000000000000000130966628846bfd36ff31a822705796e8cb8c18d0000000000000000000000000000000000000000000000000000000000000001
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f2f7ce610a091b94d41d69f4ff1129434a82e2f0000000000000000000000000130966628846bfd36ff31a822705796e8cb8c18d0000000000000000000000000000000000000000000000000000000000000001
-----Decoded View---------------
Arg [0] : _Time (address): 0xf2f7ce610a091b94d41d69f4ff1129434a82e2f0
Arg [1] : _MIM (address): 0x130966628846bfd36ff31a822705796e8cb8c18d
Arg [2] : _secondsNeededForQueue (uint32): 1
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000f2f7ce610a091b94d41d69f4ff1129434a82e2f0
Arg [1] : 000000000000000000000000130966628846bfd36ff31a822705796e8cb8c18d
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Deployed ByteCode Sourcemap
7313:19566:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12752:582;;;;;;;;;;;;;;;;-1:-1:-1;12752:582:0;;;;;;-1:-1:-1;;;;;12752:582:0;;:::i;:::-;;9895:32;;;;;;;;;;;;;;;;-1:-1:-1;9895:32:0;;:::i;:::-;;;;-1:-1:-1;;;;;9895:32:0;;;;;;;;;;;;;;4704:159;;;:::i;10613:47::-;;;;;;;;;;;;;;;;-1:-1:-1;10613:47:0;-1:-1:-1;;;;;10613:47:0;;:::i;:::-;;;;;;;;;;;;;;;;15794:626;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15794:626:0;;;;;;;;:::i;16954:147::-;;;:::i;15271:378::-;;;;;;;;;;;;;;;;-1:-1:-1;15271:378:0;;:::i;8909:52::-;;;;;;;;;;;;;;;;-1:-1:-1;8909:52:0;-1:-1:-1;;;;;8909:52:0;;:::i;:::-;;;;;;;;;;;;;;;;;;13479:863;;;;;;;;;;;;;;;;-1:-1:-1;13479:863:0;;;;;;-1:-1:-1;;;;;13479:863:0;;:::i;9796:51::-;;;;;;;;;;;;;;;;-1:-1:-1;9796:51:0;-1:-1:-1;;;;;9796:51:0;;:::i;18085:459::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18085:459:0;;;;;;;;:::i;10942:21::-;;;:::i;17254:668::-;;;:::i;9064:32::-;;;;;;;;;;;;;;;;-1:-1:-1;9064:32:0;;:::i;4871:261::-;;;;;;;;;;;;;;;;-1:-1:-1;4871:261:0;-1:-1:-1;;;;;4871:261:0;;:::i;4477:90::-;;;:::i;10912:23::-;;;:::i;10763:49::-;;;;;;;;;;;;;;;;-1:-1:-1;10763:49:0;-1:-1:-1;;;;;10763:49:0;;:::i;5144:221::-;;;:::i;8665:48::-;;;;;;;;;;;;;;;;-1:-1:-1;8665:48:0;-1:-1:-1;;;;;8665:48:0;;:::i;16501:344::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16501:344:0;;;;;;;;:::i;8812:34::-;;;;;;;;;;;;;;;;-1:-1:-1;8812:34:0;;:::i;10141:::-;;;;;;;;;;;;;;;;-1:-1:-1;10141:34:0;;:::i;8720:53::-;;;;;;;;;;;;;;;;-1:-1:-1;8720:53:0;-1:-1:-1;;;;;8720:53:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;8536:45;;;:::i;10393:24::-;;;;;;;;;;;;;;;;-1:-1:-1;10393:24:0;;:::i;9159:50::-;;;;;;;;;;;;;;;;-1:-1:-1;9159:50:0;-1:-1:-1;;;;;9159:50:0;;:::i;9444:55::-;;;;;;;;;;;;;;;;-1:-1:-1;9444:55:0;-1:-1:-1;;;;;9444:55:0;;:::i;9538:36::-;;;;;;;;;;;;;;;;-1:-1:-1;9538:36:0;;:::i;11009:25::-;;;:::i;8968:57::-;;;;;;;;;;;;;;;;-1:-1:-1;8968:57:0;-1:-1:-1;;;;;8968:57:0;;:::i;9637:54::-;;;;;;;;;;;;;;;;-1:-1:-1;9637:54:0;-1:-1:-1;;;;;9637:54:0;;:::i;9387:50::-;;;;;;;;;;;;;;;;-1:-1:-1;9387:50:0;-1:-1:-1;;;;;9387:50:0;;:::i;10297:57::-;;;;;;;;;;;;;;;;-1:-1:-1;10297:57:0;-1:-1:-1;;;;;10297:57:0;;:::i;10047:55::-;;;;;;;;;;;;;;;;-1:-1:-1;10047:55:0;-1:-1:-1;;;;;10047:55:0;;:::i;10669:31::-;;;;;;;;;;;;;;;;-1:-1:-1;10669:31:0;;:::i;11725:876::-;;;;;;;;;;;;;;;;-1:-1:-1;11725:876:0;;;-1:-1:-1;;;;;11725:876:0;;;;;;;;;;:::i;9216:55::-;;;;;;;;;;;;;;;;-1:-1:-1;9216:55:0;-1:-1:-1;;;;;9216:55:0;;:::i;10529:47::-;;;;;;;;;;;;;;;;-1:-1:-1;10529:47:0;-1:-1:-1;;;;;10529:47:0;;:::i;8590:30::-;;;;;;;;;;;;;;;;-1:-1:-1;8590:30:0;;:::i;14509:631::-;;;;;;;;;;;;;;;;-1:-1:-1;14509:631:0;;;;;;-1:-1:-1;;;;;14509:631:0;;:::i;10238:52::-;;;;;;;;;;;;;;;;-1:-1:-1;10238:52:0;-1:-1:-1;;;;;10238:52:0;;:::i;18720:1929::-;;;;;;;;;;;;;;;;-1:-1:-1;18720:1929:0;;;;;;;;-1:-1:-1;;;;;18720:1929:0;;:::i;9990:50::-;;;;;;;;;;;;;;;;-1:-1:-1;9990:50:0;-1:-1:-1;;;;;9990:50:0;;:::i;10480:42::-;;;;;;;;;;;;;;;;-1:-1:-1;10480:42:0;-1:-1:-1;;;;;10480:42:0;;:::i;8500:29::-;;;:::i;10819:54::-;;;;;;;;;;;;;;;;-1:-1:-1;10819:54:0;-1:-1:-1;;;;;10819:54:0;;:::i;20859:4872::-;;;;;;;;;;;;;;;;-1:-1:-1;20859:4872:0;;;;;-1:-1:-1;;;;;20859:4872:0;;;;;;;;;;;;:::i;11074:21::-;;;:::i;9310:32::-;;;;;;;;;;;;;;;;-1:-1:-1;9310:32:0;;:::i;9698:59::-;;;;;;;;;;;;;;;;-1:-1:-1;9698:59:0;-1:-1:-1;;;;;9698:59:0;;:::i;12752:582::-;-1:-1:-1;;;;;12831:24:0;;;;;;:14;:24;;;;;;;;12822:51;;;;;-1:-1:-1;;;12822:51:0;;;;;;;;;;;;-1:-1:-1;;;12822:51:0;;;;;;;;;;;;;;;12956:10;12938:30;;;;:16;:30;;;;;;;;:38;;:30;:38;12929:65;;;;;-1:-1:-1;;;12929:65:0;;;;;;;;;;;;-1:-1:-1;;;12929:65:0;;;;;;;;;;;;;;;13007:10;13020:26;13029:6;13037:7;13020;:26::i;:::-;13007:39;;13068:4;-1:-1:-1;;;;;13057:26:0;;13085:10;13097:5;13057:47;;;;;;;;;;;;;-1:-1:-1;;;;;13057:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13133:13:0;;:26;;-1:-1:-1;13133:13:0;-1:-1:-1;13152:5:0;13133:17;:26::i;:::-;13117:13;:42;;;13175:32;;;;;;;13220:52;-1:-1:-1;;;;;13220:29:0;;13251:10;13263:7;13220:29;:52::i;:::-;13290:36;;;;;;;;;;;;;;-1:-1:-1;;;;;13290:36:0;;;;;;;;;;;12752:582;;;:::o;9895:32::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9895:32:0;;-1:-1:-1;9895:32:0;:::o;4704:159::-;4618:6;;-1:-1:-1;;;;;4618:6:0;4628:10;4618:20;4609:67;;;;;-1:-1:-1;;;4609:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4821:1:::1;4805:6:::0;;4788:37:::1;::::0;-1:-1:-1;;;;;4805:6:0;;::::1;::::0;4788:37:::1;::::0;4821:1;;4788:37:::1;4853:1;4836:19:::0;;-1:-1:-1;;;;;;4836:19:0::1;::::0;;4704:159::o;10613:47::-;;;;;;;;;;;;;:::o;15794:626::-;-1:-1:-1;;;;;15866:26:0;;;;;;:16;:26;;;;;;;;15862:209;;;15939:10;15919:32;;;;:18;:32;;;;;;;;15910:59;;;;;-1:-1:-1;;;15910:59:0;;;;;;;;;;;;-1:-1:-1;;;15910:59:0;;;;;;;;;;;;;;;15862:209;;;16029:10;16011:30;;;;:16;:30;;;;;;;;16002:57;;;;;-1:-1:-1;;;16002:57:0;;;;;;;;;;;;-1:-1:-1;;;16002:57:0;;;;;;;;;;;;;;;16083:10;16096:24;16104:6;16112:7;16096;:24::i;:::-;16083:37;;16149:16;:14;:16::i;:::-;16140:5;:25;;16131:61;;;;;-1:-1:-1;;;16131:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16221:13;;:26;;16240:5;16221:17;:26::i;:::-;16205:13;:42;;;16263:32;;;;;;;16308:52;-1:-1:-1;;;;;16308:29:0;;16339:10;16351:7;16308:29;:52::i;:::-;16378:34;;;;;;;;-1:-1:-1;;;;;16378:34:0;;;;;;;;;;;;;15794:626;;;:::o;16954:147::-;17002:4;17027:66;17046:45;17080:9;;17054:4;-1:-1:-1;;;;;17046:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17046:28:0;;:32;:45::i;:::-;17027:13;;;:17;:66::i;:::-;17020:73;;16954:147;:::o;15271:378::-;15352:10;15342:22;;;;:8;:22;;;;;;;;15333:49;;;;;-1:-1:-1;;;15333:49:0;;;;;;;;;;;;-1:-1:-1;;;15333:49:0;;;;;;;;;;;;;;;15395;;;;;;15423:10;15395:49;;;;;;;;;;;;-1:-1:-1;;;;;15406:4:0;15395:26;;;;:49;;;;;-1:-1:-1;;15395:49:0;;;;;;;-1:-1:-1;15395:26:0;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15502:10:0;15487:27;;;;:13;:27;;;;;;:42;;-1:-1:-1;15487:27:0;-1:-1:-1;15520:7:0;15487:31;:42::i;:::-;15472:10;15457:27;;;;:13;:27;;;;;:72;15552:9;;:24;;15567:7;15552:13;:24::i;:::-;15540:9;:36;15594:47;;;;;;;;;;;;;;-1:-1:-1;;;;;15617:4:0;15594:47;;15605:10;;15594:47;;;;;;;;;;;15271:378;:::o;8909:52::-;;;;;;;;;;;;;;;:::o;13479:863::-;13569:10;13559:22;;;;:8;:22;;;;;;;;13550:49;;;;;-1:-1:-1;;;13550:49:0;;;;;;;;;;;;-1:-1:-1;;;13550:49:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13619:24:0;;;;;;:14;:24;;;;;;;;13610:51;;;;;-1:-1:-1;;;13610:51:0;;;;;;;;;;;;-1:-1:-1;;;13610:51:0;;;;;;;;;;;;;;;13674:10;13687:26;13696:6;13704:7;13687;:26::i;:::-;13753:8;;13745:42;;;-1:-1:-1;;;13745:42:0;;13775:10;13745:42;;;;;;13674:39;;-1:-1:-1;13726:16:0;;-1:-1:-1;;;;;13753:8:0;;;;13745:28;;:42;;;;;;;;;;;;;;;13753:8;13745:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13745:42:0;13888:10;13835:18;13873:27;;;:13;13745:42;13873:27;;;;;13745:42;;-1:-1:-1;13835:18:0;13856:46;;13745:42;;13856:15;:46::i;:::-;13835:67;;13931:13;13922:5;:22;;13913:55;;;;;-1:-1:-1;;;13913:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14026:10;14011:27;;;;:13;:27;;;;;;:40;;14044:5;14011:31;:40::i;:::-;13996:10;13981:27;;;;:13;:27;;;;;:70;14074:9;;:22;;14089:5;14074:13;:22::i;:::-;14062:9;:34;14125:13;;:26;;14144:5;14125:17;:26::i;:::-;14109:13;:42;;;14167:32;;;;;;;14212:48;;;-1:-1:-1;;;14212:48:0;;14239:10;14212:48;;;;;;;;;;;;-1:-1:-1;;;;;14212:25:0;;;;;:48;;;;;;;;;;;;;;-1:-1:-1;14212:25:0;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14286:48:0;;;;;;14212;14286;;;;;;;-1:-1:-1;;;;;14286:48:0;;;14298:10;;14286:48;;;;;;;;;;;13479:863;;;;;:::o;9796:51::-;;;;;;;;;;;;-1:-1:-1;;;;;9796:51:0;;:::o;18085:459::-;-1:-1:-1;;;;;18186:24:0;;18156:11;18186:24;;;:14;:24;;;;;;;;18181:356;;;18290:87;18356:6;-1:-1:-1;;;;;18348:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18348:27:0;18309:25;;;;;;;;18342:33;;;;:2;:33;;18290:46;;-1:-1:-1;;;;;18317:4:0;18309:23;;;;:25;;;;;18348:27;;18309:25;;;;;;;;:23;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18309:25:0;18290:7;;18303:31;;:2;:31;18290:11;:46::i;:::-;:50;;:87::i;:::-;18281:96;;18181:356;;;-1:-1:-1;;;;;18400:26:0;;;;;;:16;:26;;;;;;;;18395:142;;;-1:-1:-1;;;;;18470:24:0;;;;;;;:14;:24;;;;;;;;;;18453:72;;;;;;;;;;;;;;;;;;;;18470:24;;;;;18453:53;;:72;;;;;;;;;;;18470:24;18453:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18453:72:0;;-1:-1:-1;18395:142:0;18085:459;;;;:::o;10942:21::-;;;;:::o;17254:668::-;4618:6;;-1:-1:-1;;;;;4618:6:0;4628:10;4618:20;4609:67;;;;;-1:-1:-1;;;4609:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17313:13:::1;::::0;17337:221:::1;17358:13;:20:::0;17354:24;::::1;17337:221;;;17412:134;17445:86;17454:13;17469:1;17454:18;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;17482:13:::1;:18:::0;;-1:-1:-1;;;;;17454:18:0;;::::1;::::0;17497:1;;17482:18;::::1;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;17474:55:::1;::::0;;-1:-1:-1;;;17474:55:0;;17522:4:::1;17474:55;::::0;::::1;::::0;;;-1:-1:-1;;;;;17482:18:0;;::::1;::::0;17474:38:::1;::::0;:55;;;;;;;;;;17482:18;17474:55;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17474:55:0;17445:7:::1;:86::i;:::-;17412:8:::0;;:12:::1;:134::i;:::-;17401:145:::0;-1:-1:-1;17380:3:0::1;;17337:221;;;;17573:6;17568:226;17589:15;:22:::0;17585:26;::::1;17568:226;;;17645:137;17677:90;17686:15;17703:1;17686:20;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;17716:15:::1;:20:::0;;-1:-1:-1;;;;;17686:20:0;;::::1;::::0;17733:1;;17716:20;::::1;;;;17645:137;17634:148:::0;-1:-1:-1;17613:3:0::1;;17568:226;;;-1:-1:-1::0;17804:13:0::1;:24:::0;;;17844:27:::1;::::0;17820:8;;17844:27:::1;::::0;;;::::1;17887;::::0;17904:8;;17887:27:::1;::::0;;;::::1;4687:1;17254:668::o:0;9064:32::-;;;;;;;;;;;;4871:261;4618:6;;-1:-1:-1;;;;;4618:6:0;4628:10;4618:20;4609:67;;;;;-1:-1:-1;;;4609:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4974:23:0;::::1;4965:75;;;;-1:-1:-1::0;;;4965:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5073:6;::::0;;5056:36:::1;::::0;-1:-1:-1;;;;;5056:36:0;;::::1;::::0;5073:6;::::1;::::0;5056:36:::1;::::0;::::1;5103:9;:21:::0;;-1:-1:-1;;;;;;5103:21:0::1;-1:-1:-1::0;;;;;5103:21:0;;;::::1;::::0;;;::::1;::::0;;4871:261::o;4477:90::-;4526:7;4553:6;-1:-1:-1;;;;;4553:6:0;4477:90;:::o;10912:23::-;;;-1:-1:-1;;;;;10912:23:0;;:::o;10763:49::-;;;;;;;;;;;;;;;:::o;5144:221::-;5228:9;;-1:-1:-1;;;;;5228:9:0;5214:10;:23;5205:71;;;;-1:-1:-1;;;5205:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:9;;;5309:6;;5292:36;;-1:-1:-1;;;;;5317:9:0;;;;5309:6;;;;5292:36;;;5348:9;;;5339:18;;-1:-1:-1;;;;;;5339:18:0;-1:-1:-1;;;;;5348:9:0;;;5339:18;;;;;;5144:221::o;8665:48::-;;;;;;;;;;;;;;;:::o;16501:344::-;16604:10;16587:29;;;;:15;:29;;;;;;;;16578:56;;;;;-1:-1:-1;;;16578:56:0;;;;;;;;;;;;-1:-1:-1;;;16578:56:0;;;;;;;;;;;;;;;16665:16;:14;:16::i;:::-;16654:7;:27;;16645:63;;;;;-1:-1:-1;;;16645:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16737:4;-1:-1:-1;;;;;16721:27:0;;16750:10;16762:7;16721:50;;;;;;;;;;;;;-1:-1:-1;;;;;16721:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16789:48:0;;;;;;;;-1:-1:-1;;;;;16789:48:0;;;-1:-1:-1;16804:10:0;;-1:-1:-1;16789:48:0;;;;;;;;;16501:344;;:::o;8812:34::-;;;;;;;;;;;;10141;;;;;;;;;;;;8720:53;;;;;;;;;;;;;;;:::o;8536:45::-;;;:::o;10393:24::-;;;;;;;;;;;;9159:50;;;;;;;;;;;;;;;:::o;9444:55::-;;;;;;;;;;;;;;;:::o;9538:36::-;;;;;;;;;;;;11009:25;;;;:::o;8968:57::-;;;;;;;;;;;;;;;:::o;9637:54::-;;;;;;;;;;;;;;;:::o;9387:50::-;;;;;;;;;;;;;;;:::o;10297:57::-;;;;;;;;;;;;;;;:::o;10047:55::-;;;;;;;;;;;;;;;:::o;10669:31::-;;;;;;;;;;;;11725:876;-1:-1:-1;;;;;11840:24:0;;11807:10;11840:24;;;:14;:24;;;;;;;;;:54;;-1:-1:-1;;;;;;11868:26:0;;;;;;:16;:26;;;;;;;;11840:54;11831:81;;;;;-1:-1:-1;;;11831:81:0;;;;;;;;;;;;-1:-1:-1;;;11831:81:0;;;;;;;;;;;;;;;11923:71;-1:-1:-1;;;;;11923:33:0;;11958:10;11978:4;11985:7;11923:33;:71::i;:::-;-1:-1:-1;;;;;12012:24:0;;;;;;:14;:24;;;;;;;;12007:212;;;12083:10;12063:32;;;;:18;:32;;;;;;;;12054:59;;;;;-1:-1:-1;;;12054:59:0;;;;;;;;;;;;-1:-1:-1;;;12054:59:0;;;;;;;;;;;;;;;12007:212;;;12177:10;12155:34;;;;:20;:34;;;;;;;;12146:61;;;;;-1:-1:-1;;;12146:61:0;;;;;;;;;;;;-1:-1:-1;;;12146:61:0;;;;;;;;;;;;;;;12231:10;12244:24;12252:6;12260:7;12244;:24::i;:::-;12231:37;-1:-1:-1;12360:20:0;12231:37;12371:7;12360:9;:20::i;:::-;12352:28;;12407:4;-1:-1:-1;;;;;12391:27:0;;12420:10;12432:5;12391:48;;;;;;;;;;;;;-1:-1:-1;;;;;12391:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12468:13:0;;:26;;-1:-1:-1;12468:13:0;-1:-1:-1;12487:5:0;12468:17;:26::i;:::-;12452:13;:42;;;12510:32;;;;;;;12560:33;;;;;;;;;;;;;;-1:-1:-1;;;;;12560:33:0;;;;;;;;;;;11725:876;;;;;;:::o;9216:55::-;;;;;;;;;;;;;;;:::o;10529:47::-;;;;;;;;;;;;;;;:::o;8590:30::-;;;;;;;;;;;;14509:631;14610:10;14600:22;;;;:8;:22;;;;;;;;14591:49;;;;;-1:-1:-1;;;14591:49:0;;;;;;;;;;;;-1:-1:-1;;;14591:49:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14660:24:0;;;;;;:14;:24;;;;;;;;14651:51;;;;;-1:-1:-1;;;14651:51:0;;;;;;;;;;;;-1:-1:-1;;;14651:51:0;;;;;;;;;;;;;;;14715:71;-1:-1:-1;;;;;14715:33:0;;14750:10;14770:4;14777:7;14715:33;:71::i;:::-;14799:10;14812:26;14821:6;14829:7;14812;:26::i;:::-;14894:10;14879:27;;;;:13;:27;;;;;;14799:39;;-1:-1:-1;14879:40:0;;14799:39;14879:31;:40::i;:::-;14864:10;14849:27;;;;:13;:27;;;;;:70;14942:9;;:22;;14957:5;14942:13;:22::i;:::-;14930:9;:34;14993:13;;:26;;15012:5;14993:17;:26::i;:::-;14977:13;:42;;;15035:32;;;;;;;15085:47;;;;;;;;;;;;;;-1:-1:-1;;;;;15085:47:0;;;15096:10;;15085:47;;;;;;;;;;;14509:631;;;:::o;10238:52::-;;;;;;;;;;;;;;;:::o;18720:1929::-;18808:4;4618:6;;-1:-1:-1;;;;;4618:6:0;4628:10;4618:20;4609:67;;;;;-1:-1:-1;;;4609:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18835:22:0;::::1;18826:33;;;::::0;::::1;;18888:25;18875:9;:38;;;;;;;;;18870:1696;;;18972:54;:29;18979:15;18972:29:::0;::::1;::::0;19003:21:::1;::::0;18972:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;18936:33:0;::::1;;::::0;;;:21:::1;:33;::::0;;;;:90;;-1:-1:-1;;18936:90:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18870:1696:::1;;;19062:23;19049:9;:36;;;;;;;;;19044:1522;;;19142:54;:29;19149:15;19142:29:::0;::::1;::::0;19173:21:::1;::::0;19142:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;19108:31:0;::::1;;::::0;;;:19:::1;:31;::::0;;;;:88;;-1:-1:-1;;19108:88:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19044:1522:::1;;;19232:21;19219:9;:34;;;;;;;;;19214:1352;;;19308:54;:29;19315:15;19308:29:::0;::::1;::::0;19339:21:::1;::::0;19308:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;19276:29:0;::::1;;::::0;;;:17:::1;:29;::::0;;;;:86;;-1:-1:-1;;19276:86:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19214:1352:::1;;;19398:23;19385:9;:36;;;;;;;;;19380:1186;;;19478:65;19509:32;:27;:21;:27:::0;::::1;::::0;19538:1:::1;::::0;19509:27:::1;:32;:::i;:::-;19478:29;19485:15;19478:29:::0;::::1;::::0;:65;:29:::1;:65;:::i;:::-;-1:-1:-1::0;;;;;19444:31:0;::::1;;::::0;;;:19:::1;:31;::::0;;;;:99;;-1:-1:-1;;19444:99:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19380:1186:::1;;;19579:27;19566:9;:40;;;;;;;;;19561:1005;;;19667:54;:29;19674:15;19667:29:::0;::::1;::::0;19698:21:::1;::::0;19667:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;19629:35:0;::::1;;::::0;;;:23:::1;:35;::::0;;;;:92;;-1:-1:-1;;19629:92:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19561:1005:::1;;;19757:23;19744:9;:36;;;;;;;;;19739:827;;;19837:54;:29;19844:15;19837:29:::0;::::1;::::0;19868:21:::1;::::0;19837:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;19803:31:0;::::1;;::::0;;;:19:::1;:31;::::0;;;;:88;;-1:-1:-1;;19803:88:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19739:827:::1;;;19927:25;19914:9;:38;;;;;;;;;19909:657;;;20011:65;20042:32;:27;:21;:27:::0;::::1;::::0;20071:1:::1;::::0;20042:27:::1;:32;:::i;20011:65::-;-1:-1:-1::0;;;;;19975:33:0;::::1;;::::0;;;:21:::1;:33;::::0;;;;:101;;-1:-1:-1;;19975:101:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19909:657:::1;;;20112:15;20099:9;:28;;;;;;;;;20094:472;;;20176:54;:29;20183:15;20176:29:::0;::::1;::::0;20207:21:::1;::::0;20176:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;20150:23:0;::::1;;::::0;;;:11:::1;:23;::::0;;;;:80;;-1:-1:-1;;20150:80:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;20094:472:::1;;;20266:22;20253:9;:35;;;;;;;;;20248:318;;;20344:54;:29;20351:15;20344:29:::0;::::1;::::0;20375:21:::1;::::0;20344:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;20311:30:0;::::1;;::::0;;;:18:::1;:30;::::0;;;;:87;;-1:-1:-1;;20311:87:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;20248:318:::1;;;20434:13;20421:9;:26;;;;;;;;;20416:150;;;20482:54;:29;20489:15;20482:29:::0;::::1;::::0;20513:21:::1;::::0;20482:29:::1;:54;:::i;:::-;20470:66;;:9;:66:::0;20416:150:::1;;;-1:-1:-1::0;20561:5:0::1;20554:12;;20416:150;20598:9;20584:35;;;;;;;;;::::0;;-1:-1:-1;;;;;20584:35:0;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;-1:-1:-1::0;20637:4:0::1;18720:1929:::0;;;;:::o;9990:50::-;;;;;;;;;;;;;;;:::o;10480:42::-;;;;;;;;;;;;;;;:::o;8500:29::-;;;:::o;10819:54::-;;;;;;;;;;;;;;;:::o;20859:4872::-;21004:4;4618:6;;-1:-1:-1;;;;;4618:6:0;4628:10;4618:20;4609:67;;;;;-1:-1:-1;;;4609:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21031:22:0;::::1;21022:33;;;::::0;::::1;;21066:11;::::0;21093:9:::1;:38;;;;;;;;;21088:4549;;;21159:67;21173:21;21196:18;21216:8;21159:12;:67::i;:::-;21154:293;;;-1:-1:-1::0;;;;;21248:33:0;::::1;21284:1;21248:33:::0;;;:21:::1;:33;::::0;;;;:37;;-1:-1:-1;;21248:37:0::1;::::0;;21309:43:::1;21323:17;21271:8:::0;21309:12:::1;:43::i;:::-;21304:128;;21378:17;:34:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;21378:34:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;21378:34:0::1;-1:-1:-1::0;;;;;21378:34:0;::::1;;::::0;;21304:128:::1;-1:-1:-1::0;;;;;;21471:30:0;::::1;;::::0;;;:18:::1;:30;::::0;;;;;;::::1;::::0;::::1;21470:31;-1:-1:-1::0;;21516:39:0;;::::1;::::0;::::1;::::0;;;21088:4549:::1;;;21605:23;21592:9;:36;;;;;;;;;21587:4050;;;21656:63;21670:19;21691:16;21709:8;21656:12;:63::i;:::-;21651:283;;;-1:-1:-1::0;;;;;21741:31:0;::::1;21775:1;21741:31:::0;;;:19:::1;:31;::::0;;;;:35;;-1:-1:-1;;21741:35:0::1;::::0;;21800:41:::1;21814:15;21762:8:::0;21800:12:::1;:41::i;:::-;21795:124;;21867:15;:32:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;21867:32:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;21867:32:0::1;-1:-1:-1::0;;;;;21867:32:0;::::1;;::::0;;21795:124:::1;-1:-1:-1::0;;;;;;21958:28:0;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;::::1;::::0;::::1;21957:29;-1:-1:-1::0;;22001:37:0;;::::1;::::0;::::1;::::0;;;21587:4050:::1;;;22076:21;22063:9;:34;;;;;;;;;22058:3579;;;22125:59;22139:17;22158:14;22174:8;22125:12;:59::i;:::-;22120:273;;;-1:-1:-1::0;;;;;22206:29:0;::::1;22238:1;22206:29:::0;;;:17:::1;:29;::::0;;;;:33;;-1:-1:-1;;22206:33:0::1;::::0;;22263:39:::1;22277:13;22225:8:::0;22263:12:::1;:39::i;:::-;22258:120;;22328:13;:30:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;22328:30:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;22328:30:0::1;-1:-1:-1::0;;;;;22328:30:0;::::1;;::::0;;22258:120:::1;-1:-1:-1::0;;;;;;22417:26:0;::::1;;::::0;;;:14:::1;:26;::::0;;;;;;::::1;::::0;::::1;22416:27;-1:-1:-1::0;;22458:35:0;;::::1;::::0;::::1;::::0;;;22058:3579:::1;;;22531:23;22518:9;:36;;;;;;;;;22513:3124;;;22582:63;22596:19;22617:16;22635:8;22582:12;:63::i;:::-;22577:334;;;22667:15;:32:::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;22667:32:0::1;-1:-1:-1::0;;;;;22667:32:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;22718:31:0;;;:19:::1;22667:32;22718:31:::0;;;;:35;;-1:-1:-1;;22718:35:0::1;::::0;;22777:41:::1;::::0;22667:32;22777:12:::1;:41::i;:::-;22772:124;;22844:15;:32:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;22844:32:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;22844:32:0::1;-1:-1:-1::0;;;;;22844:32:0;::::1;;::::0;;22772:124:::1;-1:-1:-1::0;;;;;;22935:28:0;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;::::1;::::0;::::1;22934:29;-1:-1:-1::0;;22978:37:0;;::::1;::::0;::::1;::::0;;;22513:3124:::1;;;23053:27;23040:9;:40;;;;;;;;;23035:2602;;;23108:71;23122:23;23147:20;23169:8;23108:12;:71::i;:::-;23103:358;;;23201:19;:36:::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;23201:36:0::1;-1:-1:-1::0;;;;;23201:36:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;23256:35:0;;;:23:::1;23201:36;23256:35:::0;;;;:39;;-1:-1:-1;;23256:39:0::1;::::0;;23319:45:::1;::::0;23201:36;23319:12:::1;:45::i;:::-;23314:132;;23390:19;:36:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;23390:36:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;23390:36:0::1;-1:-1:-1::0;;;;;23390:36:0;::::1;;::::0;;23314:132:::1;-1:-1:-1::0;;;;;;23485:32:0;::::1;;::::0;;;:20:::1;:32;::::0;;;;;;::::1;::::0;::::1;23484:33;-1:-1:-1::0;;23532:41:0;;::::1;::::0;::::1;::::0;;;23035:2602:::1;;;23611:23;23598:9;:36;;;;;;;;;23593:2044;;;23662:63;23676:19;23697:16;23715:8;23662:12;:63::i;:::-;23657:283;;;-1:-1:-1::0;;;;;23747:31:0;::::1;23781:1;23747:31:::0;;;:19:::1;:31;::::0;;;;:35;;-1:-1:-1;;23747:35:0::1;::::0;;23806:41:::1;23820:15;23768:8:::0;23806:12:::1;:41::i;:::-;23801:124;;23873:15;:32:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;23873:32:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;23873:32:0::1;-1:-1:-1::0;;;;;23873:32:0;::::1;;::::0;;23801:124:::1;-1:-1:-1::0;;;;;;23964:28:0;;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;;;;::::1;::::0;::::1;23963:29;-1:-1:-1::0;;24007:37:0;;::::1;::::0;::::1;::::0;;;24059:14:::1;:26:::0;;;;;;:40;;-1:-1:-1;;;;;;24059:40:0::1;::::0;;::::1;::::0;;;::::1;::::0;;;23593:2044:::1;;;24137:25;24124:9;:38;;;;;;;;;24119:1518;;;24190:67;24204:21;24227:18;24247:8;24190:12;:67::i;:::-;24185:293;;;-1:-1:-1::0;;;;;24279:33:0;::::1;24315:1;24279:33:::0;;;:21:::1;:33;::::0;;;;:37;;-1:-1:-1;;24279:37:0::1;::::0;;24340:43:::1;24354:17;24302:8:::0;24340:12:::1;:43::i;:::-;24335:128;;24409:17;:34:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;24409:34:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;24409:34:0::1;-1:-1:-1::0;;;;;24409:34:0;::::1;;::::0;;24335:128:::1;-1:-1:-1::0;;;;;;24502:30:0;::::1;;::::0;;;:18:::1;:30;::::0;;;;;;::::1;::::0;::::1;24501:31;-1:-1:-1::0;;24547:39:0;;::::1;::::0;::::1;::::0;;;24119:1518:::1;;;24624:15;24611:9;:28;;;;;;;;;24606:1031;;;24667:47;24681:11;24694:8;24704;24667:12;:47::i;:::-;24662:243;;;-1:-1:-1::0;;;;;24736:23:0;::::1;24762:1;24736:23:::0;;;:11:::1;:23;::::0;;;;:27;;-1:-1:-1;;24736:27:0::1;::::0;;24787:33:::1;24801:7;24749:8:::0;24787:12:::1;:33::i;:::-;24782:108;;24846:7;:24:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;24846:24:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;24846:24:0::1;-1:-1:-1::0;;;;;24846:24:0;::::1;;::::0;;24782:108:::1;-1:-1:-1::0;;;;;;24929:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;;::::1;::::0;::::1;24928:21;-1:-1:-1::0;;24964:29:0;;::::1;::::0;::::1;::::0;;;24606:1031:::1;;;25031:22;25018:9;:35;;;;;;;;;25013:624;;;25081:61;25095:18;25115:15;25132:8;25081:12;:61::i;:::-;25076:278;;;-1:-1:-1::0;;;;;25164:30:0;::::1;25197:1;25164:30:::0;;;:18:::1;:30;::::0;;;;:34;;-1:-1:-1;;25164:34:0::1;::::0;;25222:40:::1;25236:14;25184:8:::0;25222:12:::1;:40::i;:::-;25217:122;;25288:14;:31:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;25288:31:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;25288:31:0::1;-1:-1:-1::0;;;;;25288:31:0;::::1;;::::0;;25217:122:::1;-1:-1:-1::0;;;;;;25378:27:0;::::1;;::::0;;;:15:::1;:27;::::0;;;;;;::::1;::::0;::::1;25377:28;-1:-1:-1::0;;25420:36:0;;::::1;::::0;::::1;::::0;;;25013:624:::1;;;25494:13;25481:9;:26;;;;;;;;;25476:161;;;-1:-1:-1::0;25542:1:0::1;25530:9;:13:::0;25558:8:::1;:19:::0;;-1:-1:-1;;;;;;25558:19:0::1;-1:-1:-1::0;;;;;25558:19:0;::::1;;::::0;;-1:-1:-1;25476:161:0::1;;;25632:5;25625:12;;;;;25476:161;25672:9;25655:46;;;;;;;;;::::0;;-1:-1:-1;;;;;25655:46:0;::::1;::::0;;;::::1;;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;25719:4;25712:11;;;4687:1;20859:4872:::0;;;;;:::o;11074:21::-;;;;:::o;9310:32::-;;;;;;;;;;;;9698:59;;;;;;;;;;;;;;;:::o;475:136::-;533:7;560:43;564:1;567;560:43;;;;;;;;;;;;;;;;;:3;:43::i;6122:177::-;6232:58;;;-1:-1:-1;;;;;6232:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6232:58:0;;;6205:86;;6225:5;;6205:19;:86::i;:::-;6122:177;;;:::o;99:181::-;157:7;189:5;;;213:6;;;;205:46;;;;;-1:-1:-1;;;205:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;819:250;877:7;901:6;897:47;;-1:-1:-1;931:1:0;924:8;;897:47;968:5;;;972:1;968;:5;:1;992:5;;;;;:10;984:56;;;;-1:-1:-1;;;984:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1333:132;1391:7;1418:39;1422:1;1425;1418:39;;;;;;;;;;;;;;;;;:3;:39::i;6307:205::-;6435:68;;;-1:-1:-1;;;;;6435:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6458:27;6435:68;;;6408:96;;6428:5;;6408:19;:96::i;:::-;6307:205;;;;:::o;288:179::-;346:6;376:5;;;400:6;;;;;;;;;392:46;;;;;-1:-1:-1;;;392:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1077:248;1135:6;1158;;;1154:47;;-1:-1:-1;1188:1:0;1181:8;;1154:47;1224:5;;;1248:10;;;;;:5;;;;;;;;;;;;:10;;;1240:56;;;;-1:-1:-1;;;1240:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25979:451;-1:-1:-1;;;;;26194:19:0;;26170:4;26194:19;;;;;;;;;;;;;26188:221;;-1:-1:-1;;;;;26240:18:0;;;;;;;;;;;;;;;;26231:48;;;;;-1:-1:-1;;;26231:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26303:18:0;;;;;;;;;;;;;;:45;26332:15;26303:45;;:18;;:45;;26294:77;;;;;-1:-1:-1;;;26294:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26393:4:0;26386:11;;26188:221;-1:-1:-1;26417:5:0;25979:451;;;;;:::o;26599:277::-;26688:4;;26706:140;26727:12;;26723:16;;26706:140;;;26780:6;-1:-1:-1;;;;;26766:20:0;:5;26773:1;26766:10;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26766:10:0;:20;26762:73;;;26815:4;26808:11;;;;;26762:73;26741:3;;26706:140;;619:192;705:7;741:12;733:6;;;;725:29;;;;-1:-1:-1;;;725:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;777:5:0;;;619:192::o;6520:418::-;6601:23;6627:69;6655:4;6627:69;;;;;;;;;;;;;;;;;6635:5;-1:-1:-1;;;;;6627:27:0;;;:69;;;;;:::i;:::-;6711:17;;6601:95;;-1:-1:-1;6711:21:0;6707:224;;6853:10;6842:30;;;;;;;;;;;;;;;-1:-1:-1;6842:30:0;6834:85;;;;-1:-1:-1;;;6834:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1473:189;1559:7;1594:12;1587:5;1579:28;;;;-1:-1:-1;;;1579:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:9;1634:1;1630;:5;;;;;;;1473:189;-1:-1:-1;;;;;1473:189:0:o;2122:232::-;2261:12;2293:53;2316:6;2324:4;2330:1;2333:12;2293:22;:53::i;:::-;2286:60;2122:232;-1:-1:-1;;;;2122:232:0:o;2362:863::-;2538:12;2571:18;2582:6;2571:10;:18::i;:::-;2563:60;;;;;-1:-1:-1;;;2563:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2697:12;2711:23;2738:6;-1:-1:-1;;;;;2738:11:0;2758:8;2769:4;2738:36;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2738:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2696:78;;;;2789:7;2785:433;;;2820:10;-1:-1:-1;2813:17:0;;-1:-1:-1;2813:17:0;2785:433;2867:17;;:21;2863:344;;3035:10;3029:17;3096:15;3083:10;3079:2;3075:19;3068:44;2983:148;3171:20;;-1:-1:-1;;;3171:20:0;;;;;;;;;;;;;;;;;3178:12;;3171:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1692:422;2059:20;2098:8;;;1692:422::o
Swarm Source
ipfs://431ee5775ec5a18026a34d8da41a2f0cb958b40da6dad92ff063830edb48358b
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.