function sendSHPCtoContributors(uint start, uint limit) public onlyMultiOwnersType(12) {
    require(state == SaleState.END);
    require(start >= 0 && limit > 0);
    require(getCoinBalance() > 0);
    

    for (uint i = start; i < limit; i++) {
      uint uId = storageContract.getContributorIndexes(i);
      if (uId > 0) {
        address addr = storageContract.getContributorAddressById(uId);
        uint coins = storageContract.getTotalCoin(addr);
        if (!storageContract.checkReceivedCoins(addr) && storageContract.checkWalletExists(addr) && coins > 0 && ((storageContract.checkPreSaleReceivedBonus(addr) && block.timestamp >= unfreezeRefundPreSale) || (!storageContract.checkPreSaleReceivedBonus(addr) && block.timestamp >= unfreezeRefundAll))) {
          if (coinContract.transfer(addr, coins)) {
            storageContract.setReceivedCoin(uId);
            emit SendSHPCtoContributor(addr);
          }
        }
      }
    }
  }