class_docstr: Method 1: CrossCorrelation algorithm.
  Ideas come from Paul Bourke(http://paulbourke.net/miscellaneous/correlate/).
docstr: Find the maximum allowed shift steps based on max_shift_milliseconds.
  param list timestamps: timestamps of a time series.
code: def _find_allowed_shift(self, timestamps):
      """
      Find the maximum allowed shift steps based on max_shift_milliseconds.
      param list timestamps: timestamps of a time series.
      """
      init_ts = timestamps[0]
      residual_timestamps = [ts - init_ts for ts in timestamps]
      n = len(residual_timestamps)
      return self._find_first_bigger(
          residual_timestamps, self.max_shift_milliseconds, 0, n
      )
  
file_path: luminol/src/luminol/algorithms/correlator_algorithms/cross_correlator.py
imports: from luminol.algorithms.correlator_algorithms import CorrelatorAlgorithm
  from luminol.modules.correlation_result import CorrelationResult
  from luminol.constants import DEFAULT_SHIFT_IMPACT, DEFAULT_ALLOWED_SHIFT_SECONDS
label_desc: Use image node_id 3 for calling the CrossCorrelator obj's underlying member method code with example usage: obj._find_allowed_shift(timestamps) and returns: self