<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse_script_interpreter(source):
 """ Parse the script interpreter portion of a UNIX hashbang using the rules Linux uses. :param str source: String like "/usr/bin/env python". :returns: Tuple of `(interpreter, arg)`, where `intepreter` is the script interpreter and `arg` is its sole argument if present, otherwise :py:data:`None`. """

    # Find terminating newline. Assume last byte of binprm_buf if absent.
    nl = source.find(b'\n', 0, 128)
    if nl == -1:
        nl = min(128, len(source))

    # Split once on the first run of whitespace. If no whitespace exists,
    # bits just contains the interpreter filename.
    bits = source[0:nl].strip().split(None, 1)
    if len(bits) == 1:
        return mitogen.core.to_text(bits[0]), None
    return mitogen.core.to_text(bits[0]), mitogen.core.to_text(bits[1])