Software engineer working on backend APIs, applied AI and developer tools. I build production services and AI features at XON / puq.ai, and maintain open-source tools in my own time. Based in Yalova, Türkiye.
M.Sc. student in Computer Engineering at Yalova University. I write about backend systems, APIs and AI security at aliyilmaz.co.
| Project | What it does | Status |
|---|---|---|
| gitbrella | Go CLI that finds and safely repairs the damage cloud sync does to Git repositories | v1.0.2 · Homebrew · signed releases |
| SQLens | VS Code extension that flags SQL injection and performance risks in SQL inside PHP | 4,700+ installs · ★ 5.0 |
| ClaudeMeter | macOS menu bar app that shows Claude Code usage limits | 49 stars · 1,300+ downloads |
| WideSnap | Chrome extension to capture, annotate and record web pages | Chrome Web Store |
| AsciiLoom | Turns images into README-safe ASCII, Markdown and SVG | asciiloom.aliyilmaz.co · npm |
| GeoIP Service | IP and website intelligence: geolocation, DNS, HTTP, TLS and risk signals | ip.aliyilmaz.co |
| Mosavid | Python CLI that turns photos into animated photomosaic videos | CLI |
TypeScript · Python · Go · PHP · SQL · Dart/Flutter · Swift Node.js · FastAPI · React / Next.js · PostgreSQL · Redis · Docker · LLM APIs
- LLM API Gateway: Akış, Kullanım Ölçümü ve Faturalama
- Frontend'de API Anahtarı Gizlenmez: VITE_, NEXT_PUBLIC_ ve CI Taraması
- LiteLLM 1.107.0 Saldırısı: LLM Gateway Güvenliği İçin Çıkarılacak Dersler
aliyilmaz.co · LinkedIn · X
ASCII portrait
⣠⡀⣸⣻⢽⣿⣿⣌⠿⢚⠓⣟⢈⡙⣀⡬⢱⠿⣿⣻⡟⢻⢟⡣⡟⢾⣿⡷⣏⡹⡟⠻⠽⠝⡀⢀⠸⣹⣿⣷⣿⠿⠟⣛⣛⣻⢰⠍⠇⠡⠘⢒⣛⣛⠻⠿⢿⣸⢿⣿⠃ ⠈ ⠄ ⢠⣾⣿⣻⣟⡿⣿⡿⢟⣿⣿⣿⣿⣏⣝⠉⡟⣹⢋⣿⢏⣿⣧⡿⣿⡛⣟⢄
⠘⢋⣽⣿⢦⣙⣿⠿⣊⢫⣠⣦⢸⣹⡐⠡⣓⢑⠬⠛⣗⣺⣙⣛⣲⣉⡛⣏⣿⡷⣞⠧⠝⡟⠏⠒⢘⢩⠭⣒⢂⣭⣥⣳⠴⠼⣸⠠⠇⠈⠸⡰⠶⢶⢄⣭⡅⣖⣚⡍⠐ ⡀ ⣰⣿⣿⣿⣯⡿⣷⡟⣚⢫⣾⢯⣍⣯⣉⣇⣏⣙⣿⣿⣽⣿⣿⣿⡯⠁ ⠈
⠏⣘⣩⣜⠿⢿⣿⣦⡻⣿⣎⣿⠿⠼⢿⢡⣿⣮⡡⢱⡁⠾⠛⣿⢭⣿⣿⡅⠬⠠⠧⠘ ⡀⠤⣒⡍⠰⣊⣏⣥⣇ ⠅⢡⠠ ⠯ ⢈ ⠆⠰⠐⠠ ⡀⡉⠘⠃ ⡼ ⣴⣿⡿⣿⣿⣏⣳⣬⣷⡄⣾⣽⣮⣿⣿⣷⣿⡯⣧⢠⡽⡄⡭⣧⠬ ⠄⣤⣴
⣿⠾⣿⠿⣿⣦⣭⣛⢿⠞⠁ ⠈⠻⡿⢓⡠⠴⠞⠻⣷⣾⣿⡷⠇⠐⠆⡠⠶⢿⠷⢘⠉⡁⠅⠹⠺⡟⢛⠂ ⠈ ⡃⠁⢈ ⠈⠉⠁⠃⠰ ⠠ ⠁ ⠂⣼⠏⢠⣜⠿⣿⣳⡟⣇⣶⣟⡿⢿⠈⡿⠿⣽⢿⣿⣿⣿⣿⡟⢸⢱⠋⣟⡏⢠⣠⡠⣀⣉
⣬⢓⡴⠿⣿⣿⣿⣶⡞ ⢹⣿⣇⢸⡎⡭⣆ ⠏⠃⢠⠔⣯⠾⠛⣩⠔⠂⣀ ⠄⠈⡄⡵⠶⢃⠈ ⠂ ⢰ ⠈⢂⢀⠁⢂⠂⠁⠃⠃⠰⢀ ⡰ ⠻⢯⣕⡬⡩⢶⡯⠰⣸⣿⣿⣃⣿⣿⣿⣿⣰⢆⡑⣿⡿⢸⢚⠇⣾⡓⢘⢛⠃⢛⠛
⠢⡈⡐⢶⣶⣶⣶⣶⡆ ⠈ ⢸⣶⡆⠹⠆⢗⣿⠱⣀⠘⢴⠟⣅⡜⠚⢁⠄⠘⡤⠆⠉ ⢀⠈ ⠈⠉⠳⢢⢄⡀ ⡈⢠⣖⡙⠷⡮⠂⣕⠇⣿⣿⣗⡠⢨⡀⣹⣀⣘⣻⠬⢹⣷⢰⣾⡆⣷⣗⠸⠺⢂⠊⠁
⠈⠹⠻⢟⣛⣭⣦⣾⢆⡀ ⢀⡴⡷⣤⢁⡺⢠⡰⣫⢚⠘⢛⢀⠙⢏⣡⣎⣗⠿⠋ ⠄⠂ ⠡ ⢶⣿ ⠁ ⡀⠐⠤⣨⡣⣌⢲⠁⡀⠻⣦⡇⡛⢯⡏⡋⡤⣢⣴⢠⢸⣽⡉⣯⣏⠨⣭⡂⢯⡍⠘ ⢀ ⣤
⠂⡢⠢⠨⠿⣽⣟⠝⣡⣾⢏⡶⢶⢰⣲⡡⣊⢎⠡⡰⡡⠂⣬⡹⠟⡠⡈⠃⢱⡌⠳⠛ ⠄⠁⠁ ⠂ ⢀⡠⢀⣀ ⢀⡀ ⢀⢀ ⢰⠁ ⠐⡘⠺⠚⢰ ⢩⢦⢈⠳⣌⠪⠃⡁⣮⣩⣼⣭⠦⡹⠃⣷⡟⢸⡘⠁⠁ ⣀⠈⣤
⠂⣴⡄⡆⣭⠜⣣⡾⣍⡋⡼⢛⡗⠺⠻⣡⡑⠣⠪⠔⣡⢻⡮⡉ ⠃⣼⢴⡄⠉⢀ ⠠ ⢀ ⢈⡼⢂⣄⠤⡌⠓⠠⢄⡏⡨⠁⠆⡀ ⣶⠄ ⠄⡀⠊ ⠁⢰⠳⡌⠿⠒⣕⢧⡑⠌⢽⣿⠿⣃⣀⣼⡯⡿⠛⠁⠐⡀ ⣈⣛
⠰⣾⣣⡴⣨⡴⢖⣮⡙⡸⢯⡼⣇⠸⠖⠭⣑⡚⡀⡹⣥⡑⢀⠝⣆⠶⡤ ⠠ ⠐⠠ ⢀⡆⢇⣭⣸⠛⠃ ⠁⠠⠡⣎⠘⣆ ⠟⣖ ⡲⣐ ⠐ ⢀⠡ ⡋⡤⢿⣷⠊⠱⠈⡊⢠⢋⣿⠹⠊ ⠅ ⠄ ⠄⠄⠌⣽⠤
⡜⡽⣫⣾⣯⣟⣷⢶⡟⣻⣯⣎⠠⠹⢶⣿⣾⠏⡜⣴⡉⠓⠨⡐⠰⠈⠁⠄ ⠰⡄⣣⡿⠳⣷⢫⠴⢤⣤⡐⡄⠨⠃⢯⡗⠛ ⠐⠂⢧⣮⡁⠬⢢⢀ ⠂ ⠁ ⢀⠻⠋⣤⠔⡇⡐⡚⠆⠋ ⠄⠬⠜⡨⡅⡦⢤⣤⢦
⢧⡸⣿⣿⡺⢿⡿⢿⢷⡿⣿⣿⣿⣿⡷⢮⡍⡸⠝⡞⠠⠁⠴⢤⡑ ⢀⡈⠠⠌ ⣲⢓⡅⢤⣶⢸⣁⢠⢊⣉⣙⠷⡲⢃⠔⠳⠬⠕⠠⠤ ⠈⠲⠈⠁⠈⠬⠇⢀⡀ ⠈ ⢀⣫⠹⡌⠛⡁⡴⢦⠂⠑ ⣤⡈⠟⠁ ⠈ ⡂⢂⣸⠂
⠿⠷⡹⠿⠷⠵⠷⠾⠴⠷⢾⣿⡶⣿⣿⡖⡸⣹⡗⡀⠁⠸⢰⠒ ⠁ ⠿⠷⢄ ⠄⣂⡺⢉⡕⢫⠿⣟⣻⢌⡞ ⠱⠆⠡ ⠈⠈⠘⠒⠘⡂⡔⢒⢴⢘⣾⣄⠈⢁⡄ ⡁⠆⢲⣚⣎⠓⠳⠊⠁⡀⠠⠰⠂⠫⠛⠂ ⢀ ⠈⠁⠍⢙⠽⠈
⣖⣒⡲⠶⠶⠶⠶⠶⠶⠶⣄⠙⢇⣿⡿⢠⢣⣿ ⠄⣘⣒ ⢰⠄ ⠉⠂⢄⠨⣼⣹⣰⣘⣷⣦⣷⡼⠫⠁⠂⠠ ⠈⠶⢞⠩⢀⢈⢈⢸⣿⢨ ⠠⠐⡈⠄⠃⠃ ⠁⠋⠐ ⠘⢂⢃⣧⠘⢸⠇⢄⠠⠈ ⠊⠅⡒⡰⢋⠂
⣛⣛⣛⣛⣓⣚⣛⣛⣚⣛⢮⡳⡄⢙⠃⠞⠾⠇⠰⠠⠧⡆⠐⡀ ⢤⠝⢡⢰⠏⢫⣢⠌⠠⡬⢡⢥⢤⡤⣨⠄⢔⠂⠒ ⡀ ⠄⡄⢄⣀⡈⠃⠧⣶⢵⡆⢨⡁⠅ ⠁ ⠠ ⡈⠠⢘⢸⠲⣏⡁⢠⣴⡀⢀⣦⡡⢀ ⢀⣤⣆⣤⡶⣤
⡶⠶⣶⣶⡶⠶⣶⠶⣶⣦⡑⢌⡛⠶⠲⠒⠖⠤⠄⠄⣀⠁ ⠐⠠ ⢈⡟⢧⡗⡭⢙⣽⢷⡼⠤⣤⡤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⡤⣤⣤⠤⣤⠥⢭⣽⢤⢠⣿⡪⠤⡀ ⢀⠠⠅⠂⠨⠈⢤⢽⠨⣱⣾⡿⠹⢯⢁⡞⠈⡠⣛⣿⣾⣇⠛
⢂⣑⣿⣿⣧⢠⡳⡄⢿⣿⣿⣦⡙⠿⠸⠿⢗⣖⡂⠦⠄ ⠐⠈⡽⣎⢖⡟⣾⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡷⠾⢿⣾⣿⣿⣿⣿⣿⣿⣿⣾⣛⢶⣷⡑⡒⠐⢄⡚⡀ ⠐ ⠂⢲⢮⡇⣗⣖⣖⠚⣶⢿⡽⢿⢿⣿⣿⣿⠥⠥
⣌⣼⣿⡷⣾⢙⠳⠇⣄⡂⣒⡒⢙⡃⡞⢶⡠⣀⢈⠉⡁⠂ ⢀⡜⢵⣻⡶⡿⣶⣿⣿⣿⣿⡿⣿⠿⣹⢿⣿⢿⡿⡶⠼⣿⠿⡻⣯⣿⡿⣿⣿⣿⣿⣿⣾⣾⢶⠶⡚⣶⡶ ⠙ ⢀ ⢁⢐⣃⣇⣋⣛⣫⠩⣅⣢⠭⣯⣼⣶⣴⣶⣀⣁
⡋⣭⣯⣽⣾⣶⣾⠡⣐⣒⣂⣚⣃⡃⣖⡒⠂⠤ ⠠ ⠆ ⠄⠤⠤⠬⣷⣾⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣾⠿⠿⠷⠼⠿⠿⢿⣿⣿⣿⣿⣿⣿⣻⣷⣿⣿⣷⣿⢾⣿⡯⡥⠤⠤⠠⠠ ⠠ ⠄⡀⠐⢛⣃⣙⣛⣋⣛⡃⡊⣧⡁ ⣯⣽⣩⣏⠇
⢕⢿⣏⣿⣹⣋⣏⣻⣙⣿⣿⢻⡯⠇⣯⣿ ⠂⠐ ⢺⣾⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣿⡿⣻⡟⠋⠛⠛⢿⣯⣽⣯⣽⣿⣿⣿⣿⣿⣿⣯⣿⣯⣟⢿⣟⡗⡃⡐ ⠰⡷ ⠤⠤⠤⠤⠤⠠⡀⢬⡃⡧⢲⠎⠭⡑⣾⢽⣶⣿⢽⣿⣽⣿⣇⠆
⣵⡸⡏⣽⢼⠤⡧⢼⢤⣗⣾⢺⡷⡥⢹⢒⡒⠒⠐ ⠋ ⠠ ⠹⣽⣻⣿⢿⣻⣿⣿⣟⣛⡋⠓⠉⠋⠐⡰⣻⡷⣤⡤⡀ ⠈⠉⠉⠋⢛⢛⣙⣻⣛⡿⢟⣽⠯⣽⡛⠁ ⠂ ⢀⢀⣀⢀ ⢸⣿⡇⢹⣦⣑⣥⣻⢼⣿⣦⣶⣦⡧⠄⣍⣠
⡆⢦⡖⢺⢺⠖⡗⢺⠒⡗⠶⢺⣿⡶⢸⠇⣅⠠⠠⠄ ⢀⠩⢻⢛⢿⠾⣽⡼⢙⡶⡀⢔ ⢠⣾⣿⣿⣜⡜⠻⡷ ⠐ ⠢⠨⢏⠷⣋⢿⣃⣥ ⠰ ⢀⡀ ⣿⣹⢣⣾⣾⣶⣶⣷⣎⢶⣷⣇⣇⣯⣌⣍⠉
⢂⣛⣏⣻⣹⣉⣏⣹⣉⣏⣿⣰⡖⣆⡄⣌⣆⢀⢀⢠⠄⡀⠠ ⣄ ⠈ ⠁ ⢸⢷⠾⣮⣳⡂⣋⣛⣳⢒⣒⡂⢀⠐⠿⠿⣛⡁⠃⢀ ⡀ ⡃⡒⢐⣽⡰⢛⡇⡿ ⠄ ⢀⡀ ⠘⠋ ⢀⡟⠛⠘⠛⠿⠽⠿⠿⢯⣶⢟⣉⡙⢿⣧⣏⡬
⣘⣾⣿⣿⣿⣿⣽⣭⣠⣭⣭⣬⢥⣫⣵⢢⢨⡆⡦⠶⢌⢃ ⠉ ⠐⠂ ⣰⠈⢻⢼⣿⣮⠆⡶⡐⣖⣗⡖⢠ ⣰⣴⠿⠞⠿⠖⠶⢷⣄⡄ ⠄ ⠆⢰⡠⢿ ⠸⠌ ⠛⠃⠂⠠⣐⡗ ⠐⣼⢇⢇⠯⣛⣟⠋⢹⠖⣲⣶⡸⠤⠜⣸⣿⣿⣽
⠠⠷⠿⠛⠛⠛⠛⢬⣤⣬⣭⣭⡶⢶⣾⣆⠆⢿⡄⠂⠘⡌⠄ ⡀ ⢀⡈⠄ ⢠ ⠈⢷⢏⠝⣂⡤⢗⡜⣽⡇⣬⡀⢉⡐⣧⣤⣤⣤⣤ ⠈⠉ ⠁⡀⢀⡀⡐⢁⠤⠊⠁ ⠁⢂⡶⠁⠁⢱⡟⡜⣼⣷⣷⣿⢱⣿⣝⡛⢿⠻⣶⡞⣟⣹⣿⣿
⠉⣸⣩⡥⡾⢛⢧⡲⢾⠭⠶⠿⠘⡜⣷⡊⢑⠸⢃⠠⠖⠊⠉ ⠠⠄ ⠐ ⣷⣚⣧⡔⡶⢾⣰⢿⣖⢴⠲⠝⠋⠉⠁⠁⠉⠑⠔ ⠄ ⠰⣰⣦⡾⠄ ⢀⡢⠃⠐⢐⡿⡱⢡⣟⣟⣻⠃⣛⣛⠚⣱⣳⠫⣭⢟⢻⡝⢘⣞
⠰⠖⠚⠋⢉⡀⣜⢤⡤⠿⣛⣫⣭⡐⡴⢿⢠⡹⣼⣷ ⣜⠩⠖ ⠈⠐⠁⢢⣦⠄⠰⠂⠂⠂⠸⠿⣿⢎⡵⡷⠵⢪⢷⠒⢄ ⡀ ⠄⠦⠰⣿⣿⠃ ⡀ ⢌⠐⢢⡿⣱⠃⢶⣿⠿⣱⡏⣿⣿⣿⣛⡯⢧⠙⢬ ⠱⡄⠈
⣀⣠⠄⠖⠒⡃⣢⣿⠟⣾⣹⣿⣬⣺⣾⠶⠙⠞⣁⡁⢶⡹⢞⠓⣀⠒⠋⠁ ⠸⢻⡺⢾⠾⢟⠿⠾⡿⣿⣾⣶⣴⣰⣦⣂⡐⣀⣀⣂⣀⣂⢮⢭⡟⢀⣯⡸⠄ ⠁⠈⠁⠄ ⡀ ⠁⠠⠈⠾⢳⢣⣶⣶⡶⠶⣿⡆⣭⣍⣏⣿⢷⠒⠤ ⠓⡀⠈⢦
⠞⠋⠉ ⣁⡩⠏⠋⠉⠈ ⠉⠙⠻⢾⢖⠴⡜⣿⢓⡉⢊⣴⢻⢙⣄⡀⠐⠁⢀ ⣏⣟⣧⣱⠟⡿⣺⣵⣓⣿⣲⣪⣍⣭⢛⡛⣒⠂⠒⡒⡶⠋ ⢐⣆ ⡀ ⣀⠠⣀ ⠁⠂⣠⡾⡱⢣⢶⡶⣶⣦⢠⣾⡎⣖⣖⡂⣿⡿⠷⠾⡓⠰⠘⠂
⣀⡄⡆⡫⠆⠄⣨⣴⠾⢟⡘⠿⣶⡄⡠⡰⡿⢗⡊⢤⣾⣎⢚⡡⣌⠋⠧⠄ ⢁⡤⡄ ⡧⠳⡯⡿⣿⣯⣷⣷⣯⣵⣏⣽⣲⣠⠥⢈⣤⠤⠒⠩ ⠤⠅ ⠂ ⠂ ⢄ ⢄⠁⢀⡰⢍⠝⠴⢗⡐⢦⢺⣿⢸⣿⡆⣶⣦⡆⣿⣷⣟⢿⣾⣶⣦⣤⣤
⢠⣻⡧⣣⠽⠇ ⣸⠫⡭⣡⢭⣭⣢⠢⡍⣷⠁⢸⡿⡺⠷⢙⠉⢀⣘⢀⠄ ⠠⠑⢤⡀ ⠙⠁ ⡇⢿⡭⢛⣯⣿⣿⣿⢿⣿⣿⡿⠟⠋⠉⠁ ⡋⠁⠁ ⠨⡅ ⢀⠢⠆⢀ ⠂⡐ ⣡⡚⡻⣂⡐⣮⡩⠻⣿⣦⡿⠼⠿⡉⠯⣍⣍⣿⣯⣵⣩⡋⡿⣻⠟⡳
⣽⣿⣮⢽⣽⡃⠆⣿⢳⢑⣛⡚⢃⣞⡃⠢⣛⡆⠄⣤⣖⣟⣿⡆⠠⠍⢀⣀⠐⡀⠈⠈⢀⠃ ⡀ ⣗⡲⡞⣝⢾⣯⣿⠿⣽⣿⠏⠠ ⠠ ⢐⠃ ⠠⠤ ⠙⡉⢡⡀ ⣀⡚⡣⢊⣚⣛⣣⢻⣿⣶⡉⣖⣾⣬⣇⣯⣝⣲⢍⡣⢏⣟⣯⣻⣧⡌⣢⣴
⣿⣿⣿⣾⣿⡆⣡⢿⠨⠧⠋⣼⢧⡳⠹⠇⡿⢁⢄⣯⣛⣯⣽⡏⠊⣠⡀⢝⢹⣦⡐ ⠠ ⣫⢏⣉⣩⡋⣉⢛⡕⣶⣋⣿⣘⢁⣐⢂ ⠐ ⣒⣆⠈⠄ ⠘⢄⣴⠇⡱⣢⡤⣓⣿⣮⣽⣷⢣⢘⣾⠌⠋⠁ ⠈⠉⠻⣾⡝⣖⠎ ⡈⡁⢽⡿⣮
⣿⢿⣿⡿⢿⣷⡱⠾⣩⣾⣥⣙⢚⣴⣷⢟⡹⡗⢚⣴⣳⠾⣻⠈⣾⣍⣱⣮⢑⠮⡃⠣⣤⣄⡀ ⠂⣗⢳⣒⣓⡒⡒⢊⢷⣖⢛⡗⢞⠓⠂ ⡒ ⠐ ⢒⠆⢦⡄ ⠂⣐⢠⠞⡠⠣⣙⡚⣿⡃⣟⣗⢿⣻⣃⣏⣯⠃ ⠈⣿⣸⡌⣝⣧⣶⢬⠃⠈
⣘⣾⣿⣿⣿⠟⣡⣶⢏⠶⣮⣭⢭⣥⠶⣇⠳⠌⢏⡀⣰⠟⡇⡜⣿⣶⢾⣧⣤⢧⢤⡁⠺⢓⡃⠒⠂⣴⢁⢇⣊⡬⣼⢴⠠⠌⢿⣖⣄⢠⡀⡀⡄⠈ ⠄⡜ ⠹⢿⡶⠙⡩⠖⡨⣾⡿⣬⢯⢂⣯⣭⣭⣭⣼⢨⣭⢽ ⠐⠺⠐ ⣩⠯⡍⣭⠭⡝⠻⠗⠒
⢻⣿⣿⠎⣡⣺⣿⣿⣝⣯⣶⣯⣸⠸⣉⠵⣢⣵⣿⣷⣝⣠⣼⡅⣯⢍⣸⣍⢁⡏⣪⣭⢽⢄ ⣉⡚⠹⣘⣉⣃⢹⣊⡹⢑⡀⠈⠿⣐⢸⡒⢈⠈ ⢀⡈⠁ ⠈ ⢙⢵⡠⡶⠶⠔⢒⠲⣶⠶⡀⣷⣏⠩⣭⣅⡵⢾⣆ ⠠⠓⠰⢰⡏⢿⠻⣮ ⠠
⣿⠟⣡⣾⣿⣿⡿⣿⣟⣿⣿⠟⡱⣊⣵⢾⣟⢹⣷⡿⣹⣿⣿⢃⠱⣿⣿⡿⣸⣏⣽⣳⠏⠔⢰⣋⡙⣐⣀⡑⠉⣗⡉⢼⡒⠒ ⠈⠛⣓⠒ ⡀ ⠂⠂⢂⠂⠐⢀ ⠁⢊⠻⢯⣶⡄⣴⠻⢷⢍⢧⣿⣀⡸⣿⣎⢫⢺⢷⡠⡀⡀⡀⠠⠒⢁⠳⣡⡣⠦⠂⡃⠁
⢡⣾⣿⣿⣿⣿⣿⣿⢿⡉⠃⡄⣾⣯⡼⣉⣛⠲⣻⣵⢂⡇⠩⢔⣻⡿⣷⠦⠖⠂⠍⠈ ⣠⡓⡀⢐⡀⣂⣊⣁⠰⠂ ⢲⡀ ⠄⢀ ⢄⡃ ⢄⠈⠨⡈⠈⠑⠒⠶⣲⣶⢶⣿⣿⣿⡌⢻⣷⣭⣂⠌⠕⣀⠠⠄⢄⣊⠂⣡⢀⠩⢺⡴⠦