input: Write a python function to perform binary addition of two binary numbers given as strings.
  assert binary_addition('010', '101') == '111'
  assert binary_addition('1100', '1010') == '10110'
  assert binary_addition('0001', '1001') == '1010'
output: def binary_addition(a: str, b: str) -> str:
      max_len = max(len(a), len(b))
      a = a.zfill(max_len)
      b = b.zfill(max_len)
      
      result = ''
      carry = 0
      
      for i in range(max_len - 1, -1, -1):
          total_sum = int(a[i]) + int(b[i]) + carry
          result = str(total_sum % 2) + result
          carry = total_sum // 2
      
      if carry:
          result = '1' + result
      
      return result