code: def mask_between_time(dts, start, end, include_start=True, include_end=True):
      
      # This function is adapted from
      # `pandas.Datetime.Index.indexer_between_time` which was originally
      # written by Wes McKinney, Chang She, and Grant Roch.
      time_micros = dts._get_time_micros()
      start_micros = _time_to_micros(start)
      end_micros = _time_to_micros(end)
  
      left_op, right_op, join_op = _opmap[
          bool(include_start),
          bool(include_end),
          start_micros <= end_micros,
      ]
  
      return join_op(
          left_op(start_micros, time_micros),
          right_op(time_micros, end_micros),
      )
docs: Return a mask of all of the datetimes in ``dts`` that are between
      ``start`` and ``end``.
      Parameters
      ----------
      dts : pd.DatetimeIndex
          The index to mask.
      start : time
          Mask away times less than the start.
      end : time
          Mask away times greater than the end.
      include_start : bool, optional
          Inclusive on ``start``.
      include_end : bool, optional
          Inclusive on ``end``.
      Returns
      -------
      mask : np.ndarray[bool]
          A bool array masking ``dts``.
      See Also
      --------
      :meth:`pandas.DatetimeIndex.indexer_between_time`