Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
Latest 25 from a total of 50 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Manage | 15706056 | 746 days ago | IN | 0 ETH | 0.00351793 | ||||
Manage | 15065580 | 844 days ago | IN | 0 ETH | 0.00165336 | ||||
Manage | 15064890 | 844 days ago | IN | 0 ETH | 0.00115187 | ||||
Manage | 15061449 | 845 days ago | IN | 0 ETH | 0.00088912 | ||||
Manage | 15037224 | 849 days ago | IN | 0 ETH | 0.00391852 | ||||
Manage | 14843368 | 882 days ago | IN | 0 ETH | 0.00934573 | ||||
Manage | 14515551 | 934 days ago | IN | 0 ETH | 0.00504505 | ||||
Manage | 14515551 | 934 days ago | IN | 0 ETH | 0.00609818 | ||||
Manage | 14431865 | 947 days ago | IN | 0 ETH | 0.00276282 | ||||
Manage | 14394900 | 953 days ago | IN | 0 ETH | 0.00263077 | ||||
Manage | 14394898 | 953 days ago | IN | 0 ETH | 0.00239707 | ||||
Manage | 14314498 | 966 days ago | IN | 0 ETH | 0.00395199 | ||||
Manage | 14299030 | 968 days ago | IN | 0 ETH | 0.00470849 | ||||
Manage | 14292303 | 969 days ago | IN | 0 ETH | 0.00473682 | ||||
Manage | 14285228 | 970 days ago | IN | 0 ETH | 0.00406811 | ||||
Manage | 14284901 | 970 days ago | IN | 0 ETH | 0.00209031 | ||||
Manage | 14251018 | 975 days ago | IN | 0 ETH | 0.00715057 | ||||
Manage | 14251008 | 975 days ago | IN | 0 ETH | 0.01113756 | ||||
Manage | 14223212 | 980 days ago | IN | 0 ETH | 0.00229861 | ||||
Manage | 14143937 | 992 days ago | IN | 0 ETH | 0.00521245 | ||||
Manage | 14069637 | 1003 days ago | IN | 0 ETH | 0.01756496 | ||||
Manage | 14036874 | 1008 days ago | IN | 0 ETH | 0.00988074 | ||||
Manage | 14036863 | 1008 days ago | IN | 0 ETH | 0.0092691 | ||||
Manage | 13968984 | 1019 days ago | IN | 0 ETH | 0.00615085 | ||||
Manage | 13968765 | 1019 days ago | IN | 0 ETH | 0.00676153 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
UniversalTreasury
Compiler Version
v0.7.5+commit.eb77ed08
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-01 */ // 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 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 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 IUSVERC20 { function burnFrom(address account_, uint256 amount_) external; } interface IBarterCalculator { function valuation( address pair_, uint amount_ ) external view returns ( uint _value ); } contract UniversalTreasury is Ownable { using SafeMath for uint; 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, SUSV } address public immutable USV; uint public immutable blocksNeededForQueue; address[] public reserveTokens; // Push only, beware false-positives. mapping( address => bool ) public isReserveToken; mapping( address => uint ) public reserveTokenQueue; // Delays changes to mapping. address[] public reserveDepositors; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isReserveDepositor; mapping( address => uint ) public reserveDepositorQueue; // Delays changes to mapping. address[] public reserveSpenders; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isReserveSpender; mapping( address => uint ) public reserveSpenderQueue; // Delays changes to mapping. address[] public liquidityTokens; // Push only, beware false-positives. mapping( address => bool ) public isLiquidityToken; mapping( address => uint ) public LiquidityTokenQueue; // Delays changes to mapping. address[] public liquidityDepositors; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isLiquidityDepositor; mapping( address => uint ) public LiquidityDepositorQueue; // Delays changes to mapping. mapping( address => address ) public barterCalculator; // barter calculator for liquidity token address[] public reserveManagers; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isReserveManager; mapping( address => uint ) public ReserveManagerQueue; // Delays changes to mapping. address[] public liquidityManagers; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isLiquidityManager; mapping( address => uint ) public LiquidityManagerQueue; // Delays changes to mapping. address[] public debtors; // Push only, beware false-positives. Only for viewing. mapping( address => bool ) public isDebtor; mapping( address => uint ) 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 => uint ) public rewardManagerQueue; // Delays changes to mapping. address public sUSV; uint public sUSVQueue; // Delays change to sUSV address uint public totalReserves; // Risk-free value of all assets uint public totalDebt; constructor ( address _USV, address _DAI, address _Frax, uint _blocksNeededForQueue ) { require( _USV != address(0) ); USV = _USV; isReserveToken[ _DAI ] = true; reserveTokens.push( _DAI ); isReserveToken[ _Frax] = true; reserveTokens.push( _Frax ); blocksNeededForQueue = _blocksNeededForQueue; } /** @notice allow approved address to deposit an asset for USV @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 USV needed and store amount of rewards for distribution send_ = value.sub( _profit ); IERC20Mintable( USV ).mint( msg.sender, send_ ); totalReserves = totalReserves.add( value ); emit ReservesUpdated( totalReserves ); emit Deposit( _token, _amount, value ); } /** @notice allow approved address to burn USV 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 ); IUSVERC20( USV ).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( sUSV ).balanceOf( msg.sender ); // Can only borrow against sUSV 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 USV @param _amount uint */ function repayDebtWithUSV( uint _amount ) external { require( isDebtor[ msg.sender ], "Not approved" ); IUSVERC20( USV ).burnFrom( msg.sender, _amount ); debtorBalance[ msg.sender ] = debtorBalance[ msg.sender ].sub( _amount ); totalDebt = totalDebt.sub( _amount ); emit RepayDebt( msg.sender, USV, _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( USV ).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( USV ).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 USV 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 USV decimals value_ = _amount.mul( 10 ** IERC20( USV ).decimals() ).div( 10 ** IERC20( _token ).decimals() ); } else if ( isLiquidityToken[ _token ] ) { value_ = IBarterCalculator( barterCalculator[ _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 ] = block.number.add( blocksNeededForQueue ); } else if ( _managing == MANAGING.RESERVESPENDER ) { // 1 reserveSpenderQueue[ _address ] = block.number.add( blocksNeededForQueue ); } else if ( _managing == MANAGING.RESERVETOKEN ) { // 2 reserveTokenQueue[ _address ] = block.number.add( blocksNeededForQueue ); } else if ( _managing == MANAGING.RESERVEMANAGER ) { // 3 ReserveManagerQueue[ _address ] = block.number.add( blocksNeededForQueue.mul( 2 ) ); } else if ( _managing == MANAGING.LIQUIDITYDEPOSITOR ) { // 4 LiquidityDepositorQueue[ _address ] = block.number.add( blocksNeededForQueue ); } else if ( _managing == MANAGING.LIQUIDITYTOKEN ) { // 5 LiquidityTokenQueue[ _address ] = block.number.add( blocksNeededForQueue ); } else if ( _managing == MANAGING.LIQUIDITYMANAGER ) { // 6 LiquidityManagerQueue[ _address ] = block.number.add( blocksNeededForQueue.mul( 2 ) ); } else if ( _managing == MANAGING.DEBTOR ) { // 7 debtorQueue[ _address ] = block.number.add( blocksNeededForQueue ); } else if ( _managing == MANAGING.REWARDMANAGER ) { // 8 rewardManagerQueue[ _address ] = block.number.add( blocksNeededForQueue ); } else if ( _managing == MANAGING.SUSV ) { // 9 sUSVQueue = block.number.add( blocksNeededForQueue ); } 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; barterCalculator[ _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.SUSV ) { // 9 sUSVQueue = 0; sUSV = _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 => uint ) 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 ] <= block.number, "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; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_USV","type":"address"},{"internalType":"address","name":"_DAI","type":"address"},{"internalType":"address","name":"_Frax","type":"address"},{"internalType":"uint256","name":"_blocksNeededForQueue","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"enum UniversalTreasury.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 UniversalTreasury.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":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"LiquidityManagerQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"LiquidityTokenQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ReserveManagerQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USV","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":"barterCalculator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blocksNeededForQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"","type":"uint256"}],"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 UniversalTreasury.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"},{"internalType":"address","name":"_token","type":"address"}],"name":"repayDebtWithReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"repayDebtWithUSV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reserveDepositorQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardManagers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sUSV","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sUSVQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum UniversalTreasury.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
60c06040523480156200001157600080fd5b506040516200636e3803806200636e833981810160405260808110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba60405160405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156200015c57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060a081815250505050505060805160601c60a051615fdd620003916000398061351052806139bc5280613a565280613af05280613b8f5280613c375280613cd15280613d705280613e185280613eb25280613f4b5250806113ae5280611a3152806121325280612ce45280613350528061387952806140fb52806142545250615fdd6000f3fe608060405234801561001057600080fd5b50600436106102f05760003560e01c80638f840ddd1161019d578063d796ffb8116100e9578063f3ed9e5d116100a2578063fbfd393b1161007c578063fbfd393b146110c4578063fc7b9c181461114b578063fd1ec01014611169578063fff9ee87146111c1576102f0565b8063f3ed9e5d1461100a578063f894328e14611038578063fb9395881461106c576102f0565b8063d796ffb814610e13578063df89b34414610e61578063e222ad7814610ebb578063e83afee314610eef578063ebd83cd814610f56578063ee4e19a114610fb0576102f0565b8063b1bd38b011610156578063c24ad43e11610130578063c24ad43e14610ced578063cd85641a14610d45578063d031370b14610d9d578063d07f390f14610df5576102f0565b8063b1bd38b014610bd1578063b5b1d56014610c29578063bc157ac114610c81576102f0565b80638f840ddd14610a31578063932cc8c314610a4f578063a1210a2d14610aa7578063a2f812d714610b01578063a569e57114610b1f578063ab319c9a14610b79576102f0565b806346f68ee91161025c5780636b5e40a711610215578063869871bf116101ef578063869871bf146108cf57806387d67dff146109275780638f59c727146109815780638f6a7b57146109d9576102f0565b80636b5e40a7146107c757806370a0502a1461081f578063788c6c0114610877576102f0565b806346f68ee914610643578063481c6a75146106875780634e83423c146106bb5780635a96ac0a1461071557806368c31dd51461071f5780636a20de9214610779576102f0565b8063124154ca116102ae578063124154ca1461046957806312422d23146104c35780631eec5a9a146105115780632b7ce5001461057357806333dd303c1461057d578063437f7912146105eb576102f0565b8062f714ce146102f55780630619aff114610343578063089208d81461039b578063094a8651146103a55780630b0eee30146103fd5780630c3513a81461044b575b600080fd5b6103416004803603604081101561030b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611219565b005b61036f6004803603602081101561035957600080fd5b8101908080359060200190929190505050611525565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a3611564565b005b6103e7600480360360208110156103bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116e3565b6040518082815260200191505060405180910390f35b6104496004803603604081101561041357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116fb565b005b610453611a24565b6040518082815260200191505060405180910390f35b6104ab6004803603602081101561047f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611af4565b60405180821515815260200191505060405180910390f35b61050f600480360360408110156104d957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b14565b005b61055d6004803603604081101561052757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061204f565b6040518082815260200191505060405180910390f35b61057b612360565b005b6105bf6004803603602081101561059357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612720565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106176004803603602081101561060157600080fd5b8101908080359060200190929190505050612753565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106856004803603602081101561065957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612792565b005b61068f612997565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106fd600480360360208110156106d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129c0565b60405180821515815260200191505060405180910390f35b61071d6129e0565b005b6107616004803603602081101561073557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b86565b60405180821515815260200191505060405180910390f35b6107c56004803603604081101561078f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ba6565b005b6107f3600480360360208110156107dd57600080fd5b8101908080359060200190929190505050612df4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61084b6004803603602081101561083557600080fd5b8101908080359060200190929190505050612e33565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108b96004803603602081101561088d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e72565b6040518082815260200191505060405180910390f35b6108fb600480360360208110156108e557600080fd5b8101908080359060200190929190505050612e8a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109696004803603602081101561093d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ec9565b60405180821515815260200191505060405180910390f35b6109c36004803603602081101561099757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ee9565b6040518082815260200191505060405180910390f35b610a05600480360360208110156109ef57600080fd5b8101908080359060200190929190505050612f01565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a39612f40565b6040518082815260200191505060405180910390f35b610a9160048036036020811015610a6557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f46565b6040518082815260200191505060405180910390f35b610ae960048036036020811015610abd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f5e565b60405180821515815260200191505060405180910390f35b610b09612f7e565b6040518082815260200191505060405180910390f35b610b6160048036036020811015610b3557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f84565b60405180821515815260200191505060405180910390f35b610bbb60048036036020811015610b8f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fa4565b6040518082815260200191505060405180910390f35b610c1360048036036020811015610be757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fbc565b6040518082815260200191505060405180910390f35b610c5560048036036020811015610c3f57600080fd5b8101908080359060200190929190505050612fd4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610cd760048036036060811015610c9757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613013565b6040518082815260200191505060405180910390f35b610d2f60048036036020811015610d0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061349f565b6040518082815260200191505060405180910390f35b610d8760048036036020811015610d5b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134b7565b6040518082815260200191505060405180910390f35b610dc960048036036020811015610db357600080fd5b81019080803590602001909291905050506134cf565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610dfd61350e565b6040518082815260200191505060405180910390f35b610e5f60048036036040811015610e2957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613532565b005b610ea360048036036020811015610e7757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613857565b60405180821515815260200191505060405180910390f35b610ec3613877565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610f3e60048036036040811015610f0557600080fd5b81019080803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061389b565b60405180821515815260200191505060405180910390f35b610f9860048036036020811015610f6c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ffa565b60405180821515815260200191505060405180910390f35b610ff260048036036020811015610fc657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061401a565b60405180821515815260200191505060405180910390f35b6110366004803603602081101561102057600080fd5b810190808035906020019092919050505061403a565b005b6110406142e2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6110ae6004803603602081101561108257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614308565b6040518082815260200191505060405180910390f35b611133600480360360608110156110da57600080fd5b81019080803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614320565b60405180821515815260200191505060405180910390f35b61115361549b565b6040518082815260200191505060405180910390f35b6111956004803603602081101561117f57600080fd5b81019080803590602001909291905050506154a1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611203600480360360208110156111d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506154e0565b6040518082815260200191505060405180910390f35b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166112d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74206163636570746564000000000000000000000000000000000000000081525060200191505060405180910390fd5b60011515600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461139e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006113aa828461204f565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561143d57600080fd5b505af1158015611451573d6000803e3d6000fd5b5050505061146a816021546154f890919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a26114ca33848473ffffffffffffffffffffffffffffffffffffffff166155429092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fdf273cb619d95419a9cd0ec88123a0538c85064229baa6363788f743fff90deb8483604051808381526020018281526020019250505060405180910390a2505050565b6012818154811061153557600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba60405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601b6020528060005260406000206000915090505481565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561181157601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661180c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b6118d1565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b60006118dd838361204f565b90506118e7611a24565b81111561195c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e73756666696369656e74207265736572766573000000000000000000000081525060200191505060405180910390fd5b611971816021546154f890919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a26119d133838573ffffffffffffffffffffffffffffffffffffffff166155429092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f2bb2640731848fe9820ba48dbc978c1fc9bbd5f11b948bfab05b7dee3378fd80836040518082815260200191505060405180910390a2505050565b6000611aef611ade6022547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9557600080fd5b505afa158015611aa9573d6000803e3d6000fd5b505050506040513d6020811015611abf57600080fd5b81019080805190602001909291905050506154f890919063ffffffff16565b6021546154f890919063ffffffff16565b905090565b60066020528060005260406000206000915054906101000a900460ff1681565b601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611c92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74206163636570746564000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611c9e828461204f565b90506000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d2b57600080fd5b505afa158015611d3f573d6000803e3d6000fd5b505050506040513d6020811015611d5557600080fd5b810190808051906020019092919050505090506000611dbc601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836154f890919063ffffffff16565b905080831115611e34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f457863656564732064656274206c696d6974000000000000000000000000000081525060200191505060405180910390fd5b611e8683601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546155e490919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ede836022546155e490919063ffffffff16565b602281905550611ef9836021546154f890919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611f9f57600080fd5b505af1158015611fb3573d6000803e3d6000fd5b505050506040513d6020811015611fc957600080fd5b8101908080519060200190929190505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7e1a939bed137a819b5d2979822c67f877689f7a863d5e4cb57cdca97b2977d68786604051808381526020018281526020019250505060405180910390a35050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121fb576121f48373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156120ec57600080fd5b505afa158015612100573d6000803e3d6000fd5b505050506040513d602081101561211657600080fd5b810190808051906020019092919050505060ff16600a0a6121e67f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d60208110156121c057600080fd5b810190808051906020019092919050505060ff16600a0a8561566c90919063ffffffff16565b6156f290919063ffffffff16565b905061235a565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561235957601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634249719f84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561231b57600080fd5b505afa15801561232f573d6000803e3d6000fd5b505050506040513d602081101561234557600080fd5b810190808051906020019092919050505090505b5b92915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612421576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600080600090505b600280549050811015612570576125616125526002838154811061244957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002848154811061248157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561251257600080fd5b505afa158015612526573d6000803e3d6000fd5b505050506040513d602081101561253c57600080fd5b810190808051906020019092919050505061204f565b836155e490919063ffffffff16565b91508080600101915050612429565b5060005b600b805490508110156126bb576126ac61269d600b838154811061259457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b84815481106125cc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561265d57600080fd5b505afa158015612671573d6000803e3d6000fd5b505050506040513d602081101561268757600080fd5b810190808051906020019092919050505061204f565b836155e490919063ffffffff16565b91508080600101915050612574565b5080602181905550807f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a2807fec691f09f6924b27932253f85caf99bacc30360cc0e50a1cc4d2acc24601446660405160405180910390a250565b60116020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6008818154811061276357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612853576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615f156026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba60405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601d6020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615f3b6022913960400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d60405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b612c6d611a24565b811115612ce2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e73756666696369656e74207265736572766573000000000000000000000081525060200191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612d7357600080fd5b505af1158015612d87573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffa8ccab40e7da8146c2304cd0950334fd30a6ba093abe86261aa13911fed849c836040518082815260200191505060405180910390a35050565b60058181548110612e0457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158181548110612e4357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b60188181548110612e9a57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090505481565b600e8181548110612f1157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60215481565b60076020528060005260406000206000915090505481565b600f6020528060005260406000206000915054906101000a900460ff1681565b60205481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60176020528060005260406000206000915090505481565b60146020528060005260406000206000915090505481565b601c8181548110612fe457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130b65750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74206163636570746564000000000000000000000000000000000000000081525060200191505060405180910390fd5b6131553330868673ffffffffffffffffffffffffffffffffffffffff1661573c909392919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561326b57600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b61332b565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661332a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b6000613337848661204f565b905061334c83826154f890919063ffffffff16565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1933846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156133df57600080fd5b505af11580156133f3573d6000803e3d6000fd5b5050505061340c816021546155e490919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a158683604051808381526020018281526020019250505060405180910390a2509392505050565b600a6020528060005260406000206000915090505481565b601a6020528060005260406000206000915090505481565b600281815481106134df57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166135f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166136b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74206163636570746564000000000000000000000000000000000000000081525060200191505060405180910390fd5b6136dd3330848473ffffffffffffffffffffffffffffffffffffffff1661573c909392919063ffffffff16565b60006136e9828461204f565b905061373d81601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546154f890919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613795816022546154f890919063ffffffff16565b6022819055506137b0816021546155e490919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a28173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc6d98eecfc9c78ab62c89a82950079b54874749f1f6f24090f7acc758bc2f3098584604051808381526020018281526020019250505060405180910390a3505050565b60166020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461395e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561399857600080fd5b600060098111156139a557fe5b8360098111156139b157fe5b1415613a32576139ea7f0000000000000000000000000000000000000000000000000000000000000000436155e490919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f96565b60016009811115613a3f57fe5b836009811115613a4b57fe5b1415613acc57613a847f0000000000000000000000000000000000000000000000000000000000000000436155e490919063ffffffff16565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f95565b60026009811115613ad957fe5b836009811115613ae557fe5b1415613b6657613b1e7f0000000000000000000000000000000000000000000000000000000000000000436155e490919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f94565b60036009811115613b7357fe5b836009811115613b7f57fe5b1415613c1357613bcb613bbc60027f000000000000000000000000000000000000000000000000000000000000000061566c90919063ffffffff16565b436155e490919063ffffffff16565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f93565b60046009811115613c2057fe5b836009811115613c2c57fe5b1415613cad57613c657f0000000000000000000000000000000000000000000000000000000000000000436155e490919063ffffffff16565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f92565b60056009811115613cba57fe5b836009811115613cc657fe5b1415613d4757613cff7f0000000000000000000000000000000000000000000000000000000000000000436155e490919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f91565b60066009811115613d5457fe5b836009811115613d6057fe5b1415613df457613dac613d9d60027f000000000000000000000000000000000000000000000000000000000000000061566c90919063ffffffff16565b436155e490919063ffffffff16565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f90565b60076009811115613e0157fe5b836009811115613e0d57fe5b1415613e8e57613e467f0000000000000000000000000000000000000000000000000000000000000000436155e490919063ffffffff16565b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f8f565b60086009811115613e9b57fe5b836009811115613ea757fe5b1415613f2857613ee07f0000000000000000000000000000000000000000000000000000000000000000436155e490919063ffffffff16565b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f8e565b600980811115613f3457fe5b836009811115613f4057fe5b1415613f8457613f797f0000000000000000000000000000000000000000000000000000000000000000436155e490919063ffffffff16565b602081905550613f8d565b60009050613ff4565b5b5b5b5b5b5b5b5b5b826009811115613fa257fe5b7f0e4f2c4b5bc209d509bc3d49348c787fefadc66a79351b470599ac0f5be52eaf83604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2600190505b92915050565b60136020528060005260406000206000915054906101000a900460ff1681565b60196020528060005260406000206000915054906101000a900460ff1681565b601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166140f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561418a57600080fd5b505af115801561419e573d6000803e3d6000fd5b505050506141f481601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546154f890919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061424c816022546154f890919063ffffffff16565b6022819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc6d98eecfc9c78ab62c89a82950079b54874749f1f6f24090f7acc758bc2f3098384604051808381526020018281526020019250505060405180910390a350565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e6020528060005260406000206000915090505481565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146143e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561441d57600080fd5b600080600981111561442b57fe5b85600981111561443757fe5b14156145b45761444a60076006866157fd565b15614508576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061449f6005856159cd565b614507576005849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061542b565b600160098111156145c157fe5b8560098111156145cd57fe5b141561474a576145e0600a6009866157fd565b1561469e576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146356008856159cd565b61469d576008849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061542a565b6002600981111561475757fe5b85600981111561476357fe5b14156148e05761477660046003866157fd565b15614834576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147cb6002856159cd565b614833576002849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615429565b600360098111156148ed57fe5b8560098111156148f957fe5b1415614ad95761490c60146013866157fd565b15614a2d576012849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506149c46012856159cd565b614a2c576012849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615428565b60046009811115614ae657fe5b856009811115614af257fe5b1415614cd257614b056010600f866157fd565b15614c2657600e849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bbd600e856159cd565b614c2557600e849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615427565b60056009811115614cdf57fe5b856009811115614ceb57fe5b1415614ee657614cfe600d600c866157fd565b15614dbc576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d53600b856159cd565b614dbb57600b849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615426565b60066009811115614ef357fe5b856009811115614eff57fe5b141561507c57614f1260176016866157fd565b15614fd0576000601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f676015856159cd565b614fcf576015849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615425565b6007600981111561508957fe5b85600981111561509557fe5b1415615212576150a8601a6019866157fd565b15615166576000601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150fd6018856159cd565b615165576018849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615424565b6008600981111561521f57fe5b85600981111561522b57fe5b14156153a85761523e601e601d866157fd565b156152fc576000601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615293601c856159cd565b6152fb57601c849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615423565b6009808111156153b457fe5b8560098111156153c057fe5b141561541857600060208190555083601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050615422565b6000915050615494565b5b5b5b5b5b5b5b5b5b84600981111561543757fe5b7f0dcacb7e392f3d6a216ed2660e3dcfd40b7793d33591db2ba185a6b8e44fc4778583604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a260019150505b9392505050565b60225481565b600b81815481106154b157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60106020528060005260406000206000915090505481565b600061553a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615a6e565b905092915050565b6155df8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615b2e565b505050565b600080828401905083811015615662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561567f57600090506156ec565b600082840290508284828161569057fe5b04146156e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615f5d6021913960400191505060405180910390fd5b809150505b92915050565b600061573483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615c1d565b905092915050565b6157f7846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615b2e565b50505050565b60008260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166159c15760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415615904576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f4d7573742071756575650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b438460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156159b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5175657565206e6f74206578706972656400000000000000000000000000000081525060200191505060405180910390fd5b600190506159c6565b600090505b9392505050565b600080600090505b8380549050811015615a62578273ffffffffffffffffffffffffffffffffffffffff16848281548110615a0457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415615a55576001915050615a68565b80806001019150506159d5565b50600090505b92915050565b6000838311158290615b1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615ae0578082015181840152602081019050615ac5565b50505050905090810190601f168015615b0d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6060615b90826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16615ce39092919063ffffffff16565b9050600081511115615c1857808060200190516020811015615bb157600080fd5b8101908080519060200190929190505050615c17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615f7e602a913960400191505060405180910390fd5b5b505050565b60008083118290615cc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615c8e578082015181840152602081019050615c73565b50505050905090810190601f168015615cbb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615cd557fe5b049050809150509392505050565b6060615cf28484600085615cfb565b90509392505050565b6060615d0685615f01565b615d78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310615dc85780518252602082019150602081019050602083039250615da5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615e2a576040519150601f19603f3d011682016040523d82523d6000602084013e615e2f565b606091505b50915091508115615e44578092505050615ef9565b600081511115615e575780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615ebe578082015181840152602081019050615ea3565b50505050905090810190601f168015615eeb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b600080823b90506000811191505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220d7121ed90e38fbe795407dde28a87d2bc150dedba8ddb1d716b8c99e6216dcc064736f6c6343000705003300000000000000000000000088536c9b2c4701b8db824e6a16829d5b5eb844400000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000853d955acef822db058eb8505911ed77f175b99e000000000000000000000000000000000000000000000000000000000000010c
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102f05760003560e01c80638f840ddd1161019d578063d796ffb8116100e9578063f3ed9e5d116100a2578063fbfd393b1161007c578063fbfd393b146110c4578063fc7b9c181461114b578063fd1ec01014611169578063fff9ee87146111c1576102f0565b8063f3ed9e5d1461100a578063f894328e14611038578063fb9395881461106c576102f0565b8063d796ffb814610e13578063df89b34414610e61578063e222ad7814610ebb578063e83afee314610eef578063ebd83cd814610f56578063ee4e19a114610fb0576102f0565b8063b1bd38b011610156578063c24ad43e11610130578063c24ad43e14610ced578063cd85641a14610d45578063d031370b14610d9d578063d07f390f14610df5576102f0565b8063b1bd38b014610bd1578063b5b1d56014610c29578063bc157ac114610c81576102f0565b80638f840ddd14610a31578063932cc8c314610a4f578063a1210a2d14610aa7578063a2f812d714610b01578063a569e57114610b1f578063ab319c9a14610b79576102f0565b806346f68ee91161025c5780636b5e40a711610215578063869871bf116101ef578063869871bf146108cf57806387d67dff146109275780638f59c727146109815780638f6a7b57146109d9576102f0565b80636b5e40a7146107c757806370a0502a1461081f578063788c6c0114610877576102f0565b806346f68ee914610643578063481c6a75146106875780634e83423c146106bb5780635a96ac0a1461071557806368c31dd51461071f5780636a20de9214610779576102f0565b8063124154ca116102ae578063124154ca1461046957806312422d23146104c35780631eec5a9a146105115780632b7ce5001461057357806333dd303c1461057d578063437f7912146105eb576102f0565b8062f714ce146102f55780630619aff114610343578063089208d81461039b578063094a8651146103a55780630b0eee30146103fd5780630c3513a81461044b575b600080fd5b6103416004803603604081101561030b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611219565b005b61036f6004803603602081101561035957600080fd5b8101908080359060200190929190505050611525565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a3611564565b005b6103e7600480360360208110156103bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116e3565b6040518082815260200191505060405180910390f35b6104496004803603604081101561041357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116fb565b005b610453611a24565b6040518082815260200191505060405180910390f35b6104ab6004803603602081101561047f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611af4565b60405180821515815260200191505060405180910390f35b61050f600480360360408110156104d957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b14565b005b61055d6004803603604081101561052757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061204f565b6040518082815260200191505060405180910390f35b61057b612360565b005b6105bf6004803603602081101561059357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612720565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106176004803603602081101561060157600080fd5b8101908080359060200190929190505050612753565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106856004803603602081101561065957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612792565b005b61068f612997565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106fd600480360360208110156106d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129c0565b60405180821515815260200191505060405180910390f35b61071d6129e0565b005b6107616004803603602081101561073557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b86565b60405180821515815260200191505060405180910390f35b6107c56004803603604081101561078f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ba6565b005b6107f3600480360360208110156107dd57600080fd5b8101908080359060200190929190505050612df4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61084b6004803603602081101561083557600080fd5b8101908080359060200190929190505050612e33565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108b96004803603602081101561088d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e72565b6040518082815260200191505060405180910390f35b6108fb600480360360208110156108e557600080fd5b8101908080359060200190929190505050612e8a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109696004803603602081101561093d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ec9565b60405180821515815260200191505060405180910390f35b6109c36004803603602081101561099757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ee9565b6040518082815260200191505060405180910390f35b610a05600480360360208110156109ef57600080fd5b8101908080359060200190929190505050612f01565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a39612f40565b6040518082815260200191505060405180910390f35b610a9160048036036020811015610a6557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f46565b6040518082815260200191505060405180910390f35b610ae960048036036020811015610abd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f5e565b60405180821515815260200191505060405180910390f35b610b09612f7e565b6040518082815260200191505060405180910390f35b610b6160048036036020811015610b3557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f84565b60405180821515815260200191505060405180910390f35b610bbb60048036036020811015610b8f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fa4565b6040518082815260200191505060405180910390f35b610c1360048036036020811015610be757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fbc565b6040518082815260200191505060405180910390f35b610c5560048036036020811015610c3f57600080fd5b8101908080359060200190929190505050612fd4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610cd760048036036060811015610c9757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613013565b6040518082815260200191505060405180910390f35b610d2f60048036036020811015610d0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061349f565b6040518082815260200191505060405180910390f35b610d8760048036036020811015610d5b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134b7565b6040518082815260200191505060405180910390f35b610dc960048036036020811015610db357600080fd5b81019080803590602001909291905050506134cf565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610dfd61350e565b6040518082815260200191505060405180910390f35b610e5f60048036036040811015610e2957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613532565b005b610ea360048036036020811015610e7757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613857565b60405180821515815260200191505060405180910390f35b610ec3613877565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610f3e60048036036040811015610f0557600080fd5b81019080803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061389b565b60405180821515815260200191505060405180910390f35b610f9860048036036020811015610f6c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ffa565b60405180821515815260200191505060405180910390f35b610ff260048036036020811015610fc657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061401a565b60405180821515815260200191505060405180910390f35b6110366004803603602081101561102057600080fd5b810190808035906020019092919050505061403a565b005b6110406142e2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6110ae6004803603602081101561108257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614308565b6040518082815260200191505060405180910390f35b611133600480360360608110156110da57600080fd5b81019080803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614320565b60405180821515815260200191505060405180910390f35b61115361549b565b6040518082815260200191505060405180910390f35b6111956004803603602081101561117f57600080fd5b81019080803590602001909291905050506154a1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611203600480360360208110156111d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506154e0565b6040518082815260200191505060405180910390f35b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166112d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74206163636570746564000000000000000000000000000000000000000081525060200191505060405180910390fd5b60011515600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461139e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006113aa828461204f565b90507f00000000000000000000000088536c9b2c4701b8db824e6a16829d5b5eb8444073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561143d57600080fd5b505af1158015611451573d6000803e3d6000fd5b5050505061146a816021546154f890919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a26114ca33848473ffffffffffffffffffffffffffffffffffffffff166155429092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fdf273cb619d95419a9cd0ec88123a0538c85064229baa6363788f743fff90deb8483604051808381526020018281526020019250505060405180910390a2505050565b6012818154811061153557600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba60405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601b6020528060005260406000206000915090505481565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561181157601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661180c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b6118d1565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b60006118dd838361204f565b90506118e7611a24565b81111561195c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e73756666696369656e74207265736572766573000000000000000000000081525060200191505060405180910390fd5b611971816021546154f890919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a26119d133838573ffffffffffffffffffffffffffffffffffffffff166155429092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f2bb2640731848fe9820ba48dbc978c1fc9bbd5f11b948bfab05b7dee3378fd80836040518082815260200191505060405180910390a2505050565b6000611aef611ade6022547f00000000000000000000000088536c9b2c4701b8db824e6a16829d5b5eb8444073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9557600080fd5b505afa158015611aa9573d6000803e3d6000fd5b505050506040513d6020811015611abf57600080fd5b81019080805190602001909291905050506154f890919063ffffffff16565b6021546154f890919063ffffffff16565b905090565b60066020528060005260406000206000915054906101000a900460ff1681565b601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611c92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74206163636570746564000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611c9e828461204f565b90506000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d2b57600080fd5b505afa158015611d3f573d6000803e3d6000fd5b505050506040513d6020811015611d5557600080fd5b810190808051906020019092919050505090506000611dbc601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836154f890919063ffffffff16565b905080831115611e34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f457863656564732064656274206c696d6974000000000000000000000000000081525060200191505060405180910390fd5b611e8683601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546155e490919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ede836022546155e490919063ffffffff16565b602281905550611ef9836021546154f890919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611f9f57600080fd5b505af1158015611fb3573d6000803e3d6000fd5b505050506040513d6020811015611fc957600080fd5b8101908080519060200190929190505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7e1a939bed137a819b5d2979822c67f877689f7a863d5e4cb57cdca97b2977d68786604051808381526020018281526020019250505060405180910390a35050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121fb576121f48373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156120ec57600080fd5b505afa158015612100573d6000803e3d6000fd5b505050506040513d602081101561211657600080fd5b810190808051906020019092919050505060ff16600a0a6121e67f00000000000000000000000088536c9b2c4701b8db824e6a16829d5b5eb8444073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d60208110156121c057600080fd5b810190808051906020019092919050505060ff16600a0a8561566c90919063ffffffff16565b6156f290919063ffffffff16565b905061235a565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561235957601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634249719f84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561231b57600080fd5b505afa15801561232f573d6000803e3d6000fd5b505050506040513d602081101561234557600080fd5b810190808051906020019092919050505090505b5b92915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612421576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600080600090505b600280549050811015612570576125616125526002838154811061244957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002848154811061248157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561251257600080fd5b505afa158015612526573d6000803e3d6000fd5b505050506040513d602081101561253c57600080fd5b810190808051906020019092919050505061204f565b836155e490919063ffffffff16565b91508080600101915050612429565b5060005b600b805490508110156126bb576126ac61269d600b838154811061259457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b84815481106125cc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561265d57600080fd5b505afa158015612671573d6000803e3d6000fd5b505050506040513d602081101561268757600080fd5b810190808051906020019092919050505061204f565b836155e490919063ffffffff16565b91508080600101915050612574565b5080602181905550807f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a2807fec691f09f6924b27932253f85caf99bacc30360cc0e50a1cc4d2acc24601446660405160405180910390a250565b60116020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6008818154811061276357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612853576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615f156026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba60405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601d6020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615f3b6022913960400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d60405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b612c6d611a24565b811115612ce2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e73756666696369656e74207265736572766573000000000000000000000081525060200191505060405180910390fd5b7f00000000000000000000000088536c9b2c4701b8db824e6a16829d5b5eb8444073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612d7357600080fd5b505af1158015612d87573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffa8ccab40e7da8146c2304cd0950334fd30a6ba093abe86261aa13911fed849c836040518082815260200191505060405180910390a35050565b60058181548110612e0457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158181548110612e4357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b60188181548110612e9a57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090505481565b600e8181548110612f1157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60215481565b60076020528060005260406000206000915090505481565b600f6020528060005260406000206000915054906101000a900460ff1681565b60205481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60176020528060005260406000206000915090505481565b60146020528060005260406000206000915090505481565b601c8181548110612fe457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130b65750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74206163636570746564000000000000000000000000000000000000000081525060200191505060405180910390fd5b6131553330868673ffffffffffffffffffffffffffffffffffffffff1661573c909392919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561326b57600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b61332b565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661332a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b6000613337848661204f565b905061334c83826154f890919063ffffffff16565b91507f00000000000000000000000088536c9b2c4701b8db824e6a16829d5b5eb8444073ffffffffffffffffffffffffffffffffffffffff166340c10f1933846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156133df57600080fd5b505af11580156133f3573d6000803e3d6000fd5b5050505061340c816021546155e490919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a158683604051808381526020018281526020019250505060405180910390a2509392505050565b600a6020528060005260406000206000915090505481565b601a6020528060005260406000206000915090505481565b600281815481106134df57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000010c81565b601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166135f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166136b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74206163636570746564000000000000000000000000000000000000000081525060200191505060405180910390fd5b6136dd3330848473ffffffffffffffffffffffffffffffffffffffff1661573c909392919063ffffffff16565b60006136e9828461204f565b905061373d81601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546154f890919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613795816022546154f890919063ffffffff16565b6022819055506137b0816021546155e490919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a28173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc6d98eecfc9c78ab62c89a82950079b54874749f1f6f24090f7acc758bc2f3098584604051808381526020018281526020019250505060405180910390a3505050565b60166020528060005260406000206000915054906101000a900460ff1681565b7f00000000000000000000000088536c9b2c4701b8db824e6a16829d5b5eb8444081565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461395e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561399857600080fd5b600060098111156139a557fe5b8360098111156139b157fe5b1415613a32576139ea7f000000000000000000000000000000000000000000000000000000000000010c436155e490919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f96565b60016009811115613a3f57fe5b836009811115613a4b57fe5b1415613acc57613a847f000000000000000000000000000000000000000000000000000000000000010c436155e490919063ffffffff16565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f95565b60026009811115613ad957fe5b836009811115613ae557fe5b1415613b6657613b1e7f000000000000000000000000000000000000000000000000000000000000010c436155e490919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f94565b60036009811115613b7357fe5b836009811115613b7f57fe5b1415613c1357613bcb613bbc60027f000000000000000000000000000000000000000000000000000000000000010c61566c90919063ffffffff16565b436155e490919063ffffffff16565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f93565b60046009811115613c2057fe5b836009811115613c2c57fe5b1415613cad57613c657f000000000000000000000000000000000000000000000000000000000000010c436155e490919063ffffffff16565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f92565b60056009811115613cba57fe5b836009811115613cc657fe5b1415613d4757613cff7f000000000000000000000000000000000000000000000000000000000000010c436155e490919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f91565b60066009811115613d5457fe5b836009811115613d6057fe5b1415613df457613dac613d9d60027f000000000000000000000000000000000000000000000000000000000000010c61566c90919063ffffffff16565b436155e490919063ffffffff16565b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f90565b60076009811115613e0157fe5b836009811115613e0d57fe5b1415613e8e57613e467f000000000000000000000000000000000000000000000000000000000000010c436155e490919063ffffffff16565b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f8f565b60086009811115613e9b57fe5b836009811115613ea757fe5b1415613f2857613ee07f000000000000000000000000000000000000000000000000000000000000010c436155e490919063ffffffff16565b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f8e565b600980811115613f3457fe5b836009811115613f4057fe5b1415613f8457613f797f000000000000000000000000000000000000000000000000000000000000010c436155e490919063ffffffff16565b602081905550613f8d565b60009050613ff4565b5b5b5b5b5b5b5b5b5b826009811115613fa257fe5b7f0e4f2c4b5bc209d509bc3d49348c787fefadc66a79351b470599ac0f5be52eaf83604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2600190505b92915050565b60136020528060005260406000206000915054906101000a900460ff1681565b60196020528060005260406000206000915054906101000a900460ff1681565b601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166140f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f00000000000000000000000088536c9b2c4701b8db824e6a16829d5b5eb8444073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561418a57600080fd5b505af115801561419e573d6000803e3d6000fd5b505050506141f481601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546154f890919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061424c816022546154f890919063ffffffff16565b6022819055507f00000000000000000000000088536c9b2c4701b8db824e6a16829d5b5eb8444073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc6d98eecfc9c78ab62c89a82950079b54874749f1f6f24090f7acc758bc2f3098384604051808381526020018281526020019250505060405180910390a350565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e6020528060005260406000206000915090505481565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146143e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561441d57600080fd5b600080600981111561442b57fe5b85600981111561443757fe5b14156145b45761444a60076006866157fd565b15614508576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061449f6005856159cd565b614507576005849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061542b565b600160098111156145c157fe5b8560098111156145cd57fe5b141561474a576145e0600a6009866157fd565b1561469e576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146356008856159cd565b61469d576008849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061542a565b6002600981111561475757fe5b85600981111561476357fe5b14156148e05761477660046003866157fd565b15614834576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147cb6002856159cd565b614833576002849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615429565b600360098111156148ed57fe5b8560098111156148f957fe5b1415614ad95761490c60146013866157fd565b15614a2d576012849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506149c46012856159cd565b614a2c576012849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615428565b60046009811115614ae657fe5b856009811115614af257fe5b1415614cd257614b056010600f866157fd565b15614c2657600e849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bbd600e856159cd565b614c2557600e849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615427565b60056009811115614cdf57fe5b856009811115614ceb57fe5b1415614ee657614cfe600d600c866157fd565b15614dbc576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d53600b856159cd565b614dbb57600b849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615426565b60066009811115614ef357fe5b856009811115614eff57fe5b141561507c57614f1260176016866157fd565b15614fd0576000601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f676015856159cd565b614fcf576015849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615425565b6007600981111561508957fe5b85600981111561509557fe5b1415615212576150a8601a6019866157fd565b15615166576000601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150fd6018856159cd565b615165576018849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615424565b6008600981111561521f57fe5b85600981111561522b57fe5b14156153a85761523e601e601d866157fd565b156152fc576000601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615293601c856159cd565b6152fb57601c849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550615423565b6009808111156153b457fe5b8560098111156153c057fe5b141561541857600060208190555083601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050615422565b6000915050615494565b5b5b5b5b5b5b5b5b5b84600981111561543757fe5b7f0dcacb7e392f3d6a216ed2660e3dcfd40b7793d33591db2ba185a6b8e44fc4778583604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a260019150505b9392505050565b60225481565b600b81815481106154b157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60106020528060005260406000206000915090505481565b600061553a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615a6e565b905092915050565b6155df8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615b2e565b505050565b600080828401905083811015615662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561567f57600090506156ec565b600082840290508284828161569057fe5b04146156e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615f5d6021913960400191505060405180910390fd5b809150505b92915050565b600061573483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615c1d565b905092915050565b6157f7846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615b2e565b50505050565b60008260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166159c15760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415615904576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f4d7573742071756575650000000000000000000000000000000000000000000081525060200191505060405180910390fd5b438460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156159b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5175657565206e6f74206578706972656400000000000000000000000000000081525060200191505060405180910390fd5b600190506159c6565b600090505b9392505050565b600080600090505b8380549050811015615a62578273ffffffffffffffffffffffffffffffffffffffff16848281548110615a0457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415615a55576001915050615a68565b80806001019150506159d5565b50600090505b92915050565b6000838311158290615b1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615ae0578082015181840152602081019050615ac5565b50505050905090810190601f168015615b0d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6060615b90826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16615ce39092919063ffffffff16565b9050600081511115615c1857808060200190516020811015615bb157600080fd5b8101908080519060200190929190505050615c17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615f7e602a913960400191505060405180910390fd5b5b505050565b60008083118290615cc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615c8e578082015181840152602081019050615c73565b50505050905090810190601f168015615cbb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615cd557fe5b049050809150509392505050565b6060615cf28484600085615cfb565b90509392505050565b6060615d0685615f01565b615d78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310615dc85780518252602082019150602081019050602083039250615da5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615e2a576040519150601f19603f3d011682016040523d82523d6000602084013e615e2f565b606091505b50915091508115615e44578092505050615ef9565b600081511115615e575780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615ebe578082015181840152602081019050615ea3565b50505050905090810190601f168015615eeb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b600080823b90506000811191505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220d7121ed90e38fbe795407dde28a87d2bc150dedba8ddb1d716b8c99e6216dcc064736f6c63430007050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000088536c9b2c4701b8db824e6a16829d5b5eb844400000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000853d955acef822db058eb8505911ed77f175b99e000000000000000000000000000000000000000000000000000000000000010c
-----Decoded View---------------
Arg [0] : _USV (address): 0x88536C9B2C4701b8dB824e6A16829D5B5Eb84440
Arg [1] : _DAI (address): 0x6B175474E89094C44Da98b954EedeAC495271d0F
Arg [2] : _Frax (address): 0x853d955aCEf822Db058eb8505911ED77F175b99e
Arg [3] : _blocksNeededForQueue (uint256): 268
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000088536c9b2c4701b8db824e6a16829d5b5eb84440
Arg [1] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [2] : 000000000000000000000000853d955acef822db058eb8505911ed77f175b99e
Arg [3] : 000000000000000000000000000000000000000000000000000000000000010c
Deployed Bytecode Sourcemap
6754:19212:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12039:581;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9193:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4143:159;;;:::i;:::-;;9905:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15074:626;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16233:146;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8211:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12765:859;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17363:462;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16532:668;;;:::i;:::-;;9090:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8364:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4310:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3916:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10055:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4583:221;;;:::i;:::-;;7969:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15781:343;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8114:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9437;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8024:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9687:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8459:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8742:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8834:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10295:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8270:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8933:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10228:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8685:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9593:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9345:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9961:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11013:875;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8516:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9823:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7894:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7843:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13791:631;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9534:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7808:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18001:1785;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9288:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9774:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14553:376;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10202:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10111:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19996:4835;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10360:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8608:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8994:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12039:581;12118:14;:24;12134:6;12118:24;;;;;;;;;;;;;;;;;;;;;;;;;12109:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12259:4;12225:38;;:16;:30;12243:10;12225:30;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;12216:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12294:10;12307:26;12316:6;12324:7;12307;:26::i;:::-;12294:39;;12355:3;12344:25;;;12371:10;12383:5;12344:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12419:26;12438:5;12419:13;;:17;;:26;;;;:::i;:::-;12403:13;:42;;;;12478:13;;12461:32;;;;;;;;;;12506:52;12537:10;12549:7;12514:6;12506:29;;;;:52;;;;;:::i;:::-;12588:6;12576:36;;;12596:7;12605:5;12576:36;;;;;;;;;;;;;;;;;;;;;;;;12039:581;;;:::o;9193:32::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4143:159::-;4067:10;4057:20;;:6;;;;;;;;;;:20;;;4048:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4260:1:::1;4227:37;;4244:6;::::0;::::1;;;;;;;;4227:37;;;;;;;;;;;;4292:1;4275:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4143:159::o:0;9905:47::-;;;;;;;;;;;;;;;;;:::o;15074:626::-;15146:16;:26;15164:6;15146:26;;;;;;;;;;;;;;;;;;;;;;;;;15142:209;;;15199:18;:32;15219:10;15199:32;;;;;;;;;;;;;;;;;;;;;;;;;15190:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15142:209;;;15291:16;:30;15309:10;15291:30;;;;;;;;;;;;;;;;;;;;;;;;;15282:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15142:209;15363:10;15376:24;15384:6;15392:7;15376;:24::i;:::-;15363:37;;15429:16;:14;:16::i;:::-;15420:5;:25;;15411:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15501:26;15520:5;15501:13;;:17;;:26;;;;:::i;:::-;15485:13;:42;;;;15560:13;;15543:32;;;;;;;;;;15588:52;15619:10;15631:7;15596:6;15588:29;;;;:52;;;;;:::i;:::-;15675:6;15658:34;;;15683:7;15658:34;;;;;;;;;;;;;;;;;;15074:626;;;:::o;16233:146::-;16281:4;16306:65;16325:44;16358:9;;16333:3;16325:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:31;;:44;;;;:::i;:::-;16306:13;;:17;;:65;;;;:::i;:::-;16299:72;;16233:146;:::o;8211:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;12765:859::-;12845:8;:22;12855:10;12845:22;;;;;;;;;;;;;;;;;;;;;;;;;12836:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12905:14;:24;12921:6;12905:24;;;;;;;;;;;;;;;;;;;;;;;;;12896:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12960:10;12973:26;12982:6;12990:7;12973;:26::i;:::-;12960:39;;13012:16;13039:4;;;;;;;;;;;13031:24;;;13057:10;13031:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13012:57;;13117:18;13138:46;13155:13;:27;13170:10;13155:27;;;;;;;;;;;;;;;;13138:11;:15;;:46;;;;:::i;:::-;13117:67;;13213:13;13204:5;:22;;13195:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13293:40;13326:5;13293:13;:27;13308:10;13293:27;;;;;;;;;;;;;;;;:31;;:40;;;;:::i;:::-;13263:13;:27;13278:10;13263:27;;;;;;;;;;;;;;;:70;;;;13356:22;13371:5;13356:9;;:13;;:22;;;;:::i;:::-;13344:9;:34;;;;13407:26;13426:5;13407:13;;:17;;:26;;;;:::i;:::-;13391:13;:42;;;;13466:13;;13449:32;;;;;;;;;;13502:6;13494:25;;;13521:10;13533:7;13494:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13592:6;13568:48;;13580:10;13568:48;;;13600:7;13609:5;13568:48;;;;;;;;;;;;;;;;;;;;;;;;12765:859;;;;;:::o;17363:462::-;17434:11;17464:14;:24;17480:6;17464:24;;;;;;;;;;;;;;;;;;;;;;;;;17459:359;;;17568:86;17633:6;17625:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17619:33;;:2;:33;17568:45;17595:3;17587:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17581:30;;:2;:30;17568:7;:11;;:45;;;;:::i;:::-;:49;;:86;;;;:::i;:::-;17559:95;;17459:359;;;17677:16;:26;17695:6;17677:26;;;;;;;;;;;;;;;;;;;;;;;;;17672:146;;;17749:16;:26;17767:6;17749:26;;;;;;;;;;;;;;;;;;;;;;;;;17730:57;;;17789:6;17797:7;17730:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17721:85;;17672:146;17459:359;17363:462;;;;:::o;16532:668::-;4067:10;4057:20;;:6;;;;;;;;;;:20;;;4048:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16591:13:::1;16620:6:::0;16629:1:::1;16620:10;;16615:221;16636:13;:20;;;;16632:1;:24;16615:221;;;16690:134;16723:86;16732:13;16747:1;16732:18;;;;;;;;;;;;;;;;;;;;;;;;;16760:13;16775:1;16760:18;;;;;;;;;;;;;;;;;;;;;;;;;16752:38;;;16800:4;16752:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;16723:7;:86::i;:::-;16690:8;:12;;:134;;;;:::i;:::-;16679:145;;16658:3;;;;;;;16615:221;;;;16851:6;16846:226;16867:15;:22;;;;16863:1;:26;16846:226;;;16923:137;16955:90;16964:15;16981:1;16964:20;;;;;;;;;;;;;;;;;;;;;;;;;16994:15;17011:1;16994:20;;;;;;;;;;;;;;;;;;;;;;;;;16986:40;;;17036:4;16986:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;16955:7;:90::i;:::-;16923:8;:12;;:137;;;;:::i;:::-;16912:148;;16891:3;;;;;;;16846:226;;;;17098:8;17082:13;:24;;;;17139:8;17122:27;;;;;;;;;;17182:8;17165:27;;;;;;;;;;4126:1;16532:668::o:0;9090:53::-;;;;;;;;;;;;;;;;;;;;;;:::o;8364:32::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4310:261::-;4067:10;4057:20;;:6;;;;;;;;;;:20;;;4048:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4434:1:::1;4413:23;;:9;:23;;;;4404:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4520:9;4495:36;;4512:6;::::0;::::1;;;;;;;;4495:36;;;;;;;;;;;;4554:9;4542;;:21;;;;;;;;;;;;;;;;;;4310:261:::0;:::o;3916:90::-;3965:7;3992:6;;;;;;;;;;;3985:13;;3916:90;:::o;10055:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;4583:221::-;4667:9;;;;;;;;;;;4653:23;;:10;:23;;;4644:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4756:9;;;;;;;;;;;4731:36;;4748:6;;;;;;;;;;4731:36;;;;;;;;;;;;4787:9;;;;;;;;;;;4778:6;;:18;;;;;;;;;;;;;;;;;;4583:221::o;7969:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;15781:343::-;15867:15;:29;15884:10;15867:29;;;;;;;;;;;;;;;;;;;;;;;;;15858:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15945:16;:14;:16::i;:::-;15934:7;:27;;15925:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16017:3;16001:26;;;16029:10;16041:7;16001:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16095:10;16068:48;;16083:10;16068:48;;;16107:7;16068:48;;;;;;;;;;;;;;;;;;15781:343;;:::o;8114:34::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9437:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8024:51::-;;;;;;;;;;;;;;;;;:::o;9687:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8459:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;8742:53::-;;;;;;;;;;;;;;;;;:::o;8834:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10295:25::-;;;;:::o;8270:55::-;;;;;;;;;;;;;;;;;:::o;8933:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;10228:21::-;;;;:::o;8685:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;9593:55::-;;;;;;;;;;;;;;;;;:::o;9345:53::-;;;;;;;;;;;;;;;;;:::o;9961:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11013:875::-;11095:10;11128:14;:24;11144:6;11128:24;;;;;;;;;;;;;;;;;;;;;;;;;:54;;;;11156:16;:26;11174:6;11156:26;;;;;;;;;;;;;;;;;;;;;;;;;11128:54;11119:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11211:71;11246:10;11266:4;11273:7;11219:6;11211:33;;;;:71;;;;;;:::i;:::-;11300:14;:24;11316:6;11300:24;;;;;;;;;;;;;;;;;;;;;;;;;11295:212;;;11351:18;:32;11371:10;11351:32;;;;;;;;;;;;;;;;;;;;;;;;;11342:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11295:212;;;11443:20;:34;11465:10;11443:34;;;;;;;;;;;;;;;;;;;;;;;;;11434:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11295:212;11519:10;11532:24;11540:6;11548:7;11532;:24::i;:::-;11519:37;;11648:20;11659:7;11648:5;:9;;:20;;;;:::i;:::-;11640:28;;11695:3;11679:26;;;11707:10;11719:5;11679:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11755:26;11774:5;11755:13;;:17;;:26;;;;:::i;:::-;11739:13;:42;;;;11814:13;;11797:32;;;;;;;;;;11856:6;11847:33;;;11864:7;11873:5;11847:33;;;;;;;;;;;;;;;;;;;;;;;;11013:875;;;;;;:::o;8516:53::-;;;;;;;;;;;;;;;;;:::o;9823:45::-;;;;;;;;;;;;;;;;;:::o;7894:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7843:42::-;;;:::o;13791:631::-;13882:8;:22;13892:10;13882:22;;;;;;;;;;;;;;;;;;;;;;;;;13873:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13942:14;:24;13958:6;13942:24;;;;;;;;;;;;;;;;;;;;;;;;;13933:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13997:71;14032:10;14052:4;14059:7;14005:6;13997:33;;;;:71;;;;;;:::i;:::-;14081:10;14094:26;14103:6;14111:7;14094;:26::i;:::-;14081:39;;14161:40;14194:5;14161:13;:27;14176:10;14161:27;;;;;;;;;;;;;;;;:31;;:40;;;;:::i;:::-;14131:13;:27;14146:10;14131:27;;;;;;;;;;;;;;;:70;;;;14224:22;14239:5;14224:9;;:13;;:22;;;;:::i;:::-;14212:9;:34;;;;14275:26;14294:5;14275:13;;:17;;:26;;;;:::i;:::-;14259:13;:42;;;;14334:13;;14317:32;;;;;;;;;;14390:6;14367:47;;14378:10;14367:47;;;14398:7;14407:5;14367:47;;;;;;;;;;;;;;;;;;;;;;;;13791:631;;;:::o;9534:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;7808:28::-;;;:::o;18001:1785::-;18089:4;4067:10;4057:20;;:6;;;;;;;;;;:20;;;4048:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18136:1:::1;18116:22;;:8;:22;;;;18107:33;;;::::0;::::1;;18169:25;18156:38;;;;;;;;:9;:38;;;;;;;;;18151:1552;;;18253:40;18271:20;18253:12;:16;;:40;;;;:::i;:::-;18217:21;:33;18240:8;18217:33;;;;;;;;;;;;;;;:76;;;;18151:1552;;;18329:23;18316:36;;;;;;;;:9;:36;;;;;;;;;18311:1392;;;18409:40;18427:20;18409:12;:16;;:40;;;;:::i;:::-;18375:19;:31;18396:8;18375:31;;;;;;;;;;;;;;;:74;;;;18311:1392;;;18485:21;18472:34;;;;;;;;:9;:34;;;;;;;;;18467:1236;;;18561:40;18579:20;18561:12;:16;;:40;;;;:::i;:::-;18529:17;:29;18548:8;18529:29;;;;;;;;;;;;;;;:72;;;;18467:1236;;;18637:23;18624:36;;;;;;;;:9;:36;;;;;;;;;18619:1084;;;18717:49;18735:29;18761:1;18735:20;:24;;:29;;;;:::i;:::-;18717:12;:16;;:49;;;;:::i;:::-;18683:19;:31;18704:8;18683:31;;;;;;;;;;;;;;;:83;;;;18619:1084;;;18802:27;18789:40;;;;;;;;:9;:40;;;;;;;;;18784:919;;;18890:40;18908:20;18890:12;:16;;:40;;;;:::i;:::-;18852:23;:35;18877:8;18852:35;;;;;;;;;;;;;;;:78;;;;18784:919;;;18966:23;18953:36;;;;;;;;:9;:36;;;;;;;;;18948:755;;;19046:40;19064:20;19046:12;:16;;:40;;;;:::i;:::-;19012:19;:31;19033:8;19012:31;;;;;;;;;;;;;;;:74;;;;18948:755;;;19122:25;19109:38;;;;;;;;:9;:38;;;;;;;;;19104:599;;;19206:49;19224:29;19250:1;19224:20;:24;;:29;;;;:::i;:::-;19206:12;:16;;:49;;;;:::i;:::-;19170:21;:33;19193:8;19170:33;;;;;;;;;;;;;;;:85;;;;19104:599;;;19291:15;19278:28;;;;;;;;:9;:28;;;;;;;;;19273:430;;;19355:40;19373:20;19355:12;:16;;:40;;;;:::i;:::-;19329:11;:23;19342:8;19329:23;;;;;;;;;;;;;;;:66;;;;19273:430;;;19431:22;19418:35;;;;;;;;:9;:35;;;;;;;;;19413:290;;;19509:40;19527:20;19509:12;:16;;:40;;;;:::i;:::-;19476:18;:30;19496:8;19476:30;;;;;;;;;;;;;;;:73;;;;19413:290;;;19585:13;19572:26:::0;::::1;;;;;;;:9;:26;;;;;;;;;19567:136;;;19633:40;19651:20;19633:12;:16;;:40;;;;:::i;:::-;19621:9;:52;;;;19567:136;;;19698:5;19691:12;;;;19567:136;19413:290;19273:430;19104:599;18948:755;18784:919;18619:1084;18467:1236;18311:1392;18151:1552;19735:9;19721:35;;;;;;;;;19746:8;19721:35;;;;;;;;;;;;;;;;;;;;19774:4;19767:11;;4126:1;18001:1785:::0;;;;:::o;9288:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;9774:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;14553:376::-;14624:8;:22;14634:10;14624:22;;;;;;;;;;;;;;;;;;;;;;;;;14615:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14688:3;14677:25;;;14704:10;14716:7;14677:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14768:42;14801:7;14768:13;:27;14783:10;14768:27;;;;;;;;;;;;;;;;:31;;:42;;;;:::i;:::-;14738:13;:27;14753:10;14738:27;;;;;;;;;;;;;;;:72;;;;14833:24;14848:7;14833:9;;:13;;:24;;;;:::i;:::-;14821:9;:36;;;;14898:3;14875:46;;14886:10;14875:46;;;14903:7;14912;14875:46;;;;;;;;;;;;;;;;;;;;;;;;14553:376;:::o;10202:19::-;;;;;;;;;;;;;:::o;10111:52::-;;;;;;;;;;;;;;;;;:::o;19996:4835::-;20106:4;4067:10;4057:20;;:6;;;;;;;;;;:20;;;4048:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20153:1:::1;20133:22;;:8;:22;;;;20124:33;;;::::0;::::1;;20168:11;20208:25:::0;20195:38:::1;;;;;;;;:9;:38;;;;;;;;;20190:4547;;;20261:67;20275:21;20298:18;20318:8;20261:12;:67::i;:::-;20256:293;;;20386:1;20350:21;:33;20373:8;20350:33;;;;;;;;;;;;;;;:37;;;;20411:43;20425:17;20444:8;20411:12;:43::i;:::-;20406:128;;20480:17;20504:8;20480:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20406:128;20256:293;20573:18;:30;20593:8;20573:30;;;;;;;;;;;;;;;;;;;;;;;;;20572:31;20563:40;;20651:6;20618:18;:30;20638:8;20618:30;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20190:4547;;;20707:23;20694:36;;;;;;;;:9;:36;;;;;;;;;20689:4048;;;20758:63;20772:19;20793:16;20811:8;20758:12;:63::i;:::-;20753:283;;;20877:1;20843:19;:31;20864:8;20843:31;;;;;;;;;;;;;;;:35;;;;20902:41;20916:15;20933:8;20902:12;:41::i;:::-;20897:124;;20969:15;20991:8;20969:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20897:124;20753:283;21060:16;:28;21078:8;21060:28;;;;;;;;;;;;;;;;;;;;;;;;;21059:29;21050:38;;21134:6;21103:16;:28;21121:8;21103:28;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20689:4048;;;21178:21;21165:34;;;;;;;;:9;:34;;;;;;;;;21160:3577;;;21227:59;21241:17;21260:14;21276:8;21227:12;:59::i;:::-;21222:273;;;21340:1;21308:17;:29;21327:8;21308:29;;;;;;;;;;;;;;;:33;;;;21365:39;21379:13;21394:8;21365:12;:39::i;:::-;21360:120;;21430:13;21450:8;21430:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21360:120;21222:273;21519:14;:26;21535:8;21519:26;;;;;;;;;;;;;;;;;;;;;;;;;21518:27;21509:36;;21589:6;21560:14;:26;21576:8;21560:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;21160:3577;;;21633:23;21620:36;;;;;;;;:9;:36;;;;;;;;;21615:3122;;;21684:63;21698:19;21719:16;21737:8;21684:12;:63::i;:::-;21679:334;;;21769:15;21791:8;21769:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21854:1;21820:19;:31;21841:8;21820:31;;;;;;;;;;;;;;;:35;;;;21879:41;21893:15;21910:8;21879:12;:41::i;:::-;21874:124;;21946:15;21968:8;21946:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21874:124;21679:334;22037:16;:28;22055:8;22037:28;;;;;;;;;;;;;;;;;;;;;;;;;22036:29;22027:38;;22111:6;22080:16;:28;22098:8;22080:28;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;21615:3122;;;22155:27;22142:40;;;;;;;;:9;:40;;;;;;;;;22137:2600;;;22210:71;22224:23;22249:20;22271:8;22210:12;:71::i;:::-;22205:358;;;22303:19;22329:8;22303:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22396:1;22358:23;:35;22383:8;22358:35;;;;;;;;;;;;;;;:39;;;;22421:45;22435:19;22456:8;22421:12;:45::i;:::-;22416:132;;22492:19;22518:8;22492:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22416:132;22205:358;22587:20;:32;22609:8;22587:32;;;;;;;;;;;;;;;;;;;;;;;;;22586:33;22577:42;;22669:6;22634:20;:32;22656:8;22634:32;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;22137:2600;;;22713:23;22700:36;;;;;;;;:9;:36;;;;;;;;;22695:2042;;;22764:63;22778:19;22799:16;22817:8;22764:12;:63::i;:::-;22759:283;;;22883:1;22849:19;:31;22870:8;22849:31;;;;;;;;;;;;;;;:35;;;;22908:41;22922:15;22939:8;22908:12;:41::i;:::-;22903:124;;22975:15;22997:8;22975:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22903:124;22759:283;23066:16;:28;23084:8;23066:28;;;;;;;;;;;;;;;;;;;;;;;;;23065:29;23056:38;;23140:6;23109:16;:28;23127:8;23109:28;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;23192:11;23161:16;:28;23179:8;23161:28;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;22695:2042;;;23241:25;23228:38;;;;;;;;:9;:38;;;;;;;;;23223:1514;;;23294:67;23308:21;23331:18;23351:8;23294:12;:67::i;:::-;23289:293;;;23419:1;23383:21;:33;23406:8;23383:33;;;;;;;;;;;;;;;:37;;;;23444:43;23458:17;23477:8;23444:12;:43::i;:::-;23439:128;;23513:17;23537:8;23513:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23439:128;23289:293;23606:18;:30;23626:8;23606:30;;;;;;;;;;;;;;;;;;;;;;;;;23605:31;23596:40;;23684:6;23651:18;:30;23671:8;23651:30;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23223:1514;;;23728:15;23715:28;;;;;;;;:9;:28;;;;;;;;;23710:1027;;;23771:47;23785:11;23798:8;23808;23771:12;:47::i;:::-;23766:243;;;23866:1;23840:11;:23;23853:8;23840:23;;;;;;;;;;;;;;;:27;;;;23891:33;23905:7;23914:8;23891:12;:33::i;:::-;23886:108;;23950:7;23964:8;23950:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23886:108;23766:243;24033:8;:20;24043:8;24033:20;;;;;;;;;;;;;;;;;;;;;;;;;24032:21;24023:30;;24091:6;24068:8;:20;24078:8;24068:20;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;23710:1027;;;24135:22;24122:35;;;;;;;;:9;:35;;;;;;;;;24117:620;;;24185:61;24199:18;24219:15;24236:8;24185:12;:61::i;:::-;24180:278;;;24301:1;24268:18;:30;24288:8;24268:30;;;;;;;;;;;;;;;:34;;;;24326:40;24340:14;24356:8;24326:12;:40::i;:::-;24321:122;;24392:14;24413:8;24392:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24321:122;24180:278;24482:15;:27;24499:8;24482:27;;;;;;;;;;;;;;;;;;;;;;;;;24481:28;24472:37;;24554:6;24524:15;:27;24541:8;24524:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;24117:620;;;24598:13;24585:26:::0;::::1;;;;;;;:9;:26;;;;;;;;;24580:157;;;24646:1;24634:9;:13;;;;24669:8;24662:4;;:15;;;;;;;;;;;;;;;;;;24701:4;24692:13;;24580:157;;;24732:5;24725:12;;;;;24580:157;24117:620;23710:1027;23223:1514;22695:2042;22137:2600;21615:3122;21160:3577;20689:4048;20190:4547;24772:9;24755:46;;;;;;;;;24783:8;24793:6;24755:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;24819:4;24812:11;;;4126:1;19996:4835:::0;;;;;:::o;10360:21::-;;;;:::o;8608:32::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8994:57::-;;;;;;;;;;;;;;;;;:::o;288:136::-;346:7;373:43;377:1;380;373:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;366:50;;288:136;;;;:::o;5561:177::-;5644:86;5664:5;5694:23;;;5719:2;5723:5;5671:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5644:19;:86::i;:::-;5561:177;;;:::o;99:181::-;157:7;177:9;193:1;189;:5;177:17;;218:1;213;:6;;205:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;271:1;264:8;;;99:181;;;;:::o;632:250::-;690:7;719:1;714;:6;710:47;;;744:1;737:8;;;;710:47;769:9;785:1;781;:5;769:17;;814:1;809;805;:5;;;;;;:10;797:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;873:1;866:8;;;632:250;;;;;:::o;890:132::-;948:7;975:39;979:1;982;975:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;968:46;;890:132;;;;:::o;5746:205::-;5847:96;5867:5;5897:27;;;5926:4;5932:2;5936:5;5874:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5847:19;:96::i;:::-;5746:205;;;;:::o;25079:438::-;25268:4;25292:7;:19;25301:8;25292:19;;;;;;;;;;;;;;;;;;;;;;;;;25286:210;;25360:1;25338:6;:18;25346:8;25338:18;;;;;;;;;;;;;;;;:23;;25329:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25423:12;25401:6;:18;25409:8;25401:18;;;;;;;;;;;;;;;;:34;;25392:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25480:4;25473:11;;;;25286:210;25504:5;25497:12;;25079:438;;;;;;:::o;25686:277::-;25775:4;25798:6;25807:1;25798:10;;25793:140;25814:5;:12;;;;25810:1;:16;25793:140;;;25867:6;25853:20;;:5;25860:1;25853:10;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;25849:73;;;25902:4;25895:11;;;;;25849:73;25828:3;;;;;;;25793:140;;;;25950:5;25943:12;;25686:277;;;;;:::o;432:192::-;518:7;551:1;546;:6;;554:12;538:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;578:9;594:1;590;:5;578:17;;615:1;608:8;;;432:192;;;;;:::o;5959:418::-;6040:23;6066:69;6094:4;6066:69;;;;;;;;;;;;;;;;;6074:5;6066:27;;;;:69;;;;;:::i;:::-;6040:95;;6170:1;6150:10;:17;:21;6146:224;;;6292:10;6281:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6273:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6146:224;5959:418;;;:::o;1030:189::-;1116:7;1148:1;1144;:5;1151:12;1136:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:9;1191:1;1187;:5;;;;;;1175:17;;1210:1;1203:8;;;1030:189;;;;;:::o;1679:196::-;1782:12;1814:53;1837:6;1845:4;1851:1;1854:12;1814:22;:53::i;:::-;1807:60;;1679:196;;;;;:::o;1883:817::-;2013:12;2046:18;2057:6;2046:10;:18::i;:::-;2038:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:12;2186:23;2213:6;:11;;2233:8;2244:4;2213:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:78;;;;2264:7;2260:433;;;2295:10;2288:17;;;;;;2260:433;2362:1;2342:10;:17;:21;2338:344;;;2510:10;2504:17;2571:15;2558:10;2554:2;2550:19;2543:44;2458:148;2653:12;2646:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1883:817;;;;;;;:::o;1249:422::-;1309:4;1517:12;1628:7;1616:20;1608:28;;1662:1;1655:4;:8;1648:15;;;1249:422;;;:::o
Swarm Source
ipfs://d7121ed90e38fbe795407dde28a87d2bc150dedba8ddb1d716b8c99e6216dcc0
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.