Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 39 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Coin In | 20492383 | 87 days ago | IN | 0.00135552 ETH | 0.00019216 | ||||
Token In | 20245428 | 122 days ago | IN | 0 ETH | 0.00012545 | ||||
Token In | 20245404 | 122 days ago | IN | 0 ETH | 0.00012966 | ||||
Coin In | 20129562 | 138 days ago | IN | 0.0056 ETH | 0.00022665 | ||||
Token In | 20129483 | 138 days ago | IN | 0 ETH | 0.00042506 | ||||
Token In | 20116454 | 140 days ago | IN | 0 ETH | 0.00047606 | ||||
Token In | 20116427 | 140 days ago | IN | 0 ETH | 0.00047253 | ||||
Token In | 20116347 | 140 days ago | IN | 0 ETH | 0.00042976 | ||||
Token In | 19975189 | 159 days ago | IN | 0 ETH | 0.00089632 | ||||
Token In | 19975124 | 159 days ago | IN | 0 ETH | 0.00087035 | ||||
Accept Ownership | 19974172 | 159 days ago | IN | 0 ETH | 0.00018426 | ||||
Accept Ownership | 19974169 | 159 days ago | IN | 0 ETH | 0.00022359 | ||||
Transfer Ownersh... | 19973722 | 160 days ago | IN | 0 ETH | 0.00023485 | ||||
Coin In | 19973701 | 160 days ago | IN | 0.01 ETH | 0.00030341 | ||||
Token In | 19973693 | 160 days ago | IN | 0 ETH | 0.00055433 | ||||
Set Token Reserv... | 19973678 | 160 days ago | IN | 0 ETH | 0.00024793 | ||||
Set Token Reserv... | 19973677 | 160 days ago | IN | 0 ETH | 0.00024065 | ||||
Set Fund Thresho... | 19973673 | 160 days ago | IN | 0 ETH | 0.00022687 | ||||
Rescue Native | 19969195 | 160 days ago | IN | 0 ETH | 0.00071459 | ||||
Coin In | 19968590 | 160 days ago | IN | 0.037 ETH | 0.00037037 | ||||
Transfer Ownersh... | 19968306 | 160 days ago | IN | 0 ETH | 0.00077398 | ||||
Set Reserve Wall... | 19968060 | 160 days ago | IN | 0 ETH | 0.00048811 | ||||
Change Signer | 19968009 | 160 days ago | IN | 0 ETH | 0.00109778 | ||||
Set Reserve Wall... | 19966706 | 161 days ago | IN | 0 ETH | 0.00054593 | ||||
Set Token Reserv... | 19966343 | 161 days ago | IN | 0 ETH | 0.00057085 |
Loading...
Loading
Contract Name:
Bridge
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-05-10 */ //SPDX-License-Identifier: MIT pragma solidity 0.8 .17; interface ERC20Essential { function balanceOf(address user) external view returns(uint256); function transfer(address _to, uint256 _amount) external returns(bool); function transferFrom(address _from, address _to, uint256 _amount) external returns(bool); function mint(address account, uint256 value) external; function burn(address account, uint256 value) external; function transferOwnership(address newOwner) external; function owner() external returns(address); } //USDT contract in Ethereum does not follow ERC20 standard so it needs different interface interface usdtContract { function transferFrom(address _from, address _to, uint256 _amount) external; function transfer(address _to, uint256 _amount) external; function mint(address account, uint256 value) external; function burn(address account, uint256 value) external; function balanceOf(address user) external view returns(uint256); } //*******************************************************************// //------------------ Contract to Manage Ownership -------------------// //*******************************************************************// contract owned { address public owner; address internal newOwner; mapping(address => bool) public signer; event OwnershipTransferred(address indexed _from, address indexed _to); event SignerUpdated(address indexed signer, bool indexed status); constructor() { owner = msg.sender; //owner does not become signer automatically. } modifier onlyOwner { require(msg.sender == owner); _; } modifier onlySigner { require(signer[msg.sender], 'caller must be signer'); _; } function changeSigner(address _signer, bool _status) public onlyOwner { signer[_signer] = _status; emit SignerUpdated(_signer, _status); } function transferOwnership(address _newOwner) public onlyOwner { newOwner = _newOwner; } //the reason for this flow is to protect owners from sending ownership to unintended address due to human error function acceptOwnership() public { require(msg.sender == newOwner); emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } //****************************************************************************// //--------------------- MAIN CODE STARTS HERE ---------------------// //****************************************************************************// contract Bridge is owned { uint256 public orderID; uint256 public exraCoinRewards; // if we give users extra coins to cover gas cost of some initial transactions. address public feeWallet; address public reserveWallet; address public usdtAddress = 0xdAC17F958D2ee523a2206206994597C13D831ec7; uint256 public reserveFundThreshold = 10e18; uint256 public txFee; // /* This mapping contains the status of tokenAddresses who are not under our control like those which we cannot burn or mint*/ // mapping(address=>bool) public noControl; mapping(address => uint256) public tokenFundThreshold; // This generates a public event of coin received by contract event CoinIn(uint256 indexed orderID, address indexed user, uint256 value, address outputCurrency); event CoinOut(uint256 indexed orderID, address indexed user, uint256 value); event CoinOutFailed(uint256 indexed orderID, address indexed user, uint256 value); event TokenIn(uint256 indexed orderID, address indexed tokenAddress, address indexed user, uint256 value, uint256 chainID, address outputCurrency); event TokenOut(uint256 indexed orderID, address indexed tokenAddress, address indexed user, uint256 value, uint256 chainID); event TokenOutFailed(uint256 indexed orderID, address indexed tokenAddress, address indexed user, uint256 value, uint256 chainID); receive() external payable { //nothing happens for incoming fund } constructor() { tokenFundThreshold[0xdAC17F958D2ee523a2206206994597C13D831ec7] = 100e6; /*USDT Ethereum*/ tokenFundThreshold[0x55d398326f99059fF775485246999027B3197955] = 100e18; /*USDT Binance*/ tokenFundThreshold[0xc2132D05D31c914a87C6611C10748AEb04B58e8F] = 100e6; /*USDT Matic*/ } function coinIn(address outputCurrency) external payable returns(bool) { orderID++; uint256 amount = msg.value; if (address(this).balance >= reserveFundThreshold) { payable(owner).transfer(amount); } emit CoinIn(orderID, msg.sender, amount, outputCurrency); return true; } function coinOut(address user, uint256 amount, uint256 _orderID) external onlySigner returns(bool) { uint256 afterTax; uint256 tax; if (txFee != 0) { (afterTax, tax) = processTax(amount); if (feeWallet != address(0)) { payable(feeWallet).transfer(tax); } payable(user).transfer(afterTax); } else { payable(user).transfer(amount); afterTax = amount; } emit CoinOut(_orderID, user, afterTax); return true; } function tokenIn(address tokenAddress, uint256 tokenAmount, uint256 chainID, address outputCurrency) external returns(bool) { orderID++; if (tokenAddress == usdtAddress) { usdtContract(tokenAddress).transferFrom(msg.sender, address(this), tokenAmount); if (usdtContract(tokenAddress).balanceOf(address(this)) >= tokenFundThreshold[tokenAddress]) { usdtContract(tokenAddress).transfer(owner, tokenAmount); } } else { ERC20Essential(tokenAddress).transferFrom(msg.sender, address(this), tokenAmount); if (usdtContract(tokenAddress).balanceOf(address(this)) >= tokenFundThreshold[tokenAddress]) { ERC20Essential(tokenAddress).transfer(owner, tokenAmount); } } emit TokenIn(orderID, tokenAddress, msg.sender, tokenAmount, chainID, outputCurrency); return true; } function tokenOut(address tokenAddress, address user, uint256 tokenAmount, uint256 _orderID, uint256 chainID) external onlySigner returns(bool) { uint256 minted = tokenAmount; uint256 tax; uint256 afterTax; if (tokenAddress == usdtAddress) { if (txFee != 0) { (afterTax, tax) = processTax(tokenAmount); usdtContract(tokenAddress).transfer(user, afterTax); if (feeWallet != address(0)) { usdtContract(tokenAddress).transfer(feeWallet, tax); } minted = afterTax; } else { usdtContract(tokenAddress).transfer(user, tokenAmount); minted = tokenAmount; } } else { if (txFee != 0) { (afterTax, tax) = processTax(tokenAmount); ERC20Essential(tokenAddress).transfer(user, afterTax); if (feeWallet != address(0)) { ERC20Essential(tokenAddress).transfer(feeWallet, tax); } minted = afterTax; } else { ERC20Essential(tokenAddress).transfer(user, tokenAmount); minted = tokenAmount; } } emit TokenOut(_orderID, tokenAddress, user, minted, chainID); return true; } /* Process Tax*/ function processTax(uint256 amount) internal view returns(uint256 afterTax, uint256 deductedTax) { require(amount>txFee, "Fee greater than amount"); deductedTax = txFee; afterTax = amount - deductedTax; } /*Change feeWallet*/ function setFeeWallet(address _feeWallet) external onlyOwner returns(address oldWallet, address newWallet) { oldWallet = feeWallet; feeWallet = _feeWallet; newWallet = feeWallet; } /*Change reserveWallet*/ function setReserveWallet(address _reserveWallet) external onlyOwner returns(address oldWallet, address newWallet) { oldWallet = reserveWallet; reserveWallet = _reserveWallet; newWallet = reserveWallet; } /* set usdt token address*/ function setUSDTAddress(address _tokenAddress) external onlyOwner returns(address newAddress) { require(_tokenAddress != address(0), "zero address not allowed"); require(_tokenAddress != usdtAddress, "same as old address"); usdtAddress = _tokenAddress; newAddress = usdtAddress; } /* set Threshold*/ function setFundThreshold(uint256 _amount) external onlyOwner returns(uint256 oldAmount, uint256 newAmount) { oldAmount = reserveFundThreshold; reserveFundThreshold = _amount; newAmount = _amount; } /* Change owner of the given token contract*/ function transferTokenOwnership(address ofTokenAddress, address toAddress) external onlyOwner returns(address oldOwner, address newOwner) { require(ofTokenAddress != address(0) && toAddress != address(0), "zero address not allowed"); oldOwner = ERC20Essential(ofTokenAddress).owner(); ERC20Essential(ofTokenAddress).transferOwnership(toAddress); newOwner = ERC20Essential(ofTokenAddress).owner(); } /* Modify the token reserve threshold values */ function setTokenReserveThreshold(address forToken, uint256 threshold) external onlyOwner { tokenFundThreshold[forToken] = threshold; } function rescueNative(uint256 rescueAmount) external onlyOwner { if (address(this).balance <= rescueAmount) { rescueAmount = address(this).balance; } payable(owner).transfer(rescueAmount); } function setTxFee(uint256 amount) external onlyOwner { txFee = amount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"address","name":"outputCurrency","type":"address"}],"name":"CoinIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"CoinOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"CoinOutFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"SignerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"},{"indexed":false,"internalType":"address","name":"outputCurrency","type":"address"}],"name":"TokenIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"TokenOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"orderID","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"TokenOutFailed","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_signer","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"changeSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"outputCurrency","type":"address"}],"name":"coinIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"_orderID","type":"uint256"}],"name":"coinOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exraCoinRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"orderID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rescueAmount","type":"uint256"}],"name":"rescueNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserveFundThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserveWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_feeWallet","type":"address"}],"name":"setFeeWallet","outputs":[{"internalType":"address","name":"oldWallet","type":"address"},{"internalType":"address","name":"newWallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setFundThreshold","outputs":[{"internalType":"uint256","name":"oldAmount","type":"uint256"},{"internalType":"uint256","name":"newAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_reserveWallet","type":"address"}],"name":"setReserveWallet","outputs":[{"internalType":"address","name":"oldWallet","type":"address"},{"internalType":"address","name":"newWallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"forToken","type":"address"},{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setTokenReserveThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"setUSDTAddress","outputs":[{"internalType":"address","name":"newAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"signer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenFundThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"chainID","type":"uint256"},{"internalType":"address","name":"outputCurrency","type":"address"}],"name":"tokenIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"_orderID","type":"uint256"},{"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"tokenOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ofTokenAddress","type":"address"},{"internalType":"address","name":"toAddress","type":"address"}],"name":"transferTokenOwnership","outputs":[{"internalType":"address","name":"oldOwner","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdtAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600780546001600160a01b03191673dac17f958d2ee523a2206206994597c13d831ec7179055678ac7230489e8000060085534801561004257600080fd5b50600080546001600160a01b03191633178155600a6020526305f5e1007fb7e2958a2abfb668f1e99d86008b48267975d726df44a62b9676fda384beb19581905568056bc75e2d631000007fb0775d57c3eeb070f58d410e36e9ff396813a5d76997d9a91bdf10f0798296f05573c2132d05d31c914a87c6611c10748aeb04b58e8f9091527f8a10ac49449cc42ad5f1435ba0e39c8ff12ee5867371ae9a8b5024fb3f73cf0055611643806100f86000396000f3fe60806040526004361061016a5760003560e01c80639ab4a445116100d1578063dda4fa8f1161008a578063f25f4b5611610064578063f25f4b5614610465578063f2fde38b14610485578063f3a7cb61146104a5578063fea54d06146104c557600080fd5b8063dda4fa8f1461040f578063f05d16f71461042f578063f1c069061461044f57600080fd5b80639ab4a4451461034e578063b8fb28161461036e578063c7e0af6a1461038e578063cd23e147146103c3578063cf820461146103d9578063d72b11bd146103ef57600080fd5b806355eba8681161012357806355eba868146102705780636fba2983146102a857806379ba5097146102e357806381203d03146102f85780638da5cb5b1461030e57806390d49b9d1461032e57600080fd5b80630536b7231461017657806315a01045146101bb578063256c1ea3146101ce578063383fe467146101ee578063454aa6691461022e57806351295f011461025057600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506101a66101913660046113c4565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101a66101c93660046113c4565b6104e5565b3480156101da57600080fd5b506101a66101e93660046113e8565b610591565b3480156101fa57600080fd5b5061020e610209366004611439565b610969565b604080516001600160a01b039384168152929091166020830152016101b2565b34801561023a57600080fd5b5061024e610249366004611472565b610b1a565b005b34801561025c57600080fd5b5061024e61026b366004611499565b610b78565b34801561027c57600080fd5b5061029061028b3660046113c4565b610be3565b6040516001600160a01b0390911681526020016101b2565b3480156102b457600080fd5b506102d56102c33660046113c4565b600a6020526000908152604090205481565b6040519081526020016101b2565b3480156102ef57600080fd5b5061024e610cc3565b34801561030457600080fd5b506102d560035481565b34801561031a57600080fd5b50600054610290906001600160a01b031681565b34801561033a57600080fd5b5061020e6103493660046113c4565b610d3e565b34801561035a57600080fd5b50600754610290906001600160a01b031681565b34801561037a57600080fd5b5061024e6103893660046114c7565b610d80565b34801561039a57600080fd5b506103ae6103a9366004611472565b610db3565b604080519283526020830191909152016101b2565b3480156103cf57600080fd5b506102d560085481565b3480156103e557600080fd5b506102d560095481565b3480156103fb57600080fd5b50600654610290906001600160a01b031681565b34801561041b57600080fd5b5061020e61042a3660046113c4565b610dda565b34801561043b57600080fd5b5061024e61044a366004611472565b610e1c565b34801561045b57600080fd5b506102d560045481565b34801561047157600080fd5b50600554610290906001600160a01b031681565b34801561049157600080fd5b5061024e6104a03660046113c4565b610e38565b3480156104b157600080fd5b506101a66104c03660046114f3565b610e71565b3480156104d157600080fd5b506101a66104e036600461153d565b6111bd565b60038054600091826104f683611588565b90915550506008543490471061054157600080546040516001600160a01b039091169183156108fc02918491818181858888f1935050505015801561053f573d6000803e3d6000fd5b505b600354604080518381526001600160a01b03861660208201523392917f50ed54fdff2e8028310feac14aa2e8343c5eb6ab4fb192510bd3358cbe18fb1d910160405180910390a350600192915050565b3360009081526002602052604081205460ff166105ed5760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064015b60405180910390fd5b600754849060009081906001600160a01b03908116908a160361076f57600954156107055761061b87611343565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018490529194509192508a169063a9059cbb90604401600060405180830381600087803b15801561066b57600080fd5b505af115801561067f573d6000803e3d6000fd5b50506005546001600160a01b03161591506106fd90505760055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908a169063a9059cbb90604401600060405180830381600087803b1580156106e457600080fd5b505af11580156106f8573d6000803e3d6000fd5b505050505b809250610903565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018990528a169063a9059cbb90604401600060405180830381600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b50505050869250610903565b6009541561088b5761078087611343565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018490529194509192508a169063a9059cbb906044016020604051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906115a1565b506005546001600160a01b0316156106fd5760055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908a169063a9059cbb906044016020604051808303816000875af115801561085e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088291906115a1565b50809250610903565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018990528a169063a9059cbb906044016020604051808303816000875af11580156108da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fe91906115a1565b508692505b876001600160a01b0316896001600160a01b0316877f227f62390ff31ea224acc601adb99ca571aafaeef45b6528a1f75af3fdee81b08689604051610952929190918252602082015260400190565b60405180910390a450600198975050505050505050565b6000805481906001600160a01b0316331461098357600080fd5b6001600160a01b038416158015906109a357506001600160a01b03831615155b6109ea5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b60448201526064016105e4565b836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e91906115be565b60405163f2fde38b60e01b81526001600160a01b0385811660048301529193509085169063f2fde38b90602401600060405180830381600087803b158015610a9557600080fd5b505af1158015610aa9573d6000803e3d6000fd5b50505050836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1191906115be565b90509250929050565b6000546001600160a01b03163314610b3157600080fd5b804711610b3b5750475b600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610b74573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610b8f57600080fd5b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917ffcaa24b1276bfa7dbf77797c0a984b9df924acbeaabd48cd2f1b0eca379b78fa91a35050565b600080546001600160a01b03163314610bfb57600080fd5b6001600160a01b038216610c4c5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b60448201526064016105e4565b6007546001600160a01b0390811690831603610ca05760405162461bcd60e51b815260206004820152601360248201527273616d65206173206f6c64206164647265737360681b60448201526064016105e4565b50600780546001600160a01b039092166001600160a01b03199092168217905590565b6001546001600160a01b03163314610cda57600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000805481906001600160a01b03163314610d5857600080fd5b5050600580546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610d9757600080fd5b6001600160a01b039091166000908152600a6020526040902055565b6000805481906001600160a01b03163314610dcd57600080fd5b5050600880549082905591565b6000805481906001600160a01b03163314610df457600080fd5b5050600680546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610e3357600080fd5b600955565b6000546001600160a01b03163314610e4f57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6003805460009182610e8283611588565b90915550506007546001600160a01b0390811690861603610fee576040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd90606401600060405180830381600087803b158015610eeb57600080fd5b505af1158015610eff573d6000803e3d6000fd5b505050506001600160a01b0385166000818152600a6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d91906115db565b10610fe95760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529086169063a9059cbb90604401600060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b505050505b61115e565b6040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015611041573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106591906115a1565b506001600160a01b0385166000818152600a6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e091906115db565b1061115e5760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529086169063a9059cbb906044016020604051808303816000875af1158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c91906115a1565b505b60035460408051868152602081018690526001600160a01b03858116828401529151339392891692917f8a9f5b93a9427ed2074a269336914d74d6b34dfe5679f30c5cf172f5842aa795919081900360600190a4506001949350505050565b3360009081526002602052604081205460ff166112145760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064016105e4565b6000806009546000146112b85761122a85611343565b60055491935091506001600160a01b03161561127c576005546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561127a573d6000803e3d6000fd5b505b6040516001600160a01b0387169083156108fc029084906000818181858888f193505050501580156112b2573d6000803e3d6000fd5b506112f3565b6040516001600160a01b0387169086156108fc029087906000818181858888f193505050501580156112ee573d6000803e3d6000fd5b508491505b856001600160a01b0316847f9651479651fe91907cee7de24a0e47091421878d660c93c6fe0d04c7b7b2404b8460405161132f91815260200190565b60405180910390a350600195945050505050565b60008060095483116113975760405162461bcd60e51b815260206004820152601760248201527f4665652067726561746572207468616e20616d6f756e7400000000000000000060448201526064016105e4565b506009546113a581846115f4565b9150915091565b6001600160a01b03811681146113c157600080fd5b50565b6000602082840312156113d657600080fd5b81356113e1816113ac565b9392505050565b600080600080600060a0868803121561140057600080fd5b853561140b816113ac565b9450602086013561141b816113ac565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561144c57600080fd5b8235611457816113ac565b91506020830135611467816113ac565b809150509250929050565b60006020828403121561148457600080fd5b5035919050565b80151581146113c157600080fd5b600080604083850312156114ac57600080fd5b82356114b7816113ac565b915060208301356114678161148b565b600080604083850312156114da57600080fd5b82356114e5816113ac565b946020939093013593505050565b6000806000806080858703121561150957600080fd5b8435611514816113ac565b935060208501359250604085013591506060850135611532816113ac565b939692955090935050565b60008060006060848603121561155257600080fd5b833561155d816113ac565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161159a5761159a611572565b5060010190565b6000602082840312156115b357600080fd5b81516113e18161148b565b6000602082840312156115d057600080fd5b81516113e1816113ac565b6000602082840312156115ed57600080fd5b5051919050565b8181038181111561160757611607611572565b9291505056fea2646970667358221220a58dacd49772a9d775b9105635d01acd4d7356379c4a31cbda6c16f982044a6b64736f6c63430008110033
Deployed Bytecode
0x60806040526004361061016a5760003560e01c80639ab4a445116100d1578063dda4fa8f1161008a578063f25f4b5611610064578063f25f4b5614610465578063f2fde38b14610485578063f3a7cb61146104a5578063fea54d06146104c557600080fd5b8063dda4fa8f1461040f578063f05d16f71461042f578063f1c069061461044f57600080fd5b80639ab4a4451461034e578063b8fb28161461036e578063c7e0af6a1461038e578063cd23e147146103c3578063cf820461146103d9578063d72b11bd146103ef57600080fd5b806355eba8681161012357806355eba868146102705780636fba2983146102a857806379ba5097146102e357806381203d03146102f85780638da5cb5b1461030e57806390d49b9d1461032e57600080fd5b80630536b7231461017657806315a01045146101bb578063256c1ea3146101ce578063383fe467146101ee578063454aa6691461022e57806351295f011461025057600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506101a66101913660046113c4565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101a66101c93660046113c4565b6104e5565b3480156101da57600080fd5b506101a66101e93660046113e8565b610591565b3480156101fa57600080fd5b5061020e610209366004611439565b610969565b604080516001600160a01b039384168152929091166020830152016101b2565b34801561023a57600080fd5b5061024e610249366004611472565b610b1a565b005b34801561025c57600080fd5b5061024e61026b366004611499565b610b78565b34801561027c57600080fd5b5061029061028b3660046113c4565b610be3565b6040516001600160a01b0390911681526020016101b2565b3480156102b457600080fd5b506102d56102c33660046113c4565b600a6020526000908152604090205481565b6040519081526020016101b2565b3480156102ef57600080fd5b5061024e610cc3565b34801561030457600080fd5b506102d560035481565b34801561031a57600080fd5b50600054610290906001600160a01b031681565b34801561033a57600080fd5b5061020e6103493660046113c4565b610d3e565b34801561035a57600080fd5b50600754610290906001600160a01b031681565b34801561037a57600080fd5b5061024e6103893660046114c7565b610d80565b34801561039a57600080fd5b506103ae6103a9366004611472565b610db3565b604080519283526020830191909152016101b2565b3480156103cf57600080fd5b506102d560085481565b3480156103e557600080fd5b506102d560095481565b3480156103fb57600080fd5b50600654610290906001600160a01b031681565b34801561041b57600080fd5b5061020e61042a3660046113c4565b610dda565b34801561043b57600080fd5b5061024e61044a366004611472565b610e1c565b34801561045b57600080fd5b506102d560045481565b34801561047157600080fd5b50600554610290906001600160a01b031681565b34801561049157600080fd5b5061024e6104a03660046113c4565b610e38565b3480156104b157600080fd5b506101a66104c03660046114f3565b610e71565b3480156104d157600080fd5b506101a66104e036600461153d565b6111bd565b60038054600091826104f683611588565b90915550506008543490471061054157600080546040516001600160a01b039091169183156108fc02918491818181858888f1935050505015801561053f573d6000803e3d6000fd5b505b600354604080518381526001600160a01b03861660208201523392917f50ed54fdff2e8028310feac14aa2e8343c5eb6ab4fb192510bd3358cbe18fb1d910160405180910390a350600192915050565b3360009081526002602052604081205460ff166105ed5760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064015b60405180910390fd5b600754849060009081906001600160a01b03908116908a160361076f57600954156107055761061b87611343565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018490529194509192508a169063a9059cbb90604401600060405180830381600087803b15801561066b57600080fd5b505af115801561067f573d6000803e3d6000fd5b50506005546001600160a01b03161591506106fd90505760055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908a169063a9059cbb90604401600060405180830381600087803b1580156106e457600080fd5b505af11580156106f8573d6000803e3d6000fd5b505050505b809250610903565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018990528a169063a9059cbb90604401600060405180830381600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b50505050869250610903565b6009541561088b5761078087611343565b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018490529194509192508a169063a9059cbb906044016020604051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906115a1565b506005546001600160a01b0316156106fd5760055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052908a169063a9059cbb906044016020604051808303816000875af115801561085e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088291906115a1565b50809250610903565b60405163a9059cbb60e01b81526001600160a01b038981166004830152602482018990528a169063a9059cbb906044016020604051808303816000875af11580156108da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fe91906115a1565b508692505b876001600160a01b0316896001600160a01b0316877f227f62390ff31ea224acc601adb99ca571aafaeef45b6528a1f75af3fdee81b08689604051610952929190918252602082015260400190565b60405180910390a450600198975050505050505050565b6000805481906001600160a01b0316331461098357600080fd5b6001600160a01b038416158015906109a357506001600160a01b03831615155b6109ea5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b60448201526064016105e4565b836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e91906115be565b60405163f2fde38b60e01b81526001600160a01b0385811660048301529193509085169063f2fde38b90602401600060405180830381600087803b158015610a9557600080fd5b505af1158015610aa9573d6000803e3d6000fd5b50505050836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1191906115be565b90509250929050565b6000546001600160a01b03163314610b3157600080fd5b804711610b3b5750475b600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610b74573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610b8f57600080fd5b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917ffcaa24b1276bfa7dbf77797c0a984b9df924acbeaabd48cd2f1b0eca379b78fa91a35050565b600080546001600160a01b03163314610bfb57600080fd5b6001600160a01b038216610c4c5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b60448201526064016105e4565b6007546001600160a01b0390811690831603610ca05760405162461bcd60e51b815260206004820152601360248201527273616d65206173206f6c64206164647265737360681b60448201526064016105e4565b50600780546001600160a01b039092166001600160a01b03199092168217905590565b6001546001600160a01b03163314610cda57600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000805481906001600160a01b03163314610d5857600080fd5b5050600580546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610d9757600080fd5b6001600160a01b039091166000908152600a6020526040902055565b6000805481906001600160a01b03163314610dcd57600080fd5b5050600880549082905591565b6000805481906001600160a01b03163314610df457600080fd5b5050600680546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610e3357600080fd5b600955565b6000546001600160a01b03163314610e4f57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6003805460009182610e8283611588565b90915550506007546001600160a01b0390811690861603610fee576040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd90606401600060405180830381600087803b158015610eeb57600080fd5b505af1158015610eff573d6000803e3d6000fd5b505050506001600160a01b0385166000818152600a6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d91906115db565b10610fe95760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529086169063a9059cbb90604401600060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b505050505b61115e565b6040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd906064016020604051808303816000875af1158015611041573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106591906115a1565b506001600160a01b0385166000818152600a6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e091906115db565b1061115e5760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690529086169063a9059cbb906044016020604051808303816000875af1158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c91906115a1565b505b60035460408051868152602081018690526001600160a01b03858116828401529151339392891692917f8a9f5b93a9427ed2074a269336914d74d6b34dfe5679f30c5cf172f5842aa795919081900360600190a4506001949350505050565b3360009081526002602052604081205460ff166112145760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064016105e4565b6000806009546000146112b85761122a85611343565b60055491935091506001600160a01b03161561127c576005546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561127a573d6000803e3d6000fd5b505b6040516001600160a01b0387169083156108fc029084906000818181858888f193505050501580156112b2573d6000803e3d6000fd5b506112f3565b6040516001600160a01b0387169086156108fc029087906000818181858888f193505050501580156112ee573d6000803e3d6000fd5b508491505b856001600160a01b0316847f9651479651fe91907cee7de24a0e47091421878d660c93c6fe0d04c7b7b2404b8460405161132f91815260200190565b60405180910390a350600195945050505050565b60008060095483116113975760405162461bcd60e51b815260206004820152601760248201527f4665652067726561746572207468616e20616d6f756e7400000000000000000060448201526064016105e4565b506009546113a581846115f4565b9150915091565b6001600160a01b03811681146113c157600080fd5b50565b6000602082840312156113d657600080fd5b81356113e1816113ac565b9392505050565b600080600080600060a0868803121561140057600080fd5b853561140b816113ac565b9450602086013561141b816113ac565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561144c57600080fd5b8235611457816113ac565b91506020830135611467816113ac565b809150509250929050565b60006020828403121561148457600080fd5b5035919050565b80151581146113c157600080fd5b600080604083850312156114ac57600080fd5b82356114b7816113ac565b915060208301356114678161148b565b600080604083850312156114da57600080fd5b82356114e5816113ac565b946020939093013593505050565b6000806000806080858703121561150957600080fd5b8435611514816113ac565b935060208501359250604085013591506060850135611532816113ac565b939692955090935050565b60008060006060848603121561155257600080fd5b833561155d816113ac565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161159a5761159a611572565b5060010190565b6000602082840312156115b357600080fd5b81516113e18161148b565b6000602082840312156115d057600080fd5b81516113e1816113ac565b6000602082840312156115ed57600080fd5b5051919050565b8181038181111561160757611607611572565b9291505056fea2646970667358221220a58dacd49772a9d775b9105635d01acd4d7356379c4a31cbda6c16f982044a6b64736f6c63430008110033
Deployed Bytecode Sourcemap
2724:7584:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1359:38;;;;;;;;;;-1:-1:-1;1359:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;567:14:1;;560:22;542:41;;530:2;515:18;1359:38:0;;;;;;;;4559:350;;;;;;:::i;:::-;;:::i;6444:1400::-;;;;;;;;;;-1:-1:-1;6444:1400:0;;;;;:::i;:::-;;:::i;9315:439::-;;;;;;;;;;-1:-1:-1;9315:439:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;1816:15:1;;;1798:34;;1868:15;;;;1863:2;1848:18;;1841:43;1733:18;9315:439:0;1586:304:1;9978:235:0;;;;;;;;;;-1:-1:-1;9978:235:0;;;;;:::i;:::-;;:::i;:::-;;1871:161;;;;;;;;;;-1:-1:-1;1871:161:0;;;;;:::i;:::-;;:::i;8673:321::-;;;;;;;;;;-1:-1:-1;8673:321:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2754:32:1;;;2736:51;;2724:2;2709:18;8673:321:0;2590:203:1;3312:53:0;;;;;;;;;;-1:-1:-1;3312:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2944:25:1;;;2932:2;2917:18;3312:53:0;2798:177:1;2267:196:0;;;;;;;;;;;;;:::i;2758:22::-;;;;;;;;;;;;;;;;1300:20;;;;;;;;;;-1:-1:-1;1300:20:0;;;;-1:-1:-1;;;;;1300:20:0;;;8146:212;;;;;;;;;;-1:-1:-1;8146:212:0;;;;;:::i;:::-;;:::i;2972:71::-;;;;;;;;;;-1:-1:-1;2972:71:0;;;;-1:-1:-1;;;;;2972:71:0;;;9821:149;;;;;;;;;;-1:-1:-1;9821:149:0;;;;;:::i;:::-;;:::i;9026:230::-;;;;;;;;;;-1:-1:-1;9026:230:0;;;;;:::i;:::-;;:::i;:::-;;;;3474:25:1;;;3530:2;3515:18;;3508:34;;;;3447:18;9026:230:0;3300:248:1;3050:43:0;;;;;;;;;;;;;;;;3100:20;;;;;;;;;;;;;;;;2937:28;;;;;;;;;;-1:-1:-1;2937:28:0;;;;-1:-1:-1;;;;;2937:28:0;;;8396:236;;;;;;;;;;-1:-1:-1;8396:236:0;;;;;:::i;:::-;;:::i;10219:86::-;;;;;;;;;;-1:-1:-1;10219:86:0;;;;;:::i;:::-;;:::i;2787:30::-;;;;;;;;;;;;;;;;2906:24;;;;;;;;;;-1:-1:-1;2906:24:0;;;;-1:-1:-1;;;;;2906:24:0;;;2040:102;;;;;;;;;;-1:-1:-1;2040:102:0;;;;;:::i;:::-;;:::i;5499:935::-;;;;;;;;;;-1:-1:-1;5499:935:0;;;;;:::i;:::-;;:::i;4917:572::-;;;;;;;;;;-1:-1:-1;4917:572:0;;;;;:::i;:::-;;:::i;4559:350::-;4641:7;:9;;4624:4;;;4641:9;;;:::i;:::-;;;;-1:-1:-1;;4731:20:0;;4678:9;;4706:21;:45;4702:109;;4776:5;;;4768:31;;-1:-1:-1;;;;;4776:5:0;;;;4768:31;;;;;4792:6;;4768:31;4776:5;4768:31;4792:6;4776:5;4768:31;;;;;;;;;;;;;;;;;;;;;4702:109;4835:7;;4828:51;;;4917:25:1;;;-1:-1:-1;;;;;4978:32:1;;4973:2;4958:18;;4951:60;4844:10:0;;4835:7;4828:51;;4890:18:1;4828:51:0;;;;;;;-1:-1:-1;4897:4:0;;4559:350;-1:-1:-1;;4559:350:0:o;6444:1400::-;1804:10;6582:4;1797:18;;;:6;:18;;;;;;;;1789:52;;;;-1:-1:-1;;;1789:52:0;;5224:2:1;1789:52:0;;;5206:21:1;5263:2;5243:18;;;5236:30;-1:-1:-1;;;5282:18:1;;;5275:51;5343:18;;1789:52:0;;;;;;;;;6711:11:::1;::::0;6616;;6599:14:::1;::::0;;;-1:-1:-1;;;;;6711:11:0;;::::1;6695:27:::0;;::::1;::::0;6691:1047:::1;;6743:5;::::0;:10;6739:473:::1;;6792:23;6803:11;6792:10;:23::i;:::-;6834:51;::::0;-1:-1:-1;;;6834:51:0;;-1:-1:-1;;;;;5564:32:1;;;6834:51:0::1;::::0;::::1;5546::1::0;5613:18;;;5606:34;;;6774:41:0;;-1:-1:-1;6774:41:0;;-1:-1:-1;6834:35:0;::::1;::::0;::::1;::::0;5519:18:1;;6834:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6908:9:0::1;::::0;-1:-1:-1;;;;;6908:9:0::1;:23:::0;;-1:-1:-1;6904:123:0::1;::::0;-1:-1:-1;6904:123:0::1;6992:9;::::0;6956:51:::1;::::0;-1:-1:-1;;;6956:51:0;;-1:-1:-1;;;;;6992:9:0;;::::1;6956:51;::::0;::::1;5546::1::0;5613:18;;;5606:34;;;6956:35:0;;::::1;::::0;::::1;::::0;5519:18:1;;6956:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6904:123;7054:8;7045:17;;6691:1047;;6739:473;7103:54;::::0;-1:-1:-1;;;7103:54:0;;-1:-1:-1;;;;;5564:32:1;;;7103:54:0::1;::::0;::::1;5546:51:1::0;5613:18;;;5606:34;;;7103:35:0;::::1;::::0;::::1;::::0;5519:18:1;;7103:54:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7185:11;7176:20;;6691:1047;;;7250:5;::::0;:10;7246:479:::1;;7299:23;7310:11;7299:10;:23::i;:::-;7341:53;::::0;-1:-1:-1;;;7341:53:0;;-1:-1:-1;;;;;5564:32:1;;;7341:53:0::1;::::0;::::1;5546:51:1::0;5613:18;;;5606:34;;;7281:41:0;;-1:-1:-1;7281:41:0;;-1:-1:-1;7341:37:0;::::1;::::0;::::1;::::0;5519:18:1;;7341:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7417:9:0::1;::::0;-1:-1:-1;;;;;7417:9:0::1;:23:::0;7413:125:::1;;7503:9;::::0;7465:53:::1;::::0;-1:-1:-1;;;7465:53:0;;-1:-1:-1;;;;;7503:9:0;;::::1;7465:53;::::0;::::1;5546:51:1::0;5613:18;;;5606:34;;;7465:37:0;;::::1;::::0;::::1;::::0;5519:18:1;;7465:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7565:8;7556:17;;7246:479;;;7614:56;::::0;-1:-1:-1;;;7614:56:0;;-1:-1:-1;;;;;5564:32:1;;;7614:56:0::1;::::0;::::1;5546:51:1::0;5613:18;;;5606:34;;;7614:37:0;::::1;::::0;::::1;::::0;5519:18:1;;7614:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7698:11;7689:20;;7246:479;7790:4;-1:-1:-1::0;;;;;7757:55:0::1;7776:12;-1:-1:-1::0;;;;;7757:55:0::1;7766:8;7757:55;7796:6;7804:7;7757:55;;;;;;3474:25:1::0;;;3530:2;3515:18;;3508:34;3462:2;3447:18;;3300:248;7757:55:0::1;;;;;;;;-1:-1:-1::0;7832:4:0::1;::::0;6444:1400;-1:-1:-1;;;;;;;;6444:1400:0:o;9315:439::-;9417:16;1722:5;;9417:16;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;;;;9472:28:0;::::1;::::0;;::::1;::::0;:55:::1;;-1:-1:-1::0;;;;;;9504:23:0;::::1;::::0;::::1;9472:55;9464:92;;;::::0;-1:-1:-1;;;9464:92:0;;6103:2:1;9464:92:0::1;::::0;::::1;6085:21:1::0;6142:2;6122:18;;;6115:30;-1:-1:-1;;;6161:18:1;;;6154:54;6225:18;;9464:92:0::1;5901:348:1::0;9464:92:0::1;9593:14;-1:-1:-1::0;;;;;9578:36:0::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9627:59;::::0;-1:-1:-1;;;9627:59:0;;-1:-1:-1;;;;;2754:32:1;;;9627:59:0::1;::::0;::::1;2736:51:1::0;9567:49:0;;-1:-1:-1;9627:48:0;;::::1;::::0;::::1;::::0;2709:18:1;;9627:59:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9723:14;-1:-1:-1::0;;;;;9708:36:0::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9697:49;;9315:439:::0;;;;;:::o;9978:235::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;10081:12:::1;10056:21;:37;10052:106;;-1:-1:-1::0;10125:21:0::1;10052:106;10176:5;::::0;;10168:37:::1;::::0;-1:-1:-1;;;;;10176:5:0;;::::1;::::0;10168:37;::::1;;;::::0;10192:12;;10168:37;10176:5;10168:37;10192:12;10176:5;10168:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9978:235:::0;:::o;1871:161::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;;;;1952:15:0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:25;;-1:-1:-1;;1952:25:0::1;::::0;::::1;;::::0;;::::1;::::0;;;1993:31;;1952:25;;:15;1993:31:::1;::::0;::::1;1871:161:::0;;:::o;8673:321::-;8747:18;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;;;;8786:27:0;::::1;8778:64;;;::::0;-1:-1:-1;;;8778:64:0;;6103:2:1;8778:64:0::1;::::0;::::1;6085:21:1::0;6142:2;6122:18;;;6115:30;-1:-1:-1;;;6161:18:1;;;6154:54;6225:18;;8778:64:0::1;5901:348:1::0;8778:64:0::1;8878:11;::::0;-1:-1:-1;;;;;8878:11:0;;::::1;8861:28:::0;;::::1;::::0;8853:60:::1;;;::::0;-1:-1:-1;;;8853:60:0;;6712:2:1;8853:60:0::1;::::0;::::1;6694:21:1::0;6751:2;6731:18;;;6724:30;-1:-1:-1;;;6770:18:1;;;6763:49;6829:18;;8853:60:0::1;6510:343:1::0;8853:60:0::1;-1:-1:-1::0;8924:11:0::1;:27:::0;;-1:-1:-1;;;;;8924:27:0;;::::1;-1:-1:-1::0;;;;;;8924:27:0;;::::1;::::0;::::1;::::0;;;8673:321::o;2267:196::-;2334:8;;-1:-1:-1;;;;;2334:8:0;2320:10;:22;2312:31;;;;;;2387:8;;;2380:5;;2359:37;;-1:-1:-1;;;;;2387:8:0;;;;2380:5;;;;2359:37;;;2415:8;;;;2407:16;;-1:-1:-1;;;;;;2407:16:0;;;-1:-1:-1;;;;;2415:8:0;;2407:16;;;;2434:21;;;2267:196::o;8146:212::-;8215:17;1722:5;;8215:17;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;8276:9:0::1;::::0;;-1:-1:-1;;;;;8296:22:0;;::::1;-1:-1:-1::0;;;;;;8296:22:0;::::1;::::0;::::1;::::0;;;8276:9;;;::::1;::::0;8146:212::o;9821:149::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;;;;9922:28:0;;::::1;;::::0;;;:18:::1;:28;::::0;;;;:40;9821:149::o;9026:230::-;9096:17;1722:5;;9096:17;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;9157:20:0::1;::::0;;9188:30;;;;9157:20;9026:230::o;8396:236::-;8473:17;1722:5;;8473:17;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;-1:-1:-1;;8534:13:0::1;::::0;;-1:-1:-1;;;;;8558:30:0;;::::1;-1:-1:-1::0;;;;;;8558:30:0;::::1;::::0;::::1;::::0;;;8534:13;;;::::1;::::0;8396:236::o;10219:86::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;10283:5:::1;:14:::0;10219:86::o;2040:102::-;1722:5;;-1:-1:-1;;;;;1722:5:0;1708:10;:19;1700:28;;;;;;2114:8:::1;:20:::0;;-1:-1:-1;;;;;;2114:20:0::1;-1:-1:-1::0;;;;;2114:20:0;;;::::1;::::0;;;::::1;::::0;;2040:102::o;5499:935::-;5634:7;:9;;5617:4;;;5634:9;;;:::i;:::-;;;;-1:-1:-1;;5676:11:0;;-1:-1:-1;;;;;5676:11:0;;;5660:27;;;;5656:651;;5704:79;;-1:-1:-1;;;5704:79:0;;5744:10;5704:79;;;7098:34:1;5764:4:0;7148:18:1;;;7141:43;7200:18;;;7193:34;;;-1:-1:-1;;;;;5704:39:0;;;;;7033:18:1;;5704:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;5857:32:0;;;;;;:18;:32;;;;;;;;5802:51;;-1:-1:-1;;;5802:51:0;;5847:4;5802:51;;;2736::1;5857:32:0;;;5802:36;;2709:18:1;;5802:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:87;5798:183;;5946:5;;5910:55;;-1:-1:-1;;;5910:55:0;;-1:-1:-1;;;;;5946:5:0;;;5910:55;;;5546:51:1;5613:18;;;5606:34;;;5910:35:0;;;;;;5519:18:1;;5910:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5798:183;5656:651;;;6015:81;;-1:-1:-1;;;6015:81:0;;6057:10;6015:81;;;7098:34:1;6077:4:0;7148:18:1;;;7141:43;7200:18;;;7193:34;;;-1:-1:-1;;;;;6015:41:0;;;;;7033:18:1;;6015:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;6170:32:0;;;;;;:18;:32;;;;;;;;6115:51;;-1:-1:-1;;;6115:51:0;;6160:4;6115:51;;;2736::1;6170:32:0;;;6115:36;;2709:18:1;;6115:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:87;6111:185;;6261:5;;6223:57;;-1:-1:-1;;;6223:57:0;;-1:-1:-1;;;;;6261:5:0;;;6223:57;;;5546:51:1;5613:18;;;5606:34;;;6223:37:0;;;;;;5519:18:1;;6223:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6111:185;6332:7;;6324:80;;;7629:25:1;;;7685:2;7670:18;;7663:34;;;-1:-1:-1;;;;;7733:32:1;;;7713:18;;;7706:60;6324:80:0;;6355:10;;6324:80;;;;6332:7;6324:80;;;;;;7617:2:1;6324:80:0;;;-1:-1:-1;6422:4:0;5499:935;;;;;;:::o;4917:572::-;1804:10;5010:4;1797:18;;;:6;:18;;;;;;;;1789:52;;;;-1:-1:-1;;;1789:52:0;;5224:2:1;1789:52:0;;;5206:21:1;5263:2;5243:18;;;5236:30;-1:-1:-1;;;5282:18:1;;;5275:51;5343:18;;1789:52:0;5022:345:1;1789:52:0;5027:16:::1;5054:11:::0;5082:5:::1;;5091:1;5082:10;5078:331;;5127:18;5138:6;5127:10;:18::i;:::-;5164:9;::::0;5109:36;;-1:-1:-1;5109:36:0;-1:-1:-1;;;;;;5164:9:0::1;:23:::0;5160:96:::1;;5216:9;::::0;5208:32:::1;::::0;-1:-1:-1;;;;;5216:9:0;;::::1;::::0;5208:32;::::1;;;::::0;5236:3;;5216:9:::1;5208:32:::0;5216:9;5208:32;5236:3;5216:9;5208:32;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5160:96;5270:32;::::0;-1:-1:-1;;;;;5270:22:0;::::1;::::0;:32;::::1;;;::::0;5293:8;;5270:32:::1;::::0;;;5293:8;5270:22;:32;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5078:331;;;5335:30;::::0;-1:-1:-1;;;;;5335:22:0;::::1;::::0;:30;::::1;;;::::0;5358:6;;5335:30:::1;::::0;;;5358:6;5335:22;:30;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5391:6;5380:17;;5078:331;5444:4;-1:-1:-1::0;;;;;5426:33:0::1;5434:8;5426:33;5450:8;5426:33;;;;2944:25:1::0;;2932:2;2917:18;;2798:177;5426:33:0::1;;;;;;;;-1:-1:-1::0;5477:4:0::1;::::0;4917:572;-1:-1:-1;;;;;4917:572:0:o;7874:236::-;7932:16;7950:19;7997:5;;7990:6;:12;7982:48;;;;-1:-1:-1;;;7982:48:0;;7979:2:1;7982:48:0;;;7961:21:1;8018:2;7998:18;;;7991:30;8057:25;8037:18;;;8030:53;8100:18;;7982:48:0;7777:347:1;7982:48:0;-1:-1:-1;8055:5:0;;8082:20;8055:5;8082:6;:20;:::i;:::-;8071:31;;7874:236;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:1:o;594:594::-;689:6;697;705;713;721;774:3;762:9;753:7;749:23;745:33;742:53;;;791:1;788;781:12;742:53;830:9;817:23;849:31;874:5;849:31;:::i;:::-;899:5;-1:-1:-1;956:2:1;941:18;;928:32;969:33;928:32;969:33;:::i;:::-;594:594;;1021:7;;-1:-1:-1;;;;1075:2:1;1060:18;;1047:32;;1126:2;1111:18;;1098:32;;1177:3;1162:19;;;1149:33;;-1:-1:-1;594:594:1:o;1193:388::-;1261:6;1269;1322:2;1310:9;1301:7;1297:23;1293:32;1290:52;;;1338:1;1335;1328:12;1290:52;1377:9;1364:23;1396:31;1421:5;1396:31;:::i;:::-;1446:5;-1:-1:-1;1503:2:1;1488:18;;1475:32;1516:33;1475:32;1516:33;:::i;:::-;1568:7;1558:17;;;1193:388;;;;;:::o;1895:180::-;1954:6;2007:2;1995:9;1986:7;1982:23;1978:32;1975:52;;;2023:1;2020;2013:12;1975:52;-1:-1:-1;2046:23:1;;1895:180;-1:-1:-1;1895:180:1:o;2080:118::-;2166:5;2159:13;2152:21;2145:5;2142:32;2132:60;;2188:1;2185;2178:12;2203:382;2268:6;2276;2329:2;2317:9;2308:7;2304:23;2300:32;2297:52;;;2345:1;2342;2335:12;2297:52;2384:9;2371:23;2403:31;2428:5;2403:31;:::i;:::-;2453:5;-1:-1:-1;2510:2:1;2495:18;;2482:32;2523:30;2482:32;2523:30;:::i;2980:315::-;3048:6;3056;3109:2;3097:9;3088:7;3084:23;3080:32;3077:52;;;3125:1;3122;3115:12;3077:52;3164:9;3151:23;3183:31;3208:5;3183:31;:::i;:::-;3233:5;3285:2;3270:18;;;;3257:32;;-1:-1:-1;;;2980:315:1:o;3553:525::-;3639:6;3647;3655;3663;3716:3;3704:9;3695:7;3691:23;3687:33;3684:53;;;3733:1;3730;3723:12;3684:53;3772:9;3759:23;3791:31;3816:5;3791:31;:::i;:::-;3841:5;-1:-1:-1;3893:2:1;3878:18;;3865:32;;-1:-1:-1;3944:2:1;3929:18;;3916:32;;-1:-1:-1;4000:2:1;3985:18;;3972:32;4013:33;3972:32;4013:33;:::i;:::-;3553:525;;;;-1:-1:-1;3553:525:1;;-1:-1:-1;;3553:525:1:o;4083:383::-;4160:6;4168;4176;4229:2;4217:9;4208:7;4204:23;4200:32;4197:52;;;4245:1;4242;4235:12;4197:52;4284:9;4271:23;4303:31;4328:5;4303:31;:::i;:::-;4353:5;4405:2;4390:18;;4377:32;;-1:-1:-1;4456:2:1;4441:18;;;4428:32;;4083:383;-1:-1:-1;;;4083:383:1:o;4471:127::-;4532:10;4527:3;4523:20;4520:1;4513:31;4563:4;4560:1;4553:15;4587:4;4584:1;4577:15;4603:135;4642:3;4663:17;;;4660:43;;4683:18;;:::i;:::-;-1:-1:-1;4730:1:1;4719:13;;4603:135::o;5651:245::-;5718:6;5771:2;5759:9;5750:7;5746:23;5742:32;5739:52;;;5787:1;5784;5777:12;5739:52;5819:9;5813:16;5838:28;5860:5;5838:28;:::i;6254:251::-;6324:6;6377:2;6365:9;6356:7;6352:23;6348:32;6345:52;;;6393:1;6390;6383:12;6345:52;6425:9;6419:16;6444:31;6469:5;6444:31;:::i;7238:184::-;7308:6;7361:2;7349:9;7340:7;7336:23;7332:32;7329:52;;;7377:1;7374;7367:12;7329:52;-1:-1:-1;7400:16:1;;7238:184;-1:-1:-1;7238:184:1:o;8129:128::-;8196:9;;;8217:11;;;8214:37;;;8231:18;;:::i;:::-;8129:128;;;;:::o
Swarm Source
ipfs://a58dacd49772a9d775b9105635d01acd4d7356379c4a31cbda6c16f982044a6b
Loading...
Loading
Loading...
Loading
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.