code: def map_abi_data(normalizers, types, data):
      
      pipeline = itertools.chain(
          [abi_data_tree(types)],
          map(data_tree_map, normalizers),
          [partial(recursive_map, strip_abi_type)],
      )
  
      return pipe(data, *pipeline)
docs: This function will apply normalizers to your data, in the
      context of the relevant types. Each normalizer is in the format:
  
      def normalizer(datatype, data):
          # Conditionally modify data
          return (datatype, data)
  
      Where datatype is a valid ABI type string, like "uint".
  
      In case of an array, like "bool[2]", normalizer will receive `data`
      as an iterable of typed data, like `[("bool", True), ("bool", False)]`.
  
      Internals
      ---
  
      This is accomplished by:
  
      1. Decorating the data tree with types
      2. Recursively mapping each of the normalizers to the data
      3. Stripping the types back out of the tree