This source code is released into the public domain. It is provided on an as-is basis and no responsibility is accepted for its failure to perform as expected. It is worth at least as much as you paid for it!