Address Details
contract

0x0862541742E049FC65e6a9ef3CfC28d0b504cf5f

Contract Name
SmartRentContract
Creator
0xd5bb1c–65239e at 0x7d8d2c–8769d6
Balance
2.2 CELO ( )
Locked CELO Balance
0.00 CELO
Voting CELO Balance
0.00 CELO
Pending Unlocked Gold
0.00 CELO
Tokens
Fetching tokens...
Transactions
4 Transactions
Transfers
3 Transfers
Gas Used
394,491
Last Balance Update
4940675
This contract has been verified via Sourcify. View contract in Sourcify repository
Contract name:
SmartRentContract




Optimization enabled
false
Compiler version
v0.5.16+commit.9c3226ce




EVM Version
istanbul




Verified at
2022-09-30T07:34:20.033251Z

/C/Users/User/Desktop/fyp/contracts/SmartRentContract.sol

// Learn more about Solidity here: https://solidity.readthedocs.io

// This statement specifies the compatible compiler versions
pragma solidity >=0.5.0;

// Declare a contract called HelloWorld
contract SmartRentContract {
    
    event TenantAssigned(address tenantAddress, uint rentAmount, uint rentDeposit);
    event TenantSigned(address tenantAddress);
    event DepositPaid(address tenantAddress, uint rentDeposit);
    event DepositWithdrawn(address tenantAddress, uint rentDeposit);
    event DepositClaimed(address landlordAddress, uint rentDeposit);
    event RentPaid(address tenantAddress, uint amount);
    event RentWithdrawn(address landlordAddress, uint amount);
    event ApprovedSmartRent(address tenant);

    address payable public landlordAddress;
    string public landlordName;
    
    bool public isSigned = false;
    bool public hasPaidDeposit = false;
    
    mapping (address => bool) public tenantToSigned;
    address payable public tenantAddress;
    uint256 public rentAmount;
    uint256 public rentDeposit;
    uint256 public startDate;
    uint256 public endDate;
    string public roomAddress;

    uint256 public depositInContract = 0;
    uint256 public totalRentLeft;
    uint256 public rentHavePaid = 0;

    constructor(string memory _landlord,
            address payable _landlordAddress,
            string memory _roomAddress,
            uint256 _startDate,
            uint256 _endDate,
            uint256 _deposit,
            uint256 _rent,
            address payable _tenantAddress)
        public {
            landlordName = _landlord;
            landlordAddress = _landlordAddress;
            roomAddress = _roomAddress;
            startDate = _startDate;
            endDate = _endDate;
            rentDeposit = _deposit;
            rentAmount = _rent;
            totalRentLeft = _rent;
            tenantAddress = _tenantAddress;
    }

    modifier landlordOnly() {
        require(msg.sender == landlordAddress);
        _;
    }

    modifier tenantOnly() {
        require(msg.sender == tenantAddress);
        _;
    }

    modifier hasSigned() {
        require(isSigned == true, "Tenant must sign the contract before invoking this functionality");
        _;
    }

    modifier notZeroAddres(address addr){
        require(addr != address(0), "0th address is not allowed!");
        _;
    }

    function assignTenant(address _tenantAddress)
      external notZeroAddres(_tenantAddress) {
        require(_tenantAddress != landlordAddress, "Landlord is not allowed to be tenant at the same time");
        emit TenantAssigned(_tenantAddress, rentAmount, rentDeposit);
    }

    function signContract() public {
        require(isSigned == false);
        tenantToSigned[msg.sender] = true;
        isSigned = true;
        emit TenantSigned(msg.sender);
    }

    function payDeposit() external payable {
        require(hasPaidDeposit == false, "Tenant cannot pay deposit more than one time");
        hasPaidDeposit = true;
        depositInContract = depositInContract + msg.value;
        emit DepositPaid(msg.sender, msg.value);
    }

    function withdrawDeposit() external payable tenantOnly {
        require(hasPaidDeposit == true, "Tenant need to pay deposit first");
        require(block.timestamp > endDate, "Tenant can only withdraw deposit after period end");
        require(depositInContract > 0, "Deposit in contract cannot be empty");
        require(totalRentLeft == 0, "Tenant can only withdraw deposit after cleared all rental fee");
        tenantAddress.transfer(depositInContract);
        depositInContract = 0;
        emit DepositWithdrawn(msg.sender, rentDeposit);
    }

    function payRent() external payable tenantOnly {
        require(isSigned == true);
        require(hasPaidDeposit == true, "Tenant need to pay deposit first");
        require(block.timestamp < endDate);
        totalRentLeft = totalRentLeft - msg.value;
        rentHavePaid = msg.value;
        emit RentPaid(msg.sender, msg.value);
    }

    function withdrawRent() external payable landlordOnly {
        require(rentHavePaid != 0, "Tenant has not paid any rent yet");
        landlordAddress.transfer(rentHavePaid);
        emit RentWithdrawn(msg.sender, rentHavePaid);
        rentHavePaid = 0;
    }

    function claimDeposit() external payable landlordOnly {
        require(block.timestamp > endDate, "Landlord can only claim deposit after period end");
        require(totalRentLeft != 0, "Landlord can only claim deposit if tenant did not settle their rent after period end");
        landlordAddress.transfer(depositInContract);
        depositInContract = 0;
        emit DepositClaimed(msg.sender, rentDeposit);
    }

}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[{"type":"string","name":"_landlord","internalType":"string"},{"type":"address","name":"_landlordAddress","internalType":"address payable"},{"type":"string","name":"_roomAddress","internalType":"string"},{"type":"uint256","name":"_startDate","internalType":"uint256"},{"type":"uint256","name":"_endDate","internalType":"uint256"},{"type":"uint256","name":"_deposit","internalType":"uint256"},{"type":"uint256","name":"_rent","internalType":"uint256"},{"type":"address","name":"_tenantAddress","internalType":"address payable"}]},{"type":"event","name":"ApprovedSmartRent","inputs":[{"type":"address","name":"tenant","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"DepositClaimed","inputs":[{"type":"address","name":"landlordAddress","internalType":"address","indexed":false},{"type":"uint256","name":"rentDeposit","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"DepositPaid","inputs":[{"type":"address","name":"tenantAddress","internalType":"address","indexed":false},{"type":"uint256","name":"rentDeposit","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"DepositWithdrawn","inputs":[{"type":"address","name":"tenantAddress","internalType":"address","indexed":false},{"type":"uint256","name":"rentDeposit","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"RentPaid","inputs":[{"type":"address","name":"tenantAddress","internalType":"address","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"RentWithdrawn","inputs":[{"type":"address","name":"landlordAddress","internalType":"address","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"TenantAssigned","inputs":[{"type":"address","name":"tenantAddress","internalType":"address","indexed":false},{"type":"uint256","name":"rentAmount","internalType":"uint256","indexed":false},{"type":"uint256","name":"rentDeposit","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"TenantSigned","inputs":[{"type":"address","name":"tenantAddress","internalType":"address","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"assignTenant","inputs":[{"type":"address","name":"_tenantAddress","internalType":"address"}],"constant":false},{"type":"function","stateMutability":"payable","payable":true,"outputs":[],"name":"claimDeposit","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"depositInContract","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"endDate","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"hasPaidDeposit","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isSigned","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"address payable"}],"name":"landlordAddress","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":"","internalType":"string"}],"name":"landlordName","inputs":[],"constant":true},{"type":"function","stateMutability":"payable","payable":true,"outputs":[],"name":"payDeposit","inputs":[],"constant":false},{"type":"function","stateMutability":"payable","payable":true,"outputs":[],"name":"payRent","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"rentAmount","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"rentDeposit","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"rentHavePaid","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":"","internalType":"string"}],"name":"roomAddress","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"signContract","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"startDate","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"address payable"}],"name":"tenantAddress","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"tenantToSigned","inputs":[{"type":"address","name":"","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalRentLeft","inputs":[],"constant":true},{"type":"function","stateMutability":"payable","payable":true,"outputs":[],"name":"withdrawDeposit","inputs":[],"constant":false},{"type":"function","stateMutability":"payable","payable":true,"outputs":[],"name":"withdrawRent","inputs":[],"constant":false}]
              

Contract Creation Code

0x60806040526000600260006101000a81548160ff0219169083151502179055506000600260016101000a81548160ff0219169083151502179055506000600a556000600c553480156200005157600080fd5b50604051620018c9380380620018c983398181016040526101008110156200007857600080fd5b81019080805160405193929190846401000000008211156200009957600080fd5b83820191506020820185811115620000b057600080fd5b8251866001820283011164010000000082111715620000ce57600080fd5b8083526020830192505050908051906020019080838360005b8381101562000104578082015181840152602081019050620000e7565b50505050905090810190601f168015620001325780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805160405193929190846401000000008211156200016057600080fd5b838201915060208201858111156200017757600080fd5b82518660018202830111640100000000821117156200019557600080fd5b8083526020830192505050908051906020019080838360005b83811015620001cb578082015181840152602081019050620001ae565b50505050905090810190601f168015620001f95780820380516001836020036101000a031916815260200191505b50604052602001805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505087600190805190602001906200024d92919062000319565b50866000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560099080519060200190620002a692919062000319565b508460078190555083600881905550826006819055508160058190555081600b8190555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050620003c8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200035c57805160ff19168380011785556200038d565b828001600101855582156200038d579182015b828111156200038c5782518255916020019190600101906200036f565b5b5090506200039c9190620003a0565b5090565b620003c591905b80821115620003c1576000816000905550600101620003a7565b5090565b90565b6114f180620003d86000396000f3fe60806040526004361061012a5760003560e01c8063a3073fab116100ab578063c24a0f8b1161006f578063c24a0f8b146103bc578063d1aac171146103e7578063d964f29e14610438578063e1746af9146104c8578063e66a6b2214610531578063f8ef1e13146105605761012a565b8063a3073fab146102ee578063a709c4fe14610319578063aca1feea14610323578063b8b4f1a01461037a578063bf8c0efc146103915761012a565b80635c274b86116100f25780635c274b86146101f45780635f696ec3146101fe5780636322182e14610229578063906b7fc7146102335780639419bc291461025e5761012a565b806302d8db081461012f5780630b97bc8614610186578063117df088146101b157806329d07a51146101bb57806332dd81f6146101c5575b600080fd5b34801561013b57600080fd5b5061014461058b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019257600080fd5b5061019b6105b0565b6040518082815260200191505060405180910390f35b6101b96105b6565b005b6101c361088b565b005b3480156101d157600080fd5b506101da610a7b565b604051808215151515815260200191505060405180910390f35b6101fc610a8e565b005b34801561020a57600080fd5b50610213610b8d565b6040518082815260200191505060405180910390f35b610231610b93565b005b34801561023f57600080fd5b50610248610d46565b6040518082815260200191505060405180910390f35b34801561026a57600080fd5b50610273610d4c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102b3578082015181840152602081019050610298565b50505050905090810190601f1680156102e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102fa57600080fd5b50610303610dea565b6040518082815260200191505060405180910390f35b610321610df0565b005b34801561032f57600080fd5b50610338610f80565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038657600080fd5b5061038f610fa6565b005b34801561039d57600080fd5b506103a661109e565b6040518082815260200191505060405180910390f35b3480156103c857600080fd5b506103d16110a4565b6040518082815260200191505060405180910390f35b3480156103f357600080fd5b506104366004803603602081101561040a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110aa565b005b34801561044457600080fd5b5061044d61126f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048d578082015181840152602081019050610472565b50505050905090810190601f1680156104ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104d457600080fd5b50610517600480360360208110156104eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061130d565b604051808215151515815260200191505060405180910390f35b34801561053d57600080fd5b5061054661132d565b604051808215151515815260200191505060405180910390f35b34801561056c57600080fd5b50610575611340565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461061057600080fd5b60011515600260019054906101000a900460ff16151514610699576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54656e616e74206e65656420746f20706179206465706f73697420666972737481525060200191505060405180910390fd5b60085442116106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806113e06031913960400191505060405180910390fd5b6000600a541161074e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806114656023913960400191505060405180910390fd5b6000600b54146107a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806113a3603d913960400191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a549081150290604051600060405180830381858888f19350505050158015610813573d6000803e3d6000fd5b506000600a819055507f4482101800a5c2e900f4156e57e05e19ffd7b366cde579553d723fd3abb2180e33600654604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108e457600080fd5b600854421161093e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806113476030913960400191505060405180910390fd5b6000600b54141561099a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806114116054913960600191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a549081150290604051600060405180830381858888f19350505050158015610a03573d6000803e3d6000fd5b506000600a819055507fe800e3ea37ded367af4fce9aa5ecaa72b693f315a2c3b6c7a3d07c84196515fb33600654604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600260019054906101000a900460ff1681565b60001515600260019054906101000a900460ff16151514610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611377602c913960400191505060405180910390fd5b6001600260016101000a81548160ff02191690831515021790555034600a5401600a819055507ff1953715a33b9e021c0f2cf12911e8ac25fdb177bf6fc92d1331ae05201fe9f63334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600b5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bec57600080fd5b6000600c541415610c65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54656e616e7420686173206e6f74207061696420616e792072656e742079657481525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600c549081150290604051600060405180830381858888f19350505050158015610cce573d6000803e3d6000fd5b507ffeb9f3b8586fb3823735104fd243164bdb90fcd9e989f902e96eb5b26bed4e3833600c54604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16000600c81905550565b600a5481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610de25780601f10610db757610100808354040283529160200191610de2565b820191906000526020600020905b815481529060010190602001808311610dc557829003601f168201915b505050505081565b600c5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e4a57600080fd5b60011515600260009054906101000a900460ff16151514610e6a57600080fd5b60011515600260019054906101000a900460ff16151514610ef3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54656e616e74206e65656420746f20706179206465706f73697420666972737481525060200191505060405180910390fd5b6008544210610f0157600080fd5b34600b5403600b8190555034600c819055507f03b5033869479e8a98af42b272f05933f60489fe9fb43d63e11a6c31f3fa74743334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60001515600260009054906101000a900460ff16151514610fc657600080fd5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260006101000a81548160ff0219169083151502179055507fe653009d32c7245a6ff858fa3a804f5beb3b19b4bbe48178446e966401d8389433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60065481565b60085481565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561114e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f3074682061646472657373206973206e6f7420616c6c6f77656421000000000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806114886035913960400191505060405180910390fd5b7ff32dc6bb034b9afc20d4c7daa180b08e89cac33817a6836595b1021c4347620482600554600654604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15050565b60098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113055780601f106112da57610100808354040283529160200191611305565b820191906000526020600020905b8154815290600101906020018083116112e857829003601f168201915b505050505081565b60036020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900460ff1681565b6005548156fe4c616e646c6f72642063616e206f6e6c7920636c61696d206465706f73697420616674657220706572696f6420656e6454656e616e742063616e6e6f7420706179206465706f736974206d6f7265207468616e206f6e652074696d6554656e616e742063616e206f6e6c79207769746864726177206465706f73697420616674657220636c656172656420616c6c2072656e74616c2066656554656e616e742063616e206f6e6c79207769746864726177206465706f73697420616674657220706572696f6420656e644c616e646c6f72642063616e206f6e6c7920636c61696d206465706f7369742069662074656e616e7420646964206e6f7420736574746c652074686569722072656e7420616674657220706572696f6420656e644465706f73697420696e20636f6e74726163742063616e6e6f7420626520656d7074794c616e646c6f7264206973206e6f7420616c6c6f77656420746f2062652074656e616e74206174207468652073616d652074696d65a265627a7a72315820361ee5bb7f3b300ccd760565447f42b998847ff4406df6036a9d5d0a001fe54964736f6c634300051000320000000000000000000000000000000000000000000000000000000000000100000000000000000000000000dd0008e9dc53b953550b4781e3f5249143baa57500000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000060916b8400000000000000000000000000000000000000000000000000000000609d49040000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000001bc16d674ec80000000000000000000000000000615f95287ffccb181ff93606121ddd8b941a09e500000000000000000000000000000000000000000000000000000000000000065861766965720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001831302c204c6f726f6e6720372c204172616e6720526f61640000000000000000

Deployed ByteCode

0x60806040526004361061012a5760003560e01c8063a3073fab116100ab578063c24a0f8b1161006f578063c24a0f8b146103bc578063d1aac171146103e7578063d964f29e14610438578063e1746af9146104c8578063e66a6b2214610531578063f8ef1e13146105605761012a565b8063a3073fab146102ee578063a709c4fe14610319578063aca1feea14610323578063b8b4f1a01461037a578063bf8c0efc146103915761012a565b80635c274b86116100f25780635c274b86146101f45780635f696ec3146101fe5780636322182e14610229578063906b7fc7146102335780639419bc291461025e5761012a565b806302d8db081461012f5780630b97bc8614610186578063117df088146101b157806329d07a51146101bb57806332dd81f6146101c5575b600080fd5b34801561013b57600080fd5b5061014461058b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019257600080fd5b5061019b6105b0565b6040518082815260200191505060405180910390f35b6101b96105b6565b005b6101c361088b565b005b3480156101d157600080fd5b506101da610a7b565b604051808215151515815260200191505060405180910390f35b6101fc610a8e565b005b34801561020a57600080fd5b50610213610b8d565b6040518082815260200191505060405180910390f35b610231610b93565b005b34801561023f57600080fd5b50610248610d46565b6040518082815260200191505060405180910390f35b34801561026a57600080fd5b50610273610d4c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102b3578082015181840152602081019050610298565b50505050905090810190601f1680156102e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102fa57600080fd5b50610303610dea565b6040518082815260200191505060405180910390f35b610321610df0565b005b34801561032f57600080fd5b50610338610f80565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561038657600080fd5b5061038f610fa6565b005b34801561039d57600080fd5b506103a661109e565b6040518082815260200191505060405180910390f35b3480156103c857600080fd5b506103d16110a4565b6040518082815260200191505060405180910390f35b3480156103f357600080fd5b506104366004803603602081101561040a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110aa565b005b34801561044457600080fd5b5061044d61126f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048d578082015181840152602081019050610472565b50505050905090810190601f1680156104ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104d457600080fd5b50610517600480360360208110156104eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061130d565b604051808215151515815260200191505060405180910390f35b34801561053d57600080fd5b5061054661132d565b604051808215151515815260200191505060405180910390f35b34801561056c57600080fd5b50610575611340565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461061057600080fd5b60011515600260019054906101000a900460ff16151514610699576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54656e616e74206e65656420746f20706179206465706f73697420666972737481525060200191505060405180910390fd5b60085442116106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806113e06031913960400191505060405180910390fd5b6000600a541161074e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806114656023913960400191505060405180910390fd5b6000600b54146107a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806113a3603d913960400191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a549081150290604051600060405180830381858888f19350505050158015610813573d6000803e3d6000fd5b506000600a819055507f4482101800a5c2e900f4156e57e05e19ffd7b366cde579553d723fd3abb2180e33600654604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108e457600080fd5b600854421161093e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806113476030913960400191505060405180910390fd5b6000600b54141561099a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806114116054913960600191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a549081150290604051600060405180830381858888f19350505050158015610a03573d6000803e3d6000fd5b506000600a819055507fe800e3ea37ded367af4fce9aa5ecaa72b693f315a2c3b6c7a3d07c84196515fb33600654604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600260019054906101000a900460ff1681565b60001515600260019054906101000a900460ff16151514610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611377602c913960400191505060405180910390fd5b6001600260016101000a81548160ff02191690831515021790555034600a5401600a819055507ff1953715a33b9e021c0f2cf12911e8ac25fdb177bf6fc92d1331ae05201fe9f63334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600b5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bec57600080fd5b6000600c541415610c65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54656e616e7420686173206e6f74207061696420616e792072656e742079657481525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600c549081150290604051600060405180830381858888f19350505050158015610cce573d6000803e3d6000fd5b507ffeb9f3b8586fb3823735104fd243164bdb90fcd9e989f902e96eb5b26bed4e3833600c54604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16000600c81905550565b600a5481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610de25780601f10610db757610100808354040283529160200191610de2565b820191906000526020600020905b815481529060010190602001808311610dc557829003601f168201915b505050505081565b600c5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e4a57600080fd5b60011515600260009054906101000a900460ff16151514610e6a57600080fd5b60011515600260019054906101000a900460ff16151514610ef3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54656e616e74206e65656420746f20706179206465706f73697420666972737481525060200191505060405180910390fd5b6008544210610f0157600080fd5b34600b5403600b8190555034600c819055507f03b5033869479e8a98af42b272f05933f60489fe9fb43d63e11a6c31f3fa74743334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60001515600260009054906101000a900460ff16151514610fc657600080fd5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260006101000a81548160ff0219169083151502179055507fe653009d32c7245a6ff858fa3a804f5beb3b19b4bbe48178446e966401d8389433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60065481565b60085481565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561114e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f3074682061646472657373206973206e6f7420616c6c6f77656421000000000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806114886035913960400191505060405180910390fd5b7ff32dc6bb034b9afc20d4c7daa180b08e89cac33817a6836595b1021c4347620482600554600654604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15050565b60098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113055780601f106112da57610100808354040283529160200191611305565b820191906000526020600020905b8154815290600101906020018083116112e857829003601f168201915b505050505081565b60036020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900460ff1681565b6005548156fe4c616e646c6f72642063616e206f6e6c7920636c61696d206465706f73697420616674657220706572696f6420656e6454656e616e742063616e6e6f7420706179206465706f736974206d6f7265207468616e206f6e652074696d6554656e616e742063616e206f6e6c79207769746864726177206465706f73697420616674657220636c656172656420616c6c2072656e74616c2066656554656e616e742063616e206f6e6c79207769746864726177206465706f73697420616674657220706572696f6420656e644c616e646c6f72642063616e206f6e6c7920636c61696d206465706f7369742069662074656e616e7420646964206e6f7420736574746c652074686569722072656e7420616674657220706572696f6420656e644465706f73697420696e20636f6e74726163742063616e6e6f7420626520656d7074794c616e646c6f7264206973206e6f7420616c6c6f77656420746f2062652074656e616e74206174207468652073616d652074696d65a265627a7a72315820361ee5bb7f3b300ccd760565447f42b998847ff4406df6036a9d5d0a001fe54964736f6c63430005100032