Polygon Sponsored slots available. Book your slot here!
Contract Overview
My Name Tag:
Not Available, login to update
Txn Hash |
Method
|
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x6d5aafadea3d375ca3741106ca068fe937c74d6e831627837f09a1bb44880f89 | 0x61010060 | 22271122 | 419 days 15 hrs ago | 0x115efedb74314083bee38494e7e9e6c498328823 | IN | Create: MetroConverter | 0 MATIC | 0.04623519 |
[ Download CSV Export ]
Contract Name:
MetroConverter
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-12-08 */ /** *Submitted for verification at polygonscan.com on 2021-06-18 */ // File: contracts/libraries/SafeMath.sol pragma solidity =0.6.12; // 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 a, uint b) internal pure returns (uint256) { require(b > 0, "division by zero"); return a / b; } } // File: contracts/interfaces/IERC20.sol 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); } // File: contracts/libraries/SafeERC20.sol pragma solidity 0.6.12; library SafeERC20 { function safeSymbol(IERC20 token) internal view returns(string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41)); return success && data.length > 0 ? abi.decode(data, (string)) : "???"; } function safeName(IERC20 token) internal view returns(string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03)); return success && data.length > 0 ? abi.decode(data, (string)) : "???"; } function safeDecimals(IERC20 token) public view returns (uint8) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567)); return success && data.length == 32 ? abi.decode(data, (uint8)) : 18; } function safeTransfer(IERC20 token, address to, uint256 amount) internal { (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount)); require(success && (data.length == 0 || abi.decode(data, (bool))), "SafeERC20: Transfer failed"); } function safeTransferFrom(IERC20 token, address from, uint256 amount) internal { (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, address(this), amount)); require(success && (data.length == 0 || abi.decode(data, (bool))), "SafeERC20: TransferFrom failed"); } } // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20.sol pragma solidity >=0.5.0; interface IUniswapV2ERC20 { 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; } // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol pragma solidity >=0.5.0; interface IUniswapV2Pair { 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; 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); 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, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol pragma solidity >=0.5.0; interface IUniswapV2Factory { 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 createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // File: contracts/Ownable.sol pragma solidity 0.6.12; // Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol contract OwnableData { address public owner; address public pendingOwner; } contract Ownable is OwnableData { event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { owner = msg.sender; emit OwnershipTransferred(address(0), msg.sender); } function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner { if (direct) { require(newOwner != address(0) || renounce, "Ownable: zero address"); // Effects emit OwnershipTransferred(owner, newOwner); owner = newOwner; } else { pendingOwner = newOwner; } } function claimOwnership() public { address _pendingOwner = pendingOwner; require(msg.sender == _pendingOwner, "Ownable: caller != pending owner"); emit OwnershipTransferred(owner, _pendingOwner); owner = _pendingOwner; pendingOwner = address(0); } modifier onlyOwner() { require(msg.sender == owner, "Ownable: caller is not the owner"); _; } } // File: contracts/MetroConverter.sol // P1 - P3: OK pragma solidity 0.6.12; //METRO LAIR'S CONVERTER CONTRACT. This contract converts all tokens into METRO contract MetroConverter is Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; // V1 - V5: OK IUniswapV2Factory public immutable factory; //0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32 // V1 - V5: OK address public immutable tradecraft; // V1 - V5: OK address public immutable metro; //0x831753dd7087cac61ab5644b308642cc1c33dc13 // V1 - V5: OK address public immutable weth; //0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619 address public treasury; //0x476307DaC3FD170166e007FCaA14F0A129721463 // V1 - V5: OK mapping(address => address) internal _bridges; // E1: OK event LogBridgeSet(address indexed token, address indexed bridge); // E1: OK event LogConvert( address indexed server, address indexed token0, address indexed token1, uint256 amount0, uint256 amount1, uint256 amountMETRO ); event TreasuryChanged(address indexed treasury); constructor( address _factory, address _tradecraft, address _metro, address _weth, address _treasury ) public { factory = IUniswapV2Factory(_factory); tradecraft = _tradecraft; metro = _metro; weth = _weth; treasury = _treasury; } // F1 - F10: OK // C1 - C24: OK function bridgeFor(address token) public view returns (address bridge) { bridge = _bridges[token]; if (bridge == address(0)) { bridge = weth; } } // F1 - F10: OK // C1 - C24: OK function setBridge(address token, address bridge) external onlyOwner { // Checks require( token != metro && token != weth && token != bridge, "MetroConverter: Invalid bridge" ); // Effects _bridges[token] = bridge; emit LogBridgeSet(token, bridge); } function changeTreasury(address _treasury) external onlyOwner { require(_treasury != address(0), "Inavlid treasury"); treasury = _treasury; emit TreasuryChanged(treasury); } // M1 - M5: OK // C1 - C24: OK // C6: It's not a fool proof solution, but it prevents flash loans, so here it's ok to use tx.origin modifier onlyEOA() { // Try to make flash-loan exploit harder to do by only allowing externally owned addresses. require(msg.sender == tx.origin, "MetroConverter: must use EOA"); _; } // F1 - F10: OK // F3: _convert is separate to save gas by only checking the 'onlyEOA' modifier once in case of convertMultiple // F6: There is an exploit to add lots of METRO to the tradecraft, run convert, then remove the METRO again. // As the size of the Tradecraft has grown, this requires large amounts of funds and isn't super profitable anymore // The onlyEOA modifier prevents this being done with a flash loan. // C1 - C24: OK function convert(address token0, address token1) external onlyEOA() { _convert(token0, token1); } // F1 - F10: OK, see convert // C1 - C24: OK // C3: Loop is under control of the caller function convertMultiple( address[] calldata token0, address[] calldata token1 ) external onlyEOA() { // TODO: This can be optimized a fair bit, but this is safer and simpler for now uint256 len = token0.length; for (uint256 i = 0; i < len; i++) { _convert(token0[i], token1[i]); } } // F1 - F10: OK // C1- C24: OK function _convert(address token0, address token1) internal { // Interactions // S1 - S4: OK IUniswapV2Pair pair = IUniswapV2Pair(factory.getPair(token0, token1)); require(address(pair) != address(0), "MetroConverter: Invalid pair"); // balanceOf: S1 - S4: OK // transfer: X1 - X5: OK IERC20(address(pair)).safeTransfer( address(pair), pair.balanceOf(address(this)) ); // X1 - X5: OK (uint256 amount0, uint256 amount1) = pair.burn(address(this)); if (token0 != pair.token0()) { (amount0, amount1) = (amount1, amount0); } if (amount0 > 0 || amount1 > 0) { _convertStep(token0, token1, amount0, amount1); uint256 amountMETRO = IERC20(metro).balanceOf(address(this)); uint256 tradecraftShare = amountMETRO.mul(80).div(100); uint256 treasuryShare = amountMETRO.sub(tradecraftShare); IERC20(metro).safeTransfer(tradecraft, tradecraftShare); IERC20(metro).safeTransfer(treasury, treasuryShare); emit LogConvert( msg.sender, token0, token1, amount0, amount1, amountMETRO ); } } // F1 - F10: OK // C1 - C24: OK // All _swap, _toMETRO, _convertStep: X1 - X5: OK function _convertStep( address token0, address token1, uint256 amount0, uint256 amount1 ) internal returns (uint256 metroOut) { // Interactions if (token0 == token1) { uint256 amount = amount0.add(amount1); if (token0 == metro) { metroOut = amount; } else if (token0 == weth) { metroOut = _toMETRO(weth, amount); } else { address bridge = bridgeFor(token0); amount = _swap(token0, bridge, amount, address(this)); metroOut = _convertStep(bridge, bridge, amount, 0); } } else if (token0 == metro) { // eg. METRO - ETH metroOut = _toMETRO(token1, amount1).add(amount0); } else if (token1 == metro) { // eg. USDT - METRO metroOut = _toMETRO(token0, amount0).add(amount1); } else if (token0 == weth) { // eg. ETH - USDC metroOut = _toMETRO( weth, _swap(token1, weth, amount1, address(this)).add(amount0) ); } else if (token1 == weth) { // eg. USDT - ETH metroOut = _toMETRO( weth, _swap(token0, weth, amount0, address(this)).add(amount1) ); } else { // eg. MIC - USDT address bridge0 = bridgeFor(token0); address bridge1 = bridgeFor(token1); if (bridge0 == token1) { // eg. MIC - USDT - and bridgeFor(MIC) = USDT metroOut = _convertStep( bridge0, token1, _swap(token0, bridge0, amount0, address(this)), amount1 ); } else if (bridge1 == token0) { // eg. WBTC - DSD - and bridgeFor(DSD) = WBTC metroOut = _convertStep( token0, bridge1, amount0, _swap(token1, bridge1, amount1, address(this)) ); } else { metroOut = _convertStep( bridge0, bridge1, // eg. USDT - DSD - and bridgeFor(DSD) = WBTC _swap(token0, bridge0, amount0, address(this)), _swap(token1, bridge1, amount1, address(this)) ); } } } // F1 - F10: OK // C1 - C24: OK // All safeTransfer, swap: X1 - X5: OK function _swap( address fromToken, address toToken, uint256 amountIn, address to ) internal returns (uint256 amountOut) { // Checks // X1 - X5: OK IUniswapV2Pair pair = IUniswapV2Pair(factory.getPair(fromToken, toToken)); require(address(pair) != address(0), "MetroConverter: Cannot convert"); IERC20(fromToken).safeTransfer(address(pair), amountIn); // Interactions // X1 - X5: OK (uint256 reserve0, uint256 reserve1, ) = pair.getReserves(); if (fromToken == pair.token0()) { uint256 amountInput = IERC20(fromToken).balanceOf(address(pair)).sub(reserve0); uint256 amountInWithFee = amountInput.mul(997); amountOut = amountInWithFee.mul(reserve1) / reserve0.mul(1000).add(amountInWithFee); pair.swap(0, amountOut, to, new bytes(0)); // TODO: Add maximum slippage? } else { uint256 amountInput = IERC20(fromToken).balanceOf(address(pair)).sub(reserve1); uint256 amountInWithFee = amountInput.mul(997); amountOut = amountInWithFee.mul(reserve0) / reserve1.mul(1000).add(amountInWithFee); pair.swap(amountOut, 0, to, new bytes(0)); // TODO: Add maximum slippage? } } // F1 - F10: OK // C1 - C24: OK function _toMETRO(address token, uint256 amountIn) internal returns (uint256 amountOut) { // X1 - X5: OK amountOut = _swap(token, metro, amountIn, address(this)); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_tradecraft","type":"address"},{"internalType":"address","name":"_metro","type":"address"},{"internalType":"address","name":"_weth","type":"address"},{"internalType":"address","name":"_treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"bridge","type":"address"}],"name":"LogBridgeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"server","type":"address"},{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountMETRO","type":"uint256"}],"name":"LogConvert","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"treasury","type":"address"}],"name":"TreasuryChanged","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"bridgeFor","outputs":[{"internalType":"address","name":"bridge","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"changeTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"name":"convert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"token0","type":"address[]"},{"internalType":"address[]","name":"token1","type":"address[]"}],"name":"convertMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metro","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"bridge","type":"address"}],"name":"setBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tradecraft","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"bool","name":"direct","type":"bool"},{"internalType":"bool","name":"renounce","type":"bool"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
61010060405234801561001157600080fd5b50604051611b96380380611b96833981810160405260a081101561003457600080fd5b50805160208201516040808401516060850151608090950151600080546001600160a01b03191633908117825593519596949592949391927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3606085811b6001600160601b031990811660805285821b811660a05284821b811660c0529083901b1660e052600280546001600160a01b0319166001600160a01b0392831617905593841693928316929182169116611a1e610178600039806104db52806106c352806107e15280610fd752806110145280611111528061114e528061117752806111a452806111e1528061120a5250806105c152806106865280610c595280610d275280610d7f5280610f95528061107452806110c952806114485250806105f45280610d49525080610967528061099c528061147a5250611a1e6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063b14f2a3911610066578063b14f2a3914610289578063bd1b820c146102af578063c45a0155146102dd578063e30c3978146102e5576100ea565b80638da5cb5b1461022d5780639d22ae8c14610235578063a761a93914610263576100ea565b80634e71e0c8116100c85780634e71e0c81461020d5780636183cac51461021557806361d027b31461021d57806387cece5514610225576100ea565b8063078dfbe7146100ef578063303e6aa4146101275780633fc8cef3146101e9575b600080fd5b6101256004803603606081101561010557600080fd5b506001600160a01b038135169060208101351515906040013515156102ed565b005b6101256004803603604081101561013d57600080fd5b81019060208101813564010000000081111561015857600080fd5b82018360208201111561016a57600080fd5b8035906020019184602083028401116401000000008311171561018c57600080fd5b9193909290916020810190356401000000008111156101aa57600080fd5b8201836020820111156101bc57600080fd5b803590602001918460208302840111640100000000831117156101de57600080fd5b509092509050610429565b6101f16104d9565b604080516001600160a01b039092168252519081900360200190f35b6101256104fd565b6101f16105bf565b6101f16105e3565b6101f16105f2565b6101f1610616565b6101256004803603604081101561024b57600080fd5b506001600160a01b0381358116916020013516610625565b6101f16004803603602081101561027957600080fd5b50356001600160a01b03166107be565b6101256004803603602081101561029f57600080fd5b50356001600160a01b0316610806565b610125600480360360408110156102c557600080fd5b506001600160a01b0381358116916020013516610903565b6101f1610965565b6101f1610989565b6000546001600160a01b0316331461034c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b8115610408576001600160a01b0383161515806103665750805b6103af576040805162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b604482015290519081900360640190fd5b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b038516179055610424565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b33321461047d576040805162461bcd60e51b815260206004820152601c60248201527f4d6574726f436f6e7665727465723a206d7573742075736520454f4100000000604482015290519081900360640190fd5b8260005b818110156104d1576104c986868381811061049857fe5b905060200201356001600160a01b03168585848181106104b457fe5b905060200201356001600160a01b0316610998565b600101610481565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b031633811461055d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b6002546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031681565b6000546001600160a01b03163314610684576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141580156106f857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156107165750806001600160a01b0316826001600160a01b031614155b610767576040805162461bcd60e51b815260206004820152601e60248201527f4d6574726f436f6e7665727465723a20496e76616c6964206272696467650000604482015290519081900360640190fd5b6001600160a01b0382811660008181526003602052604080822080546001600160a01b0319169486169485179055517f2e103aa707acc565f9a1547341914802b2bfe977fd79c595209f248ae4b006139190a35050565b6001600160a01b03808216600090815260036020526040902054168061080157507f00000000000000000000000000000000000000000000000000000000000000005b919050565b6000546001600160a01b03163314610865576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166108b3576040805162461bcd60e51b815260206004820152601060248201526f496e61766c696420747265617375727960801b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fc714d22a2f08b695f81e7c707058db484aa5b4d6b4c9fd64beb10fe85832f60890600090a250565b333214610957576040805162461bcd60e51b815260206004820152601c60248201527f4d6574726f436f6e7665727465723a206d7573742075736520454f4100000000604482015290519081900360640190fd5b6109618282610998565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b031681565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a4390584846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610a1857600080fd5b505afa158015610a2c573d6000803e3d6000fd5b505050506040513d6020811015610a4257600080fd5b505190506001600160a01b038116610aa1576040805162461bcd60e51b815260206004820152601c60248201527f4d6574726f436f6e7665727465723a20496e76616c6964207061697200000000604482015290519081900360640190fd5b610b2f81826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610af257600080fd5b505afa158015610b06573d6000803e3d6000fd5b505050506040513d6020811015610b1c57600080fd5b50516001600160a01b0384169190610e06565b600080826001600160a01b03166389afcb44306040518263ffffffff1660e01b815260040180826001600160a01b031681526020019150506040805180830381600087803b158015610b8057600080fd5b505af1158015610b94573d6000803e3d6000fd5b505050506040513d6040811015610baa57600080fd5b50805160209182015160408051630dfe168160e01b815290519295509093506001600160a01b03861692630dfe168192600480840193829003018186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d6020811015610c1e57600080fd5b50516001600160a01b03868116911614610c3457905b6000821180610c435750600081115b15610dff57610c5485858484610f69565b5060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610cc457600080fd5b505afa158015610cd8573d6000803e3d6000fd5b505050506040513d6020811015610cee57600080fd5b505190506000610d0a6064610d048460506112de565b90611347565b90506000610d1883836113a1565b9050610d6e6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084610e06565b600254610da8906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683610e06565b604080518681526020810186905280820185905290516001600160a01b03808a1692908b169133917fd06b1d7ed79b664d17472c6f6997b929f1abe463ccccb4e5b6a0038f2f730c15919081900360600190a45050505b5050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610e835780518252601f199092019160209182019101610e64565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ee5576040519150601f19603f3d011682016040523d82523d6000602084013e610eea565b606091505b5091509150818015610f18575080511580610f185750808060200190516020811015610f1557600080fd5b50515b610dff576040805162461bcd60e51b815260206004820152601a60248201527f5361666545524332303a205472616e73666572206661696c6564000000000000604482015290519081900360640190fd5b6000836001600160a01b0316856001600160a01b03161415611072576000610f9184846113f1565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161415610fd55780915061106c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161415611040576110397f000000000000000000000000000000000000000000000000000000000000000082611440565b915061106c565b600061104b876107be565b905061105987828430611475565b91506110688182846000610f69565b9250505b506112d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614156110c7576110c0836110ba8685611440565b906113f1565b90506112d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316141561110f576110c0826110ba8786611440565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614156111a2576110c07f000000000000000000000000000000000000000000000000000000000000000061119d856110ba887f00000000000000000000000000000000000000000000000000000000000000008830611475565b611440565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161415611230576110c07f000000000000000000000000000000000000000000000000000000000000000061119d846110ba897f00000000000000000000000000000000000000000000000000000000000000008930611475565b600061123b866107be565b90506000611248866107be565b9050856001600160a01b0316826001600160a01b031614156112825761127b82876112758a868a30611475565b87610f69565b92506112d3565b866001600160a01b0316816001600160a01b031614156112b35761127b8782876112ae8a868a30611475565b610f69565b6112d082826112c48a868a30611475565b6112ae8a868a30611475565b92505b50505b949350505050565b60008115806112f9575050808202828282816112f657fe5b04145b611341576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b6000808211611390576040805162461bcd60e51b815260206004820152601060248201526f6469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b81838161139957fe5b049392505050565b80820382811115611341576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b80820182811015611341576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b600061146e837f00000000000000000000000000000000000000000000000000000000000000008430611475565b9392505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a4390587876040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156114f657600080fd5b505afa15801561150a573d6000803e3d6000fd5b505050506040513d602081101561152057600080fd5b505190506001600160a01b03811661157f576040805162461bcd60e51b815260206004820152601e60248201527f4d6574726f436f6e7665727465723a2043616e6e6f7420636f6e766572740000604482015290519081900360640190fd5b6115936001600160a01b0387168286610e06565b600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156115cf57600080fd5b505afa1580156115e3573d6000803e3d6000fd5b505050506040513d60608110156115f957600080fd5b50805160209182015160408051630dfe168160e01b815290516dffffffffffffffffffffffffffff93841696509290911693506001600160a01b03861692630dfe168192600480840193829003018186803b15801561165757600080fd5b505afa15801561166b573d6000803e3d6000fd5b505050506040513d602081101561168157600080fd5b50516001600160a01b038981169116141561186557600061171b838a6001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156116e957600080fd5b505afa1580156116fd573d6000803e3d6000fd5b505050506040513d602081101561171357600080fd5b5051906113a1565b9050600061172b826103e56112de565b905061173d816110ba866103e86112de565b61174782856112de565b8161174e57fe5b0495506001600160a01b03851663022c0d9f6000888a826040519080825280601f01601f19166020018201604052801561178f576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156117f75781810151838201526020016117df565b50505050905090810190601f1680156118245780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561184657600080fd5b505af115801561185a573d6000803e3d6000fd5b5050505050506119dd565b60006118b8828a6001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156116e957600080fd5b905060006118c8826103e56112de565b90506118da816110ba856103e86112de565b6118e482866112de565b816118eb57fe5b604080516000808252602082019283905263022c0d9f60e01b83529390920460248301818152604484018590526001600160a01b038c81166064860152608060848601908152855160a48701819052939c50908b169563022c0d9f958d9591948f949193919260c48501918083838a5b8381101561197357818101518382015260200161195b565b50505050905090810190601f1680156119a05780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156119c257600080fd5b505af11580156119d6573d6000803e3d6000fd5b5050505050505b50505094935050505056fea264697066735822122072df50a3df5326347a6986d6149b70c42493d7cff0b8670136adb52eeffe9a4d64736f6c634300060c00330000000000000000000000000f10f5a1006f50edecd086ccd5704ade25709ab20000000000000000000000000f599720efa45e79db3f0f3a786b1fc70eba79e3000000000000000000000000523d9972d5f8a1c82ceafe130a45dc2a71fe06ef0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f6190000000000000000000000008f72f61839182eef7c250c760bc557dcf24a5568
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000f10f5a1006f50edecd086ccd5704ade25709ab20000000000000000000000000f599720efa45e79db3f0f3a786b1fc70eba79e3000000000000000000000000523d9972d5f8a1c82ceafe130a45dc2a71fe06ef0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f6190000000000000000000000008f72f61839182eef7c250c760bc557dcf24a5568
-----Decoded View---------------
Arg [0] : _factory (address): 0x0f10f5a1006f50edecd086ccd5704ade25709ab2
Arg [1] : _tradecraft (address): 0x0f599720efa45e79db3f0f3a786b1fc70eba79e3
Arg [2] : _metro (address): 0x523d9972d5f8a1c82ceafe130a45dc2a71fe06ef
Arg [3] : _weth (address): 0x7ceb23fd6bc0add59e62ac25578270cff1b9f619
Arg [4] : _treasury (address): 0x8f72f61839182eef7c250c760bc557dcf24a5568
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000f10f5a1006f50edecd086ccd5704ade25709ab2
Arg [1] : 0000000000000000000000000f599720efa45e79db3f0f3a786b1fc70eba79e3
Arg [2] : 000000000000000000000000523d9972d5f8a1c82ceafe130a45dc2a71fe06ef
Arg [3] : 0000000000000000000000007ceb23fd6bc0add59e62ac25578270cff1b9f619
Arg [4] : 0000000000000000000000008f72f61839182eef7c250c760bc557dcf24a5568
Deployed ByteCode Sourcemap
9388:9503:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8380:385;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8380:385:0;;;;;;;;;;;;;;;;;:::i;:::-;;12670:360;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12670:360:0;;-1:-1:-1;12670:360:0;-1:-1:-1;12670:360:0;:::i;9806:29::-;;;:::i;:::-;;;;-1:-1:-1;;;;;9806:29:0;;;;;;;;;;;;;;8773:301;;;:::i;9699:30::-;;;:::i;9894:23::-;;;:::i;9637:35::-;;;:::i;8058:20::-;;;:::i;11041:337::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11041:337:0;;;;;;;;;;:::i;10801:190::-;;;;;;;;;;;;;;;;-1:-1:-1;10801:190:0;-1:-1:-1;;;;;10801:190:0;;:::i;11386:207::-;;;;;;;;;;;;;;;;-1:-1:-1;11386:207:0;-1:-1:-1;;;;;11386:207:0;;:::i;12446:111::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12446:111:0;;;;;;;;;;:::i;9518:42::-;;;:::i;8085:27::-;;;:::i;8380:385::-;9136:5;;-1:-1:-1;;;;;9136:5:0;9122:10;:19;9114:64;;;;;-1:-1:-1;;;9114:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8485:6:::1;8481:277;;;-1:-1:-1::0;;;;;8516:22:0;::::1;::::0;::::1;::::0;:34:::1;;;8542:8;8516:34;8508:68;;;::::0;;-1:-1:-1;;;8508:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;8508:68:0;;;;;;;;;;;;;::::1;;8643:5;::::0;;8622:37:::1;::::0;-1:-1:-1;;;;;8622:37:0;;::::1;::::0;8643:5;::::1;::::0;8622:37:::1;::::0;::::1;8674:5;:16:::0;;-1:-1:-1;;;;;;8674:16:0::1;-1:-1:-1::0;;;;;8674:16:0;::::1;;::::0;;8481:277:::1;;;8723:12;:23:::0;;-1:-1:-1;;;;;;8723:23:0::1;-1:-1:-1::0;;;;;8723:23:0;::::1;;::::0;;8481:277:::1;8380:385:::0;;;:::o;12670:360::-;11887:10;11901:9;11887:23;11879:64;;;;;-1:-1:-1;;;11879:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12908:6;12894:11:::1;12932:91;12956:3;12952:1;:7;12932:91;;;12981:30;12990:6;;12997:1;12990:9;;;;;;;;;;;;;-1:-1:-1::0;;;;;12990:9:0::1;13001:6;;13008:1;13001:9;;;;;;;;;;;;;-1:-1:-1::0;;;;;13001:9:0::1;12981:8;:30::i;:::-;12961:3;;12932:91;;;;11954:1;12670:360:::0;;;;:::o;9806:29::-;;;:::o;8773:301::-;8841:12;;-1:-1:-1;;;;;8841:12:0;8874:10;:27;;8866:72;;;;;-1:-1:-1;;;8866:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8977:5;;;8956:42;;-1:-1:-1;;;;;8956:42:0;;;;8977:5;;;8956:42;;;9009:5;:21;;-1:-1:-1;;;;;9009:21:0;;;-1:-1:-1;;;;;;9009:21:0;;;;;;;9041:25;;;;;;;8773:301::o;9699:30::-;;;:::o;9894:23::-;;;-1:-1:-1;;;;;9894:23:0;;:::o;9637:35::-;;;:::o;8058:20::-;;;-1:-1:-1;;;;;8058:20:0;;:::o;11041:337::-;9136:5;;-1:-1:-1;;;;;9136:5:0;9122:10;:19;9114:64;;;;;-1:-1:-1;;;9114:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11171:5:::1;-1:-1:-1::0;;;;;11162:14:0::1;:5;-1:-1:-1::0;;;;;11162:14:0::1;;;:31;;;;;11189:4;-1:-1:-1::0;;;;;11180:13:0::1;:5;-1:-1:-1::0;;;;;11180:13:0::1;;;11162:31;:50;;;;;11206:6;-1:-1:-1::0;;;;;11197:15:0::1;:5;-1:-1:-1::0;;;;;11197:15:0::1;;;11162:50;11140:130;;;::::0;;-1:-1:-1;;;11140:130:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;11303:15:0;;::::1;;::::0;;;:8:::1;:15;::::0;;;;;:24;;-1:-1:-1;;;;;;11303:24:0::1;::::0;;::::1;::::0;;::::1;::::0;;11343:27;::::1;::::0;11303:15;11343:27:::1;11041:337:::0;;:::o;10801:190::-;-1:-1:-1;;;;;10892:15:0;;;10856:14;10892:15;;;:8;:15;;;;;;;10922:20;10918:66;;-1:-1:-1;10968:4:0;10918:66;10801:190;;;:::o;11386:207::-;9136:5;;-1:-1:-1;;;;;9136:5:0;9122:10;:19;9114:64;;;;;-1:-1:-1;;;9114:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11467:23:0;::::1;11459:52;;;::::0;;-1:-1:-1;;;11459:52:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;11459:52:0;;;;;;;;;;;;;::::1;;11522:8;:20:::0;;-1:-1:-1;;;;;;11522:20:0::1;-1:-1:-1::0;;;;;11522:20:0;;::::1;::::0;;;::::1;::::0;;;;11560:25:::1;::::0;11576:8;::::1;::::0;11560:25:::1;::::0;-1:-1:-1;;11560:25:0::1;11386:207:::0;:::o;12446:111::-;11887:10;11901:9;11887:23;11879:64;;;;;-1:-1:-1;;;11879:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12525:24:::1;12534:6;12542;12525:8;:24::i;:::-;12446:111:::0;;:::o;9518:42::-;;;:::o;8085:27::-;;;-1:-1:-1;;;;;8085:27:0;;:::o;13079:1369::-;13198:19;13235:7;-1:-1:-1;;;;;13235:15:0;;13251:6;13259;13235:31;;;;;;;;;;;;;-1:-1:-1;;;;;13235:31:0;;;;;;-1:-1:-1;;;;;13235:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13235:31:0;;-1:-1:-1;;;;;;13286:27:0;;13278:68;;;;;-1:-1:-1;;;13278:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13426:117;13483:4;13503;-1:-1:-1;;;;;13503:14:0;;13526:4;13503:29;;;;;;;;;;;;;-1:-1:-1;;;;;13503:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13503:29:0;-1:-1:-1;;;;;13426:34:0;;;:117;:34;:117::i;:::-;13579:15;13596;13615:4;-1:-1:-1;;;;;13615:9:0;;13633:4;13615:24;;;;;;;;;;;;;-1:-1:-1;;;;;13615:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13615:24:0;;;;;;;;13664:13;;-1:-1:-1;;;13664:13:0;;;;13615:24;;-1:-1:-1;13615:24:0;;-1:-1:-1;;;;;;13664:11:0;;;;;:13;;;;;;;;;;:11;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13664:13:0;-1:-1:-1;;;;;13654:23:0;;;;;;13650:95;;13716:7;13650:95;13771:1;13761:7;:11;:26;;;;13786:1;13776:7;:11;13761:26;13757:670;;;13804:46;13817:6;13825;13833:7;13842;13804:12;:46::i;:::-;;13867:19;13896:5;-1:-1:-1;;;;;13889:23:0;;13921:4;13889:38;;;;;;;;;;;;;-1:-1:-1;;;;;13889:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13889:38:0;;-1:-1:-1;13944:23:0;13970:28;13994:3;13970:19;13889:38;13986:2;13970:15;:19::i;:::-;:23;;:28::i;:::-;13944:54;-1:-1:-1;14013:21:0;14037:32;:11;13944:54;14037:15;:32::i;:::-;14013:56;-1:-1:-1;14084:55:0;-1:-1:-1;;;;;14091:5:0;14084:26;14111:10;14123:15;14084:26;:55::i;:::-;14181:8;;14154:51;;-1:-1:-1;;;;;14161:5:0;14154:26;;;14181:8;14191:13;14154:26;:51::i;:::-;14225:190;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14225:190:0;;;;;;;;14254:10;;14225:190;;;;;;;;;;13757:670;;;;13079:1369;;;;;:::o;2651:302::-;2791:46;;;-1:-1:-1;;;;;2791:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2791:46:0;-1:-1:-1;;;2791:46:0;;;2771:67;;;;2736:12;;2750:17;;2771:19;;;;2791:46;2771:67;;;2791:46;2771:67;;2791:46;2771:67;;;;;;;;;;-1:-1:-1;;2771:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:103;;;;2857:7;:57;;;;-1:-1:-1;2869:11:0;;:16;;:44;;;2900:4;2889:24;;;;;;;;;;;;;;;-1:-1:-1;2889:24:0;2869:44;2849:96;;;;;-1:-1:-1;;;2849:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14553:2534;14702:16;14770:6;-1:-1:-1;;;;;14760:16:0;:6;-1:-1:-1;;;;;14760:16:0;;14756:2324;;;14793:14;14810:20;:7;14822;14810:11;:20::i;:::-;14793:37;;14859:5;-1:-1:-1;;;;;14849:15:0;:6;-1:-1:-1;;;;;14849:15:0;;14845:383;;;14896:6;14885:17;;14845:383;;;14938:4;-1:-1:-1;;;;;14928:14:0;:6;-1:-1:-1;;;;;14928:14:0;;14924:304;;;14974:22;14983:4;14989:6;14974:8;:22::i;:::-;14963:33;;14924:304;;;15037:14;15054:17;15064:6;15054:9;:17::i;:::-;15037:34;;15099:44;15105:6;15113;15121;15137:4;15099:5;:44::i;:::-;15090:53;;15173:39;15186:6;15194;15202;15210:1;15173:12;:39::i;:::-;15162:50;;14924:304;;14756:2324;;;;15259:5;-1:-1:-1;;;;;15249:15:0;:6;-1:-1:-1;;;;;15249:15:0;;15245:1835;;;15324:38;15354:7;15324:25;15333:6;15341:7;15324:8;:25::i;:::-;:29;;:38::i;:::-;15313:49;;15245:1835;;;15394:5;-1:-1:-1;;;;;15384:15:0;:6;-1:-1:-1;;;;;15384:15:0;;15380:1700;;;15460:38;15490:7;15460:25;15469:6;15477:7;15460:8;:25::i;15380:1700::-;15530:4;-1:-1:-1;;;;;15520:14:0;:6;-1:-1:-1;;;;;15520:14:0;;15516:1564;;;15593:121;15620:4;15643:56;15691:7;15643:43;15649:6;15657:4;15663:7;15680:4;15643:5;:43::i;:56::-;15593:8;:121::i;15516:1564::-;15746:4;-1:-1:-1;;;;;15736:14:0;:6;-1:-1:-1;;;;;15736:14:0;;15732:1348;;;15809:121;15836:4;15859:56;15907:7;15859:43;15865:6;15873:4;15879:7;15896:4;15859:5;:43::i;15732:1348::-;15994:15;16012:17;16022:6;16012:9;:17::i;:::-;15994:35;;16044:15;16062:17;16072:6;16062:9;:17::i;:::-;16044:35;;16109:6;-1:-1:-1;;;;;16098:17:0;:7;-1:-1:-1;;;;;16098:17:0;;16094:975;;;16210:189;16245:7;16275:6;16304:46;16310:6;16318:7;16327;16344:4;16304:5;:46::i;:::-;16373:7;16210:12;:189::i;:::-;16199:200;;16094:975;;;16436:6;-1:-1:-1;;;;;16425:17:0;:7;-1:-1:-1;;;;;16425:17:0;;16421:648;;;16537:189;16572:6;16601:7;16631;16661:46;16667:6;16675:7;16684;16701:4;16661:5;:46::i;:::-;16537:12;:189::i;16421:648::-;16778:275;16813:7;16843;16919:46;16925:6;16933:7;16942;16959:4;16919:5;:46::i;:::-;16988;16994:6;17002:7;17011;17028:4;16988:5;:46::i;16778:275::-;16767:286;;16421:648;15732:1348;;;14553:2534;;;;;;:::o;552:142::-;604:6;631;;;:30;;-1:-1:-1;;646:5:0;;;660:1;655;646:5;655:1;641:15;;;;;:20;631:30;623:63;;;;;-1:-1:-1;;;623:63:0;;;;;;;;;;;;-1:-1:-1;;;623:63:0;;;;;;;;;;;;;;;552:142;;;;:::o;702:137::-;754:7;786:1;782;:5;774:34;;;;;-1:-1:-1;;;774:34:0;;;;;;;;;;;;-1:-1:-1;;;774:34:0;;;;;;;;;;;;;;;830:1;826;:5;;;;;;;702:137;-1:-1:-1;;;702:137:0:o;415:129::-;499:5;;;494:16;;;;486:50;;;;;-1:-1:-1;;;486:50:0;;;;;;;;;;;;-1:-1:-1;;;486:50:0;;;;;;;;;;;;;;279:128;363:5;;;358:16;;;;350:49;;;;;-1:-1:-1;;;350:49:0;;;;;;;;;;;;-1:-1:-1;;;350:49:0;;;;;;;;;;;;;;18678:210;18765:17;18836:44;18842:5;18849;18856:8;18874:4;18836:5;:44::i;:::-;18824:56;18678:210;-1:-1:-1;;;18678:210:0:o;17181:1447::-;17323:17;17396:19;17446:7;-1:-1:-1;;;;;17446:15:0;;17462:9;17473:7;17446:35;;;;;;;;;;;;;-1:-1:-1;;;;;17446:35:0;;;;;;-1:-1:-1;;;;;17446:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17446:35:0;;-1:-1:-1;;;;;;17501:27:0;;17493:70;;;;;-1:-1:-1;;;17493:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17586:55;-1:-1:-1;;;;;17586:30:0;;17625:4;17632:8;17586:30;:55::i;:::-;17704:16;17722;17744:4;-1:-1:-1;;;;;17744:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17744:18:0;;;;;;;;17790:13;;-1:-1:-1;;;17790:13:0;;;;17703:59;;;;;-1:-1:-1;17703:59:0;;;;;-1:-1:-1;;;;;;17790:11:0;;;;;:13;;;;;;;;;;:11;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17790:13:0;-1:-1:-1;;;;;17777:26:0;;;;;;17773:848;;;17820:19;17842:56;17889:8;17849:9;-1:-1:-1;;;;;17842:27:0;;17878:4;17842:42;;;;;;;;;;;;;-1:-1:-1;;;;;17842:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17842:42:0;;:46;:56::i;:::-;17820:78;-1:-1:-1;17913:23:0;17939:20;17820:78;17955:3;17939:15;:20::i;:::-;17913:46;-1:-1:-1;18052:39:0;17913:46;18052:18;:8;18065:4;18052:12;:18::i;:39::-;18003:29;:15;18023:8;18003:19;:29::i;:::-;:88;;;;;;;-1:-1:-1;;;;;;18120:9:0;;;18130:1;18003:88;18144:2;18130:1;18148:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18148:12:0;;18120:41;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18120:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17773:848;;;;;18238:19;18260:56;18307:8;18267:9;-1:-1:-1;;;;;18260:27:0;;18296:4;18260:42;;;;;;;;;;;;;-1:-1:-1;;;;;18260:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;:56;18238:78;-1:-1:-1;18331:23:0;18357:20;18238:78;18373:3;18357:15;:20::i;:::-;18331:46;-1:-1:-1;18470:39:0;18331:46;18470:18;:8;18483:4;18470:12;:18::i;:39::-;18421:29;:15;18441:8;18421:19;:29::i;:::-;:88;;;;;18552:12;;;18545:1;18552:12;;;;;;;;;;-1:-1:-1;;;18524:41:0;;18421:88;;;;18524:41;;;;;;;;;;;;-1:-1:-1;;;;;18524:41:0;;;;;;;;;;;;;;;;;;;;;;18421:88;;-1:-1:-1;18524:9:0;;;;;;18421:88;;18545:1;;18548:2;;18552:12;;18524:41;;;;;;;;18552:12;18545:1;18524:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17773:848;;;17181:1447;;;;;;;;;:::o
Swarm Source
ipfs://72df50a3df5326347a6986d6149b70c42493d7cff0b8670136adb52eeffe9a4d
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.