Copyright (C) 1998-2017 Minero Aoki