code: def plot_original_with_overlays(
      original_data: pd.Series,
      overlay_data: pd.DataFrame,
      title: str,
      fig_defaults: Dict[str, Any],
      hoverinfo: Optional[str] = "text",
      fig_kwargs: Optional[Dict] = None,
  ) -> PlotReturnType:
      """Plots the original data along with the data to be overlaid in a single plot.
  
      Parameters
      ----------
      original_data : pd.Series
          The original target series to be plotted
      overlay_data : pd.DataFrame
          The data that must be overlaid over the original data. e.g. prediction
          from possibly multiple models. Each column in the overlay_data is overlaid
          as a separate series over the original_data. The column names are used as
          labels for the overlaid data.
      title : str
          The title to use for the plot (mandatory)
      fig_defaults : Dict[str, Any]
          The defaults dictionary containing keys for "width", "height", and "template"
      hoverinfo : Optional[str], optional
          Whether to display the hoverinfo in the plot, by default "text"
      fig_kwargs : Optional[Dict], optional
          A dictionary containing optional keys for "width", "height" and/or "template"
  
      Returns
      -------
      PlotReturnType
          Returns back the plotly figure along with the data used to create the plot.
      """
      fig, return_data_dict = None, None
  
      data_to_plot = pd.concat([original_data, overlay_data], axis=1)
  
      fig = make_subplots(rows=1, cols=1)
      fig = time_series_subplot(
          fig=fig, data=data_to_plot, row=1, col=1, hoverinfo=hoverinfo
      )
  
      fig_kwargs = fig_kwargs or {}
      with fig.batch_update():
          template = _resolve_dict_keys(
              dict_=fig_kwargs, key="template", defaults=fig_defaults
          )
          fig.update_layout(template=template)
  
          fig = _update_fig_dimensions(
              fig=fig, fig_kwargs=fig_kwargs, fig_defaults=fig_defaults
          )
          fig.update_layout(showlegend=True)
          fig.update_layout(title=title)
  
      return_data_dict = {
          "original_data": original_data,
          "overlay_data": overlay_data,
      }
  
      return fig, return_data_dict
  
imports: from math import ceil
  from typing import Any, Dict, List, Optional, Tuple, Union
  import matplotlib
  import matplotlib.pyplot
  import numpy
  import pandas
  import plotly.express
  import plotly.graph_objects
  import plotly.io
  from plotly.colors import DEFAULT_PLOTLY_COLORS
  from plotly.subplots import make_subplots
  from scipy.fft import fft, fftfreq
  from scipy.signal import periodogram
  from statsmodels.graphics.gofplots import qqplot
  from statsmodels.tsa.seasonal import STL, seasonal_decompose
  from statsmodels.tsa.stattools import acf, ccf, pacf
  from pycaret.internal.logging import get_logger
  from pycaret.utils.generic import _resolve_dict_keys
  from pycaret.utils.time_series import TSAllowedPlotDataTypes
label_desc: Use image node_id 12 for calling a global function with example usage: plot_original_with_overlays(original_data, overlay_data, title, fig_defaults, hoverinfo, fig_kwargs) and returns: fig,  return_data_dict