A love letter to the CSV format (2024)

2025-09-109:27109116

why people pretending CSV is dead are wrong

▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▒▓▓▒▒▓▓▓▓▓▓▒▓▓▓▒▓▓▓▒▓▓▓▓▒▓▓▒▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▓▓▓▒▓▓▓▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▒▒▓▒▒▒▓▒▒▒▓▒▒▒▓▒▒▒▓▒▓▓▓▒▓▓▓▓▒▒▒▒▒▒▓▒▒▒▓▒▓▓▒▒▒▓▓▒▒▓▒▒▒▓▓▒▓▓▓▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓░▒▓▒░▒▓▒▒▒▓▒▒▒▓▓▒▓▓▓▒▒▓▓▒▓▓▒▒▒░▒▒▒░▒▒▒▒▓▓▓▓▓▒▓▓▒▒▒▓▒▒▓▓▒▒▓▓▓▒▒▓▒▒▒▓▒░▒▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▒▓▒▒▓▒▒▒▓▒▓▒▒▓▓▓▒▓▓▒▓▓▓▒▓▓▓▓▒▓▓▒▒▓▓▓▒▓▓▒▓▓▒▓▓▒▓▓▒▓▒▓▒▒▒▒▒▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▓▒▒▓▒▒▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▒▓▓▒▓▒▓▒▒▓▓▓▒▓▓▒▒▒▓▒▒▒▓▓▒▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▒▓▒▒▒▓▒▒▒▓▓▒▓▒▒▒▓▒▒▒▒▓▓▒▓▒▒▒▒▓▒▒▓▒▒▒▓▓▒▒▒▓▒▒▓▓▒▒▒▒▓▒▒▓▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▒▒▓▓▓░▓▓▒▓▓▒▒▓▓▒▒▓▓░▒░▓░▒░▓░▒░▓▓▒▓▓▓▒▒▓▒▓▒▓▓▒░▓▒▒▓▒▒▒▒▓▒▒▓▓▒▒▓▒▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▓▓▓▒▓▓▓▒▓▒▒▓▒▓▒▓▓▓▒▒▒▓▒▒▒▓▒▓▓▒▒▓▒▓▒▓▓▓▒▒▓▓▓▒▓▓▒▓▓▓▓▒▓▒▒▒▒▓▒▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▓▓▓▓▒▓▓▒▒▓▒▒▒▓▒▒▒▓▓▒▓▓▒▓▓▓▒▓▓▓▒▓▒▓▒▓▒▓▒▓▒▓▓▒▓▓▒▒▒▓▒▓▒▓▒▒▓▓▓▒▒▓▒▒▒▓▒▒▒▓▒▒▓▓▒▒▓▒▒▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▒▓▓▓▓▓▒▓▓▓▒▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▒▒▒▓▓▒▓▓▓▒▒▓▒▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▒▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▒▒▓▓▒▒▓▓▒▓▓▓▒▒▓▓▒▒▓▓▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▒░▒▓▒░▒▓▓▒▒▓▓▒▒▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▒▒▓▓▓▒▒▓▓▒▓▓▒▒▓▓▒▒▓▓▓▒▒▓▒▒▒▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▒▒▓▒▓▒▓▒▓▒▓▒▒▒▓▓▒▒▓▒▒▒▓▒▒▓▓▒▓▓▒▒▒▒▓▒▓▓▒▒▒▒▓▓▒▓▓▒▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▓▓▓▓▒▓▓▒▓▓▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓░▓▓▓▒▓▓▒▒▒▓▒▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▒▒▒░▒▒▒░▒▒▒▒▓▓▓▓▓▒▓▓░▒▒▓░▒▓▓▒▒▓▓▓▒▒▓▒▒▒▓▒░▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▓▒▒▓▒▓▒▒▓▓▓▒▓▓▒▒▓▓▓▒▓▓▒▓▓▓▒▒▓▓▒▓▓▓▒▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▒▓▓▒▓▒▓▓▒▒▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▓▒▒▓▒▒▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▒▓▓▒▓▒▓▓▒▒▓▒▒▓▓▒▒▒▓▒▒▒▓▓▒▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▒▓▒▒▓▒▓▒▒▒▒▒▓▒▓▒▒▓▒▒▒▒▓▓▒▓▒▒▒▓▒▓▒▒▒▒▒▓▒▓▒▒▓▒▒▓▓▓▒▓▓▓▒▒▓▒▒▓▓▒▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▓▓▒▒▒▒▒▒▒▒▒▓▒▓▓▒▓▓▒▒▒▓▓▓▒▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▒▓▓▒▒▓▒▒▒▓▓▒░▓▓▒▓▓▒▒▓▓▒▓▓▓░▒░▓░▒░▓░▒░▓▓░▓▓▓░▒▓▒▓▒▓▒▒▒▓▓▒▓▓▒▒▒▓▒▒▓▓▒▒▓▒▒▒▒▓▒▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▒▓▒▓▓▒▒▒▒▓▓▒▓▒▒▒▒▓▒▓▓▒▒▒▒▓▒▒▓▓▓▒▓▒▒▒▒▓▓▒▓▒▒▒▒▓▒▓▓▓▒▒▓▓▒▒▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▒▒▓▓▒▒▒▒▒▒▒▓▓▒▒▓▓▒▓▓▒▒▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▒▒▓▓▓▒▓▓▓▒▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▒▓▓▓▓▓▒▒▓▓▓▓▒▓▓▒▓▒▒▒░▓▒▒▓▓▒▒▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▒▒▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▒▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▒░▒▓▒░▒▓▒▒▒▓▓▒▒▓▓▒▓▓▓▓▒▓▓▓▒▓▒▓▓▒▓▓▓▒▓▓▓▒▓▓▓▓▒▒▓▓▒▒▒▓▒▒▒▓▒░▓▓▒▒▓▓▒▒▒▓▒▒▒▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▒▓▒▓▒▓▒▒▒▓▒▓▒▓▒▓▒▓▓▓▓▒▒▒▒▒▒▓▒▓▓▓▓▒▓▒▒▒▒▓▓▒▒▓▓▒▓▒▒▓▓▒▒▓▓▒▓▒▒▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▓▒▓▒▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▒▓▓▒▓▒▓░▒▓▓▒▒▓▓▓▒▒▓▒▓▒▓▒░▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▓▒▒▒▒▒▒▒▒▒▒▒▒▓▒▒▓▓▓▒▓▓▒▒▓▓▒▒▓▓▓▒▓▓▒▒▓▓▓▒▓▓▓▒▓▓▒▒▓▓▒▒▓▒▒▒▒▓▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▓▒▒▓▒▒▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▒▓▓▒▓▒▓▓▒▒▓▒▒▓▓▒▒▒▓▒▒▓▓▒▒▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▒▒▓▒▒▒▓▒▓▓▒▒▒▒▓▒▓▓▓▒▓▒▒▓▒▓▓▒▓▓▓▒▓▓▒▒▒▓▓▒▓▓▒▒▓▒▒▓▓▓▒▒▓▓▒▒▒▓▒▒▓▓▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▓▒▓▓▒▓▓▓▒▓▓▓▒▒░▓▒▒░▓▒▒░▓▓░▓▓▒░▒▓▒▓▒▓▒▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▒░▓▓▒▒▒▒▒▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▒▓▒▒▒▓▒▒▒▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▒▒▒▒▓▒▒▓▓▒▒▓▒▒▒▒▓▒▒▓▓▒▓▓▓▒▒▓▓▒▒▓▓▒▒▓▒▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▒▒▒▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▒░▒▓▒░▒▓▒▒▒▓▒▒▒▓▓▒▓▓▓▒▒▓▓▒▒▓▒▓▓▒▒▓▓▒▒▓▒▒▓▓▓▓▒▒▓▓▒▒▒▓▒▒▒▓▒░▓▓▒▒▒▓▒▒▒▓▒▒▒▓▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▒▓▒▒▓▒▓▒▓▓▓▓▒▒▓▒▓▓▒▒▒▒▓▒▓▓▓▒▓▓▒▓▓▒▒▒▓▓▒▒▓▓▓▓▒▓▒▒▒▒▓▓▒▓▒▒▒▓▒▓▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▒▒▒▓▒▓▒▓▒▒▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▓▒▒▒▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▒▓▓▒▓▒▓▒▒▓▓▒▒▓▓▓▒▒▓▒▓▒▓▒▒▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▒▓▒▒▒▓▓▒▓▓▒▒▒▓▒▒▓▓▒▒▒▓▒▒▓▓▒▒▒▒▒▒▒▓▒▒▓▓▓▒▓▓▒▒▓▓▓▒▓▓▒▒▓▒▒▒▒▓▓▓▓▓▓▒▓▓▓▓▓▒▒▓▓▒▓▒▒▒▒▒▒▒▓▒▓▓▒▓▓▒▓▒▓▓▓▒▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▓▒▒▓▒░▓▓▓▓▓▒▒▓▓▒▒▓▓▒▒▒▒▒▒▒▒▒▒░▓▓▒▓▓▓▒▓▓▒▓▒▓▓▒▒▓▒▒▓▓▒▒▒▓▒▒▓▓▒▒▓▒▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▓▓▓▒▒▓▓▓▒▓▒▓▓▓▓▓▒▒▓▓▒▓▓▓▒▓▓▓▒▓▓▒▓▒▓▓▒▓▓▒▒▓▒▓▓▒▓▓▒▓▒▓▓▒▓▒▒▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▒▒▓▓▒▒▒▒▒▓▒▓▓▒▓▓▓▒▒▓▓▒▒▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▓▓▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▓▒▓▓▒▓▓▓▒▓▓▓▒▒▒▓▒▒▒▓▒▒▒▓▓░▓▓▒░▒▓▒▓▒▓▒▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▒▒▓▓▒▒▒▒▒▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▒▓▒▓▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▓▓▓▒▒▓▓▒▓▓▒▒▒▓▓▒▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▓▒▓▓▓▒▒▒▓▓▒▒▓▓▒▓▓▒▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▒▒▒▓▒▒▒▓▒▒▒▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▒▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▒░▒▓▒░▒▓▒▒▒▓▒▒▒▓▓▒▓▓▓▒▒▓▓▒▒▓▒▒▓▒▒▒▓░▒▒▒▒▓▓▓▓▒▒▓▓▒▒▒▓▒▒▒▓▒░▓▓▒▒▒▓▒▒▒▓▒▒▒▓▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▒▓▒▒▓▒▒▒▓▒▓▒▓▓▓▓▒▒▓▓▒▓▓▒▒▓▒▒▓▒▓▓▒▓▓▒▒▓▓▓▒▓▒▒▓▓▓▓▒▓▒▓▒▒▒▓▒▒▒▓▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▒▒▓▓▒▓▒▓▓▒▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▓▒▒▒▒▓▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▒▓▓▒▓▒▓▒▒▓▓▓▒▓▓▓▒▒▓▒▓▒▓▒▒▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▒▓▒▒▒▓▓▒▒▓▓▒▓▓▓▒▓▓▒▒▓▒▒▒▒▓▓▒▓▓▒▒▓▓▓▒▓▒▒▒▒▓▓▒▓▒▒▒▒▓▒▒▒▓▒▒▒▓▓▓▓▓▓▒▓▓▓▓▓▒▒▓▓▒▒▒▒▒▒▒▒▒▓▒▓▓▒▓▓▒▓▒▓▓▓▒▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▓▒▒▓▓░▓▓▒▓▓▒▒▓▓▒▒▓▓░▒░▒▒▒░▓░▒░▓▓▒▓▓▓▒▓▓▒▓▒▓▓▒░▓▒▒▓▒▒▓▒▓▒▒▓▓▒▒▓▒▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▓▓▓▒▓▓▓▒▓▓▓▓▒▓▒▓▓▓▓▒▓▒▓▓▒▒▒▒▒▓▓▒▒▒▓▓▒▓▒▓▓▒▓▒▒▓▓▒▒▒▓▒▒▓▓▒▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▒▒▓▓▒▒▒▒▒▓▒▓▓▒▓▓▓▒▒▓▓▒▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▓▓▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▓▒▓▓▒▓▓▓▒▓▓▓▒▓▒▓▒▓▒▓▒▓▒▓▓▒▓▓▒▒▒▓▒▓▒▓▒▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▒▒▓▓▒▒▒▒▒▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▒▓▒▓▓▓▒▓▓▓▒▓▓▓▒▒▓▓▒▒▓▓▒▒▒▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▒▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▒▒▒▓▓▒▒▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▒▒▓▓▒▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▓▓▓▒▓▓▓▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▒▒▒▓▒▒▒▓▒▒▒▓▒▓▓▓▒▓▓▓▒▒▓▓▒▒▒▓▒▓▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓░▒▓▒░▒▓▒▒▒▓▒▒▓▓▓▒▓▓▓▒▒▓▓▒▓▓▒▒▒░▒▒▒░▒▒▒▒▓▓▓▓▓▒▓▓▒▒▒▓▒▒▓▓▒▒▓▓▓▒▒▓▒▒▒▓▒░▒▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▓▒▒▓▒▒▒▓▒▒▒▒▓▓▒▒▓▓▓▒▒▓▒▒▓▒▒▒▓▒▒▒▒▓▓▒▓▒▒▒▒▓▓▒▓▓▓▒▓▓▓▒▓▓▒▒▓▓▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▓▒▒▓▒▒▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▒▓▓▒▓▒▓▒▒▒▓▒▒▓▓▒▒▒▓▒▒▒▓▓▒▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▓▒▓▓▒▒▓▓▒▓▒▒▒▒▒▒▓▒▒▒▒▒▓▓▒▓▒▒▒▒▓▒▒▓▓▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▒▓▓▒▒▓▒▒▒▓▓▓░▓▓▒▓▓▒▒▓▓▒▒▓▓░▒░▓░▒░▓░▒░▓▓▒▓▓▓░▒▓▒▓▒▓▓▒░▓▒▒▓▒▒▒▒▓▒▒▓▓▒▒▓▒▒▒▒▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▒▒▓▒▓▒▒▒▓▒▒▒▓▒▒▒▓▓▒▒▓▒▒▓▒▒▓▒▓▒▒▒▓▒▒▒▓▒▓▓▒▒▒▒▓▒▓▓▓▒▓▓▒▒▓▓▒▓▒▒▒▓▒▒▓▓▓▓▓▓▒▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▒▒▒▓▒▒▓▓▓▒▓▓▒▓▓▓▒▓▓▓▒▓▒▓▒▓▒▓▒▓▒▓▓▒▓▓▒▒▒▓▓▓▒▓▒▒▓▓▓▒▒▓▒▒▓▓▒▒▒▓▒▒▓▓▒▒▓▒▒▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▒▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▒▓▒▒▓▓▒▒▒▓▓▓▓▓▒▒▓▓▒▒▓▓▒▒▓▓▓▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▒░▒▓▒░▒▓▓▒▒▓▓▒▒▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▒▒▓▓▓▒▒▓▓▒▓▓▒░▓▓▒▒▓▓▓▒▒▓▒▒▒▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▒▒▓▒▓▒▓▓▒▒▓▒▓▓▓▓▒▒▓▒▒▒▓▓▒▒▓▒▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▒▓▓▓▒▓▒▒▓▓▒▒▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▓▓▓▓▒▓▓▒▒▓▒▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓▒▓▓▓▒▓▓▒▒▒▓▒▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▒▒▒░▒▒▒░▒▒▒▒▓▓▓▓▓▒▓▓░▓▒▓░▒▓▓▒▒▓▓▓▒▒▓▒▒▒▓▒░▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▓▓▓▒▓▓▒▓▓▓▓▒▓▓▒▒▓▓▓▒▓▓▓▒▓▓▒▒▓▓▒▒▓▒▒▒▒▓▒▒▓▓▓▒▓▓▓▒▓▓▒▒▓▒▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▒▓▓▒▓▒▓▓▒▒▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▒▓▓▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▓▒▒▓▒▒▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▒▓▓▒▓▒▓▓▒▒▓▒▒▓▓▒▒▒▓▒▒▒▓▓▒▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▒▓▒▒▓▒▓▓▒▓▒▒▒▒▓▓▒▒▒▒▓▒▓▒▒▓▓▓▒▓▒▓▒▒▒▓▒▒▓▒▒▓▒▓▒▒▓▒▒▓▓▓▒▒▓▓▒▒▒▓▒▒▓▓▓▓▓▓▒▓▓▓▓▓▒▒▓▓▒▒▒▒▒▒▒▒▒▓▒▓▓▒▓▓▒▒▒▓▓▓▒▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▒▓▓▒▒▓▒▒▒▓▒▒░▓▓▒▓▓▒▓▓▓▒▓▓▓░▒░▓░▒░▓░▒░▓▓░▓▓▓░▒▓▒▓▒▓▒▒▒▓▓▒▓▓▒▒▒▓▒▒▓▓▒▒▓▒▒▒▒▓▒▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▒▓▒▓▓▒▒▒▒▓▒▓▓▓▓▒▓▓▒▒▒▒▒▒▒▓▒▓▓▓▒▒▓▒▒▒▒▒▒▒▒▓▒▒▓▒▒▒▒▒▒▒▓▓▒▒▓▓▒▒▓▒▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▒▒▓▓▒▒▒▒▒▒▒▓▓▒▒▓▓▒▓▓▒▒▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▒▒▓▓▓▒▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▒▓▓▒▓▒▒▒░▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▒▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▒▒▒▓▒▒▓▓▒▒▒▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▒░▒▓▒░▒▓▒▒▒▓▓▒▒▓▓▒▓▓▓▓▒▓▓▒▒▓▓▓▓▒▓▓▓▒▓▓▓▒▓▓▓▓▒▒▓▓▒▒▒▓▒▒▒▓▒░▓▓▒▒▓▓▒▒▒▓▒▒▒▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▒▒▒▒▓▒▓▓▒▒▓▒▓▓▓▒▓▓▓▓▒▒▓▓▒▒▓▒▓▓▓▒▓▓▒▒▒▒▓▒▓▓▒▓▒▒▓▒▓▓▒▓▒▒▓▒▒▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▓▒▓▒▒▓▓▓▒▓▓▓▒▓▓▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▒▓▓▒▓▒▓▒▒▓▓▒▒▓▓▓▒▒▓▒▓▒▓▒░▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▒▓▓▒▓▒▒▒▒▓▒▒▓▓▓▒▓▓▓▒▓▓▒▒▓▓▒▒▓▒▒▒▒▒▒▒▓▒▒▒▒▓▒▒▓▒▒▒▒▓▓▒▓▓▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▓▓▓▒▓▓▒▓▒▒▓▒▒▓▓▓▓▓▓▒▓▓▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▒▓▓▒▓▒▓▓▒▒▓▒▒▓▓▒▒▒▓▒▒▓▓▒▒▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▒▒▓▓▓▒▒▓▒▒▓▒▒▓▒▓▓▓▒▓▒▒▓▓▓▒▒▓▓▓▒▓▓▓▒▒▓▒▒▒▓▓▒▒▓▒▒▓▓▒▒▓▓▒▓▓▓▒▓▓▓▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒▓▒▒▓▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▓▒▓▓▒▓▓▓▒▓▓▓▒▒░▓▒▒░▓▒▒░▓▓░▓▓▒░▒▓▒▓▒▓▒▒▒▓▓▒▒▓▒▒▒▓▒▒▒▓▒░▓▓▒▒▒▒▒▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▒▒▒▓▒▓▓▓▒▒▓▓▒▓▓▓▒▒▒▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▒▒▒▓▓▓▓▓▓▓▒▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒
▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒

Read the original article

Comments

  • By joz1-k 2025-09-1010:5010 reply

    Except that the "comma" was a poor choice for a separator, the CSV is just a plain text that can be trivially parsed from any language or platform. That's its biggest value. There is essentially no format, library, or platform lock-in. JSON comes close to this level of openness and ease, but YAML is already too complicated as a file format.

    • By thw_9a83c 2025-09-1011:52

      The notion of a "platform" caught my attention. Funny story: About five years ago, I got a little nostalgic and wanted to retrieve some data from my Atari XL computer (8-bit) from my preteen years. Back then, I created primitive software that showed a map of my village with notable places, like my friends' homes. I was able to transform all the BASIC files (stored on cassette tape) from the Atari computer to my PC using a special "SIO2PC" cable, but the mapping data were still locked in the BASIC files. So I had the idea to create a simple BASIC program that would run in an Atari 8-bit PC emulator, linearize all the coordinates and metadata, and export them as a CSV file. The funny thing is that the 8-bit Atari didn't even use ASCII, but an unusual ATASCII encoding. But it's the same for letters, numbers, and even for the comma. Finally, I got the data and wrote a little Python script to create an SVG map. So yes, CSV forever! :)

    • By humanfromearth9 2025-09-1011:122 reply

      And the best thing about CSV is that it is a text file with a standardized, well known, universally shared encoding, so you don't have to guess it when opening a CSV file. Exactly in the same way as any other text file. The next best thing with CSV is that separators are also standardized and never positional, you never have to guess.

    • By dirkt 2025-09-113:54

      Try exporting things from Excel to CSV on a Mac with non-us locale.

      Some genius at Microsoft decided the exporting to CSV should follow the locale convention. Which means I get a "semicolon-separated value" file instead of a comma-separated one, unless I change my local to us.

      Line breaks are also fun...

    • By jstanley 2025-09-1011:063 reply

      JSON has the major annoyance that grep doesn't work well on it. You need tooling to work with JSON.

      • By re 2025-09-1011:543 reply

        As soon as you encounter any CSVs where field values may contain double quotes, commas, or newlines, you need tooling to work with CSV as well.

        (TSV FTW)

        • By IAmBroom 2025-09-1015:52

          TSV is superior to CSVs, and it still angers me that Excel doesn't offer it as a standard input option, but your examples are fairly easily handled by eye in a text file.

          Tools definitely make it faster and more reliable.

        • By spicybbq 2025-09-1015:00

          One of my first tasks as a junior dev was replacing an incorrect/incomplete "roll your own" CSV parsing regex (which broke in production) with a library.

        • By euroderf 2025-09-1113:261 reply

          ASCII FS GS RS US ... just make decent font entries for them.

          • By jstanley 2025-09-1113:361 reply

            And keys on the keyboard.

            • By euroderf 2025-09-1120:16

              Yes! But nobody ever came up with decent font entries that would look snappy on keys. Not even IBM (or Data General or Burroughs or whoever) I guess.

      • By rogue7 2025-09-117:52

        For this I use gron [0]. It's very convenient.

        [0]: https://github.com/tomnomnom/gron

      • By theknarf 2025-09-1011:101 reply

        grep is a tool. jq is a good tool for json.

        • By kergonath 2025-09-1011:222 reply

          grep is POSIX and you can count on it being installed pretty much anywhere. That’s not the case for jq.

          • By whizzter 2025-09-1011:47

            Do people contain themselvs to a POSIX conformant grep subset in practice, or do you mean GNU grep that probably doesn't behave according to spec unless POSIXLY_CORRECT is set?

          • By IAmBroom 2025-09-1015:532 reply

            "Anywhere" does not include Windows environments, which are over half the work computers out there.

            • By krogenx 2025-09-1212:49

              If a workstation has Git installed on it, which I’d think would be the case for substantial number of engineers out there (…not just software engineers), grep is there due to Git BASH.

    • By keeperofdakeys 2025-09-1023:031 reply

      Arguably, "comma as a separator" is close enough to comma's usage in (many) written languages that it makes it easier for less technical users to interact with CSV.

      • By wlesieutre 2025-09-111:51

        Easier as long as they don't try to put any of those written languages in the CSV

        Commas and quotation marks suddenly make it complicated

    • By john_the_writer 2025-09-1011:10

      100%.. xml also worked here too..

      YAML is a pain because it has every so slightly different versions, that sometimes don't play nice.

      csv or TSV's are almost always portable.

    • By renox 2025-09-117:42

      I'd say that is not its biggest issue. The way to escape things is by far its biggest issue, a passwd like \, \", \\ would have been far easier.

    • By talles 2025-09-1113:53

      What separator would be better?

    • By freetinker 2025-09-115:083 reply

      The comma makes it more human-readable. What separator would you suggest?

      • By snthpy 2025-09-115:551 reply

        So ASCII actually had dedicated characters for this, 0x1C-0x1F. The problem is that they are non-printing.

        Unicode has rendered analogs, U+241C-U+241F, but they take more bytes to encode, which can significantly increase file size in large USV files.

        So my ideal would be to use ASV files rendered as USV in editors.

        https://github.com/SixArm/usv

        • By snthpy 2025-09-116:05

          The benefits are that ASV / USV files are trivial to parse with simple string splitting since you don't have to worry about nesting and quoting.

          Here's an example of what a USV looks like:

          Folio1␟␞ Sheet1␟␞ a␟b␟␞ c␟d␟␞ ␝ Sheet2␟␞ e␟f␟␞ g␟h␟␞ ␝␜ Folio2␟␞ Sheet3␟␞ a␟b␟␞ c␟d␟␞ ␝ Sheet4␟␞ e␟f␟␞ g␟h␟␞ ␝␜

      • By joz1-k 2025-09-115:44

        The comma is too prevalent in the data to be a suitable separator. A semicolon would be a better choice.

      • By r721 2025-09-1112:47

        "|" looks pretty good (and is relatively rarely-used).

    • By conception 2025-09-1021:21

      || separated for life

  • By roland35 2025-09-1011:172 reply

    To people saying that "your boss can open it" being an benefit of csv, well I have a funny story!

    Back in the early 2000s I designed and built a custom data collector for a air force project. It saved data at 100 Hz on an SD card. The project manager loved it! He could pop the SD card out or use the handy USB mass storage mode to grab the csv files.

    The only problem... Why did the data cut off after about 10 minutes?? I couldn't see the actual data collected since it was secret, but I had no issue on my end, assuming there was space on the card and battery life was good.

    Turns out, I learned he was using excel 2003 to open the csv file. There is a 65,536 row limit (does that number look familiar?). That took a while to figure out!!

    • By IanCal 2025-09-1013:251 reply

      Love it.

      The first data release I did excel couldn't open the CSV file, because it started with a capital I (first column ID). Excel looks at this, looks at this file with a comma in the header and text and the ending "csv" and says

      I KNOW WHAT THIS IS

      THIS IS A SYLK FILE

      BECAUSE IT STARTS WITH "I"

      NO OTHER POSSIBLE FILE COULD START WITH THE LETTER "I"

      then reads some more and says

      THIS SYLK FILE LOOKS WRONG

      IT MUST BE BROKEN

      ERROR

      https://en.wikipedia.org/wiki/Symbolic_Link_(SYLK)

      • By IAmBroom 2025-09-1015:55

        Yes! That was the STUPIDEST file encoding detection ever developed! OMG....

    • By Dilettante_ 2025-09-1012:15

      "Plz fix. No look! Just fix!!"[1] must be one of the circles of programmer hell.

      [1]https://i.kym-cdn.com/entries/icons/facebook/000/027/691/tum...

  • By hiAndrewQuinn 2025-09-1010:051 reply

    I like CSV because its simplicity and ubiquity make it an easy Schelling point in the wide world of corporate communication. Even very non-technical people can, with some effort, figure out how to save a CSV from Excel, and figure out how to open a CSV with Notepad if absolutely necessary.

    On the technical side libraries like pandas have undergone extreme selection pressure to be able to read in Excel's weird CSV choices without breaking. At that point we have the luxury of writing them out as "proper" CSV, or as a SQLite database, or as whatever else we care about. It's just a reasonable crossing-over point.

HackerNews