ERC-20
Overview
Max Total Supply
1,000,000,000 TNGL
Holders
173
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
8,828,222.179678852 TNGLValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
Tangle
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-02 */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.9; /// @title Tangle, a token implementation using EIP-2535: Multi-Facet Proxy /// @author Brad Brown /// @notice Pieces of this contract can be updated without needing to redeploy /// the entire contract /// @dev implements IDiamondCut and IDiamondLoupe contract Tangle { mapping(bytes4 => address) private selectorToAddress; /// @notice The owner of this contract address public owner; enum FacetCutAction {Add, Replace, Remove} struct FacetCut { address facetAddress; FacetCutAction action; bytes4[] functionSelectors; } struct Facet { address facetAddress; bytes4[] functionSelectors; } address[] private addresses; mapping(address => uint) private addressIndex; mapping(address => bytes4[]) private addressToSelectors; mapping(bytes4 => uint) private selectorIndex; /// @notice Records all functions added, replaced, or removed from this /// contract event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata); /// @notice set owner to deployer constructor() { owner = msg.sender; } /// @notice payable fallback, does nothing receive() external payable {} /// @notice executes calldata via delegatecall to address if /// calldata's selector is assigned /// @dev Input is calldata /// @return bytes response from delegatecall fallback (bytes calldata) external payable returns (bytes memory) { address address_ = selectorToAddress[msg.sig]; require(address_ != address(0), "zero facet"); assembly { calldatacopy(0, 0, calldatasize()) let result := delegatecall( gas(), address_, 0, calldatasize(), 0, 0 ) returndatacopy(0, 0, returndatasize()) switch result case 0 { revert(0, returndatasize()) } default { return (0, returndatasize()) } } } /// @notice checks if an address is in use as a facet /// @param address_ an address to a facet /// @return bool whether the address is in use or not function facetAddressExists(address address_) internal view returns (bool) { if (addresses.length == 0) return false; if (addresses[0] != address_ && addressIndex[address_] == 0) return false; return true; } /// @notice assigns a selector to an address, revert if selector already /// assigned /// @param selector an 8 byte function selector /// @param facetAddress_ an address to a facet function addSelector( bytes4 selector, address facetAddress_ ) internal { address currentFacetAddress = selectorToAddress[selector]; require(currentFacetAddress == address(0), "selector add"); selectorToAddress[selector] = facetAddress_; selectorIndex[selector] = addressToSelectors[facetAddress_].length; addressToSelectors[facetAddress_].push(selector); } /// @notice removes a selector from an address, revert if selector isn't /// assigned /// @param selector an 8 byte function selector /// @param facetAddress_ an address to a facet function removeSelector( bytes4 selector, address facetAddress_ ) internal { address currentFacetAddress = selectorToAddress[selector]; require(currentFacetAddress != address(0), "selector remove"); bytes4[] memory selectors = addressToSelectors[facetAddress_]; bytes4 lastSelector = selectors[selectors.length - 1]; if (lastSelector != selector) { selectorIndex[lastSelector] = selectorIndex[selector]; selectors[selectorIndex[selector]] = lastSelector; } if (selectors.length > 0) { assembly { mstore(selectors, sub(mload(selectors), 1)) } addressToSelectors[facetAddress_] = selectors; } if (selectors.length == 0) { address lastAddress = addresses[addresses.length - 1]; if (lastAddress != facetAddress_) { addressIndex[lastAddress] = addressIndex[facetAddress_]; addresses[addressIndex[facetAddress_]] = lastAddress; } addresses.pop(); addressIndex[facetAddress_] = 0; } selectorToAddress[selector] = address(0); } /// @notice reassigns a selector to an address, revert if no change in /// selector address /// @param selector an 8 byte function selector /// @param facetAddress_ an address to a facet function replaceSelector( bytes4 selector, address facetAddress_ ) internal { address currentFacetAddress = selectorToAddress[selector]; require(currentFacetAddress != facetAddress_, "selector replace"); bytes4[] memory selectors = addressToSelectors[currentFacetAddress]; bytes4 lastSelector = selectors[selectors.length - 1]; if (lastSelector != selector) { selectorIndex[lastSelector] = selectorIndex[selector]; selectors[selectorIndex[selector]] = lastSelector; } if (selectors.length > 0) { assembly { mstore(selectors, sub(mload(selectors), 1)) } addressToSelectors[currentFacetAddress] = selectors; } if (selectors.length == 0) { address lastAddress = addresses[addresses.length - 1]; if (lastAddress != currentFacetAddress) { addressIndex[lastAddress] = addressIndex[currentFacetAddress]; addresses[addressIndex[currentFacetAddress]] = lastAddress; } addresses.pop(); addressIndex[currentFacetAddress] = 0; } selectorToAddress[selector] = facetAddress_; selectorIndex[selector] = addressToSelectors[facetAddress_].length; addressToSelectors[facetAddress_].push(selector); } /// @notice Add/replace/remove any number of functions and optionally /// execute a function with delegatecall /// @param _diamondCut Contains the facet addresses and function selectors /// @param _init The address of the contract or facet to execute _calldata /// @param _calldata A function call, including function selector and /// arguments _calldata is executed with delegatecall on _init function diamondCut( FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external { require(msg.sender == owner, "not owner"); bool changesMade = false; for (uint i = 0; i < _diamondCut.length; i++) { FacetCut memory facetCut = _diamondCut[i]; address facetAddress_ = _diamondCut[i].facetAddress; if (!facetAddressExists(facetAddress_)) { addressIndex[facetAddress_] = addresses.length; addresses.push(facetCut.facetAddress); } for (uint j = 0; j < facetCut.functionSelectors.length; j++) { bytes4 selector = facetCut.functionSelectors[j]; if (facetCut.action == FacetCutAction.Add) { addSelector(selector, facetAddress_); if (!changesMade) changesMade = true; } if (facetCut.action == FacetCutAction.Replace) { replaceSelector(selector, facetAddress_); if (!changesMade) changesMade = true; } if (facetCut.action == FacetCutAction.Remove) { removeSelector(selector, facetAddress_); if (!changesMade) changesMade = true; } } } if (_init != address(0)) { require(_calldata.length > 0, "empty calldata"); (bool success,) = _init.delegatecall(_calldata); require(success, "call unsuccessful"); } if (changesMade) emit DiamondCut(_diamondCut, _init, _calldata); } /// @notice Gets all facet addresses and their four byte function /// selectors. /// @return facets_ Facet function facets() external view returns (Facet[] memory) { Facet[] memory facets_ = new Facet[](addresses.length); for (uint i = 0; i < addresses.length; i++) { Facet memory facet; facet.facetAddress = addresses[i]; facet.functionSelectors = addressToSelectors[addresses[i]]; facets_[i] = facet; } return facets_; } /// @notice Gets all the function selectors supported by a specific facet. /// @param _facet The facet address. /// @return facetFunctionSelectors_ function facetFunctionSelectors( address _facet ) external view returns (bytes4[] memory) { return addressToSelectors[_facet]; } /// @notice Get all the facet addresses used by a diamond. /// @return facetAddresses_ function facetAddresses() external view returns (address[] memory) { return addresses; } /// @notice Gets the facet that supports the given selector. /// @dev If facet is not found return address(0). /// @param _functionSelector The function selector. /// @return facetAddress_ The facet address. function facetAddress(bytes4 _functionSelector) external view returns (address) { return selectorToAddress[_functionSelector]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum Tangle.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct Tangle.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum Tangle.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct Tangle.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct Tangle.Facet[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50600180546001600160a01b03191633179055611725806100326000396000f3fe6080604052600436106100595760003560e01c80631f931c1c146100eb57806352ef6b2c1461010d5780637a0ed627146101385780638da5cb5b1461015a578063adfca15e14610192578063cdffacc6146101bf57610060565b3661006057005b600080356001600160e01b03191681526020819052604081205436906060906001600160a01b0316806100c75760405162461bcd60e51b815260206004820152600a6024820152691e995c9bc8199858d95d60b21b60448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100e6573d6000f35b3d6000fd5b3480156100f757600080fd5b5061010b610106366004611101565b6101ff565b005b34801561011957600080fd5b5061012261056c565b60405161012f91906111b2565b60405180910390f35b34801561014457600080fd5b5061014d6105ce565b60405161012f91906111ff565b34801561016657600080fd5b5060015461017a906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b34801561019e57600080fd5b506101b26101ad3660046112b2565b61075f565b60405161012f91906112d4565b3480156101cb57600080fd5b5061017a6101da36600461132e565b6001600160e01b0319166000908152602081905260409020546001600160a01b031690565b6001546001600160a01b031633146102455760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b60448201526064016100be565b6000805b8581101561042d57600087878381811061026557610265611349565b9050602002810190610277919061135f565b610280906113fc565b9050600088888481811061029657610296611349565b90506020028101906102a8919061135f565b6102b69060208101906112b2565b90506102c1816107f8565b61032b57600280546001600160a01b03838116600090815260036020526040812083905585516001840185559390527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b031916929091169190911790555b60005b8260400151518110156104175760008360400151828151811061035357610353611349565b6020026020010151905060006002811115610370576103706114d2565b84602001516002811115610386576103866114d2565b14156103a0576103968184610876565b856103a057600195505b6001846020015160028111156103b8576103b86114d2565b14156103d2576103c88184610964565b856103d257600195505b6002846020015160028111156103ea576103ea6114d2565b1415610404576103fa8184610cca565b8561040457600195505b508061040f816114fe565b91505061032e565b5050508080610425906114fe565b915050610249565b506001600160a01b0384161561051e578161047b5760405162461bcd60e51b815260206004820152600e60248201526d656d7074792063616c6c6461746160901b60448201526064016100be565b6000846001600160a01b03168484604051610497929190611519565b600060405180830381855af49150503d80600081146104d2576040519150601f19603f3d011682016040523d82523d6000602084013e6104d7565b606091505b505090508061051c5760405162461bcd60e51b815260206004820152601160248201527018d85b1b081d5b9cdd58d8d95cdcd99d5b607a1b60448201526064016100be565b505b8015610564577f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673868686868660405161055b95949392919061159a565b60405180910390a15b505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156105c457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105a6575b5050505050905090565b6002546060906000906001600160401b038111156105ee576105ee61137f565b60405190808252806020026020018201604052801561062757816020015b610614610fc4565b81526020019060019003908161060c5790505b50905060005b6002548110156107595761063f610fc4565b6002828154811061065257610652611349565b60009182526020822001546001600160a01b031682526002805460049291908590811061068157610681611349565b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208054825181850281018501909352808352919290919083018282801561071a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116106dc5790505b505050505081602001819052508083838151811061073a5761073a611349565b6020026020010181905250508080610751906114fe565b91505061062d565b50919050565b6001600160a01b0381166000908152600460209081526040918290208054835181840281018401909452808452606093928301828280156107ec57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116107ae5790505b50505050509050919050565b60025460009061080a57506000919050565b816001600160a01b0316600260008154811061082857610828611349565b6000918252602090912001546001600160a01b03161480159061086157506001600160a01b038216600090815260036020526040902054155b1561086e57506000919050565b506001919050565b6001600160e01b031982166000908152602081905260409020546001600160a01b031680156108d65760405162461bcd60e51b815260206004820152600c60248201526b1cd95b1958dd1bdc8818591960a21b60448201526064016100be565b506001600160e01b0319821660008181526020818152604080832080546001600160a01b0319166001600160a01b03969096169586179055938252600480825284832080549484526005835294832084905580825260018401855593825290206008820401805463ffffffff60079093169093026101000a9182021990921660e09390931c02919091179055565b6001600160e01b031982166000908152602081905260409020546001600160a01b039081169082168114156109ce5760405162461bcd60e51b815260206004820152601060248201526f73656c6563746f72207265706c61636560801b60448201526064016100be565b6001600160a01b038116600090815260046020908152604080832080548251818502810185019093528083529192909190830182828015610a5b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610a1d5790505b5050505050905060008160018351610a7391906116c2565b81518110610a8357610a83611349565b60200260200101519050846001600160e01b031916816001600160e01b03191614610afd576001600160e01b03198086166000818152600560205260408082205493851682528120839055528251829184918110610ae357610ae3611349565b6001600160e01b0319909216602092830291909101909101525b815115610b375781516000190182526001600160a01b03831660009081526004602090815260409091208351610b3592850190610fdc565b505b8151610c3a576002805460009190610b51906001906116c2565b81548110610b6157610b61611349565b6000918252602090912001546001600160a01b03908116915084168114610bec576001600160a01b03808516600081815260036020526040808220549385168252812083905552600280548392908110610bbd57610bbd611349565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6002805480610bfd57610bfd6116d9565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0386168252600390526040812055505b5050506001600160e01b0319821660008181526020818152604080832080546001600160a01b0319166001600160a01b03969096169586179055938252600480825284832080549484526005835294832084905580825260018401855593825290206008820401805463ffffffff60079093169093026101000a9182021990921660e09390931c02919091179055565b6001600160e01b031982166000908152602081905260409020546001600160a01b031680610d2c5760405162461bcd60e51b815260206004820152600f60248201526e73656c6563746f722072656d6f766560881b60448201526064016100be565b6001600160a01b038216600090815260046020908152604080832080548251818502810185019093528083529192909190830182828015610db957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610d7b5790505b5050505050905060008160018351610dd191906116c2565b81518110610de157610de1611349565b60200260200101519050846001600160e01b031916816001600160e01b03191614610e5b576001600160e01b03198086166000818152600560205260408082205493851682528120839055528251829184918110610e4157610e41611349565b6001600160e01b0319909216602092830291909101909101525b815115610e955781516000190182526001600160a01b03841660009081526004602090815260409091208351610e9392850190610fdc565b505b8151610f98576002805460009190610eaf906001906116c2565b81548110610ebf57610ebf611349565b6000918252602090912001546001600160a01b03908116915085168114610f4a576001600160a01b03808616600081815260036020526040808220549385168252812083905552600280548392908110610f1b57610f1b611349565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6002805480610f5b57610f5b6116d9565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0387168252600390526040812055505b505050506001600160e01b031916600090815260208190526040902080546001600160a01b0319169055565b60408051808201909152600081526060602082015290565b828054828255906000526020600020906007016008900481019282156110785791602002820160005b8382111561104657835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302611005565b80156110765782816101000a81549063ffffffff0219169055600401602081600301049283019260010302611046565b505b50611084929150611088565b5090565b5b808211156110845760008155600101611089565b80356001600160a01b03811681146110b457600080fd5b919050565b60008083601f8401126110cb57600080fd5b5081356001600160401b038111156110e257600080fd5b6020830191508360208285010111156110fa57600080fd5b9250929050565b60008060008060006060868803121561111957600080fd5b85356001600160401b038082111561113057600080fd5b818801915088601f83011261114457600080fd5b81358181111561115357600080fd5b8960208260051b850101111561116857600080fd5b6020830197508096505061117e6020890161109d565b9450604088013591508082111561119457600080fd5b506111a1888289016110b9565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b818110156111f35783516001600160a01b0316835292840192918401916001016111ce565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156112a357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101561128e5783516001600160e01b0319168252928b019260019290920191908b0190611264565b50978a01979550505091870191600101611227565b50919998505050505050505050565b6000602082840312156112c457600080fd5b6112cd8261109d565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156111f35783516001600160e01b031916835292840192918401916001016112f0565b80356001600160e01b0319811681146110b457600080fd5b60006020828403121561134057600080fd5b6112cd82611316565b634e487b7160e01b600052603260045260246000fd5b60008235605e1983360301811261137557600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156113b7576113b761137f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156113e5576113e561137f565b604052919050565b8035600381106110b457600080fd5b60006060823603121561140e57600080fd5b611416611395565b61141f8361109d565b8152602061142e8185016113ed565b8282015260408401356001600160401b038082111561144c57600080fd5b9085019036601f83011261145f57600080fd5b8135818111156114715761147161137f565b8060051b91506114828483016113bd565b818152918301840191848101903684111561149c57600080fd5b938501935b838510156114c1576114b285611316565b825293850193908501906114a1565b604087015250939695505050505050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611512576115126114e8565b5060010190565b8183823760009101908152919050565b8183526000602080850194508260005b85811015611566576001600160e01b031961155383611316565b1687529582019590820190600101611539565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060808252818101869052600090600560808085019089831b8601018a855b8b81101561168f57878303607f190184528135368e9003605e190181126115df57600080fd5b8d016001600160a01b036115f28261109d565b16845260206116028183016113ed565b6003811061162057634e487b7160e01b600052602160045260246000fd5b8582015260408281013536849003601e1901811261163d57600080fd5b830180356001600160401b0381111561165557600080fd5b808a1b360385131561166657600080fd5b8a8389015261167a8b890182868501611529565b988401989750505093019250506001016115b9565b50506001600160a01b038916602087015285810360408701526116b381888a611571565b9b9a5050505050505050505050565b6000828210156116d4576116d46114e8565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220e51618f9d081d8674f84fbb2a69dc91e8ed2c72a1f9510730971797cb2e845eb64736f6c63430008090033
Deployed Bytecode
0x6080604052600436106100595760003560e01c80631f931c1c146100eb57806352ef6b2c1461010d5780637a0ed627146101385780638da5cb5b1461015a578063adfca15e14610192578063cdffacc6146101bf57610060565b3661006057005b600080356001600160e01b03191681526020819052604081205436906060906001600160a01b0316806100c75760405162461bcd60e51b815260206004820152600a6024820152691e995c9bc8199858d95d60b21b60448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100e6573d6000f35b3d6000fd5b3480156100f757600080fd5b5061010b610106366004611101565b6101ff565b005b34801561011957600080fd5b5061012261056c565b60405161012f91906111b2565b60405180910390f35b34801561014457600080fd5b5061014d6105ce565b60405161012f91906111ff565b34801561016657600080fd5b5060015461017a906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b34801561019e57600080fd5b506101b26101ad3660046112b2565b61075f565b60405161012f91906112d4565b3480156101cb57600080fd5b5061017a6101da36600461132e565b6001600160e01b0319166000908152602081905260409020546001600160a01b031690565b6001546001600160a01b031633146102455760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b60448201526064016100be565b6000805b8581101561042d57600087878381811061026557610265611349565b9050602002810190610277919061135f565b610280906113fc565b9050600088888481811061029657610296611349565b90506020028101906102a8919061135f565b6102b69060208101906112b2565b90506102c1816107f8565b61032b57600280546001600160a01b03838116600090815260036020526040812083905585516001840185559390527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b031916929091169190911790555b60005b8260400151518110156104175760008360400151828151811061035357610353611349565b6020026020010151905060006002811115610370576103706114d2565b84602001516002811115610386576103866114d2565b14156103a0576103968184610876565b856103a057600195505b6001846020015160028111156103b8576103b86114d2565b14156103d2576103c88184610964565b856103d257600195505b6002846020015160028111156103ea576103ea6114d2565b1415610404576103fa8184610cca565b8561040457600195505b508061040f816114fe565b91505061032e565b5050508080610425906114fe565b915050610249565b506001600160a01b0384161561051e578161047b5760405162461bcd60e51b815260206004820152600e60248201526d656d7074792063616c6c6461746160901b60448201526064016100be565b6000846001600160a01b03168484604051610497929190611519565b600060405180830381855af49150503d80600081146104d2576040519150601f19603f3d011682016040523d82523d6000602084013e6104d7565b606091505b505090508061051c5760405162461bcd60e51b815260206004820152601160248201527018d85b1b081d5b9cdd58d8d95cdcd99d5b607a1b60448201526064016100be565b505b8015610564577f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673868686868660405161055b95949392919061159a565b60405180910390a15b505050505050565b606060028054806020026020016040519081016040528092919081815260200182805480156105c457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105a6575b5050505050905090565b6002546060906000906001600160401b038111156105ee576105ee61137f565b60405190808252806020026020018201604052801561062757816020015b610614610fc4565b81526020019060019003908161060c5790505b50905060005b6002548110156107595761063f610fc4565b6002828154811061065257610652611349565b60009182526020822001546001600160a01b031682526002805460049291908590811061068157610681611349565b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208054825181850281018501909352808352919290919083018282801561071a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116106dc5790505b505050505081602001819052508083838151811061073a5761073a611349565b6020026020010181905250508080610751906114fe565b91505061062d565b50919050565b6001600160a01b0381166000908152600460209081526040918290208054835181840281018401909452808452606093928301828280156107ec57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116107ae5790505b50505050509050919050565b60025460009061080a57506000919050565b816001600160a01b0316600260008154811061082857610828611349565b6000918252602090912001546001600160a01b03161480159061086157506001600160a01b038216600090815260036020526040902054155b1561086e57506000919050565b506001919050565b6001600160e01b031982166000908152602081905260409020546001600160a01b031680156108d65760405162461bcd60e51b815260206004820152600c60248201526b1cd95b1958dd1bdc8818591960a21b60448201526064016100be565b506001600160e01b0319821660008181526020818152604080832080546001600160a01b0319166001600160a01b03969096169586179055938252600480825284832080549484526005835294832084905580825260018401855593825290206008820401805463ffffffff60079093169093026101000a9182021990921660e09390931c02919091179055565b6001600160e01b031982166000908152602081905260409020546001600160a01b039081169082168114156109ce5760405162461bcd60e51b815260206004820152601060248201526f73656c6563746f72207265706c61636560801b60448201526064016100be565b6001600160a01b038116600090815260046020908152604080832080548251818502810185019093528083529192909190830182828015610a5b57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610a1d5790505b5050505050905060008160018351610a7391906116c2565b81518110610a8357610a83611349565b60200260200101519050846001600160e01b031916816001600160e01b03191614610afd576001600160e01b03198086166000818152600560205260408082205493851682528120839055528251829184918110610ae357610ae3611349565b6001600160e01b0319909216602092830291909101909101525b815115610b375781516000190182526001600160a01b03831660009081526004602090815260409091208351610b3592850190610fdc565b505b8151610c3a576002805460009190610b51906001906116c2565b81548110610b6157610b61611349565b6000918252602090912001546001600160a01b03908116915084168114610bec576001600160a01b03808516600081815260036020526040808220549385168252812083905552600280548392908110610bbd57610bbd611349565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6002805480610bfd57610bfd6116d9565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0386168252600390526040812055505b5050506001600160e01b0319821660008181526020818152604080832080546001600160a01b0319166001600160a01b03969096169586179055938252600480825284832080549484526005835294832084905580825260018401855593825290206008820401805463ffffffff60079093169093026101000a9182021990921660e09390931c02919091179055565b6001600160e01b031982166000908152602081905260409020546001600160a01b031680610d2c5760405162461bcd60e51b815260206004820152600f60248201526e73656c6563746f722072656d6f766560881b60448201526064016100be565b6001600160a01b038216600090815260046020908152604080832080548251818502810185019093528083529192909190830182828015610db957602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610d7b5790505b5050505050905060008160018351610dd191906116c2565b81518110610de157610de1611349565b60200260200101519050846001600160e01b031916816001600160e01b03191614610e5b576001600160e01b03198086166000818152600560205260408082205493851682528120839055528251829184918110610e4157610e41611349565b6001600160e01b0319909216602092830291909101909101525b815115610e955781516000190182526001600160a01b03841660009081526004602090815260409091208351610e9392850190610fdc565b505b8151610f98576002805460009190610eaf906001906116c2565b81548110610ebf57610ebf611349565b6000918252602090912001546001600160a01b03908116915085168114610f4a576001600160a01b03808616600081815260036020526040808220549385168252812083905552600280548392908110610f1b57610f1b611349565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6002805480610f5b57610f5b6116d9565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0387168252600390526040812055505b505050506001600160e01b031916600090815260208190526040902080546001600160a01b0319169055565b60408051808201909152600081526060602082015290565b828054828255906000526020600020906007016008900481019282156110785791602002820160005b8382111561104657835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302611005565b80156110765782816101000a81549063ffffffff0219169055600401602081600301049283019260010302611046565b505b50611084929150611088565b5090565b5b808211156110845760008155600101611089565b80356001600160a01b03811681146110b457600080fd5b919050565b60008083601f8401126110cb57600080fd5b5081356001600160401b038111156110e257600080fd5b6020830191508360208285010111156110fa57600080fd5b9250929050565b60008060008060006060868803121561111957600080fd5b85356001600160401b038082111561113057600080fd5b818801915088601f83011261114457600080fd5b81358181111561115357600080fd5b8960208260051b850101111561116857600080fd5b6020830197508096505061117e6020890161109d565b9450604088013591508082111561119457600080fd5b506111a1888289016110b9565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b818110156111f35783516001600160a01b0316835292840192918401916001016111ce565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156112a357898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101561128e5783516001600160e01b0319168252928b019260019290920191908b0190611264565b50978a01979550505091870191600101611227565b50919998505050505050505050565b6000602082840312156112c457600080fd5b6112cd8261109d565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156111f35783516001600160e01b031916835292840192918401916001016112f0565b80356001600160e01b0319811681146110b457600080fd5b60006020828403121561134057600080fd5b6112cd82611316565b634e487b7160e01b600052603260045260246000fd5b60008235605e1983360301811261137557600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156113b7576113b761137f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156113e5576113e561137f565b604052919050565b8035600381106110b457600080fd5b60006060823603121561140e57600080fd5b611416611395565b61141f8361109d565b8152602061142e8185016113ed565b8282015260408401356001600160401b038082111561144c57600080fd5b9085019036601f83011261145f57600080fd5b8135818111156114715761147161137f565b8060051b91506114828483016113bd565b818152918301840191848101903684111561149c57600080fd5b938501935b838510156114c1576114b285611316565b825293850193908501906114a1565b604087015250939695505050505050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611512576115126114e8565b5060010190565b8183823760009101908152919050565b8183526000602080850194508260005b85811015611566576001600160e01b031961155383611316565b1687529582019590820190600101611539565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060808252818101869052600090600560808085019089831b8601018a855b8b81101561168f57878303607f190184528135368e9003605e190181126115df57600080fd5b8d016001600160a01b036115f28261109d565b16845260206116028183016113ed565b6003811061162057634e487b7160e01b600052602160045260246000fd5b8582015260408281013536849003601e1901811261163d57600080fd5b830180356001600160401b0381111561165557600080fd5b808a1b360385131561166657600080fd5b8a8389015261167a8b890182868501611529565b988401989750505093019250506001016115b9565b50506001600160a01b038916602087015285810360408701526116b381888a611571565b9b9a5050505050505050505050565b6000828210156116d4576116d46114e8565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220e51618f9d081d8674f84fbb2a69dc91e8ed2c72a1f9510730971797cb2e845eb64736f6c63430008090033
Deployed Bytecode Sourcemap
323:9703:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:7;;-1:-1:-1;;;;;;1619:7:0;1601:26;;;;;;;;;;323:9703;;1557:12;;-1:-1:-1;;;;;1601:26:0;;1638:45;;;;-1:-1:-1;;;1638:45:0;;216:2:1;1638:45:0;;;198:21:1;255:2;235:18;;;228:30;-1:-1:-1;;;274:18:1;;;267:40;324:18;;1638:45:0;;;;;;;;;1737:14;1734:1;1731;1718:34;1935:1;1915;1882:14;1862:1;1835:8;1811:5;1780:171;1986:16;1983:1;1980;1965:38;2024:6;2048:38;;;;2125:16;2122:1;2114:28;2048:38;2067:16;2064:1;2057:27;6770:1678;;;;;;;;;;-1:-1:-1;6770:1678:0;;;;;:::i;:::-;;:::i;:::-;;9459:143;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8578:408;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;451:20::-;;;;;;;;;;-1:-1:-1;451:20:0;;;;-1:-1:-1;;;;;451:20:0;;;;;;-1:-1:-1;;;;;4386:32:1;;;4368:51;;4356:2;4341:18;451:20:0;4222:203:1;9157:197:0;;;;;;;;;;-1:-1:-1;9157:197:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9838:183::-;;;;;;;;;;-1:-1:-1;9838:183:0;;;;;:::i;:::-;-1:-1:-1;;;;;;9977:36:0;9945:7;9977:36;;;;;;;;;;;-1:-1:-1;;;;;9977:36:0;;9838:183;6770:1678;6940:5;;-1:-1:-1;;;;;6940:5:0;6926:10;:19;6918:41;;;;-1:-1:-1;;;6918:41:0;;5852:2:1;6918:41:0;;;5834:21:1;5891:1;5871:18;;;5864:29;-1:-1:-1;;;5909:18:1;;;5902:39;5958:18;;6918:41:0;5650:332:1;6918:41:0;6970:16;7010:6;7005:1139;7022:22;;;7005:1139;;;7066:24;7093:11;;7105:1;7093:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;7066:41;;;:::i;:::-;;;7122:21;7146:11;;7158:1;7146:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:27;;;;;;;:::i;:::-;7122:51;;7193:33;7212:13;7193:18;:33::i;:::-;7188:177;;7277:9;:16;;-1:-1:-1;;;;;7247:27:0;;;;;;;:12;:27;;;;;:46;;;7327:21;;7312:37;;;;;;;;;;;;;;-1:-1:-1;;;;;;7312:37:0;;;;;;;;;;;7188:177;7384:6;7379:754;7400:8;:26;;;:33;7396:1;:37;7379:754;;;7459:15;7477:8;:26;;;7504:1;7477:29;;;;;;;;:::i;:::-;;;;;;;7459:47;;7548:18;7529:37;;;;;;;;:::i;:::-;:8;:15;;;:37;;;;;;;;:::i;:::-;;7525:181;;;7591:36;7603:8;7613:13;7591:11;:36::i;:::-;7655:11;7650:36;;7682:4;7668:18;;7650:36;7747:22;7728:8;:15;;;:41;;;;;;;;:::i;:::-;;7724:189;;;7794:40;7810:8;7820:13;7794:15;:40::i;:::-;7862:11;7857:36;;7889:4;7875:18;;7857:36;7954:21;7935:8;:15;;;:40;;;;;;;;:::i;:::-;;7931:187;;;8000:39;8015:8;8025:13;8000:14;:39::i;:::-;8067:11;8062:36;;8094:4;8080:18;;8062:36;-1:-1:-1;7435:3:0;;;;:::i;:::-;;;;7379:754;;;;7051:1093;;7046:3;;;;;:::i;:::-;;;;7005:1139;;;-1:-1:-1;;;;;;8158:19:0;;;8154:213;;8202:20;8194:47;;;;-1:-1:-1;;;8194:47:0;;9101:2:1;8194:47:0;;;9083:21:1;9140:2;9120:18;;;9113:30;-1:-1:-1;;;9159:18:1;;;9152:44;9213:18;;8194:47:0;8899:338:1;8194:47:0;8257:12;8274:5;-1:-1:-1;;;;;8274:18:0;8293:9;;8274:29;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8256:47;;;8326:7;8318:37;;;;-1:-1:-1;;;8318:37:0;;9720:2:1;8318:37:0;;;9702:21:1;9759:2;9739:18;;;9732:30;-1:-1:-1;;;9778:18:1;;;9771:47;9835:18;;8318:37:0;9518:341:1;8318:37:0;8179:188;8154:213;8381:11;8377:63;;;8399:41;8410:11;;8423:5;8430:9;;8399:41;;;;;;;;;;:::i;:::-;;;;;;;;8377:63;6907:1541;6770:1678;;;;;:::o;9459:143::-;9544:16;9585:9;9578:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9578:16:0;;;;;;;;;;;;;;;;;;;;;;;9459:143;:::o;8578:408::-;8683:9;:16;8619:14;;8646:22;;-1:-1:-1;;;;;8671:29:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;8646:54;;8716:6;8711:243;8732:9;:16;8728:20;;8711:243;;;8770:18;;:::i;:::-;8824:9;8834:1;8824:12;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;8824:12:0;8803:33;;8896:9;:12;;8877:18;;8824:12;8896:9;8906:1;;8896:12;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;8896:12:0;8877:32;;;;;;;;;;;;;;;8851:58;;;;;;;;;;;;;;;;;;;8877:32;;8851:58;;;8877:32;8851:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8851:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;:23;;:58;;;;8937:5;8924:7;8932:1;8924:10;;;;;;;;:::i;:::-;;;;;;:18;;;;8755:199;8750:3;;;;;:::i;:::-;;;;8711:243;;;-1:-1:-1;8971:7:0;8578:408;-1:-1:-1;8578:408:0:o;9157:197::-;-1:-1:-1;;;;;9320:26:0;;;;;;:18;:26;;;;;;;;;9313:33;;;;;;;;;;;;;;;;;9280:15;;9313:33;;;9320:26;9313:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9313:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9157:197;;;:::o;2335:306::-;2466:9;:16;2440:4;;2462:52;;-1:-1:-1;2509:5:0;;2335:306;-1:-1:-1;2335:306:0:o;2462:52::-;2545:8;-1:-1:-1;;;;;2529:24:0;:9;2539:1;2529:12;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;2529:12:0;:24;;;;:55;;-1:-1:-1;;;;;;2557:22:0;;;;;;:12;:22;;;;;;:27;2529:55;2525:86;;;-1:-1:-1;2606:5:0;;2335:306;-1:-1:-1;2335:306:0:o;2525:86::-;-1:-1:-1;2629:4:0;;2335:306;-1:-1:-1;2335:306:0:o;2850:430::-;-1:-1:-1;;;;;;2986:27:0;;2956;2986;;;;;;;;;;;-1:-1:-1;;;;;2986:27:0;3032:33;;3024:58;;;;-1:-1:-1;;;3024:58:0;;13037:2:1;3024:58:0;;;13019:21:1;13076:2;13056:18;;;13049:30;-1:-1:-1;;;13095:18:1;;;13088:42;13147:18;;3024:58:0;12835:336:1;3024:58:0;-1:-1:-1;;;;;;;3093:27:0;;:17;:27;;;;;;;;;;;:43;;-1:-1:-1;;;;;;3093:43:0;-1:-1:-1;;;;;3093:43:0;;;;;;;;;3173:33;;;:18;:33;;;;;;:40;;3147:23;;;:13;:23;;;;;:66;;;3224:33;;;-1:-1:-1;3224:48:0;;;;;;;;;;;;;;;;;;;;;;;3093:43;3224:48;;;;;;;;;;;;;;;;;;;;2850:430::o;4931:1407::-;-1:-1:-1;;;;;;5071:27:0;;5041;5071;;;;;;;;;;;-1:-1:-1;;;;;5071:27:0;;;;5117:36;;;;;5109:65;;;;-1:-1:-1;;;5109:65:0;;13378:2:1;5109:65:0;;;13360:21:1;13417:2;13397:18;;;13390:30;-1:-1:-1;;;13436:18:1;;;13429:46;13492:18;;5109:65:0;13176:340:1;5109:65:0;-1:-1:-1;;;;;5213:39:0;;5185:25;5213:39;;;:18;:39;;;;;;;;5185:67;;;;;;;;;;;;;;;;;;;5213:39;;5185:67;;;5213:39;5185:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5185:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5263:19;5285:9;5314:1;5295:9;:16;:20;;;;:::i;:::-;5285:31;;;;;;;;:::i;:::-;;;;;;;5263:53;;5347:8;-1:-1:-1;;;;;5331:24:0;;:12;-1:-1:-1;;;;;5331:24:0;;;5327:174;;-1:-1:-1;;;;;;5402:23:0;;;;;;;:13;:23;;;;;;;5372:27;;;;;;;:53;;;5450:23;5440:34;;5386:12;;5440:9;;:34;;;;;;:::i;:::-;-1:-1:-1;;;;;;5440:49:0;;;:34;;;;;;;;;;;:49;5327:174;5515:16;;:20;5511:204;;5602:16;;-1:-1:-1;;5598:24:0;5580:43;;-1:-1:-1;;;;;5652:39:0;;-1:-1:-1;5652:39:0;;;:18;:39;;;;;;;;:51;;;;;;;;:::i;:::-;;5511:204;5729:16;;5725:416;;5789:9;5799:16;;5767:19;;5789:9;5799:20;;5818:1;;5799:20;:::i;:::-;5789:31;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;5789:31:0;;;;-1:-1:-1;5839:34:0;;;;5835:213;;-1:-1:-1;;;;;5922:33:0;;;;;;;:12;:33;;;;;;;5894:25;;;;;;;:61;;;5984:33;5974:9;:44;;5907:11;;5922:33;5974:44;;;;;;:::i;:::-;;;;;;;;;:58;;;;;-1:-1:-1;;;;;5974:58:0;;;;;-1:-1:-1;;;;;5974:58:0;;;;;;5835:213;6062:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;6062:15:0;;;;;-1:-1:-1;;;;;;6062:15:0;;;;;;;;;-1:-1:-1;;;;;6092:33:0;;;;:12;:33;;;;;:37;-1:-1:-1;5725:416:0;-1:-1:-1;;;;;;;;;6151:27:0;;:17;:27;;;;;;;;;;;:43;;-1:-1:-1;;;;;;6151:43:0;-1:-1:-1;;;;;6151:43:0;;;;;;;;;6231:33;;;:18;:33;;;;;;:40;;6205:23;;;:13;:23;;;;;:66;;;6282:33;;;-1:-1:-1;6282:48:0;;;;;;;;;;;;;;;;;;;;;;;6151:43;6282:48;;;;;;;;;;;;;;;;;;;;4931:1407::o;3489:1227::-;-1:-1:-1;;;;;;3628:27:0;;3598;3628;;;;;;;;;;;-1:-1:-1;;;;;3628:27:0;3674:33;3666:61;;;;-1:-1:-1;;;3666:61:0;;13985:2:1;3666:61:0;;;13967:21:1;14024:2;14004:18;;;13997:30;-1:-1:-1;;;14043:18:1;;;14036:45;14098:18;;3666:61:0;13783:339:1;3666:61:0;-1:-1:-1;;;;;3766:33:0;;3738:25;3766:33;;;:18;:33;;;;;;;;3738:61;;;;;;;;;;;;;;;;;;;3766:33;;3738:61;;;3766:33;3738:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3738:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3810:19;3832:9;3861:1;3842:9;:16;:20;;;;:::i;:::-;3832:31;;;;;;;;:::i;:::-;;;;;;;3810:53;;3894:8;-1:-1:-1;;;;;3878:24:0;;:12;-1:-1:-1;;;;;3878:24:0;;;3874:174;;-1:-1:-1;;;;;;3949:23:0;;;;;;;:13;:23;;;;;;;3919:27;;;;;;;:53;;;3997:23;3987:34;;3933:12;;3987:9;;:34;;;;;;:::i;:::-;-1:-1:-1;;;;;;3987:49:0;;;:34;;;;;;;;;;;:49;3874:174;4062:16;;:20;4058:198;;4149:16;;-1:-1:-1;;4145:24:0;4127:43;;-1:-1:-1;;;;;4199:33:0;;-1:-1:-1;4199:33:0;;;:18;:33;;;;;;;;:45;;;;;;;;:::i;:::-;;4058:198;4270:16;;4266:392;;4330:9;4340:16;;4308:19;;4330:9;4340:20;;4359:1;;4340:20;:::i;:::-;4330:31;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;4330:31:0;;;;-1:-1:-1;4380:28:0;;;;4376:195;;-1:-1:-1;;;;;4457:27:0;;;;;;;:12;:27;;;;;;;4429:25;;;;;;;:55;;;4513:27;4503:9;:38;;4442:11;;4457:27;4503:38;;;;;;:::i;:::-;;;;;;;;;:52;;;;;-1:-1:-1;;;;;4503:52:0;;;;;-1:-1:-1;;;;;4503:52:0;;;;;;4376:195;4585:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;4585:15:0;;;;;-1:-1:-1;;;;;;4585:15:0;;;;;;;;;-1:-1:-1;;;;;4615:27:0;;;;:12;:27;;;;;:31;-1:-1:-1;4266:392:0;-1:-1:-1;;;;;;;;;;4668:27:0;4706:1;4668:27;;;;;;;;;;:40;;-1:-1:-1;;;;;;4668:40:0;;;3489:1227::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;353:173:1;421:20;;-1:-1:-1;;;;;470:31:1;;460:42;;450:70;;516:1;513;506:12;450:70;353:173;;;:::o;531:347::-;582:8;592:6;646:3;639:4;631:6;627:17;623:27;613:55;;664:1;661;654:12;613:55;-1:-1:-1;687:20:1;;-1:-1:-1;;;;;719:30:1;;716:50;;;762:1;759;752:12;716:50;799:4;791:6;787:17;775:29;;851:3;844:4;835:6;827;823:19;819:30;816:39;813:59;;;868:1;865;858:12;813:59;531:347;;;;;:::o;883:1008::-;1024:6;1032;1040;1048;1056;1109:2;1097:9;1088:7;1084:23;1080:32;1077:52;;;1125:1;1122;1115:12;1077:52;1152:23;;-1:-1:-1;;;;;1224:14:1;;;1221:34;;;1251:1;1248;1241:12;1221:34;1289:6;1278:9;1274:22;1264:32;;1334:7;1327:4;1323:2;1319:13;1315:27;1305:55;;1356:1;1353;1346:12;1305:55;1396:2;1383:16;1422:2;1414:6;1411:14;1408:34;;;1438:1;1435;1428:12;1408:34;1493:7;1486:4;1476:6;1473:1;1469:14;1465:2;1461:23;1457:34;1454:47;1451:67;;;1514:1;1511;1504:12;1451:67;1545:4;1541:2;1537:13;1527:23;;1569:6;1559:16;;;1594:40;1628:4;1617:9;1613:20;1594:40;:::i;:::-;1584:50;;1687:2;1676:9;1672:18;1659:32;1643:48;;1716:2;1706:8;1703:16;1700:36;;;1732:1;1729;1722:12;1700:36;;1771:60;1823:7;1812:8;1801:9;1797:24;1771:60;:::i;:::-;883:1008;;;;-1:-1:-1;883:1008:1;;-1:-1:-1;1850:8:1;;1745:86;883:1008;-1:-1:-1;;;883:1008:1:o;2005:658::-;2176:2;2228:21;;;2298:13;;2201:18;;;2320:22;;;2147:4;;2176:2;2399:15;;;;2373:2;2358:18;;;2147:4;2442:195;2456:6;2453:1;2450:13;2442:195;;;2521:13;;-1:-1:-1;;;;;2517:39:1;2505:52;;2612:15;;;;2577:12;;;;2553:1;2471:9;2442:195;;;-1:-1:-1;2654:3:1;;2005:658;-1:-1:-1;;;;;;2005:658:1:o;2668:1549::-;2852:4;2881:2;2921;2910:9;2906:18;2951:2;2940:9;2933:21;2974:6;3009;3003:13;3040:6;3032;3025:22;3066:2;3056:12;;3099:2;3088:9;3084:18;3077:25;;3161:2;3151:6;3148:1;3144:14;3133:9;3129:30;3125:39;3199:2;3191:6;3187:15;3220:1;3241;3251:937;3267:6;3262:3;3259:15;3251:937;;;3336:22;;;-1:-1:-1;;3332:36:1;3320:49;;3392:13;;3479:9;;-1:-1:-1;;;;;3475:35:1;3460:51;;3550:11;;3544:18;3582:15;;;3575:27;;;3663:19;;3432:15;;;3695:24;;;3785:21;;;;3830:1;;3753:2;3741:15;;;3844:236;3860:8;3855:3;3852:17;3844:236;;;3941:15;;-1:-1:-1;;;;;;3937:42:1;3923:57;;4049:17;;;;3888:1;3879:11;;;;;4006:14;;;;3844:236;;;-1:-1:-1;4166:12:1;;;;4103:5;-1:-1:-1;;;4131:15:1;;;;3293:1;3284:11;3251:937;;;-1:-1:-1;4205:6:1;;2668:1549;-1:-1:-1;;;;;;;;;2668:1549:1:o;4430:186::-;4489:6;4542:2;4530:9;4521:7;4517:23;4513:32;4510:52;;;4558:1;4555;4548:12;4510:52;4581:29;4600:9;4581:29;:::i;:::-;4571:39;4430:186;-1:-1:-1;;;4430:186:1:o;4621:657::-;4790:2;4842:21;;;4912:13;;4815:18;;;4934:22;;;4761:4;;4790:2;5013:15;;;;4987:2;4972:18;;;4761:4;5056:196;5070:6;5067:1;5064:13;5056:196;;;5135:13;;-1:-1:-1;;;;;;5131:40:1;5119:53;;5227:15;;;;5192:12;;;;5092:1;5085:9;5056:196;;5283:173;5350:20;;-1:-1:-1;;;;;;5399:32:1;;5389:43;;5379:71;;5446:1;5443;5436:12;5461:184;5519:6;5572:2;5560:9;5551:7;5547:23;5543:32;5540:52;;;5588:1;5585;5578:12;5540:52;5611:28;5629:9;5611:28;:::i;5987:127::-;6048:10;6043:3;6039:20;6036:1;6029:31;6079:4;6076:1;6069:15;6103:4;6100:1;6093:15;6119:323;6211:4;6269:11;6256:25;6363:2;6359:7;6348:8;6332:14;6328:29;6324:43;6304:18;6300:68;6290:96;;6382:1;6379;6372:12;6290:96;6403:33;;;;;6119:323;-1:-1:-1;;6119:323:1:o;6447:127::-;6508:10;6503:3;6499:20;6496:1;6489:31;6539:4;6536:1;6529:15;6563:4;6560:1;6553:15;6579:253;6651:2;6645:9;6693:4;6681:17;;-1:-1:-1;;;;;6713:34:1;;6749:22;;;6710:62;6707:88;;;6775:18;;:::i;:::-;6811:2;6804:22;6579:253;:::o;6837:275::-;6908:2;6902:9;6973:2;6954:13;;-1:-1:-1;;6950:27:1;6938:40;;-1:-1:-1;;;;;6993:34:1;;7029:22;;;6990:62;6987:88;;;7055:18;;:::i;:::-;7091:2;7084:22;6837:275;;-1:-1:-1;6837:275:1:o;7117:155::-;7197:20;;7246:1;7236:12;;7226:40;;7262:1;7259;7252:12;7277:1213;7377:9;7436:4;7428:5;7412:14;7408:26;7404:37;7401:57;;;7454:1;7451;7444:12;7401:57;7482:22;;:::i;:::-;7529:25;7548:5;7529:25;:::i;:::-;7520:7;7513:42;7574:2;7610:46;7652:2;7645:5;7641:14;7610:46;:::i;:::-;7592:16;;;7585:72;7704:2;7693:14;;7680:28;-1:-1:-1;;;;;7757:14:1;;;7754:34;;;7784:1;7781;7774:12;7754:34;7807:18;;;;7863:14;7856:4;7848:13;;7844:34;7834:62;;7892:1;7889;7882:12;7834:62;7928:2;7915:16;7950:2;7946;7943:10;7940:36;;;7956:18;;:::i;:::-;8002:2;7999:1;7995:10;7985:20;;8025:28;8049:2;8045;8041:11;8025:28;:::i;:::-;8087:15;;;8157:11;;;8153:20;;;8118:12;;;;8196:14;8185:26;;8182:46;;;8224:1;8221;8214:12;8182:46;8248:11;;;;8268:147;8284:6;8279:3;8276:15;8268:147;;;8350:22;8368:3;8350:22;:::i;:::-;8338:35;;8301:12;;;;8393;;;;8268:147;;;8444:2;8431:16;;8424:31;-1:-1:-1;8435:7:1;;7277:1213;-1:-1:-1;;;;;;7277:1213:1:o;8495:127::-;8556:10;8551:3;8547:20;8544:1;8537:31;8587:4;8584:1;8577:15;8611:4;8608:1;8601:15;8627:127;8688:10;8683:3;8679:20;8676:1;8669:31;8719:4;8716:1;8709:15;8743:4;8740:1;8733:15;8759:135;8798:3;-1:-1:-1;;8819:17:1;;8816:43;;;8839:18;;:::i;:::-;-1:-1:-1;8886:1:1;8875:13;;8759:135::o;9242:271::-;9425:6;9417;9412:3;9399:33;9381:3;9451:16;;9476:13;;;9451:16;9242:271;-1:-1:-1;9242:271:1:o;9864:446::-;9963:6;9958:3;9951:19;9933:3;9989:4;10018:2;10013:3;10009:12;10002:19;;10044:5;10067:1;10077:208;10091:6;10088:1;10085:13;10077:208;;;-1:-1:-1;;;;;;10156:25:1;10174:6;10156:25;:::i;:::-;10152:52;10140:65;;10225:12;;;;10260:15;;;;10113:1;10106:9;10077:208;;;-1:-1:-1;10301:3:1;;9864:446;-1:-1:-1;;;;;9864:446:1:o;10315:266::-;10403:6;10398:3;10391:19;10455:6;10448:5;10441:4;10436:3;10432:14;10419:43;-1:-1:-1;10507:1:1;10482:16;;;10500:4;10478:27;;;10471:38;;;;10563:2;10542:15;;;-1:-1:-1;;10538:29:1;10529:39;;;10525:50;;10315:266::o;10586:2244::-;10901:2;10953:21;;;10926:18;;;11009:22;;;10872:4;;11085:1;11062:3;11047:19;;;;11128:15;;;11113:31;;11109:41;11173:6;10872:4;11207:1433;11221:6;11218:1;11215:13;11207:1433;;;11286:22;;;-1:-1:-1;;11282:37:1;11270:50;;11359:20;;11434:14;11430:27;;;-1:-1:-1;;11426:41:1;11402:66;;11392:94;;11482:1;11479;11472:12;11392:94;11512:31;;-1:-1:-1;;;;;11575:25:1;11512:31;11575:25;:::i;:::-;11571:51;11563:6;11556:67;11646:4;11683:46;11725:2;11718:5;11714:14;11683:46;:::i;:::-;11769:1;11755:12;11752:19;11742:170;;11822:10;11817:3;11813:20;11810:1;11803:31;11861:4;11858:1;11851:15;11893:4;11890:1;11883:15;11742:170;11932:15;;;11925:37;11985:4;12043:14;;;12030:28;12115:14;12111:26;;;-1:-1:-1;;12107:40:1;12081:67;;12071:95;;12162:1;12159;12152:12;12071:95;12194:32;;12253:21;;-1:-1:-1;;;;;12290:30:1;;12287:50;;;12333:1;12330;12323:12;12287:50;12392:6;12388:2;12384:15;12368:14;12364:36;12357:5;12353:48;12350:68;;;12414:1;12411;12404:12;12350:68;12455:2;12450;12442:6;12438:15;12431:27;12481:79;12556:2;12548:6;12544:15;12536:6;12531:2;12522:7;12518:16;12481:79;:::i;:::-;12618:12;;;;12471:89;-1:-1:-1;;;12583:15:1;;;-1:-1:-1;;11243:1:1;11236:9;11207:1433;;;-1:-1:-1;;;;;;;1962:31:1;;12691:4;12676:20;;1950:44;12747:9;12739:6;12735:22;12728:4;12717:9;12713:20;12706:52;12775:49;12817:6;12809;12801;12775:49;:::i;:::-;12767:57;10586:2244;-1:-1:-1;;;;;;;;;;;10586:2244:1:o;13521:125::-;13561:4;13589:1;13586;13583:8;13580:34;;;13594:18;;:::i;:::-;-1:-1:-1;13631:9:1;;13521:125::o;13651:127::-;13712:10;13707:3;13703:20;13700:1;13693:31;13743:4;13740:1;13733:15;13767:4;13764:1;13757:15
Swarm Source
ipfs://e51618f9d081d8674f84fbb2a69dc91e8ed2c72a1f9510730971797cb2e845eb
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.