false
true
0

Contract Address Details

0x6BC8530fecc0001b9FC0bf5DAA17873e847616ed

Contract Name
FarmFactory
Creator
0xf81d96–255dc9 at 0xe4e2da–2be4db
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
Fetching transactions...
Transfers
Fetching transfers...
Gas Used
Fetching gas used...
Last Balance Update
26351027
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify. View contract in Sourcify repository
Contract name:
FarmFactory




Optimization enabled
true
Compiler version
v0.7.6+commit.7338295f




Optimization runs
200
EVM Version
istanbul




Verified at
2026-04-22T14:35:46.271061Z

Constructor Arguments

000000000000000000000000f869538e3904778a0cb1ff620c8e83c7df36b946000000000000000000000000851bd450febfd2aa5f48e8f370aaa3e3f96d190300000000000000000000000099938ab1589a23302a16f71ea7f828db64fc2a48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000003a697066733a2f2f697066732f516d62767136766975376453534e5a6964446741385a676d3258556a576e37755061566b41536878785a3532366d000000000000000000000000000000000000000000000000000000000000000000000000003a697066733a2f2f697066732f516d58415743523267326244344b66324235444767725953336d693139456e48794651726378355a553466316466000000000000

Arg [0] (address) : 0xf869538e3904778a0cb1ff620c8e83c7df36b946
Arg [1] (address) : 0x851bd450febfd2aa5f48e8f370aaa3e3f96d1903
Arg [2] (address) : 0x99938ab1589a23302a16f71ea7f828db64fc2a48
Arg [3] (uint256) : 0
Arg [4] (string) : ipfs://ipfs/Qmbvq6viu7dSSNZidDgA8Zgm2XUjWn7uPaVkAShxxZ526m
Arg [5] (string) : ipfs://ipfs/QmXAWCR2g2bD4Kf2B5DGgrYS3mi19EnHyFQrcx5ZU4f1df

              

FarmFactory.sol

// File: contracts\farming\util\DFOHub.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.7.6;

interface IDoubleProxy {
    function proxy() external view returns (address);
}

interface IMVDProxy {
    function getMVDFunctionalitiesManagerAddress() external view returns(address);
    function getMVDWalletAddress() external view returns (address);
    function getStateHolderAddress() external view returns(address);
    function submit(string calldata codeName, bytes calldata data) external payable returns(bytes memory returnData);
}

interface IMVDFunctionalitiesManager {
    function getFunctionalityData(string calldata codeName) external view returns(address, uint256, string memory, address, uint256);
    function isAuthorizedFunctionality(address functionality) external view returns(bool);
}

interface IStateHolder {
    function getUint256(string calldata name) external view returns(uint256);
    function getAddress(string calldata name) external view returns(address);
    function clear(string calldata varName) external returns(string memory oldDataType, bytes memory oldVal);
}

// File: contracts\farming\IFarmFactory.sol

//SPDX_License_Identifier: MIT
pragma solidity ^0.7.6;

interface IFarmFactory {

    event ExtensionCloned(address indexed);

    function feePercentageInfo() external view returns (uint256, address);
    function farmDefaultExtension() external view returns(address);
    function cloneFarmDefaultExtension() external returns(address);
    function getFarmTokenCollectionURI() external view returns (string memory);
    function getFarmTokenURI() external view returns (string memory);
}

// File: contracts\farming\FarmFactory.sol

//SPDX_License_Identifier: MIT
pragma solidity ^0.7.6;



contract FarmFactory is IFarmFactory {

    // farm contract implementation address
    address public farmMainImplAddress;
    // farming default extension
    address public override farmDefaultExtension;
    // double proxy address of the linked DFO
    address public _doubleProxy;
    // linked DFO exit fee
    uint256 private _feePercentage;
    // collection uri
    string public farmTokenCollectionURI;
    // farm token uri
    string public farmTokenURI;

    // event that tracks farm main contracts deployed
    event FarmMainDeployed(address indexed farmMainAddress, address indexed sender, bytes initResultData);
    // event that tracks logic contract address change
    event FarmMainLogicSet(address indexed newAddress);
    // event that tracks default extension contract address change
    event FarmDefaultExtensionSet(address indexed newAddress);
    // event that tracks wallet changes
    event FeePercentageSet(uint256 newFeePercentage);

    constructor(address doubleProxy, address _farmMainImplAddress, address _farmDefaultExtension, uint256 feePercentage, string memory farmTokenCollectionUri, string memory farmTokenUri) {
        _doubleProxy = doubleProxy;
        farmTokenCollectionURI = farmTokenCollectionUri;
        farmTokenURI = farmTokenUri;
        emit FarmMainLogicSet(farmMainImplAddress = _farmMainImplAddress);
        emit FarmDefaultExtensionSet(farmDefaultExtension = _farmDefaultExtension);
        emit FeePercentageSet(_feePercentage = feePercentage);
    }

    /** PUBLIC METHODS */

    function feePercentageInfo() public override view returns (uint256, address) {
        return (_feePercentage, IMVDProxy(IDoubleProxy(_doubleProxy).proxy()).getMVDWalletAddress());
    }

    /** @dev allows the DFO to update the double proxy address.
      * @param newDoubleProxy new double proxy address.
    */
    function setDoubleProxy(address newDoubleProxy) public onlyDFO {
        _doubleProxy = newDoubleProxy;
    }

    /** @dev change the fee percentage
     * @param feePercentage new fee percentage.
     */
    function updateFeePercentage(uint256 feePercentage) public onlyDFO {
        emit FeePercentageSet(_feePercentage = feePercentage);
    }

    /** @dev allows the factory owner to update the logic contract address.
     * @param _implAddress new farm logic implementation address.
     */
    function updateLogicAddress(address _implAddress) public onlyDFO {
        emit FarmMainLogicSet(farmMainImplAddress = _implAddress);
    }

    /** @dev allows the factory owner to update the default extension contract address.
     * @param _farmDefaultExtensionAddress new farm extension address.
     */
    function updateDefaultExtensionAddress(address _farmDefaultExtensionAddress) public onlyDFO {
        emit FarmDefaultExtensionSet(farmDefaultExtension = _farmDefaultExtensionAddress);
    }

    /** @dev allows the factory owner to update the farm token collection uri.
     * @param farmTokenCollectionUri new farm token collection uri.
     */
    function updateFarmTokenCollectionURI(string memory farmTokenCollectionUri) public onlyDFO {
        farmTokenCollectionURI = farmTokenCollectionUri;
    }

    /** @dev allows the factory owner to update the farm token uri.
     * @param farmTokenUri new farm token collection uri.
     */
    function updateFarmTokenURI(string memory farmTokenUri) public onlyDFO {
        farmTokenURI = farmTokenUri;
    }

    /** @dev returns the farm token collection uri.
      * @return farm token collection uri.
     */
    function getFarmTokenCollectionURI() public override view returns (string memory) {
        return farmTokenCollectionURI;
    }

    /** @dev returns the farm token uri.
      * @return farm token uri.
     */
    function getFarmTokenURI() public override view returns (string memory) {
        return farmTokenURI;
    }

    /** @dev utlity method to clone default extension
     * @return clonedExtension the address of the actually-cloned farming extension
     */
    function cloneFarmDefaultExtension() public override returns(address clonedExtension) {
        emit ExtensionCloned(clonedExtension = _clone(farmDefaultExtension));
    }

    /** @dev this function deploys a new Farming contract and calls the encoded function passed as data.
     * @param data encoded initialize function for the farming contract (check Farming contract code).
     * @return contractAddress new farming contract address.
     * @return initResultData new farming contract call result.
     */
    function deploy(bytes memory data) public returns (address contractAddress, bytes memory initResultData) {
        initResultData = _call(contractAddress = _clone(farmMainImplAddress), data);
        emit FarmMainDeployed(contractAddress, msg.sender, initResultData);
    }

    /** PRIVATE METHODS */

    /** @dev clones the input contract address and returns the copied contract address.
     * @param original address of the original contract.
     * @return copy copied contract address.
     */
    function _clone(address original) private returns (address copy) {
        assembly {
            mstore(
                0,
                or(
                    0x5880730000000000000000000000000000000000000000803b80938091923cF3,
                    mul(original, 0x1000000000000000000)
                )
            )
            copy := create(0, 0, 32)
            switch extcodesize(copy)
                case 0 {
                    invalid()
                }
        }
    }

    /** @dev calls the contract at the given location using the given payload and returns the returnData.
      * @param location location to call.
      * @param payload call payload.
      * @return returnData call return data.
     */
    function _call(address location, bytes memory payload) private returns(bytes memory returnData) {
        assembly {
            let result := call(gas(), location, 0, add(payload, 0x20), mload(payload), 0, 0)
            let size := returndatasize()
            returnData := mload(0x40)
            mstore(returnData, size)
            let returnDataPayloadStart := add(returnData, 0x20)
            returndatacopy(returnDataPayloadStart, 0, size)
            mstore(0x40, add(returnDataPayloadStart, size))
            switch result case 0 {revert(returnDataPayloadStart, size)}
        }
    }

    /** @dev onlyDFO modifier used to check for unauthorized accesses. */
    modifier onlyDFO() {
        require(IMVDFunctionalitiesManager(IMVDProxy(IDoubleProxy(_doubleProxy).proxy()).getMVDFunctionalitiesManagerAddress()).isAuthorizedFunctionality(msg.sender), "Unauthorized.");
        _;
    }
}
        

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":true},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"istanbul","compilationTarget":{"FarmFactory.sol":"FarmFactory"}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"doubleProxy","internalType":"address"},{"type":"address","name":"_farmMainImplAddress","internalType":"address"},{"type":"address","name":"_farmDefaultExtension","internalType":"address"},{"type":"uint256","name":"feePercentage","internalType":"uint256"},{"type":"string","name":"farmTokenCollectionUri","internalType":"string"},{"type":"string","name":"farmTokenUri","internalType":"string"}]},{"type":"event","name":"ExtensionCloned","inputs":[{"type":"address","name":"","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"FarmDefaultExtensionSet","inputs":[{"type":"address","name":"newAddress","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"FarmMainDeployed","inputs":[{"type":"address","name":"farmMainAddress","internalType":"address","indexed":true},{"type":"address","name":"sender","internalType":"address","indexed":true},{"type":"bytes","name":"initResultData","internalType":"bytes","indexed":false}],"anonymous":false},{"type":"event","name":"FarmMainLogicSet","inputs":[{"type":"address","name":"newAddress","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"FeePercentageSet","inputs":[{"type":"uint256","name":"newFeePercentage","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"_doubleProxy","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"address","name":"clonedExtension","internalType":"address"}],"name":"cloneFarmDefaultExtension","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"address","name":"contractAddress","internalType":"address"},{"type":"bytes","name":"initResultData","internalType":"bytes"}],"name":"deploy","inputs":[{"type":"bytes","name":"data","internalType":"bytes"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"farmDefaultExtension","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"farmMainImplAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"farmTokenCollectionURI","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"farmTokenURI","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"},{"type":"address","name":"","internalType":"address"}],"name":"feePercentageInfo","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"getFarmTokenCollectionURI","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"getFarmTokenURI","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDoubleProxy","inputs":[{"type":"address","name":"newDoubleProxy","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateDefaultExtensionAddress","inputs":[{"type":"address","name":"_farmDefaultExtensionAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateFarmTokenCollectionURI","inputs":[{"type":"string","name":"farmTokenCollectionUri","internalType":"string"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateFarmTokenURI","inputs":[{"type":"string","name":"farmTokenUri","internalType":"string"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateFeePercentage","inputs":[{"type":"uint256","name":"feePercentage","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateLogicAddress","inputs":[{"type":"address","name":"_implAddress","internalType":"address"}]}]
              

Contract Creation Code

Verify & Publish
0x60806040523480156200001157600080fd5b50604051620018e8380380620018e8833981810160405260c08110156200003757600080fd5b81516020830151604080850151606086015160808701805193519597949692959194919392820192846401000000008211156200007357600080fd5b9083019060208201858111156200008957600080fd5b8251640100000000811182820188101715620000a457600080fd5b82525081516020918201929091019080838360005b83811015620000d3578181015183820152602001620000b9565b50505050905090810190601f168015620001015780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200012557600080fd5b9083019060208201858111156200013b57600080fd5b82516401000000008111828201881017156200015657600080fd5b82525081516020918201929091019080838360005b83811015620001855781810151838201526020016200016b565b50505050905090810190601f168015620001b35780820380516001836020036101000a031916815260200191505b506040525050600280546001600160a01b0319166001600160a01b038916179055508151620001ea906004906020850190620002d1565b50805162000200906005906020840190620002d1565b50600080546001600160a01b0319166001600160a01b038716908117825560405190917fec0a368e7483e066a653511f382ef598fcee30414ec88503a5e094a7758664e591a2600180546001600160a01b0319166001600160a01b0386169081179091556040517fa9f836ccf39fb9e86c5cef3c0f7f0420a53bae958347c828ff67f9ecf77658ae90600090a260038390556040805184815290517ffdb174bbb157048e9f3962e375891bace08d9741796e3288bf79ab8ccd1dfa209181900360200190a15050505050506200037d565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000309576000855562000354565b82601f106200032457805160ff191683800117855562000354565b8280016001018555821562000354579182015b828111156200035457825182559160200191906001019062000337565b506200036292915062000366565b5090565b5b8082111562000362576000815560010162000367565b61155b806200038d6000396000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c80638acbca1d11610097578063b5a7f32111610066578063b5a7f321146104cb578063cbd99d03146104d3578063dcd12e27146104f9578063fabc053b14610501576100ff565b80638acbca1d146103d1578063965ca49e14610477578063a0aa8ddd1461049d578063b56fbb97146104a5576100ff565b806356a239a8116100d357806356a239a81461037b5780636733b93c146103835780636cad3fb01461038b5780637e77a2d4146103a8576100ff565b8062774360146101045780632623a570146102325780633f7601a3146102565780634d8f6c10146102fe575b600080fd5b6101aa6004803603602081101561011a57600080fd5b81019060208101813564010000000081111561013557600080fd5b82018360208201111561014757600080fd5b8035906020019184600183028401116401000000008311171561016957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610509945050505050565b60405180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156101f65781810151838201526020016101de565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61023a6105e3565b604080516001600160a01b039092168252519081900360200190f35b6102fc6004803603602081101561026c57600080fd5b81019060208101813564010000000081111561028757600080fd5b82018360208201111561029957600080fd5b803590602001918460018302840111640100000000831117156102bb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610635945050505050565b005b6103066107e9565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610340578181015183820152602001610328565b50505050905090810190601f16801561036d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610306610877565b6103066108d2565b6102fc600480360360208110156103a157600080fd5b5035610968565b6103b0610b40565b604080519283526001600160a01b0390911660208301528051918290030190f35b6102fc600480360360208110156103e757600080fd5b81019060208101813564010000000081111561040257600080fd5b82018360208201111561041457600080fd5b8035906020019184600183028401116401000000008311171561043657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c37945050505050565b6102fc6004803603602081101561048d57600080fd5b50356001600160a01b0316610de7565b61023a610fce565b6102fc600480360360208110156104bb57600080fd5b50356001600160a01b0316610fdd565b61023a6111c2565b6102fc600480360360208110156104e957600080fd5b50356001600160a01b03166111d1565b61023a611390565b61030661139f565b6000805460609061052f90610526906001600160a01b0316611400565b92508284611442565b9050336001600160a01b0316826001600160a01b03167fd88eb6ea28cf871df45d7e0762e2fc65a775cfdf504d2b68f5a50f472343dc1f836040518080602001828103825283818151815260200191508051906020019080838360005b838110156105a457818101518382015260200161058c565b50505050905090810190601f1680156105d15780820380516001836020036101000a031916815260200191505b509250505060405180910390a3915091565b6001546000906105fb906001600160a01b0316611400565b6040519091506001600160a01b038216907f5219f76bd0dde66e71f5338ad4f64e6bc78683cf1ecb4f906b4fa8e9fdc1ca4a90600090a290565b600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b15801561068357600080fd5b505afa158015610697573d6000803e3d6000fd5b505050506040513d60208110156106ad57600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b1580156106f157600080fd5b505afa158015610705573d6000803e3d6000fd5b505050506040513d602081101561071b57600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b15801561076557600080fd5b505afa158015610779573d6000803e3d6000fd5b505050506040513d602081101561078f57600080fd5b50516107d2576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b80516107e5906005906020840190611484565b5050565b6005805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561086f5780601f106108445761010080835404028352916020019161086f565b820191906000526020600020905b81548152906001019060200180831161085257829003601f168201915b505050505081565b6004805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561086f5780601f106108445761010080835404028352916020019161086f565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561095e5780601f106109335761010080835404028352916020019161095e565b820191906000526020600020905b81548152906001019060200180831161094157829003601f168201915b5050505050905090565b600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b1580156109b657600080fd5b505afa1580156109ca573d6000803e3d6000fd5b505050506040513d60208110156109e057600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b158015610a2457600080fd5b505afa158015610a38573d6000803e3d6000fd5b505050506040513d6020811015610a4e57600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b158015610a9857600080fd5b505afa158015610aac573d6000803e3d6000fd5b505050506040513d6020811015610ac257600080fd5b5051610b05576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b60038190556040805182815290517ffdb174bbb157048e9f3962e375891bace08d9741796e3288bf79ab8ccd1dfa209181900360200190a150565b600080600354600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9457600080fd5b505afa158015610ba8573d6000803e3d6000fd5b505050506040513d6020811015610bbe57600080fd5b5051604080516331c6903d60e01b815290516001600160a01b03909216916331c6903d91600480820192602092909190829003018186803b158015610c0257600080fd5b505afa158015610c16573d6000803e3d6000fd5b505050506040513d6020811015610c2c57600080fd5b505190925090509091565b600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b158015610c8557600080fd5b505afa158015610c99573d6000803e3d6000fd5b505050506040513d6020811015610caf57600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b158015610d6757600080fd5b505afa158015610d7b573d6000803e3d6000fd5b505050506040513d6020811015610d9157600080fd5b5051610dd4576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b80516107e5906004906020840190611484565b600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3557600080fd5b505afa158015610e49573d6000803e3d6000fd5b505050506040513d6020811015610e5f57600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b158015610ea357600080fd5b505afa158015610eb7573d6000803e3d6000fd5b505050506040513d6020811015610ecd57600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b158015610f1757600080fd5b505afa158015610f2b573d6000803e3d6000fd5b505050506040513d6020811015610f4157600080fd5b5051610f84576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517fa9f836ccf39fb9e86c5cef3c0f7f0420a53bae958347c828ff67f9ecf77658ae90600090a250565b6002546001600160a01b031681565b600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b15801561102b57600080fd5b505afa15801561103f573d6000803e3d6000fd5b505050506040513d602081101561105557600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b15801561109957600080fd5b505afa1580156110ad573d6000803e3d6000fd5b505050506040513d60208110156110c357600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b15801561110d57600080fd5b505afa158015611121573d6000803e3d6000fd5b505050506040513d602081101561113757600080fd5b505161117a576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917fec0a368e7483e066a653511f382ef598fcee30414ec88503a5e094a7758664e591a250565b6000546001600160a01b031681565b600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b15801561121f57600080fd5b505afa158015611233573d6000803e3d6000fd5b505050506040513d602081101561124957600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b15801561128d57600080fd5b505afa1580156112a1573d6000803e3d6000fd5b505050506040513d60208110156112b757600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b15801561130157600080fd5b505afa158015611315573d6000803e3d6000fd5b505050506040513d602081101561132b57600080fd5b505161136e576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b60058054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561095e5780601f106109335761010080835404028352916020019161095e565b60006901000000000000000000820268803b80938091923cf36258807360e81b01176000526020600080f09050803b801561143a5761143c565bfe5b50919050565b60606000808351602085016000875af13d604051925080835260208301816000823e8082016040528280156114765761147a565b8282fd5b5050505092915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826114ba5760008555611500565b82601f106114d357805160ff1916838001178555611500565b82800160010185558215611500579182015b828111156115005782518255916020019190600101906114e5565b5061150c929150611510565b5090565b5b8082111561150c576000815560010161151156fea264697066735822122003f6cad171e440371e41778b5670d5be63005f82c62e07abcb9e438a75fb51b164736f6c63430007060033000000000000000000000000f869538e3904778a0cb1ff620c8e83c7df36b946000000000000000000000000851bd450febfd2aa5f48e8f370aaa3e3f96d190300000000000000000000000099938ab1589a23302a16f71ea7f828db64fc2a48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000003a697066733a2f2f697066732f516d62767136766975376453534e5a6964446741385a676d3258556a576e37755061566b41536878785a3532366d000000000000000000000000000000000000000000000000000000000000000000000000003a697066733a2f2f697066732f516d58415743523267326244344b66324235444767725953336d693139456e48794651726378355a553466316466000000000000

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100ff5760003560e01c80638acbca1d11610097578063b5a7f32111610066578063b5a7f321146104cb578063cbd99d03146104d3578063dcd12e27146104f9578063fabc053b14610501576100ff565b80638acbca1d146103d1578063965ca49e14610477578063a0aa8ddd1461049d578063b56fbb97146104a5576100ff565b806356a239a8116100d357806356a239a81461037b5780636733b93c146103835780636cad3fb01461038b5780637e77a2d4146103a8576100ff565b8062774360146101045780632623a570146102325780633f7601a3146102565780634d8f6c10146102fe575b600080fd5b6101aa6004803603602081101561011a57600080fd5b81019060208101813564010000000081111561013557600080fd5b82018360208201111561014757600080fd5b8035906020019184600183028401116401000000008311171561016957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610509945050505050565b60405180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156101f65781810151838201526020016101de565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61023a6105e3565b604080516001600160a01b039092168252519081900360200190f35b6102fc6004803603602081101561026c57600080fd5b81019060208101813564010000000081111561028757600080fd5b82018360208201111561029957600080fd5b803590602001918460018302840111640100000000831117156102bb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610635945050505050565b005b6103066107e9565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610340578181015183820152602001610328565b50505050905090810190601f16801561036d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610306610877565b6103066108d2565b6102fc600480360360208110156103a157600080fd5b5035610968565b6103b0610b40565b604080519283526001600160a01b0390911660208301528051918290030190f35b6102fc600480360360208110156103e757600080fd5b81019060208101813564010000000081111561040257600080fd5b82018360208201111561041457600080fd5b8035906020019184600183028401116401000000008311171561043657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c37945050505050565b6102fc6004803603602081101561048d57600080fd5b50356001600160a01b0316610de7565b61023a610fce565b6102fc600480360360208110156104bb57600080fd5b50356001600160a01b0316610fdd565b61023a6111c2565b6102fc600480360360208110156104e957600080fd5b50356001600160a01b03166111d1565b61023a611390565b61030661139f565b6000805460609061052f90610526906001600160a01b0316611400565b92508284611442565b9050336001600160a01b0316826001600160a01b03167fd88eb6ea28cf871df45d7e0762e2fc65a775cfdf504d2b68f5a50f472343dc1f836040518080602001828103825283818151815260200191508051906020019080838360005b838110156105a457818101518382015260200161058c565b50505050905090810190601f1680156105d15780820380516001836020036101000a031916815260200191505b509250505060405180910390a3915091565b6001546000906105fb906001600160a01b0316611400565b6040519091506001600160a01b038216907f5219f76bd0dde66e71f5338ad4f64e6bc78683cf1ecb4f906b4fa8e9fdc1ca4a90600090a290565b600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b15801561068357600080fd5b505afa158015610697573d6000803e3d6000fd5b505050506040513d60208110156106ad57600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b1580156106f157600080fd5b505afa158015610705573d6000803e3d6000fd5b505050506040513d602081101561071b57600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b15801561076557600080fd5b505afa158015610779573d6000803e3d6000fd5b505050506040513d602081101561078f57600080fd5b50516107d2576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b80516107e5906005906020840190611484565b5050565b6005805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561086f5780601f106108445761010080835404028352916020019161086f565b820191906000526020600020905b81548152906001019060200180831161085257829003601f168201915b505050505081565b6004805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561086f5780601f106108445761010080835404028352916020019161086f565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561095e5780601f106109335761010080835404028352916020019161095e565b820191906000526020600020905b81548152906001019060200180831161094157829003601f168201915b5050505050905090565b600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b1580156109b657600080fd5b505afa1580156109ca573d6000803e3d6000fd5b505050506040513d60208110156109e057600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b158015610a2457600080fd5b505afa158015610a38573d6000803e3d6000fd5b505050506040513d6020811015610a4e57600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b158015610a9857600080fd5b505afa158015610aac573d6000803e3d6000fd5b505050506040513d6020811015610ac257600080fd5b5051610b05576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b60038190556040805182815290517ffdb174bbb157048e9f3962e375891bace08d9741796e3288bf79ab8ccd1dfa209181900360200190a150565b600080600354600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9457600080fd5b505afa158015610ba8573d6000803e3d6000fd5b505050506040513d6020811015610bbe57600080fd5b5051604080516331c6903d60e01b815290516001600160a01b03909216916331c6903d91600480820192602092909190829003018186803b158015610c0257600080fd5b505afa158015610c16573d6000803e3d6000fd5b505050506040513d6020811015610c2c57600080fd5b505190925090509091565b600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b158015610c8557600080fd5b505afa158015610c99573d6000803e3d6000fd5b505050506040513d6020811015610caf57600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b158015610d6757600080fd5b505afa158015610d7b573d6000803e3d6000fd5b505050506040513d6020811015610d9157600080fd5b5051610dd4576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b80516107e5906004906020840190611484565b600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3557600080fd5b505afa158015610e49573d6000803e3d6000fd5b505050506040513d6020811015610e5f57600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b158015610ea357600080fd5b505afa158015610eb7573d6000803e3d6000fd5b505050506040513d6020811015610ecd57600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b158015610f1757600080fd5b505afa158015610f2b573d6000803e3d6000fd5b505050506040513d6020811015610f4157600080fd5b5051610f84576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517fa9f836ccf39fb9e86c5cef3c0f7f0420a53bae958347c828ff67f9ecf77658ae90600090a250565b6002546001600160a01b031681565b600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b15801561102b57600080fd5b505afa15801561103f573d6000803e3d6000fd5b505050506040513d602081101561105557600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b15801561109957600080fd5b505afa1580156110ad573d6000803e3d6000fd5b505050506040513d60208110156110c357600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b15801561110d57600080fd5b505afa158015611121573d6000803e3d6000fd5b505050506040513d602081101561113757600080fd5b505161117a576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917fec0a368e7483e066a653511f382ef598fcee30414ec88503a5e094a7758664e591a250565b6000546001600160a01b031681565b600260009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b15801561121f57600080fd5b505afa158015611233573d6000803e3d6000fd5b505050506040513d602081101561124957600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b15801561128d57600080fd5b505afa1580156112a1573d6000803e3d6000fd5b505050506040513d60208110156112b757600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b15801561130157600080fd5b505afa158015611315573d6000803e3d6000fd5b505050506040513d602081101561132b57600080fd5b505161136e576040805162461bcd60e51b815260206004820152600d60248201526c2ab730baba3437b934bd32b21760991b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b60058054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561095e5780601f106109335761010080835404028352916020019161095e565b60006901000000000000000000820268803b80938091923cf36258807360e81b01176000526020600080f09050803b801561143a5761143c565bfe5b50919050565b60606000808351602085016000875af13d604051925080835260208301816000823e8082016040528280156114765761147a565b8282fd5b5050505092915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826114ba5760008555611500565b82601f106114d357805160ff1916838001178555611500565b82800160010185558215611500579182015b828111156115005782518255916020019190600101906114e5565b5061150c929150611510565b5090565b5b8082111561150c576000815560010161151156fea264697066735822122003f6cad171e440371e41778b5670d5be63005f82c62e07abcb9e438a75fb51b164736f6c63430007060033