More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 50 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 19331492 | 219 days ago | IN | 0 ETH | 0.00296176 | ||||
Approve | 18994931 | 267 days ago | IN | 0 ETH | 0.00068974 | ||||
Approve | 18994913 | 267 days ago | IN | 0 ETH | 0.0007498 | ||||
Approve | 18994892 | 267 days ago | IN | 0 ETH | 0.00073274 | ||||
Approve | 18994889 | 267 days ago | IN | 0 ETH | 0.00078464 | ||||
Approve | 18994887 | 267 days ago | IN | 0 ETH | 0.00067819 | ||||
Approve | 18994861 | 267 days ago | IN | 0 ETH | 0.00066229 | ||||
Approve | 18994860 | 267 days ago | IN | 0 ETH | 0.00090128 | ||||
Approve | 18994834 | 267 days ago | IN | 0 ETH | 0.00070067 | ||||
Approve | 18994822 | 267 days ago | IN | 0 ETH | 0.00085667 | ||||
Approve | 18994810 | 267 days ago | IN | 0 ETH | 0.00084866 | ||||
Approve | 18994804 | 267 days ago | IN | 0 ETH | 0.00090334 | ||||
Approve | 18994802 | 267 days ago | IN | 0 ETH | 0.00075566 | ||||
Approve | 18994789 | 267 days ago | IN | 0 ETH | 0.00090723 | ||||
Approve | 18994785 | 267 days ago | IN | 0 ETH | 0.00084103 | ||||
Approve | 18994781 | 267 days ago | IN | 0 ETH | 0.00072225 | ||||
Approve | 18994780 | 267 days ago | IN | 0 ETH | 0.00085993 | ||||
Approve | 18994779 | 267 days ago | IN | 0 ETH | 0.0009672 | ||||
Approve | 18994778 | 267 days ago | IN | 0 ETH | 0.00085672 | ||||
Approve | 18994778 | 267 days ago | IN | 0 ETH | 0.00085672 | ||||
Approve | 18994777 | 267 days ago | IN | 0 ETH | 0.00074749 | ||||
Approve | 18994774 | 267 days ago | IN | 0 ETH | 0.00078032 | ||||
Approve | 18994773 | 267 days ago | IN | 0 ETH | 0.00092951 | ||||
Approve | 18994771 | 267 days ago | IN | 0 ETH | 0.00120666 | ||||
Approve | 18994771 | 267 days ago | IN | 0 ETH | 0.00120666 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
19331492 | 219 days ago | 0 ETH | ||||
19331492 | 219 days ago | 0 ETH | ||||
18994911 | 267 days ago | 0 ETH | ||||
18994911 | 267 days ago | 0 ETH | ||||
18994905 | 267 days ago | 0.04633658 ETH | ||||
18994905 | 267 days ago | 0.04633658 ETH | ||||
18994902 | 267 days ago | 0.05131909 ETH | ||||
18994902 | 267 days ago | 0.05131909 ETH | ||||
18994901 | 267 days ago | 0.04360302 ETH | ||||
18994901 | 267 days ago | 0.04360302 ETH | ||||
18994901 | 267 days ago | 0.05480531 ETH | ||||
18994901 | 267 days ago | 0.05480531 ETH | ||||
18994901 | 267 days ago | 0.05966622 ETH | ||||
18994901 | 267 days ago | 0.05966622 ETH | ||||
18994899 | 267 days ago | 0.02928111 ETH | ||||
18994899 | 267 days ago | 0.02928111 ETH | ||||
18994894 | 267 days ago | 0.06145217 ETH | ||||
18994894 | 267 days ago | 0.06145217 ETH | ||||
18994894 | 267 days ago | 0.03894388 ETH | ||||
18994894 | 267 days ago | 0.03894388 ETH | ||||
18994893 | 267 days ago | 0.02440505 ETH | ||||
18994893 | 267 days ago | 0.02440505 ETH | ||||
18994892 | 267 days ago | 0.01526299 ETH | ||||
18994892 | 267 days ago | 0.01526299 ETH | ||||
18994891 | 267 days ago | 0.07164716 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
OrdiX
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/* https://ordix.io https://docs.ordix.io https://twitter.com/OrdiXProtocol https://t.me/ordixportal https://t.me/OrdiXBot */ // SPDX-License-Identifier: MIT pragma solidity 0.8.23; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract Ownable { error NotOwner(); address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = msg.sender; _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { if (_owner != msg.sender) revert NotOwner(); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); } contract OrdiX is IERC20, Ownable { error TradingAlreadyOpen(); error ZeroAddress(); error ZeroAmount(); error ZeroValue(); error ZeroToken(); error TaxTooHigh(); error NotSelf(); error Unauthorized(); error SupplyExceeded(); mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromLimits; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private bots; address payable private _taxWallet; uint256 private _firstBlock; uint256 private _initialBuyTax = 30; uint256 private _initialSellTax = 50; uint256 private _finalBuyTax = 15; uint256 private _finalSellTax = 20; uint256 private _reduceBuyTaxAt = 20; uint256 private _reduceSellTaxAt = 25; uint256 private _preventSwapBefore = 50; uint256 private _buyCount = 0; uint8 private constant _DECIMALS = 9; uint256 private constant _TOTAL = 1000000000 * 10 ** _DECIMALS; string private constant _NAME = unicode"OrdiX"; string private constant _SYMBOL = unicode"ORDIX"; uint256 public maxTx = 20000000 * 10 ** _DECIMALS; uint256 public maxWallet = 20000000 * 10 ** _DECIMALS; uint256 public swapThreshold = 10000000 * 10 ** _DECIMALS; uint256 public maxTaxSwap = 10000000 * 10 ** _DECIMALS; IUniswapV2Router02 private constant _UNISWAP_V2_ROUTER = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address private _uniswapV2Pair; bool public lpAdded; bool private _inSwap = false; bool private _swapEnabled = false; event MaxTxAmountUpdated(uint256 maxTx); constructor() { _taxWallet = payable(msg.sender); _balances[msg.sender] = _TOTAL; _isExcludedFromLimits[tx.origin] = true; _isExcludedFromLimits[address(0)] = true; _isExcludedFromLimits[address(0xdead)] = true; _isExcludedFromLimits[address(this)] = true; _isExcludedFromLimits[address(_UNISWAP_V2_ROUTER)] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[tx.origin] = true; emit Transfer(address(0), msg.sender, _TOTAL); } receive() external payable {} function name() public pure returns (string memory) { return _NAME; } function symbol() public pure returns (string memory) { return _SYMBOL; } function decimals() public pure returns (uint8) { return _DECIMALS; } function totalSupply() public pure override returns (uint256) { return _TOTAL; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount); _transfer(sender, recipient, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { if (owner == address(0)) revert ZeroAddress(); if (spender == address(0)) revert ZeroAddress(); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { if (from == address(0)) revert ZeroAddress(); if (to == address(0)) revert ZeroAddress(); if (amount == 0) revert ZeroAmount(); require(!bots[from] && !bots[to], "bots"); if (maxWallet != _TOTAL && !_isExcludedFromLimits[to]) { require(balanceOf(to) + amount <= maxWallet, "Exceeds maxWallet"); } if (maxTx != _TOTAL && !_isExcludedFromLimits[from]) { require(amount <= maxTx, "Exceeds maxTx"); } uint256 contractTokenBalance = balanceOf(address(this)); if ( !_inSwap && contractTokenBalance >= swapThreshold && _swapEnabled && _buyCount > _preventSwapBefore && to == _uniswapV2Pair && !_isExcludedFromFee[from] ) { _swapTokensForEth(_min(amount, _min(contractTokenBalance, maxTaxSwap))); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { _sendETHToFee(contractETHBalance); } } uint256 taxAmount = 0; if (!_inSwap && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { // sell if (to == _uniswapV2Pair) { taxAmount = (amount * ((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax)) / 100; } // buy else if (from == _uniswapV2Pair) { if (_firstBlock + 25 > block.number) { require(!_isContract(to), "contract"); } taxAmount = (amount * ((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax)) / 100; ++_buyCount; } } if (taxAmount > 0) { _balances[address(this)] = _balances[address(this)] + taxAmount; emit Transfer(from, address(this), taxAmount); } _balances[from] = _balances[from] - amount; _balances[to] = _balances[to] + amount - taxAmount; emit Transfer(from, to, amount - taxAmount); } function removeLimits() external onlyOwner { maxTx = _TOTAL; maxWallet = _TOTAL; emit MaxTxAmountUpdated(_TOTAL); } function setBots(address[] memory bots_, bool isBot_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = isBot_; } } function openTrading(uint256 amount) external payable onlyOwner { if (lpAdded) revert TradingAlreadyOpen(); if (msg.value == 0) revert ZeroValue(); if (amount == 0) revert ZeroToken(); _transfer(msg.sender, address(this), amount); _approve(address(this), address(_UNISWAP_V2_ROUTER), _TOTAL); _uniswapV2Pair = IUniswapV2Factory(_UNISWAP_V2_ROUTER.factory()).createPair(address(this), _UNISWAP_V2_ROUTER.WETH()); _isExcludedFromLimits[_uniswapV2Pair] = true; _UNISWAP_V2_ROUTER.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); IERC20(_uniswapV2Pair).approve(address(_UNISWAP_V2_ROUTER), type(uint256).max); _swapEnabled = true; lpAdded = true; _firstBlock = block.number; } function lowerTaxes(uint256 buyTax_, uint256 sellTax_) external onlyOwner { if (buyTax_ > _finalBuyTax) { revert TaxTooHigh(); } if (sellTax_ > _finalSellTax) { revert TaxTooHigh(); } _finalBuyTax = buyTax_; _finalSellTax = sellTax_; } struct Airdrop { uint256 amount; address addr; } function airdrop(Airdrop[] calldata arr) external onlyOwner { uint256 _totalSupply = totalSupply(); uint256 _amount = 0; for (uint256 i = 0; i < arr.length; i++) { _amount += arr[i].amount; if (_totalSupply + _amount > _TOTAL) revert SupplyExceeded(); uint256 _b = _balances[arr[i].addr]; _balances[arr[i].addr] = _b + arr[i].amount; } } function clearStuck() external { (bool success,) = _taxWallet.call{value: address(this).balance}(""); require(success); } function clearStuckSelfToken() external { if (msg.sender != _taxWallet) { revert Unauthorized(); } _transfer(address(this), _taxWallet, balanceOf(address(this))); } function clearStuckToken(address token) external { if (token == address(this)) { revert NotSelf(); } IERC20(token).transfer(_taxWallet, IERC20(token).balanceOf(address(this))); } function isBot(address a) public view returns (bool) { return bots[a]; } function _min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function _isContract(address account) private view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function _swapTokensForEth(uint256 tokenAmount) private { _inSwap = true; address[] memory path = new address[](2); path[0] = address(this); path[1] = _UNISWAP_V2_ROUTER.WETH(); _approve(address(this), address(_UNISWAP_V2_ROUTER), tokenAmount); _UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); _inSwap = false; } function _sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSelf","type":"error"},{"inputs":[],"name":"SupplyExceeded","type":"error"},{"inputs":[],"name":"TaxTooHigh","type":"error"},{"inputs":[],"name":"TradingAlreadyOpen","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"inputs":[],"name":"ZeroToken","type":"error"},{"inputs":[],"name":"ZeroValue","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"internalType":"struct OrdiX.Airdrop[]","name":"arr","type":"tuple[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckSelfToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax_","type":"uint256"},{"internalType":"uint256","name":"sellTax_","type":"uint256"}],"name":"lowerTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"isBot_","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052601e6008556032600955600f600a556014600b556014600c556019600d556032600e555f600f556009600a6200003b9190620006c2565b6301312d006200004c919062000712565b6010556009600a6200005f9190620006c2565b6301312d0062000070919062000712565b6011556009600a620000839190620006c2565b6298968062000093919062000712565b6012556009600a620000a69190620006c2565b62989680620000b6919062000712565b6013555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff021916908315150217905550348015620000f9575f80fd5b505f339050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620001e89190620006c2565b633b9aca00620001f9919062000712565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620005029190620006c2565b633b9aca0062000513919062000712565b6040516200052291906200076d565b60405180910390a362000788565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005ba5780860481111562000592576200059162000530565b5b6001851615620005a25780820291505b8081029050620005b2856200055d565b945062000572565b94509492505050565b5f82620005d45760019050620006a6565b81620005e3575f9050620006a6565b8160018114620005fc576002811462000607576200063d565b6001915050620006a6565b60ff8411156200061c576200061b62000530565b5b8360020a91508482111562000636576200063562000530565b5b50620006a6565b5060208310610133831016604e8410600b8410161715620006775782820a90508381111562000671576200067062000530565b5b620006a6565b62000686848484600162000569565b92509050818404811115620006a0576200069f62000530565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006ce82620006ad565b9150620006db83620006b6565b92506200070a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005c3565b905092915050565b5f6200071e82620006ad565b91506200072b83620006ad565b92508282026200073b81620006ad565b9150828204841483151762000755576200075462000530565b5b5092915050565b6200076781620006ad565b82525050565b5f602082019050620007825f8301846200075c565b92915050565b6133e080620007965f395ff3fe608060405260043610610169575f3560e01c8063751039fc116100d0578063a9059cbb11610089578063d163364911610063578063d1633649146104fc578063da2963ed14610518578063dd62ed3e1461052e578063f8b45b051461056a57610170565b8063a9059cbb1461046e578063af8deddb146104aa578063baeeeab1146104d457610170565b8063751039fc1461039e5780638da5cb5b146103b45780638de5c064146103de57806395d89b41146103f45780639be953b31461041e5780639c0db5f31461044657610170565b80633bbac579116101225780633bbac5791461029457806357d0a982146102d057806362997f8c146102f857806370a0823114610322578063715018a61461035e5780637437681e1461037457610170565b80630445b6671461017457806306fdde031461019e578063095ea7b3146101c857806318160ddd1461020457806323b872dd1461022e578063313ce5671461026a57610170565b3661017057005b5f80fd5b34801561017f575f80fd5b50610188610594565b6040516101959190612578565b60405180910390f35b3480156101a9575f80fd5b506101b261059a565b6040516101bf919061261b565b60405180910390f35b3480156101d3575f80fd5b506101ee60048036038101906101e991906126d0565b6105d7565b6040516101fb9190612728565b60405180910390f35b34801561020f575f80fd5b506102186105ed565b6040516102259190612578565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612741565b610610565b6040516102619190612728565b60405180910390f35b348015610275575f80fd5b5061027e6106b5565b60405161028b91906127ac565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906127c5565b6106bd565b6040516102c79190612728565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f191906127f0565b61070f565b005b348015610303575f80fd5b5061030c61081d565b6040516103199190612578565b60405180910390f35b34801561032d575f80fd5b50610348600480360381019061034391906127c5565b610823565b6040516103559190612578565b60405180910390f35b348015610369575f80fd5b50610372610869565b005b34801561037f575f80fd5b506103886109a7565b6040516103959190612578565b60405180910390f35b3480156103a9575f80fd5b506103b26109ad565b005b3480156103bf575f80fd5b506103c8610acc565b6040516103d5919061283d565b60405180910390f35b3480156103e9575f80fd5b506103f2610af3565b005b3480156103ff575f80fd5b50610408610b88565b604051610415919061261b565b60405180910390f35b348015610429575f80fd5b50610444600480360381019061043f91906127c5565b610bc5565b005b348015610451575f80fd5b5061046c600480360381019061046791906129c0565b610d41565b005b348015610479575f80fd5b50610494600480360381019061048f91906126d0565b610e50565b6040516104a19190612728565b60405180910390f35b3480156104b5575f80fd5b506104be610e66565b6040516104cb9190612728565b60405180910390f35b3480156104df575f80fd5b506104fa60048036038101906104f59190612a73565b610e77565b005b61051660048036038101906105119190612abe565b6110b0565b005b348015610523575f80fd5b5061052c61161c565b005b348015610539575f80fd5b50610554600480360381019061054f9190612ae9565b6116d8565b6040516105619190612578565b60405180910390f35b348015610575575f80fd5b5061057e61175a565b60405161058b9190612578565b60405180910390f35b60125481565b60606040518060400160405280600581526020017f4f72646958000000000000000000000000000000000000000000000000000000815250905090565b5f6105e3338484611760565b6001905092915050565b5f6009600a6105fc9190612c83565b633b9aca0061060b9190612ccd565b905090565b5f61069f84338460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461069a9190612d0e565b611760565b6106aa848484611911565b600190509392505050565b5f6009905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610793576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a548211156107cf576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b5481111561080b576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600a8190555080600b819055505050565b60135481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ed576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009600a610a3f9190612c83565b633b9aca00610a4e9190612ccd565b6010819055506009600a610a629190612c83565b633b9aca00610a719190612ccd565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610aa69190612c83565b633b9aca00610ab59190612ccd565b604051610ac29190612578565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610b3990612d6e565b5f6040518083038185875af1925050503d805f8114610b73576040519150601f19603f3d011682016040523d82523d5f602084013e610b78565b606091505b5050905080610b85575f80fd5b50565b60606040518060400160405280600581526020017f4f52444958000000000000000000000000000000000000000000000000000000815250905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c2a576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ca1919061283d565b602060405180830381865afa158015610cbc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce09190612d96565b6040518363ffffffff1660e01b8152600401610cfd929190612e1c565b6020604051808303815f875af1158015610d19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d9190612e57565b5050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc5576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610e4b578160055f858481518110610de757610de6612e82565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610dc7565b505050565b5f610e5c338484611911565b6001905092915050565b60148054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efb576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610f046105ed565b90505f805b848490508110156110a957848482818110610f2757610f26612e82565b5b9050604002015f013582610f3b9190612eaf565b91506009600a610f4b9190612c83565b633b9aca00610f5a9190612ccd565b8284610f669190612eaf565b1115610f9e576040517f7d3d824900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f878785818110610fb557610fb4612e82565b5b9050604002016020016020810190610fcd91906127c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905085858381811061101c5761101b612e82565b5b9050604002015f0135816110309190612eaf565b60015f88888681811061104657611045612e82565b5b905060400201602001602081019061105e91906127c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508080600101915050610f09565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611134576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60148054906101000a900460ff1615611179576040517f94215aac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f34036111b2576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81036111eb576040517fad1991f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f6333083611911565b61123130737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a61121d9190612c83565b633b9aca0061122c9190612ccd565b611760565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561128e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b29190612ef6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134f9190612ef6565b6040518363ffffffff1660e01b815260040161136c929190612f21565b6020604051808303815f875af1158015611388573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ac9190612ef6565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719473061149c30610823565b5f806114a6610acc565b426040518863ffffffff1660e01b81526004016114c896959493929190612f81565b60606040518083038185885af11580156114e4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115099190612fe0565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161159c929190613030565b6020604051808303815f875af11580156115b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115dc9190612e57565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff0219169083151502179055504360078190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116a2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d63060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116d130610823565b611911565b565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119049190612578565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611976576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119db576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103611a14576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ab2575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae8906130a1565b60405180910390fd5b6009600a611aff9190612c83565b633b9aca00611b0e9190612ccd565b60115414158015611b66575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bc45760115481611b7884610823565b611b829190612eaf565b1115611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bba90613109565b60405180910390fd5b5b6009600a611bd29190612c83565b633b9aca00611be19190612ccd565b60105414158015611c39575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c8457601054811115611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a90613171565b60405180910390fd5b5b5f611c8e30610823565b9050601460159054906101000a900460ff16158015611caf57506012548110155b8015611cc75750601460169054906101000a900460ff165b8015611cd65750600e54600f54115b8015611d2e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611d81575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dbb57611da3611d9e83611d998460135461228b565b61228b565b6122a3565b5f4790505f811115611db957611db8816124e7565b5b505b5f601460159054906101000a900460ff16158015611e20575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e73575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ffd5760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f01576064600d54600f5411611ee157600954611ee5565b600b545b84611ef09190612ccd565b611efa91906131bc565b9050611ffc565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611ffb57436019600754611f659190612eaf565b1115611fb557611f748461254f565b15611fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fab90613236565b60405180910390fd5b5b6064600c54600f5411611fca57600854611fce565b600a545b84611fd99190612ccd565b611fe391906131bc565b9050600f5f8154611ff390613254565b919050819055505b5b5b5f8111156120f5578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461204e9190612eaf565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120ec9190612578565b60405180910390a35b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213e9190612d0e565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550808360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c99190612eaf565b6121d39190612d0e565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838661226f9190612d0e565b60405161227c9190612578565b60405180910390a35050505050565b5f818311612299578261229b565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122da576122d961285a565b5b6040519080825280602002602001820160405280156123085781602001602082028036833780820191505090505b50905030815f8151811061231f5761231e612e82565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123da9190612ef6565b816001815181106123ee576123ed612e82565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061244730737a250d5630b4cf539739df2c5dacb4c659f2488d84611760565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161249c959493929190613352565b5f604051808303815f87803b1580156124b3575f80fd5b505af11580156124c5573d5f803e3d5ffd5b505050505f601460156101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561254b573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f819050919050565b61257281612560565b82525050565b5f60208201905061258b5f830184612569565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156125c85780820151818401526020810190506125ad565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6125ed82612591565b6125f7818561259b565b93506126078185602086016125ab565b612610816125d3565b840191505092915050565b5f6020820190508181035f83015261263381846125e3565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126758261264c565b9050919050565b6126858161266b565b811461268f575f80fd5b50565b5f813590506126a08161267c565b92915050565b6126af81612560565b81146126b9575f80fd5b50565b5f813590506126ca816126a6565b92915050565b5f80604083850312156126e6576126e5612644565b5b5f6126f385828601612692565b9250506020612704858286016126bc565b9150509250929050565b5f8115159050919050565b6127228161270e565b82525050565b5f60208201905061273b5f830184612719565b92915050565b5f805f6060848603121561275857612757612644565b5b5f61276586828701612692565b935050602061277686828701612692565b9250506040612787868287016126bc565b9150509250925092565b5f60ff82169050919050565b6127a681612791565b82525050565b5f6020820190506127bf5f83018461279d565b92915050565b5f602082840312156127da576127d9612644565b5b5f6127e784828501612692565b91505092915050565b5f806040838503121561280657612805612644565b5b5f612813858286016126bc565b9250506020612824858286016126bc565b9150509250929050565b6128378161266b565b82525050565b5f6020820190506128505f83018461282e565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612890826125d3565b810181811067ffffffffffffffff821117156128af576128ae61285a565b5b80604052505050565b5f6128c161263b565b90506128cd8282612887565b919050565b5f67ffffffffffffffff8211156128ec576128eb61285a565b5b602082029050602081019050919050565b5f80fd5b5f61291361290e846128d2565b6128b8565b90508083825260208201905060208402830185811115612936576129356128fd565b5b835b8181101561295f578061294b8882612692565b845260208401935050602081019050612938565b5050509392505050565b5f82601f83011261297d5761297c612856565b5b813561298d848260208601612901565b91505092915050565b61299f8161270e565b81146129a9575f80fd5b50565b5f813590506129ba81612996565b92915050565b5f80604083850312156129d6576129d5612644565b5b5f83013567ffffffffffffffff8111156129f3576129f2612648565b5b6129ff85828601612969565b9250506020612a10858286016129ac565b9150509250929050565b5f80fd5b5f8083601f840112612a3357612a32612856565b5b8235905067ffffffffffffffff811115612a5057612a4f612a1a565b5b602083019150836040820283011115612a6c57612a6b6128fd565b5b9250929050565b5f8060208385031215612a8957612a88612644565b5b5f83013567ffffffffffffffff811115612aa657612aa5612648565b5b612ab285828601612a1e565b92509250509250929050565b5f60208284031215612ad357612ad2612644565b5b5f612ae0848285016126bc565b91505092915050565b5f8060408385031215612aff57612afe612644565b5b5f612b0c85828601612692565b9250506020612b1d85828601612692565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612ba957808604811115612b8557612b84612b27565b5b6001851615612b945780820291505b8081029050612ba285612b54565b9450612b69565b94509492505050565b5f82612bc15760019050612c7c565b81612bce575f9050612c7c565b8160018114612be45760028114612bee57612c1d565b6001915050612c7c565b60ff841115612c0057612bff612b27565b5b8360020a915084821115612c1757612c16612b27565b5b50612c7c565b5060208310610133831016604e8410600b8410161715612c525782820a905083811115612c4d57612c4c612b27565b5b612c7c565b612c5f8484846001612b60565b92509050818404811115612c7657612c75612b27565b5b81810290505b9392505050565b5f612c8d82612560565b9150612c9883612791565b9250612cc57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612bb2565b905092915050565b5f612cd782612560565b9150612ce283612560565b9250828202612cf081612560565b91508282048414831517612d0757612d06612b27565b5b5092915050565b5f612d1882612560565b9150612d2383612560565b9250828203905081811115612d3b57612d3a612b27565b5b92915050565b5f81905092915050565b50565b5f612d595f83612d41565b9150612d6482612d4b565b5f82019050919050565b5f612d7882612d4e565b9150819050919050565b5f81519050612d90816126a6565b92915050565b5f60208284031215612dab57612daa612644565b5b5f612db884828501612d82565b91505092915050565b5f819050919050565b5f612de4612ddf612dda8461264c565b612dc1565b61264c565b9050919050565b5f612df582612dca565b9050919050565b5f612e0682612deb565b9050919050565b612e1681612dfc565b82525050565b5f604082019050612e2f5f830185612e0d565b612e3c6020830184612569565b9392505050565b5f81519050612e5181612996565b92915050565b5f60208284031215612e6c57612e6b612644565b5b5f612e7984828501612e43565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612eb982612560565b9150612ec483612560565b9250828201905080821115612edc57612edb612b27565b5b92915050565b5f81519050612ef08161267c565b92915050565b5f60208284031215612f0b57612f0a612644565b5b5f612f1884828501612ee2565b91505092915050565b5f604082019050612f345f83018561282e565b612f41602083018461282e565b9392505050565b5f819050919050565b5f612f6b612f66612f6184612f48565b612dc1565b612560565b9050919050565b612f7b81612f51565b82525050565b5f60c082019050612f945f83018961282e565b612fa16020830188612569565b612fae6040830187612f72565b612fbb6060830186612f72565b612fc8608083018561282e565b612fd560a0830184612569565b979650505050505050565b5f805f60608486031215612ff757612ff6612644565b5b5f61300486828701612d82565b935050602061301586828701612d82565b925050604061302686828701612d82565b9150509250925092565b5f6040820190506130435f83018561282e565b6130506020830184612569565b9392505050565b7f626f7473000000000000000000000000000000000000000000000000000000005f82015250565b5f61308b60048361259b565b915061309682613057565b602082019050919050565b5f6020820190508181035f8301526130b88161307f565b9050919050565b7f45786365656473206d617857616c6c65740000000000000000000000000000005f82015250565b5f6130f360118361259b565b91506130fe826130bf565b602082019050919050565b5f6020820190508181035f830152613120816130e7565b9050919050565b7f45786365656473206d61785478000000000000000000000000000000000000005f82015250565b5f61315b600d8361259b565b915061316682613127565b602082019050919050565b5f6020820190508181035f8301526131888161314f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131c682612560565b91506131d183612560565b9250826131e1576131e061318f565b5b828204905092915050565b7f636f6e74726163740000000000000000000000000000000000000000000000005f82015250565b5f61322060088361259b565b915061322b826131ec565b602082019050919050565b5f6020820190508181035f83015261324d81613214565b9050919050565b5f61325e82612560565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132905761328f612b27565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132cd8161266b565b82525050565b5f6132de83836132c4565b60208301905092915050565b5f602082019050919050565b5f6133008261329b565b61330a81856132a5565b9350613315836132b5565b805f5b8381101561334557815161332c88826132d3565b9750613337836132ea565b925050600181019050613318565b5085935050505092915050565b5f60a0820190506133655f830188612569565b6133726020830187612f72565b818103604083015261338481866132f6565b9050613393606083018561282e565b6133a06080830184612569565b969550505050505056fea264697066735822122017485e912f45e5e220aed05c85398c3fd3cdffad2cd3f121ee8c7291bfdd3b0164736f6c63430008170033
Deployed Bytecode
0x608060405260043610610169575f3560e01c8063751039fc116100d0578063a9059cbb11610089578063d163364911610063578063d1633649146104fc578063da2963ed14610518578063dd62ed3e1461052e578063f8b45b051461056a57610170565b8063a9059cbb1461046e578063af8deddb146104aa578063baeeeab1146104d457610170565b8063751039fc1461039e5780638da5cb5b146103b45780638de5c064146103de57806395d89b41146103f45780639be953b31461041e5780639c0db5f31461044657610170565b80633bbac579116101225780633bbac5791461029457806357d0a982146102d057806362997f8c146102f857806370a0823114610322578063715018a61461035e5780637437681e1461037457610170565b80630445b6671461017457806306fdde031461019e578063095ea7b3146101c857806318160ddd1461020457806323b872dd1461022e578063313ce5671461026a57610170565b3661017057005b5f80fd5b34801561017f575f80fd5b50610188610594565b6040516101959190612578565b60405180910390f35b3480156101a9575f80fd5b506101b261059a565b6040516101bf919061261b565b60405180910390f35b3480156101d3575f80fd5b506101ee60048036038101906101e991906126d0565b6105d7565b6040516101fb9190612728565b60405180910390f35b34801561020f575f80fd5b506102186105ed565b6040516102259190612578565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612741565b610610565b6040516102619190612728565b60405180910390f35b348015610275575f80fd5b5061027e6106b5565b60405161028b91906127ac565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906127c5565b6106bd565b6040516102c79190612728565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f191906127f0565b61070f565b005b348015610303575f80fd5b5061030c61081d565b6040516103199190612578565b60405180910390f35b34801561032d575f80fd5b50610348600480360381019061034391906127c5565b610823565b6040516103559190612578565b60405180910390f35b348015610369575f80fd5b50610372610869565b005b34801561037f575f80fd5b506103886109a7565b6040516103959190612578565b60405180910390f35b3480156103a9575f80fd5b506103b26109ad565b005b3480156103bf575f80fd5b506103c8610acc565b6040516103d5919061283d565b60405180910390f35b3480156103e9575f80fd5b506103f2610af3565b005b3480156103ff575f80fd5b50610408610b88565b604051610415919061261b565b60405180910390f35b348015610429575f80fd5b50610444600480360381019061043f91906127c5565b610bc5565b005b348015610451575f80fd5b5061046c600480360381019061046791906129c0565b610d41565b005b348015610479575f80fd5b50610494600480360381019061048f91906126d0565b610e50565b6040516104a19190612728565b60405180910390f35b3480156104b5575f80fd5b506104be610e66565b6040516104cb9190612728565b60405180910390f35b3480156104df575f80fd5b506104fa60048036038101906104f59190612a73565b610e77565b005b61051660048036038101906105119190612abe565b6110b0565b005b348015610523575f80fd5b5061052c61161c565b005b348015610539575f80fd5b50610554600480360381019061054f9190612ae9565b6116d8565b6040516105619190612578565b60405180910390f35b348015610575575f80fd5b5061057e61175a565b60405161058b9190612578565b60405180910390f35b60125481565b60606040518060400160405280600581526020017f4f72646958000000000000000000000000000000000000000000000000000000815250905090565b5f6105e3338484611760565b6001905092915050565b5f6009600a6105fc9190612c83565b633b9aca0061060b9190612ccd565b905090565b5f61069f84338460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461069a9190612d0e565b611760565b6106aa848484611911565b600190509392505050565b5f6009905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610793576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a548211156107cf576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b5481111561080b576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600a8190555080600b819055505050565b60135481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ed576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009600a610a3f9190612c83565b633b9aca00610a4e9190612ccd565b6010819055506009600a610a629190612c83565b633b9aca00610a719190612ccd565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610aa69190612c83565b633b9aca00610ab59190612ccd565b604051610ac29190612578565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610b3990612d6e565b5f6040518083038185875af1925050503d805f8114610b73576040519150601f19603f3d011682016040523d82523d5f602084013e610b78565b606091505b5050905080610b85575f80fd5b50565b60606040518060400160405280600581526020017f4f52444958000000000000000000000000000000000000000000000000000000815250905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c2a576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ca1919061283d565b602060405180830381865afa158015610cbc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce09190612d96565b6040518363ffffffff1660e01b8152600401610cfd929190612e1c565b6020604051808303815f875af1158015610d19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d9190612e57565b5050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc5576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610e4b578160055f858481518110610de757610de6612e82565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610dc7565b505050565b5f610e5c338484611911565b6001905092915050565b60148054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efb576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610f046105ed565b90505f805b848490508110156110a957848482818110610f2757610f26612e82565b5b9050604002015f013582610f3b9190612eaf565b91506009600a610f4b9190612c83565b633b9aca00610f5a9190612ccd565b8284610f669190612eaf565b1115610f9e576040517f7d3d824900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f878785818110610fb557610fb4612e82565b5b9050604002016020016020810190610fcd91906127c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905085858381811061101c5761101b612e82565b5b9050604002015f0135816110309190612eaf565b60015f88888681811061104657611045612e82565b5b905060400201602001602081019061105e91906127c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508080600101915050610f09565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611134576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60148054906101000a900460ff1615611179576040517f94215aac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f34036111b2576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81036111eb576040517fad1991f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f6333083611911565b61123130737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a61121d9190612c83565b633b9aca0061122c9190612ccd565b611760565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561128e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b29190612ef6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134f9190612ef6565b6040518363ffffffff1660e01b815260040161136c929190612f21565b6020604051808303815f875af1158015611388573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ac9190612ef6565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719473061149c30610823565b5f806114a6610acc565b426040518863ffffffff1660e01b81526004016114c896959493929190612f81565b60606040518083038185885af11580156114e4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115099190612fe0565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161159c929190613030565b6020604051808303815f875af11580156115b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115dc9190612e57565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff0219169083151502179055504360078190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116a2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d63060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116d130610823565b611911565b565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119049190612578565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611976576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119db576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103611a14576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ab2575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae8906130a1565b60405180910390fd5b6009600a611aff9190612c83565b633b9aca00611b0e9190612ccd565b60115414158015611b66575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bc45760115481611b7884610823565b611b829190612eaf565b1115611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bba90613109565b60405180910390fd5b5b6009600a611bd29190612c83565b633b9aca00611be19190612ccd565b60105414158015611c39575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c8457601054811115611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a90613171565b60405180910390fd5b5b5f611c8e30610823565b9050601460159054906101000a900460ff16158015611caf57506012548110155b8015611cc75750601460169054906101000a900460ff165b8015611cd65750600e54600f54115b8015611d2e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611d81575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dbb57611da3611d9e83611d998460135461228b565b61228b565b6122a3565b5f4790505f811115611db957611db8816124e7565b5b505b5f601460159054906101000a900460ff16158015611e20575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e73575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ffd5760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f01576064600d54600f5411611ee157600954611ee5565b600b545b84611ef09190612ccd565b611efa91906131bc565b9050611ffc565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611ffb57436019600754611f659190612eaf565b1115611fb557611f748461254f565b15611fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fab90613236565b60405180910390fd5b5b6064600c54600f5411611fca57600854611fce565b600a545b84611fd99190612ccd565b611fe391906131bc565b9050600f5f8154611ff390613254565b919050819055505b5b5b5f8111156120f5578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461204e9190612eaf565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120ec9190612578565b60405180910390a35b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213e9190612d0e565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550808360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c99190612eaf565b6121d39190612d0e565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838661226f9190612d0e565b60405161227c9190612578565b60405180910390a35050505050565b5f818311612299578261229b565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122da576122d961285a565b5b6040519080825280602002602001820160405280156123085781602001602082028036833780820191505090505b50905030815f8151811061231f5761231e612e82565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123da9190612ef6565b816001815181106123ee576123ed612e82565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061244730737a250d5630b4cf539739df2c5dacb4c659f2488d84611760565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161249c959493929190613352565b5f604051808303815f87803b1580156124b3575f80fd5b505af11580156124c5573d5f803e3d5ffd5b505050505f601460156101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561254b573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f819050919050565b61257281612560565b82525050565b5f60208201905061258b5f830184612569565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156125c85780820151818401526020810190506125ad565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6125ed82612591565b6125f7818561259b565b93506126078185602086016125ab565b612610816125d3565b840191505092915050565b5f6020820190508181035f83015261263381846125e3565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126758261264c565b9050919050565b6126858161266b565b811461268f575f80fd5b50565b5f813590506126a08161267c565b92915050565b6126af81612560565b81146126b9575f80fd5b50565b5f813590506126ca816126a6565b92915050565b5f80604083850312156126e6576126e5612644565b5b5f6126f385828601612692565b9250506020612704858286016126bc565b9150509250929050565b5f8115159050919050565b6127228161270e565b82525050565b5f60208201905061273b5f830184612719565b92915050565b5f805f6060848603121561275857612757612644565b5b5f61276586828701612692565b935050602061277686828701612692565b9250506040612787868287016126bc565b9150509250925092565b5f60ff82169050919050565b6127a681612791565b82525050565b5f6020820190506127bf5f83018461279d565b92915050565b5f602082840312156127da576127d9612644565b5b5f6127e784828501612692565b91505092915050565b5f806040838503121561280657612805612644565b5b5f612813858286016126bc565b9250506020612824858286016126bc565b9150509250929050565b6128378161266b565b82525050565b5f6020820190506128505f83018461282e565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612890826125d3565b810181811067ffffffffffffffff821117156128af576128ae61285a565b5b80604052505050565b5f6128c161263b565b90506128cd8282612887565b919050565b5f67ffffffffffffffff8211156128ec576128eb61285a565b5b602082029050602081019050919050565b5f80fd5b5f61291361290e846128d2565b6128b8565b90508083825260208201905060208402830185811115612936576129356128fd565b5b835b8181101561295f578061294b8882612692565b845260208401935050602081019050612938565b5050509392505050565b5f82601f83011261297d5761297c612856565b5b813561298d848260208601612901565b91505092915050565b61299f8161270e565b81146129a9575f80fd5b50565b5f813590506129ba81612996565b92915050565b5f80604083850312156129d6576129d5612644565b5b5f83013567ffffffffffffffff8111156129f3576129f2612648565b5b6129ff85828601612969565b9250506020612a10858286016129ac565b9150509250929050565b5f80fd5b5f8083601f840112612a3357612a32612856565b5b8235905067ffffffffffffffff811115612a5057612a4f612a1a565b5b602083019150836040820283011115612a6c57612a6b6128fd565b5b9250929050565b5f8060208385031215612a8957612a88612644565b5b5f83013567ffffffffffffffff811115612aa657612aa5612648565b5b612ab285828601612a1e565b92509250509250929050565b5f60208284031215612ad357612ad2612644565b5b5f612ae0848285016126bc565b91505092915050565b5f8060408385031215612aff57612afe612644565b5b5f612b0c85828601612692565b9250506020612b1d85828601612692565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612ba957808604811115612b8557612b84612b27565b5b6001851615612b945780820291505b8081029050612ba285612b54565b9450612b69565b94509492505050565b5f82612bc15760019050612c7c565b81612bce575f9050612c7c565b8160018114612be45760028114612bee57612c1d565b6001915050612c7c565b60ff841115612c0057612bff612b27565b5b8360020a915084821115612c1757612c16612b27565b5b50612c7c565b5060208310610133831016604e8410600b8410161715612c525782820a905083811115612c4d57612c4c612b27565b5b612c7c565b612c5f8484846001612b60565b92509050818404811115612c7657612c75612b27565b5b81810290505b9392505050565b5f612c8d82612560565b9150612c9883612791565b9250612cc57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612bb2565b905092915050565b5f612cd782612560565b9150612ce283612560565b9250828202612cf081612560565b91508282048414831517612d0757612d06612b27565b5b5092915050565b5f612d1882612560565b9150612d2383612560565b9250828203905081811115612d3b57612d3a612b27565b5b92915050565b5f81905092915050565b50565b5f612d595f83612d41565b9150612d6482612d4b565b5f82019050919050565b5f612d7882612d4e565b9150819050919050565b5f81519050612d90816126a6565b92915050565b5f60208284031215612dab57612daa612644565b5b5f612db884828501612d82565b91505092915050565b5f819050919050565b5f612de4612ddf612dda8461264c565b612dc1565b61264c565b9050919050565b5f612df582612dca565b9050919050565b5f612e0682612deb565b9050919050565b612e1681612dfc565b82525050565b5f604082019050612e2f5f830185612e0d565b612e3c6020830184612569565b9392505050565b5f81519050612e5181612996565b92915050565b5f60208284031215612e6c57612e6b612644565b5b5f612e7984828501612e43565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612eb982612560565b9150612ec483612560565b9250828201905080821115612edc57612edb612b27565b5b92915050565b5f81519050612ef08161267c565b92915050565b5f60208284031215612f0b57612f0a612644565b5b5f612f1884828501612ee2565b91505092915050565b5f604082019050612f345f83018561282e565b612f41602083018461282e565b9392505050565b5f819050919050565b5f612f6b612f66612f6184612f48565b612dc1565b612560565b9050919050565b612f7b81612f51565b82525050565b5f60c082019050612f945f83018961282e565b612fa16020830188612569565b612fae6040830187612f72565b612fbb6060830186612f72565b612fc8608083018561282e565b612fd560a0830184612569565b979650505050505050565b5f805f60608486031215612ff757612ff6612644565b5b5f61300486828701612d82565b935050602061301586828701612d82565b925050604061302686828701612d82565b9150509250925092565b5f6040820190506130435f83018561282e565b6130506020830184612569565b9392505050565b7f626f7473000000000000000000000000000000000000000000000000000000005f82015250565b5f61308b60048361259b565b915061309682613057565b602082019050919050565b5f6020820190508181035f8301526130b88161307f565b9050919050565b7f45786365656473206d617857616c6c65740000000000000000000000000000005f82015250565b5f6130f360118361259b565b91506130fe826130bf565b602082019050919050565b5f6020820190508181035f830152613120816130e7565b9050919050565b7f45786365656473206d61785478000000000000000000000000000000000000005f82015250565b5f61315b600d8361259b565b915061316682613127565b602082019050919050565b5f6020820190508181035f8301526131888161314f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131c682612560565b91506131d183612560565b9250826131e1576131e061318f565b5b828204905092915050565b7f636f6e74726163740000000000000000000000000000000000000000000000005f82015250565b5f61322060088361259b565b915061322b826131ec565b602082019050919050565b5f6020820190508181035f83015261324d81613214565b9050919050565b5f61325e82612560565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132905761328f612b27565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132cd8161266b565b82525050565b5f6132de83836132c4565b60208301905092915050565b5f602082019050919050565b5f6133008261329b565b61330a81856132a5565b9350613315836132b5565b805f5b8381101561334557815161332c88826132d3565b9750613337836132ea565b925050600181019050613318565b5085935050505092915050565b5f60a0820190506133655f830188612569565b6133726020830187612f72565b818103604083015261338481866132f6565b9050613393606083018561282e565b6133a06080830184612569565b969550505050505056fea264697066735822122017485e912f45e5e220aed05c85398c3fd3cdffad2cd3f121ee8c7291bfdd3b0164736f6c63430008170033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.