code: def nuc_p(msg):
      
      tc = typecode(msg)
  
      if typecode(msg) < 5 or typecode(msg) > 22:
          raise RuntimeError(
              "%s: Not a surface position message (5<TC<8), \
              airborne position message (8<TC<19), \
              or airborne position with GNSS height (20<TC<22)" % msg
          )
  
      try:
          NUCp = uncertainty.TC_NUCp_lookup[tc]
          HPL = uncertainty.NUCp[NUCp]['HPL']
          RCu = uncertainty.NUCp[NUCp]['RCu']
          RCv = uncertainty.NUCp[NUCp]['RCv']
      except KeyError:
          HPL, RCu, RCv = uncertainty.NA, uncertainty.NA, uncertainty.NA
  
  
      if tc in [20, 21]:
          RCv = uncertainty.NA
  
      return HPL, RCu, RCv
docs: Calculate NUCp, Navigation Uncertainty Category - Position (ADS-B version 1)
  
      Args:
          msg (string): 28 bytes hexadecimal message string,
  
      Returns:
          int: Horizontal Protection Limit
          int: 95% Containment Radius - Horizontal (meters)
          int: 95% Containment Radius - Vertical (meters)