code: def total_flatten(unflat_list):
      
      import utool as ut
      next_list = unflat_list
      scalar_flags = [not ut.isiterable(item) for item in next_list]
      while not all(scalar_flags):
          unflatenized = [[item] if flag else item for flag, item in zip(scalar_flags, next_list)]
          flatter_list = ut.flatten(unflatenized)
          next_list = flatter_list
          scalar_flags = [not ut.isiterable(item) for item in next_list]
      flat_list = next_list
      return flat_list
docs: unflat_list = [1, 2, [3, 4], [5, [9]]]
      Args:
          unflat_list (list):
  
      Returns:
          list: flat_list
  
      CommandLine:
          python -m utool.util_list --exec-total_flatten --show
  
      Example:
          >>> # DISABLE_DOCTEST
          >>> from utool.util_list import *  # NOQA
          >>> import utool as ut
          >>> unflat_list = [[[1, 2, 3], 4, 5], 9, [2, 3], [1, [2, 3, 4]], 1, 2, 3]
          >>> flat_list = total_flatten(unflat_list)
          >>> result = ('flat_list = %s' % (ut.repr2(flat_list),))
          >>> print(result)