human
Complete the below
def get_matched_interdiff_files(tool, filediffs, interfilediffs):

    ''''Generate pairs of matched files for display in interdiffs.
    This compares a list of filediffs and a list of interfilediffs, attempting
    to best match up the files in both for display in the diff viewer.
    This will prioritize matches that share a common source filename,
    destination filename, and new/deleted state. Failing that, matches that
    share a common source filename are paired off.
    Any entries in ``interfilediffs` that don\'t have any match in ``filediffs``
    are considered new changes in the interdiff, and any entries in
    ``filediffs`` that don\'t have entries in ``interfilediffs`` are considered
    reverted changes.
    Args:
    tool (reviewboard.scmtools.core.SCMTool)
    The tool used for all these diffs.
    filediffs (list of reviewboard.diffviewer.models.FileDiff):
    The list of filediffs on the left-hand side of the diff range.
    interfilediffs (list of reviewboard.diffviewer.models.FileDiff):
    The list of filediffs on the right-hand side of the diff range.
    Yields:
    tuple:
    A paired off filediff match. This is a tuple containing two entries,
    each a :py:class:`~reviewboard.diffviewer.models.FileDiff` or ``None``.'
    '''
assistant
#Here is the Python program you requested.
    parser = tool.get_parser(u'')
    _normfile = parser.normalize_diff_filename
    def _make_detail_key(filediff):
        return (_normfile(filediff.source_file), _normfile(filediff.dest_file), filediff.is_new, filediff.deleted)
    detail_interdiff_map = {}
    simple_interdiff_map = {}
    remaining_interfilediffs = set()
    for interfilediff in interfilediffs:
        source_file = _normfile(interfilediff.source_file)
        detail_key = _make_detail_key(interfilediff)
        remaining_interfilediffs.add(interfilediff)
        detail_interdiff_map[detail_key] = interfilediff
        simple_interdiff_map.setdefault(source_file, set()).add(interfilediff)
    remaining_filediffs = []
    for filediff in filediffs:
        source_file = _normfile(filediff.source_file)
        try:
            interfilediff = detail_interdiff_map.pop(_make_detail_key(filediff))
        except KeyError:
            remaining_filediffs.append(filediff)
            continue
        (yield (filediff, interfilediff))
        if interfilediff:
            remaining_interfilediffs.discard(interfilediff)
            try:
                simple_interdiff_map.get(source_file, []).remove(interfilediff)
            except ValueError:
                pass
    new_remaining_filediffs = []
    for filediff in remaining_filediffs:
        source_file = _normfile(filediff.source_file)
        found_interfilediffs = [temp_interfilediff for temp_interfilediff in simple_interdiff_map.get(source_file, []) if ((temp_interfilediff.dest_file == filediff.dest_file) and (filediff.source_file != filediff.dest_file))]
        if found_interfilediffs:
            remaining_interfilediffs.difference_update(found_interfilediffs)
            for interfilediff in found_interfilediffs:
                simple_interdiff_map[source_file].remove(interfilediff)
                (yield (filediff, interfilediff))
        else:
            new_remaining_filediffs.append(filediff)
    remaining_filediffs = new_remaining_filediffs
    new_remaining_filediffs = []
  ...