Copyright (C) 1998-2012 Minero Aoki