Translated by nflqt