def rowForMatchedArrayOnAmountDate(gpArrayCurrentRow):

            rowToReturn = gpArrayCurrentRow

            dateComparisonFunction = myPyFunc.getColumnComparisonFunction(
                gpDateStrColIdx, bankDteStrColIdx)
            rowIndicesThatMatch = myPyFunc.rowIndicesInSecondFromTestsOnFirst(
                [amountComparisonFunction, dateComparisonFunction],
                gpArrayCurrentRow, bankArray)

            if len(rowIndicesThatMatch) == 1:
                filterFieldsForMatchStatus = myPyFunc.getFilterByIndexFunction(
                    [gpNewAmtColIdx, gpDateStrColIdx])
                rowToReturn.extend([
                    myPyFunc.getMatchStatus(
                        myPyFunc.filterArray(filterFieldsForMatchStatus,
                                             gpArrayFirstRow))
                ] + bankArray.pop(rowIndicesThatMatch[0]))
            elif len(rowIndicesThatMatch) > 1:
                p('More than one row matches on the first pass')

                for rowIndexThatMatches in rowIndicesThatMatch:
                    p(bankArray[rowIndexThatMatches])

            return rowToReturn
        def rowForMatchedArrayOnDlyDepBistrackID(matchedArrayCurrentRow):

            if len(matchedArrayCurrentRow) == len(gpArrayFirstRow):

                def dailyDepBistrackIDComparisonFunction(
                        matchedArrayCurrentRow, dailyDepositsArrayCurrentRow):

                    lengthOfBistrackID = 5
                    lengthOfBistrackPrefix = 2
                    dlyDepTrxIdColIdx = 7

                    if matchedArrayCurrentRow[gpNumColIdx][
                            lengthOfBistrackPrefix:lengthOfBistrackID +
                            lengthOfBistrackPrefix] == dailyDepositsArrayCurrentRow[
                                dlyDepTrxIdColIdx]:
                        return True
                    return False

                rowIndicesThatMatch = myPyFunc.rowIndicesInSecondFromTestsOnFirst(
                    [dailyDepBistrackIDComparisonFunction],
                    matchedArrayCurrentRow, dailyDepositsArray)
                filterByCurrentAmount = createFilterOnUnmatchedRows(
                    matchedArrayCurrentRow)

                if len(rowIndicesThatMatch) == 1 or len(
                        rowIndicesThatMatch) == len(
                            list(filter(filterByCurrentAmount, matchedArray))):
                    return matchedArrayCurrentRow + [
                        'AMOUNT DOESN\'T MATCH! Matched to Daily Deposits on Bistrack ID'
                    ] + dailyDepositsArray.pop(rowIndicesThatMatch[0])

            return matchedArrayCurrentRow
        def rowForMatchedArrayAmount(matchedArrayCurrentRow):

            if len(matchedArrayCurrentRow) == len(gpArrayFirstRow):

                rowIndicesThatMatch = myPyFunc.rowIndicesInSecondFromTestsOnFirst(
                    [amountComparisonFunction], matchedArrayCurrentRow,
                    bankArray)
                filterByCurrentAmount = createFilterOnUnmatchedRows(
                    matchedArrayCurrentRow)

                if len(rowIndicesThatMatch) == 1 or len(
                        rowIndicesThatMatch) == len(
                            list(filter(filterByCurrentAmount, matchedArray))):
                    return matchedArrayCurrentRow + [
                        'Matched On New Amount, ignoring transaction type'
                    ] + bankArray.pop(rowIndicesThatMatch[0])

            return matchedArrayCurrentRow
        def rowForMatchedArrayOnTrxNumTypeNotAmount(matchedArrayCurrentRow):

            if len(matchedArrayCurrentRow) == len(gpArrayFirstRow):

                rowIndicesThatMatch = myPyFunc.rowIndicesInSecondFromTestsOnFirst(
                    [trxNumComparisonFunction, typeComparisonFunction],
                    matchedArrayCurrentRow, bankArray)
                filterByCurrentAmount = createFilterOnUnmatchedRows(
                    matchedArrayCurrentRow)

                if len(rowIndicesThatMatch) == 1 or len(
                        rowIndicesThatMatch) == len(
                            list(filter(filterByCurrentAmount, matchedArray))):
                    return matchedArrayCurrentRow + [
                        'AMOUNT DOESN\'T MATCH! Matched trx number and type, but not amount'
                    ] + bankArray.pop(rowIndicesThatMatch[0])

            return matchedArrayCurrentRow
        def rowForMatchedArrayOnAmountNotCheck(matchedArrayCurrentRow):

            if len(matchedArrayCurrentRow) == len(gpArrayFirstRow):

                rowIndicesThatMatch = myPyFunc.rowIndicesInSecondFromTestsOnFirst(
                    [amountComparisonFunction, checkComparisonFunction],
                    matchedArrayCurrentRow, bankArray)
                filterByCurrentAmount = createFilterOnUnmatchedRows(
                    matchedArrayCurrentRow)

                if len(rowIndicesThatMatch) == 1 or len(
                        rowIndicesThatMatch) == len(
                            list(filter(filterByCurrentAmount, matchedArray))):
                    filterFieldsForMatchStatus = myPyFunc.getFilterByIndexFunction(
                        [gpNewAmtColIdx])
                    return matchedArrayCurrentRow + [
                        myPyFunc.getMatchStatus(
                            myPyFunc.filterArray(filterFieldsForMatchStatus,
                                                 gpArrayFirstRow))
                    ] + bankArray.pop(rowIndicesThatMatch[0])

            return matchedArrayCurrentRow