Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 53 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 17786795 | 516 days ago | IN | 0 ETH | 0.00162124 | ||||
Approve | 17784692 | 516 days ago | IN | 0 ETH | 0.00144724 | ||||
Approve | 17782550 | 517 days ago | IN | 0 ETH | 0.00082303 | ||||
Approve | 17780665 | 517 days ago | IN | 0 ETH | 0.00096361 | ||||
Approve | 17780492 | 517 days ago | IN | 0 ETH | 0.00064862 | ||||
Approve | 17780462 | 517 days ago | IN | 0 ETH | 0.00132042 | ||||
Approve | 17780372 | 517 days ago | IN | 0 ETH | 0.00079063 | ||||
Approve | 17780236 | 517 days ago | IN | 0 ETH | 0.00151666 | ||||
Approve | 17780133 | 517 days ago | IN | 0 ETH | 0.00095165 | ||||
Approve | 17779940 | 517 days ago | IN | 0 ETH | 0.00151243 | ||||
Approve | 17779938 | 517 days ago | IN | 0 ETH | 0.00175285 | ||||
Approve | 17779931 | 517 days ago | IN | 0 ETH | 0.0016123 | ||||
Approve | 17779897 | 517 days ago | IN | 0 ETH | 0.00150661 | ||||
Approve | 17779887 | 517 days ago | IN | 0 ETH | 0.00149705 | ||||
Approve | 17779870 | 517 days ago | IN | 0 ETH | 0.00141624 | ||||
Approve | 17779810 | 517 days ago | IN | 0 ETH | 0.00169377 | ||||
Approve | 17779760 | 517 days ago | IN | 0 ETH | 0.0017534 | ||||
Approve | 17779756 | 517 days ago | IN | 0 ETH | 0.00143426 | ||||
Change Owner | 17779699 | 517 days ago | IN | 0 ETH | 0.00087013 | ||||
Approve | 17779695 | 517 days ago | IN | 0 ETH | 0.00159152 | ||||
Set Exchange | 17779688 | 517 days ago | IN | 0 ETH | 0.00155253 | ||||
Approve | 17779673 | 517 days ago | IN | 0 ETH | 0.00169313 | ||||
Approve | 17779622 | 517 days ago | IN | 0 ETH | 0.00189752 | ||||
Approve | 17779603 | 517 days ago | IN | 0 ETH | 0.00169393 | ||||
Set Tax | 17779603 | 517 days ago | IN | 0 ETH | 0.0014443 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
17779360 | 517 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
PepeRainbow
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Multiple files format)
//SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.7; import "./Interfaces.sol"; import "./BaseErc20Min.sol"; import "./BasicTaxableSingle.sol"; contract PepeRainbow is BaseErc20, Taxable { uint256 immutable public mhAmount; constructor () BaseErc20(msg.sender) { symbol = "PEPER"; name = "PEPE RAINBOW"; decimals = 18; // Swap address routerAddress = getRouterAddress(); IDEXRouter router = IDEXRouter(routerAddress); address native = router.WETH(); address pair = IDEXFactory(router.factory()).createPair(native, address(this)); exchanges[pair] = true; taxDistributor = new BasicTaxDistributor(routerAddress, pair, native, 3000, 2000); // Tax minimumTimeBetweenSwaps = 30 seconds; minimumTokensBeforeSwap = 1 * 10 ** decimals; excludedFromTax[address(taxDistributor)] = true; excludedFromTax[msg.sender] = true; taxDistributor.setBuyTax(2000); taxDistributor.setSellTax(3000); taxDistributor.setTaxWallet(0xA7507862967eC8EDd619d01a98358902110f5a9f); autoSwapTax = true; // Max Hold mhAmount = 8_413_800_005 * 10 ** decimals; // Finalise _allowed[address(taxDistributor)][routerAddress] = 2**256 - 1; _totalSupply = _totalSupply + (420_690_000_000 * 10 ** decimals); _balances[owner] = _balances[owner] + _totalSupply; emit Transfer(address(0), owner, _totalSupply); } // Overrides function preTransfer(address from, address to, uint256 value) override(Taxable, BaseErc20) internal { if (launched && from != owner && to != owner && exchanges[to] == false && to != getRouterAddress() ) { require (_balances[to] + value <= mhAmount, "this is over the max hold amount"); } super.preTransfer(from, to, value); } function calculateTransferAmount(address from, address to, uint256 value) override(Taxable, BaseErc20) internal returns (uint256) { return super.calculateTransferAmount(from, to, value); } function setTax(uint256 taxAmount) external onlyOwner { taxDistributor.setSellTax(taxAmount); taxDistributor.setBuyTax(taxAmount); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol) pragma solidity 0.8.7; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * * Furthermore, `isContract` will also return true if the target contract within * the same transaction is already scheduled for destruction by `SELFDESTRUCT`, * which only has an effect at the end of a transaction. * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } }
//SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.7; import "./Interfaces.sol"; abstract contract BaseErc20 is IERC20, IOwnable { mapping (address => uint256) internal _balances; mapping (address => mapping (address => uint256)) internal _allowed; uint256 internal _totalSupply; string public symbol; string public name; uint8 public decimals; address public override owner; bool public launched; uint256 public launchBlock; mapping (address => bool) internal exchanges; modifier onlyOwner() { require(msg.sender == owner, "can only be called by the contract owner"); _; } modifier isLaunched() { require(launched, "can only be called once token is launched"); _; } // @dev Trading is allowed before launch if the sender is the owner, we are transferring from the owner, or in canAlwaysTrade list modifier tradingEnabled(address from) virtual { require(launched || from == owner, "trading not enabled"); _; } constructor(address _owner) { owner = _owner; } /** * @dev Total number of tokens in existence */ function totalSupply() external override view returns (uint256) { return _totalSupply; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) external override view returns (uint256) { return _balances[_owner]; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address spender) external override view returns (uint256) { return _allowed[_owner][spender]; } /** * @dev Transfer token for a specified address * @param to The address to transfer to. * @param value The amount to be transferred. */ function transfer(address to, uint256 value) external override tradingEnabled(msg.sender) returns (bool) { _transfer(msg.sender, to, value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. */ function approve(address spender, uint256 value) external override tradingEnabled(msg.sender) returns (bool) { require(spender != address(0), "cannot approve the 0 address"); _allowed[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } /** * @dev Transfer tokens from one address to another. * Note that while this function emits an Approval event, this is not required as per the specification, * and other compliant implementations may not emit the event. * @param from address The address which you want to send tokens from * @param to address The address which you want to transfer to * @param value uint256 the amount of tokens to be transferred */ function transferFrom(address from, address to, uint256 value) external override tradingEnabled(from) returns (bool) { _allowed[from][msg.sender] = _allowed[from][msg.sender] - value; _transfer(from, to, value); emit Approval(from, msg.sender, _allowed[from][msg.sender]); return true; } // Virtual methods function launch() virtual external onlyOwner { require(launched == false, "contract already launched"); launched = true; launchBlock = block.number; } function calculateTransferAmount(address from, address to, uint256 value) virtual internal returns (uint256) { require(from != to, "you cannot transfer to yourself"); return value; } function preTransfer(address from, address to, uint256 value) virtual internal { } // Admin methods function changeOwner(address who) external onlyOwner { owner = who; } function setExchange(address who, bool on) external onlyOwner { require(exchanges[who] != on, "already set"); exchanges[who] = on; } // Private methods function getRouterAddress() internal view returns (address routerAddress) { if (block.chainid == 1 || block.chainid == 3 || block.chainid == 4 || block.chainid == 5) { routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ; // ETHEREUM } else if (block.chainid == 56) { routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC MAINNET } else if (block.chainid == 97) { routerAddress = 0xc99f3718dB7c90b020cBBbb47eD26b0BA0C6512B; // BSC TESTNET - https://pancakeswap.rainbit.me/ } else { revert("Unknown Chain ID"); } } /** * @dev Transfer token for a specified addresses * @param from The address to transfer from. * @param to The address to transfer to. * @param value The amount to be transferred. */ function _transfer(address from, address to, uint256 value) private { require(to != address(0), "cannot be zero address"); preTransfer(from, to, value); uint256 modifiedAmount = calculateTransferAmount(from, to, value); _balances[from] = _balances[from] - value; _balances[to] = _balances[to] + modifiedAmount; emit Transfer(from, to, modifiedAmount); } }
//SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.7; import "./BaseErc20Min.sol"; import "./AddressLibrary.sol"; import "./Interfaces.sol"; interface IBasicTaxDistributor { receive() external payable; function lastSwapTime() external view returns (uint256); function inSwap() external view returns (bool); function distribute() external payable; function getSellTax() external view returns (uint256); function getBuyTax() external view returns (uint256); function getTaxWallet() external view returns(address); function setTaxWallet(address wallet) external; function setSellTax(uint256 taxPercentage) external; function setBuyTax(uint256 taxPercentage) external; function takeSellTax(uint256 value, bool dead) external returns (uint256); function takeBuyTax(uint256 value, bool dead) external returns (uint256); } abstract contract Taxable is BaseErc20 { IBasicTaxDistributor internal taxDistributor; bool internal autoSwapTax; uint256 internal minimumTimeBetweenSwaps; uint256 internal minimumTokensBeforeSwap; mapping (address => bool) internal excludedFromTax; uint256 private swapStartTime; // Overrides function calculateTransferAmount(address from, address to, uint256 value) internal virtual override returns (uint256) { uint256 amountAfterTax = value; if (excludedFromTax[from] == false && excludedFromTax[to] == false && launched) { bool dead = block.number < launchBlock + 3; if (exchanges[from]) { // we are BUYING amountAfterTax = taxDistributor.takeBuyTax(value, dead); } else if (exchanges[to]) { // we are SELLING amountAfterTax = taxDistributor.takeSellTax(value, dead); } } uint256 taxAmount = value - amountAfterTax; if (taxAmount > 0) { _balances[address(taxDistributor)] = _balances[address(taxDistributor)] + taxAmount; } return super.calculateTransferAmount(from, to, amountAfterTax); } function preTransfer(address from, address to, uint256 value) override virtual internal { uint256 timeSinceLastSwap = block.timestamp - taxDistributor.lastSwapTime(); if ( launched && autoSwapTax && exchanges[to] && swapStartTime + 60 <= block.timestamp && timeSinceLastSwap >= minimumTimeBetweenSwaps && _balances[address(taxDistributor)] >= minimumTokensBeforeSwap && taxDistributor.inSwap() == false ) { swapStartTime = block.timestamp; try taxDistributor.distribute() {} catch {} } super.preTransfer(from, to, value); } // Public methods /** * @dev Return the current total sell tax from the tax distributor */ function sellTax() external view returns (uint256) { return taxDistributor.getSellTax(); } /** * @dev Return the current total sell tax from the tax distributor */ function buyTax() external view returns (uint256) { return taxDistributor.getBuyTax(); } /** * @dev Return the address of the tax distributor contract */ function taxDistributorAddress() external view returns (address) { return address(taxDistributor); } // Admin methods function setAutoSwaptax(bool enabled) external onlyOwner { autoSwapTax = enabled; } function setExcludedFromTax(address who, bool enabled) external onlyOwner { require(exchanges[who] == false || enabled == false, "Cannot exclude an exchange from tax"); excludedFromTax[who] = enabled; } function setTaxDistributionThresholds(uint256 minAmount, uint256 minTime) external onlyOwner { minimumTokensBeforeSwap = minAmount; minimumTimeBetweenSwaps = minTime; } function setSellTax(uint256 taxAmount) external onlyOwner { taxDistributor.setSellTax(taxAmount); } function setBuyTax(uint256 taxAmount) external onlyOwner { taxDistributor.setBuyTax(taxAmount); } function setTaxWallet(address wallet) external onlyOwner { taxDistributor.setTaxWallet(wallet); } function runSwapManually() external isLaunched { taxDistributor.distribute(); } } contract BasicTaxDistributor is IBasicTaxDistributor { using Address for address; address immutable private tokenPair; address immutable private routerAddress; address immutable private _token; address immutable private _wbnb; IDEXRouter private _router; bool public override inSwap; uint256 public override lastSwapTime; uint256 immutable private maxSellTax; uint256 immutable private maxBuyTax; uint256 buyTaxPercentage; uint256 sellTaxPercentage; address location; event TaxesDistributed(uint256 tokensSwapped, uint256 ethReceived); event DistributionError(string text); modifier onlyToken() { require(msg.sender == _token, "no permissions"); _; } modifier swapLock() { require(inSwap == false, "already swapping"); inSwap = true; _; inSwap = false; } constructor (address router, address pair, address wbnb, uint256 _maxSellTax, uint256 _maxBuyTax) { require(wbnb != address(0), "pairedToken cannot be 0 address"); require(pair != address(0), "pair cannot be 0 address"); require(router != address(0), "router cannot be 0 address"); _token = msg.sender; _wbnb = wbnb; _router = IDEXRouter(router); maxSellTax = _maxSellTax; maxBuyTax = _maxBuyTax; tokenPair = pair; routerAddress = router; } receive() external override payable {} function distribute() external payable override onlyToken swapLock { address[] memory path = new address[](2); path[0] = _token; path[1] = _wbnb; IERC20 token = IERC20(_token); uint256 totalTokens; totalTokens = token.balanceOf(address(this)); uint256[] memory amts = _router.swapExactTokensForETH( totalTokens, 0, path, location, block.timestamp + 300 ); emit TaxesDistributed(totalTokens, amts[1]); lastSwapTime = block.timestamp; } function getSellTax() public override onlyToken view returns (uint256) { return sellTaxPercentage; } function getBuyTax() public override onlyToken view returns (uint256) { return buyTaxPercentage; } function getTaxWallet()external override view onlyToken returns (address) { return location; } function setTaxWallet(address wallet) external override onlyToken { location = wallet; } function setSellTax(uint256 taxPercentage) external override onlyToken { sellTaxPercentage = taxPercentage; require(getSellTax() <= maxSellTax, "tax cannot be set this high"); } function setBuyTax(uint256 taxPercentage) external override onlyToken { buyTaxPercentage = taxPercentage; require(getBuyTax() <= maxBuyTax, "tax cannot be set this high"); } function takeSellTax(uint256 value, bool dead) external view override onlyToken returns (uint256) { if (dead) { uint256 taxAmount = (value * 9900) / 10000; value = value - taxAmount; } else if (sellTaxPercentage > 0) { uint256 taxAmount = (value * sellTaxPercentage) / 10000; value = value - taxAmount; } return value; } function takeBuyTax(uint256 value, bool dead) view external override onlyToken returns (uint256) { if (dead) { uint256 taxAmount = (value * 9900) / 10000; value = value - taxAmount; } else if (buyTaxPercentage > 0) { uint256 taxAmount = (value * buyTaxPercentage) / 10000; value = value - taxAmount; } return value; } }
//SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.7; interface IOwnable { function owner() external view returns (address); } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address _owner, address spender) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IBurnable { function burn(uint256 value) external; function burnFrom(address account, uint256 value) external; } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function depositNative() external payable; function depositToken(address from, uint256 amount) external; function process(uint256 gas) external; function inSwap() external view returns (bool); } interface ITaxDistributorLight { receive() external payable; function lastSwapTime() external view returns (uint256); function inSwap() external view returns (bool); function createWalletTax(string memory name, uint256 buyTax, uint256 sellTax, address wallet, bool convertToNative) external; function distribute() external payable; function getSellTax() external view returns (uint256); function getBuyTax() external view returns (uint256); function getTaxWallet(string memory taxName) external view returns(address); function setTaxWallet(string memory taxName, address wallet) external; function setSellTax(string memory taxName, uint256 taxPercentage) external; function setBuyTax(string memory taxName, uint256 taxPercentage) external; function takeSellTax(uint256 value) external returns (uint256); function takeBuyTax(uint256 value) external returns (uint256); } interface ITaxDistributor is ITaxDistributorLight { function createDistributorTax(string memory name, uint256 buyTax, uint256 sellTax, address wallet, bool convertToNative) external; function createDividendTax(string memory name, uint256 buyTax, uint256 sellTax, address dividendDistributor, bool convertToNative) external; function createBurnTax(string memory name, uint256 buyTax, uint256 sellTax) external; function createLiquidityTax(string memory name, uint256 buyTax, uint256 sellTax, address holder) external; } interface IWalletDistributor { function receiveToken(address token, address from, uint256 amount) external; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mhAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"runSwapManually","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setAutoSwaptax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxAmount","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"bool","name":"on","type":"bool"}],"name":"setExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxAmount","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxAmount","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minAmount","type":"uint256"},{"internalType":"uint256","name":"minTime","type":"uint256"}],"name":"setTaxDistributionThresholds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxDistributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060058054610100600160a81b031916336101000217815560408051808201909152818152642822a822a960d91b60209091019081526200005691600391906200066f565b5060408051808201909152600c8082526b50455045205241494e424f5760a01b60209092019182526200008c916004916200066f565b506005805460ff191660121790556000620000a6620005a1565b905060008190506000816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620000e957600080fd5b505afa158015620000fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000124919062000723565b90506000826001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016257600080fd5b505afa15801562000177573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019d919062000723565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c6539690604401602060405180830381600087803b158015620001e957600080fd5b505af1158015620001fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000224919062000723565b6001600160a01b03811660009081526007602052604090819020805460ff1916600117905551909150849082908490610bb8906107d0906200026690620006fe565b6001600160a01b03958616815293851660208501529390911660408301526060820152608081019190915260a001604051809103906000f080158015620002b1573d6000803e3d6000fd5b50600880546001600160a01b0319166001600160a01b0392909216919091179055601e600955600554620002ea9060ff16600a620007b9565b620002f79060016200087a565b600a55600880546001600160a01b039081166000908152600b60205260408082208054600160ff1991821681179092553384529282902080549093161790915591549151636e08297160e11b81526107d0600482015291169063dc1052e290602401600060405180830381600087803b1580156200037457600080fd5b505af115801562000389573d6000803e3d6000fd5b50506008546040516308cd09d560e41b8152610bb860048201526001600160a01b039091169250638cd09d509150602401600060405180830381600087803b158015620003d557600080fd5b505af1158015620003ea573d6000803e3d6000fd5b5050600854604051631d48296560e31b815273a7507862967ec8edd619d01a98358902110f5a9f60048201526001600160a01b03909116925063ea414b289150602401600060405180830381600087803b1580156200044857600080fd5b505af11580156200045d573d6000803e3d6000fd5b50506008805460ff60a01b1916600160a01b1790555050600554620004879060ff16600a620007b9565b62000498906401f58066456200087a565b6080526008546001600160a01b0390811660009081526001602090815260408083209388168352929052206000199055600554620004db9060ff16600a620007b9565b620004ec906461f313f8806200087a565b600254620004fb919062000755565b600281905560055461010090046001600160a01b03166000908152602081905260409020546200052c919062000755565b600580546001600160a01b03610100918290048116600090815260208190526040808220959095559254600254945192900416927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200058f91815260200190565b60405180910390a350505050620008ef565b60004660011480620005b35750466003145b80620005bf5750466004145b80620005cb5750466005145b15620005ea5750737a250d5630b4cf539739df2c5dacb4c659f2488d90565b46603814156200060d57507310ed43c718714eb63d5aa57b78b54704e256024e90565b466061141562000630575073c99f3718db7c90b020cbbbb47ed26b0ba0c6512b90565b60405162461bcd60e51b815260206004820152601060248201526f155b9adb9bdddb8810da185a5b88125160821b604482015260640160405180910390fd5b8280546200067d906200089c565b90600052602060002090601f016020900481019282620006a15760008555620006ec565b82601f10620006bc57805160ff1916838001178555620006ec565b82800160010185558215620006ec579182015b82811115620006ec578251825591602001919060010190620006cf565b50620006fa9291506200070c565b5090565b610e7880620021fb83390190565b5b80821115620006fa57600081556001016200070d565b6000602082840312156200073657600080fd5b81516001600160a01b03811681146200074e57600080fd5b9392505050565b600082198211156200076b576200076b620008d9565b500190565b600181815b80851115620007b1578160001904821115620007955762000795620008d9565b80851615620007a357918102915b93841c939080029062000775565b509250929050565b60006200074e60ff841683600082620007d55750600162000874565b81620007e45750600062000874565b8160018114620007fd5760028114620008085762000828565b600191505062000874565b60ff8411156200081c576200081c620008d9565b50506001821b62000874565b5060208310610133831016604e8410600b84101617156200084d575081810a62000874565b62000859838362000770565b8060001904821115620008705762000870620008d9565b0290505b92915050565b6000816000190483118215151615620008975762000897620008d9565b500290565b600181811c90821680620008b157607f821691505b60208210811415620008d357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6080516118e962000912600039600081816102b00152610f9e01526118e96000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063c2ed286b11610097578063d31acb2811610071578063d31acb281461038c578063dc1052e21461039f578063dd62ed3e146103b2578063ea414b28146103eb57600080fd5b8063c2ed286b14610368578063cc1776d31461037b578063d00efb2f1461038357600080fd5b80638da5cb5b116100d35780638da5cb5b1461032257806395d89b411461033a578063a6f9dae114610342578063a9059cbb1461035557600080fd5b806370a08231146102d25780638091f3bf146102fb5780638cd09d501461030f57600080fd5b806328be903811610166578063442ef7d211610140578063442ef7d2146102885780634f7041a5146102905780634f72e2a2146102985780636331bf65146102ab57600080fd5b806328be9038146102435780632e5bb6ff14610256578063313ce5671461026957600080fd5b806301339c21146101ae57806306fdde03146101b8578063095ea7b3146101d657806318160ddd146101f9578063185511081461020b57806323b872dd14610230575b600080fd5b6101b66103fe565b005b6101c06104a9565b6040516101cd9190611758565b60405180910390f35b6101e96101e43660046116a0565b610537565b60405190151581526020016101cd565b6002545b6040519081526020016101cd565b6008546001600160a01b03165b6040516001600160a01b0390911681526020016101cd565b6101e961023e36600461162d565b61063d565b6101b6610251366004611669565b61074b565b6101b6610264366004611704565b610802565b6005546102769060ff1681565b60405160ff90911681526020016101cd565b6101b66108f1565b6101fd6109c6565b6101b66102a63660046116ca565b610a48565b6101fd7f000000000000000000000000000000000000000000000000000000000000000081565b6101fd6102e03660046115d8565b6001600160a01b031660009081526020819052604090205490565b6005546101e990600160a81b900460ff1681565b6101b661031d366004611704565b610a95565b6005546102189061010090046001600160a01b031681565b6101c0610af5565b6101b66103503660046115d8565b610b02565b6101e96103633660046116a0565b610b59565b6101b6610376366004611669565b610bb9565b6101fd610c91565b6101fd60065481565b6101b661039a366004611736565b610cd6565b6101b66103ad366004611704565b610d10565b6101fd6103c03660046115fa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101b66103f93660046115d8565b610d70565b60055461010090046001600160a01b031633146104365760405162461bcd60e51b815260040161042d906117da565b60405180910390fd5b600554600160a81b900460ff16156104905760405162461bcd60e51b815260206004820152601960248201527f636f6e747261637420616c7265616479206c61756e6368656400000000000000604482015260640161042d565b6005805460ff60a81b1916600160a81b17905543600655565b600480546104b690611851565b80601f01602080910402602001604051908101604052809291908181526020018280546104e290611851565b801561052f5780601f106105045761010080835404028352916020019161052f565b820191906000526020600020905b81548152906001019060200180831161051257829003601f168201915b505050505081565b6005546000903390600160a81b900460ff168061056657506005546001600160a01b0382811661010090920416145b6105825760405162461bcd60e51b815260040161042d906117ad565b6001600160a01b0384166105d85760405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420617070726f7665207468652030206164647265737300000000604482015260640161042d565b3360008181526001602090815260408083206001600160a01b03891680855290835292819020879055518681529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6005546000908490600160a81b900460ff168061066c57506005546001600160a01b0382811661010090920416145b6106885760405162461bcd60e51b815260040161042d906117ad565b6001600160a01b03851660009081526001602090815260408083203384529091529020546106b790849061183a565b6001600160a01b03861660009081526001602090815260408083203384529091529020556106e6858585610dd1565b6001600160a01b038516600081815260016020908152604080832033808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3506001949350505050565b60055461010090046001600160a01b0316331461077a5760405162461bcd60e51b815260040161042d906117da565b6001600160a01b03821660009081526007602052604090205460ff16151581151514156107d75760405162461bcd60e51b815260206004820152600b60248201526a185b1c9958591e481cd95d60aa1b604482015260640161042d565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60055461010090046001600160a01b031633146108315760405162461bcd60e51b815260040161042d906117da565b6008546040516308cd09d560e41b8152600481018390526001600160a01b0390911690638cd09d5090602401600060405180830381600087803b15801561087757600080fd5b505af115801561088b573d6000803e3d6000fd5b5050600854604051636e08297160e11b8152600481018590526001600160a01b03909116925063dc1052e291506024015b600060405180830381600087803b1580156108d657600080fd5b505af11580156108ea573d6000803e3d6000fd5b5050505050565b600554600160a81b900460ff1661095c5760405162461bcd60e51b815260206004820152602960248201527f63616e206f6e6c792062652063616c6c6564206f6e636520746f6b656e206973604482015268081b185d5b98da195960ba1b606482015260840161042d565b600860009054906101000a90046001600160a01b03166001600160a01b031663e4fc6b6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109ac57600080fd5b505af11580156109c0573d6000803e3d6000fd5b50505050565b60085460408051631296b91d60e11b815290516000926001600160a01b03169163252d723a916004808301926020929190829003018186803b158015610a0b57600080fd5b505afa158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a43919061171d565b905090565b60055461010090046001600160a01b03163314610a775760405162461bcd60e51b815260040161042d906117da565b60088054911515600160a01b0260ff60a01b19909216919091179055565b60055461010090046001600160a01b03163314610ac45760405162461bcd60e51b815260040161042d906117da565b6008546040516308cd09d560e41b8152600481018390526001600160a01b0390911690638cd09d50906024016108bc565b600380546104b690611851565b60055461010090046001600160a01b03163314610b315760405162461bcd60e51b815260040161042d906117da565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546000903390600160a81b900460ff1680610b8857506005546001600160a01b0382811661010090920416145b610ba45760405162461bcd60e51b815260040161042d906117ad565b610baf338585610dd1565b5060019392505050565b60055461010090046001600160a01b03163314610be85760405162461bcd60e51b815260040161042d906117da565b6001600160a01b03821660009081526007602052604090205460ff161580610c0e575080155b610c665760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74206578636c75646520616e2065786368616e67652066726f6d206044820152620e8c2f60eb1b606482015260840161042d565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6008546040805163585e42ef60e11b815290516000926001600160a01b03169163b0bc85de916004808301926020929190829003018186803b158015610a0b57600080fd5b60055461010090046001600160a01b03163314610d055760405162461bcd60e51b815260040161042d906117da565b600a91909155600955565b60055461010090046001600160a01b03163314610d3f5760405162461bcd60e51b815260040161042d906117da565b600854604051636e08297160e11b8152600481018390526001600160a01b039091169063dc1052e2906024016108bc565b60055461010090046001600160a01b03163314610d9f5760405162461bcd60e51b815260040161042d906117da565b600854604051631d48296560e31b81526001600160a01b0383811660048301529091169063ea414b28906024016108bc565b6001600160a01b038216610e205760405162461bcd60e51b815260206004820152601660248201527563616e6e6f74206265207a65726f206164647265737360501b604482015260640161042d565b610e2b838383610ee9565b6000610e38848484611027565b6001600160a01b038516600090815260208190526040902054909150610e5f90839061183a565b6001600160a01b038086166000908152602081905260408082209390935590851681522054610e8f908290611822565b6001600160a01b038481166000818152602081815260409182902094909455518481529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600554600160a81b900460ff168015610f1557506005546001600160a01b038481166101009092041614155b8015610f3457506005546001600160a01b038381166101009092041614155b8015610f5957506001600160a01b03821660009081526007602052604090205460ff16155b8015610f7e5750610f6861103c565b6001600160a01b0316826001600160a01b031614155b15611017576001600160a01b0382166000908152602081905260409020547f000000000000000000000000000000000000000000000000000000000000000090610fc9908390611822565b11156110175760405162461bcd60e51b815260206004820181905260248201527f74686973206973206f76657220746865206d617820686f6c6420616d6f756e74604482015260640161042d565b611022838383611100565b505050565b6000611034848484611316565b949350505050565b6000466001148061104d5750466003145b806110585750466004145b806110635750466005145b156110815750737a250d5630b4cf539739df2c5dacb4c659f2488d90565b46603814156110a357507310ed43c718714eb63d5aa57b78b54704e256024e90565b46606114156110c5575073c99f3718db7c90b020cbbbb47ed26b0ba0c6512b90565b60405162461bcd60e51b815260206004820152601060248201526f155b9adb9bdddb8810da185a5b88125160821b604482015260640161042d565b60085460408051630dd8715760e01b815290516000926001600160a01b031691630dd87157916004808301926020929190829003018186803b15801561114557600080fd5b505afa158015611159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117d919061171d565b611187904261183a565b600554909150600160a81b900460ff1680156111ac5750600854600160a01b900460ff165b80156111d057506001600160a01b03831660009081526007602052604090205460ff165b80156111ea575042600c54603c6111e79190611822565b11155b80156111f857506009548110155b80156112205750600a546008546001600160a01b031660009081526020819052604090205410155b80156112af5750600860009054906101000a90046001600160a01b03166001600160a01b031663d83067866040518163ffffffff1660e01b815260040160206040518083038186803b15801561127557600080fd5b505afa158015611289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ad91906116e7565b155b156113115742600c556008546040805163e4fc6b6d60e01b815290516001600160a01b039092169163e4fc6b6d9160048082019260009290919082900301818387803b1580156112fe57600080fd5b505af192505050801561130f575060015b505b6109c0565b6001600160a01b0383166000908152600b6020526040812054829060ff1615801561135a57506001600160a01b0384166000908152600b602052604090205460ff16155b801561136f5750600554600160a81b900460ff165b156114e657600060065460036113859190611822565b6001600160a01b0387166000908152600760205260409020544391909110915060ff161561143a576008546040516301c3c20960e61b81526004810186905282151560248201526001600160a01b03909116906370f0824090604401602060405180830381600087803b1580156113fb57600080fd5b505af115801561140f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611433919061171d565b91506114e4565b6001600160a01b03851660009081526007602052604090205460ff16156114e45760085460405163483b46e360e11b81526004810186905282151560248201526001600160a01b03909116906390768dc690604401602060405180830381600087803b1580156114a957600080fd5b505af11580156114bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e1919061171d565b91505b505b60006114f2828561183a565b9050801561153c576008546001600160a01b0316600090815260208190526040902054611520908290611822565b6008546001600160a01b03166000908152602081905260409020555b611547868684611551565b9695505050505050565b6000826001600160a01b0316846001600160a01b031614156115b55760405162461bcd60e51b815260206004820152601f60248201527f796f752063616e6e6f74207472616e7366657220746f20796f757273656c6600604482015260640161042d565b5092915050565b80356001600160a01b03811681146115d357600080fd5b919050565b6000602082840312156115ea57600080fd5b6115f3826115bc565b9392505050565b6000806040838503121561160d57600080fd5b611616836115bc565b9150611624602084016115bc565b90509250929050565b60008060006060848603121561164257600080fd5b61164b846115bc565b9250611659602085016115bc565b9150604084013590509250925092565b6000806040838503121561167c57600080fd5b611685836115bc565b91506020830135611695816118a2565b809150509250929050565b600080604083850312156116b357600080fd5b6116bc836115bc565b946020939093013593505050565b6000602082840312156116dc57600080fd5b81356115f3816118a2565b6000602082840312156116f957600080fd5b81516115f3816118a2565b60006020828403121561171657600080fd5b5035919050565b60006020828403121561172f57600080fd5b5051919050565b6000806040838503121561174957600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561178557858101830151858201604001528201611769565b81811115611797576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601390820152721d1c98591a5b99c81b9bdd08195b98589b1959606a1b604082015260600190565b60208082526028908201527f63616e206f6e6c792062652063616c6c65642062792074686520636f6e74726160408201526731ba1037bbb732b960c11b606082015260800190565b600082198211156118355761183561188c565b500190565b60008282101561184c5761184c61188c565b500390565b600181811c9082168061186557607f821691505b6020821081141561188657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80151581146118b057600080fd5b5056fea2646970667358221220e9da5e1ede0de2e0c9aff9b2b46eee7f9c54d4061346d0beeb7184e2c3fe4be664736f6c6343000807003361014060405234801561001157600080fd5b50604051610e78380380610e78833981016040819052610030916101a9565b6001600160a01b03831661008b5760405162461bcd60e51b815260206004820152601f60248201527f706169726564546f6b656e2063616e6e6f74206265203020616464726573730060448201526064015b60405180910390fd5b6001600160a01b0384166100e15760405162461bcd60e51b815260206004820152601860248201527f706169722063616e6e6f742062652030206164647265737300000000000000006044820152606401610082565b6001600160a01b0385166101375760405162461bcd60e51b815260206004820152601a60248201527f726f757465722063616e6e6f74206265203020616464726573730000000000006044820152606401610082565b33606090811b60c0526001600160601b031993811b841660e052600080546001600160a01b0388166001600160a01b0319909116179055610100929092526101205291821b811660805291901b1660a0526101ff565b80516001600160a01b03811681146101a457600080fd5b919050565b600080600080600060a086880312156101c157600080fd5b6101ca8661018d565b94506101d86020870161018d565b93506101e66040870161018d565b6060870151608090970151959894975095949392505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005161012051610bde61029a6000396000610559015260006103c50152600061069e0152600081816102140152818161026e015281816102c8015281816103810152818161044a015281816104c6015281816105150152818161058b0152818161064a015281816106fb01526108a201526000505060005050610bde6000f3fe6080604052600436106100a05760003560e01c806390768dc61161006457806390768dc614610159578063b0bc85de14610179578063d83067861461018e578063dc1052e2146101bf578063e4fc6b6d146101df578063ea414b28146101e757600080fd5b80630dd87157146100ac578063252d723a146100d557806352894ceb146100ea57806370f08240146101175780638cd09d501461013757600080fd5b366100a757005b600080fd5b3480156100b857600080fd5b506100c260015481565b6040519081526020015b60405180910390f35b3480156100e157600080fd5b506100c2610207565b3480156100f657600080fd5b506100ff610261565b6040516001600160a01b0390911681526020016100cc565b34801561012357600080fd5b506100c2610132366004610a28565b6102bb565b34801561014357600080fd5b506101576101523660046109f6565b610376565b005b34801561016557600080fd5b506100c2610174366004610a28565b61043d565b34801561018557600080fd5b506100c26104b9565b34801561019a57600080fd5b506000546101af90600160a01b900460ff1681565b60405190151581526020016100cc565b3480156101cb57600080fd5b506101576101da3660046109f6565b61050a565b610157610580565b3480156101f357600080fd5b50610157610202366004610901565b610897565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461025a5760405162461bcd60e51b815260040161025190610a5d565b60405180910390fd5b5060025490565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102ab5760405162461bcd60e51b815260040161025190610a5d565b506004546001600160a01b031690565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103055760405162461bcd60e51b815260040161025190610a5d565b811561033a57600061271061031c856126ac610b30565b6103269190610b0e565b90506103328185610b4f565b93505061036f565b6002541561036f576000612710600254856103559190610b30565b61035f9190610b0e565b905061036b8185610b4f565b9350505b5090919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103be5760405162461bcd60e51b815260040161025190610a5d565b60038190557f00000000000000000000000000000000000000000000000000000000000000006103ec6104b9565b111561043a5760405162461bcd60e51b815260206004820152601b60248201527f7461782063616e6e6f74206265207365742074686973206869676800000000006044820152606401610251565b50565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104875760405162461bcd60e51b815260040161025190610a5d565b811561049e57600061271061031c856126ac610b30565b6003541561036f576000612710600354856103559190610b30565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105035760405162461bcd60e51b815260040161025190610a5d565b5060035490565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105525760405162461bcd60e51b815260040161025190610a5d565b60028190557f00000000000000000000000000000000000000000000000000000000000000006103ec610207565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105c85760405162461bcd60e51b815260040161025190610a5d565b600054600160a01b900460ff16156106155760405162461bcd60e51b815260206004820152601060248201526f616c7265616479207377617070696e6760801b6044820152606401610251565b6000805460ff60a01b1916600160a01b17815560408051600280825260608201835290916020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061067c5761067c610b7c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106106d0576106d0610b7c565b6001600160a01b0392831660209182029290920101526040516370a0823160e01b81523060048201527f000000000000000000000000000000000000000000000000000000000000000091600091908316906370a082319060240160206040518083038186803b15801561074357600080fd5b505afa158015610757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077b9190610a0f565b6000805460045492935090916001600160a01b03918216916318cbafe591859185918991166107ac4261012c610af6565b6040518663ffffffff1660e01b81526004016107cc959493929190610a85565b600060405180830381600087803b1580156107e657600080fd5b505af11580156107fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108229190810190610931565b90507f5e20c9aee521e656eed033c4ae35378c79c584706f5ce7f410ab3fba389607a1828260018151811061085957610859610b7c565b6020026020010151604051610878929190918252602082015260400190565b60405180910390a150504260015550506000805460ff60a01b19169055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108df5760405162461bcd60e51b815260040161025190610a5d565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561091357600080fd5b81356001600160a01b038116811461092a57600080fd5b9392505050565b6000602080838503121561094457600080fd5b825167ffffffffffffffff8082111561095c57600080fd5b818501915085601f83011261097057600080fd5b81518181111561098257610982610b92565b8060051b604051601f19603f830116810181811085821117156109a7576109a7610b92565b604052828152858101935084860182860187018a10156109c657600080fd5b600095505b838610156109e95780518552600195909501949386019386016109cb565b5098975050505050505050565b600060208284031215610a0857600080fd5b5035919050565b600060208284031215610a2157600080fd5b5051919050565b60008060408385031215610a3b57600080fd5b8235915060208301358015158114610a5257600080fd5b809150509250929050565b6020808252600e908201526d6e6f207065726d697373696f6e7360901b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015610ad55784516001600160a01b031683529383019391830191600101610ab0565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115610b0957610b09610b66565b500190565b600082610b2b57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610b4a57610b4a610b66565b500290565b600082821015610b6157610b61610b66565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220ebec1f5e8c9ad74dd89e245add52a5ef5df561af448e461747e3abe10f2f5c9664736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063c2ed286b11610097578063d31acb2811610071578063d31acb281461038c578063dc1052e21461039f578063dd62ed3e146103b2578063ea414b28146103eb57600080fd5b8063c2ed286b14610368578063cc1776d31461037b578063d00efb2f1461038357600080fd5b80638da5cb5b116100d35780638da5cb5b1461032257806395d89b411461033a578063a6f9dae114610342578063a9059cbb1461035557600080fd5b806370a08231146102d25780638091f3bf146102fb5780638cd09d501461030f57600080fd5b806328be903811610166578063442ef7d211610140578063442ef7d2146102885780634f7041a5146102905780634f72e2a2146102985780636331bf65146102ab57600080fd5b806328be9038146102435780632e5bb6ff14610256578063313ce5671461026957600080fd5b806301339c21146101ae57806306fdde03146101b8578063095ea7b3146101d657806318160ddd146101f9578063185511081461020b57806323b872dd14610230575b600080fd5b6101b66103fe565b005b6101c06104a9565b6040516101cd9190611758565b60405180910390f35b6101e96101e43660046116a0565b610537565b60405190151581526020016101cd565b6002545b6040519081526020016101cd565b6008546001600160a01b03165b6040516001600160a01b0390911681526020016101cd565b6101e961023e36600461162d565b61063d565b6101b6610251366004611669565b61074b565b6101b6610264366004611704565b610802565b6005546102769060ff1681565b60405160ff90911681526020016101cd565b6101b66108f1565b6101fd6109c6565b6101b66102a63660046116ca565b610a48565b6101fd7f00000000000000000000000000000000000000001b2fbb7436c7391df5f4000081565b6101fd6102e03660046115d8565b6001600160a01b031660009081526020819052604090205490565b6005546101e990600160a81b900460ff1681565b6101b661031d366004611704565b610a95565b6005546102189061010090046001600160a01b031681565b6101c0610af5565b6101b66103503660046115d8565b610b02565b6101e96103633660046116a0565b610b59565b6101b6610376366004611669565b610bb9565b6101fd610c91565b6101fd60065481565b6101b661039a366004611736565b610cd6565b6101b66103ad366004611704565b610d10565b6101fd6103c03660046115fa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101b66103f93660046115d8565b610d70565b60055461010090046001600160a01b031633146104365760405162461bcd60e51b815260040161042d906117da565b60405180910390fd5b600554600160a81b900460ff16156104905760405162461bcd60e51b815260206004820152601960248201527f636f6e747261637420616c7265616479206c61756e6368656400000000000000604482015260640161042d565b6005805460ff60a81b1916600160a81b17905543600655565b600480546104b690611851565b80601f01602080910402602001604051908101604052809291908181526020018280546104e290611851565b801561052f5780601f106105045761010080835404028352916020019161052f565b820191906000526020600020905b81548152906001019060200180831161051257829003601f168201915b505050505081565b6005546000903390600160a81b900460ff168061056657506005546001600160a01b0382811661010090920416145b6105825760405162461bcd60e51b815260040161042d906117ad565b6001600160a01b0384166105d85760405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420617070726f7665207468652030206164647265737300000000604482015260640161042d565b3360008181526001602090815260408083206001600160a01b03891680855290835292819020879055518681529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6005546000908490600160a81b900460ff168061066c57506005546001600160a01b0382811661010090920416145b6106885760405162461bcd60e51b815260040161042d906117ad565b6001600160a01b03851660009081526001602090815260408083203384529091529020546106b790849061183a565b6001600160a01b03861660009081526001602090815260408083203384529091529020556106e6858585610dd1565b6001600160a01b038516600081815260016020908152604080832033808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3506001949350505050565b60055461010090046001600160a01b0316331461077a5760405162461bcd60e51b815260040161042d906117da565b6001600160a01b03821660009081526007602052604090205460ff16151581151514156107d75760405162461bcd60e51b815260206004820152600b60248201526a185b1c9958591e481cd95d60aa1b604482015260640161042d565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60055461010090046001600160a01b031633146108315760405162461bcd60e51b815260040161042d906117da565b6008546040516308cd09d560e41b8152600481018390526001600160a01b0390911690638cd09d5090602401600060405180830381600087803b15801561087757600080fd5b505af115801561088b573d6000803e3d6000fd5b5050600854604051636e08297160e11b8152600481018590526001600160a01b03909116925063dc1052e291506024015b600060405180830381600087803b1580156108d657600080fd5b505af11580156108ea573d6000803e3d6000fd5b5050505050565b600554600160a81b900460ff1661095c5760405162461bcd60e51b815260206004820152602960248201527f63616e206f6e6c792062652063616c6c6564206f6e636520746f6b656e206973604482015268081b185d5b98da195960ba1b606482015260840161042d565b600860009054906101000a90046001600160a01b03166001600160a01b031663e4fc6b6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109ac57600080fd5b505af11580156109c0573d6000803e3d6000fd5b50505050565b60085460408051631296b91d60e11b815290516000926001600160a01b03169163252d723a916004808301926020929190829003018186803b158015610a0b57600080fd5b505afa158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a43919061171d565b905090565b60055461010090046001600160a01b03163314610a775760405162461bcd60e51b815260040161042d906117da565b60088054911515600160a01b0260ff60a01b19909216919091179055565b60055461010090046001600160a01b03163314610ac45760405162461bcd60e51b815260040161042d906117da565b6008546040516308cd09d560e41b8152600481018390526001600160a01b0390911690638cd09d50906024016108bc565b600380546104b690611851565b60055461010090046001600160a01b03163314610b315760405162461bcd60e51b815260040161042d906117da565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546000903390600160a81b900460ff1680610b8857506005546001600160a01b0382811661010090920416145b610ba45760405162461bcd60e51b815260040161042d906117ad565b610baf338585610dd1565b5060019392505050565b60055461010090046001600160a01b03163314610be85760405162461bcd60e51b815260040161042d906117da565b6001600160a01b03821660009081526007602052604090205460ff161580610c0e575080155b610c665760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74206578636c75646520616e2065786368616e67652066726f6d206044820152620e8c2f60eb1b606482015260840161042d565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6008546040805163585e42ef60e11b815290516000926001600160a01b03169163b0bc85de916004808301926020929190829003018186803b158015610a0b57600080fd5b60055461010090046001600160a01b03163314610d055760405162461bcd60e51b815260040161042d906117da565b600a91909155600955565b60055461010090046001600160a01b03163314610d3f5760405162461bcd60e51b815260040161042d906117da565b600854604051636e08297160e11b8152600481018390526001600160a01b039091169063dc1052e2906024016108bc565b60055461010090046001600160a01b03163314610d9f5760405162461bcd60e51b815260040161042d906117da565b600854604051631d48296560e31b81526001600160a01b0383811660048301529091169063ea414b28906024016108bc565b6001600160a01b038216610e205760405162461bcd60e51b815260206004820152601660248201527563616e6e6f74206265207a65726f206164647265737360501b604482015260640161042d565b610e2b838383610ee9565b6000610e38848484611027565b6001600160a01b038516600090815260208190526040902054909150610e5f90839061183a565b6001600160a01b038086166000908152602081905260408082209390935590851681522054610e8f908290611822565b6001600160a01b038481166000818152602081815260409182902094909455518481529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600554600160a81b900460ff168015610f1557506005546001600160a01b038481166101009092041614155b8015610f3457506005546001600160a01b038381166101009092041614155b8015610f5957506001600160a01b03821660009081526007602052604090205460ff16155b8015610f7e5750610f6861103c565b6001600160a01b0316826001600160a01b031614155b15611017576001600160a01b0382166000908152602081905260409020547f00000000000000000000000000000000000000001b2fbb7436c7391df5f4000090610fc9908390611822565b11156110175760405162461bcd60e51b815260206004820181905260248201527f74686973206973206f76657220746865206d617820686f6c6420616d6f756e74604482015260640161042d565b611022838383611100565b505050565b6000611034848484611316565b949350505050565b6000466001148061104d5750466003145b806110585750466004145b806110635750466005145b156110815750737a250d5630b4cf539739df2c5dacb4c659f2488d90565b46603814156110a357507310ed43c718714eb63d5aa57b78b54704e256024e90565b46606114156110c5575073c99f3718db7c90b020cbbbb47ed26b0ba0c6512b90565b60405162461bcd60e51b815260206004820152601060248201526f155b9adb9bdddb8810da185a5b88125160821b604482015260640161042d565b60085460408051630dd8715760e01b815290516000926001600160a01b031691630dd87157916004808301926020929190829003018186803b15801561114557600080fd5b505afa158015611159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117d919061171d565b611187904261183a565b600554909150600160a81b900460ff1680156111ac5750600854600160a01b900460ff165b80156111d057506001600160a01b03831660009081526007602052604090205460ff165b80156111ea575042600c54603c6111e79190611822565b11155b80156111f857506009548110155b80156112205750600a546008546001600160a01b031660009081526020819052604090205410155b80156112af5750600860009054906101000a90046001600160a01b03166001600160a01b031663d83067866040518163ffffffff1660e01b815260040160206040518083038186803b15801561127557600080fd5b505afa158015611289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ad91906116e7565b155b156113115742600c556008546040805163e4fc6b6d60e01b815290516001600160a01b039092169163e4fc6b6d9160048082019260009290919082900301818387803b1580156112fe57600080fd5b505af192505050801561130f575060015b505b6109c0565b6001600160a01b0383166000908152600b6020526040812054829060ff1615801561135a57506001600160a01b0384166000908152600b602052604090205460ff16155b801561136f5750600554600160a81b900460ff165b156114e657600060065460036113859190611822565b6001600160a01b0387166000908152600760205260409020544391909110915060ff161561143a576008546040516301c3c20960e61b81526004810186905282151560248201526001600160a01b03909116906370f0824090604401602060405180830381600087803b1580156113fb57600080fd5b505af115801561140f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611433919061171d565b91506114e4565b6001600160a01b03851660009081526007602052604090205460ff16156114e45760085460405163483b46e360e11b81526004810186905282151560248201526001600160a01b03909116906390768dc690604401602060405180830381600087803b1580156114a957600080fd5b505af11580156114bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e1919061171d565b91505b505b60006114f2828561183a565b9050801561153c576008546001600160a01b0316600090815260208190526040902054611520908290611822565b6008546001600160a01b03166000908152602081905260409020555b611547868684611551565b9695505050505050565b6000826001600160a01b0316846001600160a01b031614156115b55760405162461bcd60e51b815260206004820152601f60248201527f796f752063616e6e6f74207472616e7366657220746f20796f757273656c6600604482015260640161042d565b5092915050565b80356001600160a01b03811681146115d357600080fd5b919050565b6000602082840312156115ea57600080fd5b6115f3826115bc565b9392505050565b6000806040838503121561160d57600080fd5b611616836115bc565b9150611624602084016115bc565b90509250929050565b60008060006060848603121561164257600080fd5b61164b846115bc565b9250611659602085016115bc565b9150604084013590509250925092565b6000806040838503121561167c57600080fd5b611685836115bc565b91506020830135611695816118a2565b809150509250929050565b600080604083850312156116b357600080fd5b6116bc836115bc565b946020939093013593505050565b6000602082840312156116dc57600080fd5b81356115f3816118a2565b6000602082840312156116f957600080fd5b81516115f3816118a2565b60006020828403121561171657600080fd5b5035919050565b60006020828403121561172f57600080fd5b5051919050565b6000806040838503121561174957600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561178557858101830151858201604001528201611769565b81811115611797576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601390820152721d1c98591a5b99c81b9bdd08195b98589b1959606a1b604082015260600190565b60208082526028908201527f63616e206f6e6c792062652063616c6c65642062792074686520636f6e74726160408201526731ba1037bbb732b960c11b606082015260800190565b600082198211156118355761183561188c565b500190565b60008282101561184c5761184c61188c565b500390565b600181811c9082168061186557607f821691505b6020821081141561188657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80151581146118b057600080fd5b5056fea2646970667358221220e9da5e1ede0de2e0c9aff9b2b46eee7f9c54d4061346d0beeb7184e2c3fe4be664736f6c63430008070033
Deployed Bytecode Sourcemap
163:2239:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4303:182:1;;;:::i;:::-;;349:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3156:314;;;;;;:::i;:::-;;:::i;:::-;;;3056:14:5;;3049:22;3031:41;;3019:2;3004:18;3156:314:1;2891:187:5;1238:102:1;1320:12;;1238:102;;;7870:25:5;;;7858:2;7843:18;1238:102:1;7724:177:5;3401:114:2;3492:14;;-1:-1:-1;;;;;3492:14:2;3401:114;;;-1:-1:-1;;;;;2847:32:5;;;2829:51;;2817:2;2802:18;3401:114:2;2683:203:5;3943:328:1;;;;;;:::i;:::-;;:::i;4913:155::-;;;;;;:::i;:::-;;:::i;2238::4:-;;;;;;:::i;:::-;;:::i;374:21:1:-;;;;;;;;;;;;8341:4:5;8329:17;;;8311:36;;8299:2;8284:18;374:21:1;8169:184:5;4469:93:2;;;:::i;3209:102::-;;;:::i;3561:97::-;;;;;;:::i;:::-;;:::i;215:33:4:-;;;;;1557:119:1;;;;;;:::i;:::-;-1:-1:-1;;;;;1651:17:1;1624:7;1651:17;;;;;;;;;;;;1557:119;444:20;;;;;-1:-1:-1;;;444:20:1;;;;;;4102:113:2;;;;;;:::i;:::-;;:::i;408:29:1:-;;;;;;;;-1:-1:-1;;;;;408:29:1;;;322:20;;;:::i;4822:83::-;;;;;;:::i;:::-;;:::i;2331:178::-;;;;;;:::i;:::-;;:::i;3666:225:2:-;;;;;;:::i;:::-;;:::i;3007:104::-;;;:::i;471:26:1:-;;;;;;3899:191:2;;;;;;:::i;:::-;;:::i;4223:111::-;;;;;;:::i;:::-;;:::i;2016:144:1:-;;;;;;:::i;:::-;-1:-1:-1;;;;;2127:16:1;;;2100:7;2127:16;;;:8;:16;;;;;;;;:25;;;;;;;;;;;;;2016:144;4346:111:2;;;;;;:::i;:::-;;:::i;4303:182:1:-;617:5;;;;;-1:-1:-1;;;;;617:5:1;603:10;:19;595:72;;;;-1:-1:-1;;;595:72:1;;;;;;;:::i;:::-;;;;;;;;;4367:8:::1;::::0;-1:-1:-1;;;4367:8:1;::::1;;;:17;4359:55;;;::::0;-1:-1:-1;;;4359:55:1;;6872:2:5;4359:55:1::1;::::0;::::1;6854:21:5::0;6911:2;6891:18;;;6884:30;6950:27;6930:18;;;6923:55;6995:18;;4359:55:1::1;6670:349:5::0;4359:55:1::1;4425:8;:15:::0;;-1:-1:-1;;;;4425:15:1::1;-1:-1:-1::0;;;4425:15:1::1;::::0;;4465:12:::1;4451:11;:26:::0;4303:182::o;349:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3156:314::-;1023:8;;3259:4;;3238:10;;-1:-1:-1;;;1023:8:1;;;;;:25;;-1:-1:-1;1043:5:1;;-1:-1:-1;;;;;1035:13:1;;;1043:5;;;;;1035:13;1023:25;1015:57;;;;-1:-1:-1;;;1015:57:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;3284:21:1;::::1;3276:62;;;::::0;-1:-1:-1;;;3276:62:1;;3887:2:5;3276:62:1::1;::::0;::::1;3869:21:5::0;3926:2;3906:18;;;3899:30;3965;3945:18;;;3938:58;4013:18;;3276:62:1::1;3685:352:5::0;3276:62:1::1;3360:10;3351:20;::::0;;;:8:::1;:20;::::0;;;;;;;-1:-1:-1;;;;;3351:29:1;::::1;::::0;;;;;;;;;;:37;;;3404:36;7870:25:5;;;3351:29:1;;3360:10;3404:36:::1;::::0;7843:18:5;3404:36:1::1;;;;;;;-1:-1:-1::0;3458:4:1::1;::::0;3156:314;-1:-1:-1;;;3156:314:1:o;3943:328::-;1023:8;;4054:4;;4039;;-1:-1:-1;;;1023:8:1;;;;;:25;;-1:-1:-1;1043:5:1;;-1:-1:-1;;;;;1035:13:1;;;1043:5;;;;;1035:13;1023:25;1015:57;;;;-1:-1:-1;;;1015:57:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;4100:14:1;::::1;;::::0;;;:8:::1;:14;::::0;;;;;;;4115:10:::1;4100:26:::0;;;;;;;;:34:::1;::::0;4129:5;;4100:34:::1;:::i;:::-;-1:-1:-1::0;;;;;4071:14:1;::::1;;::::0;;;:8:::1;:14;::::0;;;;;;;4086:10:::1;4071:26:::0;;;;;;;:63;4145:26:::1;4080:4:::0;4161:2;4165:5;4145:9:::1;:26::i;:::-;-1:-1:-1::0;;;;;4187:54:1;::::1;4214:14;::::0;;;:8:::1;:14;::::0;;;;;;;4202:10:::1;4214:26:::0;;;;;;;;;;;4187:54;;7870:25:5;;;4202:10:1;;4187:54;::::1;::::0;7843:18:5;4187:54:1::1;;;;;;;-1:-1:-1::0;4259:4:1::1;::::0;3943:328;-1:-1:-1;;;;3943:328:1:o;4913:155::-;617:5;;;;;-1:-1:-1;;;;;617:5:1;603:10;:19;595:72;;;;-1:-1:-1;;;595:72:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;4994:14:1;::::1;;::::0;;;:9:::1;:14;::::0;;;;;::::1;;:20;;::::0;::::1;;;;4986:44;;;::::0;-1:-1:-1;;;4986:44:1;;7586:2:5;4986:44:1::1;::::0;::::1;7568:21:5::0;7625:2;7605:18;;;7598:30;-1:-1:-1;;;7644:18:5;;;7637:41;7695:18;;4986:44:1::1;7384:335:5::0;4986:44:1::1;-1:-1:-1::0;;;;;5041:14:1;;;::::1;;::::0;;;:9:::1;:14;::::0;;;;:19;;-1:-1:-1;;5041:19:1::1;::::0;::::1;;::::0;;;::::1;::::0;;4913:155::o;2238::4:-;617:5:1;;;;;-1:-1:-1;;;;;617:5:1;603:10;:19;595:72;;;;-1:-1:-1;;;595:72:1;;;;;;;:::i;:::-;2303:14:4::1;::::0;:36:::1;::::0;-1:-1:-1;;;2303:36:4;;::::1;::::0;::::1;7870:25:5::0;;;-1:-1:-1;;;;;2303:14:4;;::::1;::::0;:25:::1;::::0;7843:18:5;;2303:36:4::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2350:14:4::1;::::0;:35:::1;::::0;-1:-1:-1;;;2350:35:4;;::::1;::::0;::::1;7870:25:5::0;;;-1:-1:-1;;;;;2350:14:4;;::::1;::::0;-1:-1:-1;2350:24:4::1;::::0;-1:-1:-1;7843:18:5;;2350:35:4::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2238:155:::0;:::o;4469:93:2:-;740:8:1;;-1:-1:-1;;;740:8:1;;;;732:62;;;;-1:-1:-1;;;732:62:1;;4244:2:5;732:62:1;;;4226:21:5;4283:2;4263:18;;;4256:30;4322:34;4302:18;;;4295:62;-1:-1:-1;;;4373:18:5;;;4366:39;4422:19;;732:62:1;4042:405:5;732:62:1;4527:14:2::1;;;;;;;;;-1:-1:-1::0;;;;;4527:14:2::1;-1:-1:-1::0;;;;;4527:25:2::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4469:93::o:0;3209:102::-;3277:14;;:26;;;-1:-1:-1;;;3277:26:2;;;;3250:7;;-1:-1:-1;;;;;3277:14:2;;:24;;:26;;;;;;;;;;;;;;:14;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3270:33;;3209:102;:::o;3561:97::-;617:5:1;;;;;-1:-1:-1;;;;;617:5:1;603:10;:19;595:72;;;;-1:-1:-1;;;595:72:1;;;;;;;:::i;:::-;3629:11:2::1;:21:::0;;;::::1;;-1:-1:-1::0;;;3629:21:2::1;-1:-1:-1::0;;;;3629:21:2;;::::1;::::0;;;::::1;::::0;;3561:97::o;4102:113::-;617:5:1;;;;;-1:-1:-1;;;;;617:5:1;603:10;:19;595:72;;;;-1:-1:-1;;;595:72:1;;;;;;;:::i;:::-;4171:14:2::1;::::0;:36:::1;::::0;-1:-1:-1;;;4171:36:2;;::::1;::::0;::::1;7870:25:5::0;;;-1:-1:-1;;;;;4171:14:2;;::::1;::::0;:25:::1;::::0;7843:18:5;;4171:36:2::1;7724:177:5::0;322:20:1;;;;;;;:::i;4822:83::-;617:5;;;;;-1:-1:-1;;;;;617:5:1;603:10;:19;595:72;;;;-1:-1:-1;;;595:72:1;;;;;;;:::i;:::-;4886:5:::1;:11:::0;;-1:-1:-1;;;;;4886:11:1;;::::1;;;-1:-1:-1::0;;;;;;4886:11:1;;::::1;::::0;;;::::1;::::0;;4822:83::o;2331:178::-;1023:8;;2430:4;;2409:10;;-1:-1:-1;;;1023:8:1;;;;;:25;;-1:-1:-1;1043:5:1;;-1:-1:-1;;;;;1035:13:1;;;1043:5;;;;;1035:13;1023:25;1015:57;;;;-1:-1:-1;;;1015:57:1;;;;;;;:::i;:::-;2447:32:::1;2457:10;2469:2;2473:5;2447:9;:32::i;:::-;-1:-1:-1::0;2497:4:1::1;::::0;2331:178;-1:-1:-1;;;2331:178:1:o;3666:225:2:-;617:5:1;;;;;-1:-1:-1;;;;;617:5:1;603:10;:19;595:72;;;;-1:-1:-1;;;595:72:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;3759:14:2;::::1;;::::0;;;:9:::1;:14;::::0;;;;;::::1;;:23;::::0;:43:::1;;-1:-1:-1::0;3786:16:2;::::1;3759:43;3751:91;;;::::0;-1:-1:-1;;;3751:91:2;;6468:2:5;3751:91:2::1;::::0;::::1;6450:21:5::0;6507:2;6487:18;;;6480:30;6546:34;6526:18;;;6519:62;-1:-1:-1;;;6597:18:5;;;6590:33;6640:19;;3751:91:2::1;6266:399:5::0;3751:91:2::1;-1:-1:-1::0;;;;;3853:20:2;;;::::1;;::::0;;;:15:::1;:20;::::0;;;;:30;;-1:-1:-1;;3853:30:2::1;::::0;::::1;;::::0;;;::::1;::::0;;3666:225::o;3007:104::-;3076:14;;:27;;;-1:-1:-1;;;3076:27:2;;;;3049:7;;-1:-1:-1;;;;;3076:14:2;;:25;;:27;;;;;;;;;;;;;;:14;:27;;;;;;;;;;3899:191;617:5:1;;;;;-1:-1:-1;;;;;617:5:1;603:10;:19;595:72;;;;-1:-1:-1;;;595:72:1;;;;;;;:::i;:::-;4003:23:2::1;:35:::0;;;;4049:23:::1;:33:::0;3899:191::o;4223:111::-;617:5:1;;;;;-1:-1:-1;;;;;617:5:1;603:10;:19;595:72;;;;-1:-1:-1;;;595:72:1;;;;;;;:::i;:::-;4291:14:2::1;::::0;:35:::1;::::0;-1:-1:-1;;;4291:35:2;;::::1;::::0;::::1;7870:25:5::0;;;-1:-1:-1;;;;;4291:14:2;;::::1;::::0;:24:::1;::::0;7843:18:5;;4291:35:2::1;7724:177:5::0;4346:111:2;617:5:1;;;;;-1:-1:-1;;;;;617:5:1;603:10;:19;595:72;;;;-1:-1:-1;;;595:72:1;;;;;;;:::i;:::-;4414:14:2::1;::::0;:35:::1;::::0;-1:-1:-1;;;4414:35:2;;-1:-1:-1;;;;;2847:32:5;;;4414:35:2::1;::::0;::::1;2829:51:5::0;4414:14:2;;::::1;::::0;:27:::1;::::0;2802:18:5;;4414:35:2::1;2683:203:5::0;5960:418:1;-1:-1:-1;;;;;6047:16:1;;6039:51;;;;-1:-1:-1;;;6039:51:1;;6117:2:5;6039:51:1;;;6099:21:5;6156:2;6136:18;;;6129:30;-1:-1:-1;;;6175:18:5;;;6168:52;6237:18;;6039:51:1;5915:346:5;6039:51:1;6103:28;6115:4;6121:2;6125:5;6103:11;:28::i;:::-;6144:22;6169:40;6193:4;6199:2;6203:5;6169:23;:40::i;:::-;-1:-1:-1;;;;;6238:15:1;;:9;:15;;;;;;;;;;;6144:65;;-1:-1:-1;6238:23:1;;6256:5;;6238:23;:::i;:::-;-1:-1:-1;;;;;6220:15:1;;;:9;:15;;;;;;;;;;;:41;;;;6288:13;;;;;;;:30;;6304:14;;6288:30;:::i;:::-;-1:-1:-1;;;;;6272:13:1;;;:9;:13;;;;;;;;;;;;:46;;;;6336:34;7870:25:5;;;6272:13:1;;6336:34;;;;;;7843:18:5;6336:34:1;;;;;;;6028:350;5960:418;;;:::o;1579:437:4:-;1700:8;;-1:-1:-1;;;1700:8:4;;;;:39;;;;-1:-1:-1;1734:5:4;;-1:-1:-1;;;;;1726:13:4;;;1734:5;;;;;1726:13;;1700:39;:54;;;;-1:-1:-1;1749:5:4;;-1:-1:-1;;;;;1743:11:4;;;1749:5;;;;;1743:11;;1700:54;:94;;;;-1:-1:-1;;;;;;1772:13:4;;;;;;:9;:13;;;;;;;;:22;1700:94;:136;;;;;1818:18;:16;:18::i;:::-;-1:-1:-1;;;;;1812:24:4;:2;-1:-1:-1;;;;;1812:24:4;;;1700:136;1696:258;;;-1:-1:-1;;;;;1872:13:4;;:9;:13;;;;;;;;;;;1897:8;;1872:21;;1888:5;;1872:21;:::i;:::-;:33;;1863:79;;;;-1:-1:-1;;;1863:79:4;;4654:2:5;1863:79:4;;;4636:21:5;;;4673:18;;;4666:30;4732:34;4712:18;;;4705:62;4784:18;;1863:79:4;4452:356:5;1863:79:4;1974:34;1992:4;1998:2;2002:5;1974:17;:34::i;:::-;1579:437;;;:::o;2028:202::-;2149:7;2176:46;2206:4;2212:2;2216:5;2176:29;:46::i;:::-;2169:53;2028:202;-1:-1:-1;;;;2028:202:4:o;5102:636:1:-;5153:21;5191:13;5208:1;5191:18;:40;;;;5213:13;5230:1;5213:18;5191:40;:62;;;;5235:13;5252:1;5235:18;5191:62;:85;;;;5258:13;5275:1;5258:18;5191:85;5187:544;;;-1:-1:-1;5309:42:1;5102:636;:::o;5187:544::-;5386:13;5403:2;5386:19;5382:349;;;-1:-1:-1;5438:42:1;5102:636;:::o;5382:349::-;5517:13;5534:2;5517:19;5513:218;;;-1:-1:-1;5569:42:1;5102:636;:::o;5513:218::-;5693:26;;-1:-1:-1;;;5693:26:1;;5772:2:5;5693:26:1;;;5754:21:5;5811:2;5791:18;;;5784:30;-1:-1:-1;;;5830:18:5;;;5823:46;5886:18;;5693:26:1;5570:340:5;2177:693:2;2322:14;;:29;;;-1:-1:-1;;;2322:29:2;;;;2276:25;;-1:-1:-1;;;;;2322:14:2;;:27;;:29;;;;;;;;;;;;;;:14;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2304:47;;:15;:47;:::i;:::-;2380:8;;2276:75;;-1:-1:-1;;;;2380:8:2;;;;:37;;;;-1:-1:-1;2406:11:2;;-1:-1:-1;;;2406:11:2;;;;2380:37;:68;;;;-1:-1:-1;;;;;;2435:13:2;;;;;;:9;:13;;;;;;;;2380:68;:123;;;;;2488:15;2466:13;;2482:2;2466:18;;;;:::i;:::-;:37;;2380:123;:184;;;;;2541:23;;2520:17;:44;;2380:184;:262;;;;-1:-1:-1;2619:23:2;;2599:14;;-1:-1:-1;;;;;2599:14:2;2581:9;:34;;;;;;;;;;;:61;;2380:262;:311;;;;;2659:14;;;;;;;;;-1:-1:-1;;;;;2659:14:2;-1:-1:-1;;;;;2659:21:2;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:32;2380:311;2362:456;;;2734:15;2718:13;:31;2768:14;;:27;;;-1:-1:-1;;;2768:27:2;;;;-1:-1:-1;;;;;2768:14:2;;;;:25;;:27;;;;;:14;;:27;;;;;;;;:14;;:27;;;;;;;;;;;;;;;;;;;;;;;;;2764:43;;2828:34;1579:437:4;1252:915:2;-1:-1:-1;;;;;1438:21:2;;1361:7;1438:21;;;:15;:21;;;;;;1416:5;;1438:21;;:30;;;:62;;-1:-1:-1;;;;;;1472:19:2;;;;;;:15;:19;;;;;;;;:28;1438:62;:74;;;;-1:-1:-1;1504:8:2;;-1:-1:-1;;;1504:8:2;;;;1438:74;1434:459;;;1529:9;1556:11;;1570:1;1556:15;;;;:::i;:::-;-1:-1:-1;;;;;1590:15:2;;;;;;:9;:15;;;;;;1541:12;:30;;;;;-1:-1:-1;1590:15:2;;1586:296;;;1677:14;;:38;;-1:-1:-1;;;1677:38:2;;;;;8074:25:5;;;8142:14;;8135:22;8115:18;;;8108:50;-1:-1:-1;;;;;1677:14:2;;;;:25;;8047:18:5;;1677:38:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1660:55;;1586:296;;;-1:-1:-1;;;;;1741:13:2;;;;;;:9;:13;;;;;;;;1737:145;;;1827:14;;:39;;-1:-1:-1;;;1827:39:2;;;;;8074:25:5;;;8142:14;;8135:22;8115:18;;;8108:50;-1:-1:-1;;;;;1827:14:2;;;;:26;;8047:18:5;;1827:39:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1810:56;;1737:145;1514:379;1434:459;1905:17;1925:22;1933:14;1925:5;:22;:::i;:::-;1905:42;-1:-1:-1;1962:13:2;;1958:129;;2047:14;;-1:-1:-1;;;;;2047:14:2;2029:9;:34;;;;;;;;;;;:46;;2066:9;;2029:46;:::i;:::-;2010:14;;-1:-1:-1;;;;;2010:14:2;1992:9;:34;;;;;;;;;;:83;1958:129;2104:55;2134:4;2140:2;2144:14;2104:29;:55::i;:::-;2097:62;1252:915;-1:-1:-1;;;;;;1252:915:2:o;4493:205:1:-;4593:7;4629:2;-1:-1:-1;;;;;4621:10:1;:4;-1:-1:-1;;;;;4621:10:1;;;4613:54;;;;-1:-1:-1;;;4613:54:1;;7226:2:5;4613:54:1;;;7208:21:5;7265:2;7245:18;;;7238:30;7304:33;7284:18;;;7277:61;7355:18;;4613:54:1;7024:355:5;4613:54:1;-1:-1:-1;4685:5:1;4493:205;-1:-1:-1;;4493:205:1:o;14:173:5:-;82:20;;-1:-1:-1;;;;;131:31:5;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:5:o;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;383:260;;;;;:::o;648:328::-;725:6;733;741;794:2;782:9;773:7;769:23;765:32;762:52;;;810:1;807;800:12;762:52;833:29;852:9;833:29;:::i;:::-;823:39;;881:38;915:2;904:9;900:18;881:38;:::i;:::-;871:48;;966:2;955:9;951:18;938:32;928:42;;648:328;;;;;:::o;981:315::-;1046:6;1054;1107:2;1095:9;1086:7;1082:23;1078:32;1075:52;;;1123:1;1120;1113:12;1075:52;1146:29;1165:9;1146:29;:::i;:::-;1136:39;;1225:2;1214:9;1210:18;1197:32;1238:28;1260:5;1238:28;:::i;:::-;1285:5;1275:15;;;981:315;;;;;:::o;1301:254::-;1369:6;1377;1430:2;1418:9;1409:7;1405:23;1401:32;1398:52;;;1446:1;1443;1436:12;1398:52;1469:29;1488:9;1469:29;:::i;:::-;1459:39;1545:2;1530:18;;;;1517:32;;-1:-1:-1;;;1301:254:5:o;1560:241::-;1616:6;1669:2;1657:9;1648:7;1644:23;1640:32;1637:52;;;1685:1;1682;1675:12;1637:52;1724:9;1711:23;1743:28;1765:5;1743:28;:::i;1806:245::-;1873:6;1926:2;1914:9;1905:7;1901:23;1897:32;1894:52;;;1942:1;1939;1932:12;1894:52;1974:9;1968:16;1993:28;2015:5;1993:28;:::i;2056:180::-;2115:6;2168:2;2156:9;2147:7;2143:23;2139:32;2136:52;;;2184:1;2181;2174:12;2136:52;-1:-1:-1;2207:23:5;;2056:180;-1:-1:-1;2056:180:5:o;2241:184::-;2311:6;2364:2;2352:9;2343:7;2339:23;2335:32;2332:52;;;2380:1;2377;2370:12;2332:52;-1:-1:-1;2403:16:5;;2241:184;-1:-1:-1;2241:184:5:o;2430:248::-;2498:6;2506;2559:2;2547:9;2538:7;2534:23;2530:32;2527:52;;;2575:1;2572;2565:12;2527:52;-1:-1:-1;;2598:23:5;;;2668:2;2653:18;;;2640:32;;-1:-1:-1;2430:248:5:o;3083:597::-;3195:4;3224:2;3253;3242:9;3235:21;3285:6;3279:13;3328:6;3323:2;3312:9;3308:18;3301:34;3353:1;3363:140;3377:6;3374:1;3371:13;3363:140;;;3472:14;;;3468:23;;3462:30;3438:17;;;3457:2;3434:26;3427:66;3392:10;;3363:140;;;3521:6;3518:1;3515:13;3512:91;;;3591:1;3586:2;3577:6;3566:9;3562:22;3558:31;3551:42;3512:91;-1:-1:-1;3664:2:5;3643:15;-1:-1:-1;;3639:29:5;3624:45;;;;3671:2;3620:54;;3083:597;-1:-1:-1;;;3083:597:5:o;4813:343::-;5015:2;4997:21;;;5054:2;5034:18;;;5027:30;-1:-1:-1;;;5088:2:5;5073:18;;5066:49;5147:2;5132:18;;4813:343::o;5161:404::-;5363:2;5345:21;;;5402:2;5382:18;;;5375:30;5441:34;5436:2;5421:18;;5414:62;-1:-1:-1;;;5507:2:5;5492:18;;5485:38;5555:3;5540:19;;5161:404::o;8358:128::-;8398:3;8429:1;8425:6;8422:1;8419:13;8416:39;;;8435:18;;:::i;:::-;-1:-1:-1;8471:9:5;;8358:128::o;8491:125::-;8531:4;8559:1;8556;8553:8;8550:34;;;8564:18;;:::i;:::-;-1:-1:-1;8601:9:5;;8491:125::o;8621:380::-;8700:1;8696:12;;;;8743;;;8764:61;;8818:4;8810:6;8806:17;8796:27;;8764:61;8871:2;8863:6;8860:14;8840:18;8837:38;8834:161;;;8917:10;8912:3;8908:20;8905:1;8898:31;8952:4;8949:1;8942:15;8980:4;8977:1;8970:15;8834:161;;8621:380;;;:::o;9006:127::-;9067:10;9062:3;9058:20;9055:1;9048:31;9098:4;9095:1;9088:15;9122:4;9119:1;9112:15;9138:118;9224:5;9217:13;9210:21;9203:5;9200:32;9190:60;;9246:1;9243;9236:12;9190:60;9138:118;:::o
Swarm Source
ipfs://ebec1f5e8c9ad74dd89e245add52a5ef5df561af448e461747e3abe10f2f5c96
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.