code: def bifpn_config(min_level, max_level, weight_method):
      """A dynamic bifpn config that can adapt to different min/max levels."""
      p = hparams_config.Config()
      p.weight_method = weight_method or "fastattn"
  
      # Node id starts from the input features and monotonically increase whenever
      # a new node is added. Here is an example for level P3 - P7:
      #     P7 (4)              P7" (12)
      #     P6 (3)    P6' (5)   P6" (11)
      #     P5 (2)    P5' (6)   P5" (10)
      #     P4 (1)    P4' (7)   P4" (9)
      #     P3 (0)              P3" (8)
      # So output would be like:
      # [
      #   {'feat_level': 6, 'inputs_offsets': [3, 4]},  # for P6'
      #   {'feat_level': 5, 'inputs_offsets': [2, 5]},  # for P5'
      #   {'feat_level': 4, 'inputs_offsets': [1, 6]},  # for P4'
      #   {'feat_level': 3, 'inputs_offsets': [0, 7]},  # for P3"
      #   {'feat_level': 4, 'inputs_offsets': [1, 7, 8]},  # for P4"
      #   {'feat_level': 5, 'inputs_offsets': [2, 6, 9]},  # for P5"
      #   {'feat_level': 6, 'inputs_offsets': [3, 5, 10]},  # for P6"
      #   {'feat_level': 7, 'inputs_offsets': [4, 11]},  # for P7"
      # ]
      num_levels = max_level - min_level + 1
      node_ids = {min_level + i: [i] for i in range(num_levels)}
  
      level_last_id = lambda level: node_ids[level][-1]
      level_all_ids = lambda level: node_ids[level]
      id_cnt = itertools.count(num_levels)
  
      p.nodes = []
      for i in range(max_level - 1, min_level - 1, -1):
          # top-down path.
          p.nodes.append(
              {
                  "feat_level": i,
                  "inputs_offsets": [
                      level_last_id(i),
                      level_last_id(i + 1),
                  ],
              }
          )
          node_ids[i].append(next(id_cnt))
  
      for i in range(min_level + 1, max_level + 1):
          # bottom-up path.
          p.nodes.append(
              {
                  "feat_level": i,
                  "inputs_offsets": level_all_ids(i)
                  + [level_last_id(i - 1)],
              }
          )
          node_ids[i].append(next(id_cnt))
  
      return p
  
imports: import itertools
  import hparams_config
label_desc: Use image node_id 1 for calling a global function with example usage: bifpn_config(min_level, max_level, weight_method) and returns: p