code: def zlma(close, length=None, mamode=None, offset=None, **kwargs):
      """Indicator: Zero Lag Moving Average (ZLMA)"""
      # Validate Arguments
      length = int(length) if length and length > 0 else 10
      mamode = mamode.lower() if isinstance(mamode, str) else "ema"
      close = verify_series(close, length)
      offset = get_offset(offset)
  
      if close is None:
          return
  
      # Calculate Result
      lag = int(0.5 * (length - 1))
      close_ = 2 * close - close.shift(lag)
      if mamode == "dema":
          zlma = dema(close_, length=length, **kwargs)
      elif mamode == "hma":
          zlma = hma(close_, length=length, **kwargs)
      elif mamode == "linreg":
          zlma = linreg(close_, length=length, **kwargs)
      elif mamode == "rma":
          zlma = rma(close_, length=length, **kwargs)
      elif mamode == "sma":
          zlma = sma(close_, length=length, **kwargs)
      elif mamode == "swma":
          zlma = swma(close_, length=length, **kwargs)
      elif mamode == "t3":
          zlma = t3(close_, length=length, **kwargs)
      elif mamode == "tema":
          zlma = tema(close_, length=length, **kwargs)
      elif mamode == "trima":
          zlma = trima(close_, length=length, **kwargs)
      elif mamode == "vidya":
          zlma = vidya(close_, length=length, **kwargs)
      elif mamode == "wma":
          zlma = wma(close_, length=length, **kwargs)
      else:
          zlma = ema(close_, length=length, **kwargs)  # "ema"
  
      # Offset
      if offset != 0:
          zlma = zlma.shift(offset)
  
      # Handle fills
      if "fillna" in kwargs:
          zlma.fillna(kwargs["fillna"], inplace=True)
      if "fill_method" in kwargs:
          zlma.fillna(method=kwargs["fill_method"], inplace=True)
  
      # Name & Category
      zlma.name = f"ZL_{zlma.name}"
      zlma.category = "overlap"
  
      return zlma
  
label_desc: Use image node_id 1 for calling a global function with example usage: zlma(close, length, mamode, offset) and returns: zlma