code: def get_down_block_types(original_encoder_config):
      attn_resolutions = coerce_attn_resolutions(
          original_encoder_config["attn_resolutions"]
      )
      num_resolutions = len(original_encoder_config["ch_mult"])
      resolution = coerce_resolution(
          original_encoder_config["resolution"]
      )
  
      curr_res = resolution
      down_block_types = []
  
      for _ in range(num_resolutions):
          if curr_res in attn_resolutions:
              down_block_type = "AttnDownEncoderBlock2D"
          else:
              down_block_type = "DownEncoderBlock2D"
  
          down_block_types.append(down_block_type)
  
          curr_res = [r // 2 for r in curr_res]
  
      return down_block_types
  
imports: import argparse
  import tempfile
  import torch
  import yaml
  from accelerate import init_empty_weights, load_checkpoint_and_dispatch
  from transformers import CLIPTextModel, CLIPTokenizer
  from yaml.loader import FullLoader
  from diffusers import Transformer2DModel, VQDiffusionPipeline, VQDiffusionScheduler, VQModel
  from diffusers.pipelines.vq_diffusion.pipeline_vq_diffusion import LearnedClassifierFreeSamplingEmbeddings
label_desc: Use image node_id 2 for calling a global function with example usage: get_down_block_types(original_encoder_config) and returns: down_block_types