ETH Price: $2,364.97 (+1.59%)

Contract

0x500bdB15c836Cd6562C8624B7441feF6Eca5786A
 

Overview

ETH Balance

0.35249375 ETH

Eth Value

$833.64 (@ $2,364.97/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Revoke Unicorn61681212018-08-18 6:42:332218 days ago1534574553IN
0x500bdB15...6Eca5786A
0 ETH0.000050112
Revoke Unicorn61679532018-08-18 6:01:142218 days ago1534572074IN
0x500bdB15...6Eca5786A
0 ETH0.000050112
Make Hybridizati...61679512018-08-18 6:00:292218 days ago1534572029IN
0x500bdB15...6Eca5786A
0 ETH0.000050352
Make Hybridizati...61552852018-08-16 2:27:392220 days ago1534386459IN
0x500bdB15...6Eca5786A
0 ETH0.000050352
Sell Unicorn61535582018-08-15 19:15:222220 days ago1534360522IN
0x500bdB15...6Eca5786A
0 ETH0.000050712
Make Hybridizati...61468882018-08-14 16:22:072221 days ago1534263727IN
0x500bdB15...6Eca5786A
0 ETH0.00070555
Make Hybridizati...61468532018-08-14 16:13:562221 days ago1534263236IN
0x500bdB15...6Eca5786A
0 ETH0.000705755
Buy Unicorn With...61467732018-08-14 15:54:242221 days ago1534262064IN
0x500bdB15...6Eca5786A
0.0155625 ETH0.000790275.52
Buy Unicorn With...61467482018-08-14 15:46:552221 days ago1534261615IN
0x500bdB15...6Eca5786A
0.0155625 ETH0.000601294.2
Trade61454222018-08-14 10:31:212222 days ago1534242681IN
0x500bdB15...6Eca5786A
0 ETH0.000364563
Sell Unicorn61416842018-08-13 19:33:592222 days ago1534188839IN
0x500bdB15...6Eca5786A
0 ETH0.000580644
Accept Hybridiza...61411852018-08-13 17:28:072222 days ago1534181287IN
0x500bdB15...6Eca5786A
0.003 ETH0.003129946
Sell Unicorn61407352018-08-13 15:37:012222 days ago1534174621IN
0x500bdB15...6Eca5786A
0 ETH0.000435283
Cancel Hybridiza...61407192018-08-13 15:32:132222 days ago1534174333IN
0x500bdB15...6Eca5786A
0 ETH0.000108023
Make Hybridizati...61407192018-08-13 15:32:132222 days ago1534174333IN
0x500bdB15...6Eca5786A
0 ETH0.000942063
Accept Hybridiza...61391022018-08-13 8:46:372223 days ago1534149997IN
0x500bdB15...6Eca5786A
0.003 ETH0.00203044
Accept Hybridiza...61390762018-08-13 8:39:442223 days ago1534149584IN
0x500bdB15...6Eca5786A
0.003 ETH0.001711634
Make Hybridizati...61390672018-08-13 8:36:542223 days ago1534149414IN
0x500bdB15...6Eca5786A
0 ETH0.00119874
Sell Unicorn61389942018-08-13 8:21:492223 days ago1534148509IN
0x500bdB15...6Eca5786A
0 ETH0.000638984.4
Sell Unicorn61389852018-08-13 8:19:042223 days ago1534148344IN
0x500bdB15...6Eca5786A
0 ETH0.000623914.3
Trade61371382018-08-13 0:47:392223 days ago1534121259IN
0x500bdB15...6Eca5786A
0 ETH0.000340653.2
Make Hybridizati...61359342018-08-12 20:00:542223 days ago1534104054IN
0x500bdB15...6Eca5786A
0 ETH0.001350284.3
Make Hybridizati...61358922018-08-12 19:51:152223 days ago1534103475IN
0x500bdB15...6Eca5786A
0 ETH0.000942213
Create Unicorn F...61355882018-08-12 18:38:352223 days ago1534099115IN
0x500bdB15...6Eca5786A
0.003 ETH0.000768064
Create Unicorn F...61354892018-08-12 18:13:492223 days ago1534097629IN
0x500bdB15...6Eca5786A
0.003 ETH0.000890174.3
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
61467732018-08-14 15:54:242221 days ago1534262064
0x500bdB15...6Eca5786A
0.015 ETH
61467482018-08-14 15:46:552221 days ago1534261615
0x500bdB15...6Eca5786A
0.015 ETH
61411852018-08-13 17:28:072222 days ago1534181287
0x500bdB15...6Eca5786A
0.003 ETH
61391022018-08-13 8:46:372223 days ago1534149997
0x500bdB15...6Eca5786A
0.003 ETH
61355882018-08-12 18:38:352223 days ago1534099115
0x500bdB15...6Eca5786A
0.003 ETH
61354892018-08-12 18:13:492223 days ago1534097629
0x500bdB15...6Eca5786A
0.003 ETH
61353702018-08-12 17:43:242223 days ago1534095804
0x500bdB15...6Eca5786A
0.003 ETH
61352862018-08-12 17:25:362223 days ago1534094736
0x500bdB15...6Eca5786A
0.003 ETH
61317892018-08-12 2:53:012224 days ago1534042381
0x500bdB15...6Eca5786A
0.003 ETH
61285592018-08-11 13:48:562225 days ago1533995336
0x500bdB15...6Eca5786A
0.003 ETH
61285482018-08-11 13:46:292225 days ago1533995189
0x500bdB15...6Eca5786A
0.003 ETH
61284862018-08-11 13:32:192225 days ago1533994339
0x500bdB15...6Eca5786A
0.008 ETH
61184142018-08-09 20:47:122226 days ago1533847632
0x500bdB15...6Eca5786A
0.003 ETH
61181892018-08-09 19:54:292226 days ago1533844469
0x500bdB15...6Eca5786A
0.003 ETH
61011642018-08-06 22:44:332229 days ago1533595473
0x500bdB15...6Eca5786A
0.003 ETH
60821282018-08-03 18:00:442232 days ago1533319244
0x500bdB15...6Eca5786A
0.003 ETH
60709172018-08-01 20:30:272234 days ago1533155427
0x500bdB15...6Eca5786A
0.005 ETH
60692702018-08-01 13:38:462235 days ago1533130726
0x500bdB15...6Eca5786A
0.003 ETH
60658572018-07-31 23:30:212235 days ago1533079821
0x500bdB15...6Eca5786A
0.003 ETH
60658502018-07-31 23:27:412235 days ago1533079661
0x500bdB15...6Eca5786A
0.003 ETH
60586732018-07-30 18:21:462236 days ago1532974906
0x500bdB15...6Eca5786A
0.003 ETH
60586332018-07-30 18:12:372236 days ago1532974357
0x500bdB15...6Eca5786A
0.003 ETH
60537722018-07-29 22:42:352237 days ago1532904155
0x500bdB15...6Eca5786A
0.003 ETH
60537082018-07-29 22:28:232237 days ago1532903303
0x500bdB15...6Eca5786A
0.003 ETH
60531242018-07-29 20:11:462237 days ago1532895106
0x500bdB15...6Eca5786A
0.003 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UnicornContract

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-06-04
*/

pragma solidity 0.4.21;

library SafeMath {
    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;
    }

    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;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

contract UnicornManagementInterface {

    function ownerAddress() external view returns (address);
    function managerAddress() external view returns (address);
    function communityAddress() external view returns (address);
    function dividendManagerAddress() external view returns (address);
    function walletAddress() external view returns (address);
    function blackBoxAddress() external view returns (address);
    function unicornBreedingAddress() external view returns (address);
    function geneLabAddress() external view returns (address);
    function unicornTokenAddress() external view returns (address);
    function candyToken() external view returns (address);
    function candyPowerToken() external view returns (address);

    function createDividendPercent() external view returns (uint);
    function sellDividendPercent() external view returns (uint);
    function subFreezingPrice() external view returns (uint);
    function subFreezingTime() external view returns (uint64);
    function subTourFreezingPrice() external view returns (uint);
    function subTourFreezingTime() external view returns (uint64);
    function createUnicornPrice() external view returns (uint);
    function createUnicornPriceInCandy() external view returns (uint);
    function oraclizeFee() external view returns (uint);

    function paused() external view returns (bool);
    function locked() external view returns (bool);

    function isTournament(address _tournamentAddress) external view returns (bool);

    function getCreateUnicornFullPrice() external view returns (uint);
    function getHybridizationFullPrice(uint _price) external view returns (uint);
    function getSellUnicornFullPrice(uint _price) external view returns (uint);
    function getCreateUnicornFullPriceInCandy() external view returns (uint);


    //service
    function registerInit(address _contract) external;

}

contract UnicornAccessControl {

    UnicornManagementInterface public unicornManagement;


    function UnicornAccessControl(address _unicornManagementAddress) public {
        unicornManagement = UnicornManagementInterface(_unicornManagementAddress);
        unicornManagement.registerInit(this);
    }

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

    modifier onlyManager() {
        require(msg.sender == unicornManagement.managerAddress());
        _;
    }

    modifier onlyCommunity() {
        require(msg.sender == unicornManagement.communityAddress());
        _;
    }

    modifier onlyTournament() {
        require(unicornManagement.isTournament(msg.sender));
        _;
    }

    modifier whenNotPaused() {
        require(!unicornManagement.paused());
        _;
    }

    modifier whenPaused {
        require(unicornManagement.paused());
        _;
    }

//    modifier whenUnlocked() {
//        require(!unicornManagement.locked());
//        _;
//    }

    modifier onlyManagement() {
        require(msg.sender == address(unicornManagement));
        _;
    }

    modifier onlyBreeding() {
        require(msg.sender == unicornManagement.unicornBreedingAddress());
        _;
    }

    modifier onlyUnicornContract() {
        require(msg.sender == unicornManagement.unicornBreedingAddress() || unicornManagement.isTournament(msg.sender));
        _;
    }

    modifier onlyGeneLab() {
        require(msg.sender == unicornManagement.geneLabAddress());
        _;
    }

    modifier onlyBlackBox() {
        require(msg.sender == unicornManagement.blackBoxAddress());
        _;
    }

    modifier onlyUnicornToken() {
        require(msg.sender == unicornManagement.unicornTokenAddress());
        _;
    }

    function isGamePaused() external view returns (bool) {
        return unicornManagement.paused();
    }
}

contract DividendManagerInterface {
    function payDividend() external payable;
}

contract UnicornTokenInterface {

    //ERC721
    function balanceOf(address _owner) public view returns (uint256 _balance);
    function ownerOf(uint256 _unicornId) public view returns (address _owner);
    function transfer(address _to, uint256 _unicornId) public;
    function approve(address _to, uint256 _unicornId) public;
    function takeOwnership(uint256 _unicornId) public;
    function totalSupply() public constant returns (uint);
    function owns(address _claimant, uint256 _unicornId) public view returns (bool);
    function allowance(address _claimant, uint256 _unicornId) public view returns (bool);
    function transferFrom(address _from, address _to, uint256 _unicornId) public;
    function createUnicorn(address _owner) external returns (uint);
    //    function burnUnicorn(uint256 _unicornId) external;
    function getGen(uint _unicornId) external view returns (bytes);
    function setGene(uint _unicornId, bytes _gene) external;
    function updateGene(uint _unicornId, bytes _gene) external;
    function getUnicornGenByte(uint _unicornId, uint _byteNo) external view returns (uint8);

    function setName(uint256 _unicornId, string _name ) external returns (bool);
    function plusFreezingTime(uint _unicornId) external;
    function plusTourFreezingTime(uint _unicornId) external;
    function minusFreezingTime(uint _unicornId, uint64 _time) external;
    function minusTourFreezingTime(uint _unicornId, uint64 _time) external;
    function isUnfreezed(uint _unicornId) external view returns (bool);
    function isTourUnfreezed(uint _unicornId) external view returns (bool);

    function marketTransfer(address _from, address _to, uint256 _unicornId) external;
}


interface UnicornBalancesInterface {
    //    function tokenPlus(address _token, address _user, uint _value) external returns (bool);
    //    function tokenMinus(address _token, address _user, uint _value) external returns (bool);
    function trustedTokens(address _token) external view returns (bool);
    //    function balanceOf(address token, address user) external view returns (uint);
    function transfer(address _token, address _from, address _to, uint _value) external returns (bool);
    function transferWithFee(address _token, address _userFrom, uint _fullPrice, address _feeTaker, address _priceTaker, uint _price) external returns (bool);
}

contract ERC20 {
    //    uint256 public totalSupply;
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    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);
}

contract TrustedTokenInterface is ERC20 {
    function transferFromSystem(address _from, address _to, uint256 _value) public returns (bool);
    function burn(address _from, uint256 _value) public returns (bool);
    function mint(address _to, uint256 _amount) public returns (bool);
}


// contract UnicornBreedingInterface {
//     function deleteOffer(uint _unicornId) external;
//     function deleteHybridization(uint _unicornId) external;
// }

contract BlackBoxInterface {
    function createGen0(uint _unicornId) public payable;
    function geneCore(uint _childUnicornId, uint _parent1UnicornId, uint _parent2UnicornId) public payable;
}


interface BreedingDataBaseInterface {

    function gen0Limit() external view returns (uint);
    function gen0Count() external view returns (uint);
    function gen0Step() external view returns (uint);

    function gen0PresaleLimit() external view returns (uint);
    function gen0PresaleCount() external view returns (uint);

    function incGen0Count() external;
    function incGen0PresaleCount() external;
    function incGen0Limit() external;

    function createHybridization(uint _unicornId, uint _price) external;
    function hybridizationExists(uint _unicornId) external view returns (bool);
    function hybridizationPrice(uint _unicornId) external view returns (uint);
    function deleteHybridization(uint _unicornId) external returns (bool);

    function freezeIndex(uint _unicornId) external view returns (uint);
    function freezeHybridizationsCount(uint _unicornId) external view returns (uint);
    function freezeStatsSumHours(uint _unicornId) external view returns (uint);
    function freezeEndTime(uint _unicornId) external view returns (uint);
    function freezeMustCalculate(uint _unicornId) external view returns (bool);
    function freezeExists(uint _unicornId) external view returns (bool);

    function createFreeze(uint _unicornId, uint _index) external;
    function incFreezeHybridizationsCount(uint _unicornId) external;
    function setFreezeHybridizationsCount(uint _unicornId, uint _count) external;

    function incFreezeIndex(uint _unicornId) external;
    function setFreezeEndTime(uint _unicornId, uint _time) external;
    function minusFreezeEndTime(uint _unicornId, uint _time) external;
    function setFreezeMustCalculate(uint _unicornId, bool _mustCalculate) external;
    function setStatsSumHours(uint _unicornId, uint _statsSumHours) external;


    function offerExists(uint _unicornId) external view returns (bool);
    function offerPriceEth(uint _unicornId) external view returns (uint);
    function offerPriceCandy(uint _unicornId) external view returns (uint);

    function createOffer(uint _unicornId, uint _priceEth, uint _priceCandy) external;
    function deleteOffer(uint _unicornId) external;

}

contract UnicornBreeding is UnicornAccessControl {
    using SafeMath for uint;

    BlackBoxInterface public blackBox;
    TrustedTokenInterface public megaCandyToken;
    BreedingDataBaseInterface public breedingDB;
    UnicornTokenInterface public unicornToken; //only on deploy
    UnicornBalancesInterface public balances;

    address public candyTokenAddress;

    event HybridizationAdd(uint indexed unicornId, uint price);
    event HybridizationAccept(uint indexed firstUnicornId, uint indexed secondUnicornId, uint newUnicornId, uint price);
    event SelfHybridization(uint indexed firstUnicornId, uint indexed secondUnicornId, uint newUnicornId, uint price);
    event HybridizationDelete(uint indexed unicornId);
    event CreateUnicorn(address indexed owner, uint indexed unicornId, uint parent1, uint  parent2);
    event NewGen0Limit(uint limit);
    event NewGen0Step(uint step);

    event FreeHybridization(uint256 indexed unicornId);
    event NewSelfHybridizationPrice(uint percentCandy);

    event UnicornFreezingTimeSet(uint indexed unicornId, uint time);
    event MinusFreezingTime(uint indexed unicornId, uint count);

    uint public selfHybridizationPrice = 0;

    uint32[8] internal freezing = [
    uint32(1 hours),    //1 hour
    uint32(2 hours),    //2 - 4 hours
    uint32(8 hours),    //8 - 12 hours
    uint32(16 hours),   //16 - 24 hours
    uint32(36 hours),   //36 - 48 hours
    uint32(72 hours),   //72 - 96 hours
    uint32(120 hours),  //120 - 144 hours
    uint32(168 hours)   //168 hours
    ];

    //count for random plus from 0 to ..
    uint32[8] internal freezingPlusCount = [
    0, 3, 5, 9, 13, 25, 25, 0
    ];


    function makeHybridization(uint _unicornId, uint _price) whenNotPaused public {
        require(unicornToken.owns(msg.sender, _unicornId));
        require(isUnfreezed(_unicornId));
        require(!breedingDB.hybridizationExists(_unicornId));
        require(unicornToken.getUnicornGenByte(_unicornId, 10) > 0);

        checkFreeze(_unicornId);
        breedingDB.createHybridization(_unicornId, _price);
        emit HybridizationAdd(_unicornId, _price);
        //свободная касса)
        if (_price == 0) {
            emit FreeHybridization(_unicornId);
        }
    }

    function acceptHybridization(uint _firstUnicornId, uint _secondUnicornId) whenNotPaused public payable {
        require(unicornToken.owns(msg.sender, _secondUnicornId));
        require(_secondUnicornId != _firstUnicornId);
        require(isUnfreezed(_firstUnicornId) && isUnfreezed(_secondUnicornId));
        require(breedingDB.hybridizationExists(_firstUnicornId));

        require(unicornToken.getUnicornGenByte(_firstUnicornId, 10) > 0 && unicornToken.getUnicornGenByte(_secondUnicornId, 10) > 0);
        require(msg.value == unicornManagement.oraclizeFee());

        uint price = breedingDB.hybridizationPrice(_firstUnicornId);

        if (price > 0) {
            uint fullPrice = unicornManagement.getHybridizationFullPrice(price);

            require(balances.transferWithFee(candyTokenAddress, msg.sender, fullPrice, balances, unicornToken.ownerOf(_firstUnicornId), price));

        }

        plusFreezingTime(_firstUnicornId);
        plusFreezingTime(_secondUnicornId);
        uint256 newUnicornId = unicornToken.createUnicorn(msg.sender);
        blackBox.geneCore.value(unicornManagement.oraclizeFee())(newUnicornId, _firstUnicornId, _secondUnicornId);

        emit HybridizationAccept(_firstUnicornId, _secondUnicornId, newUnicornId, price);
        emit CreateUnicorn(msg.sender, newUnicornId, _firstUnicornId, _secondUnicornId);
        _deleteHybridization(_firstUnicornId);
    }

    function selfHybridization(uint _firstUnicornId, uint _secondUnicornId) whenNotPaused public payable {
        require(unicornToken.owns(msg.sender, _firstUnicornId) && unicornToken.owns(msg.sender, _secondUnicornId));
        require(_secondUnicornId != _firstUnicornId);
        require(isUnfreezed(_firstUnicornId) && isUnfreezed(_secondUnicornId));
        require(unicornToken.getUnicornGenByte(_firstUnicornId, 10) > 0 && unicornToken.getUnicornGenByte(_secondUnicornId, 10) > 0);

        require(msg.value == unicornManagement.oraclizeFee());

        if (selfHybridizationPrice > 0) {
            //            require(balances.balanceOf(candyTokenAddress,msg.sender) >= selfHybridizationPrice);
            require(balances.transfer(candyTokenAddress, msg.sender, balances, selfHybridizationPrice));
        }

        plusFreezingTime(_firstUnicornId);
        plusFreezingTime(_secondUnicornId);
        uint256 newUnicornId = unicornToken.createUnicorn(msg.sender);
        blackBox.geneCore.value(unicornManagement.oraclizeFee())(newUnicornId, _firstUnicornId, _secondUnicornId);
        emit SelfHybridization(_firstUnicornId, _secondUnicornId, newUnicornId, selfHybridizationPrice);
        emit CreateUnicorn(msg.sender, newUnicornId, _firstUnicornId, _secondUnicornId);
    }

    function cancelHybridization (uint _unicornId) whenNotPaused public {
        require(unicornToken.owns(msg.sender,_unicornId));
        //require(breedingDB.hybridizationExists(_unicornId));
        _deleteHybridization(_unicornId);
    }

    function deleteHybridization(uint _unicornId) onlyUnicornToken external {
        _deleteHybridization(_unicornId);
    }

    function _deleteHybridization(uint _unicornId) internal {
        if (breedingDB.deleteHybridization(_unicornId)) {
            emit HybridizationDelete(_unicornId);
        }
    }

    //Create new 0 gen
    function createUnicorn() public payable whenNotPaused returns(uint256)   {
        require(msg.value == getCreateUnicornPrice());
        return _createUnicorn(msg.sender);
    }

    function createUnicornForCandy() public payable whenNotPaused returns(uint256)   {
        require(msg.value == unicornManagement.oraclizeFee());
        uint price = getCreateUnicornPriceInCandy();
        //        require(balances.balanceOf(candyTokenAddress,msg.sender) >= price);
        require(balances.transfer(candyTokenAddress, msg.sender, balances, price));
        return _createUnicorn(msg.sender);
    }

    function createPresaleUnicorns(uint _count, address _owner) public payable onlyManager whenPaused returns(bool) {
        require(breedingDB.gen0PresaleCount().add(_count) <= breedingDB.gen0PresaleLimit());
        uint256 newUnicornId;
        address owner = _owner == address(0) ? msg.sender : _owner;
        for (uint i = 0; i < _count; i++){
            newUnicornId = unicornToken.createUnicorn(owner);
            blackBox.createGen0(newUnicornId);
            emit CreateUnicorn(owner, newUnicornId, 0, 0);
            breedingDB.incGen0Count();
            breedingDB.incGen0PresaleCount();
        }
        return true;
    }

    function _createUnicorn(address _owner) private returns(uint256) {
        require(breedingDB.gen0Count() < breedingDB.gen0Limit());
        uint256 newUnicornId = unicornToken.createUnicorn(_owner);
        blackBox.createGen0.value(unicornManagement.oraclizeFee())(newUnicornId);
        emit CreateUnicorn(_owner, newUnicornId, 0, 0);
        breedingDB.incGen0Count();
        return newUnicornId;
    }

    function plusFreezingTime(uint _unicornId) private {
        checkFreeze(_unicornId);
        //если меньше 3 спарок увеличиваю просто спарки, если 3 тогда увеличиваю индекс
        if (breedingDB.freezeHybridizationsCount(_unicornId) < 3) {
            breedingDB.incFreezeHybridizationsCount(_unicornId);
        } else {
            if (breedingDB.freezeIndex(_unicornId) < freezing.length - 1) {
                breedingDB.incFreezeIndex(_unicornId);
                breedingDB.setFreezeHybridizationsCount(_unicornId,0);
            }
        }

        uint _time = _getFreezeTime(breedingDB.freezeIndex(_unicornId)) + now;
        breedingDB.setFreezeEndTime(_unicornId, _time);
        emit UnicornFreezingTimeSet(_unicornId, _time);
    }

    function checkFreeze(uint _unicornId) internal {
        if (!breedingDB.freezeExists(_unicornId)) {
            breedingDB.createFreeze(_unicornId, unicornToken.getUnicornGenByte(_unicornId, 163));
        }
        if (breedingDB.freezeMustCalculate(_unicornId)) {
            breedingDB.setFreezeMustCalculate(_unicornId, false);
            breedingDB.setStatsSumHours(_unicornId, _getStatsSumHours(_unicornId));
        }
    }

    function _getRarity(uint8 _b) internal pure returns (uint8) {
        //        [1; 188] common
        //        [189; 223] uncommon
        //        [224; 243] rare
        //        [244; 253] epic
        //        [254; 255] legendary
        return _b < 1 ? 0 : _b < 189 ? 1 : _b < 224 ? 2 : _b < 244 ? 3 : _b < 254 ? 4 : 5;
    }

    function _getStatsSumHours(uint _unicornId) internal view returns (uint) {
        uint8[5] memory physStatBytes = [
        //physical
        112, //strength
        117, //agility
        122, //speed
        127, //intellect
        132 //charisma
        ];
        uint8[10] memory rarity1Bytes = [
        //rarity old
        13, //body-form
        18, //wings-form
        23, //hoofs-form
        28, //horn-form
        33, //eyes-form
        38, //hair-form
        43, //tail-form
        48, //stone-form
        53, //ears-form
        58 //head-form
        ];
        uint8[10] memory rarity2Bytes = [
        //rarity new
        87, //body-form
        92, //wings-form
        97, //hoofs-form
        102, //horn-form
        107, //eyes-form
        137, //hair-form
        142, //tail-form
        147, //stone-form
        152, //ears-form
        157 //head-form
        ];

        uint sum = 0;
        uint i;
        for(i = 0; i < 5; i++) {
            sum += unicornToken.getUnicornGenByte(_unicornId, physStatBytes[i]);
        }

        for(i = 0; i < 10; i++) {
            //get v.2 rarity
            uint rarity = unicornToken.getUnicornGenByte(_unicornId, rarity2Bytes[i]);
            if (rarity == 0) {
                //get v.1 rarity
                rarity = _getRarity(unicornToken.getUnicornGenByte(_unicornId, rarity1Bytes[i]));
            }
            sum += rarity;
        }
        return sum * 1 hours;
    }

    function isUnfreezed(uint _unicornId) public view returns (bool) {
        return unicornToken.isUnfreezed(_unicornId) && breedingDB.freezeEndTime(_unicornId) <= now;
    }

    function enableFreezePriceRateRecalc(uint _unicornId) onlyGeneLab external {
        breedingDB.setFreezeMustCalculate(_unicornId, true);
    }

    /*
       (сумма генов + количество часов заморозки)/количество часов заморозки = стоимость снятия 1го часа заморозки в MegaCandy
    */
    function getUnfreezingPrice(uint _unicornId) public view returns (uint) {
        uint32 freezeHours = freezing[breedingDB.freezeIndex(_unicornId)];
        return unicornManagement.subFreezingPrice()
        .mul(breedingDB.freezeStatsSumHours(_unicornId).add(freezeHours))
        .div(freezeHours);
    }

    function _getFreezeTime(uint freezingIndex) internal view returns (uint time) {
        time = freezing[freezingIndex];
        if (freezingPlusCount[freezingIndex] != 0) {
            time += (uint(block.blockhash(block.number - 1)) % freezingPlusCount[freezingIndex]) * 1 hours;
        }
    }

    //change freezing time for megacandy
    function minusFreezingTime(uint _unicornId, uint _count) public {
        uint price = getUnfreezingPrice(_unicornId);
        require(megaCandyToken.burn(msg.sender, price.mul(_count)));
        //не минусуем на уже размороженных конях
        require(breedingDB.freezeEndTime(_unicornId) > now);
        //не используем safeMath, т.к. subFreezingTime в теории не должен быть больше now %)
        breedingDB.minusFreezeEndTime(_unicornId, uint(unicornManagement.subFreezingTime()).mul(_count));
        emit MinusFreezingTime(_unicornId,_count);
    }

    function getHybridizationPrice(uint _unicornId) public view returns (uint) {
        return unicornManagement.getHybridizationFullPrice(breedingDB.hybridizationPrice(_unicornId));
    }

    function getEtherFeeForPriceInCandy() public view returns (uint) {
        return unicornManagement.oraclizeFee();
    }

    function getCreateUnicornPriceInCandy() public view returns (uint) {
        return unicornManagement.getCreateUnicornFullPriceInCandy();
    }

    function getCreateUnicornPrice() public view returns (uint) {
        return unicornManagement.getCreateUnicornFullPrice();
    }

    function setGen0Limit() external onlyCommunity {
        require(breedingDB.gen0Count() == breedingDB.gen0Limit());
        breedingDB.incGen0Limit();
        emit NewGen0Limit(breedingDB.gen0Limit());
    }

    function setSelfHybridizationPrice(uint _percentCandy) public onlyManager {
        selfHybridizationPrice = _percentCandy;
        emit NewSelfHybridizationPrice(_percentCandy);
    }

}


contract UnicornMarket is UnicornBreeding {
    uint public sellDividendPercentCandy = 375; //OnlyManager 4 digits. 10.5% = 1050
    uint public sellDividendPercentEth = 375; //OnlyManager 4 digits. 10.5% = 1050

    event NewSellDividendPercent(uint percentCandy, uint percentCandyEth);
    event OfferAdd(uint256 indexed unicornId, uint priceEth, uint priceCandy);
    event OfferDelete(uint256 indexed unicornId);
    event UnicornSold(uint256 indexed unicornId, uint priceEth, uint priceCandy);
    event FreeOffer(uint256 indexed unicornId);


    function sellUnicorn(uint _unicornId, uint _priceEth, uint _priceCandy) whenNotPaused public {
        require(unicornToken.owns(msg.sender, _unicornId));
        require(!breedingDB.offerExists(_unicornId));

        breedingDB.createOffer(_unicornId, _priceEth, _priceCandy);

        emit OfferAdd(_unicornId, _priceEth, _priceCandy);
        //налетай)
        if (_priceEth == 0 && _priceCandy == 0) {
            emit FreeOffer(_unicornId);
        }
    }

    function buyUnicornWithEth(uint _unicornId) whenNotPaused public payable {
        require(breedingDB.offerExists(_unicornId));
        uint price = breedingDB.offerPriceEth(_unicornId);
        //Выставлять на продажу за 0 можно. Но нужно проверить чтобы и вторая цена также была 0
        if (price == 0) {
            require(breedingDB.offerPriceCandy(_unicornId) == 0);
        }
        require(msg.value == getOfferPriceEth(_unicornId));

        address owner = unicornToken.ownerOf(_unicornId);

        emit UnicornSold(_unicornId, price, 0);
        //deleteoffer вызовется внутри transfer
        unicornToken.marketTransfer(owner, msg.sender, _unicornId);
        owner.transfer(price);
    }

    function buyUnicornWithCandy(uint _unicornId) whenNotPaused public {
        require(breedingDB.offerExists(_unicornId));
        uint price = breedingDB.offerPriceCandy(_unicornId);
        //Выставлять на продажу за 0 можно. Но нужно проверить чтобы и вторая цена также была 0
        if (price == 0) {
            require(breedingDB.offerPriceEth(_unicornId) == 0);
        }

        address owner = unicornToken.ownerOf(_unicornId);

        if (price > 0) {
            uint fullPrice = getOfferPriceCandy(_unicornId);
            require(balances.transferWithFee(candyTokenAddress, msg.sender, fullPrice, balances, owner, price));
        }

        emit UnicornSold(_unicornId, 0, price);
        //deleteoffer вызовется внутри transfer
        unicornToken.marketTransfer(owner, msg.sender, _unicornId);
    }


    function revokeUnicorn(uint _unicornId) whenNotPaused public {
        require(unicornToken.owns(msg.sender, _unicornId));
        //require(breedingDB.offerExists(_unicornId));
        _deleteOffer(_unicornId);
    }


    function deleteOffer(uint _unicornId) onlyUnicornToken external {
        _deleteOffer(_unicornId);
    }


    function _deleteOffer(uint _unicornId) internal {
        if (breedingDB.offerExists(_unicornId)) {
            breedingDB.deleteOffer(_unicornId);
            emit OfferDelete(_unicornId);
        }
    }


    function getOfferPriceEth(uint _unicornId) public view returns (uint) {
        uint priceEth = breedingDB.offerPriceEth(_unicornId);
        return priceEth.add(valueFromPercent(priceEth, sellDividendPercentEth));
    }


    function getOfferPriceCandy(uint _unicornId) public view returns (uint) {
        uint priceCandy = breedingDB.offerPriceCandy(_unicornId);
        return priceCandy.add(valueFromPercent(priceCandy, sellDividendPercentCandy));
    }


    function setSellDividendPercent(uint _percentCandy, uint _percentEth) public onlyManager {
        //no more then 25%
        require(_percentCandy < 2500 && _percentEth < 2500);

        sellDividendPercentCandy = _percentCandy;
        sellDividendPercentEth = _percentEth;
        emit NewSellDividendPercent(_percentCandy, _percentEth);
    }


    //1% - 100, 10% - 1000 50% - 5000
    function valueFromPercent(uint _value, uint _percent) internal pure returns (uint amount)    {
        uint _amount = _value.mul(_percent).div(10000);
        return (_amount);
    }
}


contract UnicornCoinMarket is UnicornMarket {
    uint public feeTake = 5000000000000000; // 0.5% percentage times (1 ether)
    mapping (address => mapping (bytes32 => uint)) public orderFills; // mapping of user accounts to mapping of order hashes to uints (amount of order that has been filled)
    mapping (address => bool) public tokensWithoutFee;

    /// Logging Events
    event Trade(bytes32 indexed hash, address tokenGet, uint amountGet, address tokenGive, uint amountGive, address get, address give);


    /// Changes the fee on takes.
    function changeFeeTake(uint feeTake_) external onlyOwner {
        feeTake = feeTake_;
    }


    function setTokenWithoutFee(address _token, bool _takeFee) external onlyOwner {
        tokensWithoutFee[_token] = _takeFee;
    }


    ////////////////////////////////////////////////////////////////////////////////
    // Trading
    ////////////////////////////////////////////////////////////////////////////////

    /**
    * Facilitates a trade from one user to another.
    * Requires that the transaction is signed properly, the trade isn't past its expiration, and all funds are present to fill the trade.
    * Calls tradeBalances().
    * Updates orderFills with the amount traded.
    * Emits a Trade event.
    * Note: tokenGet & tokenGive can be the Ethereum contract address.
    * Note: amount is in amountGet / tokenGet terms.
    * @param tokenGet Ethereum contract address of the token to receive
    * @param amountGet uint amount of tokens being received
    * @param tokenGive Ethereum contract address of the token to give
    * @param amountGive uint amount of tokens being given
    * @param expires uint of block number when this order should expire
    * @param nonce arbitrary random number
    * @param user Ethereum address of the user who placed the order
    * @param v part of signature for the order hash as signed by user
    * @param r part of signature for the order hash as signed by user
    * @param s part of signature for the order hash as signed by user
    * @param amount uint amount in terms of tokenGet that will be "buy" in the trade
    */
    function trade(address tokenGet, uint amountGet, address tokenGive, uint amountGive, uint expires, uint nonce, address user, uint8 v, bytes32 r, bytes32 s, uint amount) external {
        bytes32 hash = sha256(balances, tokenGet, amountGet, tokenGive, amountGive, expires, nonce);
        require(
            ecrecover(keccak256(keccak256("bytes32 Order hash"), keccak256(hash)), v, r, s) == user &&
            block.number <= expires &&
            orderFills[user][hash].add(amount) <= amountGet
        );
        uint amount2 =  tradeBalances(tokenGet, amountGet, tokenGive, amountGive, user, amount);
        orderFills[user][hash] = orderFills[user][hash].add(amount);
        emit Trade(hash, tokenGet, amount, tokenGive, amount2, user, msg.sender);
    }

    /**
    * This is a private function and is only being called from trade().
    * Handles the movement of funds when a trade occurs.
    * Takes fees.
    * Updates token balances for both buyer and seller.
    * Note: tokenGet & tokenGive can be the Ethereum contract address.
    * Note: amount is in amountGet / tokenGet terms.
    * @param tokenGet Ethereum contract address of the token to receive
    * @param amountGet uint amount of tokens being received
    * @param tokenGive Ethereum contract address of the token to give
    * @param amountGive uint amount of tokens being given
    * @param user Ethereum address of the user who placed the order
    * @param amount uint amount in terms of tokenGet that will be "buy" in the trade
    */
    function tradeBalances(address tokenGet, uint amountGet, address tokenGive, uint amountGive, address user, uint amount) private returns(uint amount2){

        uint _fee = 0;

        if (!tokensWithoutFee[tokenGet]) {
            _fee = amount.mul(feeTake).div(1 ether);
        }


        if (balances.trustedTokens(tokenGet)) {
            TrustedTokenInterface t = TrustedTokenInterface(tokenGet);
            require(t.transferFromSystem(msg.sender, user, amount));
            require(t.transferFromSystem(msg.sender, this, _fee));
        } else {
            require(
                balances.transferWithFee(tokenGet, msg.sender, amount, balances, user, amount.sub(_fee))
            );
            //            balances.tokenMinus(tokenGet, msg.sender, amount);
            //            balances.tokenPlus(tokenGet, user, amount.sub(_fee));
            //            balances.tokenPlus(tokenGet, this, _fee);
        }

        amount2 = amountGive.mul(amount).div(amountGet);
        if (balances.trustedTokens(tokenGive)) {
            require(TrustedTokenInterface(tokenGive).transferFromSystem(user, msg.sender, amount2));
        } else {
            require(balances.transfer(tokenGive, user, msg.sender, amount2));
        }
    }
}


contract UnicornContract is UnicornCoinMarket {
    event FundsTransferred(address dividendManager, uint value);

    function() public payable {

    }

    function UnicornContract(address _breedingDB, address _balances, address _unicornManagementAddress) UnicornAccessControl(_unicornManagementAddress) public {
        candyTokenAddress = unicornManagement.candyToken();
        breedingDB = BreedingDataBaseInterface(_breedingDB);
        balances = UnicornBalancesInterface(_balances);
    }

    function init() onlyManagement whenPaused external {
        unicornToken = UnicornTokenInterface(unicornManagement.unicornTokenAddress());
        blackBox = BlackBoxInterface(unicornManagement.blackBoxAddress());
        megaCandyToken = TrustedTokenInterface(unicornManagement.candyPowerToken());
    }


    function transferTokensToDividendManager(address _token) onlyManager public {
        require(ERC20(_token).balanceOf(this) > 0);
        ERC20(_token).transfer(unicornManagement.walletAddress(), ERC20(_token).balanceOf(this));
    }


    function transferEthersToDividendManager(uint _value) onlyManager public {
        require(address(this).balance >= _value);
        DividendManagerInterface dividendManager = DividendManagerInterface(unicornManagement.dividendManagerAddress());
        dividendManager.payDividend.value(_value)();
        emit FundsTransferred(unicornManagement.dividendManagerAddress(), _value);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"isGamePaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_takeFee","type":"bool"}],"name":"setTokenWithoutFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenGet","type":"address"},{"name":"amountGet","type":"uint256"},{"name":"tokenGive","type":"address"},{"name":"amountGive","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"user","type":"address"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"amount","type":"uint256"}],"name":"trade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"breedingDB","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"orderFills","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"getHybridizationPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"},{"name":"_price","type":"uint256"}],"name":"makeHybridization","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"getOfferPriceCandy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"},{"name":"_priceEth","type":"uint256"},{"name":"_priceCandy","type":"uint256"}],"name":"sellUnicorn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"cancelHybridization","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCreateUnicornPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_firstUnicornId","type":"uint256"},{"name":"_secondUnicornId","type":"uint256"}],"name":"selfHybridization","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"enableFreezePriceRateRecalc","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"buyUnicornWithEth","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"},{"name":"_count","type":"uint256"}],"name":"minusFreezingTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_count","type":"uint256"},{"name":"_owner","type":"address"}],"name":"createPresaleUnicorns","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"createUnicornForCandy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"getUnfreezingPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unicornToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"getOfferPriceEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"deleteOffer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"balances","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"feeTake_","type":"uint256"}],"name":"changeFeeTake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"createUnicorn","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"unicornManagement","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_percentCandy","type":"uint256"},{"name":"_percentEth","type":"uint256"}],"name":"setSellDividendPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_percentCandy","type":"uint256"}],"name":"setSelfHybridizationPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"revokeUnicorn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellDividendPercentCandy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blackBox","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokensWithoutFee","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeTake","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"deleteHybridization","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"isUnfreezed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_unicornId","type":"uint256"}],"name":"buyUnicornWithCandy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_firstUnicornId","type":"uint256"},{"name":"_secondUnicornId","type":"uint256"}],"name":"acceptHybridization","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getEtherFeeForPriceInCandy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"selfHybridizationPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sellDividendPercentEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setGen0Limit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"transferTokensToDividendManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCreateUnicornPriceInCandy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"candyTokenAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"transferEthersToDividendManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"megaCandyToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_breedingDB","type":"address"},{"name":"_balances","type":"address"},{"name":"_unicornManagementAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"dividendManager","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"FundsTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"tokenGet","type":"address"},{"indexed":false,"name":"amountGet","type":"uint256"},{"indexed":false,"name":"tokenGive","type":"address"},{"indexed":false,"name":"amountGive","type":"uint256"},{"indexed":false,"name":"get","type":"address"},{"indexed":false,"name":"give","type":"address"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"percentCandy","type":"uint256"},{"indexed":false,"name":"percentCandyEth","type":"uint256"}],"name":"NewSellDividendPercent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"},{"indexed":false,"name":"priceEth","type":"uint256"},{"indexed":false,"name":"priceCandy","type":"uint256"}],"name":"OfferAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"}],"name":"OfferDelete","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"},{"indexed":false,"name":"priceEth","type":"uint256"},{"indexed":false,"name":"priceCandy","type":"uint256"}],"name":"UnicornSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"}],"name":"FreeOffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"}],"name":"HybridizationAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"firstUnicornId","type":"uint256"},{"indexed":true,"name":"secondUnicornId","type":"uint256"},{"indexed":false,"name":"newUnicornId","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"}],"name":"HybridizationAccept","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"firstUnicornId","type":"uint256"},{"indexed":true,"name":"secondUnicornId","type":"uint256"},{"indexed":false,"name":"newUnicornId","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"}],"name":"SelfHybridization","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"}],"name":"HybridizationDelete","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"unicornId","type":"uint256"},{"indexed":false,"name":"parent1","type":"uint256"},{"indexed":false,"name":"parent2","type":"uint256"}],"name":"CreateUnicorn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"limit","type":"uint256"}],"name":"NewGen0Limit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"step","type":"uint256"}],"name":"NewGen0Step","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"}],"name":"FreeHybridization","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"percentCandy","type":"uint256"}],"name":"NewSelfHybridizationPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"UnicornFreezingTimeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"unicornId","type":"uint256"},{"indexed":false,"name":"count","type":"uint256"}],"name":"MinusFreezingTime","type":"event"}]

606060405260006007556101006040519081016040908152610e108252611c2060208301526170809082015261e10060608201526201fa4060808201526203f48060a08201526206978060c082015262093a8060e082015262000066906008908162000254565b506101006040519081016040908152600080835260036020840152600591830191909152600960608301819052600d6080840152601960a0840181905260c084015260e0830191909152620000bd916008620002f7565b50610177600a55610177600b556611c37937e08000600c553415620000e157600080fd5b6040516060806200504c83398101604052808051919060200180519190602001805160008054600160a060020a031916600160a060020a03838116919091179182905591935083925016632a70d1e7306040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156200018957600080fd5b5af115156200019757600080fd5b5050600054600160a060020a0316915063a63f5e2a90506040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620001f657600080fd5b5af115156200020457600080fd5b505050604051805160068054600160a060020a0319908116600160a060020a0393841617909155600380548216968316969096179095556005805490951693169290921790925550620003789050565b600183019183908215620002e55791602002820160005b83821115620002b157835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026200026b565b8015620002e35782816101000a81549063ffffffff0219169055600401602081600301049283019260010302620002b1565b505b50620002f392915062000351565b5090565b600183019183908215620002e55791602002820160005b83821115620002b157835183826101000a81548163ffffffff021916908360ff16021790555092602001926004016020816003010492830192600103026200030e565b6200037591905b80821115620002f357805463ffffffff1916815560010162000358565b90565b614cc480620003886000396000f3006060604052600436106102165763ffffffff60e060020a6000350416630422ddf3811461021857806304ef13531461023f5780630a19b14a14610263578063134a04ea146102b057806319774d43146102df5780631ed378a1146103135780632394a7971461032957806323d9ea801461034257806329cf90f3146103585780632cf42a6c14610374578063317ffcf21461038a578063341743311461039d57806335cf60df146103ab578063383a194c146103c15780633900f8f6146103cc5780633ae50ce7146103e557806352fa1ac2146103fc57806353b5306b14610404578063544447bb1461041a578063699f0c721461042d57806374268ff2146104435780637bb98a68146104595780638823a9c01461046c5780638d8d50d0146104825780638dca7a011461048a5780638fe2eb9e1461049d578063aa31e4a0146104b6578063af40ce20146104cc578063b93c7d42146104e2578063bd1723e5146104f5578063bfb39cc814610508578063c281309e14610527578063c7024b981461053a578063cbde2ff014610550578063d029a53014610566578063da9287d11461057c578063de763a401461058a578063e1c7392a1461059d578063e51bfd9a146105b0578063e5a07419146105c3578063ec7bb2ac146105d6578063ee360ff0146105e9578063ee81f57c14610608578063fc0656c91461061b578063ff3941531461062e578063ff8028b314610644575b005b341561022357600080fd5b61022b610657565b604051901515815260200160405180910390f35b341561024a57600080fd5b610216600160a060020a036004351660243515156106b2565b341561026e57600080fd5b610216600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e43516610104356101243561014435610752565b34156102bb57600080fd5b6102c36109f9565b604051600160a060020a03909116815260200160405180910390f35b34156102ea57600080fd5b610301600160a060020a0360043516602435610a08565b60405190815260200160405180910390f35b341561031e57600080fd5b610301600435610a25565b341561033457600080fd5b610216600435602435610ae6565b341561034d57600080fd5b610301600435610d87565b341561036357600080fd5b610216600435602435604435610e10565b341561037f57600080fd5b610216600435611037565b341561039557600080fd5b61030161111b565b61021660043560243561115b565b34156103b657600080fd5b610216600435611675565b61021660043561174e565b34156103d757600080fd5b610216600435602435611a40565b61022b600435600160a060020a0360243516611c47565b610301611fbd565b341561040f57600080fd5b61030160043561212e565b341561042557600080fd5b6102c3612284565b341561043857600080fd5b610301600435612293565b341561044e57600080fd5b610216600435612308565b341561046457600080fd5b6102c3612386565b341561047757600080fd5b610216600435612395565b61030161240f565b341561049557600080fd5b6102c3612491565b34156104a857600080fd5b6102166004356024356124a0565b34156104c157600080fd5b61021660043561257a565b34156104d757600080fd5b61021660043561262a565b34156104ed57600080fd5b610301612702565b341561050057600080fd5b6102c3612708565b341561051357600080fd5b61022b600160a060020a0360043516612717565b341561053257600080fd5b61030161272c565b341561054557600080fd5b610216600435612732565b341561055b57600080fd5b61022b6004356127a7565b341561057157600080fd5b61021660043561287a565b610216600435602435612be9565b341561059557600080fd5b61030161322e565b34156105a857600080fd5b61021661326e565b34156105bb57600080fd5b61030161345c565b34156105ce57600080fd5b610301613462565b34156105e157600080fd5b610216613468565b34156105f457600080fd5b610216600160a060020a0360043516613670565b341561061357600080fd5b61030161387a565b341561062657600080fd5b6102c36138ba565b341561063957600080fd5b6102166004356138c9565b341561064f57600080fd5b6102c3613a9b565b60008054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b5af115156106a457600080fd5b505050604051805191505090565b600054600160a060020a0316638f84aa096040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156106f157600080fd5b5af115156106fe57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561072757600080fd5b600160a060020a03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546000908190600290600160a060020a03168e8e8e8e8e8e6040516c01000000000000000000000000600160a060020a0398891681028252968816870260148201526028810195909552929095169093026048830152605c820192909252607c810192909252609c82015260bc016020604051808303816000865af115156107db57600080fd5b50506040518051925050600160a060020a03871660016040517f62797465733332204f72646572206861736800000000000000000000000000008152601201604051809103902084604051908152602001604051809103902060405191825260208201526040908101905180910390208888886040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af115156108a057600080fd5b505060206040510351600160a060020a03161480156108bf5750884311155b80156108ff5750600160a060020a0387166000908152600d602090815260408083208584529091529020548c906108fc908563ffffffff613aaa16565b11155b151561090a57600080fd5b6109188d8d8d8d8b88613ac4565b600160a060020a0388166000908152600d6020908152604080832086845290915290205490915061094f908463ffffffff613aaa16565b600160a060020a0388166000908152600d60209081526040808320868452909152908190209190915582907f48ff82aefa7342f35d79202e69327025e824234888fba3c16ca6ea0d0a62554a908f9086908f9086908d90339051600160a060020a0396871681526020810195909552928516604080860191909152606085019290925284166080840152921660a082015260c001905180910390a250505050505050505050505050565b600354600160a060020a031681565b600d60209081526000928352604080842090915290825290205481565b60008054600354600160a060020a039182169163e8474230911663020f899a8560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610a7b57600080fd5b5af11515610a8857600080fd5b5050506040518051905060405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610ac857600080fd5b5af11515610ad557600080fd5b50505060405180519150505b919050565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b2557600080fd5b5af11515610b3257600080fd5b5050506040518051159050610b4657600080fd5b600454600160a060020a031663818d4b5d338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b9c57600080fd5b5af11515610ba957600080fd5b505050604051805190501515610bbe57600080fd5b610bc7826127a7565b1515610bd257600080fd5b600354600160a060020a031663ee34c6ad8360405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610c1a57600080fd5b5af11515610c2757600080fd5b5050506040518051159050610c3b57600080fd5b600454600090600160a060020a031663614984d184600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610c8d57600080fd5b5af11515610c9a57600080fd5b5050506040518051905060ff16111515610cb357600080fd5b610cbc82613ed8565b600354600160a060020a03166311f02c87838360405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b1515610d0a57600080fd5b5af11515610d1757600080fd5b505050817f84abd4d356237b35dfca5b88dc4e394c7e9f4cb3b214adcabfabdc6fe1f5f76c8260405190815260200160405180910390a2801515610d8357817f2be3e43f2ef674b10d85513ca8bf940afa4d956bf07c710f5cb89258af357c4e60405160405180910390a25b5050565b6003546000908190600160a060020a0316638a626ba18460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610dd457600080fd5b5af11515610de157600080fd5b505050604051805190509050610e09610dfc82600a5461411d565b829063ffffffff613aaa16565b9392505050565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e4f57600080fd5b5af11515610e5c57600080fd5b5050506040518051159050610e7057600080fd5b600454600160a060020a031663818d4b5d338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ec657600080fd5b5af11515610ed357600080fd5b505050604051805190501515610ee857600080fd5b600354600160a060020a031663b5c835928460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610f3057600080fd5b5af11515610f3d57600080fd5b5050506040518051159050610f5157600080fd5b600354600160a060020a031663dc35a90084848460405160e060020a63ffffffff8616028152600481019390935260248301919091526044820152606401600060405180830381600087803b1515610fa857600080fd5b5af11515610fb557600080fd5b505050827f13e4d00e26244f0e870ff787588c0980bf9d98eb39577648b77788542f19292a838360405191825260208201526040908101905180910390a281158015610fff575080155b1561103257827fba0d53156948fe5f38f8996945d3eefef1dd8044fb7dd7a32123d8d09b7164c060405160405180910390a25b505050565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561107657600080fd5b5af1151561108357600080fd5b505050604051805115905061109757600080fd5b600454600160a060020a031663818d4b5d338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156110ed57600080fd5b5af115156110fa57600080fd5b50505060405180519050151561110f57600080fd5b6111188161413e565b50565b60008054600160a060020a0316636a96c63e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b60008054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561119b57600080fd5b5af115156111a857600080fd5b50505060405180511590506111bc57600080fd5b600454600160a060020a031663818d4b5d338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561121257600080fd5b5af1151561121f57600080fd5b50505060405180519050801561129e5750600454600160a060020a031663818d4b5d338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561128657600080fd5b5af1151561129357600080fd5b505050604051805190505b15156112a957600080fd5b818314156112b657600080fd5b6112bf836127a7565b80156112cf57506112cf826127a7565b15156112da57600080fd5b600454600090600160a060020a031663614984d185600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b151561132c57600080fd5b5af1151561133957600080fd5b5050506040518051905060ff161180156113bc5750600454600090600160a060020a031663614984d184600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b15156113a057600080fd5b5af115156113ad57600080fd5b5050506040518051905060ff16115b15156113c757600080fd5b600054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561140657600080fd5b5af1151561141357600080fd5b50505060405180513414905061142857600080fd5b600060075411156114cb57600554600654600754600160a060020a039283169263f18d03cc9216903390849060405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b15156114a957600080fd5b5af115156114b657600080fd5b5050506040518051905015156114cb57600080fd5b6114d4836141d2565b6114dd826141d2565b600454600160a060020a031663ce5a5df73360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561152d57600080fd5b5af1151561153a57600080fd5b5050506040518051600154600054919350600160a060020a039081169250631e5d2e419116634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561159257600080fd5b5af1151561159f57600080fd5b5050506040518051905083868660405160e060020a63ffffffff87160281526004810193909352602483019190915260448201526064016000604051808303818588803b15156115ee57600080fd5b5af115156115fb57600080fd5b5050505081837ff74d29979ab38d16cc27c6f61b42ecd102804ed6122ba538fffbc67ea689acda8360075460405191825260208201526040908101905180910390a38033600160a060020a0316600080516020614c79833981519152858560405191825260208201526040908101905180910390a3505050565b600054600160a060020a0316631d296e8d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116b457600080fd5b5af115156116c157600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156116ea57600080fd5b600354600160a060020a03166354e921cb82600160405160e060020a63ffffffff8516028152600481019290925215156024820152604401600060405180830381600087803b151561173b57600080fd5b5af1151561174857600080fd5b50505050565b600080548190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561179057600080fd5b5af1151561179d57600080fd5b50505060405180511590506117b157600080fd5b600354600160a060020a031663b5c835928460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156117f957600080fd5b5af1151561180657600080fd5b50505060405180519050151561181b57600080fd5b600354600160a060020a031663ef4ba5988460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561186357600080fd5b5af1151561187057600080fd5b50505060405180519250508115156118eb57600354600160a060020a0316638a626ba18460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156118ca57600080fd5b5af115156118d757600080fd5b50505060405180511590506118eb57600080fd5b6118f483612293565b34146118ff57600080fd5b600454600160a060020a0316636352211e8460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561194757600080fd5b5af1151561195457600080fd5b505050604051805190509050827f2ea9d733fc3abfc39714b4ba66cc5968e15977a6335e955ec1e3bef0dc9c772d83600060405191825260208201526040908101905180910390a2600454600160a060020a031663bcf0dd8e82338660405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b15156119ff57600080fd5b5af11515611a0c57600080fd5b505050600160a060020a0381166108fc83150283604051600060405180830381858888f19350505050151561103257600080fd5b6000611a4b8361212e565b600254909150600160a060020a0316639dc29fac33611a70848663ffffffff6144c516565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611ab357600080fd5b5af11515611ac057600080fd5b505050604051805190501515611ad557600080fd5b6003544290600160a060020a0316630ecda1138560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611b1f57600080fd5b5af11515611b2c57600080fd5b50505060405180519050111515611b4257600080fd5b600354600054600160a060020a03918216916309850495918691611bc391879116639ea764756040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b9657600080fd5b5af11515611ba357600080fd5b505050604051805167ffffffffffffffff1691905063ffffffff6144c516565b60405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b1515611bfe57600080fd5b5af11515611c0b57600080fd5b505050827fb104872e32a5db292bde51a9980d0b23c6c8051fe9cb2f19478ceb0161db77878360405190815260200160405180910390a2505050565b60008054819081908190600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611c8d57600080fd5b5af11515611c9a57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515611cc357600080fd5b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611d0257600080fd5b5af11515611d0f57600080fd5b505050604051805190501515611d2457600080fd5b600354600160a060020a0316637cd022d46040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611d6357600080fd5b5af11515611d7057600080fd5b5050506040518051600354909150611de3908890600160a060020a0316638091fbe16040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611dc057600080fd5b5af11515611dcd57600080fd5b505050604051805191905063ffffffff613aaa16565b1115611dee57600080fd5b600160a060020a03851615611e035784611e05565b335b9150600090505b85811015611fb157600454600160a060020a031663ce5a5df78360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611e6457600080fd5b5af11515611e7157600080fd5b5050506040518051600154909450600160a060020a03169050631a9caab98460405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515611ec657600080fd5b5af11515611ed357600080fd5b5050508282600160a060020a0316600080516020614c7983398151915260008060405191825260208201526040908101905180910390a3600354600160a060020a0316635c752f6b6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611f4957600080fd5b5af11515611f5657600080fd5b5050600354600160a060020a0316905063de0d50e46040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611f9957600080fd5b5af11515611fa657600080fd5b505050600101611e0c565b50600195945050505050565b600080548190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611fff57600080fd5b5af1151561200c57600080fd5b505050604051805115905061202057600080fd5b600054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561205f57600080fd5b5af1151561206c57600080fd5b50505060405180513414905061208157600080fd5b61208961387a565b600554600654919250600160a060020a039081169163f18d03cc911633838560405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b15156120fd57600080fd5b5af1151561210a57600080fd5b50505060405180519050151561211f57600080fd5b612128336144f0565b91505090565b6003546000908190600890600160a060020a031663f8cbd5808560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561217e57600080fd5b5af1151561218b57600080fd5b505050604051805190506008811061219f57fe5b60088104919091015460035460079092166004026101000a900463ffffffff169150610e0990829061227890612216908390600160a060020a03166365089dd88960405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611dc057600080fd5b600054600160a060020a03166373def2b76040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561225557600080fd5b5af1151561226257600080fd5b505050604051805191905063ffffffff6144c516565b9063ffffffff61474b16565b600454600160a060020a031681565b6003546000908190600160a060020a031663ef4ba5988460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156122e057600080fd5b5af115156122ed57600080fd5b505050604051805190509050610e09610dfc82600b5461411d565b600054600160a060020a0316635abaaa016040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561234757600080fd5b5af1151561235457600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561237d57600080fd5b61111881614762565b600554600160a060020a031681565b600054600160a060020a0316638f84aa096040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156123d457600080fd5b5af115156123e157600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561240a57600080fd5b600c55565b60008054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561244f57600080fd5b5af1151561245c57600080fd5b505050604051805115905061247057600080fd5b61247861111b565b341461248357600080fd5b61248c336144f0565b905090565b600054600160a060020a031681565b600054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156124df57600080fd5b5af115156124ec57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561251557600080fd5b6109c48210801561252757506109c481105b151561253257600080fd5b600a829055600b8190557f30c8ebfc35cc822986e28f932b0a3ec7ddeb7d22b2e2069c8418b8f6bb2be664828260405191825260208201526040908101905180910390a15050565b600054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156125b957600080fd5b5af115156125c657600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156125ef57600080fd5b60078190557fb2b64ec3f4c18a4ea3329df9d86b4abb877dc0b4fb206cfe2165d904cf82559b8160405190815260200160405180910390a150565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561266957600080fd5b5af1151561267657600080fd5b505050604051805115905061268a57600080fd5b600454600160a060020a031663818d4b5d338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156126e057600080fd5b5af115156126ed57600080fd5b50505060405180519050151561237d57600080fd5b600a5481565b600154600160a060020a031681565b600e6020526000908152604090205460ff1681565b600c5481565b600054600160a060020a0316635abaaa016040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561277157600080fd5b5af1151561277e57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561110f57600080fd5b600454600090600160a060020a031663cbde2ff08360405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156127f257600080fd5b5af115156127ff57600080fd5b50505060405180519050801561287457506003544290600160a060020a0316630ecda1138460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561285a57600080fd5b5af1151561286757600080fd5b5050506040518051905011155b92915050565b6000805481908190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156128be57600080fd5b5af115156128cb57600080fd5b50505060405180511590506128df57600080fd5b600354600160a060020a031663b5c835928560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561292757600080fd5b5af1151561293457600080fd5b50505060405180519050151561294957600080fd5b600354600160a060020a0316638a626ba18560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561299157600080fd5b5af1151561299e57600080fd5b5050506040518051935050821515612a1957600354600160a060020a031663ef4ba5988560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156129f857600080fd5b5af11515612a0557600080fd5b5050506040518051159050612a1957600080fd5b600454600160a060020a0316636352211e8560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612a6157600080fd5b5af11515612a6e57600080fd5b50505060405180519250506000831115612b3457612a8b84610d87565b600554600654919250600160a060020a0390811691635b99df7f9116338484878960405160e060020a63ffffffff8916028152600160a060020a039687166004820152948616602486015260448501939093529084166064840152909216608482015260a481019190915260c401602060405180830381600087803b1515612b1257600080fd5b5af11515612b1f57600080fd5b505050604051805190501515612b3457600080fd5b837f2ea9d733fc3abfc39714b4ba66cc5968e15977a6335e955ec1e3bef0dc9c772d60008560405191825260208201526040908101905180910390a2600454600160a060020a031663bcf0dd8e83338760405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515612bd357600080fd5b5af11515612be057600080fd5b50505050505050565b6000805481908190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612c2d57600080fd5b5af11515612c3a57600080fd5b5050506040518051159050612c4e57600080fd5b600454600160a060020a031663818d4b5d338660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515612ca457600080fd5b5af11515612cb157600080fd5b505050604051805190501515612cc657600080fd5b83851415612cd357600080fd5b612cdc856127a7565b8015612cec5750612cec846127a7565b1515612cf757600080fd5b600354600160a060020a031663ee34c6ad8660405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612d3f57600080fd5b5af11515612d4c57600080fd5b505050604051805190501515612d6157600080fd5b600454600090600160a060020a031663614984d187600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515612db357600080fd5b5af11515612dc057600080fd5b5050506040518051905060ff16118015612e435750600454600090600160a060020a031663614984d186600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515612e2757600080fd5b5af11515612e3457600080fd5b5050506040518051905060ff16115b1515612e4e57600080fd5b600054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612e8d57600080fd5b5af11515612e9a57600080fd5b505050604051805134149050612eaf57600080fd5b600354600160a060020a031663020f899a8660405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612ef757600080fd5b5af11515612f0457600080fd5b5050506040518051935050600083111561307b57600054600160a060020a031663e84742308460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612f6057600080fd5b5af11515612f6d57600080fd5b5050506040518051600554600654600454929550600160a060020a039182169350635b99df7f929082169133918791869116636352211e8c60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612fdb57600080fd5b5af11515612fe857600080fd5b505050604051805190508960405160e060020a63ffffffff8916028152600160a060020a039687166004820152948616602486015260448501939093529084166064840152909216608482015260a481019190915260c401602060405180830381600087803b151561305957600080fd5b5af1151561306657600080fd5b50505060405180519050151561307b57600080fd5b613084856141d2565b61308d846141d2565b600454600160a060020a031663ce5a5df73360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156130dd57600080fd5b5af115156130ea57600080fd5b5050506040518051600154600054919350600160a060020a039081169250631e5d2e419116634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561314257600080fd5b5af1151561314f57600080fd5b5050506040518051905083888860405160e060020a63ffffffff87160281526004810193909352602483019190915260448201526064016000604051808303818588803b151561319e57600080fd5b5af115156131ab57600080fd5b5050505083857ff0b757e02a273cc60dcbb8fb9fd8157b50a8c73af2a6bb8b7917d7c895482575838660405191825260208201526040908101905180910390a38033600160a060020a0316600080516020614c79833981519152878760405191825260208201526040908101905180910390a36132278561413e565b5050505050565b60008054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b60005433600160a060020a0390811691161461328957600080fd5b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156132c857600080fd5b5af115156132d557600080fd5b5050506040518051905015156132ea57600080fd5b600054600160a060020a0316635abaaa016040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561332957600080fd5b5af1151561333657600080fd5b50505060405180516004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03928316179055600054169050635550e4f36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156133a057600080fd5b5af115156133ad57600080fd5b50505060405180516001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392831617905560005416905063a76d368a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561341757600080fd5b5af1151561342457600080fd5b50505060405180516002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905550565b60075481565b600b5481565b600054600160a060020a03166386e476dd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156134a757600080fd5b5af115156134b457600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156134dd57600080fd5b600354600160a060020a031663e515a4d16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561351c57600080fd5b5af1151561352957600080fd5b5050506040518051600354909150600160a060020a031663b30387a46040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561357357600080fd5b5af1151561358057600080fd5b5050506040518051905014151561359657600080fd5b600354600160a060020a0316633c2f7df56040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156135d557600080fd5b5af115156135e257600080fd5b50506003547f82a435bab9dac7abe42e365cda0c3cb0f64bf2b839af282f9e312d2d66145c849150600160a060020a031663e515a4d16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561364657600080fd5b5af1151561365357600080fd5b5050506040518051905060405190815260200160405180910390a1565b600054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156136af57600080fd5b5af115156136bc57600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156136e557600080fd5b600081600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561373557600080fd5b5af1151561374257600080fd5b5050506040518051905011151561375857600080fd5b600054600160a060020a038083169163a9059cbb9116636ad5b3ea6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156137a157600080fd5b5af115156137ae57600080fd5b5050506040518051905083600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561380657600080fd5b5af1151561381357600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561386057600080fd5b5af1151561386d57600080fd5b5050506040518051505050565b60008054600160a060020a031663a2c174596040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b600654600160a060020a031681565b60008054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561390957600080fd5b5af1151561391657600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561393f57600080fd5b600160a060020a033016318290101561395757600080fd5b600054600160a060020a03166349b7a9c26040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561399657600080fd5b5af115156139a357600080fd5b5050506040518051915050600160a060020a038116630b6826ca836040518263ffffffff1660e060020a0281526004016000604051808303818588803b15156139eb57600080fd5b5af115156139f857600080fd5b50506000547f8c9a4f13b67cb64d7c6aa1ae0c9bf07694af521a28b93e7060020810ab4bc59f9250600160a060020a031690506349b7a9c26040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515613a5e57600080fd5b5af11515613a6b57600080fd5b5050506040518051905083604051600160a060020a03909216825260208201526040908101905180910390a15050565b600254600160a060020a031681565b600082820183811015613ab957fe5b8091505b5092915050565b600160a060020a0386166000908152600e60205260408120548190819060ff161515613b0e57613b0b670de0b6b3a7640000612278600c54876144c590919063ffffffff16565b91505b600554600160a060020a0316633cac23878a60405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613b5e57600080fd5b5af11515613b6b57600080fd5b5050506040518051905015613c87575087600160a060020a0381166351118f1d33878760405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515613bdd57600080fd5b5af11515613bea57600080fd5b505050604051805190501515613bff57600080fd5b80600160a060020a03166351118f1d33308560405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515613c6057600080fd5b5af11515613c6d57600080fd5b505050604051805190501515613c8257600080fd5b613d35565b600554600160a060020a0316635b99df7f8a3387848a613cad838a63ffffffff61484e16565b60405160e060020a63ffffffff8916028152600160a060020a039687166004820152948616602486015260448501939093529084166064840152909216608482015260a481019190915260c401602060405180830381600087803b1515613d1357600080fd5b5af11515613d2057600080fd5b505050604051805190501515613d3557600080fd5b613d4988612278888763ffffffff6144c516565b600554909350600160a060020a0316633cac23878860405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613d9c57600080fd5b5af11515613da957600080fd5b5050506040518051905015613e405786600160a060020a03166351118f1d86338660405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515613e1957600080fd5b5af11515613e2657600080fd5b505050604051805190501515613e3b57600080fd5b613ecc565b600554600160a060020a031663f18d03cc8887338760405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b1515613eaa57600080fd5b5af11515613eb757600080fd5b505050604051805190501515613ecc57600080fd5b50509695505050505050565b600354600160a060020a031663dd1b89c68260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515613f2057600080fd5b5af11515613f2d57600080fd5b50505060405180519050151561400157600354600454600160a060020a03918216916347e4ddf29184911663614984d18260a360405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515613f9b57600080fd5b5af11515613fa857600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401600060405180830381600087803b1515613ff057600080fd5b5af11515613ffd57600080fd5b5050505b600354600160a060020a03166391256ed08260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561404957600080fd5b5af1151561405657600080fd5b505050604051805190501561111857600354600160a060020a03166354e921cb82600060405160e060020a63ffffffff8516028152600481019290925215156024820152604401600060405180830381600087803b15156140b657600080fd5b5af115156140c357600080fd5b5050600354600160a060020a03169050632b100a31826140e281614860565b60405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b151561173b57600080fd5b600080614136612710612278868663ffffffff6144c516565b949350505050565b600354600160a060020a031663c7024b988260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561418657600080fd5b5af1151561419357600080fd5b505050604051805190501561111857807f868a9e71dfb115bed3ee872d882e85e6054c40386de4fbb9b016f78717d7b9ed60405160405180910390a250565b60006141dd82613ed8565b60038054600160a060020a0316630c5162838460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561422657600080fd5b5af1151561423357600080fd5b5050506040518051905010156142a057600354600160a060020a031663b556a8958360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561428b57600080fd5b5af1151561429857600080fd5b5050506143c1565b600354600790600160a060020a031663f8cbd5808460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156142eb57600080fd5b5af115156142f857600080fd5b5050506040518051905010156143c157600354600160a060020a0316639616b4108360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561435057600080fd5b5af1151561435d57600080fd5b5050600354600160a060020a0316905063549ddcbd83600060405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b15156143b057600080fd5b5af115156143bd57600080fd5b5050505b600354429061442b90600160a060020a031663f8cbd5808560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561440f57600080fd5b5af1151561441c57600080fd5b50505060405180519050614b26565b60035491019150600160a060020a031663883a92e1838360405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b151561447d57600080fd5b5af1151561448a57600080fd5b505050817fdd9be30312ed220ed4ad7da78e6ee32d6652506b26c7de8d06e849fa224d1c5d8260405190815260200160405180910390a25050565b6000808315156144d85760009150613abd565b508282028284828115156144e857fe5b0414613ab957fe5b6003546000908190600160a060020a031663e515a4d16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561453457600080fd5b5af1151561454157600080fd5b5050506040518051600354909150600160a060020a031663b30387a46040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561458b57600080fd5b5af1151561459857600080fd5b505050604051805190501015156145ae57600080fd5b600454600160a060020a031663ce5a5df78460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156145fe57600080fd5b5af1151561460b57600080fd5b5050506040518051600154600054919350600160a060020a039081169250631a9caab99116634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561466357600080fd5b5af1151561467057600080fd5b505050604051805190508360405160e060020a63ffffffff851602815260048101919091526024016000604051808303818588803b15156146b057600080fd5b5af115156146bd57600080fd5b505050508083600160a060020a0316600080516020614c7983398151915260008060405191825260208201526040908101905180910390a3600354600160a060020a0316635c752f6b6040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561473457600080fd5b5af1151561474157600080fd5b5091949350505050565b600080828481151561475957fe5b04949350505050565b600354600160a060020a031663b5c835928260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156147aa57600080fd5b5af115156147b757600080fd5b505050604051805190501561111857600354600160a060020a03166374268ff28260405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561480e57600080fd5b5af1151561481b57600080fd5b505050807f5ea1bcce7d1009a8f5578c7ae0fb858880637a891d4e67851c12e37b35f59c6360405160405180910390a250565b60008282111561485a57fe5b50900390565b600061486a614c35565b614872614c5d565b61487a614c5d565b600080600060a060405190810160409081526070825260756020830152607a81830152607f60608301526084608083015290965061014090519081016040908152600d825260126020830152601781830152601c606083015260216080830152602660a0830152602b60c0830152603060e08301526035610100830152603a6101208301529095506101409051908101604090815260578252605c602083015260619082015260666060820152606b6080820152608960a0820152608e60c0820152609360e08201526098610100820152609d6101208201529350600092508291505b60058210156149f057600454600160a060020a031663614984d18988856005811061498457fe5b602002015160405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b15156149c757600080fd5b5af115156149d457600080fd5b505050604051805160ff1693909301925060019091019061495d565b600091505b600a821015614b1757600454600160a060020a031663614984d1898685600a8110614a1c57fe5b602002015160405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b1515614a5f57600080fd5b5af11515614a6c57600080fd5b505050604051805160ff16915050801515614b0857600454614b0290600160a060020a031663614984d18a8886600a8110614aa357fe5b602002015160405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b1515614ae657600080fd5b5af11515614af357600080fd5b50505060405180519050614bcd565b60ff1690505b918201916001909101906149f5565b5050610e100295945050505050565b6000600882818110614b3457fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff169050600982600881101515614b6757fe5b60088104919091015460079091166004026101000a900463ffffffff1615610ae15760098260088110614b9657fe5b60088104919091015460079091166004026101000a900463ffffffff16436000190140811515614bc257fe5b06610e100201919050565b600060018260ff1610614c2d5760bd8260ff1610614c255760e08260ff1610614c1d5760f48260ff1610614c155760fe8260ff1610614c0d576005614c10565b60045b614c18565b60035b614c20565b60025b614c28565b60015b612874565b506000919050565b60a06040519081016040526005815b600081526000199091019060200181614c445790505090565b61014060405190810160405260008152600960208201614c44560051b6670023a2e348a2cb6b181f6ceed38b9ca16e2a416c7f437722cda97264d0a165627a7a72305820aa118b975d422de22dabc794fd0c9e187d7312f52af3d10fcb3c3fa797d785e10029000000000000000000000000cd3fa0487f41cc2fe73d3278f5356ffee0cbcc4b0000000000000000000000006cbd7992d39a106a64807125899b2dfc02a4369400000000000000000000000010cc060f6f9b2e5dcdb23f1361e4b368a7daec73

Deployed Bytecode

0x6060604052600436106102165763ffffffff60e060020a6000350416630422ddf3811461021857806304ef13531461023f5780630a19b14a14610263578063134a04ea146102b057806319774d43146102df5780631ed378a1146103135780632394a7971461032957806323d9ea801461034257806329cf90f3146103585780632cf42a6c14610374578063317ffcf21461038a578063341743311461039d57806335cf60df146103ab578063383a194c146103c15780633900f8f6146103cc5780633ae50ce7146103e557806352fa1ac2146103fc57806353b5306b14610404578063544447bb1461041a578063699f0c721461042d57806374268ff2146104435780637bb98a68146104595780638823a9c01461046c5780638d8d50d0146104825780638dca7a011461048a5780638fe2eb9e1461049d578063aa31e4a0146104b6578063af40ce20146104cc578063b93c7d42146104e2578063bd1723e5146104f5578063bfb39cc814610508578063c281309e14610527578063c7024b981461053a578063cbde2ff014610550578063d029a53014610566578063da9287d11461057c578063de763a401461058a578063e1c7392a1461059d578063e51bfd9a146105b0578063e5a07419146105c3578063ec7bb2ac146105d6578063ee360ff0146105e9578063ee81f57c14610608578063fc0656c91461061b578063ff3941531461062e578063ff8028b314610644575b005b341561022357600080fd5b61022b610657565b604051901515815260200160405180910390f35b341561024a57600080fd5b610216600160a060020a036004351660243515156106b2565b341561026e57600080fd5b610216600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e43516610104356101243561014435610752565b34156102bb57600080fd5b6102c36109f9565b604051600160a060020a03909116815260200160405180910390f35b34156102ea57600080fd5b610301600160a060020a0360043516602435610a08565b60405190815260200160405180910390f35b341561031e57600080fd5b610301600435610a25565b341561033457600080fd5b610216600435602435610ae6565b341561034d57600080fd5b610301600435610d87565b341561036357600080fd5b610216600435602435604435610e10565b341561037f57600080fd5b610216600435611037565b341561039557600080fd5b61030161111b565b61021660043560243561115b565b34156103b657600080fd5b610216600435611675565b61021660043561174e565b34156103d757600080fd5b610216600435602435611a40565b61022b600435600160a060020a0360243516611c47565b610301611fbd565b341561040f57600080fd5b61030160043561212e565b341561042557600080fd5b6102c3612284565b341561043857600080fd5b610301600435612293565b341561044e57600080fd5b610216600435612308565b341561046457600080fd5b6102c3612386565b341561047757600080fd5b610216600435612395565b61030161240f565b341561049557600080fd5b6102c3612491565b34156104a857600080fd5b6102166004356024356124a0565b34156104c157600080fd5b61021660043561257a565b34156104d757600080fd5b61021660043561262a565b34156104ed57600080fd5b610301612702565b341561050057600080fd5b6102c3612708565b341561051357600080fd5b61022b600160a060020a0360043516612717565b341561053257600080fd5b61030161272c565b341561054557600080fd5b610216600435612732565b341561055b57600080fd5b61022b6004356127a7565b341561057157600080fd5b61021660043561287a565b610216600435602435612be9565b341561059557600080fd5b61030161322e565b34156105a857600080fd5b61021661326e565b34156105bb57600080fd5b61030161345c565b34156105ce57600080fd5b610301613462565b34156105e157600080fd5b610216613468565b34156105f457600080fd5b610216600160a060020a0360043516613670565b341561061357600080fd5b61030161387a565b341561062657600080fd5b6102c36138ba565b341561063957600080fd5b6102166004356138c9565b341561064f57600080fd5b6102c3613a9b565b60008054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b5af115156106a457600080fd5b505050604051805191505090565b600054600160a060020a0316638f84aa096040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156106f157600080fd5b5af115156106fe57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561072757600080fd5b600160a060020a03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546000908190600290600160a060020a03168e8e8e8e8e8e6040516c01000000000000000000000000600160a060020a0398891681028252968816870260148201526028810195909552929095169093026048830152605c820192909252607c810192909252609c82015260bc016020604051808303816000865af115156107db57600080fd5b50506040518051925050600160a060020a03871660016040517f62797465733332204f72646572206861736800000000000000000000000000008152601201604051809103902084604051908152602001604051809103902060405191825260208201526040908101905180910390208888886040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af115156108a057600080fd5b505060206040510351600160a060020a03161480156108bf5750884311155b80156108ff5750600160a060020a0387166000908152600d602090815260408083208584529091529020548c906108fc908563ffffffff613aaa16565b11155b151561090a57600080fd5b6109188d8d8d8d8b88613ac4565b600160a060020a0388166000908152600d6020908152604080832086845290915290205490915061094f908463ffffffff613aaa16565b600160a060020a0388166000908152600d60209081526040808320868452909152908190209190915582907f48ff82aefa7342f35d79202e69327025e824234888fba3c16ca6ea0d0a62554a908f9086908f9086908d90339051600160a060020a0396871681526020810195909552928516604080860191909152606085019290925284166080840152921660a082015260c001905180910390a250505050505050505050505050565b600354600160a060020a031681565b600d60209081526000928352604080842090915290825290205481565b60008054600354600160a060020a039182169163e8474230911663020f899a8560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610a7b57600080fd5b5af11515610a8857600080fd5b5050506040518051905060405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610ac857600080fd5b5af11515610ad557600080fd5b50505060405180519150505b919050565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b2557600080fd5b5af11515610b3257600080fd5b5050506040518051159050610b4657600080fd5b600454600160a060020a031663818d4b5d338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b9c57600080fd5b5af11515610ba957600080fd5b505050604051805190501515610bbe57600080fd5b610bc7826127a7565b1515610bd257600080fd5b600354600160a060020a031663ee34c6ad8360405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610c1a57600080fd5b5af11515610c2757600080fd5b5050506040518051159050610c3b57600080fd5b600454600090600160a060020a031663614984d184600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610c8d57600080fd5b5af11515610c9a57600080fd5b5050506040518051905060ff16111515610cb357600080fd5b610cbc82613ed8565b600354600160a060020a03166311f02c87838360405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b1515610d0a57600080fd5b5af11515610d1757600080fd5b505050817f84abd4d356237b35dfca5b88dc4e394c7e9f4cb3b214adcabfabdc6fe1f5f76c8260405190815260200160405180910390a2801515610d8357817f2be3e43f2ef674b10d85513ca8bf940afa4d956bf07c710f5cb89258af357c4e60405160405180910390a25b5050565b6003546000908190600160a060020a0316638a626ba18460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610dd457600080fd5b5af11515610de157600080fd5b505050604051805190509050610e09610dfc82600a5461411d565b829063ffffffff613aaa16565b9392505050565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610e4f57600080fd5b5af11515610e5c57600080fd5b5050506040518051159050610e7057600080fd5b600454600160a060020a031663818d4b5d338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ec657600080fd5b5af11515610ed357600080fd5b505050604051805190501515610ee857600080fd5b600354600160a060020a031663b5c835928460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610f3057600080fd5b5af11515610f3d57600080fd5b5050506040518051159050610f5157600080fd5b600354600160a060020a031663dc35a90084848460405160e060020a63ffffffff8616028152600481019390935260248301919091526044820152606401600060405180830381600087803b1515610fa857600080fd5b5af11515610fb557600080fd5b505050827f13e4d00e26244f0e870ff787588c0980bf9d98eb39577648b77788542f19292a838360405191825260208201526040908101905180910390a281158015610fff575080155b1561103257827fba0d53156948fe5f38f8996945d3eefef1dd8044fb7dd7a32123d8d09b7164c060405160405180910390a25b505050565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561107657600080fd5b5af1151561108357600080fd5b505050604051805115905061109757600080fd5b600454600160a060020a031663818d4b5d338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156110ed57600080fd5b5af115156110fa57600080fd5b50505060405180519050151561110f57600080fd5b6111188161413e565b50565b60008054600160a060020a0316636a96c63e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b60008054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561119b57600080fd5b5af115156111a857600080fd5b50505060405180511590506111bc57600080fd5b600454600160a060020a031663818d4b5d338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561121257600080fd5b5af1151561121f57600080fd5b50505060405180519050801561129e5750600454600160a060020a031663818d4b5d338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561128657600080fd5b5af1151561129357600080fd5b505050604051805190505b15156112a957600080fd5b818314156112b657600080fd5b6112bf836127a7565b80156112cf57506112cf826127a7565b15156112da57600080fd5b600454600090600160a060020a031663614984d185600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b151561132c57600080fd5b5af1151561133957600080fd5b5050506040518051905060ff161180156113bc5750600454600090600160a060020a031663614984d184600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b15156113a057600080fd5b5af115156113ad57600080fd5b5050506040518051905060ff16115b15156113c757600080fd5b600054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561140657600080fd5b5af1151561141357600080fd5b50505060405180513414905061142857600080fd5b600060075411156114cb57600554600654600754600160a060020a039283169263f18d03cc9216903390849060405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b15156114a957600080fd5b5af115156114b657600080fd5b5050506040518051905015156114cb57600080fd5b6114d4836141d2565b6114dd826141d2565b600454600160a060020a031663ce5a5df73360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561152d57600080fd5b5af1151561153a57600080fd5b5050506040518051600154600054919350600160a060020a039081169250631e5d2e419116634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561159257600080fd5b5af1151561159f57600080fd5b5050506040518051905083868660405160e060020a63ffffffff87160281526004810193909352602483019190915260448201526064016000604051808303818588803b15156115ee57600080fd5b5af115156115fb57600080fd5b5050505081837ff74d29979ab38d16cc27c6f61b42ecd102804ed6122ba538fffbc67ea689acda8360075460405191825260208201526040908101905180910390a38033600160a060020a0316600080516020614c79833981519152858560405191825260208201526040908101905180910390a3505050565b600054600160a060020a0316631d296e8d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116b457600080fd5b5af115156116c157600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156116ea57600080fd5b600354600160a060020a03166354e921cb82600160405160e060020a63ffffffff8516028152600481019290925215156024820152604401600060405180830381600087803b151561173b57600080fd5b5af1151561174857600080fd5b50505050565b600080548190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561179057600080fd5b5af1151561179d57600080fd5b50505060405180511590506117b157600080fd5b600354600160a060020a031663b5c835928460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156117f957600080fd5b5af1151561180657600080fd5b50505060405180519050151561181b57600080fd5b600354600160a060020a031663ef4ba5988460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561186357600080fd5b5af1151561187057600080fd5b50505060405180519250508115156118eb57600354600160a060020a0316638a626ba18460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156118ca57600080fd5b5af115156118d757600080fd5b50505060405180511590506118eb57600080fd5b6118f483612293565b34146118ff57600080fd5b600454600160a060020a0316636352211e8460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561194757600080fd5b5af1151561195457600080fd5b505050604051805190509050827f2ea9d733fc3abfc39714b4ba66cc5968e15977a6335e955ec1e3bef0dc9c772d83600060405191825260208201526040908101905180910390a2600454600160a060020a031663bcf0dd8e82338660405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b15156119ff57600080fd5b5af11515611a0c57600080fd5b505050600160a060020a0381166108fc83150283604051600060405180830381858888f19350505050151561103257600080fd5b6000611a4b8361212e565b600254909150600160a060020a0316639dc29fac33611a70848663ffffffff6144c516565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611ab357600080fd5b5af11515611ac057600080fd5b505050604051805190501515611ad557600080fd5b6003544290600160a060020a0316630ecda1138560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611b1f57600080fd5b5af11515611b2c57600080fd5b50505060405180519050111515611b4257600080fd5b600354600054600160a060020a03918216916309850495918691611bc391879116639ea764756040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b9657600080fd5b5af11515611ba357600080fd5b505050604051805167ffffffffffffffff1691905063ffffffff6144c516565b60405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b1515611bfe57600080fd5b5af11515611c0b57600080fd5b505050827fb104872e32a5db292bde51a9980d0b23c6c8051fe9cb2f19478ceb0161db77878360405190815260200160405180910390a2505050565b60008054819081908190600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611c8d57600080fd5b5af11515611c9a57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316141515611cc357600080fd5b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611d0257600080fd5b5af11515611d0f57600080fd5b505050604051805190501515611d2457600080fd5b600354600160a060020a0316637cd022d46040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611d6357600080fd5b5af11515611d7057600080fd5b5050506040518051600354909150611de3908890600160a060020a0316638091fbe16040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611dc057600080fd5b5af11515611dcd57600080fd5b505050604051805191905063ffffffff613aaa16565b1115611dee57600080fd5b600160a060020a03851615611e035784611e05565b335b9150600090505b85811015611fb157600454600160a060020a031663ce5a5df78360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611e6457600080fd5b5af11515611e7157600080fd5b5050506040518051600154909450600160a060020a03169050631a9caab98460405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515611ec657600080fd5b5af11515611ed357600080fd5b5050508282600160a060020a0316600080516020614c7983398151915260008060405191825260208201526040908101905180910390a3600354600160a060020a0316635c752f6b6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611f4957600080fd5b5af11515611f5657600080fd5b5050600354600160a060020a0316905063de0d50e46040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611f9957600080fd5b5af11515611fa657600080fd5b505050600101611e0c565b50600195945050505050565b600080548190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611fff57600080fd5b5af1151561200c57600080fd5b505050604051805115905061202057600080fd5b600054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561205f57600080fd5b5af1151561206c57600080fd5b50505060405180513414905061208157600080fd5b61208961387a565b600554600654919250600160a060020a039081169163f18d03cc911633838560405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b15156120fd57600080fd5b5af1151561210a57600080fd5b50505060405180519050151561211f57600080fd5b612128336144f0565b91505090565b6003546000908190600890600160a060020a031663f8cbd5808560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561217e57600080fd5b5af1151561218b57600080fd5b505050604051805190506008811061219f57fe5b60088104919091015460035460079092166004026101000a900463ffffffff169150610e0990829061227890612216908390600160a060020a03166365089dd88960405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611dc057600080fd5b600054600160a060020a03166373def2b76040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561225557600080fd5b5af1151561226257600080fd5b505050604051805191905063ffffffff6144c516565b9063ffffffff61474b16565b600454600160a060020a031681565b6003546000908190600160a060020a031663ef4ba5988460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156122e057600080fd5b5af115156122ed57600080fd5b505050604051805190509050610e09610dfc82600b5461411d565b600054600160a060020a0316635abaaa016040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561234757600080fd5b5af1151561235457600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561237d57600080fd5b61111881614762565b600554600160a060020a031681565b600054600160a060020a0316638f84aa096040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156123d457600080fd5b5af115156123e157600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561240a57600080fd5b600c55565b60008054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561244f57600080fd5b5af1151561245c57600080fd5b505050604051805115905061247057600080fd5b61247861111b565b341461248357600080fd5b61248c336144f0565b905090565b600054600160a060020a031681565b600054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156124df57600080fd5b5af115156124ec57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561251557600080fd5b6109c48210801561252757506109c481105b151561253257600080fd5b600a829055600b8190557f30c8ebfc35cc822986e28f932b0a3ec7ddeb7d22b2e2069c8418b8f6bb2be664828260405191825260208201526040908101905180910390a15050565b600054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156125b957600080fd5b5af115156125c657600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156125ef57600080fd5b60078190557fb2b64ec3f4c18a4ea3329df9d86b4abb877dc0b4fb206cfe2165d904cf82559b8160405190815260200160405180910390a150565b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561266957600080fd5b5af1151561267657600080fd5b505050604051805115905061268a57600080fd5b600454600160a060020a031663818d4b5d338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156126e057600080fd5b5af115156126ed57600080fd5b50505060405180519050151561237d57600080fd5b600a5481565b600154600160a060020a031681565b600e6020526000908152604090205460ff1681565b600c5481565b600054600160a060020a0316635abaaa016040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561277157600080fd5b5af1151561277e57600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561110f57600080fd5b600454600090600160a060020a031663cbde2ff08360405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156127f257600080fd5b5af115156127ff57600080fd5b50505060405180519050801561287457506003544290600160a060020a0316630ecda1138460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561285a57600080fd5b5af1151561286757600080fd5b5050506040518051905011155b92915050565b6000805481908190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156128be57600080fd5b5af115156128cb57600080fd5b50505060405180511590506128df57600080fd5b600354600160a060020a031663b5c835928560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561292757600080fd5b5af1151561293457600080fd5b50505060405180519050151561294957600080fd5b600354600160a060020a0316638a626ba18560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561299157600080fd5b5af1151561299e57600080fd5b5050506040518051935050821515612a1957600354600160a060020a031663ef4ba5988560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156129f857600080fd5b5af11515612a0557600080fd5b5050506040518051159050612a1957600080fd5b600454600160a060020a0316636352211e8560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612a6157600080fd5b5af11515612a6e57600080fd5b50505060405180519250506000831115612b3457612a8b84610d87565b600554600654919250600160a060020a0390811691635b99df7f9116338484878960405160e060020a63ffffffff8916028152600160a060020a039687166004820152948616602486015260448501939093529084166064840152909216608482015260a481019190915260c401602060405180830381600087803b1515612b1257600080fd5b5af11515612b1f57600080fd5b505050604051805190501515612b3457600080fd5b837f2ea9d733fc3abfc39714b4ba66cc5968e15977a6335e955ec1e3bef0dc9c772d60008560405191825260208201526040908101905180910390a2600454600160a060020a031663bcf0dd8e83338760405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515612bd357600080fd5b5af11515612be057600080fd5b50505050505050565b6000805481908190600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612c2d57600080fd5b5af11515612c3a57600080fd5b5050506040518051159050612c4e57600080fd5b600454600160a060020a031663818d4b5d338660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515612ca457600080fd5b5af11515612cb157600080fd5b505050604051805190501515612cc657600080fd5b83851415612cd357600080fd5b612cdc856127a7565b8015612cec5750612cec846127a7565b1515612cf757600080fd5b600354600160a060020a031663ee34c6ad8660405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612d3f57600080fd5b5af11515612d4c57600080fd5b505050604051805190501515612d6157600080fd5b600454600090600160a060020a031663614984d187600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515612db357600080fd5b5af11515612dc057600080fd5b5050506040518051905060ff16118015612e435750600454600090600160a060020a031663614984d186600a60405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515612e2757600080fd5b5af11515612e3457600080fd5b5050506040518051905060ff16115b1515612e4e57600080fd5b600054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612e8d57600080fd5b5af11515612e9a57600080fd5b505050604051805134149050612eaf57600080fd5b600354600160a060020a031663020f899a8660405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612ef757600080fd5b5af11515612f0457600080fd5b5050506040518051935050600083111561307b57600054600160a060020a031663e84742308460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612f6057600080fd5b5af11515612f6d57600080fd5b5050506040518051600554600654600454929550600160a060020a039182169350635b99df7f929082169133918791869116636352211e8c60405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612fdb57600080fd5b5af11515612fe857600080fd5b505050604051805190508960405160e060020a63ffffffff8916028152600160a060020a039687166004820152948616602486015260448501939093529084166064840152909216608482015260a481019190915260c401602060405180830381600087803b151561305957600080fd5b5af1151561306657600080fd5b50505060405180519050151561307b57600080fd5b613084856141d2565b61308d846141d2565b600454600160a060020a031663ce5a5df73360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156130dd57600080fd5b5af115156130ea57600080fd5b5050506040518051600154600054919350600160a060020a039081169250631e5d2e419116634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561314257600080fd5b5af1151561314f57600080fd5b5050506040518051905083888860405160e060020a63ffffffff87160281526004810193909352602483019190915260448201526064016000604051808303818588803b151561319e57600080fd5b5af115156131ab57600080fd5b5050505083857ff0b757e02a273cc60dcbb8fb9fd8157b50a8c73af2a6bb8b7917d7c895482575838660405191825260208201526040908101905180910390a38033600160a060020a0316600080516020614c79833981519152878760405191825260208201526040908101905180910390a36132278561413e565b5050505050565b60008054600160a060020a0316634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b60005433600160a060020a0390811691161461328957600080fd5b600054600160a060020a0316635c975abb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156132c857600080fd5b5af115156132d557600080fd5b5050506040518051905015156132ea57600080fd5b600054600160a060020a0316635abaaa016040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561332957600080fd5b5af1151561333657600080fd5b50505060405180516004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03928316179055600054169050635550e4f36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156133a057600080fd5b5af115156133ad57600080fd5b50505060405180516001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392831617905560005416905063a76d368a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561341757600080fd5b5af1151561342457600080fd5b50505060405180516002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905550565b60075481565b600b5481565b600054600160a060020a03166386e476dd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156134a757600080fd5b5af115156134b457600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156134dd57600080fd5b600354600160a060020a031663e515a4d16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561351c57600080fd5b5af1151561352957600080fd5b5050506040518051600354909150600160a060020a031663b30387a46040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561357357600080fd5b5af1151561358057600080fd5b5050506040518051905014151561359657600080fd5b600354600160a060020a0316633c2f7df56040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156135d557600080fd5b5af115156135e257600080fd5b50506003547f82a435bab9dac7abe42e365cda0c3cb0f64bf2b839af282f9e312d2d66145c849150600160a060020a031663e515a4d16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561364657600080fd5b5af1151561365357600080fd5b5050506040518051905060405190815260200160405180910390a1565b600054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156136af57600080fd5b5af115156136bc57600080fd5b50505060405180519050600160a060020a031633600160a060020a03161415156136e557600080fd5b600081600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561373557600080fd5b5af1151561374257600080fd5b5050506040518051905011151561375857600080fd5b600054600160a060020a038083169163a9059cbb9116636ad5b3ea6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156137a157600080fd5b5af115156137ae57600080fd5b5050506040518051905083600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561380657600080fd5b5af1151561381357600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561386057600080fd5b5af1151561386d57600080fd5b5050506040518051505050565b60008054600160a060020a031663a2c174596040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561069757600080fd5b600654600160a060020a031681565b60008054600160a060020a031663cf73a1bc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561390957600080fd5b5af1151561391657600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561393f57600080fd5b600160a060020a033016318290101561395757600080fd5b600054600160a060020a03166349b7a9c26040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561399657600080fd5b5af115156139a357600080fd5b5050506040518051915050600160a060020a038116630b6826ca836040518263ffffffff1660e060020a0281526004016000604051808303818588803b15156139eb57600080fd5b5af115156139f857600080fd5b50506000547f8c9a4f13b67cb64d7c6aa1ae0c9bf07694af521a28b93e7060020810ab4bc59f9250600160a060020a031690506349b7a9c26040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515613a5e57600080fd5b5af11515613a6b57600080fd5b5050506040518051905083604051600160a060020a03909216825260208201526040908101905180910390a15050565b600254600160a060020a031681565b600082820183811015613ab957fe5b8091505b5092915050565b600160a060020a0386166000908152600e60205260408120548190819060ff161515613b0e57613b0b670de0b6b3a7640000612278600c54876144c590919063ffffffff16565b91505b600554600160a060020a0316633cac23878a60405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613b5e57600080fd5b5af11515613b6b57600080fd5b5050506040518051905015613c87575087600160a060020a0381166351118f1d33878760405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515613bdd57600080fd5b5af11515613bea57600080fd5b505050604051805190501515613bff57600080fd5b80600160a060020a03166351118f1d33308560405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515613c6057600080fd5b5af11515613c6d57600080fd5b505050604051805190501515613c8257600080fd5b613d35565b600554600160a060020a0316635b99df7f8a3387848a613cad838a63ffffffff61484e16565b60405160e060020a63ffffffff8916028152600160a060020a039687166004820152948616602486015260448501939093529084166064840152909216608482015260a481019190915260c401602060405180830381600087803b1515613d1357600080fd5b5af11515613d2057600080fd5b505050604051805190501515613d3557600080fd5b613d4988612278888763ffffffff6144c516565b600554909350600160a060020a0316633cac23878860405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613d9c57600080fd5b5af11515613da957600080fd5b5050506040518051905015613e405786600160a060020a03166351118f1d86338660405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515613e1957600080fd5b5af11515613e2657600080fd5b505050604051805190501515613e3b57600080fd5b613ecc565b600554600160a060020a031663f18d03cc8887338760405160e060020a63ffffffff8716028152600160a060020a0394851660048201529284166024840152921660448201526064810191909152608401602060405180830381600087803b1515613eaa57600080fd5b5af11515613eb757600080fd5b505050604051805190501515613ecc57600080fd5b50509695505050505050565b600354600160a060020a031663dd1b89c68260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515613f2057600080fd5b5af11515613f2d57600080fd5b50505060405180519050151561400157600354600454600160a060020a03918216916347e4ddf29184911663614984d18260a360405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515613f9b57600080fd5b5af11515613fa857600080fd5b5050506040518051905060405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401600060405180830381600087803b1515613ff057600080fd5b5af11515613ffd57600080fd5b5050505b600354600160a060020a03166391256ed08260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561404957600080fd5b5af1151561405657600080fd5b505050604051805190501561111857600354600160a060020a03166354e921cb82600060405160e060020a63ffffffff8516028152600481019290925215156024820152604401600060405180830381600087803b15156140b657600080fd5b5af115156140c357600080fd5b5050600354600160a060020a03169050632b100a31826140e281614860565b60405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b151561173b57600080fd5b600080614136612710612278868663ffffffff6144c516565b949350505050565b600354600160a060020a031663c7024b988260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561418657600080fd5b5af1151561419357600080fd5b505050604051805190501561111857807f868a9e71dfb115bed3ee872d882e85e6054c40386de4fbb9b016f78717d7b9ed60405160405180910390a250565b60006141dd82613ed8565b60038054600160a060020a0316630c5162838460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561422657600080fd5b5af1151561423357600080fd5b5050506040518051905010156142a057600354600160a060020a031663b556a8958360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561428b57600080fd5b5af1151561429857600080fd5b5050506143c1565b600354600790600160a060020a031663f8cbd5808460405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156142eb57600080fd5b5af115156142f857600080fd5b5050506040518051905010156143c157600354600160a060020a0316639616b4108360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561435057600080fd5b5af1151561435d57600080fd5b5050600354600160a060020a0316905063549ddcbd83600060405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b15156143b057600080fd5b5af115156143bd57600080fd5b5050505b600354429061442b90600160a060020a031663f8cbd5808560405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561440f57600080fd5b5af1151561441c57600080fd5b50505060405180519050614b26565b60035491019150600160a060020a031663883a92e1838360405160e060020a63ffffffff851602815260048101929092526024820152604401600060405180830381600087803b151561447d57600080fd5b5af1151561448a57600080fd5b505050817fdd9be30312ed220ed4ad7da78e6ee32d6652506b26c7de8d06e849fa224d1c5d8260405190815260200160405180910390a25050565b6000808315156144d85760009150613abd565b508282028284828115156144e857fe5b0414613ab957fe5b6003546000908190600160a060020a031663e515a4d16040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561453457600080fd5b5af1151561454157600080fd5b5050506040518051600354909150600160a060020a031663b30387a46040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561458b57600080fd5b5af1151561459857600080fd5b505050604051805190501015156145ae57600080fd5b600454600160a060020a031663ce5a5df78460405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156145fe57600080fd5b5af1151561460b57600080fd5b5050506040518051600154600054919350600160a060020a039081169250631a9caab99116634c6226fc6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561466357600080fd5b5af1151561467057600080fd5b505050604051805190508360405160e060020a63ffffffff851602815260048101919091526024016000604051808303818588803b15156146b057600080fd5b5af115156146bd57600080fd5b505050508083600160a060020a0316600080516020614c7983398151915260008060405191825260208201526040908101905180910390a3600354600160a060020a0316635c752f6b6040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561473457600080fd5b5af1151561474157600080fd5b5091949350505050565b600080828481151561475957fe5b04949350505050565b600354600160a060020a031663b5c835928260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156147aa57600080fd5b5af115156147b757600080fd5b505050604051805190501561111857600354600160a060020a03166374268ff28260405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561480e57600080fd5b5af1151561481b57600080fd5b505050807f5ea1bcce7d1009a8f5578c7ae0fb858880637a891d4e67851c12e37b35f59c6360405160405180910390a250565b60008282111561485a57fe5b50900390565b600061486a614c35565b614872614c5d565b61487a614c5d565b600080600060a060405190810160409081526070825260756020830152607a81830152607f60608301526084608083015290965061014090519081016040908152600d825260126020830152601781830152601c606083015260216080830152602660a0830152602b60c0830152603060e08301526035610100830152603a6101208301529095506101409051908101604090815260578252605c602083015260619082015260666060820152606b6080820152608960a0820152608e60c0820152609360e08201526098610100820152609d6101208201529350600092508291505b60058210156149f057600454600160a060020a031663614984d18988856005811061498457fe5b602002015160405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b15156149c757600080fd5b5af115156149d457600080fd5b505050604051805160ff1693909301925060019091019061495d565b600091505b600a821015614b1757600454600160a060020a031663614984d1898685600a8110614a1c57fe5b602002015160405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b1515614a5f57600080fd5b5af11515614a6c57600080fd5b505050604051805160ff16915050801515614b0857600454614b0290600160a060020a031663614984d18a8886600a8110614aa357fe5b602002015160405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b1515614ae657600080fd5b5af11515614af357600080fd5b50505060405180519050614bcd565b60ff1690505b918201916001909101906149f5565b5050610e100295945050505050565b6000600882818110614b3457fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff169050600982600881101515614b6757fe5b60088104919091015460079091166004026101000a900463ffffffff1615610ae15760098260088110614b9657fe5b60088104919091015460079091166004026101000a900463ffffffff16436000190140811515614bc257fe5b06610e100201919050565b600060018260ff1610614c2d5760bd8260ff1610614c255760e08260ff1610614c1d5760f48260ff1610614c155760fe8260ff1610614c0d576005614c10565b60045b614c18565b60035b614c20565b60025b614c28565b60015b612874565b506000919050565b60a06040519081016040526005815b600081526000199091019060200181614c445790505090565b61014060405190810160405260008152600960208201614c44560051b6670023a2e348a2cb6b181f6ceed38b9ca16e2a416c7f437722cda97264d0a165627a7a72305820aa118b975d422de22dabc794fd0c9e187d7312f52af3d10fcb3c3fa797d785e10029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000cd3fa0487f41cc2fe73d3278f5356ffee0cbcc4b0000000000000000000000006cbd7992d39a106a64807125899b2dfc02a4369400000000000000000000000010cc060f6f9b2e5dcdb23f1361e4b368a7daec73

-----Decoded View---------------
Arg [0] : _breedingDB (address): 0xCD3fA0487F41cc2FE73D3278F5356ffEE0cbCc4B
Arg [1] : _balances (address): 0x6CBD7992D39A106A64807125899b2dFC02a43694
Arg [2] : _unicornManagementAddress (address): 0x10CC060f6f9B2E5DCDB23F1361E4b368A7DAeC73

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000cd3fa0487f41cc2fe73d3278f5356ffee0cbcc4b
Arg [1] : 0000000000000000000000006cbd7992d39a106a64807125899b2dfc02a43694
Arg [2] : 00000000000000000000000010cc060f6f9b2e5dcdb23f1361e4b368a7daec73


Swarm Source

bzzr://aa118b975d422de22dabc794fd0c9e187d7312f52af3d10fcb3c3fa797d785e1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.