Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- SOPToken
- Optimization enabled
- true
- Compiler version
- v0.4.20+commit.3155dd80
- Optimization runs
- 200
- Verified at
- 2026-02-28T23:35:27.572060Z
Constructor Arguments
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000b2d05e000000000000000000000000000000000000000000000000000000000000000005536f5061790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003534f500000000000000000000000000000000000000000000000000000000000
Arg [0] (string) : SoPay
Arg [1] (string) : SOP
Arg [2] (uint256) : 3000000000
SOPToken.sol
pragma solidity ^0.4.18;
contract ERC20 {
// function totalSupply() public constant returns (uint supply);
// function balanceOf(address who) public constant returns (uint value);
// function allowance(address owner, address spender) public constant returns (uint _allowance);
function transfer(address to, uint value) public returns (bool success);
function transferFrom(address from, address to, uint value) public returns (bool success);
function approve(address spender, uint value) public returns (bool success);
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
}
/**
* Math operations with safety checks
*/
contract SafeMath {
function mul(uint a, uint b) internal pure returns (uint) {
uint c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function div(uint a, uint b) internal pure returns (uint) {
assert(b > 0);
return a / b;
}
function sub(uint a, uint b) internal pure returns (uint) {
assert(b <= a);
return a - b;
}
function add(uint a, uint b) internal pure returns (uint) {
uint c = a + b;
assert(c >= a && c >= b);
return c;
}
function min(uint x, uint y) internal pure returns (uint) {
return x <= y ? x : y;
}
function max(uint x, uint y) internal pure returns (uint) {
return x >= y ? x : y;
}
}
contract Owned {
address public owner;
function Owned() public {
owner = msg.sender;
}
modifier onlyOwner {
require(msg.sender == owner);
_;
}
function transferOwnership(address newOwner) onlyOwner public {
owner = newOwner;
}
}
contract SOPToken is ERC20, SafeMath, Owned {
// Public variables of the token
string public name;
string public symbol;
uint8 public decimals = 18;
// 18 decimals is the strongly suggested default, avoid changing it
uint public totalSupply;
// This creates an array with all balances
mapping(address => uint) public balanceOf;
mapping(address => mapping(address => uint)) public allowance;
mapping(address=>uint) public lock;
mapping(address=>bool) public freezeIn;
mapping(address=>bool) public freezeOut;
//event definitions
/* This notifies clients about the amount burnt */
event Burn(address indexed from, uint value);
event FreezeIn(address[] indexed from, bool value);
event FreezeOut(address[] indexed from, bool value);
function SOPToken(string tokenName, string tokenSymbol, uint initSupply) public {
totalSupply=initSupply*10**uint(decimals); //update total supply
name=tokenName;
symbol=tokenSymbol;
balanceOf[owner]=totalSupply; //give the owner all initial tokens
}
//ERC 20
///////////////////////////////////////////////////////////////////////////////////////////
function internalTransfer(address from, address toaddr, uint value) internal {
require(toaddr!=0);
require(balanceOf[from]>=value);
require(now>=lock[from]);
require(!freezeIn[toaddr]);
require(!freezeOut[from]);
balanceOf[from]=sub(balanceOf[from], value);
balanceOf[toaddr]=add(balanceOf[toaddr], value);
Transfer(from, toaddr, value);
}
function transfer(address toaddr, uint value) public returns (bool) {
internalTransfer(msg.sender, toaddr, value);
return true;
}
function transferFrom(address from, address toaddr, uint value) public returns (bool) {
require(allowance[from][msg.sender]>=value);
allowance[from][msg.sender]=sub(allowance[from][msg.sender], value);
internalTransfer(from, toaddr, value);
return true;
}
function approve(address spender, uint amount) public returns (bool) {
require((amount == 0) || (allowance[msg.sender][spender] == 0));
allowance[msg.sender][spender]=amount;
Approval(msg.sender, spender, amount);
return true;
}
/////////////////////////////////////////////////////////////////////////////////////////
function setNameSymbol(string tokenName, string tokenSymbol) public onlyOwner {
name=tokenName;
symbol=tokenSymbol;
}
////////////////////////////////////////////////////////////////////////////////////////////
function setLock(address[] addrs, uint[] times) public onlyOwner {
require(addrs.length==times.length);
for (uint i=0; i<addrs.length; i++) {
lock[addrs[i]]=times[i];
}
}
function setFreezeIn(address[] addrs, bool value) public onlyOwner {
for (uint i=0; i<addrs.length; i++) {
freezeIn[addrs[i]]=value;
}
FreezeIn(addrs, value);
}
function setFreezeOut(address[] addrs, bool value) public onlyOwner {
for (uint i=0; i<addrs.length; i++) {
freezeOut[addrs[i]]=value;
}
FreezeOut(addrs, value);
}
///////////////////////////////////////////////////////////////////////////////////////////
function mint(uint amount) public onlyOwner {
balanceOf[owner]=add(balanceOf[owner], amount);
totalSupply=add(totalSupply, amount);
}
function burn(uint amount) public {
balanceOf[msg.sender]=sub(balanceOf[msg.sender], amount);
totalSupply=sub(totalSupply, amount);
Burn(msg.sender, amount);
}
///////////////////////////////////////////////////////////////////////////////////////////
function withdrawEther(uint amount) public onlyOwner {
owner.transfer(amount);
}
// can accept ether
function() public payable {
}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":true},"libraries":{},"compilationTarget":{"SOPToken.sol":"SOPToken"}}
Contract ABI
[{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":""}],"name":"name","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"approve","inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"amount"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transferFrom","inputs":[{"type":"address","name":"from"},{"type":"address","name":"toaddr"},{"type":"uint256","name":"value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint8","name":""}],"name":"decimals","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"withdrawEther","inputs":[{"type":"uint256","name":"amount"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"setLock","inputs":[{"type":"address[]","name":"addrs"},{"type":"uint256[]","name":"times"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"setFreezeOut","inputs":[{"type":"address[]","name":"addrs"},{"type":"bool","name":"value"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"burn","inputs":[{"type":"uint256","name":"amount"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"setNameSymbol","inputs":[{"type":"string","name":"tokenName"},{"type":"string","name":"tokenSymbol"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"balanceOf","inputs":[{"type":"address","name":""}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"owner","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":""}],"name":"symbol","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"freezeIn","inputs":[{"type":"address","name":""}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"mint","inputs":[{"type":"uint256","name":"amount"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transfer","inputs":[{"type":"address","name":"toaddr"},{"type":"uint256","name":"value"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"setFreezeIn","inputs":[{"type":"address[]","name":"addrs"},{"type":"bool","name":"value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"freezeOut","inputs":[{"type":"address","name":""}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"allowance","inputs":[{"type":"address","name":""},{"type":"address","name":""}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"lock","inputs":[{"type":"address","name":""}],"constant":true},{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[{"type":"string","name":"tokenName"},{"type":"string","name":"tokenSymbol"},{"type":"uint256","name":"initSupply"}]},{"type":"fallback","stateMutability":"payable","payable":true},{"type":"event","name":"Burn","inputs":[{"type":"address","name":"from","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"FreezeIn","inputs":[{"type":"address[]","name":"from","indexed":true},{"type":"bool","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"FreezeOut","inputs":[{"type":"address[]","name":"from","indexed":true},{"type":"bool","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false}]
Contract Creation Code
0x60606040526003805460ff19166012179055341561001c57600080fd5b60405162001072380380620010728339810160405280805182019190602001805182019190602001805160008054600160a060020a03191633600160a060020a031617905560035460ff16600a0a81026004559150600190508380516100869291602001906100c0565b50600282805161009a9291602001906100c0565b505060045460008054600160a060020a03168152600560205260409020555061015b9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010157805160ff191683800117855561012e565b8280016001018555821561012e579182015b8281111561012e578251825591602001919060010190610113565b5061013a92915061013e565b5090565b61015891905b8082111561013a5760008155600101610144565b90565b610f07806200016b6000396000f30060606040526004361061011c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461011e578063095ea7b3146101a857806318160ddd146101de57806323b872dd14610203578063313ce5671461022b5780633bed33ce146102545780633d7240271461026a57806340fe90d0146102f957806342966c681461034c578063504334c21461036257806370a08231146103f55780638da5cb5b1461041457806395d89b41146104435780639cf568c614610456578063a0712d6814610475578063a9059cbb1461048b578063b0c39bbd146104ad578063b81180a314610500578063dd62ed3e1461051f578063f2fde38b14610544578063f435f5a714610563575b005b341561012957600080fd5b610131610582565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561016d578082015183820152602001610155565b50505050905090810190601f16801561019a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101b357600080fd5b6101ca600160a060020a0360043516602435610620565b604051901515815260200160405180910390f35b34156101e957600080fd5b6101f16106c6565b60405190815260200160405180910390f35b341561020e57600080fd5b6101ca600160a060020a03600435811690602435166044356106cc565b341561023657600080fd5b61023e61076f565b60405160ff909116815260200160405180910390f35b341561025f57600080fd5b61011c600435610778565b341561027557600080fd5b61011c6004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506107c995505050505050565b341561030457600080fd5b61011c60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496505050509135151591506108579050565b341561035757600080fd5b61011c600435610945565b341561036d57600080fd5b61011c60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506109d195505050505050565b341561040057600080fd5b6101f1600160a060020a0360043516610a13565b341561041f57600080fd5b610427610a25565b604051600160a060020a03909116815260200160405180910390f35b341561044e57600080fd5b610131610a34565b341561046157600080fd5b6101ca600160a060020a0360043516610a9f565b341561048057600080fd5b61011c600435610ab4565b341561049657600080fd5b6101ca600160a060020a0360043516602435610b1e565b34156104b857600080fd5b61011c6004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650505050913515159150610b349050565b341561050b57600080fd5b6101ca600160a060020a0360043516610c22565b341561052a57600080fd5b6101f1600160a060020a0360043581169060243516610c37565b341561054f57600080fd5b61011c600160a060020a0360043516610c54565b341561056e57600080fd5b6101f1600160a060020a0360043516610c9e565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106185780601f106105ed57610100808354040283529160200191610618565b820191906000526020600020905b8154815290600101906020018083116105fb57829003601f168201915b505050505081565b60008115806106525750600160a060020a03338116600090815260066020908152604080832093871683529290522054155b151561065d57600080fd5b600160a060020a03338116600081815260066020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60045481565b600160a060020a038084166000908152600660209081526040808320339094168352929052908120548290101561070257600080fd5b600160a060020a03808516600090815260066020908152604080832033909416835292905220546107339083610cb0565b600160a060020a0380861660009081526006602090815260408083203390941683529290522055610765848484610cc2565b5060019392505050565b60035460ff1681565b60005433600160a060020a0390811691161461079357600080fd5b600054600160a060020a031681156108fc0282604051600060405180830381858888f1935050505015156107c657600080fd5b50565b6000805433600160a060020a039081169116146107e557600080fd5b81518351146107f357600080fd5b5060005b82518110156108525781818151811061080c57fe5b906020019060200201516007600085848151811061082657fe5b90602001906020020151600160a060020a031681526020810191909152604001600020556001016107f7565b505050565b6000805433600160a060020a0390811691161461087357600080fd5b5060005b82518110156108cb57816009600085848151811061089157fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff1916911515919091179055600101610877565b8260405180828051906020019060200280838360005b838110156108f95780820151838201526020016108e1565b5050505090500191505060405180910390207f43654ecda0d123d59e6228d89cb8c1d65fe882ffb98133e49887736fcbbaed8583604051901515815260200160405180910390a2505050565b600160a060020a0333166000908152600560205260409020546109689082610cb0565b600160a060020a03331660009081526005602052604090205560045461098e9082610cb0565b600455600160a060020a0333167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405190815260200160405180910390a250565b60005433600160a060020a039081169116146109ec57600080fd5b60018280516109ff929160200190610e40565b506002818051610852929160200190610e40565b60056020526000908152604090205481565b600054600160a060020a031681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106185780601f106105ed57610100808354040283529160200191610618565b60086020526000908152604090205460ff1681565b60005433600160a060020a03908116911614610acf57600080fd5b60008054600160a060020a0316815260056020526040902054610af29082610e1c565b60008054600160a060020a0316815260056020526040902055600454610b189082610e1c565b60045550565b6000610b2b338484610cc2565b50600192915050565b6000805433600160a060020a03908116911614610b5057600080fd5b5060005b8251811015610ba8578160086000858481518110610b6e57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff1916911515919091179055600101610b54565b8260405180828051906020019060200280838360005b83811015610bd6578082015183820152602001610bbe565b5050505090500191505060405180910390207f110963bb3f5926815efaa21791f13d2e45cd09ee5a9903b7ef413526eb9acef183604051901515815260200160405180910390a2505050565b60096020526000908152604090205460ff1681565b600660209081526000928352604080842090915290825290205481565b60005433600160a060020a03908116911614610c6f57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60076020526000908152604090205481565b600082821115610cbc57fe5b50900390565b600160a060020a0382161515610cd757600080fd5b600160a060020a03831660009081526005602052604090205481901015610cfd57600080fd5b600160a060020a038316600090815260076020526040902054421015610d2257600080fd5b600160a060020a03821660009081526008602052604090205460ff1615610d4857600080fd5b600160a060020a03831660009081526009602052604090205460ff1615610d6e57600080fd5b600160a060020a038316600090815260056020526040902054610d919082610cb0565b600160a060020a038085166000908152600560205260408082209390935590841681522054610dc09082610e1c565b600160a060020a03808416600081815260056020526040908190209390935591908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a3505050565b6000828201838110801590610e315750828110155b1515610e3957fe5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e8157805160ff1916838001178555610eae565b82800160010185558215610eae579182015b82811115610eae578251825591602001919060010190610e93565b50610eba929150610ebe565b5090565b610ed891905b80821115610eba5760008155600101610ec4565b905600a165627a7a72305820a72a7f1eccf87b353f1bf3325c4d89a1e185409e215499380a7c4c9ccc367b180029000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000b2d05e000000000000000000000000000000000000000000000000000000000000000005536f5061790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003534f500000000000000000000000000000000000000000000000000000000000
Deployed ByteCode
0x60606040526004361061011c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461011e578063095ea7b3146101a857806318160ddd146101de57806323b872dd14610203578063313ce5671461022b5780633bed33ce146102545780633d7240271461026a57806340fe90d0146102f957806342966c681461034c578063504334c21461036257806370a08231146103f55780638da5cb5b1461041457806395d89b41146104435780639cf568c614610456578063a0712d6814610475578063a9059cbb1461048b578063b0c39bbd146104ad578063b81180a314610500578063dd62ed3e1461051f578063f2fde38b14610544578063f435f5a714610563575b005b341561012957600080fd5b610131610582565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561016d578082015183820152602001610155565b50505050905090810190601f16801561019a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101b357600080fd5b6101ca600160a060020a0360043516602435610620565b604051901515815260200160405180910390f35b34156101e957600080fd5b6101f16106c6565b60405190815260200160405180910390f35b341561020e57600080fd5b6101ca600160a060020a03600435811690602435166044356106cc565b341561023657600080fd5b61023e61076f565b60405160ff909116815260200160405180910390f35b341561025f57600080fd5b61011c600435610778565b341561027557600080fd5b61011c6004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506107c995505050505050565b341561030457600080fd5b61011c60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496505050509135151591506108579050565b341561035757600080fd5b61011c600435610945565b341561036d57600080fd5b61011c60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506109d195505050505050565b341561040057600080fd5b6101f1600160a060020a0360043516610a13565b341561041f57600080fd5b610427610a25565b604051600160a060020a03909116815260200160405180910390f35b341561044e57600080fd5b610131610a34565b341561046157600080fd5b6101ca600160a060020a0360043516610a9f565b341561048057600080fd5b61011c600435610ab4565b341561049657600080fd5b6101ca600160a060020a0360043516602435610b1e565b34156104b857600080fd5b61011c6004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650505050913515159150610b349050565b341561050b57600080fd5b6101ca600160a060020a0360043516610c22565b341561052a57600080fd5b6101f1600160a060020a0360043581169060243516610c37565b341561054f57600080fd5b61011c600160a060020a0360043516610c54565b341561056e57600080fd5b6101f1600160a060020a0360043516610c9e565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106185780601f106105ed57610100808354040283529160200191610618565b820191906000526020600020905b8154815290600101906020018083116105fb57829003601f168201915b505050505081565b60008115806106525750600160a060020a03338116600090815260066020908152604080832093871683529290522054155b151561065d57600080fd5b600160a060020a03338116600081815260066020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60045481565b600160a060020a038084166000908152600660209081526040808320339094168352929052908120548290101561070257600080fd5b600160a060020a03808516600090815260066020908152604080832033909416835292905220546107339083610cb0565b600160a060020a0380861660009081526006602090815260408083203390941683529290522055610765848484610cc2565b5060019392505050565b60035460ff1681565b60005433600160a060020a0390811691161461079357600080fd5b600054600160a060020a031681156108fc0282604051600060405180830381858888f1935050505015156107c657600080fd5b50565b6000805433600160a060020a039081169116146107e557600080fd5b81518351146107f357600080fd5b5060005b82518110156108525781818151811061080c57fe5b906020019060200201516007600085848151811061082657fe5b90602001906020020151600160a060020a031681526020810191909152604001600020556001016107f7565b505050565b6000805433600160a060020a0390811691161461087357600080fd5b5060005b82518110156108cb57816009600085848151811061089157fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff1916911515919091179055600101610877565b8260405180828051906020019060200280838360005b838110156108f95780820151838201526020016108e1565b5050505090500191505060405180910390207f43654ecda0d123d59e6228d89cb8c1d65fe882ffb98133e49887736fcbbaed8583604051901515815260200160405180910390a2505050565b600160a060020a0333166000908152600560205260409020546109689082610cb0565b600160a060020a03331660009081526005602052604090205560045461098e9082610cb0565b600455600160a060020a0333167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405190815260200160405180910390a250565b60005433600160a060020a039081169116146109ec57600080fd5b60018280516109ff929160200190610e40565b506002818051610852929160200190610e40565b60056020526000908152604090205481565b600054600160a060020a031681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106185780601f106105ed57610100808354040283529160200191610618565b60086020526000908152604090205460ff1681565b60005433600160a060020a03908116911614610acf57600080fd5b60008054600160a060020a0316815260056020526040902054610af29082610e1c565b60008054600160a060020a0316815260056020526040902055600454610b189082610e1c565b60045550565b6000610b2b338484610cc2565b50600192915050565b6000805433600160a060020a03908116911614610b5057600080fd5b5060005b8251811015610ba8578160086000858481518110610b6e57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff1916911515919091179055600101610b54565b8260405180828051906020019060200280838360005b83811015610bd6578082015183820152602001610bbe565b5050505090500191505060405180910390207f110963bb3f5926815efaa21791f13d2e45cd09ee5a9903b7ef413526eb9acef183604051901515815260200160405180910390a2505050565b60096020526000908152604090205460ff1681565b600660209081526000928352604080842090915290825290205481565b60005433600160a060020a03908116911614610c6f57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60076020526000908152604090205481565b600082821115610cbc57fe5b50900390565b600160a060020a0382161515610cd757600080fd5b600160a060020a03831660009081526005602052604090205481901015610cfd57600080fd5b600160a060020a038316600090815260076020526040902054421015610d2257600080fd5b600160a060020a03821660009081526008602052604090205460ff1615610d4857600080fd5b600160a060020a03831660009081526009602052604090205460ff1615610d6e57600080fd5b600160a060020a038316600090815260056020526040902054610d919082610cb0565b600160a060020a038085166000908152600560205260408082209390935590841681522054610dc09082610e1c565b600160a060020a03808416600081815260056020526040908190209390935591908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a3505050565b6000828201838110801590610e315750828110155b1515610e3957fe5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e8157805160ff1916838001178555610eae565b82800160010185558215610eae579182015b82811115610eae578251825591602001919060010190610e93565b50610eba929150610ebe565b5090565b610ed891905b80821115610eba5760008155600101610ec4565b905600a165627a7a72305820a72a7f1eccf87b353f1bf3325c4d89a1e185409e215499380a7c4c9ccc367b180029