Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 14 from a total of 14 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Update List | 5084632 | 2942 days ago | IN | 0 ETH | 0.00104246 | ||||
| Update List | 5084626 | 2942 days ago | IN | 0 ETH | 0.00104246 | ||||
| Update List | 5084622 | 2942 days ago | IN | 0 ETH | 0.00104246 | ||||
| Finalize Mint | 4979565 | 2959 days ago | IN | 0 ETH | 0.00100249 | ||||
| Update List | 4979562 | 2959 days ago | IN | 0 ETH | 0.00104246 | ||||
| Finalize Mint | 4979522 | 2959 days ago | IN | 0 ETH | 0.00105222 | ||||
| Request Mint | 4979515 | 2959 days ago | IN | 0 ETH | 0.00269982 | ||||
| Claim Ownership | 4979465 | 2959 days ago | IN | 0 ETH | 0.00041334 | ||||
| Transfer Ownersh... | 4979352 | 2959 days ago | IN | 0 ETH | 0.00044009 | ||||
| Transfer Adminsh... | 4979307 | 2959 days ago | IN | 0 ETH | 0.0003635 | ||||
| Issue Claim Owne... | 4979305 | 2959 days ago | IN | 0 ETH | 0.0001874 | ||||
| Issue Claim Owne... | 4979296 | 2959 days ago | IN | 0 ETH | 0.00018528 | ||||
| Issue Claim Owne... | 4979288 | 2959 days ago | IN | 0 ETH | 0.00018528 | ||||
| Issue Claim Owne... | 4979284 | 2959 days ago | IN | 0 ETH | 0.00018528 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 10 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
|||
|---|---|---|---|---|---|---|---|---|
| Change List | 5084632 | 2942 days ago | 0 ETH | |||||
| Change List | 5084626 | 2942 days ago | 0 ETH | |||||
| Change List | 5084622 | 2942 days ago | 0 ETH | |||||
| Mint | 4979565 | 2959 days ago | 0 ETH | |||||
| Change List | 4979562 | 2959 days ago | 0 ETH | |||||
| Mint | 4979522 | 2959 days ago | 0 ETH | |||||
| Claim Ownership | 4979305 | 2959 days ago | 0 ETH | |||||
| Claim Ownership | 4979296 | 2959 days ago | 0 ETH | |||||
| Claim Ownership | 4979288 | 2959 days ago | 0 ETH | |||||
| Claim Ownership | 4979284 | 2959 days ago | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TimeLockedController
Compiler Version
v0.4.19+commit.c4cbbb05
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-01-27
*/
pragma solidity ^0.4.13;
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
function Ownable() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
contract Pausable is Ownable {
event Pause();
event Unpause();
bool public paused = false;
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*/
modifier whenNotPaused() {
require(!paused);
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*/
modifier whenPaused() {
require(paused);
_;
}
/**
* @dev called by the owner to pause, triggers stopped state
*/
function pause() onlyOwner whenNotPaused public {
paused = true;
Pause();
}
/**
* @dev called by the owner to unpause, returns to normal state
*/
function unpause() onlyOwner whenPaused public {
paused = false;
Unpause();
}
}
contract CanReclaimToken is Ownable {
using SafeERC20 for ERC20Basic;
/**
* @dev Reclaim all ERC20Basic compatible tokens
* @param token ERC20Basic The address of the token contract
*/
function reclaimToken(ERC20Basic token) external onlyOwner {
uint256 balance = token.balanceOf(this);
token.safeTransfer(owner, balance);
}
}
contract Claimable is Ownable {
address public pendingOwner;
/**
* @dev Modifier throws if called by any account other than the pendingOwner.
*/
modifier onlyPendingOwner() {
require(msg.sender == pendingOwner);
_;
}
/**
* @dev Allows the current owner to set the pendingOwner address.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) onlyOwner public {
pendingOwner = newOwner;
}
/**
* @dev Allows the pendingOwner address to finalize the transfer.
*/
function claimOwnership() onlyPendingOwner public {
OwnershipTransferred(owner, pendingOwner);
owner = pendingOwner;
pendingOwner = address(0);
}
}
contract AddressList is Claimable {
string public name;
mapping (address => bool) public onList;
function AddressList(string _name, bool nullValue) public {
name = _name;
onList[0x0] = nullValue;
}
event ChangeWhiteList(address indexed to, bool onList);
// Set whether _to is on the list or not. Whether 0x0 is on the list
// or not cannot be set here - it is set once and for all by the constructor.
function changeList(address _to, bool _onList) onlyOwner public {
require(_to != 0x0);
if (onList[_to] != _onList) {
onList[_to] = _onList;
ChangeWhiteList(_to, _onList);
}
}
}
contract HasNoContracts is Ownable {
/**
* @dev Reclaim ownership of Ownable contracts
* @param contractAddr The address of the Ownable to be reclaimed.
*/
function reclaimContract(address contractAddr) external onlyOwner {
Ownable contractInst = Ownable(contractAddr);
contractInst.transferOwnership(owner);
}
}
contract HasNoEther is Ownable {
/**
* @dev Constructor that rejects incoming Ether
* @dev The `payable` flag is added so we can access `msg.value` without compiler warning. If we
* leave out payable, then Solidity will allow inheriting contracts to implement a payable
* constructor. By doing it this way we prevent a payable constructor from working. Alternatively
* we could use assembly to access msg.value.
*/
function HasNoEther() public payable {
require(msg.value == 0);
}
/**
* @dev Disallows direct send by settings a default function without the `payable` flag.
*/
function() external {
}
/**
* @dev Transfer all Ether held by the contract to the owner.
*/
function reclaimEther() external onlyOwner {
assert(owner.send(this.balance));
}
}
contract HasNoTokens is CanReclaimToken {
/**
* @dev Reject all ERC223 compatible tokens
* @param from_ address The address that is transferring the tokens
* @param value_ uint256 the amount of the specified token
* @param data_ Bytes The data passed from the caller.
*/
function tokenFallback(address from_, uint256 value_, bytes data_) external {
from_;
value_;
data_;
revert();
}
}
contract TimeLockedController is HasNoEther, HasNoTokens, Claimable {
using SafeMath for uint256;
// 24 hours, assuming a 15 second blocktime.
// As long as this isn't too far off from reality it doesn't really matter.
uint public constant blocksDelay = 24*60*60/15;
struct MintOperation {
address to;
uint256 amount;
address admin;
uint deferBlock;
}
struct TransferOwnershipOperation {
address newOwner;
address admin;
uint deferBlock;
}
struct ChangeBurnBoundsOperation {
uint newMin;
uint newMax;
address admin;
uint deferBlock;
}
struct ChangeInsuranceFeesOperation {
uint80 _transferFeeNumerator;
uint80 _transferFeeDenominator;
uint80 _mintFeeNumerator;
uint80 _mintFeeDenominator;
uint256 _mintFeeFlat;
uint80 _burnFeeNumerator;
uint80 _burnFeeDenominator;
uint256 _burnFeeFlat;
address admin;
uint deferBlock;
}
struct ChangeInsurerOperation {
address newInsurer;
address admin;
uint deferBlock;
}
address public admin;
TrueUSD public child;
AddressList public canBurnWhiteList;
AddressList public canReceiveMintWhitelist;
AddressList public blackList;
MintOperation[] public mintOperations;
TransferOwnershipOperation public transferOwnershipOperation;
ChangeBurnBoundsOperation public changeBurnBoundsOperation;
ChangeInsuranceFeesOperation public changeInsuranceFeesOperation;
ChangeInsurerOperation public changeInsurerOperation;
modifier onlyAdminOrOwner() {
require(msg.sender == admin || msg.sender == owner);
_;
}
function computeDeferBlock() private view returns (uint) {
if (msg.sender == owner) {
return block.number;
} else {
return block.number.add(blocksDelay);
}
}
// starts with no admin
function TimeLockedController(address _child, address _canBurnWhiteList, address _canReceiveMintWhitelist, address _blackList) public {
child = TrueUSD(_child);
canBurnWhiteList = AddressList(_canBurnWhiteList);
canReceiveMintWhitelist = AddressList(_canReceiveMintWhitelist);
blackList = AddressList(_blackList);
}
event MintOperationEvent(address indexed _to, uint256 amount, uint deferBlock, uint opIndex);
event TransferOwnershipOperationEvent(address newOwner, uint deferBlock);
event ChangeBurnBoundsOperationEvent(uint newMin, uint newMax, uint deferBlock);
event ChangeInsuranceFeesOperationEvent(uint80 _transferFeeNumerator,
uint80 _transferFeeDenominator,
uint80 _mintFeeNumerator,
uint80 _mintFeeDenominator,
uint256 _mintFeeFlat,
uint80 _burnFeeNumerator,
uint80 _burnFeeDenominator,
uint256 _burnFeeFlat,
uint deferBlock);
event ChangeInsurerOperationEvent(address newInsurer, uint deferBlock);
event AdminshipTransferred(address indexed previousAdmin, address indexed newAdmin);
// admin initiates a request to mint _amount TrueUSD for account _to
function requestMint(address _to, uint256 _amount) public onlyAdminOrOwner {
uint deferBlock = computeDeferBlock();
MintOperation memory op = MintOperation(_to, _amount, admin, deferBlock);
MintOperationEvent(_to, _amount, deferBlock, mintOperations.length);
mintOperations.push(op);
}
// admin initiates a request to transfer ownership of the TrueUSD contract and all AddressLists to newOwner.
// Can be used e.g. to upgrade this TimeLockedController contract.
function requestTransferChildrenOwnership(address newOwner) public onlyAdminOrOwner {
uint deferBlock = computeDeferBlock();
transferOwnershipOperation = TransferOwnershipOperation(newOwner, admin, deferBlock);
TransferOwnershipOperationEvent(newOwner, deferBlock);
}
// admin initiates a request that the minimum and maximum amounts that any TrueUSD user can
// burn become newMin and newMax
function requestChangeBurnBounds(uint newMin, uint newMax) public onlyAdminOrOwner {
uint deferBlock = computeDeferBlock();
changeBurnBoundsOperation = ChangeBurnBoundsOperation(newMin, newMax, admin, deferBlock);
ChangeBurnBoundsOperationEvent(newMin, newMax, deferBlock);
}
// admin initiates a request that the insurance fee be changed
function requestChangeInsuranceFees(uint80 _transferFeeNumerator,
uint80 _transferFeeDenominator,
uint80 _mintFeeNumerator,
uint80 _mintFeeDenominator,
uint256 _mintFeeFlat,
uint80 _burnFeeNumerator,
uint80 _burnFeeDenominator,
uint256 _burnFeeFlat) public onlyAdminOrOwner {
uint deferBlock = computeDeferBlock();
changeInsuranceFeesOperation = ChangeInsuranceFeesOperation(_transferFeeNumerator,
_transferFeeDenominator,
_mintFeeNumerator,
_mintFeeDenominator,
_mintFeeFlat,
_burnFeeNumerator,
_burnFeeDenominator,
_burnFeeFlat,
admin,
deferBlock);
ChangeInsuranceFeesOperationEvent(_transferFeeNumerator,
_transferFeeDenominator,
_mintFeeNumerator,
_mintFeeDenominator,
_mintFeeFlat,
_burnFeeNumerator,
_burnFeeDenominator,
_burnFeeFlat,
deferBlock);
}
// admin initiates a request that the recipient of the insurance fee be changed to newInsurer
function requestChangeInsurer(address newInsurer) public onlyAdminOrOwner {
uint deferBlock = computeDeferBlock();
changeInsurerOperation = ChangeInsurerOperation(newInsurer, admin, deferBlock);
ChangeInsurerOperationEvent(newInsurer, deferBlock);
}
// after a day, beneficiary of a mint request finalizes it by providing the
// index of the request (visible in the MintOperationEvent accompanying the original request)
function finalizeMint(uint index) public onlyAdminOrOwner {
MintOperation memory op = mintOperations[index];
require(op.admin == admin); //checks that the requester's adminship has not been revoked
require(op.deferBlock <= block.number); //checks that enough time has elapsed
address to = op.to;
uint256 amount = op.amount;
delete mintOperations[index];
child.mint(to, amount);
}
// after a day, admin finalizes the ownership change
function finalizeTransferChildrenOwnership() public onlyAdminOrOwner {
require(transferOwnershipOperation.admin == admin);
require(transferOwnershipOperation.deferBlock <= block.number);
address newOwner = transferOwnershipOperation.newOwner;
delete transferOwnershipOperation;
child.transferOwnership(newOwner);
canBurnWhiteList.transferOwnership(newOwner);
canReceiveMintWhitelist.transferOwnership(newOwner);
blackList.transferOwnership(newOwner);
}
// after a day, admin finalizes the burn bounds change
function finalizeChangeBurnBounds() public onlyAdminOrOwner {
require(changeBurnBoundsOperation.admin == admin);
require(changeBurnBoundsOperation.deferBlock <= block.number);
uint newMin = changeBurnBoundsOperation.newMin;
uint newMax = changeBurnBoundsOperation.newMax;
delete changeBurnBoundsOperation;
child.changeBurnBounds(newMin, newMax);
}
// after a day, admin finalizes the insurance fee change
function finalizeChangeInsuranceFees() public onlyAdminOrOwner {
require(changeInsuranceFeesOperation.admin == admin);
require(changeInsuranceFeesOperation.deferBlock <= block.number);
uint80 _transferFeeNumerator = changeInsuranceFeesOperation._transferFeeNumerator;
uint80 _transferFeeDenominator = changeInsuranceFeesOperation._transferFeeDenominator;
uint80 _mintFeeNumerator = changeInsuranceFeesOperation._mintFeeNumerator;
uint80 _mintFeeDenominator = changeInsuranceFeesOperation._mintFeeDenominator;
uint256 _mintFeeFlat = changeInsuranceFeesOperation._mintFeeFlat;
uint80 _burnFeeNumerator = changeInsuranceFeesOperation._burnFeeNumerator;
uint80 _burnFeeDenominator = changeInsuranceFeesOperation._burnFeeDenominator;
uint256 _burnFeeFlat = changeInsuranceFeesOperation._burnFeeFlat;
delete changeInsuranceFeesOperation;
child.changeInsuranceFees(_transferFeeNumerator,
_transferFeeDenominator,
_mintFeeNumerator,
_mintFeeDenominator,
_mintFeeFlat,
_burnFeeNumerator,
_burnFeeDenominator,
_burnFeeFlat);
}
// after a day, admin finalizes the insurance fees recipient change
function finalizeChangeInsurer() public onlyAdminOrOwner {
require(changeInsurerOperation.admin == admin);
require(changeInsurerOperation.deferBlock <= block.number);
address newInsurer = changeInsurerOperation.newInsurer;
delete changeInsurerOperation;
child.changeInsurer(newInsurer);
}
// Owner of this contract (immediately) replaces the current admin with newAdmin
function transferAdminship(address newAdmin) public onlyOwner {
AdminshipTransferred(admin, newAdmin);
admin = newAdmin;
}
// admin (immediately) updates a whitelist/blacklist
function updateList(address list, address entry, bool flag) public onlyAdminOrOwner {
AddressList(list).changeList(entry, flag);
}
function issueClaimOwnership(address _other) public onlyAdminOrOwner {
Claimable other = Claimable(_other);
other.claimOwnership();
}
}
contract NoOwner is HasNoEther, HasNoTokens, HasNoContracts {
}
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
uint256 totalSupply_;
/**
* @dev total number of tokens in existence
*/
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
*/
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[msg.sender]);
// SafeMath.sub will throw if there is not enough balance.
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
Transfer(msg.sender, _to, _value);
return true;
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
*/
function balanceOf(address _owner) public view returns (uint256 balance) {
return balances[_owner];
}
}
contract BurnableToken is BasicToken {
event Burn(address indexed burner, uint256 value);
/**
* @dev Burns a specific amount of tokens.
* @param _value The amount of token to be burned.
*/
function burn(uint256 _value) public {
require(_value <= balances[msg.sender]);
// no need to require value <= totalSupply, since that would imply the
// sender's balance is greater than the totalSupply, which *should* be an assertion failure
address burner = msg.sender;
balances[burner] = balances[burner].sub(_value);
totalSupply_ = totalSupply_.sub(_value);
Burn(burner, _value);
}
}
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeERC20 {
function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
assert(token.transfer(to, value));
}
function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal {
assert(token.transferFrom(from, to, value));
}
function safeApprove(ERC20 token, address spender, uint256 value) internal {
assert(token.approve(spender, value));
}
}
contract StandardToken is ERC20, BasicToken {
mapping (address => mapping (address => uint256)) internal allowed;
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amount of tokens to be transferred
*/
function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[_from]);
require(_value <= allowed[_from][msg.sender]);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
Transfer(_from, _to, _value);
return true;
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
*/
function approve(address _spender, uint256 _value) public returns (bool) {
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
*/
function allowance(address _owner, address _spender) public view returns (uint256) {
return allowed[_owner][_spender];
}
/**
* @dev Increase the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _addedValue The amount of tokens to increase the allowance by.
*/
function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
/**
* @dev Decrease the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To decrement
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _subtractedValue The amount of tokens to decrease the allowance by.
*/
function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
uint oldValue = allowed[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowed[msg.sender][_spender] = 0;
} else {
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
}
Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
}
contract PausableToken is StandardToken, Pausable {
function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {
return super.transfer(_to, _value);
}
function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) {
return super.transferFrom(_from, _to, _value);
}
function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) {
return super.approve(_spender, _value);
}
function increaseApproval(address _spender, uint _addedValue) public whenNotPaused returns (bool success) {
return super.increaseApproval(_spender, _addedValue);
}
function decreaseApproval(address _spender, uint _subtractedValue) public whenNotPaused returns (bool success) {
return super.decreaseApproval(_spender, _subtractedValue);
}
}
contract TrueUSD is PausableToken, BurnableToken, NoOwner, Claimable {
string public constant name = "TrueUSD";
string public constant symbol = "TUSD";
uint8 public constant decimals = 18;
AddressList public canReceiveMintWhitelist;
AddressList public canBurnWhiteList;
AddressList public blackList;
uint256 public burnMin = 10000 * 10**uint256(decimals);
uint256 public burnMax = 20000000 * 10**uint256(decimals);
uint80 public transferFeeNumerator = 7;
uint80 public transferFeeDenominator = 10000;
uint80 public mintFeeNumerator = 0;
uint80 public mintFeeDenominator = 10000;
uint256 public mintFeeFlat = 0;
uint80 public burnFeeNumerator = 0;
uint80 public burnFeeDenominator = 10000;
uint256 public burnFeeFlat = 0;
address public insurer;
event ChangeBurnBoundsEvent(uint256 newMin, uint256 newMax);
event Mint(address indexed to, uint256 amount);
function TrueUSD(address _canMintWhiteList, address _canBurnWhiteList, address _blackList) public {
totalSupply_ = 0;
canReceiveMintWhitelist = AddressList(_canMintWhiteList);
canBurnWhiteList = AddressList(_canBurnWhiteList);
blackList = AddressList(_blackList);
insurer = msg.sender;
}
//Burning functions as withdrawing money from the system. The platform will keep track of who burns coins,
//and will send them back the equivalent amount of money (rounded down to the nearest cent).
function burn(uint256 _value) public {
require(canBurnWhiteList.onList(msg.sender));
require(_value >= burnMin);
require(_value <= burnMax);
uint256 fee = payInsuranceFee(msg.sender, _value, burnFeeNumerator, burnFeeDenominator, burnFeeFlat);
uint256 remaining = _value.sub(fee);
super.burn(remaining);
}
//Create _amount new tokens and transfer them to _to.
//Based on code by OpenZeppelin: https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/MintableToken.sol
function mint(address _to, uint256 _amount) onlyOwner public {
require(canReceiveMintWhitelist.onList(_to));
totalSupply_ = totalSupply_.add(_amount);
balances[_to] = balances[_to].add(_amount);
Mint(_to, _amount);
Transfer(address(0), _to, _amount);
payInsuranceFee(_to, _amount, mintFeeNumerator, mintFeeDenominator, mintFeeFlat);
}
//Change the minimum and maximum amount that can be burned at once. Burning
//may be disabled by setting both to 0 (this will not be done under normal
//operation, but we can't add checks to disallow it without losing a lot of
//flexibility since burning could also be as good as disabled
//by setting the minimum extremely high, and we don't want to lock
//in any particular cap for the minimum)
function changeBurnBounds(uint newMin, uint newMax) onlyOwner public {
require(newMin <= newMax);
burnMin = newMin;
burnMax = newMax;
ChangeBurnBoundsEvent(newMin, newMax);
}
function transfer(address to, uint256 value) public returns (bool) {
require(!blackList.onList(msg.sender));
require(!blackList.onList(to));
bool result = super.transfer(to, value);
payInsuranceFee(to, value, transferFeeNumerator, transferFeeDenominator, 0);
return result;
}
function transferFrom(address from, address to, uint256 value) public returns (bool) {
require(!blackList.onList(from));
require(!blackList.onList(to));
bool result = super.transferFrom(from, to, value);
payInsuranceFee(to, value, transferFeeNumerator, transferFeeDenominator, 0);
return result;
}
function payInsuranceFee(address payer, uint256 value, uint80 numerator, uint80 denominator, uint256 flatRate) private returns (uint256) {
uint256 insuranceFee = value.mul(numerator).div(denominator).add(flatRate);
if (insuranceFee > 0) {
transferFromWithoutAllowance(payer, insurer, insuranceFee);
}
return insuranceFee;
}
// based on 'transfer' in https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/ERC20/BasicToken.sol
function transferFromWithoutAllowance(address from, address _to, uint256 _value) private {
assert(_to != address(0));
assert(_value <= balances[from]);
balances[from] = balances[from].sub(_value);
balances[_to] = balances[_to].add(_value);
Transfer(from, _to, _value);
}
function changeInsuranceFees(uint80 _transferFeeNumerator,
uint80 _transferFeeDenominator,
uint80 _mintFeeNumerator,
uint80 _mintFeeDenominator,
uint256 _mintFeeFlat,
uint80 _burnFeeNumerator,
uint80 _burnFeeDenominator,
uint256 _burnFeeFlat) public onlyOwner {
require(_transferFeeDenominator != 0);
require(_mintFeeDenominator != 0);
require(_burnFeeDenominator != 0);
transferFeeNumerator = _transferFeeNumerator;
transferFeeDenominator = _transferFeeDenominator;
mintFeeNumerator = _mintFeeNumerator;
mintFeeDenominator = _mintFeeDenominator;
mintFeeFlat = _mintFeeFlat;
burnFeeNumerator = _burnFeeNumerator;
burnFeeDenominator = _burnFeeDenominator;
burnFeeFlat = _burnFeeFlat;
}
function changeInsurer(address newInsurer) public onlyOwner {
require(newInsurer != address(0));
insurer = newInsurer;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_other","type":"address"}],"name":"issueClaimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"child","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalizeChangeBurnBounds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMin","type":"uint256"},{"name":"newMax","type":"uint256"}],"name":"requestChangeBurnBounds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"requestMint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"requestTransferChildrenOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"list","type":"address"},{"name":"entry","type":"address"},{"name":"flag","type":"bool"}],"name":"updateList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"canReceiveMintWhitelist","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferOwnershipOperation","outputs":[{"name":"newOwner","type":"address"},{"name":"admin","type":"address"},{"name":"deferBlock","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"canBurnWhiteList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdminship","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"changeBurnBoundsOperation","outputs":[{"name":"newMin","type":"uint256"},{"name":"newMax","type":"uint256"},{"name":"admin","type":"address"},{"name":"deferBlock","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blocksDelay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"changeInsurerOperation","outputs":[{"name":"newInsurer","type":"address"},{"name":"admin","type":"address"},{"name":"deferBlock","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"finalizeMint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reclaimEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newInsurer","type":"address"}],"name":"requestChangeInsurer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalizeChangeInsurer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from_","type":"address"},{"name":"value_","type":"uint256"},{"name":"data_","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalizeChangeInsuranceFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalizeTransferChildrenOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"changeInsuranceFeesOperation","outputs":[{"name":"_transferFeeNumerator","type":"uint80"},{"name":"_transferFeeDenominator","type":"uint80"},{"name":"_mintFeeNumerator","type":"uint80"},{"name":"_mintFeeDenominator","type":"uint80"},{"name":"_mintFeeFlat","type":"uint256"},{"name":"_burnFeeNumerator","type":"uint80"},{"name":"_burnFeeDenominator","type":"uint80"},{"name":"_burnFeeFlat","type":"uint256"},{"name":"admin","type":"address"},{"name":"deferBlock","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blackList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"mintOperations","outputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"},{"name":"admin","type":"address"},{"name":"deferBlock","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":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_transferFeeNumerator","type":"uint80"},{"name":"_transferFeeDenominator","type":"uint80"},{"name":"_mintFeeNumerator","type":"uint80"},{"name":"_mintFeeDenominator","type":"uint80"},{"name":"_mintFeeFlat","type":"uint256"},{"name":"_burnFeeNumerator","type":"uint80"},{"name":"_burnFeeDenominator","type":"uint80"},{"name":"_burnFeeFlat","type":"uint256"}],"name":"requestChangeInsuranceFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_child","type":"address"},{"name":"_canBurnWhiteList","type":"address"},{"name":"_canReceiveMintWhitelist","type":"address"},{"name":"_blackList","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"deferBlock","type":"uint256"},{"indexed":false,"name":"opIndex","type":"uint256"}],"name":"MintOperationEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOwner","type":"address"},{"indexed":false,"name":"deferBlock","type":"uint256"}],"name":"TransferOwnershipOperationEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newMin","type":"uint256"},{"indexed":false,"name":"newMax","type":"uint256"},{"indexed":false,"name":"deferBlock","type":"uint256"}],"name":"ChangeBurnBoundsOperationEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_transferFeeNumerator","type":"uint80"},{"indexed":false,"name":"_transferFeeDenominator","type":"uint80"},{"indexed":false,"name":"_mintFeeNumerator","type":"uint80"},{"indexed":false,"name":"_mintFeeDenominator","type":"uint80"},{"indexed":false,"name":"_mintFeeFlat","type":"uint256"},{"indexed":false,"name":"_burnFeeNumerator","type":"uint80"},{"indexed":false,"name":"_burnFeeDenominator","type":"uint80"},{"indexed":false,"name":"_burnFeeFlat","type":"uint256"},{"indexed":false,"name":"deferBlock","type":"uint256"}],"name":"ChangeInsuranceFeesOperationEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newInsurer","type":"address"},{"indexed":false,"name":"deferBlock","type":"uint256"}],"name":"ChangeInsurerOperationEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousAdmin","type":"address"},{"indexed":true,"name":"newAdmin","type":"address"}],"name":"AdminshipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
6060604052341561000f57600080fd5b6040516080806139fc83398101604052808051906020019091908051906020019091908051906020019091908051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060003414151561009557600080fd5b83600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050613850806101ac6000396000f30060606040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630581345e1461019857806317ffc320146101d1578063237b5e961461020a578063267822c11461025f5780632692281d1461027457806331a02bce146102a057806333ca55d7146102e257806337a87dfa1461031b57806342995e121461037e5780634955a79e146103d35780634e71e0c8146104625780635a444139146104775780635be7cc16146104cc5780636a7245ef146105055780638a6897841461056f5780638ab8342e146105985780638da5cb5b146106275780638e3af93f1461067c5780639f727c271461069f578063b15d6f35146106b4578063b2b95adc146106ed578063c0ee0b8a14610702578063c3edb4c214610758578063cc9062f91461076d578063cccc020f14610782578063cdab73b5146108a6578063e30c3978146108fb578063ec38e85514610950578063f2fde38b146109f4578063f851a44014610a2d578063fe49e94914610a82575b341561019657600080fd5b005b34156101a357600080fd5b6101cf600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b2c565b005b34156101dc57600080fd5b610208600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c5f565b005b341561021557600080fd5b61021d610dcc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561026a57600080fd5b610272610df2565b005b341561027f57600080fd5b61029e6004808035906020019091908035906020019091905050611041565b005b34156102ab57600080fd5b6102e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611210565b005b34156102ed57600080fd5b610319600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611481565b005b341561032657600080fd5b61037c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506116b6565b005b341561038957600080fd5b610391611828565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103de57600080fd5b6103e661184e565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390f35b341561046d57600080fd5b6104756118a6565b005b341561048257600080fd5b61048a611a45565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104d757600080fd5b610503600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a6b565b005b341561051057600080fd5b610518611b86565b604051808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390f35b341561057a57600080fd5b610582611bc4565b6040518082815260200191505060405180910390f35b34156105a357600080fd5b6105ab611bca565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390f35b341561063257600080fd5b61063a611c22565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561068757600080fd5b61069d6004808035906020019091905050611c47565b005b34156106aa57600080fd5b6106b2611fcd565b005b34156106bf57600080fd5b6106eb600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061209f565b005b34156106f857600080fd5b6107006122d4565b005b341561070d57600080fd5b610756600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919080359060200190820180359060200191909192905050612574565b005b341561076357600080fd5b61076b612579565b005b341561077857600080fd5b6107806129f9565b005b341561078d57600080fd5b610795612f09565b604051808b69ffffffffffffffffffff1669ffffffffffffffffffff1681526020018a69ffffffffffffffffffff1669ffffffffffffffffffff1681526020018969ffffffffffffffffffff1669ffffffffffffffffffff1681526020018869ffffffffffffffffffff1669ffffffffffffffffffff1681526020018781526020018669ffffffffffffffffffff1669ffffffffffffffffffff1681526020018569ffffffffffffffffffff1669ffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019a505050505050505050505060405180910390f35b34156108b157600080fd5b6108b9612fef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561090657600080fd5b61090e613015565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561095b57600080fd5b610971600480803590602001909190505061303b565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390f35b34156109ff57600080fd5b610a2b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506130ba565b005b3415610a3857600080fd5b610a40613159565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a8d57600080fd5b610b2a600480803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803590602001909190803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803590602001909190505061317f565b005b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bd657506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610be157600080fd5b8190508073ffffffffffffffffffffffffffffffffffffffff16634e71e0c86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610c4757600080fd5b6102c65a03f11515610c5857600080fd5b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cbc57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515610d5f57600080fd5b6102c65a03f11515610d7057600080fd5b505050604051805190509050610dc86000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166135b59092919063ffffffff16565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e9d57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610ea857600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600b60020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610f2957600080fd5b43600b6003015411151515610f3d57600080fd5b600b600001549150600b600101549050600b60008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560038201600090555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370df42e183836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b151561102957600080fd5b6102c65a03f1151561103a57600080fd5b5050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110eb57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156110f657600080fd5b6110fe613688565b9050608060405190810160405280848152602001838152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815250600b600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050507fc73c933d9af49f9438f0333da2e8a78060e2ee26a16654919456a837b2cd1af383838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b600061121a613720565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112c257506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156112cd57600080fd5b6112d5613688565b91506080604051908101604052808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381525090508373ffffffffffffffffffffffffffffffffffffffff167fc8643bc20dfb7bf63dc699abbc6b45c59fa995fb8c62fef9ddaa1c188b202fe1848460078054905060405180848152602001838152602001828152602001935050505060405180910390a2600780548060010182816113c09190613775565b9160005260206000209060040201600083909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015550505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061152b57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561153657600080fd5b61153e613688565b90506060604051908101604052808373ffffffffffffffffffffffffffffffffffffffff168152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201559050507f262da6df85d2653a47b85fce6ac8331e7c262cb3ca3e6246f1b5c992c16a7d2b8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061175e57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561176957600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663efbd9ec283836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200192505050600060405180830381600087803b151561180f57600080fd5b6102c65a03f1151561182057600080fd5b505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60088060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905083565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190257600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ac657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2931ebb3d190545dcf6801c37aa686b74f2e1000e753d0fac6e471a2aa5a621360405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b8060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b61168081565b60168060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905083565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c4f613720565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611cfa57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611d0557600080fd5b600784815481101515611d1457fe5b9060005260206000209060040201608060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815250509250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff16141515611e5057600080fd5b43836060015111151515611e6357600080fd5b8260000151915082602001519050600784815481101515611e8057fe5b9060005260206000209060040201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560038201600090555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515611fb357600080fd5b6102c65a03f11515611fc457600080fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561209d57fe5b565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061214957506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561215457600080fd5b61215c613688565b90506060604051908101604052808373ffffffffffffffffffffffffffffffffffffffff168152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815250601660008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201559050507f2443a30ee73bd0bdd7b9bb8b7400f1d181453bbef9a27732d0a42f35822aae038282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061237e57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561238957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601660010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561240a57600080fd5b436016600201541115151561241e57600080fd5b601660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506016600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560028201600090555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663beaf56a6826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561255d57600080fd5b6102c65a03f1151561256e57600080fd5b50505050565b600080fd5b600080600080600080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061262d57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561263857600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600f60050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156126b957600080fd5b43600f60060154111515156126cd57600080fd5b600f60000160009054906101000a900469ffffffffffffffffffff169750600f600001600a9054906101000a900469ffffffffffffffffffff169650600f60000160149054906101000a900469ffffffffffffffffffff169550600f60010160009054906101000a900469ffffffffffffffffffff169450600f600201549350600f60030160009054906101000a900469ffffffffffffffffffff169250600f600301600a9054906101000a900469ffffffffffffffffffff169150600f600401549050600f600080820160006101000a81549069ffffffffffffffffffff021916905560008201600a6101000a81549069ffffffffffffffffffff02191690556000820160146101000a81549069ffffffffffffffffffff02191690556001820160006101000a81549069ffffffffffffffffffff021916905560028201600090556003820160006101000a81549069ffffffffffffffffffff021916905560038201600a6101000a81549069ffffffffffffffffffff021916905560048201600090556005820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560068201600090555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baf492d589898989898989896040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808969ffffffffffffffffffff1669ffffffffffffffffffff1681526020018869ffffffffffffffffffff1669ffffffffffffffffffff1681526020018769ffffffffffffffffffff1669ffffffffffffffffffff1681526020018669ffffffffffffffffffff1669ffffffffffffffffffff1681526020018581526020018469ffffffffffffffffffff1669ffffffffffffffffffff1681526020018369ffffffffffffffffffff1669ffffffffffffffffffff16815260200182815260200198505050505050505050600060405180830381600087803b15156129db57600080fd5b6102c65a03f115156129ec57600080fd5b5050505050505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612aa357506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612aae57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600860010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b2f57600080fd5b4360086002015411151515612b4357600080fd5b600860000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506008600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560028201600090555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515612c8257600080fd5b6102c65a03f11515612c9357600080fd5b505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515612d5257600080fd5b6102c65a03f11515612d6357600080fd5b505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515612e2257600080fd5b6102c65a03f11515612e3357600080fd5b505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515612ef257600080fd5b6102c65a03f11515612f0357600080fd5b50505050565b600f8060000160009054906101000a900469ffffffffffffffffffff169080600001600a9054906101000a900469ffffffffffffffffffff16908060000160149054906101000a900469ffffffffffffffffffff16908060010160009054906101000a900469ffffffffffffffffffff16908060020154908060030160009054906101000a900469ffffffffffffffffffff169080600301600a9054906101000a900469ffffffffffffffffffff16908060040154908060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806006015490508a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60078181548110151561304a57fe5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561311557600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061322957506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561323457600080fd5b61323c613688565b9050610140604051908101604052808a69ffffffffffffffffffff1681526020018969ffffffffffffffffffff1681526020018869ffffffffffffffffffff1681526020018769ffffffffffffffffffff1681526020018681526020018569ffffffffffffffffffff1681526020018469ffffffffffffffffffff168152602001838152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815250600f60008201518160000160006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550602082015181600001600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060408201518160000160146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060608201518160010160006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506080820151816002015560a08201518160030160006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060c082015181600301600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060e082015181600401556101008201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061012082015181600601559050507f9a438c5f229f655e2e0998bfc33bd0a583061f2eb69e6a827b54c4a82aafcacd898989898989898989604051808a69ffffffffffffffffffff1669ffffffffffffffffffff1681526020018969ffffffffffffffffffff1669ffffffffffffffffffff1681526020018869ffffffffffffffffffff1669ffffffffffffffffffff1681526020018769ffffffffffffffffffff1669ffffffffffffffffffff1681526020018681526020018569ffffffffffffffffffff1669ffffffffffffffffffff1681526020018469ffffffffffffffffffff1669ffffffffffffffffffff168152602001838152602001828152602001995050505050505050505060405180910390a1505050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561366057600080fd5b6102c65a03f1151561367157600080fd5b50505060405180519050151561368357fe5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156136e7574390506136ff565b6136fc6116804361370290919063ffffffff16565b90505b90565b600080828401905083811015151561371657fe5b8091505092915050565b608060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b8154818355818115116137a2576004028160040283600052602060002091820191016137a191906137a7565b5b505050565b61382191905b8082111561381d57600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160009055506004016137ad565b5090565b905600a165627a7a72305820acfbfd01b6af7eb303ce294f42c2b9f4da0eda678f4abb8ef2a9b4888817ea310029000000000000000000000000ecc131ebb9db7aae68b8056d137ebf6299a05e48000000000000000000000000492dc35294c1586cea58748908d10aa1b5e2fbd0000000000000000000000000e06b12ae553b23f60f2460d177f74399d6fcd62a000000000000000000000000d59a8d6ae866fd8424fa1e61e98e7e31fd5905d5
Deployed Bytecode
0x60606040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630581345e1461019857806317ffc320146101d1578063237b5e961461020a578063267822c11461025f5780632692281d1461027457806331a02bce146102a057806333ca55d7146102e257806337a87dfa1461031b57806342995e121461037e5780634955a79e146103d35780634e71e0c8146104625780635a444139146104775780635be7cc16146104cc5780636a7245ef146105055780638a6897841461056f5780638ab8342e146105985780638da5cb5b146106275780638e3af93f1461067c5780639f727c271461069f578063b15d6f35146106b4578063b2b95adc146106ed578063c0ee0b8a14610702578063c3edb4c214610758578063cc9062f91461076d578063cccc020f14610782578063cdab73b5146108a6578063e30c3978146108fb578063ec38e85514610950578063f2fde38b146109f4578063f851a44014610a2d578063fe49e94914610a82575b341561019657600080fd5b005b34156101a357600080fd5b6101cf600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b2c565b005b34156101dc57600080fd5b610208600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c5f565b005b341561021557600080fd5b61021d610dcc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561026a57600080fd5b610272610df2565b005b341561027f57600080fd5b61029e6004808035906020019091908035906020019091905050611041565b005b34156102ab57600080fd5b6102e0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611210565b005b34156102ed57600080fd5b610319600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611481565b005b341561032657600080fd5b61037c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506116b6565b005b341561038957600080fd5b610391611828565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103de57600080fd5b6103e661184e565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390f35b341561046d57600080fd5b6104756118a6565b005b341561048257600080fd5b61048a611a45565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104d757600080fd5b610503600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a6b565b005b341561051057600080fd5b610518611b86565b604051808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390f35b341561057a57600080fd5b610582611bc4565b6040518082815260200191505060405180910390f35b34156105a357600080fd5b6105ab611bca565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390f35b341561063257600080fd5b61063a611c22565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561068757600080fd5b61069d6004808035906020019091905050611c47565b005b34156106aa57600080fd5b6106b2611fcd565b005b34156106bf57600080fd5b6106eb600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061209f565b005b34156106f857600080fd5b6107006122d4565b005b341561070d57600080fd5b610756600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919080359060200190820180359060200191909192905050612574565b005b341561076357600080fd5b61076b612579565b005b341561077857600080fd5b6107806129f9565b005b341561078d57600080fd5b610795612f09565b604051808b69ffffffffffffffffffff1669ffffffffffffffffffff1681526020018a69ffffffffffffffffffff1669ffffffffffffffffffff1681526020018969ffffffffffffffffffff1669ffffffffffffffffffff1681526020018869ffffffffffffffffffff1669ffffffffffffffffffff1681526020018781526020018669ffffffffffffffffffff1669ffffffffffffffffffff1681526020018569ffffffffffffffffffff1669ffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019a505050505050505050505060405180910390f35b34156108b157600080fd5b6108b9612fef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561090657600080fd5b61090e613015565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561095b57600080fd5b610971600480803590602001909190505061303b565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390f35b34156109ff57600080fd5b610a2b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506130ba565b005b3415610a3857600080fd5b610a40613159565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a8d57600080fd5b610b2a600480803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803590602001909190803569ffffffffffffffffffff1690602001909190803569ffffffffffffffffffff1690602001909190803590602001909190505061317f565b005b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bd657506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610be157600080fd5b8190508073ffffffffffffffffffffffffffffffffffffffff16634e71e0c86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610c4757600080fd5b6102c65a03f11515610c5857600080fd5b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cbc57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515610d5f57600080fd5b6102c65a03f11515610d7057600080fd5b505050604051805190509050610dc86000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166135b59092919063ffffffff16565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e9d57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610ea857600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600b60020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610f2957600080fd5b43600b6003015411151515610f3d57600080fd5b600b600001549150600b600101549050600b60008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560038201600090555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370df42e183836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b151561102957600080fd5b6102c65a03f1151561103a57600080fd5b5050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110eb57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156110f657600080fd5b6110fe613688565b9050608060405190810160405280848152602001838152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815250600b600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050507fc73c933d9af49f9438f0333da2e8a78060e2ee26a16654919456a837b2cd1af383838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b600061121a613720565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112c257506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156112cd57600080fd5b6112d5613688565b91506080604051908101604052808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381525090508373ffffffffffffffffffffffffffffffffffffffff167fc8643bc20dfb7bf63dc699abbc6b45c59fa995fb8c62fef9ddaa1c188b202fe1848460078054905060405180848152602001838152602001828152602001935050505060405180910390a2600780548060010182816113c09190613775565b9160005260206000209060040201600083909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015550505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061152b57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561153657600080fd5b61153e613688565b90506060604051908101604052808373ffffffffffffffffffffffffffffffffffffffff168152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201559050507f262da6df85d2653a47b85fce6ac8331e7c262cb3ca3e6246f1b5c992c16a7d2b8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061175e57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561176957600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663efbd9ec283836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200192505050600060405180830381600087803b151561180f57600080fd5b6102c65a03f1151561182057600080fd5b505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60088060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905083565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190257600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ac657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2931ebb3d190545dcf6801c37aa686b74f2e1000e753d0fac6e471a2aa5a621360405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b8060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b61168081565b60168060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905083565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c4f613720565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611cfa57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611d0557600080fd5b600784815481101515611d1457fe5b9060005260206000209060040201608060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815250509250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff16141515611e5057600080fd5b43836060015111151515611e6357600080fd5b8260000151915082602001519050600784815481101515611e8057fe5b9060005260206000209060040201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560038201600090555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515611fb357600080fd5b6102c65a03f11515611fc457600080fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561209d57fe5b565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061214957506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561215457600080fd5b61215c613688565b90506060604051908101604052808373ffffffffffffffffffffffffffffffffffffffff168152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815250601660008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201559050507f2443a30ee73bd0bdd7b9bb8b7400f1d181453bbef9a27732d0a42f35822aae038282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061237e57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561238957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601660010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561240a57600080fd5b436016600201541115151561241e57600080fd5b601660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506016600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560028201600090555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663beaf56a6826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561255d57600080fd5b6102c65a03f1151561256e57600080fd5b50505050565b600080fd5b600080600080600080600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061262d57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561263857600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600f60050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156126b957600080fd5b43600f60060154111515156126cd57600080fd5b600f60000160009054906101000a900469ffffffffffffffffffff169750600f600001600a9054906101000a900469ffffffffffffffffffff169650600f60000160149054906101000a900469ffffffffffffffffffff169550600f60010160009054906101000a900469ffffffffffffffffffff169450600f600201549350600f60030160009054906101000a900469ffffffffffffffffffff169250600f600301600a9054906101000a900469ffffffffffffffffffff169150600f600401549050600f600080820160006101000a81549069ffffffffffffffffffff021916905560008201600a6101000a81549069ffffffffffffffffffff02191690556000820160146101000a81549069ffffffffffffffffffff02191690556001820160006101000a81549069ffffffffffffffffffff021916905560028201600090556003820160006101000a81549069ffffffffffffffffffff021916905560038201600a6101000a81549069ffffffffffffffffffff021916905560048201600090556005820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560068201600090555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baf492d589898989898989896040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808969ffffffffffffffffffff1669ffffffffffffffffffff1681526020018869ffffffffffffffffffff1669ffffffffffffffffffff1681526020018769ffffffffffffffffffff1669ffffffffffffffffffff1681526020018669ffffffffffffffffffff1669ffffffffffffffffffff1681526020018581526020018469ffffffffffffffffffff1669ffffffffffffffffffff1681526020018369ffffffffffffffffffff1669ffffffffffffffffffff16815260200182815260200198505050505050505050600060405180830381600087803b15156129db57600080fd5b6102c65a03f115156129ec57600080fd5b5050505050505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612aa357506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612aae57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600860010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b2f57600080fd5b4360086002015411151515612b4357600080fd5b600860000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506008600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560028201600090555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515612c8257600080fd5b6102c65a03f11515612c9357600080fd5b505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515612d5257600080fd5b6102c65a03f11515612d6357600080fd5b505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515612e2257600080fd5b6102c65a03f11515612e3357600080fd5b505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515612ef257600080fd5b6102c65a03f11515612f0357600080fd5b50505050565b600f8060000160009054906101000a900469ffffffffffffffffffff169080600001600a9054906101000a900469ffffffffffffffffffff16908060000160149054906101000a900469ffffffffffffffffffff16908060010160009054906101000a900469ffffffffffffffffffff16908060020154908060030160009054906101000a900469ffffffffffffffffffff169080600301600a9054906101000a900469ffffffffffffffffffff16908060040154908060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806006015490508a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60078181548110151561304a57fe5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561311557600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061322957506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561323457600080fd5b61323c613688565b9050610140604051908101604052808a69ffffffffffffffffffff1681526020018969ffffffffffffffffffff1681526020018869ffffffffffffffffffff1681526020018769ffffffffffffffffffff1681526020018681526020018569ffffffffffffffffffff1681526020018469ffffffffffffffffffff168152602001838152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815250600f60008201518160000160006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550602082015181600001600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060408201518160000160146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060608201518160010160006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506080820151816002015560a08201518160030160006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060c082015181600301600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060e082015181600401556101008201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061012082015181600601559050507f9a438c5f229f655e2e0998bfc33bd0a583061f2eb69e6a827b54c4a82aafcacd898989898989898989604051808a69ffffffffffffffffffff1669ffffffffffffffffffff1681526020018969ffffffffffffffffffff1669ffffffffffffffffffff1681526020018869ffffffffffffffffffff1669ffffffffffffffffffff1681526020018769ffffffffffffffffffff1669ffffffffffffffffffff1681526020018681526020018569ffffffffffffffffffff1669ffffffffffffffffffff1681526020018469ffffffffffffffffffff1669ffffffffffffffffffff168152602001838152602001828152602001995050505050505050505060405180910390a1505050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561366057600080fd5b6102c65a03f1151561367157600080fd5b50505060405180519050151561368357fe5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156136e7574390506136ff565b6136fc6116804361370290919063ffffffff16565b90505b90565b600080828401905083811015151561371657fe5b8091505092915050565b608060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b8154818355818115116137a2576004028160040283600052602060002091820191016137a191906137a7565b5b505050565b61382191905b8082111561381d57600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160009055506004016137ad565b5090565b905600a165627a7a72305820acfbfd01b6af7eb303ce294f42c2b9f4da0eda678f4abb8ef2a9b4888817ea310029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ecc131ebb9db7aae68b8056d137ebf6299a05e48000000000000000000000000492dc35294c1586cea58748908d10aa1b5e2fbd0000000000000000000000000e06b12ae553b23f60f2460d177f74399d6fcd62a000000000000000000000000d59a8d6ae866fd8424fa1e61e98e7e31fd5905d5
-----Decoded View---------------
Arg [0] : _child (address): 0xeCc131EBB9DB7AaE68b8056D137eBf6299a05E48
Arg [1] : _canBurnWhiteList (address): 0x492Dc35294C1586ceA58748908D10aa1B5e2fBd0
Arg [2] : _canReceiveMintWhitelist (address): 0xe06B12Ae553b23f60F2460D177f74399d6fCD62a
Arg [3] : _blackList (address): 0xD59A8d6Ae866Fd8424FA1E61E98e7E31fD5905D5
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000ecc131ebb9db7aae68b8056d137ebf6299a05e48
Arg [1] : 000000000000000000000000492dc35294c1586cea58748908d10aa1b5e2fbd0
Arg [2] : 000000000000000000000000e06b12ae553b23f60f2460d177f74399d6fcd62a
Arg [3] : 000000000000000000000000d59a8d6ae866fd8424fa1e61e98e7e31fd5905d5
Swarm Source
bzzr://acfbfd01b6af7eb303ce294f42c2b9f4da0eda678f4abb8ef2a9b4888817ea31
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.