Copyright (C) 1999-2019 KIRINON