Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x4342b553...4cce0bd94 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Token
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-04-09 */ pragma solidity ^0.4.24; contract ERC20Interface { function totalSupply() public view returns (uint256); function balanceOf( address _address) public view returns (uint256 balance); function allowance( address _address, address _to) public view returns (uint256 remaining); function transfer( address _to, uint256 _value) public returns (bool success); function approve( address _to, uint256 _value) public returns (bool success); function transferFrom( address _from, address _to, uint256 _value) public returns (bool success); event Transfer( address indexed _from, address indexed _to, uint256 _value ); event Approval( address indexed _owner, address indexed _spender, uint256 _value ); } contract Owned { address owner; address newOwner; uint32 transferCount; event TransferOwnership( address indexed _from, address indexed _to ); constructor() public { owner = msg.sender; transferCount = 0; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership( address _newOwner) public onlyOwner { newOwner = _newOwner; } function viewOwner() public view returns (address) { return owner; } function viewTransferCount() public view onlyOwner returns (uint32) { return transferCount; } function isTransferPending() public view returns (bool) { require( msg.sender == owner || msg.sender == newOwner); return newOwner != address(0); } function acceptOwnership() public { require(msg.sender == newOwner); owner = newOwner; newOwner = address(0); transferCount++; emit TransferOwnership( owner, newOwner ); } } library SafeMath { function add( uint256 a, uint256 b) internal pure returns(uint256 c) { c = a + b; require(c >= a); } function sub( uint256 a, uint256 b) internal pure returns(uint256 c) { require(b <= a); c = a - b; } function mul( uint256 a, uint256 b) internal pure returns(uint256 c) { c = a * b; require(a == 0 || c / a == b); } function div( uint256 a, uint256 b) internal pure returns(uint256 c) { require(b > 0); c = a / b; } } contract ApproveAndCallFallBack { function receiveApproval( address _from, uint256 _value, address token, bytes data) public returns (bool success); } contract Pausable is Owned { event Pause(); event Unpause(); bool public paused = false; modifier whenNotPaused() { require(!paused); _; } modifier whenPaused() { require(paused); _; } function pause() onlyOwner whenNotPaused public { paused = true; emit Pause(); } function unpause() onlyOwner whenPaused public { paused = false; emit Unpause(); } } /** * @title ERC1132 interface * @dev see https://github.com/ethereum/EIPs/issues/1132 */ contract ERC1132 { /** * @dev Reasons why a user's tokens have been locked */ mapping(address => bytes32[]) public lockReason; /** * @dev locked token structure */ struct lockToken { uint256 amount; uint256 validity; bool claimed; } /** * @dev Holds number & validity of tokens locked for a given reason for * a specified address */ mapping(address => mapping(bytes32 => lockToken)) public locked; /** * @dev Records data of all the tokens Locked */ event Locked( address indexed _of, bytes32 indexed _reason, uint256 _amount, uint256 _validity ); /** * @dev Records data of all the tokens unlocked */ event Unlocked( address indexed _of, bytes32 indexed _reason, uint256 _amount ); /** * @dev Locks a specified amount of tokens against an address, * for a specified reason and time * @param _reason The reason to lock tokens * @param _amount Number of tokens to be locked * @param _time Lock time in seconds */ function lock(bytes32 _reason, uint256 _amount, uint256 _time) public returns (bool); /** * @dev Returns tokens locked for a specified address for a * specified reason * * @param _of The address whose tokens are locked * @param _reason The reason to query the lock tokens for */ function tokensLocked(address _of, bytes32 _reason) public view returns (uint256 amount); /** * @dev Returns tokens locked for a specified address for a * specified reason at a specific time * * @param _of The address whose tokens are locked * @param _reason The reason to query the lock tokens for * @param _time The timestamp to query the lock tokens for */ function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time) public view returns (uint256 amount); /** * @dev Returns total tokens held by an address (locked + transferable) * @param _of The address to query the total balance of */ function totalBalanceOf(address _of) public view returns (uint256 amount); /** * @dev Extends lock for a specified reason and time * @param _reason The reason to lock tokens * @param _time Lock extension time in seconds */ function extendLock(bytes32 _reason, uint256 _time) public returns (bool); /** * @dev Increase number of tokens locked for a specified reason * @param _reason The reason to lock tokens * @param _amount Number of tokens to be increased */ function increaseLockAmount(bytes32 _reason, uint256 _amount) public returns (bool); /** * @dev Returns unlockable tokens for a specified address for a specified reason * @param _of The address to query the the unlockable token count of * @param _reason The reason to query the unlockable tokens for */ function tokensUnlockable(address _of, bytes32 _reason) public view returns (uint256 amount); /** * @dev Unlocks the unlockable tokens of a specified address * @param _of Address of user, claiming back unlockable tokens */ function unlock(address _of) public returns (uint256 unlockableTokens); /** * @dev Gets the unlockable tokens of a specified address * @param _of The address to query the the unlockable token count of */ function getUnlockableTokens(address _of) public view returns (uint256 unlockableTokens); } contract Token is ERC20Interface, Owned, Pausable, ERC1132 { using SafeMath for uint256; string public symbol; string public name; uint8 public decimals; uint256 private _totalSupply; string internal constant ALREADY_LOCKED = 'Tokens already locked'; string internal constant NOT_LOCKED = 'No tokens locked'; string internal constant AMOUNT_ZERO = 'Amount can not be 0'; /* always capped by 10B tokens */ uint256 internal constant MAX_TOTAL_SUPPLY = 10000000000; mapping(address => uint256) balances; mapping(address => mapping(address => uint256)) allowed; mapping(address => uint256) incomes; mapping(address => uint256) expenses; mapping(address => bool) frozenAccount; event FreezeAccount(address _address, bool frozen); constructor( uint256 _totalSupply_, string _name, string _symbol, uint8 _decimals) public { symbol = _symbol; name = _name; decimals = _decimals; _totalSupply = _totalSupply_ * 10**uint256(_decimals); balances[owner] = _totalSupply; emit Transfer(address(0), owner, _totalSupply); } function totalSupply() public view returns (uint256) { return _totalSupply; } function _transfer( address _from, address _to, uint256 _value) internal returns (bool success) { require (_to != 0x0); require (balances[_from] >= _value); require(!frozenAccount[_from]); require(!frozenAccount[_to]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); incomes[_to] = incomes[_to].add(_value); expenses[_from] = expenses[_from].add(_value); emit Transfer(_from, _to, _value); return true; } function transfer( address _to, uint256 _value) public whenNotPaused returns (bool success) { return _transfer(msg.sender, _to, _value); } function approve( address _spender, uint256 _value) public whenNotPaused returns (bool success) { require (_spender != 0x0); require(!frozenAccount[msg.sender]); require(!frozenAccount[_spender]); allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function transferFrom( address _from, address _to, uint256 _value) public whenNotPaused returns (bool success) { require(!frozenAccount[msg.sender]); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); return _transfer(_from, _to, _value); } function balanceOf( address _address) public view returns (uint256 remaining) { require(_address != 0x0); return balances[_address]; } function incomeOf( address _address) public view returns (uint256 income) { require(_address != 0x0); return incomes[_address]; } function expenseOf( address _address) public view returns (uint256 expense) { require(_address != 0x0); return expenses[_address]; } function allowance( address _owner, address _spender) public view returns (uint256 remaining) { require(_owner != 0x0); require(_spender != 0x0); return allowed[_owner][_spender]; } function approveAndCall( address _spender, uint256 _value, bytes _data) public whenNotPaused returns (bool success) { if (approve(_spender, _value)) { require(ApproveAndCallFallBack(_spender).receiveApproval(msg.sender, _value, this, _data) == true); return true; } return false; } function freezeAccount( address _address, bool freeze) public onlyOwner returns (bool success) { frozenAccount[_address] = freeze; emit FreezeAccount(_address, freeze); return true; } function isFrozenAccount( address _address) public view returns (bool frozen) { require(_address != 0x0); return frozenAccount[_address]; } function mint( uint256 amount) public onlyOwner returns (bool success) { uint256 newSupply = _totalSupply + amount; require(newSupply <= MAX_TOTAL_SUPPLY * 10 **uint256(decimals), "ERC20: exceed maximum total supply"); _totalSupply = newSupply; balances[owner] += amount; emit Transfer(address(0), owner, amount); return true; } function burn( uint256 amount) public whenNotPaused returns (bool success) { require (balances[msg.sender] >= amount); require(!frozenAccount[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(amount); _totalSupply -= amount; emit Transfer(msg.sender, address(0), amount); return true; } function lock( bytes32 _reason, uint256 _amount, uint256 _time) public whenNotPaused returns (bool) { uint256 validUntil = now.add(_time); //solhint-disable-line // If tokens are already locked, then functions extendLock or // increaseLockAmount should be used to make any changes require(tokensLocked(msg.sender, _reason) == 0, ALREADY_LOCKED); require(_amount != 0, AMOUNT_ZERO); if (locked[msg.sender][_reason].amount == 0) lockReason[msg.sender].push(_reason); transfer(address(this), _amount); locked[msg.sender][_reason] = lockToken(_amount, validUntil, false); emit Locked(msg.sender, _reason, _amount, validUntil); return true; } function transferWithLock(address _to, bytes32 _reason, uint256 _amount, uint256 _time) public whenNotPaused returns (bool) { uint256 validUntil = now.add(_time); //solhint-disable-line require(tokensLocked(_to, _reason) == 0, ALREADY_LOCKED); require(_amount != 0, AMOUNT_ZERO); if (locked[_to][_reason].amount == 0) lockReason[_to].push(_reason); transfer(address(this), _amount); locked[_to][_reason] = lockToken(_amount, validUntil, false); emit Locked(_to, _reason, _amount, validUntil); return true; } function tokensLocked(address _of, bytes32 _reason) public view returns (uint256 amount) { if (!locked[_of][_reason].claimed) amount = locked[_of][_reason].amount; } function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time) public view returns (uint256 amount) { if (locked[_of][_reason].validity > _time) amount = locked[_of][_reason].amount; } function totalBalanceOf(address _of) public view returns (uint256 amount) { amount = balanceOf(_of); for (uint256 i = 0; i < lockReason[_of].length; i++) { amount = amount.add(tokensLocked(_of, lockReason[_of][i])); } } function extendLock(bytes32 _reason, uint256 _time) public whenNotPaused returns (bool) { require(tokensLocked(msg.sender, _reason) > 0, NOT_LOCKED); locked[msg.sender][_reason].validity = locked[msg.sender][_reason].validity.add(_time); emit Locked(msg.sender, _reason, locked[msg.sender][_reason].amount, locked[msg.sender][_reason].validity); return true; } function increaseLockAmount(bytes32 _reason, uint256 _amount) public whenNotPaused returns (bool) { require(tokensLocked(msg.sender, _reason) > 0, NOT_LOCKED); transfer(address(this), _amount); locked[msg.sender][_reason].amount = locked[msg.sender][_reason].amount.add(_amount); emit Locked(msg.sender, _reason, locked[msg.sender][_reason].amount, locked[msg.sender][_reason].validity); return true; } function tokensUnlockable(address _of, bytes32 _reason) public view returns (uint256 amount) { if (locked[_of][_reason].validity <= now && !locked[_of][_reason].claimed) //solhint-disable-line amount = locked[_of][_reason].amount; } function unlock(address _of) public whenNotPaused returns (uint256 unlockableTokens) { uint256 lockedTokens; for (uint256 i = 0; i < lockReason[_of].length; i++) { lockedTokens = tokensUnlockable(_of, lockReason[_of][i]); if (lockedTokens > 0) { unlockableTokens = unlockableTokens.add(lockedTokens); locked[_of][lockReason[_of][i]].claimed = true; emit Unlocked(_of, lockReason[_of][i], lockedTokens); } } if (unlockableTokens > 0) this.transfer(_of, unlockableTokens); } function getUnlockableTokens(address _of) public view returns (uint256 unlockableTokens) { for (uint256 i = 0; i < lockReason[_of].length; i++) { unlockableTokens = unlockableTokens.add(tokensUnlockable(_of, lockReason[_of][i])); } } function () public payable { revert(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"},{"name":"_reason","type":"bytes32"},{"name":"_time","type":"uint256"}],"name":"tokensLockedAtTime","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isTransferPending","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_reason","type":"bytes32"},{"name":"_amount","type":"uint256"},{"name":"_time","type":"uint256"}],"name":"lock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_of","type":"address"}],"name":"unlock","outputs":[{"name":"unlockableTokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isFrozenAccount","outputs":[{"name":"frozen","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"}],"name":"totalBalanceOf","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_reason","type":"bytes32"},{"name":"_amount","type":"uint256"},{"name":"_time","type":"uint256"}],"name":"transferWithLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"},{"name":"_reason","type":"bytes32"}],"name":"tokensUnlockable","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"},{"name":"_reason","type":"bytes32"}],"name":"tokensLocked","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"balanceOf","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"lockReason","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_reason","type":"bytes32"},{"name":"_amount","type":"uint256"}],"name":"increaseLockAmount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"viewTransferCount","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"incomeOf","outputs":[{"name":"income","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"mint","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_reason","type":"bytes32"},{"name":"_time","type":"uint256"}],"name":"extendLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"}],"name":"getUnlockableTokens","outputs":[{"name":"unlockableTokens","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"viewOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"locked","outputs":[{"name":"amount","type":"uint256"},{"name":"validity","type":"uint256"},{"name":"claimed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"expenseOf","outputs":[{"name":"expense","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_totalSupply_","type":"uint256"},{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_address","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FreezeAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_of","type":"address"},{"indexed":true,"name":"_reason","type":"bytes32"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_validity","type":"uint256"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_of","type":"address"},{"indexed":true,"name":"_reason","type":"bytes32"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Unlocked","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"TransferOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]
Deployed Bytecode
0x6080604052600436106101c2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101c7578063095ea7b314610257578063179e91f1146102bc5780631801c4081461032b57806318160ddd1461035a57806323b872dd146103855780632e82aaf21461040a5780632f6c493c14610467578063313ce567146104be5780633f4ba83a146104ef5780634028db791461050657806342966c68146105615780634b0ee02a146105a65780634cb5465f146105fd5780635294d0e81461067a5780635c975abb146106df5780635ca48d8c1461070e57806370a082311461077357806371d66f00146107ca57806379ba50971461083357806381fc4d901461084a5780638456cb591461089d57806384aa2602146108b457806395d89b41146108eb5780639b03bea61461097b578063a0712d68146109d2578063a9059cbb14610a17578063a9dab16714610a7c578063ab4a2eb314610acf578063bc677b4614610b26578063cae9ca5114610b7d578063d71be8db14610c28578063dd62ed3e14610c9f578063dff96f8a14610d16578063e724529c14610d6d578063f2fde38b14610dd4575b600080fd5b3480156101d357600080fd5b506101dc610e17565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561021c578082015181840152602081019050610201565b50505050905090810190601f1680156102495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026357600080fd5b506102a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eb5565b604051808215151515815260200191505060405180910390f35b3480156102c857600080fd5b50610315600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291908035906020019092919050505061109b565b6040518082815260200191505060405180910390f35b34801561033757600080fd5b50610340611166565b604051808215151515815260200191505060405180910390f35b34801561036657600080fd5b5061036f611273565b6040518082815260200191505060405180910390f35b34801561039157600080fd5b506103f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061127d565b604051808215151515815260200191505060405180910390f35b34801561041657600080fd5b5061044d60048036038101908080356000191690602001909291908035906020019092919080359060200190929190505050611417565b604051808215151515815260200191505060405180910390f35b34801561047357600080fd5b506104a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061180f565b6040518082815260200191505060405180910390f35b3480156104ca57600080fd5b506104d3611b70565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104fb57600080fd5b50610504611b83565b005b34801561051257600080fd5b50610547600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c42565b604051808215151515815260200191505060405180910390f35b34801561056d57600080fd5b5061058c60048036038101908080359060200190929190505050611cbd565b604051808215151515815260200191505060405180910390f35b3480156105b257600080fd5b506105e7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e96565b6040518082815260200191505060405180910390f35b34801561060957600080fd5b50610660600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291908035906020019092919080359060200190929190505050611f7a565b604051808215151515815260200191505060405180910390f35b34801561068657600080fd5b506106c9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050612373565b6040518082815260200191505060405180910390f35b3480156106eb57600080fd5b506106f46124b0565b604051808215151515815260200191505060405180910390f35b34801561071a57600080fd5b5061075d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291905050506124c3565b6040518082815260200191505060405180910390f35b34801561077f57600080fd5b506107b4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612599565b6040518082815260200191505060405180910390f35b3480156107d657600080fd5b50610815600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612607565b60405180826000191660001916815260200191505060405180910390f35b34801561083f57600080fd5b50610848612637565b005b34801561085657600080fd5b50610883600480360381019080803560001916906020019092919080359060200190929190505050612811565b604051808215151515815260200191505060405180910390f35b3480156108a957600080fd5b506108b2612b0e565b005b3480156108c057600080fd5b506108c9612bcd565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156108f757600080fd5b50610900612c42565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610940578082015181840152602081019050610925565b50505050905090810190601f16801561096d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561098757600080fd5b506109bc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ce0565b6040518082815260200191505060405180910390f35b3480156109de57600080fd5b506109fd60048036038101908080359060200190929190505050612d4e565b604051808215151515815260200191505060405180910390f35b348015610a2357600080fd5b50610a62600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612f73565b604051808215151515815260200191505060405180910390f35b348015610a8857600080fd5b50610ab5600480360381019080803560001916906020019092919080359060200190929190505050612fa4565b604051808215151515815260200191505060405180910390f35b348015610adb57600080fd5b50610b10600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613296565b6040518082815260200191505060405180910390f35b348015610b3257600080fd5b50610b3b61336f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b8957600080fd5b50610c0e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050613398565b604051808215151515815260200191505060405180910390f35b348015610c3457600080fd5b50610c77600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919050505061356b565b6040518084815260200183815260200182151515158152602001935050505060405180910390f35b348015610cab57600080fd5b50610d00600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135af565b6040518082815260200191505060405180910390f35b348015610d2257600080fd5b50610d57600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613681565b6040518082815260200191505060405180910390f35b348015610d7957600080fd5b50610dba600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506136ef565b604051808215151515815260200191505060405180910390f35b348015610de057600080fd5b50610e15600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061381c565b005b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ead5780601f10610e8257610100808354040283529160200191610ead565b820191906000526020600020905b815481529060010190602001808311610e9057829003601f168201915b505050505081565b6000600160189054906101000a900460ff16151515610ed357600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610ef957600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f5257600080fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610fab57600080fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060010154111561115f57600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084600019166000191681526020019081526020016000206000015490505b9392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112105750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561121b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415905090565b6000600754905090565b6000600160189054906101000a900460ff1615151561129b57600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156112f457600080fd5b61138382600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138bb90919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061140e8484846138d7565b90509392505050565b600080600160189054906101000a900460ff1615151561143657600080fd5b6114498342613cc290919063ffffffff16565b9050600061145733876124c3565b146040805190810160405280601581526020017f546f6b656e7320616c7265616479206c6f636b65640000000000000000000000815250901515611536576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114fb5780820151818401526020810190506114e0565b50505050905090810190601f1680156115285780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008414156040805190810160405280601381526020017f416d6f756e742063616e206e6f7420626520300000000000000000000000000081525090151561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115df5780820151818401526020810190506115c4565b50505050905090810190601f16801561160c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087600019166000191681526020019081526020016000206000015414156116ef57600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915090600019169055505b6116f93085612f73565b5060606040519081016040528085815260200182815260200160001515815250600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760001916600019168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff02191690831515021790555090505084600019163373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd8684604051808381526020018281526020019250505060405180910390a360019150509392505050565b6000806000600160189054906101000a900460ff1615151561183057600080fd5b600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611a80576118df84600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811015156118cf57fe5b9060005260206000200154612373565b91506000821115611a73576118fd8284613cc290919063ffffffff16565b92506001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561198e57fe5b90600052602060002001546000191660001916815260200190815260200160002060020160006101000a81548160ff021916908315150217905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081815481101515611a1557fe5b9060005260206000200154600019168473ffffffffffffffffffffffffffffffffffffffff167f11f87fd5adcd05786919b8b868f59a70d78ae4eb6f305c5927f9c5b1659841a4846040518082815260200191505060405180910390a35b8080600101915050611835565b6000831115611b69573073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611b2c57600080fd5b505af1158015611b40573d6000803e3d6000fd5b505050506040513d6020811015611b5657600080fd5b8101908080519060200190929190505050505b5050919050565b600660009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bde57600080fd5b600160189054906101000a900460ff161515611bf957600080fd5b6000600160186101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000808273ffffffffffffffffffffffffffffffffffffffff1614151515611c6957600080fd5b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160189054906101000a900460ff16151515611cdb57600080fd5b81600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611d2957600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611d8257600080fd5b611dd482600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138bb90919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600760008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b600080611ea283612599565b9150600090505b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611f7457611f65611f5684600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481101515611f4657fe5b90600052602060002001546124c3565b83613cc290919063ffffffff16565b91508080600101915050611ea9565b50919050565b600080600160189054906101000a900460ff16151515611f9957600080fd5b611fac8342613cc290919063ffffffff16565b90506000611fba87876124c3565b146040805190810160405280601581526020017f546f6b656e7320616c7265616479206c6f636b65640000000000000000000000815250901515612099576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561205e578082015181840152602081019050612043565b50505050905090810190601f16801561208b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008414156040805190810160405280601381526020017f416d6f756e742063616e206e6f7420626520300000000000000000000000000081525090151561217d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612142578082015181840152602081019050612127565b50505050905090810190601f16801561216f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060000154141561225257600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915090600019169055505b61225c3085612f73565b5060606040519081016040528085815260200182815260200160001515815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760001916600019168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff02191690831515021790555090505084600019168673ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd8684604051808381526020018281526020019250505060405180910390a36001915050949350505050565b600042600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060010154111580156124465750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060020160009054906101000a900460ff16155b156124aa57600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083600019166000191681526020019081526020016000206000015490505b92915050565b600160189054906101000a900460ff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060020160009054906101000a900460ff16151561259357600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083600019166000191681526020019081526020016000206000015490505b92915050565b6000808273ffffffffffffffffffffffffffffffffffffffff16141515156125c057600080fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60026020528160005260406000208181548110151561262257fe5b90600052602060002001600091509150505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561269357600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601481819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff16021790555050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c60405160405180910390a3565b6000600160189054906101000a900460ff1615151561282f57600080fd5b600061283b33856124c3565b116040805190810160405280601081526020017f4e6f20746f6b656e73206c6f636b65640000000000000000000000000000000081525090151561291a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128df5780820151818401526020810190506128c4565b50505050905090810190601f16801561290c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506129253083612f73565b5061299482600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060000154613cc290919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085600019166000191681526020019081526020016000206000018190555082600019163373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060000154600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000886000191660001916815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a36001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b6957600080fd5b600160189054906101000a900460ff16151515612b8557600080fd5b60018060186101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c2a57600080fd5b600160149054906101000a900463ffffffff16905090565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612cd85780601f10612cad57610100808354040283529160200191612cd8565b820191906000526020600020905b815481529060010190602001808311612cbb57829003601f168201915b505050505081565b6000808273ffffffffffffffffffffffffffffffffffffffff1614151515612d0757600080fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612dac57600080fd5b82600754019050600660009054906101000a900460ff1660ff16600a0a6402540be400028111151515612e6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f45524332303a20657863656564206d6178696d756d20746f74616c207375707081526020017f6c7900000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060078190555082600860008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a36001915050919050565b6000600160189054906101000a900460ff16151515612f9157600080fd5b612f9c3384846138d7565b905092915050565b6000600160189054906101000a900460ff16151515612fc257600080fd5b6000612fce33856124c3565b116040805190810160405280601081526020017f4e6f20746f6b656e73206c6f636b6564000000000000000000000000000000008152509015156130ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613072578082015181840152602081019050613057565b50505050905090810190601f16801561309f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061311c82600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060010154613cc290919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085600019166000191681526020019081526020016000206001018190555082600019163373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060000154600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000886000191660001916815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a36001905092915050565b600080600090505b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156133695761335a61334b84600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110151561333b57fe5b9060005260206000200154612373565b83613cc290919063ffffffff16565b9150808060010191505061329e565b50919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160189054906101000a900460ff161515156133b657600080fd5b6133c08484610eb5565b1561355f57600115158473ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156134be5780820151818401526020810190506134a3565b50505050905090810190601f1680156134eb5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561350d57600080fd5b505af1158015613521573d6000803e3d6000fd5b505050506040513d602081101561353757600080fd5b8101908080519060200190929190505050151514151561355657600080fd5b60019050613564565b600090505b9392505050565b6003602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16905083565b6000808373ffffffffffffffffffffffffffffffffffffffff16141515156135d657600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156135fc57600080fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff16141515156136a857600080fd5b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561374c57600080fd5b81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd16a7a4ba83c78a07676c543502e8155f633ecd3c35abb1da51bcbf129758b0f8383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a16001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561387757600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008282111515156138cc57600080fd5b818303905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16141515156138fe57600080fd5b81600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561394c57600080fd5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156139a557600080fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156139fe57600080fd5b613a5082600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138bb90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ae582600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cc290919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b7a82600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cc290919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c0f82600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cc290919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008183019050828110151515613cd857600080fd5b929150505600a165627a7a723058200fea733077a85a837bf692f0e146124919669e05f06d0ff1f4d155a35b3dd8c50029
Deployed Bytecode Sourcemap
7621:10121:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17723:8;;;7749:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7749:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7749:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9796:411;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9796:411:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14908:253;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14908:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1841:223;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1841:223:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8848:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8848:123:0;;;;;;;;;;;;;;;;;;;;;;;10215:349;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10215:349:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13202:819;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13202:819:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16716:652;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16716:652:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7774:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7774:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3656:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3656:95:0;;;;;;12139:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12139:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12791:402;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12791:402:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15169:298;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15169:298:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14029:639;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14029:639:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16417:291;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16417:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3392:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3392:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14676:224;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14676:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10572:200;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10572:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3957:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3957:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2072:275;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2072:275:0;;;;;;15921:488;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15921:488:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3557:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3557:93:0;;;;;;1685:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1685:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7722:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7722:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7722:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10780:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10780:195:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12350:433;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12350:433:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9586:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9586:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15476:437;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15476:437:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17376:301;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17376:301:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1563:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1563:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11460:398;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11460:398:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4303:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4303:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:263;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11189:263:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10983:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10983:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11866:265;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11866:265:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1420:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1420:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7749:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9796:411::-;9923:12;3466:6;;;;;;;;;;;3465:7;3457:16;;;;;;;;9974:3;9962:8;:15;;;;9953:25;;;;;;;;9998:13;:25;10012:10;9998:25;;;;;;;;;;;;;;;;;;;;;;;;;9997:26;9989:35;;;;;;;;10044:13;:23;10058:8;10044:23;;;;;;;;;;;;;;;;;;;;;;;;;10043:24;10035:33;;;;;;;;10113:6;10081:7;:19;10089:10;10081:19;;;;;;;;;;;;;;;:29;10101:8;10081:29;;;;;;;;;;;;;;;:38;;;;10158:8;10137:38;;10146:10;10137:38;;;10168:6;10137:38;;;;;;;;;;;;;;;;;;10195:4;10188:11;;9796:411;;;;:::o;14908:253::-;15029:14;15097:5;15065:6;:11;15072:3;15065:11;;;;;;;;;;;;;;;:20;15077:7;15065:20;;;;;;;;;;;;;;;;;:29;;;:37;15061:92;;;15126:6;:11;15133:3;15126:11;;;;;;;;;;;;;;;:20;15138:7;15126:20;;;;;;;;;;;;;;;;;:27;;;15117:36;;15061:92;14908:253;;;;;:::o;1841:223::-;1918:4;1971:5;;;;;;;;;;;1957:19;;:10;:19;;;:58;;;;2007:8;;;;;;;;;;;1993:22;;:10;:22;;;1957:58;1935:81;;;;;;;;2054:1;2034:22;;:8;;;;;;;;;;;:22;;;;2027:29;;1841:223;:::o;8848:123::-;8919:7;8951:12;;8944:19;;8848:123;:::o;10215:349::-;10366:12;3466:6;;;;;;;;;;;3465:7;3457:16;;;;;;;;10405:13;:25;10419:10;10405:25;;;;;;;;;;;;;;;;;;;;;;;;;10404:26;10396:35;;;;;;;;10471:38;10502:6;10471:7;:14;10479:5;10471:14;;;;;;;;;;;;;;;:26;10486:10;10471:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;10442:7;:14;10450:5;10442:14;;;;;;;;;;;;;;;:26;10457:10;10442:26;;;;;;;;;;;;;;;:67;;;;10527:29;10537:5;10544:3;10549:6;10527:9;:29::i;:::-;10520:36;;10215:349;;;;;:::o;13202:819::-;13355:4;13377:18;3466:6;;;;;;;;;;;3465:7;3457:16;;;;;;;;13398:14;13406:5;13398:3;:7;;:14;;;;:::i;:::-;13377:35;;13630:1;13593:33;13606:10;13618:7;13593:12;:33::i;:::-;:38;13633:14;;;;;;;;;;;;;;;;;;13585:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13585:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13678:1;13667:7;:12;;13681:11;;;;;;;;;;;;;;;;;;13659:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13659:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13748:1;13710:6;:18;13717:10;13710:18;;;;;;;;;;;;;;;:27;13729:7;13710:27;;;;;;;;;;;;;;;;;:34;;;:39;13706:94;;;13764:10;:22;13775:10;13764:22;;;;;;;;;;;;;;;13792:7;13764:36;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;13764:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13706:94;13813:32;13830:4;13837:7;13813:8;:32::i;:::-;;13888:37;;;;;;;;;13898:7;13888:37;;;;13907:10;13888:37;;;;13919:5;13888:37;;;;;13858:6;:18;13865:10;13858:18;;;;;;;;;;;;;;;:27;13877:7;13858:27;;;;;;;;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13962:7;13943:48;;;13950:10;13943:48;;;13971:7;13980:10;13943:48;;;;;;;;;;;;;;;;;;;;;;;;14009:4;14002:11;;13202:819;;;;;;:::o;16716:652::-;16802:24;16844:20;16882:9;3466:6;;;;;;;;;;;3465:7;3457:16;;;;;;;;16894:1;16882:13;;16877:396;16901:10;:15;16912:3;16901:15;;;;;;;;;;;;;;;:22;;;;16897:1;:26;16877:396;;;16960:41;16977:3;16982:10;:15;16993:3;16982:15;;;;;;;;;;;;;;;16998:1;16982:18;;;;;;;;;;;;;;;;;;16960:16;:41::i;:::-;16945:56;;17035:1;17020:12;:16;17016:246;;;17076:34;17097:12;17076:16;:20;;:34;;;;:::i;:::-;17057:53;;17171:4;17129:6;:11;17136:3;17129:11;;;;;;;;;;;;;;;:31;17141:10;:15;17152:3;17141:15;;;;;;;;;;;;;;;17157:1;17141:18;;;;;;;;;;;;;;;;;;17129:31;;;;;;;;;;;;;;;;;:39;;;:46;;;;;;;;;;;;;;;;;;17213:10;:15;17224:3;17213:15;;;;;;;;;;;;;;;17229:1;17213:18;;;;;;;;;;;;;;;;;;17199:47;;;17208:3;17199:47;;;17233:12;17199:47;;;;;;;;;;;;;;;;;;17016:246;16925:3;;;;;;;16877:396;;;17308:1;17289:16;:20;17285:75;;;17324:4;:13;;;17338:3;17343:16;17324:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17324:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17324:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17324:36:0;;;;;;;;;;;;;;;;;17285:75;16716:652;;;;;:::o;7774:21::-;;;;;;;;;;;;;:::o;3656:95::-;1386:5;;;;;;;;;;;1372:19;;:10;:19;;;1364:28;;;;;;;;3530:6;;;;;;;;;;;3522:15;;;;;;;;3719:5;3710:6;;:14;;;;;;;;;;;;;;;;;;3736:9;;;;;;;;;;3656:95::o;12139:203::-;12240:11;12289:3;12277:8;:15;;;;12269:24;;;;;;;;12311:13;:23;12325:8;12311:23;;;;;;;;;;;;;;;;;;;;;;;;;12304:30;;12139:203;;;:::o;12791:402::-;12890:12;3466:6;;;;;;;;;;;3465:7;3457:16;;;;;;;;12953:6;12929:8;:20;12938:10;12929:20;;;;;;;;;;;;;;;;:30;;12920:40;;;;;;;;12980:13;:25;12994:10;12980:25;;;;;;;;;;;;;;;;;;;;;;;;;12979:26;12971:35;;;;;;;;13040:32;13065:6;13040:8;:20;13049:10;13040:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13017:8;:20;13026:10;13017:20;;;;;;;;;;;;;;;:55;;;;13099:6;13083:12;;:22;;;;;;;;;;;13152:1;13123:40;;13132:10;13123:40;;;13156:6;13123:40;;;;;;;;;;;;;;;;;;13181:4;13174:11;;12791:402;;;:::o;15169:298::-;15254:14;15327:9;15295:14;15305:3;15295:9;:14::i;:::-;15286:23;;15339:1;15327:13;;15322:138;15346:10;:15;15357:3;15346:15;;;;;;;;;;;;;;;:22;;;;15342:1;:26;15322:138;;;15399:49;15410:37;15423:3;15428:10;:15;15439:3;15428:15;;;;;;;;;;;;;;;15444:1;15428:18;;;;;;;;;;;;;;;;;;15410:12;:37::i;:::-;15399:6;:10;;:49;;;;:::i;:::-;15390:58;;15370:3;;;;;;;15322:138;;;15169:298;;;;:::o;14029:639::-;14174:4;14196:18;3466:6;;;;;;;;;;;3465:7;3457:16;;;;;;;;14217:14;14225:5;14217:3;:7;;:14;;;;:::i;:::-;14196:35;;14305:1;14275:26;14288:3;14293:7;14275:12;:26::i;:::-;:31;14308:14;;;;;;;;;;;;;;;;;;14267:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14267:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14353:1;14342:7;:12;;14356:11;;;;;;;;;;;;;;;;;;14334:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14334:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14416:1;14385:6;:11;14392:3;14385:11;;;;;;;;;;;;;;;:20;14397:7;14385:20;;;;;;;;;;;;;;;;;:27;;;:32;14381:80;;;14432:10;:15;14443:3;14432:15;;;;;;;;;;;;;;;14453:7;14432:29;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;14432:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14381:80;14474:32;14491:4;14498:7;14474:8;:32::i;:::-;;14542:37;;;;;;;;;14552:7;14542:37;;;;14561:10;14542:37;;;;14573:5;14542:37;;;;;14519:6;:11;14526:3;14519:11;;;;;;;;;;;;;;;:20;14531:7;14519:20;;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14609:7;14597:41;;;14604:3;14597:41;;;14618:7;14627:10;14597:41;;;;;;;;;;;;;;;;;;;;;;;;14656:4;14649:11;;14029:639;;;;;;;:::o;16417:291::-;16521:14;16590:3;16557:6;:11;16564:3;16557:11;;;;;;;;;;;;;;;:20;16569:7;16557:20;;;;;;;;;;;;;;;;;:29;;;:36;;:69;;;;;16598:6;:11;16605:3;16598:11;;;;;;;;;;;;;;;:20;16610:7;16598:20;;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;16597:29;16557:69;16553:147;;;16673:6;:11;16680:3;16673:11;;;;;;;;;;;;;;;:20;16685:7;16673:20;;;;;;;;;;;;;;;;;:27;;;16664:36;;16553:147;16417:291;;;;:::o;3392:26::-;;;;;;;;;;;;;:::o;14676:224::-;14776:14;14813:6;:11;14820:3;14813:11;;;;;;;;;;;;;;;:20;14825:7;14813:20;;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;14812:29;14808:84;;;14865:6;:11;14872:3;14865:11;;;;;;;;;;;;;;;:20;14877:7;14865:20;;;;;;;;;;;;;;;;;:27;;;14856:36;;14808:84;14676:224;;;;:::o;10572:200::-;10667:17;10722:3;10710:8;:15;;;;10702:24;;;;;;;;10746:8;:18;10755:8;10746:18;;;;;;;;;;;;;;;;10739:25;;10572:200;;;:::o;3957:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2072:275::-;2154:8;;;;;;;;;;;2140:22;;:10;:22;;;2132:31;;;;;;;;2184:8;;;;;;;;;;;2176:5;;:16;;;;;;;;;;;;;;;;;;2222:1;2203:8;;:21;;;;;;;;;;;;;;;;;;2235:13;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2320:8;;;;;;;;;;;2268:71;;2300:5;;;;;;;;;;;2268:71;;;;;;;;;;;;2072:275::o;15921:488::-;16040:4;3466:6;;;;;;;;;;;3465:7;3457:16;;;;;;;;16106:1;16070:33;16083:10;16095:7;16070:12;:33::i;:::-;:37;16109:10;;;;;;;;;;;;;;;;;;16062:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;16062:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16131:32;16148:4;16155:7;16131:8;:32::i;:::-;;16213:47;16252:7;16213:6;:18;16220:10;16213:18;;;;;;;;;;;;;;;:27;16232:7;16213:27;;;;;;;;;;;;;;;;;:34;;;:38;;:47;;;;:::i;:::-;16176:6;:18;16183:10;16176:18;;;;;;;;;;;;;;;:27;16195:7;16176:27;;;;;;;;;;;;;;;;;:34;;:84;;;;16297:7;16278:101;;;16285:10;16278:101;;;16306:6;:18;16313:10;16306:18;;;;;;;;;;;;;;;:27;16325:7;16306:27;;;;;;;;;;;;;;;;;:34;;;16342:6;:18;16349:10;16342:18;;;;;;;;;;;;;;;:27;16361:7;16342:27;;;;;;;;;;;;;;;;;:36;;;16278:101;;;;;;;;;;;;;;;;;;;;;;;;16397:4;16390:11;;15921:488;;;;:::o;3557:93::-;1386:5;;;;;;;;;;;1372:19;;:10;:19;;;1364:28;;;;;;;;3466:6;;;;;;;;;;;3465:7;3457:16;;;;;;;;3621:4;3612:6;;:13;;;;;;;;;;;;;;;;;;3637:7;;;;;;;;;;3557:93::o;1685:148::-;1781:6;1386:5;;;;;;;;;;;1372:19;;:10;:19;;;1364:28;;;;;;;;1812:13;;;;;;;;;;;1805:20;;1685:148;:::o;7722:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10780:195::-;10874:14;10926:3;10914:8;:15;;;;10906:24;;;;;;;;10950:7;:17;10958:8;10950:17;;;;;;;;;;;;;;;;10943:24;;10780:195;;;:::o;12350:433::-;12446:12;12476:17;1386:5;;;;;;;;;;;1372:19;;:10;:19;;;1364:28;;;;;;;;12511:6;12496:12;;:21;12476:41;;12581:8;;;;;;;;;;;12573:17;;12568:2;:22;8131:11;12549:41;12536:9;:54;;12528:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12657:9;12642:12;:24;;;;12696:6;12677:8;:15;12686:5;;;;;;;;;;;12677:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;12739:5;;;;;;;;;;;12718:35;;12735:1;12718:35;;;12746:6;12718:35;;;;;;;;;;;;;;;;;;12771:4;12764:11;;12350:433;;;;:::o;9586:202::-;9709:12;3466:6;;;;;;;;;;;3465:7;3457:16;;;;;;;;9746:34;9756:10;9768:3;9773:6;9746:9;:34::i;:::-;9739:41;;9586:202;;;;:::o;15476:437::-;15585:4;3466:6;;;;;;;;;;;3465:7;3457:16;;;;;;;;15651:1;15615:33;15628:10;15640:7;15615:12;:33::i;:::-;:37;15654:10;;;;;;;;;;;;;;;;;;15607:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15607:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15717:47;15758:5;15717:6;:18;15724:10;15717:18;;;;;;;;;;;;;;;:27;15736:7;15717:27;;;;;;;;;;;;;;;;;:36;;;:40;;:47;;;;:::i;:::-;15678:6;:18;15685:10;15678:18;;;;;;;;;;;;;;;:27;15697:7;15678:27;;;;;;;;;;;;;;;;;:36;;:86;;;;15801:7;15782:101;;;15789:10;15782:101;;;15810:6;:18;15817:10;15810:18;;;;;;;;;;;;;;;:27;15829:7;15810:27;;;;;;;;;;;;;;;;;:34;;;15846:6;:18;15853:10;15846:18;;;;;;;;;;;;;;;:27;15865:7;15846:27;;;;;;;;;;;;;;;;;:36;;;15782:101;;;;;;;;;;;;;;;;;;;;;;;;15901:4;15894:11;;15476:437;;;;:::o;17376:301::-;17466:24;17513:9;17525:1;17513:13;;17508:162;17532:10;:15;17543:3;17532:15;;;;;;;;;;;;;;;:22;;;;17528:1;:26;17508:162;;;17595:63;17616:41;17633:3;17638:10;:15;17649:3;17638:15;;;;;;;;;;;;;;;17654:1;17638:18;;;;;;;;;;;;;;;;;;17616:16;:41::i;:::-;17595:16;:20;;:63;;;;:::i;:::-;17576:82;;17556:3;;;;;;;17508:162;;;17376:301;;;;:::o;1563:114::-;1632:7;1664:5;;;;;;;;;;;1657:12;;1563:114;:::o;11460:398::-;11616:12;3466:6;;;;;;;;;;;3465:7;3457:16;;;;;;;;11650:25;11658:8;11668:6;11650:7;:25::i;:::-;11646:182;;;11785:4;11700:89;;11723:8;11700:48;;;11749:10;11761:6;11769:4;11775:5;11700:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11700:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11700:81:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11700:81:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11700:81:0;;;;;;;;;;;;;;;;:89;;;11692:98;;;;;;;;11812:4;11805:11;;;;11646:182;11845:5;11838:12;;3480:1;11460:398;;;;;:::o;4303:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11189:263::-;11309:17;11362:3;11352:6;:13;;;;11344:22;;;;;;;;11397:3;11385:8;:15;;;;11377:24;;;;;;;;11419:7;:15;11427:6;11419:15;;;;;;;;;;;;;;;:25;11435:8;11419:25;;;;;;;;;;;;;;;;11412:32;;11189:263;;;;:::o;10983:198::-;11078:15;11131:3;11119:8;:15;;;;11111:24;;;;;;;;11155:8;:18;11164:8;11155:18;;;;;;;;;;;;;;;;11148:25;;10983:198;;;:::o;11866:265::-;11992:12;1386:5;;;;;;;;;;;1372:19;;:10;:19;;;1364:28;;;;;;;;12048:6;12022:13;:23;12036:8;12022:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12070:31;12084:8;12094:6;12070:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12119:4;12112:11;;11866:265;;;;:::o;1420:135::-;1386:5;;;;;;;;;;;1372:19;;:10;:19;;;1364:28;;;;;;;;1538:9;1527:8;;:20;;;;;;;;;;;;;;;;;;1420:135;:::o;2559:173::-;2662:9;2702:1;2697;:6;;2689:15;;;;;;;;2723:1;2719;:5;2715:9;;2559:173;;;;:::o;8979:599::-;9106:12;9152:3;9145;:10;;;;9136:20;;;;;;;;9195:6;9176:8;:15;9185:5;9176:15;;;;;;;;;;;;;;;;:25;;9167:35;;;;;;;;9222:13;:20;9236:5;9222:20;;;;;;;;;;;;;;;;;;;;;;;;;9221:21;9213:30;;;;;;;;9263:13;:18;9277:3;9263:18;;;;;;;;;;;;;;;;;;;;;;;;;9262:19;9254:28;;;;;;;;9313:27;9333:6;9313:8;:15;9322:5;9313:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9295:8;:15;9304:5;9295:15;;;;;;;;;;;;;;;:45;;;;9367:25;9385:6;9367:8;:13;9376:3;9367:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;9351:8;:13;9360:3;9351:13;;;;;;;;;;;;;;;:41;;;;9420:24;9437:6;9420:7;:12;9428:3;9420:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;9405:7;:12;9413:3;9405:12;;;;;;;;;;;;;;;:39;;;;9473:27;9493:6;9473:8;:15;9482:5;9473:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9455:8;:15;9464:5;9455:15;;;;;;;;;;;;;;;:45;;;;9534:3;9518:28;;9527:5;9518:28;;;9539:6;9518:28;;;;;;;;;;;;;;;;;;9566:4;9559:11;;8979:599;;;;;:::o;2378:173::-;2481:9;2516:1;2512;:5;2508:9;;2541:1;2536;:6;;2528:15;;;;;;;;2378:173;;;;:::o
Swarm Source
bzzr://0fea733077a85a837bf692f0e146124919669e05f06d0ff1f4d155a35b3dd8c5
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.