code: def query_str(ifo, flag_str, start_time, end_time, server="segments.ligo.org",
                veto_definer=None):
      
      flags, sign, ifos, bounds, padding = parse_flag_str(flag_str)
      up = [f for f in flags if sign[f]]
      down = [f for f in flags if not sign[f]]
  
      if len(up) + len(down) != len(flags):
          raise ValueError('Not all flags could be parsed, check +/- prefix')
      segs = query_cumulative_flags(ifo, up, start_time, end_time,
                                    server=server,
                                    veto_definer=veto_definer,
                                    bounds=bounds,
                                    padding=padding,
                                    override_ifos=ifos)
  
      mseg = query_cumulative_flags(ifo, down, start_time, end_time,
                                    server=server,
                                    veto_definer=veto_definer,
                                    bounds=bounds,
                                    padding=padding,
                                    override_ifos=ifos)
  
      segs = (segs - mseg).coalesce()
      return segs
docs: Query for flags based on a special str syntax
  
      Parameters
      ----------
      ifo: str
          The ifo to be mainly quering for. (may be overriden in syntax)
      flag_str: str
          Specification of how to do the query. Ex. +H1:DATA:1<-8,8>[0,100000000]
          would return H1 time for the DATA available flag with version 1. It
          would then apply an 8 second padding and only return times within
          the chosen range 0,1000000000.
      start_time: int
          The start gps time. May be overriden for individual flags with the
          flag str bounds syntax
      end_time: int
          The end gps time. May be overriden for individual flags with the
          flag str bounds syntax
  
      Returns
      -------
      segs: segmentlist
          A list of segments corresponding to the flag query string