/*
package it.enea.cruise.SC;

import io.reactivex.Flowable;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
import org.web3j.abi.EventEncoder;
import org.web3j.abi.FunctionEncoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.Bool;
import org.web3j.abi.datatypes.DynamicArray;
import org.web3j.abi.datatypes.Event;
import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.Utf8String;
import org.web3j.abi.datatypes.generated.Bytes32;
import org.web3j.abi.datatypes.generated.Uint16;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.abi.datatypes.generated.Uint8;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameter;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.RemoteFunctionCall;
import org.web3j.protocol.core.methods.request.EthFilter;
import org.web3j.protocol.core.methods.response.BaseEventResponse;
import org.web3j.protocol.core.methods.response.Log;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tuples.generated.Tuple2;
import org.web3j.tuples.generated.Tuple3;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;
import org.web3j.tx.gas.ContractGasProvider;

*/
/**
 * <p>Auto generated code.
 * <p><strong>Do not modify!</strong>
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.web3j.codegen.SolidityFunctionWrapperGenerator in the 
 * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version 1.5.0.
 *//*

@SuppressWarnings("rawtypes")
public class Community_sol extends Contract {
    public static final String BINARY = " ";

    public static final String FUNC_ACCESSCONTROL = "accessControl";

    public static final String FUNC_ADDACCOUNTTOCOMMUNITY = "addAccountToCommunity";

    public static final String FUNC_ADDADMINTOCOMMUNITY = "addAdminToCommunity";

    public static final String FUNC_ADDCOMMUNITY = "addCommunity";

    public static final String FUNC_ADDFUNDSTOCOMMUNITY = "addFundsToCommunity";

    public static final String FUNC_ANNUALBONUSES = "annualBonuses";

    public static final String FUNC_APPLYDEMURRAGE = "applyDemurrage";

    public static final String FUNC_APPLYDEMURRAGETOUSER = "applyDemurrageToUser";

    public static final String FUNC_BALANCEOF = "balanceOf";

    public static final String FUNC_COMMUNITYADMINROLE = "communityAdminRole";

    public static final String FUNC_COMMUNITYEXISTS = "communityExists";

    public static final String FUNC_DEMURRAGES = "demurrages";

    public static final String FUNC_GETACCESSCONTROLADDRESS = "getAccessControlAddress";

    public static final String FUNC_GETALLCATEGORIESBYCOMMUNITY = "getAllCategoriesByCommunity";

    public static final String FUNC_GETANNUALBONUS = "getAnnualBonus";

    public static final String FUNC_GETCOMMUNITYHOURLYCOST = "getCommunityHourlyCost";

    public static final String FUNC_GETCOMMUNITYWALLET = "getCommunityWallet";

    public static final String FUNC_GETDEMURRAGELIMIT = "getDemurrageLimit";

    public static final String FUNC_GETDEMURRAGEWALLET = "getDemurrageWallet";

    public static final String FUNC_GETFEE = "getFee";

    public static final String FUNC_GETMANAGEUSERSCOMMUNITYROLE = "getManageUsersCommunityRole";

    public static final String FUNC_GETMUTUALHOURLYCOST = "getMutualHourlyCost";

    public static final String FUNC_GETPLATFORMADMINROLE = "getPlatformAdminRole";

    public static final String FUNC_GETSCHEDULERADMINROLE = "getSchedulerAdminRole";

    public static final String FUNC_GETSERVICEINCENTIVE = "getServiceIncentive";

    public static final String FUNC_GETSTAKEHOLDERROLE = "getStakeholderRole";

    public static final String FUNC_GETSTATUS = "getStatus";

    public static final String FUNC_GETSUPPLIERSERVICEINCENTIVE = "getSupplierServiceIncentive";

    public static final String FUNC_GETTOKENHOLDERROLE = "getTokenHolderRole";

    public static final String FUNC_GETTRANSFERINFO = "getTransferInfo";

    public static final String FUNC_GETUSERSBYROLEANDCOMMUNITY = "getUsersByRoleAndCommunity";

    public static final String FUNC_GETWELCOMEBONUS = "getWelcomeBonus";

    public static final String FUNC_GRANTANNUALBONUS = "grantAnnualBonus";

    public static final String FUNC_HALTTOKEN = "haltToken";

    public static final String FUNC_ISUSEROFCOMMUNITY = "isUserOfCommunity";

    public static final String FUNC_MINTTOKEN = "mintToken";

    public static final String FUNC_MINTTOKENFROMMODEL = "mintTokenFromModel";

    public static final String FUNC_ORACLEADMINROLE = "oracleAdminRole";

    public static final String FUNC_PLATFORMADMINROLE = "platformAdminRole";

    public static final String FUNC_REMOVEACCOUNTTOCOMMUNITY = "removeAccountToCommunity";

    public static final String FUNC_REMOVEADMINTOCOMMUNITY = "removeAdminToCommunity";

    public static final String FUNC_REMOVECOMMUNITY = "removeCommunity";

    public static final String FUNC_SCHEDULERADMINROLE = "schedulerAdminRole";

    public static final String FUNC_SETANNUALBONUSTOCOMMUNITY = "setAnnualBonusToCommunity";

    public static final String FUNC_SETCOMMUNITYDEMURRAGELIMIT = "setCommunityDemurrageLimit";

    public static final String FUNC_SETCOMMUNITYDEMURRAGEWALLET = "setCommunityDemurrageWallet";

    public static final String FUNC_SETCOMMUNITYSERVICECOST = "setCommunityServiceCost";

    public static final String FUNC_SETFEETOCOMMUNITY = "setFeeToCommunity";

    public static final String FUNC_SETMUTUALSERVICECOST = "setMutualServiceCost";

    public static final String FUNC_SETSERVICEINCENTIVETOCATEGORY = "setServiceIncentiveToCategory";

    public static final String FUNC_SETSUPPLIERSERVICEINCENTIVETOCATEGORY = "setSupplierServiceIncentiveToCategory";

    public static final String FUNC_SETWELCOMEBONUSTOCOMMUNITY = "setWelcomeBonusToCommunity";

    public static final String FUNC_STAKEHOLDERROLE = "stakeholderRole";

    public static final String FUNC_STARTTOKEN = "startToken";

    public static final String FUNC_TOKENHOLDERROLE = "tokenHolderRole";

    public static final String FUNC_TOTALSUPPLY = "totalSupply";

    public static final String FUNC_TRANSFERFORCOMMUNITYSERVICE = "transferForCommunityService";

    public static final String FUNC_TRANSFERFORGOOD = "transferForGood";

    public static final String FUNC_TRANSFERFORMUTUALSERVICE = "transferForMutualService";

    public static final String FUNC_TRANSFERFORSTRUCTURE = "transferForStructure";

    public static final String FUNC_UPDATEWALLETONCOMMUNITY = "updateWalletOnCommunity";

    public static final Event ACCOUNTADDED_EVENT = new Event("AccountAdded", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Address>() {}, new TypeReference<Bytes32>(true) {}));
    ;

    public static final Event ACCOUNTREMOVED_EVENT = new Event("AccountRemoved", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Address>() {}, new TypeReference<Bytes32>(true) {}));
    ;

    public static final Event ANNUALBONUSGRANTED_EVENT = new Event("AnnualBonusGranted", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>(true) {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event ANNUALBONUSSET_EVENT = new Event("AnnualBonusSet", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>(true) {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event COMMUNITYADDED_EVENT = new Event("CommunityAdded", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Uint16>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}));
    ;

    public static final Event COMMUNITYHOURLYCOSTSET_EVENT = new Event("CommunityHourlyCostSet", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event COMMUNITYREMOVED_EVENT = new Event("CommunityRemoved", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Uint16>() {}));
    ;

    public static final Event DEMURRAGEAPPLIED_EVENT = new Event("DemurrageApplied", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>() {}, new TypeReference<Address>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event DEMURRAGELIMITCHANGE_EVENT = new Event("DemurrageLimitChange", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event DEMURRAGEWALLETCHANGE_EVENT = new Event("DemurrageWalletChange", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>() {}, new TypeReference<Address>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event FEESET_EVENT = new Event("FeeSet", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>(true) {}, new TypeReference<Uint256>() {}, new TypeReference<Uint16>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event MINT_EVENT = new Event("Mint", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event MINTFROMMODEL_EVENT = new Event("MintFromModel", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint16>() {}, new TypeReference<Uint8>() {}, new TypeReference<Uint8>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
    ;

    public static final Event MUTUALHOURLYCOSTSET_EVENT = new Event("MutualHourlyCostSet", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event SERVICEINCENTIVESET_EVENT = new Event("ServiceIncentiveSet", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>(true) {}, new TypeReference<Uint8>(true) {}, new TypeReference<Uint256>() {}, new TypeReference<Uint16>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event STATECHANGE_EVENT = new Event("StateChange", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>(true) {}, new TypeReference<Uint8>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event SUPPLIERSERVICEINCENTIVESET_EVENT = new Event("SupplierServiceIncentiveSet", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>(true) {}, new TypeReference<Uint8>(true) {}, new TypeReference<Uint256>() {}, new TypeReference<Uint16>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event TOKENCREATION_EVENT = new Event("TokenCreation", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event TRANSFER_EVENT = new Event("Transfer", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Uint256>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event TRANSFERDETAIL_EVENT = new Event("TransferDetail", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Uint16>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
    ;

    public static final Event WELCOMEBONUSSET_EVENT = new Event("WelcomeBonusSet", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint16>(true) {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
    ;

    @Deprecated
    protected Community_sol(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected Community_sol(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, credentials, contractGasProvider);
    }

    @Deprecated
    protected Community_sol(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    protected Community_sol(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public static List<AccountAddedEventResponse> getAccountAddedEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(ACCOUNTADDED_EVENT, transactionReceipt);
        ArrayList<AccountAddedEventResponse> responses = new ArrayList<AccountAddedEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            AccountAddedEventResponse typedResponse = new AccountAddedEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.role = (byte[]) eventValues.getIndexedValues().get(2).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static AccountAddedEventResponse getAccountAddedEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(ACCOUNTADDED_EVENT, log);
        AccountAddedEventResponse typedResponse = new AccountAddedEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue();
        typedResponse.role = (byte[]) eventValues.getIndexedValues().get(2).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(0).getValue();
        return typedResponse;
    }

    public Flowable<AccountAddedEventResponse> accountAddedEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getAccountAddedEventFromLog(log));
    }

    public Flowable<AccountAddedEventResponse> accountAddedEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(ACCOUNTADDED_EVENT));
        return accountAddedEventFlowable(filter);
    }

    public static List<AccountRemovedEventResponse> getAccountRemovedEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(ACCOUNTREMOVED_EVENT, transactionReceipt);
        ArrayList<AccountRemovedEventResponse> responses = new ArrayList<AccountRemovedEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            AccountRemovedEventResponse typedResponse = new AccountRemovedEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.role = (byte[]) eventValues.getIndexedValues().get(2).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static AccountRemovedEventResponse getAccountRemovedEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(ACCOUNTREMOVED_EVENT, log);
        AccountRemovedEventResponse typedResponse = new AccountRemovedEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue();
        typedResponse.role = (byte[]) eventValues.getIndexedValues().get(2).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(0).getValue();
        return typedResponse;
    }

    public Flowable<AccountRemovedEventResponse> accountRemovedEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getAccountRemovedEventFromLog(log));
    }

    public Flowable<AccountRemovedEventResponse> accountRemovedEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(ACCOUNTREMOVED_EVENT));
        return accountRemovedEventFlowable(filter);
    }

    public static List<AnnualBonusGrantedEventResponse> getAnnualBonusGrantedEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(ANNUALBONUSGRANTED_EVENT, transactionReceipt);
        ArrayList<AnnualBonusGrantedEventResponse> responses = new ArrayList<AnnualBonusGrantedEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            AnnualBonusGrantedEventResponse typedResponse = new AnnualBonusGrantedEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static AnnualBonusGrantedEventResponse getAnnualBonusGrantedEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(ANNUALBONUSGRANTED_EVENT, log);
        AnnualBonusGrantedEventResponse typedResponse = new AnnualBonusGrantedEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
        return typedResponse;
    }

    public Flowable<AnnualBonusGrantedEventResponse> annualBonusGrantedEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getAnnualBonusGrantedEventFromLog(log));
    }

    public Flowable<AnnualBonusGrantedEventResponse> annualBonusGrantedEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(ANNUALBONUSGRANTED_EVENT));
        return annualBonusGrantedEventFlowable(filter);
    }

    public static List<AnnualBonusSetEventResponse> getAnnualBonusSetEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(ANNUALBONUSSET_EVENT, transactionReceipt);
        ArrayList<AnnualBonusSetEventResponse> responses = new ArrayList<AnnualBonusSetEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            AnnualBonusSetEventResponse typedResponse = new AnnualBonusSetEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.changeDate = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static AnnualBonusSetEventResponse getAnnualBonusSetEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(ANNUALBONUSSET_EVENT, log);
        AnnualBonusSetEventResponse typedResponse = new AnnualBonusSetEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.changeDate = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(2).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
        return typedResponse;
    }

    public Flowable<AnnualBonusSetEventResponse> annualBonusSetEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getAnnualBonusSetEventFromLog(log));
    }

    public Flowable<AnnualBonusSetEventResponse> annualBonusSetEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(ANNUALBONUSSET_EVENT));
        return annualBonusSetEventFlowable(filter);
    }

    public static List<CommunityAddedEventResponse> getCommunityAddedEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(COMMUNITYADDED_EVENT, transactionReceipt);
        ArrayList<CommunityAddedEventResponse> responses = new ArrayList<CommunityAddedEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CommunityAddedEventResponse typedResponse = new CommunityAddedEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.account = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.tokenSymbol = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.wallet = (String) eventValues.getNonIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static CommunityAddedEventResponse getCommunityAddedEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(COMMUNITYADDED_EVENT, log);
        CommunityAddedEventResponse typedResponse = new CommunityAddedEventResponse();
        typedResponse.log = log;
        typedResponse.account = (String) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.tokenSymbol = (String) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.wallet = (String) eventValues.getNonIndexedValues().get(2).getValue();
        return typedResponse;
    }

    public Flowable<CommunityAddedEventResponse> communityAddedEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getCommunityAddedEventFromLog(log));
    }

    public Flowable<CommunityAddedEventResponse> communityAddedEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(COMMUNITYADDED_EVENT));
        return communityAddedEventFlowable(filter);
    }

    public static List<CommunityHourlyCostSetEventResponse> getCommunityHourlyCostSetEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(COMMUNITYHOURLYCOSTSET_EVENT, transactionReceipt);
        ArrayList<CommunityHourlyCostSetEventResponse> responses = new ArrayList<CommunityHourlyCostSetEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CommunityHourlyCostSetEventResponse typedResponse = new CommunityHourlyCostSetEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.cost = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static CommunityHourlyCostSetEventResponse getCommunityHourlyCostSetEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(COMMUNITYHOURLYCOSTSET_EVENT, log);
        CommunityHourlyCostSetEventResponse typedResponse = new CommunityHourlyCostSetEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.cost = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(2).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
        return typedResponse;
    }

    public Flowable<CommunityHourlyCostSetEventResponse> communityHourlyCostSetEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getCommunityHourlyCostSetEventFromLog(log));
    }

    public Flowable<CommunityHourlyCostSetEventResponse> communityHourlyCostSetEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(COMMUNITYHOURLYCOSTSET_EVENT));
        return communityHourlyCostSetEventFlowable(filter);
    }

    public static List<CommunityRemovedEventResponse> getCommunityRemovedEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(COMMUNITYREMOVED_EVENT, transactionReceipt);
        ArrayList<CommunityRemovedEventResponse> responses = new ArrayList<CommunityRemovedEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CommunityRemovedEventResponse typedResponse = new CommunityRemovedEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.account = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static CommunityRemovedEventResponse getCommunityRemovedEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(COMMUNITYREMOVED_EVENT, log);
        CommunityRemovedEventResponse typedResponse = new CommunityRemovedEventResponse();
        typedResponse.log = log;
        typedResponse.account = (String) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        return typedResponse;
    }

    public Flowable<CommunityRemovedEventResponse> communityRemovedEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getCommunityRemovedEventFromLog(log));
    }

    public Flowable<CommunityRemovedEventResponse> communityRemovedEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(COMMUNITYREMOVED_EVENT));
        return communityRemovedEventFlowable(filter);
    }

    public static List<DemurrageAppliedEventResponse> getDemurrageAppliedEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(DEMURRAGEAPPLIED_EVENT, transactionReceipt);
        ArrayList<DemurrageAppliedEventResponse> responses = new ArrayList<DemurrageAppliedEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            DemurrageAppliedEventResponse typedResponse = new DemurrageAppliedEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.user = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.amountRemoved = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            typedResponse.demurrageWallet = (String) eventValues.getNonIndexedValues().get(4).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(5).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static DemurrageAppliedEventResponse getDemurrageAppliedEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(DEMURRAGEAPPLIED_EVENT, log);
        DemurrageAppliedEventResponse typedResponse = new DemurrageAppliedEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.user = (String) eventValues.getNonIndexedValues().get(2).getValue();
        typedResponse.amountRemoved = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
        typedResponse.demurrageWallet = (String) eventValues.getNonIndexedValues().get(4).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(5).getValue();
        return typedResponse;
    }

    public Flowable<DemurrageAppliedEventResponse> demurrageAppliedEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getDemurrageAppliedEventFromLog(log));
    }

    public Flowable<DemurrageAppliedEventResponse> demurrageAppliedEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(DEMURRAGEAPPLIED_EVENT));
        return demurrageAppliedEventFlowable(filter);
    }

    public static List<DemurrageLimitChangeEventResponse> getDemurrageLimitChangeEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(DEMURRAGELIMITCHANGE_EVENT, transactionReceipt);
        ArrayList<DemurrageLimitChangeEventResponse> responses = new ArrayList<DemurrageLimitChangeEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            DemurrageLimitChangeEventResponse typedResponse = new DemurrageLimitChangeEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.newLimit = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static DemurrageLimitChangeEventResponse getDemurrageLimitChangeEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(DEMURRAGELIMITCHANGE_EVENT, log);
        DemurrageLimitChangeEventResponse typedResponse = new DemurrageLimitChangeEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.newLimit = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(2).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
        return typedResponse;
    }

    public Flowable<DemurrageLimitChangeEventResponse> demurrageLimitChangeEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getDemurrageLimitChangeEventFromLog(log));
    }

    public Flowable<DemurrageLimitChangeEventResponse> demurrageLimitChangeEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(DEMURRAGELIMITCHANGE_EVENT));
        return demurrageLimitChangeEventFlowable(filter);
    }

    public static List<DemurrageWalletChangeEventResponse> getDemurrageWalletChangeEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(DEMURRAGEWALLETCHANGE_EVENT, transactionReceipt);
        ArrayList<DemurrageWalletChangeEventResponse> responses = new ArrayList<DemurrageWalletChangeEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            DemurrageWalletChangeEventResponse typedResponse = new DemurrageWalletChangeEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.newAddress = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static DemurrageWalletChangeEventResponse getDemurrageWalletChangeEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(DEMURRAGEWALLETCHANGE_EVENT, log);
        DemurrageWalletChangeEventResponse typedResponse = new DemurrageWalletChangeEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.newAddress = (String) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(2).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
        return typedResponse;
    }

    public Flowable<DemurrageWalletChangeEventResponse> demurrageWalletChangeEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getDemurrageWalletChangeEventFromLog(log));
    }

    public Flowable<DemurrageWalletChangeEventResponse> demurrageWalletChangeEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(DEMURRAGEWALLETCHANGE_EVENT));
        return demurrageWalletChangeEventFlowable(filter);
    }

    public static List<FeeSetEventResponse> getFeeSetEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(FEESET_EVENT, transactionReceipt);
        ArrayList<FeeSetEventResponse> responses = new ArrayList<FeeSetEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            FeeSetEventResponse typedResponse = new FeeSetEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.feeType = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static FeeSetEventResponse getFeeSetEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(FEESET_EVENT, log);
        FeeSetEventResponse typedResponse = new FeeSetEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.feeType = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(2).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
        return typedResponse;
    }

    public Flowable<FeeSetEventResponse> feeSetEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getFeeSetEventFromLog(log));
    }

    public Flowable<FeeSetEventResponse> feeSetEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(FEESET_EVENT));
        return feeSetEventFlowable(filter);
    }

    public static List<MintEventResponse> getMintEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(MINT_EVENT, transactionReceipt);
        ArrayList<MintEventResponse> responses = new ArrayList<MintEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            MintEventResponse typedResponse = new MintEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.from = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.to = (String) eventValues.getIndexedValues().get(2).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static MintEventResponse getMintEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(MINT_EVENT, log);
        MintEventResponse typedResponse = new MintEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.from = (String) eventValues.getIndexedValues().get(1).getValue();
        typedResponse.to = (String) eventValues.getIndexedValues().get(2).getValue();
        typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
        return typedResponse;
    }

    public Flowable<MintEventResponse> mintEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getMintEventFromLog(log));
    }

    public Flowable<MintEventResponse> mintEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(MINT_EVENT));
        return mintEventFlowable(filter);
    }

    public static List<MintFromModelEventResponse> getMintFromModelEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(MINTFROMMODEL_EVENT, transactionReceipt);
        ArrayList<MintFromModelEventResponse> responses = new ArrayList<MintFromModelEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            MintFromModelEventResponse typedResponse = new MintFromModelEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.from = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.to = (String) eventValues.getIndexedValues().get(2).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.year = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.month = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            typedResponse.day = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
            typedResponse.BcParamsHexString = (String) eventValues.getNonIndexedValues().get(5).getValue();
            typedResponse.reason = (String) eventValues.getNonIndexedValues().get(6).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static MintFromModelEventResponse getMintFromModelEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(MINTFROMMODEL_EVENT, log);
        MintFromModelEventResponse typedResponse = new MintFromModelEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.from = (String) eventValues.getIndexedValues().get(1).getValue();
        typedResponse.to = (String) eventValues.getIndexedValues().get(2).getValue();
        typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.year = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
        typedResponse.month = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
        typedResponse.day = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
        typedResponse.BcParamsHexString = (String) eventValues.getNonIndexedValues().get(5).getValue();
        typedResponse.reason = (String) eventValues.getNonIndexedValues().get(6).getValue();
        return typedResponse;
    }

    public Flowable<MintFromModelEventResponse> mintFromModelEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getMintFromModelEventFromLog(log));
    }

    public Flowable<MintFromModelEventResponse> mintFromModelEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(MINTFROMMODEL_EVENT));
        return mintFromModelEventFlowable(filter);
    }

    public static List<MutualHourlyCostSetEventResponse> getMutualHourlyCostSetEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(MUTUALHOURLYCOSTSET_EVENT, transactionReceipt);
        ArrayList<MutualHourlyCostSetEventResponse> responses = new ArrayList<MutualHourlyCostSetEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            MutualHourlyCostSetEventResponse typedResponse = new MutualHourlyCostSetEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.cost = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static MutualHourlyCostSetEventResponse getMutualHourlyCostSetEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(MUTUALHOURLYCOSTSET_EVENT, log);
        MutualHourlyCostSetEventResponse typedResponse = new MutualHourlyCostSetEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.cost = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(2).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
        return typedResponse;
    }

    public Flowable<MutualHourlyCostSetEventResponse> mutualHourlyCostSetEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getMutualHourlyCostSetEventFromLog(log));
    }

    public Flowable<MutualHourlyCostSetEventResponse> mutualHourlyCostSetEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(MUTUALHOURLYCOSTSET_EVENT));
        return mutualHourlyCostSetEventFlowable(filter);
    }

    public static List<ServiceIncentiveSetEventResponse> getServiceIncentiveSetEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(SERVICEINCENTIVESET_EVENT, transactionReceipt);
        ArrayList<ServiceIncentiveSetEventResponse> responses = new ArrayList<ServiceIncentiveSetEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            ServiceIncentiveSetEventResponse typedResponse = new ServiceIncentiveSetEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.categoryId = (BigInteger) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.incentiveType = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.name = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(3).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static ServiceIncentiveSetEventResponse getServiceIncentiveSetEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(SERVICEINCENTIVESET_EVENT, log);
        ServiceIncentiveSetEventResponse typedResponse = new ServiceIncentiveSetEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.categoryId = (BigInteger) eventValues.getIndexedValues().get(1).getValue();
        typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.incentiveType = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.name = (String) eventValues.getNonIndexedValues().get(2).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(3).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
        return typedResponse;
    }

    public Flowable<ServiceIncentiveSetEventResponse> serviceIncentiveSetEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getServiceIncentiveSetEventFromLog(log));
    }

    public Flowable<ServiceIncentiveSetEventResponse> serviceIncentiveSetEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(SERVICEINCENTIVESET_EVENT));
        return serviceIncentiveSetEventFlowable(filter);
    }

    public static List<StateChangeEventResponse> getStateChangeEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(STATECHANGE_EVENT, transactionReceipt);
        ArrayList<StateChangeEventResponse> responses = new ArrayList<StateChangeEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            StateChangeEventResponse typedResponse = new StateChangeEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.id = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.state = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.operator = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.date = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static StateChangeEventResponse getStateChangeEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(STATECHANGE_EVENT, log);
        StateChangeEventResponse typedResponse = new StateChangeEventResponse();
        typedResponse.log = log;
        typedResponse.id = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.state = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.operator = (String) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.date = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
        return typedResponse;
    }

    public Flowable<StateChangeEventResponse> stateChangeEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getStateChangeEventFromLog(log));
    }

    public Flowable<StateChangeEventResponse> stateChangeEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(STATECHANGE_EVENT));
        return stateChangeEventFlowable(filter);
    }

    public static List<SupplierServiceIncentiveSetEventResponse> getSupplierServiceIncentiveSetEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(SUPPLIERSERVICEINCENTIVESET_EVENT, transactionReceipt);
        ArrayList<SupplierServiceIncentiveSetEventResponse> responses = new ArrayList<SupplierServiceIncentiveSetEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            SupplierServiceIncentiveSetEventResponse typedResponse = new SupplierServiceIncentiveSetEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.categoryId = (BigInteger) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.incentiveType = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.name = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(3).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static SupplierServiceIncentiveSetEventResponse getSupplierServiceIncentiveSetEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(SUPPLIERSERVICEINCENTIVESET_EVENT, log);
        SupplierServiceIncentiveSetEventResponse typedResponse = new SupplierServiceIncentiveSetEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.categoryId = (BigInteger) eventValues.getIndexedValues().get(1).getValue();
        typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.incentiveType = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.name = (String) eventValues.getNonIndexedValues().get(2).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(3).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
        return typedResponse;
    }

    public Flowable<SupplierServiceIncentiveSetEventResponse> supplierServiceIncentiveSetEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getSupplierServiceIncentiveSetEventFromLog(log));
    }

    public Flowable<SupplierServiceIncentiveSetEventResponse> supplierServiceIncentiveSetEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(SUPPLIERSERVICEINCENTIVESET_EVENT));
        return supplierServiceIncentiveSetEventFlowable(filter);
    }

    public static List<TokenCreationEventResponse> getTokenCreationEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(TOKENCREATION_EVENT, transactionReceipt);
        ArrayList<TokenCreationEventResponse> responses = new ArrayList<TokenCreationEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            TokenCreationEventResponse typedResponse = new TokenCreationEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.symbol = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.createdBy = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.createdAt = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static TokenCreationEventResponse getTokenCreationEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(TOKENCREATION_EVENT, log);
        TokenCreationEventResponse typedResponse = new TokenCreationEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.symbol = (String) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.createdBy = (String) eventValues.getNonIndexedValues().get(2).getValue();
        typedResponse.createdAt = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
        return typedResponse;
    }

    public Flowable<TokenCreationEventResponse> tokenCreationEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getTokenCreationEventFromLog(log));
    }

    public Flowable<TokenCreationEventResponse> tokenCreationEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(TOKENCREATION_EVENT));
        return tokenCreationEventFlowable(filter);
    }

    public static List<TransferEventResponse> getTransferEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(TRANSFER_EVENT, transactionReceipt);
        ArrayList<TransferEventResponse> responses = new ArrayList<TransferEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            TransferEventResponse typedResponse = new TransferEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.from = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.to = (String) eventValues.getIndexedValues().get(2).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.reason = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static TransferEventResponse getTransferEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(TRANSFER_EVENT, log);
        TransferEventResponse typedResponse = new TransferEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.from = (String) eventValues.getIndexedValues().get(1).getValue();
        typedResponse.to = (String) eventValues.getIndexedValues().get(2).getValue();
        typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.reason = (String) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
        return typedResponse;
    }

    public Flowable<TransferEventResponse> transferEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getTransferEventFromLog(log));
    }

    public Flowable<TransferEventResponse> transferEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(TRANSFER_EVENT));
        return transferEventFlowable(filter);
    }

    public static List<TransferDetailEventResponse> getTransferDetailEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(TRANSFERDETAIL_EVENT, transactionReceipt);
        ArrayList<TransferDetailEventResponse> responses = new ArrayList<TransferDetailEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            TransferDetailEventResponse typedResponse = new TransferDetailEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.account = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.fee = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.incentive = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static TransferDetailEventResponse getTransferDetailEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(TRANSFERDETAIL_EVENT, log);
        TransferDetailEventResponse typedResponse = new TransferDetailEventResponse();
        typedResponse.log = log;
        typedResponse.account = (String) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue();
        typedResponse.communityId = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.fee = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
        typedResponse.incentive = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
        return typedResponse;
    }

    public Flowable<TransferDetailEventResponse> transferDetailEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getTransferDetailEventFromLog(log));
    }

    public Flowable<TransferDetailEventResponse> transferDetailEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(TRANSFERDETAIL_EVENT));
        return transferDetailEventFlowable(filter);
    }

    public static List<WelcomeBonusSetEventResponse> getWelcomeBonusSetEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = staticExtractEventParametersWithLog(WELCOMEBONUSSET_EVENT, transactionReceipt);
        ArrayList<WelcomeBonusSetEventResponse> responses = new ArrayList<WelcomeBonusSetEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            WelcomeBonusSetEventResponse typedResponse = new WelcomeBonusSetEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.admin = (String) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static WelcomeBonusSetEventResponse getWelcomeBonusSetEventFromLog(Log log) {
        Contract.EventValuesWithLog eventValues = staticExtractEventParametersWithLog(WELCOMEBONUSSET_EVENT, log);
        WelcomeBonusSetEventResponse typedResponse = new WelcomeBonusSetEventResponse();
        typedResponse.log = log;
        typedResponse.communityId = (BigInteger) eventValues.getIndexedValues().get(0).getValue();
        typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
        typedResponse.admin = (String) eventValues.getNonIndexedValues().get(1).getValue();
        typedResponse.timestamp = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
        return typedResponse;
    }

    public Flowable<WelcomeBonusSetEventResponse> welcomeBonusSetEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(log -> getWelcomeBonusSetEventFromLog(log));
    }

    public Flowable<WelcomeBonusSetEventResponse> welcomeBonusSetEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(WELCOMEBONUSSET_EVENT));
        return welcomeBonusSetEventFlowable(filter);
    }

    public RemoteFunctionCall<String> accessControl() {
        final Function function = new Function(FUNC_ACCESSCONTROL, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteFunctionCall<TransactionReceipt> addAccountToCommunity(BigInteger _communityId, String _account) {
        final Function function = new Function(
                FUNC_ADDACCOUNTTOCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _account)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> addAdminToCommunity(BigInteger _communityId, String _admin, byte[] _role) {
        final Function function = new Function(
                FUNC_ADDADMINTOCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _admin), 
                new org.web3j.abi.datatypes.generated.Bytes32(_role)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> addCommunity(BigInteger _communityId, String _tokenSymbol, String _wallet, BigInteger _amount) {
        final Function function = new Function(
                FUNC_ADDCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Utf8String(_tokenSymbol), 
                new org.web3j.abi.datatypes.Address(160, _wallet), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> addFundsToCommunity(BigInteger _communityId, BigInteger _amount) {
        final Function function = new Function(
                FUNC_ADDFUNDSTOCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<Tuple2<BigInteger, BigInteger>> annualBonuses(BigInteger param0) {
        final Function function = new Function(FUNC_ANNUALBONUSES, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        return new RemoteFunctionCall<Tuple2<BigInteger, BigInteger>>(function,
                new Callable<Tuple2<BigInteger, BigInteger>>() {
                    @Override
                    public Tuple2<BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple2<BigInteger, BigInteger>(
                                (BigInteger) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue());
                    }
                });
    }

    public RemoteFunctionCall<TransactionReceipt> applyDemurrage(BigInteger _communityId, List<String> _users) {
        final Function function = new Function(
                FUNC_APPLYDEMURRAGE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.Address>(
                        org.web3j.abi.datatypes.Address.class,
                        org.web3j.abi.Utils.typeMap(_users, org.web3j.abi.datatypes.Address.class))), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> applyDemurrageToUser(BigInteger _communityId, String _user) {
        final Function function = new Function(
                FUNC_APPLYDEMURRAGETOUSER, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _user)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<BigInteger> balanceOf(Integer _id, String _owner) {
        final Function function = new Function(FUNC_BALANCEOF, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_id), 
                new org.web3j.abi.datatypes.Address(160, _owner)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<byte[]> communityAdminRole() {
        final Function function = new Function(FUNC_COMMUNITYADMINROLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteFunctionCall<Boolean> communityExists(BigInteger _communityId) {
        final Function function = new Function(FUNC_COMMUNITYEXISTS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteFunctionCall<Tuple2<String, BigInteger>> demurrages(BigInteger param0) {
        final Function function = new Function(FUNC_DEMURRAGES, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(param0)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
        return new RemoteFunctionCall<Tuple2<String, BigInteger>>(function,
                new Callable<Tuple2<String, BigInteger>>() {
                    @Override
                    public Tuple2<String, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple2<String, BigInteger>(
                                (String) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue());
                    }
                });
    }

    public RemoteFunctionCall<String> getAccessControlAddress() {
        final Function function = new Function(FUNC_GETACCESSCONTROLADDRESS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteFunctionCall<List> getAllCategoriesByCommunity(BigInteger _communityId) {
        final Function function = new Function(FUNC_GETALLCATEGORIESBYCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Uint8>>() {}));
        return new RemoteFunctionCall<List>(function,
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result = (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteFunctionCall<Tuple2<BigInteger, BigInteger>> getAnnualBonus(BigInteger _communityId) {
        final Function function = new Function(FUNC_GETANNUALBONUS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        return new RemoteFunctionCall<Tuple2<BigInteger, BigInteger>>(function,
                new Callable<Tuple2<BigInteger, BigInteger>>() {
                    @Override
                    public Tuple2<BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple2<BigInteger, BigInteger>(
                                (BigInteger) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue());
                    }
                });
    }

    public RemoteFunctionCall<BigInteger> getCommunityHourlyCost(BigInteger _communityId) {
        final Function function = new Function(FUNC_GETCOMMUNITYHOURLYCOST, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<String> getCommunityWallet(BigInteger _communityId) {
        final Function function = new Function(FUNC_GETCOMMUNITYWALLET, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteFunctionCall<BigInteger> getDemurrageLimit(BigInteger _communityId) {
        final Function function = new Function(FUNC_GETDEMURRAGELIMIT, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<String> getDemurrageWallet(BigInteger _communityId) {
        final Function function = new Function(FUNC_GETDEMURRAGEWALLET, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteFunctionCall<Tuple2<BigInteger, BigInteger>> getFee(BigInteger _communityId) {
        final Function function = new Function(FUNC_GETFEE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint8>() {}, new TypeReference<Uint256>() {}));
        return new RemoteFunctionCall<Tuple2<BigInteger, BigInteger>>(function,
                new Callable<Tuple2<BigInteger, BigInteger>>() {
                    @Override
                    public Tuple2<BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple2<BigInteger, BigInteger>(
                                (BigInteger) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue());
                    }
                });
    }

    public RemoteFunctionCall<byte[]> getManageUsersCommunityRole() {
        final Function function = new Function(FUNC_GETMANAGEUSERSCOMMUNITYROLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteFunctionCall<BigInteger> getMutualHourlyCost(BigInteger _communityId) {
        final Function function = new Function(FUNC_GETMUTUALHOURLYCOST, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<byte[]> getPlatformAdminRole() {
        final Function function = new Function(FUNC_GETPLATFORMADMINROLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteFunctionCall<byte[]> getSchedulerAdminRole() {
        final Function function = new Function(FUNC_GETSCHEDULERADMINROLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteFunctionCall<Tuple3<BigInteger, BigInteger, String>> getServiceIncentive(BigInteger _communityId, BigInteger _categoryId) {
        final Function function = new Function(FUNC_GETSERVICEINCENTIVE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Uint8(_categoryId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint8>() {}, new TypeReference<Uint256>() {}, new TypeReference<Utf8String>() {}));
        return new RemoteFunctionCall<Tuple3<BigInteger, BigInteger, String>>(function,
                new Callable<Tuple3<BigInteger, BigInteger, String>>() {
                    @Override
                    public Tuple3<BigInteger, BigInteger, String> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple3<BigInteger, BigInteger, String>(
                                (BigInteger) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue(), 
                                (String) results.get(2).getValue());
                    }
                });
    }

    public RemoteFunctionCall<byte[]> getStakeholderRole() {
        final Function function = new Function(FUNC_GETSTAKEHOLDERROLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteFunctionCall<BigInteger> getStatus(BigInteger _id) {
        final Function function = new Function(FUNC_GETSTATUS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint8>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<Tuple3<BigInteger, BigInteger, String>> getSupplierServiceIncentive(BigInteger _communityId, BigInteger _categoryId) {
        final Function function = new Function(FUNC_GETSUPPLIERSERVICEINCENTIVE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Uint8(_categoryId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint8>() {}, new TypeReference<Uint256>() {}, new TypeReference<Utf8String>() {}));
        return new RemoteFunctionCall<Tuple3<BigInteger, BigInteger, String>>(function,
                new Callable<Tuple3<BigInteger, BigInteger, String>>() {
                    @Override
                    public Tuple3<BigInteger, BigInteger, String> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple3<BigInteger, BigInteger, String>(
                                (BigInteger) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue(), 
                                (String) results.get(2).getValue());
                    }
                });
    }

    public RemoteFunctionCall<byte[]> getTokenHolderRole() {
        final Function function = new Function(FUNC_GETTOKENHOLDERROLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteFunctionCall<Tuple3<BigInteger, BigInteger, BigInteger>> getTransferInfo(BigInteger _communityId, BigInteger _amount, BigInteger _categoryId) {
        final Function function = new Function(FUNC_GETTRANSFERINFO, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount), 
                new org.web3j.abi.datatypes.generated.Uint8(_categoryId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        return new RemoteFunctionCall<Tuple3<BigInteger, BigInteger, BigInteger>>(function,
                new Callable<Tuple3<BigInteger, BigInteger, BigInteger>>() {
                    @Override
                    public Tuple3<BigInteger, BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);
                        return new Tuple3<BigInteger, BigInteger, BigInteger>(
                                (BigInteger) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue(), 
                                (BigInteger) results.get(2).getValue());
                    }
                });
    }

    public RemoteFunctionCall<BigInteger> getUsersByRoleAndCommunity(BigInteger _communityId, byte[] _role) {
        final Function function = new Function(FUNC_GETUSERSBYROLEANDCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Bytes32(_role)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<BigInteger> getWelcomeBonus(BigInteger _communityId) {
        final Function function = new Function(FUNC_GETWELCOMEBONUS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<TransactionReceipt> grantAnnualBonus(BigInteger _communityId, List<String> _users) {
        final Function function = new Function(
                FUNC_GRANTANNUALBONUS, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.Address>(
                        org.web3j.abi.datatypes.Address.class,
                        org.web3j.abi.Utils.typeMap(_users, org.web3j.abi.datatypes.Address.class))), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> haltToken(BigInteger _id) {
        final Function function = new Function(
                FUNC_HALTTOKEN, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_id)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<Boolean> isUserOfCommunity(BigInteger _communityId, byte[] _role, String _user) {
        final Function function = new Function(FUNC_ISUSEROFCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Bytes32(_role), 
                new org.web3j.abi.datatypes.Address(160, _user)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteFunctionCall<TransactionReceipt> mintToken(BigInteger _communityId, String _account, BigInteger _amount) {
        final Function function = new Function(
                FUNC_MINTTOKEN, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _account), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> mintTokenFromModel(BigInteger _communityId, String _account, BigInteger _amount, BigInteger _year, BigInteger _month, BigInteger _day, String _BcParamsHexString, String _reason) {
        final Function function = new Function(
                FUNC_MINTTOKENFROMMODEL, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _account), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount), 
                new org.web3j.abi.datatypes.generated.Uint16(_year), 
                new org.web3j.abi.datatypes.generated.Uint8(_month), 
                new org.web3j.abi.datatypes.generated.Uint8(_day), 
                new org.web3j.abi.datatypes.Utf8String(_BcParamsHexString), 
                new org.web3j.abi.datatypes.Utf8String(_reason)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<byte[]> oracleAdminRole() {
        final Function function = new Function(FUNC_ORACLEADMINROLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteFunctionCall<byte[]> platformAdminRole() {
        final Function function = new Function(FUNC_PLATFORMADMINROLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteFunctionCall<TransactionReceipt> removeAccountToCommunity(BigInteger _communityId, String _account) {
        final Function function = new Function(
                FUNC_REMOVEACCOUNTTOCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _account)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> removeAdminToCommunity(BigInteger _communityId, String _admin, byte[] _role) {
        final Function function = new Function(
                FUNC_REMOVEADMINTOCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _admin), 
                new org.web3j.abi.datatypes.generated.Bytes32(_role)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> removeCommunity(BigInteger _communityId) {
        final Function function = new Function(
                FUNC_REMOVECOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<byte[]> schedulerAdminRole() {
        final Function function = new Function(FUNC_SCHEDULERADMINROLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteFunctionCall<TransactionReceipt> setAnnualBonusToCommunity(BigInteger _communityId, BigInteger _amount, BigInteger _grantDate) {
        final Function function = new Function(
                FUNC_SETANNUALBONUSTOCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount), 
                new org.web3j.abi.datatypes.generated.Uint256(_grantDate)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> setCommunityDemurrageLimit(BigInteger _communityId, BigInteger _limit) {
        final Function function = new Function(
                FUNC_SETCOMMUNITYDEMURRAGELIMIT, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Uint256(_limit)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> setCommunityDemurrageWallet(BigInteger _communityId, String _beneficiary) {
        final Function function = new Function(
                FUNC_SETCOMMUNITYDEMURRAGEWALLET, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _beneficiary)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> setCommunityServiceCost(BigInteger _communityId, BigInteger _cost) {
        final Function function = new Function(
                FUNC_SETCOMMUNITYSERVICECOST, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Uint256(_cost)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> setFeeToCommunity(BigInteger _communityId, BigInteger _amount, BigInteger _type) {
        final Function function = new Function(
                FUNC_SETFEETOCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount), 
                new org.web3j.abi.datatypes.generated.Uint16(_type)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> setMutualServiceCost(BigInteger _communityId, BigInteger _cost) {
        final Function function = new Function(
                FUNC_SETMUTUALSERVICECOST, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Uint256(_cost)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> setServiceIncentiveToCategory(BigInteger _communityId, BigInteger _categoryId, BigInteger _amount, BigInteger _type, String name) {
        final Function function = new Function(
                FUNC_SETSERVICEINCENTIVETOCATEGORY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Uint8(_categoryId), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount), 
                new org.web3j.abi.datatypes.generated.Uint16(_type), 
                new org.web3j.abi.datatypes.Utf8String(name)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> setSupplierServiceIncentiveToCategory(BigInteger _communityId, BigInteger _categoryId, BigInteger _amount, BigInteger _type, String name) {
        final Function function = new Function(
                FUNC_SETSUPPLIERSERVICEINCENTIVETOCATEGORY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Uint8(_categoryId), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount), 
                new org.web3j.abi.datatypes.generated.Uint16(_type), 
                new org.web3j.abi.datatypes.Utf8String(name)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> setWelcomeBonusToCommunity(BigInteger _communityId, BigInteger _amount) {
        final Function function = new Function(
                FUNC_SETWELCOMEBONUSTOCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<byte[]> stakeholderRole() {
        final Function function = new Function(FUNC_STAKEHOLDERROLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteFunctionCall<TransactionReceipt> startToken(BigInteger _id) {
        final Function function = new Function(
                FUNC_STARTTOKEN, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_id)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<byte[]> tokenHolderRole() {
        final Function function = new Function(FUNC_TOKENHOLDERROLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteFunctionCall<BigInteger> totalSupply(BigInteger _id) {
        final Function function = new Function(FUNC_TOTALSUPPLY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<TransactionReceipt> transferForCommunityService(BigInteger _communityId, String _communityWallet, String _to, BigInteger _amount) {
        final Function function = new Function(
                FUNC_TRANSFERFORCOMMUNITYSERVICE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _communityWallet), 
                new org.web3j.abi.datatypes.Address(160, _to), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> transferForGood(BigInteger _communityId, String _to, BigInteger _amount) {
        final Function function = new Function(
                FUNC_TRANSFERFORGOOD, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _to), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> transferForMutualService(BigInteger _communityId, String _to, BigInteger _amount, BigInteger _categoryId) {
        final Function function = new Function(
                FUNC_TRANSFERFORMUTUALSERVICE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _to), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount), 
                new org.web3j.abi.datatypes.generated.Uint8(_categoryId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> transferForStructure(BigInteger _communityId, String _from, String _to, BigInteger _amount) {
        final Function function = new Function(
                FUNC_TRANSFERFORSTRUCTURE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _from), 
                new org.web3j.abi.datatypes.Address(160, _to), 
                new org.web3j.abi.datatypes.generated.Uint256(_amount)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> updateWalletOnCommunity(BigInteger _communityId, String _communityWallet) {
        final Function function = new Function(
                FUNC_UPDATEWALLETONCOMMUNITY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint16(_communityId), 
                new org.web3j.abi.datatypes.Address(160, _communityWallet)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    @Deprecated
    public static Community_sol load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new Community_sol(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    @Deprecated
    public static Community_sol load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new Community_sol(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static Community_sol load(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return new Community_sol(contractAddress, web3j, credentials, contractGasProvider);
    }

    public static Community_sol load(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return new Community_sol(contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public static RemoteCall<Community_sol> deploy(Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider, String _accessControl, byte[] _platformAdminRole, byte[] _communityAdminRole, byte[] _schedulerAdminRole, byte[] _tokenHolderRole, byte[] _stakeholderRole) {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, _accessControl), 
                new org.web3j.abi.datatypes.generated.Bytes32(_platformAdminRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_communityAdminRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_schedulerAdminRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_tokenHolderRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_stakeholderRole)));
        return deployRemoteCall(Community_sol.class, web3j, credentials, contractGasProvider, BINARY, encodedConstructor);
    }

    public static RemoteCall<Community_sol> deploy(Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider, String _accessControl, byte[] _platformAdminRole, byte[] _communityAdminRole, byte[] _schedulerAdminRole, byte[] _tokenHolderRole, byte[] _stakeholderRole) {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, _accessControl), 
                new org.web3j.abi.datatypes.generated.Bytes32(_platformAdminRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_communityAdminRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_schedulerAdminRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_tokenHolderRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_stakeholderRole)));
        return deployRemoteCall(Community_sol.class, web3j, transactionManager, contractGasProvider, BINARY, encodedConstructor);
    }

    @Deprecated
    public static RemoteCall<Community_sol> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit, String _accessControl, byte[] _platformAdminRole, byte[] _communityAdminRole, byte[] _schedulerAdminRole, byte[] _tokenHolderRole, byte[] _stakeholderRole) {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, _accessControl), 
                new org.web3j.abi.datatypes.generated.Bytes32(_platformAdminRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_communityAdminRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_schedulerAdminRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_tokenHolderRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_stakeholderRole)));
        return deployRemoteCall(Community_sol.class, web3j, credentials, gasPrice, gasLimit, BINARY, encodedConstructor);
    }

    @Deprecated
    public static RemoteCall<Community_sol> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit, String _accessControl, byte[] _platformAdminRole, byte[] _communityAdminRole, byte[] _schedulerAdminRole, byte[] _tokenHolderRole, byte[] _stakeholderRole) {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, _accessControl), 
                new org.web3j.abi.datatypes.generated.Bytes32(_platformAdminRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_communityAdminRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_schedulerAdminRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_tokenHolderRole), 
                new org.web3j.abi.datatypes.generated.Bytes32(_stakeholderRole)));
        return deployRemoteCall(Community_sol.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, encodedConstructor);
    }

    public static class AccountAddedEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public String account;

        public byte[] role;

        public String admin;
    }

    public static class AccountRemovedEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public String account;

        public byte[] role;

        public String admin;
    }

    public static class AnnualBonusGrantedEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public BigInteger amount;

        public String admin;

        public BigInteger timestamp;
    }

    public static class AnnualBonusSetEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public BigInteger amount;

        public BigInteger changeDate;

        public String admin;

        public BigInteger timestamp;
    }

    public static class CommunityAddedEventResponse extends BaseEventResponse {
        public String account;

        public BigInteger communityId;

        public String tokenSymbol;

        public String wallet;
    }

    public static class CommunityHourlyCostSetEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public BigInteger cost;

        public String admin;

        public BigInteger timestamp;
    }

    public static class CommunityRemovedEventResponse extends BaseEventResponse {
        public String account;

        public BigInteger communityId;
    }

    public static class DemurrageAppliedEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public String admin;

        public String user;

        public BigInteger amountRemoved;

        public String demurrageWallet;

        public BigInteger timestamp;
    }

    public static class DemurrageLimitChangeEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public BigInteger newLimit;

        public String admin;

        public BigInteger timestamp;
    }

    public static class DemurrageWalletChangeEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public String newAddress;

        public String admin;

        public BigInteger timestamp;
    }

    public static class FeeSetEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public BigInteger amount;

        public BigInteger feeType;

        public String admin;

        public BigInteger timestamp;
    }

    public static class MintEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public String from;

        public String to;

        public BigInteger amount;

        public BigInteger timestamp;
    }

    public static class MintFromModelEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public String from;

        public String to;

        public BigInteger amount;

        public BigInteger timestamp;

        public BigInteger year;

        public BigInteger month;

        public BigInteger day;

        public String BcParamsHexString;

        public String reason;
    }

    public static class MutualHourlyCostSetEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public BigInteger cost;

        public String admin;

        public BigInteger timestamp;
    }

    public static class ServiceIncentiveSetEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public BigInteger categoryId;

        public BigInteger amount;

        public BigInteger incentiveType;

        public String name;

        public String admin;

        public BigInteger timestamp;
    }

    public static class StateChangeEventResponse extends BaseEventResponse {
        public BigInteger id;

        public BigInteger state;

        public String operator;

        public BigInteger date;
    }

    public static class SupplierServiceIncentiveSetEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public BigInteger categoryId;

        public BigInteger amount;

        public BigInteger incentiveType;

        public String name;

        public String admin;

        public BigInteger timestamp;
    }

    public static class TokenCreationEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public String symbol;

        public String createdBy;

        public BigInteger createdAt;
    }

    public static class TransferEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public String from;

        public String to;

        public BigInteger amount;

        public String reason;

        public BigInteger timestamp;
    }

    public static class TransferDetailEventResponse extends BaseEventResponse {
        public String account;

        public String to;

        public BigInteger communityId;

        public BigInteger amount;

        public BigInteger fee;

        public BigInteger incentive;
    }

    public static class WelcomeBonusSetEventResponse extends BaseEventResponse {
        public BigInteger communityId;

        public BigInteger amount;

        public String admin;

        public BigInteger timestamp;
    }
}
*/
