ETH Price: $2,082.97 (+0.60%)

Token

HumanityCards (HCX)
 

Overview

Max Total Supply

179 HCX

Holders

1

Transfers

-
0 (0%)

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
HumanityCard

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-03-16
*/

pragma solidity ^0.4.2;

contract ERC721 {
    function isERC721() public pure returns (bool b);
    function implementsERC721() public pure returns (bool b);
    function name() public pure returns (string name);
    function symbol() public pure returns (string symbol);
    function totalSupply() public view returns (uint256 totalSupply);
    function balanceOf(address _owner) public view returns (uint256 balance);
    function ownerOf(uint256 _tokenId) public view returns (address owner);
    function approve(address _to, uint256 _tokenId) public;
    function takeOwnership(uint256 _tokenId) public;
    function transferFrom(address _from, address _to, uint256 _tokenId) public;
    function transfer(address _to, uint256 _tokenId) public;
    function tokenOfOwnerByIndex(address _owner, uint256 _index) constant returns (uint tokenId);
    function tokenMetadata(uint256 _tokenId) constant returns (string infoUrl);

    event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
    event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);
}

contract HumanityCard is ERC721 {

    ///////////////////////////////////////////////////////////////
    /// Modifiers

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    event Mined(address indexed owner, uint16 human);

    ///////////////////////////////////////////////////////////////
    /// Structures

    struct Human {
        string name;
        uint8 max;
        uint mined;
    }

    struct Card {
        uint16 human;
        address owner;
        uint indexUser;
    }

    struct SellOrder {
        address seller;
        uint card;
        uint price;
    }

    ///////////////////////////////////////////////////////////////
    /// Constants

    string constant NAME = "HumanityCards";
    string constant SYMBOL = "HCX";

    ///////////////////////////////////////////////////////////////
    /// Attributes

    address owner;
    uint cardPrice;
    uint humanNumber;
    Human[] humanArray;
    uint cardNumber;
    uint cardMined;
    Card[] cardArray;
    mapping (address => uint256) cardCount;
    mapping (uint256 => address) approveMap;
    SellOrder[] sellOrderList;

    // Index of the card for the user
    mapping (address => mapping (uint => uint)) indexCard;

    ///////////////////////////////////////////////////////////////
    /// Constructor

    function HumanityCard() public {
        owner = msg.sender;
        cardPrice = 1 finney;
        humanNumber = 0;
        cardNumber = 0;
        cardMined = 0;
    }

    ///////////////////////////////////////////////////////////////
    /// Admin functions

    function addHuman(string name, uint8 max) public onlyOwner {
        Human memory newHuman = Human(name, max, 0);
        humanArray.push(newHuman);
        humanNumber += 1;
        cardNumber += max;
    }

    // Used only if ether price increase (decrease the price card)
    function changeCardPrice(uint newPrice) public onlyOwner {
        cardPrice = newPrice;
    }

    ///////////////////////////////////////////////////////////////
    /// Implementation ERC721

    function isERC721() public pure returns (bool b) {
        return true;
    }

    function implementsERC721() public pure returns (bool b) {
        return true;
    }

    function name() public pure returns (string _name) {
        return NAME;
    }

    function symbol() public pure returns (string _symbol) {
        return SYMBOL;
    }

    function totalSupply() public view returns (uint256 _totalSupply) {
        return cardMined;
    }

    function balanceOf(address _owner) public view returns (uint256 balance) {
        return cardCount[_owner];
    }

    function ownerOf(uint256 _tokenId) public view returns (address _owner) {
        require(_tokenId < cardMined);
        Card c = cardArray[_tokenId];
        return c.owner;
    }

    function approve(address _to, uint256 _tokenId) public {
        require(msg.sender == ownerOf(_tokenId));
        require(msg.sender != _to);
        approveMap[_tokenId] = _to;
        Approval(msg.sender, _to, _tokenId);
    }

    function transferFrom(address _from, address _to, uint256 _tokenId) public {
        require(_tokenId < cardMined);
        require(_from == ownerOf(_tokenId));
        require(_from != _to);
        require(approveMap[_tokenId] == _to);

        cardCount[_from] -= 1;

        // Change the indexCard of _from
        indexCard[_from][cardArray[_tokenId].indexUser] = indexCard[_from][cardCount[_from]];
        cardArray[indexCard[_from][cardCount[_from]]].indexUser = cardArray[_tokenId].indexUser;

        // This card is the last one for the new owner
        cardArray[_tokenId].indexUser = cardCount[_to];
        indexCard[_to][cardCount[_to]] = _tokenId;

        cardArray[_tokenId].owner = _to;
        cardCount[_to] += 1;
        Transfer(_from, _to, _tokenId);
    }

    function takeOwnership(uint256 _tokenId) public {
        require(_tokenId < cardMined);
        address oldOwner = ownerOf(_tokenId);
        address newOwner = msg.sender;
        require(newOwner != oldOwner);
        require(approveMap[_tokenId] == msg.sender);

        cardCount[oldOwner] -= 1;

        // Change the indexCard of _from
        indexCard[oldOwner][cardArray[_tokenId].indexUser] = indexCard[oldOwner][cardCount[oldOwner]];
        cardArray[indexCard[oldOwner][cardCount[oldOwner]]].indexUser = cardArray[_tokenId].indexUser;

        // This card is the last one for the new owner
        cardArray[_tokenId].indexUser = cardCount[newOwner];
        indexCard[newOwner][cardCount[newOwner]] = _tokenId;

        cardArray[_tokenId].owner = newOwner;
        cardCount[newOwner] += 1;
        Transfer(oldOwner, newOwner, _tokenId);
    }

    function transfer(address _to, uint256 _tokenId) public {
        require(_tokenId < cardMined);
        address oldOwner = msg.sender;
        address newOwner = _to;
        require(oldOwner == ownerOf(_tokenId));
        require(oldOwner != newOwner);
        require(newOwner != address(0));

        cardCount[oldOwner] -= 1;

        // Change the indexCard of _from
        indexCard[oldOwner][cardArray[_tokenId].indexUser] = indexCard[oldOwner][cardCount[oldOwner]];
        cardArray[indexCard[oldOwner][cardCount[oldOwner]]].indexUser = cardArray[_tokenId].indexUser;

        // This card is the last one for the new owner
        cardArray[_tokenId].indexUser = cardCount[newOwner];
        indexCard[newOwner][cardCount[newOwner]] = _tokenId;

        cardArray[_tokenId].owner = newOwner;
        cardCount[newOwner] += 1;
        Transfer(oldOwner, newOwner, _tokenId);
    }

    function tokenOfOwnerByIndex(address _owner, uint256 _index) constant returns (uint tokenId) {
        require(_index < cardCount[_owner]);

        return indexCard[_owner][_index];
    }

    // For this case the only metadata is the name of the human
    function tokenMetadata(uint256 _tokenId) constant returns (string infoUrl) {
        require(_tokenId < cardMined);

        uint16 humanId = cardArray[_tokenId].human;
        return humanArray[humanId].name;
    }

    ///////////////////////////////////////////////////////////////
    /// HumanityCard functions

    // Mine a new card
    function mineCard() public payable returns(bool success) {
        require(msg.value == cardPrice);
        require(cardMined < cardNumber);

        int remaining = (int)(cardNumber - cardMined);

        // Choosing the card
        int numero = int(keccak256(block.timestamp))%remaining;
        if(numero < 0) {
            numero *= -1;
        }
        uint16 chosenOne = 0;
        while (numero >= 0) {
            numero -= (int)(humanArray[chosenOne].max-humanArray[chosenOne].mined);
            if (numero >= 0) {
                chosenOne += 1;
            }
        }

        // Adding the card to the user
        address newOwner = msg.sender;
        Card memory newCard = Card(chosenOne, newOwner, cardCount[newOwner]);
        cardArray.push(newCard);

        // This card is the last one
        indexCard[newOwner][cardCount[newOwner]] = cardMined;
        cardCount[newOwner] += 1;

        // Updating cards informations
        cardMined += 1;
        humanArray[chosenOne].mined += 1;

        // Sending the fund to the owner
        if(!owner.send(cardPrice)) {
           revert();
        }

         Mined(newOwner, chosenOne);

        return true;
    }

    // Sale functions
    function createSellOrder(uint256 _tokenId, uint price) public {
        require(_tokenId < cardMined);
        require(msg.sender == ownerOf(_tokenId));

        SellOrder memory newOrder = SellOrder(msg.sender, _tokenId, price);
        sellOrderList.push(newOrder);

        cardArray[_tokenId].owner = address(0);
        cardCount[msg.sender] -= 1;

        // Change the indexCard of sender
        indexCard[msg.sender][cardArray[_tokenId].indexUser] = indexCard[msg.sender][cardCount[msg.sender]];
        cardArray[indexCard[msg.sender][cardCount[msg.sender]]].indexUser = cardArray[_tokenId].indexUser;
    }

    function processSellOrder(uint id, uint256 _tokenId) payable public {
        require(id < sellOrderList.length);

        SellOrder memory order = sellOrderList[id];
        require(order.card == _tokenId);
        require(msg.value == order.price);
        require(msg.sender != order.seller);

        // Sending fund to the seller
        if(!order.seller.send(msg.value)) {
           revert();
        }

        // Adding card to the buyer
        cardArray[_tokenId].owner = msg.sender;

        // This card is the last one for the new owner
        cardArray[_tokenId].indexUser = cardCount[msg.sender];
        indexCard[msg.sender][cardCount[msg.sender]] = _tokenId;

        cardCount[msg.sender] += 1;

        // Update list
        sellOrderList[id] = sellOrderList[sellOrderList.length-1];
        delete sellOrderList[sellOrderList.length-1];
        sellOrderList.length--;
    }

    function cancelSellOrder(uint id, uint256 _tokenId) public {
        require(id < sellOrderList.length);

        SellOrder memory order = sellOrderList[id];
        require(order.seller == msg.sender);
        require(order.card == _tokenId);

        // Give back card to seller
        cardArray[_tokenId].owner = msg.sender;

        // This card is the last one for the new owner
        cardArray[_tokenId].indexUser = cardCount[msg.sender];
        indexCard[msg.sender][cardCount[msg.sender]] = _tokenId;

        cardCount[msg.sender] += 1;

        // Update list
        sellOrderList[id] = sellOrderList[sellOrderList.length-1];
        delete sellOrderList[sellOrderList.length-1];
        sellOrderList.length--;
    }

    function getSellOrder(uint id) public view returns(address seller, uint card, uint price) {
        require(id < sellOrderList.length);

        SellOrder memory ret = sellOrderList[id];
        return(ret.seller, ret.card, ret.price);
    }

    function getNbSellOrder() public view returns(uint nb) {
        return sellOrderList.length;
    }


    // Get functions
    function getOwner() public view returns(address ret) {
        return owner;
    }

    function getCardPrice() public view returns(uint ret) {
        return cardPrice;
    }

    function getHumanNumber() public view returns(uint ret) {
        return humanNumber;
    }

    function getHumanInfo(uint i) public view returns(string name, uint8 max, uint mined) {
        require(i < humanNumber);
        Human memory h = humanArray[i];
        return (h.name, h.max, h.mined);
    }

    function getCardNumber() public view returns(uint ret) {
        return cardNumber;
    }

    function getCardInfo(uint256 _tokenId) public view returns(uint16 human, address owner) {
        require(_tokenId < cardMined);
        Card memory c = cardArray[_tokenId];
        return (c.human, c.owner);
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"getCardNumber","outputs":[{"name":"ret","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"_name","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"b","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getNbSellOrder","outputs":[{"name":"nb","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"_totalSupply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"i","type":"uint256"}],"name":"getHumanInfo","outputs":[{"name":"name","type":"string"},{"name":"max","type":"uint8"},{"name":"mined","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"price","type":"uint256"}],"name":"createSellOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"tokenId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPrice","type":"uint256"}],"name":"changeCardPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getSellOrder","outputs":[{"name":"seller","type":"address"},{"name":"card","type":"uint256"},{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenMetadata","outputs":[{"name":"infoUrl","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOwner","outputs":[{"name":"ret","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getCardInfo","outputs":[{"name":"human","type":"uint16"},{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"uint256"},{"name":"_tokenId","type":"uint256"}],"name":"processSellOrder","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isERC721","outputs":[{"name":"b","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getCardPrice","outputs":[{"name":"ret","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getHumanNumber","outputs":[{"name":"ret","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"max","type":"uint8"}],"name":"addHuman","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"uint256"},{"name":"_tokenId","type":"uint256"}],"name":"cancelSellOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mineCard","outputs":[{"name":"success","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"human","type":"uint16"}],"name":"Mined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555066038d7ea4c6800060018190555060006002819055506000600481905550600060058190555061350d806100846000396000f30060606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305dc27081461016457806306fdde031461018d578063095ea7b31461021b5780631051db341461025d5780631390b2471461028a57806318160ddd146102b35780631dd7cf6d146102dc5780631df681021461038c57806323b872dd146103b85780632f745c591461041957806330efac4e1461046f578063390ce0d3146104925780636352211e146105035780636914db601461056657806370a0823114610602578063893d20e81461064f57806395d89b41146106a4578063970129be14610732578063a70beb13146107a4578063a9059cbb146107c5578063b2e6ceeb14610807578063d2afa8c11461082a578063d79d63be14610857578063d8c3527314610880578063e242fbbb146108a9578063e51dfd9014610912578063ed1ece041461093e575b600080fd5b341561016f57600080fd5b610177610960565b6040518082815260200191505060405180910390f35b341561019857600080fd5b6101a061096a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e05780820151818401526020810190506101c5565b50505050905090810190601f16801561020d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561022657600080fd5b61025b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506109ad565b005b341561026857600080fd5b610270610ae5565b604051808215151515815260200191505060405180910390f35b341561029557600080fd5b61029d610aee565b6040518082815260200191505060405180910390f35b34156102be57600080fd5b6102c6610afb565b6040518082815260200191505060405180910390f35b34156102e757600080fd5b6102fd6004808035906020019091905050610b05565b60405180806020018460ff1660ff168152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561034f578082015181840152602081019050610334565b50505050905090810190601f16801561037c5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561039757600080fd5b6103b66004808035906020019091908035906020019091905050610c3c565b005b34156103c357600080fd5b610417600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fdd565b005b341561042457600080fd5b610459600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061150c565b6040518082815260200191505060405180910390f35b341561047a57600080fd5b61049060048080359060200190919050506115b4565b005b341561049d57600080fd5b6104b36004808035906020019091905050611619565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b341561050e57600080fd5b61052460048080359060200190919050506116eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561057157600080fd5b610587600480803590602001909190505061174a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105c75780820151818401526020810190506105ac565b50505050905090810190601f1680156105f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561060d57600080fd5b610639600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061185a565b6040518082815260200191505060405180910390f35b341561065a57600080fd5b6106626118a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106af57600080fd5b6106b76118cc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106f75780820151818401526020810190506106dc565b50505050905090810190601f1680156107245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561073d57600080fd5b610753600480803590602001909190505061190f565b604051808361ffff1661ffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6107c360048080359060200190919080359060200190919050506119e9565b005b34156107d057600080fd5b610805600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e1f565b005b341561081257600080fd5b6108286004808035906020019091905050612327565b005b341561083557600080fd5b61083d612825565b604051808215151515815260200191505060405180910390f35b341561086257600080fd5b61086a61282e565b6040518082815260200191505060405180910390f35b341561088b57600080fd5b610893612838565b6040518082815260200191505060405180910390f35b34156108b457600080fd5b610910600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050612842565b005b341561091d57600080fd5b61093c6004808035906020019091908035906020019091905050612965565b005b610946612d44565b604051808215151515815260200191505060405180910390f35b6000600454905090565b610972613161565b6040805190810160405280600d81526020017f48756d616e697479436172647300000000000000000000000000000000000000815250905090565b6109b6816116eb565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109ef57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515610a2a57600080fd5b816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b60006001905090565b6000600980549050905090565b6000600554905090565b610b0d613161565b600080610b18613175565b60025485101515610b2857600080fd5b600385815481101515610b3757fe5b906000526020600020906003020160606040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bea5780601f10610bbf57610100808354040283529160200191610bea565b820191906000526020600020905b815481529060010190602001808311610bcd57829003601f168201915b505050505081526020016001820160009054906101000a900460ff1660ff1660ff1681526020016002820154815250509050806000015181602001518260400151829250935093509350509193909250565b610c446131a0565b60055483101515610c5457600080fd5b610c5d836116eb565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c9657600080fd5b6060604051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815250905060098054806001018281610cde91906131d8565b9160005260206000209060030201600083909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201555050506000600684815481101515610d6357fe5b906000526020600020906002020160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002054600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600686815481101515610ee057fe5b906000526020600020906002020160010154815260200190815260200160002081905550600683815481101515610f1357fe5b9060005260206000209060020201600101546006600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002054815481101515610fc357fe5b906000526020600020906002020160010181905550505050565b60055481101515610fed57600080fd5b610ff6816116eb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561102f57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561106a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110d757600080fd5b6001600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002054600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060068481548110151561120557fe5b90600052602060002090600202016001015481526020019081526020016000208190555060068181548110151561123857fe5b9060005260206000209060020201600101546006600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020548154811015156112e857fe5b906000526020600020906002020160010181905550600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460068281548110151561134c57fe5b90600052602060002090600202016001018190555080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020819055508160068281548110151561140557fe5b906000526020600020906002020160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548210151561155b57600080fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561160f57600080fd5b8060018190555050565b60008060006116266131a0565b6009805490508510151561163957600080fd5b60098581548110151561164857fe5b9060005260206000209060030201606060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815250509050806000015181602001518260400151935093509350509193909250565b600080600554831015156116fe57600080fd5b60068381548110151561170d57fe5b906000526020600020906002020190508060000160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b611752613161565b60006005548310151561176457600080fd5b60068381548110151561177357fe5b906000526020600020906002020160000160009054906101000a900461ffff16905060038161ffff168154811015156117a857fe5b90600052602060002090600302016000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561184d5780601f106118225761010080835404028352916020019161184d565b820191906000526020600020905b81548152906001019060200180831161183057829003601f168201915b5050505050915050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118d4613161565b6040805190810160405280600381526020017f4843580000000000000000000000000000000000000000000000000000000000815250905090565b60008061191a61320a565b6005548410151561192a57600080fd5b60068481548110151561193957fe5b9060005260206000209060020201606060405190810160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815250509050806000015181602001519250925050915091565b6119f16131a0565b60098054905083101515611a0457600080fd5b600983815481101515611a1357fe5b9060005260206000209060030201606060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815250509050818160200151141515611aab57600080fd5b806040015134141515611abd57600080fd5b806000015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515611afc57600080fd5b806000015173ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515611b4057600080fd5b33600683815481101515611b5057fe5b906000526020600020906002020160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600683815481101515611bee57fe5b90600052602060002090600202016001018190555081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020819055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506009600160098054905003815481101515611cfc57fe5b9060005260206000209060030201600984815481101515611d1957fe5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018201548160010155600282015481600201559050506009600160098054905003815481101515611dbc57fe5b9060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905550506009805480919060019003611e199190613246565b50505050565b60008060055483101515611e3257600080fd5b339150839050611e41836116eb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611e7a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611eb557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ef157600080fd5b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002054600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060068681548110151561201f57fe5b90600052602060002090600202016001015481526020019081526020016000208190555060068381548110151561205257fe5b9060005260206000209060020201600101546006600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481526020019081526020016000205481548110151561210257fe5b906000526020600020906002020160010181905550600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460068481548110151561216657fe5b90600052602060002090600202016001018190555082600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020819055508060068481548110151561221f57fe5b906000526020600020906002020160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6000806005548310151561233a57600080fd5b612343836116eb565b91503390508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561238357600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166008600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156123f057600080fd5b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002054600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060068681548110151561251e57fe5b90600052602060002090600202016001015481526020019081526020016000208190555060068381548110151561255157fe5b9060005260206000209060020201600101546006600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481526020019081526020016000205481548110151561260157fe5b906000526020600020906002020160010181905550600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460068481548110151561266557fe5b90600052602060002090600202016001018190555082600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020819055508060068481548110151561271e57fe5b906000526020600020906002020160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050565b60006001905090565b6000600154905090565b6000600254905090565b61284a613175565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128a557600080fd5b6060604051908101604052808481526020018360ff16815260200160008152509050600380548060010182816128db9190613278565b91600052602060002090600302016000839091909150600082015181600001908051906020019061290d9291906132aa565b5060208201518160010160006101000a81548160ff021916908360ff1602179055506040820151816002015550505060016002600082825401925050819055508160ff16600460008282540192505081905550505050565b61296d6131a0565b6009805490508310151561298057600080fd5b60098381548110151561298f57fe5b9060005260206000209060030201606060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505090503373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16141515612a5357600080fd5b818160200151141515612a6557600080fd5b33600683815481101515612a7557fe5b906000526020600020906002020160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600683815481101515612b1357fe5b90600052602060002090600202016001018190555081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020819055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506009600160098054905003815481101515612c2157fe5b9060005260206000209060030201600984815481101515612c3e57fe5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018201548160010155600282015481600201559050506009600160098054905003815481101515612ce157fe5b9060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905550506009805480919060019003612d3e9190613246565b50505050565b6000806000806000612d5461320a565b60015434141515612d6457600080fd5b600454600554101515612d7657600080fd5b600554600454039450844260405180828152602001915050604051809103902060019004811515612da357fe5b0793506000841215612dd5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff840293505b600092505b600084121515612e595760038361ffff16815481101515612df757fe5b90600052602060002090600302016002015460038461ffff16815481101515612e1c57fe5b906000526020600020906003020160010160009054906101000a900460ff1660ff160384039350600084121515612e54576001830192505b612dda565b3391506060604051908101604052808461ffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815250905060068054806001018281612ee7919061332a565b9160005260206000209060020201600083909190915060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010155505050600554600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020819055506001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506001600560008282540192505081905550600160038461ffff1681548110151561307e57fe5b9060005260206000209060030201600201600082825401925050819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6001549081150290604051600060405180830381858888f1935050505015156130ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167f7c1f9d0ff99ce7cdfc538e6a57e0da25cad20c3b30440894e5205eebe3d1f89484604051808261ffff1661ffff16815260200191505060405180910390a260019550505050505090565b602060405190810160405280600081525090565b60606040519081016040528061318961335c565b8152602001600060ff168152602001600081525090565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b815481835581811511613205576003028160030283600052602060002091820191016132049190613370565b5b505050565b606060405190810160405280600061ffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b815481835581811511613273576003028160030283600052602060002091820191016132729190613370565b5b505050565b8154818355818115116132a5576003028160030283600052602060002091820191016132a491906133c6565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106132eb57805160ff1916838001178555613319565b82800160010185558215613319579182015b828111156133185782518255916020019190600101906132fd565b5b5090506133269190613411565b5090565b815481835581811511613357576002028160020283600052602060002091820191016133569190613436565b5b505050565b602060405190810160405280600081525090565b6133c391905b808211156133bf57600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905550600301613376565b5090565b90565b61340e91905b8082111561340a57600080820160006133e59190613499565b6001820160006101000a81549060ff02191690556002820160009055506003016133cc565b5090565b90565b61343391905b8082111561342f576000816000905550600101613417565b5090565b90565b61349691905b8082111561349257600080820160006101000a81549061ffff02191690556000820160026101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090555060020161343c565b5090565b90565b50805460018160011615610100020316600290046000825580601f106134bf57506134de565b601f0160209004906000526020600020908101906134dd9190613411565b5b505600a165627a7a7230582089cff650b2bb9596cc313d6ecedab44f6cabe6815415461f44cde1209b7469580029

Deployed Bytecode

0x60606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305dc27081461016457806306fdde031461018d578063095ea7b31461021b5780631051db341461025d5780631390b2471461028a57806318160ddd146102b35780631dd7cf6d146102dc5780631df681021461038c57806323b872dd146103b85780632f745c591461041957806330efac4e1461046f578063390ce0d3146104925780636352211e146105035780636914db601461056657806370a0823114610602578063893d20e81461064f57806395d89b41146106a4578063970129be14610732578063a70beb13146107a4578063a9059cbb146107c5578063b2e6ceeb14610807578063d2afa8c11461082a578063d79d63be14610857578063d8c3527314610880578063e242fbbb146108a9578063e51dfd9014610912578063ed1ece041461093e575b600080fd5b341561016f57600080fd5b610177610960565b6040518082815260200191505060405180910390f35b341561019857600080fd5b6101a061096a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e05780820151818401526020810190506101c5565b50505050905090810190601f16801561020d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561022657600080fd5b61025b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506109ad565b005b341561026857600080fd5b610270610ae5565b604051808215151515815260200191505060405180910390f35b341561029557600080fd5b61029d610aee565b6040518082815260200191505060405180910390f35b34156102be57600080fd5b6102c6610afb565b6040518082815260200191505060405180910390f35b34156102e757600080fd5b6102fd6004808035906020019091905050610b05565b60405180806020018460ff1660ff168152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561034f578082015181840152602081019050610334565b50505050905090810190601f16801561037c5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561039757600080fd5b6103b66004808035906020019091908035906020019091905050610c3c565b005b34156103c357600080fd5b610417600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fdd565b005b341561042457600080fd5b610459600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061150c565b6040518082815260200191505060405180910390f35b341561047a57600080fd5b61049060048080359060200190919050506115b4565b005b341561049d57600080fd5b6104b36004808035906020019091905050611619565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b341561050e57600080fd5b61052460048080359060200190919050506116eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561057157600080fd5b610587600480803590602001909190505061174a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105c75780820151818401526020810190506105ac565b50505050905090810190601f1680156105f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561060d57600080fd5b610639600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061185a565b6040518082815260200191505060405180910390f35b341561065a57600080fd5b6106626118a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106af57600080fd5b6106b76118cc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106f75780820151818401526020810190506106dc565b50505050905090810190601f1680156107245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561073d57600080fd5b610753600480803590602001909190505061190f565b604051808361ffff1661ffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6107c360048080359060200190919080359060200190919050506119e9565b005b34156107d057600080fd5b610805600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e1f565b005b341561081257600080fd5b6108286004808035906020019091905050612327565b005b341561083557600080fd5b61083d612825565b604051808215151515815260200191505060405180910390f35b341561086257600080fd5b61086a61282e565b6040518082815260200191505060405180910390f35b341561088b57600080fd5b610893612838565b6040518082815260200191505060405180910390f35b34156108b457600080fd5b610910600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050612842565b005b341561091d57600080fd5b61093c6004808035906020019091908035906020019091905050612965565b005b610946612d44565b604051808215151515815260200191505060405180910390f35b6000600454905090565b610972613161565b6040805190810160405280600d81526020017f48756d616e697479436172647300000000000000000000000000000000000000815250905090565b6109b6816116eb565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109ef57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515610a2a57600080fd5b816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b60006001905090565b6000600980549050905090565b6000600554905090565b610b0d613161565b600080610b18613175565b60025485101515610b2857600080fd5b600385815481101515610b3757fe5b906000526020600020906003020160606040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bea5780601f10610bbf57610100808354040283529160200191610bea565b820191906000526020600020905b815481529060010190602001808311610bcd57829003601f168201915b505050505081526020016001820160009054906101000a900460ff1660ff1660ff1681526020016002820154815250509050806000015181602001518260400151829250935093509350509193909250565b610c446131a0565b60055483101515610c5457600080fd5b610c5d836116eb565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c9657600080fd5b6060604051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815250905060098054806001018281610cde91906131d8565b9160005260206000209060030201600083909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201555050506000600684815481101515610d6357fe5b906000526020600020906002020160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002054600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600686815481101515610ee057fe5b906000526020600020906002020160010154815260200190815260200160002081905550600683815481101515610f1357fe5b9060005260206000209060020201600101546006600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002054815481101515610fc357fe5b906000526020600020906002020160010181905550505050565b60055481101515610fed57600080fd5b610ff6816116eb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561102f57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561106a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110d757600080fd5b6001600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002054600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060068481548110151561120557fe5b90600052602060002090600202016001015481526020019081526020016000208190555060068181548110151561123857fe5b9060005260206000209060020201600101546006600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020548154811015156112e857fe5b906000526020600020906002020160010181905550600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460068281548110151561134c57fe5b90600052602060002090600202016001018190555080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020819055508160068281548110151561140557fe5b906000526020600020906002020160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548210151561155b57600080fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561160f57600080fd5b8060018190555050565b60008060006116266131a0565b6009805490508510151561163957600080fd5b60098581548110151561164857fe5b9060005260206000209060030201606060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815250509050806000015181602001518260400151935093509350509193909250565b600080600554831015156116fe57600080fd5b60068381548110151561170d57fe5b906000526020600020906002020190508060000160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b611752613161565b60006005548310151561176457600080fd5b60068381548110151561177357fe5b906000526020600020906002020160000160009054906101000a900461ffff16905060038161ffff168154811015156117a857fe5b90600052602060002090600302016000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561184d5780601f106118225761010080835404028352916020019161184d565b820191906000526020600020905b81548152906001019060200180831161183057829003601f168201915b5050505050915050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118d4613161565b6040805190810160405280600381526020017f4843580000000000000000000000000000000000000000000000000000000000815250905090565b60008061191a61320a565b6005548410151561192a57600080fd5b60068481548110151561193957fe5b9060005260206000209060020201606060405190810160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815250509050806000015181602001519250925050915091565b6119f16131a0565b60098054905083101515611a0457600080fd5b600983815481101515611a1357fe5b9060005260206000209060030201606060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815250509050818160200151141515611aab57600080fd5b806040015134141515611abd57600080fd5b806000015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515611afc57600080fd5b806000015173ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515611b4057600080fd5b33600683815481101515611b5057fe5b906000526020600020906002020160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600683815481101515611bee57fe5b90600052602060002090600202016001018190555081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020819055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506009600160098054905003815481101515611cfc57fe5b9060005260206000209060030201600984815481101515611d1957fe5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018201548160010155600282015481600201559050506009600160098054905003815481101515611dbc57fe5b9060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905550506009805480919060019003611e199190613246565b50505050565b60008060055483101515611e3257600080fd5b339150839050611e41836116eb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611e7a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611eb557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ef157600080fd5b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002054600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060068681548110151561201f57fe5b90600052602060002090600202016001015481526020019081526020016000208190555060068381548110151561205257fe5b9060005260206000209060020201600101546006600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481526020019081526020016000205481548110151561210257fe5b906000526020600020906002020160010181905550600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460068481548110151561216657fe5b90600052602060002090600202016001018190555082600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020819055508060068481548110151561221f57fe5b906000526020600020906002020160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6000806005548310151561233a57600080fd5b612343836116eb565b91503390508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561238357600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166008600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156123f057600080fd5b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002054600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060068681548110151561251e57fe5b90600052602060002090600202016001015481526020019081526020016000208190555060068381548110151561255157fe5b9060005260206000209060020201600101546006600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481526020019081526020016000205481548110151561260157fe5b906000526020600020906002020160010181905550600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460068481548110151561266557fe5b90600052602060002090600202016001018190555082600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020819055508060068481548110151561271e57fe5b906000526020600020906002020160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050565b60006001905090565b6000600154905090565b6000600254905090565b61284a613175565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128a557600080fd5b6060604051908101604052808481526020018360ff16815260200160008152509050600380548060010182816128db9190613278565b91600052602060002090600302016000839091909150600082015181600001908051906020019061290d9291906132aa565b5060208201518160010160006101000a81548160ff021916908360ff1602179055506040820151816002015550505060016002600082825401925050819055508160ff16600460008282540192505081905550505050565b61296d6131a0565b6009805490508310151561298057600080fd5b60098381548110151561298f57fe5b9060005260206000209060030201606060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505090503373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16141515612a5357600080fd5b818160200151141515612a6557600080fd5b33600683815481101515612a7557fe5b906000526020600020906002020160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600683815481101515612b1357fe5b90600052602060002090600202016001018190555081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020819055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506009600160098054905003815481101515612c2157fe5b9060005260206000209060030201600984815481101515612c3e57fe5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018201548160010155600282015481600201559050506009600160098054905003815481101515612ce157fe5b9060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905550506009805480919060019003612d3e9190613246565b50505050565b6000806000806000612d5461320a565b60015434141515612d6457600080fd5b600454600554101515612d7657600080fd5b600554600454039450844260405180828152602001915050604051809103902060019004811515612da357fe5b0793506000841215612dd5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff840293505b600092505b600084121515612e595760038361ffff16815481101515612df757fe5b90600052602060002090600302016002015460038461ffff16815481101515612e1c57fe5b906000526020600020906003020160010160009054906101000a900460ff1660ff160384039350600084121515612e54576001830192505b612dda565b3391506060604051908101604052808461ffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815250905060068054806001018281612ee7919061332a565b9160005260206000209060020201600083909190915060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010155505050600554600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020819055506001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506001600560008282540192505081905550600160038461ffff1681548110151561307e57fe5b9060005260206000209060030201600201600082825401925050819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6001549081150290604051600060405180830381858888f1935050505015156130ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167f7c1f9d0ff99ce7cdfc538e6a57e0da25cad20c3b30440894e5205eebe3d1f89484604051808261ffff1661ffff16815260200191505060405180910390a260019550505050505090565b602060405190810160405280600081525090565b60606040519081016040528061318961335c565b8152602001600060ff168152602001600081525090565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b815481835581811511613205576003028160030283600052602060002091820191016132049190613370565b5b505050565b606060405190810160405280600061ffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b815481835581811511613273576003028160030283600052602060002091820191016132729190613370565b5b505050565b8154818355818115116132a5576003028160030283600052602060002091820191016132a491906133c6565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106132eb57805160ff1916838001178555613319565b82800160010185558215613319579182015b828111156133185782518255916020019190600101906132fd565b5b5090506133269190613411565b5090565b815481835581811511613357576002028160020283600052602060002091820191016133569190613436565b5b505050565b602060405190810160405280600081525090565b6133c391905b808211156133bf57600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905550600301613376565b5090565b90565b61340e91905b8082111561340a57600080820160006133e59190613499565b6001820160006101000a81549060ff02191690556002820160009055506003016133cc565b5090565b90565b61343391905b8082111561342f576000816000905550600101613417565b5090565b90565b61349691905b8082111561349257600080820160006101000a81549061ffff02191690556000820160026101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090555060020161343c565b5090565b90565b50805460018160011615610100020316600290046000825580601f106134bf57506134de565b601f0160209004906000526020600020908101906134dd9190613411565b5b505600a165627a7a7230582089cff650b2bb9596cc313d6ecedab44f6cabe6815415461f44cde1209b7469580029

Swarm Source

bzzr://89cff650b2bb9596cc313d6ecedab44f6cabe6815415461f44cde1209b746958
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.