More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
14329060 | 870 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
DEGENSwapPair
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-06 */ pragma solidity >=0.5.0; interface IToken { function addPair(address pair, address token) external; function depositLPFee(uint amount, address token) external; } pragma solidity >=0.5.0; interface IDEGENSwapCallee { function degenSwapCall(address sender, uint amount0, uint amount1, bytes calldata data) external; } pragma solidity >=0.5.0; interface IDEGENSwapFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function pairExist(address pair) external view returns (bool); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function routerInitialize(address) external; function routerAddress() external view returns (address); } pragma solidity >=0.5.0; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } pragma solidity =0.5.16; // a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format)) // range: [0, 2**112 - 1] // resolution: 1 / 2**112 library UQ112x112 { uint224 constant Q112 = 2**112; // encode a uint112 as a UQ112x112 function encode(uint112 y) internal pure returns (uint224 z) { z = uint224(y) * Q112; // never overflows } // divide a UQ112x112 by a uint112, returning a UQ112x112 function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) { z = x / uint224(y); } } pragma solidity =0.5.16; // a library for performing various math operations library Math { function min(uint x, uint y) internal pure returns (uint z) { z = x < y ? x : y; } // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) function sqrt(uint y) internal pure returns (uint z) { if (y > 3) { z = y; uint x = y / 2 + 1; while (x < z) { z = x; x = (y / x + x) / 2; } } else if (y != 0) { z = 1; } } } pragma solidity =0.5.16; // a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math) library SafeMath { function add(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x, 'ds-math-add-overflow'); } function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, 'ds-math-sub-underflow'); } function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow'); } function div(uint x, uint y) internal pure returns (uint z) { require(y > 0, "ds-math-div-underflow"); z = x / y; } } pragma solidity >=0.5.0; interface IDEGENSwapERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; } pragma solidity =0.5.16; contract DEGENSwapERC20 is IDEGENSwapERC20 { using SafeMath for uint; string public constant name = 'DEGENSwap-LP'; string public constant symbol = 'DEGEN-LP'; uint8 public constant decimals = 18; uint public totalSupply; mapping(address => uint) public balanceOf; mapping(address => mapping(address => uint)) public allowance; bytes32 public DOMAIN_SEPARATOR; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; mapping(address => uint) public nonces; event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); constructor() public { uint chainId; assembly { chainId := chainid } DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), keccak256(bytes(name)), keccak256(bytes('1')), chainId, address(this) ) ); } function _mint(address to, uint value) internal { totalSupply = totalSupply.add(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(address(0), to, value); } function _burn(address from, uint value) internal { balanceOf[from] = balanceOf[from].sub(value); totalSupply = totalSupply.sub(value); emit Transfer(from, address(0), value); } function _approve(address owner, address spender, uint value) private { allowance[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer(address from, address to, uint value) private { balanceOf[from] = balanceOf[from].sub(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(from, to, value); } function approve(address spender, uint value) external returns (bool) { _approve(msg.sender, spender, value); return true; } function transfer(address to, uint value) external returns (bool) { _transfer(msg.sender, to, value); return true; } function transferFrom(address from, address to, uint value) external returns (bool) { if (allowance[from][msg.sender] != uint(-1)) { allowance[from][msg.sender] = allowance[from][msg.sender].sub(value); } _transfer(from, to, value); return true; } function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external { require(deadline >= block.timestamp, 'DEGENSwap: EXPIRED'); bytes32 digest = keccak256( abi.encodePacked( '\x19\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require(recoveredAddress != address(0) && recoveredAddress == owner, 'DEGENSwap: INVALID_SIGNATURE'); _approve(owner, spender, value); } } pragma solidity >=0.5.16; interface IDEGENSwapRouter { function pairFeeAddress(address pair) external view returns (address); function adminFee() external view returns (uint256); function feeAddressGet() external view returns (address); } pragma solidity >=0.5.0; interface IDEGENSwapPair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function baseToken() external view returns (address); function getTotalFee() external view returns (uint); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function updateTotalFee(uint totalFee) external returns (bool); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast, address _baseToken); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, uint amount0Fee, uint amount1Fee, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; function setBaseToken(address _baseToken) external; } pragma solidity =0.5.16; contract DEGENSwapPair is IDEGENSwapPair, DEGENSwapERC20 { using SafeMath for uint; using UQ112x112 for uint224; uint public constant MINIMUM_LIQUIDITY = 10**3; bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)'))); IDEGENSwapRouter public routerAddress; address public factory; address public token0; address public token1; address public baseToken; uint public totalFee = 0; uint112 private reserve0; // uses single storage slot, accessible via getReserves uint112 private reserve1; // uses single storage slot, accessible via getReserves uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves uint public price0CumulativeLast; uint public price1CumulativeLast; uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event uint private unlocked = 1; modifier lock() { require(msg.sender == address(routerAddress), "only router accessible"); require(unlocked == 1, 'DEGENSwap: LOCKED'); unlocked = 0; _; unlocked = 1; } function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast, address _baseToken) { _reserve0 = reserve0; _reserve1 = reserve1; _blockTimestampLast = blockTimestampLast; _baseToken = baseToken; } function _safeTransfer(address token, address to, uint value, bool isSwapping) private { if(value == 0){ return; } if (routerAddress.pairFeeAddress(address(this)) == token && isSwapping){ uint256 adminFee = routerAddress.adminFee(); if(adminFee != 0){ uint256 getOutFee = value.mul(adminFee) / (10000); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, routerAddress.feeAddressGet(), getOutFee)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'DEGENSwap: TRANSFER_FAILED'); value = value.sub(getOutFee); } (bool success1, bytes memory data1) = token.call(abi.encodeWithSelector(SELECTOR, to, value)); require(success1 && (data1.length == 0 || abi.decode(data1, (bool))), 'DEGENSwap: TRANSFER_FAILED'); }else { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'DEGENSwap: TRANSFER_FAILED'); } } event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); constructor() public { factory = msg.sender; } // called once by the factory at time of deployment function initialize(address _token0, address _token1) external { require(msg.sender == factory, 'DEGENSwap: FORBIDDEN'); // sufficient check token0 = _token0; token1 = _token1; routerAddress = IDEGENSwapRouter(IDEGENSwapFactory(factory).routerAddress()); } // update reserves and, on the first call per block, price accumulators function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private { require(balance0 <= uint112(-1) && balance1 <= uint112(-1), 'DEGENSwap: OVERFLOW'); uint32 blockTimestamp = uint32(block.timestamp % 2**32); uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) { // * never overflows, and + overflow is desired price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed; price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed; } reserve0 = uint112(balance0); reserve1 = uint112(balance1); blockTimestampLast = blockTimestamp; emit Sync(reserve0, reserve1); } // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k) function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) { address feeTo = IDEGENSwapFactory(factory).feeTo(); feeOn = feeTo != address(0); uint _kLast = kLast; // gas savings if (feeOn) { if (_kLast != 0) { uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1)); uint rootKLast = Math.sqrt(_kLast); if (rootK > rootKLast) { uint numerator = totalSupply.mul(rootK.sub(rootKLast)); uint denominator = rootK.mul(5).add(rootKLast); uint liquidity = numerator / denominator; if (liquidity > 0) _mint(feeTo, liquidity); } } } else if (_kLast != 0) { kLast = 0; } } // this low-level function should be called from a contract which performs important safety checks function mint(address to) external lock returns (uint liquidity) { (uint112 _reserve0, uint112 _reserve1,,) = getReserves(); // gas savings uint balance0 = IERC20(token0).balanceOf(address(this)); uint balance1 = IERC20(token1).balanceOf(address(this)); uint amount0 = balance0.sub(_reserve0); uint amount1 = balance1.sub(_reserve1); bool feeOn = _mintFee(_reserve0, _reserve1); uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee if (_totalSupply == 0) { liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY); _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens } else { liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1); } require(liquidity > 0, 'DEGENSwap: INSUFFICIENT_LIQUIDITY_MINTED'); _mint(to, liquidity); _update(balance0, balance1, _reserve0, _reserve1); if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date emit Mint(msg.sender, amount0, amount1); } // this low-level function should be called from a contract which performs important safety checks function burn(address to) external lock returns (uint amount0, uint amount1) { (uint112 _reserve0, uint112 _reserve1,,) = getReserves(); // gas savings address _token0 = token0; // gas savings address _token1 = token1; // gas savings uint balance0 = IERC20(_token0).balanceOf(address(this)); uint balance1 = IERC20(_token1).balanceOf(address(this)); uint liquidity = balanceOf[address(this)]; bool feeOn = _mintFee(_reserve0, _reserve1); uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution require(amount0 > 0 && amount1 > 0, 'DEGENSwap: INSUFFICIENT_LIQUIDITY_BURNED'); _burn(address(this), liquidity); _safeTransfer(_token0, to, amount0, false); _safeTransfer(_token1, to, amount1, false); balance0 = IERC20(_token0).balanceOf(address(this)); balance1 = IERC20(_token1).balanceOf(address(this)); _update(balance0, balance1, _reserve0, _reserve1); if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date emit Burn(msg.sender, amount0, amount1, to); } // this low-level function should be called from a contract which performs important safety checks function swap(uint amount0Out, uint amount1Out, uint amount0Fee, uint amount1Fee, address to, bytes calldata data) external lock { require(amount0Out > 0 || amount1Out > 0, 'DEGENSwap: INSUFFICIENT_OUTPUT_AMOUNT'); (uint112 _reserve0, uint112 _reserve1,,) = getReserves(); // gas savings require(amount0Out < _reserve0 && amount1Out < _reserve1, 'DEGENSwap: INSUFFICIENT_LIQUIDITY'); if(baseToken != address(0)) { require(amount0Fee > 0 || amount1Fee > 0, "DEGENSwap: INSUFFICIENT_FEE"); } uint balance0; uint balance1; { // scope for _token{0,1}, avoids stack too deep errors address _token0 = token0; address _token1 = token1; require(to != _token0 && to != _token1, 'DEGENSwap: INVALID_TO'); if (amount0Out > 0) { _safeTransfer(_token0, to, amount0Out, true); } if (amount1Out > 0) { _safeTransfer(_token1, to, amount1Out, true); } if(amount0Fee > 0 && baseToken == token0) { IERC20(_token0).approve(_token1, amount0Fee); IToken(_token1).depositLPFee(amount0Fee, _token0); } if(amount1Fee > 0 && baseToken == token1) { IERC20(_token1).approve(_token0, amount1Fee); IToken(_token0).depositLPFee(amount1Fee, _token1); } if (data.length > 0) IDEGENSwapCallee(to).degenSwapCall(msg.sender, amount0Out, amount1Out, data); balance0 = IERC20(_token0).balanceOf(address(this)); balance1 = IERC20(_token1).balanceOf(address(this)); } uint amount0In = balance0 > _reserve0 - amount0Out - amount0Fee ? balance0 - (_reserve0 - amount0Out) : 0; uint amount1In = balance1 > _reserve1 - amount1Out - amount1Fee ? balance1 - (_reserve1 - amount1Out) : 0; require(amount0In > 0 || amount1In > 0, 'DEGENSwap: INSUFFICIENT_INPUT_AMOUNT'); _update(balance0, balance1, _reserve0, _reserve1); { uint _amount0Out = amount0Out; uint _amount1Out = amount1Out; address _to = to; emit Swap(msg.sender, amount0In, amount1In, _amount0Out, _amount1Out, _to); } } // force balances to match reserves function skim(address to) external lock { address _token0 = token0; // gas savings address _token1 = token1; // gas savings _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0), false); _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1), false); } // force reserves to match balances function sync() external lock { _update(IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1); } // This function can ONLY be called by the token contract // setting base token to WETH enables the fees // setting base token to 0x0000000000000000000000000000000000000000 disables the fees // Token contract needs to implement a function to set the base token in its Degen-LP pair function setBaseToken(address _baseToken) external { require( msg.sender == token0 || msg.sender == token1, "DEGENSwap: NOT_ALLOWED"); require(_baseToken == token0 || _baseToken == token1, "DEGENSwap: WRONG_ADDRESS"); baseToken = _baseToken; } function getTotalFee() public view returns (uint) { return totalFee; } // This function can ONLY be called by the token contract // Token contract needs to implement a function to update fees in its Degen-LP pair function updateTotalFee(uint _totalFee) external returns (bool) { if (baseToken == address(0)) return false; address feeTaker = baseToken == token0 ? token1 : token0; require(feeTaker == msg.sender, "DEGENSwap: NOT_ALLOWED"); totalFee = _totalFee; return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseToken","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"},{"internalType":"address","name":"_baseToken","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"routerAddress","outputs":[{"internalType":"contract IDEGENSwapRouter","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_baseToken","type":"address"}],"name":"setBaseToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"uint256","name":"amount0Fee","type":"uint256"},{"internalType":"uint256","name":"amount1Fee","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_totalFee","type":"uint256"}],"name":"updateTotalFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600a556001600f5534801561001a57600080fd5b506040514690806052612f9b8239604080519182900360520182208282018252600c83526b0444547454e537761702d4c560a41b6020938401528151808301835260018152603160f81b908401528151808401919091527fcf93fa5af6e5efdadfd0516fa30d8e6d02bd25b35fff25e23feaa1e0ce05062a818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600680546001600160a01b03191633179055612e8f8061010c6000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063bc25cf77116100ad578063d32b96041161007c578063d32b960414610558578063d505accf14610575578063dd62ed3e146105c6578063f8b134c6146105f4578063fff6cae91461068c576101fb565b8063bc25cf771461051a578063c45a015514610540578063c55dae6314610548578063d21220a714610550576101fb565b806389afcb44116100e957806389afcb441461049f57806395d89b41146104de578063a9059cbb146104e6578063ba9a7a5614610512576101fb565b806370a08231146104435780637464fc3d146104695780637ae316d0146104715780637ecebe0014610479576101fb565b806330adf81f11610192578063485cc95511610161578063485cc955146103df5780635909c0d51461040d5780635a3d5493146104155780636a6278421461041d576101fb565b806330adf81f146103a9578063313ce567146103b15780633268cc56146103cf5780633644e515146103d7576101fb565b806316bb6c13116101ce57806316bb6c131461032957806318160ddd146103515780631df4ccfc1461036b57806323b872dd14610373576101fb565b806306fdde03146102005780630902f1ac1461027d578063095ea7b3146102c55780630dfe168114610305575b600080fd5b610208610694565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024257818101518382015260200161022a565b50505050905090810190601f16801561026f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102856106bc565b604080516001600160701b03958616815293909416602084015263ffffffff909116828401526001600160a01b0316606082015290519081900360800190f35b6102f1600480360360408110156102db57600080fd5b506001600160a01b0381351690602001356106f3565b604080519115158252519081900360200190f35b61030d61070a565b604080516001600160a01b039092168252519081900360200190f35b61034f6004803603602081101561033f57600080fd5b50356001600160a01b0316610719565b005b610359610822565b60408051918252519081900360200190f35b610359610828565b6102f16004803603606081101561038957600080fd5b506001600160a01b0381358116916020810135909116906040013561082e565b6103596108c8565b6103b96108ec565b6040805160ff9092168252519081900360200190f35b61030d6108f1565b610359610900565b61034f600480360360408110156103f557600080fd5b506001600160a01b0381358116916020013516610906565b610359610a16565b610359610a1c565b6103596004803603602081101561043357600080fd5b50356001600160a01b0316610a22565b6103596004803603602081101561045957600080fd5b50356001600160a01b0316610d88565b610359610d9a565b610359610da0565b6103596004803603602081101561048f57600080fd5b50356001600160a01b0316610da6565b6104c5600480360360208110156104b557600080fd5b50356001600160a01b0316610db8565b6040805192835260208301919091528051918290030190f35b6102086111bd565b6102f1600480360360408110156104fc57600080fd5b506001600160a01b0381351690602001356111e1565b6103596111ee565b61034f6004803603602081101561053057600080fd5b50356001600160a01b03166111f4565b61030d6113b9565b61030d6113c8565b61030d6113d7565b6102f16004803603602081101561056e57600080fd5b50356113e6565b61034f600480360360e081101561058b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356114a1565b610359600480360360408110156105dc57600080fd5b506001600160a01b03813581169160200135166116a3565b61034f600480360360c081101561060a57600080fd5b8135916020810135916040820135916060810135916001600160a01b03608083013516919081019060c0810160a082013564010000000081111561064d57600080fd5b82018360208201111561065f57600080fd5b8035906020019184600183028401116401000000008311171561068157600080fd5b5090925090506116c0565b61034f611e41565b6040518060400160405280600c81526020016b0444547454e537761702d4c560a41b81525081565b600b546009546001600160701b0380831693600160701b840490911692600160e01b900463ffffffff16916001600160a01b031690565b6000610700338484611ffb565b5060015b92915050565b6007546001600160a01b031681565b6007546001600160a01b031633148061073c57506008546001600160a01b031633145b610786576040805162461bcd60e51b8152602060048201526016602482015275111151d15394ddd85c0e881393d517d0531313d5d15160521b604482015290519081900360640190fd5b6007546001600160a01b03828116911614806107af57506008546001600160a01b038281169116145b610800576040805162461bcd60e51b815260206004820152601860248201527f444547454e537761703a2057524f4e475f414444524553530000000000000000604482015290519081900360640190fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60005481565b600a5481565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146108b3576001600160a01b038416600090815260026020908152604080832033845290915290205461088e908363ffffffff61205d16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6108be8484846120ad565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b6005546001600160a01b031681565b60035481565b6006546001600160a01b0316331461095c576040805162461bcd60e51b81526020600482015260146024820152732222a3a2a729bbb0b81d102327a92124a22222a760611b604482015290519081900360640190fd5b600780546001600160a01b038085166001600160a01b03199283161790925560088054848416921691909117905560065460408051631934662b60e11b815290519190921691633268cc56916004808301926020929190829003018186803b1580156109c757600080fd5b505afa1580156109db573d6000803e3d6000fd5b505050506040513d60208110156109f157600080fd5b5051600580546001600160a01b0319166001600160a01b039092169190911790555050565b600c5481565b600d5481565b6005546000906001600160a01b03163314610a7d576040805162461bcd60e51b81526020600482015260166024820152756f6e6c7920726f757465722061636365737369626c6560501b604482015290519081900360640190fd5b600f54600114610ac8576040805162461bcd60e51b8152602060048201526011602482015270111151d15394ddd85c0e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f81905580610ad86106bc565b5050600754604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610b2d57600080fd5b505afa158015610b41573d6000803e3d6000fd5b505050506040513d6020811015610b5757600080fd5b5051600854604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610baa57600080fd5b505afa158015610bbe573d6000803e3d6000fd5b505050506040513d6020811015610bd457600080fd5b505190506000610bf3836001600160701b03871663ffffffff61205d16565b90506000610c10836001600160701b03871663ffffffff61205d16565b90506000610c1e8787612167565b60005490915080610c6757610c536103e8610c47610c42878763ffffffff6122c516565b612328565b9063ffffffff61205d16565b9850610c6260006103e8612379565b610cb6565b610cb36001600160701b038916610c84868463ffffffff6122c516565b81610c8b57fe5b046001600160701b038916610ca6868563ffffffff6122c516565b81610cad57fe5b0461240f565b98505b60008911610cf55760405162461bcd60e51b8152600401808060200182810382526028815260200180612da16028913960400191505060405180910390fd5b610cff8a8a612379565b610d0b86868a8a612427565b8115610d3b57600b54610d37906001600160701b0380821691600160701b90041663ffffffff6122c516565b600e555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600f5550949695505050505050565b60016020526000908152604090205481565b600e5481565b600a5490565b60046020526000908152604090205481565b60055460009081906001600160a01b03163314610e15576040805162461bcd60e51b81526020600482015260166024820152756f6e6c7920726f757465722061636365737369626c6560501b604482015290519081900360640190fd5b600f54600114610e60576040805162461bcd60e51b8152602060048201526011602482015270111151d15394ddd85c0e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f81905580610e706106bc565b5050600754600854604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b158015610ecd57600080fd5b505afa158015610ee1573d6000803e3d6000fd5b505050506040513d6020811015610ef757600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015610f4557600080fd5b505afa158015610f59573d6000803e3d6000fd5b505050506040513d6020811015610f6f57600080fd5b505130600090815260016020526040812054919250610f8e8888612167565b60005490915080610fa5848763ffffffff6122c516565b81610fac57fe5b049a5080610fc0848663ffffffff6122c516565b81610fc757fe5b04995060008b118015610fda575060008a115b6110155760405162461bcd60e51b8152600401808060200182810382526028815260200180612dc96028913960400191505060405180910390fd5b61101f30846125ec565b61102c878d8d600061268a565b611039868d8c600061268a565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561107f57600080fd5b505afa158015611093573d6000803e3d6000fd5b505050506040513d60208110156110a957600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156110f557600080fd5b505afa158015611109573d6000803e3d6000fd5b505050506040513d602081101561111f57600080fd5b5051935061112f85858b8b612427565b811561115f57600b5461115b906001600160701b0380821691600160701b90041663ffffffff6122c516565b600e555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600f81905550915091565b604051806040016040528060088152602001670444547454e2d4c560c41b81525081565b60006107003384846120ad565b6103e881565b6005546001600160a01b0316331461124c576040805162461bcd60e51b81526020600482015260166024820152756f6e6c7920726f757465722061636365737369626c6560501b604482015290519081900360640190fd5b600f54600114611297576040805162461bcd60e51b8152602060048201526011602482015270111151d15394ddd85c0e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f55600754600854600b54604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926113489285928792611341926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561130957600080fd5b505afa15801561131d573d6000803e3d6000fd5b505050506040513d602081101561133357600080fd5b50519063ffffffff61205d16565b600061268a565b600b54604080516370a0823160e01b815230600482015290516113af928492879261134192600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561130957600080fd5b50506001600f5550565b6006546001600160a01b031681565b6009546001600160a01b031681565b6008546001600160a01b031681565b6009546000906001600160a01b03166114015750600061149c565b6007546009546000916001600160a01b0391821691161461142d576007546001600160a01b031661143a565b6008546001600160a01b03165b90506001600160a01b0381163314611492576040805162461bcd60e51b8152602060048201526016602482015275111151d15394ddd85c0e881393d517d0531313d5d15160521b604482015290519081900360640190fd5b5050600a81905560015b919050565b428410156114eb576040805162461bcd60e51b8152602060048201526012602482015271111151d15394ddd85c0e881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611606573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061163c5750886001600160a01b0316816001600160a01b0316145b61168d576040805162461bcd60e51b815260206004820152601c60248201527f444547454e537761703a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611698898989611ffb565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6005546001600160a01b03163314611718576040805162461bcd60e51b81526020600482015260166024820152756f6e6c7920726f757465722061636365737369626c6560501b604482015290519081900360640190fd5b600f54600114611763576040805162461bcd60e51b8152602060048201526011602482015270111151d15394ddd85c0e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f55861515806117765750600086115b6117b15760405162461bcd60e51b8152600401808060200182810382526025815260200180612e126025913960400191505060405180910390fd5b6000806117bc6106bc565b505091509150816001600160701b0316891080156117e25750806001600160701b031688105b61181d5760405162461bcd60e51b8152600401808060200182810382526021815260200180612df16021913960400191505060405180910390fd5b6009546001600160a01b03161561188e57600087118061183d5750600086115b61188e576040805162461bcd60e51b815260206004820152601b60248201527f444547454e537761703a20494e53554646494349454e545f4645450000000000604482015290519081900360640190fd5b60075460085460009182916001600160a01b039182169190811690891682148015906118cc5750806001600160a01b0316896001600160a01b031614155b611915576040805162461bcd60e51b8152602060048201526015602482015274444547454e537761703a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8c1561192857611928828a8f600161268a565b8b1561193b5761193b818a8e600161268a565b60008b11801561195b57506007546009546001600160a01b039081169116145b15611a5757816001600160a01b031663095ea7b3828d6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156119c057600080fd5b505af11580156119d4573d6000803e3d6000fd5b505050506040513d60208110156119ea57600080fd5b505060408051638283bbf360e01b8152600481018d90526001600160a01b038481166024830152915191831691638283bbf39160448082019260009290919082900301818387803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b505050505b60008a118015611a7757506008546009546001600160a01b039081169116145b15611b7357806001600160a01b031663095ea7b3838c6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611adc57600080fd5b505af1158015611af0573d6000803e3d6000fd5b505050506040513d6020811015611b0657600080fd5b505060408051638283bbf360e01b8152600481018c90526001600160a01b038381166024830152915191841691638283bbf39160448082019260009290919082900301818387803b158015611b5a57600080fd5b505af1158015611b6e573d6000803e3d6000fd5b505050505b8615611c2e57886001600160a01b031663fb3db7e6338f8f8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015611c1557600080fd5b505af1158015611c29573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015611c7457600080fd5b505afa158015611c88573d6000803e3d6000fd5b505050506040513d6020811015611c9e57600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b158015611cea57600080fd5b505afa158015611cfe573d6000803e3d6000fd5b505050506040513d6020811015611d1457600080fd5b5051925060009150506001600160701b0385168c90038a90038311611d3a576000611d49565b8b856001600160701b03160383035b90506000898c866001600160701b031603038311611d68576000611d77565b8b856001600160701b03160383035b90506000821180611d885750600081115b611dc35760405162461bcd60e51b8152600401808060200182810382526024815260200180612e376024913960400191505060405180910390fd5b611dcf84848888612427565b60408051838152602081018390528082018f9052606081018e905290518e918e918c916001600160a01b0383169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822919081900360800190a350506001600f555050505050505050505050505050565b6005546001600160a01b03163314611e99576040805162461bcd60e51b81526020600482015260166024820152756f6e6c7920726f757465722061636365737369626c6560501b604482015290519081900360640190fd5b600f54600114611ee4576040805162461bcd60e51b8152602060048201526011602482015270111151d15394ddd85c0e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f55600754604080516370a0823160e01b81523060048201529051611ff4926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611f3557600080fd5b505afa158015611f49573d6000803e3d6000fd5b505050506040513d6020811015611f5f57600080fd5b5051600854604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611fac57600080fd5b505afa158015611fc0573d6000803e3d6000fd5b505050506040513d6020811015611fd657600080fd5b5051600b546001600160701b0380821691600160701b900416612427565b6001600f55565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b80820382811115610704576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160a01b0383166000908152600160205260409020546120d6908263ffffffff61205d16565b6001600160a01b03808516600090815260016020526040808220939093559084168152205461210b908263ffffffff612d1a16565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600660009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156121b857600080fd5b505afa1580156121cc573d6000803e3d6000fd5b505050506040513d60208110156121e257600080fd5b5051600e546001600160a01b0382161580159450919250906122b15780156122ac576000612225610c426001600160701b0388811690881663ffffffff6122c516565b9050600061223283612328565b9050808211156122a9576000612260612251848463ffffffff61205d16565b6000549063ffffffff6122c516565b905060006122858361227986600563ffffffff6122c516565b9063ffffffff612d1a16565b9050600081838161229257fe5b04905080156122a5576122a58782612379565b5050505b50505b6122bd565b80156122bd576000600e555b505092915050565b60008115806122e0575050808202828282816122dd57fe5b04145b610704576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b6000600382111561236b575080600160028204015b818110156123655780915060028182858161235457fe5b04018161235d57fe5b04905061233d565b5061149c565b811561149c57506001919050565b60005461238c908263ffffffff612d1a16565b60009081556001600160a01b0383168152600160205260409020546123b7908263ffffffff612d1a16565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081831061241e5781612420565b825b9392505050565b6001600160701b03841180159061244557506001600160701b038311155b61248c576040805162461bcd60e51b8152602060048201526013602482015272444547454e537761703a204f564552464c4f5760681b604482015290519081900360640190fd5b600b5463ffffffff42811691600160e01b900481168203908116158015906124bc57506001600160701b03841615155b80156124d057506001600160701b03831615155b15612541578063ffffffff166124fe856124e986612d69565b6001600160e01b03169063ffffffff612d7b16565b600c80546001600160e01b03929092169290920201905563ffffffff8116612529846124e987612d69565b600d80546001600160e01b0392909216929092020190555b600b80546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b038216600090815260016020526040902054612615908263ffffffff61205d16565b6001600160a01b03831660009081526001602052604081209190915554612642908263ffffffff61205d16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b8161269457612d14565b6005546040805163dcacce6960e01b815230600482015290516001600160a01b0380881693169163dcacce69916024808301926020929190829003018186803b1580156126e057600080fd5b505afa1580156126f4573d6000803e3d6000fd5b505050506040513d602081101561270a57600080fd5b50516001600160a01b031614801561271f5750805b15612b85576005546040805163a0be06f960e01b815290516000926001600160a01b03169163a0be06f9916004808301926020929190829003018186803b15801561276957600080fd5b505afa15801561277d573d6000803e3d6000fd5b505050506040513d602081101561279357600080fd5b5051905080156129f15760006127106127b2858463ffffffff6122c516565b816127b957fe5b04905060006060876001600160a01b0316604051806040016040528060198152602001787472616e7366657228616464726573732c75696e743235362960381b81525080519060200120600560009054906101000a90046001600160a01b03166001600160a01b031663add10aa26040518163ffffffff1660e01b815260040160206040518083038186803b15801561285157600080fd5b505afa158015612865573d6000803e3d6000fd5b505050506040513d602081101561287b57600080fd5b5051604080516001600160a01b039092166024830152604480830188905281518084039091018152606490920181526020820180516001600160e01b03166001600160e01b0319909416939093178352518151919290918291908083835b602083106128f85780518252601f1990920191602091820191016128d9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461295a576040519150601f19603f3d011682016040523d82523d6000602084013e61295f565b606091505b509150915081801561298d57508051158061298d575080806020019051602081101561298a57600080fd5b50515b6129db576040805162461bcd60e51b815260206004820152601a602482015279111151d15394ddd85c0e881514905394d1915497d1905253115160321b604482015290519081900360640190fd5b6129eb868463ffffffff61205d16565b95505050505b60408051808201825260198152787472616e7366657228616464726573732c75696e743235362960381b60209182015281516001600160a01b0387811660248301526044808301889052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b178152925181516000946060948b169392918291908083835b60208310612a9a5780518252601f199092019160209182019101612a7b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150818015612b2f575080511580612b2f5750808060200190516020811015612b2c57600080fd5b50515b612b7d576040805162461bcd60e51b815260206004820152601a602482015279111151d15394ddd85c0e881514905394d1915497d1905253115160321b604482015290519081900360640190fd5b505050612d14565b60408051808201825260198152787472616e7366657228616464726573732c75696e743235362960381b60209182015281516001600160a01b0386811660248301526044808301879052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b178152925181516000946060948a169392918291908083835b60208310612c2e5780518252601f199092019160209182019101612c0f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612c90576040519150601f19603f3d011682016040523d82523d6000602084013e612c95565b606091505b5091509150818015612cc3575080511580612cc35750808060200190516020811015612cc057600080fd5b50515b612d11576040805162461bcd60e51b815260206004820152601a602482015279111151d15394ddd85c0e881514905394d1915497d1905253115160321b604482015290519081900360640190fd5b50505b50505050565b80820182811015610704576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b03841681612d9857fe5b04939250505056fe444547454e537761703a20494e53554646494349454e545f4c49515549444954595f4d494e544544444547454e537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544444547454e537761703a20494e53554646494349454e545f4c4951554944495459444547454e537761703a20494e53554646494349454e545f4f55545055545f414d4f554e54444547454e537761703a20494e53554646494349454e545f494e5055545f414d4f554e54a265627a7a7231582059b52d501dbfb1e7cbb01b6e2b0af1c67e52e4779633b79d5aaa2bbb389cb41a64736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c806370a082311161011a578063bc25cf77116100ad578063d32b96041161007c578063d32b960414610558578063d505accf14610575578063dd62ed3e146105c6578063f8b134c6146105f4578063fff6cae91461068c576101fb565b8063bc25cf771461051a578063c45a015514610540578063c55dae6314610548578063d21220a714610550576101fb565b806389afcb44116100e957806389afcb441461049f57806395d89b41146104de578063a9059cbb146104e6578063ba9a7a5614610512576101fb565b806370a08231146104435780637464fc3d146104695780637ae316d0146104715780637ecebe0014610479576101fb565b806330adf81f11610192578063485cc95511610161578063485cc955146103df5780635909c0d51461040d5780635a3d5493146104155780636a6278421461041d576101fb565b806330adf81f146103a9578063313ce567146103b15780633268cc56146103cf5780633644e515146103d7576101fb565b806316bb6c13116101ce57806316bb6c131461032957806318160ddd146103515780631df4ccfc1461036b57806323b872dd14610373576101fb565b806306fdde03146102005780630902f1ac1461027d578063095ea7b3146102c55780630dfe168114610305575b600080fd5b610208610694565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024257818101518382015260200161022a565b50505050905090810190601f16801561026f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102856106bc565b604080516001600160701b03958616815293909416602084015263ffffffff909116828401526001600160a01b0316606082015290519081900360800190f35b6102f1600480360360408110156102db57600080fd5b506001600160a01b0381351690602001356106f3565b604080519115158252519081900360200190f35b61030d61070a565b604080516001600160a01b039092168252519081900360200190f35b61034f6004803603602081101561033f57600080fd5b50356001600160a01b0316610719565b005b610359610822565b60408051918252519081900360200190f35b610359610828565b6102f16004803603606081101561038957600080fd5b506001600160a01b0381358116916020810135909116906040013561082e565b6103596108c8565b6103b96108ec565b6040805160ff9092168252519081900360200190f35b61030d6108f1565b610359610900565b61034f600480360360408110156103f557600080fd5b506001600160a01b0381358116916020013516610906565b610359610a16565b610359610a1c565b6103596004803603602081101561043357600080fd5b50356001600160a01b0316610a22565b6103596004803603602081101561045957600080fd5b50356001600160a01b0316610d88565b610359610d9a565b610359610da0565b6103596004803603602081101561048f57600080fd5b50356001600160a01b0316610da6565b6104c5600480360360208110156104b557600080fd5b50356001600160a01b0316610db8565b6040805192835260208301919091528051918290030190f35b6102086111bd565b6102f1600480360360408110156104fc57600080fd5b506001600160a01b0381351690602001356111e1565b6103596111ee565b61034f6004803603602081101561053057600080fd5b50356001600160a01b03166111f4565b61030d6113b9565b61030d6113c8565b61030d6113d7565b6102f16004803603602081101561056e57600080fd5b50356113e6565b61034f600480360360e081101561058b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356114a1565b610359600480360360408110156105dc57600080fd5b506001600160a01b03813581169160200135166116a3565b61034f600480360360c081101561060a57600080fd5b8135916020810135916040820135916060810135916001600160a01b03608083013516919081019060c0810160a082013564010000000081111561064d57600080fd5b82018360208201111561065f57600080fd5b8035906020019184600183028401116401000000008311171561068157600080fd5b5090925090506116c0565b61034f611e41565b6040518060400160405280600c81526020016b0444547454e537761702d4c560a41b81525081565b600b546009546001600160701b0380831693600160701b840490911692600160e01b900463ffffffff16916001600160a01b031690565b6000610700338484611ffb565b5060015b92915050565b6007546001600160a01b031681565b6007546001600160a01b031633148061073c57506008546001600160a01b031633145b610786576040805162461bcd60e51b8152602060048201526016602482015275111151d15394ddd85c0e881393d517d0531313d5d15160521b604482015290519081900360640190fd5b6007546001600160a01b03828116911614806107af57506008546001600160a01b038281169116145b610800576040805162461bcd60e51b815260206004820152601860248201527f444547454e537761703a2057524f4e475f414444524553530000000000000000604482015290519081900360640190fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60005481565b600a5481565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146108b3576001600160a01b038416600090815260026020908152604080832033845290915290205461088e908363ffffffff61205d16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6108be8484846120ad565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b6005546001600160a01b031681565b60035481565b6006546001600160a01b0316331461095c576040805162461bcd60e51b81526020600482015260146024820152732222a3a2a729bbb0b81d102327a92124a22222a760611b604482015290519081900360640190fd5b600780546001600160a01b038085166001600160a01b03199283161790925560088054848416921691909117905560065460408051631934662b60e11b815290519190921691633268cc56916004808301926020929190829003018186803b1580156109c757600080fd5b505afa1580156109db573d6000803e3d6000fd5b505050506040513d60208110156109f157600080fd5b5051600580546001600160a01b0319166001600160a01b039092169190911790555050565b600c5481565b600d5481565b6005546000906001600160a01b03163314610a7d576040805162461bcd60e51b81526020600482015260166024820152756f6e6c7920726f757465722061636365737369626c6560501b604482015290519081900360640190fd5b600f54600114610ac8576040805162461bcd60e51b8152602060048201526011602482015270111151d15394ddd85c0e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f81905580610ad86106bc565b5050600754604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610b2d57600080fd5b505afa158015610b41573d6000803e3d6000fd5b505050506040513d6020811015610b5757600080fd5b5051600854604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610baa57600080fd5b505afa158015610bbe573d6000803e3d6000fd5b505050506040513d6020811015610bd457600080fd5b505190506000610bf3836001600160701b03871663ffffffff61205d16565b90506000610c10836001600160701b03871663ffffffff61205d16565b90506000610c1e8787612167565b60005490915080610c6757610c536103e8610c47610c42878763ffffffff6122c516565b612328565b9063ffffffff61205d16565b9850610c6260006103e8612379565b610cb6565b610cb36001600160701b038916610c84868463ffffffff6122c516565b81610c8b57fe5b046001600160701b038916610ca6868563ffffffff6122c516565b81610cad57fe5b0461240f565b98505b60008911610cf55760405162461bcd60e51b8152600401808060200182810382526028815260200180612da16028913960400191505060405180910390fd5b610cff8a8a612379565b610d0b86868a8a612427565b8115610d3b57600b54610d37906001600160701b0380821691600160701b90041663ffffffff6122c516565b600e555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600f5550949695505050505050565b60016020526000908152604090205481565b600e5481565b600a5490565b60046020526000908152604090205481565b60055460009081906001600160a01b03163314610e15576040805162461bcd60e51b81526020600482015260166024820152756f6e6c7920726f757465722061636365737369626c6560501b604482015290519081900360640190fd5b600f54600114610e60576040805162461bcd60e51b8152602060048201526011602482015270111151d15394ddd85c0e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f81905580610e706106bc565b5050600754600854604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b158015610ecd57600080fd5b505afa158015610ee1573d6000803e3d6000fd5b505050506040513d6020811015610ef757600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015610f4557600080fd5b505afa158015610f59573d6000803e3d6000fd5b505050506040513d6020811015610f6f57600080fd5b505130600090815260016020526040812054919250610f8e8888612167565b60005490915080610fa5848763ffffffff6122c516565b81610fac57fe5b049a5080610fc0848663ffffffff6122c516565b81610fc757fe5b04995060008b118015610fda575060008a115b6110155760405162461bcd60e51b8152600401808060200182810382526028815260200180612dc96028913960400191505060405180910390fd5b61101f30846125ec565b61102c878d8d600061268a565b611039868d8c600061268a565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561107f57600080fd5b505afa158015611093573d6000803e3d6000fd5b505050506040513d60208110156110a957600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156110f557600080fd5b505afa158015611109573d6000803e3d6000fd5b505050506040513d602081101561111f57600080fd5b5051935061112f85858b8b612427565b811561115f57600b5461115b906001600160701b0380821691600160701b90041663ffffffff6122c516565b600e555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600f81905550915091565b604051806040016040528060088152602001670444547454e2d4c560c41b81525081565b60006107003384846120ad565b6103e881565b6005546001600160a01b0316331461124c576040805162461bcd60e51b81526020600482015260166024820152756f6e6c7920726f757465722061636365737369626c6560501b604482015290519081900360640190fd5b600f54600114611297576040805162461bcd60e51b8152602060048201526011602482015270111151d15394ddd85c0e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f55600754600854600b54604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926113489285928792611341926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561130957600080fd5b505afa15801561131d573d6000803e3d6000fd5b505050506040513d602081101561133357600080fd5b50519063ffffffff61205d16565b600061268a565b600b54604080516370a0823160e01b815230600482015290516113af928492879261134192600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561130957600080fd5b50506001600f5550565b6006546001600160a01b031681565b6009546001600160a01b031681565b6008546001600160a01b031681565b6009546000906001600160a01b03166114015750600061149c565b6007546009546000916001600160a01b0391821691161461142d576007546001600160a01b031661143a565b6008546001600160a01b03165b90506001600160a01b0381163314611492576040805162461bcd60e51b8152602060048201526016602482015275111151d15394ddd85c0e881393d517d0531313d5d15160521b604482015290519081900360640190fd5b5050600a81905560015b919050565b428410156114eb576040805162461bcd60e51b8152602060048201526012602482015271111151d15394ddd85c0e881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611606573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061163c5750886001600160a01b0316816001600160a01b0316145b61168d576040805162461bcd60e51b815260206004820152601c60248201527f444547454e537761703a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611698898989611ffb565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6005546001600160a01b03163314611718576040805162461bcd60e51b81526020600482015260166024820152756f6e6c7920726f757465722061636365737369626c6560501b604482015290519081900360640190fd5b600f54600114611763576040805162461bcd60e51b8152602060048201526011602482015270111151d15394ddd85c0e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f55861515806117765750600086115b6117b15760405162461bcd60e51b8152600401808060200182810382526025815260200180612e126025913960400191505060405180910390fd5b6000806117bc6106bc565b505091509150816001600160701b0316891080156117e25750806001600160701b031688105b61181d5760405162461bcd60e51b8152600401808060200182810382526021815260200180612df16021913960400191505060405180910390fd5b6009546001600160a01b03161561188e57600087118061183d5750600086115b61188e576040805162461bcd60e51b815260206004820152601b60248201527f444547454e537761703a20494e53554646494349454e545f4645450000000000604482015290519081900360640190fd5b60075460085460009182916001600160a01b039182169190811690891682148015906118cc5750806001600160a01b0316896001600160a01b031614155b611915576040805162461bcd60e51b8152602060048201526015602482015274444547454e537761703a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8c1561192857611928828a8f600161268a565b8b1561193b5761193b818a8e600161268a565b60008b11801561195b57506007546009546001600160a01b039081169116145b15611a5757816001600160a01b031663095ea7b3828d6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156119c057600080fd5b505af11580156119d4573d6000803e3d6000fd5b505050506040513d60208110156119ea57600080fd5b505060408051638283bbf360e01b8152600481018d90526001600160a01b038481166024830152915191831691638283bbf39160448082019260009290919082900301818387803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b505050505b60008a118015611a7757506008546009546001600160a01b039081169116145b15611b7357806001600160a01b031663095ea7b3838c6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611adc57600080fd5b505af1158015611af0573d6000803e3d6000fd5b505050506040513d6020811015611b0657600080fd5b505060408051638283bbf360e01b8152600481018c90526001600160a01b038381166024830152915191841691638283bbf39160448082019260009290919082900301818387803b158015611b5a57600080fd5b505af1158015611b6e573d6000803e3d6000fd5b505050505b8615611c2e57886001600160a01b031663fb3db7e6338f8f8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015611c1557600080fd5b505af1158015611c29573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015611c7457600080fd5b505afa158015611c88573d6000803e3d6000fd5b505050506040513d6020811015611c9e57600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b158015611cea57600080fd5b505afa158015611cfe573d6000803e3d6000fd5b505050506040513d6020811015611d1457600080fd5b5051925060009150506001600160701b0385168c90038a90038311611d3a576000611d49565b8b856001600160701b03160383035b90506000898c866001600160701b031603038311611d68576000611d77565b8b856001600160701b03160383035b90506000821180611d885750600081115b611dc35760405162461bcd60e51b8152600401808060200182810382526024815260200180612e376024913960400191505060405180910390fd5b611dcf84848888612427565b60408051838152602081018390528082018f9052606081018e905290518e918e918c916001600160a01b0383169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822919081900360800190a350506001600f555050505050505050505050505050565b6005546001600160a01b03163314611e99576040805162461bcd60e51b81526020600482015260166024820152756f6e6c7920726f757465722061636365737369626c6560501b604482015290519081900360640190fd5b600f54600114611ee4576040805162461bcd60e51b8152602060048201526011602482015270111151d15394ddd85c0e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f55600754604080516370a0823160e01b81523060048201529051611ff4926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611f3557600080fd5b505afa158015611f49573d6000803e3d6000fd5b505050506040513d6020811015611f5f57600080fd5b5051600854604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611fac57600080fd5b505afa158015611fc0573d6000803e3d6000fd5b505050506040513d6020811015611fd657600080fd5b5051600b546001600160701b0380821691600160701b900416612427565b6001600f55565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b80820382811115610704576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160a01b0383166000908152600160205260409020546120d6908263ffffffff61205d16565b6001600160a01b03808516600090815260016020526040808220939093559084168152205461210b908263ffffffff612d1a16565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600660009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156121b857600080fd5b505afa1580156121cc573d6000803e3d6000fd5b505050506040513d60208110156121e257600080fd5b5051600e546001600160a01b0382161580159450919250906122b15780156122ac576000612225610c426001600160701b0388811690881663ffffffff6122c516565b9050600061223283612328565b9050808211156122a9576000612260612251848463ffffffff61205d16565b6000549063ffffffff6122c516565b905060006122858361227986600563ffffffff6122c516565b9063ffffffff612d1a16565b9050600081838161229257fe5b04905080156122a5576122a58782612379565b5050505b50505b6122bd565b80156122bd576000600e555b505092915050565b60008115806122e0575050808202828282816122dd57fe5b04145b610704576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b6000600382111561236b575080600160028204015b818110156123655780915060028182858161235457fe5b04018161235d57fe5b04905061233d565b5061149c565b811561149c57506001919050565b60005461238c908263ffffffff612d1a16565b60009081556001600160a01b0383168152600160205260409020546123b7908263ffffffff612d1a16565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081831061241e5781612420565b825b9392505050565b6001600160701b03841180159061244557506001600160701b038311155b61248c576040805162461bcd60e51b8152602060048201526013602482015272444547454e537761703a204f564552464c4f5760681b604482015290519081900360640190fd5b600b5463ffffffff42811691600160e01b900481168203908116158015906124bc57506001600160701b03841615155b80156124d057506001600160701b03831615155b15612541578063ffffffff166124fe856124e986612d69565b6001600160e01b03169063ffffffff612d7b16565b600c80546001600160e01b03929092169290920201905563ffffffff8116612529846124e987612d69565b600d80546001600160e01b0392909216929092020190555b600b80546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b038216600090815260016020526040902054612615908263ffffffff61205d16565b6001600160a01b03831660009081526001602052604081209190915554612642908263ffffffff61205d16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b8161269457612d14565b6005546040805163dcacce6960e01b815230600482015290516001600160a01b0380881693169163dcacce69916024808301926020929190829003018186803b1580156126e057600080fd5b505afa1580156126f4573d6000803e3d6000fd5b505050506040513d602081101561270a57600080fd5b50516001600160a01b031614801561271f5750805b15612b85576005546040805163a0be06f960e01b815290516000926001600160a01b03169163a0be06f9916004808301926020929190829003018186803b15801561276957600080fd5b505afa15801561277d573d6000803e3d6000fd5b505050506040513d602081101561279357600080fd5b5051905080156129f15760006127106127b2858463ffffffff6122c516565b816127b957fe5b04905060006060876001600160a01b0316604051806040016040528060198152602001787472616e7366657228616464726573732c75696e743235362960381b81525080519060200120600560009054906101000a90046001600160a01b03166001600160a01b031663add10aa26040518163ffffffff1660e01b815260040160206040518083038186803b15801561285157600080fd5b505afa158015612865573d6000803e3d6000fd5b505050506040513d602081101561287b57600080fd5b5051604080516001600160a01b039092166024830152604480830188905281518084039091018152606490920181526020820180516001600160e01b03166001600160e01b0319909416939093178352518151919290918291908083835b602083106128f85780518252601f1990920191602091820191016128d9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461295a576040519150601f19603f3d011682016040523d82523d6000602084013e61295f565b606091505b509150915081801561298d57508051158061298d575080806020019051602081101561298a57600080fd5b50515b6129db576040805162461bcd60e51b815260206004820152601a602482015279111151d15394ddd85c0e881514905394d1915497d1905253115160321b604482015290519081900360640190fd5b6129eb868463ffffffff61205d16565b95505050505b60408051808201825260198152787472616e7366657228616464726573732c75696e743235362960381b60209182015281516001600160a01b0387811660248301526044808301889052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b178152925181516000946060948b169392918291908083835b60208310612a9a5780518252601f199092019160209182019101612a7b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150818015612b2f575080511580612b2f5750808060200190516020811015612b2c57600080fd5b50515b612b7d576040805162461bcd60e51b815260206004820152601a602482015279111151d15394ddd85c0e881514905394d1915497d1905253115160321b604482015290519081900360640190fd5b505050612d14565b60408051808201825260198152787472616e7366657228616464726573732c75696e743235362960381b60209182015281516001600160a01b0386811660248301526044808301879052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b178152925181516000946060948a169392918291908083835b60208310612c2e5780518252601f199092019160209182019101612c0f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612c90576040519150601f19603f3d011682016040523d82523d6000602084013e612c95565b606091505b5091509150818015612cc3575080511580612cc35750808060200190516020811015612cc057600080fd5b50515b612d11576040805162461bcd60e51b815260206004820152601a602482015279111151d15394ddd85c0e881514905394d1915497d1905253115160321b604482015290519081900360640190fd5b50505b50505050565b80820182811015610704576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b03841681612d9857fe5b04939250505056fe444547454e537761703a20494e53554646494349454e545f4c49515549444954595f4d494e544544444547454e537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544444547454e537761703a20494e53554646494349454e545f4c4951554944495459444547454e537761703a20494e53554646494349454e545f4f55545055545f414d4f554e54444547454e537761703a20494e53554646494349454e545f494e5055545f414d4f554e54a265627a7a7231582059b52d501dbfb1e7cbb01b6e2b0af1c67e52e4779633b79d5aaa2bbb389cb41a64736f6c63430005100032
Deployed Bytecode Sourcemap
11723:12544:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11723:12544:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5310:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5310:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12934:284;;;:::i;:::-;;;;-1:-1:-1;;;;;12934:284:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12934:284:0;;;;;;;;;;;;;;;7361:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7361:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12079:21;;;:::i;:::-;;;;-1:-1:-1;;;;;12079:21:0;;;;;;;;;;;;;;23417:277;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23417:277:0;-1:-1:-1;;;;;23417:277:0;;:::i;:::-;;5452:24;;;:::i;:::-;;;;;;;;;;;;;;;;12166;;;:::i;7663:301::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7663:301:0;;;;;;;;;;;;;;;;;:::i;5744:108::-;;;:::i;5410:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12004:37;;;:::i;5601:31::-;;;:::i;14937:297::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14937:297:0;;;;;;;;;;:::i;12492:32::-;;;:::i;12531:::-;;;:::i;17218:1242::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17218:1242:0;-1:-1:-1;;;;;17218:1242:0;;:::i;5483:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5483:41:0;-1:-1:-1;;;;;5483:41:0;;:::i;12570:17::-;;;:::i;23702:84::-;;;:::i;5859:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5859:38:0;-1:-1:-1;;;;;5859:38:0;;:::i;18572:1481::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18572:1481:0;-1:-1:-1;;;;;18572:1481:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5361:42;;;:::i;7516:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7516:139:0;;;;;;;;:::i;11854:46::-;;;:::i;22550:348::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22550:348:0;-1:-1:-1;;;;;22550:348:0;;:::i;12050:22::-;;;:::i;12135:24::-;;;:::i;12107:21::-;;;:::i;23950:314::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23950:314:0;;:::i;7972:674::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7972:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5531:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5531:61:0;;;;;;;;;;:::i;20165:2336::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;20165:2336:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20165:2336:0;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;20165:2336:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20165:2336:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;20165:2336:0;;-1:-1:-1;20165:2336:0;-1:-1:-1;20165:2336:0;:::i;22947:158::-;;;:::i;5310:44::-;;;;;;;;;;;;;;-1:-1:-1;;;5310:44:0;;;;:::o;12934:284::-;13087:8;;13201:9;;-1:-1:-1;;;;;13087:8:0;;;;-1:-1:-1;;;13118:8:0;;;;;;-1:-1:-1;;;13159:18:0;;;;;-1:-1:-1;;;;;13201:9:0;;12934:284::o;7361:147::-;7425:4;7442:36;7451:10;7463:7;7472:5;7442:8;:36::i;:::-;-1:-1:-1;7496:4:0;7361:147;;;;;:::o;12079:21::-;;;-1:-1:-1;;;;;12079:21:0;;:::o;23417:277::-;23502:6;;-1:-1:-1;;;;;23502:6:0;23488:10;:20;;:44;;-1:-1:-1;23526:6:0;;-1:-1:-1;;;;;23526:6:0;23512:10;:20;23488:44;23479:80;;;;;-1:-1:-1;;;23479:80:0;;;;;;;;;;;;-1:-1:-1;;;23479:80:0;;;;;;;;;;;;;;;23592:6;;-1:-1:-1;;;;;23578:20:0;;;23592:6;;23578:20;;:44;;-1:-1:-1;23616:6:0;;-1:-1:-1;;;;;23602:20:0;;;23616:6;;23602:20;23578:44;23570:81;;;;;-1:-1:-1;;;23570:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23664:9;:22;;-1:-1:-1;;;;;;23664:22:0;-1:-1:-1;;;;;23664:22:0;;;;;;;;;;23417:277::o;5452:24::-;;;;:::o;12166:::-;;;;:::o;7663:301::-;-1:-1:-1;;;;;7762:15:0;;7741:4;7762:15;;;:9;:15;;;;;;;;7778:10;7762:27;;;;;;;;-1:-1:-1;;7762:39:0;7758:140;;-1:-1:-1;;;;;7848:15:0;;;;;;:9;:15;;;;;;;;7864:10;7848:27;;;;;;;;:38;;7880:5;7848:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;7818:15:0;;;;;;:9;:15;;;;;;;;7834:10;7818:27;;;;;;;:68;7758:140;7908:26;7918:4;7924:2;7928:5;7908:9;:26::i;:::-;-1:-1:-1;7952:4:0;7663:301;;;;;:::o;5744:108::-;5786:66;5744:108;:::o;5410:35::-;5443:2;5410:35;:::o;12004:37::-;;;-1:-1:-1;;;;;12004:37:0;;:::o;5601:31::-;;;;:::o;14937:297::-;15033:7;;-1:-1:-1;;;;;15033:7:0;15019:10;:21;15011:54;;;;;-1:-1:-1;;;15011:54:0;;;;;;;;;;;;-1:-1:-1;;;15011:54:0;;;;;;;;;;;;;;;15096:6;:16;;-1:-1:-1;;;;;15096:16:0;;;-1:-1:-1;;;;;;15096:16:0;;;;;;;15123:6;:16;;;;;;;;;;;;;15201:7;;15183:42;;;-1:-1:-1;;;15183:42:0;;;;15201:7;;;;;15183:40;;:42;;;;;;;;;;;;;;15201:7;15183:42;;;5:2:-1;;;;30:1;27;20:12;5:2;15183:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15183:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15183:42:0;15150:13;:76;;-1:-1:-1;;;;;;15150:76:0;-1:-1:-1;;;;;15150:76:0;;;;;;;;;-1:-1:-1;;14937:297:0:o;12492:32::-;;;;:::o;12531:::-;;;;:::o;17218:1242::-;12765:13;;17267:14;;-1:-1:-1;;;;;12765:13:0;12743:10;:36;12735:71;;;;;-1:-1:-1;;;12735:71:0;;;;;;;;;;;;-1:-1:-1;;;12735:71:0;;;;;;;;;;;;;;;12825:8;;12837:1;12825:13;12817:43;;;;;-1:-1:-1;;;12817:43:0;;;;;;;;;;;;-1:-1:-1;;;12817:43:0;;;;;;;;;;;;;;;12882:1;12871:8;:12;;;12882:1;17337:13;:11;:13::i;:::-;-1:-1:-1;;17399:6:0;;17392:39;;;-1:-1:-1;;;17392:39:0;;17425:4;17392:39;;;;;;17294:56;;-1:-1:-1;17294:56:0;;-1:-1:-1;17376:13:0;;-1:-1:-1;;;;;17399:6:0;;;;17392:24;;:39;;;;;;;;;;;;;;17399:6;17392:39;;;5:2:-1;;;;30:1;27;20:12;5:2;17392:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17392:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17392:39:0;17465:6;;17458:39;;;-1:-1:-1;;;17458:39:0;;17491:4;17458:39;;;;;;17392;;-1:-1:-1;17442:13:0;;-1:-1:-1;;;;;17465:6:0;;;;17458:24;;:39;;;;;17392;;17458;;;;;;;;17465:6;17458:39;;;5:2:-1;;;;30:1;27;20:12;5:2;17458:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17458:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17458:39:0;;-1:-1:-1;17508:12:0;17523:23;:8;-1:-1:-1;;;;;17523:23:0;;;:12;:23;:::i;:::-;17508:38;-1:-1:-1;17557:12:0;17572:23;:8;-1:-1:-1;;;;;17572:23:0;;;:12;:23;:::i;:::-;17557:38;;17608:10;17621:30;17630:9;17641;17621:8;:30::i;:::-;17662:17;17682:11;17608:43;;-1:-1:-1;17786:17:0;17782:353;;17832:54;11895:5;17832:31;17842:20;:7;17854;17842:20;:11;:20;:::i;:::-;17832:9;:31::i;:::-;:35;:54;:35;:54;:::i;:::-;17820:66;;17901:36;17915:1;11895:5;17901;:36::i;:::-;17782:353;;;18037:86;-1:-1:-1;;;;;18046:37:0;;:25;:7;18058:12;18046:25;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1;;;;;18085:37:0;;:25;:7;18097:12;18085:25;:11;:25;:::i;:::-;:37;;;;;;18037:8;:86::i;:::-;18025:98;;17782:353;18165:1;18153:9;:13;18145:66;;;;-1:-1:-1;;;18145:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18222:20;18228:2;18232:9;18222:5;:20::i;:::-;18255:49;18263:8;18273;18283:9;18294;18255:7;:49::i;:::-;18319:5;18315:47;;;18353:8;;18334:28;;-1:-1:-1;;;;;18339:8:0;;;;-1:-1:-1;;;18353:8:0;;;18334:28;:18;:28;:::i;:::-;18326:5;:36;18315:47;18418:34;;;;;;;;;;;;;;18423:10;;18418:34;;;;;;;;-1:-1:-1;;12917:1:0;12906:8;:12;-1:-1:-1;17218:1242:0;;;-1:-1:-1;;;;;;17218:1242:0:o;5483:41::-;;;;;;;;;;;;;:::o;12570:17::-;;;;:::o;23702:84::-;23770:8;;23702:84;:::o;5859:38::-;;;;;;;;;;;;;:::o;18572:1481::-;12765:13;;18621:12;;;;-1:-1:-1;;;;;12765:13:0;12743:10;:36;12735:71;;;;;-1:-1:-1;;;12735:71:0;;;;;;;;;;;;-1:-1:-1;;;12735:71:0;;;;;;;;;;;;;;;12825:8;;12837:1;12825:13;12817:43;;;;;-1:-1:-1;;;12817:43:0;;;;;;;;;;;;-1:-1:-1;;;12817:43:0;;;;;;;;;;;;;;;12882:1;12871:8;:12;;;12882:1;18703:13;:11;:13::i;:::-;-1:-1:-1;;18760:6:0;;18841;;18920:40;;;-1:-1:-1;;;18920:40:0;;18954:4;18920:40;;;;;;18660:56;;-1:-1:-1;18660:56:0;;-1:-1:-1;;;;;;18760:6:0;;;;18841;;;18742:15;;18760:6;;18920:25;;:40;;;;;;;;;;;;;;18760:6;18920:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18920:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18920:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18920:40:0;18987;;;-1:-1:-1;;;18987:40:0;;19021:4;18987:40;;;;;;18920;;-1:-1:-1;18971:13:0;;-1:-1:-1;;;;;18987:25:0;;;;;:40;;;;;18920;;18987;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18987:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18987:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18987:40:0;19073:4;19038:14;19055:24;;;:9;18987:40;19055:24;;;;;18987:40;;-1:-1:-1;19105:30:0;19114:9;19125;19105:8;:30::i;:::-;19146:17;19166:11;19092:43;;-1:-1:-1;19166:11:0;19276:23;:9;19290:8;19276:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;19409:12:0;19383:23;:9;19397:8;19383:23;:13;:23;:::i;:::-;:38;;;;;;19373:48;;19498:1;19488:7;:11;:26;;;;;19513:1;19503:7;:11;19488:26;19480:79;;;;-1:-1:-1;;;19480:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19570:31;19584:4;19591:9;19570:5;:31::i;:::-;19612:42;19626:7;19635:2;19639:7;19648:5;19612:13;:42::i;:::-;19665;19679:7;19688:2;19692:7;19701:5;19665:13;:42::i;:::-;19729:40;;;-1:-1:-1;;;19729:40:0;;19763:4;19729:40;;;;;;-1:-1:-1;;;;;19729:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19729:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19729:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19729:40:0;19791;;;-1:-1:-1;;;19791:40:0;;19825:4;19791:40;;;;;;19729;;-1:-1:-1;;;;;;19791:25:0;;;;;:40;;;;;19729;;19791;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19791:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19791:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19791:40:0;;-1:-1:-1;19844:49:0;19852:8;19791:40;19872:9;19883;19844:7;:49::i;:::-;19908:5;19904:47;;;19942:8;;19923:28;;-1:-1:-1;;;;;19928:8:0;;;;-1:-1:-1;;;19942:8:0;;;19923:28;:18;:28;:::i;:::-;19915:5;:36;19904:47;20007:38;;;;;;;;;;;;;;-1:-1:-1;;;;;20007:38:0;;;20012:10;;20007:38;;;;;;;;;;;12894:1;;;;;;;;;12917;12906:8;:12;;;;18572:1481;;;:::o;5361:42::-;;;;;;;;;;;;;;-1:-1:-1;;;5361:42:0;;;;:::o;7516:139::-;7576:4;7593:32;7603:10;7615:2;7619:5;7593:9;:32::i;11854:46::-;11895:5;11854:46;:::o;22550:348::-;12765:13;;-1:-1:-1;;;;;12765:13:0;12743:10;:36;12735:71;;;;;-1:-1:-1;;;12735:71:0;;;;;;;;;;;;-1:-1:-1;;;12735:71:0;;;;;;;;;;;;;;;12825:8;;12837:1;12825:13;12817:43;;;;;-1:-1:-1;;;12817:43:0;;;;;;;;;;;;-1:-1:-1;;;12817:43:0;;;;;;;;;;;;;;;12882:1;12871:8;:12;22619:6;;22669;;22773:8;;22728:40;;;-1:-1:-1;;;22728:40:0;;22762:4;22728:40;;;;;;-1:-1:-1;;;;;22619:6:0;;;;22669;;;;22701:89;;22619:6;;22724:2;;22728:54;;-1:-1:-1;;;;;22773:8:0;;22619:6;;22728:25;;:40;;;;;;;;;;;;;;;22619:6;22728:40;;;5:2:-1;;;;30:1;27;20:12;5:2;22728:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22728:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22728:40:0;;:54;:44;:54;:::i;:::-;22784:5;22701:13;:89::i;:::-;22873:8;;22828:40;;;-1:-1:-1;;;22828:40:0;;22862:4;22828:40;;;;;;22801:89;;22815:7;;22824:2;;22828:54;;-1:-1:-1;;;22873:8:0;;-1:-1:-1;;;;;22873:8:0;;-1:-1:-1;;;;;22828:25:0;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;22801:89:0;-1:-1:-1;;12917:1:0;12906:8;:12;-1:-1:-1;22550:348:0:o;12050:22::-;;;-1:-1:-1;;;;;12050:22:0;;:::o;12135:24::-;;;-1:-1:-1;;;;;12135:24:0;;:::o;12107:21::-;;;-1:-1:-1;;;;;12107:21:0;;:::o;23950:314::-;24029:9;;24008:4;;-1:-1:-1;;;;;24029:9:0;24025:41;;-1:-1:-1;24061:5:0;24054:12;;24025:41;24109:6;;24096:9;;24077:16;;-1:-1:-1;;;;;24096:9:0;;;24109:6;;24096:19;:37;;24127:6;;-1:-1:-1;;;;;24127:6:0;24096:37;;;24118:6;;-1:-1:-1;;;;;24118:6:0;24096:37;24077:56;-1:-1:-1;;;;;;24152:22:0;;24164:10;24152:22;24144:57;;;;;-1:-1:-1;;;24144:57:0;;;;;;;;;;;;-1:-1:-1;;;24144:57:0;;;;;;;;;;;;;;;-1:-1:-1;;24214:8:0;:20;;;24252:4;23950:314;;;;:::o;7972:674::-;8118:15;8106:8;:27;;8098:58;;;;;-1:-1:-1;;;8098:58:0;;;;;;;;;;;;-1:-1:-1;;;8098:58:0;;;;;;;;;;;;;;;8272:16;;-1:-1:-1;;;;;8368:13:0;;;8167:14;8368:13;;;:6;:13;;;;;;;;:15;;;;;;;;;8317:77;;5786:66;8317:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8317:77:0;;;;;8307:88;;;;;;-1:-1:-1;;;8208:202:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8208:202:0;;;;;;8184:237;;;;;;;;;8459:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8167:14;;8368:15;8459:26;;;;;-1:-1:-1;;8459:26:0;;;;;;;;;;8368:15;8459:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8459:26:0;;-1:-1:-1;;8459:26:0;;;-1:-1:-1;;;;;;;8504:30:0;;;;;;:59;;;8558:5;-1:-1:-1;;;;;8538:25:0;:16;-1:-1:-1;;;;;8538:25:0;;8504:59;8496:100;;;;;-1:-1:-1;;;8496:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8607:31;8616:5;8623:7;8632:5;8607:8;:31::i;:::-;7972:674;;;;;;;;;:::o;5531:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;20165:2336::-;12765:13;;-1:-1:-1;;;;;12765:13:0;12743:10;:36;12735:71;;;;;-1:-1:-1;;;12735:71:0;;;;;;;;;;;;-1:-1:-1;;;12735:71:0;;;;;;;;;;;;;;;12825:8;;12837:1;12825:13;12817:43;;;;;-1:-1:-1;;;12817:43:0;;;;;;;;;;;;-1:-1:-1;;;12817:43:0;;;;;;;;;;;;;;;12882:1;12871:8;:12;20313:14;;;;:32;;;20344:1;20331:10;:14;20313:32;20305:82;;;;-1:-1:-1;;;20305:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20399:17;20418;20441:13;:11;:13::i;:::-;20398:56;;;;;;20501:9;-1:-1:-1;;;;;20488:22:0;:10;:22;:48;;;;;20527:9;-1:-1:-1;;;;;20514:22:0;:10;:22;20488:48;20480:94;;;;-1:-1:-1;;;20480:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20590:9;;-1:-1:-1;;;;;20590:9:0;:23;20587:127;;20651:1;20638:10;:14;:32;;;;20669:1;20656:10;:14;20638:32;20630:72;;;;;-1:-1:-1;;;20630:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20862:6;;20901;;20726:13;;;;-1:-1:-1;;;;;20862:6:0;;;;20901;;;;20930:13;;;;;;;:30;;;20953:7;-1:-1:-1;;;;;20947:13:0;:2;-1:-1:-1;;;;;20947:13:0;;;20930:30;20922:64;;;;;-1:-1:-1;;;20922:64:0;;;;;;;;;;;;-1:-1:-1;;;20922:64:0;;;;;;;;;;;;;;;21005:14;;21001:99;;21040:44;21054:7;21063:2;21067:10;21079:4;21040:13;:44::i;:::-;21118:14;;21114:99;;21153:44;21167:7;21176:2;21180:10;21192:4;21153:13;:44::i;:::-;21245:1;21232:10;:14;:37;;;;-1:-1:-1;21263:6:0;;21250:9;;-1:-1:-1;;;;;21250:9:0;;;21263:6;;21250:19;21232:37;21229:189;;;21297:7;-1:-1:-1;;;;;21290:23:0;;21314:7;21323:10;21290:44;;;;;;;;;;;;;-1:-1:-1;;;;;21290:44:0;-1:-1:-1;;;;;21290:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21290:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21290:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;21353:49:0;;;-1:-1:-1;;;21353:49:0;;;;;;;;-1:-1:-1;;;;;21353:49:0;;;;;;;;;:28;;;;;;:49;;;;;-1:-1:-1;;21353:49:0;;;;;;;;-1:-1:-1;21353:28:0;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;21353:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21353:49:0;;;;21229:189;21448:1;21435:10;:14;:37;;;;-1:-1:-1;21466:6:0;;21453:9;;-1:-1:-1;;;;;21453:9:0;;;21466:6;;21453:19;21435:37;21432:189;;;21500:7;-1:-1:-1;;;;;21493:23:0;;21517:7;21526:10;21493:44;;;;;;;;;;;;;-1:-1:-1;;;;;21493:44:0;-1:-1:-1;;;;;21493:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21493:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21493:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;21556:49:0;;;-1:-1:-1;;;21556:49:0;;;;;;;;-1:-1:-1;;;;;21556:49:0;;;;;;;;;:28;;;;;;:49;;;;;-1:-1:-1;;21556:49:0;;;;;;;;-1:-1:-1;21556:28:0;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;21556:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21556:49:0;;;;21432:189;21641:15;;21637:97;;21675:2;-1:-1:-1;;;;;21658:34:0;;21693:10;21705;21717;21729:4;;21658:76;;;;;;;;;;;;;-1:-1:-1;;;;;21658:76:0;-1:-1:-1;;;;;21658:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;21658:76:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21658:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21658:76:0;;;;21637:97;21760:40;;;-1:-1:-1;;;21760:40:0;;21794:4;21760:40;;;;;;-1:-1:-1;;;;;21760:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;21760:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21760:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21760:40:0;21826;;;-1:-1:-1;;;21826:40:0;;21860:4;21826:40;;;;;;21760;;-1:-1:-1;;;;;;21826:25:0;;;;;:40;;;;;21760;;21826;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;21826:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21826:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21826:40:0;;-1:-1:-1;21888:14:0;;-1:-1:-1;;;;;;;21916:22:0;;;;;:35;;;21905:46;;:88;;21992:1;21905:88;;;21978:10;21966:9;-1:-1:-1;;;;;21966:22:0;;21954:8;:35;21905:88;21888:105;;22004:14;22057:10;22044;22032:9;-1:-1:-1;;;;;22032:22:0;;:35;22021:8;:46;:88;;22108:1;22021:88;;;22094:10;22082:9;-1:-1:-1;;;;;22082:22:0;;22070:8;:35;22021:88;22004:105;;22140:1;22128:9;:13;:30;;;;22157:1;22145:9;:13;22128:30;22120:79;;;;-1:-1:-1;;;22120:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22212:49;22220:8;22230;22240:9;22251;22212:7;:49::i;:::-;22413:69;;;;;;;;;;;;;;;;;;;;;;;;;;22308:10;;22352;;22391:2;;-1:-1:-1;;;;;22413:69:0;;;22418:10;;22413:69;;;;;;;;;;-1:-1:-1;;12917:1:0;12906:8;:12;-1:-1:-1;;;;;;;;;;;;;;20165:2336:0:o;22947:158::-;12765:13;;-1:-1:-1;;;;;12765:13:0;12743:10;:36;12735:71;;;;;-1:-1:-1;;;12735:71:0;;;;;;;;;;;;-1:-1:-1;;;12735:71:0;;;;;;;;;;;;;;;12825:8;;12837:1;12825:13;12817:43;;;;;-1:-1:-1;;;12817:43:0;;;;;;;;;;;;-1:-1:-1;;;12817:43:0;;;;;;;;;;;;;;;12882:1;12871:8;:12;23003:6;;22996:39;;;-1:-1:-1;;;22996:39:0;;23029:4;22996:39;;;;;;22988:109;;-1:-1:-1;;;;;23003:6:0;;22996:24;;:39;;;;;;;;;;;;;;23003:6;22996:39;;;5:2:-1;;;;30:1;27;20:12;5:2;22996:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22996:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22996:39:0;23044:6;;23037:39;;;-1:-1:-1;;;23037:39:0;;23070:4;23037:39;;;;;;-1:-1:-1;;;;;23044:6:0;;;;23037:24;;:39;;;;;22996;;23037;;;;;;;;23044:6;23037:39;;;5:2:-1;;;;30:1;27;20:12;5:2;23037:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23037:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23037:39:0;23078:8;;-1:-1:-1;;;;;23078:8:0;;;;-1:-1:-1;;;23088:8:0;;;22988:7;:109::i;:::-;12917:1;12906:8;:12;22947:158::o;6956:169::-;-1:-1:-1;;;;;7037:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;7086:31;;;;;;;;;;;;;;;;;6956:169;;;:::o;3587:129::-;3671:5;;;3666:16;;;;3658:50;;;;;-1:-1:-1;;;3658:50:0;;;;;;;;;;;;-1:-1:-1;;;3658:50:0;;;;;;;;;;;;;;7133:220;-1:-1:-1;;;;;7227:15:0;;;;;;:9;:15;;;;;;:26;;7247:5;7227:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;7209:15:0;;;;;;;:9;:15;;;;;;:44;;;;7280:13;;;;;;;:24;;7298:5;7280:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;7264:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;7320:25;;;;;;;7264:13;;7320:25;;;;;;;;;;;;;7133:220;;;:::o;16269:837::-;16342:10;16365:13;16399:7;;;;;;;;;-1:-1:-1;;;;;16399:7:0;-1:-1:-1;;;;;16381:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16381:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16381:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16381:34:0;16478:5;;-1:-1:-1;;;;;16434:19:0;;;;;;-1:-1:-1;16381:34:0;;-1:-1:-1;16478:5:0;16509:590;;16539:11;;16535:494;;16571:10;16584:41;16594:30;-1:-1:-1;;;;;16594:15:0;;;;:30;;;:19;:30;:::i;16584:41::-;16571:54;;16644:14;16661:17;16671:6;16661:9;:17::i;:::-;16644:34;;16709:9;16701:5;:17;16697:317;;;16743:14;16760:37;16776:20;:5;16786:9;16776:20;:9;:20;:::i;:::-;16760:11;;;:37;:15;:37;:::i;:::-;16743:54;-1:-1:-1;16820:16:0;16839:27;16856:9;16839:12;:5;16849:1;16839:12;:9;:12;:::i;:::-;:16;:27;:16;:27;:::i;:::-;16820:46;;16889:14;16918:11;16906:9;:23;;;;;;;-1:-1:-1;16956:13:0;;16952:42;;16971:23;16977:5;16984:9;16971:5;:23::i;:::-;16697:317;;;;16535:494;;;16509:590;;;17050:11;;17046:53;;17086:1;17078:5;:9;17046:53;16269:837;;;;;;:::o;3724:142::-;3776:6;3803;;;:30;;-1:-1:-1;;3818:5:0;;;3832:1;3827;3818:5;3827:1;3813:15;;;;;:20;3803:30;3795:63;;;;;-1:-1:-1;;;3795:63:0;;;;;;;;;;;;-1:-1:-1;;;3795:63:0;;;;;;;;;;;;;;2977:303;3022:6;3049:1;3045;:5;3041:232;;;-1:-1:-1;3071:1:0;3104;3100;3096:5;;:9;3120:92;3131:1;3127;:5;3120:92;;;3157:1;3153:5;;3195:1;3190;3186;3182;:5;;;;;;:9;3181:15;;;;;;3177:19;;3120:92;;;3041:232;;;;3233:6;;3229:44;;-1:-1:-1;3260:1:0;2977:303;;;:::o;6530:201::-;6603:11;;:22;;6619:5;6603:22;:15;:22;:::i;:::-;6589:11;:36;;;-1:-1:-1;;;;;6652:13:0;;;;:9;:13;;;;;;:24;;6670:5;6652:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6636:13:0;;;;;;:9;:13;;;;;;;;:40;;;;6692:31;;;;;;;6636:13;;;;6692:31;;;;;;;;;;6530:201;;:::o;2763:96::-;2815:6;2842:1;2838;:5;:13;;2850:1;2838:13;;;2846:1;2838:13;2834:17;2763:96;-1:-1:-1;;;2763:96:0:o;15319:860::-;-1:-1:-1;;;;;15431:23:0;;;;;:50;;-1:-1:-1;;;;;;15458:23:0;;;15431:50;15423:82;;;;;-1:-1:-1;;;15423:82:0;;;;;;;;;;;;-1:-1:-1;;;15423:82:0;;;;;;;;;;;;;;;15620:18;;15547:23;:15;:23;;;-1:-1:-1;;;15620:18:0;;;;15603:35;;;15676:15;;;;;;:33;;-1:-1:-1;;;;;;15695:14:0;;;;15676:33;:51;;;;-1:-1:-1;;;;;;15713:14:0;;;;15676:51;15672:336;;;15882:11;15829:64;;15834:44;15868:9;15834:27;15851:9;15834:16;:27::i;:::-;-1:-1:-1;;;;;15834:33:0;;:44;:33;:44;:::i;:::-;15805:20;:88;;-1:-1:-1;;;;;15829:50:0;;;;:64;;;;15805:88;;;15932:64;;;15937:44;15971:9;15937:27;15954:9;15937:16;:27::i;:44::-;15908:20;:88;;-1:-1:-1;;;;;15932:50:0;;;;:64;;;;15908:88;;;15672:336;16018:8;:28;;-1:-1:-1;;16018:28:0;-1:-1:-1;;;;;16018:28:0;;;;;;;-1:-1:-1;;;;16057:28:0;-1:-1:-1;;;16057:28:0;;;;;;;;;-1:-1:-1;;;;;16096:35:0;-1:-1:-1;;;16096:35:0;;;;;;;;;16147:24;;;16152:8;;;16147:24;;16162:8;;;;;;;16147:24;;;;;;;;;;;;;;;;;15319:860;;;;;;:::o;6739:209::-;-1:-1:-1;;;;;6818:15:0;;;;;;:9;:15;;;;;;:26;;6838:5;6818:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6800:15:0;;;;;;:9;:15;;;;;:44;;;;6869:11;:22;;6885:5;6869:22;:15;:22;:::i;:::-;6855:11;:36;;;6907:33;;;;;;;;-1:-1:-1;;;;;6907:33:0;;;;;;;;;;;;;6739:209;;:::o;13226:1177::-;13327:10;13324:47;;13353:7;;13324:47;13385:13;;:43;;;-1:-1:-1;;;13385:43:0;;13422:4;13385:43;;;;;;-1:-1:-1;;;;;13385:52:0;;;;:13;;:28;;:43;;;;;;;;;;;;;;:13;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;13385:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13385:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13385:43:0;-1:-1:-1;;;;;13385:52:0;;:66;;;;;13441:10;13385:66;13381:1015;;;13486:13;;:24;;;-1:-1:-1;;;13486:24:0;;;;13467:16;;-1:-1:-1;;;;;13486:13:0;;:22;;:24;;;;;;;;;;;;;;:13;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;13486:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13486:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13486:24:0;;-1:-1:-1;13528:13:0;;13525:404;;13561:17;13604:5;13581:19;:5;13591:8;13581:19;:9;:19;:::i;:::-;:29;;;;;;13561:49;;13630:12;13644:17;13665:5;-1:-1:-1;;;;;13665:10:0;11959:34;;;;;;;;;;;;;-1:-1:-1;;;11959:34:0;;;11949:45;;;;;;13709:13;;;;;;;;;-1:-1:-1;;;;;13709:13:0;-1:-1:-1;;;;;13709:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13709:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13709:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13709:29:0;13676:74;;;-1:-1:-1;;;;;13676:74:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;13676:74:0;;;;;;13709:29;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;13676:74:0;;;179:29:-1;;;;160:49;;13665:86:0;;;13676:74;;13665:86;;;;25:18:-1;13665:86:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13665:86:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;13629:122:0;;;;13778:7;:57;;;;-1:-1:-1;13790:11:0;;:16;;:44;;;13821:4;13810:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13810:24:0;13790:44;13770:96;;;;;-1:-1:-1;;;13770:96:0;;;;;;;;;;;;-1:-1:-1;;;13770:96:0;;;;;;;;;;;;;;;13893:20;:5;13903:9;13893:20;:9;:20;:::i;:::-;13885:28;;13525:404;;;;11959:34;;;;;;;;;;;-1:-1:-1;;;11959:34:0;;;;;13992:43;;-1:-1:-1;;;;;13992:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;13992:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;13981:55:0;;;;13944:13;;13959:18;;13981:10;;;13992:43;13981:55;;;25:18:-1;13981:55:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13981:55:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;13943:93:0;;;;14059:8;:60;;;;-1:-1:-1;14072:12:0;;:17;;:46;;;14104:5;14093:25;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14093:25:0;14072:46;14051:99;;;;;-1:-1:-1;;;14051:99:0;;;;;;;;;;;;-1:-1:-1;;;14051:99:0;;;;;;;;;;;;;;;13381:1015;;;;;;11959:34;;;;;;;;;;;-1:-1:-1;;;11959:34:0;;;;;14229:43;;-1:-1:-1;;;;;14229:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;14229:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;14218:55:0;;;;14183:12;;14197:17;;14218:10;;;14229:43;14218:55;;;25:18:-1;14218:55:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14218:55:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;14182:91:0;;;;14296:7;:57;;;;-1:-1:-1;14308:11:0;;:16;;:44;;;14339:4;14328:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14328:24:0;14308:44;14288:96;;;;;-1:-1:-1;;;14288:96:0;;;;;;;;;;;;-1:-1:-1;;;14288:96:0;;;;;;;;;;;;;;;13381:1015;;;13226:1177;;;;:::o;3451:128::-;3535:5;;;3530:16;;;;3522:49;;;;;-1:-1:-1;;;3522:49:0;;;;;;;;;;;;-1:-1:-1;;;3522:49:0;;;;;;;;;;;;;;2350:120;-1:-1:-1;;;;;2426:10:0;-1:-1:-1;;;2426:17:0;;2350:120::o;2541:108::-;2601:9;-1:-1:-1;;;;;2631:10:0;;-1:-1:-1;;;;;2627:14:0;;2631:10;2627:14;;;;;;2541:108;-1:-1:-1;;;2541:108:0:o
Swarm Source
bzzr://59b52d501dbfb1e7cbb01b6e2b0af1c67e52e4779633b79d5aaa2bbb389cb41a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $3,450.96 | 0.00027879 | $0.9621 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.