la version la plus rafinée du code est sur cette page.