TokenMaker.app contract has migrated to a new address.
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
OVERVIEW
The legacy contract for TokenMaker.app.
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
TokenMaker
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-03-01 */ pragma solidity ^0.4.24; //ERC20 contract ERC20Ownable { address public owner; function ERC20Ownable() public{ owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address newOwner) onlyOwner public{ if (newOwner != address(0)) { owner = newOwner; } } } contract ERC20 { function transfer(address to, uint256 value) public returns (bool); function balanceOf(address who) public view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); } contract ERC20Token is ERC20,ERC20Ownable { mapping (address => uint256) balances; mapping (address => mapping (address => uint256)) allowed; event Transfer( address indexed _from, address indexed _to, uint256 _value ); event Approval( address indexed _owner, address indexed _spender, uint256 _value ); //Fix for short address attack against ERC20 modifier onlyPayloadSize(uint size) { assert(msg.data.length == size + 4); _; } function balanceOf(address _owner) constant public returns (uint256) { return balances[_owner]; } function transfer(address _to, uint256 _value) onlyPayloadSize(2*32) public returns (bool){ require(balances[msg.sender] >= _value && _value > 0); balances[msg.sender] -= _value; balances[_to] += _value; emit Transfer(msg.sender, _to, _value); return true; } function transferFrom(address _from, address _to, uint256 _value) public { require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0); balances[_to] += _value; balances[_from] -= _value; allowed[_from][msg.sender] -= _value; emit Transfer(_from, _to, _value); } function approve(address _spender, uint256 _value) public { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); } /* Approves and then calls the receiving contract */ function approveAndCall(address _spender, uint256 _value, bytes _extraData) public returns (bool success) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); //call the receiveApproval function on the contract you want to be notified. This crafts the function signature manually so one doesn't have to include a contract in here just for this. //receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData) //it is assumed that when does this that the call *should* succeed, otherwise one would use vanilla approve instead. //require(_spender.call(bytes4(keccak256("receiveApproval(address,uint256,address,bytes)")), abi.encode(msg.sender, _value, this, _extraData))); require(_spender.call(abi.encodeWithSelector(bytes4(keccak256("receiveApproval(address,uint256,address,bytes)")),msg.sender, _value, this, _extraData))); return true; } function allowance(address _owner, address _spender) constant public returns (uint256) { return allowed[_owner][_spender]; } } contract ERC20StandardToken is ERC20Token { uint256 public totalSupply; string public name; uint256 public decimals; string public symbol; bool public mintable; function ERC20StandardToken(address _owner, string _name, string _symbol, uint256 _decimals, uint256 _totalSupply, bool _mintable) public { require(_owner != address(0)); owner = _owner; decimals = _decimals; symbol = _symbol; name = _name; mintable = _mintable; totalSupply = _totalSupply; balances[_owner] = totalSupply; } function mint(uint256 amount) onlyOwner public { require(mintable); require(amount >= 0); balances[msg.sender] += amount; totalSupply += amount; } function burn(uint256 _value) onlyOwner public returns (bool) { require(balances[msg.sender] >= _value && totalSupply >=_value && _value > 0); balances[msg.sender] -= _value; totalSupply -= _value; emit Transfer(msg.sender, 0x0, _value); return true; } } pragma solidity ^0.4.24; //ERC223 contract ERC223Ownable { address public owner; function ERC223Ownable() public{ owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address newOwner) onlyOwner public{ if (newOwner != address(0)) { owner = newOwner; } } } contract ContractReceiver { struct TKN { address sender; uint value; bytes data; bytes4 sig; } function tokenFallback(address _from, uint _value, bytes _data) public pure { TKN memory tkn; tkn.sender = _from; tkn.value = _value; tkn.data = _data; uint32 u = uint32(_data[3]) + (uint32(_data[2]) << 8) + (uint32(_data[1]) << 16) + (uint32(_data[0]) << 24); tkn.sig = bytes4(u); /* tkn variable is analogue of msg variable of Ether transaction * tkn.sender is person who initiated this token transaction (analogue of msg.sender) * tkn.value the number of tokens that were sent (analogue of msg.value) * tkn.data is data of token transaction (analogue of msg.data) * tkn.sig is 4 bytes signature of function * if data of token transaction is a function execution */ } } contract ERC223 { uint public totalSupply; function balanceOf(address who) public view returns (uint); function transfer(address to, uint value) public returns (bool ok); function transfer(address to, uint value, bytes data) public returns (bool ok); function transfer(address to, uint value, bytes data, string custom_fallback) public returns (bool ok); event Transfer(address indexed from, address indexed to, uint value); event Transfer(address indexed from, address indexed to, uint value, bytes data); } contract SafeMath { uint256 constant public MAX_UINT256 = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF; function safeAdd(uint256 x, uint256 y) pure internal returns (uint256 z) { if (x > MAX_UINT256 - y) revert(); return x + y; } function safeSub(uint256 x, uint256 y) pure internal returns (uint256 z) { if (x < y) revert(); return x - y; } function safeMul(uint256 x, uint256 y) pure internal returns (uint256 z) { if (y == 0) return 0; if (x > MAX_UINT256 / y) revert(); return x * y; } } contract ERC223Token is ERC223, SafeMath { mapping(address => uint) balances; string public name; string public symbol; uint256 public decimals; uint256 public totalSupply; bool public mintable; function transfer(address _to, uint _value, bytes _data, string _custom_fallback) public returns (bool success) { if(isContract(_to)) { if (balanceOf(msg.sender) < _value) revert(); balances[msg.sender] = safeSub(balanceOf(msg.sender), _value); balances[_to] = safeAdd(balanceOf(_to), _value); assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)), msg.sender, _value, _data)); emit Transfer(msg.sender, _to, _value); emit Transfer(msg.sender, _to, _value, _data); return true; } else { return transferToAddress(_to, _value, _data); } } function transfer(address _to, uint _value, bytes _data) public returns (bool success) { if(isContract(_to)) { return transferToContract(_to, _value, _data); } else { return transferToAddress(_to, _value, _data); } } function transfer(address _to, uint _value) public returns (bool success) { //standard function transfer similar to ERC20 transfer with no _data //added due to backwards compatibility reasons bytes memory empty; if(isContract(_to)) { return transferToContract(_to, _value, empty); } else { return transferToAddress(_to, _value, empty); } } function isContract(address _addr) private view returns (bool is_contract) { uint length; assembly { //retrieve the size of the code on target address, this needs assembly length := extcodesize(_addr) } return (length>0); } function transferToAddress(address _to, uint _value, bytes _data) private returns (bool success) { if (balanceOf(msg.sender) < _value) revert(); balances[msg.sender] = safeSub(balanceOf(msg.sender), _value); balances[_to] = safeAdd(balanceOf(_to), _value); emit Transfer(msg.sender, _to, _value); emit Transfer(msg.sender, _to, _value, _data); return true; } function transferToContract(address _to, uint _value, bytes _data) private returns (bool success) { if (balanceOf(msg.sender) < _value) revert(); balances[msg.sender] = safeSub(balanceOf(msg.sender), _value); balances[_to] = safeAdd(balanceOf(_to), _value); ContractReceiver receiver = ContractReceiver(_to); receiver.tokenFallback(msg.sender, _value, _data); emit Transfer(msg.sender, _to, _value); emit Transfer(msg.sender, _to, _value, _data); return true; } function balanceOf(address _owner) public view returns (uint balance) { return balances[_owner]; } } contract ERC223StandardToken is ERC223Token,ERC223Ownable { function ERC223StandardToken(address _owner, string _name, string _symbol, uint256 _decimals, uint256 _totalSupply, bool _mintable) public { require(_owner != address(0)); owner = _owner; decimals = _decimals; symbol = _symbol; name = _name; mintable = _mintable; totalSupply = _totalSupply; balances[_owner] = totalSupply; emit Transfer(address(0), _owner, totalSupply); emit Transfer(address(0), _owner, totalSupply, ""); } function mint(uint256 amount) onlyOwner public { require(mintable); require(amount >= 0); balances[msg.sender] += amount; totalSupply += amount; } function burn(uint256 _value) onlyOwner public returns (bool) { require(balances[msg.sender] >= _value && totalSupply >=_value && _value > 0); balances[msg.sender] -= _value; totalSupply -= _value; emit Transfer(msg.sender, 0x0, _value); return true; } } pragma solidity ^0.4.24; contract Ownable { address public owner; function Ownable() public{ owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address newOwner) onlyOwner public{ if (newOwner != address(0)) { owner = newOwner; } } } //TokenMaker contract TokenMaker is Ownable{ event LogERC20TokenCreated(ERC20StandardToken token); event LogERC223TokenCreated(ERC223StandardToken token); address public receiverAddress; uint public txFee = 0.1 ether; uint public VIPFee = 1 ether; /* VIP List */ mapping(address => bool) public vipList; uint public numContracts; mapping(uint => address) public deployedContracts; mapping(address => address[]) public userDeployedContracts; function () payable public{} function getBalance(address _tokenAddress,uint _type) onlyOwner public { address _receiverAddress = getReceiverAddress(); if(_tokenAddress == address(0)){ require(_receiverAddress.send(address(this).balance)); return; } if(_type == 0){ ERC20 erc20 = ERC20(_tokenAddress); uint256 balance = erc20.balanceOf(this); erc20.transfer(_receiverAddress, balance); }else{ ERC223 erc223 = ERC223(_tokenAddress); uint256 erc223_balance = erc223.balanceOf(this); erc223.transfer(_receiverAddress, erc223_balance); } } //Register VIP function registerVIP() payable public { require(msg.value >= VIPFee); address _receiverAddress = getReceiverAddress(); require(_receiverAddress.send(msg.value)); vipList[msg.sender] = true; } function addToVIPList(address[] _vipList) onlyOwner public { for (uint i =0;i<_vipList.length;i++){ vipList[_vipList[i]] = true; } } function removeFromVIPList(address[] _vipList) onlyOwner public { for (uint i =0;i<_vipList.length;i++){ vipList[_vipList[i]] = false; } } function isVIP(address _addr) public view returns (bool) { return _addr == owner || vipList[_addr]; } function setReceiverAddress(address _addr) onlyOwner public { require(_addr != address(0)); receiverAddress = _addr; } function getReceiverAddress() public view returns (address){ if(receiverAddress == address(0)){ return owner; } return receiverAddress; } function setVIPFee(uint _fee) onlyOwner public { VIPFee = _fee; } function setTxFee(uint _fee) onlyOwner public { txFee = _fee; } function getUserCreatedTokens(address _owner) public view returns (address[]){ return userDeployedContracts[_owner]; } function create(string _name, string _symbol, uint256 _decimals, uint256 _totalSupply, bool _mintable,uint256 _type) payable public returns(address a){ //check the tx fee uint sendValue = msg.value; address from = msg.sender; bool vip = isVIP(from); if(!vip){ require(sendValue >= txFee); } address[] userAddresses = userDeployedContracts[from]; if(_type == 0){ ERC20StandardToken erc20Token = new ERC20StandardToken(from, _name, _symbol, _decimals, _totalSupply, _mintable); userAddresses.push(erc20Token); userDeployedContracts[from] = userAddresses; deployedContracts[numContracts] = erc20Token; numContracts++; emit LogERC20TokenCreated(erc20Token); return erc20Token; }else{ ERC223StandardToken erc223Token = new ERC223StandardToken(from, _name, _symbol, _decimals, _totalSupply, _mintable); userAddresses.push(erc223Token); userDeployedContracts[from] = userAddresses; deployedContracts[numContracts] = erc223Token; numContracts++; emit LogERC223TokenCreated(erc223Token); return erc223Token; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"receiverAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_type","type":"uint256"}],"name":"getBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"userDeployedContracts","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setVIPFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numContracts","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReceiverAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setReceiverAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint256"},{"name":"_totalSupply","type":"uint256"},{"name":"_mintable","type":"bool"},{"name":"_type","type":"uint256"}],"name":"create","outputs":[{"name":"a","type":"address"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"deployedContracts","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"registerVIP","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"vipList","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getUserCreatedTokens","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_vipList","type":"address[]"}],"name":"addToVIPList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"txFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setTxFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"VIPFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isVIP","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_vipList","type":"address[]"}],"name":"removeFromVIPList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"}],"name":"LogERC20TokenCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"}],"name":"LogERC223TokenCreated","type":"event"}]
Contract Creation Code
608060405267016345785d8a0000600255670de0b6b3a7640000600355336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614b4f8061006b6000396000f30060806040526004361062000127576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806316fed3e214620001295780632b04e8401462000183578063349a9d3f14620001d35780633d06242a1462000263578063524d81d31462000293578063531ebce514620002c15780638279c7db146200031b5780638da5cb5b14620003615780639817d81f14620003bb5780639ad1ee1014620004c95780639c1f61331462000539578063aa168b471462000545578063c00be1a014620005a3578063c8813ffd1462000640578063cf82046114620006a9578063f05d16f714620006d7578063f0a0a2991462000707578063f2fde38b1462000735578063f4201c3c146200077b578063f48d11af14620007d9575b005b3480156200013657600080fd5b506200014162000842565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200019057600080fd5b50620001d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062000868565b005b348015620001e057600080fd5b5062000221600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062000d07565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200027057600080fd5b50620002916004803603810190808035906020019092919050505062000d55565b005b348015620002a057600080fd5b50620002ab62000dbb565b6040518082815260200191505060405180910390f35b348015620002ce57600080fd5b50620002d962000dc1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200032857600080fd5b506200035f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000e6d565b005b3480156200036e57600080fd5b506200037962000f4a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000487600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190803590602001909291908035151590602001909291908035906020019092919050505062000f6f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620004d657600080fd5b50620004f760048036038101908080359060200190929190505050620015c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000543620015fb565b005b3480156200055257600080fd5b5062000589600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620016b7565b604051808215151515815260200191505060405180910390f35b348015620005b057600080fd5b50620005e7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620016d7565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156200062c5780820151818401526020810190506200060f565b505050509050019250505060405180910390f35b3480156200064d57600080fd5b50620006a760048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050620017a6565b005b348015620006b657600080fd5b50620006c162001895565b6040518082815260200191505060405180910390f35b348015620006e457600080fd5b5062000705600480360381019080803590602001909291905050506200189b565b005b3480156200071457600080fd5b506200071f62001901565b6040518082815260200191505060405180910390f35b3480156200074257600080fd5b5062000779600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001907565b005b3480156200078857600080fd5b50620007bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620019de565b604051808215151515815260200191505060405180910390f35b348015620007e657600080fd5b50620008406004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505062001a8c565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620008cc57600080fd5b620008d662000dc1565b9450600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156200096c578473ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156200096657600080fd5b62000cfe565b600086141562000b3c578693508373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801562000a1557600080fd5b505af115801562000a2a573d6000803e3d6000fd5b505050506040513d602081101562000a4157600080fd5b810190808051906020019092919050505092508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801562000af857600080fd5b505af115801562000b0d573d6000803e3d6000fd5b505050506040513d602081101562000b2457600080fd5b81019080805190602001909291905050505062000cfd565b8691508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801562000bdb57600080fd5b505af115801562000bf0573d6000803e3d6000fd5b505050506040513d602081101562000c0757600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801562000cbe57600080fd5b505af115801562000cd3573d6000803e3d6000fd5b505050506040513d602081101562000cea57600080fd5b8101908080519060200190929190505050505b5b50505050505050565b60076020528160005260406000208181548110151562000d2357fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000db157600080fd5b8060038190555050565b60055481565b60008073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141562000e44576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000e6a565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b90565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000ec957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151562000f0657600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600034955033945062000f8b85620019de565b935083151562000fa857600254861015151562000fa757600080fd5b5b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092506000881415620012d857848d8d8d8d8d6200100362001b7b565b808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186815260200185815260200184151515158152602001838103835288818151815260200191508051906020019080838360005b838110156200108e57808201518184015260208101905062001071565b50505050905090810190601f168015620010bc5780820380516001836020036101000a031916815260200191505b50838103825287818151815260200191508051906020019080838360005b83811015620010f7578082015181840152602081019050620010da565b50505050905090810190601f168015620011255780820380516001836020036101000a031916815260200191505b5098505050505050505050604051809103906000f0801580156200114d573d6000803e3d6000fd5b509150828290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505082600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080546200120592919062001b8c565b508160066000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005600081548092919060010191905055507f55906634f205dcd28c329ca8424a22c668bf298636551c3d7d5db6d49fc4c9d582604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1819650620015b8565b848d8d8d8d8d620012e862001be3565b808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200186815260200185815260200184151515158152602001838103835288818151815260200191508051906020019080838360005b838110156200137357808201518184015260208101905062001356565b50505050905090810190601f168015620013a15780820380516001836020036101000a031916815260200191505b50838103825287818151815260200191508051906020019080838360005b83811015620013dc578082015181840152602081019050620013bf565b50505050905090810190601f1680156200140a5780820380516001836020036101000a031916815260200191505b5098505050505050505050604051809103906000f08015801562001432573d6000803e3d6000fd5b509050828190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505082600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020908054620014ea92919062001b8c565b508060066000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005600081548092919060010191905055507f466a615e5019e3c0b94007f5ec83b405746f566980f425297929c66e78297ca981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a18096505b5050505050509695505050505050565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060035434101515156200160f57600080fd5b6200161962000dc1565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156200165c57600080fd5b6001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60046020528060005260406000206000915054906101000a900460ff1681565b6060600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156200179a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116200174f575b50505050509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200180457600080fd5b600090505b8151811015620018915760016004600084848151811015156200182857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062001809565b5050565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620018f757600080fd5b8060028190555050565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200196357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515620019db57806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148062001a855750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562001aea57600080fd5b600090505b815181101562001b7757600060046000848481518110151562001b0e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062001aef565b5050565b6040516116658062001c3b83390190565b82805482825590600052602060002090810192821562001bd05760005260206000209182015b8281111562001bcf57825482559160010191906001019062001bb2565b5b50905062001bdf919062001bf4565b5090565b60405161188480620032a083390190565b62001c3791905b8082111562001c3357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162001bfb565b5090565b90560060806040523480156200001157600080fd5b506040516200166538038062001665833981018060405281019080805190602001909291908051820192919060200180518201929190602001805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614151515620000e857600080fd5b856000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600581905550836006908051906020019062000147929190620001d4565b50846004908051906020019062000160929190620001d4565b5080600760006101000a81548160ff02191690831515021790555081600381905550600354600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505062000283565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200021757805160ff191683800117855562000248565b8280016001018555821562000248579182015b82811115620002475782518255916020019190600101906200022a565b5b5090506200025791906200025b565b5090565b6200028091905b808211156200027c57600081600090555060010162000262565b5090565b90565b6113d280620002936000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e0578063095ea7b31461017057806318160ddd146101bd57806323b872dd146101e8578063313ce5671461025557806342966c68146102805780634bf365df146102c557806370a08231146102f45780638da5cb5b1461034b57806395d89b41146103a2578063a0712d6814610432578063a9059cbb1461045f578063cae9ca51146104c4578063dd62ed3e1461056f578063f2fde38b146105e6575b600080fd5b3480156100ec57600080fd5b506100f5610629565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013557808201518184015260208101905061011a565b50505050905090810190601f1680156101625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017c57600080fd5b506101bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106c7565b005b3480156101c957600080fd5b506101d26107b1565b6040518082815260200191505060405180910390f35b3480156101f457600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107b7565b005b34801561026157600080fd5b5061026a610a27565b6040518082815260200191505060405180910390f35b34801561028c57600080fd5b506102ab60048036038101908080359060200190929190505050610a2d565b604051808215151515815260200191505060405180910390f35b3480156102d157600080fd5b506102da610ba8565b604051808215151515815260200191505060405180910390f35b34801561030057600080fd5b50610335600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bbb565b6040518082815260200191505060405180910390f35b34801561035757600080fd5b50610360610c04565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103ae57600080fd5b506103b7610c29565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f75780820151818401526020810190506103dc565b50505050905090810190601f1680156104245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043e57600080fd5b5061045d60048036038101908080359060200190929190505050610cc7565b005b34801561046b57600080fd5b506104aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dad565b604051808215151515815260200191505060405180910390f35b3480156104d057600080fd5b50610555600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610f27565b604051808215151515815260200191505060405180910390f35b34801561057b57600080fd5b506105d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061124a565b6040518082815260200191505060405180910390f35b3480156105f257600080fd5b50610627600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d1565b005b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106bf5780601f10610694576101008083540402835291602001916106bf565b820191906000526020600020905b8154815290600101906020018083116106a257829003601f168201915b505050505081565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b60035481565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610882575080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561088e5750600081115b151561089957600080fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60055481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8a57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610adb57508160035410155b8015610ae75750600082115b1515610af257600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160036000828254039250508190555060003373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b600760009054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cbf5780601f10610c9457610100808354040283529160200191610cbf565b820191906000526020600020905b815481529060010190602001808311610ca257829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d2257600080fd5b600760009054906101000a900460ff161515610d3d57600080fd5b60008110151515610d4d57600080fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508060036000828254019250508190555050565b60006040600481016000369050141515610dc357fe5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610e125750600083115b1515610e1d57600080fd5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600082600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff1660405180807f72656365697665417070726f76616c28616464726573732c75696e743235362c81526020017f616464726573732c627974657329000000000000000000000000000000000000815250602e019050604051809103902033853086604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611133578082015181840152602081019050611118565b50505050905090810190601f1680156111605780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180828051906020019080838360005b838110156111f25780820151818401526020810190506111d7565b50505050905090810190601f16801561121f5780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af1915050151561123f57600080fd5b600190509392505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561132c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156113a357806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505600a165627a7a72305820d278d6ffa66445dd36c4270b2192a11f0edbb1fc177ae277dd24f99e2bda6b60002960806040523480156200001157600080fd5b50604051620018843803806200188483398101806040528101908080519060200190929190805182019291906020018051820192919060200180519060200190929190805190602001909291908051906020019092919050505033600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614151515620000e957600080fd5b85600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600481905550836003908051906020019062000149929190620002ba565b50846002908051906020019062000162929190620002ba565b5080600660006101000a81548160ff02191690831515021790555081600581905550600554600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040518082815260200191505060405180910390a38573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1660055460405180828152602001806020018281038252600081526020016020019250505060405180910390a350505050505062000369565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002fd57805160ff19168380011785556200032e565b828001600101855582156200032e579182015b828111156200032d57825182559160200191906001019062000310565b5b5090506200033d919062000341565b5090565b6200036691905b808211156200036257600081600090555060010162000348565b5090565b90565b61150b80620003796000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100d557806318160ddd14610165578063313ce5671461019057806333a581d2146101bb57806342966c68146101e65780634bf365df1461022b57806370a082311461025a5780638da5cb5b146102b157806395d89b4114610308578063a0712d6814610398578063a9059cbb146103c5578063be45fd621461042a578063f2fde38b146104d5578063f6368f8a14610518575b600080fd5b3480156100e157600080fd5b506100ea610609565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561012a57808201518184015260208101905061010f565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017157600080fd5b5061017a6106a7565b6040518082815260200191505060405180910390f35b34801561019c57600080fd5b506101a56106ad565b6040518082815260200191505060405180910390f35b3480156101c757600080fd5b506101d06106b3565b6040518082815260200191505060405180910390f35b3480156101f257600080fd5b50610211600480360381019080803590602001909291905050506106d7565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b50610240610853565b604051808215151515815260200191505060405180910390f35b34801561026657600080fd5b5061029b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610866565b6040518082815260200191505060405180910390f35b3480156102bd57600080fd5b506102c66108af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031457600080fd5b5061031d6108d5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561035d578082015181840152602081019050610342565b50505050905090810190601f16801561038a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103a457600080fd5b506103c360048036038101908080359060200190929190505050610973565b005b3480156103d157600080fd5b50610410600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a5a565b604051808215151515815260200191505060405180910390f35b34801561043657600080fd5b506104bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610a93565b604051808215151515815260200191505060405180910390f35b3480156104e157600080fd5b50610516600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aca565b005b34801561052457600080fd5b506105ef600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ba1565b604051808215151515815260200191505060405180910390f35b60028054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561069f5780601f106106745761010080835404028352916020019161069f565b820191906000526020600020905b81548152906001019060200180831161068257829003601f168201915b505050505081565b60055481565b60045481565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561073557600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561078657508160055410155b80156107925750600082115b151561079d57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160056000828254039250508190555060003373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b600660009054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561096b5780601f106109405761010080835404028352916020019161096b565b820191906000526020600020905b81548152906001019060200180831161094e57829003601f168201915b505050505081565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109cf57600080fd5b600660009054906101000a900460ff1615156109ea57600080fd5b600081101515156109fa57600080fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508060056000828254019250508190555050565b60006060610a6784610f43565b15610a7e57610a77848483610f56565b9150610a8c565b610a89848483611286565b91505b5092915050565b6000610a9e84610f43565b15610ab557610aae848484610f56565b9050610ac3565b610ac0848484611286565b90505b9392505050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b2657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b9e5780600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000610bac85610f43565b15610f2d5783610bbb33610866565b1015610bc657600080fd5b610bd8610bd233610866565b85611489565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c2d610c2786610866565b856114a3565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff166000836040518082805190602001908083835b602083101515610cbf5780518252602082019150602081019050602083039250610c9a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207c01000000000000000000000000000000000000000000000000000000009004903387876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828051906020019080838360005b83811015610da0578082015181840152602081019050610d85565b50505050905090810190601f168015610dcd5780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185885af193505050501515610ded57fe5b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ee9578082015181840152602081019050610ece565b50505050905090810190601f168015610f165780820380516001836020036101000a031916815260200191505b50935050505060405180910390a360019050610f3b565b610f38858585611286565b90505b949350505050565b600080823b905060008111915050919050565b60008083610f6333610866565b1015610f6e57600080fd5b610f80610f7a33610866565b85611489565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fd5610fcf86610866565b856114a3565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508490508073ffffffffffffffffffffffffffffffffffffffff1663c0ee0b8a3386866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156110dd5780820151818401526020810190506110c2565b50505050905090810190601f16801561110a5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561112b57600080fd5b505af115801561113f573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561123f578082015181840152602081019050611224565b50505050905090810190601f16801561126c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a360019150509392505050565b60008261129233610866565b101561129d57600080fd5b6112af6112a933610866565b84611489565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113046112fe85610866565b846114a3565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611443578082015181840152602081019050611428565b50505050905090810190601f1680156114705780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3600190509392505050565b60008183101561149857600080fd5b818303905092915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038311156114d457600080fd5b8183019050929150505600a165627a7a72305820a6a101b23735e514ffbac465ccf727368f0b1f580440b631127f5b7dfa8adb950029a165627a7a72305820e073c8e698648d18b1649b90271765e14251035707598929663ce7ff01fab0370029
Swarm Source
bzzr://e073c8e698648d18b1649b90271765e14251035707598929663ce7ff01fab037
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.