From 58356843ee0f7007059f5b032b010625b69aedde Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 14:54:45 -0400 Subject: [PATCH 001/731] SCUMM: Fix Blue's Birthday Macintosh --- engines/scumm/detection.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp index 18f2f4ddec3..d3514645d3e 100644 --- a/engines/scumm/detection.cpp +++ b/engines/scumm/detection.cpp @@ -142,6 +142,14 @@ Common::String ScummEngine_v70he::generateFilename(const int room) const { Common::String result; char id = 0; + Common::String bPattern = _filenamePattern.pattern; + + // Special cases for Blue's games, which share common (b) files + if (_game.id == GID_BIRTHDAY && !(_game.features & GF_DEMO)) + bPattern = "Blue'sBirthday"; + else if (_game.id == GID_TREASUREHUNT) + bPattern = "Blue'sTreasureHunt"; + switch (_filenamePattern.genMethod) { case kGenHEMac: case kGenHEMacNoParens: @@ -154,13 +162,7 @@ Common::String ScummEngine_v70he::generateFilename(const int room) const { switch (disk) { case 2: id = 'b'; - // Special cases for Blue's games, which share common (b) files - if (_game.id == GID_BIRTHDAY && !(_game.features & GF_DEMO)) - result = "Blue'sBirthday.(b)"; - else if (_game.id == GID_TREASUREHUNT) - result = "Blue'sTreasureHunt.(b)"; - else - result = Common::String::format("%s.(b)", _filenamePattern.pattern); + result = bPattern + ".(b)"; break; case 1: id = 'a'; @@ -185,10 +187,11 @@ Common::String ScummEngine_v70he::generateFilename(const int room) const { // For mac they're stored in game binary result = _filenamePattern.pattern; } else { + Common::String pattern = id == 'b' ? bPattern : _filenamePattern.pattern; if (_filenamePattern.genMethod == kGenHEMac) - result = Common::String::format("%s (%c)", _filenamePattern.pattern, id); + result = Common::String::format("%s (%c)", pattern.c_str(), id); else - result = Common::String::format("%s %c", _filenamePattern.pattern, id); + result = Common::String::format("%s %c", pattern.c_str(), id); } } From f7efd3fe2a881c13b7b625ebf3c75a7639d0f582 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 14:55:05 -0400 Subject: [PATCH 002/731] SCUMM: Remove backslashes from Mac file names too Fixes Smacker videos in Blue's Birthday --- engines/scumm/he/script_v60he.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/engines/scumm/he/script_v60he.cpp b/engines/scumm/he/script_v60he.cpp index cf7d9fbd2f3..dbeee567bf4 100644 --- a/engines/scumm/he/script_v60he.cpp +++ b/engines/scumm/he/script_v60he.cpp @@ -94,6 +94,12 @@ int ScummEngine_v60he::convertFilePath(byte *dst, int dstSize) { debug(1, "convertFilePath: original filePath is %s", dst); int len = resStrLen(dst); + + // Switch all \ to / for portablity + for (int i = 0; i < len; i++) + if (dst[i] == '\\') + dst[i] = '/'; + if (_game.platform == Common::kPlatformMacintosh) { // Remove : prefix in HE71 games if (dst[0] == ':') { @@ -107,12 +113,6 @@ int ScummEngine_v60he::convertFilePath(byte *dst, int dstSize) { if (dst[i] == ':') dst[i] = '/'; } - } else { - // Switch all \ to / for portablity - for (int i = 0; i < len; i++) { - if (dst[i] == '\\') - dst[i] = '/'; - } } // Strip path From 666d3815ec39db7116f8140a8e470565238636f3 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 14:55:36 -0400 Subject: [PATCH 003/731] SCUMM: Don't have MoviePlayer inherit from SmackerDecoder --- engines/scumm/he/animation_he.cpp | 61 +++++++++++++++++++++--------- engines/scumm/he/animation_he.h | 35 ++++++++++------- engines/scumm/he/script_v100he.cpp | 2 +- engines/scumm/he/script_v90he.cpp | 2 +- 4 files changed, 66 insertions(+), 34 deletions(-) diff --git a/engines/scumm/he/animation_he.cpp b/engines/scumm/he/animation_he.cpp index 74183c24d37..95a8a701bb6 100644 --- a/engines/scumm/he/animation_he.cpp +++ b/engines/scumm/he/animation_he.cpp @@ -26,27 +26,32 @@ #include "scumm/he/intern_he.h" #include "audio/audiostream.h" +#include "video/smk_decoder.h" namespace Scumm { -MoviePlayer::MoviePlayer(ScummEngine_v90he *vm, Audio::Mixer *mixer) - : SmackerDecoder(mixer), _vm(vm), _mixer(mixer) { - +MoviePlayer::MoviePlayer(ScummEngine_v90he *vm, Audio::Mixer *mixer) : _vm(vm) { + _video = new Video::SmackerDecoder(mixer); _flags = 0; _wizResNum = 0; } +MoviePlayer::~MoviePlayer() { + delete _video; +} + int MoviePlayer::getImageNum() { - if (!isVideoLoaded()) + if (!_video->isVideoLoaded()) return 0; + return _wizResNum; } int MoviePlayer::load(const char *filename, int flags, int image) { - if (isVideoLoaded()) - close(); + if (_video->isVideoLoaded()) + _video->close(); - if (!loadFile(filename)) { + if (!_video->loadFile(filename)) { warning("Failed to load video file %s", filename); return -1; } @@ -54,7 +59,7 @@ int MoviePlayer::load(const char *filename, int flags, int image) { debug(1, "Playing video %s", filename); if (flags & 2) - _vm->_wiz->createWizEmptyImage(image, 0, 0, getWidth(), getHeight()); + _vm->_wiz->createWizEmptyImage(image, 0, 0, _video->getWidth(), _video->getHeight()); _flags = flags; _wizResNum = image; @@ -62,14 +67,14 @@ int MoviePlayer::load(const char *filename, int flags, int image) { } void MoviePlayer::copyFrameToBuffer(byte *dst, int dstType, uint x, uint y, uint pitch) { - uint h = getHeight(); - uint w = getWidth(); + uint h = _video->getHeight(); + uint w = _video->getWidth(); - const Graphics::Surface *surface = decodeNextFrame(); + const Graphics::Surface *surface = _video->decodeNextFrame(); byte *src = (byte *)surface->pixels; - if (hasDirtyPalette()) - _vm->setPaletteFromPtr(getPalette(), 256); + if (_video->hasDirtyPalette()) + _vm->setPaletteFromPtr(_video->getPalette(), 256); if (_vm->_game.features & GF_16BIT_COLOR) { dst += y * pitch + x * 2; @@ -101,7 +106,7 @@ void MoviePlayer::copyFrameToBuffer(byte *dst, int dstType, uint x, uint y, uint } void MoviePlayer::handleNextFrame() { - if (!isVideoLoaded()) + if (!_video->isVideoLoaded()) return; VirtScreen *pvs = &_vm->_virtscr[kMainVirtScreen]; @@ -115,17 +120,37 @@ void MoviePlayer::handleNextFrame() { } else if (_flags & 1) { copyFrameToBuffer(pvs->getBackPixels(0, 0), kDstScreen, 0, 0, pvs->pitch); - Common::Rect imageRect(getWidth(), getHeight()); + Common::Rect imageRect(_video->getWidth(), _video->getHeight()); _vm->restoreBackgroundHE(imageRect); } else { copyFrameToBuffer(pvs->getPixels(0, 0), kDstScreen, 0, 0, pvs->pitch); - Common::Rect imageRect(getWidth(), getHeight()); + Common::Rect imageRect(_video->getWidth(), _video->getHeight()); _vm->markRectAsDirty(kMainVirtScreen, imageRect); } - if (endOfVideo()) - close(); + if (_video->endOfVideo()) + _video->close(); +} + +void MoviePlayer::close() { + _video->close(); +} + +int MoviePlayer::getWidth() const { + return _video->getWidth(); +} + +int MoviePlayer::getHeight() const { + return _video->getHeight(); +} + +int MoviePlayer::getFrameCount() const { + return _video->getFrameCount(); +} + +int MoviePlayer::getCurFrame() const { + return _video->endOfVideo() ? -1 : _video->getCurFrame() + 1; } } // End of namespace Scumm diff --git a/engines/scumm/he/animation_he.h b/engines/scumm/he/animation_he.h index b3405fead0c..7fa31a195d1 100644 --- a/engines/scumm/he/animation_he.h +++ b/engines/scumm/he/animation_he.h @@ -23,34 +23,41 @@ #if !defined(SCUMM_HE_ANIMATION_H) && defined(ENABLE_HE) #define SCUMM_HE_ANIMATION_H -#include "video/smk_decoder.h" - #include "audio/mixer.h" +namespace Video { + class VideoDecoder; +} + namespace Scumm { class ScummEngine_v90he; -class MoviePlayer : public Video::SmackerDecoder { - ScummEngine_v90he *_vm; - - Audio::Mixer *_mixer; - - Audio::SoundHandle _bgSound; - Audio::AudioStream *_bgSoundStream; - - char baseName[40]; - uint32 _flags; - uint32 _wizResNum; - +class MoviePlayer { public: MoviePlayer(ScummEngine_v90he *vm, Audio::Mixer *mixer); + ~MoviePlayer(); int getImageNum(); int load(const char *filename, int flags, int image = 0); void copyFrameToBuffer(byte *dst, int dstType, uint x, uint y, uint pitch); void handleNextFrame(); + + void close(); + int getWidth() const; + int getHeight() const; + int getFrameCount() const; + int getCurFrame() const; + +private: + ScummEngine_v90he *_vm; + + Video::VideoDecoder *_video; + + char baseName[40]; + uint32 _flags; + uint32 _wizResNum; }; } // End of namespace Scumm diff --git a/engines/scumm/he/script_v100he.cpp b/engines/scumm/he/script_v100he.cpp index e057ab524af..5a9172ff8ab 100644 --- a/engines/scumm/he/script_v100he.cpp +++ b/engines/scumm/he/script_v100he.cpp @@ -2933,7 +2933,7 @@ void ScummEngine_v100he::o100_getVideoData() { break; case 73: pop(); - push(_moviePlay->endOfVideo() ? -1 : (_moviePlay->getCurFrame() + 1)); + push(_moviePlay->getCurFrame()); break; case 84: pop(); diff --git a/engines/scumm/he/script_v90he.cpp b/engines/scumm/he/script_v90he.cpp index 6b632d8ff2e..66a0a34d164 100644 --- a/engines/scumm/he/script_v90he.cpp +++ b/engines/scumm/he/script_v90he.cpp @@ -1460,7 +1460,7 @@ void ScummEngine_v90he::o90_getVideoData() { break; case 52: // Get current frame pop(); - push(_moviePlay->endOfVideo() ? -1 : (_moviePlay->getCurFrame() + 1)); + push(_moviePlay->getCurFrame()); break; case 63: // Get image number pop(); From 6ff94e255436e6a65824d76f27021840f7106c15 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 15:08:02 -0400 Subject: [PATCH 004/731] COMMON: Add a BitStream class Based on eos' BitStream --- common/bitstream.cpp | 215 +++++++++++++++++++++++++++++++++++++++++++ common/bitstream.h | 102 ++++++++++++++++++++ common/module.mk | 1 + 3 files changed, 318 insertions(+) create mode 100644 common/bitstream.cpp create mode 100644 common/bitstream.h diff --git a/common/bitstream.cpp b/common/bitstream.cpp new file mode 100644 index 00000000000..fb40957ef6b --- /dev/null +++ b/common/bitstream.cpp @@ -0,0 +1,215 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' BitStream implementation + +#include "common/bitstream.h" +#include "common/memstream.h" +#include "common/stream.h" +#include "common/textconsole.h" +#include "common/util.h" + +namespace Common { + +BitStream::BitStream() { +} + +BitStream::~BitStream() { +} + +void BitStream::skip(uint32 n) { + while (n-- > 0) + getBit(); +} + + +BitStreamBE::BitStreamBE(SeekableReadStream &stream, uint32 bitCount) : _value(0), _inValue(0) { + if ((bitCount % 8) != 0) + error("Big-endian bit stream size has to be divisible by 8"); + + // Read the number of bytes of the stream + + uint32 byteSize = bitCount / 8; + byte *data = new byte[byteSize]; + + if (stream.read(data, byteSize) != byteSize) { + delete[] data; + error("Bad BitStreamBE size"); + } +} + +BitStreamBE::BitStreamBE(const byte *data, uint32 bitCount) : _value(0), _inValue(0) { + if ((bitCount % 8) != 0) + error("Big-endian bit stream size has to be divisible by 8"); + + // Copy the number of bytes from the data array + + uint32 byteSize = bitCount / 8; + byte *dataN = new byte[byteSize]; + + memcpy(dataN, data, byteSize); + + _stream = new MemoryReadStream(dataN, byteSize, DisposeAfterUse::YES); +} + +BitStreamBE::~BitStreamBE() { + delete _stream; +} + +uint32 BitStreamBE::getBit() { + if (_inValue == 0) { + // Need to get new byte + + if (_stream->eos()) + error("End of bit stream reached"); + + _value = _stream->readByte(); + } + + // Get the current bit + int b = ((_value & 0x80) == 0) ? 0 : 1; + + // Shift to the next bit + _value <<= 1; + + // Increase the position within the current byte + _inValue = (_inValue + 1) % 8; + + return b; +} + +uint32 BitStreamBE::getBits(uint32 n) { + if (n > 32) + error("Too many bits requested to be read"); + + // Read the number of bits + uint32 v = 0; + while (n-- > 0) + v = (v << 1) | getBit(); + + return v; +} + +void BitStreamBE::addBit(uint32 &x, uint32 n) { + x = (x << 1) | getBit(); +} + +uint32 BitStreamBE::pos() const { + if (_stream->pos() == 0) + return 0; + + uint32 p = (_inValue == 0) ? _stream->pos() : (_stream->pos() - 1); + return p * 8 + _inValue; +} + +uint32 BitStreamBE::size() const { + return _stream->size() * 8; +} + + +BitStream32LE::BitStream32LE(SeekableReadStream &stream, uint32 bitCount) : _value(0), _inValue(0) { + if ((bitCount % 32) != 0) + error("32bit little-endian bit stream size has to be divisible by 32"); + + // Read the number of bytes of the stream + + uint32 byteSize = bitCount / 8; + byte *data = new byte[byteSize]; + + if (stream.read(data, byteSize) != byteSize) { + delete[] data; + error("Bad BitStream32LE size"); + } + + _stream = new MemoryReadStream(data, byteSize, DisposeAfterUse::YES); +} + +BitStream32LE::BitStream32LE(const byte *data, uint32 bitCount) : _value(0), _inValue(0) { + if ((bitCount % 32) != 0) + error("32bit little-endian bit stream size has to be divisible by 32"); + + // Copy the number of bytes from the data array + + uint32 byteSize = bitCount / 8; + byte *dataN = new byte[byteSize]; + + memcpy(dataN, data, byteSize); + + _stream = new MemoryReadStream(dataN, byteSize, DisposeAfterUse::YES); +} + +BitStream32LE::~BitStream32LE() { + delete _stream; +} + +uint32 BitStream32LE::getBit() { + if (_inValue == 0) { + // Need to get new 32bit value + + if (_stream->eos()) + error("End of bit stream reached"); + + _value = _stream->readUint32LE(); + } + + // Get the current bit + int b = ((_value & 1) == 0) ? 0 : 1; + + // Shift to the next bit + _value >>= 1; + + // Increase the position within the current byte + _inValue = (_inValue + 1) % 32; + + return b; +} + +uint32 BitStream32LE::getBits(uint32 n) { + if (n > 32) + error("Too many bits requested to be read"); + + // Read the number of bits + uint32 v = 0; + for (uint32 i = 0; i < n; i++) + v = (v >> 1) | (((uint32) getBit()) << 31); + + v >>= (32 - n); + return v; +} + +void BitStream32LE::addBit(uint32 &x, uint32 n) { + x = (x & ~(1 << n)) | (getBit() << n); +} + +uint32 BitStream32LE::pos() const { + if (_stream->pos() == 0) + return 0; + + uint32 p = ((_inValue == 0) ? _stream->pos() : (_stream->pos() - 1)) & 0xFFFFFFFC; + return p * 8 + _inValue; +} + +uint32 BitStream32LE::size() const { + return _stream->size() * 8; +} + +} // End of namespace Common diff --git a/common/bitstream.h b/common/bitstream.h new file mode 100644 index 00000000000..99aec252a38 --- /dev/null +++ b/common/bitstream.h @@ -0,0 +1,102 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' BitStream implementation + +#ifndef COMMON_BITSTREAM_H +#define COMMON_BITSTREAM_H + +#include "common/scummsys.h" + +namespace Common { + +class SeekableReadStream; + +/** A bit stream. */ +class BitStream { +public: + BitStream(); + virtual ~BitStream(); + + /** Read a bit. */ + virtual uint32 getBit() = 0; + + /** Read a number of bits. */ + virtual uint32 getBits(uint32 n) = 0; + + /** Adding another bit. */ + virtual void addBit(uint32 &x, uint32 n) = 0; + + /** Skip a number of bits. */ + void skip(uint32 n); + + /** Get the current position. */ + virtual uint32 pos() const = 0; + /** Return the number of bits in the stream. */ + virtual uint32 size() const = 0; +}; + +/** A big endian bit stream. */ +class BitStreamBE : public BitStream { +public: + BitStreamBE(SeekableReadStream &stream, uint32 bitCount); + BitStreamBE(const byte *data, uint32 bitCount); + ~BitStreamBE(); + + uint32 getBit(); + uint32 getBits(uint32 n); + void addBit(uint32 &x, uint32 n); + + uint32 pos() const; + uint32 size() const; + +private: + SeekableReadStream *_stream; + + byte _value; ///< Current byte. + uint8 _inValue; ///< Position within the current byte. +}; + +/** A 32bit little endian bit stream. */ +class BitStream32LE : public BitStream { +public: + BitStream32LE(SeekableReadStream &stream, uint32 bitCount); + BitStream32LE(const byte *data, uint32 bitCount); + ~BitStream32LE(); + + uint32 getBit(); + uint32 getBits(uint32 n); + void addBit(uint32 &x, uint32 n); + + uint32 pos() const; + uint32 size() const; + +private: + SeekableReadStream *_stream; + + uint32 _value; ///< Current 32bit value. + uint8 _inValue; ///< Position within the current 32bit value. +}; + +} // End of namespace Common + +#endif // COMMON_BITSTREAM_H diff --git a/common/module.mk b/common/module.mk index 5f6a5295956..bada45bf91d 100644 --- a/common/module.mk +++ b/common/module.mk @@ -2,6 +2,7 @@ MODULE := common MODULE_OBJS := \ archive.o \ + bitstream.o \ config-file.o \ config-manager.o \ dcl.o \ From 1d4ec6f1d18f68f77d5fbe4e8911fcf96cd35c51 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 15:15:04 -0400 Subject: [PATCH 005/731] COMMON: Add some simple math utilities Based on eos' code --- common/cosinetables.h | 8270 +++++++++++++++++++++++++++++++++++++++++ common/math.cpp | 44 + common/math.h | 120 + common/module.mk | 1 + common/sinetables.h | 8270 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 16705 insertions(+) create mode 100644 common/cosinetables.h create mode 100644 common/math.cpp create mode 100644 common/math.h create mode 100644 common/sinetables.h diff --git a/common/cosinetables.h b/common/cosinetables.h new file mode 100644 index 00000000000..362445bc6d9 --- /dev/null +++ b/common/cosinetables.h @@ -0,0 +1,8270 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' cosine tables + +#ifndef COMMON_COSINETABLES_H +#define COMMON_COSINETABLES_H + +namespace Common { + +static const float cosTable16[8] = { + 1.000000, 0.923880, 0.707107, 0.382683, 0.000000, 0.382683, 0.707107, 0.923880 +}; + +static const float cosTable32[16] = { + 1.000000, 0.980785, 0.923880, 0.831470, 0.707107, 0.555570, 0.382683, 0.195090, + 0.000000, 0.195090, 0.382683, 0.555570, 0.707107, 0.831470, 0.923880, 0.980785 +}; + +static const float cosTable64[32] = { + 1.000000, 0.995185, 0.980785, 0.956940, 0.923880, 0.881921, 0.831470, 0.773010, + 0.707107, 0.634393, 0.555570, 0.471397, 0.382683, 0.290285, 0.195090, 0.098017, + 0.000000, 0.098017, 0.195090, 0.290285, 0.382683, 0.471397, 0.555570, 0.634393, + 0.707107, 0.773010, 0.831470, 0.881921, 0.923880, 0.956940, 0.980785, 0.995185 +}; + +static const float cosTable128[64] = { + 1.000000, 0.998795, 0.995185, 0.989177, 0.980785, 0.970031, 0.956940, 0.941544, + 0.923880, 0.903989, 0.881921, 0.857729, 0.831470, 0.803208, 0.773010, 0.740951, + 0.707107, 0.671559, 0.634393, 0.595699, 0.555570, 0.514103, 0.471397, 0.427555, + 0.382683, 0.336890, 0.290285, 0.242980, 0.195090, 0.146730, 0.098017, 0.049068, + 0.000000, 0.049068, 0.098017, 0.146730, 0.195090, 0.242980, 0.290285, 0.336890, + 0.382683, 0.427555, 0.471397, 0.514103, 0.555570, 0.595699, 0.634393, 0.671559, + 0.707107, 0.740951, 0.773010, 0.803208, 0.831470, 0.857729, 0.881921, 0.903989, + 0.923880, 0.941544, 0.956940, 0.970031, 0.980785, 0.989177, 0.995185, 0.998795 +}; + +static const float cosTable256[128] = { + 1.000000, 0.999699, 0.998795, 0.997290, 0.995185, 0.992480, 0.989177, 0.985278, + 0.980785, 0.975702, 0.970031, 0.963776, 0.956940, 0.949528, 0.941544, 0.932993, + 0.923880, 0.914210, 0.903989, 0.893224, 0.881921, 0.870087, 0.857729, 0.844854, + 0.831470, 0.817585, 0.803208, 0.788346, 0.773010, 0.757209, 0.740951, 0.724247, + 0.707107, 0.689541, 0.671559, 0.653173, 0.634393, 0.615232, 0.595699, 0.575808, + 0.555570, 0.534998, 0.514103, 0.492898, 0.471397, 0.449611, 0.427555, 0.405241, + 0.382683, 0.359895, 0.336890, 0.313682, 0.290285, 0.266713, 0.242980, 0.219101, + 0.195090, 0.170962, 0.146730, 0.122411, 0.098017, 0.073565, 0.049068, 0.024541, + 0.000000, 0.024541, 0.049068, 0.073565, 0.098017, 0.122411, 0.146730, 0.170962, + 0.195090, 0.219101, 0.242980, 0.266713, 0.290285, 0.313682, 0.336890, 0.359895, + 0.382683, 0.405241, 0.427555, 0.449611, 0.471397, 0.492898, 0.514103, 0.534998, + 0.555570, 0.575808, 0.595699, 0.615232, 0.634393, 0.653173, 0.671559, 0.689541, + 0.707107, 0.724247, 0.740951, 0.757209, 0.773010, 0.788346, 0.803208, 0.817585, + 0.831470, 0.844854, 0.857729, 0.870087, 0.881921, 0.893224, 0.903989, 0.914210, + 0.923880, 0.932993, 0.941544, 0.949528, 0.956940, 0.963776, 0.970031, 0.975702, + 0.980785, 0.985278, 0.989177, 0.992480, 0.995185, 0.997290, 0.998795, 0.999699 +}; + +static const float cosTable512[256] = { + 1.000000, 0.999925, 0.999699, 0.999322, 0.998795, 0.998118, 0.997290, 0.996313, + 0.995185, 0.993907, 0.992480, 0.990903, 0.989177, 0.987301, 0.985278, 0.983105, + 0.980785, 0.978317, 0.975702, 0.972940, 0.970031, 0.966976, 0.963776, 0.960431, + 0.956940, 0.953306, 0.949528, 0.945607, 0.941544, 0.937339, 0.932993, 0.928506, + 0.923880, 0.919114, 0.914210, 0.909168, 0.903989, 0.898674, 0.893224, 0.887640, + 0.881921, 0.876070, 0.870087, 0.863973, 0.857729, 0.851355, 0.844854, 0.838225, + 0.831470, 0.824589, 0.817585, 0.810457, 0.803208, 0.795837, 0.788346, 0.780737, + 0.773010, 0.765167, 0.757209, 0.749136, 0.740951, 0.732654, 0.724247, 0.715731, + 0.707107, 0.698376, 0.689541, 0.680601, 0.671559, 0.662416, 0.653173, 0.643832, + 0.634393, 0.624860, 0.615232, 0.605511, 0.595699, 0.585798, 0.575808, 0.565732, + 0.555570, 0.545325, 0.534998, 0.524590, 0.514103, 0.503538, 0.492898, 0.482184, + 0.471397, 0.460539, 0.449611, 0.438616, 0.427555, 0.416430, 0.405241, 0.393992, + 0.382683, 0.371317, 0.359895, 0.348419, 0.336890, 0.325310, 0.313682, 0.302006, + 0.290285, 0.278520, 0.266713, 0.254866, 0.242980, 0.231058, 0.219101, 0.207111, + 0.195090, 0.183040, 0.170962, 0.158858, 0.146730, 0.134581, 0.122411, 0.110222, + 0.098017, 0.085797, 0.073565, 0.061321, 0.049068, 0.036807, 0.024541, 0.012272, + 0.000000, 0.012272, 0.024541, 0.036807, 0.049068, 0.061321, 0.073565, 0.085797, + 0.098017, 0.110222, 0.122411, 0.134581, 0.146730, 0.158858, 0.170962, 0.183040, + 0.195090, 0.207111, 0.219101, 0.231058, 0.242980, 0.254866, 0.266713, 0.278520, + 0.290285, 0.302006, 0.313682, 0.325310, 0.336890, 0.348419, 0.359895, 0.371317, + 0.382683, 0.393992, 0.405241, 0.416430, 0.427555, 0.438616, 0.449611, 0.460539, + 0.471397, 0.482184, 0.492898, 0.503538, 0.514103, 0.524590, 0.534998, 0.545325, + 0.555570, 0.565732, 0.575808, 0.585798, 0.595699, 0.605511, 0.615232, 0.624860, + 0.634393, 0.643832, 0.653173, 0.662416, 0.671559, 0.680601, 0.689541, 0.698376, + 0.707107, 0.715731, 0.724247, 0.732654, 0.740951, 0.749136, 0.757209, 0.765167, + 0.773010, 0.780737, 0.788346, 0.795837, 0.803208, 0.810457, 0.817585, 0.824589, + 0.831470, 0.838225, 0.844854, 0.851355, 0.857729, 0.863973, 0.870087, 0.876070, + 0.881921, 0.887640, 0.893224, 0.898674, 0.903989, 0.909168, 0.914210, 0.919114, + 0.923880, 0.928506, 0.932993, 0.937339, 0.941544, 0.945607, 0.949528, 0.953306, + 0.956940, 0.960431, 0.963776, 0.966976, 0.970031, 0.972940, 0.975702, 0.978317, + 0.980785, 0.983105, 0.985278, 0.987301, 0.989177, 0.990903, 0.992480, 0.993907, + 0.995185, 0.996313, 0.997290, 0.998118, 0.998795, 0.999322, 0.999699, 0.999925 +}; + +static const float cosTable1024[512] = { + 1.000000, 0.999981, 0.999925, 0.999831, 0.999699, 0.999529, 0.999322, 0.999078, + 0.998795, 0.998476, 0.998118, 0.997723, 0.997290, 0.996820, 0.996313, 0.995767, + 0.995185, 0.994565, 0.993907, 0.993212, 0.992480, 0.991710, 0.990903, 0.990058, + 0.989177, 0.988258, 0.987301, 0.986308, 0.985278, 0.984210, 0.983105, 0.981964, + 0.980785, 0.979570, 0.978317, 0.977028, 0.975702, 0.974339, 0.972940, 0.971504, + 0.970031, 0.968522, 0.966976, 0.965394, 0.963776, 0.962121, 0.960431, 0.958703, + 0.956940, 0.955141, 0.953306, 0.951435, 0.949528, 0.947586, 0.945607, 0.943593, + 0.941544, 0.939459, 0.937339, 0.935184, 0.932993, 0.930767, 0.928506, 0.926210, + 0.923880, 0.921514, 0.919114, 0.916679, 0.914210, 0.911706, 0.909168, 0.906596, + 0.903989, 0.901349, 0.898674, 0.895966, 0.893224, 0.890449, 0.887640, 0.884797, + 0.881921, 0.879012, 0.876070, 0.873095, 0.870087, 0.867046, 0.863973, 0.860867, + 0.857729, 0.854558, 0.851355, 0.848120, 0.844854, 0.841555, 0.838225, 0.834863, + 0.831470, 0.828045, 0.824589, 0.821102, 0.817585, 0.814036, 0.810457, 0.806848, + 0.803208, 0.799537, 0.795837, 0.792107, 0.788346, 0.784557, 0.780737, 0.776888, + 0.773010, 0.769103, 0.765167, 0.761202, 0.757209, 0.753187, 0.749136, 0.745058, + 0.740951, 0.736817, 0.732654, 0.728464, 0.724247, 0.720003, 0.715731, 0.711432, + 0.707107, 0.702755, 0.698376, 0.693971, 0.689541, 0.685084, 0.680601, 0.676093, + 0.671559, 0.667000, 0.662416, 0.657807, 0.653173, 0.648514, 0.643832, 0.639124, + 0.634393, 0.629638, 0.624860, 0.620057, 0.615232, 0.610383, 0.605511, 0.600616, + 0.595699, 0.590760, 0.585798, 0.580814, 0.575808, 0.570781, 0.565732, 0.560662, + 0.555570, 0.550458, 0.545325, 0.540171, 0.534998, 0.529804, 0.524590, 0.519356, + 0.514103, 0.508830, 0.503538, 0.498228, 0.492898, 0.487550, 0.482184, 0.476799, + 0.471397, 0.465977, 0.460539, 0.455084, 0.449611, 0.444122, 0.438616, 0.433094, + 0.427555, 0.422000, 0.416430, 0.410843, 0.405241, 0.399624, 0.393992, 0.388345, + 0.382683, 0.377007, 0.371317, 0.365613, 0.359895, 0.354164, 0.348419, 0.342661, + 0.336890, 0.331106, 0.325310, 0.319502, 0.313682, 0.307850, 0.302006, 0.296151, + 0.290285, 0.284408, 0.278520, 0.272621, 0.266713, 0.260794, 0.254866, 0.248928, + 0.242980, 0.237024, 0.231058, 0.225084, 0.219101, 0.213110, 0.207111, 0.201105, + 0.195090, 0.189069, 0.183040, 0.177004, 0.170962, 0.164913, 0.158858, 0.152797, + 0.146730, 0.140658, 0.134581, 0.128498, 0.122411, 0.116319, 0.110222, 0.104122, + 0.098017, 0.091909, 0.085797, 0.079682, 0.073565, 0.067444, 0.061321, 0.055195, + 0.049068, 0.042938, 0.036807, 0.030675, 0.024541, 0.018407, 0.012272, 0.006136, + 0.000000, 0.006136, 0.012272, 0.018407, 0.024541, 0.030675, 0.036807, 0.042938, + 0.049068, 0.055195, 0.061321, 0.067444, 0.073565, 0.079682, 0.085797, 0.091909, + 0.098017, 0.104122, 0.110222, 0.116319, 0.122411, 0.128498, 0.134581, 0.140658, + 0.146730, 0.152797, 0.158858, 0.164913, 0.170962, 0.177004, 0.183040, 0.189069, + 0.195090, 0.201105, 0.207111, 0.213110, 0.219101, 0.225084, 0.231058, 0.237024, + 0.242980, 0.248928, 0.254866, 0.260794, 0.266713, 0.272621, 0.278520, 0.284408, + 0.290285, 0.296151, 0.302006, 0.307850, 0.313682, 0.319502, 0.325310, 0.331106, + 0.336890, 0.342661, 0.348419, 0.354164, 0.359895, 0.365613, 0.371317, 0.377007, + 0.382683, 0.388345, 0.393992, 0.399624, 0.405241, 0.410843, 0.416430, 0.422000, + 0.427555, 0.433094, 0.438616, 0.444122, 0.449611, 0.455084, 0.460539, 0.465977, + 0.471397, 0.476799, 0.482184, 0.487550, 0.492898, 0.498228, 0.503538, 0.508830, + 0.514103, 0.519356, 0.524590, 0.529804, 0.534998, 0.540171, 0.545325, 0.550458, + 0.555570, 0.560662, 0.565732, 0.570781, 0.575808, 0.580814, 0.585798, 0.590760, + 0.595699, 0.600616, 0.605511, 0.610383, 0.615232, 0.620057, 0.624860, 0.629638, + 0.634393, 0.639124, 0.643832, 0.648514, 0.653173, 0.657807, 0.662416, 0.667000, + 0.671559, 0.676093, 0.680601, 0.685084, 0.689541, 0.693971, 0.698376, 0.702755, + 0.707107, 0.711432, 0.715731, 0.720003, 0.724247, 0.728464, 0.732654, 0.736817, + 0.740951, 0.745058, 0.749136, 0.753187, 0.757209, 0.761202, 0.765167, 0.769103, + 0.773010, 0.776888, 0.780737, 0.784557, 0.788346, 0.792107, 0.795837, 0.799537, + 0.803208, 0.806848, 0.810457, 0.814036, 0.817585, 0.821102, 0.824589, 0.828045, + 0.831470, 0.834863, 0.838225, 0.841555, 0.844854, 0.848120, 0.851355, 0.854558, + 0.857729, 0.860867, 0.863973, 0.867046, 0.870087, 0.873095, 0.876070, 0.879012, + 0.881921, 0.884797, 0.887640, 0.890449, 0.893224, 0.895966, 0.898674, 0.901349, + 0.903989, 0.906596, 0.909168, 0.911706, 0.914210, 0.916679, 0.919114, 0.921514, + 0.923880, 0.926210, 0.928506, 0.930767, 0.932993, 0.935184, 0.937339, 0.939459, + 0.941544, 0.943593, 0.945607, 0.947586, 0.949528, 0.951435, 0.953306, 0.955141, + 0.956940, 0.958703, 0.960431, 0.962121, 0.963776, 0.965394, 0.966976, 0.968522, + 0.970031, 0.971504, 0.972940, 0.974339, 0.975702, 0.977028, 0.978317, 0.979570, + 0.980785, 0.981964, 0.983105, 0.984210, 0.985278, 0.986308, 0.987301, 0.988258, + 0.989177, 0.990058, 0.990903, 0.991710, 0.992480, 0.993212, 0.993907, 0.994565, + 0.995185, 0.995767, 0.996313, 0.996820, 0.997290, 0.997723, 0.998118, 0.998476, + 0.998795, 0.999078, 0.999322, 0.999529, 0.999699, 0.999831, 0.999925, 0.999981 +}; + +static const float cosTable2048[1024] = { + 1.000000, 0.999995, 0.999981, 0.999958, 0.999925, 0.999882, 0.999831, 0.999769, + 0.999699, 0.999619, 0.999529, 0.999431, 0.999322, 0.999205, 0.999078, 0.998941, + 0.998795, 0.998640, 0.998476, 0.998302, 0.998118, 0.997925, 0.997723, 0.997511, + 0.997290, 0.997060, 0.996820, 0.996571, 0.996313, 0.996045, 0.995767, 0.995481, + 0.995185, 0.994879, 0.994565, 0.994240, 0.993907, 0.993564, 0.993212, 0.992850, + 0.992480, 0.992099, 0.991710, 0.991311, 0.990903, 0.990485, 0.990058, 0.989622, + 0.989177, 0.988722, 0.988258, 0.987784, 0.987301, 0.986809, 0.986308, 0.985798, + 0.985278, 0.984748, 0.984210, 0.983662, 0.983105, 0.982539, 0.981964, 0.981379, + 0.980785, 0.980182, 0.979570, 0.978948, 0.978317, 0.977677, 0.977028, 0.976370, + 0.975702, 0.975025, 0.974339, 0.973644, 0.972940, 0.972227, 0.971504, 0.970772, + 0.970031, 0.969281, 0.968522, 0.967754, 0.966976, 0.966190, 0.965394, 0.964590, + 0.963776, 0.962953, 0.962121, 0.961280, 0.960431, 0.959572, 0.958703, 0.957826, + 0.956940, 0.956045, 0.955141, 0.954228, 0.953306, 0.952375, 0.951435, 0.950486, + 0.949528, 0.948561, 0.947586, 0.946601, 0.945607, 0.944605, 0.943593, 0.942573, + 0.941544, 0.940506, 0.939459, 0.938404, 0.937339, 0.936266, 0.935184, 0.934093, + 0.932993, 0.931884, 0.930767, 0.929641, 0.928506, 0.927363, 0.926210, 0.925049, + 0.923880, 0.922701, 0.921514, 0.920318, 0.919114, 0.917901, 0.916679, 0.915449, + 0.914210, 0.912962, 0.911706, 0.910441, 0.909168, 0.907886, 0.906596, 0.905297, + 0.903989, 0.902673, 0.901349, 0.900016, 0.898674, 0.897325, 0.895966, 0.894599, + 0.893224, 0.891841, 0.890449, 0.889048, 0.887640, 0.886223, 0.884797, 0.883363, + 0.881921, 0.880471, 0.879012, 0.877545, 0.876070, 0.874587, 0.873095, 0.871595, + 0.870087, 0.868571, 0.867046, 0.865514, 0.863973, 0.862424, 0.860867, 0.859302, + 0.857729, 0.856147, 0.854558, 0.852961, 0.851355, 0.849742, 0.848120, 0.846491, + 0.844854, 0.843208, 0.841555, 0.839894, 0.838225, 0.836548, 0.834863, 0.833170, + 0.831470, 0.829761, 0.828045, 0.826321, 0.824589, 0.822850, 0.821102, 0.819348, + 0.817585, 0.815814, 0.814036, 0.812251, 0.810457, 0.808656, 0.806848, 0.805031, + 0.803208, 0.801376, 0.799537, 0.797691, 0.795837, 0.793975, 0.792107, 0.790230, + 0.788346, 0.786455, 0.784557, 0.782651, 0.780737, 0.778817, 0.776888, 0.774953, + 0.773010, 0.771061, 0.769103, 0.767139, 0.765167, 0.763188, 0.761202, 0.759209, + 0.757209, 0.755201, 0.753187, 0.751165, 0.749136, 0.747101, 0.745058, 0.743008, + 0.740951, 0.738887, 0.736817, 0.734739, 0.732654, 0.730563, 0.728464, 0.726359, + 0.724247, 0.722128, 0.720003, 0.717870, 0.715731, 0.713585, 0.711432, 0.709273, + 0.707107, 0.704934, 0.702755, 0.700569, 0.698376, 0.696177, 0.693971, 0.691759, + 0.689541, 0.687315, 0.685084, 0.682846, 0.680601, 0.678350, 0.676093, 0.673829, + 0.671559, 0.669283, 0.667000, 0.664711, 0.662416, 0.660114, 0.657807, 0.655493, + 0.653173, 0.650847, 0.648514, 0.646176, 0.643832, 0.641481, 0.639124, 0.636762, + 0.634393, 0.632019, 0.629638, 0.627252, 0.624860, 0.622461, 0.620057, 0.617647, + 0.615232, 0.612810, 0.610383, 0.607950, 0.605511, 0.603067, 0.600616, 0.598161, + 0.595699, 0.593232, 0.590760, 0.588282, 0.585798, 0.583309, 0.580814, 0.578314, + 0.575808, 0.573297, 0.570781, 0.568259, 0.565732, 0.563199, 0.560662, 0.558119, + 0.555570, 0.553017, 0.550458, 0.547894, 0.545325, 0.542751, 0.540171, 0.537587, + 0.534998, 0.532403, 0.529804, 0.527199, 0.524590, 0.521975, 0.519356, 0.516732, + 0.514103, 0.511469, 0.508830, 0.506187, 0.503538, 0.500885, 0.498228, 0.495565, + 0.492898, 0.490226, 0.487550, 0.484869, 0.482184, 0.479494, 0.476799, 0.474100, + 0.471397, 0.468689, 0.465977, 0.463260, 0.460539, 0.457813, 0.455084, 0.452350, + 0.449611, 0.446869, 0.444122, 0.441371, 0.438616, 0.435857, 0.433094, 0.430326, + 0.427555, 0.424780, 0.422000, 0.419217, 0.416430, 0.413638, 0.410843, 0.408044, + 0.405241, 0.402435, 0.399624, 0.396810, 0.393992, 0.391170, 0.388345, 0.385516, + 0.382683, 0.379847, 0.377007, 0.374164, 0.371317, 0.368467, 0.365613, 0.362756, + 0.359895, 0.357031, 0.354164, 0.351293, 0.348419, 0.345541, 0.342661, 0.339777, + 0.336890, 0.334000, 0.331106, 0.328210, 0.325310, 0.322408, 0.319502, 0.316593, + 0.313682, 0.310767, 0.307850, 0.304929, 0.302006, 0.299080, 0.296151, 0.293219, + 0.290285, 0.287347, 0.284408, 0.281465, 0.278520, 0.275572, 0.272621, 0.269668, + 0.266713, 0.263755, 0.260794, 0.257831, 0.254866, 0.251898, 0.248928, 0.245955, + 0.242980, 0.240003, 0.237024, 0.234042, 0.231058, 0.228072, 0.225084, 0.222094, + 0.219101, 0.216107, 0.213110, 0.210112, 0.207111, 0.204109, 0.201105, 0.198098, + 0.195090, 0.192080, 0.189069, 0.186055, 0.183040, 0.180023, 0.177004, 0.173984, + 0.170962, 0.167938, 0.164913, 0.161886, 0.158858, 0.155828, 0.152797, 0.149765, + 0.146730, 0.143695, 0.140658, 0.137620, 0.134581, 0.131540, 0.128498, 0.125455, + 0.122411, 0.119365, 0.116319, 0.113271, 0.110222, 0.107172, 0.104122, 0.101070, + 0.098017, 0.094963, 0.091909, 0.088854, 0.085797, 0.082740, 0.079682, 0.076624, + 0.073565, 0.070505, 0.067444, 0.064383, 0.061321, 0.058258, 0.055195, 0.052132, + 0.049068, 0.046003, 0.042938, 0.039873, 0.036807, 0.033741, 0.030675, 0.027608, + 0.024541, 0.021474, 0.018407, 0.015339, 0.012272, 0.009204, 0.006136, 0.003068, + 0.000000, 0.003068, 0.006136, 0.009204, 0.012272, 0.015339, 0.018407, 0.021474, + 0.024541, 0.027608, 0.030675, 0.033741, 0.036807, 0.039873, 0.042938, 0.046003, + 0.049068, 0.052132, 0.055195, 0.058258, 0.061321, 0.064383, 0.067444, 0.070505, + 0.073565, 0.076624, 0.079682, 0.082740, 0.085797, 0.088854, 0.091909, 0.094963, + 0.098017, 0.101070, 0.104122, 0.107172, 0.110222, 0.113271, 0.116319, 0.119365, + 0.122411, 0.125455, 0.128498, 0.131540, 0.134581, 0.137620, 0.140658, 0.143695, + 0.146730, 0.149765, 0.152797, 0.155828, 0.158858, 0.161886, 0.164913, 0.167938, + 0.170962, 0.173984, 0.177004, 0.180023, 0.183040, 0.186055, 0.189069, 0.192080, + 0.195090, 0.198098, 0.201105, 0.204109, 0.207111, 0.210112, 0.213110, 0.216107, + 0.219101, 0.222094, 0.225084, 0.228072, 0.231058, 0.234042, 0.237024, 0.240003, + 0.242980, 0.245955, 0.248928, 0.251898, 0.254866, 0.257831, 0.260794, 0.263755, + 0.266713, 0.269668, 0.272621, 0.275572, 0.278520, 0.281465, 0.284408, 0.287347, + 0.290285, 0.293219, 0.296151, 0.299080, 0.302006, 0.304929, 0.307850, 0.310767, + 0.313682, 0.316593, 0.319502, 0.322408, 0.325310, 0.328210, 0.331106, 0.334000, + 0.336890, 0.339777, 0.342661, 0.345541, 0.348419, 0.351293, 0.354164, 0.357031, + 0.359895, 0.362756, 0.365613, 0.368467, 0.371317, 0.374164, 0.377007, 0.379847, + 0.382683, 0.385516, 0.388345, 0.391170, 0.393992, 0.396810, 0.399624, 0.402435, + 0.405241, 0.408044, 0.410843, 0.413638, 0.416430, 0.419217, 0.422000, 0.424780, + 0.427555, 0.430326, 0.433094, 0.435857, 0.438616, 0.441371, 0.444122, 0.446869, + 0.449611, 0.452350, 0.455084, 0.457813, 0.460539, 0.463260, 0.465977, 0.468689, + 0.471397, 0.474100, 0.476799, 0.479494, 0.482184, 0.484869, 0.487550, 0.490226, + 0.492898, 0.495565, 0.498228, 0.500885, 0.503538, 0.506187, 0.508830, 0.511469, + 0.514103, 0.516732, 0.519356, 0.521975, 0.524590, 0.527199, 0.529804, 0.532403, + 0.534998, 0.537587, 0.540171, 0.542751, 0.545325, 0.547894, 0.550458, 0.553017, + 0.555570, 0.558119, 0.560662, 0.563199, 0.565732, 0.568259, 0.570781, 0.573297, + 0.575808, 0.578314, 0.580814, 0.583309, 0.585798, 0.588282, 0.590760, 0.593232, + 0.595699, 0.598161, 0.600616, 0.603067, 0.605511, 0.607950, 0.610383, 0.612810, + 0.615232, 0.617647, 0.620057, 0.622461, 0.624860, 0.627252, 0.629638, 0.632019, + 0.634393, 0.636762, 0.639124, 0.641481, 0.643832, 0.646176, 0.648514, 0.650847, + 0.653173, 0.655493, 0.657807, 0.660114, 0.662416, 0.664711, 0.667000, 0.669283, + 0.671559, 0.673829, 0.676093, 0.678350, 0.680601, 0.682846, 0.685084, 0.687315, + 0.689541, 0.691759, 0.693971, 0.696177, 0.698376, 0.700569, 0.702755, 0.704934, + 0.707107, 0.709273, 0.711432, 0.713585, 0.715731, 0.717870, 0.720003, 0.722128, + 0.724247, 0.726359, 0.728464, 0.730563, 0.732654, 0.734739, 0.736817, 0.738887, + 0.740951, 0.743008, 0.745058, 0.747101, 0.749136, 0.751165, 0.753187, 0.755201, + 0.757209, 0.759209, 0.761202, 0.763188, 0.765167, 0.767139, 0.769103, 0.771061, + 0.773010, 0.774953, 0.776888, 0.778817, 0.780737, 0.782651, 0.784557, 0.786455, + 0.788346, 0.790230, 0.792107, 0.793975, 0.795837, 0.797691, 0.799537, 0.801376, + 0.803208, 0.805031, 0.806848, 0.808656, 0.810457, 0.812251, 0.814036, 0.815814, + 0.817585, 0.819348, 0.821102, 0.822850, 0.824589, 0.826321, 0.828045, 0.829761, + 0.831470, 0.833170, 0.834863, 0.836548, 0.838225, 0.839894, 0.841555, 0.843208, + 0.844854, 0.846491, 0.848120, 0.849742, 0.851355, 0.852961, 0.854558, 0.856147, + 0.857729, 0.859302, 0.860867, 0.862424, 0.863973, 0.865514, 0.867046, 0.868571, + 0.870087, 0.871595, 0.873095, 0.874587, 0.876070, 0.877545, 0.879012, 0.880471, + 0.881921, 0.883363, 0.884797, 0.886223, 0.887640, 0.889048, 0.890449, 0.891841, + 0.893224, 0.894599, 0.895966, 0.897325, 0.898674, 0.900016, 0.901349, 0.902673, + 0.903989, 0.905297, 0.906596, 0.907886, 0.909168, 0.910441, 0.911706, 0.912962, + 0.914210, 0.915449, 0.916679, 0.917901, 0.919114, 0.920318, 0.921514, 0.922701, + 0.923880, 0.925049, 0.926210, 0.927363, 0.928506, 0.929641, 0.930767, 0.931884, + 0.932993, 0.934093, 0.935184, 0.936266, 0.937339, 0.938404, 0.939459, 0.940506, + 0.941544, 0.942573, 0.943593, 0.944605, 0.945607, 0.946601, 0.947586, 0.948561, + 0.949528, 0.950486, 0.951435, 0.952375, 0.953306, 0.954228, 0.955141, 0.956045, + 0.956940, 0.957826, 0.958703, 0.959572, 0.960431, 0.961280, 0.962121, 0.962953, + 0.963776, 0.964590, 0.965394, 0.966190, 0.966976, 0.967754, 0.968522, 0.969281, + 0.970031, 0.970772, 0.971504, 0.972227, 0.972940, 0.973644, 0.974339, 0.975025, + 0.975702, 0.976370, 0.977028, 0.977677, 0.978317, 0.978948, 0.979570, 0.980182, + 0.980785, 0.981379, 0.981964, 0.982539, 0.983105, 0.983662, 0.984210, 0.984748, + 0.985278, 0.985798, 0.986308, 0.986809, 0.987301, 0.987784, 0.988258, 0.988722, + 0.989177, 0.989622, 0.990058, 0.990485, 0.990903, 0.991311, 0.991710, 0.992099, + 0.992480, 0.992850, 0.993212, 0.993564, 0.993907, 0.994240, 0.994565, 0.994879, + 0.995185, 0.995481, 0.995767, 0.996045, 0.996313, 0.996571, 0.996820, 0.997060, + 0.997290, 0.997511, 0.997723, 0.997925, 0.998118, 0.998302, 0.998476, 0.998640, + 0.998795, 0.998941, 0.999078, 0.999205, 0.999322, 0.999431, 0.999529, 0.999619, + 0.999699, 0.999769, 0.999831, 0.999882, 0.999925, 0.999958, 0.999981, 0.999995 +}; + +static const float cosTable4096[2048] = { + 1.000000, 0.999999, 0.999995, 0.999989, 0.999981, 0.999971, 0.999958, 0.999942, + 0.999925, 0.999905, 0.999882, 0.999858, 0.999831, 0.999801, 0.999769, 0.999735, + 0.999699, 0.999660, 0.999619, 0.999575, 0.999529, 0.999481, 0.999431, 0.999378, + 0.999322, 0.999265, 0.999205, 0.999142, 0.999078, 0.999011, 0.998941, 0.998870, + 0.998795, 0.998719, 0.998640, 0.998559, 0.998476, 0.998390, 0.998302, 0.998211, + 0.998118, 0.998023, 0.997925, 0.997825, 0.997723, 0.997618, 0.997511, 0.997402, + 0.997290, 0.997176, 0.997060, 0.996941, 0.996820, 0.996697, 0.996571, 0.996443, + 0.996313, 0.996180, 0.996045, 0.995907, 0.995767, 0.995625, 0.995481, 0.995334, + 0.995185, 0.995033, 0.994879, 0.994723, 0.994565, 0.994404, 0.994240, 0.994075, + 0.993907, 0.993737, 0.993564, 0.993389, 0.993212, 0.993032, 0.992850, 0.992666, + 0.992480, 0.992291, 0.992099, 0.991906, 0.991710, 0.991511, 0.991311, 0.991108, + 0.990903, 0.990695, 0.990485, 0.990273, 0.990058, 0.989841, 0.989622, 0.989400, + 0.989177, 0.988950, 0.988722, 0.988491, 0.988258, 0.988022, 0.987784, 0.987544, + 0.987301, 0.987057, 0.986809, 0.986560, 0.986308, 0.986054, 0.985798, 0.985539, + 0.985278, 0.985014, 0.984748, 0.984480, 0.984210, 0.983937, 0.983662, 0.983385, + 0.983105, 0.982824, 0.982539, 0.982253, 0.981964, 0.981673, 0.981379, 0.981083, + 0.980785, 0.980485, 0.980182, 0.979877, 0.979570, 0.979260, 0.978948, 0.978634, + 0.978317, 0.977998, 0.977677, 0.977354, 0.977028, 0.976700, 0.976370, 0.976037, + 0.975702, 0.975365, 0.975025, 0.974684, 0.974339, 0.973993, 0.973644, 0.973293, + 0.972940, 0.972584, 0.972227, 0.971866, 0.971504, 0.971139, 0.970772, 0.970403, + 0.970031, 0.969657, 0.969281, 0.968903, 0.968522, 0.968139, 0.967754, 0.967366, + 0.966976, 0.966584, 0.966190, 0.965793, 0.965394, 0.964993, 0.964590, 0.964184, + 0.963776, 0.963366, 0.962953, 0.962538, 0.962121, 0.961702, 0.961280, 0.960857, + 0.960431, 0.960002, 0.959572, 0.959139, 0.958703, 0.958266, 0.957826, 0.957385, + 0.956940, 0.956494, 0.956045, 0.955594, 0.955141, 0.954686, 0.954228, 0.953768, + 0.953306, 0.952842, 0.952375, 0.951906, 0.951435, 0.950962, 0.950486, 0.950008, + 0.949528, 0.949046, 0.948561, 0.948075, 0.947586, 0.947094, 0.946601, 0.946105, + 0.945607, 0.945107, 0.944605, 0.944100, 0.943593, 0.943084, 0.942573, 0.942060, + 0.941544, 0.941026, 0.940506, 0.939984, 0.939459, 0.938932, 0.938404, 0.937872, + 0.937339, 0.936803, 0.936266, 0.935726, 0.935184, 0.934639, 0.934093, 0.933544, + 0.932993, 0.932440, 0.931884, 0.931327, 0.930767, 0.930205, 0.929641, 0.929075, + 0.928506, 0.927935, 0.927363, 0.926787, 0.926210, 0.925631, 0.925049, 0.924465, + 0.923880, 0.923291, 0.922701, 0.922109, 0.921514, 0.920917, 0.920318, 0.919717, + 0.919114, 0.918508, 0.917901, 0.917291, 0.916679, 0.916065, 0.915449, 0.914830, + 0.914210, 0.913587, 0.912962, 0.912335, 0.911706, 0.911075, 0.910441, 0.909806, + 0.909168, 0.908528, 0.907886, 0.907242, 0.906596, 0.905947, 0.905297, 0.904644, + 0.903989, 0.903332, 0.902673, 0.902012, 0.901349, 0.900683, 0.900016, 0.899346, + 0.898674, 0.898001, 0.897325, 0.896646, 0.895966, 0.895284, 0.894599, 0.893913, + 0.893224, 0.892534, 0.891841, 0.891146, 0.890449, 0.889750, 0.889048, 0.888345, + 0.887640, 0.886932, 0.886223, 0.885511, 0.884797, 0.884081, 0.883363, 0.882643, + 0.881921, 0.881197, 0.880471, 0.879743, 0.879012, 0.878280, 0.877545, 0.876809, + 0.876070, 0.875329, 0.874587, 0.873842, 0.873095, 0.872346, 0.871595, 0.870842, + 0.870087, 0.869330, 0.868571, 0.867809, 0.867046, 0.866281, 0.865514, 0.864744, + 0.863973, 0.863199, 0.862424, 0.861646, 0.860867, 0.860085, 0.859302, 0.858516, + 0.857729, 0.856939, 0.856147, 0.855354, 0.854558, 0.853760, 0.852961, 0.852159, + 0.851355, 0.850549, 0.849742, 0.848932, 0.848120, 0.847307, 0.846491, 0.845673, + 0.844854, 0.844032, 0.843208, 0.842383, 0.841555, 0.840725, 0.839894, 0.839060, + 0.838225, 0.837387, 0.836548, 0.835706, 0.834863, 0.834018, 0.833170, 0.832321, + 0.831470, 0.830616, 0.829761, 0.828904, 0.828045, 0.827184, 0.826321, 0.825456, + 0.824589, 0.823721, 0.822850, 0.821977, 0.821102, 0.820226, 0.819348, 0.818467, + 0.817585, 0.816701, 0.815814, 0.814926, 0.814036, 0.813144, 0.812251, 0.811355, + 0.810457, 0.809558, 0.808656, 0.807753, 0.806848, 0.805940, 0.805031, 0.804120, + 0.803208, 0.802293, 0.801376, 0.800458, 0.799537, 0.798615, 0.797691, 0.796765, + 0.795837, 0.794907, 0.793975, 0.793042, 0.792107, 0.791169, 0.790230, 0.789289, + 0.788346, 0.787402, 0.786455, 0.785507, 0.784557, 0.783605, 0.782651, 0.781695, + 0.780737, 0.779778, 0.778817, 0.777853, 0.776888, 0.775922, 0.774953, 0.773983, + 0.773010, 0.772036, 0.771061, 0.770083, 0.769103, 0.768122, 0.767139, 0.766154, + 0.765167, 0.764179, 0.763188, 0.762196, 0.761202, 0.760207, 0.759209, 0.758210, + 0.757209, 0.756206, 0.755201, 0.754195, 0.753187, 0.752177, 0.751165, 0.750152, + 0.749136, 0.748119, 0.747101, 0.746080, 0.745058, 0.744034, 0.743008, 0.741980, + 0.740951, 0.739920, 0.738887, 0.737853, 0.736817, 0.735779, 0.734739, 0.733697, + 0.732654, 0.731609, 0.730563, 0.729514, 0.728464, 0.727413, 0.726359, 0.725304, + 0.724247, 0.723188, 0.722128, 0.721066, 0.720003, 0.718937, 0.717870, 0.716801, + 0.715731, 0.714659, 0.713585, 0.712509, 0.711432, 0.710353, 0.709273, 0.708191, + 0.707107, 0.706021, 0.704934, 0.703845, 0.702755, 0.701663, 0.700569, 0.699473, + 0.698376, 0.697277, 0.696177, 0.695075, 0.693971, 0.692866, 0.691759, 0.690651, + 0.689541, 0.688429, 0.687315, 0.686200, 0.685084, 0.683965, 0.682846, 0.681724, + 0.680601, 0.679476, 0.678350, 0.677222, 0.676093, 0.674962, 0.673829, 0.672695, + 0.671559, 0.670422, 0.669283, 0.668142, 0.667000, 0.665856, 0.664711, 0.663564, + 0.662416, 0.661266, 0.660114, 0.658961, 0.657807, 0.656651, 0.655493, 0.654334, + 0.653173, 0.652011, 0.650847, 0.649681, 0.648514, 0.647346, 0.646176, 0.645005, + 0.643832, 0.642657, 0.641481, 0.640303, 0.639124, 0.637944, 0.636762, 0.635578, + 0.634393, 0.633207, 0.632019, 0.630829, 0.629638, 0.628446, 0.627252, 0.626056, + 0.624860, 0.623661, 0.622461, 0.621260, 0.620057, 0.618853, 0.617647, 0.616440, + 0.615232, 0.614022, 0.612810, 0.611597, 0.610383, 0.609167, 0.607950, 0.606731, + 0.605511, 0.604290, 0.603067, 0.601842, 0.600616, 0.599389, 0.598161, 0.596931, + 0.595699, 0.594467, 0.593232, 0.591997, 0.590760, 0.589521, 0.588282, 0.587040, + 0.585798, 0.584554, 0.583309, 0.582062, 0.580814, 0.579565, 0.578314, 0.577062, + 0.575808, 0.574553, 0.573297, 0.572040, 0.570781, 0.569521, 0.568259, 0.566996, + 0.565732, 0.564466, 0.563199, 0.561931, 0.560662, 0.559391, 0.558119, 0.556845, + 0.555570, 0.554294, 0.553017, 0.551738, 0.550458, 0.549177, 0.547894, 0.546610, + 0.545325, 0.544039, 0.542751, 0.541462, 0.540171, 0.538880, 0.537587, 0.536293, + 0.534998, 0.533701, 0.532403, 0.531104, 0.529804, 0.528502, 0.527199, 0.525895, + 0.524590, 0.523283, 0.521975, 0.520666, 0.519356, 0.518045, 0.516732, 0.515418, + 0.514103, 0.512786, 0.511469, 0.510150, 0.508830, 0.507509, 0.506187, 0.504863, + 0.503538, 0.502212, 0.500885, 0.499557, 0.498228, 0.496897, 0.495565, 0.494232, + 0.492898, 0.491563, 0.490226, 0.488889, 0.487550, 0.486210, 0.484869, 0.483527, + 0.482184, 0.480839, 0.479494, 0.478147, 0.476799, 0.475450, 0.474100, 0.472749, + 0.471397, 0.470043, 0.468689, 0.467333, 0.465977, 0.464619, 0.463260, 0.461900, + 0.460539, 0.459177, 0.457813, 0.456449, 0.455084, 0.453717, 0.452350, 0.450981, + 0.449611, 0.448241, 0.446869, 0.445496, 0.444122, 0.442747, 0.441371, 0.439994, + 0.438616, 0.437237, 0.435857, 0.434476, 0.433094, 0.431711, 0.430326, 0.428941, + 0.427555, 0.426168, 0.424780, 0.423390, 0.422000, 0.420609, 0.419217, 0.417824, + 0.416430, 0.415034, 0.413638, 0.412241, 0.410843, 0.409444, 0.408044, 0.406643, + 0.405241, 0.403838, 0.402435, 0.401030, 0.399624, 0.398218, 0.396810, 0.395401, + 0.393992, 0.392582, 0.391170, 0.389758, 0.388345, 0.386931, 0.385516, 0.384100, + 0.382683, 0.381266, 0.379847, 0.378428, 0.377007, 0.375586, 0.374164, 0.372741, + 0.371317, 0.369892, 0.368467, 0.367040, 0.365613, 0.364185, 0.362756, 0.361326, + 0.359895, 0.358463, 0.357031, 0.355598, 0.354164, 0.352729, 0.351293, 0.349856, + 0.348419, 0.346980, 0.345541, 0.344101, 0.342661, 0.341219, 0.339777, 0.338334, + 0.336890, 0.335445, 0.334000, 0.332553, 0.331106, 0.329658, 0.328210, 0.326760, + 0.325310, 0.323859, 0.322408, 0.320955, 0.319502, 0.318048, 0.316593, 0.315138, + 0.313682, 0.312225, 0.310767, 0.309309, 0.307850, 0.306390, 0.304929, 0.303468, + 0.302006, 0.300543, 0.299080, 0.297616, 0.296151, 0.294685, 0.293219, 0.291752, + 0.290285, 0.288816, 0.287347, 0.285878, 0.284408, 0.282937, 0.281465, 0.279993, + 0.278520, 0.277046, 0.275572, 0.274097, 0.272621, 0.271145, 0.269668, 0.268191, + 0.266713, 0.265234, 0.263755, 0.262275, 0.260794, 0.259313, 0.257831, 0.256349, + 0.254866, 0.253382, 0.251898, 0.250413, 0.248928, 0.247442, 0.245955, 0.244468, + 0.242980, 0.241492, 0.240003, 0.238514, 0.237024, 0.235533, 0.234042, 0.232550, + 0.231058, 0.229565, 0.228072, 0.226578, 0.225084, 0.223589, 0.222094, 0.220598, + 0.219101, 0.217604, 0.216107, 0.214609, 0.213110, 0.211611, 0.210112, 0.208612, + 0.207111, 0.205610, 0.204109, 0.202607, 0.201105, 0.199602, 0.198098, 0.196595, + 0.195090, 0.193586, 0.192080, 0.190575, 0.189069, 0.187562, 0.186055, 0.184548, + 0.183040, 0.181532, 0.180023, 0.178514, 0.177004, 0.175494, 0.173984, 0.172473, + 0.170962, 0.169450, 0.167938, 0.166426, 0.164913, 0.163400, 0.161886, 0.160372, + 0.158858, 0.157343, 0.155828, 0.154313, 0.152797, 0.151281, 0.149765, 0.148248, + 0.146730, 0.145213, 0.143695, 0.142177, 0.140658, 0.139139, 0.137620, 0.136101, + 0.134581, 0.133061, 0.131540, 0.130019, 0.128498, 0.126977, 0.125455, 0.123933, + 0.122411, 0.120888, 0.119365, 0.117842, 0.116319, 0.114795, 0.113271, 0.111747, + 0.110222, 0.108697, 0.107172, 0.105647, 0.104122, 0.102596, 0.101070, 0.099544, + 0.098017, 0.096490, 0.094963, 0.093436, 0.091909, 0.090381, 0.088854, 0.087326, + 0.085797, 0.084269, 0.082740, 0.081211, 0.079682, 0.078153, 0.076624, 0.075094, + 0.073565, 0.072035, 0.070505, 0.068974, 0.067444, 0.065913, 0.064383, 0.062852, + 0.061321, 0.059790, 0.058258, 0.056727, 0.055195, 0.053664, 0.052132, 0.050600, + 0.049068, 0.047535, 0.046003, 0.044471, 0.042938, 0.041406, 0.039873, 0.038340, + 0.036807, 0.035274, 0.033741, 0.032208, 0.030675, 0.029142, 0.027608, 0.026075, + 0.024541, 0.023008, 0.021474, 0.019940, 0.018407, 0.016873, 0.015339, 0.013805, + 0.012272, 0.010738, 0.009204, 0.007670, 0.006136, 0.004602, 0.003068, 0.001534, + 0.000000, 0.001534, 0.003068, 0.004602, 0.006136, 0.007670, 0.009204, 0.010738, + 0.012272, 0.013805, 0.015339, 0.016873, 0.018407, 0.019940, 0.021474, 0.023008, + 0.024541, 0.026075, 0.027608, 0.029142, 0.030675, 0.032208, 0.033741, 0.035274, + 0.036807, 0.038340, 0.039873, 0.041406, 0.042938, 0.044471, 0.046003, 0.047535, + 0.049068, 0.050600, 0.052132, 0.053664, 0.055195, 0.056727, 0.058258, 0.059790, + 0.061321, 0.062852, 0.064383, 0.065913, 0.067444, 0.068974, 0.070505, 0.072035, + 0.073565, 0.075094, 0.076624, 0.078153, 0.079682, 0.081211, 0.082740, 0.084269, + 0.085797, 0.087326, 0.088854, 0.090381, 0.091909, 0.093436, 0.094963, 0.096490, + 0.098017, 0.099544, 0.101070, 0.102596, 0.104122, 0.105647, 0.107172, 0.108697, + 0.110222, 0.111747, 0.113271, 0.114795, 0.116319, 0.117842, 0.119365, 0.120888, + 0.122411, 0.123933, 0.125455, 0.126977, 0.128498, 0.130019, 0.131540, 0.133061, + 0.134581, 0.136101, 0.137620, 0.139139, 0.140658, 0.142177, 0.143695, 0.145213, + 0.146730, 0.148248, 0.149765, 0.151281, 0.152797, 0.154313, 0.155828, 0.157343, + 0.158858, 0.160372, 0.161886, 0.163400, 0.164913, 0.166426, 0.167938, 0.169450, + 0.170962, 0.172473, 0.173984, 0.175494, 0.177004, 0.178514, 0.180023, 0.181532, + 0.183040, 0.184548, 0.186055, 0.187562, 0.189069, 0.190575, 0.192080, 0.193586, + 0.195090, 0.196595, 0.198098, 0.199602, 0.201105, 0.202607, 0.204109, 0.205610, + 0.207111, 0.208612, 0.210112, 0.211611, 0.213110, 0.214609, 0.216107, 0.217604, + 0.219101, 0.220598, 0.222094, 0.223589, 0.225084, 0.226578, 0.228072, 0.229565, + 0.231058, 0.232550, 0.234042, 0.235533, 0.237024, 0.238514, 0.240003, 0.241492, + 0.242980, 0.244468, 0.245955, 0.247442, 0.248928, 0.250413, 0.251898, 0.253382, + 0.254866, 0.256349, 0.257831, 0.259313, 0.260794, 0.262275, 0.263755, 0.265234, + 0.266713, 0.268191, 0.269668, 0.271145, 0.272621, 0.274097, 0.275572, 0.277046, + 0.278520, 0.279993, 0.281465, 0.282937, 0.284408, 0.285878, 0.287347, 0.288816, + 0.290285, 0.291752, 0.293219, 0.294685, 0.296151, 0.297616, 0.299080, 0.300543, + 0.302006, 0.303468, 0.304929, 0.306390, 0.307850, 0.309309, 0.310767, 0.312225, + 0.313682, 0.315138, 0.316593, 0.318048, 0.319502, 0.320955, 0.322408, 0.323859, + 0.325310, 0.326760, 0.328210, 0.329658, 0.331106, 0.332553, 0.334000, 0.335445, + 0.336890, 0.338334, 0.339777, 0.341219, 0.342661, 0.344101, 0.345541, 0.346980, + 0.348419, 0.349856, 0.351293, 0.352729, 0.354164, 0.355598, 0.357031, 0.358463, + 0.359895, 0.361326, 0.362756, 0.364185, 0.365613, 0.367040, 0.368467, 0.369892, + 0.371317, 0.372741, 0.374164, 0.375586, 0.377007, 0.378428, 0.379847, 0.381266, + 0.382683, 0.384100, 0.385516, 0.386931, 0.388345, 0.389758, 0.391170, 0.392582, + 0.393992, 0.395401, 0.396810, 0.398218, 0.399624, 0.401030, 0.402435, 0.403838, + 0.405241, 0.406643, 0.408044, 0.409444, 0.410843, 0.412241, 0.413638, 0.415034, + 0.416430, 0.417824, 0.419217, 0.420609, 0.422000, 0.423390, 0.424780, 0.426168, + 0.427555, 0.428941, 0.430326, 0.431711, 0.433094, 0.434476, 0.435857, 0.437237, + 0.438616, 0.439994, 0.441371, 0.442747, 0.444122, 0.445496, 0.446869, 0.448241, + 0.449611, 0.450981, 0.452350, 0.453717, 0.455084, 0.456449, 0.457813, 0.459177, + 0.460539, 0.461900, 0.463260, 0.464619, 0.465977, 0.467333, 0.468689, 0.470043, + 0.471397, 0.472749, 0.474100, 0.475450, 0.476799, 0.478147, 0.479494, 0.480839, + 0.482184, 0.483527, 0.484869, 0.486210, 0.487550, 0.488889, 0.490226, 0.491563, + 0.492898, 0.494232, 0.495565, 0.496897, 0.498228, 0.499557, 0.500885, 0.502212, + 0.503538, 0.504863, 0.506187, 0.507509, 0.508830, 0.510150, 0.511469, 0.512786, + 0.514103, 0.515418, 0.516732, 0.518045, 0.519356, 0.520666, 0.521975, 0.523283, + 0.524590, 0.525895, 0.527199, 0.528502, 0.529804, 0.531104, 0.532403, 0.533701, + 0.534998, 0.536293, 0.537587, 0.538880, 0.540171, 0.541462, 0.542751, 0.544039, + 0.545325, 0.546610, 0.547894, 0.549177, 0.550458, 0.551738, 0.553017, 0.554294, + 0.555570, 0.556845, 0.558119, 0.559391, 0.560662, 0.561931, 0.563199, 0.564466, + 0.565732, 0.566996, 0.568259, 0.569521, 0.570781, 0.572040, 0.573297, 0.574553, + 0.575808, 0.577062, 0.578314, 0.579565, 0.580814, 0.582062, 0.583309, 0.584554, + 0.585798, 0.587040, 0.588282, 0.589521, 0.590760, 0.591997, 0.593232, 0.594467, + 0.595699, 0.596931, 0.598161, 0.599389, 0.600616, 0.601842, 0.603067, 0.604290, + 0.605511, 0.606731, 0.607950, 0.609167, 0.610383, 0.611597, 0.612810, 0.614022, + 0.615232, 0.616440, 0.617647, 0.618853, 0.620057, 0.621260, 0.622461, 0.623661, + 0.624860, 0.626056, 0.627252, 0.628446, 0.629638, 0.630829, 0.632019, 0.633207, + 0.634393, 0.635578, 0.636762, 0.637944, 0.639124, 0.640303, 0.641481, 0.642657, + 0.643832, 0.645005, 0.646176, 0.647346, 0.648514, 0.649681, 0.650847, 0.652011, + 0.653173, 0.654334, 0.655493, 0.656651, 0.657807, 0.658961, 0.660114, 0.661266, + 0.662416, 0.663564, 0.664711, 0.665856, 0.667000, 0.668142, 0.669283, 0.670422, + 0.671559, 0.672695, 0.673829, 0.674962, 0.676093, 0.677222, 0.678350, 0.679476, + 0.680601, 0.681724, 0.682846, 0.683965, 0.685084, 0.686200, 0.687315, 0.688429, + 0.689541, 0.690651, 0.691759, 0.692866, 0.693971, 0.695075, 0.696177, 0.697277, + 0.698376, 0.699473, 0.700569, 0.701663, 0.702755, 0.703845, 0.704934, 0.706021, + 0.707107, 0.708191, 0.709273, 0.710353, 0.711432, 0.712509, 0.713585, 0.714659, + 0.715731, 0.716801, 0.717870, 0.718937, 0.720003, 0.721066, 0.722128, 0.723188, + 0.724247, 0.725304, 0.726359, 0.727413, 0.728464, 0.729514, 0.730563, 0.731609, + 0.732654, 0.733697, 0.734739, 0.735779, 0.736817, 0.737853, 0.738887, 0.739920, + 0.740951, 0.741980, 0.743008, 0.744034, 0.745058, 0.746080, 0.747101, 0.748119, + 0.749136, 0.750152, 0.751165, 0.752177, 0.753187, 0.754195, 0.755201, 0.756206, + 0.757209, 0.758210, 0.759209, 0.760207, 0.761202, 0.762196, 0.763188, 0.764179, + 0.765167, 0.766154, 0.767139, 0.768122, 0.769103, 0.770083, 0.771061, 0.772036, + 0.773010, 0.773983, 0.774953, 0.775922, 0.776888, 0.777853, 0.778817, 0.779778, + 0.780737, 0.781695, 0.782651, 0.783605, 0.784557, 0.785507, 0.786455, 0.787402, + 0.788346, 0.789289, 0.790230, 0.791169, 0.792107, 0.793042, 0.793975, 0.794907, + 0.795837, 0.796765, 0.797691, 0.798615, 0.799537, 0.800458, 0.801376, 0.802293, + 0.803208, 0.804120, 0.805031, 0.805940, 0.806848, 0.807753, 0.808656, 0.809558, + 0.810457, 0.811355, 0.812251, 0.813144, 0.814036, 0.814926, 0.815814, 0.816701, + 0.817585, 0.818467, 0.819348, 0.820226, 0.821102, 0.821977, 0.822850, 0.823721, + 0.824589, 0.825456, 0.826321, 0.827184, 0.828045, 0.828904, 0.829761, 0.830616, + 0.831470, 0.832321, 0.833170, 0.834018, 0.834863, 0.835706, 0.836548, 0.837387, + 0.838225, 0.839060, 0.839894, 0.840725, 0.841555, 0.842383, 0.843208, 0.844032, + 0.844854, 0.845673, 0.846491, 0.847307, 0.848120, 0.848932, 0.849742, 0.850549, + 0.851355, 0.852159, 0.852961, 0.853760, 0.854558, 0.855354, 0.856147, 0.856939, + 0.857729, 0.858516, 0.859302, 0.860085, 0.860867, 0.861646, 0.862424, 0.863199, + 0.863973, 0.864744, 0.865514, 0.866281, 0.867046, 0.867809, 0.868571, 0.869330, + 0.870087, 0.870842, 0.871595, 0.872346, 0.873095, 0.873842, 0.874587, 0.875329, + 0.876070, 0.876809, 0.877545, 0.878280, 0.879012, 0.879743, 0.880471, 0.881197, + 0.881921, 0.882643, 0.883363, 0.884081, 0.884797, 0.885511, 0.886223, 0.886932, + 0.887640, 0.888345, 0.889048, 0.889750, 0.890449, 0.891146, 0.891841, 0.892534, + 0.893224, 0.893913, 0.894599, 0.895284, 0.895966, 0.896646, 0.897325, 0.898001, + 0.898674, 0.899346, 0.900016, 0.900683, 0.901349, 0.902012, 0.902673, 0.903332, + 0.903989, 0.904644, 0.905297, 0.905947, 0.906596, 0.907242, 0.907886, 0.908528, + 0.909168, 0.909806, 0.910441, 0.911075, 0.911706, 0.912335, 0.912962, 0.913587, + 0.914210, 0.914830, 0.915449, 0.916065, 0.916679, 0.917291, 0.917901, 0.918508, + 0.919114, 0.919717, 0.920318, 0.920917, 0.921514, 0.922109, 0.922701, 0.923291, + 0.923880, 0.924465, 0.925049, 0.925631, 0.926210, 0.926787, 0.927363, 0.927935, + 0.928506, 0.929075, 0.929641, 0.930205, 0.930767, 0.931327, 0.931884, 0.932440, + 0.932993, 0.933544, 0.934093, 0.934639, 0.935184, 0.935726, 0.936266, 0.936803, + 0.937339, 0.937872, 0.938404, 0.938932, 0.939459, 0.939984, 0.940506, 0.941026, + 0.941544, 0.942060, 0.942573, 0.943084, 0.943593, 0.944100, 0.944605, 0.945107, + 0.945607, 0.946105, 0.946601, 0.947094, 0.947586, 0.948075, 0.948561, 0.949046, + 0.949528, 0.950008, 0.950486, 0.950962, 0.951435, 0.951906, 0.952375, 0.952842, + 0.953306, 0.953768, 0.954228, 0.954686, 0.955141, 0.955594, 0.956045, 0.956494, + 0.956940, 0.957385, 0.957826, 0.958266, 0.958703, 0.959139, 0.959572, 0.960002, + 0.960431, 0.960857, 0.961280, 0.961702, 0.962121, 0.962538, 0.962953, 0.963366, + 0.963776, 0.964184, 0.964590, 0.964993, 0.965394, 0.965793, 0.966190, 0.966584, + 0.966976, 0.967366, 0.967754, 0.968139, 0.968522, 0.968903, 0.969281, 0.969657, + 0.970031, 0.970403, 0.970772, 0.971139, 0.971504, 0.971866, 0.972227, 0.972584, + 0.972940, 0.973293, 0.973644, 0.973993, 0.974339, 0.974684, 0.975025, 0.975365, + 0.975702, 0.976037, 0.976370, 0.976700, 0.977028, 0.977354, 0.977677, 0.977998, + 0.978317, 0.978634, 0.978948, 0.979260, 0.979570, 0.979877, 0.980182, 0.980485, + 0.980785, 0.981083, 0.981379, 0.981673, 0.981964, 0.982253, 0.982539, 0.982824, + 0.983105, 0.983385, 0.983662, 0.983937, 0.984210, 0.984480, 0.984748, 0.985014, + 0.985278, 0.985539, 0.985798, 0.986054, 0.986308, 0.986560, 0.986809, 0.987057, + 0.987301, 0.987544, 0.987784, 0.988022, 0.988258, 0.988491, 0.988722, 0.988950, + 0.989177, 0.989400, 0.989622, 0.989841, 0.990058, 0.990273, 0.990485, 0.990695, + 0.990903, 0.991108, 0.991311, 0.991511, 0.991710, 0.991906, 0.992099, 0.992291, + 0.992480, 0.992666, 0.992850, 0.993032, 0.993212, 0.993389, 0.993564, 0.993737, + 0.993907, 0.994075, 0.994240, 0.994404, 0.994565, 0.994723, 0.994879, 0.995033, + 0.995185, 0.995334, 0.995481, 0.995625, 0.995767, 0.995907, 0.996045, 0.996180, + 0.996313, 0.996443, 0.996571, 0.996697, 0.996820, 0.996941, 0.997060, 0.997176, + 0.997290, 0.997402, 0.997511, 0.997618, 0.997723, 0.997825, 0.997925, 0.998023, + 0.998118, 0.998211, 0.998302, 0.998390, 0.998476, 0.998559, 0.998640, 0.998719, + 0.998795, 0.998870, 0.998941, 0.999011, 0.999078, 0.999142, 0.999205, 0.999265, + 0.999322, 0.999378, 0.999431, 0.999481, 0.999529, 0.999575, 0.999619, 0.999660, + 0.999699, 0.999735, 0.999769, 0.999801, 0.999831, 0.999858, 0.999882, 0.999905, + 0.999925, 0.999942, 0.999958, 0.999971, 0.999981, 0.999989, 0.999995, 0.999999 +}; + +static const float cosTable8192[4096] = { + 1.000000, 1.000000, 0.999999, 0.999997, 0.999995, 0.999993, 0.999989, 0.999986, + 0.999981, 0.999976, 0.999971, 0.999964, 0.999958, 0.999950, 0.999942, 0.999934, + 0.999925, 0.999915, 0.999905, 0.999894, 0.999882, 0.999870, 0.999858, 0.999844, + 0.999831, 0.999816, 0.999801, 0.999786, 0.999769, 0.999753, 0.999735, 0.999717, + 0.999699, 0.999680, 0.999660, 0.999640, 0.999619, 0.999597, 0.999575, 0.999553, + 0.999529, 0.999506, 0.999481, 0.999456, 0.999431, 0.999404, 0.999378, 0.999350, + 0.999322, 0.999294, 0.999265, 0.999235, 0.999205, 0.999174, 0.999142, 0.999110, + 0.999078, 0.999044, 0.999011, 0.998976, 0.998941, 0.998906, 0.998870, 0.998833, + 0.998795, 0.998758, 0.998719, 0.998680, 0.998640, 0.998600, 0.998559, 0.998518, + 0.998476, 0.998433, 0.998390, 0.998346, 0.998302, 0.998257, 0.998211, 0.998165, + 0.998118, 0.998071, 0.998023, 0.997974, 0.997925, 0.997876, 0.997825, 0.997774, + 0.997723, 0.997671, 0.997618, 0.997565, 0.997511, 0.997457, 0.997402, 0.997347, + 0.997290, 0.997234, 0.997176, 0.997119, 0.997060, 0.997001, 0.996941, 0.996881, + 0.996820, 0.996759, 0.996697, 0.996634, 0.996571, 0.996507, 0.996443, 0.996378, + 0.996313, 0.996247, 0.996180, 0.996113, 0.996045, 0.995976, 0.995907, 0.995838, + 0.995767, 0.995697, 0.995625, 0.995553, 0.995481, 0.995408, 0.995334, 0.995260, + 0.995185, 0.995109, 0.995033, 0.994957, 0.994879, 0.994802, 0.994723, 0.994644, + 0.994565, 0.994484, 0.994404, 0.994322, 0.994240, 0.994158, 0.994075, 0.993991, + 0.993907, 0.993822, 0.993737, 0.993651, 0.993564, 0.993477, 0.993389, 0.993301, + 0.993212, 0.993122, 0.993032, 0.992942, 0.992850, 0.992759, 0.992666, 0.992573, + 0.992480, 0.992385, 0.992291, 0.992195, 0.992099, 0.992003, 0.991906, 0.991808, + 0.991710, 0.991611, 0.991511, 0.991411, 0.991311, 0.991210, 0.991108, 0.991006, + 0.990903, 0.990799, 0.990695, 0.990590, 0.990485, 0.990379, 0.990273, 0.990166, + 0.990058, 0.989950, 0.989841, 0.989732, 0.989622, 0.989511, 0.989400, 0.989289, + 0.989177, 0.989064, 0.988950, 0.988836, 0.988722, 0.988607, 0.988491, 0.988374, + 0.988258, 0.988140, 0.988022, 0.987903, 0.987784, 0.987664, 0.987544, 0.987423, + 0.987301, 0.987179, 0.987057, 0.986933, 0.986809, 0.986685, 0.986560, 0.986434, + 0.986308, 0.986181, 0.986054, 0.985926, 0.985798, 0.985668, 0.985539, 0.985408, + 0.985278, 0.985146, 0.985014, 0.984882, 0.984748, 0.984615, 0.984480, 0.984346, + 0.984210, 0.984074, 0.983937, 0.983800, 0.983662, 0.983524, 0.983385, 0.983246, + 0.983105, 0.982965, 0.982824, 0.982682, 0.982539, 0.982396, 0.982253, 0.982109, + 0.981964, 0.981819, 0.981673, 0.981526, 0.981379, 0.981232, 0.981083, 0.980935, + 0.980785, 0.980635, 0.980485, 0.980334, 0.980182, 0.980030, 0.979877, 0.979724, + 0.979570, 0.979415, 0.979260, 0.979104, 0.978948, 0.978791, 0.978634, 0.978476, + 0.978317, 0.978158, 0.977998, 0.977838, 0.977677, 0.977516, 0.977354, 0.977191, + 0.977028, 0.976864, 0.976700, 0.976535, 0.976370, 0.976204, 0.976037, 0.975870, + 0.975702, 0.975534, 0.975365, 0.975195, 0.975025, 0.974855, 0.974684, 0.974512, + 0.974339, 0.974166, 0.973993, 0.973819, 0.973644, 0.973469, 0.973293, 0.973117, + 0.972940, 0.972762, 0.972584, 0.972406, 0.972227, 0.972047, 0.971866, 0.971685, + 0.971504, 0.971322, 0.971139, 0.970956, 0.970772, 0.970588, 0.970403, 0.970217, + 0.970031, 0.969845, 0.969657, 0.969470, 0.969281, 0.969092, 0.968903, 0.968713, + 0.968522, 0.968331, 0.968139, 0.967947, 0.967754, 0.967560, 0.967366, 0.967172, + 0.966976, 0.966781, 0.966584, 0.966387, 0.966190, 0.965992, 0.965793, 0.965594, + 0.965394, 0.965194, 0.964993, 0.964792, 0.964590, 0.964387, 0.964184, 0.963980, + 0.963776, 0.963571, 0.963366, 0.963160, 0.962953, 0.962746, 0.962538, 0.962330, + 0.962121, 0.961912, 0.961702, 0.961492, 0.961280, 0.961069, 0.960857, 0.960644, + 0.960431, 0.960217, 0.960002, 0.959787, 0.959572, 0.959355, 0.959139, 0.958921, + 0.958703, 0.958485, 0.958266, 0.958046, 0.957826, 0.957606, 0.957385, 0.957163, + 0.956940, 0.956717, 0.956494, 0.956270, 0.956045, 0.955820, 0.955594, 0.955368, + 0.955141, 0.954914, 0.954686, 0.954457, 0.954228, 0.953998, 0.953768, 0.953537, + 0.953306, 0.953074, 0.952842, 0.952609, 0.952375, 0.952141, 0.951906, 0.951671, + 0.951435, 0.951199, 0.950962, 0.950724, 0.950486, 0.950247, 0.950008, 0.949768, + 0.949528, 0.949287, 0.949046, 0.948804, 0.948561, 0.948318, 0.948075, 0.947830, + 0.947586, 0.947340, 0.947094, 0.946848, 0.946601, 0.946353, 0.946105, 0.945857, + 0.945607, 0.945358, 0.945107, 0.944856, 0.944605, 0.944353, 0.944100, 0.943847, + 0.943593, 0.943339, 0.943084, 0.942829, 0.942573, 0.942317, 0.942060, 0.941802, + 0.941544, 0.941285, 0.941026, 0.940766, 0.940506, 0.940245, 0.939984, 0.939722, + 0.939459, 0.939196, 0.938932, 0.938668, 0.938404, 0.938138, 0.937872, 0.937606, + 0.937339, 0.937072, 0.936803, 0.936535, 0.936266, 0.935996, 0.935726, 0.935455, + 0.935184, 0.934912, 0.934639, 0.934366, 0.934093, 0.933818, 0.933544, 0.933269, + 0.932993, 0.932716, 0.932440, 0.932162, 0.931884, 0.931606, 0.931327, 0.931047, + 0.930767, 0.930486, 0.930205, 0.929923, 0.929641, 0.929358, 0.929075, 0.928791, + 0.928506, 0.928221, 0.927935, 0.927649, 0.927363, 0.927075, 0.926787, 0.926499, + 0.926210, 0.925921, 0.925631, 0.925340, 0.925049, 0.924758, 0.924465, 0.924173, + 0.923880, 0.923586, 0.923291, 0.922997, 0.922701, 0.922405, 0.922109, 0.921812, + 0.921514, 0.921216, 0.920917, 0.920618, 0.920318, 0.920018, 0.919717, 0.919416, + 0.919114, 0.918811, 0.918508, 0.918205, 0.917901, 0.917596, 0.917291, 0.916985, + 0.916679, 0.916372, 0.916065, 0.915757, 0.915449, 0.915140, 0.914830, 0.914520, + 0.914210, 0.913899, 0.913587, 0.913275, 0.912962, 0.912649, 0.912335, 0.912021, + 0.911706, 0.911391, 0.911075, 0.910758, 0.910441, 0.910124, 0.909806, 0.909487, + 0.909168, 0.908848, 0.908528, 0.908207, 0.907886, 0.907564, 0.907242, 0.906919, + 0.906596, 0.906272, 0.905947, 0.905622, 0.905297, 0.904971, 0.904644, 0.904317, + 0.903989, 0.903661, 0.903332, 0.903003, 0.902673, 0.902343, 0.902012, 0.901681, + 0.901349, 0.901016, 0.900683, 0.900350, 0.900016, 0.899681, 0.899346, 0.899011, + 0.898674, 0.898338, 0.898001, 0.897663, 0.897325, 0.896986, 0.896646, 0.896307, + 0.895966, 0.895625, 0.895284, 0.894942, 0.894599, 0.894256, 0.893913, 0.893569, + 0.893224, 0.892879, 0.892534, 0.892187, 0.891841, 0.891493, 0.891146, 0.890797, + 0.890449, 0.890099, 0.889750, 0.889399, 0.889048, 0.888697, 0.888345, 0.887993, + 0.887640, 0.887286, 0.886932, 0.886578, 0.886223, 0.885867, 0.885511, 0.885154, + 0.884797, 0.884439, 0.884081, 0.883723, 0.883363, 0.883004, 0.882643, 0.882283, + 0.881921, 0.881559, 0.881197, 0.880834, 0.880471, 0.880107, 0.879743, 0.879378, + 0.879012, 0.878646, 0.878280, 0.877913, 0.877545, 0.877177, 0.876809, 0.876440, + 0.876070, 0.875700, 0.875329, 0.874958, 0.874587, 0.874215, 0.873842, 0.873469, + 0.873095, 0.872721, 0.872346, 0.871971, 0.871595, 0.871219, 0.870842, 0.870465, + 0.870087, 0.869709, 0.869330, 0.868951, 0.868571, 0.868190, 0.867809, 0.867428, + 0.867046, 0.866664, 0.866281, 0.865898, 0.865514, 0.865129, 0.864744, 0.864359, + 0.863973, 0.863586, 0.863199, 0.862812, 0.862424, 0.862035, 0.861646, 0.861257, + 0.860867, 0.860476, 0.860085, 0.859694, 0.859302, 0.858909, 0.858516, 0.858123, + 0.857729, 0.857334, 0.856939, 0.856543, 0.856147, 0.855751, 0.855354, 0.854956, + 0.854558, 0.854159, 0.853760, 0.853361, 0.852961, 0.852560, 0.852159, 0.851757, + 0.851355, 0.850953, 0.850549, 0.850146, 0.849742, 0.849337, 0.848932, 0.848526, + 0.848120, 0.847714, 0.847307, 0.846899, 0.846491, 0.846082, 0.845673, 0.845264, + 0.844854, 0.844443, 0.844032, 0.843620, 0.843208, 0.842796, 0.842383, 0.841969, + 0.841555, 0.841140, 0.840725, 0.840310, 0.839894, 0.839477, 0.839060, 0.838643, + 0.838225, 0.837806, 0.837387, 0.836968, 0.836548, 0.836127, 0.835706, 0.835285, + 0.834863, 0.834440, 0.834018, 0.833594, 0.833170, 0.832746, 0.832321, 0.831895, + 0.831470, 0.831043, 0.830616, 0.830189, 0.829761, 0.829333, 0.828904, 0.828475, + 0.828045, 0.827615, 0.827184, 0.826753, 0.826321, 0.825889, 0.825456, 0.825023, + 0.824589, 0.824155, 0.823721, 0.823285, 0.822850, 0.822414, 0.821977, 0.821540, + 0.821102, 0.820664, 0.820226, 0.819787, 0.819348, 0.818908, 0.818467, 0.818026, + 0.817585, 0.817143, 0.816701, 0.816258, 0.815814, 0.815371, 0.814926, 0.814482, + 0.814036, 0.813591, 0.813144, 0.812698, 0.812251, 0.811803, 0.811355, 0.810906, + 0.810457, 0.810008, 0.809558, 0.809107, 0.808656, 0.808205, 0.807753, 0.807300, + 0.806848, 0.806394, 0.805940, 0.805486, 0.805031, 0.804576, 0.804120, 0.803664, + 0.803208, 0.802750, 0.802293, 0.801835, 0.801376, 0.800917, 0.800458, 0.799998, + 0.799537, 0.799076, 0.798615, 0.798153, 0.797691, 0.797228, 0.796765, 0.796301, + 0.795837, 0.795372, 0.794907, 0.794442, 0.793975, 0.793509, 0.793042, 0.792575, + 0.792107, 0.791638, 0.791169, 0.790700, 0.790230, 0.789760, 0.789289, 0.788818, + 0.788346, 0.787874, 0.787402, 0.786929, 0.786455, 0.785981, 0.785507, 0.785032, + 0.784557, 0.784081, 0.783605, 0.783128, 0.782651, 0.782173, 0.781695, 0.781216, + 0.780737, 0.780258, 0.779778, 0.779297, 0.778817, 0.778335, 0.777853, 0.777371, + 0.776888, 0.776405, 0.775922, 0.775438, 0.774953, 0.774468, 0.773983, 0.773497, + 0.773010, 0.772524, 0.772036, 0.771549, 0.771061, 0.770572, 0.770083, 0.769593, + 0.769103, 0.768613, 0.768122, 0.767631, 0.767139, 0.766647, 0.766154, 0.765661, + 0.765167, 0.764673, 0.764179, 0.763684, 0.763188, 0.762693, 0.762196, 0.761700, + 0.761202, 0.760705, 0.760207, 0.759708, 0.759209, 0.758710, 0.758210, 0.757710, + 0.757209, 0.756708, 0.756206, 0.755704, 0.755201, 0.754698, 0.754195, 0.753691, + 0.753187, 0.752682, 0.752177, 0.751671, 0.751165, 0.750659, 0.750152, 0.749644, + 0.749136, 0.748628, 0.748119, 0.747610, 0.747101, 0.746591, 0.746080, 0.745569, + 0.745058, 0.744546, 0.744034, 0.743521, 0.743008, 0.742494, 0.741980, 0.741466, + 0.740951, 0.740436, 0.739920, 0.739404, 0.738887, 0.738370, 0.737853, 0.737335, + 0.736817, 0.736298, 0.735779, 0.735259, 0.734739, 0.734218, 0.733697, 0.733176, + 0.732654, 0.732132, 0.731609, 0.731086, 0.730563, 0.730039, 0.729514, 0.728990, + 0.728464, 0.727939, 0.727413, 0.726886, 0.726359, 0.725832, 0.725304, 0.724776, + 0.724247, 0.723718, 0.723188, 0.722659, 0.722128, 0.721597, 0.721066, 0.720535, + 0.720003, 0.719470, 0.718937, 0.718404, 0.717870, 0.717336, 0.716801, 0.716266, + 0.715731, 0.715195, 0.714659, 0.714122, 0.713585, 0.713047, 0.712509, 0.711971, + 0.711432, 0.710893, 0.710353, 0.709813, 0.709273, 0.708732, 0.708191, 0.707649, + 0.707107, 0.706564, 0.706021, 0.705478, 0.704934, 0.704390, 0.703845, 0.703300, + 0.702755, 0.702209, 0.701663, 0.701116, 0.700569, 0.700021, 0.699473, 0.698925, + 0.698376, 0.697827, 0.697277, 0.696728, 0.696177, 0.695626, 0.695075, 0.694524, + 0.693971, 0.693419, 0.692866, 0.692313, 0.691759, 0.691205, 0.690651, 0.690096, + 0.689541, 0.688985, 0.688429, 0.687872, 0.687315, 0.686758, 0.686200, 0.685642, + 0.685084, 0.684525, 0.683965, 0.683406, 0.682846, 0.682285, 0.681724, 0.681163, + 0.680601, 0.680039, 0.679476, 0.678913, 0.678350, 0.677786, 0.677222, 0.676658, + 0.676093, 0.675527, 0.674962, 0.674396, 0.673829, 0.673262, 0.672695, 0.672127, + 0.671559, 0.670990, 0.670422, 0.669852, 0.669283, 0.668712, 0.668142, 0.667571, + 0.667000, 0.666428, 0.665856, 0.665284, 0.664711, 0.664138, 0.663564, 0.662990, + 0.662416, 0.661841, 0.661266, 0.660690, 0.660114, 0.659538, 0.658961, 0.658384, + 0.657807, 0.657229, 0.656651, 0.656072, 0.655493, 0.654913, 0.654334, 0.653753, + 0.653173, 0.652592, 0.652011, 0.651429, 0.650847, 0.650264, 0.649681, 0.649098, + 0.648514, 0.647930, 0.647346, 0.646761, 0.646176, 0.645590, 0.645005, 0.644418, + 0.643832, 0.643245, 0.642657, 0.642069, 0.641481, 0.640892, 0.640303, 0.639714, + 0.639124, 0.638534, 0.637944, 0.637353, 0.636762, 0.636170, 0.635578, 0.634986, + 0.634393, 0.633800, 0.633207, 0.632613, 0.632019, 0.631424, 0.630829, 0.630234, + 0.629638, 0.629042, 0.628446, 0.627849, 0.627252, 0.626654, 0.626056, 0.625458, + 0.624860, 0.624260, 0.623661, 0.623061, 0.622461, 0.621861, 0.621260, 0.620659, + 0.620057, 0.619455, 0.618853, 0.618250, 0.617647, 0.617044, 0.616440, 0.615836, + 0.615232, 0.614627, 0.614022, 0.613416, 0.612810, 0.612204, 0.611597, 0.610990, + 0.610383, 0.609775, 0.609167, 0.608559, 0.607950, 0.607341, 0.606731, 0.606121, + 0.605511, 0.604900, 0.604290, 0.603678, 0.603067, 0.602455, 0.601842, 0.601230, + 0.600616, 0.600003, 0.599389, 0.598775, 0.598161, 0.597546, 0.596931, 0.596315, + 0.595699, 0.595083, 0.594467, 0.593850, 0.593232, 0.592615, 0.591997, 0.591378, + 0.590760, 0.590141, 0.589521, 0.588902, 0.588282, 0.587661, 0.587040, 0.586419, + 0.585798, 0.585176, 0.584554, 0.583931, 0.583309, 0.582685, 0.582062, 0.581438, + 0.580814, 0.580189, 0.579565, 0.578939, 0.578314, 0.577688, 0.577062, 0.576435, + 0.575808, 0.575181, 0.574553, 0.573925, 0.573297, 0.572669, 0.572040, 0.571410, + 0.570781, 0.570151, 0.569521, 0.568890, 0.568259, 0.567628, 0.566996, 0.566364, + 0.565732, 0.565099, 0.564466, 0.563833, 0.563199, 0.562565, 0.561931, 0.561297, + 0.560662, 0.560026, 0.559391, 0.558755, 0.558119, 0.557482, 0.556845, 0.556208, + 0.555570, 0.554932, 0.554294, 0.553656, 0.553017, 0.552378, 0.551738, 0.551098, + 0.550458, 0.549818, 0.549177, 0.548536, 0.547894, 0.547252, 0.546610, 0.545968, + 0.545325, 0.544682, 0.544039, 0.543395, 0.542751, 0.542106, 0.541462, 0.540817, + 0.540171, 0.539526, 0.538880, 0.538234, 0.537587, 0.536940, 0.536293, 0.535645, + 0.534998, 0.534349, 0.533701, 0.533052, 0.532403, 0.531754, 0.531104, 0.530454, + 0.529804, 0.529153, 0.528502, 0.527851, 0.527199, 0.526547, 0.525895, 0.525243, + 0.524590, 0.523937, 0.523283, 0.522629, 0.521975, 0.521321, 0.520666, 0.520011, + 0.519356, 0.518700, 0.518045, 0.517388, 0.516732, 0.516075, 0.515418, 0.514760, + 0.514103, 0.513445, 0.512786, 0.512128, 0.511469, 0.510810, 0.510150, 0.509490, + 0.508830, 0.508170, 0.507509, 0.506848, 0.506187, 0.505525, 0.504863, 0.504201, + 0.503538, 0.502876, 0.502212, 0.501549, 0.500885, 0.500221, 0.499557, 0.498893, + 0.498228, 0.497562, 0.496897, 0.496231, 0.495565, 0.494899, 0.494232, 0.493565, + 0.492898, 0.492231, 0.491563, 0.490895, 0.490226, 0.489558, 0.488889, 0.488220, + 0.487550, 0.486880, 0.486210, 0.485540, 0.484869, 0.484198, 0.483527, 0.482856, + 0.482184, 0.481512, 0.480839, 0.480167, 0.479494, 0.478821, 0.478147, 0.477473, + 0.476799, 0.476125, 0.475450, 0.474775, 0.474100, 0.473425, 0.472749, 0.472073, + 0.471397, 0.470720, 0.470043, 0.469366, 0.468689, 0.468011, 0.467333, 0.466655, + 0.465977, 0.465298, 0.464619, 0.463939, 0.463260, 0.462580, 0.461900, 0.461219, + 0.460539, 0.459858, 0.459177, 0.458495, 0.457813, 0.457131, 0.456449, 0.455766, + 0.455084, 0.454400, 0.453717, 0.453033, 0.452350, 0.451665, 0.450981, 0.450296, + 0.449611, 0.448926, 0.448241, 0.447555, 0.446869, 0.446183, 0.445496, 0.444809, + 0.444122, 0.443435, 0.442747, 0.442059, 0.441371, 0.440683, 0.439994, 0.439305, + 0.438616, 0.437927, 0.437237, 0.436547, 0.435857, 0.435167, 0.434476, 0.433785, + 0.433094, 0.432402, 0.431711, 0.431019, 0.430326, 0.429634, 0.428941, 0.428248, + 0.427555, 0.426862, 0.426168, 0.425474, 0.424780, 0.424085, 0.423390, 0.422695, + 0.422000, 0.421305, 0.420609, 0.419913, 0.419217, 0.418520, 0.417824, 0.417127, + 0.416430, 0.415732, 0.415034, 0.414337, 0.413638, 0.412940, 0.412241, 0.411542, + 0.410843, 0.410144, 0.409444, 0.408744, 0.408044, 0.407344, 0.406643, 0.405942, + 0.405241, 0.404540, 0.403838, 0.403137, 0.402435, 0.401732, 0.401030, 0.400327, + 0.399624, 0.398921, 0.398218, 0.397514, 0.396810, 0.396106, 0.395401, 0.394697, + 0.393992, 0.393287, 0.392582, 0.391876, 0.391170, 0.390464, 0.389758, 0.389052, + 0.388345, 0.387638, 0.386931, 0.386224, 0.385516, 0.384808, 0.384100, 0.383392, + 0.382683, 0.381975, 0.381266, 0.380557, 0.379847, 0.379138, 0.378428, 0.377718, + 0.377007, 0.376297, 0.375586, 0.374875, 0.374164, 0.373453, 0.372741, 0.372029, + 0.371317, 0.370605, 0.369892, 0.369180, 0.368467, 0.367754, 0.367040, 0.366327, + 0.365613, 0.364899, 0.364185, 0.363470, 0.362756, 0.362041, 0.361326, 0.360611, + 0.359895, 0.359179, 0.358463, 0.357747, 0.357031, 0.356314, 0.355598, 0.354881, + 0.354164, 0.353446, 0.352729, 0.352011, 0.351293, 0.350575, 0.349856, 0.349138, + 0.348419, 0.347700, 0.346980, 0.346261, 0.345541, 0.344821, 0.344101, 0.343381, + 0.342661, 0.341940, 0.341219, 0.340498, 0.339777, 0.339055, 0.338334, 0.337612, + 0.336890, 0.336168, 0.335445, 0.334722, 0.334000, 0.333277, 0.332553, 0.331830, + 0.331106, 0.330382, 0.329658, 0.328934, 0.328210, 0.327485, 0.326760, 0.326035, + 0.325310, 0.324585, 0.323859, 0.323134, 0.322408, 0.321682, 0.320955, 0.320229, + 0.319502, 0.318775, 0.318048, 0.317321, 0.316593, 0.315866, 0.315138, 0.314410, + 0.313682, 0.312953, 0.312225, 0.311496, 0.310767, 0.310038, 0.309309, 0.308579, + 0.307850, 0.307120, 0.306390, 0.305660, 0.304929, 0.304199, 0.303468, 0.302737, + 0.302006, 0.301275, 0.300543, 0.299812, 0.299080, 0.298348, 0.297616, 0.296883, + 0.296151, 0.295418, 0.294685, 0.293952, 0.293219, 0.292486, 0.291752, 0.291019, + 0.290285, 0.289551, 0.288816, 0.288082, 0.287347, 0.286613, 0.285878, 0.285143, + 0.284408, 0.283672, 0.282937, 0.282201, 0.281465, 0.280729, 0.279993, 0.279256, + 0.278520, 0.277783, 0.277046, 0.276309, 0.275572, 0.274834, 0.274097, 0.273359, + 0.272621, 0.271883, 0.271145, 0.270407, 0.269668, 0.268930, 0.268191, 0.267452, + 0.266713, 0.265973, 0.265234, 0.264494, 0.263755, 0.263015, 0.262275, 0.261534, + 0.260794, 0.260054, 0.259313, 0.258572, 0.257831, 0.257090, 0.256349, 0.255607, + 0.254866, 0.254124, 0.253382, 0.252640, 0.251898, 0.251155, 0.250413, 0.249670, + 0.248928, 0.248185, 0.247442, 0.246698, 0.245955, 0.245212, 0.244468, 0.243724, + 0.242980, 0.242236, 0.241492, 0.240748, 0.240003, 0.239258, 0.238514, 0.237769, + 0.237024, 0.236278, 0.235533, 0.234788, 0.234042, 0.233296, 0.232550, 0.231804, + 0.231058, 0.230312, 0.229565, 0.228819, 0.228072, 0.227325, 0.226578, 0.225831, + 0.225084, 0.224337, 0.223589, 0.222841, 0.222094, 0.221346, 0.220598, 0.219850, + 0.219101, 0.218353, 0.217604, 0.216856, 0.216107, 0.215358, 0.214609, 0.213860, + 0.213110, 0.212361, 0.211611, 0.210862, 0.210112, 0.209362, 0.208612, 0.207862, + 0.207111, 0.206361, 0.205610, 0.204860, 0.204109, 0.203358, 0.202607, 0.201856, + 0.201105, 0.200353, 0.199602, 0.198850, 0.198098, 0.197347, 0.196595, 0.195843, + 0.195090, 0.194338, 0.193586, 0.192833, 0.192080, 0.191328, 0.190575, 0.189822, + 0.189069, 0.188315, 0.187562, 0.186809, 0.186055, 0.185301, 0.184548, 0.183794, + 0.183040, 0.182286, 0.181532, 0.180777, 0.180023, 0.179268, 0.178514, 0.177759, + 0.177004, 0.176249, 0.175494, 0.174739, 0.173984, 0.173229, 0.172473, 0.171718, + 0.170962, 0.170206, 0.169450, 0.168694, 0.167938, 0.167182, 0.166426, 0.165670, + 0.164913, 0.164157, 0.163400, 0.162643, 0.161886, 0.161129, 0.160372, 0.159615, + 0.158858, 0.158101, 0.157343, 0.156586, 0.155828, 0.155071, 0.154313, 0.153555, + 0.152797, 0.152039, 0.151281, 0.150523, 0.149765, 0.149006, 0.148248, 0.147489, + 0.146730, 0.145972, 0.145213, 0.144454, 0.143695, 0.142936, 0.142177, 0.141418, + 0.140658, 0.139899, 0.139139, 0.138380, 0.137620, 0.136860, 0.136101, 0.135341, + 0.134581, 0.133821, 0.133061, 0.132300, 0.131540, 0.130780, 0.130019, 0.129259, + 0.128498, 0.127737, 0.126977, 0.126216, 0.125455, 0.124694, 0.123933, 0.123172, + 0.122411, 0.121649, 0.120888, 0.120127, 0.119365, 0.118604, 0.117842, 0.117080, + 0.116319, 0.115557, 0.114795, 0.114033, 0.113271, 0.112509, 0.111747, 0.110984, + 0.110222, 0.109460, 0.108697, 0.107935, 0.107172, 0.106410, 0.105647, 0.104884, + 0.104122, 0.103359, 0.102596, 0.101833, 0.101070, 0.100307, 0.099544, 0.098780, + 0.098017, 0.097254, 0.096490, 0.095727, 0.094963, 0.094200, 0.093436, 0.092673, + 0.091909, 0.091145, 0.090381, 0.089617, 0.088854, 0.088090, 0.087326, 0.086561, + 0.085797, 0.085033, 0.084269, 0.083505, 0.082740, 0.081976, 0.081211, 0.080447, + 0.079682, 0.078918, 0.078153, 0.077389, 0.076624, 0.075859, 0.075094, 0.074329, + 0.073565, 0.072800, 0.072035, 0.071270, 0.070505, 0.069739, 0.068974, 0.068209, + 0.067444, 0.066679, 0.065913, 0.065148, 0.064383, 0.063617, 0.062852, 0.062086, + 0.061321, 0.060555, 0.059790, 0.059024, 0.058258, 0.057493, 0.056727, 0.055961, + 0.055195, 0.054429, 0.053664, 0.052898, 0.052132, 0.051366, 0.050600, 0.049834, + 0.049068, 0.048302, 0.047535, 0.046769, 0.046003, 0.045237, 0.044471, 0.043705, + 0.042938, 0.042172, 0.041406, 0.040639, 0.039873, 0.039107, 0.038340, 0.037574, + 0.036807, 0.036041, 0.035274, 0.034508, 0.033741, 0.032975, 0.032208, 0.031441, + 0.030675, 0.029908, 0.029142, 0.028375, 0.027608, 0.026841, 0.026075, 0.025308, + 0.024541, 0.023774, 0.023008, 0.022241, 0.021474, 0.020707, 0.019940, 0.019174, + 0.018407, 0.017640, 0.016873, 0.016106, 0.015339, 0.014572, 0.013805, 0.013038, + 0.012272, 0.011505, 0.010738, 0.009971, 0.009204, 0.008437, 0.007670, 0.006903, + 0.006136, 0.005369, 0.004602, 0.003835, 0.003068, 0.002301, 0.001534, 0.000767, + 0.000000, 0.000767, 0.001534, 0.002301, 0.003068, 0.003835, 0.004602, 0.005369, + 0.006136, 0.006903, 0.007670, 0.008437, 0.009204, 0.009971, 0.010738, 0.011505, + 0.012272, 0.013038, 0.013805, 0.014572, 0.015339, 0.016106, 0.016873, 0.017640, + 0.018407, 0.019174, 0.019940, 0.020707, 0.021474, 0.022241, 0.023008, 0.023774, + 0.024541, 0.025308, 0.026075, 0.026841, 0.027608, 0.028375, 0.029142, 0.029908, + 0.030675, 0.031441, 0.032208, 0.032975, 0.033741, 0.034508, 0.035274, 0.036041, + 0.036807, 0.037574, 0.038340, 0.039107, 0.039873, 0.040639, 0.041406, 0.042172, + 0.042938, 0.043705, 0.044471, 0.045237, 0.046003, 0.046769, 0.047535, 0.048302, + 0.049068, 0.049834, 0.050600, 0.051366, 0.052132, 0.052898, 0.053664, 0.054429, + 0.055195, 0.055961, 0.056727, 0.057493, 0.058258, 0.059024, 0.059790, 0.060555, + 0.061321, 0.062086, 0.062852, 0.063617, 0.064383, 0.065148, 0.065913, 0.066679, + 0.067444, 0.068209, 0.068974, 0.069739, 0.070505, 0.071270, 0.072035, 0.072800, + 0.073565, 0.074329, 0.075094, 0.075859, 0.076624, 0.077389, 0.078153, 0.078918, + 0.079682, 0.080447, 0.081211, 0.081976, 0.082740, 0.083505, 0.084269, 0.085033, + 0.085797, 0.086561, 0.087326, 0.088090, 0.088854, 0.089617, 0.090381, 0.091145, + 0.091909, 0.092673, 0.093436, 0.094200, 0.094963, 0.095727, 0.096490, 0.097254, + 0.098017, 0.098780, 0.099544, 0.100307, 0.101070, 0.101833, 0.102596, 0.103359, + 0.104122, 0.104884, 0.105647, 0.106410, 0.107172, 0.107935, 0.108697, 0.109460, + 0.110222, 0.110984, 0.111747, 0.112509, 0.113271, 0.114033, 0.114795, 0.115557, + 0.116319, 0.117080, 0.117842, 0.118604, 0.119365, 0.120127, 0.120888, 0.121649, + 0.122411, 0.123172, 0.123933, 0.124694, 0.125455, 0.126216, 0.126977, 0.127737, + 0.128498, 0.129259, 0.130019, 0.130780, 0.131540, 0.132300, 0.133061, 0.133821, + 0.134581, 0.135341, 0.136101, 0.136860, 0.137620, 0.138380, 0.139139, 0.139899, + 0.140658, 0.141418, 0.142177, 0.142936, 0.143695, 0.144454, 0.145213, 0.145972, + 0.146730, 0.147489, 0.148248, 0.149006, 0.149765, 0.150523, 0.151281, 0.152039, + 0.152797, 0.153555, 0.154313, 0.155071, 0.155828, 0.156586, 0.157343, 0.158101, + 0.158858, 0.159615, 0.160372, 0.161129, 0.161886, 0.162643, 0.163400, 0.164157, + 0.164913, 0.165670, 0.166426, 0.167182, 0.167938, 0.168694, 0.169450, 0.170206, + 0.170962, 0.171718, 0.172473, 0.173229, 0.173984, 0.174739, 0.175494, 0.176249, + 0.177004, 0.177759, 0.178514, 0.179268, 0.180023, 0.180777, 0.181532, 0.182286, + 0.183040, 0.183794, 0.184548, 0.185301, 0.186055, 0.186809, 0.187562, 0.188315, + 0.189069, 0.189822, 0.190575, 0.191328, 0.192080, 0.192833, 0.193586, 0.194338, + 0.195090, 0.195843, 0.196595, 0.197347, 0.198098, 0.198850, 0.199602, 0.200353, + 0.201105, 0.201856, 0.202607, 0.203358, 0.204109, 0.204860, 0.205610, 0.206361, + 0.207111, 0.207862, 0.208612, 0.209362, 0.210112, 0.210862, 0.211611, 0.212361, + 0.213110, 0.213860, 0.214609, 0.215358, 0.216107, 0.216856, 0.217604, 0.218353, + 0.219101, 0.219850, 0.220598, 0.221346, 0.222094, 0.222841, 0.223589, 0.224337, + 0.225084, 0.225831, 0.226578, 0.227325, 0.228072, 0.228819, 0.229565, 0.230312, + 0.231058, 0.231804, 0.232550, 0.233296, 0.234042, 0.234788, 0.235533, 0.236278, + 0.237024, 0.237769, 0.238514, 0.239258, 0.240003, 0.240748, 0.241492, 0.242236, + 0.242980, 0.243724, 0.244468, 0.245212, 0.245955, 0.246698, 0.247442, 0.248185, + 0.248928, 0.249670, 0.250413, 0.251155, 0.251898, 0.252640, 0.253382, 0.254124, + 0.254866, 0.255607, 0.256349, 0.257090, 0.257831, 0.258572, 0.259313, 0.260054, + 0.260794, 0.261534, 0.262275, 0.263015, 0.263755, 0.264494, 0.265234, 0.265973, + 0.266713, 0.267452, 0.268191, 0.268930, 0.269668, 0.270407, 0.271145, 0.271883, + 0.272621, 0.273359, 0.274097, 0.274834, 0.275572, 0.276309, 0.277046, 0.277783, + 0.278520, 0.279256, 0.279993, 0.280729, 0.281465, 0.282201, 0.282937, 0.283672, + 0.284408, 0.285143, 0.285878, 0.286613, 0.287347, 0.288082, 0.288816, 0.289551, + 0.290285, 0.291019, 0.291752, 0.292486, 0.293219, 0.293952, 0.294685, 0.295418, + 0.296151, 0.296883, 0.297616, 0.298348, 0.299080, 0.299812, 0.300543, 0.301275, + 0.302006, 0.302737, 0.303468, 0.304199, 0.304929, 0.305660, 0.306390, 0.307120, + 0.307850, 0.308579, 0.309309, 0.310038, 0.310767, 0.311496, 0.312225, 0.312953, + 0.313682, 0.314410, 0.315138, 0.315866, 0.316593, 0.317321, 0.318048, 0.318775, + 0.319502, 0.320229, 0.320955, 0.321682, 0.322408, 0.323134, 0.323859, 0.324585, + 0.325310, 0.326035, 0.326760, 0.327485, 0.328210, 0.328934, 0.329658, 0.330382, + 0.331106, 0.331830, 0.332553, 0.333277, 0.334000, 0.334722, 0.335445, 0.336168, + 0.336890, 0.337612, 0.338334, 0.339055, 0.339777, 0.340498, 0.341219, 0.341940, + 0.342661, 0.343381, 0.344101, 0.344821, 0.345541, 0.346261, 0.346980, 0.347700, + 0.348419, 0.349138, 0.349856, 0.350575, 0.351293, 0.352011, 0.352729, 0.353446, + 0.354164, 0.354881, 0.355598, 0.356314, 0.357031, 0.357747, 0.358463, 0.359179, + 0.359895, 0.360611, 0.361326, 0.362041, 0.362756, 0.363470, 0.364185, 0.364899, + 0.365613, 0.366327, 0.367040, 0.367754, 0.368467, 0.369180, 0.369892, 0.370605, + 0.371317, 0.372029, 0.372741, 0.373453, 0.374164, 0.374875, 0.375586, 0.376297, + 0.377007, 0.377718, 0.378428, 0.379138, 0.379847, 0.380557, 0.381266, 0.381975, + 0.382683, 0.383392, 0.384100, 0.384808, 0.385516, 0.386224, 0.386931, 0.387638, + 0.388345, 0.389052, 0.389758, 0.390464, 0.391170, 0.391876, 0.392582, 0.393287, + 0.393992, 0.394697, 0.395401, 0.396106, 0.396810, 0.397514, 0.398218, 0.398921, + 0.399624, 0.400327, 0.401030, 0.401732, 0.402435, 0.403137, 0.403838, 0.404540, + 0.405241, 0.405942, 0.406643, 0.407344, 0.408044, 0.408744, 0.409444, 0.410144, + 0.410843, 0.411542, 0.412241, 0.412940, 0.413638, 0.414337, 0.415034, 0.415732, + 0.416430, 0.417127, 0.417824, 0.418520, 0.419217, 0.419913, 0.420609, 0.421305, + 0.422000, 0.422695, 0.423390, 0.424085, 0.424780, 0.425474, 0.426168, 0.426862, + 0.427555, 0.428248, 0.428941, 0.429634, 0.430326, 0.431019, 0.431711, 0.432402, + 0.433094, 0.433785, 0.434476, 0.435167, 0.435857, 0.436547, 0.437237, 0.437927, + 0.438616, 0.439305, 0.439994, 0.440683, 0.441371, 0.442059, 0.442747, 0.443435, + 0.444122, 0.444809, 0.445496, 0.446183, 0.446869, 0.447555, 0.448241, 0.448926, + 0.449611, 0.450296, 0.450981, 0.451665, 0.452350, 0.453033, 0.453717, 0.454400, + 0.455084, 0.455766, 0.456449, 0.457131, 0.457813, 0.458495, 0.459177, 0.459858, + 0.460539, 0.461219, 0.461900, 0.462580, 0.463260, 0.463939, 0.464619, 0.465298, + 0.465977, 0.466655, 0.467333, 0.468011, 0.468689, 0.469366, 0.470043, 0.470720, + 0.471397, 0.472073, 0.472749, 0.473425, 0.474100, 0.474775, 0.475450, 0.476125, + 0.476799, 0.477473, 0.478147, 0.478821, 0.479494, 0.480167, 0.480839, 0.481512, + 0.482184, 0.482856, 0.483527, 0.484198, 0.484869, 0.485540, 0.486210, 0.486880, + 0.487550, 0.488220, 0.488889, 0.489558, 0.490226, 0.490895, 0.491563, 0.492231, + 0.492898, 0.493565, 0.494232, 0.494899, 0.495565, 0.496231, 0.496897, 0.497562, + 0.498228, 0.498893, 0.499557, 0.500221, 0.500885, 0.501549, 0.502212, 0.502876, + 0.503538, 0.504201, 0.504863, 0.505525, 0.506187, 0.506848, 0.507509, 0.508170, + 0.508830, 0.509490, 0.510150, 0.510810, 0.511469, 0.512128, 0.512786, 0.513445, + 0.514103, 0.514760, 0.515418, 0.516075, 0.516732, 0.517388, 0.518045, 0.518700, + 0.519356, 0.520011, 0.520666, 0.521321, 0.521975, 0.522629, 0.523283, 0.523937, + 0.524590, 0.525243, 0.525895, 0.526547, 0.527199, 0.527851, 0.528502, 0.529153, + 0.529804, 0.530454, 0.531104, 0.531754, 0.532403, 0.533052, 0.533701, 0.534349, + 0.534998, 0.535645, 0.536293, 0.536940, 0.537587, 0.538234, 0.538880, 0.539526, + 0.540171, 0.540817, 0.541462, 0.542106, 0.542751, 0.543395, 0.544039, 0.544682, + 0.545325, 0.545968, 0.546610, 0.547252, 0.547894, 0.548536, 0.549177, 0.549818, + 0.550458, 0.551098, 0.551738, 0.552378, 0.553017, 0.553656, 0.554294, 0.554932, + 0.555570, 0.556208, 0.556845, 0.557482, 0.558119, 0.558755, 0.559391, 0.560026, + 0.560662, 0.561297, 0.561931, 0.562565, 0.563199, 0.563833, 0.564466, 0.565099, + 0.565732, 0.566364, 0.566996, 0.567628, 0.568259, 0.568890, 0.569521, 0.570151, + 0.570781, 0.571410, 0.572040, 0.572669, 0.573297, 0.573925, 0.574553, 0.575181, + 0.575808, 0.576435, 0.577062, 0.577688, 0.578314, 0.578939, 0.579565, 0.580189, + 0.580814, 0.581438, 0.582062, 0.582685, 0.583309, 0.583931, 0.584554, 0.585176, + 0.585798, 0.586419, 0.587040, 0.587661, 0.588282, 0.588902, 0.589521, 0.590141, + 0.590760, 0.591378, 0.591997, 0.592615, 0.593232, 0.593850, 0.594467, 0.595083, + 0.595699, 0.596315, 0.596931, 0.597546, 0.598161, 0.598775, 0.599389, 0.600003, + 0.600616, 0.601230, 0.601842, 0.602455, 0.603067, 0.603678, 0.604290, 0.604900, + 0.605511, 0.606121, 0.606731, 0.607341, 0.607950, 0.608559, 0.609167, 0.609775, + 0.610383, 0.610990, 0.611597, 0.612204, 0.612810, 0.613416, 0.614022, 0.614627, + 0.615232, 0.615836, 0.616440, 0.617044, 0.617647, 0.618250, 0.618853, 0.619455, + 0.620057, 0.620659, 0.621260, 0.621861, 0.622461, 0.623061, 0.623661, 0.624260, + 0.624860, 0.625458, 0.626056, 0.626654, 0.627252, 0.627849, 0.628446, 0.629042, + 0.629638, 0.630234, 0.630829, 0.631424, 0.632019, 0.632613, 0.633207, 0.633800, + 0.634393, 0.634986, 0.635578, 0.636170, 0.636762, 0.637353, 0.637944, 0.638534, + 0.639124, 0.639714, 0.640303, 0.640892, 0.641481, 0.642069, 0.642657, 0.643245, + 0.643832, 0.644418, 0.645005, 0.645590, 0.646176, 0.646761, 0.647346, 0.647930, + 0.648514, 0.649098, 0.649681, 0.650264, 0.650847, 0.651429, 0.652011, 0.652592, + 0.653173, 0.653753, 0.654334, 0.654913, 0.655493, 0.656072, 0.656651, 0.657229, + 0.657807, 0.658384, 0.658961, 0.659538, 0.660114, 0.660690, 0.661266, 0.661841, + 0.662416, 0.662990, 0.663564, 0.664138, 0.664711, 0.665284, 0.665856, 0.666428, + 0.667000, 0.667571, 0.668142, 0.668712, 0.669283, 0.669852, 0.670422, 0.670990, + 0.671559, 0.672127, 0.672695, 0.673262, 0.673829, 0.674396, 0.674962, 0.675527, + 0.676093, 0.676658, 0.677222, 0.677786, 0.678350, 0.678913, 0.679476, 0.680039, + 0.680601, 0.681163, 0.681724, 0.682285, 0.682846, 0.683406, 0.683965, 0.684525, + 0.685084, 0.685642, 0.686200, 0.686758, 0.687315, 0.687872, 0.688429, 0.688985, + 0.689541, 0.690096, 0.690651, 0.691205, 0.691759, 0.692313, 0.692866, 0.693419, + 0.693971, 0.694524, 0.695075, 0.695626, 0.696177, 0.696728, 0.697277, 0.697827, + 0.698376, 0.698925, 0.699473, 0.700021, 0.700569, 0.701116, 0.701663, 0.702209, + 0.702755, 0.703300, 0.703845, 0.704390, 0.704934, 0.705478, 0.706021, 0.706564, + 0.707107, 0.707649, 0.708191, 0.708732, 0.709273, 0.709813, 0.710353, 0.710893, + 0.711432, 0.711971, 0.712509, 0.713047, 0.713585, 0.714122, 0.714659, 0.715195, + 0.715731, 0.716266, 0.716801, 0.717336, 0.717870, 0.718404, 0.718937, 0.719470, + 0.720003, 0.720535, 0.721066, 0.721597, 0.722128, 0.722659, 0.723188, 0.723718, + 0.724247, 0.724776, 0.725304, 0.725832, 0.726359, 0.726886, 0.727413, 0.727939, + 0.728464, 0.728990, 0.729514, 0.730039, 0.730563, 0.731086, 0.731609, 0.732132, + 0.732654, 0.733176, 0.733697, 0.734218, 0.734739, 0.735259, 0.735779, 0.736298, + 0.736817, 0.737335, 0.737853, 0.738370, 0.738887, 0.739404, 0.739920, 0.740436, + 0.740951, 0.741466, 0.741980, 0.742494, 0.743008, 0.743521, 0.744034, 0.744546, + 0.745058, 0.745569, 0.746080, 0.746591, 0.747101, 0.747610, 0.748119, 0.748628, + 0.749136, 0.749644, 0.750152, 0.750659, 0.751165, 0.751671, 0.752177, 0.752682, + 0.753187, 0.753691, 0.754195, 0.754698, 0.755201, 0.755704, 0.756206, 0.756708, + 0.757209, 0.757710, 0.758210, 0.758710, 0.759209, 0.759708, 0.760207, 0.760705, + 0.761202, 0.761700, 0.762196, 0.762693, 0.763188, 0.763684, 0.764179, 0.764673, + 0.765167, 0.765661, 0.766154, 0.766647, 0.767139, 0.767631, 0.768122, 0.768613, + 0.769103, 0.769593, 0.770083, 0.770572, 0.771061, 0.771549, 0.772036, 0.772524, + 0.773010, 0.773497, 0.773983, 0.774468, 0.774953, 0.775438, 0.775922, 0.776405, + 0.776888, 0.777371, 0.777853, 0.778335, 0.778817, 0.779297, 0.779778, 0.780258, + 0.780737, 0.781216, 0.781695, 0.782173, 0.782651, 0.783128, 0.783605, 0.784081, + 0.784557, 0.785032, 0.785507, 0.785981, 0.786455, 0.786929, 0.787402, 0.787874, + 0.788346, 0.788818, 0.789289, 0.789760, 0.790230, 0.790700, 0.791169, 0.791638, + 0.792107, 0.792575, 0.793042, 0.793509, 0.793975, 0.794442, 0.794907, 0.795372, + 0.795837, 0.796301, 0.796765, 0.797228, 0.797691, 0.798153, 0.798615, 0.799076, + 0.799537, 0.799998, 0.800458, 0.800917, 0.801376, 0.801835, 0.802293, 0.802750, + 0.803208, 0.803664, 0.804120, 0.804576, 0.805031, 0.805486, 0.805940, 0.806394, + 0.806848, 0.807300, 0.807753, 0.808205, 0.808656, 0.809107, 0.809558, 0.810008, + 0.810457, 0.810906, 0.811355, 0.811803, 0.812251, 0.812698, 0.813144, 0.813591, + 0.814036, 0.814482, 0.814926, 0.815371, 0.815814, 0.816258, 0.816701, 0.817143, + 0.817585, 0.818026, 0.818467, 0.818908, 0.819348, 0.819787, 0.820226, 0.820664, + 0.821102, 0.821540, 0.821977, 0.822414, 0.822850, 0.823285, 0.823721, 0.824155, + 0.824589, 0.825023, 0.825456, 0.825889, 0.826321, 0.826753, 0.827184, 0.827615, + 0.828045, 0.828475, 0.828904, 0.829333, 0.829761, 0.830189, 0.830616, 0.831043, + 0.831470, 0.831895, 0.832321, 0.832746, 0.833170, 0.833594, 0.834018, 0.834440, + 0.834863, 0.835285, 0.835706, 0.836127, 0.836548, 0.836968, 0.837387, 0.837806, + 0.838225, 0.838643, 0.839060, 0.839477, 0.839894, 0.840310, 0.840725, 0.841140, + 0.841555, 0.841969, 0.842383, 0.842796, 0.843208, 0.843620, 0.844032, 0.844443, + 0.844854, 0.845264, 0.845673, 0.846082, 0.846491, 0.846899, 0.847307, 0.847714, + 0.848120, 0.848526, 0.848932, 0.849337, 0.849742, 0.850146, 0.850549, 0.850953, + 0.851355, 0.851757, 0.852159, 0.852560, 0.852961, 0.853361, 0.853760, 0.854159, + 0.854558, 0.854956, 0.855354, 0.855751, 0.856147, 0.856543, 0.856939, 0.857334, + 0.857729, 0.858123, 0.858516, 0.858909, 0.859302, 0.859694, 0.860085, 0.860476, + 0.860867, 0.861257, 0.861646, 0.862035, 0.862424, 0.862812, 0.863199, 0.863586, + 0.863973, 0.864359, 0.864744, 0.865129, 0.865514, 0.865898, 0.866281, 0.866664, + 0.867046, 0.867428, 0.867809, 0.868190, 0.868571, 0.868951, 0.869330, 0.869709, + 0.870087, 0.870465, 0.870842, 0.871219, 0.871595, 0.871971, 0.872346, 0.872721, + 0.873095, 0.873469, 0.873842, 0.874215, 0.874587, 0.874958, 0.875329, 0.875700, + 0.876070, 0.876440, 0.876809, 0.877177, 0.877545, 0.877913, 0.878280, 0.878646, + 0.879012, 0.879378, 0.879743, 0.880107, 0.880471, 0.880834, 0.881197, 0.881559, + 0.881921, 0.882283, 0.882643, 0.883004, 0.883363, 0.883723, 0.884081, 0.884439, + 0.884797, 0.885154, 0.885511, 0.885867, 0.886223, 0.886578, 0.886932, 0.887286, + 0.887640, 0.887993, 0.888345, 0.888697, 0.889048, 0.889399, 0.889750, 0.890099, + 0.890449, 0.890797, 0.891146, 0.891493, 0.891841, 0.892187, 0.892534, 0.892879, + 0.893224, 0.893569, 0.893913, 0.894256, 0.894599, 0.894942, 0.895284, 0.895625, + 0.895966, 0.896307, 0.896646, 0.896986, 0.897325, 0.897663, 0.898001, 0.898338, + 0.898674, 0.899011, 0.899346, 0.899681, 0.900016, 0.900350, 0.900683, 0.901016, + 0.901349, 0.901681, 0.902012, 0.902343, 0.902673, 0.903003, 0.903332, 0.903661, + 0.903989, 0.904317, 0.904644, 0.904971, 0.905297, 0.905622, 0.905947, 0.906272, + 0.906596, 0.906919, 0.907242, 0.907564, 0.907886, 0.908207, 0.908528, 0.908848, + 0.909168, 0.909487, 0.909806, 0.910124, 0.910441, 0.910758, 0.911075, 0.911391, + 0.911706, 0.912021, 0.912335, 0.912649, 0.912962, 0.913275, 0.913587, 0.913899, + 0.914210, 0.914520, 0.914830, 0.915140, 0.915449, 0.915757, 0.916065, 0.916372, + 0.916679, 0.916985, 0.917291, 0.917596, 0.917901, 0.918205, 0.918508, 0.918811, + 0.919114, 0.919416, 0.919717, 0.920018, 0.920318, 0.920618, 0.920917, 0.921216, + 0.921514, 0.921812, 0.922109, 0.922405, 0.922701, 0.922997, 0.923291, 0.923586, + 0.923880, 0.924173, 0.924465, 0.924758, 0.925049, 0.925340, 0.925631, 0.925921, + 0.926210, 0.926499, 0.926787, 0.927075, 0.927363, 0.927649, 0.927935, 0.928221, + 0.928506, 0.928791, 0.929075, 0.929358, 0.929641, 0.929923, 0.930205, 0.930486, + 0.930767, 0.931047, 0.931327, 0.931606, 0.931884, 0.932162, 0.932440, 0.932716, + 0.932993, 0.933269, 0.933544, 0.933818, 0.934093, 0.934366, 0.934639, 0.934912, + 0.935184, 0.935455, 0.935726, 0.935996, 0.936266, 0.936535, 0.936803, 0.937072, + 0.937339, 0.937606, 0.937872, 0.938138, 0.938404, 0.938668, 0.938932, 0.939196, + 0.939459, 0.939722, 0.939984, 0.940245, 0.940506, 0.940766, 0.941026, 0.941285, + 0.941544, 0.941802, 0.942060, 0.942317, 0.942573, 0.942829, 0.943084, 0.943339, + 0.943593, 0.943847, 0.944100, 0.944353, 0.944605, 0.944856, 0.945107, 0.945358, + 0.945607, 0.945857, 0.946105, 0.946353, 0.946601, 0.946848, 0.947094, 0.947340, + 0.947586, 0.947830, 0.948075, 0.948318, 0.948561, 0.948804, 0.949046, 0.949287, + 0.949528, 0.949768, 0.950008, 0.950247, 0.950486, 0.950724, 0.950962, 0.951199, + 0.951435, 0.951671, 0.951906, 0.952141, 0.952375, 0.952609, 0.952842, 0.953074, + 0.953306, 0.953537, 0.953768, 0.953998, 0.954228, 0.954457, 0.954686, 0.954914, + 0.955141, 0.955368, 0.955594, 0.955820, 0.956045, 0.956270, 0.956494, 0.956717, + 0.956940, 0.957163, 0.957385, 0.957606, 0.957826, 0.958046, 0.958266, 0.958485, + 0.958703, 0.958921, 0.959139, 0.959355, 0.959572, 0.959787, 0.960002, 0.960217, + 0.960431, 0.960644, 0.960857, 0.961069, 0.961280, 0.961492, 0.961702, 0.961912, + 0.962121, 0.962330, 0.962538, 0.962746, 0.962953, 0.963160, 0.963366, 0.963571, + 0.963776, 0.963980, 0.964184, 0.964387, 0.964590, 0.964792, 0.964993, 0.965194, + 0.965394, 0.965594, 0.965793, 0.965992, 0.966190, 0.966387, 0.966584, 0.966781, + 0.966976, 0.967172, 0.967366, 0.967560, 0.967754, 0.967947, 0.968139, 0.968331, + 0.968522, 0.968713, 0.968903, 0.969092, 0.969281, 0.969470, 0.969657, 0.969845, + 0.970031, 0.970217, 0.970403, 0.970588, 0.970772, 0.970956, 0.971139, 0.971322, + 0.971504, 0.971685, 0.971866, 0.972047, 0.972227, 0.972406, 0.972584, 0.972762, + 0.972940, 0.973117, 0.973293, 0.973469, 0.973644, 0.973819, 0.973993, 0.974166, + 0.974339, 0.974512, 0.974684, 0.974855, 0.975025, 0.975195, 0.975365, 0.975534, + 0.975702, 0.975870, 0.976037, 0.976204, 0.976370, 0.976535, 0.976700, 0.976864, + 0.977028, 0.977191, 0.977354, 0.977516, 0.977677, 0.977838, 0.977998, 0.978158, + 0.978317, 0.978476, 0.978634, 0.978791, 0.978948, 0.979104, 0.979260, 0.979415, + 0.979570, 0.979724, 0.979877, 0.980030, 0.980182, 0.980334, 0.980485, 0.980635, + 0.980785, 0.980935, 0.981083, 0.981232, 0.981379, 0.981526, 0.981673, 0.981819, + 0.981964, 0.982109, 0.982253, 0.982396, 0.982539, 0.982682, 0.982824, 0.982965, + 0.983105, 0.983246, 0.983385, 0.983524, 0.983662, 0.983800, 0.983937, 0.984074, + 0.984210, 0.984346, 0.984480, 0.984615, 0.984748, 0.984882, 0.985014, 0.985146, + 0.985278, 0.985408, 0.985539, 0.985668, 0.985798, 0.985926, 0.986054, 0.986181, + 0.986308, 0.986434, 0.986560, 0.986685, 0.986809, 0.986933, 0.987057, 0.987179, + 0.987301, 0.987423, 0.987544, 0.987664, 0.987784, 0.987903, 0.988022, 0.988140, + 0.988258, 0.988374, 0.988491, 0.988607, 0.988722, 0.988836, 0.988950, 0.989064, + 0.989177, 0.989289, 0.989400, 0.989511, 0.989622, 0.989732, 0.989841, 0.989950, + 0.990058, 0.990166, 0.990273, 0.990379, 0.990485, 0.990590, 0.990695, 0.990799, + 0.990903, 0.991006, 0.991108, 0.991210, 0.991311, 0.991411, 0.991511, 0.991611, + 0.991710, 0.991808, 0.991906, 0.992003, 0.992099, 0.992195, 0.992291, 0.992385, + 0.992480, 0.992573, 0.992666, 0.992759, 0.992850, 0.992942, 0.993032, 0.993122, + 0.993212, 0.993301, 0.993389, 0.993477, 0.993564, 0.993651, 0.993737, 0.993822, + 0.993907, 0.993991, 0.994075, 0.994158, 0.994240, 0.994322, 0.994404, 0.994484, + 0.994565, 0.994644, 0.994723, 0.994802, 0.994879, 0.994957, 0.995033, 0.995109, + 0.995185, 0.995260, 0.995334, 0.995408, 0.995481, 0.995553, 0.995625, 0.995697, + 0.995767, 0.995838, 0.995907, 0.995976, 0.996045, 0.996113, 0.996180, 0.996247, + 0.996313, 0.996378, 0.996443, 0.996507, 0.996571, 0.996634, 0.996697, 0.996759, + 0.996820, 0.996881, 0.996941, 0.997001, 0.997060, 0.997119, 0.997176, 0.997234, + 0.997290, 0.997347, 0.997402, 0.997457, 0.997511, 0.997565, 0.997618, 0.997671, + 0.997723, 0.997774, 0.997825, 0.997876, 0.997925, 0.997974, 0.998023, 0.998071, + 0.998118, 0.998165, 0.998211, 0.998257, 0.998302, 0.998346, 0.998390, 0.998433, + 0.998476, 0.998518, 0.998559, 0.998600, 0.998640, 0.998680, 0.998719, 0.998758, + 0.998795, 0.998833, 0.998870, 0.998906, 0.998941, 0.998976, 0.999011, 0.999044, + 0.999078, 0.999110, 0.999142, 0.999174, 0.999205, 0.999235, 0.999265, 0.999294, + 0.999322, 0.999350, 0.999378, 0.999404, 0.999431, 0.999456, 0.999481, 0.999506, + 0.999529, 0.999553, 0.999575, 0.999597, 0.999619, 0.999640, 0.999660, 0.999680, + 0.999699, 0.999717, 0.999735, 0.999753, 0.999769, 0.999786, 0.999801, 0.999816, + 0.999831, 0.999844, 0.999858, 0.999870, 0.999882, 0.999894, 0.999905, 0.999915, + 0.999925, 0.999934, 0.999942, 0.999950, 0.999958, 0.999964, 0.999971, 0.999976, + 0.999981, 0.999986, 0.999989, 0.999993, 0.999995, 0.999997, 0.999999, 1.000000 +}; + +static const float cosTable16384[8192] = { + 1.000000, 1.000000, 1.000000, 0.999999, 0.999999, 0.999998, 0.999997, 0.999996, + 0.999995, 0.999994, 0.999993, 0.999991, 0.999989, 0.999988, 0.999986, 0.999983, + 0.999981, 0.999979, 0.999976, 0.999973, 0.999971, 0.999968, 0.999964, 0.999961, + 0.999958, 0.999954, 0.999950, 0.999946, 0.999942, 0.999938, 0.999934, 0.999929, + 0.999925, 0.999920, 0.999915, 0.999910, 0.999905, 0.999899, 0.999894, 0.999888, + 0.999882, 0.999876, 0.999870, 0.999864, 0.999858, 0.999851, 0.999844, 0.999838, + 0.999831, 0.999823, 0.999816, 0.999809, 0.999801, 0.999793, 0.999786, 0.999778, + 0.999769, 0.999761, 0.999753, 0.999744, 0.999735, 0.999726, 0.999717, 0.999708, + 0.999699, 0.999689, 0.999680, 0.999670, 0.999660, 0.999650, 0.999640, 0.999629, + 0.999619, 0.999608, 0.999597, 0.999586, 0.999575, 0.999564, 0.999553, 0.999541, + 0.999529, 0.999518, 0.999506, 0.999493, 0.999481, 0.999469, 0.999456, 0.999443, + 0.999431, 0.999418, 0.999404, 0.999391, 0.999378, 0.999364, 0.999350, 0.999336, + 0.999322, 0.999308, 0.999294, 0.999279, 0.999265, 0.999250, 0.999235, 0.999220, + 0.999205, 0.999189, 0.999174, 0.999158, 0.999142, 0.999126, 0.999110, 0.999094, + 0.999078, 0.999061, 0.999044, 0.999028, 0.999011, 0.998994, 0.998976, 0.998959, + 0.998941, 0.998924, 0.998906, 0.998888, 0.998870, 0.998851, 0.998833, 0.998814, + 0.998795, 0.998777, 0.998758, 0.998738, 0.998719, 0.998700, 0.998680, 0.998660, + 0.998640, 0.998620, 0.998600, 0.998580, 0.998559, 0.998538, 0.998518, 0.998497, + 0.998476, 0.998454, 0.998433, 0.998411, 0.998390, 0.998368, 0.998346, 0.998324, + 0.998302, 0.998279, 0.998257, 0.998234, 0.998211, 0.998188, 0.998165, 0.998142, + 0.998118, 0.998094, 0.998071, 0.998047, 0.998023, 0.997999, 0.997974, 0.997950, + 0.997925, 0.997901, 0.997876, 0.997851, 0.997825, 0.997800, 0.997774, 0.997749, + 0.997723, 0.997697, 0.997671, 0.997645, 0.997618, 0.997592, 0.997565, 0.997538, + 0.997511, 0.997484, 0.997457, 0.997430, 0.997402, 0.997374, 0.997347, 0.997319, + 0.997290, 0.997262, 0.997234, 0.997205, 0.997176, 0.997148, 0.997119, 0.997089, + 0.997060, 0.997031, 0.997001, 0.996971, 0.996941, 0.996911, 0.996881, 0.996851, + 0.996820, 0.996790, 0.996759, 0.996728, 0.996697, 0.996666, 0.996634, 0.996603, + 0.996571, 0.996539, 0.996507, 0.996475, 0.996443, 0.996411, 0.996378, 0.996345, + 0.996313, 0.996280, 0.996247, 0.996213, 0.996180, 0.996146, 0.996113, 0.996079, + 0.996045, 0.996011, 0.995976, 0.995942, 0.995907, 0.995872, 0.995838, 0.995803, + 0.995767, 0.995732, 0.995697, 0.995661, 0.995625, 0.995589, 0.995553, 0.995517, + 0.995481, 0.995444, 0.995408, 0.995371, 0.995334, 0.995297, 0.995260, 0.995222, + 0.995185, 0.995147, 0.995109, 0.995071, 0.995033, 0.994995, 0.994957, 0.994918, + 0.994879, 0.994841, 0.994802, 0.994762, 0.994723, 0.994684, 0.994644, 0.994604, + 0.994565, 0.994525, 0.994484, 0.994444, 0.994404, 0.994363, 0.994322, 0.994281, + 0.994240, 0.994199, 0.994158, 0.994116, 0.994075, 0.994033, 0.993991, 0.993949, + 0.993907, 0.993865, 0.993822, 0.993779, 0.993737, 0.993694, 0.993651, 0.993608, + 0.993564, 0.993521, 0.993477, 0.993433, 0.993389, 0.993345, 0.993301, 0.993257, + 0.993212, 0.993167, 0.993122, 0.993077, 0.993032, 0.992987, 0.992942, 0.992896, + 0.992850, 0.992805, 0.992759, 0.992712, 0.992666, 0.992620, 0.992573, 0.992526, + 0.992480, 0.992433, 0.992385, 0.992338, 0.992291, 0.992243, 0.992195, 0.992147, + 0.992099, 0.992051, 0.992003, 0.991954, 0.991906, 0.991857, 0.991808, 0.991759, + 0.991710, 0.991660, 0.991611, 0.991561, 0.991511, 0.991462, 0.991411, 0.991361, + 0.991311, 0.991260, 0.991210, 0.991159, 0.991108, 0.991057, 0.991006, 0.990954, + 0.990903, 0.990851, 0.990799, 0.990747, 0.990695, 0.990643, 0.990590, 0.990538, + 0.990485, 0.990432, 0.990379, 0.990326, 0.990273, 0.990219, 0.990166, 0.990112, + 0.990058, 0.990004, 0.989950, 0.989896, 0.989841, 0.989787, 0.989732, 0.989677, + 0.989622, 0.989567, 0.989511, 0.989456, 0.989400, 0.989345, 0.989289, 0.989233, + 0.989177, 0.989120, 0.989064, 0.989007, 0.988950, 0.988893, 0.988836, 0.988779, + 0.988722, 0.988664, 0.988607, 0.988549, 0.988491, 0.988433, 0.988374, 0.988316, + 0.988258, 0.988199, 0.988140, 0.988081, 0.988022, 0.987963, 0.987903, 0.987844, + 0.987784, 0.987724, 0.987664, 0.987604, 0.987544, 0.987484, 0.987423, 0.987362, + 0.987301, 0.987240, 0.987179, 0.987118, 0.987057, 0.986995, 0.986933, 0.986871, + 0.986809, 0.986747, 0.986685, 0.986623, 0.986560, 0.986497, 0.986434, 0.986371, + 0.986308, 0.986245, 0.986181, 0.986118, 0.986054, 0.985990, 0.985926, 0.985862, + 0.985798, 0.985733, 0.985668, 0.985604, 0.985539, 0.985474, 0.985408, 0.985343, + 0.985278, 0.985212, 0.985146, 0.985080, 0.985014, 0.984948, 0.984882, 0.984815, + 0.984748, 0.984682, 0.984615, 0.984548, 0.984480, 0.984413, 0.984346, 0.984278, + 0.984210, 0.984142, 0.984074, 0.984006, 0.983937, 0.983869, 0.983800, 0.983731, + 0.983662, 0.983593, 0.983524, 0.983455, 0.983385, 0.983315, 0.983246, 0.983176, + 0.983105, 0.983035, 0.982965, 0.982894, 0.982824, 0.982753, 0.982682, 0.982611, + 0.982539, 0.982468, 0.982396, 0.982325, 0.982253, 0.982181, 0.982109, 0.982036, + 0.981964, 0.981891, 0.981819, 0.981746, 0.981673, 0.981600, 0.981526, 0.981453, + 0.981379, 0.981305, 0.981232, 0.981158, 0.981083, 0.981009, 0.980935, 0.980860, + 0.980785, 0.980710, 0.980635, 0.980560, 0.980485, 0.980409, 0.980334, 0.980258, + 0.980182, 0.980106, 0.980030, 0.979954, 0.979877, 0.979800, 0.979724, 0.979647, + 0.979570, 0.979493, 0.979415, 0.979338, 0.979260, 0.979182, 0.979104, 0.979026, + 0.978948, 0.978870, 0.978791, 0.978713, 0.978634, 0.978555, 0.978476, 0.978397, + 0.978317, 0.978238, 0.978158, 0.978078, 0.977998, 0.977918, 0.977838, 0.977758, + 0.977677, 0.977597, 0.977516, 0.977435, 0.977354, 0.977273, 0.977191, 0.977110, + 0.977028, 0.976946, 0.976864, 0.976782, 0.976700, 0.976618, 0.976535, 0.976453, + 0.976370, 0.976287, 0.976204, 0.976120, 0.976037, 0.975954, 0.975870, 0.975786, + 0.975702, 0.975618, 0.975534, 0.975449, 0.975365, 0.975280, 0.975195, 0.975110, + 0.975025, 0.974940, 0.974855, 0.974769, 0.974684, 0.974598, 0.974512, 0.974426, + 0.974339, 0.974253, 0.974166, 0.974080, 0.973993, 0.973906, 0.973819, 0.973732, + 0.973644, 0.973557, 0.973469, 0.973381, 0.973293, 0.973205, 0.973117, 0.973028, + 0.972940, 0.972851, 0.972762, 0.972673, 0.972584, 0.972495, 0.972406, 0.972316, + 0.972227, 0.972137, 0.972047, 0.971957, 0.971866, 0.971776, 0.971685, 0.971595, + 0.971504, 0.971413, 0.971322, 0.971231, 0.971139, 0.971048, 0.970956, 0.970864, + 0.970772, 0.970680, 0.970588, 0.970495, 0.970403, 0.970310, 0.970217, 0.970124, + 0.970031, 0.969938, 0.969845, 0.969751, 0.969657, 0.969564, 0.969470, 0.969375, + 0.969281, 0.969187, 0.969092, 0.968998, 0.968903, 0.968808, 0.968713, 0.968617, + 0.968522, 0.968427, 0.968331, 0.968235, 0.968139, 0.968043, 0.967947, 0.967850, + 0.967754, 0.967657, 0.967560, 0.967463, 0.967366, 0.967269, 0.967172, 0.967074, + 0.966976, 0.966879, 0.966781, 0.966683, 0.966584, 0.966486, 0.966387, 0.966289, + 0.966190, 0.966091, 0.965992, 0.965893, 0.965793, 0.965694, 0.965594, 0.965494, + 0.965394, 0.965294, 0.965194, 0.965094, 0.964993, 0.964893, 0.964792, 0.964691, + 0.964590, 0.964489, 0.964387, 0.964286, 0.964184, 0.964082, 0.963980, 0.963878, + 0.963776, 0.963674, 0.963571, 0.963469, 0.963366, 0.963263, 0.963160, 0.963057, + 0.962953, 0.962850, 0.962746, 0.962642, 0.962538, 0.962434, 0.962330, 0.962226, + 0.962121, 0.962017, 0.961912, 0.961807, 0.961702, 0.961597, 0.961492, 0.961386, + 0.961280, 0.961175, 0.961069, 0.960963, 0.960857, 0.960750, 0.960644, 0.960537, + 0.960431, 0.960324, 0.960217, 0.960109, 0.960002, 0.959895, 0.959787, 0.959679, + 0.959572, 0.959463, 0.959355, 0.959247, 0.959139, 0.959030, 0.958921, 0.958812, + 0.958703, 0.958594, 0.958485, 0.958376, 0.958266, 0.958156, 0.958046, 0.957937, + 0.957826, 0.957716, 0.957606, 0.957495, 0.957385, 0.957274, 0.957163, 0.957052, + 0.956940, 0.956829, 0.956717, 0.956606, 0.956494, 0.956382, 0.956270, 0.956158, + 0.956045, 0.955933, 0.955820, 0.955707, 0.955594, 0.955481, 0.955368, 0.955255, + 0.955141, 0.955028, 0.954914, 0.954800, 0.954686, 0.954572, 0.954457, 0.954343, + 0.954228, 0.954113, 0.953998, 0.953883, 0.953768, 0.953653, 0.953537, 0.953422, + 0.953306, 0.953190, 0.953074, 0.952958, 0.952842, 0.952725, 0.952609, 0.952492, + 0.952375, 0.952258, 0.952141, 0.952024, 0.951906, 0.951789, 0.951671, 0.951553, + 0.951435, 0.951317, 0.951199, 0.951080, 0.950962, 0.950843, 0.950724, 0.950605, + 0.950486, 0.950367, 0.950247, 0.950128, 0.950008, 0.949888, 0.949768, 0.949648, + 0.949528, 0.949408, 0.949287, 0.949167, 0.949046, 0.948925, 0.948804, 0.948683, + 0.948561, 0.948440, 0.948318, 0.948196, 0.948075, 0.947953, 0.947830, 0.947708, + 0.947586, 0.947463, 0.947340, 0.947217, 0.947094, 0.946971, 0.946848, 0.946724, + 0.946601, 0.946477, 0.946353, 0.946229, 0.946105, 0.945981, 0.945857, 0.945732, + 0.945607, 0.945482, 0.945358, 0.945232, 0.945107, 0.944982, 0.944856, 0.944731, + 0.944605, 0.944479, 0.944353, 0.944227, 0.944100, 0.943974, 0.943847, 0.943720, + 0.943593, 0.943466, 0.943339, 0.943212, 0.943084, 0.942957, 0.942829, 0.942701, + 0.942573, 0.942445, 0.942317, 0.942188, 0.942060, 0.941931, 0.941802, 0.941673, + 0.941544, 0.941415, 0.941285, 0.941156, 0.941026, 0.940896, 0.940766, 0.940636, + 0.940506, 0.940376, 0.940245, 0.940115, 0.939984, 0.939853, 0.939722, 0.939591, + 0.939459, 0.939328, 0.939196, 0.939064, 0.938932, 0.938800, 0.938668, 0.938536, + 0.938404, 0.938271, 0.938138, 0.938005, 0.937872, 0.937739, 0.937606, 0.937473, + 0.937339, 0.937205, 0.937072, 0.936938, 0.936803, 0.936669, 0.936535, 0.936400, + 0.936266, 0.936131, 0.935996, 0.935861, 0.935726, 0.935590, 0.935455, 0.935319, + 0.935184, 0.935048, 0.934912, 0.934775, 0.934639, 0.934503, 0.934366, 0.934229, + 0.934093, 0.933956, 0.933818, 0.933681, 0.933544, 0.933406, 0.933269, 0.933131, + 0.932993, 0.932855, 0.932716, 0.932578, 0.932440, 0.932301, 0.932162, 0.932023, + 0.931884, 0.931745, 0.931606, 0.931466, 0.931327, 0.931187, 0.931047, 0.930907, + 0.930767, 0.930627, 0.930486, 0.930346, 0.930205, 0.930064, 0.929923, 0.929782, + 0.929641, 0.929500, 0.929358, 0.929216, 0.929075, 0.928933, 0.928791, 0.928648, + 0.928506, 0.928364, 0.928221, 0.928078, 0.927935, 0.927792, 0.927649, 0.927506, + 0.927363, 0.927219, 0.927075, 0.926931, 0.926787, 0.926643, 0.926499, 0.926355, + 0.926210, 0.926066, 0.925921, 0.925776, 0.925631, 0.925486, 0.925340, 0.925195, + 0.925049, 0.924904, 0.924758, 0.924612, 0.924465, 0.924319, 0.924173, 0.924026, + 0.923880, 0.923733, 0.923586, 0.923439, 0.923291, 0.923144, 0.922997, 0.922849, + 0.922701, 0.922553, 0.922405, 0.922257, 0.922109, 0.921960, 0.921812, 0.921663, + 0.921514, 0.921365, 0.921216, 0.921067, 0.920917, 0.920768, 0.920618, 0.920468, + 0.920318, 0.920168, 0.920018, 0.919868, 0.919717, 0.919567, 0.919416, 0.919265, + 0.919114, 0.918963, 0.918811, 0.918660, 0.918508, 0.918357, 0.918205, 0.918053, + 0.917901, 0.917749, 0.917596, 0.917444, 0.917291, 0.917138, 0.916985, 0.916832, + 0.916679, 0.916526, 0.916372, 0.916219, 0.916065, 0.915911, 0.915757, 0.915603, + 0.915449, 0.915294, 0.915140, 0.914985, 0.914830, 0.914675, 0.914520, 0.914365, + 0.914210, 0.914054, 0.913899, 0.913743, 0.913587, 0.913431, 0.913275, 0.913119, + 0.912962, 0.912806, 0.912649, 0.912492, 0.912335, 0.912178, 0.912021, 0.911864, + 0.911706, 0.911548, 0.911391, 0.911233, 0.911075, 0.910917, 0.910758, 0.910600, + 0.910441, 0.910283, 0.910124, 0.909965, 0.909806, 0.909646, 0.909487, 0.909328, + 0.909168, 0.909008, 0.908848, 0.908688, 0.908528, 0.908368, 0.908207, 0.908047, + 0.907886, 0.907725, 0.907564, 0.907403, 0.907242, 0.907081, 0.906919, 0.906757, + 0.906596, 0.906434, 0.906272, 0.906110, 0.905947, 0.905785, 0.905622, 0.905460, + 0.905297, 0.905134, 0.904971, 0.904807, 0.904644, 0.904481, 0.904317, 0.904153, + 0.903989, 0.903825, 0.903661, 0.903497, 0.903332, 0.903168, 0.903003, 0.902838, + 0.902673, 0.902508, 0.902343, 0.902178, 0.902012, 0.901847, 0.901681, 0.901515, + 0.901349, 0.901183, 0.901016, 0.900850, 0.900683, 0.900517, 0.900350, 0.900183, + 0.900016, 0.899849, 0.899681, 0.899514, 0.899346, 0.899179, 0.899011, 0.898843, + 0.898674, 0.898506, 0.898338, 0.898169, 0.898001, 0.897832, 0.897663, 0.897494, + 0.897325, 0.897155, 0.896986, 0.896816, 0.896646, 0.896477, 0.896307, 0.896137, + 0.895966, 0.895796, 0.895625, 0.895455, 0.895284, 0.895113, 0.894942, 0.894771, + 0.894599, 0.894428, 0.894256, 0.894085, 0.893913, 0.893741, 0.893569, 0.893397, + 0.893224, 0.893052, 0.892879, 0.892706, 0.892534, 0.892361, 0.892187, 0.892014, + 0.891841, 0.891667, 0.891493, 0.891320, 0.891146, 0.890972, 0.890797, 0.890623, + 0.890449, 0.890274, 0.890099, 0.889925, 0.889750, 0.889574, 0.889399, 0.889224, + 0.889048, 0.888873, 0.888697, 0.888521, 0.888345, 0.888169, 0.887993, 0.887816, + 0.887640, 0.887463, 0.887286, 0.887109, 0.886932, 0.886755, 0.886578, 0.886400, + 0.886223, 0.886045, 0.885867, 0.885689, 0.885511, 0.885333, 0.885154, 0.884976, + 0.884797, 0.884618, 0.884439, 0.884260, 0.884081, 0.883902, 0.883723, 0.883543, + 0.883363, 0.883184, 0.883004, 0.882824, 0.882643, 0.882463, 0.882283, 0.882102, + 0.881921, 0.881740, 0.881559, 0.881378, 0.881197, 0.881016, 0.880834, 0.880653, + 0.880471, 0.880289, 0.880107, 0.879925, 0.879743, 0.879560, 0.879378, 0.879195, + 0.879012, 0.878829, 0.878646, 0.878463, 0.878280, 0.878096, 0.877913, 0.877729, + 0.877545, 0.877361, 0.877177, 0.876993, 0.876809, 0.876624, 0.876440, 0.876255, + 0.876070, 0.875885, 0.875700, 0.875515, 0.875329, 0.875144, 0.874958, 0.874773, + 0.874587, 0.874401, 0.874215, 0.874028, 0.873842, 0.873655, 0.873469, 0.873282, + 0.873095, 0.872908, 0.872721, 0.872534, 0.872346, 0.872159, 0.871971, 0.871783, + 0.871595, 0.871407, 0.871219, 0.871031, 0.870842, 0.870654, 0.870465, 0.870276, + 0.870087, 0.869898, 0.869709, 0.869519, 0.869330, 0.869140, 0.868951, 0.868761, + 0.868571, 0.868381, 0.868190, 0.868000, 0.867809, 0.867619, 0.867428, 0.867237, + 0.867046, 0.866855, 0.866664, 0.866472, 0.866281, 0.866089, 0.865898, 0.865706, + 0.865514, 0.865321, 0.865129, 0.864937, 0.864744, 0.864552, 0.864359, 0.864166, + 0.863973, 0.863780, 0.863586, 0.863393, 0.863199, 0.863006, 0.862812, 0.862618, + 0.862424, 0.862230, 0.862035, 0.861841, 0.861646, 0.861452, 0.861257, 0.861062, + 0.860867, 0.860672, 0.860476, 0.860281, 0.860085, 0.859890, 0.859694, 0.859498, + 0.859302, 0.859106, 0.858909, 0.858713, 0.858516, 0.858320, 0.858123, 0.857926, + 0.857729, 0.857531, 0.857334, 0.857137, 0.856939, 0.856741, 0.856543, 0.856345, + 0.856147, 0.855949, 0.855751, 0.855552, 0.855354, 0.855155, 0.854956, 0.854757, + 0.854558, 0.854359, 0.854159, 0.853960, 0.853760, 0.853561, 0.853361, 0.853161, + 0.852961, 0.852760, 0.852560, 0.852360, 0.852159, 0.851958, 0.851757, 0.851556, + 0.851355, 0.851154, 0.850953, 0.850751, 0.850549, 0.850348, 0.850146, 0.849944, + 0.849742, 0.849540, 0.849337, 0.849135, 0.848932, 0.848729, 0.848526, 0.848323, + 0.848120, 0.847917, 0.847714, 0.847510, 0.847307, 0.847103, 0.846899, 0.846695, + 0.846491, 0.846287, 0.846082, 0.845878, 0.845673, 0.845469, 0.845264, 0.845059, + 0.844854, 0.844648, 0.844443, 0.844238, 0.844032, 0.843826, 0.843620, 0.843414, + 0.843208, 0.843002, 0.842796, 0.842589, 0.842383, 0.842176, 0.841969, 0.841762, + 0.841555, 0.841348, 0.841140, 0.840933, 0.840725, 0.840518, 0.840310, 0.840102, + 0.839894, 0.839686, 0.839477, 0.839269, 0.839060, 0.838852, 0.838643, 0.838434, + 0.838225, 0.838015, 0.837806, 0.837597, 0.837387, 0.837178, 0.836968, 0.836758, + 0.836548, 0.836338, 0.836127, 0.835917, 0.835706, 0.835496, 0.835285, 0.835074, + 0.834863, 0.834652, 0.834440, 0.834229, 0.834018, 0.833806, 0.833594, 0.833382, + 0.833170, 0.832958, 0.832746, 0.832533, 0.832321, 0.832108, 0.831895, 0.831683, + 0.831470, 0.831257, 0.831043, 0.830830, 0.830616, 0.830403, 0.830189, 0.829975, + 0.829761, 0.829547, 0.829333, 0.829119, 0.828904, 0.828690, 0.828475, 0.828260, + 0.828045, 0.827830, 0.827615, 0.827399, 0.827184, 0.826968, 0.826753, 0.826537, + 0.826321, 0.826105, 0.825889, 0.825673, 0.825456, 0.825240, 0.825023, 0.824806, + 0.824589, 0.824372, 0.824155, 0.823938, 0.823721, 0.823503, 0.823285, 0.823068, + 0.822850, 0.822632, 0.822414, 0.822195, 0.821977, 0.821759, 0.821540, 0.821321, + 0.821102, 0.820884, 0.820664, 0.820445, 0.820226, 0.820007, 0.819787, 0.819567, + 0.819348, 0.819128, 0.818908, 0.818687, 0.818467, 0.818247, 0.818026, 0.817806, + 0.817585, 0.817364, 0.817143, 0.816922, 0.816701, 0.816479, 0.816258, 0.816036, + 0.815814, 0.815593, 0.815371, 0.815149, 0.814926, 0.814704, 0.814482, 0.814259, + 0.814036, 0.813814, 0.813591, 0.813368, 0.813144, 0.812921, 0.812698, 0.812474, + 0.812251, 0.812027, 0.811803, 0.811579, 0.811355, 0.811131, 0.810906, 0.810682, + 0.810457, 0.810232, 0.810008, 0.809783, 0.809558, 0.809332, 0.809107, 0.808882, + 0.808656, 0.808430, 0.808205, 0.807979, 0.807753, 0.807527, 0.807300, 0.807074, + 0.806848, 0.806621, 0.806394, 0.806167, 0.805940, 0.805713, 0.805486, 0.805259, + 0.805031, 0.804804, 0.804576, 0.804348, 0.804120, 0.803892, 0.803664, 0.803436, + 0.803208, 0.802979, 0.802750, 0.802522, 0.802293, 0.802064, 0.801835, 0.801606, + 0.801376, 0.801147, 0.800917, 0.800687, 0.800458, 0.800228, 0.799998, 0.799768, + 0.799537, 0.799307, 0.799076, 0.798846, 0.798615, 0.798384, 0.798153, 0.797922, + 0.797691, 0.797459, 0.797228, 0.796996, 0.796765, 0.796533, 0.796301, 0.796069, + 0.795837, 0.795605, 0.795372, 0.795140, 0.794907, 0.794674, 0.794442, 0.794209, + 0.793975, 0.793742, 0.793509, 0.793276, 0.793042, 0.792808, 0.792575, 0.792341, + 0.792107, 0.791872, 0.791638, 0.791404, 0.791169, 0.790935, 0.790700, 0.790465, + 0.790230, 0.789995, 0.789760, 0.789525, 0.789289, 0.789054, 0.788818, 0.788582, + 0.788346, 0.788110, 0.787874, 0.787638, 0.787402, 0.787165, 0.786929, 0.786692, + 0.786455, 0.786218, 0.785981, 0.785744, 0.785507, 0.785269, 0.785032, 0.784794, + 0.784557, 0.784319, 0.784081, 0.783843, 0.783605, 0.783366, 0.783128, 0.782889, + 0.782651, 0.782412, 0.782173, 0.781934, 0.781695, 0.781456, 0.781216, 0.780977, + 0.780737, 0.780498, 0.780258, 0.780018, 0.779778, 0.779538, 0.779297, 0.779057, + 0.778817, 0.778576, 0.778335, 0.778094, 0.777853, 0.777612, 0.777371, 0.777130, + 0.776888, 0.776647, 0.776405, 0.776164, 0.775922, 0.775680, 0.775438, 0.775195, + 0.774953, 0.774711, 0.774468, 0.774225, 0.773983, 0.773740, 0.773497, 0.773254, + 0.773010, 0.772767, 0.772524, 0.772280, 0.772036, 0.771793, 0.771549, 0.771305, + 0.771061, 0.770816, 0.770572, 0.770327, 0.770083, 0.769838, 0.769593, 0.769348, + 0.769103, 0.768858, 0.768613, 0.768368, 0.768122, 0.767876, 0.767631, 0.767385, + 0.767139, 0.766893, 0.766647, 0.766400, 0.766154, 0.765907, 0.765661, 0.765414, + 0.765167, 0.764920, 0.764673, 0.764426, 0.764179, 0.763931, 0.763684, 0.763436, + 0.763188, 0.762941, 0.762693, 0.762444, 0.762196, 0.761948, 0.761700, 0.761451, + 0.761202, 0.760954, 0.760705, 0.760456, 0.760207, 0.759957, 0.759708, 0.759459, + 0.759209, 0.758960, 0.758710, 0.758460, 0.758210, 0.757960, 0.757710, 0.757459, + 0.757209, 0.756958, 0.756708, 0.756457, 0.756206, 0.755955, 0.755704, 0.755453, + 0.755201, 0.754950, 0.754698, 0.754447, 0.754195, 0.753943, 0.753691, 0.753439, + 0.753187, 0.752934, 0.752682, 0.752429, 0.752177, 0.751924, 0.751671, 0.751418, + 0.751165, 0.750912, 0.750659, 0.750405, 0.750152, 0.749898, 0.749644, 0.749390, + 0.749136, 0.748882, 0.748628, 0.748374, 0.748119, 0.747865, 0.747610, 0.747355, + 0.747101, 0.746846, 0.746591, 0.746335, 0.746080, 0.745825, 0.745569, 0.745314, + 0.745058, 0.744802, 0.744546, 0.744290, 0.744034, 0.743777, 0.743521, 0.743265, + 0.743008, 0.742751, 0.742494, 0.742237, 0.741980, 0.741723, 0.741466, 0.741209, + 0.740951, 0.740694, 0.740436, 0.740178, 0.739920, 0.739662, 0.739404, 0.739146, + 0.738887, 0.738629, 0.738370, 0.738112, 0.737853, 0.737594, 0.737335, 0.737076, + 0.736817, 0.736557, 0.736298, 0.736038, 0.735779, 0.735519, 0.735259, 0.734999, + 0.734739, 0.734479, 0.734218, 0.733958, 0.733697, 0.733437, 0.733176, 0.732915, + 0.732654, 0.732393, 0.732132, 0.731871, 0.731609, 0.731348, 0.731086, 0.730825, + 0.730563, 0.730301, 0.730039, 0.729777, 0.729514, 0.729252, 0.728990, 0.728727, + 0.728464, 0.728202, 0.727939, 0.727676, 0.727413, 0.727149, 0.726886, 0.726623, + 0.726359, 0.726095, 0.725832, 0.725568, 0.725304, 0.725040, 0.724776, 0.724511, + 0.724247, 0.723983, 0.723718, 0.723453, 0.723188, 0.722924, 0.722659, 0.722393, + 0.722128, 0.721863, 0.721597, 0.721332, 0.721066, 0.720800, 0.720535, 0.720269, + 0.720003, 0.719736, 0.719470, 0.719204, 0.718937, 0.718670, 0.718404, 0.718137, + 0.717870, 0.717603, 0.717336, 0.717069, 0.716801, 0.716534, 0.716266, 0.715999, + 0.715731, 0.715463, 0.715195, 0.714927, 0.714659, 0.714390, 0.714122, 0.713853, + 0.713585, 0.713316, 0.713047, 0.712778, 0.712509, 0.712240, 0.711971, 0.711702, + 0.711432, 0.711163, 0.710893, 0.710623, 0.710353, 0.710083, 0.709813, 0.709543, + 0.709273, 0.709002, 0.708732, 0.708461, 0.708191, 0.707920, 0.707649, 0.707378, + 0.707107, 0.706836, 0.706564, 0.706293, 0.706021, 0.705750, 0.705478, 0.705206, + 0.704934, 0.704662, 0.704390, 0.704118, 0.703845, 0.703573, 0.703300, 0.703028, + 0.702755, 0.702482, 0.702209, 0.701936, 0.701663, 0.701389, 0.701116, 0.700842, + 0.700569, 0.700295, 0.700021, 0.699747, 0.699473, 0.699199, 0.698925, 0.698651, + 0.698376, 0.698102, 0.697827, 0.697552, 0.697277, 0.697003, 0.696728, 0.696452, + 0.696177, 0.695902, 0.695626, 0.695351, 0.695075, 0.694799, 0.694524, 0.694248, + 0.693971, 0.693695, 0.693419, 0.693143, 0.692866, 0.692590, 0.692313, 0.692036, + 0.691759, 0.691482, 0.691205, 0.690928, 0.690651, 0.690373, 0.690096, 0.689818, + 0.689541, 0.689263, 0.688985, 0.688707, 0.688429, 0.688151, 0.687872, 0.687594, + 0.687315, 0.687037, 0.686758, 0.686479, 0.686200, 0.685921, 0.685642, 0.685363, + 0.685084, 0.684804, 0.684525, 0.684245, 0.683965, 0.683686, 0.683406, 0.683126, + 0.682846, 0.682565, 0.682285, 0.682005, 0.681724, 0.681443, 0.681163, 0.680882, + 0.680601, 0.680320, 0.680039, 0.679758, 0.679476, 0.679195, 0.678913, 0.678632, + 0.678350, 0.678068, 0.677786, 0.677504, 0.677222, 0.676940, 0.676658, 0.676375, + 0.676093, 0.675810, 0.675527, 0.675245, 0.674962, 0.674679, 0.674396, 0.674112, + 0.673829, 0.673546, 0.673262, 0.672978, 0.672695, 0.672411, 0.672127, 0.671843, + 0.671559, 0.671275, 0.670990, 0.670706, 0.670422, 0.670137, 0.669852, 0.669567, + 0.669283, 0.668998, 0.668712, 0.668427, 0.668142, 0.667857, 0.667571, 0.667286, + 0.667000, 0.666714, 0.666428, 0.666142, 0.665856, 0.665570, 0.665284, 0.664997, + 0.664711, 0.664424, 0.664138, 0.663851, 0.663564, 0.663277, 0.662990, 0.662703, + 0.662416, 0.662128, 0.661841, 0.661553, 0.661266, 0.660978, 0.660690, 0.660402, + 0.660114, 0.659826, 0.659538, 0.659250, 0.658961, 0.658673, 0.658384, 0.658095, + 0.657807, 0.657518, 0.657229, 0.656940, 0.656651, 0.656361, 0.656072, 0.655782, + 0.655493, 0.655203, 0.654913, 0.654624, 0.654334, 0.654044, 0.653753, 0.653463, + 0.653173, 0.652882, 0.652592, 0.652301, 0.652011, 0.651720, 0.651429, 0.651138, + 0.650847, 0.650555, 0.650264, 0.649973, 0.649681, 0.649390, 0.649098, 0.648806, + 0.648514, 0.648222, 0.647930, 0.647638, 0.647346, 0.647054, 0.646761, 0.646469, + 0.646176, 0.645883, 0.645590, 0.645298, 0.645005, 0.644711, 0.644418, 0.644125, + 0.643832, 0.643538, 0.643245, 0.642951, 0.642657, 0.642363, 0.642069, 0.641775, + 0.641481, 0.641187, 0.640892, 0.640598, 0.640303, 0.640009, 0.639714, 0.639419, + 0.639124, 0.638829, 0.638534, 0.638239, 0.637944, 0.637649, 0.637353, 0.637057, + 0.636762, 0.636466, 0.636170, 0.635874, 0.635578, 0.635282, 0.634986, 0.634690, + 0.634393, 0.634097, 0.633800, 0.633504, 0.633207, 0.632910, 0.632613, 0.632316, + 0.632019, 0.631721, 0.631424, 0.631127, 0.630829, 0.630532, 0.630234, 0.629936, + 0.629638, 0.629340, 0.629042, 0.628744, 0.628446, 0.628147, 0.627849, 0.627550, + 0.627252, 0.626953, 0.626654, 0.626355, 0.626056, 0.625757, 0.625458, 0.625159, + 0.624860, 0.624560, 0.624260, 0.623961, 0.623661, 0.623361, 0.623061, 0.622761, + 0.622461, 0.622161, 0.621861, 0.621560, 0.621260, 0.620959, 0.620659, 0.620358, + 0.620057, 0.619756, 0.619455, 0.619154, 0.618853, 0.618552, 0.618250, 0.617949, + 0.617647, 0.617346, 0.617044, 0.616742, 0.616440, 0.616138, 0.615836, 0.615534, + 0.615232, 0.614929, 0.614627, 0.614324, 0.614022, 0.613719, 0.613416, 0.613113, + 0.612810, 0.612507, 0.612204, 0.611901, 0.611597, 0.611294, 0.610990, 0.610687, + 0.610383, 0.610079, 0.609775, 0.609471, 0.609167, 0.608863, 0.608559, 0.608254, + 0.607950, 0.607645, 0.607341, 0.607036, 0.606731, 0.606426, 0.606121, 0.605816, + 0.605511, 0.605206, 0.604900, 0.604595, 0.604290, 0.603984, 0.603678, 0.603372, + 0.603067, 0.602761, 0.602455, 0.602148, 0.601842, 0.601536, 0.601230, 0.600923, + 0.600616, 0.600310, 0.600003, 0.599696, 0.599389, 0.599082, 0.598775, 0.598468, + 0.598161, 0.597853, 0.597546, 0.597238, 0.596931, 0.596623, 0.596315, 0.596007, + 0.595699, 0.595391, 0.595083, 0.594775, 0.594467, 0.594158, 0.593850, 0.593541, + 0.593232, 0.592924, 0.592615, 0.592306, 0.591997, 0.591688, 0.591378, 0.591069, + 0.590760, 0.590450, 0.590141, 0.589831, 0.589521, 0.589212, 0.588902, 0.588592, + 0.588282, 0.587971, 0.587661, 0.587351, 0.587040, 0.586730, 0.586419, 0.586109, + 0.585798, 0.585487, 0.585176, 0.584865, 0.584554, 0.584243, 0.583931, 0.583620, + 0.583309, 0.582997, 0.582685, 0.582374, 0.582062, 0.581750, 0.581438, 0.581126, + 0.580814, 0.580502, 0.580189, 0.579877, 0.579565, 0.579252, 0.578939, 0.578627, + 0.578314, 0.578001, 0.577688, 0.577375, 0.577062, 0.576748, 0.576435, 0.576122, + 0.575808, 0.575495, 0.575181, 0.574867, 0.574553, 0.574239, 0.573925, 0.573611, + 0.573297, 0.572983, 0.572669, 0.572354, 0.572040, 0.571725, 0.571410, 0.571096, + 0.570781, 0.570466, 0.570151, 0.569836, 0.569521, 0.569205, 0.568890, 0.568574, + 0.568259, 0.567943, 0.567628, 0.567312, 0.566996, 0.566680, 0.566364, 0.566048, + 0.565732, 0.565416, 0.565099, 0.564783, 0.564466, 0.564150, 0.563833, 0.563516, + 0.563199, 0.562882, 0.562565, 0.562248, 0.561931, 0.561614, 0.561297, 0.560979, + 0.560662, 0.560344, 0.560026, 0.559709, 0.559391, 0.559073, 0.558755, 0.558437, + 0.558119, 0.557800, 0.557482, 0.557164, 0.556845, 0.556526, 0.556208, 0.555889, + 0.555570, 0.555251, 0.554932, 0.554613, 0.554294, 0.553975, 0.553656, 0.553336, + 0.553017, 0.552697, 0.552378, 0.552058, 0.551738, 0.551418, 0.551098, 0.550778, + 0.550458, 0.550138, 0.549818, 0.549497, 0.549177, 0.548856, 0.548536, 0.548215, + 0.547894, 0.547573, 0.547252, 0.546931, 0.546610, 0.546289, 0.545968, 0.545646, + 0.545325, 0.545003, 0.544682, 0.544360, 0.544039, 0.543717, 0.543395, 0.543073, + 0.542751, 0.542429, 0.542106, 0.541784, 0.541462, 0.541139, 0.540817, 0.540494, + 0.540171, 0.539849, 0.539526, 0.539203, 0.538880, 0.538557, 0.538234, 0.537910, + 0.537587, 0.537264, 0.536940, 0.536617, 0.536293, 0.535969, 0.535645, 0.535322, + 0.534998, 0.534674, 0.534349, 0.534025, 0.533701, 0.533377, 0.533052, 0.532728, + 0.532403, 0.532078, 0.531754, 0.531429, 0.531104, 0.530779, 0.530454, 0.530129, + 0.529804, 0.529478, 0.529153, 0.528828, 0.528502, 0.528176, 0.527851, 0.527525, + 0.527199, 0.526873, 0.526547, 0.526221, 0.525895, 0.525569, 0.525243, 0.524916, + 0.524590, 0.524263, 0.523937, 0.523610, 0.523283, 0.522956, 0.522629, 0.522302, + 0.521975, 0.521648, 0.521321, 0.520994, 0.520666, 0.520339, 0.520011, 0.519684, + 0.519356, 0.519028, 0.518700, 0.518372, 0.518045, 0.517716, 0.517388, 0.517060, + 0.516732, 0.516403, 0.516075, 0.515746, 0.515418, 0.515089, 0.514760, 0.514432, + 0.514103, 0.513774, 0.513445, 0.513116, 0.512786, 0.512457, 0.512128, 0.511798, + 0.511469, 0.511139, 0.510810, 0.510480, 0.510150, 0.509820, 0.509490, 0.509160, + 0.508830, 0.508500, 0.508170, 0.507839, 0.507509, 0.507179, 0.506848, 0.506517, + 0.506187, 0.505856, 0.505525, 0.505194, 0.504863, 0.504532, 0.504201, 0.503870, + 0.503538, 0.503207, 0.502876, 0.502544, 0.502212, 0.501881, 0.501549, 0.501217, + 0.500885, 0.500553, 0.500221, 0.499889, 0.499557, 0.499225, 0.498893, 0.498560, + 0.498228, 0.497895, 0.497562, 0.497230, 0.496897, 0.496564, 0.496231, 0.495898, + 0.495565, 0.495232, 0.494899, 0.494566, 0.494232, 0.493899, 0.493565, 0.493232, + 0.492898, 0.492564, 0.492231, 0.491897, 0.491563, 0.491229, 0.490895, 0.490561, + 0.490226, 0.489892, 0.489558, 0.489223, 0.488889, 0.488554, 0.488220, 0.487885, + 0.487550, 0.487215, 0.486880, 0.486545, 0.486210, 0.485875, 0.485540, 0.485205, + 0.484869, 0.484534, 0.484198, 0.483863, 0.483527, 0.483191, 0.482856, 0.482520, + 0.482184, 0.481848, 0.481512, 0.481176, 0.480839, 0.480503, 0.480167, 0.479830, + 0.479494, 0.479157, 0.478821, 0.478484, 0.478147, 0.477810, 0.477473, 0.477136, + 0.476799, 0.476462, 0.476125, 0.475788, 0.475450, 0.475113, 0.474775, 0.474438, + 0.474100, 0.473763, 0.473425, 0.473087, 0.472749, 0.472411, 0.472073, 0.471735, + 0.471397, 0.471058, 0.470720, 0.470382, 0.470043, 0.469705, 0.469366, 0.469028, + 0.468689, 0.468350, 0.468011, 0.467672, 0.467333, 0.466994, 0.466655, 0.466316, + 0.465977, 0.465637, 0.465298, 0.464958, 0.464619, 0.464279, 0.463939, 0.463600, + 0.463260, 0.462920, 0.462580, 0.462240, 0.461900, 0.461560, 0.461219, 0.460879, + 0.460539, 0.460198, 0.459858, 0.459517, 0.459177, 0.458836, 0.458495, 0.458154, + 0.457813, 0.457472, 0.457131, 0.456790, 0.456449, 0.456108, 0.455766, 0.455425, + 0.455084, 0.454742, 0.454400, 0.454059, 0.453717, 0.453375, 0.453033, 0.452692, + 0.452350, 0.452008, 0.451665, 0.451323, 0.450981, 0.450639, 0.450296, 0.449954, + 0.449611, 0.449269, 0.448926, 0.448583, 0.448241, 0.447898, 0.447555, 0.447212, + 0.446869, 0.446526, 0.446183, 0.445839, 0.445496, 0.445153, 0.444809, 0.444466, + 0.444122, 0.443779, 0.443435, 0.443091, 0.442747, 0.442403, 0.442059, 0.441715, + 0.441371, 0.441027, 0.440683, 0.440339, 0.439994, 0.439650, 0.439305, 0.438961, + 0.438616, 0.438272, 0.437927, 0.437582, 0.437237, 0.436892, 0.436547, 0.436202, + 0.435857, 0.435512, 0.435167, 0.434821, 0.434476, 0.434131, 0.433785, 0.433439, + 0.433094, 0.432748, 0.432402, 0.432057, 0.431711, 0.431365, 0.431019, 0.430673, + 0.430326, 0.429980, 0.429634, 0.429288, 0.428941, 0.428595, 0.428248, 0.427902, + 0.427555, 0.427208, 0.426862, 0.426515, 0.426168, 0.425821, 0.425474, 0.425127, + 0.424780, 0.424432, 0.424085, 0.423738, 0.423390, 0.423043, 0.422695, 0.422348, + 0.422000, 0.421653, 0.421305, 0.420957, 0.420609, 0.420261, 0.419913, 0.419565, + 0.419217, 0.418869, 0.418520, 0.418172, 0.417824, 0.417475, 0.417127, 0.416778, + 0.416430, 0.416081, 0.415732, 0.415383, 0.415034, 0.414685, 0.414337, 0.413987, + 0.413638, 0.413289, 0.412940, 0.412591, 0.412241, 0.411892, 0.411542, 0.411193, + 0.410843, 0.410493, 0.410144, 0.409794, 0.409444, 0.409094, 0.408744, 0.408394, + 0.408044, 0.407694, 0.407344, 0.406994, 0.406643, 0.406293, 0.405942, 0.405592, + 0.405241, 0.404891, 0.404540, 0.404189, 0.403838, 0.403488, 0.403137, 0.402786, + 0.402435, 0.402084, 0.401732, 0.401381, 0.401030, 0.400679, 0.400327, 0.399976, + 0.399624, 0.399273, 0.398921, 0.398569, 0.398218, 0.397866, 0.397514, 0.397162, + 0.396810, 0.396458, 0.396106, 0.395754, 0.395401, 0.395049, 0.394697, 0.394344, + 0.393992, 0.393640, 0.393287, 0.392934, 0.392582, 0.392229, 0.391876, 0.391523, + 0.391170, 0.390817, 0.390464, 0.390111, 0.389758, 0.389405, 0.389052, 0.388698, + 0.388345, 0.387992, 0.387638, 0.387285, 0.386931, 0.386577, 0.386224, 0.385870, + 0.385516, 0.385162, 0.384808, 0.384454, 0.384100, 0.383746, 0.383392, 0.383038, + 0.382683, 0.382329, 0.381975, 0.381620, 0.381266, 0.380911, 0.380557, 0.380202, + 0.379847, 0.379492, 0.379138, 0.378783, 0.378428, 0.378073, 0.377718, 0.377363, + 0.377007, 0.376652, 0.376297, 0.375942, 0.375586, 0.375231, 0.374875, 0.374520, + 0.374164, 0.373808, 0.373453, 0.373097, 0.372741, 0.372385, 0.372029, 0.371673, + 0.371317, 0.370961, 0.370605, 0.370249, 0.369892, 0.369536, 0.369180, 0.368823, + 0.368467, 0.368110, 0.367754, 0.367397, 0.367040, 0.366684, 0.366327, 0.365970, + 0.365613, 0.365256, 0.364899, 0.364542, 0.364185, 0.363828, 0.363470, 0.363113, + 0.362756, 0.362398, 0.362041, 0.361683, 0.361326, 0.360968, 0.360611, 0.360253, + 0.359895, 0.359537, 0.359179, 0.358821, 0.358463, 0.358105, 0.357747, 0.357389, + 0.357031, 0.356673, 0.356314, 0.355956, 0.355598, 0.355239, 0.354881, 0.354522, + 0.354164, 0.353805, 0.353446, 0.353087, 0.352729, 0.352370, 0.352011, 0.351652, + 0.351293, 0.350934, 0.350575, 0.350215, 0.349856, 0.349497, 0.349138, 0.348778, + 0.348419, 0.348059, 0.347700, 0.347340, 0.346980, 0.346621, 0.346261, 0.345901, + 0.345541, 0.345181, 0.344821, 0.344461, 0.344101, 0.343741, 0.343381, 0.343021, + 0.342661, 0.342300, 0.341940, 0.341580, 0.341219, 0.340859, 0.340498, 0.340138, + 0.339777, 0.339416, 0.339055, 0.338695, 0.338334, 0.337973, 0.337612, 0.337251, + 0.336890, 0.336529, 0.336168, 0.335806, 0.335445, 0.335084, 0.334722, 0.334361, + 0.334000, 0.333638, 0.333277, 0.332915, 0.332553, 0.332192, 0.331830, 0.331468, + 0.331106, 0.330744, 0.330382, 0.330020, 0.329658, 0.329296, 0.328934, 0.328572, + 0.328210, 0.327848, 0.327485, 0.327123, 0.326760, 0.326398, 0.326035, 0.325673, + 0.325310, 0.324948, 0.324585, 0.324222, 0.323859, 0.323497, 0.323134, 0.322771, + 0.322408, 0.322045, 0.321682, 0.321318, 0.320955, 0.320592, 0.320229, 0.319865, + 0.319502, 0.319139, 0.318775, 0.318412, 0.318048, 0.317684, 0.317321, 0.316957, + 0.316593, 0.316230, 0.315866, 0.315502, 0.315138, 0.314774, 0.314410, 0.314046, + 0.313682, 0.313318, 0.312953, 0.312589, 0.312225, 0.311860, 0.311496, 0.311132, + 0.310767, 0.310403, 0.310038, 0.309673, 0.309309, 0.308944, 0.308579, 0.308214, + 0.307850, 0.307485, 0.307120, 0.306755, 0.306390, 0.306025, 0.305660, 0.305294, + 0.304929, 0.304564, 0.304199, 0.303833, 0.303468, 0.303103, 0.302737, 0.302372, + 0.302006, 0.301640, 0.301275, 0.300909, 0.300543, 0.300177, 0.299812, 0.299446, + 0.299080, 0.298714, 0.298348, 0.297982, 0.297616, 0.297250, 0.296883, 0.296517, + 0.296151, 0.295785, 0.295418, 0.295052, 0.294685, 0.294319, 0.293952, 0.293586, + 0.293219, 0.292852, 0.292486, 0.292119, 0.291752, 0.291385, 0.291019, 0.290652, + 0.290285, 0.289918, 0.289551, 0.289184, 0.288816, 0.288449, 0.288082, 0.287715, + 0.287347, 0.286980, 0.286613, 0.286245, 0.285878, 0.285510, 0.285143, 0.284775, + 0.284408, 0.284040, 0.283672, 0.283304, 0.282937, 0.282569, 0.282201, 0.281833, + 0.281465, 0.281097, 0.280729, 0.280361, 0.279993, 0.279624, 0.279256, 0.278888, + 0.278520, 0.278151, 0.277783, 0.277415, 0.277046, 0.276678, 0.276309, 0.275940, + 0.275572, 0.275203, 0.274834, 0.274466, 0.274097, 0.273728, 0.273359, 0.272990, + 0.272621, 0.272252, 0.271883, 0.271514, 0.271145, 0.270776, 0.270407, 0.270038, + 0.269668, 0.269299, 0.268930, 0.268560, 0.268191, 0.267821, 0.267452, 0.267082, + 0.266713, 0.266343, 0.265973, 0.265604, 0.265234, 0.264864, 0.264494, 0.264125, + 0.263755, 0.263385, 0.263015, 0.262645, 0.262275, 0.261905, 0.261534, 0.261164, + 0.260794, 0.260424, 0.260054, 0.259683, 0.259313, 0.258943, 0.258572, 0.258202, + 0.257831, 0.257461, 0.257090, 0.256719, 0.256349, 0.255978, 0.255607, 0.255236, + 0.254866, 0.254495, 0.254124, 0.253753, 0.253382, 0.253011, 0.252640, 0.252269, + 0.251898, 0.251527, 0.251155, 0.250784, 0.250413, 0.250042, 0.249670, 0.249299, + 0.248928, 0.248556, 0.248185, 0.247813, 0.247442, 0.247070, 0.246698, 0.246327, + 0.245955, 0.245583, 0.245212, 0.244840, 0.244468, 0.244096, 0.243724, 0.243352, + 0.242980, 0.242608, 0.242236, 0.241864, 0.241492, 0.241120, 0.240748, 0.240375, + 0.240003, 0.239631, 0.239258, 0.238886, 0.238514, 0.238141, 0.237769, 0.237396, + 0.237024, 0.236651, 0.236278, 0.235906, 0.235533, 0.235160, 0.234788, 0.234415, + 0.234042, 0.233669, 0.233296, 0.232923, 0.232550, 0.232177, 0.231804, 0.231431, + 0.231058, 0.230685, 0.230312, 0.229939, 0.229565, 0.229192, 0.228819, 0.228445, + 0.228072, 0.227699, 0.227325, 0.226952, 0.226578, 0.226205, 0.225831, 0.225458, + 0.225084, 0.224710, 0.224337, 0.223963, 0.223589, 0.223215, 0.222841, 0.222468, + 0.222094, 0.221720, 0.221346, 0.220972, 0.220598, 0.220224, 0.219850, 0.219475, + 0.219101, 0.218727, 0.218353, 0.217979, 0.217604, 0.217230, 0.216856, 0.216481, + 0.216107, 0.215732, 0.215358, 0.214983, 0.214609, 0.214234, 0.213860, 0.213485, + 0.213110, 0.212736, 0.212361, 0.211986, 0.211611, 0.211237, 0.210862, 0.210487, + 0.210112, 0.209737, 0.209362, 0.208987, 0.208612, 0.208237, 0.207862, 0.207487, + 0.207111, 0.206736, 0.206361, 0.205986, 0.205610, 0.205235, 0.204860, 0.204484, + 0.204109, 0.203734, 0.203358, 0.202983, 0.202607, 0.202231, 0.201856, 0.201480, + 0.201105, 0.200729, 0.200353, 0.199978, 0.199602, 0.199226, 0.198850, 0.198474, + 0.198098, 0.197722, 0.197347, 0.196971, 0.196595, 0.196219, 0.195843, 0.195466, + 0.195090, 0.194714, 0.194338, 0.193962, 0.193586, 0.193209, 0.192833, 0.192457, + 0.192080, 0.191704, 0.191328, 0.190951, 0.190575, 0.190198, 0.189822, 0.189445, + 0.189069, 0.188692, 0.188315, 0.187939, 0.187562, 0.187185, 0.186809, 0.186432, + 0.186055, 0.185678, 0.185301, 0.184925, 0.184548, 0.184171, 0.183794, 0.183417, + 0.183040, 0.182663, 0.182286, 0.181909, 0.181532, 0.181154, 0.180777, 0.180400, + 0.180023, 0.179646, 0.179268, 0.178891, 0.178514, 0.178136, 0.177759, 0.177382, + 0.177004, 0.176627, 0.176249, 0.175872, 0.175494, 0.175117, 0.174739, 0.174362, + 0.173984, 0.173606, 0.173229, 0.172851, 0.172473, 0.172095, 0.171718, 0.171340, + 0.170962, 0.170584, 0.170206, 0.169828, 0.169450, 0.169072, 0.168694, 0.168316, + 0.167938, 0.167560, 0.167182, 0.166804, 0.166426, 0.166048, 0.165670, 0.165291, + 0.164913, 0.164535, 0.164157, 0.163778, 0.163400, 0.163022, 0.162643, 0.162265, + 0.161886, 0.161508, 0.161129, 0.160751, 0.160372, 0.159994, 0.159615, 0.159237, + 0.158858, 0.158480, 0.158101, 0.157722, 0.157343, 0.156965, 0.156586, 0.156207, + 0.155828, 0.155450, 0.155071, 0.154692, 0.154313, 0.153934, 0.153555, 0.153176, + 0.152797, 0.152418, 0.152039, 0.151660, 0.151281, 0.150902, 0.150523, 0.150144, + 0.149765, 0.149385, 0.149006, 0.148627, 0.148248, 0.147868, 0.147489, 0.147110, + 0.146730, 0.146351, 0.145972, 0.145592, 0.145213, 0.144833, 0.144454, 0.144075, + 0.143695, 0.143316, 0.142936, 0.142556, 0.142177, 0.141797, 0.141418, 0.141038, + 0.140658, 0.140279, 0.139899, 0.139519, 0.139139, 0.138760, 0.138380, 0.138000, + 0.137620, 0.137240, 0.136860, 0.136480, 0.136101, 0.135721, 0.135341, 0.134961, + 0.134581, 0.134201, 0.133821, 0.133441, 0.133061, 0.132680, 0.132300, 0.131920, + 0.131540, 0.131160, 0.130780, 0.130399, 0.130019, 0.129639, 0.129259, 0.128878, + 0.128498, 0.128118, 0.127737, 0.127357, 0.126977, 0.126596, 0.126216, 0.125835, + 0.125455, 0.125075, 0.124694, 0.124314, 0.123933, 0.123552, 0.123172, 0.122791, + 0.122411, 0.122030, 0.121649, 0.121269, 0.120888, 0.120507, 0.120127, 0.119746, + 0.119365, 0.118984, 0.118604, 0.118223, 0.117842, 0.117461, 0.117080, 0.116700, + 0.116319, 0.115938, 0.115557, 0.115176, 0.114795, 0.114414, 0.114033, 0.113652, + 0.113271, 0.112890, 0.112509, 0.112128, 0.111747, 0.111366, 0.110984, 0.110603, + 0.110222, 0.109841, 0.109460, 0.109079, 0.108697, 0.108316, 0.107935, 0.107554, + 0.107172, 0.106791, 0.106410, 0.106028, 0.105647, 0.105266, 0.104884, 0.104503, + 0.104122, 0.103740, 0.103359, 0.102977, 0.102596, 0.102214, 0.101833, 0.101451, + 0.101070, 0.100688, 0.100307, 0.099925, 0.099544, 0.099162, 0.098780, 0.098399, + 0.098017, 0.097635, 0.097254, 0.096872, 0.096490, 0.096109, 0.095727, 0.095345, + 0.094963, 0.094582, 0.094200, 0.093818, 0.093436, 0.093055, 0.092673, 0.092291, + 0.091909, 0.091527, 0.091145, 0.090763, 0.090381, 0.089999, 0.089617, 0.089236, + 0.088854, 0.088472, 0.088090, 0.087708, 0.087326, 0.086943, 0.086561, 0.086179, + 0.085797, 0.085415, 0.085033, 0.084651, 0.084269, 0.083887, 0.083505, 0.083122, + 0.082740, 0.082358, 0.081976, 0.081594, 0.081211, 0.080829, 0.080447, 0.080065, + 0.079682, 0.079300, 0.078918, 0.078536, 0.078153, 0.077771, 0.077389, 0.077006, + 0.076624, 0.076241, 0.075859, 0.075477, 0.075094, 0.074712, 0.074329, 0.073947, + 0.073565, 0.073182, 0.072800, 0.072417, 0.072035, 0.071652, 0.071270, 0.070887, + 0.070505, 0.070122, 0.069739, 0.069357, 0.068974, 0.068592, 0.068209, 0.067827, + 0.067444, 0.067061, 0.066679, 0.066296, 0.065913, 0.065531, 0.065148, 0.064765, + 0.064383, 0.064000, 0.063617, 0.063234, 0.062852, 0.062469, 0.062086, 0.061704, + 0.061321, 0.060938, 0.060555, 0.060172, 0.059790, 0.059407, 0.059024, 0.058641, + 0.058258, 0.057875, 0.057493, 0.057110, 0.056727, 0.056344, 0.055961, 0.055578, + 0.055195, 0.054812, 0.054429, 0.054046, 0.053664, 0.053281, 0.052898, 0.052515, + 0.052132, 0.051749, 0.051366, 0.050983, 0.050600, 0.050217, 0.049834, 0.049451, + 0.049068, 0.048685, 0.048302, 0.047919, 0.047535, 0.047152, 0.046769, 0.046386, + 0.046003, 0.045620, 0.045237, 0.044854, 0.044471, 0.044088, 0.043705, 0.043321, + 0.042938, 0.042555, 0.042172, 0.041789, 0.041406, 0.041022, 0.040639, 0.040256, + 0.039873, 0.039490, 0.039107, 0.038723, 0.038340, 0.037957, 0.037574, 0.037190, + 0.036807, 0.036424, 0.036041, 0.035657, 0.035274, 0.034891, 0.034508, 0.034124, + 0.033741, 0.033358, 0.032975, 0.032591, 0.032208, 0.031825, 0.031441, 0.031058, + 0.030675, 0.030291, 0.029908, 0.029525, 0.029142, 0.028758, 0.028375, 0.027991, + 0.027608, 0.027225, 0.026841, 0.026458, 0.026075, 0.025691, 0.025308, 0.024925, + 0.024541, 0.024158, 0.023774, 0.023391, 0.023008, 0.022624, 0.022241, 0.021857, + 0.021474, 0.021091, 0.020707, 0.020324, 0.019940, 0.019557, 0.019174, 0.018790, + 0.018407, 0.018023, 0.017640, 0.017256, 0.016873, 0.016490, 0.016106, 0.015723, + 0.015339, 0.014956, 0.014572, 0.014189, 0.013805, 0.013422, 0.013038, 0.012655, + 0.012272, 0.011888, 0.011505, 0.011121, 0.010738, 0.010354, 0.009971, 0.009587, + 0.009204, 0.008820, 0.008437, 0.008053, 0.007670, 0.007286, 0.006903, 0.006519, + 0.006136, 0.005752, 0.005369, 0.004985, 0.004602, 0.004218, 0.003835, 0.003451, + 0.003068, 0.002684, 0.002301, 0.001917, 0.001534, 0.001150, 0.000767, 0.000383, + 0.000000, 0.000383, 0.000767, 0.001150, 0.001534, 0.001917, 0.002301, 0.002684, + 0.003068, 0.003451, 0.003835, 0.004218, 0.004602, 0.004985, 0.005369, 0.005752, + 0.006136, 0.006519, 0.006903, 0.007286, 0.007670, 0.008053, 0.008437, 0.008820, + 0.009204, 0.009587, 0.009971, 0.010354, 0.010738, 0.011121, 0.011505, 0.011888, + 0.012272, 0.012655, 0.013038, 0.013422, 0.013805, 0.014189, 0.014572, 0.014956, + 0.015339, 0.015723, 0.016106, 0.016490, 0.016873, 0.017256, 0.017640, 0.018023, + 0.018407, 0.018790, 0.019174, 0.019557, 0.019940, 0.020324, 0.020707, 0.021091, + 0.021474, 0.021857, 0.022241, 0.022624, 0.023008, 0.023391, 0.023774, 0.024158, + 0.024541, 0.024925, 0.025308, 0.025691, 0.026075, 0.026458, 0.026841, 0.027225, + 0.027608, 0.027991, 0.028375, 0.028758, 0.029142, 0.029525, 0.029908, 0.030291, + 0.030675, 0.031058, 0.031441, 0.031825, 0.032208, 0.032591, 0.032975, 0.033358, + 0.033741, 0.034124, 0.034508, 0.034891, 0.035274, 0.035657, 0.036041, 0.036424, + 0.036807, 0.037190, 0.037574, 0.037957, 0.038340, 0.038723, 0.039107, 0.039490, + 0.039873, 0.040256, 0.040639, 0.041022, 0.041406, 0.041789, 0.042172, 0.042555, + 0.042938, 0.043321, 0.043705, 0.044088, 0.044471, 0.044854, 0.045237, 0.045620, + 0.046003, 0.046386, 0.046769, 0.047152, 0.047535, 0.047919, 0.048302, 0.048685, + 0.049068, 0.049451, 0.049834, 0.050217, 0.050600, 0.050983, 0.051366, 0.051749, + 0.052132, 0.052515, 0.052898, 0.053281, 0.053664, 0.054046, 0.054429, 0.054812, + 0.055195, 0.055578, 0.055961, 0.056344, 0.056727, 0.057110, 0.057493, 0.057875, + 0.058258, 0.058641, 0.059024, 0.059407, 0.059790, 0.060172, 0.060555, 0.060938, + 0.061321, 0.061704, 0.062086, 0.062469, 0.062852, 0.063234, 0.063617, 0.064000, + 0.064383, 0.064765, 0.065148, 0.065531, 0.065913, 0.066296, 0.066679, 0.067061, + 0.067444, 0.067827, 0.068209, 0.068592, 0.068974, 0.069357, 0.069739, 0.070122, + 0.070505, 0.070887, 0.071270, 0.071652, 0.072035, 0.072417, 0.072800, 0.073182, + 0.073565, 0.073947, 0.074329, 0.074712, 0.075094, 0.075477, 0.075859, 0.076241, + 0.076624, 0.077006, 0.077389, 0.077771, 0.078153, 0.078536, 0.078918, 0.079300, + 0.079682, 0.080065, 0.080447, 0.080829, 0.081211, 0.081594, 0.081976, 0.082358, + 0.082740, 0.083122, 0.083505, 0.083887, 0.084269, 0.084651, 0.085033, 0.085415, + 0.085797, 0.086179, 0.086561, 0.086943, 0.087326, 0.087708, 0.088090, 0.088472, + 0.088854, 0.089236, 0.089617, 0.089999, 0.090381, 0.090763, 0.091145, 0.091527, + 0.091909, 0.092291, 0.092673, 0.093055, 0.093436, 0.093818, 0.094200, 0.094582, + 0.094963, 0.095345, 0.095727, 0.096109, 0.096490, 0.096872, 0.097254, 0.097635, + 0.098017, 0.098399, 0.098780, 0.099162, 0.099544, 0.099925, 0.100307, 0.100688, + 0.101070, 0.101451, 0.101833, 0.102214, 0.102596, 0.102977, 0.103359, 0.103740, + 0.104122, 0.104503, 0.104884, 0.105266, 0.105647, 0.106028, 0.106410, 0.106791, + 0.107172, 0.107554, 0.107935, 0.108316, 0.108697, 0.109079, 0.109460, 0.109841, + 0.110222, 0.110603, 0.110984, 0.111366, 0.111747, 0.112128, 0.112509, 0.112890, + 0.113271, 0.113652, 0.114033, 0.114414, 0.114795, 0.115176, 0.115557, 0.115938, + 0.116319, 0.116700, 0.117080, 0.117461, 0.117842, 0.118223, 0.118604, 0.118984, + 0.119365, 0.119746, 0.120127, 0.120507, 0.120888, 0.121269, 0.121649, 0.122030, + 0.122411, 0.122791, 0.123172, 0.123552, 0.123933, 0.124314, 0.124694, 0.125075, + 0.125455, 0.125835, 0.126216, 0.126596, 0.126977, 0.127357, 0.127737, 0.128118, + 0.128498, 0.128878, 0.129259, 0.129639, 0.130019, 0.130399, 0.130780, 0.131160, + 0.131540, 0.131920, 0.132300, 0.132680, 0.133061, 0.133441, 0.133821, 0.134201, + 0.134581, 0.134961, 0.135341, 0.135721, 0.136101, 0.136480, 0.136860, 0.137240, + 0.137620, 0.138000, 0.138380, 0.138760, 0.139139, 0.139519, 0.139899, 0.140279, + 0.140658, 0.141038, 0.141418, 0.141797, 0.142177, 0.142556, 0.142936, 0.143316, + 0.143695, 0.144075, 0.144454, 0.144833, 0.145213, 0.145592, 0.145972, 0.146351, + 0.146730, 0.147110, 0.147489, 0.147868, 0.148248, 0.148627, 0.149006, 0.149385, + 0.149765, 0.150144, 0.150523, 0.150902, 0.151281, 0.151660, 0.152039, 0.152418, + 0.152797, 0.153176, 0.153555, 0.153934, 0.154313, 0.154692, 0.155071, 0.155450, + 0.155828, 0.156207, 0.156586, 0.156965, 0.157343, 0.157722, 0.158101, 0.158480, + 0.158858, 0.159237, 0.159615, 0.159994, 0.160372, 0.160751, 0.161129, 0.161508, + 0.161886, 0.162265, 0.162643, 0.163022, 0.163400, 0.163778, 0.164157, 0.164535, + 0.164913, 0.165291, 0.165670, 0.166048, 0.166426, 0.166804, 0.167182, 0.167560, + 0.167938, 0.168316, 0.168694, 0.169072, 0.169450, 0.169828, 0.170206, 0.170584, + 0.170962, 0.171340, 0.171718, 0.172095, 0.172473, 0.172851, 0.173229, 0.173606, + 0.173984, 0.174362, 0.174739, 0.175117, 0.175494, 0.175872, 0.176249, 0.176627, + 0.177004, 0.177382, 0.177759, 0.178136, 0.178514, 0.178891, 0.179268, 0.179646, + 0.180023, 0.180400, 0.180777, 0.181154, 0.181532, 0.181909, 0.182286, 0.182663, + 0.183040, 0.183417, 0.183794, 0.184171, 0.184548, 0.184925, 0.185301, 0.185678, + 0.186055, 0.186432, 0.186809, 0.187185, 0.187562, 0.187939, 0.188315, 0.188692, + 0.189069, 0.189445, 0.189822, 0.190198, 0.190575, 0.190951, 0.191328, 0.191704, + 0.192080, 0.192457, 0.192833, 0.193209, 0.193586, 0.193962, 0.194338, 0.194714, + 0.195090, 0.195466, 0.195843, 0.196219, 0.196595, 0.196971, 0.197347, 0.197722, + 0.198098, 0.198474, 0.198850, 0.199226, 0.199602, 0.199978, 0.200353, 0.200729, + 0.201105, 0.201480, 0.201856, 0.202231, 0.202607, 0.202983, 0.203358, 0.203734, + 0.204109, 0.204484, 0.204860, 0.205235, 0.205610, 0.205986, 0.206361, 0.206736, + 0.207111, 0.207487, 0.207862, 0.208237, 0.208612, 0.208987, 0.209362, 0.209737, + 0.210112, 0.210487, 0.210862, 0.211237, 0.211611, 0.211986, 0.212361, 0.212736, + 0.213110, 0.213485, 0.213860, 0.214234, 0.214609, 0.214983, 0.215358, 0.215732, + 0.216107, 0.216481, 0.216856, 0.217230, 0.217604, 0.217979, 0.218353, 0.218727, + 0.219101, 0.219475, 0.219850, 0.220224, 0.220598, 0.220972, 0.221346, 0.221720, + 0.222094, 0.222468, 0.222841, 0.223215, 0.223589, 0.223963, 0.224337, 0.224710, + 0.225084, 0.225458, 0.225831, 0.226205, 0.226578, 0.226952, 0.227325, 0.227699, + 0.228072, 0.228445, 0.228819, 0.229192, 0.229565, 0.229939, 0.230312, 0.230685, + 0.231058, 0.231431, 0.231804, 0.232177, 0.232550, 0.232923, 0.233296, 0.233669, + 0.234042, 0.234415, 0.234788, 0.235160, 0.235533, 0.235906, 0.236278, 0.236651, + 0.237024, 0.237396, 0.237769, 0.238141, 0.238514, 0.238886, 0.239258, 0.239631, + 0.240003, 0.240375, 0.240748, 0.241120, 0.241492, 0.241864, 0.242236, 0.242608, + 0.242980, 0.243352, 0.243724, 0.244096, 0.244468, 0.244840, 0.245212, 0.245583, + 0.245955, 0.246327, 0.246698, 0.247070, 0.247442, 0.247813, 0.248185, 0.248556, + 0.248928, 0.249299, 0.249670, 0.250042, 0.250413, 0.250784, 0.251155, 0.251527, + 0.251898, 0.252269, 0.252640, 0.253011, 0.253382, 0.253753, 0.254124, 0.254495, + 0.254866, 0.255236, 0.255607, 0.255978, 0.256349, 0.256719, 0.257090, 0.257461, + 0.257831, 0.258202, 0.258572, 0.258943, 0.259313, 0.259683, 0.260054, 0.260424, + 0.260794, 0.261164, 0.261534, 0.261905, 0.262275, 0.262645, 0.263015, 0.263385, + 0.263755, 0.264125, 0.264494, 0.264864, 0.265234, 0.265604, 0.265973, 0.266343, + 0.266713, 0.267082, 0.267452, 0.267821, 0.268191, 0.268560, 0.268930, 0.269299, + 0.269668, 0.270038, 0.270407, 0.270776, 0.271145, 0.271514, 0.271883, 0.272252, + 0.272621, 0.272990, 0.273359, 0.273728, 0.274097, 0.274466, 0.274834, 0.275203, + 0.275572, 0.275940, 0.276309, 0.276678, 0.277046, 0.277415, 0.277783, 0.278151, + 0.278520, 0.278888, 0.279256, 0.279624, 0.279993, 0.280361, 0.280729, 0.281097, + 0.281465, 0.281833, 0.282201, 0.282569, 0.282937, 0.283304, 0.283672, 0.284040, + 0.284408, 0.284775, 0.285143, 0.285510, 0.285878, 0.286245, 0.286613, 0.286980, + 0.287347, 0.287715, 0.288082, 0.288449, 0.288816, 0.289184, 0.289551, 0.289918, + 0.290285, 0.290652, 0.291019, 0.291385, 0.291752, 0.292119, 0.292486, 0.292852, + 0.293219, 0.293586, 0.293952, 0.294319, 0.294685, 0.295052, 0.295418, 0.295785, + 0.296151, 0.296517, 0.296883, 0.297250, 0.297616, 0.297982, 0.298348, 0.298714, + 0.299080, 0.299446, 0.299812, 0.300177, 0.300543, 0.300909, 0.301275, 0.301640, + 0.302006, 0.302372, 0.302737, 0.303103, 0.303468, 0.303833, 0.304199, 0.304564, + 0.304929, 0.305294, 0.305660, 0.306025, 0.306390, 0.306755, 0.307120, 0.307485, + 0.307850, 0.308214, 0.308579, 0.308944, 0.309309, 0.309673, 0.310038, 0.310403, + 0.310767, 0.311132, 0.311496, 0.311860, 0.312225, 0.312589, 0.312953, 0.313318, + 0.313682, 0.314046, 0.314410, 0.314774, 0.315138, 0.315502, 0.315866, 0.316230, + 0.316593, 0.316957, 0.317321, 0.317684, 0.318048, 0.318412, 0.318775, 0.319139, + 0.319502, 0.319865, 0.320229, 0.320592, 0.320955, 0.321318, 0.321682, 0.322045, + 0.322408, 0.322771, 0.323134, 0.323497, 0.323859, 0.324222, 0.324585, 0.324948, + 0.325310, 0.325673, 0.326035, 0.326398, 0.326760, 0.327123, 0.327485, 0.327848, + 0.328210, 0.328572, 0.328934, 0.329296, 0.329658, 0.330020, 0.330382, 0.330744, + 0.331106, 0.331468, 0.331830, 0.332192, 0.332553, 0.332915, 0.333277, 0.333638, + 0.334000, 0.334361, 0.334722, 0.335084, 0.335445, 0.335806, 0.336168, 0.336529, + 0.336890, 0.337251, 0.337612, 0.337973, 0.338334, 0.338695, 0.339055, 0.339416, + 0.339777, 0.340138, 0.340498, 0.340859, 0.341219, 0.341580, 0.341940, 0.342300, + 0.342661, 0.343021, 0.343381, 0.343741, 0.344101, 0.344461, 0.344821, 0.345181, + 0.345541, 0.345901, 0.346261, 0.346621, 0.346980, 0.347340, 0.347700, 0.348059, + 0.348419, 0.348778, 0.349138, 0.349497, 0.349856, 0.350215, 0.350575, 0.350934, + 0.351293, 0.351652, 0.352011, 0.352370, 0.352729, 0.353087, 0.353446, 0.353805, + 0.354164, 0.354522, 0.354881, 0.355239, 0.355598, 0.355956, 0.356314, 0.356673, + 0.357031, 0.357389, 0.357747, 0.358105, 0.358463, 0.358821, 0.359179, 0.359537, + 0.359895, 0.360253, 0.360611, 0.360968, 0.361326, 0.361683, 0.362041, 0.362398, + 0.362756, 0.363113, 0.363470, 0.363828, 0.364185, 0.364542, 0.364899, 0.365256, + 0.365613, 0.365970, 0.366327, 0.366684, 0.367040, 0.367397, 0.367754, 0.368110, + 0.368467, 0.368823, 0.369180, 0.369536, 0.369892, 0.370249, 0.370605, 0.370961, + 0.371317, 0.371673, 0.372029, 0.372385, 0.372741, 0.373097, 0.373453, 0.373808, + 0.374164, 0.374520, 0.374875, 0.375231, 0.375586, 0.375942, 0.376297, 0.376652, + 0.377007, 0.377363, 0.377718, 0.378073, 0.378428, 0.378783, 0.379138, 0.379492, + 0.379847, 0.380202, 0.380557, 0.380911, 0.381266, 0.381620, 0.381975, 0.382329, + 0.382683, 0.383038, 0.383392, 0.383746, 0.384100, 0.384454, 0.384808, 0.385162, + 0.385516, 0.385870, 0.386224, 0.386577, 0.386931, 0.387285, 0.387638, 0.387992, + 0.388345, 0.388698, 0.389052, 0.389405, 0.389758, 0.390111, 0.390464, 0.390817, + 0.391170, 0.391523, 0.391876, 0.392229, 0.392582, 0.392934, 0.393287, 0.393640, + 0.393992, 0.394344, 0.394697, 0.395049, 0.395401, 0.395754, 0.396106, 0.396458, + 0.396810, 0.397162, 0.397514, 0.397866, 0.398218, 0.398569, 0.398921, 0.399273, + 0.399624, 0.399976, 0.400327, 0.400679, 0.401030, 0.401381, 0.401732, 0.402084, + 0.402435, 0.402786, 0.403137, 0.403488, 0.403838, 0.404189, 0.404540, 0.404891, + 0.405241, 0.405592, 0.405942, 0.406293, 0.406643, 0.406994, 0.407344, 0.407694, + 0.408044, 0.408394, 0.408744, 0.409094, 0.409444, 0.409794, 0.410144, 0.410493, + 0.410843, 0.411193, 0.411542, 0.411892, 0.412241, 0.412591, 0.412940, 0.413289, + 0.413638, 0.413987, 0.414337, 0.414685, 0.415034, 0.415383, 0.415732, 0.416081, + 0.416430, 0.416778, 0.417127, 0.417475, 0.417824, 0.418172, 0.418520, 0.418869, + 0.419217, 0.419565, 0.419913, 0.420261, 0.420609, 0.420957, 0.421305, 0.421653, + 0.422000, 0.422348, 0.422695, 0.423043, 0.423390, 0.423738, 0.424085, 0.424432, + 0.424780, 0.425127, 0.425474, 0.425821, 0.426168, 0.426515, 0.426862, 0.427208, + 0.427555, 0.427902, 0.428248, 0.428595, 0.428941, 0.429288, 0.429634, 0.429980, + 0.430326, 0.430673, 0.431019, 0.431365, 0.431711, 0.432057, 0.432402, 0.432748, + 0.433094, 0.433439, 0.433785, 0.434131, 0.434476, 0.434821, 0.435167, 0.435512, + 0.435857, 0.436202, 0.436547, 0.436892, 0.437237, 0.437582, 0.437927, 0.438272, + 0.438616, 0.438961, 0.439305, 0.439650, 0.439994, 0.440339, 0.440683, 0.441027, + 0.441371, 0.441715, 0.442059, 0.442403, 0.442747, 0.443091, 0.443435, 0.443779, + 0.444122, 0.444466, 0.444809, 0.445153, 0.445496, 0.445839, 0.446183, 0.446526, + 0.446869, 0.447212, 0.447555, 0.447898, 0.448241, 0.448583, 0.448926, 0.449269, + 0.449611, 0.449954, 0.450296, 0.450639, 0.450981, 0.451323, 0.451665, 0.452008, + 0.452350, 0.452692, 0.453033, 0.453375, 0.453717, 0.454059, 0.454400, 0.454742, + 0.455084, 0.455425, 0.455766, 0.456108, 0.456449, 0.456790, 0.457131, 0.457472, + 0.457813, 0.458154, 0.458495, 0.458836, 0.459177, 0.459517, 0.459858, 0.460198, + 0.460539, 0.460879, 0.461219, 0.461560, 0.461900, 0.462240, 0.462580, 0.462920, + 0.463260, 0.463600, 0.463939, 0.464279, 0.464619, 0.464958, 0.465298, 0.465637, + 0.465977, 0.466316, 0.466655, 0.466994, 0.467333, 0.467672, 0.468011, 0.468350, + 0.468689, 0.469028, 0.469366, 0.469705, 0.470043, 0.470382, 0.470720, 0.471058, + 0.471397, 0.471735, 0.472073, 0.472411, 0.472749, 0.473087, 0.473425, 0.473763, + 0.474100, 0.474438, 0.474775, 0.475113, 0.475450, 0.475788, 0.476125, 0.476462, + 0.476799, 0.477136, 0.477473, 0.477810, 0.478147, 0.478484, 0.478821, 0.479157, + 0.479494, 0.479830, 0.480167, 0.480503, 0.480839, 0.481176, 0.481512, 0.481848, + 0.482184, 0.482520, 0.482856, 0.483191, 0.483527, 0.483863, 0.484198, 0.484534, + 0.484869, 0.485205, 0.485540, 0.485875, 0.486210, 0.486545, 0.486880, 0.487215, + 0.487550, 0.487885, 0.488220, 0.488554, 0.488889, 0.489223, 0.489558, 0.489892, + 0.490226, 0.490561, 0.490895, 0.491229, 0.491563, 0.491897, 0.492231, 0.492564, + 0.492898, 0.493232, 0.493565, 0.493899, 0.494232, 0.494566, 0.494899, 0.495232, + 0.495565, 0.495898, 0.496231, 0.496564, 0.496897, 0.497230, 0.497562, 0.497895, + 0.498228, 0.498560, 0.498893, 0.499225, 0.499557, 0.499889, 0.500221, 0.500553, + 0.500885, 0.501217, 0.501549, 0.501881, 0.502212, 0.502544, 0.502876, 0.503207, + 0.503538, 0.503870, 0.504201, 0.504532, 0.504863, 0.505194, 0.505525, 0.505856, + 0.506187, 0.506517, 0.506848, 0.507179, 0.507509, 0.507839, 0.508170, 0.508500, + 0.508830, 0.509160, 0.509490, 0.509820, 0.510150, 0.510480, 0.510810, 0.511139, + 0.511469, 0.511798, 0.512128, 0.512457, 0.512786, 0.513116, 0.513445, 0.513774, + 0.514103, 0.514432, 0.514760, 0.515089, 0.515418, 0.515746, 0.516075, 0.516403, + 0.516732, 0.517060, 0.517388, 0.517716, 0.518045, 0.518372, 0.518700, 0.519028, + 0.519356, 0.519684, 0.520011, 0.520339, 0.520666, 0.520994, 0.521321, 0.521648, + 0.521975, 0.522302, 0.522629, 0.522956, 0.523283, 0.523610, 0.523937, 0.524263, + 0.524590, 0.524916, 0.525243, 0.525569, 0.525895, 0.526221, 0.526547, 0.526873, + 0.527199, 0.527525, 0.527851, 0.528176, 0.528502, 0.528828, 0.529153, 0.529478, + 0.529804, 0.530129, 0.530454, 0.530779, 0.531104, 0.531429, 0.531754, 0.532078, + 0.532403, 0.532728, 0.533052, 0.533377, 0.533701, 0.534025, 0.534349, 0.534674, + 0.534998, 0.535322, 0.535645, 0.535969, 0.536293, 0.536617, 0.536940, 0.537264, + 0.537587, 0.537910, 0.538234, 0.538557, 0.538880, 0.539203, 0.539526, 0.539849, + 0.540171, 0.540494, 0.540817, 0.541139, 0.541462, 0.541784, 0.542106, 0.542429, + 0.542751, 0.543073, 0.543395, 0.543717, 0.544039, 0.544360, 0.544682, 0.545003, + 0.545325, 0.545646, 0.545968, 0.546289, 0.546610, 0.546931, 0.547252, 0.547573, + 0.547894, 0.548215, 0.548536, 0.548856, 0.549177, 0.549497, 0.549818, 0.550138, + 0.550458, 0.550778, 0.551098, 0.551418, 0.551738, 0.552058, 0.552378, 0.552697, + 0.553017, 0.553336, 0.553656, 0.553975, 0.554294, 0.554613, 0.554932, 0.555251, + 0.555570, 0.555889, 0.556208, 0.556526, 0.556845, 0.557164, 0.557482, 0.557800, + 0.558119, 0.558437, 0.558755, 0.559073, 0.559391, 0.559709, 0.560026, 0.560344, + 0.560662, 0.560979, 0.561297, 0.561614, 0.561931, 0.562248, 0.562565, 0.562882, + 0.563199, 0.563516, 0.563833, 0.564150, 0.564466, 0.564783, 0.565099, 0.565416, + 0.565732, 0.566048, 0.566364, 0.566680, 0.566996, 0.567312, 0.567628, 0.567943, + 0.568259, 0.568574, 0.568890, 0.569205, 0.569521, 0.569836, 0.570151, 0.570466, + 0.570781, 0.571096, 0.571410, 0.571725, 0.572040, 0.572354, 0.572669, 0.572983, + 0.573297, 0.573611, 0.573925, 0.574239, 0.574553, 0.574867, 0.575181, 0.575495, + 0.575808, 0.576122, 0.576435, 0.576748, 0.577062, 0.577375, 0.577688, 0.578001, + 0.578314, 0.578627, 0.578939, 0.579252, 0.579565, 0.579877, 0.580189, 0.580502, + 0.580814, 0.581126, 0.581438, 0.581750, 0.582062, 0.582374, 0.582685, 0.582997, + 0.583309, 0.583620, 0.583931, 0.584243, 0.584554, 0.584865, 0.585176, 0.585487, + 0.585798, 0.586109, 0.586419, 0.586730, 0.587040, 0.587351, 0.587661, 0.587971, + 0.588282, 0.588592, 0.588902, 0.589212, 0.589521, 0.589831, 0.590141, 0.590450, + 0.590760, 0.591069, 0.591378, 0.591688, 0.591997, 0.592306, 0.592615, 0.592924, + 0.593232, 0.593541, 0.593850, 0.594158, 0.594467, 0.594775, 0.595083, 0.595391, + 0.595699, 0.596007, 0.596315, 0.596623, 0.596931, 0.597238, 0.597546, 0.597853, + 0.598161, 0.598468, 0.598775, 0.599082, 0.599389, 0.599696, 0.600003, 0.600310, + 0.600616, 0.600923, 0.601230, 0.601536, 0.601842, 0.602148, 0.602455, 0.602761, + 0.603067, 0.603372, 0.603678, 0.603984, 0.604290, 0.604595, 0.604900, 0.605206, + 0.605511, 0.605816, 0.606121, 0.606426, 0.606731, 0.607036, 0.607341, 0.607645, + 0.607950, 0.608254, 0.608559, 0.608863, 0.609167, 0.609471, 0.609775, 0.610079, + 0.610383, 0.610687, 0.610990, 0.611294, 0.611597, 0.611901, 0.612204, 0.612507, + 0.612810, 0.613113, 0.613416, 0.613719, 0.614022, 0.614324, 0.614627, 0.614929, + 0.615232, 0.615534, 0.615836, 0.616138, 0.616440, 0.616742, 0.617044, 0.617346, + 0.617647, 0.617949, 0.618250, 0.618552, 0.618853, 0.619154, 0.619455, 0.619756, + 0.620057, 0.620358, 0.620659, 0.620959, 0.621260, 0.621560, 0.621861, 0.622161, + 0.622461, 0.622761, 0.623061, 0.623361, 0.623661, 0.623961, 0.624260, 0.624560, + 0.624860, 0.625159, 0.625458, 0.625757, 0.626056, 0.626355, 0.626654, 0.626953, + 0.627252, 0.627550, 0.627849, 0.628147, 0.628446, 0.628744, 0.629042, 0.629340, + 0.629638, 0.629936, 0.630234, 0.630532, 0.630829, 0.631127, 0.631424, 0.631721, + 0.632019, 0.632316, 0.632613, 0.632910, 0.633207, 0.633504, 0.633800, 0.634097, + 0.634393, 0.634690, 0.634986, 0.635282, 0.635578, 0.635874, 0.636170, 0.636466, + 0.636762, 0.637057, 0.637353, 0.637649, 0.637944, 0.638239, 0.638534, 0.638829, + 0.639124, 0.639419, 0.639714, 0.640009, 0.640303, 0.640598, 0.640892, 0.641187, + 0.641481, 0.641775, 0.642069, 0.642363, 0.642657, 0.642951, 0.643245, 0.643538, + 0.643832, 0.644125, 0.644418, 0.644711, 0.645005, 0.645298, 0.645590, 0.645883, + 0.646176, 0.646469, 0.646761, 0.647054, 0.647346, 0.647638, 0.647930, 0.648222, + 0.648514, 0.648806, 0.649098, 0.649390, 0.649681, 0.649973, 0.650264, 0.650555, + 0.650847, 0.651138, 0.651429, 0.651720, 0.652011, 0.652301, 0.652592, 0.652882, + 0.653173, 0.653463, 0.653753, 0.654044, 0.654334, 0.654624, 0.654913, 0.655203, + 0.655493, 0.655782, 0.656072, 0.656361, 0.656651, 0.656940, 0.657229, 0.657518, + 0.657807, 0.658095, 0.658384, 0.658673, 0.658961, 0.659250, 0.659538, 0.659826, + 0.660114, 0.660402, 0.660690, 0.660978, 0.661266, 0.661553, 0.661841, 0.662128, + 0.662416, 0.662703, 0.662990, 0.663277, 0.663564, 0.663851, 0.664138, 0.664424, + 0.664711, 0.664997, 0.665284, 0.665570, 0.665856, 0.666142, 0.666428, 0.666714, + 0.667000, 0.667286, 0.667571, 0.667857, 0.668142, 0.668427, 0.668712, 0.668998, + 0.669283, 0.669567, 0.669852, 0.670137, 0.670422, 0.670706, 0.670990, 0.671275, + 0.671559, 0.671843, 0.672127, 0.672411, 0.672695, 0.672978, 0.673262, 0.673546, + 0.673829, 0.674112, 0.674396, 0.674679, 0.674962, 0.675245, 0.675527, 0.675810, + 0.676093, 0.676375, 0.676658, 0.676940, 0.677222, 0.677504, 0.677786, 0.678068, + 0.678350, 0.678632, 0.678913, 0.679195, 0.679476, 0.679758, 0.680039, 0.680320, + 0.680601, 0.680882, 0.681163, 0.681443, 0.681724, 0.682005, 0.682285, 0.682565, + 0.682846, 0.683126, 0.683406, 0.683686, 0.683965, 0.684245, 0.684525, 0.684804, + 0.685084, 0.685363, 0.685642, 0.685921, 0.686200, 0.686479, 0.686758, 0.687037, + 0.687315, 0.687594, 0.687872, 0.688151, 0.688429, 0.688707, 0.688985, 0.689263, + 0.689541, 0.689818, 0.690096, 0.690373, 0.690651, 0.690928, 0.691205, 0.691482, + 0.691759, 0.692036, 0.692313, 0.692590, 0.692866, 0.693143, 0.693419, 0.693695, + 0.693971, 0.694248, 0.694524, 0.694799, 0.695075, 0.695351, 0.695626, 0.695902, + 0.696177, 0.696452, 0.696728, 0.697003, 0.697277, 0.697552, 0.697827, 0.698102, + 0.698376, 0.698651, 0.698925, 0.699199, 0.699473, 0.699747, 0.700021, 0.700295, + 0.700569, 0.700842, 0.701116, 0.701389, 0.701663, 0.701936, 0.702209, 0.702482, + 0.702755, 0.703028, 0.703300, 0.703573, 0.703845, 0.704118, 0.704390, 0.704662, + 0.704934, 0.705206, 0.705478, 0.705750, 0.706021, 0.706293, 0.706564, 0.706836, + 0.707107, 0.707378, 0.707649, 0.707920, 0.708191, 0.708461, 0.708732, 0.709002, + 0.709273, 0.709543, 0.709813, 0.710083, 0.710353, 0.710623, 0.710893, 0.711163, + 0.711432, 0.711702, 0.711971, 0.712240, 0.712509, 0.712778, 0.713047, 0.713316, + 0.713585, 0.713853, 0.714122, 0.714390, 0.714659, 0.714927, 0.715195, 0.715463, + 0.715731, 0.715999, 0.716266, 0.716534, 0.716801, 0.717069, 0.717336, 0.717603, + 0.717870, 0.718137, 0.718404, 0.718670, 0.718937, 0.719204, 0.719470, 0.719736, + 0.720003, 0.720269, 0.720535, 0.720800, 0.721066, 0.721332, 0.721597, 0.721863, + 0.722128, 0.722393, 0.722659, 0.722924, 0.723188, 0.723453, 0.723718, 0.723983, + 0.724247, 0.724511, 0.724776, 0.725040, 0.725304, 0.725568, 0.725832, 0.726095, + 0.726359, 0.726623, 0.726886, 0.727149, 0.727413, 0.727676, 0.727939, 0.728202, + 0.728464, 0.728727, 0.728990, 0.729252, 0.729514, 0.729777, 0.730039, 0.730301, + 0.730563, 0.730825, 0.731086, 0.731348, 0.731609, 0.731871, 0.732132, 0.732393, + 0.732654, 0.732915, 0.733176, 0.733437, 0.733697, 0.733958, 0.734218, 0.734479, + 0.734739, 0.734999, 0.735259, 0.735519, 0.735779, 0.736038, 0.736298, 0.736557, + 0.736817, 0.737076, 0.737335, 0.737594, 0.737853, 0.738112, 0.738370, 0.738629, + 0.738887, 0.739146, 0.739404, 0.739662, 0.739920, 0.740178, 0.740436, 0.740694, + 0.740951, 0.741209, 0.741466, 0.741723, 0.741980, 0.742237, 0.742494, 0.742751, + 0.743008, 0.743265, 0.743521, 0.743777, 0.744034, 0.744290, 0.744546, 0.744802, + 0.745058, 0.745314, 0.745569, 0.745825, 0.746080, 0.746335, 0.746591, 0.746846, + 0.747101, 0.747355, 0.747610, 0.747865, 0.748119, 0.748374, 0.748628, 0.748882, + 0.749136, 0.749390, 0.749644, 0.749898, 0.750152, 0.750405, 0.750659, 0.750912, + 0.751165, 0.751418, 0.751671, 0.751924, 0.752177, 0.752429, 0.752682, 0.752934, + 0.753187, 0.753439, 0.753691, 0.753943, 0.754195, 0.754447, 0.754698, 0.754950, + 0.755201, 0.755453, 0.755704, 0.755955, 0.756206, 0.756457, 0.756708, 0.756958, + 0.757209, 0.757459, 0.757710, 0.757960, 0.758210, 0.758460, 0.758710, 0.758960, + 0.759209, 0.759459, 0.759708, 0.759957, 0.760207, 0.760456, 0.760705, 0.760954, + 0.761202, 0.761451, 0.761700, 0.761948, 0.762196, 0.762444, 0.762693, 0.762941, + 0.763188, 0.763436, 0.763684, 0.763931, 0.764179, 0.764426, 0.764673, 0.764920, + 0.765167, 0.765414, 0.765661, 0.765907, 0.766154, 0.766400, 0.766647, 0.766893, + 0.767139, 0.767385, 0.767631, 0.767876, 0.768122, 0.768368, 0.768613, 0.768858, + 0.769103, 0.769348, 0.769593, 0.769838, 0.770083, 0.770327, 0.770572, 0.770816, + 0.771061, 0.771305, 0.771549, 0.771793, 0.772036, 0.772280, 0.772524, 0.772767, + 0.773010, 0.773254, 0.773497, 0.773740, 0.773983, 0.774225, 0.774468, 0.774711, + 0.774953, 0.775195, 0.775438, 0.775680, 0.775922, 0.776164, 0.776405, 0.776647, + 0.776888, 0.777130, 0.777371, 0.777612, 0.777853, 0.778094, 0.778335, 0.778576, + 0.778817, 0.779057, 0.779297, 0.779538, 0.779778, 0.780018, 0.780258, 0.780498, + 0.780737, 0.780977, 0.781216, 0.781456, 0.781695, 0.781934, 0.782173, 0.782412, + 0.782651, 0.782889, 0.783128, 0.783366, 0.783605, 0.783843, 0.784081, 0.784319, + 0.784557, 0.784794, 0.785032, 0.785269, 0.785507, 0.785744, 0.785981, 0.786218, + 0.786455, 0.786692, 0.786929, 0.787165, 0.787402, 0.787638, 0.787874, 0.788110, + 0.788346, 0.788582, 0.788818, 0.789054, 0.789289, 0.789525, 0.789760, 0.789995, + 0.790230, 0.790465, 0.790700, 0.790935, 0.791169, 0.791404, 0.791638, 0.791872, + 0.792107, 0.792341, 0.792575, 0.792808, 0.793042, 0.793276, 0.793509, 0.793742, + 0.793975, 0.794209, 0.794442, 0.794674, 0.794907, 0.795140, 0.795372, 0.795605, + 0.795837, 0.796069, 0.796301, 0.796533, 0.796765, 0.796996, 0.797228, 0.797459, + 0.797691, 0.797922, 0.798153, 0.798384, 0.798615, 0.798846, 0.799076, 0.799307, + 0.799537, 0.799768, 0.799998, 0.800228, 0.800458, 0.800687, 0.800917, 0.801147, + 0.801376, 0.801606, 0.801835, 0.802064, 0.802293, 0.802522, 0.802750, 0.802979, + 0.803208, 0.803436, 0.803664, 0.803892, 0.804120, 0.804348, 0.804576, 0.804804, + 0.805031, 0.805259, 0.805486, 0.805713, 0.805940, 0.806167, 0.806394, 0.806621, + 0.806848, 0.807074, 0.807300, 0.807527, 0.807753, 0.807979, 0.808205, 0.808430, + 0.808656, 0.808882, 0.809107, 0.809332, 0.809558, 0.809783, 0.810008, 0.810232, + 0.810457, 0.810682, 0.810906, 0.811131, 0.811355, 0.811579, 0.811803, 0.812027, + 0.812251, 0.812474, 0.812698, 0.812921, 0.813144, 0.813368, 0.813591, 0.813814, + 0.814036, 0.814259, 0.814482, 0.814704, 0.814926, 0.815149, 0.815371, 0.815593, + 0.815814, 0.816036, 0.816258, 0.816479, 0.816701, 0.816922, 0.817143, 0.817364, + 0.817585, 0.817806, 0.818026, 0.818247, 0.818467, 0.818687, 0.818908, 0.819128, + 0.819348, 0.819567, 0.819787, 0.820007, 0.820226, 0.820445, 0.820664, 0.820884, + 0.821102, 0.821321, 0.821540, 0.821759, 0.821977, 0.822195, 0.822414, 0.822632, + 0.822850, 0.823068, 0.823285, 0.823503, 0.823721, 0.823938, 0.824155, 0.824372, + 0.824589, 0.824806, 0.825023, 0.825240, 0.825456, 0.825673, 0.825889, 0.826105, + 0.826321, 0.826537, 0.826753, 0.826968, 0.827184, 0.827399, 0.827615, 0.827830, + 0.828045, 0.828260, 0.828475, 0.828690, 0.828904, 0.829119, 0.829333, 0.829547, + 0.829761, 0.829975, 0.830189, 0.830403, 0.830616, 0.830830, 0.831043, 0.831257, + 0.831470, 0.831683, 0.831895, 0.832108, 0.832321, 0.832533, 0.832746, 0.832958, + 0.833170, 0.833382, 0.833594, 0.833806, 0.834018, 0.834229, 0.834440, 0.834652, + 0.834863, 0.835074, 0.835285, 0.835496, 0.835706, 0.835917, 0.836127, 0.836338, + 0.836548, 0.836758, 0.836968, 0.837178, 0.837387, 0.837597, 0.837806, 0.838015, + 0.838225, 0.838434, 0.838643, 0.838852, 0.839060, 0.839269, 0.839477, 0.839686, + 0.839894, 0.840102, 0.840310, 0.840518, 0.840725, 0.840933, 0.841140, 0.841348, + 0.841555, 0.841762, 0.841969, 0.842176, 0.842383, 0.842589, 0.842796, 0.843002, + 0.843208, 0.843414, 0.843620, 0.843826, 0.844032, 0.844238, 0.844443, 0.844648, + 0.844854, 0.845059, 0.845264, 0.845469, 0.845673, 0.845878, 0.846082, 0.846287, + 0.846491, 0.846695, 0.846899, 0.847103, 0.847307, 0.847510, 0.847714, 0.847917, + 0.848120, 0.848323, 0.848526, 0.848729, 0.848932, 0.849135, 0.849337, 0.849540, + 0.849742, 0.849944, 0.850146, 0.850348, 0.850549, 0.850751, 0.850953, 0.851154, + 0.851355, 0.851556, 0.851757, 0.851958, 0.852159, 0.852360, 0.852560, 0.852760, + 0.852961, 0.853161, 0.853361, 0.853561, 0.853760, 0.853960, 0.854159, 0.854359, + 0.854558, 0.854757, 0.854956, 0.855155, 0.855354, 0.855552, 0.855751, 0.855949, + 0.856147, 0.856345, 0.856543, 0.856741, 0.856939, 0.857137, 0.857334, 0.857531, + 0.857729, 0.857926, 0.858123, 0.858320, 0.858516, 0.858713, 0.858909, 0.859106, + 0.859302, 0.859498, 0.859694, 0.859890, 0.860085, 0.860281, 0.860476, 0.860672, + 0.860867, 0.861062, 0.861257, 0.861452, 0.861646, 0.861841, 0.862035, 0.862230, + 0.862424, 0.862618, 0.862812, 0.863006, 0.863199, 0.863393, 0.863586, 0.863780, + 0.863973, 0.864166, 0.864359, 0.864552, 0.864744, 0.864937, 0.865129, 0.865321, + 0.865514, 0.865706, 0.865898, 0.866089, 0.866281, 0.866472, 0.866664, 0.866855, + 0.867046, 0.867237, 0.867428, 0.867619, 0.867809, 0.868000, 0.868190, 0.868381, + 0.868571, 0.868761, 0.868951, 0.869140, 0.869330, 0.869519, 0.869709, 0.869898, + 0.870087, 0.870276, 0.870465, 0.870654, 0.870842, 0.871031, 0.871219, 0.871407, + 0.871595, 0.871783, 0.871971, 0.872159, 0.872346, 0.872534, 0.872721, 0.872908, + 0.873095, 0.873282, 0.873469, 0.873655, 0.873842, 0.874028, 0.874215, 0.874401, + 0.874587, 0.874773, 0.874958, 0.875144, 0.875329, 0.875515, 0.875700, 0.875885, + 0.876070, 0.876255, 0.876440, 0.876624, 0.876809, 0.876993, 0.877177, 0.877361, + 0.877545, 0.877729, 0.877913, 0.878096, 0.878280, 0.878463, 0.878646, 0.878829, + 0.879012, 0.879195, 0.879378, 0.879560, 0.879743, 0.879925, 0.880107, 0.880289, + 0.880471, 0.880653, 0.880834, 0.881016, 0.881197, 0.881378, 0.881559, 0.881740, + 0.881921, 0.882102, 0.882283, 0.882463, 0.882643, 0.882824, 0.883004, 0.883184, + 0.883363, 0.883543, 0.883723, 0.883902, 0.884081, 0.884260, 0.884439, 0.884618, + 0.884797, 0.884976, 0.885154, 0.885333, 0.885511, 0.885689, 0.885867, 0.886045, + 0.886223, 0.886400, 0.886578, 0.886755, 0.886932, 0.887109, 0.887286, 0.887463, + 0.887640, 0.887816, 0.887993, 0.888169, 0.888345, 0.888521, 0.888697, 0.888873, + 0.889048, 0.889224, 0.889399, 0.889574, 0.889750, 0.889925, 0.890099, 0.890274, + 0.890449, 0.890623, 0.890797, 0.890972, 0.891146, 0.891320, 0.891493, 0.891667, + 0.891841, 0.892014, 0.892187, 0.892361, 0.892534, 0.892706, 0.892879, 0.893052, + 0.893224, 0.893397, 0.893569, 0.893741, 0.893913, 0.894085, 0.894256, 0.894428, + 0.894599, 0.894771, 0.894942, 0.895113, 0.895284, 0.895455, 0.895625, 0.895796, + 0.895966, 0.896137, 0.896307, 0.896477, 0.896646, 0.896816, 0.896986, 0.897155, + 0.897325, 0.897494, 0.897663, 0.897832, 0.898001, 0.898169, 0.898338, 0.898506, + 0.898674, 0.898843, 0.899011, 0.899179, 0.899346, 0.899514, 0.899681, 0.899849, + 0.900016, 0.900183, 0.900350, 0.900517, 0.900683, 0.900850, 0.901016, 0.901183, + 0.901349, 0.901515, 0.901681, 0.901847, 0.902012, 0.902178, 0.902343, 0.902508, + 0.902673, 0.902838, 0.903003, 0.903168, 0.903332, 0.903497, 0.903661, 0.903825, + 0.903989, 0.904153, 0.904317, 0.904481, 0.904644, 0.904807, 0.904971, 0.905134, + 0.905297, 0.905460, 0.905622, 0.905785, 0.905947, 0.906110, 0.906272, 0.906434, + 0.906596, 0.906757, 0.906919, 0.907081, 0.907242, 0.907403, 0.907564, 0.907725, + 0.907886, 0.908047, 0.908207, 0.908368, 0.908528, 0.908688, 0.908848, 0.909008, + 0.909168, 0.909328, 0.909487, 0.909646, 0.909806, 0.909965, 0.910124, 0.910283, + 0.910441, 0.910600, 0.910758, 0.910917, 0.911075, 0.911233, 0.911391, 0.911548, + 0.911706, 0.911864, 0.912021, 0.912178, 0.912335, 0.912492, 0.912649, 0.912806, + 0.912962, 0.913119, 0.913275, 0.913431, 0.913587, 0.913743, 0.913899, 0.914054, + 0.914210, 0.914365, 0.914520, 0.914675, 0.914830, 0.914985, 0.915140, 0.915294, + 0.915449, 0.915603, 0.915757, 0.915911, 0.916065, 0.916219, 0.916372, 0.916526, + 0.916679, 0.916832, 0.916985, 0.917138, 0.917291, 0.917444, 0.917596, 0.917749, + 0.917901, 0.918053, 0.918205, 0.918357, 0.918508, 0.918660, 0.918811, 0.918963, + 0.919114, 0.919265, 0.919416, 0.919567, 0.919717, 0.919868, 0.920018, 0.920168, + 0.920318, 0.920468, 0.920618, 0.920768, 0.920917, 0.921067, 0.921216, 0.921365, + 0.921514, 0.921663, 0.921812, 0.921960, 0.922109, 0.922257, 0.922405, 0.922553, + 0.922701, 0.922849, 0.922997, 0.923144, 0.923291, 0.923439, 0.923586, 0.923733, + 0.923880, 0.924026, 0.924173, 0.924319, 0.924465, 0.924612, 0.924758, 0.924904, + 0.925049, 0.925195, 0.925340, 0.925486, 0.925631, 0.925776, 0.925921, 0.926066, + 0.926210, 0.926355, 0.926499, 0.926643, 0.926787, 0.926931, 0.927075, 0.927219, + 0.927363, 0.927506, 0.927649, 0.927792, 0.927935, 0.928078, 0.928221, 0.928364, + 0.928506, 0.928648, 0.928791, 0.928933, 0.929075, 0.929216, 0.929358, 0.929500, + 0.929641, 0.929782, 0.929923, 0.930064, 0.930205, 0.930346, 0.930486, 0.930627, + 0.930767, 0.930907, 0.931047, 0.931187, 0.931327, 0.931466, 0.931606, 0.931745, + 0.931884, 0.932023, 0.932162, 0.932301, 0.932440, 0.932578, 0.932716, 0.932855, + 0.932993, 0.933131, 0.933269, 0.933406, 0.933544, 0.933681, 0.933818, 0.933956, + 0.934093, 0.934229, 0.934366, 0.934503, 0.934639, 0.934775, 0.934912, 0.935048, + 0.935184, 0.935319, 0.935455, 0.935590, 0.935726, 0.935861, 0.935996, 0.936131, + 0.936266, 0.936400, 0.936535, 0.936669, 0.936803, 0.936938, 0.937072, 0.937205, + 0.937339, 0.937473, 0.937606, 0.937739, 0.937872, 0.938005, 0.938138, 0.938271, + 0.938404, 0.938536, 0.938668, 0.938800, 0.938932, 0.939064, 0.939196, 0.939328, + 0.939459, 0.939591, 0.939722, 0.939853, 0.939984, 0.940115, 0.940245, 0.940376, + 0.940506, 0.940636, 0.940766, 0.940896, 0.941026, 0.941156, 0.941285, 0.941415, + 0.941544, 0.941673, 0.941802, 0.941931, 0.942060, 0.942188, 0.942317, 0.942445, + 0.942573, 0.942701, 0.942829, 0.942957, 0.943084, 0.943212, 0.943339, 0.943466, + 0.943593, 0.943720, 0.943847, 0.943974, 0.944100, 0.944227, 0.944353, 0.944479, + 0.944605, 0.944731, 0.944856, 0.944982, 0.945107, 0.945232, 0.945358, 0.945482, + 0.945607, 0.945732, 0.945857, 0.945981, 0.946105, 0.946229, 0.946353, 0.946477, + 0.946601, 0.946724, 0.946848, 0.946971, 0.947094, 0.947217, 0.947340, 0.947463, + 0.947586, 0.947708, 0.947830, 0.947953, 0.948075, 0.948196, 0.948318, 0.948440, + 0.948561, 0.948683, 0.948804, 0.948925, 0.949046, 0.949167, 0.949287, 0.949408, + 0.949528, 0.949648, 0.949768, 0.949888, 0.950008, 0.950128, 0.950247, 0.950367, + 0.950486, 0.950605, 0.950724, 0.950843, 0.950962, 0.951080, 0.951199, 0.951317, + 0.951435, 0.951553, 0.951671, 0.951789, 0.951906, 0.952024, 0.952141, 0.952258, + 0.952375, 0.952492, 0.952609, 0.952725, 0.952842, 0.952958, 0.953074, 0.953190, + 0.953306, 0.953422, 0.953537, 0.953653, 0.953768, 0.953883, 0.953998, 0.954113, + 0.954228, 0.954343, 0.954457, 0.954572, 0.954686, 0.954800, 0.954914, 0.955028, + 0.955141, 0.955255, 0.955368, 0.955481, 0.955594, 0.955707, 0.955820, 0.955933, + 0.956045, 0.956158, 0.956270, 0.956382, 0.956494, 0.956606, 0.956717, 0.956829, + 0.956940, 0.957052, 0.957163, 0.957274, 0.957385, 0.957495, 0.957606, 0.957716, + 0.957826, 0.957937, 0.958046, 0.958156, 0.958266, 0.958376, 0.958485, 0.958594, + 0.958703, 0.958812, 0.958921, 0.959030, 0.959139, 0.959247, 0.959355, 0.959463, + 0.959572, 0.959679, 0.959787, 0.959895, 0.960002, 0.960109, 0.960217, 0.960324, + 0.960431, 0.960537, 0.960644, 0.960750, 0.960857, 0.960963, 0.961069, 0.961175, + 0.961280, 0.961386, 0.961492, 0.961597, 0.961702, 0.961807, 0.961912, 0.962017, + 0.962121, 0.962226, 0.962330, 0.962434, 0.962538, 0.962642, 0.962746, 0.962850, + 0.962953, 0.963057, 0.963160, 0.963263, 0.963366, 0.963469, 0.963571, 0.963674, + 0.963776, 0.963878, 0.963980, 0.964082, 0.964184, 0.964286, 0.964387, 0.964489, + 0.964590, 0.964691, 0.964792, 0.964893, 0.964993, 0.965094, 0.965194, 0.965294, + 0.965394, 0.965494, 0.965594, 0.965694, 0.965793, 0.965893, 0.965992, 0.966091, + 0.966190, 0.966289, 0.966387, 0.966486, 0.966584, 0.966683, 0.966781, 0.966879, + 0.966976, 0.967074, 0.967172, 0.967269, 0.967366, 0.967463, 0.967560, 0.967657, + 0.967754, 0.967850, 0.967947, 0.968043, 0.968139, 0.968235, 0.968331, 0.968427, + 0.968522, 0.968617, 0.968713, 0.968808, 0.968903, 0.968998, 0.969092, 0.969187, + 0.969281, 0.969375, 0.969470, 0.969564, 0.969657, 0.969751, 0.969845, 0.969938, + 0.970031, 0.970124, 0.970217, 0.970310, 0.970403, 0.970495, 0.970588, 0.970680, + 0.970772, 0.970864, 0.970956, 0.971048, 0.971139, 0.971231, 0.971322, 0.971413, + 0.971504, 0.971595, 0.971685, 0.971776, 0.971866, 0.971957, 0.972047, 0.972137, + 0.972227, 0.972316, 0.972406, 0.972495, 0.972584, 0.972673, 0.972762, 0.972851, + 0.972940, 0.973028, 0.973117, 0.973205, 0.973293, 0.973381, 0.973469, 0.973557, + 0.973644, 0.973732, 0.973819, 0.973906, 0.973993, 0.974080, 0.974166, 0.974253, + 0.974339, 0.974426, 0.974512, 0.974598, 0.974684, 0.974769, 0.974855, 0.974940, + 0.975025, 0.975110, 0.975195, 0.975280, 0.975365, 0.975449, 0.975534, 0.975618, + 0.975702, 0.975786, 0.975870, 0.975954, 0.976037, 0.976120, 0.976204, 0.976287, + 0.976370, 0.976453, 0.976535, 0.976618, 0.976700, 0.976782, 0.976864, 0.976946, + 0.977028, 0.977110, 0.977191, 0.977273, 0.977354, 0.977435, 0.977516, 0.977597, + 0.977677, 0.977758, 0.977838, 0.977918, 0.977998, 0.978078, 0.978158, 0.978238, + 0.978317, 0.978397, 0.978476, 0.978555, 0.978634, 0.978713, 0.978791, 0.978870, + 0.978948, 0.979026, 0.979104, 0.979182, 0.979260, 0.979338, 0.979415, 0.979493, + 0.979570, 0.979647, 0.979724, 0.979800, 0.979877, 0.979954, 0.980030, 0.980106, + 0.980182, 0.980258, 0.980334, 0.980409, 0.980485, 0.980560, 0.980635, 0.980710, + 0.980785, 0.980860, 0.980935, 0.981009, 0.981083, 0.981158, 0.981232, 0.981305, + 0.981379, 0.981453, 0.981526, 0.981600, 0.981673, 0.981746, 0.981819, 0.981891, + 0.981964, 0.982036, 0.982109, 0.982181, 0.982253, 0.982325, 0.982396, 0.982468, + 0.982539, 0.982611, 0.982682, 0.982753, 0.982824, 0.982894, 0.982965, 0.983035, + 0.983105, 0.983176, 0.983246, 0.983315, 0.983385, 0.983455, 0.983524, 0.983593, + 0.983662, 0.983731, 0.983800, 0.983869, 0.983937, 0.984006, 0.984074, 0.984142, + 0.984210, 0.984278, 0.984346, 0.984413, 0.984480, 0.984548, 0.984615, 0.984682, + 0.984748, 0.984815, 0.984882, 0.984948, 0.985014, 0.985080, 0.985146, 0.985212, + 0.985278, 0.985343, 0.985408, 0.985474, 0.985539, 0.985604, 0.985668, 0.985733, + 0.985798, 0.985862, 0.985926, 0.985990, 0.986054, 0.986118, 0.986181, 0.986245, + 0.986308, 0.986371, 0.986434, 0.986497, 0.986560, 0.986623, 0.986685, 0.986747, + 0.986809, 0.986871, 0.986933, 0.986995, 0.987057, 0.987118, 0.987179, 0.987240, + 0.987301, 0.987362, 0.987423, 0.987484, 0.987544, 0.987604, 0.987664, 0.987724, + 0.987784, 0.987844, 0.987903, 0.987963, 0.988022, 0.988081, 0.988140, 0.988199, + 0.988258, 0.988316, 0.988374, 0.988433, 0.988491, 0.988549, 0.988607, 0.988664, + 0.988722, 0.988779, 0.988836, 0.988893, 0.988950, 0.989007, 0.989064, 0.989120, + 0.989177, 0.989233, 0.989289, 0.989345, 0.989400, 0.989456, 0.989511, 0.989567, + 0.989622, 0.989677, 0.989732, 0.989787, 0.989841, 0.989896, 0.989950, 0.990004, + 0.990058, 0.990112, 0.990166, 0.990219, 0.990273, 0.990326, 0.990379, 0.990432, + 0.990485, 0.990538, 0.990590, 0.990643, 0.990695, 0.990747, 0.990799, 0.990851, + 0.990903, 0.990954, 0.991006, 0.991057, 0.991108, 0.991159, 0.991210, 0.991260, + 0.991311, 0.991361, 0.991411, 0.991462, 0.991511, 0.991561, 0.991611, 0.991660, + 0.991710, 0.991759, 0.991808, 0.991857, 0.991906, 0.991954, 0.992003, 0.992051, + 0.992099, 0.992147, 0.992195, 0.992243, 0.992291, 0.992338, 0.992385, 0.992433, + 0.992480, 0.992526, 0.992573, 0.992620, 0.992666, 0.992712, 0.992759, 0.992805, + 0.992850, 0.992896, 0.992942, 0.992987, 0.993032, 0.993077, 0.993122, 0.993167, + 0.993212, 0.993257, 0.993301, 0.993345, 0.993389, 0.993433, 0.993477, 0.993521, + 0.993564, 0.993608, 0.993651, 0.993694, 0.993737, 0.993779, 0.993822, 0.993865, + 0.993907, 0.993949, 0.993991, 0.994033, 0.994075, 0.994116, 0.994158, 0.994199, + 0.994240, 0.994281, 0.994322, 0.994363, 0.994404, 0.994444, 0.994484, 0.994525, + 0.994565, 0.994604, 0.994644, 0.994684, 0.994723, 0.994762, 0.994802, 0.994841, + 0.994879, 0.994918, 0.994957, 0.994995, 0.995033, 0.995071, 0.995109, 0.995147, + 0.995185, 0.995222, 0.995260, 0.995297, 0.995334, 0.995371, 0.995408, 0.995444, + 0.995481, 0.995517, 0.995553, 0.995589, 0.995625, 0.995661, 0.995697, 0.995732, + 0.995767, 0.995803, 0.995838, 0.995872, 0.995907, 0.995942, 0.995976, 0.996011, + 0.996045, 0.996079, 0.996113, 0.996146, 0.996180, 0.996213, 0.996247, 0.996280, + 0.996313, 0.996345, 0.996378, 0.996411, 0.996443, 0.996475, 0.996507, 0.996539, + 0.996571, 0.996603, 0.996634, 0.996666, 0.996697, 0.996728, 0.996759, 0.996790, + 0.996820, 0.996851, 0.996881, 0.996911, 0.996941, 0.996971, 0.997001, 0.997031, + 0.997060, 0.997089, 0.997119, 0.997148, 0.997176, 0.997205, 0.997234, 0.997262, + 0.997290, 0.997319, 0.997347, 0.997374, 0.997402, 0.997430, 0.997457, 0.997484, + 0.997511, 0.997538, 0.997565, 0.997592, 0.997618, 0.997645, 0.997671, 0.997697, + 0.997723, 0.997749, 0.997774, 0.997800, 0.997825, 0.997851, 0.997876, 0.997901, + 0.997925, 0.997950, 0.997974, 0.997999, 0.998023, 0.998047, 0.998071, 0.998094, + 0.998118, 0.998142, 0.998165, 0.998188, 0.998211, 0.998234, 0.998257, 0.998279, + 0.998302, 0.998324, 0.998346, 0.998368, 0.998390, 0.998411, 0.998433, 0.998454, + 0.998476, 0.998497, 0.998518, 0.998538, 0.998559, 0.998580, 0.998600, 0.998620, + 0.998640, 0.998660, 0.998680, 0.998700, 0.998719, 0.998738, 0.998758, 0.998777, + 0.998795, 0.998814, 0.998833, 0.998851, 0.998870, 0.998888, 0.998906, 0.998924, + 0.998941, 0.998959, 0.998976, 0.998994, 0.999011, 0.999028, 0.999044, 0.999061, + 0.999078, 0.999094, 0.999110, 0.999126, 0.999142, 0.999158, 0.999174, 0.999189, + 0.999205, 0.999220, 0.999235, 0.999250, 0.999265, 0.999279, 0.999294, 0.999308, + 0.999322, 0.999336, 0.999350, 0.999364, 0.999378, 0.999391, 0.999404, 0.999418, + 0.999431, 0.999443, 0.999456, 0.999469, 0.999481, 0.999493, 0.999506, 0.999518, + 0.999529, 0.999541, 0.999553, 0.999564, 0.999575, 0.999586, 0.999597, 0.999608, + 0.999619, 0.999629, 0.999640, 0.999650, 0.999660, 0.999670, 0.999680, 0.999689, + 0.999699, 0.999708, 0.999717, 0.999726, 0.999735, 0.999744, 0.999753, 0.999761, + 0.999769, 0.999778, 0.999786, 0.999793, 0.999801, 0.999809, 0.999816, 0.999823, + 0.999831, 0.999838, 0.999844, 0.999851, 0.999858, 0.999864, 0.999870, 0.999876, + 0.999882, 0.999888, 0.999894, 0.999899, 0.999905, 0.999910, 0.999915, 0.999920, + 0.999925, 0.999929, 0.999934, 0.999938, 0.999942, 0.999946, 0.999950, 0.999954, + 0.999958, 0.999961, 0.999964, 0.999968, 0.999971, 0.999973, 0.999976, 0.999979, + 0.999981, 0.999983, 0.999986, 0.999988, 0.999989, 0.999991, 0.999993, 0.999994, + 0.999995, 0.999996, 0.999997, 0.999998, 0.999999, 0.999999, 1.000000, 1.000000 +}; + +static const float cosTable32768[16384] = { + 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 0.999999, 0.999999, + 0.999999, 0.999999, 0.999998, 0.999998, 0.999997, 0.999997, 0.999996, 0.999996, + 0.999995, 0.999995, 0.999994, 0.999993, 0.999993, 0.999992, 0.999991, 0.999990, + 0.999989, 0.999988, 0.999988, 0.999987, 0.999986, 0.999985, 0.999983, 0.999982, + 0.999981, 0.999980, 0.999979, 0.999977, 0.999976, 0.999975, 0.999973, 0.999972, + 0.999971, 0.999969, 0.999968, 0.999966, 0.999964, 0.999963, 0.999961, 0.999959, + 0.999958, 0.999956, 0.999954, 0.999952, 0.999950, 0.999948, 0.999946, 0.999944, + 0.999942, 0.999940, 0.999938, 0.999936, 0.999934, 0.999932, 0.999929, 0.999927, + 0.999925, 0.999922, 0.999920, 0.999917, 0.999915, 0.999913, 0.999910, 0.999907, + 0.999905, 0.999902, 0.999899, 0.999897, 0.999894, 0.999891, 0.999888, 0.999885, + 0.999882, 0.999879, 0.999876, 0.999873, 0.999870, 0.999867, 0.999864, 0.999861, + 0.999858, 0.999854, 0.999851, 0.999848, 0.999844, 0.999841, 0.999838, 0.999834, + 0.999831, 0.999827, 0.999823, 0.999820, 0.999816, 0.999812, 0.999809, 0.999805, + 0.999801, 0.999797, 0.999793, 0.999790, 0.999786, 0.999782, 0.999778, 0.999774, + 0.999769, 0.999765, 0.999761, 0.999757, 0.999753, 0.999748, 0.999744, 0.999740, + 0.999735, 0.999731, 0.999726, 0.999722, 0.999717, 0.999713, 0.999708, 0.999704, + 0.999699, 0.999694, 0.999689, 0.999685, 0.999680, 0.999675, 0.999670, 0.999665, + 0.999660, 0.999655, 0.999650, 0.999645, 0.999640, 0.999635, 0.999629, 0.999624, + 0.999619, 0.999614, 0.999608, 0.999603, 0.999597, 0.999592, 0.999586, 0.999581, + 0.999575, 0.999570, 0.999564, 0.999558, 0.999553, 0.999547, 0.999541, 0.999535, + 0.999529, 0.999524, 0.999518, 0.999512, 0.999506, 0.999500, 0.999493, 0.999487, + 0.999481, 0.999475, 0.999469, 0.999462, 0.999456, 0.999450, 0.999443, 0.999437, + 0.999431, 0.999424, 0.999418, 0.999411, 0.999404, 0.999398, 0.999391, 0.999384, + 0.999378, 0.999371, 0.999364, 0.999357, 0.999350, 0.999343, 0.999336, 0.999329, + 0.999322, 0.999315, 0.999308, 0.999301, 0.999294, 0.999287, 0.999279, 0.999272, + 0.999265, 0.999257, 0.999250, 0.999243, 0.999235, 0.999228, 0.999220, 0.999212, + 0.999205, 0.999197, 0.999189, 0.999182, 0.999174, 0.999166, 0.999158, 0.999150, + 0.999142, 0.999134, 0.999126, 0.999118, 0.999110, 0.999102, 0.999094, 0.999086, + 0.999078, 0.999069, 0.999061, 0.999053, 0.999044, 0.999036, 0.999028, 0.999019, + 0.999011, 0.999002, 0.998994, 0.998985, 0.998976, 0.998968, 0.998959, 0.998950, + 0.998941, 0.998932, 0.998924, 0.998915, 0.998906, 0.998897, 0.998888, 0.998879, + 0.998870, 0.998860, 0.998851, 0.998842, 0.998833, 0.998824, 0.998814, 0.998805, + 0.998795, 0.998786, 0.998777, 0.998767, 0.998758, 0.998748, 0.998738, 0.998729, + 0.998719, 0.998709, 0.998700, 0.998690, 0.998680, 0.998670, 0.998660, 0.998650, + 0.998640, 0.998630, 0.998620, 0.998610, 0.998600, 0.998590, 0.998580, 0.998569, + 0.998559, 0.998549, 0.998538, 0.998528, 0.998518, 0.998507, 0.998497, 0.998486, + 0.998476, 0.998465, 0.998454, 0.998444, 0.998433, 0.998422, 0.998411, 0.998401, + 0.998390, 0.998379, 0.998368, 0.998357, 0.998346, 0.998335, 0.998324, 0.998313, + 0.998302, 0.998290, 0.998279, 0.998268, 0.998257, 0.998245, 0.998234, 0.998222, + 0.998211, 0.998200, 0.998188, 0.998176, 0.998165, 0.998153, 0.998142, 0.998130, + 0.998118, 0.998106, 0.998094, 0.998083, 0.998071, 0.998059, 0.998047, 0.998035, + 0.998023, 0.998011, 0.997999, 0.997987, 0.997974, 0.997962, 0.997950, 0.997938, + 0.997925, 0.997913, 0.997901, 0.997888, 0.997876, 0.997863, 0.997851, 0.997838, + 0.997825, 0.997813, 0.997800, 0.997787, 0.997774, 0.997762, 0.997749, 0.997736, + 0.997723, 0.997710, 0.997697, 0.997684, 0.997671, 0.997658, 0.997645, 0.997632, + 0.997618, 0.997605, 0.997592, 0.997579, 0.997565, 0.997552, 0.997538, 0.997525, + 0.997511, 0.997498, 0.997484, 0.997471, 0.997457, 0.997443, 0.997430, 0.997416, + 0.997402, 0.997388, 0.997374, 0.997361, 0.997347, 0.997333, 0.997319, 0.997305, + 0.997290, 0.997276, 0.997262, 0.997248, 0.997234, 0.997219, 0.997205, 0.997191, + 0.997176, 0.997162, 0.997148, 0.997133, 0.997119, 0.997104, 0.997089, 0.997075, + 0.997060, 0.997045, 0.997031, 0.997016, 0.997001, 0.996986, 0.996971, 0.996956, + 0.996941, 0.996926, 0.996911, 0.996896, 0.996881, 0.996866, 0.996851, 0.996836, + 0.996820, 0.996805, 0.996790, 0.996774, 0.996759, 0.996743, 0.996728, 0.996712, + 0.996697, 0.996681, 0.996666, 0.996650, 0.996634, 0.996619, 0.996603, 0.996587, + 0.996571, 0.996555, 0.996539, 0.996523, 0.996507, 0.996491, 0.996475, 0.996459, + 0.996443, 0.996427, 0.996411, 0.996394, 0.996378, 0.996362, 0.996345, 0.996329, + 0.996313, 0.996296, 0.996280, 0.996263, 0.996247, 0.996230, 0.996213, 0.996197, + 0.996180, 0.996163, 0.996146, 0.996129, 0.996113, 0.996096, 0.996079, 0.996062, + 0.996045, 0.996028, 0.996011, 0.995993, 0.995976, 0.995959, 0.995942, 0.995925, + 0.995907, 0.995890, 0.995872, 0.995855, 0.995838, 0.995820, 0.995803, 0.995785, + 0.995767, 0.995750, 0.995732, 0.995714, 0.995697, 0.995679, 0.995661, 0.995643, + 0.995625, 0.995607, 0.995589, 0.995571, 0.995553, 0.995535, 0.995517, 0.995499, + 0.995481, 0.995463, 0.995444, 0.995426, 0.995408, 0.995389, 0.995371, 0.995352, + 0.995334, 0.995315, 0.995297, 0.995278, 0.995260, 0.995241, 0.995222, 0.995203, + 0.995185, 0.995166, 0.995147, 0.995128, 0.995109, 0.995090, 0.995071, 0.995052, + 0.995033, 0.995014, 0.994995, 0.994976, 0.994957, 0.994937, 0.994918, 0.994899, + 0.994879, 0.994860, 0.994841, 0.994821, 0.994802, 0.994782, 0.994762, 0.994743, + 0.994723, 0.994703, 0.994684, 0.994664, 0.994644, 0.994624, 0.994604, 0.994585, + 0.994565, 0.994545, 0.994525, 0.994505, 0.994484, 0.994464, 0.994444, 0.994424, + 0.994404, 0.994383, 0.994363, 0.994343, 0.994322, 0.994302, 0.994281, 0.994261, + 0.994240, 0.994220, 0.994199, 0.994179, 0.994158, 0.994137, 0.994116, 0.994096, + 0.994075, 0.994054, 0.994033, 0.994012, 0.993991, 0.993970, 0.993949, 0.993928, + 0.993907, 0.993886, 0.993865, 0.993843, 0.993822, 0.993801, 0.993779, 0.993758, + 0.993737, 0.993715, 0.993694, 0.993672, 0.993651, 0.993629, 0.993608, 0.993586, + 0.993564, 0.993542, 0.993521, 0.993499, 0.993477, 0.993455, 0.993433, 0.993411, + 0.993389, 0.993367, 0.993345, 0.993323, 0.993301, 0.993279, 0.993257, 0.993234, + 0.993212, 0.993190, 0.993167, 0.993145, 0.993122, 0.993100, 0.993077, 0.993055, + 0.993032, 0.993010, 0.992987, 0.992964, 0.992942, 0.992919, 0.992896, 0.992873, + 0.992850, 0.992828, 0.992805, 0.992782, 0.992759, 0.992736, 0.992712, 0.992689, + 0.992666, 0.992643, 0.992620, 0.992596, 0.992573, 0.992550, 0.992526, 0.992503, + 0.992480, 0.992456, 0.992433, 0.992409, 0.992385, 0.992362, 0.992338, 0.992314, + 0.992291, 0.992267, 0.992243, 0.992219, 0.992195, 0.992171, 0.992147, 0.992123, + 0.992099, 0.992075, 0.992051, 0.992027, 0.992003, 0.991979, 0.991954, 0.991930, + 0.991906, 0.991881, 0.991857, 0.991832, 0.991808, 0.991783, 0.991759, 0.991734, + 0.991710, 0.991685, 0.991660, 0.991636, 0.991611, 0.991586, 0.991561, 0.991536, + 0.991511, 0.991487, 0.991462, 0.991437, 0.991411, 0.991386, 0.991361, 0.991336, + 0.991311, 0.991286, 0.991260, 0.991235, 0.991210, 0.991184, 0.991159, 0.991133, + 0.991108, 0.991082, 0.991057, 0.991031, 0.991006, 0.990980, 0.990954, 0.990928, + 0.990903, 0.990877, 0.990851, 0.990825, 0.990799, 0.990773, 0.990747, 0.990721, + 0.990695, 0.990669, 0.990643, 0.990617, 0.990590, 0.990564, 0.990538, 0.990511, + 0.990485, 0.990459, 0.990432, 0.990406, 0.990379, 0.990353, 0.990326, 0.990299, + 0.990273, 0.990246, 0.990219, 0.990193, 0.990166, 0.990139, 0.990112, 0.990085, + 0.990058, 0.990031, 0.990004, 0.989977, 0.989950, 0.989923, 0.989896, 0.989869, + 0.989841, 0.989814, 0.989787, 0.989759, 0.989732, 0.989704, 0.989677, 0.989650, + 0.989622, 0.989594, 0.989567, 0.989539, 0.989511, 0.989484, 0.989456, 0.989428, + 0.989400, 0.989373, 0.989345, 0.989317, 0.989289, 0.989261, 0.989233, 0.989205, + 0.989177, 0.989148, 0.989120, 0.989092, 0.989064, 0.989035, 0.989007, 0.988979, + 0.988950, 0.988922, 0.988893, 0.988865, 0.988836, 0.988808, 0.988779, 0.988750, + 0.988722, 0.988693, 0.988664, 0.988635, 0.988607, 0.988578, 0.988549, 0.988520, + 0.988491, 0.988462, 0.988433, 0.988404, 0.988374, 0.988345, 0.988316, 0.988287, + 0.988258, 0.988228, 0.988199, 0.988169, 0.988140, 0.988111, 0.988081, 0.988052, + 0.988022, 0.987992, 0.987963, 0.987933, 0.987903, 0.987874, 0.987844, 0.987814, + 0.987784, 0.987754, 0.987724, 0.987694, 0.987664, 0.987634, 0.987604, 0.987574, + 0.987544, 0.987514, 0.987484, 0.987453, 0.987423, 0.987393, 0.987362, 0.987332, + 0.987301, 0.987271, 0.987240, 0.987210, 0.987179, 0.987149, 0.987118, 0.987087, + 0.987057, 0.987026, 0.986995, 0.986964, 0.986933, 0.986902, 0.986871, 0.986840, + 0.986809, 0.986778, 0.986747, 0.986716, 0.986685, 0.986654, 0.986623, 0.986591, + 0.986560, 0.986529, 0.986497, 0.986466, 0.986434, 0.986403, 0.986371, 0.986340, + 0.986308, 0.986276, 0.986245, 0.986213, 0.986181, 0.986150, 0.986118, 0.986086, + 0.986054, 0.986022, 0.985990, 0.985958, 0.985926, 0.985894, 0.985862, 0.985830, + 0.985798, 0.985765, 0.985733, 0.985701, 0.985668, 0.985636, 0.985604, 0.985571, + 0.985539, 0.985506, 0.985474, 0.985441, 0.985408, 0.985376, 0.985343, 0.985310, + 0.985278, 0.985245, 0.985212, 0.985179, 0.985146, 0.985113, 0.985080, 0.985047, + 0.985014, 0.984981, 0.984948, 0.984915, 0.984882, 0.984848, 0.984815, 0.984782, + 0.984748, 0.984715, 0.984682, 0.984648, 0.984615, 0.984581, 0.984548, 0.984514, + 0.984480, 0.984447, 0.984413, 0.984379, 0.984346, 0.984312, 0.984278, 0.984244, + 0.984210, 0.984176, 0.984142, 0.984108, 0.984074, 0.984040, 0.984006, 0.983972, + 0.983937, 0.983903, 0.983869, 0.983835, 0.983800, 0.983766, 0.983731, 0.983697, + 0.983662, 0.983628, 0.983593, 0.983559, 0.983524, 0.983489, 0.983455, 0.983420, + 0.983385, 0.983350, 0.983315, 0.983281, 0.983246, 0.983211, 0.983176, 0.983141, + 0.983105, 0.983070, 0.983035, 0.983000, 0.982965, 0.982930, 0.982894, 0.982859, + 0.982824, 0.982788, 0.982753, 0.982717, 0.982682, 0.982646, 0.982611, 0.982575, + 0.982539, 0.982504, 0.982468, 0.982432, 0.982396, 0.982360, 0.982325, 0.982289, + 0.982253, 0.982217, 0.982181, 0.982145, 0.982109, 0.982072, 0.982036, 0.982000, + 0.981964, 0.981928, 0.981891, 0.981855, 0.981819, 0.981782, 0.981746, 0.981709, + 0.981673, 0.981636, 0.981600, 0.981563, 0.981526, 0.981490, 0.981453, 0.981416, + 0.981379, 0.981342, 0.981305, 0.981269, 0.981232, 0.981195, 0.981158, 0.981120, + 0.981083, 0.981046, 0.981009, 0.980972, 0.980935, 0.980897, 0.980860, 0.980823, + 0.980785, 0.980748, 0.980710, 0.980673, 0.980635, 0.980598, 0.980560, 0.980523, + 0.980485, 0.980447, 0.980409, 0.980372, 0.980334, 0.980296, 0.980258, 0.980220, + 0.980182, 0.980144, 0.980106, 0.980068, 0.980030, 0.979992, 0.979954, 0.979915, + 0.979877, 0.979839, 0.979800, 0.979762, 0.979724, 0.979685, 0.979647, 0.979608, + 0.979570, 0.979531, 0.979493, 0.979454, 0.979415, 0.979376, 0.979338, 0.979299, + 0.979260, 0.979221, 0.979182, 0.979143, 0.979104, 0.979065, 0.979026, 0.978987, + 0.978948, 0.978909, 0.978870, 0.978831, 0.978791, 0.978752, 0.978713, 0.978673, + 0.978634, 0.978594, 0.978555, 0.978516, 0.978476, 0.978436, 0.978397, 0.978357, + 0.978317, 0.978278, 0.978238, 0.978198, 0.978158, 0.978118, 0.978078, 0.978038, + 0.977998, 0.977959, 0.977918, 0.977878, 0.977838, 0.977798, 0.977758, 0.977718, + 0.977677, 0.977637, 0.977597, 0.977556, 0.977516, 0.977475, 0.977435, 0.977394, + 0.977354, 0.977313, 0.977273, 0.977232, 0.977191, 0.977151, 0.977110, 0.977069, + 0.977028, 0.976987, 0.976946, 0.976905, 0.976864, 0.976823, 0.976782, 0.976741, + 0.976700, 0.976659, 0.976618, 0.976576, 0.976535, 0.976494, 0.976453, 0.976411, + 0.976370, 0.976328, 0.976287, 0.976245, 0.976204, 0.976162, 0.976120, 0.976079, + 0.976037, 0.975995, 0.975954, 0.975912, 0.975870, 0.975828, 0.975786, 0.975744, + 0.975702, 0.975660, 0.975618, 0.975576, 0.975534, 0.975492, 0.975449, 0.975407, + 0.975365, 0.975323, 0.975280, 0.975238, 0.975195, 0.975153, 0.975110, 0.975068, + 0.975025, 0.974983, 0.974940, 0.974897, 0.974855, 0.974812, 0.974769, 0.974726, + 0.974684, 0.974641, 0.974598, 0.974555, 0.974512, 0.974469, 0.974426, 0.974383, + 0.974339, 0.974296, 0.974253, 0.974210, 0.974166, 0.974123, 0.974080, 0.974036, + 0.973993, 0.973949, 0.973906, 0.973862, 0.973819, 0.973775, 0.973732, 0.973688, + 0.973644, 0.973601, 0.973557, 0.973513, 0.973469, 0.973425, 0.973381, 0.973337, + 0.973293, 0.973249, 0.973205, 0.973161, 0.973117, 0.973073, 0.973028, 0.972984, + 0.972940, 0.972896, 0.972851, 0.972807, 0.972762, 0.972718, 0.972673, 0.972629, + 0.972584, 0.972540, 0.972495, 0.972450, 0.972406, 0.972361, 0.972316, 0.972271, + 0.972227, 0.972182, 0.972137, 0.972092, 0.972047, 0.972002, 0.971957, 0.971911, + 0.971866, 0.971821, 0.971776, 0.971731, 0.971685, 0.971640, 0.971595, 0.971549, + 0.971504, 0.971458, 0.971413, 0.971367, 0.971322, 0.971276, 0.971231, 0.971185, + 0.971139, 0.971093, 0.971048, 0.971002, 0.970956, 0.970910, 0.970864, 0.970818, + 0.970772, 0.970726, 0.970680, 0.970634, 0.970588, 0.970542, 0.970495, 0.970449, + 0.970403, 0.970357, 0.970310, 0.970264, 0.970217, 0.970171, 0.970124, 0.970078, + 0.970031, 0.969985, 0.969938, 0.969891, 0.969845, 0.969798, 0.969751, 0.969704, + 0.969657, 0.969611, 0.969564, 0.969517, 0.969470, 0.969423, 0.969375, 0.969328, + 0.969281, 0.969234, 0.969187, 0.969140, 0.969092, 0.969045, 0.968998, 0.968950, + 0.968903, 0.968855, 0.968808, 0.968760, 0.968713, 0.968665, 0.968617, 0.968570, + 0.968522, 0.968474, 0.968427, 0.968379, 0.968331, 0.968283, 0.968235, 0.968187, + 0.968139, 0.968091, 0.968043, 0.967995, 0.967947, 0.967899, 0.967850, 0.967802, + 0.967754, 0.967706, 0.967657, 0.967609, 0.967560, 0.967512, 0.967463, 0.967415, + 0.967366, 0.967318, 0.967269, 0.967220, 0.967172, 0.967123, 0.967074, 0.967025, + 0.966976, 0.966928, 0.966879, 0.966830, 0.966781, 0.966732, 0.966683, 0.966633, + 0.966584, 0.966535, 0.966486, 0.966437, 0.966387, 0.966338, 0.966289, 0.966239, + 0.966190, 0.966141, 0.966091, 0.966042, 0.965992, 0.965942, 0.965893, 0.965843, + 0.965793, 0.965744, 0.965694, 0.965644, 0.965594, 0.965544, 0.965494, 0.965444, + 0.965394, 0.965344, 0.965294, 0.965244, 0.965194, 0.965144, 0.965094, 0.965044, + 0.964993, 0.964943, 0.964893, 0.964842, 0.964792, 0.964741, 0.964691, 0.964640, + 0.964590, 0.964539, 0.964489, 0.964438, 0.964387, 0.964336, 0.964286, 0.964235, + 0.964184, 0.964133, 0.964082, 0.964031, 0.963980, 0.963929, 0.963878, 0.963827, + 0.963776, 0.963725, 0.963674, 0.963623, 0.963571, 0.963520, 0.963469, 0.963417, + 0.963366, 0.963314, 0.963263, 0.963211, 0.963160, 0.963108, 0.963057, 0.963005, + 0.962953, 0.962902, 0.962850, 0.962798, 0.962746, 0.962694, 0.962642, 0.962590, + 0.962538, 0.962486, 0.962434, 0.962382, 0.962330, 0.962278, 0.962226, 0.962174, + 0.962121, 0.962069, 0.962017, 0.961964, 0.961912, 0.961860, 0.961807, 0.961755, + 0.961702, 0.961649, 0.961597, 0.961544, 0.961492, 0.961439, 0.961386, 0.961333, + 0.961280, 0.961228, 0.961175, 0.961122, 0.961069, 0.961016, 0.960963, 0.960910, + 0.960857, 0.960804, 0.960750, 0.960697, 0.960644, 0.960591, 0.960537, 0.960484, + 0.960431, 0.960377, 0.960324, 0.960270, 0.960217, 0.960163, 0.960109, 0.960056, + 0.960002, 0.959948, 0.959895, 0.959841, 0.959787, 0.959733, 0.959679, 0.959625, + 0.959572, 0.959518, 0.959463, 0.959409, 0.959355, 0.959301, 0.959247, 0.959193, + 0.959139, 0.959084, 0.959030, 0.958976, 0.958921, 0.958867, 0.958812, 0.958758, + 0.958703, 0.958649, 0.958594, 0.958540, 0.958485, 0.958430, 0.958376, 0.958321, + 0.958266, 0.958211, 0.958156, 0.958101, 0.958046, 0.957992, 0.957937, 0.957882, + 0.957826, 0.957771, 0.957716, 0.957661, 0.957606, 0.957550, 0.957495, 0.957440, + 0.957385, 0.957329, 0.957274, 0.957218, 0.957163, 0.957107, 0.957052, 0.956996, + 0.956940, 0.956885, 0.956829, 0.956773, 0.956717, 0.956662, 0.956606, 0.956550, + 0.956494, 0.956438, 0.956382, 0.956326, 0.956270, 0.956214, 0.956158, 0.956101, + 0.956045, 0.955989, 0.955933, 0.955876, 0.955820, 0.955764, 0.955707, 0.955651, + 0.955594, 0.955538, 0.955481, 0.955425, 0.955368, 0.955311, 0.955255, 0.955198, + 0.955141, 0.955084, 0.955028, 0.954971, 0.954914, 0.954857, 0.954800, 0.954743, + 0.954686, 0.954629, 0.954572, 0.954514, 0.954457, 0.954400, 0.954343, 0.954285, + 0.954228, 0.954171, 0.954113, 0.954056, 0.953998, 0.953941, 0.953883, 0.953826, + 0.953768, 0.953711, 0.953653, 0.953595, 0.953537, 0.953480, 0.953422, 0.953364, + 0.953306, 0.953248, 0.953190, 0.953132, 0.953074, 0.953016, 0.952958, 0.952900, + 0.952842, 0.952783, 0.952725, 0.952667, 0.952609, 0.952550, 0.952492, 0.952433, + 0.952375, 0.952317, 0.952258, 0.952199, 0.952141, 0.952082, 0.952024, 0.951965, + 0.951906, 0.951847, 0.951789, 0.951730, 0.951671, 0.951612, 0.951553, 0.951494, + 0.951435, 0.951376, 0.951317, 0.951258, 0.951199, 0.951139, 0.951080, 0.951021, + 0.950962, 0.950902, 0.950843, 0.950784, 0.950724, 0.950665, 0.950605, 0.950546, + 0.950486, 0.950426, 0.950367, 0.950307, 0.950247, 0.950188, 0.950128, 0.950068, + 0.950008, 0.949948, 0.949888, 0.949829, 0.949768, 0.949708, 0.949648, 0.949588, + 0.949528, 0.949468, 0.949408, 0.949348, 0.949287, 0.949227, 0.949167, 0.949106, + 0.949046, 0.948985, 0.948925, 0.948864, 0.948804, 0.948743, 0.948683, 0.948622, + 0.948561, 0.948501, 0.948440, 0.948379, 0.948318, 0.948257, 0.948196, 0.948136, + 0.948075, 0.948014, 0.947953, 0.947891, 0.947830, 0.947769, 0.947708, 0.947647, + 0.947586, 0.947524, 0.947463, 0.947402, 0.947340, 0.947279, 0.947217, 0.947156, + 0.947094, 0.947033, 0.946971, 0.946910, 0.946848, 0.946786, 0.946724, 0.946663, + 0.946601, 0.946539, 0.946477, 0.946415, 0.946353, 0.946291, 0.946229, 0.946167, + 0.946105, 0.946043, 0.945981, 0.945919, 0.945857, 0.945794, 0.945732, 0.945670, + 0.945607, 0.945545, 0.945482, 0.945420, 0.945358, 0.945295, 0.945232, 0.945170, + 0.945107, 0.945045, 0.944982, 0.944919, 0.944856, 0.944793, 0.944731, 0.944668, + 0.944605, 0.944542, 0.944479, 0.944416, 0.944353, 0.944290, 0.944227, 0.944163, + 0.944100, 0.944037, 0.943974, 0.943910, 0.943847, 0.943784, 0.943720, 0.943657, + 0.943593, 0.943530, 0.943466, 0.943403, 0.943339, 0.943276, 0.943212, 0.943148, + 0.943084, 0.943021, 0.942957, 0.942893, 0.942829, 0.942765, 0.942701, 0.942637, + 0.942573, 0.942509, 0.942445, 0.942381, 0.942317, 0.942253, 0.942188, 0.942124, + 0.942060, 0.941995, 0.941931, 0.941867, 0.941802, 0.941738, 0.941673, 0.941609, + 0.941544, 0.941479, 0.941415, 0.941350, 0.941285, 0.941221, 0.941156, 0.941091, + 0.941026, 0.940961, 0.940896, 0.940831, 0.940766, 0.940701, 0.940636, 0.940571, + 0.940506, 0.940441, 0.940376, 0.940310, 0.940245, 0.940180, 0.940115, 0.940049, + 0.939984, 0.939918, 0.939853, 0.939787, 0.939722, 0.939656, 0.939591, 0.939525, + 0.939459, 0.939394, 0.939328, 0.939262, 0.939196, 0.939130, 0.939064, 0.938998, + 0.938932, 0.938866, 0.938800, 0.938734, 0.938668, 0.938602, 0.938536, 0.938470, + 0.938404, 0.938337, 0.938271, 0.938205, 0.938138, 0.938072, 0.938005, 0.937939, + 0.937872, 0.937806, 0.937739, 0.937673, 0.937606, 0.937539, 0.937473, 0.937406, + 0.937339, 0.937272, 0.937205, 0.937138, 0.937072, 0.937005, 0.936938, 0.936871, + 0.936803, 0.936736, 0.936669, 0.936602, 0.936535, 0.936468, 0.936400, 0.936333, + 0.936266, 0.936198, 0.936131, 0.936063, 0.935996, 0.935928, 0.935861, 0.935793, + 0.935726, 0.935658, 0.935590, 0.935523, 0.935455, 0.935387, 0.935319, 0.935251, + 0.935184, 0.935116, 0.935048, 0.934980, 0.934912, 0.934844, 0.934775, 0.934707, + 0.934639, 0.934571, 0.934503, 0.934434, 0.934366, 0.934298, 0.934229, 0.934161, + 0.934093, 0.934024, 0.933956, 0.933887, 0.933818, 0.933750, 0.933681, 0.933612, + 0.933544, 0.933475, 0.933406, 0.933337, 0.933269, 0.933200, 0.933131, 0.933062, + 0.932993, 0.932924, 0.932855, 0.932786, 0.932716, 0.932647, 0.932578, 0.932509, + 0.932440, 0.932370, 0.932301, 0.932232, 0.932162, 0.932093, 0.932023, 0.931954, + 0.931884, 0.931815, 0.931745, 0.931675, 0.931606, 0.931536, 0.931466, 0.931397, + 0.931327, 0.931257, 0.931187, 0.931117, 0.931047, 0.930977, 0.930907, 0.930837, + 0.930767, 0.930697, 0.930627, 0.930556, 0.930486, 0.930416, 0.930346, 0.930275, + 0.930205, 0.930135, 0.930064, 0.929994, 0.929923, 0.929853, 0.929782, 0.929712, + 0.929641, 0.929570, 0.929500, 0.929429, 0.929358, 0.929287, 0.929216, 0.929146, + 0.929075, 0.929004, 0.928933, 0.928862, 0.928791, 0.928720, 0.928648, 0.928577, + 0.928506, 0.928435, 0.928364, 0.928292, 0.928221, 0.928150, 0.928078, 0.928007, + 0.927935, 0.927864, 0.927792, 0.927721, 0.927649, 0.927578, 0.927506, 0.927434, + 0.927363, 0.927291, 0.927219, 0.927147, 0.927075, 0.927003, 0.926931, 0.926859, + 0.926787, 0.926715, 0.926643, 0.926571, 0.926499, 0.926427, 0.926355, 0.926283, + 0.926210, 0.926138, 0.926066, 0.925993, 0.925921, 0.925848, 0.925776, 0.925703, + 0.925631, 0.925558, 0.925486, 0.925413, 0.925340, 0.925268, 0.925195, 0.925122, + 0.925049, 0.924976, 0.924904, 0.924831, 0.924758, 0.924685, 0.924612, 0.924539, + 0.924465, 0.924392, 0.924319, 0.924246, 0.924173, 0.924100, 0.924026, 0.923953, + 0.923880, 0.923806, 0.923733, 0.923659, 0.923586, 0.923512, 0.923439, 0.923365, + 0.923291, 0.923218, 0.923144, 0.923070, 0.922997, 0.922923, 0.922849, 0.922775, + 0.922701, 0.922627, 0.922553, 0.922479, 0.922405, 0.922331, 0.922257, 0.922183, + 0.922109, 0.922034, 0.921960, 0.921886, 0.921812, 0.921737, 0.921663, 0.921588, + 0.921514, 0.921440, 0.921365, 0.921291, 0.921216, 0.921141, 0.921067, 0.920992, + 0.920917, 0.920842, 0.920768, 0.920693, 0.920618, 0.920543, 0.920468, 0.920393, + 0.920318, 0.920243, 0.920168, 0.920093, 0.920018, 0.919943, 0.919868, 0.919792, + 0.919717, 0.919642, 0.919567, 0.919491, 0.919416, 0.919340, 0.919265, 0.919189, + 0.919114, 0.919038, 0.918963, 0.918887, 0.918811, 0.918736, 0.918660, 0.918584, + 0.918508, 0.918433, 0.918357, 0.918281, 0.918205, 0.918129, 0.918053, 0.917977, + 0.917901, 0.917825, 0.917749, 0.917672, 0.917596, 0.917520, 0.917444, 0.917367, + 0.917291, 0.917215, 0.917138, 0.917062, 0.916985, 0.916909, 0.916832, 0.916756, + 0.916679, 0.916602, 0.916526, 0.916449, 0.916372, 0.916296, 0.916219, 0.916142, + 0.916065, 0.915988, 0.915911, 0.915834, 0.915757, 0.915680, 0.915603, 0.915526, + 0.915449, 0.915372, 0.915294, 0.915217, 0.915140, 0.915062, 0.914985, 0.914908, + 0.914830, 0.914753, 0.914675, 0.914598, 0.914520, 0.914443, 0.914365, 0.914287, + 0.914210, 0.914132, 0.914054, 0.913976, 0.913899, 0.913821, 0.913743, 0.913665, + 0.913587, 0.913509, 0.913431, 0.913353, 0.913275, 0.913197, 0.913119, 0.913040, + 0.912962, 0.912884, 0.912806, 0.912727, 0.912649, 0.912571, 0.912492, 0.912414, + 0.912335, 0.912257, 0.912178, 0.912099, 0.912021, 0.911942, 0.911864, 0.911785, + 0.911706, 0.911627, 0.911548, 0.911470, 0.911391, 0.911312, 0.911233, 0.911154, + 0.911075, 0.910996, 0.910917, 0.910837, 0.910758, 0.910679, 0.910600, 0.910521, + 0.910441, 0.910362, 0.910283, 0.910203, 0.910124, 0.910044, 0.909965, 0.909885, + 0.909806, 0.909726, 0.909646, 0.909567, 0.909487, 0.909407, 0.909328, 0.909248, + 0.909168, 0.909088, 0.909008, 0.908928, 0.908848, 0.908768, 0.908688, 0.908608, + 0.908528, 0.908448, 0.908368, 0.908288, 0.908207, 0.908127, 0.908047, 0.907966, + 0.907886, 0.907806, 0.907725, 0.907645, 0.907564, 0.907484, 0.907403, 0.907323, + 0.907242, 0.907161, 0.907081, 0.907000, 0.906919, 0.906838, 0.906757, 0.906677, + 0.906596, 0.906515, 0.906434, 0.906353, 0.906272, 0.906191, 0.906110, 0.906028, + 0.905947, 0.905866, 0.905785, 0.905704, 0.905622, 0.905541, 0.905460, 0.905378, + 0.905297, 0.905215, 0.905134, 0.905052, 0.904971, 0.904889, 0.904807, 0.904726, + 0.904644, 0.904562, 0.904481, 0.904399, 0.904317, 0.904235, 0.904153, 0.904071, + 0.903989, 0.903907, 0.903825, 0.903743, 0.903661, 0.903579, 0.903497, 0.903415, + 0.903332, 0.903250, 0.903168, 0.903085, 0.903003, 0.902921, 0.902838, 0.902756, + 0.902673, 0.902591, 0.902508, 0.902426, 0.902343, 0.902260, 0.902178, 0.902095, + 0.902012, 0.901929, 0.901847, 0.901764, 0.901681, 0.901598, 0.901515, 0.901432, + 0.901349, 0.901266, 0.901183, 0.901100, 0.901016, 0.900933, 0.900850, 0.900767, + 0.900683, 0.900600, 0.900517, 0.900433, 0.900350, 0.900266, 0.900183, 0.900099, + 0.900016, 0.899932, 0.899849, 0.899765, 0.899681, 0.899598, 0.899514, 0.899430, + 0.899346, 0.899262, 0.899179, 0.899095, 0.899011, 0.898927, 0.898843, 0.898759, + 0.898674, 0.898590, 0.898506, 0.898422, 0.898338, 0.898254, 0.898169, 0.898085, + 0.898001, 0.897916, 0.897832, 0.897747, 0.897663, 0.897578, 0.897494, 0.897409, + 0.897325, 0.897240, 0.897155, 0.897071, 0.896986, 0.896901, 0.896816, 0.896731, + 0.896646, 0.896562, 0.896477, 0.896392, 0.896307, 0.896222, 0.896137, 0.896051, + 0.895966, 0.895881, 0.895796, 0.895711, 0.895625, 0.895540, 0.895455, 0.895369, + 0.895284, 0.895198, 0.895113, 0.895028, 0.894942, 0.894856, 0.894771, 0.894685, + 0.894599, 0.894514, 0.894428, 0.894342, 0.894256, 0.894171, 0.894085, 0.893999, + 0.893913, 0.893827, 0.893741, 0.893655, 0.893569, 0.893483, 0.893397, 0.893310, + 0.893224, 0.893138, 0.893052, 0.892965, 0.892879, 0.892793, 0.892706, 0.892620, + 0.892534, 0.892447, 0.892361, 0.892274, 0.892187, 0.892101, 0.892014, 0.891927, + 0.891841, 0.891754, 0.891667, 0.891580, 0.891493, 0.891407, 0.891320, 0.891233, + 0.891146, 0.891059, 0.890972, 0.890885, 0.890797, 0.890710, 0.890623, 0.890536, + 0.890449, 0.890361, 0.890274, 0.890187, 0.890099, 0.890012, 0.889925, 0.889837, + 0.889750, 0.889662, 0.889574, 0.889487, 0.889399, 0.889312, 0.889224, 0.889136, + 0.889048, 0.888961, 0.888873, 0.888785, 0.888697, 0.888609, 0.888521, 0.888433, + 0.888345, 0.888257, 0.888169, 0.888081, 0.887993, 0.887904, 0.887816, 0.887728, + 0.887640, 0.887551, 0.887463, 0.887375, 0.887286, 0.887198, 0.887109, 0.887021, + 0.886932, 0.886844, 0.886755, 0.886666, 0.886578, 0.886489, 0.886400, 0.886311, + 0.886223, 0.886134, 0.886045, 0.885956, 0.885867, 0.885778, 0.885689, 0.885600, + 0.885511, 0.885422, 0.885333, 0.885243, 0.885154, 0.885065, 0.884976, 0.884886, + 0.884797, 0.884708, 0.884618, 0.884529, 0.884439, 0.884350, 0.884260, 0.884171, + 0.884081, 0.883992, 0.883902, 0.883812, 0.883723, 0.883633, 0.883543, 0.883453, + 0.883363, 0.883273, 0.883184, 0.883094, 0.883004, 0.882914, 0.882824, 0.882733, + 0.882643, 0.882553, 0.882463, 0.882373, 0.882283, 0.882192, 0.882102, 0.882012, + 0.881921, 0.881831, 0.881740, 0.881650, 0.881559, 0.881469, 0.881378, 0.881288, + 0.881197, 0.881106, 0.881016, 0.880925, 0.880834, 0.880743, 0.880653, 0.880562, + 0.880471, 0.880380, 0.880289, 0.880198, 0.880107, 0.880016, 0.879925, 0.879834, + 0.879743, 0.879651, 0.879560, 0.879469, 0.879378, 0.879286, 0.879195, 0.879104, + 0.879012, 0.878921, 0.878829, 0.878738, 0.878646, 0.878555, 0.878463, 0.878371, + 0.878280, 0.878188, 0.878096, 0.878005, 0.877913, 0.877821, 0.877729, 0.877637, + 0.877545, 0.877453, 0.877361, 0.877269, 0.877177, 0.877085, 0.876993, 0.876901, + 0.876809, 0.876716, 0.876624, 0.876532, 0.876440, 0.876347, 0.876255, 0.876163, + 0.876070, 0.875978, 0.875885, 0.875793, 0.875700, 0.875607, 0.875515, 0.875422, + 0.875329, 0.875237, 0.875144, 0.875051, 0.874958, 0.874865, 0.874773, 0.874680, + 0.874587, 0.874494, 0.874401, 0.874308, 0.874215, 0.874121, 0.874028, 0.873935, + 0.873842, 0.873749, 0.873655, 0.873562, 0.873469, 0.873375, 0.873282, 0.873188, + 0.873095, 0.873001, 0.872908, 0.872814, 0.872721, 0.872627, 0.872534, 0.872440, + 0.872346, 0.872252, 0.872159, 0.872065, 0.871971, 0.871877, 0.871783, 0.871689, + 0.871595, 0.871501, 0.871407, 0.871313, 0.871219, 0.871125, 0.871031, 0.870936, + 0.870842, 0.870748, 0.870654, 0.870559, 0.870465, 0.870370, 0.870276, 0.870182, + 0.870087, 0.869992, 0.869898, 0.869803, 0.869709, 0.869614, 0.869519, 0.869425, + 0.869330, 0.869235, 0.869140, 0.869045, 0.868951, 0.868856, 0.868761, 0.868666, + 0.868571, 0.868476, 0.868381, 0.868285, 0.868190, 0.868095, 0.868000, 0.867905, + 0.867809, 0.867714, 0.867619, 0.867523, 0.867428, 0.867333, 0.867237, 0.867142, + 0.867046, 0.866951, 0.866855, 0.866759, 0.866664, 0.866568, 0.866472, 0.866377, + 0.866281, 0.866185, 0.866089, 0.865993, 0.865898, 0.865802, 0.865706, 0.865610, + 0.865514, 0.865418, 0.865321, 0.865225, 0.865129, 0.865033, 0.864937, 0.864841, + 0.864744, 0.864648, 0.864552, 0.864455, 0.864359, 0.864262, 0.864166, 0.864069, + 0.863973, 0.863876, 0.863780, 0.863683, 0.863586, 0.863490, 0.863393, 0.863296, + 0.863199, 0.863103, 0.863006, 0.862909, 0.862812, 0.862715, 0.862618, 0.862521, + 0.862424, 0.862327, 0.862230, 0.862133, 0.862035, 0.861938, 0.861841, 0.861744, + 0.861646, 0.861549, 0.861452, 0.861354, 0.861257, 0.861160, 0.861062, 0.860964, + 0.860867, 0.860769, 0.860672, 0.860574, 0.860476, 0.860379, 0.860281, 0.860183, + 0.860085, 0.859988, 0.859890, 0.859792, 0.859694, 0.859596, 0.859498, 0.859400, + 0.859302, 0.859204, 0.859106, 0.859007, 0.858909, 0.858811, 0.858713, 0.858615, + 0.858516, 0.858418, 0.858320, 0.858221, 0.858123, 0.858024, 0.857926, 0.857827, + 0.857729, 0.857630, 0.857531, 0.857433, 0.857334, 0.857235, 0.857137, 0.857038, + 0.856939, 0.856840, 0.856741, 0.856642, 0.856543, 0.856444, 0.856345, 0.856246, + 0.856147, 0.856048, 0.855949, 0.855850, 0.855751, 0.855651, 0.855552, 0.855453, + 0.855354, 0.855254, 0.855155, 0.855056, 0.854956, 0.854857, 0.854757, 0.854658, + 0.854558, 0.854458, 0.854359, 0.854259, 0.854159, 0.854060, 0.853960, 0.853860, + 0.853760, 0.853660, 0.853561, 0.853461, 0.853361, 0.853261, 0.853161, 0.853061, + 0.852961, 0.852861, 0.852760, 0.852660, 0.852560, 0.852460, 0.852360, 0.852259, + 0.852159, 0.852059, 0.851958, 0.851858, 0.851757, 0.851657, 0.851556, 0.851456, + 0.851355, 0.851255, 0.851154, 0.851053, 0.850953, 0.850852, 0.850751, 0.850650, + 0.850549, 0.850449, 0.850348, 0.850247, 0.850146, 0.850045, 0.849944, 0.849843, + 0.849742, 0.849641, 0.849540, 0.849438, 0.849337, 0.849236, 0.849135, 0.849033, + 0.848932, 0.848831, 0.848729, 0.848628, 0.848526, 0.848425, 0.848323, 0.848222, + 0.848120, 0.848019, 0.847917, 0.847815, 0.847714, 0.847612, 0.847510, 0.847408, + 0.847307, 0.847205, 0.847103, 0.847001, 0.846899, 0.846797, 0.846695, 0.846593, + 0.846491, 0.846389, 0.846287, 0.846185, 0.846082, 0.845980, 0.845878, 0.845776, + 0.845673, 0.845571, 0.845469, 0.845366, 0.845264, 0.845161, 0.845059, 0.844956, + 0.844854, 0.844751, 0.844648, 0.844546, 0.844443, 0.844340, 0.844238, 0.844135, + 0.844032, 0.843929, 0.843826, 0.843723, 0.843620, 0.843517, 0.843414, 0.843311, + 0.843208, 0.843105, 0.843002, 0.842899, 0.842796, 0.842692, 0.842589, 0.842486, + 0.842383, 0.842279, 0.842176, 0.842072, 0.841969, 0.841866, 0.841762, 0.841659, + 0.841555, 0.841451, 0.841348, 0.841244, 0.841140, 0.841037, 0.840933, 0.840829, + 0.840725, 0.840622, 0.840518, 0.840414, 0.840310, 0.840206, 0.840102, 0.839998, + 0.839894, 0.839790, 0.839686, 0.839581, 0.839477, 0.839373, 0.839269, 0.839165, + 0.839060, 0.838956, 0.838852, 0.838747, 0.838643, 0.838538, 0.838434, 0.838329, + 0.838225, 0.838120, 0.838015, 0.837911, 0.837806, 0.837701, 0.837597, 0.837492, + 0.837387, 0.837282, 0.837178, 0.837073, 0.836968, 0.836863, 0.836758, 0.836653, + 0.836548, 0.836443, 0.836338, 0.836232, 0.836127, 0.836022, 0.835917, 0.835812, + 0.835706, 0.835601, 0.835496, 0.835390, 0.835285, 0.835179, 0.835074, 0.834968, + 0.834863, 0.834757, 0.834652, 0.834546, 0.834440, 0.834335, 0.834229, 0.834123, + 0.834018, 0.833912, 0.833806, 0.833700, 0.833594, 0.833488, 0.833382, 0.833276, + 0.833170, 0.833064, 0.832958, 0.832852, 0.832746, 0.832640, 0.832533, 0.832427, + 0.832321, 0.832215, 0.832108, 0.832002, 0.831895, 0.831789, 0.831683, 0.831576, + 0.831470, 0.831363, 0.831257, 0.831150, 0.831043, 0.830937, 0.830830, 0.830723, + 0.830616, 0.830510, 0.830403, 0.830296, 0.830189, 0.830082, 0.829975, 0.829868, + 0.829761, 0.829654, 0.829547, 0.829440, 0.829333, 0.829226, 0.829119, 0.829011, + 0.828904, 0.828797, 0.828690, 0.828582, 0.828475, 0.828367, 0.828260, 0.828153, + 0.828045, 0.827938, 0.827830, 0.827722, 0.827615, 0.827507, 0.827399, 0.827292, + 0.827184, 0.827076, 0.826968, 0.826861, 0.826753, 0.826645, 0.826537, 0.826429, + 0.826321, 0.826213, 0.826105, 0.825997, 0.825889, 0.825781, 0.825673, 0.825564, + 0.825456, 0.825348, 0.825240, 0.825131, 0.825023, 0.824915, 0.824806, 0.824698, + 0.824589, 0.824481, 0.824372, 0.824264, 0.824155, 0.824047, 0.823938, 0.823829, + 0.823721, 0.823612, 0.823503, 0.823394, 0.823285, 0.823177, 0.823068, 0.822959, + 0.822850, 0.822741, 0.822632, 0.822523, 0.822414, 0.822305, 0.822195, 0.822086, + 0.821977, 0.821868, 0.821759, 0.821649, 0.821540, 0.821431, 0.821321, 0.821212, + 0.821102, 0.820993, 0.820884, 0.820774, 0.820664, 0.820555, 0.820445, 0.820336, + 0.820226, 0.820116, 0.820007, 0.819897, 0.819787, 0.819677, 0.819567, 0.819457, + 0.819348, 0.819238, 0.819128, 0.819018, 0.818908, 0.818798, 0.818687, 0.818577, + 0.818467, 0.818357, 0.818247, 0.818137, 0.818026, 0.817916, 0.817806, 0.817695, + 0.817585, 0.817474, 0.817364, 0.817253, 0.817143, 0.817032, 0.816922, 0.816811, + 0.816701, 0.816590, 0.816479, 0.816368, 0.816258, 0.816147, 0.816036, 0.815925, + 0.815814, 0.815704, 0.815593, 0.815482, 0.815371, 0.815260, 0.815149, 0.815037, + 0.814926, 0.814815, 0.814704, 0.814593, 0.814482, 0.814370, 0.814259, 0.814148, + 0.814036, 0.813925, 0.813814, 0.813702, 0.813591, 0.813479, 0.813368, 0.813256, + 0.813144, 0.813033, 0.812921, 0.812809, 0.812698, 0.812586, 0.812474, 0.812362, + 0.812251, 0.812139, 0.812027, 0.811915, 0.811803, 0.811691, 0.811579, 0.811467, + 0.811355, 0.811243, 0.811131, 0.811018, 0.810906, 0.810794, 0.810682, 0.810570, + 0.810457, 0.810345, 0.810232, 0.810120, 0.810008, 0.809895, 0.809783, 0.809670, + 0.809558, 0.809445, 0.809332, 0.809220, 0.809107, 0.808994, 0.808882, 0.808769, + 0.808656, 0.808543, 0.808430, 0.808318, 0.808205, 0.808092, 0.807979, 0.807866, + 0.807753, 0.807640, 0.807527, 0.807414, 0.807300, 0.807187, 0.807074, 0.806961, + 0.806848, 0.806734, 0.806621, 0.806508, 0.806394, 0.806281, 0.806167, 0.806054, + 0.805940, 0.805827, 0.805713, 0.805600, 0.805486, 0.805372, 0.805259, 0.805145, + 0.805031, 0.804918, 0.804804, 0.804690, 0.804576, 0.804462, 0.804348, 0.804234, + 0.804120, 0.804006, 0.803892, 0.803778, 0.803664, 0.803550, 0.803436, 0.803322, + 0.803208, 0.803093, 0.802979, 0.802865, 0.802750, 0.802636, 0.802522, 0.802407, + 0.802293, 0.802178, 0.802064, 0.801949, 0.801835, 0.801720, 0.801606, 0.801491, + 0.801376, 0.801261, 0.801147, 0.801032, 0.800917, 0.800802, 0.800687, 0.800573, + 0.800458, 0.800343, 0.800228, 0.800113, 0.799998, 0.799883, 0.799768, 0.799652, + 0.799537, 0.799422, 0.799307, 0.799192, 0.799076, 0.798961, 0.798846, 0.798730, + 0.798615, 0.798500, 0.798384, 0.798269, 0.798153, 0.798038, 0.797922, 0.797806, + 0.797691, 0.797575, 0.797459, 0.797344, 0.797228, 0.797112, 0.796996, 0.796881, + 0.796765, 0.796649, 0.796533, 0.796417, 0.796301, 0.796185, 0.796069, 0.795953, + 0.795837, 0.795721, 0.795605, 0.795488, 0.795372, 0.795256, 0.795140, 0.795023, + 0.794907, 0.794791, 0.794674, 0.794558, 0.794442, 0.794325, 0.794209, 0.794092, + 0.793975, 0.793859, 0.793742, 0.793626, 0.793509, 0.793392, 0.793276, 0.793159, + 0.793042, 0.792925, 0.792808, 0.792691, 0.792575, 0.792458, 0.792341, 0.792224, + 0.792107, 0.791990, 0.791872, 0.791755, 0.791638, 0.791521, 0.791404, 0.791287, + 0.791169, 0.791052, 0.790935, 0.790817, 0.790700, 0.790583, 0.790465, 0.790348, + 0.790230, 0.790113, 0.789995, 0.789878, 0.789760, 0.789642, 0.789525, 0.789407, + 0.789289, 0.789172, 0.789054, 0.788936, 0.788818, 0.788700, 0.788582, 0.788464, + 0.788346, 0.788228, 0.788110, 0.787992, 0.787874, 0.787756, 0.787638, 0.787520, + 0.787402, 0.787284, 0.787165, 0.787047, 0.786929, 0.786810, 0.786692, 0.786574, + 0.786455, 0.786337, 0.786218, 0.786100, 0.785981, 0.785863, 0.785744, 0.785625, + 0.785507, 0.785388, 0.785269, 0.785151, 0.785032, 0.784913, 0.784794, 0.784675, + 0.784557, 0.784438, 0.784319, 0.784200, 0.784081, 0.783962, 0.783843, 0.783724, + 0.783605, 0.783485, 0.783366, 0.783247, 0.783128, 0.783009, 0.782889, 0.782770, + 0.782651, 0.782531, 0.782412, 0.782292, 0.782173, 0.782053, 0.781934, 0.781814, + 0.781695, 0.781575, 0.781456, 0.781336, 0.781216, 0.781097, 0.780977, 0.780857, + 0.780737, 0.780617, 0.780498, 0.780378, 0.780258, 0.780138, 0.780018, 0.779898, + 0.779778, 0.779658, 0.779538, 0.779418, 0.779297, 0.779177, 0.779057, 0.778937, + 0.778817, 0.778696, 0.778576, 0.778456, 0.778335, 0.778215, 0.778094, 0.777974, + 0.777853, 0.777733, 0.777612, 0.777492, 0.777371, 0.777251, 0.777130, 0.777009, + 0.776888, 0.776768, 0.776647, 0.776526, 0.776405, 0.776284, 0.776164, 0.776043, + 0.775922, 0.775801, 0.775680, 0.775559, 0.775438, 0.775317, 0.775195, 0.775074, + 0.774953, 0.774832, 0.774711, 0.774589, 0.774468, 0.774347, 0.774225, 0.774104, + 0.773983, 0.773861, 0.773740, 0.773618, 0.773497, 0.773375, 0.773254, 0.773132, + 0.773010, 0.772889, 0.772767, 0.772645, 0.772524, 0.772402, 0.772280, 0.772158, + 0.772036, 0.771915, 0.771793, 0.771671, 0.771549, 0.771427, 0.771305, 0.771183, + 0.771061, 0.770938, 0.770816, 0.770694, 0.770572, 0.770450, 0.770327, 0.770205, + 0.770083, 0.769961, 0.769838, 0.769716, 0.769593, 0.769471, 0.769348, 0.769226, + 0.769103, 0.768981, 0.768858, 0.768736, 0.768613, 0.768490, 0.768368, 0.768245, + 0.768122, 0.767999, 0.767876, 0.767754, 0.767631, 0.767508, 0.767385, 0.767262, + 0.767139, 0.767016, 0.766893, 0.766770, 0.766647, 0.766524, 0.766400, 0.766277, + 0.766154, 0.766031, 0.765907, 0.765784, 0.765661, 0.765538, 0.765414, 0.765291, + 0.765167, 0.765044, 0.764920, 0.764797, 0.764673, 0.764550, 0.764426, 0.764302, + 0.764179, 0.764055, 0.763931, 0.763808, 0.763684, 0.763560, 0.763436, 0.763312, + 0.763188, 0.763065, 0.762941, 0.762817, 0.762693, 0.762569, 0.762444, 0.762320, + 0.762196, 0.762072, 0.761948, 0.761824, 0.761700, 0.761575, 0.761451, 0.761327, + 0.761202, 0.761078, 0.760954, 0.760829, 0.760705, 0.760580, 0.760456, 0.760331, + 0.760207, 0.760082, 0.759957, 0.759833, 0.759708, 0.759583, 0.759459, 0.759334, + 0.759209, 0.759084, 0.758960, 0.758835, 0.758710, 0.758585, 0.758460, 0.758335, + 0.758210, 0.758085, 0.757960, 0.757835, 0.757710, 0.757584, 0.757459, 0.757334, + 0.757209, 0.757084, 0.756958, 0.756833, 0.756708, 0.756582, 0.756457, 0.756331, + 0.756206, 0.756081, 0.755955, 0.755829, 0.755704, 0.755578, 0.755453, 0.755327, + 0.755201, 0.755076, 0.754950, 0.754824, 0.754698, 0.754573, 0.754447, 0.754321, + 0.754195, 0.754069, 0.753943, 0.753817, 0.753691, 0.753565, 0.753439, 0.753313, + 0.753187, 0.753061, 0.752934, 0.752808, 0.752682, 0.752556, 0.752429, 0.752303, + 0.752177, 0.752050, 0.751924, 0.751798, 0.751671, 0.751545, 0.751418, 0.751292, + 0.751165, 0.751039, 0.750912, 0.750785, 0.750659, 0.750532, 0.750405, 0.750278, + 0.750152, 0.750025, 0.749898, 0.749771, 0.749644, 0.749517, 0.749390, 0.749263, + 0.749136, 0.749009, 0.748882, 0.748755, 0.748628, 0.748501, 0.748374, 0.748247, + 0.748119, 0.747992, 0.747865, 0.747738, 0.747610, 0.747483, 0.747355, 0.747228, + 0.747101, 0.746973, 0.746846, 0.746718, 0.746591, 0.746463, 0.746335, 0.746208, + 0.746080, 0.745952, 0.745825, 0.745697, 0.745569, 0.745441, 0.745314, 0.745186, + 0.745058, 0.744930, 0.744802, 0.744674, 0.744546, 0.744418, 0.744290, 0.744162, + 0.744034, 0.743906, 0.743777, 0.743649, 0.743521, 0.743393, 0.743265, 0.743136, + 0.743008, 0.742880, 0.742751, 0.742623, 0.742494, 0.742366, 0.742237, 0.742109, + 0.741980, 0.741852, 0.741723, 0.741595, 0.741466, 0.741337, 0.741209, 0.741080, + 0.740951, 0.740822, 0.740694, 0.740565, 0.740436, 0.740307, 0.740178, 0.740049, + 0.739920, 0.739791, 0.739662, 0.739533, 0.739404, 0.739275, 0.739146, 0.739017, + 0.738887, 0.738758, 0.738629, 0.738500, 0.738370, 0.738241, 0.738112, 0.737982, + 0.737853, 0.737723, 0.737594, 0.737464, 0.737335, 0.737205, 0.737076, 0.736946, + 0.736817, 0.736687, 0.736557, 0.736428, 0.736298, 0.736168, 0.736038, 0.735908, + 0.735779, 0.735649, 0.735519, 0.735389, 0.735259, 0.735129, 0.734999, 0.734869, + 0.734739, 0.734609, 0.734479, 0.734349, 0.734218, 0.734088, 0.733958, 0.733828, + 0.733697, 0.733567, 0.733437, 0.733306, 0.733176, 0.733046, 0.732915, 0.732785, + 0.732654, 0.732524, 0.732393, 0.732263, 0.732132, 0.732001, 0.731871, 0.731740, + 0.731609, 0.731479, 0.731348, 0.731217, 0.731086, 0.730955, 0.730825, 0.730694, + 0.730563, 0.730432, 0.730301, 0.730170, 0.730039, 0.729908, 0.729777, 0.729646, + 0.729514, 0.729383, 0.729252, 0.729121, 0.728990, 0.728858, 0.728727, 0.728596, + 0.728464, 0.728333, 0.728202, 0.728070, 0.727939, 0.727807, 0.727676, 0.727544, + 0.727413, 0.727281, 0.727149, 0.727018, 0.726886, 0.726754, 0.726623, 0.726491, + 0.726359, 0.726227, 0.726095, 0.725964, 0.725832, 0.725700, 0.725568, 0.725436, + 0.725304, 0.725172, 0.725040, 0.724908, 0.724776, 0.724644, 0.724511, 0.724379, + 0.724247, 0.724115, 0.723983, 0.723850, 0.723718, 0.723586, 0.723453, 0.723321, + 0.723188, 0.723056, 0.722924, 0.722791, 0.722659, 0.722526, 0.722393, 0.722261, + 0.722128, 0.721996, 0.721863, 0.721730, 0.721597, 0.721465, 0.721332, 0.721199, + 0.721066, 0.720933, 0.720800, 0.720668, 0.720535, 0.720402, 0.720269, 0.720136, + 0.720003, 0.719869, 0.719736, 0.719603, 0.719470, 0.719337, 0.719204, 0.719070, + 0.718937, 0.718804, 0.718670, 0.718537, 0.718404, 0.718270, 0.718137, 0.718004, + 0.717870, 0.717737, 0.717603, 0.717469, 0.717336, 0.717202, 0.717069, 0.716935, + 0.716801, 0.716668, 0.716534, 0.716400, 0.716266, 0.716132, 0.715999, 0.715865, + 0.715731, 0.715597, 0.715463, 0.715329, 0.715195, 0.715061, 0.714927, 0.714793, + 0.714659, 0.714525, 0.714390, 0.714256, 0.714122, 0.713988, 0.713853, 0.713719, + 0.713585, 0.713451, 0.713316, 0.713182, 0.713047, 0.712913, 0.712778, 0.712644, + 0.712509, 0.712375, 0.712240, 0.712106, 0.711971, 0.711836, 0.711702, 0.711567, + 0.711432, 0.711297, 0.711163, 0.711028, 0.710893, 0.710758, 0.710623, 0.710488, + 0.710353, 0.710218, 0.710083, 0.709948, 0.709813, 0.709678, 0.709543, 0.709408, + 0.709273, 0.709138, 0.709002, 0.708867, 0.708732, 0.708597, 0.708461, 0.708326, + 0.708191, 0.708055, 0.707920, 0.707784, 0.707649, 0.707513, 0.707378, 0.707242, + 0.707107, 0.706971, 0.706836, 0.706700, 0.706564, 0.706429, 0.706293, 0.706157, + 0.706021, 0.705885, 0.705750, 0.705614, 0.705478, 0.705342, 0.705206, 0.705070, + 0.704934, 0.704798, 0.704662, 0.704526, 0.704390, 0.704254, 0.704118, 0.703981, + 0.703845, 0.703709, 0.703573, 0.703436, 0.703300, 0.703164, 0.703028, 0.702891, + 0.702755, 0.702618, 0.702482, 0.702345, 0.702209, 0.702072, 0.701936, 0.701799, + 0.701663, 0.701526, 0.701389, 0.701253, 0.701116, 0.700979, 0.700842, 0.700706, + 0.700569, 0.700432, 0.700295, 0.700158, 0.700021, 0.699884, 0.699747, 0.699610, + 0.699473, 0.699336, 0.699199, 0.699062, 0.698925, 0.698788, 0.698651, 0.698513, + 0.698376, 0.698239, 0.698102, 0.697964, 0.697827, 0.697690, 0.697552, 0.697415, + 0.697277, 0.697140, 0.697003, 0.696865, 0.696728, 0.696590, 0.696452, 0.696315, + 0.696177, 0.696039, 0.695902, 0.695764, 0.695626, 0.695489, 0.695351, 0.695213, + 0.695075, 0.694937, 0.694799, 0.694661, 0.694524, 0.694386, 0.694248, 0.694109, + 0.693971, 0.693833, 0.693695, 0.693557, 0.693419, 0.693281, 0.693143, 0.693004, + 0.692866, 0.692728, 0.692590, 0.692451, 0.692313, 0.692175, 0.692036, 0.691898, + 0.691759, 0.691621, 0.691482, 0.691344, 0.691205, 0.691067, 0.690928, 0.690789, + 0.690651, 0.690512, 0.690373, 0.690235, 0.690096, 0.689957, 0.689818, 0.689679, + 0.689541, 0.689402, 0.689263, 0.689124, 0.688985, 0.688846, 0.688707, 0.688568, + 0.688429, 0.688290, 0.688151, 0.688011, 0.687872, 0.687733, 0.687594, 0.687455, + 0.687315, 0.687176, 0.687037, 0.686897, 0.686758, 0.686619, 0.686479, 0.686340, + 0.686200, 0.686061, 0.685921, 0.685782, 0.685642, 0.685503, 0.685363, 0.685223, + 0.685084, 0.684944, 0.684804, 0.684664, 0.684525, 0.684385, 0.684245, 0.684105, + 0.683965, 0.683825, 0.683686, 0.683546, 0.683406, 0.683266, 0.683126, 0.682986, + 0.682846, 0.682705, 0.682565, 0.682425, 0.682285, 0.682145, 0.682005, 0.681864, + 0.681724, 0.681584, 0.681443, 0.681303, 0.681163, 0.681022, 0.680882, 0.680741, + 0.680601, 0.680461, 0.680320, 0.680179, 0.680039, 0.679898, 0.679758, 0.679617, + 0.679476, 0.679336, 0.679195, 0.679054, 0.678913, 0.678773, 0.678632, 0.678491, + 0.678350, 0.678209, 0.678068, 0.677927, 0.677786, 0.677645, 0.677504, 0.677363, + 0.677222, 0.677081, 0.676940, 0.676799, 0.676658, 0.676516, 0.676375, 0.676234, + 0.676093, 0.675951, 0.675810, 0.675669, 0.675527, 0.675386, 0.675245, 0.675103, + 0.674962, 0.674820, 0.674679, 0.674537, 0.674396, 0.674254, 0.674112, 0.673971, + 0.673829, 0.673687, 0.673546, 0.673404, 0.673262, 0.673120, 0.672978, 0.672837, + 0.672695, 0.672553, 0.672411, 0.672269, 0.672127, 0.671985, 0.671843, 0.671701, + 0.671559, 0.671417, 0.671275, 0.671133, 0.670990, 0.670848, 0.670706, 0.670564, + 0.670422, 0.670279, 0.670137, 0.669995, 0.669852, 0.669710, 0.669567, 0.669425, + 0.669283, 0.669140, 0.668998, 0.668855, 0.668712, 0.668570, 0.668427, 0.668285, + 0.668142, 0.667999, 0.667857, 0.667714, 0.667571, 0.667428, 0.667286, 0.667143, + 0.667000, 0.666857, 0.666714, 0.666571, 0.666428, 0.666285, 0.666142, 0.665999, + 0.665856, 0.665713, 0.665570, 0.665427, 0.665284, 0.665141, 0.664997, 0.664854, + 0.664711, 0.664568, 0.664424, 0.664281, 0.664138, 0.663994, 0.663851, 0.663708, + 0.663564, 0.663421, 0.663277, 0.663134, 0.662990, 0.662847, 0.662703, 0.662559, + 0.662416, 0.662272, 0.662128, 0.661985, 0.661841, 0.661697, 0.661553, 0.661410, + 0.661266, 0.661122, 0.660978, 0.660834, 0.660690, 0.660546, 0.660402, 0.660258, + 0.660114, 0.659970, 0.659826, 0.659682, 0.659538, 0.659394, 0.659250, 0.659105, + 0.658961, 0.658817, 0.658673, 0.658529, 0.658384, 0.658240, 0.658095, 0.657951, + 0.657807, 0.657662, 0.657518, 0.657373, 0.657229, 0.657084, 0.656940, 0.656795, + 0.656651, 0.656506, 0.656361, 0.656217, 0.656072, 0.655927, 0.655782, 0.655638, + 0.655493, 0.655348, 0.655203, 0.655058, 0.654913, 0.654769, 0.654624, 0.654479, + 0.654334, 0.654189, 0.654044, 0.653899, 0.653753, 0.653608, 0.653463, 0.653318, + 0.653173, 0.653028, 0.652882, 0.652737, 0.652592, 0.652447, 0.652301, 0.652156, + 0.652011, 0.651865, 0.651720, 0.651574, 0.651429, 0.651283, 0.651138, 0.650992, + 0.650847, 0.650701, 0.650555, 0.650410, 0.650264, 0.650119, 0.649973, 0.649827, + 0.649681, 0.649536, 0.649390, 0.649244, 0.649098, 0.648952, 0.648806, 0.648660, + 0.648514, 0.648368, 0.648222, 0.648076, 0.647930, 0.647784, 0.647638, 0.647492, + 0.647346, 0.647200, 0.647054, 0.646907, 0.646761, 0.646615, 0.646469, 0.646322, + 0.646176, 0.646030, 0.645883, 0.645737, 0.645590, 0.645444, 0.645298, 0.645151, + 0.645005, 0.644858, 0.644711, 0.644565, 0.644418, 0.644272, 0.644125, 0.643978, + 0.643832, 0.643685, 0.643538, 0.643391, 0.643245, 0.643098, 0.642951, 0.642804, + 0.642657, 0.642510, 0.642363, 0.642216, 0.642069, 0.641922, 0.641775, 0.641628, + 0.641481, 0.641334, 0.641187, 0.641040, 0.640892, 0.640745, 0.640598, 0.640451, + 0.640303, 0.640156, 0.640009, 0.639862, 0.639714, 0.639567, 0.639419, 0.639272, + 0.639124, 0.638977, 0.638829, 0.638682, 0.638534, 0.638387, 0.638239, 0.638092, + 0.637944, 0.637796, 0.637649, 0.637501, 0.637353, 0.637205, 0.637057, 0.636910, + 0.636762, 0.636614, 0.636466, 0.636318, 0.636170, 0.636022, 0.635874, 0.635726, + 0.635578, 0.635430, 0.635282, 0.635134, 0.634986, 0.634838, 0.634690, 0.634542, + 0.634393, 0.634245, 0.634097, 0.633949, 0.633800, 0.633652, 0.633504, 0.633355, + 0.633207, 0.633058, 0.632910, 0.632761, 0.632613, 0.632464, 0.632316, 0.632167, + 0.632019, 0.631870, 0.631721, 0.631573, 0.631424, 0.631275, 0.631127, 0.630978, + 0.630829, 0.630680, 0.630532, 0.630383, 0.630234, 0.630085, 0.629936, 0.629787, + 0.629638, 0.629489, 0.629340, 0.629191, 0.629042, 0.628893, 0.628744, 0.628595, + 0.628446, 0.628297, 0.628147, 0.627998, 0.627849, 0.627700, 0.627550, 0.627401, + 0.627252, 0.627102, 0.626953, 0.626804, 0.626654, 0.626505, 0.626355, 0.626206, + 0.626056, 0.625907, 0.625757, 0.625608, 0.625458, 0.625309, 0.625159, 0.625009, + 0.624860, 0.624710, 0.624560, 0.624410, 0.624260, 0.624111, 0.623961, 0.623811, + 0.623661, 0.623511, 0.623361, 0.623211, 0.623061, 0.622911, 0.622761, 0.622611, + 0.622461, 0.622311, 0.622161, 0.622011, 0.621861, 0.621711, 0.621560, 0.621410, + 0.621260, 0.621110, 0.620959, 0.620809, 0.620659, 0.620508, 0.620358, 0.620208, + 0.620057, 0.619907, 0.619756, 0.619606, 0.619455, 0.619305, 0.619154, 0.619004, + 0.618853, 0.618702, 0.618552, 0.618401, 0.618250, 0.618100, 0.617949, 0.617798, + 0.617647, 0.617496, 0.617346, 0.617195, 0.617044, 0.616893, 0.616742, 0.616591, + 0.616440, 0.616289, 0.616138, 0.615987, 0.615836, 0.615685, 0.615534, 0.615383, + 0.615232, 0.615080, 0.614929, 0.614778, 0.614627, 0.614475, 0.614324, 0.614173, + 0.614022, 0.613870, 0.613719, 0.613567, 0.613416, 0.613265, 0.613113, 0.612962, + 0.612810, 0.612659, 0.612507, 0.612355, 0.612204, 0.612052, 0.611901, 0.611749, + 0.611597, 0.611445, 0.611294, 0.611142, 0.610990, 0.610838, 0.610687, 0.610535, + 0.610383, 0.610231, 0.610079, 0.609927, 0.609775, 0.609623, 0.609471, 0.609319, + 0.609167, 0.609015, 0.608863, 0.608711, 0.608559, 0.608406, 0.608254, 0.608102, + 0.607950, 0.607798, 0.607645, 0.607493, 0.607341, 0.607188, 0.607036, 0.606884, + 0.606731, 0.606579, 0.606426, 0.606274, 0.606121, 0.605969, 0.605816, 0.605664, + 0.605511, 0.605358, 0.605206, 0.605053, 0.604900, 0.604748, 0.604595, 0.604442, + 0.604290, 0.604137, 0.603984, 0.603831, 0.603678, 0.603525, 0.603372, 0.603220, + 0.603067, 0.602914, 0.602761, 0.602608, 0.602455, 0.602302, 0.602148, 0.601995, + 0.601842, 0.601689, 0.601536, 0.601383, 0.601230, 0.601076, 0.600923, 0.600770, + 0.600616, 0.600463, 0.600310, 0.600156, 0.600003, 0.599850, 0.599696, 0.599543, + 0.599389, 0.599236, 0.599082, 0.598929, 0.598775, 0.598622, 0.598468, 0.598314, + 0.598161, 0.598007, 0.597853, 0.597700, 0.597546, 0.597392, 0.597238, 0.597085, + 0.596931, 0.596777, 0.596623, 0.596469, 0.596315, 0.596161, 0.596007, 0.595853, + 0.595699, 0.595545, 0.595391, 0.595237, 0.595083, 0.594929, 0.594775, 0.594621, + 0.594467, 0.594312, 0.594158, 0.594004, 0.593850, 0.593695, 0.593541, 0.593387, + 0.593232, 0.593078, 0.592924, 0.592769, 0.592615, 0.592460, 0.592306, 0.592151, + 0.591997, 0.591842, 0.591688, 0.591533, 0.591378, 0.591224, 0.591069, 0.590914, + 0.590760, 0.590605, 0.590450, 0.590295, 0.590141, 0.589986, 0.589831, 0.589676, + 0.589521, 0.589366, 0.589212, 0.589057, 0.588902, 0.588747, 0.588592, 0.588437, + 0.588282, 0.588126, 0.587971, 0.587816, 0.587661, 0.587506, 0.587351, 0.587196, + 0.587040, 0.586885, 0.586730, 0.586575, 0.586419, 0.586264, 0.586109, 0.585953, + 0.585798, 0.585642, 0.585487, 0.585332, 0.585176, 0.585021, 0.584865, 0.584710, + 0.584554, 0.584398, 0.584243, 0.584087, 0.583931, 0.583776, 0.583620, 0.583464, + 0.583309, 0.583153, 0.582997, 0.582841, 0.582685, 0.582530, 0.582374, 0.582218, + 0.582062, 0.581906, 0.581750, 0.581594, 0.581438, 0.581282, 0.581126, 0.580970, + 0.580814, 0.580658, 0.580502, 0.580346, 0.580189, 0.580033, 0.579877, 0.579721, + 0.579565, 0.579408, 0.579252, 0.579096, 0.578939, 0.578783, 0.578627, 0.578470, + 0.578314, 0.578157, 0.578001, 0.577844, 0.577688, 0.577531, 0.577375, 0.577218, + 0.577062, 0.576905, 0.576748, 0.576592, 0.576435, 0.576278, 0.576122, 0.575965, + 0.575808, 0.575651, 0.575495, 0.575338, 0.575181, 0.575024, 0.574867, 0.574710, + 0.574553, 0.574396, 0.574239, 0.574082, 0.573925, 0.573768, 0.573611, 0.573454, + 0.573297, 0.573140, 0.572983, 0.572826, 0.572669, 0.572511, 0.572354, 0.572197, + 0.572040, 0.571882, 0.571725, 0.571568, 0.571410, 0.571253, 0.571096, 0.570938, + 0.570781, 0.570623, 0.570466, 0.570308, 0.570151, 0.569993, 0.569836, 0.569678, + 0.569521, 0.569363, 0.569205, 0.569048, 0.568890, 0.568732, 0.568574, 0.568417, + 0.568259, 0.568101, 0.567943, 0.567786, 0.567628, 0.567470, 0.567312, 0.567154, + 0.566996, 0.566838, 0.566680, 0.566522, 0.566364, 0.566206, 0.566048, 0.565890, + 0.565732, 0.565574, 0.565416, 0.565257, 0.565099, 0.564941, 0.564783, 0.564624, + 0.564466, 0.564308, 0.564150, 0.563991, 0.563833, 0.563675, 0.563516, 0.563358, + 0.563199, 0.563041, 0.562882, 0.562724, 0.562565, 0.562407, 0.562248, 0.562090, + 0.561931, 0.561773, 0.561614, 0.561455, 0.561297, 0.561138, 0.560979, 0.560820, + 0.560662, 0.560503, 0.560344, 0.560185, 0.560026, 0.559867, 0.559709, 0.559550, + 0.559391, 0.559232, 0.559073, 0.558914, 0.558755, 0.558596, 0.558437, 0.558278, + 0.558119, 0.557959, 0.557800, 0.557641, 0.557482, 0.557323, 0.557164, 0.557004, + 0.556845, 0.556686, 0.556526, 0.556367, 0.556208, 0.556048, 0.555889, 0.555730, + 0.555570, 0.555411, 0.555251, 0.555092, 0.554932, 0.554773, 0.554613, 0.554454, + 0.554294, 0.554134, 0.553975, 0.553815, 0.553656, 0.553496, 0.553336, 0.553176, + 0.553017, 0.552857, 0.552697, 0.552537, 0.552378, 0.552218, 0.552058, 0.551898, + 0.551738, 0.551578, 0.551418, 0.551258, 0.551098, 0.550938, 0.550778, 0.550618, + 0.550458, 0.550298, 0.550138, 0.549978, 0.549818, 0.549657, 0.549497, 0.549337, + 0.549177, 0.549016, 0.548856, 0.548696, 0.548536, 0.548375, 0.548215, 0.548054, + 0.547894, 0.547734, 0.547573, 0.547413, 0.547252, 0.547092, 0.546931, 0.546771, + 0.546610, 0.546450, 0.546289, 0.546128, 0.545968, 0.545807, 0.545646, 0.545486, + 0.545325, 0.545164, 0.545003, 0.544843, 0.544682, 0.544521, 0.544360, 0.544199, + 0.544039, 0.543878, 0.543717, 0.543556, 0.543395, 0.543234, 0.543073, 0.542912, + 0.542751, 0.542590, 0.542429, 0.542268, 0.542106, 0.541945, 0.541784, 0.541623, + 0.541462, 0.541301, 0.541139, 0.540978, 0.540817, 0.540655, 0.540494, 0.540333, + 0.540171, 0.540010, 0.539849, 0.539687, 0.539526, 0.539364, 0.539203, 0.539041, + 0.538880, 0.538718, 0.538557, 0.538395, 0.538234, 0.538072, 0.537910, 0.537749, + 0.537587, 0.537425, 0.537264, 0.537102, 0.536940, 0.536778, 0.536617, 0.536455, + 0.536293, 0.536131, 0.535969, 0.535807, 0.535645, 0.535484, 0.535322, 0.535160, + 0.534998, 0.534836, 0.534674, 0.534512, 0.534349, 0.534187, 0.534025, 0.533863, + 0.533701, 0.533539, 0.533377, 0.533214, 0.533052, 0.532890, 0.532728, 0.532565, + 0.532403, 0.532241, 0.532078, 0.531916, 0.531754, 0.531591, 0.531429, 0.531266, + 0.531104, 0.530942, 0.530779, 0.530617, 0.530454, 0.530291, 0.530129, 0.529966, + 0.529804, 0.529641, 0.529478, 0.529316, 0.529153, 0.528990, 0.528828, 0.528665, + 0.528502, 0.528339, 0.528176, 0.528014, 0.527851, 0.527688, 0.527525, 0.527362, + 0.527199, 0.527036, 0.526873, 0.526710, 0.526547, 0.526384, 0.526221, 0.526058, + 0.525895, 0.525732, 0.525569, 0.525406, 0.525243, 0.525079, 0.524916, 0.524753, + 0.524590, 0.524426, 0.524263, 0.524100, 0.523937, 0.523773, 0.523610, 0.523447, + 0.523283, 0.523120, 0.522956, 0.522793, 0.522629, 0.522466, 0.522302, 0.522139, + 0.521975, 0.521812, 0.521648, 0.521485, 0.521321, 0.521157, 0.520994, 0.520830, + 0.520666, 0.520503, 0.520339, 0.520175, 0.520011, 0.519848, 0.519684, 0.519520, + 0.519356, 0.519192, 0.519028, 0.518864, 0.518700, 0.518536, 0.518372, 0.518209, + 0.518045, 0.517880, 0.517716, 0.517552, 0.517388, 0.517224, 0.517060, 0.516896, + 0.516732, 0.516568, 0.516403, 0.516239, 0.516075, 0.515911, 0.515746, 0.515582, + 0.515418, 0.515254, 0.515089, 0.514925, 0.514760, 0.514596, 0.514432, 0.514267, + 0.514103, 0.513938, 0.513774, 0.513609, 0.513445, 0.513280, 0.513116, 0.512951, + 0.512786, 0.512622, 0.512457, 0.512292, 0.512128, 0.511963, 0.511798, 0.511634, + 0.511469, 0.511304, 0.511139, 0.510974, 0.510810, 0.510645, 0.510480, 0.510315, + 0.510150, 0.509985, 0.509820, 0.509655, 0.509490, 0.509325, 0.509160, 0.508995, + 0.508830, 0.508665, 0.508500, 0.508335, 0.508170, 0.508005, 0.507839, 0.507674, + 0.507509, 0.507344, 0.507179, 0.507013, 0.506848, 0.506683, 0.506517, 0.506352, + 0.506187, 0.506021, 0.505856, 0.505690, 0.505525, 0.505360, 0.505194, 0.505029, + 0.504863, 0.504698, 0.504532, 0.504366, 0.504201, 0.504035, 0.503870, 0.503704, + 0.503538, 0.503373, 0.503207, 0.503041, 0.502876, 0.502710, 0.502544, 0.502378, + 0.502212, 0.502047, 0.501881, 0.501715, 0.501549, 0.501383, 0.501217, 0.501051, + 0.500885, 0.500719, 0.500553, 0.500387, 0.500221, 0.500055, 0.499889, 0.499723, + 0.499557, 0.499391, 0.499225, 0.499059, 0.498893, 0.498726, 0.498560, 0.498394, + 0.498228, 0.498061, 0.497895, 0.497729, 0.497562, 0.497396, 0.497230, 0.497063, + 0.496897, 0.496731, 0.496564, 0.496398, 0.496231, 0.496065, 0.495898, 0.495732, + 0.495565, 0.495399, 0.495232, 0.495066, 0.494899, 0.494732, 0.494566, 0.494399, + 0.494232, 0.494066, 0.493899, 0.493732, 0.493565, 0.493399, 0.493232, 0.493065, + 0.492898, 0.492731, 0.492564, 0.492398, 0.492231, 0.492064, 0.491897, 0.491730, + 0.491563, 0.491396, 0.491229, 0.491062, 0.490895, 0.490728, 0.490561, 0.490394, + 0.490226, 0.490059, 0.489892, 0.489725, 0.489558, 0.489391, 0.489223, 0.489056, + 0.488889, 0.488722, 0.488554, 0.488387, 0.488220, 0.488052, 0.487885, 0.487718, + 0.487550, 0.487383, 0.487215, 0.487048, 0.486880, 0.486713, 0.486545, 0.486378, + 0.486210, 0.486043, 0.485875, 0.485708, 0.485540, 0.485372, 0.485205, 0.485037, + 0.484869, 0.484702, 0.484534, 0.484366, 0.484198, 0.484031, 0.483863, 0.483695, + 0.483527, 0.483359, 0.483191, 0.483023, 0.482856, 0.482688, 0.482520, 0.482352, + 0.482184, 0.482016, 0.481848, 0.481680, 0.481512, 0.481344, 0.481176, 0.481007, + 0.480839, 0.480671, 0.480503, 0.480335, 0.480167, 0.479998, 0.479830, 0.479662, + 0.479494, 0.479325, 0.479157, 0.478989, 0.478821, 0.478652, 0.478484, 0.478315, + 0.478147, 0.477979, 0.477810, 0.477642, 0.477473, 0.477305, 0.477136, 0.476968, + 0.476799, 0.476631, 0.476462, 0.476294, 0.476125, 0.475956, 0.475788, 0.475619, + 0.475450, 0.475282, 0.475113, 0.474944, 0.474775, 0.474607, 0.474438, 0.474269, + 0.474100, 0.473931, 0.473763, 0.473594, 0.473425, 0.473256, 0.473087, 0.472918, + 0.472749, 0.472580, 0.472411, 0.472242, 0.472073, 0.471904, 0.471735, 0.471566, + 0.471397, 0.471228, 0.471058, 0.470889, 0.470720, 0.470551, 0.470382, 0.470213, + 0.470043, 0.469874, 0.469705, 0.469536, 0.469366, 0.469197, 0.469028, 0.468858, + 0.468689, 0.468519, 0.468350, 0.468181, 0.468011, 0.467842, 0.467672, 0.467503, + 0.467333, 0.467164, 0.466994, 0.466825, 0.466655, 0.466485, 0.466316, 0.466146, + 0.465977, 0.465807, 0.465637, 0.465467, 0.465298, 0.465128, 0.464958, 0.464788, + 0.464619, 0.464449, 0.464279, 0.464109, 0.463939, 0.463769, 0.463600, 0.463430, + 0.463260, 0.463090, 0.462920, 0.462750, 0.462580, 0.462410, 0.462240, 0.462070, + 0.461900, 0.461730, 0.461560, 0.461390, 0.461219, 0.461049, 0.460879, 0.460709, + 0.460539, 0.460369, 0.460198, 0.460028, 0.459858, 0.459687, 0.459517, 0.459347, + 0.459177, 0.459006, 0.458836, 0.458665, 0.458495, 0.458325, 0.458154, 0.457984, + 0.457813, 0.457643, 0.457472, 0.457302, 0.457131, 0.456961, 0.456790, 0.456620, + 0.456449, 0.456278, 0.456108, 0.455937, 0.455766, 0.455596, 0.455425, 0.455254, + 0.455084, 0.454913, 0.454742, 0.454571, 0.454400, 0.454230, 0.454059, 0.453888, + 0.453717, 0.453546, 0.453375, 0.453204, 0.453033, 0.452863, 0.452692, 0.452521, + 0.452350, 0.452179, 0.452008, 0.451836, 0.451665, 0.451494, 0.451323, 0.451152, + 0.450981, 0.450810, 0.450639, 0.450467, 0.450296, 0.450125, 0.449954, 0.449783, + 0.449611, 0.449440, 0.449269, 0.449097, 0.448926, 0.448755, 0.448583, 0.448412, + 0.448241, 0.448069, 0.447898, 0.447726, 0.447555, 0.447383, 0.447212, 0.447040, + 0.446869, 0.446697, 0.446526, 0.446354, 0.446183, 0.446011, 0.445839, 0.445668, + 0.445496, 0.445324, 0.445153, 0.444981, 0.444809, 0.444637, 0.444466, 0.444294, + 0.444122, 0.443950, 0.443779, 0.443607, 0.443435, 0.443263, 0.443091, 0.442919, + 0.442747, 0.442575, 0.442403, 0.442231, 0.442059, 0.441887, 0.441715, 0.441543, + 0.441371, 0.441199, 0.441027, 0.440855, 0.440683, 0.440511, 0.440339, 0.440166, + 0.439994, 0.439822, 0.439650, 0.439478, 0.439305, 0.439133, 0.438961, 0.438789, + 0.438616, 0.438444, 0.438272, 0.438099, 0.437927, 0.437754, 0.437582, 0.437410, + 0.437237, 0.437065, 0.436892, 0.436720, 0.436547, 0.436375, 0.436202, 0.436030, + 0.435857, 0.435685, 0.435512, 0.435339, 0.435167, 0.434994, 0.434821, 0.434649, + 0.434476, 0.434303, 0.434131, 0.433958, 0.433785, 0.433612, 0.433439, 0.433267, + 0.433094, 0.432921, 0.432748, 0.432575, 0.432402, 0.432229, 0.432057, 0.431884, + 0.431711, 0.431538, 0.431365, 0.431192, 0.431019, 0.430846, 0.430673, 0.430500, + 0.430326, 0.430153, 0.429980, 0.429807, 0.429634, 0.429461, 0.429288, 0.429114, + 0.428941, 0.428768, 0.428595, 0.428422, 0.428248, 0.428075, 0.427902, 0.427728, + 0.427555, 0.427382, 0.427208, 0.427035, 0.426862, 0.426688, 0.426515, 0.426341, + 0.426168, 0.425994, 0.425821, 0.425647, 0.425474, 0.425300, 0.425127, 0.424953, + 0.424780, 0.424606, 0.424432, 0.424259, 0.424085, 0.423912, 0.423738, 0.423564, + 0.423390, 0.423217, 0.423043, 0.422869, 0.422695, 0.422522, 0.422348, 0.422174, + 0.422000, 0.421826, 0.421653, 0.421479, 0.421305, 0.421131, 0.420957, 0.420783, + 0.420609, 0.420435, 0.420261, 0.420087, 0.419913, 0.419739, 0.419565, 0.419391, + 0.419217, 0.419043, 0.418869, 0.418695, 0.418520, 0.418346, 0.418172, 0.417998, + 0.417824, 0.417650, 0.417475, 0.417301, 0.417127, 0.416952, 0.416778, 0.416604, + 0.416430, 0.416255, 0.416081, 0.415906, 0.415732, 0.415558, 0.415383, 0.415209, + 0.415034, 0.414860, 0.414685, 0.414511, 0.414337, 0.414162, 0.413987, 0.413813, + 0.413638, 0.413464, 0.413289, 0.413115, 0.412940, 0.412765, 0.412591, 0.412416, + 0.412241, 0.412067, 0.411892, 0.411717, 0.411542, 0.411368, 0.411193, 0.411018, + 0.410843, 0.410668, 0.410493, 0.410319, 0.410144, 0.409969, 0.409794, 0.409619, + 0.409444, 0.409269, 0.409094, 0.408919, 0.408744, 0.408569, 0.408394, 0.408219, + 0.408044, 0.407869, 0.407694, 0.407519, 0.407344, 0.407169, 0.406994, 0.406818, + 0.406643, 0.406468, 0.406293, 0.406118, 0.405942, 0.405767, 0.405592, 0.405417, + 0.405241, 0.405066, 0.404891, 0.404715, 0.404540, 0.404365, 0.404189, 0.404014, + 0.403838, 0.403663, 0.403488, 0.403312, 0.403137, 0.402961, 0.402786, 0.402610, + 0.402435, 0.402259, 0.402084, 0.401908, 0.401732, 0.401557, 0.401381, 0.401206, + 0.401030, 0.400854, 0.400679, 0.400503, 0.400327, 0.400151, 0.399976, 0.399800, + 0.399624, 0.399448, 0.399273, 0.399097, 0.398921, 0.398745, 0.398569, 0.398393, + 0.398218, 0.398042, 0.397866, 0.397690, 0.397514, 0.397338, 0.397162, 0.396986, + 0.396810, 0.396634, 0.396458, 0.396282, 0.396106, 0.395930, 0.395754, 0.395578, + 0.395401, 0.395225, 0.395049, 0.394873, 0.394697, 0.394521, 0.394344, 0.394168, + 0.393992, 0.393816, 0.393640, 0.393463, 0.393287, 0.393111, 0.392934, 0.392758, + 0.392582, 0.392405, 0.392229, 0.392053, 0.391876, 0.391700, 0.391523, 0.391347, + 0.391170, 0.390994, 0.390817, 0.390641, 0.390464, 0.390288, 0.390111, 0.389935, + 0.389758, 0.389582, 0.389405, 0.389228, 0.389052, 0.388875, 0.388698, 0.388522, + 0.388345, 0.388168, 0.387992, 0.387815, 0.387638, 0.387461, 0.387285, 0.387108, + 0.386931, 0.386754, 0.386577, 0.386400, 0.386224, 0.386047, 0.385870, 0.385693, + 0.385516, 0.385339, 0.385162, 0.384985, 0.384808, 0.384631, 0.384454, 0.384277, + 0.384100, 0.383923, 0.383746, 0.383569, 0.383392, 0.383215, 0.383038, 0.382861, + 0.382683, 0.382506, 0.382329, 0.382152, 0.381975, 0.381797, 0.381620, 0.381443, + 0.381266, 0.381088, 0.380911, 0.380734, 0.380557, 0.380379, 0.380202, 0.380025, + 0.379847, 0.379670, 0.379492, 0.379315, 0.379138, 0.378960, 0.378783, 0.378605, + 0.378428, 0.378250, 0.378073, 0.377895, 0.377718, 0.377540, 0.377363, 0.377185, + 0.377007, 0.376830, 0.376652, 0.376475, 0.376297, 0.376119, 0.375942, 0.375764, + 0.375586, 0.375408, 0.375231, 0.375053, 0.374875, 0.374697, 0.374520, 0.374342, + 0.374164, 0.373986, 0.373808, 0.373631, 0.373453, 0.373275, 0.373097, 0.372919, + 0.372741, 0.372563, 0.372385, 0.372207, 0.372029, 0.371851, 0.371673, 0.371495, + 0.371317, 0.371139, 0.370961, 0.370783, 0.370605, 0.370427, 0.370249, 0.370071, + 0.369892, 0.369714, 0.369536, 0.369358, 0.369180, 0.369002, 0.368823, 0.368645, + 0.368467, 0.368289, 0.368110, 0.367932, 0.367754, 0.367575, 0.367397, 0.367219, + 0.367040, 0.366862, 0.366684, 0.366505, 0.366327, 0.366148, 0.365970, 0.365791, + 0.365613, 0.365435, 0.365256, 0.365078, 0.364899, 0.364720, 0.364542, 0.364363, + 0.364185, 0.364006, 0.363828, 0.363649, 0.363470, 0.363292, 0.363113, 0.362934, + 0.362756, 0.362577, 0.362398, 0.362220, 0.362041, 0.361862, 0.361683, 0.361505, + 0.361326, 0.361147, 0.360968, 0.360789, 0.360611, 0.360432, 0.360253, 0.360074, + 0.359895, 0.359716, 0.359537, 0.359358, 0.359179, 0.359000, 0.358821, 0.358642, + 0.358463, 0.358284, 0.358105, 0.357926, 0.357747, 0.357568, 0.357389, 0.357210, + 0.357031, 0.356852, 0.356673, 0.356494, 0.356314, 0.356135, 0.355956, 0.355777, + 0.355598, 0.355418, 0.355239, 0.355060, 0.354881, 0.354701, 0.354522, 0.354343, + 0.354164, 0.353984, 0.353805, 0.353626, 0.353446, 0.353267, 0.353087, 0.352908, + 0.352729, 0.352549, 0.352370, 0.352190, 0.352011, 0.351831, 0.351652, 0.351472, + 0.351293, 0.351113, 0.350934, 0.350754, 0.350575, 0.350395, 0.350215, 0.350036, + 0.349856, 0.349676, 0.349497, 0.349317, 0.349138, 0.348958, 0.348778, 0.348598, + 0.348419, 0.348239, 0.348059, 0.347879, 0.347700, 0.347520, 0.347340, 0.347160, + 0.346980, 0.346801, 0.346621, 0.346441, 0.346261, 0.346081, 0.345901, 0.345721, + 0.345541, 0.345361, 0.345181, 0.345001, 0.344821, 0.344641, 0.344461, 0.344281, + 0.344101, 0.343921, 0.343741, 0.343561, 0.343381, 0.343201, 0.343021, 0.342841, + 0.342661, 0.342481, 0.342300, 0.342120, 0.341940, 0.341760, 0.341580, 0.341399, + 0.341219, 0.341039, 0.340859, 0.340678, 0.340498, 0.340318, 0.340138, 0.339957, + 0.339777, 0.339597, 0.339416, 0.339236, 0.339055, 0.338875, 0.338695, 0.338514, + 0.338334, 0.338153, 0.337973, 0.337792, 0.337612, 0.337431, 0.337251, 0.337070, + 0.336890, 0.336709, 0.336529, 0.336348, 0.336168, 0.335987, 0.335806, 0.335626, + 0.335445, 0.335265, 0.335084, 0.334903, 0.334722, 0.334542, 0.334361, 0.334180, + 0.334000, 0.333819, 0.333638, 0.333457, 0.333277, 0.333096, 0.332915, 0.332734, + 0.332553, 0.332373, 0.332192, 0.332011, 0.331830, 0.331649, 0.331468, 0.331287, + 0.331106, 0.330925, 0.330744, 0.330563, 0.330382, 0.330202, 0.330020, 0.329839, + 0.329658, 0.329477, 0.329296, 0.329115, 0.328934, 0.328753, 0.328572, 0.328391, + 0.328210, 0.328029, 0.327848, 0.327666, 0.327485, 0.327304, 0.327123, 0.326942, + 0.326760, 0.326579, 0.326398, 0.326217, 0.326035, 0.325854, 0.325673, 0.325492, + 0.325310, 0.325129, 0.324948, 0.324766, 0.324585, 0.324404, 0.324222, 0.324041, + 0.323859, 0.323678, 0.323497, 0.323315, 0.323134, 0.322952, 0.322771, 0.322589, + 0.322408, 0.322226, 0.322045, 0.321863, 0.321682, 0.321500, 0.321318, 0.321137, + 0.320955, 0.320774, 0.320592, 0.320410, 0.320229, 0.320047, 0.319865, 0.319684, + 0.319502, 0.319320, 0.319139, 0.318957, 0.318775, 0.318593, 0.318412, 0.318230, + 0.318048, 0.317866, 0.317684, 0.317503, 0.317321, 0.317139, 0.316957, 0.316775, + 0.316593, 0.316411, 0.316230, 0.316048, 0.315866, 0.315684, 0.315502, 0.315320, + 0.315138, 0.314956, 0.314774, 0.314592, 0.314410, 0.314228, 0.314046, 0.313864, + 0.313682, 0.313500, 0.313318, 0.313135, 0.312953, 0.312771, 0.312589, 0.312407, + 0.312225, 0.312043, 0.311860, 0.311678, 0.311496, 0.311314, 0.311132, 0.310949, + 0.310767, 0.310585, 0.310403, 0.310220, 0.310038, 0.309856, 0.309673, 0.309491, + 0.309309, 0.309126, 0.308944, 0.308762, 0.308579, 0.308397, 0.308214, 0.308032, + 0.307850, 0.307667, 0.307485, 0.307302, 0.307120, 0.306937, 0.306755, 0.306572, + 0.306390, 0.306207, 0.306025, 0.305842, 0.305660, 0.305477, 0.305294, 0.305112, + 0.304929, 0.304747, 0.304564, 0.304381, 0.304199, 0.304016, 0.303833, 0.303651, + 0.303468, 0.303285, 0.303103, 0.302920, 0.302737, 0.302554, 0.302372, 0.302189, + 0.302006, 0.301823, 0.301640, 0.301458, 0.301275, 0.301092, 0.300909, 0.300726, + 0.300543, 0.300360, 0.300177, 0.299995, 0.299812, 0.299629, 0.299446, 0.299263, + 0.299080, 0.298897, 0.298714, 0.298531, 0.298348, 0.298165, 0.297982, 0.297799, + 0.297616, 0.297433, 0.297250, 0.297066, 0.296883, 0.296700, 0.296517, 0.296334, + 0.296151, 0.295968, 0.295785, 0.295601, 0.295418, 0.295235, 0.295052, 0.294869, + 0.294685, 0.294502, 0.294319, 0.294136, 0.293952, 0.293769, 0.293586, 0.293402, + 0.293219, 0.293036, 0.292852, 0.292669, 0.292486, 0.292302, 0.292119, 0.291936, + 0.291752, 0.291569, 0.291385, 0.291202, 0.291019, 0.290835, 0.290652, 0.290468, + 0.290285, 0.290101, 0.289918, 0.289734, 0.289551, 0.289367, 0.289184, 0.289000, + 0.288816, 0.288633, 0.288449, 0.288266, 0.288082, 0.287898, 0.287715, 0.287531, + 0.287347, 0.287164, 0.286980, 0.286796, 0.286613, 0.286429, 0.286245, 0.286062, + 0.285878, 0.285694, 0.285510, 0.285327, 0.285143, 0.284959, 0.284775, 0.284591, + 0.284408, 0.284224, 0.284040, 0.283856, 0.283672, 0.283488, 0.283304, 0.283120, + 0.282937, 0.282753, 0.282569, 0.282385, 0.282201, 0.282017, 0.281833, 0.281649, + 0.281465, 0.281281, 0.281097, 0.280913, 0.280729, 0.280545, 0.280361, 0.280177, + 0.279993, 0.279809, 0.279624, 0.279440, 0.279256, 0.279072, 0.278888, 0.278704, + 0.278520, 0.278336, 0.278151, 0.277967, 0.277783, 0.277599, 0.277415, 0.277230, + 0.277046, 0.276862, 0.276678, 0.276493, 0.276309, 0.276125, 0.275940, 0.275756, + 0.275572, 0.275387, 0.275203, 0.275019, 0.274834, 0.274650, 0.274466, 0.274281, + 0.274097, 0.273912, 0.273728, 0.273544, 0.273359, 0.273175, 0.272990, 0.272806, + 0.272621, 0.272437, 0.272252, 0.272068, 0.271883, 0.271699, 0.271514, 0.271330, + 0.271145, 0.270961, 0.270776, 0.270591, 0.270407, 0.270222, 0.270038, 0.269853, + 0.269668, 0.269484, 0.269299, 0.269114, 0.268930, 0.268745, 0.268560, 0.268376, + 0.268191, 0.268006, 0.267821, 0.267637, 0.267452, 0.267267, 0.267082, 0.266898, + 0.266713, 0.266528, 0.266343, 0.266158, 0.265973, 0.265789, 0.265604, 0.265419, + 0.265234, 0.265049, 0.264864, 0.264679, 0.264494, 0.264309, 0.264125, 0.263940, + 0.263755, 0.263570, 0.263385, 0.263200, 0.263015, 0.262830, 0.262645, 0.262460, + 0.262275, 0.262090, 0.261905, 0.261720, 0.261534, 0.261349, 0.261164, 0.260979, + 0.260794, 0.260609, 0.260424, 0.260239, 0.260054, 0.259868, 0.259683, 0.259498, + 0.259313, 0.259128, 0.258943, 0.258757, 0.258572, 0.258387, 0.258202, 0.258016, + 0.257831, 0.257646, 0.257461, 0.257275, 0.257090, 0.256905, 0.256719, 0.256534, + 0.256349, 0.256163, 0.255978, 0.255793, 0.255607, 0.255422, 0.255236, 0.255051, + 0.254866, 0.254680, 0.254495, 0.254309, 0.254124, 0.253938, 0.253753, 0.253568, + 0.253382, 0.253197, 0.253011, 0.252826, 0.252640, 0.252454, 0.252269, 0.252083, + 0.251898, 0.251712, 0.251527, 0.251341, 0.251155, 0.250970, 0.250784, 0.250599, + 0.250413, 0.250227, 0.250042, 0.249856, 0.249670, 0.249485, 0.249299, 0.249113, + 0.248928, 0.248742, 0.248556, 0.248370, 0.248185, 0.247999, 0.247813, 0.247627, + 0.247442, 0.247256, 0.247070, 0.246884, 0.246698, 0.246513, 0.246327, 0.246141, + 0.245955, 0.245769, 0.245583, 0.245397, 0.245212, 0.245026, 0.244840, 0.244654, + 0.244468, 0.244282, 0.244096, 0.243910, 0.243724, 0.243538, 0.243352, 0.243166, + 0.242980, 0.242794, 0.242608, 0.242422, 0.242236, 0.242050, 0.241864, 0.241678, + 0.241492, 0.241306, 0.241120, 0.240934, 0.240748, 0.240561, 0.240375, 0.240189, + 0.240003, 0.239817, 0.239631, 0.239445, 0.239258, 0.239072, 0.238886, 0.238700, + 0.238514, 0.238327, 0.238141, 0.237955, 0.237769, 0.237582, 0.237396, 0.237210, + 0.237024, 0.236837, 0.236651, 0.236465, 0.236278, 0.236092, 0.235906, 0.235719, + 0.235533, 0.235347, 0.235160, 0.234974, 0.234788, 0.234601, 0.234415, 0.234228, + 0.234042, 0.233856, 0.233669, 0.233483, 0.233296, 0.233110, 0.232923, 0.232737, + 0.232550, 0.232364, 0.232177, 0.231991, 0.231804, 0.231618, 0.231431, 0.231245, + 0.231058, 0.230872, 0.230685, 0.230498, 0.230312, 0.230125, 0.229939, 0.229752, + 0.229565, 0.229379, 0.229192, 0.229005, 0.228819, 0.228632, 0.228445, 0.228259, + 0.228072, 0.227885, 0.227699, 0.227512, 0.227325, 0.227139, 0.226952, 0.226765, + 0.226578, 0.226391, 0.226205, 0.226018, 0.225831, 0.225644, 0.225458, 0.225271, + 0.225084, 0.224897, 0.224710, 0.224523, 0.224337, 0.224150, 0.223963, 0.223776, + 0.223589, 0.223402, 0.223215, 0.223028, 0.222841, 0.222654, 0.222468, 0.222281, + 0.222094, 0.221907, 0.221720, 0.221533, 0.221346, 0.221159, 0.220972, 0.220785, + 0.220598, 0.220411, 0.220224, 0.220037, 0.219850, 0.219662, 0.219475, 0.219288, + 0.219101, 0.218914, 0.218727, 0.218540, 0.218353, 0.218166, 0.217979, 0.217791, + 0.217604, 0.217417, 0.217230, 0.217043, 0.216856, 0.216668, 0.216481, 0.216294, + 0.216107, 0.215920, 0.215732, 0.215545, 0.215358, 0.215171, 0.214983, 0.214796, + 0.214609, 0.214422, 0.214234, 0.214047, 0.213860, 0.213672, 0.213485, 0.213298, + 0.213110, 0.212923, 0.212736, 0.212548, 0.212361, 0.212174, 0.211986, 0.211799, + 0.211611, 0.211424, 0.211237, 0.211049, 0.210862, 0.210674, 0.210487, 0.210299, + 0.210112, 0.209924, 0.209737, 0.209549, 0.209362, 0.209174, 0.208987, 0.208799, + 0.208612, 0.208424, 0.208237, 0.208049, 0.207862, 0.207674, 0.207487, 0.207299, + 0.207111, 0.206924, 0.206736, 0.206549, 0.206361, 0.206173, 0.205986, 0.205798, + 0.205610, 0.205423, 0.205235, 0.205047, 0.204860, 0.204672, 0.204484, 0.204297, + 0.204109, 0.203921, 0.203734, 0.203546, 0.203358, 0.203170, 0.202983, 0.202795, + 0.202607, 0.202419, 0.202231, 0.202044, 0.201856, 0.201668, 0.201480, 0.201292, + 0.201105, 0.200917, 0.200729, 0.200541, 0.200353, 0.200165, 0.199978, 0.199790, + 0.199602, 0.199414, 0.199226, 0.199038, 0.198850, 0.198662, 0.198474, 0.198286, + 0.198098, 0.197910, 0.197722, 0.197535, 0.197347, 0.197159, 0.196971, 0.196783, + 0.196595, 0.196407, 0.196219, 0.196031, 0.195843, 0.195654, 0.195466, 0.195278, + 0.195090, 0.194902, 0.194714, 0.194526, 0.194338, 0.194150, 0.193962, 0.193774, + 0.193586, 0.193397, 0.193209, 0.193021, 0.192833, 0.192645, 0.192457, 0.192269, + 0.192080, 0.191892, 0.191704, 0.191516, 0.191328, 0.191139, 0.190951, 0.190763, + 0.190575, 0.190387, 0.190198, 0.190010, 0.189822, 0.189634, 0.189445, 0.189257, + 0.189069, 0.188880, 0.188692, 0.188504, 0.188315, 0.188127, 0.187939, 0.187750, + 0.187562, 0.187374, 0.187185, 0.186997, 0.186809, 0.186620, 0.186432, 0.186244, + 0.186055, 0.185867, 0.185678, 0.185490, 0.185301, 0.185113, 0.184925, 0.184736, + 0.184548, 0.184359, 0.184171, 0.183982, 0.183794, 0.183605, 0.183417, 0.183228, + 0.183040, 0.182851, 0.182663, 0.182474, 0.182286, 0.182097, 0.181909, 0.181720, + 0.181532, 0.181343, 0.181154, 0.180966, 0.180777, 0.180589, 0.180400, 0.180212, + 0.180023, 0.179834, 0.179646, 0.179457, 0.179268, 0.179080, 0.178891, 0.178702, + 0.178514, 0.178325, 0.178136, 0.177948, 0.177759, 0.177570, 0.177382, 0.177193, + 0.177004, 0.176815, 0.176627, 0.176438, 0.176249, 0.176061, 0.175872, 0.175683, + 0.175494, 0.175305, 0.175117, 0.174928, 0.174739, 0.174550, 0.174362, 0.174173, + 0.173984, 0.173795, 0.173606, 0.173417, 0.173229, 0.173040, 0.172851, 0.172662, + 0.172473, 0.172284, 0.172095, 0.171906, 0.171718, 0.171529, 0.171340, 0.171151, + 0.170962, 0.170773, 0.170584, 0.170395, 0.170206, 0.170017, 0.169828, 0.169639, + 0.169450, 0.169261, 0.169072, 0.168883, 0.168694, 0.168505, 0.168316, 0.168127, + 0.167938, 0.167749, 0.167560, 0.167371, 0.167182, 0.166993, 0.166804, 0.166615, + 0.166426, 0.166237, 0.166048, 0.165859, 0.165670, 0.165480, 0.165291, 0.165102, + 0.164913, 0.164724, 0.164535, 0.164346, 0.164157, 0.163967, 0.163778, 0.163589, + 0.163400, 0.163211, 0.163022, 0.162832, 0.162643, 0.162454, 0.162265, 0.162076, + 0.161886, 0.161697, 0.161508, 0.161319, 0.161129, 0.160940, 0.160751, 0.160562, + 0.160372, 0.160183, 0.159994, 0.159805, 0.159615, 0.159426, 0.159237, 0.159047, + 0.158858, 0.158669, 0.158480, 0.158290, 0.158101, 0.157912, 0.157722, 0.157533, + 0.157343, 0.157154, 0.156965, 0.156775, 0.156586, 0.156397, 0.156207, 0.156018, + 0.155828, 0.155639, 0.155450, 0.155260, 0.155071, 0.154881, 0.154692, 0.154502, + 0.154313, 0.154124, 0.153934, 0.153745, 0.153555, 0.153366, 0.153176, 0.152987, + 0.152797, 0.152608, 0.152418, 0.152229, 0.152039, 0.151850, 0.151660, 0.151471, + 0.151281, 0.151092, 0.150902, 0.150712, 0.150523, 0.150333, 0.150144, 0.149954, + 0.149765, 0.149575, 0.149385, 0.149196, 0.149006, 0.148817, 0.148627, 0.148437, + 0.148248, 0.148058, 0.147868, 0.147679, 0.147489, 0.147299, 0.147110, 0.146920, + 0.146730, 0.146541, 0.146351, 0.146161, 0.145972, 0.145782, 0.145592, 0.145403, + 0.145213, 0.145023, 0.144833, 0.144644, 0.144454, 0.144264, 0.144075, 0.143885, + 0.143695, 0.143505, 0.143316, 0.143126, 0.142936, 0.142746, 0.142556, 0.142367, + 0.142177, 0.141987, 0.141797, 0.141607, 0.141418, 0.141228, 0.141038, 0.140848, + 0.140658, 0.140468, 0.140279, 0.140089, 0.139899, 0.139709, 0.139519, 0.139329, + 0.139139, 0.138949, 0.138760, 0.138570, 0.138380, 0.138190, 0.138000, 0.137810, + 0.137620, 0.137430, 0.137240, 0.137050, 0.136860, 0.136670, 0.136480, 0.136291, + 0.136101, 0.135911, 0.135721, 0.135531, 0.135341, 0.135151, 0.134961, 0.134771, + 0.134581, 0.134391, 0.134201, 0.134011, 0.133821, 0.133631, 0.133441, 0.133251, + 0.133061, 0.132870, 0.132680, 0.132490, 0.132300, 0.132110, 0.131920, 0.131730, + 0.131540, 0.131350, 0.131160, 0.130970, 0.130780, 0.130590, 0.130399, 0.130209, + 0.130019, 0.129829, 0.129639, 0.129449, 0.129259, 0.129069, 0.128878, 0.128688, + 0.128498, 0.128308, 0.128118, 0.127928, 0.127737, 0.127547, 0.127357, 0.127167, + 0.126977, 0.126787, 0.126596, 0.126406, 0.126216, 0.126026, 0.125835, 0.125645, + 0.125455, 0.125265, 0.125075, 0.124884, 0.124694, 0.124504, 0.124314, 0.124123, + 0.123933, 0.123743, 0.123552, 0.123362, 0.123172, 0.122982, 0.122791, 0.122601, + 0.122411, 0.122220, 0.122030, 0.121840, 0.121649, 0.121459, 0.121269, 0.121078, + 0.120888, 0.120698, 0.120507, 0.120317, 0.120127, 0.119936, 0.119746, 0.119556, + 0.119365, 0.119175, 0.118984, 0.118794, 0.118604, 0.118413, 0.118223, 0.118032, + 0.117842, 0.117652, 0.117461, 0.117271, 0.117080, 0.116890, 0.116700, 0.116509, + 0.116319, 0.116128, 0.115938, 0.115747, 0.115557, 0.115366, 0.115176, 0.114985, + 0.114795, 0.114604, 0.114414, 0.114223, 0.114033, 0.113842, 0.113652, 0.113461, + 0.113271, 0.113080, 0.112890, 0.112699, 0.112509, 0.112318, 0.112128, 0.111937, + 0.111747, 0.111556, 0.111366, 0.111175, 0.110984, 0.110794, 0.110603, 0.110413, + 0.110222, 0.110032, 0.109841, 0.109650, 0.109460, 0.109269, 0.109079, 0.108888, + 0.108697, 0.108507, 0.108316, 0.108126, 0.107935, 0.107744, 0.107554, 0.107363, + 0.107172, 0.106982, 0.106791, 0.106600, 0.106410, 0.106219, 0.106028, 0.105838, + 0.105647, 0.105456, 0.105266, 0.105075, 0.104884, 0.104694, 0.104503, 0.104312, + 0.104122, 0.103931, 0.103740, 0.103550, 0.103359, 0.103168, 0.102977, 0.102787, + 0.102596, 0.102405, 0.102214, 0.102024, 0.101833, 0.101642, 0.101451, 0.101261, + 0.101070, 0.100879, 0.100688, 0.100498, 0.100307, 0.100116, 0.099925, 0.099734, + 0.099544, 0.099353, 0.099162, 0.098971, 0.098780, 0.098590, 0.098399, 0.098208, + 0.098017, 0.097826, 0.097635, 0.097445, 0.097254, 0.097063, 0.096872, 0.096681, + 0.096490, 0.096300, 0.096109, 0.095918, 0.095727, 0.095536, 0.095345, 0.095154, + 0.094963, 0.094773, 0.094582, 0.094391, 0.094200, 0.094009, 0.093818, 0.093627, + 0.093436, 0.093245, 0.093055, 0.092864, 0.092673, 0.092482, 0.092291, 0.092100, + 0.091909, 0.091718, 0.091527, 0.091336, 0.091145, 0.090954, 0.090763, 0.090572, + 0.090381, 0.090190, 0.089999, 0.089808, 0.089617, 0.089427, 0.089236, 0.089045, + 0.088854, 0.088663, 0.088472, 0.088281, 0.088090, 0.087899, 0.087708, 0.087517, + 0.087326, 0.087135, 0.086943, 0.086752, 0.086561, 0.086370, 0.086179, 0.085988, + 0.085797, 0.085606, 0.085415, 0.085224, 0.085033, 0.084842, 0.084651, 0.084460, + 0.084269, 0.084078, 0.083887, 0.083696, 0.083505, 0.083314, 0.083122, 0.082931, + 0.082740, 0.082549, 0.082358, 0.082167, 0.081976, 0.081785, 0.081594, 0.081403, + 0.081211, 0.081020, 0.080829, 0.080638, 0.080447, 0.080256, 0.080065, 0.079874, + 0.079682, 0.079491, 0.079300, 0.079109, 0.078918, 0.078727, 0.078536, 0.078344, + 0.078153, 0.077962, 0.077771, 0.077580, 0.077389, 0.077197, 0.077006, 0.076815, + 0.076624, 0.076433, 0.076241, 0.076050, 0.075859, 0.075668, 0.075477, 0.075286, + 0.075094, 0.074903, 0.074712, 0.074521, 0.074329, 0.074138, 0.073947, 0.073756, + 0.073565, 0.073373, 0.073182, 0.072991, 0.072800, 0.072608, 0.072417, 0.072226, + 0.072035, 0.071843, 0.071652, 0.071461, 0.071270, 0.071078, 0.070887, 0.070696, + 0.070505, 0.070313, 0.070122, 0.069931, 0.069739, 0.069548, 0.069357, 0.069166, + 0.068974, 0.068783, 0.068592, 0.068400, 0.068209, 0.068018, 0.067827, 0.067635, + 0.067444, 0.067253, 0.067061, 0.066870, 0.066679, 0.066487, 0.066296, 0.066105, + 0.065913, 0.065722, 0.065531, 0.065339, 0.065148, 0.064957, 0.064765, 0.064574, + 0.064383, 0.064191, 0.064000, 0.063809, 0.063617, 0.063426, 0.063234, 0.063043, + 0.062852, 0.062660, 0.062469, 0.062278, 0.062086, 0.061895, 0.061704, 0.061512, + 0.061321, 0.061129, 0.060938, 0.060747, 0.060555, 0.060364, 0.060172, 0.059981, + 0.059790, 0.059598, 0.059407, 0.059215, 0.059024, 0.058833, 0.058641, 0.058450, + 0.058258, 0.058067, 0.057875, 0.057684, 0.057493, 0.057301, 0.057110, 0.056918, + 0.056727, 0.056535, 0.056344, 0.056152, 0.055961, 0.055770, 0.055578, 0.055387, + 0.055195, 0.055004, 0.054812, 0.054621, 0.054429, 0.054238, 0.054046, 0.053855, + 0.053664, 0.053472, 0.053281, 0.053089, 0.052898, 0.052706, 0.052515, 0.052323, + 0.052132, 0.051940, 0.051749, 0.051557, 0.051366, 0.051174, 0.050983, 0.050791, + 0.050600, 0.050408, 0.050217, 0.050025, 0.049834, 0.049642, 0.049451, 0.049259, + 0.049068, 0.048876, 0.048685, 0.048493, 0.048302, 0.048110, 0.047919, 0.047727, + 0.047535, 0.047344, 0.047152, 0.046961, 0.046769, 0.046578, 0.046386, 0.046195, + 0.046003, 0.045812, 0.045620, 0.045429, 0.045237, 0.045045, 0.044854, 0.044662, + 0.044471, 0.044279, 0.044088, 0.043896, 0.043705, 0.043513, 0.043321, 0.043130, + 0.042938, 0.042747, 0.042555, 0.042364, 0.042172, 0.041980, 0.041789, 0.041597, + 0.041406, 0.041214, 0.041022, 0.040831, 0.040639, 0.040448, 0.040256, 0.040065, + 0.039873, 0.039681, 0.039490, 0.039298, 0.039107, 0.038915, 0.038723, 0.038532, + 0.038340, 0.038149, 0.037957, 0.037765, 0.037574, 0.037382, 0.037190, 0.036999, + 0.036807, 0.036616, 0.036424, 0.036232, 0.036041, 0.035849, 0.035657, 0.035466, + 0.035274, 0.035083, 0.034891, 0.034699, 0.034508, 0.034316, 0.034124, 0.033933, + 0.033741, 0.033550, 0.033358, 0.033166, 0.032975, 0.032783, 0.032591, 0.032400, + 0.032208, 0.032016, 0.031825, 0.031633, 0.031441, 0.031250, 0.031058, 0.030866, + 0.030675, 0.030483, 0.030291, 0.030100, 0.029908, 0.029717, 0.029525, 0.029333, + 0.029142, 0.028950, 0.028758, 0.028567, 0.028375, 0.028183, 0.027991, 0.027800, + 0.027608, 0.027416, 0.027225, 0.027033, 0.026841, 0.026650, 0.026458, 0.026266, + 0.026075, 0.025883, 0.025691, 0.025500, 0.025308, 0.025116, 0.024925, 0.024733, + 0.024541, 0.024350, 0.024158, 0.023966, 0.023774, 0.023583, 0.023391, 0.023199, + 0.023008, 0.022816, 0.022624, 0.022433, 0.022241, 0.022049, 0.021857, 0.021666, + 0.021474, 0.021282, 0.021091, 0.020899, 0.020707, 0.020516, 0.020324, 0.020132, + 0.019940, 0.019749, 0.019557, 0.019365, 0.019174, 0.018982, 0.018790, 0.018598, + 0.018407, 0.018215, 0.018023, 0.017832, 0.017640, 0.017448, 0.017256, 0.017065, + 0.016873, 0.016681, 0.016490, 0.016298, 0.016106, 0.015914, 0.015723, 0.015531, + 0.015339, 0.015147, 0.014956, 0.014764, 0.014572, 0.014381, 0.014189, 0.013997, + 0.013805, 0.013614, 0.013422, 0.013230, 0.013038, 0.012847, 0.012655, 0.012463, + 0.012272, 0.012080, 0.011888, 0.011696, 0.011505, 0.011313, 0.011121, 0.010929, + 0.010738, 0.010546, 0.010354, 0.010162, 0.009971, 0.009779, 0.009587, 0.009395, + 0.009204, 0.009012, 0.008820, 0.008629, 0.008437, 0.008245, 0.008053, 0.007862, + 0.007670, 0.007478, 0.007286, 0.007095, 0.006903, 0.006711, 0.006519, 0.006328, + 0.006136, 0.005944, 0.005752, 0.005561, 0.005369, 0.005177, 0.004985, 0.004794, + 0.004602, 0.004410, 0.004218, 0.004027, 0.003835, 0.003643, 0.003451, 0.003260, + 0.003068, 0.002876, 0.002684, 0.002493, 0.002301, 0.002109, 0.001917, 0.001726, + 0.001534, 0.001342, 0.001150, 0.000959, 0.000767, 0.000575, 0.000383, 0.000192, + 0.000000, 0.000192, 0.000383, 0.000575, 0.000767, 0.000959, 0.001150, 0.001342, + 0.001534, 0.001726, 0.001917, 0.002109, 0.002301, 0.002493, 0.002684, 0.002876, + 0.003068, 0.003260, 0.003451, 0.003643, 0.003835, 0.004027, 0.004218, 0.004410, + 0.004602, 0.004794, 0.004985, 0.005177, 0.005369, 0.005561, 0.005752, 0.005944, + 0.006136, 0.006328, 0.006519, 0.006711, 0.006903, 0.007095, 0.007286, 0.007478, + 0.007670, 0.007862, 0.008053, 0.008245, 0.008437, 0.008629, 0.008820, 0.009012, + 0.009204, 0.009395, 0.009587, 0.009779, 0.009971, 0.010162, 0.010354, 0.010546, + 0.010738, 0.010929, 0.011121, 0.011313, 0.011505, 0.011696, 0.011888, 0.012080, + 0.012272, 0.012463, 0.012655, 0.012847, 0.013038, 0.013230, 0.013422, 0.013614, + 0.013805, 0.013997, 0.014189, 0.014381, 0.014572, 0.014764, 0.014956, 0.015147, + 0.015339, 0.015531, 0.015723, 0.015914, 0.016106, 0.016298, 0.016490, 0.016681, + 0.016873, 0.017065, 0.017256, 0.017448, 0.017640, 0.017832, 0.018023, 0.018215, + 0.018407, 0.018598, 0.018790, 0.018982, 0.019174, 0.019365, 0.019557, 0.019749, + 0.019940, 0.020132, 0.020324, 0.020516, 0.020707, 0.020899, 0.021091, 0.021282, + 0.021474, 0.021666, 0.021857, 0.022049, 0.022241, 0.022433, 0.022624, 0.022816, + 0.023008, 0.023199, 0.023391, 0.023583, 0.023774, 0.023966, 0.024158, 0.024350, + 0.024541, 0.024733, 0.024925, 0.025116, 0.025308, 0.025500, 0.025691, 0.025883, + 0.026075, 0.026266, 0.026458, 0.026650, 0.026841, 0.027033, 0.027225, 0.027416, + 0.027608, 0.027800, 0.027991, 0.028183, 0.028375, 0.028567, 0.028758, 0.028950, + 0.029142, 0.029333, 0.029525, 0.029717, 0.029908, 0.030100, 0.030291, 0.030483, + 0.030675, 0.030866, 0.031058, 0.031250, 0.031441, 0.031633, 0.031825, 0.032016, + 0.032208, 0.032400, 0.032591, 0.032783, 0.032975, 0.033166, 0.033358, 0.033550, + 0.033741, 0.033933, 0.034124, 0.034316, 0.034508, 0.034699, 0.034891, 0.035083, + 0.035274, 0.035466, 0.035657, 0.035849, 0.036041, 0.036232, 0.036424, 0.036616, + 0.036807, 0.036999, 0.037190, 0.037382, 0.037574, 0.037765, 0.037957, 0.038149, + 0.038340, 0.038532, 0.038723, 0.038915, 0.039107, 0.039298, 0.039490, 0.039681, + 0.039873, 0.040065, 0.040256, 0.040448, 0.040639, 0.040831, 0.041022, 0.041214, + 0.041406, 0.041597, 0.041789, 0.041980, 0.042172, 0.042364, 0.042555, 0.042747, + 0.042938, 0.043130, 0.043321, 0.043513, 0.043705, 0.043896, 0.044088, 0.044279, + 0.044471, 0.044662, 0.044854, 0.045045, 0.045237, 0.045429, 0.045620, 0.045812, + 0.046003, 0.046195, 0.046386, 0.046578, 0.046769, 0.046961, 0.047152, 0.047344, + 0.047535, 0.047727, 0.047919, 0.048110, 0.048302, 0.048493, 0.048685, 0.048876, + 0.049068, 0.049259, 0.049451, 0.049642, 0.049834, 0.050025, 0.050217, 0.050408, + 0.050600, 0.050791, 0.050983, 0.051174, 0.051366, 0.051557, 0.051749, 0.051940, + 0.052132, 0.052323, 0.052515, 0.052706, 0.052898, 0.053089, 0.053281, 0.053472, + 0.053664, 0.053855, 0.054046, 0.054238, 0.054429, 0.054621, 0.054812, 0.055004, + 0.055195, 0.055387, 0.055578, 0.055770, 0.055961, 0.056152, 0.056344, 0.056535, + 0.056727, 0.056918, 0.057110, 0.057301, 0.057493, 0.057684, 0.057875, 0.058067, + 0.058258, 0.058450, 0.058641, 0.058833, 0.059024, 0.059215, 0.059407, 0.059598, + 0.059790, 0.059981, 0.060172, 0.060364, 0.060555, 0.060747, 0.060938, 0.061129, + 0.061321, 0.061512, 0.061704, 0.061895, 0.062086, 0.062278, 0.062469, 0.062660, + 0.062852, 0.063043, 0.063234, 0.063426, 0.063617, 0.063809, 0.064000, 0.064191, + 0.064383, 0.064574, 0.064765, 0.064957, 0.065148, 0.065339, 0.065531, 0.065722, + 0.065913, 0.066105, 0.066296, 0.066487, 0.066679, 0.066870, 0.067061, 0.067253, + 0.067444, 0.067635, 0.067827, 0.068018, 0.068209, 0.068400, 0.068592, 0.068783, + 0.068974, 0.069166, 0.069357, 0.069548, 0.069739, 0.069931, 0.070122, 0.070313, + 0.070505, 0.070696, 0.070887, 0.071078, 0.071270, 0.071461, 0.071652, 0.071843, + 0.072035, 0.072226, 0.072417, 0.072608, 0.072800, 0.072991, 0.073182, 0.073373, + 0.073565, 0.073756, 0.073947, 0.074138, 0.074329, 0.074521, 0.074712, 0.074903, + 0.075094, 0.075286, 0.075477, 0.075668, 0.075859, 0.076050, 0.076241, 0.076433, + 0.076624, 0.076815, 0.077006, 0.077197, 0.077389, 0.077580, 0.077771, 0.077962, + 0.078153, 0.078344, 0.078536, 0.078727, 0.078918, 0.079109, 0.079300, 0.079491, + 0.079682, 0.079874, 0.080065, 0.080256, 0.080447, 0.080638, 0.080829, 0.081020, + 0.081211, 0.081403, 0.081594, 0.081785, 0.081976, 0.082167, 0.082358, 0.082549, + 0.082740, 0.082931, 0.083122, 0.083314, 0.083505, 0.083696, 0.083887, 0.084078, + 0.084269, 0.084460, 0.084651, 0.084842, 0.085033, 0.085224, 0.085415, 0.085606, + 0.085797, 0.085988, 0.086179, 0.086370, 0.086561, 0.086752, 0.086943, 0.087135, + 0.087326, 0.087517, 0.087708, 0.087899, 0.088090, 0.088281, 0.088472, 0.088663, + 0.088854, 0.089045, 0.089236, 0.089427, 0.089617, 0.089808, 0.089999, 0.090190, + 0.090381, 0.090572, 0.090763, 0.090954, 0.091145, 0.091336, 0.091527, 0.091718, + 0.091909, 0.092100, 0.092291, 0.092482, 0.092673, 0.092864, 0.093055, 0.093245, + 0.093436, 0.093627, 0.093818, 0.094009, 0.094200, 0.094391, 0.094582, 0.094773, + 0.094963, 0.095154, 0.095345, 0.095536, 0.095727, 0.095918, 0.096109, 0.096300, + 0.096490, 0.096681, 0.096872, 0.097063, 0.097254, 0.097445, 0.097635, 0.097826, + 0.098017, 0.098208, 0.098399, 0.098590, 0.098780, 0.098971, 0.099162, 0.099353, + 0.099544, 0.099734, 0.099925, 0.100116, 0.100307, 0.100498, 0.100688, 0.100879, + 0.101070, 0.101261, 0.101451, 0.101642, 0.101833, 0.102024, 0.102214, 0.102405, + 0.102596, 0.102787, 0.102977, 0.103168, 0.103359, 0.103550, 0.103740, 0.103931, + 0.104122, 0.104312, 0.104503, 0.104694, 0.104884, 0.105075, 0.105266, 0.105456, + 0.105647, 0.105838, 0.106028, 0.106219, 0.106410, 0.106600, 0.106791, 0.106982, + 0.107172, 0.107363, 0.107554, 0.107744, 0.107935, 0.108126, 0.108316, 0.108507, + 0.108697, 0.108888, 0.109079, 0.109269, 0.109460, 0.109650, 0.109841, 0.110032, + 0.110222, 0.110413, 0.110603, 0.110794, 0.110984, 0.111175, 0.111366, 0.111556, + 0.111747, 0.111937, 0.112128, 0.112318, 0.112509, 0.112699, 0.112890, 0.113080, + 0.113271, 0.113461, 0.113652, 0.113842, 0.114033, 0.114223, 0.114414, 0.114604, + 0.114795, 0.114985, 0.115176, 0.115366, 0.115557, 0.115747, 0.115938, 0.116128, + 0.116319, 0.116509, 0.116700, 0.116890, 0.117080, 0.117271, 0.117461, 0.117652, + 0.117842, 0.118032, 0.118223, 0.118413, 0.118604, 0.118794, 0.118984, 0.119175, + 0.119365, 0.119556, 0.119746, 0.119936, 0.120127, 0.120317, 0.120507, 0.120698, + 0.120888, 0.121078, 0.121269, 0.121459, 0.121649, 0.121840, 0.122030, 0.122220, + 0.122411, 0.122601, 0.122791, 0.122982, 0.123172, 0.123362, 0.123552, 0.123743, + 0.123933, 0.124123, 0.124314, 0.124504, 0.124694, 0.124884, 0.125075, 0.125265, + 0.125455, 0.125645, 0.125835, 0.126026, 0.126216, 0.126406, 0.126596, 0.126787, + 0.126977, 0.127167, 0.127357, 0.127547, 0.127737, 0.127928, 0.128118, 0.128308, + 0.128498, 0.128688, 0.128878, 0.129069, 0.129259, 0.129449, 0.129639, 0.129829, + 0.130019, 0.130209, 0.130399, 0.130590, 0.130780, 0.130970, 0.131160, 0.131350, + 0.131540, 0.131730, 0.131920, 0.132110, 0.132300, 0.132490, 0.132680, 0.132870, + 0.133061, 0.133251, 0.133441, 0.133631, 0.133821, 0.134011, 0.134201, 0.134391, + 0.134581, 0.134771, 0.134961, 0.135151, 0.135341, 0.135531, 0.135721, 0.135911, + 0.136101, 0.136291, 0.136480, 0.136670, 0.136860, 0.137050, 0.137240, 0.137430, + 0.137620, 0.137810, 0.138000, 0.138190, 0.138380, 0.138570, 0.138760, 0.138949, + 0.139139, 0.139329, 0.139519, 0.139709, 0.139899, 0.140089, 0.140279, 0.140468, + 0.140658, 0.140848, 0.141038, 0.141228, 0.141418, 0.141607, 0.141797, 0.141987, + 0.142177, 0.142367, 0.142556, 0.142746, 0.142936, 0.143126, 0.143316, 0.143505, + 0.143695, 0.143885, 0.144075, 0.144264, 0.144454, 0.144644, 0.144833, 0.145023, + 0.145213, 0.145403, 0.145592, 0.145782, 0.145972, 0.146161, 0.146351, 0.146541, + 0.146730, 0.146920, 0.147110, 0.147299, 0.147489, 0.147679, 0.147868, 0.148058, + 0.148248, 0.148437, 0.148627, 0.148817, 0.149006, 0.149196, 0.149385, 0.149575, + 0.149765, 0.149954, 0.150144, 0.150333, 0.150523, 0.150712, 0.150902, 0.151092, + 0.151281, 0.151471, 0.151660, 0.151850, 0.152039, 0.152229, 0.152418, 0.152608, + 0.152797, 0.152987, 0.153176, 0.153366, 0.153555, 0.153745, 0.153934, 0.154124, + 0.154313, 0.154502, 0.154692, 0.154881, 0.155071, 0.155260, 0.155450, 0.155639, + 0.155828, 0.156018, 0.156207, 0.156397, 0.156586, 0.156775, 0.156965, 0.157154, + 0.157343, 0.157533, 0.157722, 0.157912, 0.158101, 0.158290, 0.158480, 0.158669, + 0.158858, 0.159047, 0.159237, 0.159426, 0.159615, 0.159805, 0.159994, 0.160183, + 0.160372, 0.160562, 0.160751, 0.160940, 0.161129, 0.161319, 0.161508, 0.161697, + 0.161886, 0.162076, 0.162265, 0.162454, 0.162643, 0.162832, 0.163022, 0.163211, + 0.163400, 0.163589, 0.163778, 0.163967, 0.164157, 0.164346, 0.164535, 0.164724, + 0.164913, 0.165102, 0.165291, 0.165480, 0.165670, 0.165859, 0.166048, 0.166237, + 0.166426, 0.166615, 0.166804, 0.166993, 0.167182, 0.167371, 0.167560, 0.167749, + 0.167938, 0.168127, 0.168316, 0.168505, 0.168694, 0.168883, 0.169072, 0.169261, + 0.169450, 0.169639, 0.169828, 0.170017, 0.170206, 0.170395, 0.170584, 0.170773, + 0.170962, 0.171151, 0.171340, 0.171529, 0.171718, 0.171906, 0.172095, 0.172284, + 0.172473, 0.172662, 0.172851, 0.173040, 0.173229, 0.173417, 0.173606, 0.173795, + 0.173984, 0.174173, 0.174362, 0.174550, 0.174739, 0.174928, 0.175117, 0.175305, + 0.175494, 0.175683, 0.175872, 0.176061, 0.176249, 0.176438, 0.176627, 0.176815, + 0.177004, 0.177193, 0.177382, 0.177570, 0.177759, 0.177948, 0.178136, 0.178325, + 0.178514, 0.178702, 0.178891, 0.179080, 0.179268, 0.179457, 0.179646, 0.179834, + 0.180023, 0.180212, 0.180400, 0.180589, 0.180777, 0.180966, 0.181154, 0.181343, + 0.181532, 0.181720, 0.181909, 0.182097, 0.182286, 0.182474, 0.182663, 0.182851, + 0.183040, 0.183228, 0.183417, 0.183605, 0.183794, 0.183982, 0.184171, 0.184359, + 0.184548, 0.184736, 0.184925, 0.185113, 0.185301, 0.185490, 0.185678, 0.185867, + 0.186055, 0.186244, 0.186432, 0.186620, 0.186809, 0.186997, 0.187185, 0.187374, + 0.187562, 0.187750, 0.187939, 0.188127, 0.188315, 0.188504, 0.188692, 0.188880, + 0.189069, 0.189257, 0.189445, 0.189634, 0.189822, 0.190010, 0.190198, 0.190387, + 0.190575, 0.190763, 0.190951, 0.191139, 0.191328, 0.191516, 0.191704, 0.191892, + 0.192080, 0.192269, 0.192457, 0.192645, 0.192833, 0.193021, 0.193209, 0.193397, + 0.193586, 0.193774, 0.193962, 0.194150, 0.194338, 0.194526, 0.194714, 0.194902, + 0.195090, 0.195278, 0.195466, 0.195654, 0.195843, 0.196031, 0.196219, 0.196407, + 0.196595, 0.196783, 0.196971, 0.197159, 0.197347, 0.197535, 0.197722, 0.197910, + 0.198098, 0.198286, 0.198474, 0.198662, 0.198850, 0.199038, 0.199226, 0.199414, + 0.199602, 0.199790, 0.199978, 0.200165, 0.200353, 0.200541, 0.200729, 0.200917, + 0.201105, 0.201292, 0.201480, 0.201668, 0.201856, 0.202044, 0.202231, 0.202419, + 0.202607, 0.202795, 0.202983, 0.203170, 0.203358, 0.203546, 0.203734, 0.203921, + 0.204109, 0.204297, 0.204484, 0.204672, 0.204860, 0.205047, 0.205235, 0.205423, + 0.205610, 0.205798, 0.205986, 0.206173, 0.206361, 0.206549, 0.206736, 0.206924, + 0.207111, 0.207299, 0.207487, 0.207674, 0.207862, 0.208049, 0.208237, 0.208424, + 0.208612, 0.208799, 0.208987, 0.209174, 0.209362, 0.209549, 0.209737, 0.209924, + 0.210112, 0.210299, 0.210487, 0.210674, 0.210862, 0.211049, 0.211237, 0.211424, + 0.211611, 0.211799, 0.211986, 0.212174, 0.212361, 0.212548, 0.212736, 0.212923, + 0.213110, 0.213298, 0.213485, 0.213672, 0.213860, 0.214047, 0.214234, 0.214422, + 0.214609, 0.214796, 0.214983, 0.215171, 0.215358, 0.215545, 0.215732, 0.215920, + 0.216107, 0.216294, 0.216481, 0.216668, 0.216856, 0.217043, 0.217230, 0.217417, + 0.217604, 0.217791, 0.217979, 0.218166, 0.218353, 0.218540, 0.218727, 0.218914, + 0.219101, 0.219288, 0.219475, 0.219662, 0.219850, 0.220037, 0.220224, 0.220411, + 0.220598, 0.220785, 0.220972, 0.221159, 0.221346, 0.221533, 0.221720, 0.221907, + 0.222094, 0.222281, 0.222468, 0.222654, 0.222841, 0.223028, 0.223215, 0.223402, + 0.223589, 0.223776, 0.223963, 0.224150, 0.224337, 0.224523, 0.224710, 0.224897, + 0.225084, 0.225271, 0.225458, 0.225644, 0.225831, 0.226018, 0.226205, 0.226391, + 0.226578, 0.226765, 0.226952, 0.227139, 0.227325, 0.227512, 0.227699, 0.227885, + 0.228072, 0.228259, 0.228445, 0.228632, 0.228819, 0.229005, 0.229192, 0.229379, + 0.229565, 0.229752, 0.229939, 0.230125, 0.230312, 0.230498, 0.230685, 0.230872, + 0.231058, 0.231245, 0.231431, 0.231618, 0.231804, 0.231991, 0.232177, 0.232364, + 0.232550, 0.232737, 0.232923, 0.233110, 0.233296, 0.233483, 0.233669, 0.233856, + 0.234042, 0.234228, 0.234415, 0.234601, 0.234788, 0.234974, 0.235160, 0.235347, + 0.235533, 0.235719, 0.235906, 0.236092, 0.236278, 0.236465, 0.236651, 0.236837, + 0.237024, 0.237210, 0.237396, 0.237582, 0.237769, 0.237955, 0.238141, 0.238327, + 0.238514, 0.238700, 0.238886, 0.239072, 0.239258, 0.239445, 0.239631, 0.239817, + 0.240003, 0.240189, 0.240375, 0.240561, 0.240748, 0.240934, 0.241120, 0.241306, + 0.241492, 0.241678, 0.241864, 0.242050, 0.242236, 0.242422, 0.242608, 0.242794, + 0.242980, 0.243166, 0.243352, 0.243538, 0.243724, 0.243910, 0.244096, 0.244282, + 0.244468, 0.244654, 0.244840, 0.245026, 0.245212, 0.245397, 0.245583, 0.245769, + 0.245955, 0.246141, 0.246327, 0.246513, 0.246698, 0.246884, 0.247070, 0.247256, + 0.247442, 0.247627, 0.247813, 0.247999, 0.248185, 0.248370, 0.248556, 0.248742, + 0.248928, 0.249113, 0.249299, 0.249485, 0.249670, 0.249856, 0.250042, 0.250227, + 0.250413, 0.250599, 0.250784, 0.250970, 0.251155, 0.251341, 0.251527, 0.251712, + 0.251898, 0.252083, 0.252269, 0.252454, 0.252640, 0.252826, 0.253011, 0.253197, + 0.253382, 0.253568, 0.253753, 0.253938, 0.254124, 0.254309, 0.254495, 0.254680, + 0.254866, 0.255051, 0.255236, 0.255422, 0.255607, 0.255793, 0.255978, 0.256163, + 0.256349, 0.256534, 0.256719, 0.256905, 0.257090, 0.257275, 0.257461, 0.257646, + 0.257831, 0.258016, 0.258202, 0.258387, 0.258572, 0.258757, 0.258943, 0.259128, + 0.259313, 0.259498, 0.259683, 0.259868, 0.260054, 0.260239, 0.260424, 0.260609, + 0.260794, 0.260979, 0.261164, 0.261349, 0.261534, 0.261720, 0.261905, 0.262090, + 0.262275, 0.262460, 0.262645, 0.262830, 0.263015, 0.263200, 0.263385, 0.263570, + 0.263755, 0.263940, 0.264125, 0.264309, 0.264494, 0.264679, 0.264864, 0.265049, + 0.265234, 0.265419, 0.265604, 0.265789, 0.265973, 0.266158, 0.266343, 0.266528, + 0.266713, 0.266898, 0.267082, 0.267267, 0.267452, 0.267637, 0.267821, 0.268006, + 0.268191, 0.268376, 0.268560, 0.268745, 0.268930, 0.269114, 0.269299, 0.269484, + 0.269668, 0.269853, 0.270038, 0.270222, 0.270407, 0.270591, 0.270776, 0.270961, + 0.271145, 0.271330, 0.271514, 0.271699, 0.271883, 0.272068, 0.272252, 0.272437, + 0.272621, 0.272806, 0.272990, 0.273175, 0.273359, 0.273544, 0.273728, 0.273912, + 0.274097, 0.274281, 0.274466, 0.274650, 0.274834, 0.275019, 0.275203, 0.275387, + 0.275572, 0.275756, 0.275940, 0.276125, 0.276309, 0.276493, 0.276678, 0.276862, + 0.277046, 0.277230, 0.277415, 0.277599, 0.277783, 0.277967, 0.278151, 0.278336, + 0.278520, 0.278704, 0.278888, 0.279072, 0.279256, 0.279440, 0.279624, 0.279809, + 0.279993, 0.280177, 0.280361, 0.280545, 0.280729, 0.280913, 0.281097, 0.281281, + 0.281465, 0.281649, 0.281833, 0.282017, 0.282201, 0.282385, 0.282569, 0.282753, + 0.282937, 0.283120, 0.283304, 0.283488, 0.283672, 0.283856, 0.284040, 0.284224, + 0.284408, 0.284591, 0.284775, 0.284959, 0.285143, 0.285327, 0.285510, 0.285694, + 0.285878, 0.286062, 0.286245, 0.286429, 0.286613, 0.286796, 0.286980, 0.287164, + 0.287347, 0.287531, 0.287715, 0.287898, 0.288082, 0.288266, 0.288449, 0.288633, + 0.288816, 0.289000, 0.289184, 0.289367, 0.289551, 0.289734, 0.289918, 0.290101, + 0.290285, 0.290468, 0.290652, 0.290835, 0.291019, 0.291202, 0.291385, 0.291569, + 0.291752, 0.291936, 0.292119, 0.292302, 0.292486, 0.292669, 0.292852, 0.293036, + 0.293219, 0.293402, 0.293586, 0.293769, 0.293952, 0.294136, 0.294319, 0.294502, + 0.294685, 0.294869, 0.295052, 0.295235, 0.295418, 0.295601, 0.295785, 0.295968, + 0.296151, 0.296334, 0.296517, 0.296700, 0.296883, 0.297066, 0.297250, 0.297433, + 0.297616, 0.297799, 0.297982, 0.298165, 0.298348, 0.298531, 0.298714, 0.298897, + 0.299080, 0.299263, 0.299446, 0.299629, 0.299812, 0.299995, 0.300177, 0.300360, + 0.300543, 0.300726, 0.300909, 0.301092, 0.301275, 0.301458, 0.301640, 0.301823, + 0.302006, 0.302189, 0.302372, 0.302554, 0.302737, 0.302920, 0.303103, 0.303285, + 0.303468, 0.303651, 0.303833, 0.304016, 0.304199, 0.304381, 0.304564, 0.304747, + 0.304929, 0.305112, 0.305294, 0.305477, 0.305660, 0.305842, 0.306025, 0.306207, + 0.306390, 0.306572, 0.306755, 0.306937, 0.307120, 0.307302, 0.307485, 0.307667, + 0.307850, 0.308032, 0.308214, 0.308397, 0.308579, 0.308762, 0.308944, 0.309126, + 0.309309, 0.309491, 0.309673, 0.309856, 0.310038, 0.310220, 0.310403, 0.310585, + 0.310767, 0.310949, 0.311132, 0.311314, 0.311496, 0.311678, 0.311860, 0.312043, + 0.312225, 0.312407, 0.312589, 0.312771, 0.312953, 0.313135, 0.313318, 0.313500, + 0.313682, 0.313864, 0.314046, 0.314228, 0.314410, 0.314592, 0.314774, 0.314956, + 0.315138, 0.315320, 0.315502, 0.315684, 0.315866, 0.316048, 0.316230, 0.316411, + 0.316593, 0.316775, 0.316957, 0.317139, 0.317321, 0.317503, 0.317684, 0.317866, + 0.318048, 0.318230, 0.318412, 0.318593, 0.318775, 0.318957, 0.319139, 0.319320, + 0.319502, 0.319684, 0.319865, 0.320047, 0.320229, 0.320410, 0.320592, 0.320774, + 0.320955, 0.321137, 0.321318, 0.321500, 0.321682, 0.321863, 0.322045, 0.322226, + 0.322408, 0.322589, 0.322771, 0.322952, 0.323134, 0.323315, 0.323497, 0.323678, + 0.323859, 0.324041, 0.324222, 0.324404, 0.324585, 0.324766, 0.324948, 0.325129, + 0.325310, 0.325492, 0.325673, 0.325854, 0.326035, 0.326217, 0.326398, 0.326579, + 0.326760, 0.326942, 0.327123, 0.327304, 0.327485, 0.327666, 0.327848, 0.328029, + 0.328210, 0.328391, 0.328572, 0.328753, 0.328934, 0.329115, 0.329296, 0.329477, + 0.329658, 0.329839, 0.330020, 0.330202, 0.330382, 0.330563, 0.330744, 0.330925, + 0.331106, 0.331287, 0.331468, 0.331649, 0.331830, 0.332011, 0.332192, 0.332373, + 0.332553, 0.332734, 0.332915, 0.333096, 0.333277, 0.333457, 0.333638, 0.333819, + 0.334000, 0.334180, 0.334361, 0.334542, 0.334722, 0.334903, 0.335084, 0.335265, + 0.335445, 0.335626, 0.335806, 0.335987, 0.336168, 0.336348, 0.336529, 0.336709, + 0.336890, 0.337070, 0.337251, 0.337431, 0.337612, 0.337792, 0.337973, 0.338153, + 0.338334, 0.338514, 0.338695, 0.338875, 0.339055, 0.339236, 0.339416, 0.339597, + 0.339777, 0.339957, 0.340138, 0.340318, 0.340498, 0.340678, 0.340859, 0.341039, + 0.341219, 0.341399, 0.341580, 0.341760, 0.341940, 0.342120, 0.342300, 0.342481, + 0.342661, 0.342841, 0.343021, 0.343201, 0.343381, 0.343561, 0.343741, 0.343921, + 0.344101, 0.344281, 0.344461, 0.344641, 0.344821, 0.345001, 0.345181, 0.345361, + 0.345541, 0.345721, 0.345901, 0.346081, 0.346261, 0.346441, 0.346621, 0.346801, + 0.346980, 0.347160, 0.347340, 0.347520, 0.347700, 0.347879, 0.348059, 0.348239, + 0.348419, 0.348598, 0.348778, 0.348958, 0.349138, 0.349317, 0.349497, 0.349676, + 0.349856, 0.350036, 0.350215, 0.350395, 0.350575, 0.350754, 0.350934, 0.351113, + 0.351293, 0.351472, 0.351652, 0.351831, 0.352011, 0.352190, 0.352370, 0.352549, + 0.352729, 0.352908, 0.353087, 0.353267, 0.353446, 0.353626, 0.353805, 0.353984, + 0.354164, 0.354343, 0.354522, 0.354701, 0.354881, 0.355060, 0.355239, 0.355418, + 0.355598, 0.355777, 0.355956, 0.356135, 0.356314, 0.356494, 0.356673, 0.356852, + 0.357031, 0.357210, 0.357389, 0.357568, 0.357747, 0.357926, 0.358105, 0.358284, + 0.358463, 0.358642, 0.358821, 0.359000, 0.359179, 0.359358, 0.359537, 0.359716, + 0.359895, 0.360074, 0.360253, 0.360432, 0.360611, 0.360789, 0.360968, 0.361147, + 0.361326, 0.361505, 0.361683, 0.361862, 0.362041, 0.362220, 0.362398, 0.362577, + 0.362756, 0.362934, 0.363113, 0.363292, 0.363470, 0.363649, 0.363828, 0.364006, + 0.364185, 0.364363, 0.364542, 0.364720, 0.364899, 0.365078, 0.365256, 0.365435, + 0.365613, 0.365791, 0.365970, 0.366148, 0.366327, 0.366505, 0.366684, 0.366862, + 0.367040, 0.367219, 0.367397, 0.367575, 0.367754, 0.367932, 0.368110, 0.368289, + 0.368467, 0.368645, 0.368823, 0.369002, 0.369180, 0.369358, 0.369536, 0.369714, + 0.369892, 0.370071, 0.370249, 0.370427, 0.370605, 0.370783, 0.370961, 0.371139, + 0.371317, 0.371495, 0.371673, 0.371851, 0.372029, 0.372207, 0.372385, 0.372563, + 0.372741, 0.372919, 0.373097, 0.373275, 0.373453, 0.373631, 0.373808, 0.373986, + 0.374164, 0.374342, 0.374520, 0.374697, 0.374875, 0.375053, 0.375231, 0.375408, + 0.375586, 0.375764, 0.375942, 0.376119, 0.376297, 0.376475, 0.376652, 0.376830, + 0.377007, 0.377185, 0.377363, 0.377540, 0.377718, 0.377895, 0.378073, 0.378250, + 0.378428, 0.378605, 0.378783, 0.378960, 0.379138, 0.379315, 0.379492, 0.379670, + 0.379847, 0.380025, 0.380202, 0.380379, 0.380557, 0.380734, 0.380911, 0.381088, + 0.381266, 0.381443, 0.381620, 0.381797, 0.381975, 0.382152, 0.382329, 0.382506, + 0.382683, 0.382861, 0.383038, 0.383215, 0.383392, 0.383569, 0.383746, 0.383923, + 0.384100, 0.384277, 0.384454, 0.384631, 0.384808, 0.384985, 0.385162, 0.385339, + 0.385516, 0.385693, 0.385870, 0.386047, 0.386224, 0.386400, 0.386577, 0.386754, + 0.386931, 0.387108, 0.387285, 0.387461, 0.387638, 0.387815, 0.387992, 0.388168, + 0.388345, 0.388522, 0.388698, 0.388875, 0.389052, 0.389228, 0.389405, 0.389582, + 0.389758, 0.389935, 0.390111, 0.390288, 0.390464, 0.390641, 0.390817, 0.390994, + 0.391170, 0.391347, 0.391523, 0.391700, 0.391876, 0.392053, 0.392229, 0.392405, + 0.392582, 0.392758, 0.392934, 0.393111, 0.393287, 0.393463, 0.393640, 0.393816, + 0.393992, 0.394168, 0.394344, 0.394521, 0.394697, 0.394873, 0.395049, 0.395225, + 0.395401, 0.395578, 0.395754, 0.395930, 0.396106, 0.396282, 0.396458, 0.396634, + 0.396810, 0.396986, 0.397162, 0.397338, 0.397514, 0.397690, 0.397866, 0.398042, + 0.398218, 0.398393, 0.398569, 0.398745, 0.398921, 0.399097, 0.399273, 0.399448, + 0.399624, 0.399800, 0.399976, 0.400151, 0.400327, 0.400503, 0.400679, 0.400854, + 0.401030, 0.401206, 0.401381, 0.401557, 0.401732, 0.401908, 0.402084, 0.402259, + 0.402435, 0.402610, 0.402786, 0.402961, 0.403137, 0.403312, 0.403488, 0.403663, + 0.403838, 0.404014, 0.404189, 0.404365, 0.404540, 0.404715, 0.404891, 0.405066, + 0.405241, 0.405417, 0.405592, 0.405767, 0.405942, 0.406118, 0.406293, 0.406468, + 0.406643, 0.406818, 0.406994, 0.407169, 0.407344, 0.407519, 0.407694, 0.407869, + 0.408044, 0.408219, 0.408394, 0.408569, 0.408744, 0.408919, 0.409094, 0.409269, + 0.409444, 0.409619, 0.409794, 0.409969, 0.410144, 0.410319, 0.410493, 0.410668, + 0.410843, 0.411018, 0.411193, 0.411368, 0.411542, 0.411717, 0.411892, 0.412067, + 0.412241, 0.412416, 0.412591, 0.412765, 0.412940, 0.413115, 0.413289, 0.413464, + 0.413638, 0.413813, 0.413987, 0.414162, 0.414337, 0.414511, 0.414685, 0.414860, + 0.415034, 0.415209, 0.415383, 0.415558, 0.415732, 0.415906, 0.416081, 0.416255, + 0.416430, 0.416604, 0.416778, 0.416952, 0.417127, 0.417301, 0.417475, 0.417650, + 0.417824, 0.417998, 0.418172, 0.418346, 0.418520, 0.418695, 0.418869, 0.419043, + 0.419217, 0.419391, 0.419565, 0.419739, 0.419913, 0.420087, 0.420261, 0.420435, + 0.420609, 0.420783, 0.420957, 0.421131, 0.421305, 0.421479, 0.421653, 0.421826, + 0.422000, 0.422174, 0.422348, 0.422522, 0.422695, 0.422869, 0.423043, 0.423217, + 0.423390, 0.423564, 0.423738, 0.423912, 0.424085, 0.424259, 0.424432, 0.424606, + 0.424780, 0.424953, 0.425127, 0.425300, 0.425474, 0.425647, 0.425821, 0.425994, + 0.426168, 0.426341, 0.426515, 0.426688, 0.426862, 0.427035, 0.427208, 0.427382, + 0.427555, 0.427728, 0.427902, 0.428075, 0.428248, 0.428422, 0.428595, 0.428768, + 0.428941, 0.429114, 0.429288, 0.429461, 0.429634, 0.429807, 0.429980, 0.430153, + 0.430326, 0.430500, 0.430673, 0.430846, 0.431019, 0.431192, 0.431365, 0.431538, + 0.431711, 0.431884, 0.432057, 0.432229, 0.432402, 0.432575, 0.432748, 0.432921, + 0.433094, 0.433267, 0.433439, 0.433612, 0.433785, 0.433958, 0.434131, 0.434303, + 0.434476, 0.434649, 0.434821, 0.434994, 0.435167, 0.435339, 0.435512, 0.435685, + 0.435857, 0.436030, 0.436202, 0.436375, 0.436547, 0.436720, 0.436892, 0.437065, + 0.437237, 0.437410, 0.437582, 0.437754, 0.437927, 0.438099, 0.438272, 0.438444, + 0.438616, 0.438789, 0.438961, 0.439133, 0.439305, 0.439478, 0.439650, 0.439822, + 0.439994, 0.440166, 0.440339, 0.440511, 0.440683, 0.440855, 0.441027, 0.441199, + 0.441371, 0.441543, 0.441715, 0.441887, 0.442059, 0.442231, 0.442403, 0.442575, + 0.442747, 0.442919, 0.443091, 0.443263, 0.443435, 0.443607, 0.443779, 0.443950, + 0.444122, 0.444294, 0.444466, 0.444637, 0.444809, 0.444981, 0.445153, 0.445324, + 0.445496, 0.445668, 0.445839, 0.446011, 0.446183, 0.446354, 0.446526, 0.446697, + 0.446869, 0.447040, 0.447212, 0.447383, 0.447555, 0.447726, 0.447898, 0.448069, + 0.448241, 0.448412, 0.448583, 0.448755, 0.448926, 0.449097, 0.449269, 0.449440, + 0.449611, 0.449783, 0.449954, 0.450125, 0.450296, 0.450467, 0.450639, 0.450810, + 0.450981, 0.451152, 0.451323, 0.451494, 0.451665, 0.451836, 0.452008, 0.452179, + 0.452350, 0.452521, 0.452692, 0.452863, 0.453033, 0.453204, 0.453375, 0.453546, + 0.453717, 0.453888, 0.454059, 0.454230, 0.454400, 0.454571, 0.454742, 0.454913, + 0.455084, 0.455254, 0.455425, 0.455596, 0.455766, 0.455937, 0.456108, 0.456278, + 0.456449, 0.456620, 0.456790, 0.456961, 0.457131, 0.457302, 0.457472, 0.457643, + 0.457813, 0.457984, 0.458154, 0.458325, 0.458495, 0.458665, 0.458836, 0.459006, + 0.459177, 0.459347, 0.459517, 0.459687, 0.459858, 0.460028, 0.460198, 0.460369, + 0.460539, 0.460709, 0.460879, 0.461049, 0.461219, 0.461390, 0.461560, 0.461730, + 0.461900, 0.462070, 0.462240, 0.462410, 0.462580, 0.462750, 0.462920, 0.463090, + 0.463260, 0.463430, 0.463600, 0.463769, 0.463939, 0.464109, 0.464279, 0.464449, + 0.464619, 0.464788, 0.464958, 0.465128, 0.465298, 0.465467, 0.465637, 0.465807, + 0.465977, 0.466146, 0.466316, 0.466485, 0.466655, 0.466825, 0.466994, 0.467164, + 0.467333, 0.467503, 0.467672, 0.467842, 0.468011, 0.468181, 0.468350, 0.468519, + 0.468689, 0.468858, 0.469028, 0.469197, 0.469366, 0.469536, 0.469705, 0.469874, + 0.470043, 0.470213, 0.470382, 0.470551, 0.470720, 0.470889, 0.471058, 0.471228, + 0.471397, 0.471566, 0.471735, 0.471904, 0.472073, 0.472242, 0.472411, 0.472580, + 0.472749, 0.472918, 0.473087, 0.473256, 0.473425, 0.473594, 0.473763, 0.473931, + 0.474100, 0.474269, 0.474438, 0.474607, 0.474775, 0.474944, 0.475113, 0.475282, + 0.475450, 0.475619, 0.475788, 0.475956, 0.476125, 0.476294, 0.476462, 0.476631, + 0.476799, 0.476968, 0.477136, 0.477305, 0.477473, 0.477642, 0.477810, 0.477979, + 0.478147, 0.478315, 0.478484, 0.478652, 0.478821, 0.478989, 0.479157, 0.479325, + 0.479494, 0.479662, 0.479830, 0.479998, 0.480167, 0.480335, 0.480503, 0.480671, + 0.480839, 0.481007, 0.481176, 0.481344, 0.481512, 0.481680, 0.481848, 0.482016, + 0.482184, 0.482352, 0.482520, 0.482688, 0.482856, 0.483023, 0.483191, 0.483359, + 0.483527, 0.483695, 0.483863, 0.484031, 0.484198, 0.484366, 0.484534, 0.484702, + 0.484869, 0.485037, 0.485205, 0.485372, 0.485540, 0.485708, 0.485875, 0.486043, + 0.486210, 0.486378, 0.486545, 0.486713, 0.486880, 0.487048, 0.487215, 0.487383, + 0.487550, 0.487718, 0.487885, 0.488052, 0.488220, 0.488387, 0.488554, 0.488722, + 0.488889, 0.489056, 0.489223, 0.489391, 0.489558, 0.489725, 0.489892, 0.490059, + 0.490226, 0.490394, 0.490561, 0.490728, 0.490895, 0.491062, 0.491229, 0.491396, + 0.491563, 0.491730, 0.491897, 0.492064, 0.492231, 0.492398, 0.492564, 0.492731, + 0.492898, 0.493065, 0.493232, 0.493399, 0.493565, 0.493732, 0.493899, 0.494066, + 0.494232, 0.494399, 0.494566, 0.494732, 0.494899, 0.495066, 0.495232, 0.495399, + 0.495565, 0.495732, 0.495898, 0.496065, 0.496231, 0.496398, 0.496564, 0.496731, + 0.496897, 0.497063, 0.497230, 0.497396, 0.497562, 0.497729, 0.497895, 0.498061, + 0.498228, 0.498394, 0.498560, 0.498726, 0.498893, 0.499059, 0.499225, 0.499391, + 0.499557, 0.499723, 0.499889, 0.500055, 0.500221, 0.500387, 0.500553, 0.500719, + 0.500885, 0.501051, 0.501217, 0.501383, 0.501549, 0.501715, 0.501881, 0.502047, + 0.502212, 0.502378, 0.502544, 0.502710, 0.502876, 0.503041, 0.503207, 0.503373, + 0.503538, 0.503704, 0.503870, 0.504035, 0.504201, 0.504366, 0.504532, 0.504698, + 0.504863, 0.505029, 0.505194, 0.505360, 0.505525, 0.505690, 0.505856, 0.506021, + 0.506187, 0.506352, 0.506517, 0.506683, 0.506848, 0.507013, 0.507179, 0.507344, + 0.507509, 0.507674, 0.507839, 0.508005, 0.508170, 0.508335, 0.508500, 0.508665, + 0.508830, 0.508995, 0.509160, 0.509325, 0.509490, 0.509655, 0.509820, 0.509985, + 0.510150, 0.510315, 0.510480, 0.510645, 0.510810, 0.510974, 0.511139, 0.511304, + 0.511469, 0.511634, 0.511798, 0.511963, 0.512128, 0.512292, 0.512457, 0.512622, + 0.512786, 0.512951, 0.513116, 0.513280, 0.513445, 0.513609, 0.513774, 0.513938, + 0.514103, 0.514267, 0.514432, 0.514596, 0.514760, 0.514925, 0.515089, 0.515254, + 0.515418, 0.515582, 0.515746, 0.515911, 0.516075, 0.516239, 0.516403, 0.516568, + 0.516732, 0.516896, 0.517060, 0.517224, 0.517388, 0.517552, 0.517716, 0.517880, + 0.518045, 0.518209, 0.518372, 0.518536, 0.518700, 0.518864, 0.519028, 0.519192, + 0.519356, 0.519520, 0.519684, 0.519848, 0.520011, 0.520175, 0.520339, 0.520503, + 0.520666, 0.520830, 0.520994, 0.521157, 0.521321, 0.521485, 0.521648, 0.521812, + 0.521975, 0.522139, 0.522302, 0.522466, 0.522629, 0.522793, 0.522956, 0.523120, + 0.523283, 0.523447, 0.523610, 0.523773, 0.523937, 0.524100, 0.524263, 0.524426, + 0.524590, 0.524753, 0.524916, 0.525079, 0.525243, 0.525406, 0.525569, 0.525732, + 0.525895, 0.526058, 0.526221, 0.526384, 0.526547, 0.526710, 0.526873, 0.527036, + 0.527199, 0.527362, 0.527525, 0.527688, 0.527851, 0.528014, 0.528176, 0.528339, + 0.528502, 0.528665, 0.528828, 0.528990, 0.529153, 0.529316, 0.529478, 0.529641, + 0.529804, 0.529966, 0.530129, 0.530291, 0.530454, 0.530617, 0.530779, 0.530942, + 0.531104, 0.531266, 0.531429, 0.531591, 0.531754, 0.531916, 0.532078, 0.532241, + 0.532403, 0.532565, 0.532728, 0.532890, 0.533052, 0.533214, 0.533377, 0.533539, + 0.533701, 0.533863, 0.534025, 0.534187, 0.534349, 0.534512, 0.534674, 0.534836, + 0.534998, 0.535160, 0.535322, 0.535484, 0.535645, 0.535807, 0.535969, 0.536131, + 0.536293, 0.536455, 0.536617, 0.536778, 0.536940, 0.537102, 0.537264, 0.537425, + 0.537587, 0.537749, 0.537910, 0.538072, 0.538234, 0.538395, 0.538557, 0.538718, + 0.538880, 0.539041, 0.539203, 0.539364, 0.539526, 0.539687, 0.539849, 0.540010, + 0.540171, 0.540333, 0.540494, 0.540655, 0.540817, 0.540978, 0.541139, 0.541301, + 0.541462, 0.541623, 0.541784, 0.541945, 0.542106, 0.542268, 0.542429, 0.542590, + 0.542751, 0.542912, 0.543073, 0.543234, 0.543395, 0.543556, 0.543717, 0.543878, + 0.544039, 0.544199, 0.544360, 0.544521, 0.544682, 0.544843, 0.545003, 0.545164, + 0.545325, 0.545486, 0.545646, 0.545807, 0.545968, 0.546128, 0.546289, 0.546450, + 0.546610, 0.546771, 0.546931, 0.547092, 0.547252, 0.547413, 0.547573, 0.547734, + 0.547894, 0.548054, 0.548215, 0.548375, 0.548536, 0.548696, 0.548856, 0.549016, + 0.549177, 0.549337, 0.549497, 0.549657, 0.549818, 0.549978, 0.550138, 0.550298, + 0.550458, 0.550618, 0.550778, 0.550938, 0.551098, 0.551258, 0.551418, 0.551578, + 0.551738, 0.551898, 0.552058, 0.552218, 0.552378, 0.552537, 0.552697, 0.552857, + 0.553017, 0.553176, 0.553336, 0.553496, 0.553656, 0.553815, 0.553975, 0.554134, + 0.554294, 0.554454, 0.554613, 0.554773, 0.554932, 0.555092, 0.555251, 0.555411, + 0.555570, 0.555730, 0.555889, 0.556048, 0.556208, 0.556367, 0.556526, 0.556686, + 0.556845, 0.557004, 0.557164, 0.557323, 0.557482, 0.557641, 0.557800, 0.557959, + 0.558119, 0.558278, 0.558437, 0.558596, 0.558755, 0.558914, 0.559073, 0.559232, + 0.559391, 0.559550, 0.559709, 0.559867, 0.560026, 0.560185, 0.560344, 0.560503, + 0.560662, 0.560820, 0.560979, 0.561138, 0.561297, 0.561455, 0.561614, 0.561773, + 0.561931, 0.562090, 0.562248, 0.562407, 0.562565, 0.562724, 0.562882, 0.563041, + 0.563199, 0.563358, 0.563516, 0.563675, 0.563833, 0.563991, 0.564150, 0.564308, + 0.564466, 0.564624, 0.564783, 0.564941, 0.565099, 0.565257, 0.565416, 0.565574, + 0.565732, 0.565890, 0.566048, 0.566206, 0.566364, 0.566522, 0.566680, 0.566838, + 0.566996, 0.567154, 0.567312, 0.567470, 0.567628, 0.567786, 0.567943, 0.568101, + 0.568259, 0.568417, 0.568574, 0.568732, 0.568890, 0.569048, 0.569205, 0.569363, + 0.569521, 0.569678, 0.569836, 0.569993, 0.570151, 0.570308, 0.570466, 0.570623, + 0.570781, 0.570938, 0.571096, 0.571253, 0.571410, 0.571568, 0.571725, 0.571882, + 0.572040, 0.572197, 0.572354, 0.572511, 0.572669, 0.572826, 0.572983, 0.573140, + 0.573297, 0.573454, 0.573611, 0.573768, 0.573925, 0.574082, 0.574239, 0.574396, + 0.574553, 0.574710, 0.574867, 0.575024, 0.575181, 0.575338, 0.575495, 0.575651, + 0.575808, 0.575965, 0.576122, 0.576278, 0.576435, 0.576592, 0.576748, 0.576905, + 0.577062, 0.577218, 0.577375, 0.577531, 0.577688, 0.577844, 0.578001, 0.578157, + 0.578314, 0.578470, 0.578627, 0.578783, 0.578939, 0.579096, 0.579252, 0.579408, + 0.579565, 0.579721, 0.579877, 0.580033, 0.580189, 0.580346, 0.580502, 0.580658, + 0.580814, 0.580970, 0.581126, 0.581282, 0.581438, 0.581594, 0.581750, 0.581906, + 0.582062, 0.582218, 0.582374, 0.582530, 0.582685, 0.582841, 0.582997, 0.583153, + 0.583309, 0.583464, 0.583620, 0.583776, 0.583931, 0.584087, 0.584243, 0.584398, + 0.584554, 0.584710, 0.584865, 0.585021, 0.585176, 0.585332, 0.585487, 0.585642, + 0.585798, 0.585953, 0.586109, 0.586264, 0.586419, 0.586575, 0.586730, 0.586885, + 0.587040, 0.587196, 0.587351, 0.587506, 0.587661, 0.587816, 0.587971, 0.588126, + 0.588282, 0.588437, 0.588592, 0.588747, 0.588902, 0.589057, 0.589212, 0.589366, + 0.589521, 0.589676, 0.589831, 0.589986, 0.590141, 0.590295, 0.590450, 0.590605, + 0.590760, 0.590914, 0.591069, 0.591224, 0.591378, 0.591533, 0.591688, 0.591842, + 0.591997, 0.592151, 0.592306, 0.592460, 0.592615, 0.592769, 0.592924, 0.593078, + 0.593232, 0.593387, 0.593541, 0.593695, 0.593850, 0.594004, 0.594158, 0.594312, + 0.594467, 0.594621, 0.594775, 0.594929, 0.595083, 0.595237, 0.595391, 0.595545, + 0.595699, 0.595853, 0.596007, 0.596161, 0.596315, 0.596469, 0.596623, 0.596777, + 0.596931, 0.597085, 0.597238, 0.597392, 0.597546, 0.597700, 0.597853, 0.598007, + 0.598161, 0.598314, 0.598468, 0.598622, 0.598775, 0.598929, 0.599082, 0.599236, + 0.599389, 0.599543, 0.599696, 0.599850, 0.600003, 0.600156, 0.600310, 0.600463, + 0.600616, 0.600770, 0.600923, 0.601076, 0.601230, 0.601383, 0.601536, 0.601689, + 0.601842, 0.601995, 0.602148, 0.602302, 0.602455, 0.602608, 0.602761, 0.602914, + 0.603067, 0.603220, 0.603372, 0.603525, 0.603678, 0.603831, 0.603984, 0.604137, + 0.604290, 0.604442, 0.604595, 0.604748, 0.604900, 0.605053, 0.605206, 0.605358, + 0.605511, 0.605664, 0.605816, 0.605969, 0.606121, 0.606274, 0.606426, 0.606579, + 0.606731, 0.606884, 0.607036, 0.607188, 0.607341, 0.607493, 0.607645, 0.607798, + 0.607950, 0.608102, 0.608254, 0.608406, 0.608559, 0.608711, 0.608863, 0.609015, + 0.609167, 0.609319, 0.609471, 0.609623, 0.609775, 0.609927, 0.610079, 0.610231, + 0.610383, 0.610535, 0.610687, 0.610838, 0.610990, 0.611142, 0.611294, 0.611445, + 0.611597, 0.611749, 0.611901, 0.612052, 0.612204, 0.612355, 0.612507, 0.612659, + 0.612810, 0.612962, 0.613113, 0.613265, 0.613416, 0.613567, 0.613719, 0.613870, + 0.614022, 0.614173, 0.614324, 0.614475, 0.614627, 0.614778, 0.614929, 0.615080, + 0.615232, 0.615383, 0.615534, 0.615685, 0.615836, 0.615987, 0.616138, 0.616289, + 0.616440, 0.616591, 0.616742, 0.616893, 0.617044, 0.617195, 0.617346, 0.617496, + 0.617647, 0.617798, 0.617949, 0.618100, 0.618250, 0.618401, 0.618552, 0.618702, + 0.618853, 0.619004, 0.619154, 0.619305, 0.619455, 0.619606, 0.619756, 0.619907, + 0.620057, 0.620208, 0.620358, 0.620508, 0.620659, 0.620809, 0.620959, 0.621110, + 0.621260, 0.621410, 0.621560, 0.621711, 0.621861, 0.622011, 0.622161, 0.622311, + 0.622461, 0.622611, 0.622761, 0.622911, 0.623061, 0.623211, 0.623361, 0.623511, + 0.623661, 0.623811, 0.623961, 0.624111, 0.624260, 0.624410, 0.624560, 0.624710, + 0.624860, 0.625009, 0.625159, 0.625309, 0.625458, 0.625608, 0.625757, 0.625907, + 0.626056, 0.626206, 0.626355, 0.626505, 0.626654, 0.626804, 0.626953, 0.627102, + 0.627252, 0.627401, 0.627550, 0.627700, 0.627849, 0.627998, 0.628147, 0.628297, + 0.628446, 0.628595, 0.628744, 0.628893, 0.629042, 0.629191, 0.629340, 0.629489, + 0.629638, 0.629787, 0.629936, 0.630085, 0.630234, 0.630383, 0.630532, 0.630680, + 0.630829, 0.630978, 0.631127, 0.631275, 0.631424, 0.631573, 0.631721, 0.631870, + 0.632019, 0.632167, 0.632316, 0.632464, 0.632613, 0.632761, 0.632910, 0.633058, + 0.633207, 0.633355, 0.633504, 0.633652, 0.633800, 0.633949, 0.634097, 0.634245, + 0.634393, 0.634542, 0.634690, 0.634838, 0.634986, 0.635134, 0.635282, 0.635430, + 0.635578, 0.635726, 0.635874, 0.636022, 0.636170, 0.636318, 0.636466, 0.636614, + 0.636762, 0.636910, 0.637057, 0.637205, 0.637353, 0.637501, 0.637649, 0.637796, + 0.637944, 0.638092, 0.638239, 0.638387, 0.638534, 0.638682, 0.638829, 0.638977, + 0.639124, 0.639272, 0.639419, 0.639567, 0.639714, 0.639862, 0.640009, 0.640156, + 0.640303, 0.640451, 0.640598, 0.640745, 0.640892, 0.641040, 0.641187, 0.641334, + 0.641481, 0.641628, 0.641775, 0.641922, 0.642069, 0.642216, 0.642363, 0.642510, + 0.642657, 0.642804, 0.642951, 0.643098, 0.643245, 0.643391, 0.643538, 0.643685, + 0.643832, 0.643978, 0.644125, 0.644272, 0.644418, 0.644565, 0.644711, 0.644858, + 0.645005, 0.645151, 0.645298, 0.645444, 0.645590, 0.645737, 0.645883, 0.646030, + 0.646176, 0.646322, 0.646469, 0.646615, 0.646761, 0.646907, 0.647054, 0.647200, + 0.647346, 0.647492, 0.647638, 0.647784, 0.647930, 0.648076, 0.648222, 0.648368, + 0.648514, 0.648660, 0.648806, 0.648952, 0.649098, 0.649244, 0.649390, 0.649536, + 0.649681, 0.649827, 0.649973, 0.650119, 0.650264, 0.650410, 0.650555, 0.650701, + 0.650847, 0.650992, 0.651138, 0.651283, 0.651429, 0.651574, 0.651720, 0.651865, + 0.652011, 0.652156, 0.652301, 0.652447, 0.652592, 0.652737, 0.652882, 0.653028, + 0.653173, 0.653318, 0.653463, 0.653608, 0.653753, 0.653899, 0.654044, 0.654189, + 0.654334, 0.654479, 0.654624, 0.654769, 0.654913, 0.655058, 0.655203, 0.655348, + 0.655493, 0.655638, 0.655782, 0.655927, 0.656072, 0.656217, 0.656361, 0.656506, + 0.656651, 0.656795, 0.656940, 0.657084, 0.657229, 0.657373, 0.657518, 0.657662, + 0.657807, 0.657951, 0.658095, 0.658240, 0.658384, 0.658529, 0.658673, 0.658817, + 0.658961, 0.659105, 0.659250, 0.659394, 0.659538, 0.659682, 0.659826, 0.659970, + 0.660114, 0.660258, 0.660402, 0.660546, 0.660690, 0.660834, 0.660978, 0.661122, + 0.661266, 0.661410, 0.661553, 0.661697, 0.661841, 0.661985, 0.662128, 0.662272, + 0.662416, 0.662559, 0.662703, 0.662847, 0.662990, 0.663134, 0.663277, 0.663421, + 0.663564, 0.663708, 0.663851, 0.663994, 0.664138, 0.664281, 0.664424, 0.664568, + 0.664711, 0.664854, 0.664997, 0.665141, 0.665284, 0.665427, 0.665570, 0.665713, + 0.665856, 0.665999, 0.666142, 0.666285, 0.666428, 0.666571, 0.666714, 0.666857, + 0.667000, 0.667143, 0.667286, 0.667428, 0.667571, 0.667714, 0.667857, 0.667999, + 0.668142, 0.668285, 0.668427, 0.668570, 0.668712, 0.668855, 0.668998, 0.669140, + 0.669283, 0.669425, 0.669567, 0.669710, 0.669852, 0.669995, 0.670137, 0.670279, + 0.670422, 0.670564, 0.670706, 0.670848, 0.670990, 0.671133, 0.671275, 0.671417, + 0.671559, 0.671701, 0.671843, 0.671985, 0.672127, 0.672269, 0.672411, 0.672553, + 0.672695, 0.672837, 0.672978, 0.673120, 0.673262, 0.673404, 0.673546, 0.673687, + 0.673829, 0.673971, 0.674112, 0.674254, 0.674396, 0.674537, 0.674679, 0.674820, + 0.674962, 0.675103, 0.675245, 0.675386, 0.675527, 0.675669, 0.675810, 0.675951, + 0.676093, 0.676234, 0.676375, 0.676516, 0.676658, 0.676799, 0.676940, 0.677081, + 0.677222, 0.677363, 0.677504, 0.677645, 0.677786, 0.677927, 0.678068, 0.678209, + 0.678350, 0.678491, 0.678632, 0.678773, 0.678913, 0.679054, 0.679195, 0.679336, + 0.679476, 0.679617, 0.679758, 0.679898, 0.680039, 0.680179, 0.680320, 0.680461, + 0.680601, 0.680741, 0.680882, 0.681022, 0.681163, 0.681303, 0.681443, 0.681584, + 0.681724, 0.681864, 0.682005, 0.682145, 0.682285, 0.682425, 0.682565, 0.682705, + 0.682846, 0.682986, 0.683126, 0.683266, 0.683406, 0.683546, 0.683686, 0.683825, + 0.683965, 0.684105, 0.684245, 0.684385, 0.684525, 0.684664, 0.684804, 0.684944, + 0.685084, 0.685223, 0.685363, 0.685503, 0.685642, 0.685782, 0.685921, 0.686061, + 0.686200, 0.686340, 0.686479, 0.686619, 0.686758, 0.686897, 0.687037, 0.687176, + 0.687315, 0.687455, 0.687594, 0.687733, 0.687872, 0.688011, 0.688151, 0.688290, + 0.688429, 0.688568, 0.688707, 0.688846, 0.688985, 0.689124, 0.689263, 0.689402, + 0.689541, 0.689679, 0.689818, 0.689957, 0.690096, 0.690235, 0.690373, 0.690512, + 0.690651, 0.690789, 0.690928, 0.691067, 0.691205, 0.691344, 0.691482, 0.691621, + 0.691759, 0.691898, 0.692036, 0.692175, 0.692313, 0.692451, 0.692590, 0.692728, + 0.692866, 0.693004, 0.693143, 0.693281, 0.693419, 0.693557, 0.693695, 0.693833, + 0.693971, 0.694109, 0.694248, 0.694386, 0.694524, 0.694661, 0.694799, 0.694937, + 0.695075, 0.695213, 0.695351, 0.695489, 0.695626, 0.695764, 0.695902, 0.696039, + 0.696177, 0.696315, 0.696452, 0.696590, 0.696728, 0.696865, 0.697003, 0.697140, + 0.697277, 0.697415, 0.697552, 0.697690, 0.697827, 0.697964, 0.698102, 0.698239, + 0.698376, 0.698513, 0.698651, 0.698788, 0.698925, 0.699062, 0.699199, 0.699336, + 0.699473, 0.699610, 0.699747, 0.699884, 0.700021, 0.700158, 0.700295, 0.700432, + 0.700569, 0.700706, 0.700842, 0.700979, 0.701116, 0.701253, 0.701389, 0.701526, + 0.701663, 0.701799, 0.701936, 0.702072, 0.702209, 0.702345, 0.702482, 0.702618, + 0.702755, 0.702891, 0.703028, 0.703164, 0.703300, 0.703436, 0.703573, 0.703709, + 0.703845, 0.703981, 0.704118, 0.704254, 0.704390, 0.704526, 0.704662, 0.704798, + 0.704934, 0.705070, 0.705206, 0.705342, 0.705478, 0.705614, 0.705750, 0.705885, + 0.706021, 0.706157, 0.706293, 0.706429, 0.706564, 0.706700, 0.706836, 0.706971, + 0.707107, 0.707242, 0.707378, 0.707513, 0.707649, 0.707784, 0.707920, 0.708055, + 0.708191, 0.708326, 0.708461, 0.708597, 0.708732, 0.708867, 0.709002, 0.709138, + 0.709273, 0.709408, 0.709543, 0.709678, 0.709813, 0.709948, 0.710083, 0.710218, + 0.710353, 0.710488, 0.710623, 0.710758, 0.710893, 0.711028, 0.711163, 0.711297, + 0.711432, 0.711567, 0.711702, 0.711836, 0.711971, 0.712106, 0.712240, 0.712375, + 0.712509, 0.712644, 0.712778, 0.712913, 0.713047, 0.713182, 0.713316, 0.713451, + 0.713585, 0.713719, 0.713853, 0.713988, 0.714122, 0.714256, 0.714390, 0.714525, + 0.714659, 0.714793, 0.714927, 0.715061, 0.715195, 0.715329, 0.715463, 0.715597, + 0.715731, 0.715865, 0.715999, 0.716132, 0.716266, 0.716400, 0.716534, 0.716668, + 0.716801, 0.716935, 0.717069, 0.717202, 0.717336, 0.717469, 0.717603, 0.717737, + 0.717870, 0.718004, 0.718137, 0.718270, 0.718404, 0.718537, 0.718670, 0.718804, + 0.718937, 0.719070, 0.719204, 0.719337, 0.719470, 0.719603, 0.719736, 0.719869, + 0.720003, 0.720136, 0.720269, 0.720402, 0.720535, 0.720668, 0.720800, 0.720933, + 0.721066, 0.721199, 0.721332, 0.721465, 0.721597, 0.721730, 0.721863, 0.721996, + 0.722128, 0.722261, 0.722393, 0.722526, 0.722659, 0.722791, 0.722924, 0.723056, + 0.723188, 0.723321, 0.723453, 0.723586, 0.723718, 0.723850, 0.723983, 0.724115, + 0.724247, 0.724379, 0.724511, 0.724644, 0.724776, 0.724908, 0.725040, 0.725172, + 0.725304, 0.725436, 0.725568, 0.725700, 0.725832, 0.725964, 0.726095, 0.726227, + 0.726359, 0.726491, 0.726623, 0.726754, 0.726886, 0.727018, 0.727149, 0.727281, + 0.727413, 0.727544, 0.727676, 0.727807, 0.727939, 0.728070, 0.728202, 0.728333, + 0.728464, 0.728596, 0.728727, 0.728858, 0.728990, 0.729121, 0.729252, 0.729383, + 0.729514, 0.729646, 0.729777, 0.729908, 0.730039, 0.730170, 0.730301, 0.730432, + 0.730563, 0.730694, 0.730825, 0.730955, 0.731086, 0.731217, 0.731348, 0.731479, + 0.731609, 0.731740, 0.731871, 0.732001, 0.732132, 0.732263, 0.732393, 0.732524, + 0.732654, 0.732785, 0.732915, 0.733046, 0.733176, 0.733306, 0.733437, 0.733567, + 0.733697, 0.733828, 0.733958, 0.734088, 0.734218, 0.734349, 0.734479, 0.734609, + 0.734739, 0.734869, 0.734999, 0.735129, 0.735259, 0.735389, 0.735519, 0.735649, + 0.735779, 0.735908, 0.736038, 0.736168, 0.736298, 0.736428, 0.736557, 0.736687, + 0.736817, 0.736946, 0.737076, 0.737205, 0.737335, 0.737464, 0.737594, 0.737723, + 0.737853, 0.737982, 0.738112, 0.738241, 0.738370, 0.738500, 0.738629, 0.738758, + 0.738887, 0.739017, 0.739146, 0.739275, 0.739404, 0.739533, 0.739662, 0.739791, + 0.739920, 0.740049, 0.740178, 0.740307, 0.740436, 0.740565, 0.740694, 0.740822, + 0.740951, 0.741080, 0.741209, 0.741337, 0.741466, 0.741595, 0.741723, 0.741852, + 0.741980, 0.742109, 0.742237, 0.742366, 0.742494, 0.742623, 0.742751, 0.742880, + 0.743008, 0.743136, 0.743265, 0.743393, 0.743521, 0.743649, 0.743777, 0.743906, + 0.744034, 0.744162, 0.744290, 0.744418, 0.744546, 0.744674, 0.744802, 0.744930, + 0.745058, 0.745186, 0.745314, 0.745441, 0.745569, 0.745697, 0.745825, 0.745952, + 0.746080, 0.746208, 0.746335, 0.746463, 0.746591, 0.746718, 0.746846, 0.746973, + 0.747101, 0.747228, 0.747355, 0.747483, 0.747610, 0.747738, 0.747865, 0.747992, + 0.748119, 0.748247, 0.748374, 0.748501, 0.748628, 0.748755, 0.748882, 0.749009, + 0.749136, 0.749263, 0.749390, 0.749517, 0.749644, 0.749771, 0.749898, 0.750025, + 0.750152, 0.750278, 0.750405, 0.750532, 0.750659, 0.750785, 0.750912, 0.751039, + 0.751165, 0.751292, 0.751418, 0.751545, 0.751671, 0.751798, 0.751924, 0.752050, + 0.752177, 0.752303, 0.752429, 0.752556, 0.752682, 0.752808, 0.752934, 0.753061, + 0.753187, 0.753313, 0.753439, 0.753565, 0.753691, 0.753817, 0.753943, 0.754069, + 0.754195, 0.754321, 0.754447, 0.754573, 0.754698, 0.754824, 0.754950, 0.755076, + 0.755201, 0.755327, 0.755453, 0.755578, 0.755704, 0.755829, 0.755955, 0.756081, + 0.756206, 0.756331, 0.756457, 0.756582, 0.756708, 0.756833, 0.756958, 0.757084, + 0.757209, 0.757334, 0.757459, 0.757584, 0.757710, 0.757835, 0.757960, 0.758085, + 0.758210, 0.758335, 0.758460, 0.758585, 0.758710, 0.758835, 0.758960, 0.759084, + 0.759209, 0.759334, 0.759459, 0.759583, 0.759708, 0.759833, 0.759957, 0.760082, + 0.760207, 0.760331, 0.760456, 0.760580, 0.760705, 0.760829, 0.760954, 0.761078, + 0.761202, 0.761327, 0.761451, 0.761575, 0.761700, 0.761824, 0.761948, 0.762072, + 0.762196, 0.762320, 0.762444, 0.762569, 0.762693, 0.762817, 0.762941, 0.763065, + 0.763188, 0.763312, 0.763436, 0.763560, 0.763684, 0.763808, 0.763931, 0.764055, + 0.764179, 0.764302, 0.764426, 0.764550, 0.764673, 0.764797, 0.764920, 0.765044, + 0.765167, 0.765291, 0.765414, 0.765538, 0.765661, 0.765784, 0.765907, 0.766031, + 0.766154, 0.766277, 0.766400, 0.766524, 0.766647, 0.766770, 0.766893, 0.767016, + 0.767139, 0.767262, 0.767385, 0.767508, 0.767631, 0.767754, 0.767876, 0.767999, + 0.768122, 0.768245, 0.768368, 0.768490, 0.768613, 0.768736, 0.768858, 0.768981, + 0.769103, 0.769226, 0.769348, 0.769471, 0.769593, 0.769716, 0.769838, 0.769961, + 0.770083, 0.770205, 0.770327, 0.770450, 0.770572, 0.770694, 0.770816, 0.770938, + 0.771061, 0.771183, 0.771305, 0.771427, 0.771549, 0.771671, 0.771793, 0.771915, + 0.772036, 0.772158, 0.772280, 0.772402, 0.772524, 0.772645, 0.772767, 0.772889, + 0.773010, 0.773132, 0.773254, 0.773375, 0.773497, 0.773618, 0.773740, 0.773861, + 0.773983, 0.774104, 0.774225, 0.774347, 0.774468, 0.774589, 0.774711, 0.774832, + 0.774953, 0.775074, 0.775195, 0.775317, 0.775438, 0.775559, 0.775680, 0.775801, + 0.775922, 0.776043, 0.776164, 0.776284, 0.776405, 0.776526, 0.776647, 0.776768, + 0.776888, 0.777009, 0.777130, 0.777251, 0.777371, 0.777492, 0.777612, 0.777733, + 0.777853, 0.777974, 0.778094, 0.778215, 0.778335, 0.778456, 0.778576, 0.778696, + 0.778817, 0.778937, 0.779057, 0.779177, 0.779297, 0.779418, 0.779538, 0.779658, + 0.779778, 0.779898, 0.780018, 0.780138, 0.780258, 0.780378, 0.780498, 0.780617, + 0.780737, 0.780857, 0.780977, 0.781097, 0.781216, 0.781336, 0.781456, 0.781575, + 0.781695, 0.781814, 0.781934, 0.782053, 0.782173, 0.782292, 0.782412, 0.782531, + 0.782651, 0.782770, 0.782889, 0.783009, 0.783128, 0.783247, 0.783366, 0.783485, + 0.783605, 0.783724, 0.783843, 0.783962, 0.784081, 0.784200, 0.784319, 0.784438, + 0.784557, 0.784675, 0.784794, 0.784913, 0.785032, 0.785151, 0.785269, 0.785388, + 0.785507, 0.785625, 0.785744, 0.785863, 0.785981, 0.786100, 0.786218, 0.786337, + 0.786455, 0.786574, 0.786692, 0.786810, 0.786929, 0.787047, 0.787165, 0.787284, + 0.787402, 0.787520, 0.787638, 0.787756, 0.787874, 0.787992, 0.788110, 0.788228, + 0.788346, 0.788464, 0.788582, 0.788700, 0.788818, 0.788936, 0.789054, 0.789172, + 0.789289, 0.789407, 0.789525, 0.789642, 0.789760, 0.789878, 0.789995, 0.790113, + 0.790230, 0.790348, 0.790465, 0.790583, 0.790700, 0.790817, 0.790935, 0.791052, + 0.791169, 0.791287, 0.791404, 0.791521, 0.791638, 0.791755, 0.791872, 0.791990, + 0.792107, 0.792224, 0.792341, 0.792458, 0.792575, 0.792691, 0.792808, 0.792925, + 0.793042, 0.793159, 0.793276, 0.793392, 0.793509, 0.793626, 0.793742, 0.793859, + 0.793975, 0.794092, 0.794209, 0.794325, 0.794442, 0.794558, 0.794674, 0.794791, + 0.794907, 0.795023, 0.795140, 0.795256, 0.795372, 0.795488, 0.795605, 0.795721, + 0.795837, 0.795953, 0.796069, 0.796185, 0.796301, 0.796417, 0.796533, 0.796649, + 0.796765, 0.796881, 0.796996, 0.797112, 0.797228, 0.797344, 0.797459, 0.797575, + 0.797691, 0.797806, 0.797922, 0.798038, 0.798153, 0.798269, 0.798384, 0.798500, + 0.798615, 0.798730, 0.798846, 0.798961, 0.799076, 0.799192, 0.799307, 0.799422, + 0.799537, 0.799652, 0.799768, 0.799883, 0.799998, 0.800113, 0.800228, 0.800343, + 0.800458, 0.800573, 0.800687, 0.800802, 0.800917, 0.801032, 0.801147, 0.801261, + 0.801376, 0.801491, 0.801606, 0.801720, 0.801835, 0.801949, 0.802064, 0.802178, + 0.802293, 0.802407, 0.802522, 0.802636, 0.802750, 0.802865, 0.802979, 0.803093, + 0.803208, 0.803322, 0.803436, 0.803550, 0.803664, 0.803778, 0.803892, 0.804006, + 0.804120, 0.804234, 0.804348, 0.804462, 0.804576, 0.804690, 0.804804, 0.804918, + 0.805031, 0.805145, 0.805259, 0.805372, 0.805486, 0.805600, 0.805713, 0.805827, + 0.805940, 0.806054, 0.806167, 0.806281, 0.806394, 0.806508, 0.806621, 0.806734, + 0.806848, 0.806961, 0.807074, 0.807187, 0.807300, 0.807414, 0.807527, 0.807640, + 0.807753, 0.807866, 0.807979, 0.808092, 0.808205, 0.808318, 0.808430, 0.808543, + 0.808656, 0.808769, 0.808882, 0.808994, 0.809107, 0.809220, 0.809332, 0.809445, + 0.809558, 0.809670, 0.809783, 0.809895, 0.810008, 0.810120, 0.810232, 0.810345, + 0.810457, 0.810570, 0.810682, 0.810794, 0.810906, 0.811018, 0.811131, 0.811243, + 0.811355, 0.811467, 0.811579, 0.811691, 0.811803, 0.811915, 0.812027, 0.812139, + 0.812251, 0.812362, 0.812474, 0.812586, 0.812698, 0.812809, 0.812921, 0.813033, + 0.813144, 0.813256, 0.813368, 0.813479, 0.813591, 0.813702, 0.813814, 0.813925, + 0.814036, 0.814148, 0.814259, 0.814370, 0.814482, 0.814593, 0.814704, 0.814815, + 0.814926, 0.815037, 0.815149, 0.815260, 0.815371, 0.815482, 0.815593, 0.815704, + 0.815814, 0.815925, 0.816036, 0.816147, 0.816258, 0.816368, 0.816479, 0.816590, + 0.816701, 0.816811, 0.816922, 0.817032, 0.817143, 0.817253, 0.817364, 0.817474, + 0.817585, 0.817695, 0.817806, 0.817916, 0.818026, 0.818137, 0.818247, 0.818357, + 0.818467, 0.818577, 0.818687, 0.818798, 0.818908, 0.819018, 0.819128, 0.819238, + 0.819348, 0.819457, 0.819567, 0.819677, 0.819787, 0.819897, 0.820007, 0.820116, + 0.820226, 0.820336, 0.820445, 0.820555, 0.820664, 0.820774, 0.820884, 0.820993, + 0.821102, 0.821212, 0.821321, 0.821431, 0.821540, 0.821649, 0.821759, 0.821868, + 0.821977, 0.822086, 0.822195, 0.822305, 0.822414, 0.822523, 0.822632, 0.822741, + 0.822850, 0.822959, 0.823068, 0.823177, 0.823285, 0.823394, 0.823503, 0.823612, + 0.823721, 0.823829, 0.823938, 0.824047, 0.824155, 0.824264, 0.824372, 0.824481, + 0.824589, 0.824698, 0.824806, 0.824915, 0.825023, 0.825131, 0.825240, 0.825348, + 0.825456, 0.825564, 0.825673, 0.825781, 0.825889, 0.825997, 0.826105, 0.826213, + 0.826321, 0.826429, 0.826537, 0.826645, 0.826753, 0.826861, 0.826968, 0.827076, + 0.827184, 0.827292, 0.827399, 0.827507, 0.827615, 0.827722, 0.827830, 0.827938, + 0.828045, 0.828153, 0.828260, 0.828367, 0.828475, 0.828582, 0.828690, 0.828797, + 0.828904, 0.829011, 0.829119, 0.829226, 0.829333, 0.829440, 0.829547, 0.829654, + 0.829761, 0.829868, 0.829975, 0.830082, 0.830189, 0.830296, 0.830403, 0.830510, + 0.830616, 0.830723, 0.830830, 0.830937, 0.831043, 0.831150, 0.831257, 0.831363, + 0.831470, 0.831576, 0.831683, 0.831789, 0.831895, 0.832002, 0.832108, 0.832215, + 0.832321, 0.832427, 0.832533, 0.832640, 0.832746, 0.832852, 0.832958, 0.833064, + 0.833170, 0.833276, 0.833382, 0.833488, 0.833594, 0.833700, 0.833806, 0.833912, + 0.834018, 0.834123, 0.834229, 0.834335, 0.834440, 0.834546, 0.834652, 0.834757, + 0.834863, 0.834968, 0.835074, 0.835179, 0.835285, 0.835390, 0.835496, 0.835601, + 0.835706, 0.835812, 0.835917, 0.836022, 0.836127, 0.836232, 0.836338, 0.836443, + 0.836548, 0.836653, 0.836758, 0.836863, 0.836968, 0.837073, 0.837178, 0.837282, + 0.837387, 0.837492, 0.837597, 0.837701, 0.837806, 0.837911, 0.838015, 0.838120, + 0.838225, 0.838329, 0.838434, 0.838538, 0.838643, 0.838747, 0.838852, 0.838956, + 0.839060, 0.839165, 0.839269, 0.839373, 0.839477, 0.839581, 0.839686, 0.839790, + 0.839894, 0.839998, 0.840102, 0.840206, 0.840310, 0.840414, 0.840518, 0.840622, + 0.840725, 0.840829, 0.840933, 0.841037, 0.841140, 0.841244, 0.841348, 0.841451, + 0.841555, 0.841659, 0.841762, 0.841866, 0.841969, 0.842072, 0.842176, 0.842279, + 0.842383, 0.842486, 0.842589, 0.842692, 0.842796, 0.842899, 0.843002, 0.843105, + 0.843208, 0.843311, 0.843414, 0.843517, 0.843620, 0.843723, 0.843826, 0.843929, + 0.844032, 0.844135, 0.844238, 0.844340, 0.844443, 0.844546, 0.844648, 0.844751, + 0.844854, 0.844956, 0.845059, 0.845161, 0.845264, 0.845366, 0.845469, 0.845571, + 0.845673, 0.845776, 0.845878, 0.845980, 0.846082, 0.846185, 0.846287, 0.846389, + 0.846491, 0.846593, 0.846695, 0.846797, 0.846899, 0.847001, 0.847103, 0.847205, + 0.847307, 0.847408, 0.847510, 0.847612, 0.847714, 0.847815, 0.847917, 0.848019, + 0.848120, 0.848222, 0.848323, 0.848425, 0.848526, 0.848628, 0.848729, 0.848831, + 0.848932, 0.849033, 0.849135, 0.849236, 0.849337, 0.849438, 0.849540, 0.849641, + 0.849742, 0.849843, 0.849944, 0.850045, 0.850146, 0.850247, 0.850348, 0.850449, + 0.850549, 0.850650, 0.850751, 0.850852, 0.850953, 0.851053, 0.851154, 0.851255, + 0.851355, 0.851456, 0.851556, 0.851657, 0.851757, 0.851858, 0.851958, 0.852059, + 0.852159, 0.852259, 0.852360, 0.852460, 0.852560, 0.852660, 0.852760, 0.852861, + 0.852961, 0.853061, 0.853161, 0.853261, 0.853361, 0.853461, 0.853561, 0.853660, + 0.853760, 0.853860, 0.853960, 0.854060, 0.854159, 0.854259, 0.854359, 0.854458, + 0.854558, 0.854658, 0.854757, 0.854857, 0.854956, 0.855056, 0.855155, 0.855254, + 0.855354, 0.855453, 0.855552, 0.855651, 0.855751, 0.855850, 0.855949, 0.856048, + 0.856147, 0.856246, 0.856345, 0.856444, 0.856543, 0.856642, 0.856741, 0.856840, + 0.856939, 0.857038, 0.857137, 0.857235, 0.857334, 0.857433, 0.857531, 0.857630, + 0.857729, 0.857827, 0.857926, 0.858024, 0.858123, 0.858221, 0.858320, 0.858418, + 0.858516, 0.858615, 0.858713, 0.858811, 0.858909, 0.859007, 0.859106, 0.859204, + 0.859302, 0.859400, 0.859498, 0.859596, 0.859694, 0.859792, 0.859890, 0.859988, + 0.860085, 0.860183, 0.860281, 0.860379, 0.860476, 0.860574, 0.860672, 0.860769, + 0.860867, 0.860964, 0.861062, 0.861160, 0.861257, 0.861354, 0.861452, 0.861549, + 0.861646, 0.861744, 0.861841, 0.861938, 0.862035, 0.862133, 0.862230, 0.862327, + 0.862424, 0.862521, 0.862618, 0.862715, 0.862812, 0.862909, 0.863006, 0.863103, + 0.863199, 0.863296, 0.863393, 0.863490, 0.863586, 0.863683, 0.863780, 0.863876, + 0.863973, 0.864069, 0.864166, 0.864262, 0.864359, 0.864455, 0.864552, 0.864648, + 0.864744, 0.864841, 0.864937, 0.865033, 0.865129, 0.865225, 0.865321, 0.865418, + 0.865514, 0.865610, 0.865706, 0.865802, 0.865898, 0.865993, 0.866089, 0.866185, + 0.866281, 0.866377, 0.866472, 0.866568, 0.866664, 0.866759, 0.866855, 0.866951, + 0.867046, 0.867142, 0.867237, 0.867333, 0.867428, 0.867523, 0.867619, 0.867714, + 0.867809, 0.867905, 0.868000, 0.868095, 0.868190, 0.868285, 0.868381, 0.868476, + 0.868571, 0.868666, 0.868761, 0.868856, 0.868951, 0.869045, 0.869140, 0.869235, + 0.869330, 0.869425, 0.869519, 0.869614, 0.869709, 0.869803, 0.869898, 0.869992, + 0.870087, 0.870182, 0.870276, 0.870370, 0.870465, 0.870559, 0.870654, 0.870748, + 0.870842, 0.870936, 0.871031, 0.871125, 0.871219, 0.871313, 0.871407, 0.871501, + 0.871595, 0.871689, 0.871783, 0.871877, 0.871971, 0.872065, 0.872159, 0.872252, + 0.872346, 0.872440, 0.872534, 0.872627, 0.872721, 0.872814, 0.872908, 0.873001, + 0.873095, 0.873188, 0.873282, 0.873375, 0.873469, 0.873562, 0.873655, 0.873749, + 0.873842, 0.873935, 0.874028, 0.874121, 0.874215, 0.874308, 0.874401, 0.874494, + 0.874587, 0.874680, 0.874773, 0.874865, 0.874958, 0.875051, 0.875144, 0.875237, + 0.875329, 0.875422, 0.875515, 0.875607, 0.875700, 0.875793, 0.875885, 0.875978, + 0.876070, 0.876163, 0.876255, 0.876347, 0.876440, 0.876532, 0.876624, 0.876716, + 0.876809, 0.876901, 0.876993, 0.877085, 0.877177, 0.877269, 0.877361, 0.877453, + 0.877545, 0.877637, 0.877729, 0.877821, 0.877913, 0.878005, 0.878096, 0.878188, + 0.878280, 0.878371, 0.878463, 0.878555, 0.878646, 0.878738, 0.878829, 0.878921, + 0.879012, 0.879104, 0.879195, 0.879286, 0.879378, 0.879469, 0.879560, 0.879651, + 0.879743, 0.879834, 0.879925, 0.880016, 0.880107, 0.880198, 0.880289, 0.880380, + 0.880471, 0.880562, 0.880653, 0.880743, 0.880834, 0.880925, 0.881016, 0.881106, + 0.881197, 0.881288, 0.881378, 0.881469, 0.881559, 0.881650, 0.881740, 0.881831, + 0.881921, 0.882012, 0.882102, 0.882192, 0.882283, 0.882373, 0.882463, 0.882553, + 0.882643, 0.882733, 0.882824, 0.882914, 0.883004, 0.883094, 0.883184, 0.883273, + 0.883363, 0.883453, 0.883543, 0.883633, 0.883723, 0.883812, 0.883902, 0.883992, + 0.884081, 0.884171, 0.884260, 0.884350, 0.884439, 0.884529, 0.884618, 0.884708, + 0.884797, 0.884886, 0.884976, 0.885065, 0.885154, 0.885243, 0.885333, 0.885422, + 0.885511, 0.885600, 0.885689, 0.885778, 0.885867, 0.885956, 0.886045, 0.886134, + 0.886223, 0.886311, 0.886400, 0.886489, 0.886578, 0.886666, 0.886755, 0.886844, + 0.886932, 0.887021, 0.887109, 0.887198, 0.887286, 0.887375, 0.887463, 0.887551, + 0.887640, 0.887728, 0.887816, 0.887904, 0.887993, 0.888081, 0.888169, 0.888257, + 0.888345, 0.888433, 0.888521, 0.888609, 0.888697, 0.888785, 0.888873, 0.888961, + 0.889048, 0.889136, 0.889224, 0.889312, 0.889399, 0.889487, 0.889574, 0.889662, + 0.889750, 0.889837, 0.889925, 0.890012, 0.890099, 0.890187, 0.890274, 0.890361, + 0.890449, 0.890536, 0.890623, 0.890710, 0.890797, 0.890885, 0.890972, 0.891059, + 0.891146, 0.891233, 0.891320, 0.891407, 0.891493, 0.891580, 0.891667, 0.891754, + 0.891841, 0.891927, 0.892014, 0.892101, 0.892187, 0.892274, 0.892361, 0.892447, + 0.892534, 0.892620, 0.892706, 0.892793, 0.892879, 0.892965, 0.893052, 0.893138, + 0.893224, 0.893310, 0.893397, 0.893483, 0.893569, 0.893655, 0.893741, 0.893827, + 0.893913, 0.893999, 0.894085, 0.894171, 0.894256, 0.894342, 0.894428, 0.894514, + 0.894599, 0.894685, 0.894771, 0.894856, 0.894942, 0.895028, 0.895113, 0.895198, + 0.895284, 0.895369, 0.895455, 0.895540, 0.895625, 0.895711, 0.895796, 0.895881, + 0.895966, 0.896051, 0.896137, 0.896222, 0.896307, 0.896392, 0.896477, 0.896562, + 0.896646, 0.896731, 0.896816, 0.896901, 0.896986, 0.897071, 0.897155, 0.897240, + 0.897325, 0.897409, 0.897494, 0.897578, 0.897663, 0.897747, 0.897832, 0.897916, + 0.898001, 0.898085, 0.898169, 0.898254, 0.898338, 0.898422, 0.898506, 0.898590, + 0.898674, 0.898759, 0.898843, 0.898927, 0.899011, 0.899095, 0.899179, 0.899262, + 0.899346, 0.899430, 0.899514, 0.899598, 0.899681, 0.899765, 0.899849, 0.899932, + 0.900016, 0.900099, 0.900183, 0.900266, 0.900350, 0.900433, 0.900517, 0.900600, + 0.900683, 0.900767, 0.900850, 0.900933, 0.901016, 0.901100, 0.901183, 0.901266, + 0.901349, 0.901432, 0.901515, 0.901598, 0.901681, 0.901764, 0.901847, 0.901929, + 0.902012, 0.902095, 0.902178, 0.902260, 0.902343, 0.902426, 0.902508, 0.902591, + 0.902673, 0.902756, 0.902838, 0.902921, 0.903003, 0.903085, 0.903168, 0.903250, + 0.903332, 0.903415, 0.903497, 0.903579, 0.903661, 0.903743, 0.903825, 0.903907, + 0.903989, 0.904071, 0.904153, 0.904235, 0.904317, 0.904399, 0.904481, 0.904562, + 0.904644, 0.904726, 0.904807, 0.904889, 0.904971, 0.905052, 0.905134, 0.905215, + 0.905297, 0.905378, 0.905460, 0.905541, 0.905622, 0.905704, 0.905785, 0.905866, + 0.905947, 0.906028, 0.906110, 0.906191, 0.906272, 0.906353, 0.906434, 0.906515, + 0.906596, 0.906677, 0.906757, 0.906838, 0.906919, 0.907000, 0.907081, 0.907161, + 0.907242, 0.907323, 0.907403, 0.907484, 0.907564, 0.907645, 0.907725, 0.907806, + 0.907886, 0.907966, 0.908047, 0.908127, 0.908207, 0.908288, 0.908368, 0.908448, + 0.908528, 0.908608, 0.908688, 0.908768, 0.908848, 0.908928, 0.909008, 0.909088, + 0.909168, 0.909248, 0.909328, 0.909407, 0.909487, 0.909567, 0.909646, 0.909726, + 0.909806, 0.909885, 0.909965, 0.910044, 0.910124, 0.910203, 0.910283, 0.910362, + 0.910441, 0.910521, 0.910600, 0.910679, 0.910758, 0.910837, 0.910917, 0.910996, + 0.911075, 0.911154, 0.911233, 0.911312, 0.911391, 0.911470, 0.911548, 0.911627, + 0.911706, 0.911785, 0.911864, 0.911942, 0.912021, 0.912099, 0.912178, 0.912257, + 0.912335, 0.912414, 0.912492, 0.912571, 0.912649, 0.912727, 0.912806, 0.912884, + 0.912962, 0.913040, 0.913119, 0.913197, 0.913275, 0.913353, 0.913431, 0.913509, + 0.913587, 0.913665, 0.913743, 0.913821, 0.913899, 0.913976, 0.914054, 0.914132, + 0.914210, 0.914287, 0.914365, 0.914443, 0.914520, 0.914598, 0.914675, 0.914753, + 0.914830, 0.914908, 0.914985, 0.915062, 0.915140, 0.915217, 0.915294, 0.915372, + 0.915449, 0.915526, 0.915603, 0.915680, 0.915757, 0.915834, 0.915911, 0.915988, + 0.916065, 0.916142, 0.916219, 0.916296, 0.916372, 0.916449, 0.916526, 0.916602, + 0.916679, 0.916756, 0.916832, 0.916909, 0.916985, 0.917062, 0.917138, 0.917215, + 0.917291, 0.917367, 0.917444, 0.917520, 0.917596, 0.917672, 0.917749, 0.917825, + 0.917901, 0.917977, 0.918053, 0.918129, 0.918205, 0.918281, 0.918357, 0.918433, + 0.918508, 0.918584, 0.918660, 0.918736, 0.918811, 0.918887, 0.918963, 0.919038, + 0.919114, 0.919189, 0.919265, 0.919340, 0.919416, 0.919491, 0.919567, 0.919642, + 0.919717, 0.919792, 0.919868, 0.919943, 0.920018, 0.920093, 0.920168, 0.920243, + 0.920318, 0.920393, 0.920468, 0.920543, 0.920618, 0.920693, 0.920768, 0.920842, + 0.920917, 0.920992, 0.921067, 0.921141, 0.921216, 0.921291, 0.921365, 0.921440, + 0.921514, 0.921588, 0.921663, 0.921737, 0.921812, 0.921886, 0.921960, 0.922034, + 0.922109, 0.922183, 0.922257, 0.922331, 0.922405, 0.922479, 0.922553, 0.922627, + 0.922701, 0.922775, 0.922849, 0.922923, 0.922997, 0.923070, 0.923144, 0.923218, + 0.923291, 0.923365, 0.923439, 0.923512, 0.923586, 0.923659, 0.923733, 0.923806, + 0.923880, 0.923953, 0.924026, 0.924100, 0.924173, 0.924246, 0.924319, 0.924392, + 0.924465, 0.924539, 0.924612, 0.924685, 0.924758, 0.924831, 0.924904, 0.924976, + 0.925049, 0.925122, 0.925195, 0.925268, 0.925340, 0.925413, 0.925486, 0.925558, + 0.925631, 0.925703, 0.925776, 0.925848, 0.925921, 0.925993, 0.926066, 0.926138, + 0.926210, 0.926283, 0.926355, 0.926427, 0.926499, 0.926571, 0.926643, 0.926715, + 0.926787, 0.926859, 0.926931, 0.927003, 0.927075, 0.927147, 0.927219, 0.927291, + 0.927363, 0.927434, 0.927506, 0.927578, 0.927649, 0.927721, 0.927792, 0.927864, + 0.927935, 0.928007, 0.928078, 0.928150, 0.928221, 0.928292, 0.928364, 0.928435, + 0.928506, 0.928577, 0.928648, 0.928720, 0.928791, 0.928862, 0.928933, 0.929004, + 0.929075, 0.929146, 0.929216, 0.929287, 0.929358, 0.929429, 0.929500, 0.929570, + 0.929641, 0.929712, 0.929782, 0.929853, 0.929923, 0.929994, 0.930064, 0.930135, + 0.930205, 0.930275, 0.930346, 0.930416, 0.930486, 0.930556, 0.930627, 0.930697, + 0.930767, 0.930837, 0.930907, 0.930977, 0.931047, 0.931117, 0.931187, 0.931257, + 0.931327, 0.931397, 0.931466, 0.931536, 0.931606, 0.931675, 0.931745, 0.931815, + 0.931884, 0.931954, 0.932023, 0.932093, 0.932162, 0.932232, 0.932301, 0.932370, + 0.932440, 0.932509, 0.932578, 0.932647, 0.932716, 0.932786, 0.932855, 0.932924, + 0.932993, 0.933062, 0.933131, 0.933200, 0.933269, 0.933337, 0.933406, 0.933475, + 0.933544, 0.933612, 0.933681, 0.933750, 0.933818, 0.933887, 0.933956, 0.934024, + 0.934093, 0.934161, 0.934229, 0.934298, 0.934366, 0.934434, 0.934503, 0.934571, + 0.934639, 0.934707, 0.934775, 0.934844, 0.934912, 0.934980, 0.935048, 0.935116, + 0.935184, 0.935251, 0.935319, 0.935387, 0.935455, 0.935523, 0.935590, 0.935658, + 0.935726, 0.935793, 0.935861, 0.935928, 0.935996, 0.936063, 0.936131, 0.936198, + 0.936266, 0.936333, 0.936400, 0.936468, 0.936535, 0.936602, 0.936669, 0.936736, + 0.936803, 0.936871, 0.936938, 0.937005, 0.937072, 0.937138, 0.937205, 0.937272, + 0.937339, 0.937406, 0.937473, 0.937539, 0.937606, 0.937673, 0.937739, 0.937806, + 0.937872, 0.937939, 0.938005, 0.938072, 0.938138, 0.938205, 0.938271, 0.938337, + 0.938404, 0.938470, 0.938536, 0.938602, 0.938668, 0.938734, 0.938800, 0.938866, + 0.938932, 0.938998, 0.939064, 0.939130, 0.939196, 0.939262, 0.939328, 0.939394, + 0.939459, 0.939525, 0.939591, 0.939656, 0.939722, 0.939787, 0.939853, 0.939918, + 0.939984, 0.940049, 0.940115, 0.940180, 0.940245, 0.940310, 0.940376, 0.940441, + 0.940506, 0.940571, 0.940636, 0.940701, 0.940766, 0.940831, 0.940896, 0.940961, + 0.941026, 0.941091, 0.941156, 0.941221, 0.941285, 0.941350, 0.941415, 0.941479, + 0.941544, 0.941609, 0.941673, 0.941738, 0.941802, 0.941867, 0.941931, 0.941995, + 0.942060, 0.942124, 0.942188, 0.942253, 0.942317, 0.942381, 0.942445, 0.942509, + 0.942573, 0.942637, 0.942701, 0.942765, 0.942829, 0.942893, 0.942957, 0.943021, + 0.943084, 0.943148, 0.943212, 0.943276, 0.943339, 0.943403, 0.943466, 0.943530, + 0.943593, 0.943657, 0.943720, 0.943784, 0.943847, 0.943910, 0.943974, 0.944037, + 0.944100, 0.944163, 0.944227, 0.944290, 0.944353, 0.944416, 0.944479, 0.944542, + 0.944605, 0.944668, 0.944731, 0.944793, 0.944856, 0.944919, 0.944982, 0.945045, + 0.945107, 0.945170, 0.945232, 0.945295, 0.945358, 0.945420, 0.945482, 0.945545, + 0.945607, 0.945670, 0.945732, 0.945794, 0.945857, 0.945919, 0.945981, 0.946043, + 0.946105, 0.946167, 0.946229, 0.946291, 0.946353, 0.946415, 0.946477, 0.946539, + 0.946601, 0.946663, 0.946724, 0.946786, 0.946848, 0.946910, 0.946971, 0.947033, + 0.947094, 0.947156, 0.947217, 0.947279, 0.947340, 0.947402, 0.947463, 0.947524, + 0.947586, 0.947647, 0.947708, 0.947769, 0.947830, 0.947891, 0.947953, 0.948014, + 0.948075, 0.948136, 0.948196, 0.948257, 0.948318, 0.948379, 0.948440, 0.948501, + 0.948561, 0.948622, 0.948683, 0.948743, 0.948804, 0.948864, 0.948925, 0.948985, + 0.949046, 0.949106, 0.949167, 0.949227, 0.949287, 0.949348, 0.949408, 0.949468, + 0.949528, 0.949588, 0.949648, 0.949708, 0.949768, 0.949829, 0.949888, 0.949948, + 0.950008, 0.950068, 0.950128, 0.950188, 0.950247, 0.950307, 0.950367, 0.950426, + 0.950486, 0.950546, 0.950605, 0.950665, 0.950724, 0.950784, 0.950843, 0.950902, + 0.950962, 0.951021, 0.951080, 0.951139, 0.951199, 0.951258, 0.951317, 0.951376, + 0.951435, 0.951494, 0.951553, 0.951612, 0.951671, 0.951730, 0.951789, 0.951847, + 0.951906, 0.951965, 0.952024, 0.952082, 0.952141, 0.952199, 0.952258, 0.952317, + 0.952375, 0.952433, 0.952492, 0.952550, 0.952609, 0.952667, 0.952725, 0.952783, + 0.952842, 0.952900, 0.952958, 0.953016, 0.953074, 0.953132, 0.953190, 0.953248, + 0.953306, 0.953364, 0.953422, 0.953480, 0.953537, 0.953595, 0.953653, 0.953711, + 0.953768, 0.953826, 0.953883, 0.953941, 0.953998, 0.954056, 0.954113, 0.954171, + 0.954228, 0.954285, 0.954343, 0.954400, 0.954457, 0.954514, 0.954572, 0.954629, + 0.954686, 0.954743, 0.954800, 0.954857, 0.954914, 0.954971, 0.955028, 0.955084, + 0.955141, 0.955198, 0.955255, 0.955311, 0.955368, 0.955425, 0.955481, 0.955538, + 0.955594, 0.955651, 0.955707, 0.955764, 0.955820, 0.955876, 0.955933, 0.955989, + 0.956045, 0.956101, 0.956158, 0.956214, 0.956270, 0.956326, 0.956382, 0.956438, + 0.956494, 0.956550, 0.956606, 0.956662, 0.956717, 0.956773, 0.956829, 0.956885, + 0.956940, 0.956996, 0.957052, 0.957107, 0.957163, 0.957218, 0.957274, 0.957329, + 0.957385, 0.957440, 0.957495, 0.957550, 0.957606, 0.957661, 0.957716, 0.957771, + 0.957826, 0.957882, 0.957937, 0.957992, 0.958046, 0.958101, 0.958156, 0.958211, + 0.958266, 0.958321, 0.958376, 0.958430, 0.958485, 0.958540, 0.958594, 0.958649, + 0.958703, 0.958758, 0.958812, 0.958867, 0.958921, 0.958976, 0.959030, 0.959084, + 0.959139, 0.959193, 0.959247, 0.959301, 0.959355, 0.959409, 0.959463, 0.959518, + 0.959572, 0.959625, 0.959679, 0.959733, 0.959787, 0.959841, 0.959895, 0.959948, + 0.960002, 0.960056, 0.960109, 0.960163, 0.960217, 0.960270, 0.960324, 0.960377, + 0.960431, 0.960484, 0.960537, 0.960591, 0.960644, 0.960697, 0.960750, 0.960804, + 0.960857, 0.960910, 0.960963, 0.961016, 0.961069, 0.961122, 0.961175, 0.961228, + 0.961280, 0.961333, 0.961386, 0.961439, 0.961492, 0.961544, 0.961597, 0.961649, + 0.961702, 0.961755, 0.961807, 0.961860, 0.961912, 0.961964, 0.962017, 0.962069, + 0.962121, 0.962174, 0.962226, 0.962278, 0.962330, 0.962382, 0.962434, 0.962486, + 0.962538, 0.962590, 0.962642, 0.962694, 0.962746, 0.962798, 0.962850, 0.962902, + 0.962953, 0.963005, 0.963057, 0.963108, 0.963160, 0.963211, 0.963263, 0.963314, + 0.963366, 0.963417, 0.963469, 0.963520, 0.963571, 0.963623, 0.963674, 0.963725, + 0.963776, 0.963827, 0.963878, 0.963929, 0.963980, 0.964031, 0.964082, 0.964133, + 0.964184, 0.964235, 0.964286, 0.964336, 0.964387, 0.964438, 0.964489, 0.964539, + 0.964590, 0.964640, 0.964691, 0.964741, 0.964792, 0.964842, 0.964893, 0.964943, + 0.964993, 0.965044, 0.965094, 0.965144, 0.965194, 0.965244, 0.965294, 0.965344, + 0.965394, 0.965444, 0.965494, 0.965544, 0.965594, 0.965644, 0.965694, 0.965744, + 0.965793, 0.965843, 0.965893, 0.965942, 0.965992, 0.966042, 0.966091, 0.966141, + 0.966190, 0.966239, 0.966289, 0.966338, 0.966387, 0.966437, 0.966486, 0.966535, + 0.966584, 0.966633, 0.966683, 0.966732, 0.966781, 0.966830, 0.966879, 0.966928, + 0.966976, 0.967025, 0.967074, 0.967123, 0.967172, 0.967220, 0.967269, 0.967318, + 0.967366, 0.967415, 0.967463, 0.967512, 0.967560, 0.967609, 0.967657, 0.967706, + 0.967754, 0.967802, 0.967850, 0.967899, 0.967947, 0.967995, 0.968043, 0.968091, + 0.968139, 0.968187, 0.968235, 0.968283, 0.968331, 0.968379, 0.968427, 0.968474, + 0.968522, 0.968570, 0.968617, 0.968665, 0.968713, 0.968760, 0.968808, 0.968855, + 0.968903, 0.968950, 0.968998, 0.969045, 0.969092, 0.969140, 0.969187, 0.969234, + 0.969281, 0.969328, 0.969375, 0.969423, 0.969470, 0.969517, 0.969564, 0.969611, + 0.969657, 0.969704, 0.969751, 0.969798, 0.969845, 0.969891, 0.969938, 0.969985, + 0.970031, 0.970078, 0.970124, 0.970171, 0.970217, 0.970264, 0.970310, 0.970357, + 0.970403, 0.970449, 0.970495, 0.970542, 0.970588, 0.970634, 0.970680, 0.970726, + 0.970772, 0.970818, 0.970864, 0.970910, 0.970956, 0.971002, 0.971048, 0.971093, + 0.971139, 0.971185, 0.971231, 0.971276, 0.971322, 0.971367, 0.971413, 0.971458, + 0.971504, 0.971549, 0.971595, 0.971640, 0.971685, 0.971731, 0.971776, 0.971821, + 0.971866, 0.971911, 0.971957, 0.972002, 0.972047, 0.972092, 0.972137, 0.972182, + 0.972227, 0.972271, 0.972316, 0.972361, 0.972406, 0.972450, 0.972495, 0.972540, + 0.972584, 0.972629, 0.972673, 0.972718, 0.972762, 0.972807, 0.972851, 0.972896, + 0.972940, 0.972984, 0.973028, 0.973073, 0.973117, 0.973161, 0.973205, 0.973249, + 0.973293, 0.973337, 0.973381, 0.973425, 0.973469, 0.973513, 0.973557, 0.973601, + 0.973644, 0.973688, 0.973732, 0.973775, 0.973819, 0.973862, 0.973906, 0.973949, + 0.973993, 0.974036, 0.974080, 0.974123, 0.974166, 0.974210, 0.974253, 0.974296, + 0.974339, 0.974383, 0.974426, 0.974469, 0.974512, 0.974555, 0.974598, 0.974641, + 0.974684, 0.974726, 0.974769, 0.974812, 0.974855, 0.974897, 0.974940, 0.974983, + 0.975025, 0.975068, 0.975110, 0.975153, 0.975195, 0.975238, 0.975280, 0.975323, + 0.975365, 0.975407, 0.975449, 0.975492, 0.975534, 0.975576, 0.975618, 0.975660, + 0.975702, 0.975744, 0.975786, 0.975828, 0.975870, 0.975912, 0.975954, 0.975995, + 0.976037, 0.976079, 0.976120, 0.976162, 0.976204, 0.976245, 0.976287, 0.976328, + 0.976370, 0.976411, 0.976453, 0.976494, 0.976535, 0.976576, 0.976618, 0.976659, + 0.976700, 0.976741, 0.976782, 0.976823, 0.976864, 0.976905, 0.976946, 0.976987, + 0.977028, 0.977069, 0.977110, 0.977151, 0.977191, 0.977232, 0.977273, 0.977313, + 0.977354, 0.977394, 0.977435, 0.977475, 0.977516, 0.977556, 0.977597, 0.977637, + 0.977677, 0.977718, 0.977758, 0.977798, 0.977838, 0.977878, 0.977918, 0.977959, + 0.977998, 0.978038, 0.978078, 0.978118, 0.978158, 0.978198, 0.978238, 0.978278, + 0.978317, 0.978357, 0.978397, 0.978436, 0.978476, 0.978516, 0.978555, 0.978594, + 0.978634, 0.978673, 0.978713, 0.978752, 0.978791, 0.978831, 0.978870, 0.978909, + 0.978948, 0.978987, 0.979026, 0.979065, 0.979104, 0.979143, 0.979182, 0.979221, + 0.979260, 0.979299, 0.979338, 0.979376, 0.979415, 0.979454, 0.979493, 0.979531, + 0.979570, 0.979608, 0.979647, 0.979685, 0.979724, 0.979762, 0.979800, 0.979839, + 0.979877, 0.979915, 0.979954, 0.979992, 0.980030, 0.980068, 0.980106, 0.980144, + 0.980182, 0.980220, 0.980258, 0.980296, 0.980334, 0.980372, 0.980409, 0.980447, + 0.980485, 0.980523, 0.980560, 0.980598, 0.980635, 0.980673, 0.980710, 0.980748, + 0.980785, 0.980823, 0.980860, 0.980897, 0.980935, 0.980972, 0.981009, 0.981046, + 0.981083, 0.981120, 0.981158, 0.981195, 0.981232, 0.981269, 0.981305, 0.981342, + 0.981379, 0.981416, 0.981453, 0.981490, 0.981526, 0.981563, 0.981600, 0.981636, + 0.981673, 0.981709, 0.981746, 0.981782, 0.981819, 0.981855, 0.981891, 0.981928, + 0.981964, 0.982000, 0.982036, 0.982072, 0.982109, 0.982145, 0.982181, 0.982217, + 0.982253, 0.982289, 0.982325, 0.982360, 0.982396, 0.982432, 0.982468, 0.982504, + 0.982539, 0.982575, 0.982611, 0.982646, 0.982682, 0.982717, 0.982753, 0.982788, + 0.982824, 0.982859, 0.982894, 0.982930, 0.982965, 0.983000, 0.983035, 0.983070, + 0.983105, 0.983141, 0.983176, 0.983211, 0.983246, 0.983281, 0.983315, 0.983350, + 0.983385, 0.983420, 0.983455, 0.983489, 0.983524, 0.983559, 0.983593, 0.983628, + 0.983662, 0.983697, 0.983731, 0.983766, 0.983800, 0.983835, 0.983869, 0.983903, + 0.983937, 0.983972, 0.984006, 0.984040, 0.984074, 0.984108, 0.984142, 0.984176, + 0.984210, 0.984244, 0.984278, 0.984312, 0.984346, 0.984379, 0.984413, 0.984447, + 0.984480, 0.984514, 0.984548, 0.984581, 0.984615, 0.984648, 0.984682, 0.984715, + 0.984748, 0.984782, 0.984815, 0.984848, 0.984882, 0.984915, 0.984948, 0.984981, + 0.985014, 0.985047, 0.985080, 0.985113, 0.985146, 0.985179, 0.985212, 0.985245, + 0.985278, 0.985310, 0.985343, 0.985376, 0.985408, 0.985441, 0.985474, 0.985506, + 0.985539, 0.985571, 0.985604, 0.985636, 0.985668, 0.985701, 0.985733, 0.985765, + 0.985798, 0.985830, 0.985862, 0.985894, 0.985926, 0.985958, 0.985990, 0.986022, + 0.986054, 0.986086, 0.986118, 0.986150, 0.986181, 0.986213, 0.986245, 0.986276, + 0.986308, 0.986340, 0.986371, 0.986403, 0.986434, 0.986466, 0.986497, 0.986529, + 0.986560, 0.986591, 0.986623, 0.986654, 0.986685, 0.986716, 0.986747, 0.986778, + 0.986809, 0.986840, 0.986871, 0.986902, 0.986933, 0.986964, 0.986995, 0.987026, + 0.987057, 0.987087, 0.987118, 0.987149, 0.987179, 0.987210, 0.987240, 0.987271, + 0.987301, 0.987332, 0.987362, 0.987393, 0.987423, 0.987453, 0.987484, 0.987514, + 0.987544, 0.987574, 0.987604, 0.987634, 0.987664, 0.987694, 0.987724, 0.987754, + 0.987784, 0.987814, 0.987844, 0.987874, 0.987903, 0.987933, 0.987963, 0.987992, + 0.988022, 0.988052, 0.988081, 0.988111, 0.988140, 0.988169, 0.988199, 0.988228, + 0.988258, 0.988287, 0.988316, 0.988345, 0.988374, 0.988404, 0.988433, 0.988462, + 0.988491, 0.988520, 0.988549, 0.988578, 0.988607, 0.988635, 0.988664, 0.988693, + 0.988722, 0.988750, 0.988779, 0.988808, 0.988836, 0.988865, 0.988893, 0.988922, + 0.988950, 0.988979, 0.989007, 0.989035, 0.989064, 0.989092, 0.989120, 0.989148, + 0.989177, 0.989205, 0.989233, 0.989261, 0.989289, 0.989317, 0.989345, 0.989373, + 0.989400, 0.989428, 0.989456, 0.989484, 0.989511, 0.989539, 0.989567, 0.989594, + 0.989622, 0.989650, 0.989677, 0.989704, 0.989732, 0.989759, 0.989787, 0.989814, + 0.989841, 0.989869, 0.989896, 0.989923, 0.989950, 0.989977, 0.990004, 0.990031, + 0.990058, 0.990085, 0.990112, 0.990139, 0.990166, 0.990193, 0.990219, 0.990246, + 0.990273, 0.990299, 0.990326, 0.990353, 0.990379, 0.990406, 0.990432, 0.990459, + 0.990485, 0.990511, 0.990538, 0.990564, 0.990590, 0.990617, 0.990643, 0.990669, + 0.990695, 0.990721, 0.990747, 0.990773, 0.990799, 0.990825, 0.990851, 0.990877, + 0.990903, 0.990928, 0.990954, 0.990980, 0.991006, 0.991031, 0.991057, 0.991082, + 0.991108, 0.991133, 0.991159, 0.991184, 0.991210, 0.991235, 0.991260, 0.991286, + 0.991311, 0.991336, 0.991361, 0.991386, 0.991411, 0.991437, 0.991462, 0.991487, + 0.991511, 0.991536, 0.991561, 0.991586, 0.991611, 0.991636, 0.991660, 0.991685, + 0.991710, 0.991734, 0.991759, 0.991783, 0.991808, 0.991832, 0.991857, 0.991881, + 0.991906, 0.991930, 0.991954, 0.991979, 0.992003, 0.992027, 0.992051, 0.992075, + 0.992099, 0.992123, 0.992147, 0.992171, 0.992195, 0.992219, 0.992243, 0.992267, + 0.992291, 0.992314, 0.992338, 0.992362, 0.992385, 0.992409, 0.992433, 0.992456, + 0.992480, 0.992503, 0.992526, 0.992550, 0.992573, 0.992596, 0.992620, 0.992643, + 0.992666, 0.992689, 0.992712, 0.992736, 0.992759, 0.992782, 0.992805, 0.992828, + 0.992850, 0.992873, 0.992896, 0.992919, 0.992942, 0.992964, 0.992987, 0.993010, + 0.993032, 0.993055, 0.993077, 0.993100, 0.993122, 0.993145, 0.993167, 0.993190, + 0.993212, 0.993234, 0.993257, 0.993279, 0.993301, 0.993323, 0.993345, 0.993367, + 0.993389, 0.993411, 0.993433, 0.993455, 0.993477, 0.993499, 0.993521, 0.993542, + 0.993564, 0.993586, 0.993608, 0.993629, 0.993651, 0.993672, 0.993694, 0.993715, + 0.993737, 0.993758, 0.993779, 0.993801, 0.993822, 0.993843, 0.993865, 0.993886, + 0.993907, 0.993928, 0.993949, 0.993970, 0.993991, 0.994012, 0.994033, 0.994054, + 0.994075, 0.994096, 0.994116, 0.994137, 0.994158, 0.994179, 0.994199, 0.994220, + 0.994240, 0.994261, 0.994281, 0.994302, 0.994322, 0.994343, 0.994363, 0.994383, + 0.994404, 0.994424, 0.994444, 0.994464, 0.994484, 0.994505, 0.994525, 0.994545, + 0.994565, 0.994585, 0.994604, 0.994624, 0.994644, 0.994664, 0.994684, 0.994703, + 0.994723, 0.994743, 0.994762, 0.994782, 0.994802, 0.994821, 0.994841, 0.994860, + 0.994879, 0.994899, 0.994918, 0.994937, 0.994957, 0.994976, 0.994995, 0.995014, + 0.995033, 0.995052, 0.995071, 0.995090, 0.995109, 0.995128, 0.995147, 0.995166, + 0.995185, 0.995203, 0.995222, 0.995241, 0.995260, 0.995278, 0.995297, 0.995315, + 0.995334, 0.995352, 0.995371, 0.995389, 0.995408, 0.995426, 0.995444, 0.995463, + 0.995481, 0.995499, 0.995517, 0.995535, 0.995553, 0.995571, 0.995589, 0.995607, + 0.995625, 0.995643, 0.995661, 0.995679, 0.995697, 0.995714, 0.995732, 0.995750, + 0.995767, 0.995785, 0.995803, 0.995820, 0.995838, 0.995855, 0.995872, 0.995890, + 0.995907, 0.995925, 0.995942, 0.995959, 0.995976, 0.995993, 0.996011, 0.996028, + 0.996045, 0.996062, 0.996079, 0.996096, 0.996113, 0.996129, 0.996146, 0.996163, + 0.996180, 0.996197, 0.996213, 0.996230, 0.996247, 0.996263, 0.996280, 0.996296, + 0.996313, 0.996329, 0.996345, 0.996362, 0.996378, 0.996394, 0.996411, 0.996427, + 0.996443, 0.996459, 0.996475, 0.996491, 0.996507, 0.996523, 0.996539, 0.996555, + 0.996571, 0.996587, 0.996603, 0.996619, 0.996634, 0.996650, 0.996666, 0.996681, + 0.996697, 0.996712, 0.996728, 0.996743, 0.996759, 0.996774, 0.996790, 0.996805, + 0.996820, 0.996836, 0.996851, 0.996866, 0.996881, 0.996896, 0.996911, 0.996926, + 0.996941, 0.996956, 0.996971, 0.996986, 0.997001, 0.997016, 0.997031, 0.997045, + 0.997060, 0.997075, 0.997089, 0.997104, 0.997119, 0.997133, 0.997148, 0.997162, + 0.997176, 0.997191, 0.997205, 0.997219, 0.997234, 0.997248, 0.997262, 0.997276, + 0.997290, 0.997305, 0.997319, 0.997333, 0.997347, 0.997361, 0.997374, 0.997388, + 0.997402, 0.997416, 0.997430, 0.997443, 0.997457, 0.997471, 0.997484, 0.997498, + 0.997511, 0.997525, 0.997538, 0.997552, 0.997565, 0.997579, 0.997592, 0.997605, + 0.997618, 0.997632, 0.997645, 0.997658, 0.997671, 0.997684, 0.997697, 0.997710, + 0.997723, 0.997736, 0.997749, 0.997762, 0.997774, 0.997787, 0.997800, 0.997813, + 0.997825, 0.997838, 0.997851, 0.997863, 0.997876, 0.997888, 0.997901, 0.997913, + 0.997925, 0.997938, 0.997950, 0.997962, 0.997974, 0.997987, 0.997999, 0.998011, + 0.998023, 0.998035, 0.998047, 0.998059, 0.998071, 0.998083, 0.998094, 0.998106, + 0.998118, 0.998130, 0.998142, 0.998153, 0.998165, 0.998176, 0.998188, 0.998200, + 0.998211, 0.998222, 0.998234, 0.998245, 0.998257, 0.998268, 0.998279, 0.998290, + 0.998302, 0.998313, 0.998324, 0.998335, 0.998346, 0.998357, 0.998368, 0.998379, + 0.998390, 0.998401, 0.998411, 0.998422, 0.998433, 0.998444, 0.998454, 0.998465, + 0.998476, 0.998486, 0.998497, 0.998507, 0.998518, 0.998528, 0.998538, 0.998549, + 0.998559, 0.998569, 0.998580, 0.998590, 0.998600, 0.998610, 0.998620, 0.998630, + 0.998640, 0.998650, 0.998660, 0.998670, 0.998680, 0.998690, 0.998700, 0.998709, + 0.998719, 0.998729, 0.998738, 0.998748, 0.998758, 0.998767, 0.998777, 0.998786, + 0.998795, 0.998805, 0.998814, 0.998824, 0.998833, 0.998842, 0.998851, 0.998860, + 0.998870, 0.998879, 0.998888, 0.998897, 0.998906, 0.998915, 0.998924, 0.998932, + 0.998941, 0.998950, 0.998959, 0.998968, 0.998976, 0.998985, 0.998994, 0.999002, + 0.999011, 0.999019, 0.999028, 0.999036, 0.999044, 0.999053, 0.999061, 0.999069, + 0.999078, 0.999086, 0.999094, 0.999102, 0.999110, 0.999118, 0.999126, 0.999134, + 0.999142, 0.999150, 0.999158, 0.999166, 0.999174, 0.999182, 0.999189, 0.999197, + 0.999205, 0.999212, 0.999220, 0.999228, 0.999235, 0.999243, 0.999250, 0.999257, + 0.999265, 0.999272, 0.999279, 0.999287, 0.999294, 0.999301, 0.999308, 0.999315, + 0.999322, 0.999329, 0.999336, 0.999343, 0.999350, 0.999357, 0.999364, 0.999371, + 0.999378, 0.999384, 0.999391, 0.999398, 0.999404, 0.999411, 0.999418, 0.999424, + 0.999431, 0.999437, 0.999443, 0.999450, 0.999456, 0.999462, 0.999469, 0.999475, + 0.999481, 0.999487, 0.999493, 0.999500, 0.999506, 0.999512, 0.999518, 0.999524, + 0.999529, 0.999535, 0.999541, 0.999547, 0.999553, 0.999558, 0.999564, 0.999570, + 0.999575, 0.999581, 0.999586, 0.999592, 0.999597, 0.999603, 0.999608, 0.999614, + 0.999619, 0.999624, 0.999629, 0.999635, 0.999640, 0.999645, 0.999650, 0.999655, + 0.999660, 0.999665, 0.999670, 0.999675, 0.999680, 0.999685, 0.999689, 0.999694, + 0.999699, 0.999704, 0.999708, 0.999713, 0.999717, 0.999722, 0.999726, 0.999731, + 0.999735, 0.999740, 0.999744, 0.999748, 0.999753, 0.999757, 0.999761, 0.999765, + 0.999769, 0.999774, 0.999778, 0.999782, 0.999786, 0.999790, 0.999793, 0.999797, + 0.999801, 0.999805, 0.999809, 0.999812, 0.999816, 0.999820, 0.999823, 0.999827, + 0.999831, 0.999834, 0.999838, 0.999841, 0.999844, 0.999848, 0.999851, 0.999854, + 0.999858, 0.999861, 0.999864, 0.999867, 0.999870, 0.999873, 0.999876, 0.999879, + 0.999882, 0.999885, 0.999888, 0.999891, 0.999894, 0.999897, 0.999899, 0.999902, + 0.999905, 0.999907, 0.999910, 0.999913, 0.999915, 0.999917, 0.999920, 0.999922, + 0.999925, 0.999927, 0.999929, 0.999932, 0.999934, 0.999936, 0.999938, 0.999940, + 0.999942, 0.999944, 0.999946, 0.999948, 0.999950, 0.999952, 0.999954, 0.999956, + 0.999958, 0.999959, 0.999961, 0.999963, 0.999964, 0.999966, 0.999968, 0.999969, + 0.999971, 0.999972, 0.999973, 0.999975, 0.999976, 0.999977, 0.999979, 0.999980, + 0.999981, 0.999982, 0.999983, 0.999985, 0.999986, 0.999987, 0.999988, 0.999988, + 0.999989, 0.999990, 0.999991, 0.999992, 0.999993, 0.999993, 0.999994, 0.999995, + 0.999995, 0.999996, 0.999996, 0.999997, 0.999997, 0.999998, 0.999998, 0.999999, + 0.999999, 0.999999, 0.999999, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000 +}; + +static const float cosTable65536[32768] = { + 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, + 1.000000, 1.000000, 1.000000, 0.999999, 0.999999, 0.999999, 0.999999, 0.999999, + 0.999999, 0.999999, 0.999999, 0.999998, 0.999998, 0.999998, 0.999998, 0.999998, + 0.999997, 0.999997, 0.999997, 0.999997, 0.999996, 0.999996, 0.999996, 0.999996, + 0.999995, 0.999995, 0.999995, 0.999994, 0.999994, 0.999994, 0.999993, 0.999993, + 0.999993, 0.999992, 0.999992, 0.999991, 0.999991, 0.999991, 0.999990, 0.999990, + 0.999989, 0.999989, 0.999988, 0.999988, 0.999988, 0.999987, 0.999987, 0.999986, + 0.999986, 0.999985, 0.999985, 0.999984, 0.999983, 0.999983, 0.999982, 0.999982, + 0.999981, 0.999981, 0.999980, 0.999979, 0.999979, 0.999978, 0.999977, 0.999977, + 0.999976, 0.999976, 0.999975, 0.999974, 0.999973, 0.999973, 0.999972, 0.999971, + 0.999971, 0.999970, 0.999969, 0.999968, 0.999968, 0.999967, 0.999966, 0.999965, + 0.999964, 0.999964, 0.999963, 0.999962, 0.999961, 0.999960, 0.999959, 0.999959, + 0.999958, 0.999957, 0.999956, 0.999955, 0.999954, 0.999953, 0.999952, 0.999951, + 0.999950, 0.999949, 0.999948, 0.999947, 0.999946, 0.999945, 0.999944, 0.999943, + 0.999942, 0.999941, 0.999940, 0.999939, 0.999938, 0.999937, 0.999936, 0.999935, + 0.999934, 0.999933, 0.999932, 0.999930, 0.999929, 0.999928, 0.999927, 0.999926, + 0.999925, 0.999924, 0.999922, 0.999921, 0.999920, 0.999919, 0.999917, 0.999916, + 0.999915, 0.999914, 0.999913, 0.999911, 0.999910, 0.999909, 0.999907, 0.999906, + 0.999905, 0.999903, 0.999902, 0.999901, 0.999899, 0.999898, 0.999897, 0.999895, + 0.999894, 0.999892, 0.999891, 0.999890, 0.999888, 0.999887, 0.999885, 0.999884, + 0.999882, 0.999881, 0.999879, 0.999878, 0.999876, 0.999875, 0.999873, 0.999872, + 0.999870, 0.999869, 0.999867, 0.999866, 0.999864, 0.999862, 0.999861, 0.999859, + 0.999858, 0.999856, 0.999854, 0.999853, 0.999851, 0.999849, 0.999848, 0.999846, + 0.999844, 0.999843, 0.999841, 0.999839, 0.999838, 0.999836, 0.999834, 0.999832, + 0.999831, 0.999829, 0.999827, 0.999825, 0.999823, 0.999822, 0.999820, 0.999818, + 0.999816, 0.999814, 0.999812, 0.999811, 0.999809, 0.999807, 0.999805, 0.999803, + 0.999801, 0.999799, 0.999797, 0.999795, 0.999793, 0.999792, 0.999790, 0.999788, + 0.999786, 0.999784, 0.999782, 0.999780, 0.999778, 0.999776, 0.999774, 0.999771, + 0.999769, 0.999767, 0.999765, 0.999763, 0.999761, 0.999759, 0.999757, 0.999755, + 0.999753, 0.999750, 0.999748, 0.999746, 0.999744, 0.999742, 0.999740, 0.999738, + 0.999735, 0.999733, 0.999731, 0.999729, 0.999726, 0.999724, 0.999722, 0.999720, + 0.999717, 0.999715, 0.999713, 0.999710, 0.999708, 0.999706, 0.999704, 0.999701, + 0.999699, 0.999696, 0.999694, 0.999692, 0.999689, 0.999687, 0.999685, 0.999682, + 0.999680, 0.999677, 0.999675, 0.999672, 0.999670, 0.999667, 0.999665, 0.999663, + 0.999660, 0.999658, 0.999655, 0.999652, 0.999650, 0.999647, 0.999645, 0.999642, + 0.999640, 0.999637, 0.999635, 0.999632, 0.999629, 0.999627, 0.999624, 0.999621, + 0.999619, 0.999616, 0.999614, 0.999611, 0.999608, 0.999605, 0.999603, 0.999600, + 0.999597, 0.999595, 0.999592, 0.999589, 0.999586, 0.999584, 0.999581, 0.999578, + 0.999575, 0.999573, 0.999570, 0.999567, 0.999564, 0.999561, 0.999558, 0.999556, + 0.999553, 0.999550, 0.999547, 0.999544, 0.999541, 0.999538, 0.999535, 0.999532, + 0.999529, 0.999527, 0.999524, 0.999521, 0.999518, 0.999515, 0.999512, 0.999509, + 0.999506, 0.999503, 0.999500, 0.999497, 0.999493, 0.999490, 0.999487, 0.999484, + 0.999481, 0.999478, 0.999475, 0.999472, 0.999469, 0.999466, 0.999462, 0.999459, + 0.999456, 0.999453, 0.999450, 0.999447, 0.999443, 0.999440, 0.999437, 0.999434, + 0.999431, 0.999427, 0.999424, 0.999421, 0.999418, 0.999414, 0.999411, 0.999408, + 0.999404, 0.999401, 0.999398, 0.999394, 0.999391, 0.999388, 0.999384, 0.999381, + 0.999378, 0.999374, 0.999371, 0.999367, 0.999364, 0.999361, 0.999357, 0.999354, + 0.999350, 0.999347, 0.999343, 0.999340, 0.999336, 0.999333, 0.999329, 0.999326, + 0.999322, 0.999319, 0.999315, 0.999312, 0.999308, 0.999305, 0.999301, 0.999297, + 0.999294, 0.999290, 0.999287, 0.999283, 0.999279, 0.999276, 0.999272, 0.999268, + 0.999265, 0.999261, 0.999257, 0.999254, 0.999250, 0.999246, 0.999243, 0.999239, + 0.999235, 0.999231, 0.999228, 0.999224, 0.999220, 0.999216, 0.999212, 0.999209, + 0.999205, 0.999201, 0.999197, 0.999193, 0.999189, 0.999186, 0.999182, 0.999178, + 0.999174, 0.999170, 0.999166, 0.999162, 0.999158, 0.999154, 0.999150, 0.999146, + 0.999142, 0.999138, 0.999134, 0.999130, 0.999126, 0.999122, 0.999118, 0.999114, + 0.999110, 0.999106, 0.999102, 0.999098, 0.999094, 0.999090, 0.999086, 0.999082, + 0.999078, 0.999074, 0.999069, 0.999065, 0.999061, 0.999057, 0.999053, 0.999049, + 0.999044, 0.999040, 0.999036, 0.999032, 0.999028, 0.999023, 0.999019, 0.999015, + 0.999011, 0.999006, 0.999002, 0.998998, 0.998994, 0.998989, 0.998985, 0.998981, + 0.998976, 0.998972, 0.998968, 0.998963, 0.998959, 0.998954, 0.998950, 0.998946, + 0.998941, 0.998937, 0.998932, 0.998928, 0.998924, 0.998919, 0.998915, 0.998910, + 0.998906, 0.998901, 0.998897, 0.998892, 0.998888, 0.998883, 0.998879, 0.998874, + 0.998870, 0.998865, 0.998860, 0.998856, 0.998851, 0.998847, 0.998842, 0.998837, + 0.998833, 0.998828, 0.998824, 0.998819, 0.998814, 0.998810, 0.998805, 0.998800, + 0.998795, 0.998791, 0.998786, 0.998781, 0.998777, 0.998772, 0.998767, 0.998762, + 0.998758, 0.998753, 0.998748, 0.998743, 0.998738, 0.998734, 0.998729, 0.998724, + 0.998719, 0.998714, 0.998709, 0.998704, 0.998700, 0.998695, 0.998690, 0.998685, + 0.998680, 0.998675, 0.998670, 0.998665, 0.998660, 0.998655, 0.998650, 0.998645, + 0.998640, 0.998635, 0.998630, 0.998625, 0.998620, 0.998615, 0.998610, 0.998605, + 0.998600, 0.998595, 0.998590, 0.998585, 0.998580, 0.998574, 0.998569, 0.998564, + 0.998559, 0.998554, 0.998549, 0.998544, 0.998538, 0.998533, 0.998528, 0.998523, + 0.998518, 0.998512, 0.998507, 0.998502, 0.998497, 0.998491, 0.998486, 0.998481, + 0.998476, 0.998470, 0.998465, 0.998460, 0.998454, 0.998449, 0.998444, 0.998438, + 0.998433, 0.998428, 0.998422, 0.998417, 0.998411, 0.998406, 0.998401, 0.998395, + 0.998390, 0.998384, 0.998379, 0.998373, 0.998368, 0.998362, 0.998357, 0.998351, + 0.998346, 0.998340, 0.998335, 0.998329, 0.998324, 0.998318, 0.998313, 0.998307, + 0.998302, 0.998296, 0.998290, 0.998285, 0.998279, 0.998273, 0.998268, 0.998262, + 0.998257, 0.998251, 0.998245, 0.998240, 0.998234, 0.998228, 0.998222, 0.998217, + 0.998211, 0.998205, 0.998200, 0.998194, 0.998188, 0.998182, 0.998176, 0.998171, + 0.998165, 0.998159, 0.998153, 0.998147, 0.998142, 0.998136, 0.998130, 0.998124, + 0.998118, 0.998112, 0.998106, 0.998100, 0.998094, 0.998089, 0.998083, 0.998077, + 0.998071, 0.998065, 0.998059, 0.998053, 0.998047, 0.998041, 0.998035, 0.998029, + 0.998023, 0.998017, 0.998011, 0.998005, 0.997999, 0.997993, 0.997987, 0.997980, + 0.997974, 0.997968, 0.997962, 0.997956, 0.997950, 0.997944, 0.997938, 0.997931, + 0.997925, 0.997919, 0.997913, 0.997907, 0.997901, 0.997894, 0.997888, 0.997882, + 0.997876, 0.997869, 0.997863, 0.997857, 0.997851, 0.997844, 0.997838, 0.997832, + 0.997825, 0.997819, 0.997813, 0.997806, 0.997800, 0.997794, 0.997787, 0.997781, + 0.997774, 0.997768, 0.997762, 0.997755, 0.997749, 0.997742, 0.997736, 0.997730, + 0.997723, 0.997717, 0.997710, 0.997704, 0.997697, 0.997691, 0.997684, 0.997678, + 0.997671, 0.997665, 0.997658, 0.997651, 0.997645, 0.997638, 0.997632, 0.997625, + 0.997618, 0.997612, 0.997605, 0.997599, 0.997592, 0.997585, 0.997579, 0.997572, + 0.997565, 0.997559, 0.997552, 0.997545, 0.997538, 0.997532, 0.997525, 0.997518, + 0.997511, 0.997505, 0.997498, 0.997491, 0.997484, 0.997478, 0.997471, 0.997464, + 0.997457, 0.997450, 0.997443, 0.997437, 0.997430, 0.997423, 0.997416, 0.997409, + 0.997402, 0.997395, 0.997388, 0.997381, 0.997374, 0.997368, 0.997361, 0.997354, + 0.997347, 0.997340, 0.997333, 0.997326, 0.997319, 0.997312, 0.997305, 0.997298, + 0.997290, 0.997283, 0.997276, 0.997269, 0.997262, 0.997255, 0.997248, 0.997241, + 0.997234, 0.997227, 0.997219, 0.997212, 0.997205, 0.997198, 0.997191, 0.997184, + 0.997176, 0.997169, 0.997162, 0.997155, 0.997148, 0.997140, 0.997133, 0.997126, + 0.997119, 0.997111, 0.997104, 0.997097, 0.997089, 0.997082, 0.997075, 0.997067, + 0.997060, 0.997053, 0.997045, 0.997038, 0.997031, 0.997023, 0.997016, 0.997008, + 0.997001, 0.996994, 0.996986, 0.996979, 0.996971, 0.996964, 0.996956, 0.996949, + 0.996941, 0.996934, 0.996926, 0.996919, 0.996911, 0.996904, 0.996896, 0.996889, + 0.996881, 0.996874, 0.996866, 0.996858, 0.996851, 0.996843, 0.996836, 0.996828, + 0.996820, 0.996813, 0.996805, 0.996797, 0.996790, 0.996782, 0.996774, 0.996767, + 0.996759, 0.996751, 0.996743, 0.996736, 0.996728, 0.996720, 0.996712, 0.996705, + 0.996697, 0.996689, 0.996681, 0.996674, 0.996666, 0.996658, 0.996650, 0.996642, + 0.996634, 0.996626, 0.996619, 0.996611, 0.996603, 0.996595, 0.996587, 0.996579, + 0.996571, 0.996563, 0.996555, 0.996547, 0.996539, 0.996531, 0.996523, 0.996515, + 0.996507, 0.996499, 0.996491, 0.996483, 0.996475, 0.996467, 0.996459, 0.996451, + 0.996443, 0.996435, 0.996427, 0.996419, 0.996411, 0.996403, 0.996394, 0.996386, + 0.996378, 0.996370, 0.996362, 0.996354, 0.996345, 0.996337, 0.996329, 0.996321, + 0.996313, 0.996304, 0.996296, 0.996288, 0.996280, 0.996271, 0.996263, 0.996255, + 0.996247, 0.996238, 0.996230, 0.996222, 0.996213, 0.996205, 0.996197, 0.996188, + 0.996180, 0.996171, 0.996163, 0.996155, 0.996146, 0.996138, 0.996129, 0.996121, + 0.996113, 0.996104, 0.996096, 0.996087, 0.996079, 0.996070, 0.996062, 0.996053, + 0.996045, 0.996036, 0.996028, 0.996019, 0.996011, 0.996002, 0.995993, 0.995985, + 0.995976, 0.995968, 0.995959, 0.995950, 0.995942, 0.995933, 0.995925, 0.995916, + 0.995907, 0.995899, 0.995890, 0.995881, 0.995872, 0.995864, 0.995855, 0.995846, + 0.995838, 0.995829, 0.995820, 0.995811, 0.995803, 0.995794, 0.995785, 0.995776, + 0.995767, 0.995759, 0.995750, 0.995741, 0.995732, 0.995723, 0.995714, 0.995705, + 0.995697, 0.995688, 0.995679, 0.995670, 0.995661, 0.995652, 0.995643, 0.995634, + 0.995625, 0.995616, 0.995607, 0.995598, 0.995589, 0.995580, 0.995571, 0.995562, + 0.995553, 0.995544, 0.995535, 0.995526, 0.995517, 0.995508, 0.995499, 0.995490, + 0.995481, 0.995472, 0.995463, 0.995453, 0.995444, 0.995435, 0.995426, 0.995417, + 0.995408, 0.995398, 0.995389, 0.995380, 0.995371, 0.995362, 0.995352, 0.995343, + 0.995334, 0.995325, 0.995315, 0.995306, 0.995297, 0.995288, 0.995278, 0.995269, + 0.995260, 0.995250, 0.995241, 0.995232, 0.995222, 0.995213, 0.995203, 0.995194, + 0.995185, 0.995175, 0.995166, 0.995156, 0.995147, 0.995138, 0.995128, 0.995119, + 0.995109, 0.995100, 0.995090, 0.995081, 0.995071, 0.995062, 0.995052, 0.995043, + 0.995033, 0.995024, 0.995014, 0.995005, 0.994995, 0.994985, 0.994976, 0.994966, + 0.994957, 0.994947, 0.994937, 0.994928, 0.994918, 0.994908, 0.994899, 0.994889, + 0.994879, 0.994870, 0.994860, 0.994850, 0.994841, 0.994831, 0.994821, 0.994811, + 0.994802, 0.994792, 0.994782, 0.994772, 0.994762, 0.994753, 0.994743, 0.994733, + 0.994723, 0.994713, 0.994703, 0.994694, 0.994684, 0.994674, 0.994664, 0.994654, + 0.994644, 0.994634, 0.994624, 0.994614, 0.994604, 0.994594, 0.994585, 0.994575, + 0.994565, 0.994555, 0.994545, 0.994535, 0.994525, 0.994515, 0.994505, 0.994494, + 0.994484, 0.994474, 0.994464, 0.994454, 0.994444, 0.994434, 0.994424, 0.994414, + 0.994404, 0.994394, 0.994383, 0.994373, 0.994363, 0.994353, 0.994343, 0.994333, + 0.994322, 0.994312, 0.994302, 0.994292, 0.994281, 0.994271, 0.994261, 0.994251, + 0.994240, 0.994230, 0.994220, 0.994210, 0.994199, 0.994189, 0.994179, 0.994168, + 0.994158, 0.994148, 0.994137, 0.994127, 0.994116, 0.994106, 0.994096, 0.994085, + 0.994075, 0.994064, 0.994054, 0.994044, 0.994033, 0.994023, 0.994012, 0.994002, + 0.993991, 0.993981, 0.993970, 0.993960, 0.993949, 0.993939, 0.993928, 0.993918, + 0.993907, 0.993896, 0.993886, 0.993875, 0.993865, 0.993854, 0.993843, 0.993833, + 0.993822, 0.993811, 0.993801, 0.993790, 0.993779, 0.993769, 0.993758, 0.993747, + 0.993737, 0.993726, 0.993715, 0.993705, 0.993694, 0.993683, 0.993672, 0.993662, + 0.993651, 0.993640, 0.993629, 0.993618, 0.993608, 0.993597, 0.993586, 0.993575, + 0.993564, 0.993553, 0.993542, 0.993532, 0.993521, 0.993510, 0.993499, 0.993488, + 0.993477, 0.993466, 0.993455, 0.993444, 0.993433, 0.993422, 0.993411, 0.993400, + 0.993389, 0.993378, 0.993367, 0.993356, 0.993345, 0.993334, 0.993323, 0.993312, + 0.993301, 0.993290, 0.993279, 0.993268, 0.993257, 0.993245, 0.993234, 0.993223, + 0.993212, 0.993201, 0.993190, 0.993178, 0.993167, 0.993156, 0.993145, 0.993134, + 0.993122, 0.993111, 0.993100, 0.993089, 0.993077, 0.993066, 0.993055, 0.993044, + 0.993032, 0.993021, 0.993010, 0.992998, 0.992987, 0.992976, 0.992964, 0.992953, + 0.992942, 0.992930, 0.992919, 0.992908, 0.992896, 0.992885, 0.992873, 0.992862, + 0.992850, 0.992839, 0.992828, 0.992816, 0.992805, 0.992793, 0.992782, 0.992770, + 0.992759, 0.992747, 0.992736, 0.992724, 0.992712, 0.992701, 0.992689, 0.992678, + 0.992666, 0.992655, 0.992643, 0.992631, 0.992620, 0.992608, 0.992596, 0.992585, + 0.992573, 0.992561, 0.992550, 0.992538, 0.992526, 0.992515, 0.992503, 0.992491, + 0.992480, 0.992468, 0.992456, 0.992444, 0.992433, 0.992421, 0.992409, 0.992397, + 0.992385, 0.992374, 0.992362, 0.992350, 0.992338, 0.992326, 0.992314, 0.992302, + 0.992291, 0.992279, 0.992267, 0.992255, 0.992243, 0.992231, 0.992219, 0.992207, + 0.992195, 0.992183, 0.992171, 0.992159, 0.992147, 0.992135, 0.992123, 0.992111, + 0.992099, 0.992087, 0.992075, 0.992063, 0.992051, 0.992039, 0.992027, 0.992015, + 0.992003, 0.991991, 0.991979, 0.991966, 0.991954, 0.991942, 0.991930, 0.991918, + 0.991906, 0.991894, 0.991881, 0.991869, 0.991857, 0.991845, 0.991832, 0.991820, + 0.991808, 0.991796, 0.991783, 0.991771, 0.991759, 0.991747, 0.991734, 0.991722, + 0.991710, 0.991697, 0.991685, 0.991673, 0.991660, 0.991648, 0.991636, 0.991623, + 0.991611, 0.991598, 0.991586, 0.991574, 0.991561, 0.991549, 0.991536, 0.991524, + 0.991511, 0.991499, 0.991487, 0.991474, 0.991462, 0.991449, 0.991437, 0.991424, + 0.991411, 0.991399, 0.991386, 0.991374, 0.991361, 0.991349, 0.991336, 0.991323, + 0.991311, 0.991298, 0.991286, 0.991273, 0.991260, 0.991248, 0.991235, 0.991222, + 0.991210, 0.991197, 0.991184, 0.991172, 0.991159, 0.991146, 0.991133, 0.991121, + 0.991108, 0.991095, 0.991082, 0.991070, 0.991057, 0.991044, 0.991031, 0.991018, + 0.991006, 0.990993, 0.990980, 0.990967, 0.990954, 0.990941, 0.990928, 0.990916, + 0.990903, 0.990890, 0.990877, 0.990864, 0.990851, 0.990838, 0.990825, 0.990812, + 0.990799, 0.990786, 0.990773, 0.990760, 0.990747, 0.990734, 0.990721, 0.990708, + 0.990695, 0.990682, 0.990669, 0.990656, 0.990643, 0.990630, 0.990617, 0.990603, + 0.990590, 0.990577, 0.990564, 0.990551, 0.990538, 0.990525, 0.990511, 0.990498, + 0.990485, 0.990472, 0.990459, 0.990445, 0.990432, 0.990419, 0.990406, 0.990393, + 0.990379, 0.990366, 0.990353, 0.990339, 0.990326, 0.990313, 0.990299, 0.990286, + 0.990273, 0.990259, 0.990246, 0.990233, 0.990219, 0.990206, 0.990193, 0.990179, + 0.990166, 0.990152, 0.990139, 0.990126, 0.990112, 0.990099, 0.990085, 0.990072, + 0.990058, 0.990045, 0.990031, 0.990018, 0.990004, 0.989991, 0.989977, 0.989964, + 0.989950, 0.989936, 0.989923, 0.989909, 0.989896, 0.989882, 0.989869, 0.989855, + 0.989841, 0.989828, 0.989814, 0.989800, 0.989787, 0.989773, 0.989759, 0.989746, + 0.989732, 0.989718, 0.989704, 0.989691, 0.989677, 0.989663, 0.989650, 0.989636, + 0.989622, 0.989608, 0.989594, 0.989581, 0.989567, 0.989553, 0.989539, 0.989525, + 0.989511, 0.989498, 0.989484, 0.989470, 0.989456, 0.989442, 0.989428, 0.989414, + 0.989400, 0.989386, 0.989373, 0.989359, 0.989345, 0.989331, 0.989317, 0.989303, + 0.989289, 0.989275, 0.989261, 0.989247, 0.989233, 0.989219, 0.989205, 0.989191, + 0.989177, 0.989162, 0.989148, 0.989134, 0.989120, 0.989106, 0.989092, 0.989078, + 0.989064, 0.989050, 0.989035, 0.989021, 0.989007, 0.988993, 0.988979, 0.988964, + 0.988950, 0.988936, 0.988922, 0.988908, 0.988893, 0.988879, 0.988865, 0.988851, + 0.988836, 0.988822, 0.988808, 0.988793, 0.988779, 0.988765, 0.988750, 0.988736, + 0.988722, 0.988707, 0.988693, 0.988679, 0.988664, 0.988650, 0.988635, 0.988621, + 0.988607, 0.988592, 0.988578, 0.988563, 0.988549, 0.988534, 0.988520, 0.988505, + 0.988491, 0.988476, 0.988462, 0.988447, 0.988433, 0.988418, 0.988404, 0.988389, + 0.988374, 0.988360, 0.988345, 0.988331, 0.988316, 0.988301, 0.988287, 0.988272, + 0.988258, 0.988243, 0.988228, 0.988214, 0.988199, 0.988184, 0.988169, 0.988155, + 0.988140, 0.988125, 0.988111, 0.988096, 0.988081, 0.988066, 0.988052, 0.988037, + 0.988022, 0.988007, 0.987992, 0.987978, 0.987963, 0.987948, 0.987933, 0.987918, + 0.987903, 0.987889, 0.987874, 0.987859, 0.987844, 0.987829, 0.987814, 0.987799, + 0.987784, 0.987769, 0.987754, 0.987739, 0.987724, 0.987709, 0.987694, 0.987679, + 0.987664, 0.987649, 0.987634, 0.987619, 0.987604, 0.987589, 0.987574, 0.987559, + 0.987544, 0.987529, 0.987514, 0.987499, 0.987484, 0.987468, 0.987453, 0.987438, + 0.987423, 0.987408, 0.987393, 0.987377, 0.987362, 0.987347, 0.987332, 0.987317, + 0.987301, 0.987286, 0.987271, 0.987256, 0.987240, 0.987225, 0.987210, 0.987195, + 0.987179, 0.987164, 0.987149, 0.987133, 0.987118, 0.987103, 0.987087, 0.987072, + 0.987057, 0.987041, 0.987026, 0.987010, 0.986995, 0.986980, 0.986964, 0.986949, + 0.986933, 0.986918, 0.986902, 0.986887, 0.986871, 0.986856, 0.986840, 0.986825, + 0.986809, 0.986794, 0.986778, 0.986763, 0.986747, 0.986732, 0.986716, 0.986701, + 0.986685, 0.986669, 0.986654, 0.986638, 0.986623, 0.986607, 0.986591, 0.986576, + 0.986560, 0.986544, 0.986529, 0.986513, 0.986497, 0.986481, 0.986466, 0.986450, + 0.986434, 0.986419, 0.986403, 0.986387, 0.986371, 0.986355, 0.986340, 0.986324, + 0.986308, 0.986292, 0.986276, 0.986261, 0.986245, 0.986229, 0.986213, 0.986197, + 0.986181, 0.986165, 0.986150, 0.986134, 0.986118, 0.986102, 0.986086, 0.986070, + 0.986054, 0.986038, 0.986022, 0.986006, 0.985990, 0.985974, 0.985958, 0.985942, + 0.985926, 0.985910, 0.985894, 0.985878, 0.985862, 0.985846, 0.985830, 0.985814, + 0.985798, 0.985781, 0.985765, 0.985749, 0.985733, 0.985717, 0.985701, 0.985685, + 0.985668, 0.985652, 0.985636, 0.985620, 0.985604, 0.985587, 0.985571, 0.985555, + 0.985539, 0.985523, 0.985506, 0.985490, 0.985474, 0.985457, 0.985441, 0.985425, + 0.985408, 0.985392, 0.985376, 0.985359, 0.985343, 0.985327, 0.985310, 0.985294, + 0.985278, 0.985261, 0.985245, 0.985228, 0.985212, 0.985196, 0.985179, 0.985163, + 0.985146, 0.985130, 0.985113, 0.985097, 0.985080, 0.985064, 0.985047, 0.985031, + 0.985014, 0.984998, 0.984981, 0.984965, 0.984948, 0.984931, 0.984915, 0.984898, + 0.984882, 0.984865, 0.984848, 0.984832, 0.984815, 0.984798, 0.984782, 0.984765, + 0.984748, 0.984732, 0.984715, 0.984698, 0.984682, 0.984665, 0.984648, 0.984632, + 0.984615, 0.984598, 0.984581, 0.984564, 0.984548, 0.984531, 0.984514, 0.984497, + 0.984480, 0.984464, 0.984447, 0.984430, 0.984413, 0.984396, 0.984379, 0.984362, + 0.984346, 0.984329, 0.984312, 0.984295, 0.984278, 0.984261, 0.984244, 0.984227, + 0.984210, 0.984193, 0.984176, 0.984159, 0.984142, 0.984125, 0.984108, 0.984091, + 0.984074, 0.984057, 0.984040, 0.984023, 0.984006, 0.983989, 0.983972, 0.983955, + 0.983937, 0.983920, 0.983903, 0.983886, 0.983869, 0.983852, 0.983835, 0.983817, + 0.983800, 0.983783, 0.983766, 0.983749, 0.983731, 0.983714, 0.983697, 0.983680, + 0.983662, 0.983645, 0.983628, 0.983611, 0.983593, 0.983576, 0.983559, 0.983541, + 0.983524, 0.983507, 0.983489, 0.983472, 0.983455, 0.983437, 0.983420, 0.983402, + 0.983385, 0.983368, 0.983350, 0.983333, 0.983315, 0.983298, 0.983281, 0.983263, + 0.983246, 0.983228, 0.983211, 0.983193, 0.983176, 0.983158, 0.983141, 0.983123, + 0.983105, 0.983088, 0.983070, 0.983053, 0.983035, 0.983018, 0.983000, 0.982982, + 0.982965, 0.982947, 0.982930, 0.982912, 0.982894, 0.982877, 0.982859, 0.982841, + 0.982824, 0.982806, 0.982788, 0.982770, 0.982753, 0.982735, 0.982717, 0.982699, + 0.982682, 0.982664, 0.982646, 0.982628, 0.982611, 0.982593, 0.982575, 0.982557, + 0.982539, 0.982521, 0.982504, 0.982486, 0.982468, 0.982450, 0.982432, 0.982414, + 0.982396, 0.982378, 0.982360, 0.982343, 0.982325, 0.982307, 0.982289, 0.982271, + 0.982253, 0.982235, 0.982217, 0.982199, 0.982181, 0.982163, 0.982145, 0.982127, + 0.982109, 0.982091, 0.982072, 0.982054, 0.982036, 0.982018, 0.982000, 0.981982, + 0.981964, 0.981946, 0.981928, 0.981909, 0.981891, 0.981873, 0.981855, 0.981837, + 0.981819, 0.981800, 0.981782, 0.981764, 0.981746, 0.981727, 0.981709, 0.981691, + 0.981673, 0.981654, 0.981636, 0.981618, 0.981600, 0.981581, 0.981563, 0.981545, + 0.981526, 0.981508, 0.981490, 0.981471, 0.981453, 0.981434, 0.981416, 0.981398, + 0.981379, 0.981361, 0.981342, 0.981324, 0.981305, 0.981287, 0.981269, 0.981250, + 0.981232, 0.981213, 0.981195, 0.981176, 0.981158, 0.981139, 0.981120, 0.981102, + 0.981083, 0.981065, 0.981046, 0.981028, 0.981009, 0.980990, 0.980972, 0.980953, + 0.980935, 0.980916, 0.980897, 0.980879, 0.980860, 0.980841, 0.980823, 0.980804, + 0.980785, 0.980767, 0.980748, 0.980729, 0.980710, 0.980692, 0.980673, 0.980654, + 0.980635, 0.980617, 0.980598, 0.980579, 0.980560, 0.980541, 0.980523, 0.980504, + 0.980485, 0.980466, 0.980447, 0.980428, 0.980409, 0.980390, 0.980372, 0.980353, + 0.980334, 0.980315, 0.980296, 0.980277, 0.980258, 0.980239, 0.980220, 0.980201, + 0.980182, 0.980163, 0.980144, 0.980125, 0.980106, 0.980087, 0.980068, 0.980049, + 0.980030, 0.980011, 0.979992, 0.979973, 0.979954, 0.979934, 0.979915, 0.979896, + 0.979877, 0.979858, 0.979839, 0.979820, 0.979800, 0.979781, 0.979762, 0.979743, + 0.979724, 0.979704, 0.979685, 0.979666, 0.979647, 0.979628, 0.979608, 0.979589, + 0.979570, 0.979550, 0.979531, 0.979512, 0.979493, 0.979473, 0.979454, 0.979435, + 0.979415, 0.979396, 0.979376, 0.979357, 0.979338, 0.979318, 0.979299, 0.979280, + 0.979260, 0.979241, 0.979221, 0.979202, 0.979182, 0.979163, 0.979143, 0.979124, + 0.979104, 0.979085, 0.979065, 0.979046, 0.979026, 0.979007, 0.978987, 0.978968, + 0.978948, 0.978929, 0.978909, 0.978889, 0.978870, 0.978850, 0.978831, 0.978811, + 0.978791, 0.978772, 0.978752, 0.978732, 0.978713, 0.978693, 0.978673, 0.978654, + 0.978634, 0.978614, 0.978594, 0.978575, 0.978555, 0.978535, 0.978516, 0.978496, + 0.978476, 0.978456, 0.978436, 0.978417, 0.978397, 0.978377, 0.978357, 0.978337, + 0.978317, 0.978298, 0.978278, 0.978258, 0.978238, 0.978218, 0.978198, 0.978178, + 0.978158, 0.978138, 0.978118, 0.978098, 0.978078, 0.978058, 0.978038, 0.978019, + 0.977998, 0.977979, 0.977959, 0.977938, 0.977918, 0.977898, 0.977878, 0.977858, + 0.977838, 0.977818, 0.977798, 0.977778, 0.977758, 0.977738, 0.977718, 0.977697, + 0.977677, 0.977657, 0.977637, 0.977617, 0.977597, 0.977577, 0.977556, 0.977536, + 0.977516, 0.977496, 0.977475, 0.977455, 0.977435, 0.977415, 0.977394, 0.977374, + 0.977354, 0.977334, 0.977313, 0.977293, 0.977273, 0.977252, 0.977232, 0.977212, + 0.977191, 0.977171, 0.977151, 0.977130, 0.977110, 0.977089, 0.977069, 0.977049, + 0.977028, 0.977008, 0.976987, 0.976967, 0.976946, 0.976926, 0.976905, 0.976885, + 0.976864, 0.976844, 0.976823, 0.976803, 0.976782, 0.976762, 0.976741, 0.976721, + 0.976700, 0.976680, 0.976659, 0.976638, 0.976618, 0.976597, 0.976576, 0.976556, + 0.976535, 0.976515, 0.976494, 0.976473, 0.976453, 0.976432, 0.976411, 0.976390, + 0.976370, 0.976349, 0.976328, 0.976308, 0.976287, 0.976266, 0.976245, 0.976224, + 0.976204, 0.976183, 0.976162, 0.976141, 0.976120, 0.976100, 0.976079, 0.976058, + 0.976037, 0.976016, 0.975995, 0.975974, 0.975954, 0.975933, 0.975912, 0.975891, + 0.975870, 0.975849, 0.975828, 0.975807, 0.975786, 0.975765, 0.975744, 0.975723, + 0.975702, 0.975681, 0.975660, 0.975639, 0.975618, 0.975597, 0.975576, 0.975555, + 0.975534, 0.975513, 0.975492, 0.975471, 0.975449, 0.975428, 0.975407, 0.975386, + 0.975365, 0.975344, 0.975323, 0.975301, 0.975280, 0.975259, 0.975238, 0.975217, + 0.975195, 0.975174, 0.975153, 0.975132, 0.975110, 0.975089, 0.975068, 0.975047, + 0.975025, 0.975004, 0.974983, 0.974961, 0.974940, 0.974919, 0.974897, 0.974876, + 0.974855, 0.974833, 0.974812, 0.974791, 0.974769, 0.974748, 0.974726, 0.974705, + 0.974684, 0.974662, 0.974641, 0.974619, 0.974598, 0.974576, 0.974555, 0.974533, + 0.974512, 0.974490, 0.974469, 0.974447, 0.974426, 0.974404, 0.974383, 0.974361, + 0.974339, 0.974318, 0.974296, 0.974275, 0.974253, 0.974231, 0.974210, 0.974188, + 0.974166, 0.974145, 0.974123, 0.974101, 0.974080, 0.974058, 0.974036, 0.974015, + 0.973993, 0.973971, 0.973949, 0.973928, 0.973906, 0.973884, 0.973862, 0.973841, + 0.973819, 0.973797, 0.973775, 0.973753, 0.973732, 0.973710, 0.973688, 0.973666, + 0.973644, 0.973622, 0.973601, 0.973579, 0.973557, 0.973535, 0.973513, 0.973491, + 0.973469, 0.973447, 0.973425, 0.973403, 0.973381, 0.973359, 0.973337, 0.973315, + 0.973293, 0.973271, 0.973249, 0.973227, 0.973205, 0.973183, 0.973161, 0.973139, + 0.973117, 0.973095, 0.973073, 0.973051, 0.973028, 0.973006, 0.972984, 0.972962, + 0.972940, 0.972918, 0.972896, 0.972873, 0.972851, 0.972829, 0.972807, 0.972785, + 0.972762, 0.972740, 0.972718, 0.972696, 0.972673, 0.972651, 0.972629, 0.972607, + 0.972584, 0.972562, 0.972540, 0.972517, 0.972495, 0.972473, 0.972450, 0.972428, + 0.972406, 0.972383, 0.972361, 0.972339, 0.972316, 0.972294, 0.972271, 0.972249, + 0.972227, 0.972204, 0.972182, 0.972159, 0.972137, 0.972114, 0.972092, 0.972069, + 0.972047, 0.972024, 0.972002, 0.971979, 0.971957, 0.971934, 0.971911, 0.971889, + 0.971866, 0.971844, 0.971821, 0.971799, 0.971776, 0.971753, 0.971731, 0.971708, + 0.971685, 0.971663, 0.971640, 0.971617, 0.971595, 0.971572, 0.971549, 0.971527, + 0.971504, 0.971481, 0.971458, 0.971436, 0.971413, 0.971390, 0.971367, 0.971345, + 0.971322, 0.971299, 0.971276, 0.971253, 0.971231, 0.971208, 0.971185, 0.971162, + 0.971139, 0.971116, 0.971093, 0.971071, 0.971048, 0.971025, 0.971002, 0.970979, + 0.970956, 0.970933, 0.970910, 0.970887, 0.970864, 0.970841, 0.970818, 0.970795, + 0.970772, 0.970749, 0.970726, 0.970703, 0.970680, 0.970657, 0.970634, 0.970611, + 0.970588, 0.970565, 0.970542, 0.970518, 0.970495, 0.970472, 0.970449, 0.970426, + 0.970403, 0.970380, 0.970357, 0.970333, 0.970310, 0.970287, 0.970264, 0.970241, + 0.970217, 0.970194, 0.970171, 0.970148, 0.970124, 0.970101, 0.970078, 0.970055, + 0.970031, 0.970008, 0.969985, 0.969961, 0.969938, 0.969915, 0.969891, 0.969868, + 0.969845, 0.969821, 0.969798, 0.969774, 0.969751, 0.969728, 0.969704, 0.969681, + 0.969657, 0.969634, 0.969611, 0.969587, 0.969564, 0.969540, 0.969517, 0.969493, + 0.969470, 0.969446, 0.969423, 0.969399, 0.969375, 0.969352, 0.969328, 0.969305, + 0.969281, 0.969258, 0.969234, 0.969210, 0.969187, 0.969163, 0.969140, 0.969116, + 0.969092, 0.969069, 0.969045, 0.969021, 0.968998, 0.968974, 0.968950, 0.968927, + 0.968903, 0.968879, 0.968855, 0.968832, 0.968808, 0.968784, 0.968760, 0.968737, + 0.968713, 0.968689, 0.968665, 0.968641, 0.968617, 0.968594, 0.968570, 0.968546, + 0.968522, 0.968498, 0.968474, 0.968450, 0.968427, 0.968403, 0.968379, 0.968355, + 0.968331, 0.968307, 0.968283, 0.968259, 0.968235, 0.968211, 0.968187, 0.968163, + 0.968139, 0.968115, 0.968091, 0.968067, 0.968043, 0.968019, 0.967995, 0.967971, + 0.967947, 0.967923, 0.967899, 0.967874, 0.967850, 0.967826, 0.967802, 0.967778, + 0.967754, 0.967730, 0.967706, 0.967681, 0.967657, 0.967633, 0.967609, 0.967585, + 0.967560, 0.967536, 0.967512, 0.967488, 0.967463, 0.967439, 0.967415, 0.967391, + 0.967366, 0.967342, 0.967318, 0.967293, 0.967269, 0.967245, 0.967220, 0.967196, + 0.967172, 0.967147, 0.967123, 0.967099, 0.967074, 0.967050, 0.967025, 0.967001, + 0.966976, 0.966952, 0.966928, 0.966903, 0.966879, 0.966854, 0.966830, 0.966805, + 0.966781, 0.966756, 0.966732, 0.966707, 0.966683, 0.966658, 0.966633, 0.966609, + 0.966584, 0.966560, 0.966535, 0.966511, 0.966486, 0.966461, 0.966437, 0.966412, + 0.966387, 0.966363, 0.966338, 0.966313, 0.966289, 0.966264, 0.966239, 0.966215, + 0.966190, 0.966165, 0.966141, 0.966116, 0.966091, 0.966066, 0.966042, 0.966017, + 0.965992, 0.965967, 0.965942, 0.965918, 0.965893, 0.965868, 0.965843, 0.965818, + 0.965793, 0.965769, 0.965744, 0.965719, 0.965694, 0.965669, 0.965644, 0.965619, + 0.965594, 0.965569, 0.965544, 0.965519, 0.965494, 0.965469, 0.965444, 0.965419, + 0.965394, 0.965369, 0.965344, 0.965319, 0.965294, 0.965269, 0.965244, 0.965219, + 0.965194, 0.965169, 0.965144, 0.965119, 0.965094, 0.965069, 0.965044, 0.965018, + 0.964993, 0.964968, 0.964943, 0.964918, 0.964893, 0.964867, 0.964842, 0.964817, + 0.964792, 0.964767, 0.964741, 0.964716, 0.964691, 0.964666, 0.964640, 0.964615, + 0.964590, 0.964565, 0.964539, 0.964514, 0.964489, 0.964463, 0.964438, 0.964413, + 0.964387, 0.964362, 0.964336, 0.964311, 0.964286, 0.964260, 0.964235, 0.964209, + 0.964184, 0.964159, 0.964133, 0.964108, 0.964082, 0.964057, 0.964031, 0.964006, + 0.963980, 0.963955, 0.963929, 0.963904, 0.963878, 0.963853, 0.963827, 0.963802, + 0.963776, 0.963750, 0.963725, 0.963699, 0.963674, 0.963648, 0.963623, 0.963597, + 0.963571, 0.963546, 0.963520, 0.963494, 0.963469, 0.963443, 0.963417, 0.963391, + 0.963366, 0.963340, 0.963314, 0.963289, 0.963263, 0.963237, 0.963211, 0.963186, + 0.963160, 0.963134, 0.963108, 0.963082, 0.963057, 0.963031, 0.963005, 0.962979, + 0.962953, 0.962927, 0.962902, 0.962876, 0.962850, 0.962824, 0.962798, 0.962772, + 0.962746, 0.962720, 0.962694, 0.962668, 0.962642, 0.962616, 0.962590, 0.962564, + 0.962538, 0.962512, 0.962486, 0.962460, 0.962434, 0.962408, 0.962382, 0.962356, + 0.962330, 0.962304, 0.962278, 0.962252, 0.962226, 0.962200, 0.962174, 0.962148, + 0.962121, 0.962095, 0.962069, 0.962043, 0.962017, 0.961991, 0.961964, 0.961938, + 0.961912, 0.961886, 0.961860, 0.961833, 0.961807, 0.961781, 0.961755, 0.961728, + 0.961702, 0.961676, 0.961649, 0.961623, 0.961597, 0.961571, 0.961544, 0.961518, + 0.961492, 0.961465, 0.961439, 0.961412, 0.961386, 0.961360, 0.961333, 0.961307, + 0.961280, 0.961254, 0.961228, 0.961201, 0.961175, 0.961148, 0.961122, 0.961095, + 0.961069, 0.961042, 0.961016, 0.960989, 0.960963, 0.960936, 0.960910, 0.960883, + 0.960857, 0.960830, 0.960804, 0.960777, 0.960750, 0.960724, 0.960697, 0.960670, + 0.960644, 0.960617, 0.960591, 0.960564, 0.960537, 0.960511, 0.960484, 0.960457, + 0.960431, 0.960404, 0.960377, 0.960350, 0.960324, 0.960297, 0.960270, 0.960243, + 0.960217, 0.960190, 0.960163, 0.960136, 0.960109, 0.960083, 0.960056, 0.960029, + 0.960002, 0.959975, 0.959948, 0.959922, 0.959895, 0.959868, 0.959841, 0.959814, + 0.959787, 0.959760, 0.959733, 0.959706, 0.959679, 0.959652, 0.959625, 0.959598, + 0.959572, 0.959545, 0.959518, 0.959491, 0.959463, 0.959436, 0.959409, 0.959382, + 0.959355, 0.959328, 0.959301, 0.959274, 0.959247, 0.959220, 0.959193, 0.959166, + 0.959139, 0.959112, 0.959084, 0.959057, 0.959030, 0.959003, 0.958976, 0.958949, + 0.958921, 0.958894, 0.958867, 0.958840, 0.958812, 0.958785, 0.958758, 0.958731, + 0.958703, 0.958676, 0.958649, 0.958622, 0.958594, 0.958567, 0.958540, 0.958512, + 0.958485, 0.958458, 0.958430, 0.958403, 0.958376, 0.958348, 0.958321, 0.958293, + 0.958266, 0.958239, 0.958211, 0.958184, 0.958156, 0.958129, 0.958101, 0.958074, + 0.958046, 0.958019, 0.957992, 0.957964, 0.957937, 0.957909, 0.957882, 0.957854, + 0.957826, 0.957799, 0.957771, 0.957744, 0.957716, 0.957689, 0.957661, 0.957633, + 0.957606, 0.957578, 0.957550, 0.957523, 0.957495, 0.957468, 0.957440, 0.957412, + 0.957385, 0.957357, 0.957329, 0.957301, 0.957274, 0.957246, 0.957218, 0.957190, + 0.957163, 0.957135, 0.957107, 0.957079, 0.957052, 0.957024, 0.956996, 0.956968, + 0.956940, 0.956913, 0.956885, 0.956857, 0.956829, 0.956801, 0.956773, 0.956745, + 0.956717, 0.956689, 0.956662, 0.956634, 0.956606, 0.956578, 0.956550, 0.956522, + 0.956494, 0.956466, 0.956438, 0.956410, 0.956382, 0.956354, 0.956326, 0.956298, + 0.956270, 0.956242, 0.956214, 0.956186, 0.956158, 0.956130, 0.956101, 0.956073, + 0.956045, 0.956017, 0.955989, 0.955961, 0.955933, 0.955905, 0.955876, 0.955848, + 0.955820, 0.955792, 0.955764, 0.955736, 0.955707, 0.955679, 0.955651, 0.955623, + 0.955594, 0.955566, 0.955538, 0.955510, 0.955481, 0.955453, 0.955425, 0.955396, + 0.955368, 0.955340, 0.955311, 0.955283, 0.955255, 0.955226, 0.955198, 0.955170, + 0.955141, 0.955113, 0.955084, 0.955056, 0.955028, 0.954999, 0.954971, 0.954942, + 0.954914, 0.954885, 0.954857, 0.954828, 0.954800, 0.954771, 0.954743, 0.954714, + 0.954686, 0.954657, 0.954629, 0.954600, 0.954572, 0.954543, 0.954514, 0.954486, + 0.954457, 0.954429, 0.954400, 0.954371, 0.954343, 0.954314, 0.954285, 0.954257, + 0.954228, 0.954199, 0.954171, 0.954142, 0.954113, 0.954085, 0.954056, 0.954027, + 0.953998, 0.953970, 0.953941, 0.953912, 0.953883, 0.953855, 0.953826, 0.953797, + 0.953768, 0.953739, 0.953711, 0.953682, 0.953653, 0.953624, 0.953595, 0.953566, + 0.953537, 0.953508, 0.953480, 0.953451, 0.953422, 0.953393, 0.953364, 0.953335, + 0.953306, 0.953277, 0.953248, 0.953219, 0.953190, 0.953161, 0.953132, 0.953103, + 0.953074, 0.953045, 0.953016, 0.952987, 0.952958, 0.952929, 0.952900, 0.952871, + 0.952842, 0.952813, 0.952783, 0.952754, 0.952725, 0.952696, 0.952667, 0.952638, + 0.952609, 0.952579, 0.952550, 0.952521, 0.952492, 0.952463, 0.952433, 0.952404, + 0.952375, 0.952346, 0.952317, 0.952287, 0.952258, 0.952229, 0.952199, 0.952170, + 0.952141, 0.952112, 0.952082, 0.952053, 0.952024, 0.951994, 0.951965, 0.951936, + 0.951906, 0.951877, 0.951847, 0.951818, 0.951789, 0.951759, 0.951730, 0.951700, + 0.951671, 0.951641, 0.951612, 0.951582, 0.951553, 0.951524, 0.951494, 0.951465, + 0.951435, 0.951406, 0.951376, 0.951346, 0.951317, 0.951287, 0.951258, 0.951228, + 0.951199, 0.951169, 0.951139, 0.951110, 0.951080, 0.951051, 0.951021, 0.950991, + 0.950962, 0.950932, 0.950902, 0.950873, 0.950843, 0.950813, 0.950784, 0.950754, + 0.950724, 0.950694, 0.950665, 0.950635, 0.950605, 0.950575, 0.950546, 0.950516, + 0.950486, 0.950456, 0.950426, 0.950397, 0.950367, 0.950337, 0.950307, 0.950277, + 0.950247, 0.950218, 0.950188, 0.950158, 0.950128, 0.950098, 0.950068, 0.950038, + 0.950008, 0.949978, 0.949948, 0.949918, 0.949888, 0.949858, 0.949829, 0.949798, + 0.949768, 0.949739, 0.949708, 0.949678, 0.949648, 0.949618, 0.949588, 0.949558, + 0.949528, 0.949498, 0.949468, 0.949438, 0.949408, 0.949378, 0.949348, 0.949317, + 0.949287, 0.949257, 0.949227, 0.949197, 0.949167, 0.949136, 0.949106, 0.949076, + 0.949046, 0.949016, 0.948985, 0.948955, 0.948925, 0.948895, 0.948864, 0.948834, + 0.948804, 0.948774, 0.948743, 0.948713, 0.948683, 0.948652, 0.948622, 0.948592, + 0.948561, 0.948531, 0.948501, 0.948470, 0.948440, 0.948409, 0.948379, 0.948349, + 0.948318, 0.948288, 0.948257, 0.948227, 0.948196, 0.948166, 0.948136, 0.948105, + 0.948075, 0.948044, 0.948014, 0.947983, 0.947953, 0.947922, 0.947891, 0.947861, + 0.947830, 0.947800, 0.947769, 0.947739, 0.947708, 0.947677, 0.947647, 0.947616, + 0.947586, 0.947555, 0.947524, 0.947494, 0.947463, 0.947432, 0.947402, 0.947371, + 0.947340, 0.947310, 0.947279, 0.947248, 0.947217, 0.947187, 0.947156, 0.947125, + 0.947094, 0.947064, 0.947033, 0.947002, 0.946971, 0.946940, 0.946910, 0.946879, + 0.946848, 0.946817, 0.946786, 0.946755, 0.946724, 0.946694, 0.946663, 0.946632, + 0.946601, 0.946570, 0.946539, 0.946508, 0.946477, 0.946446, 0.946415, 0.946384, + 0.946353, 0.946322, 0.946291, 0.946260, 0.946229, 0.946198, 0.946167, 0.946136, + 0.946105, 0.946074, 0.946043, 0.946012, 0.945981, 0.945950, 0.945919, 0.945888, + 0.945857, 0.945825, 0.945794, 0.945763, 0.945732, 0.945701, 0.945670, 0.945639, + 0.945607, 0.945576, 0.945545, 0.945514, 0.945482, 0.945451, 0.945420, 0.945389, + 0.945358, 0.945326, 0.945295, 0.945264, 0.945232, 0.945201, 0.945170, 0.945139, + 0.945107, 0.945076, 0.945045, 0.945013, 0.944982, 0.944950, 0.944919, 0.944888, + 0.944856, 0.944825, 0.944793, 0.944762, 0.944731, 0.944699, 0.944668, 0.944636, + 0.944605, 0.944573, 0.944542, 0.944510, 0.944479, 0.944447, 0.944416, 0.944384, + 0.944353, 0.944321, 0.944290, 0.944258, 0.944227, 0.944195, 0.944163, 0.944132, + 0.944100, 0.944069, 0.944037, 0.944005, 0.943974, 0.943942, 0.943910, 0.943879, + 0.943847, 0.943815, 0.943784, 0.943752, 0.943720, 0.943689, 0.943657, 0.943625, + 0.943593, 0.943562, 0.943530, 0.943498, 0.943466, 0.943435, 0.943403, 0.943371, + 0.943339, 0.943307, 0.943276, 0.943244, 0.943212, 0.943180, 0.943148, 0.943116, + 0.943084, 0.943053, 0.943021, 0.942989, 0.942957, 0.942925, 0.942893, 0.942861, + 0.942829, 0.942797, 0.942765, 0.942733, 0.942701, 0.942669, 0.942637, 0.942605, + 0.942573, 0.942541, 0.942509, 0.942477, 0.942445, 0.942413, 0.942381, 0.942349, + 0.942317, 0.942285, 0.942253, 0.942220, 0.942188, 0.942156, 0.942124, 0.942092, + 0.942060, 0.942028, 0.941995, 0.941963, 0.941931, 0.941899, 0.941867, 0.941834, + 0.941802, 0.941770, 0.941738, 0.941705, 0.941673, 0.941641, 0.941609, 0.941576, + 0.941544, 0.941512, 0.941479, 0.941447, 0.941415, 0.941382, 0.941350, 0.941318, + 0.941285, 0.941253, 0.941221, 0.941188, 0.941156, 0.941123, 0.941091, 0.941059, + 0.941026, 0.940994, 0.940961, 0.940929, 0.940896, 0.940864, 0.940831, 0.940799, + 0.940766, 0.940734, 0.940701, 0.940669, 0.940636, 0.940604, 0.940571, 0.940539, + 0.940506, 0.940473, 0.940441, 0.940408, 0.940376, 0.940343, 0.940310, 0.940278, + 0.940245, 0.940213, 0.940180, 0.940147, 0.940115, 0.940082, 0.940049, 0.940016, + 0.939984, 0.939951, 0.939918, 0.939886, 0.939853, 0.939820, 0.939787, 0.939755, + 0.939722, 0.939689, 0.939656, 0.939623, 0.939591, 0.939558, 0.939525, 0.939492, + 0.939459, 0.939426, 0.939394, 0.939361, 0.939328, 0.939295, 0.939262, 0.939229, + 0.939196, 0.939163, 0.939130, 0.939097, 0.939064, 0.939031, 0.938998, 0.938965, + 0.938932, 0.938900, 0.938866, 0.938833, 0.938800, 0.938767, 0.938734, 0.938701, + 0.938668, 0.938635, 0.938602, 0.938569, 0.938536, 0.938503, 0.938470, 0.938437, + 0.938404, 0.938370, 0.938337, 0.938304, 0.938271, 0.938238, 0.938205, 0.938171, + 0.938138, 0.938105, 0.938072, 0.938039, 0.938005, 0.937972, 0.937939, 0.937906, + 0.937872, 0.937839, 0.937806, 0.937773, 0.937739, 0.937706, 0.937673, 0.937639, + 0.937606, 0.937573, 0.937539, 0.937506, 0.937473, 0.937439, 0.937406, 0.937372, + 0.937339, 0.937306, 0.937272, 0.937239, 0.937205, 0.937172, 0.937138, 0.937105, + 0.937072, 0.937038, 0.937005, 0.936971, 0.936938, 0.936904, 0.936871, 0.936837, + 0.936803, 0.936770, 0.936736, 0.936703, 0.936669, 0.936636, 0.936602, 0.936568, + 0.936535, 0.936501, 0.936468, 0.936434, 0.936400, 0.936367, 0.936333, 0.936299, + 0.936266, 0.936232, 0.936198, 0.936165, 0.936131, 0.936097, 0.936063, 0.936030, + 0.935996, 0.935962, 0.935928, 0.935895, 0.935861, 0.935827, 0.935793, 0.935759, + 0.935726, 0.935692, 0.935658, 0.935624, 0.935590, 0.935556, 0.935523, 0.935489, + 0.935455, 0.935421, 0.935387, 0.935353, 0.935319, 0.935285, 0.935251, 0.935217, + 0.935184, 0.935150, 0.935116, 0.935082, 0.935048, 0.935014, 0.934980, 0.934946, + 0.934912, 0.934878, 0.934844, 0.934810, 0.934775, 0.934741, 0.934707, 0.934673, + 0.934639, 0.934605, 0.934571, 0.934537, 0.934503, 0.934469, 0.934434, 0.934400, + 0.934366, 0.934332, 0.934298, 0.934264, 0.934229, 0.934195, 0.934161, 0.934127, + 0.934093, 0.934058, 0.934024, 0.933990, 0.933956, 0.933921, 0.933887, 0.933853, + 0.933818, 0.933784, 0.933750, 0.933716, 0.933681, 0.933647, 0.933612, 0.933578, + 0.933544, 0.933509, 0.933475, 0.933441, 0.933406, 0.933372, 0.933337, 0.933303, + 0.933269, 0.933234, 0.933200, 0.933165, 0.933131, 0.933096, 0.933062, 0.933027, + 0.932993, 0.932958, 0.932924, 0.932889, 0.932855, 0.932820, 0.932786, 0.932751, + 0.932716, 0.932682, 0.932647, 0.932613, 0.932578, 0.932544, 0.932509, 0.932474, + 0.932440, 0.932405, 0.932370, 0.932336, 0.932301, 0.932266, 0.932232, 0.932197, + 0.932162, 0.932128, 0.932093, 0.932058, 0.932023, 0.931989, 0.931954, 0.931919, + 0.931884, 0.931849, 0.931815, 0.931780, 0.931745, 0.931710, 0.931675, 0.931641, + 0.931606, 0.931571, 0.931536, 0.931501, 0.931466, 0.931431, 0.931397, 0.931362, + 0.931327, 0.931292, 0.931257, 0.931222, 0.931187, 0.931152, 0.931117, 0.931082, + 0.931047, 0.931012, 0.930977, 0.930942, 0.930907, 0.930872, 0.930837, 0.930802, + 0.930767, 0.930732, 0.930697, 0.930662, 0.930627, 0.930592, 0.930556, 0.930521, + 0.930486, 0.930451, 0.930416, 0.930381, 0.930346, 0.930311, 0.930275, 0.930240, + 0.930205, 0.930170, 0.930135, 0.930099, 0.930064, 0.930029, 0.929994, 0.929958, + 0.929923, 0.929888, 0.929853, 0.929817, 0.929782, 0.929747, 0.929712, 0.929676, + 0.929641, 0.929606, 0.929570, 0.929535, 0.929500, 0.929464, 0.929429, 0.929393, + 0.929358, 0.929323, 0.929287, 0.929252, 0.929216, 0.929181, 0.929146, 0.929110, + 0.929075, 0.929039, 0.929004, 0.928968, 0.928933, 0.928897, 0.928862, 0.928826, + 0.928791, 0.928755, 0.928720, 0.928684, 0.928648, 0.928613, 0.928577, 0.928542, + 0.928506, 0.928470, 0.928435, 0.928399, 0.928364, 0.928328, 0.928292, 0.928257, + 0.928221, 0.928185, 0.928150, 0.928114, 0.928078, 0.928043, 0.928007, 0.927971, + 0.927935, 0.927900, 0.927864, 0.927828, 0.927792, 0.927757, 0.927721, 0.927685, + 0.927649, 0.927613, 0.927578, 0.927542, 0.927506, 0.927470, 0.927434, 0.927398, + 0.927363, 0.927327, 0.927291, 0.927255, 0.927219, 0.927183, 0.927147, 0.927111, + 0.927075, 0.927039, 0.927003, 0.926967, 0.926931, 0.926895, 0.926859, 0.926823, + 0.926787, 0.926751, 0.926715, 0.926679, 0.926643, 0.926607, 0.926571, 0.926535, + 0.926499, 0.926463, 0.926427, 0.926391, 0.926355, 0.926319, 0.926283, 0.926246, + 0.926210, 0.926174, 0.926138, 0.926102, 0.926066, 0.926029, 0.925993, 0.925957, + 0.925921, 0.925885, 0.925848, 0.925812, 0.925776, 0.925740, 0.925703, 0.925667, + 0.925631, 0.925595, 0.925558, 0.925522, 0.925486, 0.925449, 0.925413, 0.925377, + 0.925340, 0.925304, 0.925268, 0.925231, 0.925195, 0.925158, 0.925122, 0.925086, + 0.925049, 0.925013, 0.924976, 0.924940, 0.924904, 0.924867, 0.924831, 0.924794, + 0.924758, 0.924721, 0.924685, 0.924648, 0.924612, 0.924575, 0.924539, 0.924502, + 0.924465, 0.924429, 0.924392, 0.924356, 0.924319, 0.924283, 0.924246, 0.924209, + 0.924173, 0.924136, 0.924100, 0.924063, 0.924026, 0.923990, 0.923953, 0.923916, + 0.923880, 0.923843, 0.923806, 0.923769, 0.923733, 0.923696, 0.923659, 0.923622, + 0.923586, 0.923549, 0.923512, 0.923475, 0.923439, 0.923402, 0.923365, 0.923328, + 0.923291, 0.923255, 0.923218, 0.923181, 0.923144, 0.923107, 0.923070, 0.923033, + 0.922997, 0.922960, 0.922923, 0.922886, 0.922849, 0.922812, 0.922775, 0.922738, + 0.922701, 0.922664, 0.922627, 0.922590, 0.922553, 0.922516, 0.922479, 0.922442, + 0.922405, 0.922368, 0.922331, 0.922294, 0.922257, 0.922220, 0.922183, 0.922146, + 0.922109, 0.922072, 0.922034, 0.921997, 0.921960, 0.921923, 0.921886, 0.921849, + 0.921812, 0.921774, 0.921737, 0.921700, 0.921663, 0.921626, 0.921588, 0.921551, + 0.921514, 0.921477, 0.921440, 0.921402, 0.921365, 0.921328, 0.921291, 0.921253, + 0.921216, 0.921179, 0.921141, 0.921104, 0.921067, 0.921029, 0.920992, 0.920955, + 0.920917, 0.920880, 0.920842, 0.920805, 0.920768, 0.920730, 0.920693, 0.920655, + 0.920618, 0.920581, 0.920543, 0.920506, 0.920468, 0.920431, 0.920393, 0.920356, + 0.920318, 0.920281, 0.920243, 0.920206, 0.920168, 0.920131, 0.920093, 0.920056, + 0.920018, 0.919980, 0.919943, 0.919905, 0.919868, 0.919830, 0.919792, 0.919755, + 0.919717, 0.919680, 0.919642, 0.919604, 0.919567, 0.919529, 0.919491, 0.919453, + 0.919416, 0.919378, 0.919340, 0.919303, 0.919265, 0.919227, 0.919189, 0.919152, + 0.919114, 0.919076, 0.919038, 0.919001, 0.918963, 0.918925, 0.918887, 0.918849, + 0.918811, 0.918774, 0.918736, 0.918698, 0.918660, 0.918622, 0.918584, 0.918546, + 0.918508, 0.918471, 0.918433, 0.918395, 0.918357, 0.918319, 0.918281, 0.918243, + 0.918205, 0.918167, 0.918129, 0.918091, 0.918053, 0.918015, 0.917977, 0.917939, + 0.917901, 0.917863, 0.917825, 0.917787, 0.917749, 0.917710, 0.917672, 0.917634, + 0.917596, 0.917558, 0.917520, 0.917482, 0.917444, 0.917405, 0.917367, 0.917329, + 0.917291, 0.917253, 0.917215, 0.917176, 0.917138, 0.917100, 0.917062, 0.917024, + 0.916985, 0.916947, 0.916909, 0.916871, 0.916832, 0.916794, 0.916756, 0.916717, + 0.916679, 0.916641, 0.916602, 0.916564, 0.916526, 0.916487, 0.916449, 0.916411, + 0.916372, 0.916334, 0.916296, 0.916257, 0.916219, 0.916180, 0.916142, 0.916103, + 0.916065, 0.916027, 0.915988, 0.915950, 0.915911, 0.915873, 0.915834, 0.915796, + 0.915757, 0.915719, 0.915680, 0.915642, 0.915603, 0.915564, 0.915526, 0.915487, + 0.915449, 0.915410, 0.915372, 0.915333, 0.915294, 0.915256, 0.915217, 0.915178, + 0.915140, 0.915101, 0.915062, 0.915024, 0.914985, 0.914946, 0.914908, 0.914869, + 0.914830, 0.914792, 0.914753, 0.914714, 0.914675, 0.914637, 0.914598, 0.914559, + 0.914520, 0.914482, 0.914443, 0.914404, 0.914365, 0.914326, 0.914287, 0.914249, + 0.914210, 0.914171, 0.914132, 0.914093, 0.914054, 0.914015, 0.913976, 0.913938, + 0.913899, 0.913860, 0.913821, 0.913782, 0.913743, 0.913704, 0.913665, 0.913626, + 0.913587, 0.913548, 0.913509, 0.913470, 0.913431, 0.913392, 0.913353, 0.913314, + 0.913275, 0.913236, 0.913197, 0.913158, 0.913119, 0.913080, 0.913040, 0.913001, + 0.912962, 0.912923, 0.912884, 0.912845, 0.912806, 0.912766, 0.912727, 0.912688, + 0.912649, 0.912610, 0.912571, 0.912531, 0.912492, 0.912453, 0.912414, 0.912374, + 0.912335, 0.912296, 0.912257, 0.912217, 0.912178, 0.912139, 0.912099, 0.912060, + 0.912021, 0.911982, 0.911942, 0.911903, 0.911864, 0.911824, 0.911785, 0.911745, + 0.911706, 0.911667, 0.911627, 0.911588, 0.911548, 0.911509, 0.911470, 0.911430, + 0.911391, 0.911351, 0.911312, 0.911272, 0.911233, 0.911193, 0.911154, 0.911114, + 0.911075, 0.911035, 0.910996, 0.910956, 0.910917, 0.910877, 0.910837, 0.910798, + 0.910758, 0.910719, 0.910679, 0.910639, 0.910600, 0.910560, 0.910521, 0.910481, + 0.910441, 0.910402, 0.910362, 0.910322, 0.910283, 0.910243, 0.910203, 0.910163, + 0.910124, 0.910084, 0.910044, 0.910005, 0.909965, 0.909925, 0.909885, 0.909845, + 0.909806, 0.909766, 0.909726, 0.909686, 0.909646, 0.909607, 0.909567, 0.909527, + 0.909487, 0.909447, 0.909407, 0.909368, 0.909328, 0.909288, 0.909248, 0.909208, + 0.909168, 0.909128, 0.909088, 0.909048, 0.909008, 0.908968, 0.908928, 0.908888, + 0.908848, 0.908808, 0.908768, 0.908728, 0.908688, 0.908648, 0.908608, 0.908568, + 0.908528, 0.908488, 0.908448, 0.908408, 0.908368, 0.908328, 0.908288, 0.908248, + 0.908207, 0.908167, 0.908127, 0.908087, 0.908047, 0.908007, 0.907966, 0.907926, + 0.907886, 0.907846, 0.907806, 0.907766, 0.907725, 0.907685, 0.907645, 0.907605, + 0.907564, 0.907524, 0.907484, 0.907444, 0.907403, 0.907363, 0.907323, 0.907282, + 0.907242, 0.907202, 0.907161, 0.907121, 0.907081, 0.907040, 0.907000, 0.906959, + 0.906919, 0.906879, 0.906838, 0.906798, 0.906757, 0.906717, 0.906677, 0.906636, + 0.906596, 0.906555, 0.906515, 0.906474, 0.906434, 0.906393, 0.906353, 0.906312, + 0.906272, 0.906231, 0.906191, 0.906150, 0.906110, 0.906069, 0.906028, 0.905988, + 0.905947, 0.905907, 0.905866, 0.905825, 0.905785, 0.905744, 0.905704, 0.905663, + 0.905622, 0.905582, 0.905541, 0.905500, 0.905460, 0.905419, 0.905378, 0.905337, + 0.905297, 0.905256, 0.905215, 0.905175, 0.905134, 0.905093, 0.905052, 0.905011, + 0.904971, 0.904930, 0.904889, 0.904848, 0.904807, 0.904767, 0.904726, 0.904685, + 0.904644, 0.904603, 0.904562, 0.904521, 0.904481, 0.904440, 0.904399, 0.904358, + 0.904317, 0.904276, 0.904235, 0.904194, 0.904153, 0.904112, 0.904071, 0.904030, + 0.903989, 0.903948, 0.903907, 0.903866, 0.903825, 0.903784, 0.903743, 0.903702, + 0.903661, 0.903620, 0.903579, 0.903538, 0.903497, 0.903456, 0.903415, 0.903373, + 0.903332, 0.903291, 0.903250, 0.903209, 0.903168, 0.903127, 0.903085, 0.903044, + 0.903003, 0.902962, 0.902921, 0.902879, 0.902838, 0.902797, 0.902756, 0.902715, + 0.902673, 0.902632, 0.902591, 0.902550, 0.902508, 0.902467, 0.902426, 0.902384, + 0.902343, 0.902302, 0.902260, 0.902219, 0.902178, 0.902136, 0.902095, 0.902054, + 0.902012, 0.901971, 0.901929, 0.901888, 0.901847, 0.901805, 0.901764, 0.901722, + 0.901681, 0.901639, 0.901598, 0.901556, 0.901515, 0.901473, 0.901432, 0.901390, + 0.901349, 0.901307, 0.901266, 0.901224, 0.901183, 0.901141, 0.901100, 0.901058, + 0.901016, 0.900975, 0.900933, 0.900892, 0.900850, 0.900808, 0.900767, 0.900725, + 0.900683, 0.900642, 0.900600, 0.900558, 0.900517, 0.900475, 0.900433, 0.900392, + 0.900350, 0.900308, 0.900266, 0.900225, 0.900183, 0.900141, 0.900099, 0.900058, + 0.900016, 0.899974, 0.899932, 0.899890, 0.899849, 0.899807, 0.899765, 0.899723, + 0.899681, 0.899639, 0.899598, 0.899556, 0.899514, 0.899472, 0.899430, 0.899388, + 0.899346, 0.899304, 0.899262, 0.899220, 0.899179, 0.899137, 0.899095, 0.899053, + 0.899011, 0.898969, 0.898927, 0.898885, 0.898843, 0.898801, 0.898759, 0.898717, + 0.898674, 0.898632, 0.898590, 0.898548, 0.898506, 0.898464, 0.898422, 0.898380, + 0.898338, 0.898296, 0.898254, 0.898211, 0.898169, 0.898127, 0.898085, 0.898043, + 0.898001, 0.897958, 0.897916, 0.897874, 0.897832, 0.897790, 0.897747, 0.897705, + 0.897663, 0.897621, 0.897578, 0.897536, 0.897494, 0.897452, 0.897409, 0.897367, + 0.897325, 0.897282, 0.897240, 0.897198, 0.897155, 0.897113, 0.897071, 0.897028, + 0.896986, 0.896943, 0.896901, 0.896859, 0.896816, 0.896774, 0.896731, 0.896689, + 0.896646, 0.896604, 0.896562, 0.896519, 0.896477, 0.896434, 0.896392, 0.896349, + 0.896307, 0.896264, 0.896222, 0.896179, 0.896137, 0.896094, 0.896051, 0.896009, + 0.895966, 0.895924, 0.895881, 0.895838, 0.895796, 0.895753, 0.895711, 0.895668, + 0.895625, 0.895583, 0.895540, 0.895497, 0.895455, 0.895412, 0.895369, 0.895327, + 0.895284, 0.895241, 0.895198, 0.895156, 0.895113, 0.895070, 0.895028, 0.894985, + 0.894942, 0.894899, 0.894856, 0.894814, 0.894771, 0.894728, 0.894685, 0.894642, + 0.894599, 0.894557, 0.894514, 0.894471, 0.894428, 0.894385, 0.894342, 0.894299, + 0.894256, 0.894214, 0.894171, 0.894128, 0.894085, 0.894042, 0.893999, 0.893956, + 0.893913, 0.893870, 0.893827, 0.893784, 0.893741, 0.893698, 0.893655, 0.893612, + 0.893569, 0.893526, 0.893483, 0.893440, 0.893397, 0.893354, 0.893310, 0.893267, + 0.893224, 0.893181, 0.893138, 0.893095, 0.893052, 0.893009, 0.892965, 0.892922, + 0.892879, 0.892836, 0.892793, 0.892750, 0.892706, 0.892663, 0.892620, 0.892577, + 0.892534, 0.892490, 0.892447, 0.892404, 0.892361, 0.892317, 0.892274, 0.892231, + 0.892187, 0.892144, 0.892101, 0.892057, 0.892014, 0.891971, 0.891927, 0.891884, + 0.891841, 0.891797, 0.891754, 0.891711, 0.891667, 0.891624, 0.891580, 0.891537, + 0.891493, 0.891450, 0.891407, 0.891363, 0.891320, 0.891276, 0.891233, 0.891189, + 0.891146, 0.891102, 0.891059, 0.891015, 0.890972, 0.890928, 0.890885, 0.890841, + 0.890797, 0.890754, 0.890710, 0.890667, 0.890623, 0.890580, 0.890536, 0.890492, + 0.890449, 0.890405, 0.890361, 0.890318, 0.890274, 0.890230, 0.890187, 0.890143, + 0.890099, 0.890056, 0.890012, 0.889968, 0.889925, 0.889881, 0.889837, 0.889793, + 0.889750, 0.889706, 0.889662, 0.889618, 0.889574, 0.889531, 0.889487, 0.889443, + 0.889399, 0.889355, 0.889312, 0.889268, 0.889224, 0.889180, 0.889136, 0.889092, + 0.889048, 0.889004, 0.888961, 0.888917, 0.888873, 0.888829, 0.888785, 0.888741, + 0.888697, 0.888653, 0.888609, 0.888565, 0.888521, 0.888477, 0.888433, 0.888389, + 0.888345, 0.888301, 0.888257, 0.888213, 0.888169, 0.888125, 0.888081, 0.888037, + 0.887993, 0.887949, 0.887904, 0.887860, 0.887816, 0.887772, 0.887728, 0.887684, + 0.887640, 0.887595, 0.887551, 0.887507, 0.887463, 0.887419, 0.887375, 0.887330, + 0.887286, 0.887242, 0.887198, 0.887153, 0.887109, 0.887065, 0.887021, 0.886976, + 0.886932, 0.886888, 0.886844, 0.886799, 0.886755, 0.886711, 0.886666, 0.886622, + 0.886578, 0.886533, 0.886489, 0.886445, 0.886400, 0.886356, 0.886311, 0.886267, + 0.886223, 0.886178, 0.886134, 0.886089, 0.886045, 0.886000, 0.885956, 0.885911, + 0.885867, 0.885822, 0.885778, 0.885733, 0.885689, 0.885644, 0.885600, 0.885555, + 0.885511, 0.885466, 0.885422, 0.885377, 0.885333, 0.885288, 0.885243, 0.885199, + 0.885154, 0.885110, 0.885065, 0.885020, 0.884976, 0.884931, 0.884886, 0.884842, + 0.884797, 0.884752, 0.884708, 0.884663, 0.884618, 0.884574, 0.884529, 0.884484, + 0.884439, 0.884395, 0.884350, 0.884305, 0.884260, 0.884216, 0.884171, 0.884126, + 0.884081, 0.884036, 0.883992, 0.883947, 0.883902, 0.883857, 0.883812, 0.883767, + 0.883723, 0.883678, 0.883633, 0.883588, 0.883543, 0.883498, 0.883453, 0.883408, + 0.883363, 0.883318, 0.883273, 0.883228, 0.883184, 0.883139, 0.883094, 0.883049, + 0.883004, 0.882959, 0.882914, 0.882869, 0.882824, 0.882779, 0.882733, 0.882688, + 0.882643, 0.882598, 0.882553, 0.882508, 0.882463, 0.882418, 0.882373, 0.882328, + 0.882283, 0.882237, 0.882192, 0.882147, 0.882102, 0.882057, 0.882012, 0.881966, + 0.881921, 0.881876, 0.881831, 0.881786, 0.881740, 0.881695, 0.881650, 0.881605, + 0.881559, 0.881514, 0.881469, 0.881424, 0.881378, 0.881333, 0.881288, 0.881242, + 0.881197, 0.881152, 0.881106, 0.881061, 0.881016, 0.880970, 0.880925, 0.880880, + 0.880834, 0.880789, 0.880743, 0.880698, 0.880653, 0.880607, 0.880562, 0.880516, + 0.880471, 0.880425, 0.880380, 0.880334, 0.880289, 0.880244, 0.880198, 0.880153, + 0.880107, 0.880061, 0.880016, 0.879970, 0.879925, 0.879879, 0.879834, 0.879788, + 0.879743, 0.879697, 0.879651, 0.879606, 0.879560, 0.879515, 0.879469, 0.879423, + 0.879378, 0.879332, 0.879286, 0.879241, 0.879195, 0.879149, 0.879104, 0.879058, + 0.879012, 0.878967, 0.878921, 0.878875, 0.878829, 0.878784, 0.878738, 0.878692, + 0.878646, 0.878600, 0.878555, 0.878509, 0.878463, 0.878417, 0.878371, 0.878326, + 0.878280, 0.878234, 0.878188, 0.878142, 0.878096, 0.878051, 0.878005, 0.877959, + 0.877913, 0.877867, 0.877821, 0.877775, 0.877729, 0.877683, 0.877637, 0.877591, + 0.877545, 0.877499, 0.877453, 0.877407, 0.877361, 0.877315, 0.877269, 0.877223, + 0.877177, 0.877131, 0.877085, 0.877039, 0.876993, 0.876947, 0.876901, 0.876855, + 0.876809, 0.876763, 0.876716, 0.876670, 0.876624, 0.876578, 0.876532, 0.876486, + 0.876440, 0.876393, 0.876347, 0.876301, 0.876255, 0.876209, 0.876163, 0.876116, + 0.876070, 0.876024, 0.875978, 0.875931, 0.875885, 0.875839, 0.875793, 0.875746, + 0.875700, 0.875654, 0.875607, 0.875561, 0.875515, 0.875468, 0.875422, 0.875376, + 0.875329, 0.875283, 0.875237, 0.875190, 0.875144, 0.875098, 0.875051, 0.875005, + 0.874958, 0.874912, 0.874865, 0.874819, 0.874773, 0.874726, 0.874680, 0.874633, + 0.874587, 0.874540, 0.874494, 0.874447, 0.874401, 0.874354, 0.874308, 0.874261, + 0.874215, 0.874168, 0.874121, 0.874075, 0.874028, 0.873982, 0.873935, 0.873888, + 0.873842, 0.873795, 0.873749, 0.873702, 0.873655, 0.873609, 0.873562, 0.873515, + 0.873469, 0.873422, 0.873375, 0.873329, 0.873282, 0.873235, 0.873188, 0.873142, + 0.873095, 0.873048, 0.873001, 0.872955, 0.872908, 0.872861, 0.872814, 0.872768, + 0.872721, 0.872674, 0.872627, 0.872580, 0.872534, 0.872487, 0.872440, 0.872393, + 0.872346, 0.872299, 0.872252, 0.872205, 0.872159, 0.872112, 0.872065, 0.872018, + 0.871971, 0.871924, 0.871877, 0.871830, 0.871783, 0.871736, 0.871689, 0.871642, + 0.871595, 0.871548, 0.871501, 0.871454, 0.871407, 0.871360, 0.871313, 0.871266, + 0.871219, 0.871172, 0.871125, 0.871078, 0.871031, 0.870983, 0.870936, 0.870889, + 0.870842, 0.870795, 0.870748, 0.870701, 0.870654, 0.870606, 0.870559, 0.870512, + 0.870465, 0.870418, 0.870370, 0.870323, 0.870276, 0.870229, 0.870182, 0.870134, + 0.870087, 0.870040, 0.869992, 0.869945, 0.869898, 0.869851, 0.869803, 0.869756, + 0.869709, 0.869661, 0.869614, 0.869567, 0.869519, 0.869472, 0.869425, 0.869377, + 0.869330, 0.869282, 0.869235, 0.869188, 0.869140, 0.869093, 0.869045, 0.868998, + 0.868951, 0.868903, 0.868856, 0.868808, 0.868761, 0.868713, 0.868666, 0.868618, + 0.868571, 0.868523, 0.868476, 0.868428, 0.868381, 0.868333, 0.868285, 0.868238, + 0.868190, 0.868143, 0.868095, 0.868048, 0.868000, 0.867952, 0.867905, 0.867857, + 0.867809, 0.867762, 0.867714, 0.867667, 0.867619, 0.867571, 0.867523, 0.867476, + 0.867428, 0.867380, 0.867333, 0.867285, 0.867237, 0.867190, 0.867142, 0.867094, + 0.867046, 0.866998, 0.866951, 0.866903, 0.866855, 0.866807, 0.866759, 0.866712, + 0.866664, 0.866616, 0.866568, 0.866520, 0.866472, 0.866425, 0.866377, 0.866329, + 0.866281, 0.866233, 0.866185, 0.866137, 0.866089, 0.866041, 0.865993, 0.865946, + 0.865898, 0.865850, 0.865802, 0.865754, 0.865706, 0.865658, 0.865610, 0.865562, + 0.865514, 0.865466, 0.865418, 0.865369, 0.865321, 0.865273, 0.865225, 0.865177, + 0.865129, 0.865081, 0.865033, 0.864985, 0.864937, 0.864889, 0.864841, 0.864792, + 0.864744, 0.864696, 0.864648, 0.864600, 0.864552, 0.864503, 0.864455, 0.864407, + 0.864359, 0.864311, 0.864262, 0.864214, 0.864166, 0.864118, 0.864069, 0.864021, + 0.863973, 0.863925, 0.863876, 0.863828, 0.863780, 0.863731, 0.863683, 0.863635, + 0.863586, 0.863538, 0.863490, 0.863441, 0.863393, 0.863345, 0.863296, 0.863248, + 0.863199, 0.863151, 0.863103, 0.863054, 0.863006, 0.862957, 0.862909, 0.862860, + 0.862812, 0.862763, 0.862715, 0.862666, 0.862618, 0.862570, 0.862521, 0.862472, + 0.862424, 0.862375, 0.862327, 0.862278, 0.862230, 0.862181, 0.862133, 0.862084, + 0.862035, 0.861987, 0.861938, 0.861890, 0.861841, 0.861792, 0.861744, 0.861695, + 0.861646, 0.861598, 0.861549, 0.861500, 0.861452, 0.861403, 0.861354, 0.861306, + 0.861257, 0.861208, 0.861160, 0.861111, 0.861062, 0.861013, 0.860964, 0.860916, + 0.860867, 0.860818, 0.860769, 0.860721, 0.860672, 0.860623, 0.860574, 0.860525, + 0.860476, 0.860428, 0.860379, 0.860330, 0.860281, 0.860232, 0.860183, 0.860134, + 0.860085, 0.860036, 0.859988, 0.859939, 0.859890, 0.859841, 0.859792, 0.859743, + 0.859694, 0.859645, 0.859596, 0.859547, 0.859498, 0.859449, 0.859400, 0.859351, + 0.859302, 0.859253, 0.859204, 0.859155, 0.859106, 0.859057, 0.859007, 0.858958, + 0.858909, 0.858860, 0.858811, 0.858762, 0.858713, 0.858664, 0.858615, 0.858565, + 0.858516, 0.858467, 0.858418, 0.858369, 0.858320, 0.858270, 0.858221, 0.858172, + 0.858123, 0.858073, 0.858024, 0.857975, 0.857926, 0.857876, 0.857827, 0.857778, + 0.857729, 0.857679, 0.857630, 0.857581, 0.857531, 0.857482, 0.857433, 0.857383, + 0.857334, 0.857285, 0.857235, 0.857186, 0.857137, 0.857087, 0.857038, 0.856988, + 0.856939, 0.856890, 0.856840, 0.856791, 0.856741, 0.856692, 0.856642, 0.856593, + 0.856543, 0.856494, 0.856444, 0.856395, 0.856345, 0.856296, 0.856246, 0.856197, + 0.856147, 0.856098, 0.856048, 0.855999, 0.855949, 0.855900, 0.855850, 0.855800, + 0.855751, 0.855701, 0.855651, 0.855602, 0.855552, 0.855503, 0.855453, 0.855403, + 0.855354, 0.855304, 0.855254, 0.855205, 0.855155, 0.855105, 0.855056, 0.855006, + 0.854956, 0.854906, 0.854857, 0.854807, 0.854757, 0.854707, 0.854658, 0.854608, + 0.854558, 0.854508, 0.854458, 0.854409, 0.854359, 0.854309, 0.854259, 0.854209, + 0.854159, 0.854110, 0.854060, 0.854010, 0.853960, 0.853910, 0.853860, 0.853810, + 0.853760, 0.853710, 0.853660, 0.853611, 0.853561, 0.853511, 0.853461, 0.853411, + 0.853361, 0.853311, 0.853261, 0.853211, 0.853161, 0.853111, 0.853061, 0.853011, + 0.852961, 0.852911, 0.852861, 0.852810, 0.852760, 0.852710, 0.852660, 0.852610, + 0.852560, 0.852510, 0.852460, 0.852410, 0.852360, 0.852309, 0.852259, 0.852209, + 0.852159, 0.852109, 0.852059, 0.852008, 0.851958, 0.851908, 0.851858, 0.851808, + 0.851757, 0.851707, 0.851657, 0.851607, 0.851556, 0.851506, 0.851456, 0.851406, + 0.851355, 0.851305, 0.851255, 0.851204, 0.851154, 0.851104, 0.851053, 0.851003, + 0.850953, 0.850902, 0.850852, 0.850801, 0.850751, 0.850701, 0.850650, 0.850600, + 0.850549, 0.850499, 0.850449, 0.850398, 0.850348, 0.850297, 0.850247, 0.850196, + 0.850146, 0.850095, 0.850045, 0.849994, 0.849944, 0.849893, 0.849843, 0.849792, + 0.849742, 0.849691, 0.849641, 0.849590, 0.849540, 0.849489, 0.849438, 0.849388, + 0.849337, 0.849287, 0.849236, 0.849185, 0.849135, 0.849084, 0.849033, 0.848983, + 0.848932, 0.848881, 0.848831, 0.848780, 0.848729, 0.848679, 0.848628, 0.848577, + 0.848526, 0.848476, 0.848425, 0.848374, 0.848323, 0.848273, 0.848222, 0.848171, + 0.848120, 0.848070, 0.848019, 0.847968, 0.847917, 0.847866, 0.847815, 0.847765, + 0.847714, 0.847663, 0.847612, 0.847561, 0.847510, 0.847459, 0.847408, 0.847358, + 0.847307, 0.847256, 0.847205, 0.847154, 0.847103, 0.847052, 0.847001, 0.846950, + 0.846899, 0.846848, 0.846797, 0.846746, 0.846695, 0.846644, 0.846593, 0.846542, + 0.846491, 0.846440, 0.846389, 0.846338, 0.846287, 0.846236, 0.846185, 0.846133, + 0.846082, 0.846031, 0.845980, 0.845929, 0.845878, 0.845827, 0.845776, 0.845724, + 0.845673, 0.845622, 0.845571, 0.845520, 0.845469, 0.845417, 0.845366, 0.845315, + 0.845264, 0.845212, 0.845161, 0.845110, 0.845059, 0.845007, 0.844956, 0.844905, + 0.844854, 0.844802, 0.844751, 0.844700, 0.844648, 0.844597, 0.844546, 0.844494, + 0.844443, 0.844392, 0.844340, 0.844289, 0.844238, 0.844186, 0.844135, 0.844083, + 0.844032, 0.843980, 0.843929, 0.843878, 0.843826, 0.843775, 0.843723, 0.843672, + 0.843620, 0.843569, 0.843517, 0.843466, 0.843414, 0.843363, 0.843311, 0.843260, + 0.843208, 0.843157, 0.843105, 0.843054, 0.843002, 0.842950, 0.842899, 0.842847, + 0.842796, 0.842744, 0.842692, 0.842641, 0.842589, 0.842538, 0.842486, 0.842434, + 0.842383, 0.842331, 0.842279, 0.842228, 0.842176, 0.842124, 0.842072, 0.842021, + 0.841969, 0.841917, 0.841866, 0.841814, 0.841762, 0.841710, 0.841659, 0.841607, + 0.841555, 0.841503, 0.841451, 0.841400, 0.841348, 0.841296, 0.841244, 0.841192, + 0.841140, 0.841089, 0.841037, 0.840985, 0.840933, 0.840881, 0.840829, 0.840777, + 0.840725, 0.840673, 0.840622, 0.840570, 0.840518, 0.840466, 0.840414, 0.840362, + 0.840310, 0.840258, 0.840206, 0.840154, 0.840102, 0.840050, 0.839998, 0.839946, + 0.839894, 0.839842, 0.839790, 0.839738, 0.839686, 0.839634, 0.839581, 0.839529, + 0.839477, 0.839425, 0.839373, 0.839321, 0.839269, 0.839217, 0.839165, 0.839112, + 0.839060, 0.839008, 0.838956, 0.838904, 0.838852, 0.838799, 0.838747, 0.838695, + 0.838643, 0.838591, 0.838538, 0.838486, 0.838434, 0.838382, 0.838329, 0.838277, + 0.838225, 0.838172, 0.838120, 0.838068, 0.838015, 0.837963, 0.837911, 0.837859, + 0.837806, 0.837754, 0.837701, 0.837649, 0.837597, 0.837544, 0.837492, 0.837440, + 0.837387, 0.837335, 0.837282, 0.837230, 0.837178, 0.837125, 0.837073, 0.837020, + 0.836968, 0.836915, 0.836863, 0.836810, 0.836758, 0.836705, 0.836653, 0.836600, + 0.836548, 0.836495, 0.836443, 0.836390, 0.836338, 0.836285, 0.836232, 0.836180, + 0.836127, 0.836075, 0.836022, 0.835969, 0.835917, 0.835864, 0.835812, 0.835759, + 0.835706, 0.835654, 0.835601, 0.835548, 0.835496, 0.835443, 0.835390, 0.835338, + 0.835285, 0.835232, 0.835179, 0.835127, 0.835074, 0.835021, 0.834968, 0.834916, + 0.834863, 0.834810, 0.834757, 0.834705, 0.834652, 0.834599, 0.834546, 0.834493, + 0.834440, 0.834388, 0.834335, 0.834282, 0.834229, 0.834176, 0.834123, 0.834070, + 0.834018, 0.833965, 0.833912, 0.833859, 0.833806, 0.833753, 0.833700, 0.833647, + 0.833594, 0.833541, 0.833488, 0.833435, 0.833382, 0.833329, 0.833276, 0.833223, + 0.833170, 0.833117, 0.833064, 0.833011, 0.832958, 0.832905, 0.832852, 0.832799, + 0.832746, 0.832693, 0.832640, 0.832586, 0.832533, 0.832480, 0.832427, 0.832374, + 0.832321, 0.832268, 0.832215, 0.832161, 0.832108, 0.832055, 0.832002, 0.831949, + 0.831895, 0.831842, 0.831789, 0.831736, 0.831683, 0.831629, 0.831576, 0.831523, + 0.831470, 0.831416, 0.831363, 0.831310, 0.831257, 0.831203, 0.831150, 0.831097, + 0.831043, 0.830990, 0.830937, 0.830883, 0.830830, 0.830777, 0.830723, 0.830670, + 0.830616, 0.830563, 0.830510, 0.830456, 0.830403, 0.830349, 0.830296, 0.830243, + 0.830189, 0.830136, 0.830082, 0.830029, 0.829975, 0.829922, 0.829868, 0.829815, + 0.829761, 0.829708, 0.829654, 0.829601, 0.829547, 0.829494, 0.829440, 0.829386, + 0.829333, 0.829279, 0.829226, 0.829172, 0.829119, 0.829065, 0.829011, 0.828958, + 0.828904, 0.828851, 0.828797, 0.828743, 0.828690, 0.828636, 0.828582, 0.828529, + 0.828475, 0.828421, 0.828367, 0.828314, 0.828260, 0.828206, 0.828153, 0.828099, + 0.828045, 0.827991, 0.827938, 0.827884, 0.827830, 0.827776, 0.827722, 0.827669, + 0.827615, 0.827561, 0.827507, 0.827453, 0.827399, 0.827346, 0.827292, 0.827238, + 0.827184, 0.827130, 0.827076, 0.827022, 0.826968, 0.826915, 0.826861, 0.826807, + 0.826753, 0.826699, 0.826645, 0.826591, 0.826537, 0.826483, 0.826429, 0.826375, + 0.826321, 0.826267, 0.826213, 0.826159, 0.826105, 0.826051, 0.825997, 0.825943, + 0.825889, 0.825835, 0.825781, 0.825727, 0.825673, 0.825618, 0.825564, 0.825510, + 0.825456, 0.825402, 0.825348, 0.825294, 0.825240, 0.825185, 0.825131, 0.825077, + 0.825023, 0.824969, 0.824915, 0.824860, 0.824806, 0.824752, 0.824698, 0.824644, + 0.824589, 0.824535, 0.824481, 0.824427, 0.824372, 0.824318, 0.824264, 0.824209, + 0.824155, 0.824101, 0.824047, 0.823992, 0.823938, 0.823884, 0.823829, 0.823775, + 0.823721, 0.823666, 0.823612, 0.823557, 0.823503, 0.823449, 0.823394, 0.823340, + 0.823285, 0.823231, 0.823177, 0.823122, 0.823068, 0.823013, 0.822959, 0.822904, + 0.822850, 0.822795, 0.822741, 0.822686, 0.822632, 0.822577, 0.822523, 0.822468, + 0.822414, 0.822359, 0.822305, 0.822250, 0.822195, 0.822141, 0.822086, 0.822032, + 0.821977, 0.821922, 0.821868, 0.821813, 0.821759, 0.821704, 0.821649, 0.821595, + 0.821540, 0.821485, 0.821431, 0.821376, 0.821321, 0.821267, 0.821212, 0.821157, + 0.821102, 0.821048, 0.820993, 0.820938, 0.820884, 0.820829, 0.820774, 0.820719, + 0.820664, 0.820610, 0.820555, 0.820500, 0.820445, 0.820390, 0.820336, 0.820281, + 0.820226, 0.820171, 0.820116, 0.820061, 0.820007, 0.819952, 0.819897, 0.819842, + 0.819787, 0.819732, 0.819677, 0.819622, 0.819567, 0.819512, 0.819457, 0.819402, + 0.819348, 0.819293, 0.819238, 0.819183, 0.819128, 0.819073, 0.819018, 0.818963, + 0.818908, 0.818853, 0.818798, 0.818742, 0.818687, 0.818632, 0.818577, 0.818522, + 0.818467, 0.818412, 0.818357, 0.818302, 0.818247, 0.818192, 0.818137, 0.818081, + 0.818026, 0.817971, 0.817916, 0.817861, 0.817806, 0.817750, 0.817695, 0.817640, + 0.817585, 0.817530, 0.817474, 0.817419, 0.817364, 0.817309, 0.817253, 0.817198, + 0.817143, 0.817088, 0.817032, 0.816977, 0.816922, 0.816867, 0.816811, 0.816756, + 0.816701, 0.816645, 0.816590, 0.816535, 0.816479, 0.816424, 0.816368, 0.816313, + 0.816258, 0.816202, 0.816147, 0.816092, 0.816036, 0.815981, 0.815925, 0.815870, + 0.815814, 0.815759, 0.815704, 0.815648, 0.815593, 0.815537, 0.815482, 0.815426, + 0.815371, 0.815315, 0.815260, 0.815204, 0.815149, 0.815093, 0.815037, 0.814982, + 0.814926, 0.814871, 0.814815, 0.814760, 0.814704, 0.814648, 0.814593, 0.814537, + 0.814482, 0.814426, 0.814370, 0.814315, 0.814259, 0.814203, 0.814148, 0.814092, + 0.814036, 0.813981, 0.813925, 0.813869, 0.813814, 0.813758, 0.813702, 0.813646, + 0.813591, 0.813535, 0.813479, 0.813423, 0.813368, 0.813312, 0.813256, 0.813200, + 0.813144, 0.813089, 0.813033, 0.812977, 0.812921, 0.812865, 0.812809, 0.812754, + 0.812698, 0.812642, 0.812586, 0.812530, 0.812474, 0.812418, 0.812362, 0.812307, + 0.812251, 0.812195, 0.812139, 0.812083, 0.812027, 0.811971, 0.811915, 0.811859, + 0.811803, 0.811747, 0.811691, 0.811635, 0.811579, 0.811523, 0.811467, 0.811411, + 0.811355, 0.811299, 0.811243, 0.811187, 0.811131, 0.811075, 0.811018, 0.810962, + 0.810906, 0.810850, 0.810794, 0.810738, 0.810682, 0.810626, 0.810570, 0.810513, + 0.810457, 0.810401, 0.810345, 0.810289, 0.810232, 0.810176, 0.810120, 0.810064, + 0.810008, 0.809951, 0.809895, 0.809839, 0.809783, 0.809726, 0.809670, 0.809614, + 0.809558, 0.809501, 0.809445, 0.809389, 0.809332, 0.809276, 0.809220, 0.809164, + 0.809107, 0.809051, 0.808994, 0.808938, 0.808882, 0.808825, 0.808769, 0.808713, + 0.808656, 0.808600, 0.808543, 0.808487, 0.808430, 0.808374, 0.808318, 0.808261, + 0.808205, 0.808148, 0.808092, 0.808035, 0.807979, 0.807922, 0.807866, 0.807809, + 0.807753, 0.807696, 0.807640, 0.807583, 0.807527, 0.807470, 0.807414, 0.807357, + 0.807300, 0.807244, 0.807187, 0.807131, 0.807074, 0.807017, 0.806961, 0.806904, + 0.806848, 0.806791, 0.806734, 0.806678, 0.806621, 0.806564, 0.806508, 0.806451, + 0.806394, 0.806338, 0.806281, 0.806224, 0.806167, 0.806111, 0.806054, 0.805997, + 0.805940, 0.805884, 0.805827, 0.805770, 0.805713, 0.805656, 0.805600, 0.805543, + 0.805486, 0.805429, 0.805372, 0.805316, 0.805259, 0.805202, 0.805145, 0.805088, + 0.805031, 0.804974, 0.804918, 0.804861, 0.804804, 0.804747, 0.804690, 0.804633, + 0.804576, 0.804519, 0.804462, 0.804405, 0.804348, 0.804291, 0.804234, 0.804177, + 0.804120, 0.804063, 0.804006, 0.803949, 0.803892, 0.803835, 0.803778, 0.803721, + 0.803664, 0.803607, 0.803550, 0.803493, 0.803436, 0.803379, 0.803322, 0.803265, + 0.803208, 0.803150, 0.803093, 0.803036, 0.802979, 0.802922, 0.802865, 0.802808, + 0.802750, 0.802693, 0.802636, 0.802579, 0.802522, 0.802464, 0.802407, 0.802350, + 0.802293, 0.802236, 0.802178, 0.802121, 0.802064, 0.802007, 0.801949, 0.801892, + 0.801835, 0.801777, 0.801720, 0.801663, 0.801606, 0.801548, 0.801491, 0.801434, + 0.801376, 0.801319, 0.801261, 0.801204, 0.801147, 0.801089, 0.801032, 0.800975, + 0.800917, 0.800860, 0.800802, 0.800745, 0.800687, 0.800630, 0.800573, 0.800515, + 0.800458, 0.800400, 0.800343, 0.800285, 0.800228, 0.800170, 0.800113, 0.800055, + 0.799998, 0.799940, 0.799883, 0.799825, 0.799768, 0.799710, 0.799652, 0.799595, + 0.799537, 0.799480, 0.799422, 0.799365, 0.799307, 0.799249, 0.799192, 0.799134, + 0.799076, 0.799019, 0.798961, 0.798903, 0.798846, 0.798788, 0.798730, 0.798673, + 0.798615, 0.798557, 0.798500, 0.798442, 0.798384, 0.798326, 0.798269, 0.798211, + 0.798153, 0.798095, 0.798038, 0.797980, 0.797922, 0.797864, 0.797806, 0.797749, + 0.797691, 0.797633, 0.797575, 0.797517, 0.797459, 0.797402, 0.797344, 0.797286, + 0.797228, 0.797170, 0.797112, 0.797054, 0.796996, 0.796939, 0.796881, 0.796823, + 0.796765, 0.796707, 0.796649, 0.796591, 0.796533, 0.796475, 0.796417, 0.796359, + 0.796301, 0.796243, 0.796185, 0.796127, 0.796069, 0.796011, 0.795953, 0.795895, + 0.795837, 0.795779, 0.795721, 0.795663, 0.795605, 0.795547, 0.795488, 0.795430, + 0.795372, 0.795314, 0.795256, 0.795198, 0.795140, 0.795082, 0.795023, 0.794965, + 0.794907, 0.794849, 0.794791, 0.794733, 0.794674, 0.794616, 0.794558, 0.794500, + 0.794442, 0.794383, 0.794325, 0.794267, 0.794209, 0.794150, 0.794092, 0.794034, + 0.793975, 0.793917, 0.793859, 0.793801, 0.793742, 0.793684, 0.793626, 0.793567, + 0.793509, 0.793451, 0.793392, 0.793334, 0.793276, 0.793217, 0.793159, 0.793100, + 0.793042, 0.792984, 0.792925, 0.792867, 0.792808, 0.792750, 0.792691, 0.792633, + 0.792575, 0.792516, 0.792458, 0.792399, 0.792341, 0.792282, 0.792224, 0.792165, + 0.792107, 0.792048, 0.791990, 0.791931, 0.791872, 0.791814, 0.791755, 0.791697, + 0.791638, 0.791580, 0.791521, 0.791462, 0.791404, 0.791345, 0.791287, 0.791228, + 0.791169, 0.791111, 0.791052, 0.790993, 0.790935, 0.790876, 0.790817, 0.790759, + 0.790700, 0.790641, 0.790583, 0.790524, 0.790465, 0.790406, 0.790348, 0.790289, + 0.790230, 0.790171, 0.790113, 0.790054, 0.789995, 0.789936, 0.789878, 0.789819, + 0.789760, 0.789701, 0.789642, 0.789584, 0.789525, 0.789466, 0.789407, 0.789348, + 0.789289, 0.789230, 0.789172, 0.789113, 0.789054, 0.788995, 0.788936, 0.788877, + 0.788818, 0.788759, 0.788700, 0.788641, 0.788582, 0.788523, 0.788464, 0.788405, + 0.788346, 0.788287, 0.788228, 0.788169, 0.788110, 0.788051, 0.787992, 0.787933, + 0.787874, 0.787815, 0.787756, 0.787697, 0.787638, 0.787579, 0.787520, 0.787461, + 0.787402, 0.787343, 0.787284, 0.787224, 0.787165, 0.787106, 0.787047, 0.786988, + 0.786929, 0.786870, 0.786810, 0.786751, 0.786692, 0.786633, 0.786574, 0.786514, + 0.786455, 0.786396, 0.786337, 0.786278, 0.786218, 0.786159, 0.786100, 0.786041, + 0.785981, 0.785922, 0.785863, 0.785803, 0.785744, 0.785685, 0.785625, 0.785566, + 0.785507, 0.785447, 0.785388, 0.785329, 0.785269, 0.785210, 0.785151, 0.785091, + 0.785032, 0.784973, 0.784913, 0.784854, 0.784794, 0.784735, 0.784675, 0.784616, + 0.784557, 0.784497, 0.784438, 0.784378, 0.784319, 0.784259, 0.784200, 0.784140, + 0.784081, 0.784021, 0.783962, 0.783902, 0.783843, 0.783783, 0.783724, 0.783664, + 0.783605, 0.783545, 0.783485, 0.783426, 0.783366, 0.783307, 0.783247, 0.783187, + 0.783128, 0.783068, 0.783009, 0.782949, 0.782889, 0.782830, 0.782770, 0.782710, + 0.782651, 0.782591, 0.782531, 0.782472, 0.782412, 0.782352, 0.782292, 0.782233, + 0.782173, 0.782113, 0.782053, 0.781994, 0.781934, 0.781874, 0.781814, 0.781755, + 0.781695, 0.781635, 0.781575, 0.781515, 0.781456, 0.781396, 0.781336, 0.781276, + 0.781216, 0.781156, 0.781097, 0.781037, 0.780977, 0.780917, 0.780857, 0.780797, + 0.780737, 0.780677, 0.780617, 0.780557, 0.780498, 0.780438, 0.780378, 0.780318, + 0.780258, 0.780198, 0.780138, 0.780078, 0.780018, 0.779958, 0.779898, 0.779838, + 0.779778, 0.779718, 0.779658, 0.779598, 0.779538, 0.779478, 0.779418, 0.779357, + 0.779297, 0.779237, 0.779177, 0.779117, 0.779057, 0.778997, 0.778937, 0.778877, + 0.778817, 0.778756, 0.778696, 0.778636, 0.778576, 0.778516, 0.778456, 0.778395, + 0.778335, 0.778275, 0.778215, 0.778155, 0.778094, 0.778034, 0.777974, 0.777914, + 0.777853, 0.777793, 0.777733, 0.777673, 0.777612, 0.777552, 0.777492, 0.777431, + 0.777371, 0.777311, 0.777251, 0.777190, 0.777130, 0.777070, 0.777009, 0.776949, + 0.776888, 0.776828, 0.776768, 0.776707, 0.776647, 0.776587, 0.776526, 0.776466, + 0.776405, 0.776345, 0.776284, 0.776224, 0.776164, 0.776103, 0.776043, 0.775982, + 0.775922, 0.775861, 0.775801, 0.775740, 0.775680, 0.775619, 0.775559, 0.775498, + 0.775438, 0.775377, 0.775317, 0.775256, 0.775195, 0.775135, 0.775074, 0.775014, + 0.774953, 0.774893, 0.774832, 0.774771, 0.774711, 0.774650, 0.774589, 0.774529, + 0.774468, 0.774407, 0.774347, 0.774286, 0.774225, 0.774165, 0.774104, 0.774043, + 0.773983, 0.773922, 0.773861, 0.773801, 0.773740, 0.773679, 0.773618, 0.773558, + 0.773497, 0.773436, 0.773375, 0.773314, 0.773254, 0.773193, 0.773132, 0.773071, + 0.773010, 0.772950, 0.772889, 0.772828, 0.772767, 0.772706, 0.772645, 0.772584, + 0.772524, 0.772463, 0.772402, 0.772341, 0.772280, 0.772219, 0.772158, 0.772097, + 0.772036, 0.771975, 0.771915, 0.771854, 0.771793, 0.771732, 0.771671, 0.771610, + 0.771549, 0.771488, 0.771427, 0.771366, 0.771305, 0.771244, 0.771183, 0.771122, + 0.771061, 0.770999, 0.770938, 0.770877, 0.770816, 0.770755, 0.770694, 0.770633, + 0.770572, 0.770511, 0.770450, 0.770389, 0.770327, 0.770266, 0.770205, 0.770144, + 0.770083, 0.770022, 0.769961, 0.769899, 0.769838, 0.769777, 0.769716, 0.769655, + 0.769593, 0.769532, 0.769471, 0.769410, 0.769348, 0.769287, 0.769226, 0.769165, + 0.769103, 0.769042, 0.768981, 0.768919, 0.768858, 0.768797, 0.768736, 0.768674, + 0.768613, 0.768552, 0.768490, 0.768429, 0.768368, 0.768306, 0.768245, 0.768183, + 0.768122, 0.768061, 0.767999, 0.767938, 0.767876, 0.767815, 0.767754, 0.767692, + 0.767631, 0.767569, 0.767508, 0.767446, 0.767385, 0.767323, 0.767262, 0.767200, + 0.767139, 0.767077, 0.767016, 0.766954, 0.766893, 0.766831, 0.766770, 0.766708, + 0.766647, 0.766585, 0.766524, 0.766462, 0.766400, 0.766339, 0.766277, 0.766216, + 0.766154, 0.766092, 0.766031, 0.765969, 0.765907, 0.765846, 0.765784, 0.765723, + 0.765661, 0.765599, 0.765538, 0.765476, 0.765414, 0.765352, 0.765291, 0.765229, + 0.765167, 0.765106, 0.765044, 0.764982, 0.764920, 0.764859, 0.764797, 0.764735, + 0.764673, 0.764611, 0.764550, 0.764488, 0.764426, 0.764364, 0.764302, 0.764241, + 0.764179, 0.764117, 0.764055, 0.763993, 0.763931, 0.763869, 0.763808, 0.763746, + 0.763684, 0.763622, 0.763560, 0.763498, 0.763436, 0.763374, 0.763312, 0.763250, + 0.763188, 0.763126, 0.763065, 0.763003, 0.762941, 0.762879, 0.762817, 0.762755, + 0.762693, 0.762631, 0.762569, 0.762507, 0.762444, 0.762382, 0.762320, 0.762258, + 0.762196, 0.762134, 0.762072, 0.762010, 0.761948, 0.761886, 0.761824, 0.761762, + 0.761700, 0.761637, 0.761575, 0.761513, 0.761451, 0.761389, 0.761327, 0.761265, + 0.761202, 0.761140, 0.761078, 0.761016, 0.760954, 0.760891, 0.760829, 0.760767, + 0.760705, 0.760643, 0.760580, 0.760518, 0.760456, 0.760394, 0.760331, 0.760269, + 0.760207, 0.760144, 0.760082, 0.760020, 0.759957, 0.759895, 0.759833, 0.759771, + 0.759708, 0.759646, 0.759583, 0.759521, 0.759459, 0.759396, 0.759334, 0.759272, + 0.759209, 0.759147, 0.759084, 0.759022, 0.758960, 0.758897, 0.758835, 0.758772, + 0.758710, 0.758647, 0.758585, 0.758522, 0.758460, 0.758397, 0.758335, 0.758272, + 0.758210, 0.758147, 0.758085, 0.758022, 0.757960, 0.757897, 0.757835, 0.757772, + 0.757710, 0.757647, 0.757584, 0.757522, 0.757459, 0.757397, 0.757334, 0.757271, + 0.757209, 0.757146, 0.757084, 0.757021, 0.756958, 0.756896, 0.756833, 0.756770, + 0.756708, 0.756645, 0.756582, 0.756520, 0.756457, 0.756394, 0.756331, 0.756269, + 0.756206, 0.756143, 0.756081, 0.756018, 0.755955, 0.755892, 0.755829, 0.755767, + 0.755704, 0.755641, 0.755578, 0.755516, 0.755453, 0.755390, 0.755327, 0.755264, + 0.755201, 0.755139, 0.755076, 0.755013, 0.754950, 0.754887, 0.754824, 0.754761, + 0.754698, 0.754636, 0.754573, 0.754510, 0.754447, 0.754384, 0.754321, 0.754258, + 0.754195, 0.754132, 0.754069, 0.754006, 0.753943, 0.753880, 0.753817, 0.753754, + 0.753691, 0.753628, 0.753565, 0.753502, 0.753439, 0.753376, 0.753313, 0.753250, + 0.753187, 0.753124, 0.753061, 0.752998, 0.752934, 0.752871, 0.752808, 0.752745, + 0.752682, 0.752619, 0.752556, 0.752493, 0.752429, 0.752366, 0.752303, 0.752240, + 0.752177, 0.752114, 0.752050, 0.751987, 0.751924, 0.751861, 0.751798, 0.751734, + 0.751671, 0.751608, 0.751545, 0.751481, 0.751418, 0.751355, 0.751292, 0.751228, + 0.751165, 0.751102, 0.751039, 0.750975, 0.750912, 0.750849, 0.750785, 0.750722, + 0.750659, 0.750595, 0.750532, 0.750469, 0.750405, 0.750342, 0.750278, 0.750215, + 0.750152, 0.750088, 0.750025, 0.749961, 0.749898, 0.749835, 0.749771, 0.749708, + 0.749644, 0.749581, 0.749517, 0.749454, 0.749390, 0.749327, 0.749263, 0.749200, + 0.749136, 0.749073, 0.749009, 0.748946, 0.748882, 0.748819, 0.748755, 0.748692, + 0.748628, 0.748565, 0.748501, 0.748437, 0.748374, 0.748310, 0.748247, 0.748183, + 0.748119, 0.748056, 0.747992, 0.747929, 0.747865, 0.747801, 0.747738, 0.747674, + 0.747610, 0.747547, 0.747483, 0.747419, 0.747355, 0.747292, 0.747228, 0.747164, + 0.747101, 0.747037, 0.746973, 0.746909, 0.746846, 0.746782, 0.746718, 0.746654, + 0.746591, 0.746527, 0.746463, 0.746399, 0.746335, 0.746272, 0.746208, 0.746144, + 0.746080, 0.746016, 0.745952, 0.745889, 0.745825, 0.745761, 0.745697, 0.745633, + 0.745569, 0.745505, 0.745441, 0.745377, 0.745314, 0.745250, 0.745186, 0.745122, + 0.745058, 0.744994, 0.744930, 0.744866, 0.744802, 0.744738, 0.744674, 0.744610, + 0.744546, 0.744482, 0.744418, 0.744354, 0.744290, 0.744226, 0.744162, 0.744098, + 0.744034, 0.743970, 0.743906, 0.743842, 0.743777, 0.743713, 0.743649, 0.743585, + 0.743521, 0.743457, 0.743393, 0.743329, 0.743265, 0.743200, 0.743136, 0.743072, + 0.743008, 0.742944, 0.742880, 0.742815, 0.742751, 0.742687, 0.742623, 0.742559, + 0.742494, 0.742430, 0.742366, 0.742302, 0.742237, 0.742173, 0.742109, 0.742045, + 0.741980, 0.741916, 0.741852, 0.741788, 0.741723, 0.741659, 0.741595, 0.741530, + 0.741466, 0.741402, 0.741337, 0.741273, 0.741209, 0.741144, 0.741080, 0.741015, + 0.740951, 0.740887, 0.740822, 0.740758, 0.740694, 0.740629, 0.740565, 0.740500, + 0.740436, 0.740371, 0.740307, 0.740242, 0.740178, 0.740114, 0.740049, 0.739985, + 0.739920, 0.739856, 0.739791, 0.739727, 0.739662, 0.739598, 0.739533, 0.739468, + 0.739404, 0.739339, 0.739275, 0.739210, 0.739146, 0.739081, 0.739017, 0.738952, + 0.738887, 0.738823, 0.738758, 0.738693, 0.738629, 0.738564, 0.738500, 0.738435, + 0.738370, 0.738306, 0.738241, 0.738176, 0.738112, 0.738047, 0.737982, 0.737918, + 0.737853, 0.737788, 0.737723, 0.737659, 0.737594, 0.737529, 0.737464, 0.737400, + 0.737335, 0.737270, 0.737205, 0.737141, 0.737076, 0.737011, 0.736946, 0.736881, + 0.736817, 0.736752, 0.736687, 0.736622, 0.736557, 0.736492, 0.736428, 0.736363, + 0.736298, 0.736233, 0.736168, 0.736103, 0.736038, 0.735973, 0.735908, 0.735844, + 0.735779, 0.735714, 0.735649, 0.735584, 0.735519, 0.735454, 0.735389, 0.735324, + 0.735259, 0.735194, 0.735129, 0.735064, 0.734999, 0.734934, 0.734869, 0.734804, + 0.734739, 0.734674, 0.734609, 0.734544, 0.734479, 0.734414, 0.734349, 0.734283, + 0.734218, 0.734153, 0.734088, 0.734023, 0.733958, 0.733893, 0.733828, 0.733763, + 0.733697, 0.733632, 0.733567, 0.733502, 0.733437, 0.733372, 0.733306, 0.733241, + 0.733176, 0.733111, 0.733046, 0.732980, 0.732915, 0.732850, 0.732785, 0.732720, + 0.732654, 0.732589, 0.732524, 0.732458, 0.732393, 0.732328, 0.732263, 0.732197, + 0.732132, 0.732067, 0.732001, 0.731936, 0.731871, 0.731805, 0.731740, 0.731675, + 0.731609, 0.731544, 0.731479, 0.731413, 0.731348, 0.731282, 0.731217, 0.731152, + 0.731086, 0.731021, 0.730955, 0.730890, 0.730825, 0.730759, 0.730694, 0.730628, + 0.730563, 0.730497, 0.730432, 0.730366, 0.730301, 0.730235, 0.730170, 0.730104, + 0.730039, 0.729973, 0.729908, 0.729842, 0.729777, 0.729711, 0.729646, 0.729580, + 0.729514, 0.729449, 0.729383, 0.729318, 0.729252, 0.729186, 0.729121, 0.729055, + 0.728990, 0.728924, 0.728858, 0.728793, 0.728727, 0.728661, 0.728596, 0.728530, + 0.728464, 0.728399, 0.728333, 0.728267, 0.728202, 0.728136, 0.728070, 0.728004, + 0.727939, 0.727873, 0.727807, 0.727741, 0.727676, 0.727610, 0.727544, 0.727478, + 0.727413, 0.727347, 0.727281, 0.727215, 0.727149, 0.727084, 0.727018, 0.726952, + 0.726886, 0.726820, 0.726754, 0.726689, 0.726623, 0.726557, 0.726491, 0.726425, + 0.726359, 0.726293, 0.726227, 0.726161, 0.726095, 0.726030, 0.725964, 0.725898, + 0.725832, 0.725766, 0.725700, 0.725634, 0.725568, 0.725502, 0.725436, 0.725370, + 0.725304, 0.725238, 0.725172, 0.725106, 0.725040, 0.724974, 0.724908, 0.724842, + 0.724776, 0.724710, 0.724644, 0.724578, 0.724511, 0.724445, 0.724379, 0.724313, + 0.724247, 0.724181, 0.724115, 0.724049, 0.723983, 0.723916, 0.723850, 0.723784, + 0.723718, 0.723652, 0.723586, 0.723520, 0.723453, 0.723387, 0.723321, 0.723255, + 0.723188, 0.723122, 0.723056, 0.722990, 0.722924, 0.722857, 0.722791, 0.722725, + 0.722659, 0.722592, 0.722526, 0.722460, 0.722393, 0.722327, 0.722261, 0.722194, + 0.722128, 0.722062, 0.721996, 0.721929, 0.721863, 0.721797, 0.721730, 0.721664, + 0.721597, 0.721531, 0.721465, 0.721398, 0.721332, 0.721265, 0.721199, 0.721133, + 0.721066, 0.721000, 0.720933, 0.720867, 0.720800, 0.720734, 0.720668, 0.720601, + 0.720535, 0.720468, 0.720402, 0.720335, 0.720269, 0.720202, 0.720136, 0.720069, + 0.720003, 0.719936, 0.719869, 0.719803, 0.719736, 0.719670, 0.719603, 0.719537, + 0.719470, 0.719403, 0.719337, 0.719270, 0.719204, 0.719137, 0.719070, 0.719004, + 0.718937, 0.718870, 0.718804, 0.718737, 0.718670, 0.718604, 0.718537, 0.718471, + 0.718404, 0.718337, 0.718270, 0.718204, 0.718137, 0.718070, 0.718004, 0.717937, + 0.717870, 0.717803, 0.717737, 0.717670, 0.717603, 0.717536, 0.717469, 0.717403, + 0.717336, 0.717269, 0.717202, 0.717135, 0.717069, 0.717002, 0.716935, 0.716868, + 0.716801, 0.716734, 0.716668, 0.716601, 0.716534, 0.716467, 0.716400, 0.716333, + 0.716266, 0.716199, 0.716132, 0.716066, 0.715999, 0.715932, 0.715865, 0.715798, + 0.715731, 0.715664, 0.715597, 0.715530, 0.715463, 0.715396, 0.715329, 0.715262, + 0.715195, 0.715128, 0.715061, 0.714994, 0.714927, 0.714860, 0.714793, 0.714726, + 0.714659, 0.714592, 0.714525, 0.714457, 0.714390, 0.714323, 0.714256, 0.714189, + 0.714122, 0.714055, 0.713988, 0.713921, 0.713853, 0.713786, 0.713719, 0.713652, + 0.713585, 0.713518, 0.713451, 0.713383, 0.713316, 0.713249, 0.713182, 0.713115, + 0.713047, 0.712980, 0.712913, 0.712846, 0.712778, 0.712711, 0.712644, 0.712577, + 0.712509, 0.712442, 0.712375, 0.712308, 0.712240, 0.712173, 0.712106, 0.712038, + 0.711971, 0.711904, 0.711836, 0.711769, 0.711702, 0.711634, 0.711567, 0.711500, + 0.711432, 0.711365, 0.711297, 0.711230, 0.711163, 0.711095, 0.711028, 0.710960, + 0.710893, 0.710826, 0.710758, 0.710691, 0.710623, 0.710556, 0.710488, 0.710421, + 0.710353, 0.710286, 0.710218, 0.710151, 0.710083, 0.710016, 0.709948, 0.709881, + 0.709813, 0.709746, 0.709678, 0.709611, 0.709543, 0.709476, 0.709408, 0.709340, + 0.709273, 0.709205, 0.709138, 0.709070, 0.709002, 0.708935, 0.708867, 0.708800, + 0.708732, 0.708664, 0.708597, 0.708529, 0.708461, 0.708394, 0.708326, 0.708258, + 0.708191, 0.708123, 0.708055, 0.707988, 0.707920, 0.707852, 0.707784, 0.707717, + 0.707649, 0.707581, 0.707513, 0.707446, 0.707378, 0.707310, 0.707242, 0.707175, + 0.707107, 0.707039, 0.706971, 0.706903, 0.706836, 0.706768, 0.706700, 0.706632, + 0.706564, 0.706496, 0.706429, 0.706361, 0.706293, 0.706225, 0.706157, 0.706089, + 0.706021, 0.705953, 0.705885, 0.705818, 0.705750, 0.705682, 0.705614, 0.705546, + 0.705478, 0.705410, 0.705342, 0.705274, 0.705206, 0.705138, 0.705070, 0.705002, + 0.704934, 0.704866, 0.704798, 0.704730, 0.704662, 0.704594, 0.704526, 0.704458, + 0.704390, 0.704322, 0.704254, 0.704186, 0.704118, 0.704050, 0.703981, 0.703913, + 0.703845, 0.703777, 0.703709, 0.703641, 0.703573, 0.703505, 0.703436, 0.703368, + 0.703300, 0.703232, 0.703164, 0.703096, 0.703028, 0.702959, 0.702891, 0.702823, + 0.702755, 0.702687, 0.702618, 0.702550, 0.702482, 0.702414, 0.702345, 0.702277, + 0.702209, 0.702141, 0.702072, 0.702004, 0.701936, 0.701868, 0.701799, 0.701731, + 0.701663, 0.701594, 0.701526, 0.701458, 0.701389, 0.701321, 0.701253, 0.701184, + 0.701116, 0.701048, 0.700979, 0.700911, 0.700842, 0.700774, 0.700706, 0.700637, + 0.700569, 0.700500, 0.700432, 0.700364, 0.700295, 0.700227, 0.700158, 0.700090, + 0.700021, 0.699953, 0.699884, 0.699816, 0.699747, 0.699679, 0.699610, 0.699542, + 0.699473, 0.699405, 0.699336, 0.699268, 0.699199, 0.699131, 0.699062, 0.698994, + 0.698925, 0.698856, 0.698788, 0.698719, 0.698651, 0.698582, 0.698513, 0.698445, + 0.698376, 0.698308, 0.698239, 0.698170, 0.698102, 0.698033, 0.697964, 0.697896, + 0.697827, 0.697758, 0.697690, 0.697621, 0.697552, 0.697484, 0.697415, 0.697346, + 0.697277, 0.697209, 0.697140, 0.697071, 0.697003, 0.696934, 0.696865, 0.696796, + 0.696728, 0.696659, 0.696590, 0.696521, 0.696452, 0.696384, 0.696315, 0.696246, + 0.696177, 0.696108, 0.696039, 0.695971, 0.695902, 0.695833, 0.695764, 0.695695, + 0.695626, 0.695557, 0.695489, 0.695420, 0.695351, 0.695282, 0.695213, 0.695144, + 0.695075, 0.695006, 0.694937, 0.694868, 0.694799, 0.694730, 0.694661, 0.694592, + 0.694524, 0.694454, 0.694386, 0.694317, 0.694248, 0.694179, 0.694109, 0.694040, + 0.693971, 0.693902, 0.693833, 0.693764, 0.693695, 0.693626, 0.693557, 0.693488, + 0.693419, 0.693350, 0.693281, 0.693212, 0.693143, 0.693074, 0.693004, 0.692935, + 0.692866, 0.692797, 0.692728, 0.692659, 0.692590, 0.692520, 0.692451, 0.692382, + 0.692313, 0.692244, 0.692175, 0.692105, 0.692036, 0.691967, 0.691898, 0.691828, + 0.691759, 0.691690, 0.691621, 0.691552, 0.691482, 0.691413, 0.691344, 0.691274, + 0.691205, 0.691136, 0.691067, 0.690997, 0.690928, 0.690859, 0.690789, 0.690720, + 0.690651, 0.690581, 0.690512, 0.690443, 0.690373, 0.690304, 0.690235, 0.690165, + 0.690096, 0.690026, 0.689957, 0.689888, 0.689818, 0.689749, 0.689679, 0.689610, + 0.689541, 0.689471, 0.689402, 0.689332, 0.689263, 0.689193, 0.689124, 0.689054, + 0.688985, 0.688915, 0.688846, 0.688776, 0.688707, 0.688637, 0.688568, 0.688498, + 0.688429, 0.688359, 0.688290, 0.688220, 0.688151, 0.688081, 0.688011, 0.687942, + 0.687872, 0.687803, 0.687733, 0.687663, 0.687594, 0.687524, 0.687455, 0.687385, + 0.687315, 0.687246, 0.687176, 0.687106, 0.687037, 0.686967, 0.686897, 0.686828, + 0.686758, 0.686688, 0.686619, 0.686549, 0.686479, 0.686409, 0.686340, 0.686270, + 0.686200, 0.686131, 0.686061, 0.685991, 0.685921, 0.685852, 0.685782, 0.685712, + 0.685642, 0.685572, 0.685503, 0.685433, 0.685363, 0.685293, 0.685223, 0.685153, + 0.685084, 0.685014, 0.684944, 0.684874, 0.684804, 0.684734, 0.684664, 0.684595, + 0.684525, 0.684455, 0.684385, 0.684315, 0.684245, 0.684175, 0.684105, 0.684035, + 0.683965, 0.683895, 0.683825, 0.683756, 0.683686, 0.683616, 0.683546, 0.683476, + 0.683406, 0.683336, 0.683266, 0.683196, 0.683126, 0.683056, 0.682986, 0.682916, + 0.682846, 0.682775, 0.682705, 0.682635, 0.682565, 0.682495, 0.682425, 0.682355, + 0.682285, 0.682215, 0.682145, 0.682075, 0.682005, 0.681934, 0.681864, 0.681794, + 0.681724, 0.681654, 0.681584, 0.681514, 0.681443, 0.681373, 0.681303, 0.681233, + 0.681163, 0.681093, 0.681022, 0.680952, 0.680882, 0.680812, 0.680741, 0.680671, + 0.680601, 0.680531, 0.680461, 0.680390, 0.680320, 0.680250, 0.680179, 0.680109, + 0.680039, 0.679969, 0.679898, 0.679828, 0.679758, 0.679687, 0.679617, 0.679547, + 0.679476, 0.679406, 0.679336, 0.679265, 0.679195, 0.679125, 0.679054, 0.678984, + 0.678913, 0.678843, 0.678773, 0.678702, 0.678632, 0.678561, 0.678491, 0.678420, + 0.678350, 0.678280, 0.678209, 0.678139, 0.678068, 0.677998, 0.677927, 0.677857, + 0.677786, 0.677716, 0.677645, 0.677575, 0.677504, 0.677434, 0.677363, 0.677293, + 0.677222, 0.677152, 0.677081, 0.677011, 0.676940, 0.676869, 0.676799, 0.676728, + 0.676658, 0.676587, 0.676516, 0.676446, 0.676375, 0.676305, 0.676234, 0.676163, + 0.676093, 0.676022, 0.675951, 0.675881, 0.675810, 0.675739, 0.675669, 0.675598, + 0.675527, 0.675457, 0.675386, 0.675315, 0.675245, 0.675174, 0.675103, 0.675032, + 0.674962, 0.674891, 0.674820, 0.674749, 0.674679, 0.674608, 0.674537, 0.674466, + 0.674396, 0.674325, 0.674254, 0.674183, 0.674112, 0.674042, 0.673971, 0.673900, + 0.673829, 0.673758, 0.673687, 0.673616, 0.673546, 0.673475, 0.673404, 0.673333, + 0.673262, 0.673191, 0.673120, 0.673049, 0.672978, 0.672908, 0.672837, 0.672766, + 0.672695, 0.672624, 0.672553, 0.672482, 0.672411, 0.672340, 0.672269, 0.672198, + 0.672127, 0.672056, 0.671985, 0.671914, 0.671843, 0.671772, 0.671701, 0.671630, + 0.671559, 0.671488, 0.671417, 0.671346, 0.671275, 0.671204, 0.671133, 0.671062, + 0.670990, 0.670919, 0.670848, 0.670777, 0.670706, 0.670635, 0.670564, 0.670493, + 0.670422, 0.670350, 0.670279, 0.670208, 0.670137, 0.670066, 0.669995, 0.669923, + 0.669852, 0.669781, 0.669710, 0.669639, 0.669567, 0.669496, 0.669425, 0.669354, + 0.669283, 0.669211, 0.669140, 0.669069, 0.668998, 0.668926, 0.668855, 0.668784, + 0.668712, 0.668641, 0.668570, 0.668499, 0.668427, 0.668356, 0.668285, 0.668213, + 0.668142, 0.668071, 0.667999, 0.667928, 0.667857, 0.667785, 0.667714, 0.667643, + 0.667571, 0.667500, 0.667428, 0.667357, 0.667286, 0.667214, 0.667143, 0.667071, + 0.667000, 0.666928, 0.666857, 0.666786, 0.666714, 0.666643, 0.666571, 0.666500, + 0.666428, 0.666357, 0.666285, 0.666214, 0.666142, 0.666071, 0.665999, 0.665928, + 0.665856, 0.665785, 0.665713, 0.665642, 0.665570, 0.665498, 0.665427, 0.665355, + 0.665284, 0.665212, 0.665141, 0.665069, 0.664997, 0.664926, 0.664854, 0.664783, + 0.664711, 0.664639, 0.664568, 0.664496, 0.664424, 0.664353, 0.664281, 0.664209, + 0.664138, 0.664066, 0.663994, 0.663923, 0.663851, 0.663779, 0.663708, 0.663636, + 0.663564, 0.663492, 0.663421, 0.663349, 0.663277, 0.663205, 0.663134, 0.663062, + 0.662990, 0.662918, 0.662847, 0.662775, 0.662703, 0.662631, 0.662559, 0.662488, + 0.662416, 0.662344, 0.662272, 0.662200, 0.662128, 0.662057, 0.661985, 0.661913, + 0.661841, 0.661769, 0.661697, 0.661625, 0.661553, 0.661482, 0.661410, 0.661338, + 0.661266, 0.661194, 0.661122, 0.661050, 0.660978, 0.660906, 0.660834, 0.660762, + 0.660690, 0.660618, 0.660546, 0.660474, 0.660402, 0.660330, 0.660258, 0.660186, + 0.660114, 0.660042, 0.659970, 0.659898, 0.659826, 0.659754, 0.659682, 0.659610, + 0.659538, 0.659466, 0.659394, 0.659322, 0.659250, 0.659178, 0.659105, 0.659033, + 0.658961, 0.658889, 0.658817, 0.658745, 0.658673, 0.658601, 0.658529, 0.658456, + 0.658384, 0.658312, 0.658240, 0.658168, 0.658095, 0.658023, 0.657951, 0.657879, + 0.657807, 0.657734, 0.657662, 0.657590, 0.657518, 0.657446, 0.657373, 0.657301, + 0.657229, 0.657157, 0.657084, 0.657012, 0.656940, 0.656867, 0.656795, 0.656723, + 0.656651, 0.656578, 0.656506, 0.656434, 0.656361, 0.656289, 0.656217, 0.656144, + 0.656072, 0.656000, 0.655927, 0.655855, 0.655782, 0.655710, 0.655638, 0.655565, + 0.655493, 0.655420, 0.655348, 0.655276, 0.655203, 0.655131, 0.655058, 0.654986, + 0.654913, 0.654841, 0.654769, 0.654696, 0.654624, 0.654551, 0.654479, 0.654406, + 0.654334, 0.654261, 0.654189, 0.654116, 0.654044, 0.653971, 0.653899, 0.653826, + 0.653753, 0.653681, 0.653608, 0.653536, 0.653463, 0.653391, 0.653318, 0.653245, + 0.653173, 0.653100, 0.653028, 0.652955, 0.652882, 0.652810, 0.652737, 0.652665, + 0.652592, 0.652519, 0.652447, 0.652374, 0.652301, 0.652229, 0.652156, 0.652083, + 0.652011, 0.651938, 0.651865, 0.651792, 0.651720, 0.651647, 0.651574, 0.651502, + 0.651429, 0.651356, 0.651283, 0.651211, 0.651138, 0.651065, 0.650992, 0.650919, + 0.650847, 0.650774, 0.650701, 0.650628, 0.650555, 0.650483, 0.650410, 0.650337, + 0.650264, 0.650191, 0.650119, 0.650046, 0.649973, 0.649900, 0.649827, 0.649754, + 0.649681, 0.649608, 0.649536, 0.649463, 0.649390, 0.649317, 0.649244, 0.649171, + 0.649098, 0.649025, 0.648952, 0.648879, 0.648806, 0.648733, 0.648660, 0.648587, + 0.648514, 0.648441, 0.648368, 0.648295, 0.648222, 0.648149, 0.648076, 0.648003, + 0.647930, 0.647857, 0.647784, 0.647711, 0.647638, 0.647565, 0.647492, 0.647419, + 0.647346, 0.647273, 0.647200, 0.647127, 0.647054, 0.646981, 0.646907, 0.646834, + 0.646761, 0.646688, 0.646615, 0.646542, 0.646469, 0.646396, 0.646322, 0.646249, + 0.646176, 0.646103, 0.646030, 0.645956, 0.645883, 0.645810, 0.645737, 0.645664, + 0.645590, 0.645517, 0.645444, 0.645371, 0.645298, 0.645224, 0.645151, 0.645078, + 0.645005, 0.644931, 0.644858, 0.644785, 0.644711, 0.644638, 0.644565, 0.644492, + 0.644418, 0.644345, 0.644272, 0.644198, 0.644125, 0.644052, 0.643978, 0.643905, + 0.643832, 0.643758, 0.643685, 0.643611, 0.643538, 0.643465, 0.643391, 0.643318, + 0.643245, 0.643171, 0.643098, 0.643024, 0.642951, 0.642877, 0.642804, 0.642730, + 0.642657, 0.642584, 0.642510, 0.642437, 0.642363, 0.642290, 0.642216, 0.642143, + 0.642069, 0.641996, 0.641922, 0.641849, 0.641775, 0.641702, 0.641628, 0.641555, + 0.641481, 0.641407, 0.641334, 0.641260, 0.641187, 0.641113, 0.641040, 0.640966, + 0.640892, 0.640819, 0.640745, 0.640672, 0.640598, 0.640524, 0.640451, 0.640377, + 0.640303, 0.640230, 0.640156, 0.640083, 0.640009, 0.639935, 0.639862, 0.639788, + 0.639714, 0.639640, 0.639567, 0.639493, 0.639419, 0.639346, 0.639272, 0.639198, + 0.639124, 0.639051, 0.638977, 0.638903, 0.638829, 0.638756, 0.638682, 0.638608, + 0.638534, 0.638461, 0.638387, 0.638313, 0.638239, 0.638165, 0.638092, 0.638018, + 0.637944, 0.637870, 0.637796, 0.637722, 0.637649, 0.637575, 0.637501, 0.637427, + 0.637353, 0.637279, 0.637205, 0.637131, 0.637057, 0.636984, 0.636910, 0.636836, + 0.636762, 0.636688, 0.636614, 0.636540, 0.636466, 0.636392, 0.636318, 0.636244, + 0.636170, 0.636096, 0.636022, 0.635948, 0.635874, 0.635800, 0.635726, 0.635652, + 0.635578, 0.635504, 0.635430, 0.635356, 0.635282, 0.635208, 0.635134, 0.635060, + 0.634986, 0.634912, 0.634838, 0.634764, 0.634690, 0.634616, 0.634542, 0.634467, + 0.634393, 0.634319, 0.634245, 0.634171, 0.634097, 0.634023, 0.633949, 0.633874, + 0.633800, 0.633726, 0.633652, 0.633578, 0.633504, 0.633429, 0.633355, 0.633281, + 0.633207, 0.633133, 0.633058, 0.632984, 0.632910, 0.632836, 0.632761, 0.632687, + 0.632613, 0.632539, 0.632464, 0.632390, 0.632316, 0.632242, 0.632167, 0.632093, + 0.632019, 0.631944, 0.631870, 0.631796, 0.631721, 0.631647, 0.631573, 0.631499, + 0.631424, 0.631350, 0.631275, 0.631201, 0.631127, 0.631052, 0.630978, 0.630904, + 0.630829, 0.630755, 0.630680, 0.630606, 0.630532, 0.630457, 0.630383, 0.630308, + 0.630234, 0.630159, 0.630085, 0.630011, 0.629936, 0.629862, 0.629787, 0.629713, + 0.629638, 0.629564, 0.629489, 0.629415, 0.629340, 0.629266, 0.629191, 0.629117, + 0.629042, 0.628968, 0.628893, 0.628819, 0.628744, 0.628669, 0.628595, 0.628520, + 0.628446, 0.628371, 0.628297, 0.628222, 0.628147, 0.628073, 0.627998, 0.627924, + 0.627849, 0.627774, 0.627700, 0.627625, 0.627550, 0.627476, 0.627401, 0.627326, + 0.627252, 0.627177, 0.627102, 0.627028, 0.626953, 0.626878, 0.626804, 0.626729, + 0.626654, 0.626580, 0.626505, 0.626430, 0.626355, 0.626281, 0.626206, 0.626131, + 0.626056, 0.625982, 0.625907, 0.625832, 0.625757, 0.625683, 0.625608, 0.625533, + 0.625458, 0.625383, 0.625309, 0.625234, 0.625159, 0.625084, 0.625009, 0.624934, + 0.624860, 0.624785, 0.624710, 0.624635, 0.624560, 0.624485, 0.624410, 0.624335, + 0.624260, 0.624186, 0.624111, 0.624036, 0.623961, 0.623886, 0.623811, 0.623736, + 0.623661, 0.623586, 0.623511, 0.623436, 0.623361, 0.623286, 0.623211, 0.623136, + 0.623061, 0.622986, 0.622911, 0.622836, 0.622761, 0.622686, 0.622611, 0.622536, + 0.622461, 0.622386, 0.622311, 0.622236, 0.622161, 0.622086, 0.622011, 0.621936, + 0.621861, 0.621786, 0.621711, 0.621636, 0.621560, 0.621485, 0.621410, 0.621335, + 0.621260, 0.621185, 0.621110, 0.621035, 0.620959, 0.620884, 0.620809, 0.620734, + 0.620659, 0.620584, 0.620508, 0.620433, 0.620358, 0.620283, 0.620208, 0.620132, + 0.620057, 0.619982, 0.619907, 0.619832, 0.619756, 0.619681, 0.619606, 0.619531, + 0.619455, 0.619380, 0.619305, 0.619229, 0.619154, 0.619079, 0.619004, 0.618928, + 0.618853, 0.618778, 0.618702, 0.618627, 0.618552, 0.618476, 0.618401, 0.618326, + 0.618250, 0.618175, 0.618100, 0.618024, 0.617949, 0.617873, 0.617798, 0.617723, + 0.617647, 0.617572, 0.617496, 0.617421, 0.617346, 0.617270, 0.617195, 0.617119, + 0.617044, 0.616968, 0.616893, 0.616818, 0.616742, 0.616667, 0.616591, 0.616516, + 0.616440, 0.616365, 0.616289, 0.616214, 0.616138, 0.616063, 0.615987, 0.615912, + 0.615836, 0.615761, 0.615685, 0.615609, 0.615534, 0.615458, 0.615383, 0.615307, + 0.615232, 0.615156, 0.615080, 0.615005, 0.614929, 0.614854, 0.614778, 0.614702, + 0.614627, 0.614551, 0.614475, 0.614400, 0.614324, 0.614249, 0.614173, 0.614097, + 0.614022, 0.613946, 0.613870, 0.613795, 0.613719, 0.613643, 0.613567, 0.613492, + 0.613416, 0.613340, 0.613265, 0.613189, 0.613113, 0.613037, 0.612962, 0.612886, + 0.612810, 0.612734, 0.612659, 0.612583, 0.612507, 0.612431, 0.612355, 0.612280, + 0.612204, 0.612128, 0.612052, 0.611976, 0.611901, 0.611825, 0.611749, 0.611673, + 0.611597, 0.611521, 0.611445, 0.611370, 0.611294, 0.611218, 0.611142, 0.611066, + 0.610990, 0.610914, 0.610838, 0.610762, 0.610687, 0.610611, 0.610535, 0.610459, + 0.610383, 0.610307, 0.610231, 0.610155, 0.610079, 0.610003, 0.609927, 0.609851, + 0.609775, 0.609699, 0.609623, 0.609547, 0.609471, 0.609395, 0.609319, 0.609243, + 0.609167, 0.609091, 0.609015, 0.608939, 0.608863, 0.608787, 0.608711, 0.608635, + 0.608559, 0.608482, 0.608406, 0.608330, 0.608254, 0.608178, 0.608102, 0.608026, + 0.607950, 0.607874, 0.607798, 0.607721, 0.607645, 0.607569, 0.607493, 0.607417, + 0.607341, 0.607264, 0.607188, 0.607112, 0.607036, 0.606960, 0.606884, 0.606807, + 0.606731, 0.606655, 0.606579, 0.606502, 0.606426, 0.606350, 0.606274, 0.606198, + 0.606121, 0.606045, 0.605969, 0.605892, 0.605816, 0.605740, 0.605664, 0.605587, + 0.605511, 0.605435, 0.605358, 0.605282, 0.605206, 0.605129, 0.605053, 0.604977, + 0.604900, 0.604824, 0.604748, 0.604671, 0.604595, 0.604519, 0.604442, 0.604366, + 0.604290, 0.604213, 0.604137, 0.604060, 0.603984, 0.603908, 0.603831, 0.603755, + 0.603678, 0.603602, 0.603525, 0.603449, 0.603372, 0.603296, 0.603220, 0.603143, + 0.603067, 0.602990, 0.602914, 0.602837, 0.602761, 0.602684, 0.602608, 0.602531, + 0.602455, 0.602378, 0.602302, 0.602225, 0.602148, 0.602072, 0.601995, 0.601919, + 0.601842, 0.601766, 0.601689, 0.601613, 0.601536, 0.601459, 0.601383, 0.601306, + 0.601230, 0.601153, 0.601076, 0.601000, 0.600923, 0.600846, 0.600770, 0.600693, + 0.600616, 0.600540, 0.600463, 0.600387, 0.600310, 0.600233, 0.600156, 0.600080, + 0.600003, 0.599926, 0.599850, 0.599773, 0.599696, 0.599620, 0.599543, 0.599466, + 0.599389, 0.599313, 0.599236, 0.599159, 0.599082, 0.599006, 0.598929, 0.598852, + 0.598775, 0.598698, 0.598622, 0.598545, 0.598468, 0.598391, 0.598314, 0.598238, + 0.598161, 0.598084, 0.598007, 0.597930, 0.597853, 0.597776, 0.597700, 0.597623, + 0.597546, 0.597469, 0.597392, 0.597315, 0.597238, 0.597161, 0.597085, 0.597008, + 0.596931, 0.596854, 0.596777, 0.596700, 0.596623, 0.596546, 0.596469, 0.596392, + 0.596315, 0.596238, 0.596161, 0.596084, 0.596007, 0.595930, 0.595853, 0.595776, + 0.595699, 0.595622, 0.595545, 0.595468, 0.595391, 0.595314, 0.595237, 0.595160, + 0.595083, 0.595006, 0.594929, 0.594852, 0.594775, 0.594698, 0.594621, 0.594544, + 0.594467, 0.594389, 0.594312, 0.594235, 0.594158, 0.594081, 0.594004, 0.593927, + 0.593850, 0.593772, 0.593695, 0.593618, 0.593541, 0.593464, 0.593387, 0.593309, + 0.593232, 0.593155, 0.593078, 0.593001, 0.592924, 0.592846, 0.592769, 0.592692, + 0.592615, 0.592537, 0.592460, 0.592383, 0.592306, 0.592228, 0.592151, 0.592074, + 0.591997, 0.591919, 0.591842, 0.591765, 0.591688, 0.591610, 0.591533, 0.591456, + 0.591378, 0.591301, 0.591224, 0.591146, 0.591069, 0.590992, 0.590914, 0.590837, + 0.590760, 0.590682, 0.590605, 0.590528, 0.590450, 0.590373, 0.590295, 0.590218, + 0.590141, 0.590063, 0.589986, 0.589908, 0.589831, 0.589754, 0.589676, 0.589599, + 0.589521, 0.589444, 0.589366, 0.589289, 0.589212, 0.589134, 0.589057, 0.588979, + 0.588902, 0.588824, 0.588747, 0.588669, 0.588592, 0.588514, 0.588437, 0.588359, + 0.588282, 0.588204, 0.588126, 0.588049, 0.587971, 0.587894, 0.587816, 0.587739, + 0.587661, 0.587584, 0.587506, 0.587428, 0.587351, 0.587273, 0.587196, 0.587118, + 0.587040, 0.586963, 0.586885, 0.586808, 0.586730, 0.586652, 0.586575, 0.586497, + 0.586419, 0.586342, 0.586264, 0.586186, 0.586109, 0.586031, 0.585953, 0.585876, + 0.585798, 0.585720, 0.585642, 0.585565, 0.585487, 0.585409, 0.585332, 0.585254, + 0.585176, 0.585098, 0.585021, 0.584943, 0.584865, 0.584787, 0.584710, 0.584632, + 0.584554, 0.584476, 0.584398, 0.584321, 0.584243, 0.584165, 0.584087, 0.584009, + 0.583931, 0.583854, 0.583776, 0.583698, 0.583620, 0.583542, 0.583464, 0.583387, + 0.583309, 0.583231, 0.583153, 0.583075, 0.582997, 0.582919, 0.582841, 0.582763, + 0.582685, 0.582608, 0.582530, 0.582452, 0.582374, 0.582296, 0.582218, 0.582140, + 0.582062, 0.581984, 0.581906, 0.581828, 0.581750, 0.581672, 0.581594, 0.581516, + 0.581438, 0.581360, 0.581282, 0.581204, 0.581126, 0.581048, 0.580970, 0.580892, + 0.580814, 0.580736, 0.580658, 0.580580, 0.580502, 0.580424, 0.580346, 0.580267, + 0.580189, 0.580111, 0.580033, 0.579955, 0.579877, 0.579799, 0.579721, 0.579643, + 0.579565, 0.579486, 0.579408, 0.579330, 0.579252, 0.579174, 0.579096, 0.579018, + 0.578939, 0.578861, 0.578783, 0.578705, 0.578627, 0.578548, 0.578470, 0.578392, + 0.578314, 0.578236, 0.578157, 0.578079, 0.578001, 0.577923, 0.577844, 0.577766, + 0.577688, 0.577610, 0.577531, 0.577453, 0.577375, 0.577297, 0.577218, 0.577140, + 0.577062, 0.576983, 0.576905, 0.576827, 0.576748, 0.576670, 0.576592, 0.576513, + 0.576435, 0.576357, 0.576278, 0.576200, 0.576122, 0.576043, 0.575965, 0.575887, + 0.575808, 0.575730, 0.575651, 0.575573, 0.575495, 0.575416, 0.575338, 0.575259, + 0.575181, 0.575103, 0.575024, 0.574946, 0.574867, 0.574789, 0.574710, 0.574632, + 0.574553, 0.574475, 0.574396, 0.574318, 0.574239, 0.574161, 0.574082, 0.574004, + 0.573925, 0.573847, 0.573768, 0.573690, 0.573611, 0.573533, 0.573454, 0.573376, + 0.573297, 0.573219, 0.573140, 0.573061, 0.572983, 0.572904, 0.572826, 0.572747, + 0.572669, 0.572590, 0.572511, 0.572433, 0.572354, 0.572276, 0.572197, 0.572118, + 0.572040, 0.571961, 0.571882, 0.571804, 0.571725, 0.571646, 0.571568, 0.571489, + 0.571410, 0.571332, 0.571253, 0.571174, 0.571096, 0.571017, 0.570938, 0.570859, + 0.570781, 0.570702, 0.570623, 0.570545, 0.570466, 0.570387, 0.570308, 0.570230, + 0.570151, 0.570072, 0.569993, 0.569914, 0.569836, 0.569757, 0.569678, 0.569599, + 0.569521, 0.569442, 0.569363, 0.569284, 0.569205, 0.569126, 0.569048, 0.568969, + 0.568890, 0.568811, 0.568732, 0.568653, 0.568574, 0.568496, 0.568417, 0.568338, + 0.568259, 0.568180, 0.568101, 0.568022, 0.567943, 0.567864, 0.567786, 0.567707, + 0.567628, 0.567549, 0.567470, 0.567391, 0.567312, 0.567233, 0.567154, 0.567075, + 0.566996, 0.566917, 0.566838, 0.566759, 0.566680, 0.566601, 0.566522, 0.566443, + 0.566364, 0.566285, 0.566206, 0.566127, 0.566048, 0.565969, 0.565890, 0.565811, + 0.565732, 0.565653, 0.565574, 0.565495, 0.565416, 0.565336, 0.565257, 0.565178, + 0.565099, 0.565020, 0.564941, 0.564862, 0.564783, 0.564704, 0.564624, 0.564545, + 0.564466, 0.564387, 0.564308, 0.564229, 0.564150, 0.564070, 0.563991, 0.563912, + 0.563833, 0.563754, 0.563675, 0.563595, 0.563516, 0.563437, 0.563358, 0.563279, + 0.563199, 0.563120, 0.563041, 0.562962, 0.562882, 0.562803, 0.562724, 0.562645, + 0.562565, 0.562486, 0.562407, 0.562328, 0.562248, 0.562169, 0.562090, 0.562010, + 0.561931, 0.561852, 0.561773, 0.561693, 0.561614, 0.561535, 0.561455, 0.561376, + 0.561297, 0.561217, 0.561138, 0.561058, 0.560979, 0.560900, 0.560820, 0.560741, + 0.560662, 0.560582, 0.560503, 0.560423, 0.560344, 0.560265, 0.560185, 0.560106, + 0.560026, 0.559947, 0.559867, 0.559788, 0.559709, 0.559629, 0.559550, 0.559470, + 0.559391, 0.559311, 0.559232, 0.559152, 0.559073, 0.558993, 0.558914, 0.558834, + 0.558755, 0.558675, 0.558596, 0.558516, 0.558437, 0.558357, 0.558278, 0.558198, + 0.558119, 0.558039, 0.557959, 0.557880, 0.557800, 0.557721, 0.557641, 0.557562, + 0.557482, 0.557402, 0.557323, 0.557243, 0.557164, 0.557084, 0.557004, 0.556925, + 0.556845, 0.556765, 0.556686, 0.556606, 0.556526, 0.556447, 0.556367, 0.556287, + 0.556208, 0.556128, 0.556048, 0.555969, 0.555889, 0.555809, 0.555730, 0.555650, + 0.555570, 0.555490, 0.555411, 0.555331, 0.555251, 0.555172, 0.555092, 0.555012, + 0.554932, 0.554853, 0.554773, 0.554693, 0.554613, 0.554533, 0.554454, 0.554374, + 0.554294, 0.554214, 0.554134, 0.554055, 0.553975, 0.553895, 0.553815, 0.553735, + 0.553656, 0.553576, 0.553496, 0.553416, 0.553336, 0.553256, 0.553176, 0.553097, + 0.553017, 0.552937, 0.552857, 0.552777, 0.552697, 0.552617, 0.552537, 0.552457, + 0.552378, 0.552298, 0.552218, 0.552138, 0.552058, 0.551978, 0.551898, 0.551818, + 0.551738, 0.551658, 0.551578, 0.551498, 0.551418, 0.551338, 0.551258, 0.551178, + 0.551098, 0.551018, 0.550938, 0.550858, 0.550778, 0.550698, 0.550618, 0.550538, + 0.550458, 0.550378, 0.550298, 0.550218, 0.550138, 0.550058, 0.549978, 0.549898, + 0.549818, 0.549737, 0.549657, 0.549577, 0.549497, 0.549417, 0.549337, 0.549257, + 0.549177, 0.549097, 0.549016, 0.548936, 0.548856, 0.548776, 0.548696, 0.548616, + 0.548536, 0.548455, 0.548375, 0.548295, 0.548215, 0.548135, 0.548054, 0.547974, + 0.547894, 0.547814, 0.547734, 0.547653, 0.547573, 0.547493, 0.547413, 0.547333, + 0.547252, 0.547172, 0.547092, 0.547011, 0.546931, 0.546851, 0.546771, 0.546690, + 0.546610, 0.546530, 0.546450, 0.546369, 0.546289, 0.546209, 0.546128, 0.546048, + 0.545968, 0.545887, 0.545807, 0.545727, 0.545646, 0.545566, 0.545486, 0.545405, + 0.545325, 0.545245, 0.545164, 0.545084, 0.545003, 0.544923, 0.544843, 0.544762, + 0.544682, 0.544602, 0.544521, 0.544441, 0.544360, 0.544280, 0.544199, 0.544119, + 0.544039, 0.543958, 0.543878, 0.543797, 0.543717, 0.543636, 0.543556, 0.543475, + 0.543395, 0.543314, 0.543234, 0.543153, 0.543073, 0.542992, 0.542912, 0.542831, + 0.542751, 0.542670, 0.542590, 0.542509, 0.542429, 0.542348, 0.542268, 0.542187, + 0.542106, 0.542026, 0.541945, 0.541865, 0.541784, 0.541704, 0.541623, 0.541542, + 0.541462, 0.541381, 0.541301, 0.541220, 0.541139, 0.541059, 0.540978, 0.540897, + 0.540817, 0.540736, 0.540655, 0.540575, 0.540494, 0.540413, 0.540333, 0.540252, + 0.540171, 0.540091, 0.540010, 0.539929, 0.539849, 0.539768, 0.539687, 0.539607, + 0.539526, 0.539445, 0.539364, 0.539284, 0.539203, 0.539122, 0.539041, 0.538961, + 0.538880, 0.538799, 0.538718, 0.538638, 0.538557, 0.538476, 0.538395, 0.538314, + 0.538234, 0.538153, 0.538072, 0.537991, 0.537910, 0.537830, 0.537749, 0.537668, + 0.537587, 0.537506, 0.537425, 0.537345, 0.537264, 0.537183, 0.537102, 0.537021, + 0.536940, 0.536859, 0.536778, 0.536698, 0.536617, 0.536536, 0.536455, 0.536374, + 0.536293, 0.536212, 0.536131, 0.536050, 0.535969, 0.535888, 0.535807, 0.535726, + 0.535645, 0.535564, 0.535484, 0.535403, 0.535322, 0.535241, 0.535160, 0.535079, + 0.534998, 0.534917, 0.534836, 0.534755, 0.534674, 0.534593, 0.534512, 0.534431, + 0.534349, 0.534268, 0.534187, 0.534106, 0.534025, 0.533944, 0.533863, 0.533782, + 0.533701, 0.533620, 0.533539, 0.533458, 0.533377, 0.533296, 0.533214, 0.533133, + 0.533052, 0.532971, 0.532890, 0.532809, 0.532728, 0.532647, 0.532565, 0.532484, + 0.532403, 0.532322, 0.532241, 0.532160, 0.532078, 0.531997, 0.531916, 0.531835, + 0.531754, 0.531673, 0.531591, 0.531510, 0.531429, 0.531348, 0.531266, 0.531185, + 0.531104, 0.531023, 0.530942, 0.530860, 0.530779, 0.530698, 0.530617, 0.530535, + 0.530454, 0.530373, 0.530291, 0.530210, 0.530129, 0.530048, 0.529966, 0.529885, + 0.529804, 0.529722, 0.529641, 0.529560, 0.529478, 0.529397, 0.529316, 0.529234, + 0.529153, 0.529072, 0.528990, 0.528909, 0.528828, 0.528746, 0.528665, 0.528583, + 0.528502, 0.528421, 0.528339, 0.528258, 0.528176, 0.528095, 0.528014, 0.527932, + 0.527851, 0.527769, 0.527688, 0.527606, 0.527525, 0.527444, 0.527362, 0.527281, + 0.527199, 0.527118, 0.527036, 0.526955, 0.526873, 0.526792, 0.526710, 0.526629, + 0.526547, 0.526466, 0.526384, 0.526303, 0.526221, 0.526140, 0.526058, 0.525977, + 0.525895, 0.525813, 0.525732, 0.525650, 0.525569, 0.525487, 0.525406, 0.525324, + 0.525243, 0.525161, 0.525079, 0.524998, 0.524916, 0.524835, 0.524753, 0.524671, + 0.524590, 0.524508, 0.524426, 0.524345, 0.524263, 0.524181, 0.524100, 0.524018, + 0.523937, 0.523855, 0.523773, 0.523692, 0.523610, 0.523528, 0.523447, 0.523365, + 0.523283, 0.523201, 0.523120, 0.523038, 0.522956, 0.522875, 0.522793, 0.522711, + 0.522629, 0.522548, 0.522466, 0.522384, 0.522302, 0.522221, 0.522139, 0.522057, + 0.521975, 0.521894, 0.521812, 0.521730, 0.521648, 0.521566, 0.521485, 0.521403, + 0.521321, 0.521239, 0.521157, 0.521075, 0.520994, 0.520912, 0.520830, 0.520748, + 0.520666, 0.520584, 0.520503, 0.520421, 0.520339, 0.520257, 0.520175, 0.520093, + 0.520011, 0.519929, 0.519848, 0.519766, 0.519684, 0.519602, 0.519520, 0.519438, + 0.519356, 0.519274, 0.519192, 0.519110, 0.519028, 0.518946, 0.518864, 0.518782, + 0.518700, 0.518618, 0.518536, 0.518454, 0.518372, 0.518291, 0.518209, 0.518126, + 0.518045, 0.517963, 0.517880, 0.517798, 0.517716, 0.517634, 0.517552, 0.517470, + 0.517388, 0.517306, 0.517224, 0.517142, 0.517060, 0.516978, 0.516896, 0.516814, + 0.516732, 0.516650, 0.516568, 0.516486, 0.516403, 0.516321, 0.516239, 0.516157, + 0.516075, 0.515993, 0.515911, 0.515829, 0.515746, 0.515664, 0.515582, 0.515500, + 0.515418, 0.515336, 0.515254, 0.515171, 0.515089, 0.515007, 0.514925, 0.514843, + 0.514760, 0.514678, 0.514596, 0.514514, 0.514432, 0.514349, 0.514267, 0.514185, + 0.514103, 0.514021, 0.513938, 0.513856, 0.513774, 0.513692, 0.513609, 0.513527, + 0.513445, 0.513362, 0.513280, 0.513198, 0.513116, 0.513033, 0.512951, 0.512869, + 0.512786, 0.512704, 0.512622, 0.512539, 0.512457, 0.512375, 0.512292, 0.512210, + 0.512128, 0.512045, 0.511963, 0.511881, 0.511798, 0.511716, 0.511634, 0.511551, + 0.511469, 0.511386, 0.511304, 0.511222, 0.511139, 0.511057, 0.510974, 0.510892, + 0.510810, 0.510727, 0.510645, 0.510562, 0.510480, 0.510397, 0.510315, 0.510233, + 0.510150, 0.510068, 0.509985, 0.509903, 0.509820, 0.509738, 0.509655, 0.509573, + 0.509490, 0.509408, 0.509325, 0.509243, 0.509160, 0.509078, 0.508995, 0.508913, + 0.508830, 0.508748, 0.508665, 0.508583, 0.508500, 0.508417, 0.508335, 0.508252, + 0.508170, 0.508087, 0.508005, 0.507922, 0.507839, 0.507757, 0.507674, 0.507592, + 0.507509, 0.507426, 0.507344, 0.507261, 0.507179, 0.507096, 0.507013, 0.506931, + 0.506848, 0.506765, 0.506683, 0.506600, 0.506517, 0.506435, 0.506352, 0.506269, + 0.506187, 0.506104, 0.506021, 0.505939, 0.505856, 0.505773, 0.505690, 0.505608, + 0.505525, 0.505442, 0.505360, 0.505277, 0.505194, 0.505111, 0.505029, 0.504946, + 0.504863, 0.504780, 0.504698, 0.504615, 0.504532, 0.504449, 0.504366, 0.504284, + 0.504201, 0.504118, 0.504035, 0.503953, 0.503870, 0.503787, 0.503704, 0.503621, + 0.503538, 0.503456, 0.503373, 0.503290, 0.503207, 0.503124, 0.503041, 0.502958, + 0.502876, 0.502793, 0.502710, 0.502627, 0.502544, 0.502461, 0.502378, 0.502295, + 0.502212, 0.502130, 0.502047, 0.501964, 0.501881, 0.501798, 0.501715, 0.501632, + 0.501549, 0.501466, 0.501383, 0.501300, 0.501217, 0.501134, 0.501051, 0.500968, + 0.500885, 0.500802, 0.500719, 0.500636, 0.500553, 0.500470, 0.500387, 0.500304, + 0.500221, 0.500138, 0.500055, 0.499972, 0.499889, 0.499806, 0.499723, 0.499640, + 0.499557, 0.499474, 0.499391, 0.499308, 0.499225, 0.499142, 0.499059, 0.498976, + 0.498893, 0.498809, 0.498726, 0.498643, 0.498560, 0.498477, 0.498394, 0.498311, + 0.498228, 0.498145, 0.498061, 0.497978, 0.497895, 0.497812, 0.497729, 0.497646, + 0.497562, 0.497479, 0.497396, 0.497313, 0.497230, 0.497147, 0.497063, 0.496980, + 0.496897, 0.496814, 0.496731, 0.496647, 0.496564, 0.496481, 0.496398, 0.496315, + 0.496231, 0.496148, 0.496065, 0.495982, 0.495898, 0.495815, 0.495732, 0.495649, + 0.495565, 0.495482, 0.495399, 0.495315, 0.495232, 0.495149, 0.495066, 0.494982, + 0.494899, 0.494816, 0.494732, 0.494649, 0.494566, 0.494482, 0.494399, 0.494316, + 0.494232, 0.494149, 0.494066, 0.493982, 0.493899, 0.493816, 0.493732, 0.493649, + 0.493565, 0.493482, 0.493399, 0.493315, 0.493232, 0.493148, 0.493065, 0.492982, + 0.492898, 0.492815, 0.492731, 0.492648, 0.492564, 0.492481, 0.492398, 0.492314, + 0.492231, 0.492147, 0.492064, 0.491980, 0.491897, 0.491813, 0.491730, 0.491646, + 0.491563, 0.491479, 0.491396, 0.491312, 0.491229, 0.491145, 0.491062, 0.490978, + 0.490895, 0.490811, 0.490728, 0.490644, 0.490561, 0.490477, 0.490394, 0.490310, + 0.490226, 0.490143, 0.490059, 0.489976, 0.489892, 0.489809, 0.489725, 0.489641, + 0.489558, 0.489474, 0.489391, 0.489307, 0.489223, 0.489140, 0.489056, 0.488973, + 0.488889, 0.488805, 0.488722, 0.488638, 0.488554, 0.488471, 0.488387, 0.488303, + 0.488220, 0.488136, 0.488052, 0.487969, 0.487885, 0.487801, 0.487718, 0.487634, + 0.487550, 0.487466, 0.487383, 0.487299, 0.487215, 0.487132, 0.487048, 0.486964, + 0.486880, 0.486797, 0.486713, 0.486629, 0.486545, 0.486462, 0.486378, 0.486294, + 0.486210, 0.486126, 0.486043, 0.485959, 0.485875, 0.485791, 0.485708, 0.485624, + 0.485540, 0.485456, 0.485372, 0.485288, 0.485205, 0.485121, 0.485037, 0.484953, + 0.484869, 0.484785, 0.484702, 0.484618, 0.484534, 0.484450, 0.484366, 0.484282, + 0.484198, 0.484114, 0.484031, 0.483947, 0.483863, 0.483779, 0.483695, 0.483611, + 0.483527, 0.483443, 0.483359, 0.483275, 0.483191, 0.483107, 0.483023, 0.482940, + 0.482856, 0.482772, 0.482688, 0.482604, 0.482520, 0.482436, 0.482352, 0.482268, + 0.482184, 0.482100, 0.482016, 0.481932, 0.481848, 0.481764, 0.481680, 0.481596, + 0.481512, 0.481428, 0.481344, 0.481260, 0.481176, 0.481091, 0.481007, 0.480923, + 0.480839, 0.480755, 0.480671, 0.480587, 0.480503, 0.480419, 0.480335, 0.480251, + 0.480167, 0.480083, 0.479998, 0.479914, 0.479830, 0.479746, 0.479662, 0.479578, + 0.479494, 0.479410, 0.479325, 0.479241, 0.479157, 0.479073, 0.478989, 0.478905, + 0.478821, 0.478736, 0.478652, 0.478568, 0.478484, 0.478400, 0.478315, 0.478231, + 0.478147, 0.478063, 0.477979, 0.477894, 0.477810, 0.477726, 0.477642, 0.477558, + 0.477473, 0.477389, 0.477305, 0.477221, 0.477136, 0.477052, 0.476968, 0.476884, + 0.476799, 0.476715, 0.476631, 0.476546, 0.476462, 0.476378, 0.476294, 0.476209, + 0.476125, 0.476041, 0.475956, 0.475872, 0.475788, 0.475703, 0.475619, 0.475535, + 0.475450, 0.475366, 0.475282, 0.475197, 0.475113, 0.475029, 0.474944, 0.474860, + 0.474775, 0.474691, 0.474607, 0.474522, 0.474438, 0.474353, 0.474269, 0.474185, + 0.474100, 0.474016, 0.473931, 0.473847, 0.473763, 0.473678, 0.473594, 0.473509, + 0.473425, 0.473340, 0.473256, 0.473171, 0.473087, 0.473002, 0.472918, 0.472834, + 0.472749, 0.472665, 0.472580, 0.472496, 0.472411, 0.472327, 0.472242, 0.472158, + 0.472073, 0.471988, 0.471904, 0.471819, 0.471735, 0.471650, 0.471566, 0.471481, + 0.471397, 0.471312, 0.471228, 0.471143, 0.471058, 0.470974, 0.470889, 0.470805, + 0.470720, 0.470636, 0.470551, 0.470466, 0.470382, 0.470297, 0.470213, 0.470128, + 0.470043, 0.469959, 0.469874, 0.469789, 0.469705, 0.469620, 0.469536, 0.469451, + 0.469366, 0.469282, 0.469197, 0.469112, 0.469028, 0.468943, 0.468858, 0.468774, + 0.468689, 0.468604, 0.468519, 0.468435, 0.468350, 0.468265, 0.468181, 0.468096, + 0.468011, 0.467926, 0.467842, 0.467757, 0.467672, 0.467587, 0.467503, 0.467418, + 0.467333, 0.467248, 0.467164, 0.467079, 0.466994, 0.466909, 0.466825, 0.466740, + 0.466655, 0.466570, 0.466485, 0.466401, 0.466316, 0.466231, 0.466146, 0.466061, + 0.465977, 0.465892, 0.465807, 0.465722, 0.465637, 0.465552, 0.465467, 0.465383, + 0.465298, 0.465213, 0.465128, 0.465043, 0.464958, 0.464873, 0.464788, 0.464704, + 0.464619, 0.464534, 0.464449, 0.464364, 0.464279, 0.464194, 0.464109, 0.464024, + 0.463939, 0.463854, 0.463769, 0.463685, 0.463600, 0.463515, 0.463430, 0.463345, + 0.463260, 0.463175, 0.463090, 0.463005, 0.462920, 0.462835, 0.462750, 0.462665, + 0.462580, 0.462495, 0.462410, 0.462325, 0.462240, 0.462155, 0.462070, 0.461985, + 0.461900, 0.461815, 0.461730, 0.461645, 0.461560, 0.461475, 0.461390, 0.461304, + 0.461219, 0.461134, 0.461049, 0.460964, 0.460879, 0.460794, 0.460709, 0.460624, + 0.460539, 0.460454, 0.460369, 0.460283, 0.460198, 0.460113, 0.460028, 0.459943, + 0.459858, 0.459773, 0.459687, 0.459602, 0.459517, 0.459432, 0.459347, 0.459262, + 0.459177, 0.459091, 0.459006, 0.458921, 0.458836, 0.458751, 0.458665, 0.458580, + 0.458495, 0.458410, 0.458325, 0.458239, 0.458154, 0.458069, 0.457984, 0.457899, + 0.457813, 0.457728, 0.457643, 0.457558, 0.457472, 0.457387, 0.457302, 0.457217, + 0.457131, 0.457046, 0.456961, 0.456875, 0.456790, 0.456705, 0.456620, 0.456534, + 0.456449, 0.456364, 0.456278, 0.456193, 0.456108, 0.456022, 0.455937, 0.455852, + 0.455766, 0.455681, 0.455596, 0.455510, 0.455425, 0.455340, 0.455254, 0.455169, + 0.455084, 0.454998, 0.454913, 0.454827, 0.454742, 0.454657, 0.454571, 0.454486, + 0.454400, 0.454315, 0.454230, 0.454144, 0.454059, 0.453973, 0.453888, 0.453803, + 0.453717, 0.453632, 0.453546, 0.453461, 0.453375, 0.453290, 0.453204, 0.453119, + 0.453033, 0.452948, 0.452863, 0.452777, 0.452692, 0.452606, 0.452521, 0.452435, + 0.452350, 0.452264, 0.452179, 0.452093, 0.452008, 0.451922, 0.451836, 0.451751, + 0.451665, 0.451580, 0.451494, 0.451409, 0.451323, 0.451238, 0.451152, 0.451067, + 0.450981, 0.450895, 0.450810, 0.450724, 0.450639, 0.450553, 0.450467, 0.450382, + 0.450296, 0.450211, 0.450125, 0.450039, 0.449954, 0.449868, 0.449783, 0.449697, + 0.449611, 0.449526, 0.449440, 0.449354, 0.449269, 0.449183, 0.449097, 0.449012, + 0.448926, 0.448840, 0.448755, 0.448669, 0.448583, 0.448498, 0.448412, 0.448326, + 0.448241, 0.448155, 0.448069, 0.447983, 0.447898, 0.447812, 0.447726, 0.447641, + 0.447555, 0.447469, 0.447383, 0.447298, 0.447212, 0.447126, 0.447040, 0.446955, + 0.446869, 0.446783, 0.446697, 0.446612, 0.446526, 0.446440, 0.446354, 0.446268, + 0.446183, 0.446097, 0.446011, 0.445925, 0.445839, 0.445754, 0.445668, 0.445582, + 0.445496, 0.445410, 0.445324, 0.445239, 0.445153, 0.445067, 0.444981, 0.444895, + 0.444809, 0.444723, 0.444637, 0.444552, 0.444466, 0.444380, 0.444294, 0.444208, + 0.444122, 0.444036, 0.443950, 0.443864, 0.443779, 0.443693, 0.443607, 0.443521, + 0.443435, 0.443349, 0.443263, 0.443177, 0.443091, 0.443005, 0.442919, 0.442833, + 0.442747, 0.442661, 0.442575, 0.442489, 0.442403, 0.442317, 0.442231, 0.442145, + 0.442059, 0.441973, 0.441887, 0.441801, 0.441715, 0.441629, 0.441543, 0.441457, + 0.441371, 0.441285, 0.441199, 0.441113, 0.441027, 0.440941, 0.440855, 0.440769, + 0.440683, 0.440597, 0.440511, 0.440425, 0.440339, 0.440253, 0.440166, 0.440080, + 0.439994, 0.439908, 0.439822, 0.439736, 0.439650, 0.439564, 0.439478, 0.439392, + 0.439305, 0.439219, 0.439133, 0.439047, 0.438961, 0.438875, 0.438789, 0.438702, + 0.438616, 0.438530, 0.438444, 0.438358, 0.438272, 0.438185, 0.438099, 0.438013, + 0.437927, 0.437841, 0.437754, 0.437668, 0.437582, 0.437496, 0.437410, 0.437323, + 0.437237, 0.437151, 0.437065, 0.436978, 0.436892, 0.436806, 0.436720, 0.436633, + 0.436547, 0.436461, 0.436375, 0.436288, 0.436202, 0.436116, 0.436030, 0.435943, + 0.435857, 0.435771, 0.435685, 0.435598, 0.435512, 0.435426, 0.435339, 0.435253, + 0.435167, 0.435080, 0.434994, 0.434908, 0.434821, 0.434735, 0.434649, 0.434562, + 0.434476, 0.434390, 0.434303, 0.434217, 0.434131, 0.434044, 0.433958, 0.433871, + 0.433785, 0.433699, 0.433612, 0.433526, 0.433439, 0.433353, 0.433267, 0.433180, + 0.433094, 0.433007, 0.432921, 0.432835, 0.432748, 0.432662, 0.432575, 0.432489, + 0.432402, 0.432316, 0.432229, 0.432143, 0.432057, 0.431970, 0.431884, 0.431797, + 0.431711, 0.431624, 0.431538, 0.431451, 0.431365, 0.431278, 0.431192, 0.431105, + 0.431019, 0.430932, 0.430846, 0.430759, 0.430673, 0.430586, 0.430500, 0.430413, + 0.430326, 0.430240, 0.430153, 0.430067, 0.429980, 0.429894, 0.429807, 0.429721, + 0.429634, 0.429547, 0.429461, 0.429374, 0.429288, 0.429201, 0.429114, 0.429028, + 0.428941, 0.428855, 0.428768, 0.428681, 0.428595, 0.428508, 0.428422, 0.428335, + 0.428248, 0.428162, 0.428075, 0.427988, 0.427902, 0.427815, 0.427728, 0.427642, + 0.427555, 0.427468, 0.427382, 0.427295, 0.427208, 0.427122, 0.427035, 0.426948, + 0.426862, 0.426775, 0.426688, 0.426601, 0.426515, 0.426428, 0.426341, 0.426255, + 0.426168, 0.426081, 0.425994, 0.425908, 0.425821, 0.425734, 0.425647, 0.425561, + 0.425474, 0.425387, 0.425300, 0.425214, 0.425127, 0.425040, 0.424953, 0.424866, + 0.424780, 0.424693, 0.424606, 0.424519, 0.424432, 0.424346, 0.424259, 0.424172, + 0.424085, 0.423998, 0.423912, 0.423825, 0.423738, 0.423651, 0.423564, 0.423477, + 0.423390, 0.423304, 0.423217, 0.423130, 0.423043, 0.422956, 0.422869, 0.422782, + 0.422695, 0.422609, 0.422522, 0.422435, 0.422348, 0.422261, 0.422174, 0.422087, + 0.422000, 0.421913, 0.421826, 0.421739, 0.421653, 0.421566, 0.421479, 0.421392, + 0.421305, 0.421218, 0.421131, 0.421044, 0.420957, 0.420870, 0.420783, 0.420696, + 0.420609, 0.420522, 0.420435, 0.420348, 0.420261, 0.420174, 0.420087, 0.420000, + 0.419913, 0.419826, 0.419739, 0.419652, 0.419565, 0.419478, 0.419391, 0.419304, + 0.419217, 0.419130, 0.419043, 0.418956, 0.418869, 0.418782, 0.418695, 0.418608, + 0.418520, 0.418433, 0.418346, 0.418259, 0.418172, 0.418085, 0.417998, 0.417911, + 0.417824, 0.417737, 0.417650, 0.417562, 0.417475, 0.417388, 0.417301, 0.417214, + 0.417127, 0.417040, 0.416952, 0.416865, 0.416778, 0.416691, 0.416604, 0.416517, + 0.416430, 0.416342, 0.416255, 0.416168, 0.416081, 0.415994, 0.415906, 0.415819, + 0.415732, 0.415645, 0.415558, 0.415471, 0.415383, 0.415296, 0.415209, 0.415122, + 0.415034, 0.414947, 0.414860, 0.414773, 0.414685, 0.414598, 0.414511, 0.414424, + 0.414337, 0.414249, 0.414162, 0.414075, 0.413987, 0.413900, 0.413813, 0.413726, + 0.413638, 0.413551, 0.413464, 0.413376, 0.413289, 0.413202, 0.413115, 0.413027, + 0.412940, 0.412853, 0.412765, 0.412678, 0.412591, 0.412503, 0.412416, 0.412329, + 0.412241, 0.412154, 0.412067, 0.411979, 0.411892, 0.411804, 0.411717, 0.411630, + 0.411542, 0.411455, 0.411368, 0.411280, 0.411193, 0.411105, 0.411018, 0.410931, + 0.410843, 0.410756, 0.410668, 0.410581, 0.410493, 0.410406, 0.410319, 0.410231, + 0.410144, 0.410056, 0.409969, 0.409881, 0.409794, 0.409707, 0.409619, 0.409532, + 0.409444, 0.409357, 0.409269, 0.409182, 0.409094, 0.409007, 0.408919, 0.408832, + 0.408744, 0.408657, 0.408569, 0.408482, 0.408394, 0.408307, 0.408219, 0.408132, + 0.408044, 0.407957, 0.407869, 0.407782, 0.407694, 0.407606, 0.407519, 0.407431, + 0.407344, 0.407256, 0.407169, 0.407081, 0.406994, 0.406906, 0.406818, 0.406731, + 0.406643, 0.406556, 0.406468, 0.406380, 0.406293, 0.406205, 0.406118, 0.406030, + 0.405942, 0.405855, 0.405767, 0.405680, 0.405592, 0.405504, 0.405417, 0.405329, + 0.405241, 0.405154, 0.405066, 0.404978, 0.404891, 0.404803, 0.404715, 0.404628, + 0.404540, 0.404452, 0.404365, 0.404277, 0.404189, 0.404102, 0.404014, 0.403926, + 0.403838, 0.403751, 0.403663, 0.403575, 0.403488, 0.403400, 0.403312, 0.403224, + 0.403137, 0.403049, 0.402961, 0.402873, 0.402786, 0.402698, 0.402610, 0.402522, + 0.402435, 0.402347, 0.402259, 0.402171, 0.402084, 0.401996, 0.401908, 0.401820, + 0.401732, 0.401645, 0.401557, 0.401469, 0.401381, 0.401293, 0.401206, 0.401118, + 0.401030, 0.400942, 0.400854, 0.400766, 0.400679, 0.400591, 0.400503, 0.400415, + 0.400327, 0.400239, 0.400151, 0.400064, 0.399976, 0.399888, 0.399800, 0.399712, + 0.399624, 0.399536, 0.399448, 0.399361, 0.399273, 0.399185, 0.399097, 0.399009, + 0.398921, 0.398833, 0.398745, 0.398657, 0.398569, 0.398481, 0.398393, 0.398306, + 0.398218, 0.398130, 0.398042, 0.397954, 0.397866, 0.397778, 0.397690, 0.397602, + 0.397514, 0.397426, 0.397338, 0.397250, 0.397162, 0.397074, 0.396986, 0.396898, + 0.396810, 0.396722, 0.396634, 0.396546, 0.396458, 0.396370, 0.396282, 0.396194, + 0.396106, 0.396018, 0.395930, 0.395842, 0.395754, 0.395666, 0.395578, 0.395490, + 0.395401, 0.395313, 0.395225, 0.395137, 0.395049, 0.394961, 0.394873, 0.394785, + 0.394697, 0.394609, 0.394521, 0.394433, 0.394344, 0.394256, 0.394168, 0.394080, + 0.393992, 0.393904, 0.393816, 0.393728, 0.393640, 0.393551, 0.393463, 0.393375, + 0.393287, 0.393199, 0.393111, 0.393023, 0.392934, 0.392846, 0.392758, 0.392670, + 0.392582, 0.392493, 0.392405, 0.392317, 0.392229, 0.392141, 0.392053, 0.391964, + 0.391876, 0.391788, 0.391700, 0.391612, 0.391523, 0.391435, 0.391347, 0.391259, + 0.391170, 0.391082, 0.390994, 0.390906, 0.390817, 0.390729, 0.390641, 0.390553, + 0.390464, 0.390376, 0.390288, 0.390200, 0.390111, 0.390023, 0.389935, 0.389846, + 0.389758, 0.389670, 0.389582, 0.389493, 0.389405, 0.389317, 0.389228, 0.389140, + 0.389052, 0.388963, 0.388875, 0.388787, 0.388698, 0.388610, 0.388522, 0.388433, + 0.388345, 0.388257, 0.388168, 0.388080, 0.387992, 0.387903, 0.387815, 0.387727, + 0.387638, 0.387550, 0.387461, 0.387373, 0.387285, 0.387196, 0.387108, 0.387019, + 0.386931, 0.386843, 0.386754, 0.386666, 0.386577, 0.386489, 0.386400, 0.386312, + 0.386224, 0.386135, 0.386047, 0.385958, 0.385870, 0.385781, 0.385693, 0.385605, + 0.385516, 0.385428, 0.385339, 0.385251, 0.385162, 0.385074, 0.384985, 0.384897, + 0.384808, 0.384720, 0.384631, 0.384543, 0.384454, 0.384366, 0.384277, 0.384189, + 0.384100, 0.384012, 0.383923, 0.383835, 0.383746, 0.383658, 0.383569, 0.383480, + 0.383392, 0.383303, 0.383215, 0.383126, 0.383038, 0.382949, 0.382861, 0.382772, + 0.382683, 0.382595, 0.382506, 0.382418, 0.382329, 0.382241, 0.382152, 0.382063, + 0.381975, 0.381886, 0.381797, 0.381709, 0.381620, 0.381532, 0.381443, 0.381354, + 0.381266, 0.381177, 0.381088, 0.381000, 0.380911, 0.380823, 0.380734, 0.380645, + 0.380557, 0.380468, 0.380379, 0.380291, 0.380202, 0.380113, 0.380025, 0.379936, + 0.379847, 0.379759, 0.379670, 0.379581, 0.379492, 0.379404, 0.379315, 0.379226, + 0.379138, 0.379049, 0.378960, 0.378871, 0.378783, 0.378694, 0.378605, 0.378516, + 0.378428, 0.378339, 0.378250, 0.378162, 0.378073, 0.377984, 0.377895, 0.377806, + 0.377718, 0.377629, 0.377540, 0.377451, 0.377363, 0.377274, 0.377185, 0.377096, + 0.377007, 0.376919, 0.376830, 0.376741, 0.376652, 0.376563, 0.376475, 0.376386, + 0.376297, 0.376208, 0.376119, 0.376030, 0.375942, 0.375853, 0.375764, 0.375675, + 0.375586, 0.375497, 0.375408, 0.375320, 0.375231, 0.375142, 0.375053, 0.374964, + 0.374875, 0.374786, 0.374697, 0.374609, 0.374520, 0.374431, 0.374342, 0.374253, + 0.374164, 0.374075, 0.373986, 0.373897, 0.373808, 0.373719, 0.373631, 0.373542, + 0.373453, 0.373364, 0.373275, 0.373186, 0.373097, 0.373008, 0.372919, 0.372830, + 0.372741, 0.372652, 0.372563, 0.372474, 0.372385, 0.372296, 0.372207, 0.372118, + 0.372029, 0.371940, 0.371851, 0.371762, 0.371673, 0.371584, 0.371495, 0.371406, + 0.371317, 0.371228, 0.371139, 0.371050, 0.370961, 0.370872, 0.370783, 0.370694, + 0.370605, 0.370516, 0.370427, 0.370338, 0.370249, 0.370160, 0.370071, 0.369982, + 0.369892, 0.369803, 0.369714, 0.369625, 0.369536, 0.369447, 0.369358, 0.369269, + 0.369180, 0.369091, 0.369002, 0.368912, 0.368823, 0.368734, 0.368645, 0.368556, + 0.368467, 0.368378, 0.368289, 0.368199, 0.368110, 0.368021, 0.367932, 0.367843, + 0.367754, 0.367665, 0.367575, 0.367486, 0.367397, 0.367308, 0.367219, 0.367130, + 0.367040, 0.366951, 0.366862, 0.366773, 0.366684, 0.366594, 0.366505, 0.366416, + 0.366327, 0.366238, 0.366148, 0.366059, 0.365970, 0.365881, 0.365791, 0.365702, + 0.365613, 0.365524, 0.365435, 0.365345, 0.365256, 0.365167, 0.365078, 0.364988, + 0.364899, 0.364810, 0.364720, 0.364631, 0.364542, 0.364453, 0.364363, 0.364274, + 0.364185, 0.364096, 0.364006, 0.363917, 0.363828, 0.363738, 0.363649, 0.363560, + 0.363470, 0.363381, 0.363292, 0.363202, 0.363113, 0.363024, 0.362934, 0.362845, + 0.362756, 0.362666, 0.362577, 0.362488, 0.362398, 0.362309, 0.362220, 0.362130, + 0.362041, 0.361952, 0.361862, 0.361773, 0.361683, 0.361594, 0.361505, 0.361415, + 0.361326, 0.361236, 0.361147, 0.361058, 0.360968, 0.360879, 0.360789, 0.360700, + 0.360611, 0.360521, 0.360432, 0.360342, 0.360253, 0.360163, 0.360074, 0.359984, + 0.359895, 0.359806, 0.359716, 0.359627, 0.359537, 0.359448, 0.359358, 0.359269, + 0.359179, 0.359090, 0.359000, 0.358911, 0.358821, 0.358732, 0.358642, 0.358553, + 0.358463, 0.358374, 0.358284, 0.358195, 0.358105, 0.358016, 0.357926, 0.357837, + 0.357747, 0.357658, 0.357568, 0.357479, 0.357389, 0.357300, 0.357210, 0.357121, + 0.357031, 0.356941, 0.356852, 0.356762, 0.356673, 0.356583, 0.356494, 0.356404, + 0.356314, 0.356225, 0.356135, 0.356046, 0.355956, 0.355866, 0.355777, 0.355687, + 0.355598, 0.355508, 0.355418, 0.355329, 0.355239, 0.355150, 0.355060, 0.354970, + 0.354881, 0.354791, 0.354701, 0.354612, 0.354522, 0.354432, 0.354343, 0.354253, + 0.354164, 0.354074, 0.353984, 0.353895, 0.353805, 0.353715, 0.353626, 0.353536, + 0.353446, 0.353356, 0.353267, 0.353177, 0.353087, 0.352998, 0.352908, 0.352818, + 0.352729, 0.352639, 0.352549, 0.352459, 0.352370, 0.352280, 0.352190, 0.352100, + 0.352011, 0.351921, 0.351831, 0.351742, 0.351652, 0.351562, 0.351472, 0.351383, + 0.351293, 0.351203, 0.351113, 0.351023, 0.350934, 0.350844, 0.350754, 0.350664, + 0.350575, 0.350485, 0.350395, 0.350305, 0.350215, 0.350126, 0.350036, 0.349946, + 0.349856, 0.349766, 0.349676, 0.349587, 0.349497, 0.349407, 0.349317, 0.349227, + 0.349138, 0.349048, 0.348958, 0.348868, 0.348778, 0.348688, 0.348598, 0.348509, + 0.348419, 0.348329, 0.348239, 0.348149, 0.348059, 0.347969, 0.347879, 0.347790, + 0.347700, 0.347610, 0.347520, 0.347430, 0.347340, 0.347250, 0.347160, 0.347070, + 0.346980, 0.346890, 0.346801, 0.346711, 0.346621, 0.346531, 0.346441, 0.346351, + 0.346261, 0.346171, 0.346081, 0.345991, 0.345901, 0.345811, 0.345721, 0.345631, + 0.345541, 0.345451, 0.345361, 0.345271, 0.345181, 0.345091, 0.345001, 0.344911, + 0.344821, 0.344731, 0.344641, 0.344551, 0.344461, 0.344371, 0.344281, 0.344191, + 0.344101, 0.344011, 0.343921, 0.343831, 0.343741, 0.343651, 0.343561, 0.343471, + 0.343381, 0.343291, 0.343201, 0.343111, 0.343021, 0.342931, 0.342841, 0.342751, + 0.342661, 0.342571, 0.342481, 0.342391, 0.342300, 0.342210, 0.342120, 0.342030, + 0.341940, 0.341850, 0.341760, 0.341670, 0.341580, 0.341490, 0.341399, 0.341309, + 0.341219, 0.341129, 0.341039, 0.340949, 0.340859, 0.340769, 0.340678, 0.340588, + 0.340498, 0.340408, 0.340318, 0.340228, 0.340138, 0.340047, 0.339957, 0.339867, + 0.339777, 0.339687, 0.339597, 0.339506, 0.339416, 0.339326, 0.339236, 0.339146, + 0.339055, 0.338965, 0.338875, 0.338785, 0.338695, 0.338604, 0.338514, 0.338424, + 0.338334, 0.338244, 0.338153, 0.338063, 0.337973, 0.337883, 0.337792, 0.337702, + 0.337612, 0.337522, 0.337431, 0.337341, 0.337251, 0.337161, 0.337070, 0.336980, + 0.336890, 0.336800, 0.336709, 0.336619, 0.336529, 0.336438, 0.336348, 0.336258, + 0.336168, 0.336077, 0.335987, 0.335897, 0.335806, 0.335716, 0.335626, 0.335535, + 0.335445, 0.335355, 0.335265, 0.335174, 0.335084, 0.334994, 0.334903, 0.334813, + 0.334722, 0.334632, 0.334542, 0.334451, 0.334361, 0.334271, 0.334180, 0.334090, + 0.334000, 0.333909, 0.333819, 0.333729, 0.333638, 0.333548, 0.333457, 0.333367, + 0.333277, 0.333186, 0.333096, 0.333005, 0.332915, 0.332825, 0.332734, 0.332644, + 0.332553, 0.332463, 0.332373, 0.332282, 0.332192, 0.332101, 0.332011, 0.331920, + 0.331830, 0.331739, 0.331649, 0.331559, 0.331468, 0.331378, 0.331287, 0.331197, + 0.331106, 0.331016, 0.330925, 0.330835, 0.330744, 0.330654, 0.330563, 0.330473, + 0.330382, 0.330292, 0.330202, 0.330111, 0.330020, 0.329930, 0.329839, 0.329749, + 0.329658, 0.329568, 0.329477, 0.329387, 0.329296, 0.329206, 0.329115, 0.329025, + 0.328934, 0.328844, 0.328753, 0.328663, 0.328572, 0.328482, 0.328391, 0.328300, + 0.328210, 0.328119, 0.328029, 0.327938, 0.327848, 0.327757, 0.327666, 0.327576, + 0.327485, 0.327395, 0.327304, 0.327213, 0.327123, 0.327032, 0.326942, 0.326851, + 0.326760, 0.326670, 0.326579, 0.326489, 0.326398, 0.326307, 0.326217, 0.326126, + 0.326035, 0.325945, 0.325854, 0.325764, 0.325673, 0.325582, 0.325492, 0.325401, + 0.325310, 0.325220, 0.325129, 0.325038, 0.324948, 0.324857, 0.324766, 0.324676, + 0.324585, 0.324494, 0.324404, 0.324313, 0.324222, 0.324131, 0.324041, 0.323950, + 0.323859, 0.323769, 0.323678, 0.323587, 0.323497, 0.323406, 0.323315, 0.323224, + 0.323134, 0.323043, 0.322952, 0.322861, 0.322771, 0.322680, 0.322589, 0.322498, + 0.322408, 0.322317, 0.322226, 0.322135, 0.322045, 0.321954, 0.321863, 0.321772, + 0.321682, 0.321591, 0.321500, 0.321409, 0.321318, 0.321228, 0.321137, 0.321046, + 0.320955, 0.320864, 0.320774, 0.320683, 0.320592, 0.320501, 0.320410, 0.320320, + 0.320229, 0.320138, 0.320047, 0.319956, 0.319865, 0.319775, 0.319684, 0.319593, + 0.319502, 0.319411, 0.319320, 0.319229, 0.319139, 0.319048, 0.318957, 0.318866, + 0.318775, 0.318684, 0.318593, 0.318503, 0.318412, 0.318321, 0.318230, 0.318139, + 0.318048, 0.317957, 0.317866, 0.317775, 0.317684, 0.317594, 0.317503, 0.317412, + 0.317321, 0.317230, 0.317139, 0.317048, 0.316957, 0.316866, 0.316775, 0.316684, + 0.316593, 0.316502, 0.316411, 0.316321, 0.316230, 0.316139, 0.316048, 0.315957, + 0.315866, 0.315775, 0.315684, 0.315593, 0.315502, 0.315411, 0.315320, 0.315229, + 0.315138, 0.315047, 0.314956, 0.314865, 0.314774, 0.314683, 0.314592, 0.314501, + 0.314410, 0.314319, 0.314228, 0.314137, 0.314046, 0.313955, 0.313864, 0.313773, + 0.313682, 0.313591, 0.313500, 0.313409, 0.313318, 0.313227, 0.313135, 0.313044, + 0.312953, 0.312862, 0.312771, 0.312680, 0.312589, 0.312498, 0.312407, 0.312316, + 0.312225, 0.312134, 0.312043, 0.311952, 0.311860, 0.311769, 0.311678, 0.311587, + 0.311496, 0.311405, 0.311314, 0.311223, 0.311132, 0.311041, 0.310949, 0.310858, + 0.310767, 0.310676, 0.310585, 0.310494, 0.310403, 0.310311, 0.310220, 0.310129, + 0.310038, 0.309947, 0.309856, 0.309765, 0.309673, 0.309582, 0.309491, 0.309400, + 0.309309, 0.309218, 0.309126, 0.309035, 0.308944, 0.308853, 0.308762, 0.308670, + 0.308579, 0.308488, 0.308397, 0.308306, 0.308214, 0.308123, 0.308032, 0.307941, + 0.307850, 0.307758, 0.307667, 0.307576, 0.307485, 0.307394, 0.307302, 0.307211, + 0.307120, 0.307029, 0.306937, 0.306846, 0.306755, 0.306664, 0.306572, 0.306481, + 0.306390, 0.306299, 0.306207, 0.306116, 0.306025, 0.305933, 0.305842, 0.305751, + 0.305660, 0.305568, 0.305477, 0.305386, 0.305294, 0.305203, 0.305112, 0.305021, + 0.304929, 0.304838, 0.304747, 0.304655, 0.304564, 0.304473, 0.304381, 0.304290, + 0.304199, 0.304107, 0.304016, 0.303925, 0.303833, 0.303742, 0.303651, 0.303559, + 0.303468, 0.303377, 0.303285, 0.303194, 0.303103, 0.303011, 0.302920, 0.302828, + 0.302737, 0.302646, 0.302554, 0.302463, 0.302372, 0.302280, 0.302189, 0.302097, + 0.302006, 0.301915, 0.301823, 0.301732, 0.301640, 0.301549, 0.301458, 0.301366, + 0.301275, 0.301183, 0.301092, 0.301000, 0.300909, 0.300818, 0.300726, 0.300635, + 0.300543, 0.300452, 0.300360, 0.300269, 0.300177, 0.300086, 0.299995, 0.299903, + 0.299812, 0.299720, 0.299629, 0.299537, 0.299446, 0.299354, 0.299263, 0.299171, + 0.299080, 0.298988, 0.298897, 0.298805, 0.298714, 0.298622, 0.298531, 0.298439, + 0.298348, 0.298256, 0.298165, 0.298073, 0.297982, 0.297890, 0.297799, 0.297707, + 0.297616, 0.297524, 0.297433, 0.297341, 0.297250, 0.297158, 0.297066, 0.296975, + 0.296883, 0.296792, 0.296700, 0.296609, 0.296517, 0.296426, 0.296334, 0.296242, + 0.296151, 0.296059, 0.295968, 0.295876, 0.295785, 0.295693, 0.295601, 0.295510, + 0.295418, 0.295327, 0.295235, 0.295143, 0.295052, 0.294960, 0.294869, 0.294777, + 0.294685, 0.294594, 0.294502, 0.294410, 0.294319, 0.294227, 0.294136, 0.294044, + 0.293952, 0.293861, 0.293769, 0.293677, 0.293586, 0.293494, 0.293402, 0.293311, + 0.293219, 0.293128, 0.293036, 0.292944, 0.292852, 0.292761, 0.292669, 0.292577, + 0.292486, 0.292394, 0.292302, 0.292211, 0.292119, 0.292027, 0.291936, 0.291844, + 0.291752, 0.291661, 0.291569, 0.291477, 0.291385, 0.291294, 0.291202, 0.291110, + 0.291019, 0.290927, 0.290835, 0.290743, 0.290652, 0.290560, 0.290468, 0.290376, + 0.290285, 0.290193, 0.290101, 0.290009, 0.289918, 0.289826, 0.289734, 0.289642, + 0.289551, 0.289459, 0.289367, 0.289275, 0.289184, 0.289092, 0.289000, 0.288908, + 0.288816, 0.288725, 0.288633, 0.288541, 0.288449, 0.288357, 0.288266, 0.288174, + 0.288082, 0.287990, 0.287898, 0.287807, 0.287715, 0.287623, 0.287531, 0.287439, + 0.287347, 0.287256, 0.287164, 0.287072, 0.286980, 0.286888, 0.286796, 0.286705, + 0.286613, 0.286521, 0.286429, 0.286337, 0.286245, 0.286153, 0.286062, 0.285970, + 0.285878, 0.285786, 0.285694, 0.285602, 0.285510, 0.285418, 0.285327, 0.285235, + 0.285143, 0.285051, 0.284959, 0.284867, 0.284775, 0.284683, 0.284591, 0.284499, + 0.284408, 0.284316, 0.284224, 0.284132, 0.284040, 0.283948, 0.283856, 0.283764, + 0.283672, 0.283580, 0.283488, 0.283396, 0.283304, 0.283212, 0.283120, 0.283029, + 0.282937, 0.282845, 0.282753, 0.282661, 0.282569, 0.282477, 0.282385, 0.282293, + 0.282201, 0.282109, 0.282017, 0.281925, 0.281833, 0.281741, 0.281649, 0.281557, + 0.281465, 0.281373, 0.281281, 0.281189, 0.281097, 0.281005, 0.280913, 0.280821, + 0.280729, 0.280637, 0.280545, 0.280453, 0.280361, 0.280269, 0.280177, 0.280085, + 0.279993, 0.279901, 0.279809, 0.279717, 0.279624, 0.279532, 0.279440, 0.279348, + 0.279256, 0.279164, 0.279072, 0.278980, 0.278888, 0.278796, 0.278704, 0.278612, + 0.278520, 0.278428, 0.278336, 0.278243, 0.278151, 0.278059, 0.277967, 0.277875, + 0.277783, 0.277691, 0.277599, 0.277507, 0.277415, 0.277322, 0.277230, 0.277138, + 0.277046, 0.276954, 0.276862, 0.276770, 0.276678, 0.276585, 0.276493, 0.276401, + 0.276309, 0.276217, 0.276125, 0.276033, 0.275940, 0.275848, 0.275756, 0.275664, + 0.275572, 0.275480, 0.275387, 0.275295, 0.275203, 0.275111, 0.275019, 0.274927, + 0.274834, 0.274742, 0.274650, 0.274558, 0.274466, 0.274374, 0.274281, 0.274189, + 0.274097, 0.274005, 0.273912, 0.273820, 0.273728, 0.273636, 0.273544, 0.273451, + 0.273359, 0.273267, 0.273175, 0.273083, 0.272990, 0.272898, 0.272806, 0.272714, + 0.272621, 0.272529, 0.272437, 0.272345, 0.272252, 0.272160, 0.272068, 0.271976, + 0.271883, 0.271791, 0.271699, 0.271607, 0.271514, 0.271422, 0.271330, 0.271237, + 0.271145, 0.271053, 0.270961, 0.270868, 0.270776, 0.270684, 0.270591, 0.270499, + 0.270407, 0.270315, 0.270222, 0.270130, 0.270038, 0.269945, 0.269853, 0.269761, + 0.269668, 0.269576, 0.269484, 0.269391, 0.269299, 0.269207, 0.269114, 0.269022, + 0.268930, 0.268837, 0.268745, 0.268653, 0.268560, 0.268468, 0.268376, 0.268283, + 0.268191, 0.268099, 0.268006, 0.267914, 0.267821, 0.267729, 0.267637, 0.267544, + 0.267452, 0.267359, 0.267267, 0.267175, 0.267082, 0.266990, 0.266898, 0.266805, + 0.266713, 0.266620, 0.266528, 0.266436, 0.266343, 0.266251, 0.266158, 0.266066, + 0.265973, 0.265881, 0.265789, 0.265696, 0.265604, 0.265511, 0.265419, 0.265326, + 0.265234, 0.265142, 0.265049, 0.264957, 0.264864, 0.264772, 0.264679, 0.264587, + 0.264494, 0.264402, 0.264309, 0.264217, 0.264125, 0.264032, 0.263940, 0.263847, + 0.263755, 0.263662, 0.263570, 0.263477, 0.263385, 0.263292, 0.263200, 0.263107, + 0.263015, 0.262922, 0.262830, 0.262737, 0.262645, 0.262552, 0.262460, 0.262367, + 0.262275, 0.262182, 0.262090, 0.261997, 0.261905, 0.261812, 0.261720, 0.261627, + 0.261534, 0.261442, 0.261349, 0.261257, 0.261164, 0.261072, 0.260979, 0.260887, + 0.260794, 0.260702, 0.260609, 0.260516, 0.260424, 0.260331, 0.260239, 0.260146, + 0.260054, 0.259961, 0.259868, 0.259776, 0.259683, 0.259591, 0.259498, 0.259405, + 0.259313, 0.259220, 0.259128, 0.259035, 0.258943, 0.258850, 0.258757, 0.258665, + 0.258572, 0.258479, 0.258387, 0.258294, 0.258202, 0.258109, 0.258016, 0.257924, + 0.257831, 0.257738, 0.257646, 0.257553, 0.257461, 0.257368, 0.257275, 0.257183, + 0.257090, 0.256997, 0.256905, 0.256812, 0.256719, 0.256627, 0.256534, 0.256441, + 0.256349, 0.256256, 0.256163, 0.256071, 0.255978, 0.255885, 0.255793, 0.255700, + 0.255607, 0.255515, 0.255422, 0.255329, 0.255236, 0.255144, 0.255051, 0.254958, + 0.254866, 0.254773, 0.254680, 0.254588, 0.254495, 0.254402, 0.254309, 0.254217, + 0.254124, 0.254031, 0.253938, 0.253846, 0.253753, 0.253660, 0.253568, 0.253475, + 0.253382, 0.253289, 0.253197, 0.253104, 0.253011, 0.252918, 0.252826, 0.252733, + 0.252640, 0.252547, 0.252454, 0.252362, 0.252269, 0.252176, 0.252083, 0.251991, + 0.251898, 0.251805, 0.251712, 0.251619, 0.251527, 0.251434, 0.251341, 0.251248, + 0.251155, 0.251063, 0.250970, 0.250877, 0.250784, 0.250691, 0.250599, 0.250506, + 0.250413, 0.250320, 0.250227, 0.250135, 0.250042, 0.249949, 0.249856, 0.249763, + 0.249670, 0.249578, 0.249485, 0.249392, 0.249299, 0.249206, 0.249113, 0.249020, + 0.248928, 0.248835, 0.248742, 0.248649, 0.248556, 0.248463, 0.248370, 0.248278, + 0.248185, 0.248092, 0.247999, 0.247906, 0.247813, 0.247720, 0.247627, 0.247535, + 0.247442, 0.247349, 0.247256, 0.247163, 0.247070, 0.246977, 0.246884, 0.246791, + 0.246698, 0.246606, 0.246513, 0.246420, 0.246327, 0.246234, 0.246141, 0.246048, + 0.245955, 0.245862, 0.245769, 0.245676, 0.245583, 0.245490, 0.245397, 0.245304, + 0.245212, 0.245119, 0.245026, 0.244933, 0.244840, 0.244747, 0.244654, 0.244561, + 0.244468, 0.244375, 0.244282, 0.244189, 0.244096, 0.244003, 0.243910, 0.243817, + 0.243724, 0.243631, 0.243538, 0.243445, 0.243352, 0.243259, 0.243166, 0.243073, + 0.242980, 0.242887, 0.242794, 0.242701, 0.242608, 0.242515, 0.242422, 0.242329, + 0.242236, 0.242143, 0.242050, 0.241957, 0.241864, 0.241771, 0.241678, 0.241585, + 0.241492, 0.241399, 0.241306, 0.241213, 0.241120, 0.241027, 0.240934, 0.240841, + 0.240748, 0.240654, 0.240561, 0.240468, 0.240375, 0.240282, 0.240189, 0.240096, + 0.240003, 0.239910, 0.239817, 0.239724, 0.239631, 0.239538, 0.239445, 0.239351, + 0.239258, 0.239165, 0.239072, 0.238979, 0.238886, 0.238793, 0.238700, 0.238607, + 0.238514, 0.238420, 0.238327, 0.238234, 0.238141, 0.238048, 0.237955, 0.237862, + 0.237769, 0.237676, 0.237582, 0.237489, 0.237396, 0.237303, 0.237210, 0.237117, + 0.237024, 0.236930, 0.236837, 0.236744, 0.236651, 0.236558, 0.236465, 0.236372, + 0.236278, 0.236185, 0.236092, 0.235999, 0.235906, 0.235813, 0.235719, 0.235626, + 0.235533, 0.235440, 0.235347, 0.235254, 0.235160, 0.235067, 0.234974, 0.234881, + 0.234788, 0.234694, 0.234601, 0.234508, 0.234415, 0.234322, 0.234228, 0.234135, + 0.234042, 0.233949, 0.233856, 0.233762, 0.233669, 0.233576, 0.233483, 0.233389, + 0.233296, 0.233203, 0.233110, 0.233017, 0.232923, 0.232830, 0.232737, 0.232644, + 0.232550, 0.232457, 0.232364, 0.232271, 0.232177, 0.232084, 0.231991, 0.231898, + 0.231804, 0.231711, 0.231618, 0.231524, 0.231431, 0.231338, 0.231245, 0.231151, + 0.231058, 0.230965, 0.230872, 0.230778, 0.230685, 0.230592, 0.230498, 0.230405, + 0.230312, 0.230218, 0.230125, 0.230032, 0.229939, 0.229845, 0.229752, 0.229659, + 0.229565, 0.229472, 0.229379, 0.229285, 0.229192, 0.229099, 0.229005, 0.228912, + 0.228819, 0.228725, 0.228632, 0.228539, 0.228445, 0.228352, 0.228259, 0.228165, + 0.228072, 0.227979, 0.227885, 0.227792, 0.227699, 0.227605, 0.227512, 0.227419, + 0.227325, 0.227232, 0.227139, 0.227045, 0.226952, 0.226858, 0.226765, 0.226672, + 0.226578, 0.226485, 0.226391, 0.226298, 0.226205, 0.226111, 0.226018, 0.225925, + 0.225831, 0.225738, 0.225644, 0.225551, 0.225458, 0.225364, 0.225271, 0.225177, + 0.225084, 0.224991, 0.224897, 0.224804, 0.224710, 0.224617, 0.224523, 0.224430, + 0.224337, 0.224243, 0.224150, 0.224056, 0.223963, 0.223869, 0.223776, 0.223682, + 0.223589, 0.223496, 0.223402, 0.223309, 0.223215, 0.223122, 0.223028, 0.222935, + 0.222841, 0.222748, 0.222654, 0.222561, 0.222468, 0.222374, 0.222281, 0.222187, + 0.222094, 0.222000, 0.221907, 0.221813, 0.221720, 0.221626, 0.221533, 0.221439, + 0.221346, 0.221252, 0.221159, 0.221065, 0.220972, 0.220878, 0.220785, 0.220691, + 0.220598, 0.220504, 0.220411, 0.220317, 0.220224, 0.220130, 0.220037, 0.219943, + 0.219850, 0.219756, 0.219662, 0.219569, 0.219475, 0.219382, 0.219288, 0.219195, + 0.219101, 0.219008, 0.218914, 0.218821, 0.218727, 0.218633, 0.218540, 0.218446, + 0.218353, 0.218259, 0.218166, 0.218072, 0.217979, 0.217885, 0.217791, 0.217698, + 0.217604, 0.217511, 0.217417, 0.217324, 0.217230, 0.217136, 0.217043, 0.216949, + 0.216856, 0.216762, 0.216668, 0.216575, 0.216481, 0.216388, 0.216294, 0.216200, + 0.216107, 0.216013, 0.215920, 0.215826, 0.215732, 0.215639, 0.215545, 0.215451, + 0.215358, 0.215264, 0.215171, 0.215077, 0.214983, 0.214890, 0.214796, 0.214702, + 0.214609, 0.214515, 0.214422, 0.214328, 0.214234, 0.214141, 0.214047, 0.213953, + 0.213860, 0.213766, 0.213672, 0.213579, 0.213485, 0.213391, 0.213298, 0.213204, + 0.213110, 0.213017, 0.212923, 0.212829, 0.212736, 0.212642, 0.212548, 0.212455, + 0.212361, 0.212267, 0.212174, 0.212080, 0.211986, 0.211892, 0.211799, 0.211705, + 0.211611, 0.211518, 0.211424, 0.211330, 0.211237, 0.211143, 0.211049, 0.210955, + 0.210862, 0.210768, 0.210674, 0.210580, 0.210487, 0.210393, 0.210299, 0.210206, + 0.210112, 0.210018, 0.209924, 0.209831, 0.209737, 0.209643, 0.209549, 0.209456, + 0.209362, 0.209268, 0.209174, 0.209081, 0.208987, 0.208893, 0.208799, 0.208706, + 0.208612, 0.208518, 0.208424, 0.208331, 0.208237, 0.208143, 0.208049, 0.207955, + 0.207862, 0.207768, 0.207674, 0.207580, 0.207487, 0.207393, 0.207299, 0.207205, + 0.207111, 0.207018, 0.206924, 0.206830, 0.206736, 0.206642, 0.206549, 0.206455, + 0.206361, 0.206267, 0.206173, 0.206080, 0.205986, 0.205892, 0.205798, 0.205704, + 0.205610, 0.205517, 0.205423, 0.205329, 0.205235, 0.205141, 0.205047, 0.204954, + 0.204860, 0.204766, 0.204672, 0.204578, 0.204484, 0.204391, 0.204297, 0.204203, + 0.204109, 0.204015, 0.203921, 0.203827, 0.203734, 0.203640, 0.203546, 0.203452, + 0.203358, 0.203264, 0.203170, 0.203076, 0.202983, 0.202889, 0.202795, 0.202701, + 0.202607, 0.202513, 0.202419, 0.202325, 0.202231, 0.202138, 0.202044, 0.201950, + 0.201856, 0.201762, 0.201668, 0.201574, 0.201480, 0.201386, 0.201292, 0.201199, + 0.201105, 0.201011, 0.200917, 0.200823, 0.200729, 0.200635, 0.200541, 0.200447, + 0.200353, 0.200259, 0.200165, 0.200071, 0.199978, 0.199884, 0.199790, 0.199696, + 0.199602, 0.199508, 0.199414, 0.199320, 0.199226, 0.199132, 0.199038, 0.198944, + 0.198850, 0.198756, 0.198662, 0.198568, 0.198474, 0.198380, 0.198286, 0.198192, + 0.198098, 0.198004, 0.197910, 0.197816, 0.197722, 0.197629, 0.197535, 0.197441, + 0.197347, 0.197253, 0.197159, 0.197065, 0.196971, 0.196877, 0.196783, 0.196689, + 0.196595, 0.196501, 0.196407, 0.196313, 0.196219, 0.196125, 0.196031, 0.195937, + 0.195843, 0.195748, 0.195654, 0.195560, 0.195466, 0.195372, 0.195278, 0.195184, + 0.195090, 0.194996, 0.194902, 0.194808, 0.194714, 0.194620, 0.194526, 0.194432, + 0.194338, 0.194244, 0.194150, 0.194056, 0.193962, 0.193868, 0.193774, 0.193680, + 0.193586, 0.193492, 0.193397, 0.193303, 0.193209, 0.193115, 0.193021, 0.192927, + 0.192833, 0.192739, 0.192645, 0.192551, 0.192457, 0.192363, 0.192269, 0.192174, + 0.192080, 0.191986, 0.191892, 0.191798, 0.191704, 0.191610, 0.191516, 0.191422, + 0.191328, 0.191234, 0.191139, 0.191045, 0.190951, 0.190857, 0.190763, 0.190669, + 0.190575, 0.190481, 0.190387, 0.190292, 0.190198, 0.190104, 0.190010, 0.189916, + 0.189822, 0.189728, 0.189634, 0.189539, 0.189445, 0.189351, 0.189257, 0.189163, + 0.189069, 0.188975, 0.188880, 0.188786, 0.188692, 0.188598, 0.188504, 0.188410, + 0.188315, 0.188221, 0.188127, 0.188033, 0.187939, 0.187845, 0.187750, 0.187656, + 0.187562, 0.187468, 0.187374, 0.187280, 0.187185, 0.187091, 0.186997, 0.186903, + 0.186809, 0.186715, 0.186620, 0.186526, 0.186432, 0.186338, 0.186244, 0.186149, + 0.186055, 0.185961, 0.185867, 0.185773, 0.185678, 0.185584, 0.185490, 0.185396, + 0.185301, 0.185207, 0.185113, 0.185019, 0.184925, 0.184830, 0.184736, 0.184642, + 0.184548, 0.184454, 0.184359, 0.184265, 0.184171, 0.184077, 0.183982, 0.183888, + 0.183794, 0.183700, 0.183605, 0.183511, 0.183417, 0.183323, 0.183228, 0.183134, + 0.183040, 0.182946, 0.182851, 0.182757, 0.182663, 0.182569, 0.182474, 0.182380, + 0.182286, 0.182192, 0.182097, 0.182003, 0.181909, 0.181814, 0.181720, 0.181626, + 0.181532, 0.181437, 0.181343, 0.181249, 0.181154, 0.181060, 0.180966, 0.180872, + 0.180777, 0.180683, 0.180589, 0.180494, 0.180400, 0.180306, 0.180212, 0.180117, + 0.180023, 0.179929, 0.179834, 0.179740, 0.179646, 0.179551, 0.179457, 0.179363, + 0.179268, 0.179174, 0.179080, 0.178985, 0.178891, 0.178797, 0.178702, 0.178608, + 0.178514, 0.178419, 0.178325, 0.178231, 0.178136, 0.178042, 0.177948, 0.177853, + 0.177759, 0.177665, 0.177570, 0.177476, 0.177382, 0.177287, 0.177193, 0.177099, + 0.177004, 0.176910, 0.176815, 0.176721, 0.176627, 0.176532, 0.176438, 0.176344, + 0.176249, 0.176155, 0.176061, 0.175966, 0.175872, 0.175777, 0.175683, 0.175589, + 0.175494, 0.175400, 0.175305, 0.175211, 0.175117, 0.175022, 0.174928, 0.174834, + 0.174739, 0.174645, 0.174550, 0.174456, 0.174362, 0.174267, 0.174173, 0.174078, + 0.173984, 0.173889, 0.173795, 0.173701, 0.173606, 0.173512, 0.173417, 0.173323, + 0.173229, 0.173134, 0.173040, 0.172945, 0.172851, 0.172756, 0.172662, 0.172568, + 0.172473, 0.172379, 0.172284, 0.172190, 0.172095, 0.172001, 0.171906, 0.171812, + 0.171718, 0.171623, 0.171529, 0.171434, 0.171340, 0.171245, 0.171151, 0.171056, + 0.170962, 0.170867, 0.170773, 0.170678, 0.170584, 0.170490, 0.170395, 0.170301, + 0.170206, 0.170112, 0.170017, 0.169923, 0.169828, 0.169734, 0.169639, 0.169545, + 0.169450, 0.169356, 0.169261, 0.169167, 0.169072, 0.168978, 0.168883, 0.168789, + 0.168694, 0.168600, 0.168505, 0.168411, 0.168316, 0.168222, 0.168127, 0.168033, + 0.167938, 0.167844, 0.167749, 0.167655, 0.167560, 0.167466, 0.167371, 0.167277, + 0.167182, 0.167088, 0.166993, 0.166899, 0.166804, 0.166710, 0.166615, 0.166520, + 0.166426, 0.166331, 0.166237, 0.166142, 0.166048, 0.165953, 0.165859, 0.165764, + 0.165670, 0.165575, 0.165480, 0.165386, 0.165291, 0.165197, 0.165102, 0.165008, + 0.164913, 0.164819, 0.164724, 0.164629, 0.164535, 0.164440, 0.164346, 0.164251, + 0.164157, 0.164062, 0.163967, 0.163873, 0.163778, 0.163684, 0.163589, 0.163495, + 0.163400, 0.163305, 0.163211, 0.163116, 0.163022, 0.162927, 0.162832, 0.162738, + 0.162643, 0.162549, 0.162454, 0.162359, 0.162265, 0.162170, 0.162076, 0.161981, + 0.161886, 0.161792, 0.161697, 0.161603, 0.161508, 0.161413, 0.161319, 0.161224, + 0.161129, 0.161035, 0.160940, 0.160846, 0.160751, 0.160656, 0.160562, 0.160467, + 0.160372, 0.160278, 0.160183, 0.160089, 0.159994, 0.159899, 0.159805, 0.159710, + 0.159615, 0.159521, 0.159426, 0.159331, 0.159237, 0.159142, 0.159047, 0.158953, + 0.158858, 0.158763, 0.158669, 0.158574, 0.158480, 0.158385, 0.158290, 0.158196, + 0.158101, 0.158006, 0.157912, 0.157817, 0.157722, 0.157627, 0.157533, 0.157438, + 0.157343, 0.157249, 0.157154, 0.157059, 0.156965, 0.156870, 0.156775, 0.156681, + 0.156586, 0.156491, 0.156397, 0.156302, 0.156207, 0.156112, 0.156018, 0.155923, + 0.155828, 0.155734, 0.155639, 0.155544, 0.155450, 0.155355, 0.155260, 0.155165, + 0.155071, 0.154976, 0.154881, 0.154787, 0.154692, 0.154597, 0.154502, 0.154408, + 0.154313, 0.154218, 0.154124, 0.154029, 0.153934, 0.153839, 0.153745, 0.153650, + 0.153555, 0.153460, 0.153366, 0.153271, 0.153176, 0.153081, 0.152987, 0.152892, + 0.152797, 0.152702, 0.152608, 0.152513, 0.152418, 0.152323, 0.152229, 0.152134, + 0.152039, 0.151944, 0.151850, 0.151755, 0.151660, 0.151565, 0.151471, 0.151376, + 0.151281, 0.151186, 0.151092, 0.150997, 0.150902, 0.150807, 0.150712, 0.150618, + 0.150523, 0.150428, 0.150333, 0.150238, 0.150144, 0.150049, 0.149954, 0.149859, + 0.149765, 0.149670, 0.149575, 0.149480, 0.149385, 0.149291, 0.149196, 0.149101, + 0.149006, 0.148911, 0.148817, 0.148722, 0.148627, 0.148532, 0.148437, 0.148342, + 0.148248, 0.148153, 0.148058, 0.147963, 0.147868, 0.147774, 0.147679, 0.147584, + 0.147489, 0.147394, 0.147299, 0.147205, 0.147110, 0.147015, 0.146920, 0.146825, + 0.146730, 0.146636, 0.146541, 0.146446, 0.146351, 0.146256, 0.146161, 0.146067, + 0.145972, 0.145877, 0.145782, 0.145687, 0.145592, 0.145497, 0.145403, 0.145308, + 0.145213, 0.145118, 0.145023, 0.144928, 0.144833, 0.144739, 0.144644, 0.144549, + 0.144454, 0.144359, 0.144264, 0.144169, 0.144075, 0.143980, 0.143885, 0.143790, + 0.143695, 0.143600, 0.143505, 0.143410, 0.143316, 0.143221, 0.143126, 0.143031, + 0.142936, 0.142841, 0.142746, 0.142651, 0.142556, 0.142461, 0.142367, 0.142272, + 0.142177, 0.142082, 0.141987, 0.141892, 0.141797, 0.141702, 0.141607, 0.141512, + 0.141418, 0.141323, 0.141228, 0.141133, 0.141038, 0.140943, 0.140848, 0.140753, + 0.140658, 0.140563, 0.140468, 0.140373, 0.140279, 0.140184, 0.140089, 0.139994, + 0.139899, 0.139804, 0.139709, 0.139614, 0.139519, 0.139424, 0.139329, 0.139234, + 0.139139, 0.139044, 0.138949, 0.138855, 0.138760, 0.138665, 0.138570, 0.138475, + 0.138380, 0.138285, 0.138190, 0.138095, 0.138000, 0.137905, 0.137810, 0.137715, + 0.137620, 0.137525, 0.137430, 0.137335, 0.137240, 0.137145, 0.137050, 0.136955, + 0.136860, 0.136765, 0.136670, 0.136575, 0.136480, 0.136386, 0.136291, 0.136196, + 0.136101, 0.136006, 0.135911, 0.135816, 0.135721, 0.135626, 0.135531, 0.135436, + 0.135341, 0.135246, 0.135151, 0.135056, 0.134961, 0.134866, 0.134771, 0.134676, + 0.134581, 0.134486, 0.134391, 0.134296, 0.134201, 0.134106, 0.134011, 0.133916, + 0.133821, 0.133726, 0.133631, 0.133536, 0.133441, 0.133346, 0.133251, 0.133156, + 0.133061, 0.132966, 0.132870, 0.132775, 0.132680, 0.132585, 0.132490, 0.132395, + 0.132300, 0.132205, 0.132110, 0.132015, 0.131920, 0.131825, 0.131730, 0.131635, + 0.131540, 0.131445, 0.131350, 0.131255, 0.131160, 0.131065, 0.130970, 0.130875, + 0.130780, 0.130685, 0.130590, 0.130495, 0.130399, 0.130304, 0.130209, 0.130114, + 0.130019, 0.129924, 0.129829, 0.129734, 0.129639, 0.129544, 0.129449, 0.129354, + 0.129259, 0.129164, 0.129069, 0.128973, 0.128878, 0.128783, 0.128688, 0.128593, + 0.128498, 0.128403, 0.128308, 0.128213, 0.128118, 0.128023, 0.127928, 0.127833, + 0.127737, 0.127642, 0.127547, 0.127452, 0.127357, 0.127262, 0.127167, 0.127072, + 0.126977, 0.126882, 0.126787, 0.126691, 0.126596, 0.126501, 0.126406, 0.126311, + 0.126216, 0.126121, 0.126026, 0.125931, 0.125835, 0.125740, 0.125645, 0.125550, + 0.125455, 0.125360, 0.125265, 0.125170, 0.125075, 0.124979, 0.124884, 0.124789, + 0.124694, 0.124599, 0.124504, 0.124409, 0.124314, 0.124218, 0.124123, 0.124028, + 0.123933, 0.123838, 0.123743, 0.123648, 0.123552, 0.123457, 0.123362, 0.123267, + 0.123172, 0.123077, 0.122982, 0.122886, 0.122791, 0.122696, 0.122601, 0.122506, + 0.122411, 0.122316, 0.122220, 0.122125, 0.122030, 0.121935, 0.121840, 0.121745, + 0.121649, 0.121554, 0.121459, 0.121364, 0.121269, 0.121174, 0.121078, 0.120983, + 0.120888, 0.120793, 0.120698, 0.120603, 0.120507, 0.120412, 0.120317, 0.120222, + 0.120127, 0.120032, 0.119936, 0.119841, 0.119746, 0.119651, 0.119556, 0.119460, + 0.119365, 0.119270, 0.119175, 0.119080, 0.118984, 0.118889, 0.118794, 0.118699, + 0.118604, 0.118508, 0.118413, 0.118318, 0.118223, 0.118128, 0.118032, 0.117937, + 0.117842, 0.117747, 0.117652, 0.117556, 0.117461, 0.117366, 0.117271, 0.117176, + 0.117080, 0.116985, 0.116890, 0.116795, 0.116700, 0.116604, 0.116509, 0.116414, + 0.116319, 0.116223, 0.116128, 0.116033, 0.115938, 0.115842, 0.115747, 0.115652, + 0.115557, 0.115462, 0.115366, 0.115271, 0.115176, 0.115081, 0.114985, 0.114890, + 0.114795, 0.114700, 0.114604, 0.114509, 0.114414, 0.114319, 0.114223, 0.114128, + 0.114033, 0.113938, 0.113842, 0.113747, 0.113652, 0.113557, 0.113461, 0.113366, + 0.113271, 0.113176, 0.113080, 0.112985, 0.112890, 0.112795, 0.112699, 0.112604, + 0.112509, 0.112414, 0.112318, 0.112223, 0.112128, 0.112033, 0.111937, 0.111842, + 0.111747, 0.111651, 0.111556, 0.111461, 0.111366, 0.111270, 0.111175, 0.111080, + 0.110984, 0.110889, 0.110794, 0.110699, 0.110603, 0.110508, 0.110413, 0.110317, + 0.110222, 0.110127, 0.110032, 0.109936, 0.109841, 0.109746, 0.109650, 0.109555, + 0.109460, 0.109365, 0.109269, 0.109174, 0.109079, 0.108983, 0.108888, 0.108793, + 0.108697, 0.108602, 0.108507, 0.108412, 0.108316, 0.108221, 0.108126, 0.108030, + 0.107935, 0.107840, 0.107744, 0.107649, 0.107554, 0.107458, 0.107363, 0.107268, + 0.107172, 0.107077, 0.106982, 0.106886, 0.106791, 0.106696, 0.106600, 0.106505, + 0.106410, 0.106314, 0.106219, 0.106124, 0.106028, 0.105933, 0.105838, 0.105742, + 0.105647, 0.105552, 0.105456, 0.105361, 0.105266, 0.105170, 0.105075, 0.104980, + 0.104884, 0.104789, 0.104694, 0.104598, 0.104503, 0.104408, 0.104312, 0.104217, + 0.104122, 0.104026, 0.103931, 0.103836, 0.103740, 0.103645, 0.103550, 0.103454, + 0.103359, 0.103263, 0.103168, 0.103073, 0.102977, 0.102882, 0.102787, 0.102691, + 0.102596, 0.102500, 0.102405, 0.102310, 0.102214, 0.102119, 0.102024, 0.101928, + 0.101833, 0.101738, 0.101642, 0.101547, 0.101451, 0.101356, 0.101261, 0.101165, + 0.101070, 0.100974, 0.100879, 0.100784, 0.100688, 0.100593, 0.100498, 0.100402, + 0.100307, 0.100211, 0.100116, 0.100021, 0.099925, 0.099830, 0.099734, 0.099639, + 0.099544, 0.099448, 0.099353, 0.099257, 0.099162, 0.099067, 0.098971, 0.098876, + 0.098780, 0.098685, 0.098590, 0.098494, 0.098399, 0.098303, 0.098208, 0.098113, + 0.098017, 0.097922, 0.097826, 0.097731, 0.097635, 0.097540, 0.097445, 0.097349, + 0.097254, 0.097158, 0.097063, 0.096968, 0.096872, 0.096777, 0.096681, 0.096586, + 0.096490, 0.096395, 0.096300, 0.096204, 0.096109, 0.096013, 0.095918, 0.095822, + 0.095727, 0.095632, 0.095536, 0.095441, 0.095345, 0.095250, 0.095154, 0.095059, + 0.094963, 0.094868, 0.094773, 0.094677, 0.094582, 0.094486, 0.094391, 0.094295, + 0.094200, 0.094104, 0.094009, 0.093914, 0.093818, 0.093723, 0.093627, 0.093532, + 0.093436, 0.093341, 0.093245, 0.093150, 0.093055, 0.092959, 0.092864, 0.092768, + 0.092673, 0.092577, 0.092482, 0.092386, 0.092291, 0.092195, 0.092100, 0.092004, + 0.091909, 0.091813, 0.091718, 0.091623, 0.091527, 0.091432, 0.091336, 0.091241, + 0.091145, 0.091050, 0.090954, 0.090859, 0.090763, 0.090668, 0.090572, 0.090477, + 0.090381, 0.090286, 0.090190, 0.090095, 0.089999, 0.089904, 0.089808, 0.089713, + 0.089617, 0.089522, 0.089427, 0.089331, 0.089236, 0.089140, 0.089045, 0.088949, + 0.088854, 0.088758, 0.088663, 0.088567, 0.088472, 0.088376, 0.088281, 0.088185, + 0.088090, 0.087994, 0.087899, 0.087803, 0.087708, 0.087612, 0.087517, 0.087421, + 0.087326, 0.087230, 0.087135, 0.087039, 0.086943, 0.086848, 0.086752, 0.086657, + 0.086561, 0.086466, 0.086370, 0.086275, 0.086179, 0.086084, 0.085988, 0.085893, + 0.085797, 0.085702, 0.085606, 0.085511, 0.085415, 0.085320, 0.085224, 0.085129, + 0.085033, 0.084938, 0.084842, 0.084747, 0.084651, 0.084555, 0.084460, 0.084364, + 0.084269, 0.084173, 0.084078, 0.083982, 0.083887, 0.083791, 0.083696, 0.083600, + 0.083505, 0.083409, 0.083314, 0.083218, 0.083122, 0.083027, 0.082931, 0.082836, + 0.082740, 0.082645, 0.082549, 0.082454, 0.082358, 0.082263, 0.082167, 0.082071, + 0.081976, 0.081880, 0.081785, 0.081689, 0.081594, 0.081498, 0.081403, 0.081307, + 0.081211, 0.081116, 0.081020, 0.080925, 0.080829, 0.080734, 0.080638, 0.080543, + 0.080447, 0.080351, 0.080256, 0.080160, 0.080065, 0.079969, 0.079874, 0.079778, + 0.079682, 0.079587, 0.079491, 0.079396, 0.079300, 0.079205, 0.079109, 0.079013, + 0.078918, 0.078822, 0.078727, 0.078631, 0.078536, 0.078440, 0.078344, 0.078249, + 0.078153, 0.078058, 0.077962, 0.077866, 0.077771, 0.077675, 0.077580, 0.077484, + 0.077389, 0.077293, 0.077197, 0.077102, 0.077006, 0.076911, 0.076815, 0.076719, + 0.076624, 0.076528, 0.076433, 0.076337, 0.076241, 0.076146, 0.076050, 0.075955, + 0.075859, 0.075764, 0.075668, 0.075572, 0.075477, 0.075381, 0.075286, 0.075190, + 0.075094, 0.074999, 0.074903, 0.074807, 0.074712, 0.074616, 0.074521, 0.074425, + 0.074329, 0.074234, 0.074138, 0.074043, 0.073947, 0.073851, 0.073756, 0.073660, + 0.073565, 0.073469, 0.073373, 0.073278, 0.073182, 0.073086, 0.072991, 0.072895, + 0.072800, 0.072704, 0.072608, 0.072513, 0.072417, 0.072322, 0.072226, 0.072130, + 0.072035, 0.071939, 0.071843, 0.071748, 0.071652, 0.071557, 0.071461, 0.071365, + 0.071270, 0.071174, 0.071078, 0.070983, 0.070887, 0.070791, 0.070696, 0.070600, + 0.070505, 0.070409, 0.070313, 0.070218, 0.070122, 0.070026, 0.069931, 0.069835, + 0.069739, 0.069644, 0.069548, 0.069453, 0.069357, 0.069261, 0.069166, 0.069070, + 0.068974, 0.068879, 0.068783, 0.068687, 0.068592, 0.068496, 0.068400, 0.068305, + 0.068209, 0.068113, 0.068018, 0.067922, 0.067827, 0.067731, 0.067635, 0.067540, + 0.067444, 0.067348, 0.067253, 0.067157, 0.067061, 0.066966, 0.066870, 0.066774, + 0.066679, 0.066583, 0.066487, 0.066392, 0.066296, 0.066200, 0.066105, 0.066009, + 0.065913, 0.065818, 0.065722, 0.065626, 0.065531, 0.065435, 0.065339, 0.065244, + 0.065148, 0.065052, 0.064957, 0.064861, 0.064765, 0.064670, 0.064574, 0.064478, + 0.064383, 0.064287, 0.064191, 0.064096, 0.064000, 0.063904, 0.063809, 0.063713, + 0.063617, 0.063522, 0.063426, 0.063330, 0.063234, 0.063139, 0.063043, 0.062947, + 0.062852, 0.062756, 0.062660, 0.062565, 0.062469, 0.062373, 0.062278, 0.062182, + 0.062086, 0.061991, 0.061895, 0.061799, 0.061704, 0.061608, 0.061512, 0.061416, + 0.061321, 0.061225, 0.061129, 0.061034, 0.060938, 0.060842, 0.060747, 0.060651, + 0.060555, 0.060459, 0.060364, 0.060268, 0.060172, 0.060077, 0.059981, 0.059885, + 0.059790, 0.059694, 0.059598, 0.059502, 0.059407, 0.059311, 0.059215, 0.059120, + 0.059024, 0.058928, 0.058833, 0.058737, 0.058641, 0.058545, 0.058450, 0.058354, + 0.058258, 0.058163, 0.058067, 0.057971, 0.057875, 0.057780, 0.057684, 0.057588, + 0.057493, 0.057397, 0.057301, 0.057205, 0.057110, 0.057014, 0.056918, 0.056823, + 0.056727, 0.056631, 0.056535, 0.056440, 0.056344, 0.056248, 0.056152, 0.056057, + 0.055961, 0.055865, 0.055770, 0.055674, 0.055578, 0.055482, 0.055387, 0.055291, + 0.055195, 0.055100, 0.055004, 0.054908, 0.054812, 0.054717, 0.054621, 0.054525, + 0.054429, 0.054334, 0.054238, 0.054142, 0.054046, 0.053951, 0.053855, 0.053759, + 0.053664, 0.053568, 0.053472, 0.053376, 0.053281, 0.053185, 0.053089, 0.052993, + 0.052898, 0.052802, 0.052706, 0.052610, 0.052515, 0.052419, 0.052323, 0.052227, + 0.052132, 0.052036, 0.051940, 0.051844, 0.051749, 0.051653, 0.051557, 0.051461, + 0.051366, 0.051270, 0.051174, 0.051078, 0.050983, 0.050887, 0.050791, 0.050696, + 0.050600, 0.050504, 0.050408, 0.050312, 0.050217, 0.050121, 0.050025, 0.049929, + 0.049834, 0.049738, 0.049642, 0.049546, 0.049451, 0.049355, 0.049259, 0.049163, + 0.049068, 0.048972, 0.048876, 0.048780, 0.048685, 0.048589, 0.048493, 0.048397, + 0.048302, 0.048206, 0.048110, 0.048014, 0.047919, 0.047823, 0.047727, 0.047631, + 0.047535, 0.047440, 0.047344, 0.047248, 0.047152, 0.047057, 0.046961, 0.046865, + 0.046769, 0.046674, 0.046578, 0.046482, 0.046386, 0.046290, 0.046195, 0.046099, + 0.046003, 0.045907, 0.045812, 0.045716, 0.045620, 0.045524, 0.045429, 0.045333, + 0.045237, 0.045141, 0.045045, 0.044950, 0.044854, 0.044758, 0.044662, 0.044567, + 0.044471, 0.044375, 0.044279, 0.044183, 0.044088, 0.043992, 0.043896, 0.043800, + 0.043705, 0.043609, 0.043513, 0.043417, 0.043321, 0.043226, 0.043130, 0.043034, + 0.042938, 0.042842, 0.042747, 0.042651, 0.042555, 0.042459, 0.042364, 0.042268, + 0.042172, 0.042076, 0.041980, 0.041885, 0.041789, 0.041693, 0.041597, 0.041501, + 0.041406, 0.041310, 0.041214, 0.041118, 0.041022, 0.040927, 0.040831, 0.040735, + 0.040639, 0.040544, 0.040448, 0.040352, 0.040256, 0.040160, 0.040065, 0.039969, + 0.039873, 0.039777, 0.039681, 0.039586, 0.039490, 0.039394, 0.039298, 0.039202, + 0.039107, 0.039011, 0.038915, 0.038819, 0.038723, 0.038628, 0.038532, 0.038436, + 0.038340, 0.038244, 0.038149, 0.038053, 0.037957, 0.037861, 0.037765, 0.037669, + 0.037574, 0.037478, 0.037382, 0.037286, 0.037190, 0.037095, 0.036999, 0.036903, + 0.036807, 0.036711, 0.036616, 0.036520, 0.036424, 0.036328, 0.036232, 0.036137, + 0.036041, 0.035945, 0.035849, 0.035753, 0.035657, 0.035562, 0.035466, 0.035370, + 0.035274, 0.035178, 0.035083, 0.034987, 0.034891, 0.034795, 0.034699, 0.034604, + 0.034508, 0.034412, 0.034316, 0.034220, 0.034124, 0.034029, 0.033933, 0.033837, + 0.033741, 0.033645, 0.033550, 0.033454, 0.033358, 0.033262, 0.033166, 0.033070, + 0.032975, 0.032879, 0.032783, 0.032687, 0.032591, 0.032495, 0.032400, 0.032304, + 0.032208, 0.032112, 0.032016, 0.031921, 0.031825, 0.031729, 0.031633, 0.031537, + 0.031441, 0.031346, 0.031250, 0.031154, 0.031058, 0.030962, 0.030866, 0.030771, + 0.030675, 0.030579, 0.030483, 0.030387, 0.030291, 0.030196, 0.030100, 0.030004, + 0.029908, 0.029812, 0.029717, 0.029621, 0.029525, 0.029429, 0.029333, 0.029237, + 0.029142, 0.029046, 0.028950, 0.028854, 0.028758, 0.028662, 0.028567, 0.028471, + 0.028375, 0.028279, 0.028183, 0.028087, 0.027991, 0.027896, 0.027800, 0.027704, + 0.027608, 0.027512, 0.027416, 0.027321, 0.027225, 0.027129, 0.027033, 0.026937, + 0.026841, 0.026746, 0.026650, 0.026554, 0.026458, 0.026362, 0.026266, 0.026171, + 0.026075, 0.025979, 0.025883, 0.025787, 0.025691, 0.025596, 0.025500, 0.025404, + 0.025308, 0.025212, 0.025116, 0.025020, 0.024925, 0.024829, 0.024733, 0.024637, + 0.024541, 0.024445, 0.024350, 0.024254, 0.024158, 0.024062, 0.023966, 0.023870, + 0.023774, 0.023679, 0.023583, 0.023487, 0.023391, 0.023295, 0.023199, 0.023104, + 0.023008, 0.022912, 0.022816, 0.022720, 0.022624, 0.022528, 0.022433, 0.022337, + 0.022241, 0.022145, 0.022049, 0.021953, 0.021857, 0.021762, 0.021666, 0.021570, + 0.021474, 0.021378, 0.021282, 0.021187, 0.021091, 0.020995, 0.020899, 0.020803, + 0.020707, 0.020611, 0.020516, 0.020420, 0.020324, 0.020228, 0.020132, 0.020036, + 0.019940, 0.019845, 0.019749, 0.019653, 0.019557, 0.019461, 0.019365, 0.019269, + 0.019174, 0.019078, 0.018982, 0.018886, 0.018790, 0.018694, 0.018598, 0.018503, + 0.018407, 0.018311, 0.018215, 0.018119, 0.018023, 0.017927, 0.017832, 0.017736, + 0.017640, 0.017544, 0.017448, 0.017352, 0.017256, 0.017161, 0.017065, 0.016969, + 0.016873, 0.016777, 0.016681, 0.016585, 0.016490, 0.016394, 0.016298, 0.016202, + 0.016106, 0.016010, 0.015914, 0.015819, 0.015723, 0.015627, 0.015531, 0.015435, + 0.015339, 0.015243, 0.015147, 0.015052, 0.014956, 0.014860, 0.014764, 0.014668, + 0.014572, 0.014476, 0.014381, 0.014285, 0.014189, 0.014093, 0.013997, 0.013901, + 0.013805, 0.013710, 0.013614, 0.013518, 0.013422, 0.013326, 0.013230, 0.013134, + 0.013038, 0.012943, 0.012847, 0.012751, 0.012655, 0.012559, 0.012463, 0.012367, + 0.012272, 0.012176, 0.012080, 0.011984, 0.011888, 0.011792, 0.011696, 0.011600, + 0.011505, 0.011409, 0.011313, 0.011217, 0.011121, 0.011025, 0.010929, 0.010834, + 0.010738, 0.010642, 0.010546, 0.010450, 0.010354, 0.010258, 0.010162, 0.010067, + 0.009971, 0.009875, 0.009779, 0.009683, 0.009587, 0.009491, 0.009395, 0.009300, + 0.009204, 0.009108, 0.009012, 0.008916, 0.008820, 0.008724, 0.008629, 0.008533, + 0.008437, 0.008341, 0.008245, 0.008149, 0.008053, 0.007957, 0.007862, 0.007766, + 0.007670, 0.007574, 0.007478, 0.007382, 0.007286, 0.007190, 0.007095, 0.006999, + 0.006903, 0.006807, 0.006711, 0.006615, 0.006519, 0.006424, 0.006328, 0.006232, + 0.006136, 0.006040, 0.005944, 0.005848, 0.005752, 0.005657, 0.005561, 0.005465, + 0.005369, 0.005273, 0.005177, 0.005081, 0.004985, 0.004890, 0.004794, 0.004698, + 0.004602, 0.004506, 0.004410, 0.004314, 0.004218, 0.004123, 0.004027, 0.003931, + 0.003835, 0.003739, 0.003643, 0.003547, 0.003451, 0.003356, 0.003260, 0.003164, + 0.003068, 0.002972, 0.002876, 0.002780, 0.002684, 0.002589, 0.002493, 0.002397, + 0.002301, 0.002205, 0.002109, 0.002013, 0.001917, 0.001822, 0.001726, 0.001630, + 0.001534, 0.001438, 0.001342, 0.001246, 0.001150, 0.001055, 0.000959, 0.000863, + 0.000767, 0.000671, 0.000575, 0.000479, 0.000383, 0.000288, 0.000192, 0.000096, + 0.000000, 0.000096, 0.000192, 0.000288, 0.000383, 0.000479, 0.000575, 0.000671, + 0.000767, 0.000863, 0.000959, 0.001055, 0.001150, 0.001246, 0.001342, 0.001438, + 0.001534, 0.001630, 0.001726, 0.001822, 0.001917, 0.002013, 0.002109, 0.002205, + 0.002301, 0.002397, 0.002493, 0.002589, 0.002684, 0.002780, 0.002876, 0.002972, + 0.003068, 0.003164, 0.003260, 0.003356, 0.003451, 0.003547, 0.003643, 0.003739, + 0.003835, 0.003931, 0.004027, 0.004123, 0.004218, 0.004314, 0.004410, 0.004506, + 0.004602, 0.004698, 0.004794, 0.004890, 0.004985, 0.005081, 0.005177, 0.005273, + 0.005369, 0.005465, 0.005561, 0.005657, 0.005752, 0.005848, 0.005944, 0.006040, + 0.006136, 0.006232, 0.006328, 0.006424, 0.006519, 0.006615, 0.006711, 0.006807, + 0.006903, 0.006999, 0.007095, 0.007190, 0.007286, 0.007382, 0.007478, 0.007574, + 0.007670, 0.007766, 0.007862, 0.007957, 0.008053, 0.008149, 0.008245, 0.008341, + 0.008437, 0.008533, 0.008629, 0.008724, 0.008820, 0.008916, 0.009012, 0.009108, + 0.009204, 0.009300, 0.009395, 0.009491, 0.009587, 0.009683, 0.009779, 0.009875, + 0.009971, 0.010067, 0.010162, 0.010258, 0.010354, 0.010450, 0.010546, 0.010642, + 0.010738, 0.010834, 0.010929, 0.011025, 0.011121, 0.011217, 0.011313, 0.011409, + 0.011505, 0.011600, 0.011696, 0.011792, 0.011888, 0.011984, 0.012080, 0.012176, + 0.012272, 0.012367, 0.012463, 0.012559, 0.012655, 0.012751, 0.012847, 0.012943, + 0.013038, 0.013134, 0.013230, 0.013326, 0.013422, 0.013518, 0.013614, 0.013710, + 0.013805, 0.013901, 0.013997, 0.014093, 0.014189, 0.014285, 0.014381, 0.014476, + 0.014572, 0.014668, 0.014764, 0.014860, 0.014956, 0.015052, 0.015147, 0.015243, + 0.015339, 0.015435, 0.015531, 0.015627, 0.015723, 0.015819, 0.015914, 0.016010, + 0.016106, 0.016202, 0.016298, 0.016394, 0.016490, 0.016585, 0.016681, 0.016777, + 0.016873, 0.016969, 0.017065, 0.017161, 0.017256, 0.017352, 0.017448, 0.017544, + 0.017640, 0.017736, 0.017832, 0.017927, 0.018023, 0.018119, 0.018215, 0.018311, + 0.018407, 0.018503, 0.018598, 0.018694, 0.018790, 0.018886, 0.018982, 0.019078, + 0.019174, 0.019269, 0.019365, 0.019461, 0.019557, 0.019653, 0.019749, 0.019845, + 0.019940, 0.020036, 0.020132, 0.020228, 0.020324, 0.020420, 0.020516, 0.020611, + 0.020707, 0.020803, 0.020899, 0.020995, 0.021091, 0.021187, 0.021282, 0.021378, + 0.021474, 0.021570, 0.021666, 0.021762, 0.021857, 0.021953, 0.022049, 0.022145, + 0.022241, 0.022337, 0.022433, 0.022528, 0.022624, 0.022720, 0.022816, 0.022912, + 0.023008, 0.023104, 0.023199, 0.023295, 0.023391, 0.023487, 0.023583, 0.023679, + 0.023774, 0.023870, 0.023966, 0.024062, 0.024158, 0.024254, 0.024350, 0.024445, + 0.024541, 0.024637, 0.024733, 0.024829, 0.024925, 0.025020, 0.025116, 0.025212, + 0.025308, 0.025404, 0.025500, 0.025596, 0.025691, 0.025787, 0.025883, 0.025979, + 0.026075, 0.026171, 0.026266, 0.026362, 0.026458, 0.026554, 0.026650, 0.026746, + 0.026841, 0.026937, 0.027033, 0.027129, 0.027225, 0.027321, 0.027416, 0.027512, + 0.027608, 0.027704, 0.027800, 0.027896, 0.027991, 0.028087, 0.028183, 0.028279, + 0.028375, 0.028471, 0.028567, 0.028662, 0.028758, 0.028854, 0.028950, 0.029046, + 0.029142, 0.029237, 0.029333, 0.029429, 0.029525, 0.029621, 0.029717, 0.029812, + 0.029908, 0.030004, 0.030100, 0.030196, 0.030291, 0.030387, 0.030483, 0.030579, + 0.030675, 0.030771, 0.030866, 0.030962, 0.031058, 0.031154, 0.031250, 0.031346, + 0.031441, 0.031537, 0.031633, 0.031729, 0.031825, 0.031921, 0.032016, 0.032112, + 0.032208, 0.032304, 0.032400, 0.032495, 0.032591, 0.032687, 0.032783, 0.032879, + 0.032975, 0.033070, 0.033166, 0.033262, 0.033358, 0.033454, 0.033550, 0.033645, + 0.033741, 0.033837, 0.033933, 0.034029, 0.034124, 0.034220, 0.034316, 0.034412, + 0.034508, 0.034604, 0.034699, 0.034795, 0.034891, 0.034987, 0.035083, 0.035178, + 0.035274, 0.035370, 0.035466, 0.035562, 0.035657, 0.035753, 0.035849, 0.035945, + 0.036041, 0.036137, 0.036232, 0.036328, 0.036424, 0.036520, 0.036616, 0.036711, + 0.036807, 0.036903, 0.036999, 0.037095, 0.037190, 0.037286, 0.037382, 0.037478, + 0.037574, 0.037669, 0.037765, 0.037861, 0.037957, 0.038053, 0.038149, 0.038244, + 0.038340, 0.038436, 0.038532, 0.038628, 0.038723, 0.038819, 0.038915, 0.039011, + 0.039107, 0.039202, 0.039298, 0.039394, 0.039490, 0.039586, 0.039681, 0.039777, + 0.039873, 0.039969, 0.040065, 0.040160, 0.040256, 0.040352, 0.040448, 0.040544, + 0.040639, 0.040735, 0.040831, 0.040927, 0.041022, 0.041118, 0.041214, 0.041310, + 0.041406, 0.041501, 0.041597, 0.041693, 0.041789, 0.041885, 0.041980, 0.042076, + 0.042172, 0.042268, 0.042364, 0.042459, 0.042555, 0.042651, 0.042747, 0.042842, + 0.042938, 0.043034, 0.043130, 0.043226, 0.043321, 0.043417, 0.043513, 0.043609, + 0.043705, 0.043800, 0.043896, 0.043992, 0.044088, 0.044183, 0.044279, 0.044375, + 0.044471, 0.044567, 0.044662, 0.044758, 0.044854, 0.044950, 0.045045, 0.045141, + 0.045237, 0.045333, 0.045429, 0.045524, 0.045620, 0.045716, 0.045812, 0.045907, + 0.046003, 0.046099, 0.046195, 0.046290, 0.046386, 0.046482, 0.046578, 0.046674, + 0.046769, 0.046865, 0.046961, 0.047057, 0.047152, 0.047248, 0.047344, 0.047440, + 0.047535, 0.047631, 0.047727, 0.047823, 0.047919, 0.048014, 0.048110, 0.048206, + 0.048302, 0.048397, 0.048493, 0.048589, 0.048685, 0.048780, 0.048876, 0.048972, + 0.049068, 0.049163, 0.049259, 0.049355, 0.049451, 0.049546, 0.049642, 0.049738, + 0.049834, 0.049929, 0.050025, 0.050121, 0.050217, 0.050312, 0.050408, 0.050504, + 0.050600, 0.050696, 0.050791, 0.050887, 0.050983, 0.051078, 0.051174, 0.051270, + 0.051366, 0.051461, 0.051557, 0.051653, 0.051749, 0.051844, 0.051940, 0.052036, + 0.052132, 0.052227, 0.052323, 0.052419, 0.052515, 0.052610, 0.052706, 0.052802, + 0.052898, 0.052993, 0.053089, 0.053185, 0.053281, 0.053376, 0.053472, 0.053568, + 0.053664, 0.053759, 0.053855, 0.053951, 0.054046, 0.054142, 0.054238, 0.054334, + 0.054429, 0.054525, 0.054621, 0.054717, 0.054812, 0.054908, 0.055004, 0.055100, + 0.055195, 0.055291, 0.055387, 0.055482, 0.055578, 0.055674, 0.055770, 0.055865, + 0.055961, 0.056057, 0.056152, 0.056248, 0.056344, 0.056440, 0.056535, 0.056631, + 0.056727, 0.056823, 0.056918, 0.057014, 0.057110, 0.057205, 0.057301, 0.057397, + 0.057493, 0.057588, 0.057684, 0.057780, 0.057875, 0.057971, 0.058067, 0.058163, + 0.058258, 0.058354, 0.058450, 0.058545, 0.058641, 0.058737, 0.058833, 0.058928, + 0.059024, 0.059120, 0.059215, 0.059311, 0.059407, 0.059502, 0.059598, 0.059694, + 0.059790, 0.059885, 0.059981, 0.060077, 0.060172, 0.060268, 0.060364, 0.060459, + 0.060555, 0.060651, 0.060747, 0.060842, 0.060938, 0.061034, 0.061129, 0.061225, + 0.061321, 0.061416, 0.061512, 0.061608, 0.061704, 0.061799, 0.061895, 0.061991, + 0.062086, 0.062182, 0.062278, 0.062373, 0.062469, 0.062565, 0.062660, 0.062756, + 0.062852, 0.062947, 0.063043, 0.063139, 0.063234, 0.063330, 0.063426, 0.063522, + 0.063617, 0.063713, 0.063809, 0.063904, 0.064000, 0.064096, 0.064191, 0.064287, + 0.064383, 0.064478, 0.064574, 0.064670, 0.064765, 0.064861, 0.064957, 0.065052, + 0.065148, 0.065244, 0.065339, 0.065435, 0.065531, 0.065626, 0.065722, 0.065818, + 0.065913, 0.066009, 0.066105, 0.066200, 0.066296, 0.066392, 0.066487, 0.066583, + 0.066679, 0.066774, 0.066870, 0.066966, 0.067061, 0.067157, 0.067253, 0.067348, + 0.067444, 0.067540, 0.067635, 0.067731, 0.067827, 0.067922, 0.068018, 0.068113, + 0.068209, 0.068305, 0.068400, 0.068496, 0.068592, 0.068687, 0.068783, 0.068879, + 0.068974, 0.069070, 0.069166, 0.069261, 0.069357, 0.069453, 0.069548, 0.069644, + 0.069739, 0.069835, 0.069931, 0.070026, 0.070122, 0.070218, 0.070313, 0.070409, + 0.070505, 0.070600, 0.070696, 0.070791, 0.070887, 0.070983, 0.071078, 0.071174, + 0.071270, 0.071365, 0.071461, 0.071557, 0.071652, 0.071748, 0.071843, 0.071939, + 0.072035, 0.072130, 0.072226, 0.072322, 0.072417, 0.072513, 0.072608, 0.072704, + 0.072800, 0.072895, 0.072991, 0.073086, 0.073182, 0.073278, 0.073373, 0.073469, + 0.073565, 0.073660, 0.073756, 0.073851, 0.073947, 0.074043, 0.074138, 0.074234, + 0.074329, 0.074425, 0.074521, 0.074616, 0.074712, 0.074807, 0.074903, 0.074999, + 0.075094, 0.075190, 0.075286, 0.075381, 0.075477, 0.075572, 0.075668, 0.075764, + 0.075859, 0.075955, 0.076050, 0.076146, 0.076241, 0.076337, 0.076433, 0.076528, + 0.076624, 0.076719, 0.076815, 0.076911, 0.077006, 0.077102, 0.077197, 0.077293, + 0.077389, 0.077484, 0.077580, 0.077675, 0.077771, 0.077866, 0.077962, 0.078058, + 0.078153, 0.078249, 0.078344, 0.078440, 0.078536, 0.078631, 0.078727, 0.078822, + 0.078918, 0.079013, 0.079109, 0.079205, 0.079300, 0.079396, 0.079491, 0.079587, + 0.079682, 0.079778, 0.079874, 0.079969, 0.080065, 0.080160, 0.080256, 0.080351, + 0.080447, 0.080543, 0.080638, 0.080734, 0.080829, 0.080925, 0.081020, 0.081116, + 0.081211, 0.081307, 0.081403, 0.081498, 0.081594, 0.081689, 0.081785, 0.081880, + 0.081976, 0.082071, 0.082167, 0.082263, 0.082358, 0.082454, 0.082549, 0.082645, + 0.082740, 0.082836, 0.082931, 0.083027, 0.083122, 0.083218, 0.083314, 0.083409, + 0.083505, 0.083600, 0.083696, 0.083791, 0.083887, 0.083982, 0.084078, 0.084173, + 0.084269, 0.084364, 0.084460, 0.084555, 0.084651, 0.084747, 0.084842, 0.084938, + 0.085033, 0.085129, 0.085224, 0.085320, 0.085415, 0.085511, 0.085606, 0.085702, + 0.085797, 0.085893, 0.085988, 0.086084, 0.086179, 0.086275, 0.086370, 0.086466, + 0.086561, 0.086657, 0.086752, 0.086848, 0.086943, 0.087039, 0.087135, 0.087230, + 0.087326, 0.087421, 0.087517, 0.087612, 0.087708, 0.087803, 0.087899, 0.087994, + 0.088090, 0.088185, 0.088281, 0.088376, 0.088472, 0.088567, 0.088663, 0.088758, + 0.088854, 0.088949, 0.089045, 0.089140, 0.089236, 0.089331, 0.089427, 0.089522, + 0.089617, 0.089713, 0.089808, 0.089904, 0.089999, 0.090095, 0.090190, 0.090286, + 0.090381, 0.090477, 0.090572, 0.090668, 0.090763, 0.090859, 0.090954, 0.091050, + 0.091145, 0.091241, 0.091336, 0.091432, 0.091527, 0.091623, 0.091718, 0.091813, + 0.091909, 0.092004, 0.092100, 0.092195, 0.092291, 0.092386, 0.092482, 0.092577, + 0.092673, 0.092768, 0.092864, 0.092959, 0.093055, 0.093150, 0.093245, 0.093341, + 0.093436, 0.093532, 0.093627, 0.093723, 0.093818, 0.093914, 0.094009, 0.094104, + 0.094200, 0.094295, 0.094391, 0.094486, 0.094582, 0.094677, 0.094773, 0.094868, + 0.094963, 0.095059, 0.095154, 0.095250, 0.095345, 0.095441, 0.095536, 0.095632, + 0.095727, 0.095822, 0.095918, 0.096013, 0.096109, 0.096204, 0.096300, 0.096395, + 0.096490, 0.096586, 0.096681, 0.096777, 0.096872, 0.096968, 0.097063, 0.097158, + 0.097254, 0.097349, 0.097445, 0.097540, 0.097635, 0.097731, 0.097826, 0.097922, + 0.098017, 0.098113, 0.098208, 0.098303, 0.098399, 0.098494, 0.098590, 0.098685, + 0.098780, 0.098876, 0.098971, 0.099067, 0.099162, 0.099257, 0.099353, 0.099448, + 0.099544, 0.099639, 0.099734, 0.099830, 0.099925, 0.100021, 0.100116, 0.100211, + 0.100307, 0.100402, 0.100498, 0.100593, 0.100688, 0.100784, 0.100879, 0.100974, + 0.101070, 0.101165, 0.101261, 0.101356, 0.101451, 0.101547, 0.101642, 0.101738, + 0.101833, 0.101928, 0.102024, 0.102119, 0.102214, 0.102310, 0.102405, 0.102500, + 0.102596, 0.102691, 0.102787, 0.102882, 0.102977, 0.103073, 0.103168, 0.103263, + 0.103359, 0.103454, 0.103550, 0.103645, 0.103740, 0.103836, 0.103931, 0.104026, + 0.104122, 0.104217, 0.104312, 0.104408, 0.104503, 0.104598, 0.104694, 0.104789, + 0.104884, 0.104980, 0.105075, 0.105170, 0.105266, 0.105361, 0.105456, 0.105552, + 0.105647, 0.105742, 0.105838, 0.105933, 0.106028, 0.106124, 0.106219, 0.106314, + 0.106410, 0.106505, 0.106600, 0.106696, 0.106791, 0.106886, 0.106982, 0.107077, + 0.107172, 0.107268, 0.107363, 0.107458, 0.107554, 0.107649, 0.107744, 0.107840, + 0.107935, 0.108030, 0.108126, 0.108221, 0.108316, 0.108412, 0.108507, 0.108602, + 0.108697, 0.108793, 0.108888, 0.108983, 0.109079, 0.109174, 0.109269, 0.109365, + 0.109460, 0.109555, 0.109650, 0.109746, 0.109841, 0.109936, 0.110032, 0.110127, + 0.110222, 0.110317, 0.110413, 0.110508, 0.110603, 0.110699, 0.110794, 0.110889, + 0.110984, 0.111080, 0.111175, 0.111270, 0.111366, 0.111461, 0.111556, 0.111651, + 0.111747, 0.111842, 0.111937, 0.112033, 0.112128, 0.112223, 0.112318, 0.112414, + 0.112509, 0.112604, 0.112699, 0.112795, 0.112890, 0.112985, 0.113080, 0.113176, + 0.113271, 0.113366, 0.113461, 0.113557, 0.113652, 0.113747, 0.113842, 0.113938, + 0.114033, 0.114128, 0.114223, 0.114319, 0.114414, 0.114509, 0.114604, 0.114700, + 0.114795, 0.114890, 0.114985, 0.115081, 0.115176, 0.115271, 0.115366, 0.115462, + 0.115557, 0.115652, 0.115747, 0.115842, 0.115938, 0.116033, 0.116128, 0.116223, + 0.116319, 0.116414, 0.116509, 0.116604, 0.116700, 0.116795, 0.116890, 0.116985, + 0.117080, 0.117176, 0.117271, 0.117366, 0.117461, 0.117556, 0.117652, 0.117747, + 0.117842, 0.117937, 0.118032, 0.118128, 0.118223, 0.118318, 0.118413, 0.118508, + 0.118604, 0.118699, 0.118794, 0.118889, 0.118984, 0.119080, 0.119175, 0.119270, + 0.119365, 0.119460, 0.119556, 0.119651, 0.119746, 0.119841, 0.119936, 0.120032, + 0.120127, 0.120222, 0.120317, 0.120412, 0.120507, 0.120603, 0.120698, 0.120793, + 0.120888, 0.120983, 0.121078, 0.121174, 0.121269, 0.121364, 0.121459, 0.121554, + 0.121649, 0.121745, 0.121840, 0.121935, 0.122030, 0.122125, 0.122220, 0.122316, + 0.122411, 0.122506, 0.122601, 0.122696, 0.122791, 0.122886, 0.122982, 0.123077, + 0.123172, 0.123267, 0.123362, 0.123457, 0.123552, 0.123648, 0.123743, 0.123838, + 0.123933, 0.124028, 0.124123, 0.124218, 0.124314, 0.124409, 0.124504, 0.124599, + 0.124694, 0.124789, 0.124884, 0.124979, 0.125075, 0.125170, 0.125265, 0.125360, + 0.125455, 0.125550, 0.125645, 0.125740, 0.125835, 0.125931, 0.126026, 0.126121, + 0.126216, 0.126311, 0.126406, 0.126501, 0.126596, 0.126691, 0.126787, 0.126882, + 0.126977, 0.127072, 0.127167, 0.127262, 0.127357, 0.127452, 0.127547, 0.127642, + 0.127737, 0.127833, 0.127928, 0.128023, 0.128118, 0.128213, 0.128308, 0.128403, + 0.128498, 0.128593, 0.128688, 0.128783, 0.128878, 0.128973, 0.129069, 0.129164, + 0.129259, 0.129354, 0.129449, 0.129544, 0.129639, 0.129734, 0.129829, 0.129924, + 0.130019, 0.130114, 0.130209, 0.130304, 0.130399, 0.130495, 0.130590, 0.130685, + 0.130780, 0.130875, 0.130970, 0.131065, 0.131160, 0.131255, 0.131350, 0.131445, + 0.131540, 0.131635, 0.131730, 0.131825, 0.131920, 0.132015, 0.132110, 0.132205, + 0.132300, 0.132395, 0.132490, 0.132585, 0.132680, 0.132775, 0.132870, 0.132966, + 0.133061, 0.133156, 0.133251, 0.133346, 0.133441, 0.133536, 0.133631, 0.133726, + 0.133821, 0.133916, 0.134011, 0.134106, 0.134201, 0.134296, 0.134391, 0.134486, + 0.134581, 0.134676, 0.134771, 0.134866, 0.134961, 0.135056, 0.135151, 0.135246, + 0.135341, 0.135436, 0.135531, 0.135626, 0.135721, 0.135816, 0.135911, 0.136006, + 0.136101, 0.136196, 0.136291, 0.136386, 0.136480, 0.136575, 0.136670, 0.136765, + 0.136860, 0.136955, 0.137050, 0.137145, 0.137240, 0.137335, 0.137430, 0.137525, + 0.137620, 0.137715, 0.137810, 0.137905, 0.138000, 0.138095, 0.138190, 0.138285, + 0.138380, 0.138475, 0.138570, 0.138665, 0.138760, 0.138855, 0.138949, 0.139044, + 0.139139, 0.139234, 0.139329, 0.139424, 0.139519, 0.139614, 0.139709, 0.139804, + 0.139899, 0.139994, 0.140089, 0.140184, 0.140279, 0.140373, 0.140468, 0.140563, + 0.140658, 0.140753, 0.140848, 0.140943, 0.141038, 0.141133, 0.141228, 0.141323, + 0.141418, 0.141512, 0.141607, 0.141702, 0.141797, 0.141892, 0.141987, 0.142082, + 0.142177, 0.142272, 0.142367, 0.142461, 0.142556, 0.142651, 0.142746, 0.142841, + 0.142936, 0.143031, 0.143126, 0.143221, 0.143316, 0.143410, 0.143505, 0.143600, + 0.143695, 0.143790, 0.143885, 0.143980, 0.144075, 0.144169, 0.144264, 0.144359, + 0.144454, 0.144549, 0.144644, 0.144739, 0.144833, 0.144928, 0.145023, 0.145118, + 0.145213, 0.145308, 0.145403, 0.145497, 0.145592, 0.145687, 0.145782, 0.145877, + 0.145972, 0.146067, 0.146161, 0.146256, 0.146351, 0.146446, 0.146541, 0.146636, + 0.146730, 0.146825, 0.146920, 0.147015, 0.147110, 0.147205, 0.147299, 0.147394, + 0.147489, 0.147584, 0.147679, 0.147774, 0.147868, 0.147963, 0.148058, 0.148153, + 0.148248, 0.148342, 0.148437, 0.148532, 0.148627, 0.148722, 0.148817, 0.148911, + 0.149006, 0.149101, 0.149196, 0.149291, 0.149385, 0.149480, 0.149575, 0.149670, + 0.149765, 0.149859, 0.149954, 0.150049, 0.150144, 0.150238, 0.150333, 0.150428, + 0.150523, 0.150618, 0.150712, 0.150807, 0.150902, 0.150997, 0.151092, 0.151186, + 0.151281, 0.151376, 0.151471, 0.151565, 0.151660, 0.151755, 0.151850, 0.151944, + 0.152039, 0.152134, 0.152229, 0.152323, 0.152418, 0.152513, 0.152608, 0.152702, + 0.152797, 0.152892, 0.152987, 0.153081, 0.153176, 0.153271, 0.153366, 0.153460, + 0.153555, 0.153650, 0.153745, 0.153839, 0.153934, 0.154029, 0.154124, 0.154218, + 0.154313, 0.154408, 0.154502, 0.154597, 0.154692, 0.154787, 0.154881, 0.154976, + 0.155071, 0.155165, 0.155260, 0.155355, 0.155450, 0.155544, 0.155639, 0.155734, + 0.155828, 0.155923, 0.156018, 0.156112, 0.156207, 0.156302, 0.156397, 0.156491, + 0.156586, 0.156681, 0.156775, 0.156870, 0.156965, 0.157059, 0.157154, 0.157249, + 0.157343, 0.157438, 0.157533, 0.157627, 0.157722, 0.157817, 0.157912, 0.158006, + 0.158101, 0.158196, 0.158290, 0.158385, 0.158480, 0.158574, 0.158669, 0.158763, + 0.158858, 0.158953, 0.159047, 0.159142, 0.159237, 0.159331, 0.159426, 0.159521, + 0.159615, 0.159710, 0.159805, 0.159899, 0.159994, 0.160089, 0.160183, 0.160278, + 0.160372, 0.160467, 0.160562, 0.160656, 0.160751, 0.160846, 0.160940, 0.161035, + 0.161129, 0.161224, 0.161319, 0.161413, 0.161508, 0.161603, 0.161697, 0.161792, + 0.161886, 0.161981, 0.162076, 0.162170, 0.162265, 0.162359, 0.162454, 0.162549, + 0.162643, 0.162738, 0.162832, 0.162927, 0.163022, 0.163116, 0.163211, 0.163305, + 0.163400, 0.163495, 0.163589, 0.163684, 0.163778, 0.163873, 0.163967, 0.164062, + 0.164157, 0.164251, 0.164346, 0.164440, 0.164535, 0.164629, 0.164724, 0.164819, + 0.164913, 0.165008, 0.165102, 0.165197, 0.165291, 0.165386, 0.165480, 0.165575, + 0.165670, 0.165764, 0.165859, 0.165953, 0.166048, 0.166142, 0.166237, 0.166331, + 0.166426, 0.166520, 0.166615, 0.166710, 0.166804, 0.166899, 0.166993, 0.167088, + 0.167182, 0.167277, 0.167371, 0.167466, 0.167560, 0.167655, 0.167749, 0.167844, + 0.167938, 0.168033, 0.168127, 0.168222, 0.168316, 0.168411, 0.168505, 0.168600, + 0.168694, 0.168789, 0.168883, 0.168978, 0.169072, 0.169167, 0.169261, 0.169356, + 0.169450, 0.169545, 0.169639, 0.169734, 0.169828, 0.169923, 0.170017, 0.170112, + 0.170206, 0.170301, 0.170395, 0.170490, 0.170584, 0.170678, 0.170773, 0.170867, + 0.170962, 0.171056, 0.171151, 0.171245, 0.171340, 0.171434, 0.171529, 0.171623, + 0.171718, 0.171812, 0.171906, 0.172001, 0.172095, 0.172190, 0.172284, 0.172379, + 0.172473, 0.172568, 0.172662, 0.172756, 0.172851, 0.172945, 0.173040, 0.173134, + 0.173229, 0.173323, 0.173417, 0.173512, 0.173606, 0.173701, 0.173795, 0.173889, + 0.173984, 0.174078, 0.174173, 0.174267, 0.174362, 0.174456, 0.174550, 0.174645, + 0.174739, 0.174834, 0.174928, 0.175022, 0.175117, 0.175211, 0.175305, 0.175400, + 0.175494, 0.175589, 0.175683, 0.175777, 0.175872, 0.175966, 0.176061, 0.176155, + 0.176249, 0.176344, 0.176438, 0.176532, 0.176627, 0.176721, 0.176815, 0.176910, + 0.177004, 0.177099, 0.177193, 0.177287, 0.177382, 0.177476, 0.177570, 0.177665, + 0.177759, 0.177853, 0.177948, 0.178042, 0.178136, 0.178231, 0.178325, 0.178419, + 0.178514, 0.178608, 0.178702, 0.178797, 0.178891, 0.178985, 0.179080, 0.179174, + 0.179268, 0.179363, 0.179457, 0.179551, 0.179646, 0.179740, 0.179834, 0.179929, + 0.180023, 0.180117, 0.180212, 0.180306, 0.180400, 0.180494, 0.180589, 0.180683, + 0.180777, 0.180872, 0.180966, 0.181060, 0.181154, 0.181249, 0.181343, 0.181437, + 0.181532, 0.181626, 0.181720, 0.181814, 0.181909, 0.182003, 0.182097, 0.182192, + 0.182286, 0.182380, 0.182474, 0.182569, 0.182663, 0.182757, 0.182851, 0.182946, + 0.183040, 0.183134, 0.183228, 0.183323, 0.183417, 0.183511, 0.183605, 0.183700, + 0.183794, 0.183888, 0.183982, 0.184077, 0.184171, 0.184265, 0.184359, 0.184454, + 0.184548, 0.184642, 0.184736, 0.184830, 0.184925, 0.185019, 0.185113, 0.185207, + 0.185301, 0.185396, 0.185490, 0.185584, 0.185678, 0.185773, 0.185867, 0.185961, + 0.186055, 0.186149, 0.186244, 0.186338, 0.186432, 0.186526, 0.186620, 0.186715, + 0.186809, 0.186903, 0.186997, 0.187091, 0.187185, 0.187280, 0.187374, 0.187468, + 0.187562, 0.187656, 0.187750, 0.187845, 0.187939, 0.188033, 0.188127, 0.188221, + 0.188315, 0.188410, 0.188504, 0.188598, 0.188692, 0.188786, 0.188880, 0.188975, + 0.189069, 0.189163, 0.189257, 0.189351, 0.189445, 0.189539, 0.189634, 0.189728, + 0.189822, 0.189916, 0.190010, 0.190104, 0.190198, 0.190292, 0.190387, 0.190481, + 0.190575, 0.190669, 0.190763, 0.190857, 0.190951, 0.191045, 0.191139, 0.191234, + 0.191328, 0.191422, 0.191516, 0.191610, 0.191704, 0.191798, 0.191892, 0.191986, + 0.192080, 0.192174, 0.192269, 0.192363, 0.192457, 0.192551, 0.192645, 0.192739, + 0.192833, 0.192927, 0.193021, 0.193115, 0.193209, 0.193303, 0.193397, 0.193492, + 0.193586, 0.193680, 0.193774, 0.193868, 0.193962, 0.194056, 0.194150, 0.194244, + 0.194338, 0.194432, 0.194526, 0.194620, 0.194714, 0.194808, 0.194902, 0.194996, + 0.195090, 0.195184, 0.195278, 0.195372, 0.195466, 0.195560, 0.195654, 0.195748, + 0.195843, 0.195937, 0.196031, 0.196125, 0.196219, 0.196313, 0.196407, 0.196501, + 0.196595, 0.196689, 0.196783, 0.196877, 0.196971, 0.197065, 0.197159, 0.197253, + 0.197347, 0.197441, 0.197535, 0.197629, 0.197722, 0.197816, 0.197910, 0.198004, + 0.198098, 0.198192, 0.198286, 0.198380, 0.198474, 0.198568, 0.198662, 0.198756, + 0.198850, 0.198944, 0.199038, 0.199132, 0.199226, 0.199320, 0.199414, 0.199508, + 0.199602, 0.199696, 0.199790, 0.199884, 0.199978, 0.200071, 0.200165, 0.200259, + 0.200353, 0.200447, 0.200541, 0.200635, 0.200729, 0.200823, 0.200917, 0.201011, + 0.201105, 0.201199, 0.201292, 0.201386, 0.201480, 0.201574, 0.201668, 0.201762, + 0.201856, 0.201950, 0.202044, 0.202138, 0.202231, 0.202325, 0.202419, 0.202513, + 0.202607, 0.202701, 0.202795, 0.202889, 0.202983, 0.203076, 0.203170, 0.203264, + 0.203358, 0.203452, 0.203546, 0.203640, 0.203734, 0.203827, 0.203921, 0.204015, + 0.204109, 0.204203, 0.204297, 0.204391, 0.204484, 0.204578, 0.204672, 0.204766, + 0.204860, 0.204954, 0.205047, 0.205141, 0.205235, 0.205329, 0.205423, 0.205517, + 0.205610, 0.205704, 0.205798, 0.205892, 0.205986, 0.206080, 0.206173, 0.206267, + 0.206361, 0.206455, 0.206549, 0.206642, 0.206736, 0.206830, 0.206924, 0.207018, + 0.207111, 0.207205, 0.207299, 0.207393, 0.207487, 0.207580, 0.207674, 0.207768, + 0.207862, 0.207955, 0.208049, 0.208143, 0.208237, 0.208331, 0.208424, 0.208518, + 0.208612, 0.208706, 0.208799, 0.208893, 0.208987, 0.209081, 0.209174, 0.209268, + 0.209362, 0.209456, 0.209549, 0.209643, 0.209737, 0.209831, 0.209924, 0.210018, + 0.210112, 0.210206, 0.210299, 0.210393, 0.210487, 0.210580, 0.210674, 0.210768, + 0.210862, 0.210955, 0.211049, 0.211143, 0.211237, 0.211330, 0.211424, 0.211518, + 0.211611, 0.211705, 0.211799, 0.211892, 0.211986, 0.212080, 0.212174, 0.212267, + 0.212361, 0.212455, 0.212548, 0.212642, 0.212736, 0.212829, 0.212923, 0.213017, + 0.213110, 0.213204, 0.213298, 0.213391, 0.213485, 0.213579, 0.213672, 0.213766, + 0.213860, 0.213953, 0.214047, 0.214141, 0.214234, 0.214328, 0.214422, 0.214515, + 0.214609, 0.214702, 0.214796, 0.214890, 0.214983, 0.215077, 0.215171, 0.215264, + 0.215358, 0.215451, 0.215545, 0.215639, 0.215732, 0.215826, 0.215920, 0.216013, + 0.216107, 0.216200, 0.216294, 0.216388, 0.216481, 0.216575, 0.216668, 0.216762, + 0.216856, 0.216949, 0.217043, 0.217136, 0.217230, 0.217324, 0.217417, 0.217511, + 0.217604, 0.217698, 0.217791, 0.217885, 0.217979, 0.218072, 0.218166, 0.218259, + 0.218353, 0.218446, 0.218540, 0.218633, 0.218727, 0.218821, 0.218914, 0.219008, + 0.219101, 0.219195, 0.219288, 0.219382, 0.219475, 0.219569, 0.219662, 0.219756, + 0.219850, 0.219943, 0.220037, 0.220130, 0.220224, 0.220317, 0.220411, 0.220504, + 0.220598, 0.220691, 0.220785, 0.220878, 0.220972, 0.221065, 0.221159, 0.221252, + 0.221346, 0.221439, 0.221533, 0.221626, 0.221720, 0.221813, 0.221907, 0.222000, + 0.222094, 0.222187, 0.222281, 0.222374, 0.222468, 0.222561, 0.222654, 0.222748, + 0.222841, 0.222935, 0.223028, 0.223122, 0.223215, 0.223309, 0.223402, 0.223496, + 0.223589, 0.223682, 0.223776, 0.223869, 0.223963, 0.224056, 0.224150, 0.224243, + 0.224337, 0.224430, 0.224523, 0.224617, 0.224710, 0.224804, 0.224897, 0.224991, + 0.225084, 0.225177, 0.225271, 0.225364, 0.225458, 0.225551, 0.225644, 0.225738, + 0.225831, 0.225925, 0.226018, 0.226111, 0.226205, 0.226298, 0.226391, 0.226485, + 0.226578, 0.226672, 0.226765, 0.226858, 0.226952, 0.227045, 0.227139, 0.227232, + 0.227325, 0.227419, 0.227512, 0.227605, 0.227699, 0.227792, 0.227885, 0.227979, + 0.228072, 0.228165, 0.228259, 0.228352, 0.228445, 0.228539, 0.228632, 0.228725, + 0.228819, 0.228912, 0.229005, 0.229099, 0.229192, 0.229285, 0.229379, 0.229472, + 0.229565, 0.229659, 0.229752, 0.229845, 0.229939, 0.230032, 0.230125, 0.230218, + 0.230312, 0.230405, 0.230498, 0.230592, 0.230685, 0.230778, 0.230872, 0.230965, + 0.231058, 0.231151, 0.231245, 0.231338, 0.231431, 0.231524, 0.231618, 0.231711, + 0.231804, 0.231898, 0.231991, 0.232084, 0.232177, 0.232271, 0.232364, 0.232457, + 0.232550, 0.232644, 0.232737, 0.232830, 0.232923, 0.233017, 0.233110, 0.233203, + 0.233296, 0.233389, 0.233483, 0.233576, 0.233669, 0.233762, 0.233856, 0.233949, + 0.234042, 0.234135, 0.234228, 0.234322, 0.234415, 0.234508, 0.234601, 0.234694, + 0.234788, 0.234881, 0.234974, 0.235067, 0.235160, 0.235254, 0.235347, 0.235440, + 0.235533, 0.235626, 0.235719, 0.235813, 0.235906, 0.235999, 0.236092, 0.236185, + 0.236278, 0.236372, 0.236465, 0.236558, 0.236651, 0.236744, 0.236837, 0.236930, + 0.237024, 0.237117, 0.237210, 0.237303, 0.237396, 0.237489, 0.237582, 0.237676, + 0.237769, 0.237862, 0.237955, 0.238048, 0.238141, 0.238234, 0.238327, 0.238420, + 0.238514, 0.238607, 0.238700, 0.238793, 0.238886, 0.238979, 0.239072, 0.239165, + 0.239258, 0.239351, 0.239445, 0.239538, 0.239631, 0.239724, 0.239817, 0.239910, + 0.240003, 0.240096, 0.240189, 0.240282, 0.240375, 0.240468, 0.240561, 0.240654, + 0.240748, 0.240841, 0.240934, 0.241027, 0.241120, 0.241213, 0.241306, 0.241399, + 0.241492, 0.241585, 0.241678, 0.241771, 0.241864, 0.241957, 0.242050, 0.242143, + 0.242236, 0.242329, 0.242422, 0.242515, 0.242608, 0.242701, 0.242794, 0.242887, + 0.242980, 0.243073, 0.243166, 0.243259, 0.243352, 0.243445, 0.243538, 0.243631, + 0.243724, 0.243817, 0.243910, 0.244003, 0.244096, 0.244189, 0.244282, 0.244375, + 0.244468, 0.244561, 0.244654, 0.244747, 0.244840, 0.244933, 0.245026, 0.245119, + 0.245212, 0.245304, 0.245397, 0.245490, 0.245583, 0.245676, 0.245769, 0.245862, + 0.245955, 0.246048, 0.246141, 0.246234, 0.246327, 0.246420, 0.246513, 0.246606, + 0.246698, 0.246791, 0.246884, 0.246977, 0.247070, 0.247163, 0.247256, 0.247349, + 0.247442, 0.247535, 0.247627, 0.247720, 0.247813, 0.247906, 0.247999, 0.248092, + 0.248185, 0.248278, 0.248370, 0.248463, 0.248556, 0.248649, 0.248742, 0.248835, + 0.248928, 0.249020, 0.249113, 0.249206, 0.249299, 0.249392, 0.249485, 0.249578, + 0.249670, 0.249763, 0.249856, 0.249949, 0.250042, 0.250135, 0.250227, 0.250320, + 0.250413, 0.250506, 0.250599, 0.250691, 0.250784, 0.250877, 0.250970, 0.251063, + 0.251155, 0.251248, 0.251341, 0.251434, 0.251527, 0.251619, 0.251712, 0.251805, + 0.251898, 0.251991, 0.252083, 0.252176, 0.252269, 0.252362, 0.252454, 0.252547, + 0.252640, 0.252733, 0.252826, 0.252918, 0.253011, 0.253104, 0.253197, 0.253289, + 0.253382, 0.253475, 0.253568, 0.253660, 0.253753, 0.253846, 0.253938, 0.254031, + 0.254124, 0.254217, 0.254309, 0.254402, 0.254495, 0.254588, 0.254680, 0.254773, + 0.254866, 0.254958, 0.255051, 0.255144, 0.255236, 0.255329, 0.255422, 0.255515, + 0.255607, 0.255700, 0.255793, 0.255885, 0.255978, 0.256071, 0.256163, 0.256256, + 0.256349, 0.256441, 0.256534, 0.256627, 0.256719, 0.256812, 0.256905, 0.256997, + 0.257090, 0.257183, 0.257275, 0.257368, 0.257461, 0.257553, 0.257646, 0.257738, + 0.257831, 0.257924, 0.258016, 0.258109, 0.258202, 0.258294, 0.258387, 0.258479, + 0.258572, 0.258665, 0.258757, 0.258850, 0.258943, 0.259035, 0.259128, 0.259220, + 0.259313, 0.259405, 0.259498, 0.259591, 0.259683, 0.259776, 0.259868, 0.259961, + 0.260054, 0.260146, 0.260239, 0.260331, 0.260424, 0.260516, 0.260609, 0.260702, + 0.260794, 0.260887, 0.260979, 0.261072, 0.261164, 0.261257, 0.261349, 0.261442, + 0.261534, 0.261627, 0.261720, 0.261812, 0.261905, 0.261997, 0.262090, 0.262182, + 0.262275, 0.262367, 0.262460, 0.262552, 0.262645, 0.262737, 0.262830, 0.262922, + 0.263015, 0.263107, 0.263200, 0.263292, 0.263385, 0.263477, 0.263570, 0.263662, + 0.263755, 0.263847, 0.263940, 0.264032, 0.264125, 0.264217, 0.264309, 0.264402, + 0.264494, 0.264587, 0.264679, 0.264772, 0.264864, 0.264957, 0.265049, 0.265142, + 0.265234, 0.265326, 0.265419, 0.265511, 0.265604, 0.265696, 0.265789, 0.265881, + 0.265973, 0.266066, 0.266158, 0.266251, 0.266343, 0.266436, 0.266528, 0.266620, + 0.266713, 0.266805, 0.266898, 0.266990, 0.267082, 0.267175, 0.267267, 0.267359, + 0.267452, 0.267544, 0.267637, 0.267729, 0.267821, 0.267914, 0.268006, 0.268099, + 0.268191, 0.268283, 0.268376, 0.268468, 0.268560, 0.268653, 0.268745, 0.268837, + 0.268930, 0.269022, 0.269114, 0.269207, 0.269299, 0.269391, 0.269484, 0.269576, + 0.269668, 0.269761, 0.269853, 0.269945, 0.270038, 0.270130, 0.270222, 0.270315, + 0.270407, 0.270499, 0.270591, 0.270684, 0.270776, 0.270868, 0.270961, 0.271053, + 0.271145, 0.271237, 0.271330, 0.271422, 0.271514, 0.271607, 0.271699, 0.271791, + 0.271883, 0.271976, 0.272068, 0.272160, 0.272252, 0.272345, 0.272437, 0.272529, + 0.272621, 0.272714, 0.272806, 0.272898, 0.272990, 0.273083, 0.273175, 0.273267, + 0.273359, 0.273451, 0.273544, 0.273636, 0.273728, 0.273820, 0.273912, 0.274005, + 0.274097, 0.274189, 0.274281, 0.274374, 0.274466, 0.274558, 0.274650, 0.274742, + 0.274834, 0.274927, 0.275019, 0.275111, 0.275203, 0.275295, 0.275387, 0.275480, + 0.275572, 0.275664, 0.275756, 0.275848, 0.275940, 0.276033, 0.276125, 0.276217, + 0.276309, 0.276401, 0.276493, 0.276585, 0.276678, 0.276770, 0.276862, 0.276954, + 0.277046, 0.277138, 0.277230, 0.277322, 0.277415, 0.277507, 0.277599, 0.277691, + 0.277783, 0.277875, 0.277967, 0.278059, 0.278151, 0.278243, 0.278336, 0.278428, + 0.278520, 0.278612, 0.278704, 0.278796, 0.278888, 0.278980, 0.279072, 0.279164, + 0.279256, 0.279348, 0.279440, 0.279532, 0.279624, 0.279717, 0.279809, 0.279901, + 0.279993, 0.280085, 0.280177, 0.280269, 0.280361, 0.280453, 0.280545, 0.280637, + 0.280729, 0.280821, 0.280913, 0.281005, 0.281097, 0.281189, 0.281281, 0.281373, + 0.281465, 0.281557, 0.281649, 0.281741, 0.281833, 0.281925, 0.282017, 0.282109, + 0.282201, 0.282293, 0.282385, 0.282477, 0.282569, 0.282661, 0.282753, 0.282845, + 0.282937, 0.283029, 0.283120, 0.283212, 0.283304, 0.283396, 0.283488, 0.283580, + 0.283672, 0.283764, 0.283856, 0.283948, 0.284040, 0.284132, 0.284224, 0.284316, + 0.284408, 0.284499, 0.284591, 0.284683, 0.284775, 0.284867, 0.284959, 0.285051, + 0.285143, 0.285235, 0.285327, 0.285418, 0.285510, 0.285602, 0.285694, 0.285786, + 0.285878, 0.285970, 0.286062, 0.286153, 0.286245, 0.286337, 0.286429, 0.286521, + 0.286613, 0.286705, 0.286796, 0.286888, 0.286980, 0.287072, 0.287164, 0.287256, + 0.287347, 0.287439, 0.287531, 0.287623, 0.287715, 0.287807, 0.287898, 0.287990, + 0.288082, 0.288174, 0.288266, 0.288357, 0.288449, 0.288541, 0.288633, 0.288725, + 0.288816, 0.288908, 0.289000, 0.289092, 0.289184, 0.289275, 0.289367, 0.289459, + 0.289551, 0.289642, 0.289734, 0.289826, 0.289918, 0.290009, 0.290101, 0.290193, + 0.290285, 0.290376, 0.290468, 0.290560, 0.290652, 0.290743, 0.290835, 0.290927, + 0.291019, 0.291110, 0.291202, 0.291294, 0.291385, 0.291477, 0.291569, 0.291661, + 0.291752, 0.291844, 0.291936, 0.292027, 0.292119, 0.292211, 0.292302, 0.292394, + 0.292486, 0.292577, 0.292669, 0.292761, 0.292852, 0.292944, 0.293036, 0.293128, + 0.293219, 0.293311, 0.293402, 0.293494, 0.293586, 0.293677, 0.293769, 0.293861, + 0.293952, 0.294044, 0.294136, 0.294227, 0.294319, 0.294410, 0.294502, 0.294594, + 0.294685, 0.294777, 0.294869, 0.294960, 0.295052, 0.295143, 0.295235, 0.295327, + 0.295418, 0.295510, 0.295601, 0.295693, 0.295785, 0.295876, 0.295968, 0.296059, + 0.296151, 0.296242, 0.296334, 0.296426, 0.296517, 0.296609, 0.296700, 0.296792, + 0.296883, 0.296975, 0.297066, 0.297158, 0.297250, 0.297341, 0.297433, 0.297524, + 0.297616, 0.297707, 0.297799, 0.297890, 0.297982, 0.298073, 0.298165, 0.298256, + 0.298348, 0.298439, 0.298531, 0.298622, 0.298714, 0.298805, 0.298897, 0.298988, + 0.299080, 0.299171, 0.299263, 0.299354, 0.299446, 0.299537, 0.299629, 0.299720, + 0.299812, 0.299903, 0.299995, 0.300086, 0.300177, 0.300269, 0.300360, 0.300452, + 0.300543, 0.300635, 0.300726, 0.300818, 0.300909, 0.301000, 0.301092, 0.301183, + 0.301275, 0.301366, 0.301458, 0.301549, 0.301640, 0.301732, 0.301823, 0.301915, + 0.302006, 0.302097, 0.302189, 0.302280, 0.302372, 0.302463, 0.302554, 0.302646, + 0.302737, 0.302828, 0.302920, 0.303011, 0.303103, 0.303194, 0.303285, 0.303377, + 0.303468, 0.303559, 0.303651, 0.303742, 0.303833, 0.303925, 0.304016, 0.304107, + 0.304199, 0.304290, 0.304381, 0.304473, 0.304564, 0.304655, 0.304747, 0.304838, + 0.304929, 0.305021, 0.305112, 0.305203, 0.305294, 0.305386, 0.305477, 0.305568, + 0.305660, 0.305751, 0.305842, 0.305933, 0.306025, 0.306116, 0.306207, 0.306299, + 0.306390, 0.306481, 0.306572, 0.306664, 0.306755, 0.306846, 0.306937, 0.307029, + 0.307120, 0.307211, 0.307302, 0.307394, 0.307485, 0.307576, 0.307667, 0.307758, + 0.307850, 0.307941, 0.308032, 0.308123, 0.308214, 0.308306, 0.308397, 0.308488, + 0.308579, 0.308670, 0.308762, 0.308853, 0.308944, 0.309035, 0.309126, 0.309218, + 0.309309, 0.309400, 0.309491, 0.309582, 0.309673, 0.309765, 0.309856, 0.309947, + 0.310038, 0.310129, 0.310220, 0.310311, 0.310403, 0.310494, 0.310585, 0.310676, + 0.310767, 0.310858, 0.310949, 0.311041, 0.311132, 0.311223, 0.311314, 0.311405, + 0.311496, 0.311587, 0.311678, 0.311769, 0.311860, 0.311952, 0.312043, 0.312134, + 0.312225, 0.312316, 0.312407, 0.312498, 0.312589, 0.312680, 0.312771, 0.312862, + 0.312953, 0.313044, 0.313135, 0.313227, 0.313318, 0.313409, 0.313500, 0.313591, + 0.313682, 0.313773, 0.313864, 0.313955, 0.314046, 0.314137, 0.314228, 0.314319, + 0.314410, 0.314501, 0.314592, 0.314683, 0.314774, 0.314865, 0.314956, 0.315047, + 0.315138, 0.315229, 0.315320, 0.315411, 0.315502, 0.315593, 0.315684, 0.315775, + 0.315866, 0.315957, 0.316048, 0.316139, 0.316230, 0.316321, 0.316411, 0.316502, + 0.316593, 0.316684, 0.316775, 0.316866, 0.316957, 0.317048, 0.317139, 0.317230, + 0.317321, 0.317412, 0.317503, 0.317594, 0.317684, 0.317775, 0.317866, 0.317957, + 0.318048, 0.318139, 0.318230, 0.318321, 0.318412, 0.318503, 0.318593, 0.318684, + 0.318775, 0.318866, 0.318957, 0.319048, 0.319139, 0.319229, 0.319320, 0.319411, + 0.319502, 0.319593, 0.319684, 0.319775, 0.319865, 0.319956, 0.320047, 0.320138, + 0.320229, 0.320320, 0.320410, 0.320501, 0.320592, 0.320683, 0.320774, 0.320864, + 0.320955, 0.321046, 0.321137, 0.321228, 0.321318, 0.321409, 0.321500, 0.321591, + 0.321682, 0.321772, 0.321863, 0.321954, 0.322045, 0.322135, 0.322226, 0.322317, + 0.322408, 0.322498, 0.322589, 0.322680, 0.322771, 0.322861, 0.322952, 0.323043, + 0.323134, 0.323224, 0.323315, 0.323406, 0.323497, 0.323587, 0.323678, 0.323769, + 0.323859, 0.323950, 0.324041, 0.324131, 0.324222, 0.324313, 0.324404, 0.324494, + 0.324585, 0.324676, 0.324766, 0.324857, 0.324948, 0.325038, 0.325129, 0.325220, + 0.325310, 0.325401, 0.325492, 0.325582, 0.325673, 0.325764, 0.325854, 0.325945, + 0.326035, 0.326126, 0.326217, 0.326307, 0.326398, 0.326489, 0.326579, 0.326670, + 0.326760, 0.326851, 0.326942, 0.327032, 0.327123, 0.327213, 0.327304, 0.327395, + 0.327485, 0.327576, 0.327666, 0.327757, 0.327848, 0.327938, 0.328029, 0.328119, + 0.328210, 0.328300, 0.328391, 0.328482, 0.328572, 0.328663, 0.328753, 0.328844, + 0.328934, 0.329025, 0.329115, 0.329206, 0.329296, 0.329387, 0.329477, 0.329568, + 0.329658, 0.329749, 0.329839, 0.329930, 0.330020, 0.330111, 0.330202, 0.330292, + 0.330382, 0.330473, 0.330563, 0.330654, 0.330744, 0.330835, 0.330925, 0.331016, + 0.331106, 0.331197, 0.331287, 0.331378, 0.331468, 0.331559, 0.331649, 0.331739, + 0.331830, 0.331920, 0.332011, 0.332101, 0.332192, 0.332282, 0.332373, 0.332463, + 0.332553, 0.332644, 0.332734, 0.332825, 0.332915, 0.333005, 0.333096, 0.333186, + 0.333277, 0.333367, 0.333457, 0.333548, 0.333638, 0.333729, 0.333819, 0.333909, + 0.334000, 0.334090, 0.334180, 0.334271, 0.334361, 0.334451, 0.334542, 0.334632, + 0.334722, 0.334813, 0.334903, 0.334994, 0.335084, 0.335174, 0.335265, 0.335355, + 0.335445, 0.335535, 0.335626, 0.335716, 0.335806, 0.335897, 0.335987, 0.336077, + 0.336168, 0.336258, 0.336348, 0.336438, 0.336529, 0.336619, 0.336709, 0.336800, + 0.336890, 0.336980, 0.337070, 0.337161, 0.337251, 0.337341, 0.337431, 0.337522, + 0.337612, 0.337702, 0.337792, 0.337883, 0.337973, 0.338063, 0.338153, 0.338244, + 0.338334, 0.338424, 0.338514, 0.338604, 0.338695, 0.338785, 0.338875, 0.338965, + 0.339055, 0.339146, 0.339236, 0.339326, 0.339416, 0.339506, 0.339597, 0.339687, + 0.339777, 0.339867, 0.339957, 0.340047, 0.340138, 0.340228, 0.340318, 0.340408, + 0.340498, 0.340588, 0.340678, 0.340769, 0.340859, 0.340949, 0.341039, 0.341129, + 0.341219, 0.341309, 0.341399, 0.341490, 0.341580, 0.341670, 0.341760, 0.341850, + 0.341940, 0.342030, 0.342120, 0.342210, 0.342300, 0.342391, 0.342481, 0.342571, + 0.342661, 0.342751, 0.342841, 0.342931, 0.343021, 0.343111, 0.343201, 0.343291, + 0.343381, 0.343471, 0.343561, 0.343651, 0.343741, 0.343831, 0.343921, 0.344011, + 0.344101, 0.344191, 0.344281, 0.344371, 0.344461, 0.344551, 0.344641, 0.344731, + 0.344821, 0.344911, 0.345001, 0.345091, 0.345181, 0.345271, 0.345361, 0.345451, + 0.345541, 0.345631, 0.345721, 0.345811, 0.345901, 0.345991, 0.346081, 0.346171, + 0.346261, 0.346351, 0.346441, 0.346531, 0.346621, 0.346711, 0.346801, 0.346890, + 0.346980, 0.347070, 0.347160, 0.347250, 0.347340, 0.347430, 0.347520, 0.347610, + 0.347700, 0.347790, 0.347879, 0.347969, 0.348059, 0.348149, 0.348239, 0.348329, + 0.348419, 0.348509, 0.348598, 0.348688, 0.348778, 0.348868, 0.348958, 0.349048, + 0.349138, 0.349227, 0.349317, 0.349407, 0.349497, 0.349587, 0.349676, 0.349766, + 0.349856, 0.349946, 0.350036, 0.350126, 0.350215, 0.350305, 0.350395, 0.350485, + 0.350575, 0.350664, 0.350754, 0.350844, 0.350934, 0.351023, 0.351113, 0.351203, + 0.351293, 0.351383, 0.351472, 0.351562, 0.351652, 0.351742, 0.351831, 0.351921, + 0.352011, 0.352100, 0.352190, 0.352280, 0.352370, 0.352459, 0.352549, 0.352639, + 0.352729, 0.352818, 0.352908, 0.352998, 0.353087, 0.353177, 0.353267, 0.353356, + 0.353446, 0.353536, 0.353626, 0.353715, 0.353805, 0.353895, 0.353984, 0.354074, + 0.354164, 0.354253, 0.354343, 0.354432, 0.354522, 0.354612, 0.354701, 0.354791, + 0.354881, 0.354970, 0.355060, 0.355150, 0.355239, 0.355329, 0.355418, 0.355508, + 0.355598, 0.355687, 0.355777, 0.355866, 0.355956, 0.356046, 0.356135, 0.356225, + 0.356314, 0.356404, 0.356494, 0.356583, 0.356673, 0.356762, 0.356852, 0.356941, + 0.357031, 0.357121, 0.357210, 0.357300, 0.357389, 0.357479, 0.357568, 0.357658, + 0.357747, 0.357837, 0.357926, 0.358016, 0.358105, 0.358195, 0.358284, 0.358374, + 0.358463, 0.358553, 0.358642, 0.358732, 0.358821, 0.358911, 0.359000, 0.359090, + 0.359179, 0.359269, 0.359358, 0.359448, 0.359537, 0.359627, 0.359716, 0.359806, + 0.359895, 0.359984, 0.360074, 0.360163, 0.360253, 0.360342, 0.360432, 0.360521, + 0.360611, 0.360700, 0.360789, 0.360879, 0.360968, 0.361058, 0.361147, 0.361236, + 0.361326, 0.361415, 0.361505, 0.361594, 0.361683, 0.361773, 0.361862, 0.361952, + 0.362041, 0.362130, 0.362220, 0.362309, 0.362398, 0.362488, 0.362577, 0.362666, + 0.362756, 0.362845, 0.362934, 0.363024, 0.363113, 0.363202, 0.363292, 0.363381, + 0.363470, 0.363560, 0.363649, 0.363738, 0.363828, 0.363917, 0.364006, 0.364096, + 0.364185, 0.364274, 0.364363, 0.364453, 0.364542, 0.364631, 0.364720, 0.364810, + 0.364899, 0.364988, 0.365078, 0.365167, 0.365256, 0.365345, 0.365435, 0.365524, + 0.365613, 0.365702, 0.365791, 0.365881, 0.365970, 0.366059, 0.366148, 0.366238, + 0.366327, 0.366416, 0.366505, 0.366594, 0.366684, 0.366773, 0.366862, 0.366951, + 0.367040, 0.367130, 0.367219, 0.367308, 0.367397, 0.367486, 0.367575, 0.367665, + 0.367754, 0.367843, 0.367932, 0.368021, 0.368110, 0.368199, 0.368289, 0.368378, + 0.368467, 0.368556, 0.368645, 0.368734, 0.368823, 0.368912, 0.369002, 0.369091, + 0.369180, 0.369269, 0.369358, 0.369447, 0.369536, 0.369625, 0.369714, 0.369803, + 0.369892, 0.369982, 0.370071, 0.370160, 0.370249, 0.370338, 0.370427, 0.370516, + 0.370605, 0.370694, 0.370783, 0.370872, 0.370961, 0.371050, 0.371139, 0.371228, + 0.371317, 0.371406, 0.371495, 0.371584, 0.371673, 0.371762, 0.371851, 0.371940, + 0.372029, 0.372118, 0.372207, 0.372296, 0.372385, 0.372474, 0.372563, 0.372652, + 0.372741, 0.372830, 0.372919, 0.373008, 0.373097, 0.373186, 0.373275, 0.373364, + 0.373453, 0.373542, 0.373631, 0.373719, 0.373808, 0.373897, 0.373986, 0.374075, + 0.374164, 0.374253, 0.374342, 0.374431, 0.374520, 0.374609, 0.374697, 0.374786, + 0.374875, 0.374964, 0.375053, 0.375142, 0.375231, 0.375320, 0.375408, 0.375497, + 0.375586, 0.375675, 0.375764, 0.375853, 0.375942, 0.376030, 0.376119, 0.376208, + 0.376297, 0.376386, 0.376475, 0.376563, 0.376652, 0.376741, 0.376830, 0.376919, + 0.377007, 0.377096, 0.377185, 0.377274, 0.377363, 0.377451, 0.377540, 0.377629, + 0.377718, 0.377806, 0.377895, 0.377984, 0.378073, 0.378162, 0.378250, 0.378339, + 0.378428, 0.378516, 0.378605, 0.378694, 0.378783, 0.378871, 0.378960, 0.379049, + 0.379138, 0.379226, 0.379315, 0.379404, 0.379492, 0.379581, 0.379670, 0.379759, + 0.379847, 0.379936, 0.380025, 0.380113, 0.380202, 0.380291, 0.380379, 0.380468, + 0.380557, 0.380645, 0.380734, 0.380823, 0.380911, 0.381000, 0.381088, 0.381177, + 0.381266, 0.381354, 0.381443, 0.381532, 0.381620, 0.381709, 0.381797, 0.381886, + 0.381975, 0.382063, 0.382152, 0.382241, 0.382329, 0.382418, 0.382506, 0.382595, + 0.382683, 0.382772, 0.382861, 0.382949, 0.383038, 0.383126, 0.383215, 0.383303, + 0.383392, 0.383480, 0.383569, 0.383658, 0.383746, 0.383835, 0.383923, 0.384012, + 0.384100, 0.384189, 0.384277, 0.384366, 0.384454, 0.384543, 0.384631, 0.384720, + 0.384808, 0.384897, 0.384985, 0.385074, 0.385162, 0.385251, 0.385339, 0.385428, + 0.385516, 0.385605, 0.385693, 0.385781, 0.385870, 0.385958, 0.386047, 0.386135, + 0.386224, 0.386312, 0.386400, 0.386489, 0.386577, 0.386666, 0.386754, 0.386843, + 0.386931, 0.387019, 0.387108, 0.387196, 0.387285, 0.387373, 0.387461, 0.387550, + 0.387638, 0.387727, 0.387815, 0.387903, 0.387992, 0.388080, 0.388168, 0.388257, + 0.388345, 0.388433, 0.388522, 0.388610, 0.388698, 0.388787, 0.388875, 0.388963, + 0.389052, 0.389140, 0.389228, 0.389317, 0.389405, 0.389493, 0.389582, 0.389670, + 0.389758, 0.389846, 0.389935, 0.390023, 0.390111, 0.390200, 0.390288, 0.390376, + 0.390464, 0.390553, 0.390641, 0.390729, 0.390817, 0.390906, 0.390994, 0.391082, + 0.391170, 0.391259, 0.391347, 0.391435, 0.391523, 0.391612, 0.391700, 0.391788, + 0.391876, 0.391964, 0.392053, 0.392141, 0.392229, 0.392317, 0.392405, 0.392493, + 0.392582, 0.392670, 0.392758, 0.392846, 0.392934, 0.393023, 0.393111, 0.393199, + 0.393287, 0.393375, 0.393463, 0.393551, 0.393640, 0.393728, 0.393816, 0.393904, + 0.393992, 0.394080, 0.394168, 0.394256, 0.394344, 0.394433, 0.394521, 0.394609, + 0.394697, 0.394785, 0.394873, 0.394961, 0.395049, 0.395137, 0.395225, 0.395313, + 0.395401, 0.395490, 0.395578, 0.395666, 0.395754, 0.395842, 0.395930, 0.396018, + 0.396106, 0.396194, 0.396282, 0.396370, 0.396458, 0.396546, 0.396634, 0.396722, + 0.396810, 0.396898, 0.396986, 0.397074, 0.397162, 0.397250, 0.397338, 0.397426, + 0.397514, 0.397602, 0.397690, 0.397778, 0.397866, 0.397954, 0.398042, 0.398130, + 0.398218, 0.398306, 0.398393, 0.398481, 0.398569, 0.398657, 0.398745, 0.398833, + 0.398921, 0.399009, 0.399097, 0.399185, 0.399273, 0.399361, 0.399448, 0.399536, + 0.399624, 0.399712, 0.399800, 0.399888, 0.399976, 0.400064, 0.400151, 0.400239, + 0.400327, 0.400415, 0.400503, 0.400591, 0.400679, 0.400766, 0.400854, 0.400942, + 0.401030, 0.401118, 0.401206, 0.401293, 0.401381, 0.401469, 0.401557, 0.401645, + 0.401732, 0.401820, 0.401908, 0.401996, 0.402084, 0.402171, 0.402259, 0.402347, + 0.402435, 0.402522, 0.402610, 0.402698, 0.402786, 0.402873, 0.402961, 0.403049, + 0.403137, 0.403224, 0.403312, 0.403400, 0.403488, 0.403575, 0.403663, 0.403751, + 0.403838, 0.403926, 0.404014, 0.404102, 0.404189, 0.404277, 0.404365, 0.404452, + 0.404540, 0.404628, 0.404715, 0.404803, 0.404891, 0.404978, 0.405066, 0.405154, + 0.405241, 0.405329, 0.405417, 0.405504, 0.405592, 0.405680, 0.405767, 0.405855, + 0.405942, 0.406030, 0.406118, 0.406205, 0.406293, 0.406380, 0.406468, 0.406556, + 0.406643, 0.406731, 0.406818, 0.406906, 0.406994, 0.407081, 0.407169, 0.407256, + 0.407344, 0.407431, 0.407519, 0.407606, 0.407694, 0.407782, 0.407869, 0.407957, + 0.408044, 0.408132, 0.408219, 0.408307, 0.408394, 0.408482, 0.408569, 0.408657, + 0.408744, 0.408832, 0.408919, 0.409007, 0.409094, 0.409182, 0.409269, 0.409357, + 0.409444, 0.409532, 0.409619, 0.409707, 0.409794, 0.409881, 0.409969, 0.410056, + 0.410144, 0.410231, 0.410319, 0.410406, 0.410493, 0.410581, 0.410668, 0.410756, + 0.410843, 0.410931, 0.411018, 0.411105, 0.411193, 0.411280, 0.411368, 0.411455, + 0.411542, 0.411630, 0.411717, 0.411804, 0.411892, 0.411979, 0.412067, 0.412154, + 0.412241, 0.412329, 0.412416, 0.412503, 0.412591, 0.412678, 0.412765, 0.412853, + 0.412940, 0.413027, 0.413115, 0.413202, 0.413289, 0.413376, 0.413464, 0.413551, + 0.413638, 0.413726, 0.413813, 0.413900, 0.413987, 0.414075, 0.414162, 0.414249, + 0.414337, 0.414424, 0.414511, 0.414598, 0.414685, 0.414773, 0.414860, 0.414947, + 0.415034, 0.415122, 0.415209, 0.415296, 0.415383, 0.415471, 0.415558, 0.415645, + 0.415732, 0.415819, 0.415906, 0.415994, 0.416081, 0.416168, 0.416255, 0.416342, + 0.416430, 0.416517, 0.416604, 0.416691, 0.416778, 0.416865, 0.416952, 0.417040, + 0.417127, 0.417214, 0.417301, 0.417388, 0.417475, 0.417562, 0.417650, 0.417737, + 0.417824, 0.417911, 0.417998, 0.418085, 0.418172, 0.418259, 0.418346, 0.418433, + 0.418520, 0.418608, 0.418695, 0.418782, 0.418869, 0.418956, 0.419043, 0.419130, + 0.419217, 0.419304, 0.419391, 0.419478, 0.419565, 0.419652, 0.419739, 0.419826, + 0.419913, 0.420000, 0.420087, 0.420174, 0.420261, 0.420348, 0.420435, 0.420522, + 0.420609, 0.420696, 0.420783, 0.420870, 0.420957, 0.421044, 0.421131, 0.421218, + 0.421305, 0.421392, 0.421479, 0.421566, 0.421653, 0.421739, 0.421826, 0.421913, + 0.422000, 0.422087, 0.422174, 0.422261, 0.422348, 0.422435, 0.422522, 0.422609, + 0.422695, 0.422782, 0.422869, 0.422956, 0.423043, 0.423130, 0.423217, 0.423304, + 0.423390, 0.423477, 0.423564, 0.423651, 0.423738, 0.423825, 0.423912, 0.423998, + 0.424085, 0.424172, 0.424259, 0.424346, 0.424432, 0.424519, 0.424606, 0.424693, + 0.424780, 0.424866, 0.424953, 0.425040, 0.425127, 0.425214, 0.425300, 0.425387, + 0.425474, 0.425561, 0.425647, 0.425734, 0.425821, 0.425908, 0.425994, 0.426081, + 0.426168, 0.426255, 0.426341, 0.426428, 0.426515, 0.426601, 0.426688, 0.426775, + 0.426862, 0.426948, 0.427035, 0.427122, 0.427208, 0.427295, 0.427382, 0.427468, + 0.427555, 0.427642, 0.427728, 0.427815, 0.427902, 0.427988, 0.428075, 0.428162, + 0.428248, 0.428335, 0.428422, 0.428508, 0.428595, 0.428681, 0.428768, 0.428855, + 0.428941, 0.429028, 0.429114, 0.429201, 0.429288, 0.429374, 0.429461, 0.429547, + 0.429634, 0.429721, 0.429807, 0.429894, 0.429980, 0.430067, 0.430153, 0.430240, + 0.430326, 0.430413, 0.430500, 0.430586, 0.430673, 0.430759, 0.430846, 0.430932, + 0.431019, 0.431105, 0.431192, 0.431278, 0.431365, 0.431451, 0.431538, 0.431624, + 0.431711, 0.431797, 0.431884, 0.431970, 0.432057, 0.432143, 0.432229, 0.432316, + 0.432402, 0.432489, 0.432575, 0.432662, 0.432748, 0.432835, 0.432921, 0.433007, + 0.433094, 0.433180, 0.433267, 0.433353, 0.433439, 0.433526, 0.433612, 0.433699, + 0.433785, 0.433871, 0.433958, 0.434044, 0.434131, 0.434217, 0.434303, 0.434390, + 0.434476, 0.434562, 0.434649, 0.434735, 0.434821, 0.434908, 0.434994, 0.435080, + 0.435167, 0.435253, 0.435339, 0.435426, 0.435512, 0.435598, 0.435685, 0.435771, + 0.435857, 0.435943, 0.436030, 0.436116, 0.436202, 0.436288, 0.436375, 0.436461, + 0.436547, 0.436633, 0.436720, 0.436806, 0.436892, 0.436978, 0.437065, 0.437151, + 0.437237, 0.437323, 0.437410, 0.437496, 0.437582, 0.437668, 0.437754, 0.437841, + 0.437927, 0.438013, 0.438099, 0.438185, 0.438272, 0.438358, 0.438444, 0.438530, + 0.438616, 0.438702, 0.438789, 0.438875, 0.438961, 0.439047, 0.439133, 0.439219, + 0.439305, 0.439392, 0.439478, 0.439564, 0.439650, 0.439736, 0.439822, 0.439908, + 0.439994, 0.440080, 0.440166, 0.440253, 0.440339, 0.440425, 0.440511, 0.440597, + 0.440683, 0.440769, 0.440855, 0.440941, 0.441027, 0.441113, 0.441199, 0.441285, + 0.441371, 0.441457, 0.441543, 0.441629, 0.441715, 0.441801, 0.441887, 0.441973, + 0.442059, 0.442145, 0.442231, 0.442317, 0.442403, 0.442489, 0.442575, 0.442661, + 0.442747, 0.442833, 0.442919, 0.443005, 0.443091, 0.443177, 0.443263, 0.443349, + 0.443435, 0.443521, 0.443607, 0.443693, 0.443779, 0.443864, 0.443950, 0.444036, + 0.444122, 0.444208, 0.444294, 0.444380, 0.444466, 0.444552, 0.444637, 0.444723, + 0.444809, 0.444895, 0.444981, 0.445067, 0.445153, 0.445239, 0.445324, 0.445410, + 0.445496, 0.445582, 0.445668, 0.445754, 0.445839, 0.445925, 0.446011, 0.446097, + 0.446183, 0.446268, 0.446354, 0.446440, 0.446526, 0.446612, 0.446697, 0.446783, + 0.446869, 0.446955, 0.447040, 0.447126, 0.447212, 0.447298, 0.447383, 0.447469, + 0.447555, 0.447641, 0.447726, 0.447812, 0.447898, 0.447983, 0.448069, 0.448155, + 0.448241, 0.448326, 0.448412, 0.448498, 0.448583, 0.448669, 0.448755, 0.448840, + 0.448926, 0.449012, 0.449097, 0.449183, 0.449269, 0.449354, 0.449440, 0.449526, + 0.449611, 0.449697, 0.449783, 0.449868, 0.449954, 0.450039, 0.450125, 0.450211, + 0.450296, 0.450382, 0.450467, 0.450553, 0.450639, 0.450724, 0.450810, 0.450895, + 0.450981, 0.451067, 0.451152, 0.451238, 0.451323, 0.451409, 0.451494, 0.451580, + 0.451665, 0.451751, 0.451836, 0.451922, 0.452008, 0.452093, 0.452179, 0.452264, + 0.452350, 0.452435, 0.452521, 0.452606, 0.452692, 0.452777, 0.452863, 0.452948, + 0.453033, 0.453119, 0.453204, 0.453290, 0.453375, 0.453461, 0.453546, 0.453632, + 0.453717, 0.453803, 0.453888, 0.453973, 0.454059, 0.454144, 0.454230, 0.454315, + 0.454400, 0.454486, 0.454571, 0.454657, 0.454742, 0.454827, 0.454913, 0.454998, + 0.455084, 0.455169, 0.455254, 0.455340, 0.455425, 0.455510, 0.455596, 0.455681, + 0.455766, 0.455852, 0.455937, 0.456022, 0.456108, 0.456193, 0.456278, 0.456364, + 0.456449, 0.456534, 0.456620, 0.456705, 0.456790, 0.456875, 0.456961, 0.457046, + 0.457131, 0.457217, 0.457302, 0.457387, 0.457472, 0.457558, 0.457643, 0.457728, + 0.457813, 0.457899, 0.457984, 0.458069, 0.458154, 0.458239, 0.458325, 0.458410, + 0.458495, 0.458580, 0.458665, 0.458751, 0.458836, 0.458921, 0.459006, 0.459091, + 0.459177, 0.459262, 0.459347, 0.459432, 0.459517, 0.459602, 0.459687, 0.459773, + 0.459858, 0.459943, 0.460028, 0.460113, 0.460198, 0.460283, 0.460369, 0.460454, + 0.460539, 0.460624, 0.460709, 0.460794, 0.460879, 0.460964, 0.461049, 0.461134, + 0.461219, 0.461304, 0.461390, 0.461475, 0.461560, 0.461645, 0.461730, 0.461815, + 0.461900, 0.461985, 0.462070, 0.462155, 0.462240, 0.462325, 0.462410, 0.462495, + 0.462580, 0.462665, 0.462750, 0.462835, 0.462920, 0.463005, 0.463090, 0.463175, + 0.463260, 0.463345, 0.463430, 0.463515, 0.463600, 0.463685, 0.463769, 0.463854, + 0.463939, 0.464024, 0.464109, 0.464194, 0.464279, 0.464364, 0.464449, 0.464534, + 0.464619, 0.464704, 0.464788, 0.464873, 0.464958, 0.465043, 0.465128, 0.465213, + 0.465298, 0.465383, 0.465467, 0.465552, 0.465637, 0.465722, 0.465807, 0.465892, + 0.465977, 0.466061, 0.466146, 0.466231, 0.466316, 0.466401, 0.466485, 0.466570, + 0.466655, 0.466740, 0.466825, 0.466909, 0.466994, 0.467079, 0.467164, 0.467248, + 0.467333, 0.467418, 0.467503, 0.467587, 0.467672, 0.467757, 0.467842, 0.467926, + 0.468011, 0.468096, 0.468181, 0.468265, 0.468350, 0.468435, 0.468519, 0.468604, + 0.468689, 0.468774, 0.468858, 0.468943, 0.469028, 0.469112, 0.469197, 0.469282, + 0.469366, 0.469451, 0.469536, 0.469620, 0.469705, 0.469789, 0.469874, 0.469959, + 0.470043, 0.470128, 0.470213, 0.470297, 0.470382, 0.470466, 0.470551, 0.470636, + 0.470720, 0.470805, 0.470889, 0.470974, 0.471058, 0.471143, 0.471228, 0.471312, + 0.471397, 0.471481, 0.471566, 0.471650, 0.471735, 0.471819, 0.471904, 0.471988, + 0.472073, 0.472158, 0.472242, 0.472327, 0.472411, 0.472496, 0.472580, 0.472665, + 0.472749, 0.472834, 0.472918, 0.473002, 0.473087, 0.473171, 0.473256, 0.473340, + 0.473425, 0.473509, 0.473594, 0.473678, 0.473763, 0.473847, 0.473931, 0.474016, + 0.474100, 0.474185, 0.474269, 0.474353, 0.474438, 0.474522, 0.474607, 0.474691, + 0.474775, 0.474860, 0.474944, 0.475029, 0.475113, 0.475197, 0.475282, 0.475366, + 0.475450, 0.475535, 0.475619, 0.475703, 0.475788, 0.475872, 0.475956, 0.476041, + 0.476125, 0.476209, 0.476294, 0.476378, 0.476462, 0.476546, 0.476631, 0.476715, + 0.476799, 0.476884, 0.476968, 0.477052, 0.477136, 0.477221, 0.477305, 0.477389, + 0.477473, 0.477558, 0.477642, 0.477726, 0.477810, 0.477894, 0.477979, 0.478063, + 0.478147, 0.478231, 0.478315, 0.478400, 0.478484, 0.478568, 0.478652, 0.478736, + 0.478821, 0.478905, 0.478989, 0.479073, 0.479157, 0.479241, 0.479325, 0.479410, + 0.479494, 0.479578, 0.479662, 0.479746, 0.479830, 0.479914, 0.479998, 0.480083, + 0.480167, 0.480251, 0.480335, 0.480419, 0.480503, 0.480587, 0.480671, 0.480755, + 0.480839, 0.480923, 0.481007, 0.481091, 0.481176, 0.481260, 0.481344, 0.481428, + 0.481512, 0.481596, 0.481680, 0.481764, 0.481848, 0.481932, 0.482016, 0.482100, + 0.482184, 0.482268, 0.482352, 0.482436, 0.482520, 0.482604, 0.482688, 0.482772, + 0.482856, 0.482940, 0.483023, 0.483107, 0.483191, 0.483275, 0.483359, 0.483443, + 0.483527, 0.483611, 0.483695, 0.483779, 0.483863, 0.483947, 0.484031, 0.484114, + 0.484198, 0.484282, 0.484366, 0.484450, 0.484534, 0.484618, 0.484702, 0.484785, + 0.484869, 0.484953, 0.485037, 0.485121, 0.485205, 0.485288, 0.485372, 0.485456, + 0.485540, 0.485624, 0.485708, 0.485791, 0.485875, 0.485959, 0.486043, 0.486126, + 0.486210, 0.486294, 0.486378, 0.486462, 0.486545, 0.486629, 0.486713, 0.486797, + 0.486880, 0.486964, 0.487048, 0.487132, 0.487215, 0.487299, 0.487383, 0.487466, + 0.487550, 0.487634, 0.487718, 0.487801, 0.487885, 0.487969, 0.488052, 0.488136, + 0.488220, 0.488303, 0.488387, 0.488471, 0.488554, 0.488638, 0.488722, 0.488805, + 0.488889, 0.488973, 0.489056, 0.489140, 0.489223, 0.489307, 0.489391, 0.489474, + 0.489558, 0.489641, 0.489725, 0.489809, 0.489892, 0.489976, 0.490059, 0.490143, + 0.490226, 0.490310, 0.490394, 0.490477, 0.490561, 0.490644, 0.490728, 0.490811, + 0.490895, 0.490978, 0.491062, 0.491145, 0.491229, 0.491312, 0.491396, 0.491479, + 0.491563, 0.491646, 0.491730, 0.491813, 0.491897, 0.491980, 0.492064, 0.492147, + 0.492231, 0.492314, 0.492398, 0.492481, 0.492564, 0.492648, 0.492731, 0.492815, + 0.492898, 0.492982, 0.493065, 0.493148, 0.493232, 0.493315, 0.493399, 0.493482, + 0.493565, 0.493649, 0.493732, 0.493816, 0.493899, 0.493982, 0.494066, 0.494149, + 0.494232, 0.494316, 0.494399, 0.494482, 0.494566, 0.494649, 0.494732, 0.494816, + 0.494899, 0.494982, 0.495066, 0.495149, 0.495232, 0.495315, 0.495399, 0.495482, + 0.495565, 0.495649, 0.495732, 0.495815, 0.495898, 0.495982, 0.496065, 0.496148, + 0.496231, 0.496315, 0.496398, 0.496481, 0.496564, 0.496647, 0.496731, 0.496814, + 0.496897, 0.496980, 0.497063, 0.497147, 0.497230, 0.497313, 0.497396, 0.497479, + 0.497562, 0.497646, 0.497729, 0.497812, 0.497895, 0.497978, 0.498061, 0.498145, + 0.498228, 0.498311, 0.498394, 0.498477, 0.498560, 0.498643, 0.498726, 0.498809, + 0.498893, 0.498976, 0.499059, 0.499142, 0.499225, 0.499308, 0.499391, 0.499474, + 0.499557, 0.499640, 0.499723, 0.499806, 0.499889, 0.499972, 0.500055, 0.500138, + 0.500221, 0.500304, 0.500387, 0.500470, 0.500553, 0.500636, 0.500719, 0.500802, + 0.500885, 0.500968, 0.501051, 0.501134, 0.501217, 0.501300, 0.501383, 0.501466, + 0.501549, 0.501632, 0.501715, 0.501798, 0.501881, 0.501964, 0.502047, 0.502130, + 0.502212, 0.502295, 0.502378, 0.502461, 0.502544, 0.502627, 0.502710, 0.502793, + 0.502876, 0.502958, 0.503041, 0.503124, 0.503207, 0.503290, 0.503373, 0.503456, + 0.503538, 0.503621, 0.503704, 0.503787, 0.503870, 0.503953, 0.504035, 0.504118, + 0.504201, 0.504284, 0.504366, 0.504449, 0.504532, 0.504615, 0.504698, 0.504780, + 0.504863, 0.504946, 0.505029, 0.505111, 0.505194, 0.505277, 0.505360, 0.505442, + 0.505525, 0.505608, 0.505690, 0.505773, 0.505856, 0.505939, 0.506021, 0.506104, + 0.506187, 0.506269, 0.506352, 0.506435, 0.506517, 0.506600, 0.506683, 0.506765, + 0.506848, 0.506931, 0.507013, 0.507096, 0.507179, 0.507261, 0.507344, 0.507426, + 0.507509, 0.507592, 0.507674, 0.507757, 0.507839, 0.507922, 0.508005, 0.508087, + 0.508170, 0.508252, 0.508335, 0.508417, 0.508500, 0.508583, 0.508665, 0.508748, + 0.508830, 0.508913, 0.508995, 0.509078, 0.509160, 0.509243, 0.509325, 0.509408, + 0.509490, 0.509573, 0.509655, 0.509738, 0.509820, 0.509903, 0.509985, 0.510068, + 0.510150, 0.510233, 0.510315, 0.510397, 0.510480, 0.510562, 0.510645, 0.510727, + 0.510810, 0.510892, 0.510974, 0.511057, 0.511139, 0.511222, 0.511304, 0.511386, + 0.511469, 0.511551, 0.511634, 0.511716, 0.511798, 0.511881, 0.511963, 0.512045, + 0.512128, 0.512210, 0.512292, 0.512375, 0.512457, 0.512539, 0.512622, 0.512704, + 0.512786, 0.512869, 0.512951, 0.513033, 0.513116, 0.513198, 0.513280, 0.513362, + 0.513445, 0.513527, 0.513609, 0.513692, 0.513774, 0.513856, 0.513938, 0.514021, + 0.514103, 0.514185, 0.514267, 0.514349, 0.514432, 0.514514, 0.514596, 0.514678, + 0.514760, 0.514843, 0.514925, 0.515007, 0.515089, 0.515171, 0.515254, 0.515336, + 0.515418, 0.515500, 0.515582, 0.515664, 0.515746, 0.515829, 0.515911, 0.515993, + 0.516075, 0.516157, 0.516239, 0.516321, 0.516403, 0.516486, 0.516568, 0.516650, + 0.516732, 0.516814, 0.516896, 0.516978, 0.517060, 0.517142, 0.517224, 0.517306, + 0.517388, 0.517470, 0.517552, 0.517634, 0.517716, 0.517798, 0.517880, 0.517963, + 0.518045, 0.518126, 0.518209, 0.518291, 0.518372, 0.518454, 0.518536, 0.518618, + 0.518700, 0.518782, 0.518864, 0.518946, 0.519028, 0.519110, 0.519192, 0.519274, + 0.519356, 0.519438, 0.519520, 0.519602, 0.519684, 0.519766, 0.519848, 0.519929, + 0.520011, 0.520093, 0.520175, 0.520257, 0.520339, 0.520421, 0.520503, 0.520584, + 0.520666, 0.520748, 0.520830, 0.520912, 0.520994, 0.521075, 0.521157, 0.521239, + 0.521321, 0.521403, 0.521485, 0.521566, 0.521648, 0.521730, 0.521812, 0.521894, + 0.521975, 0.522057, 0.522139, 0.522221, 0.522302, 0.522384, 0.522466, 0.522548, + 0.522629, 0.522711, 0.522793, 0.522875, 0.522956, 0.523038, 0.523120, 0.523201, + 0.523283, 0.523365, 0.523447, 0.523528, 0.523610, 0.523692, 0.523773, 0.523855, + 0.523937, 0.524018, 0.524100, 0.524181, 0.524263, 0.524345, 0.524426, 0.524508, + 0.524590, 0.524671, 0.524753, 0.524835, 0.524916, 0.524998, 0.525079, 0.525161, + 0.525243, 0.525324, 0.525406, 0.525487, 0.525569, 0.525650, 0.525732, 0.525813, + 0.525895, 0.525977, 0.526058, 0.526140, 0.526221, 0.526303, 0.526384, 0.526466, + 0.526547, 0.526629, 0.526710, 0.526792, 0.526873, 0.526955, 0.527036, 0.527118, + 0.527199, 0.527281, 0.527362, 0.527444, 0.527525, 0.527606, 0.527688, 0.527769, + 0.527851, 0.527932, 0.528014, 0.528095, 0.528176, 0.528258, 0.528339, 0.528421, + 0.528502, 0.528583, 0.528665, 0.528746, 0.528828, 0.528909, 0.528990, 0.529072, + 0.529153, 0.529234, 0.529316, 0.529397, 0.529478, 0.529560, 0.529641, 0.529722, + 0.529804, 0.529885, 0.529966, 0.530048, 0.530129, 0.530210, 0.530291, 0.530373, + 0.530454, 0.530535, 0.530617, 0.530698, 0.530779, 0.530860, 0.530942, 0.531023, + 0.531104, 0.531185, 0.531266, 0.531348, 0.531429, 0.531510, 0.531591, 0.531673, + 0.531754, 0.531835, 0.531916, 0.531997, 0.532078, 0.532160, 0.532241, 0.532322, + 0.532403, 0.532484, 0.532565, 0.532647, 0.532728, 0.532809, 0.532890, 0.532971, + 0.533052, 0.533133, 0.533214, 0.533296, 0.533377, 0.533458, 0.533539, 0.533620, + 0.533701, 0.533782, 0.533863, 0.533944, 0.534025, 0.534106, 0.534187, 0.534268, + 0.534349, 0.534431, 0.534512, 0.534593, 0.534674, 0.534755, 0.534836, 0.534917, + 0.534998, 0.535079, 0.535160, 0.535241, 0.535322, 0.535403, 0.535484, 0.535564, + 0.535645, 0.535726, 0.535807, 0.535888, 0.535969, 0.536050, 0.536131, 0.536212, + 0.536293, 0.536374, 0.536455, 0.536536, 0.536617, 0.536698, 0.536778, 0.536859, + 0.536940, 0.537021, 0.537102, 0.537183, 0.537264, 0.537345, 0.537425, 0.537506, + 0.537587, 0.537668, 0.537749, 0.537830, 0.537910, 0.537991, 0.538072, 0.538153, + 0.538234, 0.538314, 0.538395, 0.538476, 0.538557, 0.538638, 0.538718, 0.538799, + 0.538880, 0.538961, 0.539041, 0.539122, 0.539203, 0.539284, 0.539364, 0.539445, + 0.539526, 0.539607, 0.539687, 0.539768, 0.539849, 0.539929, 0.540010, 0.540091, + 0.540171, 0.540252, 0.540333, 0.540413, 0.540494, 0.540575, 0.540655, 0.540736, + 0.540817, 0.540897, 0.540978, 0.541059, 0.541139, 0.541220, 0.541301, 0.541381, + 0.541462, 0.541542, 0.541623, 0.541704, 0.541784, 0.541865, 0.541945, 0.542026, + 0.542106, 0.542187, 0.542268, 0.542348, 0.542429, 0.542509, 0.542590, 0.542670, + 0.542751, 0.542831, 0.542912, 0.542992, 0.543073, 0.543153, 0.543234, 0.543314, + 0.543395, 0.543475, 0.543556, 0.543636, 0.543717, 0.543797, 0.543878, 0.543958, + 0.544039, 0.544119, 0.544199, 0.544280, 0.544360, 0.544441, 0.544521, 0.544602, + 0.544682, 0.544762, 0.544843, 0.544923, 0.545003, 0.545084, 0.545164, 0.545245, + 0.545325, 0.545405, 0.545486, 0.545566, 0.545646, 0.545727, 0.545807, 0.545887, + 0.545968, 0.546048, 0.546128, 0.546209, 0.546289, 0.546369, 0.546450, 0.546530, + 0.546610, 0.546690, 0.546771, 0.546851, 0.546931, 0.547011, 0.547092, 0.547172, + 0.547252, 0.547333, 0.547413, 0.547493, 0.547573, 0.547653, 0.547734, 0.547814, + 0.547894, 0.547974, 0.548054, 0.548135, 0.548215, 0.548295, 0.548375, 0.548455, + 0.548536, 0.548616, 0.548696, 0.548776, 0.548856, 0.548936, 0.549016, 0.549097, + 0.549177, 0.549257, 0.549337, 0.549417, 0.549497, 0.549577, 0.549657, 0.549737, + 0.549818, 0.549898, 0.549978, 0.550058, 0.550138, 0.550218, 0.550298, 0.550378, + 0.550458, 0.550538, 0.550618, 0.550698, 0.550778, 0.550858, 0.550938, 0.551018, + 0.551098, 0.551178, 0.551258, 0.551338, 0.551418, 0.551498, 0.551578, 0.551658, + 0.551738, 0.551818, 0.551898, 0.551978, 0.552058, 0.552138, 0.552218, 0.552298, + 0.552378, 0.552457, 0.552537, 0.552617, 0.552697, 0.552777, 0.552857, 0.552937, + 0.553017, 0.553097, 0.553176, 0.553256, 0.553336, 0.553416, 0.553496, 0.553576, + 0.553656, 0.553735, 0.553815, 0.553895, 0.553975, 0.554055, 0.554134, 0.554214, + 0.554294, 0.554374, 0.554454, 0.554533, 0.554613, 0.554693, 0.554773, 0.554853, + 0.554932, 0.555012, 0.555092, 0.555172, 0.555251, 0.555331, 0.555411, 0.555490, + 0.555570, 0.555650, 0.555730, 0.555809, 0.555889, 0.555969, 0.556048, 0.556128, + 0.556208, 0.556287, 0.556367, 0.556447, 0.556526, 0.556606, 0.556686, 0.556765, + 0.556845, 0.556925, 0.557004, 0.557084, 0.557164, 0.557243, 0.557323, 0.557402, + 0.557482, 0.557562, 0.557641, 0.557721, 0.557800, 0.557880, 0.557959, 0.558039, + 0.558119, 0.558198, 0.558278, 0.558357, 0.558437, 0.558516, 0.558596, 0.558675, + 0.558755, 0.558834, 0.558914, 0.558993, 0.559073, 0.559152, 0.559232, 0.559311, + 0.559391, 0.559470, 0.559550, 0.559629, 0.559709, 0.559788, 0.559867, 0.559947, + 0.560026, 0.560106, 0.560185, 0.560265, 0.560344, 0.560423, 0.560503, 0.560582, + 0.560662, 0.560741, 0.560820, 0.560900, 0.560979, 0.561058, 0.561138, 0.561217, + 0.561297, 0.561376, 0.561455, 0.561535, 0.561614, 0.561693, 0.561773, 0.561852, + 0.561931, 0.562010, 0.562090, 0.562169, 0.562248, 0.562328, 0.562407, 0.562486, + 0.562565, 0.562645, 0.562724, 0.562803, 0.562882, 0.562962, 0.563041, 0.563120, + 0.563199, 0.563279, 0.563358, 0.563437, 0.563516, 0.563595, 0.563675, 0.563754, + 0.563833, 0.563912, 0.563991, 0.564070, 0.564150, 0.564229, 0.564308, 0.564387, + 0.564466, 0.564545, 0.564624, 0.564704, 0.564783, 0.564862, 0.564941, 0.565020, + 0.565099, 0.565178, 0.565257, 0.565336, 0.565416, 0.565495, 0.565574, 0.565653, + 0.565732, 0.565811, 0.565890, 0.565969, 0.566048, 0.566127, 0.566206, 0.566285, + 0.566364, 0.566443, 0.566522, 0.566601, 0.566680, 0.566759, 0.566838, 0.566917, + 0.566996, 0.567075, 0.567154, 0.567233, 0.567312, 0.567391, 0.567470, 0.567549, + 0.567628, 0.567707, 0.567786, 0.567864, 0.567943, 0.568022, 0.568101, 0.568180, + 0.568259, 0.568338, 0.568417, 0.568496, 0.568574, 0.568653, 0.568732, 0.568811, + 0.568890, 0.568969, 0.569048, 0.569126, 0.569205, 0.569284, 0.569363, 0.569442, + 0.569521, 0.569599, 0.569678, 0.569757, 0.569836, 0.569914, 0.569993, 0.570072, + 0.570151, 0.570230, 0.570308, 0.570387, 0.570466, 0.570545, 0.570623, 0.570702, + 0.570781, 0.570859, 0.570938, 0.571017, 0.571096, 0.571174, 0.571253, 0.571332, + 0.571410, 0.571489, 0.571568, 0.571646, 0.571725, 0.571804, 0.571882, 0.571961, + 0.572040, 0.572118, 0.572197, 0.572276, 0.572354, 0.572433, 0.572511, 0.572590, + 0.572669, 0.572747, 0.572826, 0.572904, 0.572983, 0.573061, 0.573140, 0.573219, + 0.573297, 0.573376, 0.573454, 0.573533, 0.573611, 0.573690, 0.573768, 0.573847, + 0.573925, 0.574004, 0.574082, 0.574161, 0.574239, 0.574318, 0.574396, 0.574475, + 0.574553, 0.574632, 0.574710, 0.574789, 0.574867, 0.574946, 0.575024, 0.575103, + 0.575181, 0.575259, 0.575338, 0.575416, 0.575495, 0.575573, 0.575651, 0.575730, + 0.575808, 0.575887, 0.575965, 0.576043, 0.576122, 0.576200, 0.576278, 0.576357, + 0.576435, 0.576513, 0.576592, 0.576670, 0.576748, 0.576827, 0.576905, 0.576983, + 0.577062, 0.577140, 0.577218, 0.577297, 0.577375, 0.577453, 0.577531, 0.577610, + 0.577688, 0.577766, 0.577844, 0.577923, 0.578001, 0.578079, 0.578157, 0.578236, + 0.578314, 0.578392, 0.578470, 0.578548, 0.578627, 0.578705, 0.578783, 0.578861, + 0.578939, 0.579018, 0.579096, 0.579174, 0.579252, 0.579330, 0.579408, 0.579486, + 0.579565, 0.579643, 0.579721, 0.579799, 0.579877, 0.579955, 0.580033, 0.580111, + 0.580189, 0.580267, 0.580346, 0.580424, 0.580502, 0.580580, 0.580658, 0.580736, + 0.580814, 0.580892, 0.580970, 0.581048, 0.581126, 0.581204, 0.581282, 0.581360, + 0.581438, 0.581516, 0.581594, 0.581672, 0.581750, 0.581828, 0.581906, 0.581984, + 0.582062, 0.582140, 0.582218, 0.582296, 0.582374, 0.582452, 0.582530, 0.582608, + 0.582685, 0.582763, 0.582841, 0.582919, 0.582997, 0.583075, 0.583153, 0.583231, + 0.583309, 0.583387, 0.583464, 0.583542, 0.583620, 0.583698, 0.583776, 0.583854, + 0.583931, 0.584009, 0.584087, 0.584165, 0.584243, 0.584321, 0.584398, 0.584476, + 0.584554, 0.584632, 0.584710, 0.584787, 0.584865, 0.584943, 0.585021, 0.585098, + 0.585176, 0.585254, 0.585332, 0.585409, 0.585487, 0.585565, 0.585642, 0.585720, + 0.585798, 0.585876, 0.585953, 0.586031, 0.586109, 0.586186, 0.586264, 0.586342, + 0.586419, 0.586497, 0.586575, 0.586652, 0.586730, 0.586808, 0.586885, 0.586963, + 0.587040, 0.587118, 0.587196, 0.587273, 0.587351, 0.587428, 0.587506, 0.587584, + 0.587661, 0.587739, 0.587816, 0.587894, 0.587971, 0.588049, 0.588126, 0.588204, + 0.588282, 0.588359, 0.588437, 0.588514, 0.588592, 0.588669, 0.588747, 0.588824, + 0.588902, 0.588979, 0.589057, 0.589134, 0.589212, 0.589289, 0.589366, 0.589444, + 0.589521, 0.589599, 0.589676, 0.589754, 0.589831, 0.589908, 0.589986, 0.590063, + 0.590141, 0.590218, 0.590295, 0.590373, 0.590450, 0.590528, 0.590605, 0.590682, + 0.590760, 0.590837, 0.590914, 0.590992, 0.591069, 0.591146, 0.591224, 0.591301, + 0.591378, 0.591456, 0.591533, 0.591610, 0.591688, 0.591765, 0.591842, 0.591919, + 0.591997, 0.592074, 0.592151, 0.592228, 0.592306, 0.592383, 0.592460, 0.592537, + 0.592615, 0.592692, 0.592769, 0.592846, 0.592924, 0.593001, 0.593078, 0.593155, + 0.593232, 0.593309, 0.593387, 0.593464, 0.593541, 0.593618, 0.593695, 0.593772, + 0.593850, 0.593927, 0.594004, 0.594081, 0.594158, 0.594235, 0.594312, 0.594389, + 0.594467, 0.594544, 0.594621, 0.594698, 0.594775, 0.594852, 0.594929, 0.595006, + 0.595083, 0.595160, 0.595237, 0.595314, 0.595391, 0.595468, 0.595545, 0.595622, + 0.595699, 0.595776, 0.595853, 0.595930, 0.596007, 0.596084, 0.596161, 0.596238, + 0.596315, 0.596392, 0.596469, 0.596546, 0.596623, 0.596700, 0.596777, 0.596854, + 0.596931, 0.597008, 0.597085, 0.597161, 0.597238, 0.597315, 0.597392, 0.597469, + 0.597546, 0.597623, 0.597700, 0.597776, 0.597853, 0.597930, 0.598007, 0.598084, + 0.598161, 0.598238, 0.598314, 0.598391, 0.598468, 0.598545, 0.598622, 0.598698, + 0.598775, 0.598852, 0.598929, 0.599006, 0.599082, 0.599159, 0.599236, 0.599313, + 0.599389, 0.599466, 0.599543, 0.599620, 0.599696, 0.599773, 0.599850, 0.599926, + 0.600003, 0.600080, 0.600156, 0.600233, 0.600310, 0.600387, 0.600463, 0.600540, + 0.600616, 0.600693, 0.600770, 0.600846, 0.600923, 0.601000, 0.601076, 0.601153, + 0.601230, 0.601306, 0.601383, 0.601459, 0.601536, 0.601613, 0.601689, 0.601766, + 0.601842, 0.601919, 0.601995, 0.602072, 0.602148, 0.602225, 0.602302, 0.602378, + 0.602455, 0.602531, 0.602608, 0.602684, 0.602761, 0.602837, 0.602914, 0.602990, + 0.603067, 0.603143, 0.603220, 0.603296, 0.603372, 0.603449, 0.603525, 0.603602, + 0.603678, 0.603755, 0.603831, 0.603908, 0.603984, 0.604060, 0.604137, 0.604213, + 0.604290, 0.604366, 0.604442, 0.604519, 0.604595, 0.604671, 0.604748, 0.604824, + 0.604900, 0.604977, 0.605053, 0.605129, 0.605206, 0.605282, 0.605358, 0.605435, + 0.605511, 0.605587, 0.605664, 0.605740, 0.605816, 0.605892, 0.605969, 0.606045, + 0.606121, 0.606198, 0.606274, 0.606350, 0.606426, 0.606502, 0.606579, 0.606655, + 0.606731, 0.606807, 0.606884, 0.606960, 0.607036, 0.607112, 0.607188, 0.607264, + 0.607341, 0.607417, 0.607493, 0.607569, 0.607645, 0.607721, 0.607798, 0.607874, + 0.607950, 0.608026, 0.608102, 0.608178, 0.608254, 0.608330, 0.608406, 0.608482, + 0.608559, 0.608635, 0.608711, 0.608787, 0.608863, 0.608939, 0.609015, 0.609091, + 0.609167, 0.609243, 0.609319, 0.609395, 0.609471, 0.609547, 0.609623, 0.609699, + 0.609775, 0.609851, 0.609927, 0.610003, 0.610079, 0.610155, 0.610231, 0.610307, + 0.610383, 0.610459, 0.610535, 0.610611, 0.610687, 0.610762, 0.610838, 0.610914, + 0.610990, 0.611066, 0.611142, 0.611218, 0.611294, 0.611370, 0.611445, 0.611521, + 0.611597, 0.611673, 0.611749, 0.611825, 0.611901, 0.611976, 0.612052, 0.612128, + 0.612204, 0.612280, 0.612355, 0.612431, 0.612507, 0.612583, 0.612659, 0.612734, + 0.612810, 0.612886, 0.612962, 0.613037, 0.613113, 0.613189, 0.613265, 0.613340, + 0.613416, 0.613492, 0.613567, 0.613643, 0.613719, 0.613795, 0.613870, 0.613946, + 0.614022, 0.614097, 0.614173, 0.614249, 0.614324, 0.614400, 0.614475, 0.614551, + 0.614627, 0.614702, 0.614778, 0.614854, 0.614929, 0.615005, 0.615080, 0.615156, + 0.615232, 0.615307, 0.615383, 0.615458, 0.615534, 0.615609, 0.615685, 0.615761, + 0.615836, 0.615912, 0.615987, 0.616063, 0.616138, 0.616214, 0.616289, 0.616365, + 0.616440, 0.616516, 0.616591, 0.616667, 0.616742, 0.616818, 0.616893, 0.616968, + 0.617044, 0.617119, 0.617195, 0.617270, 0.617346, 0.617421, 0.617496, 0.617572, + 0.617647, 0.617723, 0.617798, 0.617873, 0.617949, 0.618024, 0.618100, 0.618175, + 0.618250, 0.618326, 0.618401, 0.618476, 0.618552, 0.618627, 0.618702, 0.618778, + 0.618853, 0.618928, 0.619004, 0.619079, 0.619154, 0.619229, 0.619305, 0.619380, + 0.619455, 0.619531, 0.619606, 0.619681, 0.619756, 0.619832, 0.619907, 0.619982, + 0.620057, 0.620132, 0.620208, 0.620283, 0.620358, 0.620433, 0.620508, 0.620584, + 0.620659, 0.620734, 0.620809, 0.620884, 0.620959, 0.621035, 0.621110, 0.621185, + 0.621260, 0.621335, 0.621410, 0.621485, 0.621560, 0.621636, 0.621711, 0.621786, + 0.621861, 0.621936, 0.622011, 0.622086, 0.622161, 0.622236, 0.622311, 0.622386, + 0.622461, 0.622536, 0.622611, 0.622686, 0.622761, 0.622836, 0.622911, 0.622986, + 0.623061, 0.623136, 0.623211, 0.623286, 0.623361, 0.623436, 0.623511, 0.623586, + 0.623661, 0.623736, 0.623811, 0.623886, 0.623961, 0.624036, 0.624111, 0.624186, + 0.624260, 0.624335, 0.624410, 0.624485, 0.624560, 0.624635, 0.624710, 0.624785, + 0.624860, 0.624934, 0.625009, 0.625084, 0.625159, 0.625234, 0.625309, 0.625383, + 0.625458, 0.625533, 0.625608, 0.625683, 0.625757, 0.625832, 0.625907, 0.625982, + 0.626056, 0.626131, 0.626206, 0.626281, 0.626355, 0.626430, 0.626505, 0.626580, + 0.626654, 0.626729, 0.626804, 0.626878, 0.626953, 0.627028, 0.627102, 0.627177, + 0.627252, 0.627326, 0.627401, 0.627476, 0.627550, 0.627625, 0.627700, 0.627774, + 0.627849, 0.627924, 0.627998, 0.628073, 0.628147, 0.628222, 0.628297, 0.628371, + 0.628446, 0.628520, 0.628595, 0.628669, 0.628744, 0.628819, 0.628893, 0.628968, + 0.629042, 0.629117, 0.629191, 0.629266, 0.629340, 0.629415, 0.629489, 0.629564, + 0.629638, 0.629713, 0.629787, 0.629862, 0.629936, 0.630011, 0.630085, 0.630159, + 0.630234, 0.630308, 0.630383, 0.630457, 0.630532, 0.630606, 0.630680, 0.630755, + 0.630829, 0.630904, 0.630978, 0.631052, 0.631127, 0.631201, 0.631275, 0.631350, + 0.631424, 0.631499, 0.631573, 0.631647, 0.631721, 0.631796, 0.631870, 0.631944, + 0.632019, 0.632093, 0.632167, 0.632242, 0.632316, 0.632390, 0.632464, 0.632539, + 0.632613, 0.632687, 0.632761, 0.632836, 0.632910, 0.632984, 0.633058, 0.633133, + 0.633207, 0.633281, 0.633355, 0.633429, 0.633504, 0.633578, 0.633652, 0.633726, + 0.633800, 0.633874, 0.633949, 0.634023, 0.634097, 0.634171, 0.634245, 0.634319, + 0.634393, 0.634467, 0.634542, 0.634616, 0.634690, 0.634764, 0.634838, 0.634912, + 0.634986, 0.635060, 0.635134, 0.635208, 0.635282, 0.635356, 0.635430, 0.635504, + 0.635578, 0.635652, 0.635726, 0.635800, 0.635874, 0.635948, 0.636022, 0.636096, + 0.636170, 0.636244, 0.636318, 0.636392, 0.636466, 0.636540, 0.636614, 0.636688, + 0.636762, 0.636836, 0.636910, 0.636984, 0.637057, 0.637131, 0.637205, 0.637279, + 0.637353, 0.637427, 0.637501, 0.637575, 0.637649, 0.637722, 0.637796, 0.637870, + 0.637944, 0.638018, 0.638092, 0.638165, 0.638239, 0.638313, 0.638387, 0.638461, + 0.638534, 0.638608, 0.638682, 0.638756, 0.638829, 0.638903, 0.638977, 0.639051, + 0.639124, 0.639198, 0.639272, 0.639346, 0.639419, 0.639493, 0.639567, 0.639640, + 0.639714, 0.639788, 0.639862, 0.639935, 0.640009, 0.640083, 0.640156, 0.640230, + 0.640303, 0.640377, 0.640451, 0.640524, 0.640598, 0.640672, 0.640745, 0.640819, + 0.640892, 0.640966, 0.641040, 0.641113, 0.641187, 0.641260, 0.641334, 0.641407, + 0.641481, 0.641555, 0.641628, 0.641702, 0.641775, 0.641849, 0.641922, 0.641996, + 0.642069, 0.642143, 0.642216, 0.642290, 0.642363, 0.642437, 0.642510, 0.642584, + 0.642657, 0.642730, 0.642804, 0.642877, 0.642951, 0.643024, 0.643098, 0.643171, + 0.643245, 0.643318, 0.643391, 0.643465, 0.643538, 0.643611, 0.643685, 0.643758, + 0.643832, 0.643905, 0.643978, 0.644052, 0.644125, 0.644198, 0.644272, 0.644345, + 0.644418, 0.644492, 0.644565, 0.644638, 0.644711, 0.644785, 0.644858, 0.644931, + 0.645005, 0.645078, 0.645151, 0.645224, 0.645298, 0.645371, 0.645444, 0.645517, + 0.645590, 0.645664, 0.645737, 0.645810, 0.645883, 0.645956, 0.646030, 0.646103, + 0.646176, 0.646249, 0.646322, 0.646396, 0.646469, 0.646542, 0.646615, 0.646688, + 0.646761, 0.646834, 0.646907, 0.646981, 0.647054, 0.647127, 0.647200, 0.647273, + 0.647346, 0.647419, 0.647492, 0.647565, 0.647638, 0.647711, 0.647784, 0.647857, + 0.647930, 0.648003, 0.648076, 0.648149, 0.648222, 0.648295, 0.648368, 0.648441, + 0.648514, 0.648587, 0.648660, 0.648733, 0.648806, 0.648879, 0.648952, 0.649025, + 0.649098, 0.649171, 0.649244, 0.649317, 0.649390, 0.649463, 0.649536, 0.649608, + 0.649681, 0.649754, 0.649827, 0.649900, 0.649973, 0.650046, 0.650119, 0.650191, + 0.650264, 0.650337, 0.650410, 0.650483, 0.650555, 0.650628, 0.650701, 0.650774, + 0.650847, 0.650919, 0.650992, 0.651065, 0.651138, 0.651211, 0.651283, 0.651356, + 0.651429, 0.651502, 0.651574, 0.651647, 0.651720, 0.651792, 0.651865, 0.651938, + 0.652011, 0.652083, 0.652156, 0.652229, 0.652301, 0.652374, 0.652447, 0.652519, + 0.652592, 0.652665, 0.652737, 0.652810, 0.652882, 0.652955, 0.653028, 0.653100, + 0.653173, 0.653245, 0.653318, 0.653391, 0.653463, 0.653536, 0.653608, 0.653681, + 0.653753, 0.653826, 0.653899, 0.653971, 0.654044, 0.654116, 0.654189, 0.654261, + 0.654334, 0.654406, 0.654479, 0.654551, 0.654624, 0.654696, 0.654769, 0.654841, + 0.654913, 0.654986, 0.655058, 0.655131, 0.655203, 0.655276, 0.655348, 0.655420, + 0.655493, 0.655565, 0.655638, 0.655710, 0.655782, 0.655855, 0.655927, 0.656000, + 0.656072, 0.656144, 0.656217, 0.656289, 0.656361, 0.656434, 0.656506, 0.656578, + 0.656651, 0.656723, 0.656795, 0.656867, 0.656940, 0.657012, 0.657084, 0.657157, + 0.657229, 0.657301, 0.657373, 0.657446, 0.657518, 0.657590, 0.657662, 0.657734, + 0.657807, 0.657879, 0.657951, 0.658023, 0.658095, 0.658168, 0.658240, 0.658312, + 0.658384, 0.658456, 0.658529, 0.658601, 0.658673, 0.658745, 0.658817, 0.658889, + 0.658961, 0.659033, 0.659105, 0.659178, 0.659250, 0.659322, 0.659394, 0.659466, + 0.659538, 0.659610, 0.659682, 0.659754, 0.659826, 0.659898, 0.659970, 0.660042, + 0.660114, 0.660186, 0.660258, 0.660330, 0.660402, 0.660474, 0.660546, 0.660618, + 0.660690, 0.660762, 0.660834, 0.660906, 0.660978, 0.661050, 0.661122, 0.661194, + 0.661266, 0.661338, 0.661410, 0.661482, 0.661553, 0.661625, 0.661697, 0.661769, + 0.661841, 0.661913, 0.661985, 0.662057, 0.662128, 0.662200, 0.662272, 0.662344, + 0.662416, 0.662488, 0.662559, 0.662631, 0.662703, 0.662775, 0.662847, 0.662918, + 0.662990, 0.663062, 0.663134, 0.663205, 0.663277, 0.663349, 0.663421, 0.663492, + 0.663564, 0.663636, 0.663708, 0.663779, 0.663851, 0.663923, 0.663994, 0.664066, + 0.664138, 0.664209, 0.664281, 0.664353, 0.664424, 0.664496, 0.664568, 0.664639, + 0.664711, 0.664783, 0.664854, 0.664926, 0.664997, 0.665069, 0.665141, 0.665212, + 0.665284, 0.665355, 0.665427, 0.665498, 0.665570, 0.665642, 0.665713, 0.665785, + 0.665856, 0.665928, 0.665999, 0.666071, 0.666142, 0.666214, 0.666285, 0.666357, + 0.666428, 0.666500, 0.666571, 0.666643, 0.666714, 0.666786, 0.666857, 0.666928, + 0.667000, 0.667071, 0.667143, 0.667214, 0.667286, 0.667357, 0.667428, 0.667500, + 0.667571, 0.667643, 0.667714, 0.667785, 0.667857, 0.667928, 0.667999, 0.668071, + 0.668142, 0.668213, 0.668285, 0.668356, 0.668427, 0.668499, 0.668570, 0.668641, + 0.668712, 0.668784, 0.668855, 0.668926, 0.668998, 0.669069, 0.669140, 0.669211, + 0.669283, 0.669354, 0.669425, 0.669496, 0.669567, 0.669639, 0.669710, 0.669781, + 0.669852, 0.669923, 0.669995, 0.670066, 0.670137, 0.670208, 0.670279, 0.670350, + 0.670422, 0.670493, 0.670564, 0.670635, 0.670706, 0.670777, 0.670848, 0.670919, + 0.670990, 0.671062, 0.671133, 0.671204, 0.671275, 0.671346, 0.671417, 0.671488, + 0.671559, 0.671630, 0.671701, 0.671772, 0.671843, 0.671914, 0.671985, 0.672056, + 0.672127, 0.672198, 0.672269, 0.672340, 0.672411, 0.672482, 0.672553, 0.672624, + 0.672695, 0.672766, 0.672837, 0.672908, 0.672978, 0.673049, 0.673120, 0.673191, + 0.673262, 0.673333, 0.673404, 0.673475, 0.673546, 0.673616, 0.673687, 0.673758, + 0.673829, 0.673900, 0.673971, 0.674042, 0.674112, 0.674183, 0.674254, 0.674325, + 0.674396, 0.674466, 0.674537, 0.674608, 0.674679, 0.674749, 0.674820, 0.674891, + 0.674962, 0.675032, 0.675103, 0.675174, 0.675245, 0.675315, 0.675386, 0.675457, + 0.675527, 0.675598, 0.675669, 0.675739, 0.675810, 0.675881, 0.675951, 0.676022, + 0.676093, 0.676163, 0.676234, 0.676305, 0.676375, 0.676446, 0.676516, 0.676587, + 0.676658, 0.676728, 0.676799, 0.676869, 0.676940, 0.677011, 0.677081, 0.677152, + 0.677222, 0.677293, 0.677363, 0.677434, 0.677504, 0.677575, 0.677645, 0.677716, + 0.677786, 0.677857, 0.677927, 0.677998, 0.678068, 0.678139, 0.678209, 0.678280, + 0.678350, 0.678420, 0.678491, 0.678561, 0.678632, 0.678702, 0.678773, 0.678843, + 0.678913, 0.678984, 0.679054, 0.679125, 0.679195, 0.679265, 0.679336, 0.679406, + 0.679476, 0.679547, 0.679617, 0.679687, 0.679758, 0.679828, 0.679898, 0.679969, + 0.680039, 0.680109, 0.680179, 0.680250, 0.680320, 0.680390, 0.680461, 0.680531, + 0.680601, 0.680671, 0.680741, 0.680812, 0.680882, 0.680952, 0.681022, 0.681093, + 0.681163, 0.681233, 0.681303, 0.681373, 0.681443, 0.681514, 0.681584, 0.681654, + 0.681724, 0.681794, 0.681864, 0.681934, 0.682005, 0.682075, 0.682145, 0.682215, + 0.682285, 0.682355, 0.682425, 0.682495, 0.682565, 0.682635, 0.682705, 0.682775, + 0.682846, 0.682916, 0.682986, 0.683056, 0.683126, 0.683196, 0.683266, 0.683336, + 0.683406, 0.683476, 0.683546, 0.683616, 0.683686, 0.683756, 0.683825, 0.683895, + 0.683965, 0.684035, 0.684105, 0.684175, 0.684245, 0.684315, 0.684385, 0.684455, + 0.684525, 0.684595, 0.684664, 0.684734, 0.684804, 0.684874, 0.684944, 0.685014, + 0.685084, 0.685153, 0.685223, 0.685293, 0.685363, 0.685433, 0.685503, 0.685572, + 0.685642, 0.685712, 0.685782, 0.685852, 0.685921, 0.685991, 0.686061, 0.686131, + 0.686200, 0.686270, 0.686340, 0.686409, 0.686479, 0.686549, 0.686619, 0.686688, + 0.686758, 0.686828, 0.686897, 0.686967, 0.687037, 0.687106, 0.687176, 0.687246, + 0.687315, 0.687385, 0.687455, 0.687524, 0.687594, 0.687663, 0.687733, 0.687803, + 0.687872, 0.687942, 0.688011, 0.688081, 0.688151, 0.688220, 0.688290, 0.688359, + 0.688429, 0.688498, 0.688568, 0.688637, 0.688707, 0.688776, 0.688846, 0.688915, + 0.688985, 0.689054, 0.689124, 0.689193, 0.689263, 0.689332, 0.689402, 0.689471, + 0.689541, 0.689610, 0.689679, 0.689749, 0.689818, 0.689888, 0.689957, 0.690026, + 0.690096, 0.690165, 0.690235, 0.690304, 0.690373, 0.690443, 0.690512, 0.690581, + 0.690651, 0.690720, 0.690789, 0.690859, 0.690928, 0.690997, 0.691067, 0.691136, + 0.691205, 0.691274, 0.691344, 0.691413, 0.691482, 0.691552, 0.691621, 0.691690, + 0.691759, 0.691828, 0.691898, 0.691967, 0.692036, 0.692105, 0.692175, 0.692244, + 0.692313, 0.692382, 0.692451, 0.692520, 0.692590, 0.692659, 0.692728, 0.692797, + 0.692866, 0.692935, 0.693004, 0.693074, 0.693143, 0.693212, 0.693281, 0.693350, + 0.693419, 0.693488, 0.693557, 0.693626, 0.693695, 0.693764, 0.693833, 0.693902, + 0.693971, 0.694040, 0.694109, 0.694179, 0.694248, 0.694317, 0.694386, 0.694454, + 0.694524, 0.694592, 0.694661, 0.694730, 0.694799, 0.694868, 0.694937, 0.695006, + 0.695075, 0.695144, 0.695213, 0.695282, 0.695351, 0.695420, 0.695489, 0.695557, + 0.695626, 0.695695, 0.695764, 0.695833, 0.695902, 0.695971, 0.696039, 0.696108, + 0.696177, 0.696246, 0.696315, 0.696384, 0.696452, 0.696521, 0.696590, 0.696659, + 0.696728, 0.696796, 0.696865, 0.696934, 0.697003, 0.697071, 0.697140, 0.697209, + 0.697277, 0.697346, 0.697415, 0.697484, 0.697552, 0.697621, 0.697690, 0.697758, + 0.697827, 0.697896, 0.697964, 0.698033, 0.698102, 0.698170, 0.698239, 0.698308, + 0.698376, 0.698445, 0.698513, 0.698582, 0.698651, 0.698719, 0.698788, 0.698856, + 0.698925, 0.698994, 0.699062, 0.699131, 0.699199, 0.699268, 0.699336, 0.699405, + 0.699473, 0.699542, 0.699610, 0.699679, 0.699747, 0.699816, 0.699884, 0.699953, + 0.700021, 0.700090, 0.700158, 0.700227, 0.700295, 0.700364, 0.700432, 0.700500, + 0.700569, 0.700637, 0.700706, 0.700774, 0.700842, 0.700911, 0.700979, 0.701048, + 0.701116, 0.701184, 0.701253, 0.701321, 0.701389, 0.701458, 0.701526, 0.701594, + 0.701663, 0.701731, 0.701799, 0.701868, 0.701936, 0.702004, 0.702072, 0.702141, + 0.702209, 0.702277, 0.702345, 0.702414, 0.702482, 0.702550, 0.702618, 0.702687, + 0.702755, 0.702823, 0.702891, 0.702959, 0.703028, 0.703096, 0.703164, 0.703232, + 0.703300, 0.703368, 0.703436, 0.703505, 0.703573, 0.703641, 0.703709, 0.703777, + 0.703845, 0.703913, 0.703981, 0.704050, 0.704118, 0.704186, 0.704254, 0.704322, + 0.704390, 0.704458, 0.704526, 0.704594, 0.704662, 0.704730, 0.704798, 0.704866, + 0.704934, 0.705002, 0.705070, 0.705138, 0.705206, 0.705274, 0.705342, 0.705410, + 0.705478, 0.705546, 0.705614, 0.705682, 0.705750, 0.705818, 0.705885, 0.705953, + 0.706021, 0.706089, 0.706157, 0.706225, 0.706293, 0.706361, 0.706429, 0.706496, + 0.706564, 0.706632, 0.706700, 0.706768, 0.706836, 0.706903, 0.706971, 0.707039, + 0.707107, 0.707175, 0.707242, 0.707310, 0.707378, 0.707446, 0.707513, 0.707581, + 0.707649, 0.707717, 0.707784, 0.707852, 0.707920, 0.707988, 0.708055, 0.708123, + 0.708191, 0.708258, 0.708326, 0.708394, 0.708461, 0.708529, 0.708597, 0.708664, + 0.708732, 0.708800, 0.708867, 0.708935, 0.709002, 0.709070, 0.709138, 0.709205, + 0.709273, 0.709340, 0.709408, 0.709476, 0.709543, 0.709611, 0.709678, 0.709746, + 0.709813, 0.709881, 0.709948, 0.710016, 0.710083, 0.710151, 0.710218, 0.710286, + 0.710353, 0.710421, 0.710488, 0.710556, 0.710623, 0.710691, 0.710758, 0.710826, + 0.710893, 0.710960, 0.711028, 0.711095, 0.711163, 0.711230, 0.711297, 0.711365, + 0.711432, 0.711500, 0.711567, 0.711634, 0.711702, 0.711769, 0.711836, 0.711904, + 0.711971, 0.712038, 0.712106, 0.712173, 0.712240, 0.712308, 0.712375, 0.712442, + 0.712509, 0.712577, 0.712644, 0.712711, 0.712778, 0.712846, 0.712913, 0.712980, + 0.713047, 0.713115, 0.713182, 0.713249, 0.713316, 0.713383, 0.713451, 0.713518, + 0.713585, 0.713652, 0.713719, 0.713786, 0.713853, 0.713921, 0.713988, 0.714055, + 0.714122, 0.714189, 0.714256, 0.714323, 0.714390, 0.714457, 0.714525, 0.714592, + 0.714659, 0.714726, 0.714793, 0.714860, 0.714927, 0.714994, 0.715061, 0.715128, + 0.715195, 0.715262, 0.715329, 0.715396, 0.715463, 0.715530, 0.715597, 0.715664, + 0.715731, 0.715798, 0.715865, 0.715932, 0.715999, 0.716066, 0.716132, 0.716199, + 0.716266, 0.716333, 0.716400, 0.716467, 0.716534, 0.716601, 0.716668, 0.716734, + 0.716801, 0.716868, 0.716935, 0.717002, 0.717069, 0.717135, 0.717202, 0.717269, + 0.717336, 0.717403, 0.717469, 0.717536, 0.717603, 0.717670, 0.717737, 0.717803, + 0.717870, 0.717937, 0.718004, 0.718070, 0.718137, 0.718204, 0.718270, 0.718337, + 0.718404, 0.718471, 0.718537, 0.718604, 0.718670, 0.718737, 0.718804, 0.718870, + 0.718937, 0.719004, 0.719070, 0.719137, 0.719204, 0.719270, 0.719337, 0.719403, + 0.719470, 0.719537, 0.719603, 0.719670, 0.719736, 0.719803, 0.719869, 0.719936, + 0.720003, 0.720069, 0.720136, 0.720202, 0.720269, 0.720335, 0.720402, 0.720468, + 0.720535, 0.720601, 0.720668, 0.720734, 0.720800, 0.720867, 0.720933, 0.721000, + 0.721066, 0.721133, 0.721199, 0.721265, 0.721332, 0.721398, 0.721465, 0.721531, + 0.721597, 0.721664, 0.721730, 0.721797, 0.721863, 0.721929, 0.721996, 0.722062, + 0.722128, 0.722194, 0.722261, 0.722327, 0.722393, 0.722460, 0.722526, 0.722592, + 0.722659, 0.722725, 0.722791, 0.722857, 0.722924, 0.722990, 0.723056, 0.723122, + 0.723188, 0.723255, 0.723321, 0.723387, 0.723453, 0.723520, 0.723586, 0.723652, + 0.723718, 0.723784, 0.723850, 0.723916, 0.723983, 0.724049, 0.724115, 0.724181, + 0.724247, 0.724313, 0.724379, 0.724445, 0.724511, 0.724578, 0.724644, 0.724710, + 0.724776, 0.724842, 0.724908, 0.724974, 0.725040, 0.725106, 0.725172, 0.725238, + 0.725304, 0.725370, 0.725436, 0.725502, 0.725568, 0.725634, 0.725700, 0.725766, + 0.725832, 0.725898, 0.725964, 0.726030, 0.726095, 0.726161, 0.726227, 0.726293, + 0.726359, 0.726425, 0.726491, 0.726557, 0.726623, 0.726689, 0.726754, 0.726820, + 0.726886, 0.726952, 0.727018, 0.727084, 0.727149, 0.727215, 0.727281, 0.727347, + 0.727413, 0.727478, 0.727544, 0.727610, 0.727676, 0.727741, 0.727807, 0.727873, + 0.727939, 0.728004, 0.728070, 0.728136, 0.728202, 0.728267, 0.728333, 0.728399, + 0.728464, 0.728530, 0.728596, 0.728661, 0.728727, 0.728793, 0.728858, 0.728924, + 0.728990, 0.729055, 0.729121, 0.729186, 0.729252, 0.729318, 0.729383, 0.729449, + 0.729514, 0.729580, 0.729646, 0.729711, 0.729777, 0.729842, 0.729908, 0.729973, + 0.730039, 0.730104, 0.730170, 0.730235, 0.730301, 0.730366, 0.730432, 0.730497, + 0.730563, 0.730628, 0.730694, 0.730759, 0.730825, 0.730890, 0.730955, 0.731021, + 0.731086, 0.731152, 0.731217, 0.731282, 0.731348, 0.731413, 0.731479, 0.731544, + 0.731609, 0.731675, 0.731740, 0.731805, 0.731871, 0.731936, 0.732001, 0.732067, + 0.732132, 0.732197, 0.732263, 0.732328, 0.732393, 0.732458, 0.732524, 0.732589, + 0.732654, 0.732720, 0.732785, 0.732850, 0.732915, 0.732980, 0.733046, 0.733111, + 0.733176, 0.733241, 0.733306, 0.733372, 0.733437, 0.733502, 0.733567, 0.733632, + 0.733697, 0.733763, 0.733828, 0.733893, 0.733958, 0.734023, 0.734088, 0.734153, + 0.734218, 0.734283, 0.734349, 0.734414, 0.734479, 0.734544, 0.734609, 0.734674, + 0.734739, 0.734804, 0.734869, 0.734934, 0.734999, 0.735064, 0.735129, 0.735194, + 0.735259, 0.735324, 0.735389, 0.735454, 0.735519, 0.735584, 0.735649, 0.735714, + 0.735779, 0.735844, 0.735908, 0.735973, 0.736038, 0.736103, 0.736168, 0.736233, + 0.736298, 0.736363, 0.736428, 0.736492, 0.736557, 0.736622, 0.736687, 0.736752, + 0.736817, 0.736881, 0.736946, 0.737011, 0.737076, 0.737141, 0.737205, 0.737270, + 0.737335, 0.737400, 0.737464, 0.737529, 0.737594, 0.737659, 0.737723, 0.737788, + 0.737853, 0.737918, 0.737982, 0.738047, 0.738112, 0.738176, 0.738241, 0.738306, + 0.738370, 0.738435, 0.738500, 0.738564, 0.738629, 0.738693, 0.738758, 0.738823, + 0.738887, 0.738952, 0.739017, 0.739081, 0.739146, 0.739210, 0.739275, 0.739339, + 0.739404, 0.739468, 0.739533, 0.739598, 0.739662, 0.739727, 0.739791, 0.739856, + 0.739920, 0.739985, 0.740049, 0.740114, 0.740178, 0.740242, 0.740307, 0.740371, + 0.740436, 0.740500, 0.740565, 0.740629, 0.740694, 0.740758, 0.740822, 0.740887, + 0.740951, 0.741015, 0.741080, 0.741144, 0.741209, 0.741273, 0.741337, 0.741402, + 0.741466, 0.741530, 0.741595, 0.741659, 0.741723, 0.741788, 0.741852, 0.741916, + 0.741980, 0.742045, 0.742109, 0.742173, 0.742237, 0.742302, 0.742366, 0.742430, + 0.742494, 0.742559, 0.742623, 0.742687, 0.742751, 0.742815, 0.742880, 0.742944, + 0.743008, 0.743072, 0.743136, 0.743200, 0.743265, 0.743329, 0.743393, 0.743457, + 0.743521, 0.743585, 0.743649, 0.743713, 0.743777, 0.743842, 0.743906, 0.743970, + 0.744034, 0.744098, 0.744162, 0.744226, 0.744290, 0.744354, 0.744418, 0.744482, + 0.744546, 0.744610, 0.744674, 0.744738, 0.744802, 0.744866, 0.744930, 0.744994, + 0.745058, 0.745122, 0.745186, 0.745250, 0.745314, 0.745377, 0.745441, 0.745505, + 0.745569, 0.745633, 0.745697, 0.745761, 0.745825, 0.745889, 0.745952, 0.746016, + 0.746080, 0.746144, 0.746208, 0.746272, 0.746335, 0.746399, 0.746463, 0.746527, + 0.746591, 0.746654, 0.746718, 0.746782, 0.746846, 0.746909, 0.746973, 0.747037, + 0.747101, 0.747164, 0.747228, 0.747292, 0.747355, 0.747419, 0.747483, 0.747547, + 0.747610, 0.747674, 0.747738, 0.747801, 0.747865, 0.747929, 0.747992, 0.748056, + 0.748119, 0.748183, 0.748247, 0.748310, 0.748374, 0.748437, 0.748501, 0.748565, + 0.748628, 0.748692, 0.748755, 0.748819, 0.748882, 0.748946, 0.749009, 0.749073, + 0.749136, 0.749200, 0.749263, 0.749327, 0.749390, 0.749454, 0.749517, 0.749581, + 0.749644, 0.749708, 0.749771, 0.749835, 0.749898, 0.749961, 0.750025, 0.750088, + 0.750152, 0.750215, 0.750278, 0.750342, 0.750405, 0.750469, 0.750532, 0.750595, + 0.750659, 0.750722, 0.750785, 0.750849, 0.750912, 0.750975, 0.751039, 0.751102, + 0.751165, 0.751228, 0.751292, 0.751355, 0.751418, 0.751481, 0.751545, 0.751608, + 0.751671, 0.751734, 0.751798, 0.751861, 0.751924, 0.751987, 0.752050, 0.752114, + 0.752177, 0.752240, 0.752303, 0.752366, 0.752429, 0.752493, 0.752556, 0.752619, + 0.752682, 0.752745, 0.752808, 0.752871, 0.752934, 0.752998, 0.753061, 0.753124, + 0.753187, 0.753250, 0.753313, 0.753376, 0.753439, 0.753502, 0.753565, 0.753628, + 0.753691, 0.753754, 0.753817, 0.753880, 0.753943, 0.754006, 0.754069, 0.754132, + 0.754195, 0.754258, 0.754321, 0.754384, 0.754447, 0.754510, 0.754573, 0.754636, + 0.754698, 0.754761, 0.754824, 0.754887, 0.754950, 0.755013, 0.755076, 0.755139, + 0.755201, 0.755264, 0.755327, 0.755390, 0.755453, 0.755516, 0.755578, 0.755641, + 0.755704, 0.755767, 0.755829, 0.755892, 0.755955, 0.756018, 0.756081, 0.756143, + 0.756206, 0.756269, 0.756331, 0.756394, 0.756457, 0.756520, 0.756582, 0.756645, + 0.756708, 0.756770, 0.756833, 0.756896, 0.756958, 0.757021, 0.757084, 0.757146, + 0.757209, 0.757271, 0.757334, 0.757397, 0.757459, 0.757522, 0.757584, 0.757647, + 0.757710, 0.757772, 0.757835, 0.757897, 0.757960, 0.758022, 0.758085, 0.758147, + 0.758210, 0.758272, 0.758335, 0.758397, 0.758460, 0.758522, 0.758585, 0.758647, + 0.758710, 0.758772, 0.758835, 0.758897, 0.758960, 0.759022, 0.759084, 0.759147, + 0.759209, 0.759272, 0.759334, 0.759396, 0.759459, 0.759521, 0.759583, 0.759646, + 0.759708, 0.759771, 0.759833, 0.759895, 0.759957, 0.760020, 0.760082, 0.760144, + 0.760207, 0.760269, 0.760331, 0.760394, 0.760456, 0.760518, 0.760580, 0.760643, + 0.760705, 0.760767, 0.760829, 0.760891, 0.760954, 0.761016, 0.761078, 0.761140, + 0.761202, 0.761265, 0.761327, 0.761389, 0.761451, 0.761513, 0.761575, 0.761637, + 0.761700, 0.761762, 0.761824, 0.761886, 0.761948, 0.762010, 0.762072, 0.762134, + 0.762196, 0.762258, 0.762320, 0.762382, 0.762444, 0.762507, 0.762569, 0.762631, + 0.762693, 0.762755, 0.762817, 0.762879, 0.762941, 0.763003, 0.763065, 0.763126, + 0.763188, 0.763250, 0.763312, 0.763374, 0.763436, 0.763498, 0.763560, 0.763622, + 0.763684, 0.763746, 0.763808, 0.763869, 0.763931, 0.763993, 0.764055, 0.764117, + 0.764179, 0.764241, 0.764302, 0.764364, 0.764426, 0.764488, 0.764550, 0.764611, + 0.764673, 0.764735, 0.764797, 0.764859, 0.764920, 0.764982, 0.765044, 0.765106, + 0.765167, 0.765229, 0.765291, 0.765352, 0.765414, 0.765476, 0.765538, 0.765599, + 0.765661, 0.765723, 0.765784, 0.765846, 0.765907, 0.765969, 0.766031, 0.766092, + 0.766154, 0.766216, 0.766277, 0.766339, 0.766400, 0.766462, 0.766524, 0.766585, + 0.766647, 0.766708, 0.766770, 0.766831, 0.766893, 0.766954, 0.767016, 0.767077, + 0.767139, 0.767200, 0.767262, 0.767323, 0.767385, 0.767446, 0.767508, 0.767569, + 0.767631, 0.767692, 0.767754, 0.767815, 0.767876, 0.767938, 0.767999, 0.768061, + 0.768122, 0.768183, 0.768245, 0.768306, 0.768368, 0.768429, 0.768490, 0.768552, + 0.768613, 0.768674, 0.768736, 0.768797, 0.768858, 0.768919, 0.768981, 0.769042, + 0.769103, 0.769165, 0.769226, 0.769287, 0.769348, 0.769410, 0.769471, 0.769532, + 0.769593, 0.769655, 0.769716, 0.769777, 0.769838, 0.769899, 0.769961, 0.770022, + 0.770083, 0.770144, 0.770205, 0.770266, 0.770327, 0.770389, 0.770450, 0.770511, + 0.770572, 0.770633, 0.770694, 0.770755, 0.770816, 0.770877, 0.770938, 0.770999, + 0.771061, 0.771122, 0.771183, 0.771244, 0.771305, 0.771366, 0.771427, 0.771488, + 0.771549, 0.771610, 0.771671, 0.771732, 0.771793, 0.771854, 0.771915, 0.771975, + 0.772036, 0.772097, 0.772158, 0.772219, 0.772280, 0.772341, 0.772402, 0.772463, + 0.772524, 0.772584, 0.772645, 0.772706, 0.772767, 0.772828, 0.772889, 0.772950, + 0.773010, 0.773071, 0.773132, 0.773193, 0.773254, 0.773314, 0.773375, 0.773436, + 0.773497, 0.773558, 0.773618, 0.773679, 0.773740, 0.773801, 0.773861, 0.773922, + 0.773983, 0.774043, 0.774104, 0.774165, 0.774225, 0.774286, 0.774347, 0.774407, + 0.774468, 0.774529, 0.774589, 0.774650, 0.774711, 0.774771, 0.774832, 0.774893, + 0.774953, 0.775014, 0.775074, 0.775135, 0.775195, 0.775256, 0.775317, 0.775377, + 0.775438, 0.775498, 0.775559, 0.775619, 0.775680, 0.775740, 0.775801, 0.775861, + 0.775922, 0.775982, 0.776043, 0.776103, 0.776164, 0.776224, 0.776284, 0.776345, + 0.776405, 0.776466, 0.776526, 0.776587, 0.776647, 0.776707, 0.776768, 0.776828, + 0.776888, 0.776949, 0.777009, 0.777070, 0.777130, 0.777190, 0.777251, 0.777311, + 0.777371, 0.777431, 0.777492, 0.777552, 0.777612, 0.777673, 0.777733, 0.777793, + 0.777853, 0.777914, 0.777974, 0.778034, 0.778094, 0.778155, 0.778215, 0.778275, + 0.778335, 0.778395, 0.778456, 0.778516, 0.778576, 0.778636, 0.778696, 0.778756, + 0.778817, 0.778877, 0.778937, 0.778997, 0.779057, 0.779117, 0.779177, 0.779237, + 0.779297, 0.779357, 0.779418, 0.779478, 0.779538, 0.779598, 0.779658, 0.779718, + 0.779778, 0.779838, 0.779898, 0.779958, 0.780018, 0.780078, 0.780138, 0.780198, + 0.780258, 0.780318, 0.780378, 0.780438, 0.780498, 0.780557, 0.780617, 0.780677, + 0.780737, 0.780797, 0.780857, 0.780917, 0.780977, 0.781037, 0.781097, 0.781156, + 0.781216, 0.781276, 0.781336, 0.781396, 0.781456, 0.781515, 0.781575, 0.781635, + 0.781695, 0.781755, 0.781814, 0.781874, 0.781934, 0.781994, 0.782053, 0.782113, + 0.782173, 0.782233, 0.782292, 0.782352, 0.782412, 0.782472, 0.782531, 0.782591, + 0.782651, 0.782710, 0.782770, 0.782830, 0.782889, 0.782949, 0.783009, 0.783068, + 0.783128, 0.783187, 0.783247, 0.783307, 0.783366, 0.783426, 0.783485, 0.783545, + 0.783605, 0.783664, 0.783724, 0.783783, 0.783843, 0.783902, 0.783962, 0.784021, + 0.784081, 0.784140, 0.784200, 0.784259, 0.784319, 0.784378, 0.784438, 0.784497, + 0.784557, 0.784616, 0.784675, 0.784735, 0.784794, 0.784854, 0.784913, 0.784973, + 0.785032, 0.785091, 0.785151, 0.785210, 0.785269, 0.785329, 0.785388, 0.785447, + 0.785507, 0.785566, 0.785625, 0.785685, 0.785744, 0.785803, 0.785863, 0.785922, + 0.785981, 0.786041, 0.786100, 0.786159, 0.786218, 0.786278, 0.786337, 0.786396, + 0.786455, 0.786514, 0.786574, 0.786633, 0.786692, 0.786751, 0.786810, 0.786870, + 0.786929, 0.786988, 0.787047, 0.787106, 0.787165, 0.787224, 0.787284, 0.787343, + 0.787402, 0.787461, 0.787520, 0.787579, 0.787638, 0.787697, 0.787756, 0.787815, + 0.787874, 0.787933, 0.787992, 0.788051, 0.788110, 0.788169, 0.788228, 0.788287, + 0.788346, 0.788405, 0.788464, 0.788523, 0.788582, 0.788641, 0.788700, 0.788759, + 0.788818, 0.788877, 0.788936, 0.788995, 0.789054, 0.789113, 0.789172, 0.789230, + 0.789289, 0.789348, 0.789407, 0.789466, 0.789525, 0.789584, 0.789642, 0.789701, + 0.789760, 0.789819, 0.789878, 0.789936, 0.789995, 0.790054, 0.790113, 0.790171, + 0.790230, 0.790289, 0.790348, 0.790406, 0.790465, 0.790524, 0.790583, 0.790641, + 0.790700, 0.790759, 0.790817, 0.790876, 0.790935, 0.790993, 0.791052, 0.791111, + 0.791169, 0.791228, 0.791287, 0.791345, 0.791404, 0.791462, 0.791521, 0.791580, + 0.791638, 0.791697, 0.791755, 0.791814, 0.791872, 0.791931, 0.791990, 0.792048, + 0.792107, 0.792165, 0.792224, 0.792282, 0.792341, 0.792399, 0.792458, 0.792516, + 0.792575, 0.792633, 0.792691, 0.792750, 0.792808, 0.792867, 0.792925, 0.792984, + 0.793042, 0.793100, 0.793159, 0.793217, 0.793276, 0.793334, 0.793392, 0.793451, + 0.793509, 0.793567, 0.793626, 0.793684, 0.793742, 0.793801, 0.793859, 0.793917, + 0.793975, 0.794034, 0.794092, 0.794150, 0.794209, 0.794267, 0.794325, 0.794383, + 0.794442, 0.794500, 0.794558, 0.794616, 0.794674, 0.794733, 0.794791, 0.794849, + 0.794907, 0.794965, 0.795023, 0.795082, 0.795140, 0.795198, 0.795256, 0.795314, + 0.795372, 0.795430, 0.795488, 0.795547, 0.795605, 0.795663, 0.795721, 0.795779, + 0.795837, 0.795895, 0.795953, 0.796011, 0.796069, 0.796127, 0.796185, 0.796243, + 0.796301, 0.796359, 0.796417, 0.796475, 0.796533, 0.796591, 0.796649, 0.796707, + 0.796765, 0.796823, 0.796881, 0.796939, 0.796996, 0.797054, 0.797112, 0.797170, + 0.797228, 0.797286, 0.797344, 0.797402, 0.797459, 0.797517, 0.797575, 0.797633, + 0.797691, 0.797749, 0.797806, 0.797864, 0.797922, 0.797980, 0.798038, 0.798095, + 0.798153, 0.798211, 0.798269, 0.798326, 0.798384, 0.798442, 0.798500, 0.798557, + 0.798615, 0.798673, 0.798730, 0.798788, 0.798846, 0.798903, 0.798961, 0.799019, + 0.799076, 0.799134, 0.799192, 0.799249, 0.799307, 0.799365, 0.799422, 0.799480, + 0.799537, 0.799595, 0.799652, 0.799710, 0.799768, 0.799825, 0.799883, 0.799940, + 0.799998, 0.800055, 0.800113, 0.800170, 0.800228, 0.800285, 0.800343, 0.800400, + 0.800458, 0.800515, 0.800573, 0.800630, 0.800687, 0.800745, 0.800802, 0.800860, + 0.800917, 0.800975, 0.801032, 0.801089, 0.801147, 0.801204, 0.801261, 0.801319, + 0.801376, 0.801434, 0.801491, 0.801548, 0.801606, 0.801663, 0.801720, 0.801777, + 0.801835, 0.801892, 0.801949, 0.802007, 0.802064, 0.802121, 0.802178, 0.802236, + 0.802293, 0.802350, 0.802407, 0.802464, 0.802522, 0.802579, 0.802636, 0.802693, + 0.802750, 0.802808, 0.802865, 0.802922, 0.802979, 0.803036, 0.803093, 0.803150, + 0.803208, 0.803265, 0.803322, 0.803379, 0.803436, 0.803493, 0.803550, 0.803607, + 0.803664, 0.803721, 0.803778, 0.803835, 0.803892, 0.803949, 0.804006, 0.804063, + 0.804120, 0.804177, 0.804234, 0.804291, 0.804348, 0.804405, 0.804462, 0.804519, + 0.804576, 0.804633, 0.804690, 0.804747, 0.804804, 0.804861, 0.804918, 0.804974, + 0.805031, 0.805088, 0.805145, 0.805202, 0.805259, 0.805316, 0.805372, 0.805429, + 0.805486, 0.805543, 0.805600, 0.805656, 0.805713, 0.805770, 0.805827, 0.805884, + 0.805940, 0.805997, 0.806054, 0.806111, 0.806167, 0.806224, 0.806281, 0.806338, + 0.806394, 0.806451, 0.806508, 0.806564, 0.806621, 0.806678, 0.806734, 0.806791, + 0.806848, 0.806904, 0.806961, 0.807017, 0.807074, 0.807131, 0.807187, 0.807244, + 0.807300, 0.807357, 0.807414, 0.807470, 0.807527, 0.807583, 0.807640, 0.807696, + 0.807753, 0.807809, 0.807866, 0.807922, 0.807979, 0.808035, 0.808092, 0.808148, + 0.808205, 0.808261, 0.808318, 0.808374, 0.808430, 0.808487, 0.808543, 0.808600, + 0.808656, 0.808713, 0.808769, 0.808825, 0.808882, 0.808938, 0.808994, 0.809051, + 0.809107, 0.809164, 0.809220, 0.809276, 0.809332, 0.809389, 0.809445, 0.809501, + 0.809558, 0.809614, 0.809670, 0.809726, 0.809783, 0.809839, 0.809895, 0.809951, + 0.810008, 0.810064, 0.810120, 0.810176, 0.810232, 0.810289, 0.810345, 0.810401, + 0.810457, 0.810513, 0.810570, 0.810626, 0.810682, 0.810738, 0.810794, 0.810850, + 0.810906, 0.810962, 0.811018, 0.811075, 0.811131, 0.811187, 0.811243, 0.811299, + 0.811355, 0.811411, 0.811467, 0.811523, 0.811579, 0.811635, 0.811691, 0.811747, + 0.811803, 0.811859, 0.811915, 0.811971, 0.812027, 0.812083, 0.812139, 0.812195, + 0.812251, 0.812307, 0.812362, 0.812418, 0.812474, 0.812530, 0.812586, 0.812642, + 0.812698, 0.812754, 0.812809, 0.812865, 0.812921, 0.812977, 0.813033, 0.813089, + 0.813144, 0.813200, 0.813256, 0.813312, 0.813368, 0.813423, 0.813479, 0.813535, + 0.813591, 0.813646, 0.813702, 0.813758, 0.813814, 0.813869, 0.813925, 0.813981, + 0.814036, 0.814092, 0.814148, 0.814203, 0.814259, 0.814315, 0.814370, 0.814426, + 0.814482, 0.814537, 0.814593, 0.814648, 0.814704, 0.814760, 0.814815, 0.814871, + 0.814926, 0.814982, 0.815037, 0.815093, 0.815149, 0.815204, 0.815260, 0.815315, + 0.815371, 0.815426, 0.815482, 0.815537, 0.815593, 0.815648, 0.815704, 0.815759, + 0.815814, 0.815870, 0.815925, 0.815981, 0.816036, 0.816092, 0.816147, 0.816202, + 0.816258, 0.816313, 0.816368, 0.816424, 0.816479, 0.816535, 0.816590, 0.816645, + 0.816701, 0.816756, 0.816811, 0.816867, 0.816922, 0.816977, 0.817032, 0.817088, + 0.817143, 0.817198, 0.817253, 0.817309, 0.817364, 0.817419, 0.817474, 0.817530, + 0.817585, 0.817640, 0.817695, 0.817750, 0.817806, 0.817861, 0.817916, 0.817971, + 0.818026, 0.818081, 0.818137, 0.818192, 0.818247, 0.818302, 0.818357, 0.818412, + 0.818467, 0.818522, 0.818577, 0.818632, 0.818687, 0.818742, 0.818798, 0.818853, + 0.818908, 0.818963, 0.819018, 0.819073, 0.819128, 0.819183, 0.819238, 0.819293, + 0.819348, 0.819402, 0.819457, 0.819512, 0.819567, 0.819622, 0.819677, 0.819732, + 0.819787, 0.819842, 0.819897, 0.819952, 0.820007, 0.820061, 0.820116, 0.820171, + 0.820226, 0.820281, 0.820336, 0.820390, 0.820445, 0.820500, 0.820555, 0.820610, + 0.820664, 0.820719, 0.820774, 0.820829, 0.820884, 0.820938, 0.820993, 0.821048, + 0.821102, 0.821157, 0.821212, 0.821267, 0.821321, 0.821376, 0.821431, 0.821485, + 0.821540, 0.821595, 0.821649, 0.821704, 0.821759, 0.821813, 0.821868, 0.821922, + 0.821977, 0.822032, 0.822086, 0.822141, 0.822195, 0.822250, 0.822305, 0.822359, + 0.822414, 0.822468, 0.822523, 0.822577, 0.822632, 0.822686, 0.822741, 0.822795, + 0.822850, 0.822904, 0.822959, 0.823013, 0.823068, 0.823122, 0.823177, 0.823231, + 0.823285, 0.823340, 0.823394, 0.823449, 0.823503, 0.823557, 0.823612, 0.823666, + 0.823721, 0.823775, 0.823829, 0.823884, 0.823938, 0.823992, 0.824047, 0.824101, + 0.824155, 0.824209, 0.824264, 0.824318, 0.824372, 0.824427, 0.824481, 0.824535, + 0.824589, 0.824644, 0.824698, 0.824752, 0.824806, 0.824860, 0.824915, 0.824969, + 0.825023, 0.825077, 0.825131, 0.825185, 0.825240, 0.825294, 0.825348, 0.825402, + 0.825456, 0.825510, 0.825564, 0.825618, 0.825673, 0.825727, 0.825781, 0.825835, + 0.825889, 0.825943, 0.825997, 0.826051, 0.826105, 0.826159, 0.826213, 0.826267, + 0.826321, 0.826375, 0.826429, 0.826483, 0.826537, 0.826591, 0.826645, 0.826699, + 0.826753, 0.826807, 0.826861, 0.826915, 0.826968, 0.827022, 0.827076, 0.827130, + 0.827184, 0.827238, 0.827292, 0.827346, 0.827399, 0.827453, 0.827507, 0.827561, + 0.827615, 0.827669, 0.827722, 0.827776, 0.827830, 0.827884, 0.827938, 0.827991, + 0.828045, 0.828099, 0.828153, 0.828206, 0.828260, 0.828314, 0.828367, 0.828421, + 0.828475, 0.828529, 0.828582, 0.828636, 0.828690, 0.828743, 0.828797, 0.828851, + 0.828904, 0.828958, 0.829011, 0.829065, 0.829119, 0.829172, 0.829226, 0.829279, + 0.829333, 0.829386, 0.829440, 0.829494, 0.829547, 0.829601, 0.829654, 0.829708, + 0.829761, 0.829815, 0.829868, 0.829922, 0.829975, 0.830029, 0.830082, 0.830136, + 0.830189, 0.830243, 0.830296, 0.830349, 0.830403, 0.830456, 0.830510, 0.830563, + 0.830616, 0.830670, 0.830723, 0.830777, 0.830830, 0.830883, 0.830937, 0.830990, + 0.831043, 0.831097, 0.831150, 0.831203, 0.831257, 0.831310, 0.831363, 0.831416, + 0.831470, 0.831523, 0.831576, 0.831629, 0.831683, 0.831736, 0.831789, 0.831842, + 0.831895, 0.831949, 0.832002, 0.832055, 0.832108, 0.832161, 0.832215, 0.832268, + 0.832321, 0.832374, 0.832427, 0.832480, 0.832533, 0.832586, 0.832640, 0.832693, + 0.832746, 0.832799, 0.832852, 0.832905, 0.832958, 0.833011, 0.833064, 0.833117, + 0.833170, 0.833223, 0.833276, 0.833329, 0.833382, 0.833435, 0.833488, 0.833541, + 0.833594, 0.833647, 0.833700, 0.833753, 0.833806, 0.833859, 0.833912, 0.833965, + 0.834018, 0.834070, 0.834123, 0.834176, 0.834229, 0.834282, 0.834335, 0.834388, + 0.834440, 0.834493, 0.834546, 0.834599, 0.834652, 0.834705, 0.834757, 0.834810, + 0.834863, 0.834916, 0.834968, 0.835021, 0.835074, 0.835127, 0.835179, 0.835232, + 0.835285, 0.835338, 0.835390, 0.835443, 0.835496, 0.835548, 0.835601, 0.835654, + 0.835706, 0.835759, 0.835812, 0.835864, 0.835917, 0.835969, 0.836022, 0.836075, + 0.836127, 0.836180, 0.836232, 0.836285, 0.836338, 0.836390, 0.836443, 0.836495, + 0.836548, 0.836600, 0.836653, 0.836705, 0.836758, 0.836810, 0.836863, 0.836915, + 0.836968, 0.837020, 0.837073, 0.837125, 0.837178, 0.837230, 0.837282, 0.837335, + 0.837387, 0.837440, 0.837492, 0.837544, 0.837597, 0.837649, 0.837701, 0.837754, + 0.837806, 0.837859, 0.837911, 0.837963, 0.838015, 0.838068, 0.838120, 0.838172, + 0.838225, 0.838277, 0.838329, 0.838382, 0.838434, 0.838486, 0.838538, 0.838591, + 0.838643, 0.838695, 0.838747, 0.838799, 0.838852, 0.838904, 0.838956, 0.839008, + 0.839060, 0.839112, 0.839165, 0.839217, 0.839269, 0.839321, 0.839373, 0.839425, + 0.839477, 0.839529, 0.839581, 0.839634, 0.839686, 0.839738, 0.839790, 0.839842, + 0.839894, 0.839946, 0.839998, 0.840050, 0.840102, 0.840154, 0.840206, 0.840258, + 0.840310, 0.840362, 0.840414, 0.840466, 0.840518, 0.840570, 0.840622, 0.840673, + 0.840725, 0.840777, 0.840829, 0.840881, 0.840933, 0.840985, 0.841037, 0.841089, + 0.841140, 0.841192, 0.841244, 0.841296, 0.841348, 0.841400, 0.841451, 0.841503, + 0.841555, 0.841607, 0.841659, 0.841710, 0.841762, 0.841814, 0.841866, 0.841917, + 0.841969, 0.842021, 0.842072, 0.842124, 0.842176, 0.842228, 0.842279, 0.842331, + 0.842383, 0.842434, 0.842486, 0.842538, 0.842589, 0.842641, 0.842692, 0.842744, + 0.842796, 0.842847, 0.842899, 0.842950, 0.843002, 0.843054, 0.843105, 0.843157, + 0.843208, 0.843260, 0.843311, 0.843363, 0.843414, 0.843466, 0.843517, 0.843569, + 0.843620, 0.843672, 0.843723, 0.843775, 0.843826, 0.843878, 0.843929, 0.843980, + 0.844032, 0.844083, 0.844135, 0.844186, 0.844238, 0.844289, 0.844340, 0.844392, + 0.844443, 0.844494, 0.844546, 0.844597, 0.844648, 0.844700, 0.844751, 0.844802, + 0.844854, 0.844905, 0.844956, 0.845007, 0.845059, 0.845110, 0.845161, 0.845212, + 0.845264, 0.845315, 0.845366, 0.845417, 0.845469, 0.845520, 0.845571, 0.845622, + 0.845673, 0.845724, 0.845776, 0.845827, 0.845878, 0.845929, 0.845980, 0.846031, + 0.846082, 0.846133, 0.846185, 0.846236, 0.846287, 0.846338, 0.846389, 0.846440, + 0.846491, 0.846542, 0.846593, 0.846644, 0.846695, 0.846746, 0.846797, 0.846848, + 0.846899, 0.846950, 0.847001, 0.847052, 0.847103, 0.847154, 0.847205, 0.847256, + 0.847307, 0.847358, 0.847408, 0.847459, 0.847510, 0.847561, 0.847612, 0.847663, + 0.847714, 0.847765, 0.847815, 0.847866, 0.847917, 0.847968, 0.848019, 0.848070, + 0.848120, 0.848171, 0.848222, 0.848273, 0.848323, 0.848374, 0.848425, 0.848476, + 0.848526, 0.848577, 0.848628, 0.848679, 0.848729, 0.848780, 0.848831, 0.848881, + 0.848932, 0.848983, 0.849033, 0.849084, 0.849135, 0.849185, 0.849236, 0.849287, + 0.849337, 0.849388, 0.849438, 0.849489, 0.849540, 0.849590, 0.849641, 0.849691, + 0.849742, 0.849792, 0.849843, 0.849893, 0.849944, 0.849994, 0.850045, 0.850095, + 0.850146, 0.850196, 0.850247, 0.850297, 0.850348, 0.850398, 0.850449, 0.850499, + 0.850549, 0.850600, 0.850650, 0.850701, 0.850751, 0.850801, 0.850852, 0.850902, + 0.850953, 0.851003, 0.851053, 0.851104, 0.851154, 0.851204, 0.851255, 0.851305, + 0.851355, 0.851406, 0.851456, 0.851506, 0.851556, 0.851607, 0.851657, 0.851707, + 0.851757, 0.851808, 0.851858, 0.851908, 0.851958, 0.852008, 0.852059, 0.852109, + 0.852159, 0.852209, 0.852259, 0.852309, 0.852360, 0.852410, 0.852460, 0.852510, + 0.852560, 0.852610, 0.852660, 0.852710, 0.852760, 0.852810, 0.852861, 0.852911, + 0.852961, 0.853011, 0.853061, 0.853111, 0.853161, 0.853211, 0.853261, 0.853311, + 0.853361, 0.853411, 0.853461, 0.853511, 0.853561, 0.853611, 0.853660, 0.853710, + 0.853760, 0.853810, 0.853860, 0.853910, 0.853960, 0.854010, 0.854060, 0.854110, + 0.854159, 0.854209, 0.854259, 0.854309, 0.854359, 0.854409, 0.854458, 0.854508, + 0.854558, 0.854608, 0.854658, 0.854707, 0.854757, 0.854807, 0.854857, 0.854906, + 0.854956, 0.855006, 0.855056, 0.855105, 0.855155, 0.855205, 0.855254, 0.855304, + 0.855354, 0.855403, 0.855453, 0.855503, 0.855552, 0.855602, 0.855651, 0.855701, + 0.855751, 0.855800, 0.855850, 0.855900, 0.855949, 0.855999, 0.856048, 0.856098, + 0.856147, 0.856197, 0.856246, 0.856296, 0.856345, 0.856395, 0.856444, 0.856494, + 0.856543, 0.856593, 0.856642, 0.856692, 0.856741, 0.856791, 0.856840, 0.856890, + 0.856939, 0.856988, 0.857038, 0.857087, 0.857137, 0.857186, 0.857235, 0.857285, + 0.857334, 0.857383, 0.857433, 0.857482, 0.857531, 0.857581, 0.857630, 0.857679, + 0.857729, 0.857778, 0.857827, 0.857876, 0.857926, 0.857975, 0.858024, 0.858073, + 0.858123, 0.858172, 0.858221, 0.858270, 0.858320, 0.858369, 0.858418, 0.858467, + 0.858516, 0.858565, 0.858615, 0.858664, 0.858713, 0.858762, 0.858811, 0.858860, + 0.858909, 0.858958, 0.859007, 0.859057, 0.859106, 0.859155, 0.859204, 0.859253, + 0.859302, 0.859351, 0.859400, 0.859449, 0.859498, 0.859547, 0.859596, 0.859645, + 0.859694, 0.859743, 0.859792, 0.859841, 0.859890, 0.859939, 0.859988, 0.860036, + 0.860085, 0.860134, 0.860183, 0.860232, 0.860281, 0.860330, 0.860379, 0.860428, + 0.860476, 0.860525, 0.860574, 0.860623, 0.860672, 0.860721, 0.860769, 0.860818, + 0.860867, 0.860916, 0.860964, 0.861013, 0.861062, 0.861111, 0.861160, 0.861208, + 0.861257, 0.861306, 0.861354, 0.861403, 0.861452, 0.861500, 0.861549, 0.861598, + 0.861646, 0.861695, 0.861744, 0.861792, 0.861841, 0.861890, 0.861938, 0.861987, + 0.862035, 0.862084, 0.862133, 0.862181, 0.862230, 0.862278, 0.862327, 0.862375, + 0.862424, 0.862472, 0.862521, 0.862570, 0.862618, 0.862666, 0.862715, 0.862763, + 0.862812, 0.862860, 0.862909, 0.862957, 0.863006, 0.863054, 0.863103, 0.863151, + 0.863199, 0.863248, 0.863296, 0.863345, 0.863393, 0.863441, 0.863490, 0.863538, + 0.863586, 0.863635, 0.863683, 0.863731, 0.863780, 0.863828, 0.863876, 0.863925, + 0.863973, 0.864021, 0.864069, 0.864118, 0.864166, 0.864214, 0.864262, 0.864311, + 0.864359, 0.864407, 0.864455, 0.864503, 0.864552, 0.864600, 0.864648, 0.864696, + 0.864744, 0.864792, 0.864841, 0.864889, 0.864937, 0.864985, 0.865033, 0.865081, + 0.865129, 0.865177, 0.865225, 0.865273, 0.865321, 0.865369, 0.865418, 0.865466, + 0.865514, 0.865562, 0.865610, 0.865658, 0.865706, 0.865754, 0.865802, 0.865850, + 0.865898, 0.865946, 0.865993, 0.866041, 0.866089, 0.866137, 0.866185, 0.866233, + 0.866281, 0.866329, 0.866377, 0.866425, 0.866472, 0.866520, 0.866568, 0.866616, + 0.866664, 0.866712, 0.866759, 0.866807, 0.866855, 0.866903, 0.866951, 0.866998, + 0.867046, 0.867094, 0.867142, 0.867190, 0.867237, 0.867285, 0.867333, 0.867380, + 0.867428, 0.867476, 0.867523, 0.867571, 0.867619, 0.867667, 0.867714, 0.867762, + 0.867809, 0.867857, 0.867905, 0.867952, 0.868000, 0.868048, 0.868095, 0.868143, + 0.868190, 0.868238, 0.868285, 0.868333, 0.868381, 0.868428, 0.868476, 0.868523, + 0.868571, 0.868618, 0.868666, 0.868713, 0.868761, 0.868808, 0.868856, 0.868903, + 0.868951, 0.868998, 0.869045, 0.869093, 0.869140, 0.869188, 0.869235, 0.869282, + 0.869330, 0.869377, 0.869425, 0.869472, 0.869519, 0.869567, 0.869614, 0.869661, + 0.869709, 0.869756, 0.869803, 0.869851, 0.869898, 0.869945, 0.869992, 0.870040, + 0.870087, 0.870134, 0.870182, 0.870229, 0.870276, 0.870323, 0.870370, 0.870418, + 0.870465, 0.870512, 0.870559, 0.870606, 0.870654, 0.870701, 0.870748, 0.870795, + 0.870842, 0.870889, 0.870936, 0.870983, 0.871031, 0.871078, 0.871125, 0.871172, + 0.871219, 0.871266, 0.871313, 0.871360, 0.871407, 0.871454, 0.871501, 0.871548, + 0.871595, 0.871642, 0.871689, 0.871736, 0.871783, 0.871830, 0.871877, 0.871924, + 0.871971, 0.872018, 0.872065, 0.872112, 0.872159, 0.872205, 0.872252, 0.872299, + 0.872346, 0.872393, 0.872440, 0.872487, 0.872534, 0.872580, 0.872627, 0.872674, + 0.872721, 0.872768, 0.872814, 0.872861, 0.872908, 0.872955, 0.873001, 0.873048, + 0.873095, 0.873142, 0.873188, 0.873235, 0.873282, 0.873329, 0.873375, 0.873422, + 0.873469, 0.873515, 0.873562, 0.873609, 0.873655, 0.873702, 0.873749, 0.873795, + 0.873842, 0.873888, 0.873935, 0.873982, 0.874028, 0.874075, 0.874121, 0.874168, + 0.874215, 0.874261, 0.874308, 0.874354, 0.874401, 0.874447, 0.874494, 0.874540, + 0.874587, 0.874633, 0.874680, 0.874726, 0.874773, 0.874819, 0.874865, 0.874912, + 0.874958, 0.875005, 0.875051, 0.875098, 0.875144, 0.875190, 0.875237, 0.875283, + 0.875329, 0.875376, 0.875422, 0.875468, 0.875515, 0.875561, 0.875607, 0.875654, + 0.875700, 0.875746, 0.875793, 0.875839, 0.875885, 0.875931, 0.875978, 0.876024, + 0.876070, 0.876116, 0.876163, 0.876209, 0.876255, 0.876301, 0.876347, 0.876393, + 0.876440, 0.876486, 0.876532, 0.876578, 0.876624, 0.876670, 0.876716, 0.876763, + 0.876809, 0.876855, 0.876901, 0.876947, 0.876993, 0.877039, 0.877085, 0.877131, + 0.877177, 0.877223, 0.877269, 0.877315, 0.877361, 0.877407, 0.877453, 0.877499, + 0.877545, 0.877591, 0.877637, 0.877683, 0.877729, 0.877775, 0.877821, 0.877867, + 0.877913, 0.877959, 0.878005, 0.878051, 0.878096, 0.878142, 0.878188, 0.878234, + 0.878280, 0.878326, 0.878371, 0.878417, 0.878463, 0.878509, 0.878555, 0.878600, + 0.878646, 0.878692, 0.878738, 0.878784, 0.878829, 0.878875, 0.878921, 0.878967, + 0.879012, 0.879058, 0.879104, 0.879149, 0.879195, 0.879241, 0.879286, 0.879332, + 0.879378, 0.879423, 0.879469, 0.879515, 0.879560, 0.879606, 0.879651, 0.879697, + 0.879743, 0.879788, 0.879834, 0.879879, 0.879925, 0.879970, 0.880016, 0.880061, + 0.880107, 0.880153, 0.880198, 0.880244, 0.880289, 0.880334, 0.880380, 0.880425, + 0.880471, 0.880516, 0.880562, 0.880607, 0.880653, 0.880698, 0.880743, 0.880789, + 0.880834, 0.880880, 0.880925, 0.880970, 0.881016, 0.881061, 0.881106, 0.881152, + 0.881197, 0.881242, 0.881288, 0.881333, 0.881378, 0.881424, 0.881469, 0.881514, + 0.881559, 0.881605, 0.881650, 0.881695, 0.881740, 0.881786, 0.881831, 0.881876, + 0.881921, 0.881966, 0.882012, 0.882057, 0.882102, 0.882147, 0.882192, 0.882237, + 0.882283, 0.882328, 0.882373, 0.882418, 0.882463, 0.882508, 0.882553, 0.882598, + 0.882643, 0.882688, 0.882733, 0.882779, 0.882824, 0.882869, 0.882914, 0.882959, + 0.883004, 0.883049, 0.883094, 0.883139, 0.883184, 0.883228, 0.883273, 0.883318, + 0.883363, 0.883408, 0.883453, 0.883498, 0.883543, 0.883588, 0.883633, 0.883678, + 0.883723, 0.883767, 0.883812, 0.883857, 0.883902, 0.883947, 0.883992, 0.884036, + 0.884081, 0.884126, 0.884171, 0.884216, 0.884260, 0.884305, 0.884350, 0.884395, + 0.884439, 0.884484, 0.884529, 0.884574, 0.884618, 0.884663, 0.884708, 0.884752, + 0.884797, 0.884842, 0.884886, 0.884931, 0.884976, 0.885020, 0.885065, 0.885110, + 0.885154, 0.885199, 0.885243, 0.885288, 0.885333, 0.885377, 0.885422, 0.885466, + 0.885511, 0.885555, 0.885600, 0.885644, 0.885689, 0.885733, 0.885778, 0.885822, + 0.885867, 0.885911, 0.885956, 0.886000, 0.886045, 0.886089, 0.886134, 0.886178, + 0.886223, 0.886267, 0.886311, 0.886356, 0.886400, 0.886445, 0.886489, 0.886533, + 0.886578, 0.886622, 0.886666, 0.886711, 0.886755, 0.886799, 0.886844, 0.886888, + 0.886932, 0.886976, 0.887021, 0.887065, 0.887109, 0.887153, 0.887198, 0.887242, + 0.887286, 0.887330, 0.887375, 0.887419, 0.887463, 0.887507, 0.887551, 0.887595, + 0.887640, 0.887684, 0.887728, 0.887772, 0.887816, 0.887860, 0.887904, 0.887949, + 0.887993, 0.888037, 0.888081, 0.888125, 0.888169, 0.888213, 0.888257, 0.888301, + 0.888345, 0.888389, 0.888433, 0.888477, 0.888521, 0.888565, 0.888609, 0.888653, + 0.888697, 0.888741, 0.888785, 0.888829, 0.888873, 0.888917, 0.888961, 0.889004, + 0.889048, 0.889092, 0.889136, 0.889180, 0.889224, 0.889268, 0.889312, 0.889355, + 0.889399, 0.889443, 0.889487, 0.889531, 0.889574, 0.889618, 0.889662, 0.889706, + 0.889750, 0.889793, 0.889837, 0.889881, 0.889925, 0.889968, 0.890012, 0.890056, + 0.890099, 0.890143, 0.890187, 0.890230, 0.890274, 0.890318, 0.890361, 0.890405, + 0.890449, 0.890492, 0.890536, 0.890580, 0.890623, 0.890667, 0.890710, 0.890754, + 0.890797, 0.890841, 0.890885, 0.890928, 0.890972, 0.891015, 0.891059, 0.891102, + 0.891146, 0.891189, 0.891233, 0.891276, 0.891320, 0.891363, 0.891407, 0.891450, + 0.891493, 0.891537, 0.891580, 0.891624, 0.891667, 0.891711, 0.891754, 0.891797, + 0.891841, 0.891884, 0.891927, 0.891971, 0.892014, 0.892057, 0.892101, 0.892144, + 0.892187, 0.892231, 0.892274, 0.892317, 0.892361, 0.892404, 0.892447, 0.892490, + 0.892534, 0.892577, 0.892620, 0.892663, 0.892706, 0.892750, 0.892793, 0.892836, + 0.892879, 0.892922, 0.892965, 0.893009, 0.893052, 0.893095, 0.893138, 0.893181, + 0.893224, 0.893267, 0.893310, 0.893354, 0.893397, 0.893440, 0.893483, 0.893526, + 0.893569, 0.893612, 0.893655, 0.893698, 0.893741, 0.893784, 0.893827, 0.893870, + 0.893913, 0.893956, 0.893999, 0.894042, 0.894085, 0.894128, 0.894171, 0.894214, + 0.894256, 0.894299, 0.894342, 0.894385, 0.894428, 0.894471, 0.894514, 0.894557, + 0.894599, 0.894642, 0.894685, 0.894728, 0.894771, 0.894814, 0.894856, 0.894899, + 0.894942, 0.894985, 0.895028, 0.895070, 0.895113, 0.895156, 0.895198, 0.895241, + 0.895284, 0.895327, 0.895369, 0.895412, 0.895455, 0.895497, 0.895540, 0.895583, + 0.895625, 0.895668, 0.895711, 0.895753, 0.895796, 0.895838, 0.895881, 0.895924, + 0.895966, 0.896009, 0.896051, 0.896094, 0.896137, 0.896179, 0.896222, 0.896264, + 0.896307, 0.896349, 0.896392, 0.896434, 0.896477, 0.896519, 0.896562, 0.896604, + 0.896646, 0.896689, 0.896731, 0.896774, 0.896816, 0.896859, 0.896901, 0.896943, + 0.896986, 0.897028, 0.897071, 0.897113, 0.897155, 0.897198, 0.897240, 0.897282, + 0.897325, 0.897367, 0.897409, 0.897452, 0.897494, 0.897536, 0.897578, 0.897621, + 0.897663, 0.897705, 0.897747, 0.897790, 0.897832, 0.897874, 0.897916, 0.897958, + 0.898001, 0.898043, 0.898085, 0.898127, 0.898169, 0.898211, 0.898254, 0.898296, + 0.898338, 0.898380, 0.898422, 0.898464, 0.898506, 0.898548, 0.898590, 0.898632, + 0.898674, 0.898717, 0.898759, 0.898801, 0.898843, 0.898885, 0.898927, 0.898969, + 0.899011, 0.899053, 0.899095, 0.899137, 0.899179, 0.899220, 0.899262, 0.899304, + 0.899346, 0.899388, 0.899430, 0.899472, 0.899514, 0.899556, 0.899598, 0.899639, + 0.899681, 0.899723, 0.899765, 0.899807, 0.899849, 0.899890, 0.899932, 0.899974, + 0.900016, 0.900058, 0.900099, 0.900141, 0.900183, 0.900225, 0.900266, 0.900308, + 0.900350, 0.900392, 0.900433, 0.900475, 0.900517, 0.900558, 0.900600, 0.900642, + 0.900683, 0.900725, 0.900767, 0.900808, 0.900850, 0.900892, 0.900933, 0.900975, + 0.901016, 0.901058, 0.901100, 0.901141, 0.901183, 0.901224, 0.901266, 0.901307, + 0.901349, 0.901390, 0.901432, 0.901473, 0.901515, 0.901556, 0.901598, 0.901639, + 0.901681, 0.901722, 0.901764, 0.901805, 0.901847, 0.901888, 0.901929, 0.901971, + 0.902012, 0.902054, 0.902095, 0.902136, 0.902178, 0.902219, 0.902260, 0.902302, + 0.902343, 0.902384, 0.902426, 0.902467, 0.902508, 0.902550, 0.902591, 0.902632, + 0.902673, 0.902715, 0.902756, 0.902797, 0.902838, 0.902879, 0.902921, 0.902962, + 0.903003, 0.903044, 0.903085, 0.903127, 0.903168, 0.903209, 0.903250, 0.903291, + 0.903332, 0.903373, 0.903415, 0.903456, 0.903497, 0.903538, 0.903579, 0.903620, + 0.903661, 0.903702, 0.903743, 0.903784, 0.903825, 0.903866, 0.903907, 0.903948, + 0.903989, 0.904030, 0.904071, 0.904112, 0.904153, 0.904194, 0.904235, 0.904276, + 0.904317, 0.904358, 0.904399, 0.904440, 0.904481, 0.904521, 0.904562, 0.904603, + 0.904644, 0.904685, 0.904726, 0.904767, 0.904807, 0.904848, 0.904889, 0.904930, + 0.904971, 0.905011, 0.905052, 0.905093, 0.905134, 0.905175, 0.905215, 0.905256, + 0.905297, 0.905337, 0.905378, 0.905419, 0.905460, 0.905500, 0.905541, 0.905582, + 0.905622, 0.905663, 0.905704, 0.905744, 0.905785, 0.905825, 0.905866, 0.905907, + 0.905947, 0.905988, 0.906028, 0.906069, 0.906110, 0.906150, 0.906191, 0.906231, + 0.906272, 0.906312, 0.906353, 0.906393, 0.906434, 0.906474, 0.906515, 0.906555, + 0.906596, 0.906636, 0.906677, 0.906717, 0.906757, 0.906798, 0.906838, 0.906879, + 0.906919, 0.906959, 0.907000, 0.907040, 0.907081, 0.907121, 0.907161, 0.907202, + 0.907242, 0.907282, 0.907323, 0.907363, 0.907403, 0.907444, 0.907484, 0.907524, + 0.907564, 0.907605, 0.907645, 0.907685, 0.907725, 0.907766, 0.907806, 0.907846, + 0.907886, 0.907926, 0.907966, 0.908007, 0.908047, 0.908087, 0.908127, 0.908167, + 0.908207, 0.908248, 0.908288, 0.908328, 0.908368, 0.908408, 0.908448, 0.908488, + 0.908528, 0.908568, 0.908608, 0.908648, 0.908688, 0.908728, 0.908768, 0.908808, + 0.908848, 0.908888, 0.908928, 0.908968, 0.909008, 0.909048, 0.909088, 0.909128, + 0.909168, 0.909208, 0.909248, 0.909288, 0.909328, 0.909368, 0.909407, 0.909447, + 0.909487, 0.909527, 0.909567, 0.909607, 0.909646, 0.909686, 0.909726, 0.909766, + 0.909806, 0.909845, 0.909885, 0.909925, 0.909965, 0.910005, 0.910044, 0.910084, + 0.910124, 0.910163, 0.910203, 0.910243, 0.910283, 0.910322, 0.910362, 0.910402, + 0.910441, 0.910481, 0.910521, 0.910560, 0.910600, 0.910639, 0.910679, 0.910719, + 0.910758, 0.910798, 0.910837, 0.910877, 0.910917, 0.910956, 0.910996, 0.911035, + 0.911075, 0.911114, 0.911154, 0.911193, 0.911233, 0.911272, 0.911312, 0.911351, + 0.911391, 0.911430, 0.911470, 0.911509, 0.911548, 0.911588, 0.911627, 0.911667, + 0.911706, 0.911745, 0.911785, 0.911824, 0.911864, 0.911903, 0.911942, 0.911982, + 0.912021, 0.912060, 0.912099, 0.912139, 0.912178, 0.912217, 0.912257, 0.912296, + 0.912335, 0.912374, 0.912414, 0.912453, 0.912492, 0.912531, 0.912571, 0.912610, + 0.912649, 0.912688, 0.912727, 0.912766, 0.912806, 0.912845, 0.912884, 0.912923, + 0.912962, 0.913001, 0.913040, 0.913080, 0.913119, 0.913158, 0.913197, 0.913236, + 0.913275, 0.913314, 0.913353, 0.913392, 0.913431, 0.913470, 0.913509, 0.913548, + 0.913587, 0.913626, 0.913665, 0.913704, 0.913743, 0.913782, 0.913821, 0.913860, + 0.913899, 0.913938, 0.913976, 0.914015, 0.914054, 0.914093, 0.914132, 0.914171, + 0.914210, 0.914249, 0.914287, 0.914326, 0.914365, 0.914404, 0.914443, 0.914482, + 0.914520, 0.914559, 0.914598, 0.914637, 0.914675, 0.914714, 0.914753, 0.914792, + 0.914830, 0.914869, 0.914908, 0.914946, 0.914985, 0.915024, 0.915062, 0.915101, + 0.915140, 0.915178, 0.915217, 0.915256, 0.915294, 0.915333, 0.915372, 0.915410, + 0.915449, 0.915487, 0.915526, 0.915564, 0.915603, 0.915642, 0.915680, 0.915719, + 0.915757, 0.915796, 0.915834, 0.915873, 0.915911, 0.915950, 0.915988, 0.916027, + 0.916065, 0.916103, 0.916142, 0.916180, 0.916219, 0.916257, 0.916296, 0.916334, + 0.916372, 0.916411, 0.916449, 0.916487, 0.916526, 0.916564, 0.916602, 0.916641, + 0.916679, 0.916717, 0.916756, 0.916794, 0.916832, 0.916871, 0.916909, 0.916947, + 0.916985, 0.917024, 0.917062, 0.917100, 0.917138, 0.917176, 0.917215, 0.917253, + 0.917291, 0.917329, 0.917367, 0.917405, 0.917444, 0.917482, 0.917520, 0.917558, + 0.917596, 0.917634, 0.917672, 0.917710, 0.917749, 0.917787, 0.917825, 0.917863, + 0.917901, 0.917939, 0.917977, 0.918015, 0.918053, 0.918091, 0.918129, 0.918167, + 0.918205, 0.918243, 0.918281, 0.918319, 0.918357, 0.918395, 0.918433, 0.918471, + 0.918508, 0.918546, 0.918584, 0.918622, 0.918660, 0.918698, 0.918736, 0.918774, + 0.918811, 0.918849, 0.918887, 0.918925, 0.918963, 0.919001, 0.919038, 0.919076, + 0.919114, 0.919152, 0.919189, 0.919227, 0.919265, 0.919303, 0.919340, 0.919378, + 0.919416, 0.919453, 0.919491, 0.919529, 0.919567, 0.919604, 0.919642, 0.919680, + 0.919717, 0.919755, 0.919792, 0.919830, 0.919868, 0.919905, 0.919943, 0.919980, + 0.920018, 0.920056, 0.920093, 0.920131, 0.920168, 0.920206, 0.920243, 0.920281, + 0.920318, 0.920356, 0.920393, 0.920431, 0.920468, 0.920506, 0.920543, 0.920581, + 0.920618, 0.920655, 0.920693, 0.920730, 0.920768, 0.920805, 0.920842, 0.920880, + 0.920917, 0.920955, 0.920992, 0.921029, 0.921067, 0.921104, 0.921141, 0.921179, + 0.921216, 0.921253, 0.921291, 0.921328, 0.921365, 0.921402, 0.921440, 0.921477, + 0.921514, 0.921551, 0.921588, 0.921626, 0.921663, 0.921700, 0.921737, 0.921774, + 0.921812, 0.921849, 0.921886, 0.921923, 0.921960, 0.921997, 0.922034, 0.922072, + 0.922109, 0.922146, 0.922183, 0.922220, 0.922257, 0.922294, 0.922331, 0.922368, + 0.922405, 0.922442, 0.922479, 0.922516, 0.922553, 0.922590, 0.922627, 0.922664, + 0.922701, 0.922738, 0.922775, 0.922812, 0.922849, 0.922886, 0.922923, 0.922960, + 0.922997, 0.923033, 0.923070, 0.923107, 0.923144, 0.923181, 0.923218, 0.923255, + 0.923291, 0.923328, 0.923365, 0.923402, 0.923439, 0.923475, 0.923512, 0.923549, + 0.923586, 0.923622, 0.923659, 0.923696, 0.923733, 0.923769, 0.923806, 0.923843, + 0.923880, 0.923916, 0.923953, 0.923990, 0.924026, 0.924063, 0.924100, 0.924136, + 0.924173, 0.924209, 0.924246, 0.924283, 0.924319, 0.924356, 0.924392, 0.924429, + 0.924465, 0.924502, 0.924539, 0.924575, 0.924612, 0.924648, 0.924685, 0.924721, + 0.924758, 0.924794, 0.924831, 0.924867, 0.924904, 0.924940, 0.924976, 0.925013, + 0.925049, 0.925086, 0.925122, 0.925158, 0.925195, 0.925231, 0.925268, 0.925304, + 0.925340, 0.925377, 0.925413, 0.925449, 0.925486, 0.925522, 0.925558, 0.925595, + 0.925631, 0.925667, 0.925703, 0.925740, 0.925776, 0.925812, 0.925848, 0.925885, + 0.925921, 0.925957, 0.925993, 0.926029, 0.926066, 0.926102, 0.926138, 0.926174, + 0.926210, 0.926246, 0.926283, 0.926319, 0.926355, 0.926391, 0.926427, 0.926463, + 0.926499, 0.926535, 0.926571, 0.926607, 0.926643, 0.926679, 0.926715, 0.926751, + 0.926787, 0.926823, 0.926859, 0.926895, 0.926931, 0.926967, 0.927003, 0.927039, + 0.927075, 0.927111, 0.927147, 0.927183, 0.927219, 0.927255, 0.927291, 0.927327, + 0.927363, 0.927398, 0.927434, 0.927470, 0.927506, 0.927542, 0.927578, 0.927613, + 0.927649, 0.927685, 0.927721, 0.927757, 0.927792, 0.927828, 0.927864, 0.927900, + 0.927935, 0.927971, 0.928007, 0.928043, 0.928078, 0.928114, 0.928150, 0.928185, + 0.928221, 0.928257, 0.928292, 0.928328, 0.928364, 0.928399, 0.928435, 0.928470, + 0.928506, 0.928542, 0.928577, 0.928613, 0.928648, 0.928684, 0.928720, 0.928755, + 0.928791, 0.928826, 0.928862, 0.928897, 0.928933, 0.928968, 0.929004, 0.929039, + 0.929075, 0.929110, 0.929146, 0.929181, 0.929216, 0.929252, 0.929287, 0.929323, + 0.929358, 0.929393, 0.929429, 0.929464, 0.929500, 0.929535, 0.929570, 0.929606, + 0.929641, 0.929676, 0.929712, 0.929747, 0.929782, 0.929817, 0.929853, 0.929888, + 0.929923, 0.929958, 0.929994, 0.930029, 0.930064, 0.930099, 0.930135, 0.930170, + 0.930205, 0.930240, 0.930275, 0.930311, 0.930346, 0.930381, 0.930416, 0.930451, + 0.930486, 0.930521, 0.930556, 0.930592, 0.930627, 0.930662, 0.930697, 0.930732, + 0.930767, 0.930802, 0.930837, 0.930872, 0.930907, 0.930942, 0.930977, 0.931012, + 0.931047, 0.931082, 0.931117, 0.931152, 0.931187, 0.931222, 0.931257, 0.931292, + 0.931327, 0.931362, 0.931397, 0.931431, 0.931466, 0.931501, 0.931536, 0.931571, + 0.931606, 0.931641, 0.931675, 0.931710, 0.931745, 0.931780, 0.931815, 0.931849, + 0.931884, 0.931919, 0.931954, 0.931989, 0.932023, 0.932058, 0.932093, 0.932128, + 0.932162, 0.932197, 0.932232, 0.932266, 0.932301, 0.932336, 0.932370, 0.932405, + 0.932440, 0.932474, 0.932509, 0.932544, 0.932578, 0.932613, 0.932647, 0.932682, + 0.932716, 0.932751, 0.932786, 0.932820, 0.932855, 0.932889, 0.932924, 0.932958, + 0.932993, 0.933027, 0.933062, 0.933096, 0.933131, 0.933165, 0.933200, 0.933234, + 0.933269, 0.933303, 0.933337, 0.933372, 0.933406, 0.933441, 0.933475, 0.933509, + 0.933544, 0.933578, 0.933612, 0.933647, 0.933681, 0.933716, 0.933750, 0.933784, + 0.933818, 0.933853, 0.933887, 0.933921, 0.933956, 0.933990, 0.934024, 0.934058, + 0.934093, 0.934127, 0.934161, 0.934195, 0.934229, 0.934264, 0.934298, 0.934332, + 0.934366, 0.934400, 0.934434, 0.934469, 0.934503, 0.934537, 0.934571, 0.934605, + 0.934639, 0.934673, 0.934707, 0.934741, 0.934775, 0.934810, 0.934844, 0.934878, + 0.934912, 0.934946, 0.934980, 0.935014, 0.935048, 0.935082, 0.935116, 0.935150, + 0.935184, 0.935217, 0.935251, 0.935285, 0.935319, 0.935353, 0.935387, 0.935421, + 0.935455, 0.935489, 0.935523, 0.935556, 0.935590, 0.935624, 0.935658, 0.935692, + 0.935726, 0.935759, 0.935793, 0.935827, 0.935861, 0.935895, 0.935928, 0.935962, + 0.935996, 0.936030, 0.936063, 0.936097, 0.936131, 0.936165, 0.936198, 0.936232, + 0.936266, 0.936299, 0.936333, 0.936367, 0.936400, 0.936434, 0.936468, 0.936501, + 0.936535, 0.936568, 0.936602, 0.936636, 0.936669, 0.936703, 0.936736, 0.936770, + 0.936803, 0.936837, 0.936871, 0.936904, 0.936938, 0.936971, 0.937005, 0.937038, + 0.937072, 0.937105, 0.937138, 0.937172, 0.937205, 0.937239, 0.937272, 0.937306, + 0.937339, 0.937372, 0.937406, 0.937439, 0.937473, 0.937506, 0.937539, 0.937573, + 0.937606, 0.937639, 0.937673, 0.937706, 0.937739, 0.937773, 0.937806, 0.937839, + 0.937872, 0.937906, 0.937939, 0.937972, 0.938005, 0.938039, 0.938072, 0.938105, + 0.938138, 0.938171, 0.938205, 0.938238, 0.938271, 0.938304, 0.938337, 0.938370, + 0.938404, 0.938437, 0.938470, 0.938503, 0.938536, 0.938569, 0.938602, 0.938635, + 0.938668, 0.938701, 0.938734, 0.938767, 0.938800, 0.938833, 0.938866, 0.938900, + 0.938932, 0.938965, 0.938998, 0.939031, 0.939064, 0.939097, 0.939130, 0.939163, + 0.939196, 0.939229, 0.939262, 0.939295, 0.939328, 0.939361, 0.939394, 0.939426, + 0.939459, 0.939492, 0.939525, 0.939558, 0.939591, 0.939623, 0.939656, 0.939689, + 0.939722, 0.939755, 0.939787, 0.939820, 0.939853, 0.939886, 0.939918, 0.939951, + 0.939984, 0.940016, 0.940049, 0.940082, 0.940115, 0.940147, 0.940180, 0.940213, + 0.940245, 0.940278, 0.940310, 0.940343, 0.940376, 0.940408, 0.940441, 0.940473, + 0.940506, 0.940539, 0.940571, 0.940604, 0.940636, 0.940669, 0.940701, 0.940734, + 0.940766, 0.940799, 0.940831, 0.940864, 0.940896, 0.940929, 0.940961, 0.940994, + 0.941026, 0.941059, 0.941091, 0.941123, 0.941156, 0.941188, 0.941221, 0.941253, + 0.941285, 0.941318, 0.941350, 0.941382, 0.941415, 0.941447, 0.941479, 0.941512, + 0.941544, 0.941576, 0.941609, 0.941641, 0.941673, 0.941705, 0.941738, 0.941770, + 0.941802, 0.941834, 0.941867, 0.941899, 0.941931, 0.941963, 0.941995, 0.942028, + 0.942060, 0.942092, 0.942124, 0.942156, 0.942188, 0.942220, 0.942253, 0.942285, + 0.942317, 0.942349, 0.942381, 0.942413, 0.942445, 0.942477, 0.942509, 0.942541, + 0.942573, 0.942605, 0.942637, 0.942669, 0.942701, 0.942733, 0.942765, 0.942797, + 0.942829, 0.942861, 0.942893, 0.942925, 0.942957, 0.942989, 0.943021, 0.943053, + 0.943084, 0.943116, 0.943148, 0.943180, 0.943212, 0.943244, 0.943276, 0.943307, + 0.943339, 0.943371, 0.943403, 0.943435, 0.943466, 0.943498, 0.943530, 0.943562, + 0.943593, 0.943625, 0.943657, 0.943689, 0.943720, 0.943752, 0.943784, 0.943815, + 0.943847, 0.943879, 0.943910, 0.943942, 0.943974, 0.944005, 0.944037, 0.944069, + 0.944100, 0.944132, 0.944163, 0.944195, 0.944227, 0.944258, 0.944290, 0.944321, + 0.944353, 0.944384, 0.944416, 0.944447, 0.944479, 0.944510, 0.944542, 0.944573, + 0.944605, 0.944636, 0.944668, 0.944699, 0.944731, 0.944762, 0.944793, 0.944825, + 0.944856, 0.944888, 0.944919, 0.944950, 0.944982, 0.945013, 0.945045, 0.945076, + 0.945107, 0.945139, 0.945170, 0.945201, 0.945232, 0.945264, 0.945295, 0.945326, + 0.945358, 0.945389, 0.945420, 0.945451, 0.945482, 0.945514, 0.945545, 0.945576, + 0.945607, 0.945639, 0.945670, 0.945701, 0.945732, 0.945763, 0.945794, 0.945825, + 0.945857, 0.945888, 0.945919, 0.945950, 0.945981, 0.946012, 0.946043, 0.946074, + 0.946105, 0.946136, 0.946167, 0.946198, 0.946229, 0.946260, 0.946291, 0.946322, + 0.946353, 0.946384, 0.946415, 0.946446, 0.946477, 0.946508, 0.946539, 0.946570, + 0.946601, 0.946632, 0.946663, 0.946694, 0.946724, 0.946755, 0.946786, 0.946817, + 0.946848, 0.946879, 0.946910, 0.946940, 0.946971, 0.947002, 0.947033, 0.947064, + 0.947094, 0.947125, 0.947156, 0.947187, 0.947217, 0.947248, 0.947279, 0.947310, + 0.947340, 0.947371, 0.947402, 0.947432, 0.947463, 0.947494, 0.947524, 0.947555, + 0.947586, 0.947616, 0.947647, 0.947677, 0.947708, 0.947739, 0.947769, 0.947800, + 0.947830, 0.947861, 0.947891, 0.947922, 0.947953, 0.947983, 0.948014, 0.948044, + 0.948075, 0.948105, 0.948136, 0.948166, 0.948196, 0.948227, 0.948257, 0.948288, + 0.948318, 0.948349, 0.948379, 0.948409, 0.948440, 0.948470, 0.948501, 0.948531, + 0.948561, 0.948592, 0.948622, 0.948652, 0.948683, 0.948713, 0.948743, 0.948774, + 0.948804, 0.948834, 0.948864, 0.948895, 0.948925, 0.948955, 0.948985, 0.949016, + 0.949046, 0.949076, 0.949106, 0.949136, 0.949167, 0.949197, 0.949227, 0.949257, + 0.949287, 0.949317, 0.949348, 0.949378, 0.949408, 0.949438, 0.949468, 0.949498, + 0.949528, 0.949558, 0.949588, 0.949618, 0.949648, 0.949678, 0.949708, 0.949739, + 0.949768, 0.949798, 0.949829, 0.949858, 0.949888, 0.949918, 0.949948, 0.949978, + 0.950008, 0.950038, 0.950068, 0.950098, 0.950128, 0.950158, 0.950188, 0.950218, + 0.950247, 0.950277, 0.950307, 0.950337, 0.950367, 0.950397, 0.950426, 0.950456, + 0.950486, 0.950516, 0.950546, 0.950575, 0.950605, 0.950635, 0.950665, 0.950694, + 0.950724, 0.950754, 0.950784, 0.950813, 0.950843, 0.950873, 0.950902, 0.950932, + 0.950962, 0.950991, 0.951021, 0.951051, 0.951080, 0.951110, 0.951139, 0.951169, + 0.951199, 0.951228, 0.951258, 0.951287, 0.951317, 0.951346, 0.951376, 0.951406, + 0.951435, 0.951465, 0.951494, 0.951524, 0.951553, 0.951582, 0.951612, 0.951641, + 0.951671, 0.951700, 0.951730, 0.951759, 0.951789, 0.951818, 0.951847, 0.951877, + 0.951906, 0.951936, 0.951965, 0.951994, 0.952024, 0.952053, 0.952082, 0.952112, + 0.952141, 0.952170, 0.952199, 0.952229, 0.952258, 0.952287, 0.952317, 0.952346, + 0.952375, 0.952404, 0.952433, 0.952463, 0.952492, 0.952521, 0.952550, 0.952579, + 0.952609, 0.952638, 0.952667, 0.952696, 0.952725, 0.952754, 0.952783, 0.952813, + 0.952842, 0.952871, 0.952900, 0.952929, 0.952958, 0.952987, 0.953016, 0.953045, + 0.953074, 0.953103, 0.953132, 0.953161, 0.953190, 0.953219, 0.953248, 0.953277, + 0.953306, 0.953335, 0.953364, 0.953393, 0.953422, 0.953451, 0.953480, 0.953508, + 0.953537, 0.953566, 0.953595, 0.953624, 0.953653, 0.953682, 0.953711, 0.953739, + 0.953768, 0.953797, 0.953826, 0.953855, 0.953883, 0.953912, 0.953941, 0.953970, + 0.953998, 0.954027, 0.954056, 0.954085, 0.954113, 0.954142, 0.954171, 0.954199, + 0.954228, 0.954257, 0.954285, 0.954314, 0.954343, 0.954371, 0.954400, 0.954429, + 0.954457, 0.954486, 0.954514, 0.954543, 0.954572, 0.954600, 0.954629, 0.954657, + 0.954686, 0.954714, 0.954743, 0.954771, 0.954800, 0.954828, 0.954857, 0.954885, + 0.954914, 0.954942, 0.954971, 0.954999, 0.955028, 0.955056, 0.955084, 0.955113, + 0.955141, 0.955170, 0.955198, 0.955226, 0.955255, 0.955283, 0.955311, 0.955340, + 0.955368, 0.955396, 0.955425, 0.955453, 0.955481, 0.955510, 0.955538, 0.955566, + 0.955594, 0.955623, 0.955651, 0.955679, 0.955707, 0.955736, 0.955764, 0.955792, + 0.955820, 0.955848, 0.955876, 0.955905, 0.955933, 0.955961, 0.955989, 0.956017, + 0.956045, 0.956073, 0.956101, 0.956130, 0.956158, 0.956186, 0.956214, 0.956242, + 0.956270, 0.956298, 0.956326, 0.956354, 0.956382, 0.956410, 0.956438, 0.956466, + 0.956494, 0.956522, 0.956550, 0.956578, 0.956606, 0.956634, 0.956662, 0.956689, + 0.956717, 0.956745, 0.956773, 0.956801, 0.956829, 0.956857, 0.956885, 0.956913, + 0.956940, 0.956968, 0.956996, 0.957024, 0.957052, 0.957079, 0.957107, 0.957135, + 0.957163, 0.957190, 0.957218, 0.957246, 0.957274, 0.957301, 0.957329, 0.957357, + 0.957385, 0.957412, 0.957440, 0.957468, 0.957495, 0.957523, 0.957550, 0.957578, + 0.957606, 0.957633, 0.957661, 0.957689, 0.957716, 0.957744, 0.957771, 0.957799, + 0.957826, 0.957854, 0.957882, 0.957909, 0.957937, 0.957964, 0.957992, 0.958019, + 0.958046, 0.958074, 0.958101, 0.958129, 0.958156, 0.958184, 0.958211, 0.958239, + 0.958266, 0.958293, 0.958321, 0.958348, 0.958376, 0.958403, 0.958430, 0.958458, + 0.958485, 0.958512, 0.958540, 0.958567, 0.958594, 0.958622, 0.958649, 0.958676, + 0.958703, 0.958731, 0.958758, 0.958785, 0.958812, 0.958840, 0.958867, 0.958894, + 0.958921, 0.958949, 0.958976, 0.959003, 0.959030, 0.959057, 0.959084, 0.959112, + 0.959139, 0.959166, 0.959193, 0.959220, 0.959247, 0.959274, 0.959301, 0.959328, + 0.959355, 0.959382, 0.959409, 0.959436, 0.959463, 0.959491, 0.959518, 0.959545, + 0.959572, 0.959598, 0.959625, 0.959652, 0.959679, 0.959706, 0.959733, 0.959760, + 0.959787, 0.959814, 0.959841, 0.959868, 0.959895, 0.959922, 0.959948, 0.959975, + 0.960002, 0.960029, 0.960056, 0.960083, 0.960109, 0.960136, 0.960163, 0.960190, + 0.960217, 0.960243, 0.960270, 0.960297, 0.960324, 0.960350, 0.960377, 0.960404, + 0.960431, 0.960457, 0.960484, 0.960511, 0.960537, 0.960564, 0.960591, 0.960617, + 0.960644, 0.960670, 0.960697, 0.960724, 0.960750, 0.960777, 0.960804, 0.960830, + 0.960857, 0.960883, 0.960910, 0.960936, 0.960963, 0.960989, 0.961016, 0.961042, + 0.961069, 0.961095, 0.961122, 0.961148, 0.961175, 0.961201, 0.961228, 0.961254, + 0.961280, 0.961307, 0.961333, 0.961360, 0.961386, 0.961412, 0.961439, 0.961465, + 0.961492, 0.961518, 0.961544, 0.961571, 0.961597, 0.961623, 0.961649, 0.961676, + 0.961702, 0.961728, 0.961755, 0.961781, 0.961807, 0.961833, 0.961860, 0.961886, + 0.961912, 0.961938, 0.961964, 0.961991, 0.962017, 0.962043, 0.962069, 0.962095, + 0.962121, 0.962148, 0.962174, 0.962200, 0.962226, 0.962252, 0.962278, 0.962304, + 0.962330, 0.962356, 0.962382, 0.962408, 0.962434, 0.962460, 0.962486, 0.962512, + 0.962538, 0.962564, 0.962590, 0.962616, 0.962642, 0.962668, 0.962694, 0.962720, + 0.962746, 0.962772, 0.962798, 0.962824, 0.962850, 0.962876, 0.962902, 0.962927, + 0.962953, 0.962979, 0.963005, 0.963031, 0.963057, 0.963082, 0.963108, 0.963134, + 0.963160, 0.963186, 0.963211, 0.963237, 0.963263, 0.963289, 0.963314, 0.963340, + 0.963366, 0.963391, 0.963417, 0.963443, 0.963469, 0.963494, 0.963520, 0.963546, + 0.963571, 0.963597, 0.963623, 0.963648, 0.963674, 0.963699, 0.963725, 0.963750, + 0.963776, 0.963802, 0.963827, 0.963853, 0.963878, 0.963904, 0.963929, 0.963955, + 0.963980, 0.964006, 0.964031, 0.964057, 0.964082, 0.964108, 0.964133, 0.964159, + 0.964184, 0.964209, 0.964235, 0.964260, 0.964286, 0.964311, 0.964336, 0.964362, + 0.964387, 0.964413, 0.964438, 0.964463, 0.964489, 0.964514, 0.964539, 0.964565, + 0.964590, 0.964615, 0.964640, 0.964666, 0.964691, 0.964716, 0.964741, 0.964767, + 0.964792, 0.964817, 0.964842, 0.964867, 0.964893, 0.964918, 0.964943, 0.964968, + 0.964993, 0.965018, 0.965044, 0.965069, 0.965094, 0.965119, 0.965144, 0.965169, + 0.965194, 0.965219, 0.965244, 0.965269, 0.965294, 0.965319, 0.965344, 0.965369, + 0.965394, 0.965419, 0.965444, 0.965469, 0.965494, 0.965519, 0.965544, 0.965569, + 0.965594, 0.965619, 0.965644, 0.965669, 0.965694, 0.965719, 0.965744, 0.965769, + 0.965793, 0.965818, 0.965843, 0.965868, 0.965893, 0.965918, 0.965942, 0.965967, + 0.965992, 0.966017, 0.966042, 0.966066, 0.966091, 0.966116, 0.966141, 0.966165, + 0.966190, 0.966215, 0.966239, 0.966264, 0.966289, 0.966313, 0.966338, 0.966363, + 0.966387, 0.966412, 0.966437, 0.966461, 0.966486, 0.966511, 0.966535, 0.966560, + 0.966584, 0.966609, 0.966633, 0.966658, 0.966683, 0.966707, 0.966732, 0.966756, + 0.966781, 0.966805, 0.966830, 0.966854, 0.966879, 0.966903, 0.966928, 0.966952, + 0.966976, 0.967001, 0.967025, 0.967050, 0.967074, 0.967099, 0.967123, 0.967147, + 0.967172, 0.967196, 0.967220, 0.967245, 0.967269, 0.967293, 0.967318, 0.967342, + 0.967366, 0.967391, 0.967415, 0.967439, 0.967463, 0.967488, 0.967512, 0.967536, + 0.967560, 0.967585, 0.967609, 0.967633, 0.967657, 0.967681, 0.967706, 0.967730, + 0.967754, 0.967778, 0.967802, 0.967826, 0.967850, 0.967874, 0.967899, 0.967923, + 0.967947, 0.967971, 0.967995, 0.968019, 0.968043, 0.968067, 0.968091, 0.968115, + 0.968139, 0.968163, 0.968187, 0.968211, 0.968235, 0.968259, 0.968283, 0.968307, + 0.968331, 0.968355, 0.968379, 0.968403, 0.968427, 0.968450, 0.968474, 0.968498, + 0.968522, 0.968546, 0.968570, 0.968594, 0.968617, 0.968641, 0.968665, 0.968689, + 0.968713, 0.968737, 0.968760, 0.968784, 0.968808, 0.968832, 0.968855, 0.968879, + 0.968903, 0.968927, 0.968950, 0.968974, 0.968998, 0.969021, 0.969045, 0.969069, + 0.969092, 0.969116, 0.969140, 0.969163, 0.969187, 0.969210, 0.969234, 0.969258, + 0.969281, 0.969305, 0.969328, 0.969352, 0.969375, 0.969399, 0.969423, 0.969446, + 0.969470, 0.969493, 0.969517, 0.969540, 0.969564, 0.969587, 0.969611, 0.969634, + 0.969657, 0.969681, 0.969704, 0.969728, 0.969751, 0.969774, 0.969798, 0.969821, + 0.969845, 0.969868, 0.969891, 0.969915, 0.969938, 0.969961, 0.969985, 0.970008, + 0.970031, 0.970055, 0.970078, 0.970101, 0.970124, 0.970148, 0.970171, 0.970194, + 0.970217, 0.970241, 0.970264, 0.970287, 0.970310, 0.970333, 0.970357, 0.970380, + 0.970403, 0.970426, 0.970449, 0.970472, 0.970495, 0.970518, 0.970542, 0.970565, + 0.970588, 0.970611, 0.970634, 0.970657, 0.970680, 0.970703, 0.970726, 0.970749, + 0.970772, 0.970795, 0.970818, 0.970841, 0.970864, 0.970887, 0.970910, 0.970933, + 0.970956, 0.970979, 0.971002, 0.971025, 0.971048, 0.971071, 0.971093, 0.971116, + 0.971139, 0.971162, 0.971185, 0.971208, 0.971231, 0.971253, 0.971276, 0.971299, + 0.971322, 0.971345, 0.971367, 0.971390, 0.971413, 0.971436, 0.971458, 0.971481, + 0.971504, 0.971527, 0.971549, 0.971572, 0.971595, 0.971617, 0.971640, 0.971663, + 0.971685, 0.971708, 0.971731, 0.971753, 0.971776, 0.971799, 0.971821, 0.971844, + 0.971866, 0.971889, 0.971911, 0.971934, 0.971957, 0.971979, 0.972002, 0.972024, + 0.972047, 0.972069, 0.972092, 0.972114, 0.972137, 0.972159, 0.972182, 0.972204, + 0.972227, 0.972249, 0.972271, 0.972294, 0.972316, 0.972339, 0.972361, 0.972383, + 0.972406, 0.972428, 0.972450, 0.972473, 0.972495, 0.972517, 0.972540, 0.972562, + 0.972584, 0.972607, 0.972629, 0.972651, 0.972673, 0.972696, 0.972718, 0.972740, + 0.972762, 0.972785, 0.972807, 0.972829, 0.972851, 0.972873, 0.972896, 0.972918, + 0.972940, 0.972962, 0.972984, 0.973006, 0.973028, 0.973051, 0.973073, 0.973095, + 0.973117, 0.973139, 0.973161, 0.973183, 0.973205, 0.973227, 0.973249, 0.973271, + 0.973293, 0.973315, 0.973337, 0.973359, 0.973381, 0.973403, 0.973425, 0.973447, + 0.973469, 0.973491, 0.973513, 0.973535, 0.973557, 0.973579, 0.973601, 0.973622, + 0.973644, 0.973666, 0.973688, 0.973710, 0.973732, 0.973753, 0.973775, 0.973797, + 0.973819, 0.973841, 0.973862, 0.973884, 0.973906, 0.973928, 0.973949, 0.973971, + 0.973993, 0.974015, 0.974036, 0.974058, 0.974080, 0.974101, 0.974123, 0.974145, + 0.974166, 0.974188, 0.974210, 0.974231, 0.974253, 0.974275, 0.974296, 0.974318, + 0.974339, 0.974361, 0.974383, 0.974404, 0.974426, 0.974447, 0.974469, 0.974490, + 0.974512, 0.974533, 0.974555, 0.974576, 0.974598, 0.974619, 0.974641, 0.974662, + 0.974684, 0.974705, 0.974726, 0.974748, 0.974769, 0.974791, 0.974812, 0.974833, + 0.974855, 0.974876, 0.974897, 0.974919, 0.974940, 0.974961, 0.974983, 0.975004, + 0.975025, 0.975047, 0.975068, 0.975089, 0.975110, 0.975132, 0.975153, 0.975174, + 0.975195, 0.975217, 0.975238, 0.975259, 0.975280, 0.975301, 0.975323, 0.975344, + 0.975365, 0.975386, 0.975407, 0.975428, 0.975449, 0.975471, 0.975492, 0.975513, + 0.975534, 0.975555, 0.975576, 0.975597, 0.975618, 0.975639, 0.975660, 0.975681, + 0.975702, 0.975723, 0.975744, 0.975765, 0.975786, 0.975807, 0.975828, 0.975849, + 0.975870, 0.975891, 0.975912, 0.975933, 0.975954, 0.975974, 0.975995, 0.976016, + 0.976037, 0.976058, 0.976079, 0.976100, 0.976120, 0.976141, 0.976162, 0.976183, + 0.976204, 0.976224, 0.976245, 0.976266, 0.976287, 0.976308, 0.976328, 0.976349, + 0.976370, 0.976390, 0.976411, 0.976432, 0.976453, 0.976473, 0.976494, 0.976515, + 0.976535, 0.976556, 0.976576, 0.976597, 0.976618, 0.976638, 0.976659, 0.976680, + 0.976700, 0.976721, 0.976741, 0.976762, 0.976782, 0.976803, 0.976823, 0.976844, + 0.976864, 0.976885, 0.976905, 0.976926, 0.976946, 0.976967, 0.976987, 0.977008, + 0.977028, 0.977049, 0.977069, 0.977089, 0.977110, 0.977130, 0.977151, 0.977171, + 0.977191, 0.977212, 0.977232, 0.977252, 0.977273, 0.977293, 0.977313, 0.977334, + 0.977354, 0.977374, 0.977394, 0.977415, 0.977435, 0.977455, 0.977475, 0.977496, + 0.977516, 0.977536, 0.977556, 0.977577, 0.977597, 0.977617, 0.977637, 0.977657, + 0.977677, 0.977697, 0.977718, 0.977738, 0.977758, 0.977778, 0.977798, 0.977818, + 0.977838, 0.977858, 0.977878, 0.977898, 0.977918, 0.977938, 0.977959, 0.977979, + 0.977998, 0.978019, 0.978038, 0.978058, 0.978078, 0.978098, 0.978118, 0.978138, + 0.978158, 0.978178, 0.978198, 0.978218, 0.978238, 0.978258, 0.978278, 0.978298, + 0.978317, 0.978337, 0.978357, 0.978377, 0.978397, 0.978417, 0.978436, 0.978456, + 0.978476, 0.978496, 0.978516, 0.978535, 0.978555, 0.978575, 0.978594, 0.978614, + 0.978634, 0.978654, 0.978673, 0.978693, 0.978713, 0.978732, 0.978752, 0.978772, + 0.978791, 0.978811, 0.978831, 0.978850, 0.978870, 0.978889, 0.978909, 0.978929, + 0.978948, 0.978968, 0.978987, 0.979007, 0.979026, 0.979046, 0.979065, 0.979085, + 0.979104, 0.979124, 0.979143, 0.979163, 0.979182, 0.979202, 0.979221, 0.979241, + 0.979260, 0.979280, 0.979299, 0.979318, 0.979338, 0.979357, 0.979376, 0.979396, + 0.979415, 0.979435, 0.979454, 0.979473, 0.979493, 0.979512, 0.979531, 0.979550, + 0.979570, 0.979589, 0.979608, 0.979628, 0.979647, 0.979666, 0.979685, 0.979704, + 0.979724, 0.979743, 0.979762, 0.979781, 0.979800, 0.979820, 0.979839, 0.979858, + 0.979877, 0.979896, 0.979915, 0.979934, 0.979954, 0.979973, 0.979992, 0.980011, + 0.980030, 0.980049, 0.980068, 0.980087, 0.980106, 0.980125, 0.980144, 0.980163, + 0.980182, 0.980201, 0.980220, 0.980239, 0.980258, 0.980277, 0.980296, 0.980315, + 0.980334, 0.980353, 0.980372, 0.980390, 0.980409, 0.980428, 0.980447, 0.980466, + 0.980485, 0.980504, 0.980523, 0.980541, 0.980560, 0.980579, 0.980598, 0.980617, + 0.980635, 0.980654, 0.980673, 0.980692, 0.980710, 0.980729, 0.980748, 0.980767, + 0.980785, 0.980804, 0.980823, 0.980841, 0.980860, 0.980879, 0.980897, 0.980916, + 0.980935, 0.980953, 0.980972, 0.980990, 0.981009, 0.981028, 0.981046, 0.981065, + 0.981083, 0.981102, 0.981120, 0.981139, 0.981158, 0.981176, 0.981195, 0.981213, + 0.981232, 0.981250, 0.981269, 0.981287, 0.981305, 0.981324, 0.981342, 0.981361, + 0.981379, 0.981398, 0.981416, 0.981434, 0.981453, 0.981471, 0.981490, 0.981508, + 0.981526, 0.981545, 0.981563, 0.981581, 0.981600, 0.981618, 0.981636, 0.981654, + 0.981673, 0.981691, 0.981709, 0.981727, 0.981746, 0.981764, 0.981782, 0.981800, + 0.981819, 0.981837, 0.981855, 0.981873, 0.981891, 0.981909, 0.981928, 0.981946, + 0.981964, 0.981982, 0.982000, 0.982018, 0.982036, 0.982054, 0.982072, 0.982091, + 0.982109, 0.982127, 0.982145, 0.982163, 0.982181, 0.982199, 0.982217, 0.982235, + 0.982253, 0.982271, 0.982289, 0.982307, 0.982325, 0.982343, 0.982360, 0.982378, + 0.982396, 0.982414, 0.982432, 0.982450, 0.982468, 0.982486, 0.982504, 0.982521, + 0.982539, 0.982557, 0.982575, 0.982593, 0.982611, 0.982628, 0.982646, 0.982664, + 0.982682, 0.982699, 0.982717, 0.982735, 0.982753, 0.982770, 0.982788, 0.982806, + 0.982824, 0.982841, 0.982859, 0.982877, 0.982894, 0.982912, 0.982930, 0.982947, + 0.982965, 0.982982, 0.983000, 0.983018, 0.983035, 0.983053, 0.983070, 0.983088, + 0.983105, 0.983123, 0.983141, 0.983158, 0.983176, 0.983193, 0.983211, 0.983228, + 0.983246, 0.983263, 0.983281, 0.983298, 0.983315, 0.983333, 0.983350, 0.983368, + 0.983385, 0.983402, 0.983420, 0.983437, 0.983455, 0.983472, 0.983489, 0.983507, + 0.983524, 0.983541, 0.983559, 0.983576, 0.983593, 0.983611, 0.983628, 0.983645, + 0.983662, 0.983680, 0.983697, 0.983714, 0.983731, 0.983749, 0.983766, 0.983783, + 0.983800, 0.983817, 0.983835, 0.983852, 0.983869, 0.983886, 0.983903, 0.983920, + 0.983937, 0.983955, 0.983972, 0.983989, 0.984006, 0.984023, 0.984040, 0.984057, + 0.984074, 0.984091, 0.984108, 0.984125, 0.984142, 0.984159, 0.984176, 0.984193, + 0.984210, 0.984227, 0.984244, 0.984261, 0.984278, 0.984295, 0.984312, 0.984329, + 0.984346, 0.984362, 0.984379, 0.984396, 0.984413, 0.984430, 0.984447, 0.984464, + 0.984480, 0.984497, 0.984514, 0.984531, 0.984548, 0.984564, 0.984581, 0.984598, + 0.984615, 0.984632, 0.984648, 0.984665, 0.984682, 0.984698, 0.984715, 0.984732, + 0.984748, 0.984765, 0.984782, 0.984798, 0.984815, 0.984832, 0.984848, 0.984865, + 0.984882, 0.984898, 0.984915, 0.984931, 0.984948, 0.984965, 0.984981, 0.984998, + 0.985014, 0.985031, 0.985047, 0.985064, 0.985080, 0.985097, 0.985113, 0.985130, + 0.985146, 0.985163, 0.985179, 0.985196, 0.985212, 0.985228, 0.985245, 0.985261, + 0.985278, 0.985294, 0.985310, 0.985327, 0.985343, 0.985359, 0.985376, 0.985392, + 0.985408, 0.985425, 0.985441, 0.985457, 0.985474, 0.985490, 0.985506, 0.985523, + 0.985539, 0.985555, 0.985571, 0.985587, 0.985604, 0.985620, 0.985636, 0.985652, + 0.985668, 0.985685, 0.985701, 0.985717, 0.985733, 0.985749, 0.985765, 0.985781, + 0.985798, 0.985814, 0.985830, 0.985846, 0.985862, 0.985878, 0.985894, 0.985910, + 0.985926, 0.985942, 0.985958, 0.985974, 0.985990, 0.986006, 0.986022, 0.986038, + 0.986054, 0.986070, 0.986086, 0.986102, 0.986118, 0.986134, 0.986150, 0.986165, + 0.986181, 0.986197, 0.986213, 0.986229, 0.986245, 0.986261, 0.986276, 0.986292, + 0.986308, 0.986324, 0.986340, 0.986355, 0.986371, 0.986387, 0.986403, 0.986419, + 0.986434, 0.986450, 0.986466, 0.986481, 0.986497, 0.986513, 0.986529, 0.986544, + 0.986560, 0.986576, 0.986591, 0.986607, 0.986623, 0.986638, 0.986654, 0.986669, + 0.986685, 0.986701, 0.986716, 0.986732, 0.986747, 0.986763, 0.986778, 0.986794, + 0.986809, 0.986825, 0.986840, 0.986856, 0.986871, 0.986887, 0.986902, 0.986918, + 0.986933, 0.986949, 0.986964, 0.986980, 0.986995, 0.987010, 0.987026, 0.987041, + 0.987057, 0.987072, 0.987087, 0.987103, 0.987118, 0.987133, 0.987149, 0.987164, + 0.987179, 0.987195, 0.987210, 0.987225, 0.987240, 0.987256, 0.987271, 0.987286, + 0.987301, 0.987317, 0.987332, 0.987347, 0.987362, 0.987377, 0.987393, 0.987408, + 0.987423, 0.987438, 0.987453, 0.987468, 0.987484, 0.987499, 0.987514, 0.987529, + 0.987544, 0.987559, 0.987574, 0.987589, 0.987604, 0.987619, 0.987634, 0.987649, + 0.987664, 0.987679, 0.987694, 0.987709, 0.987724, 0.987739, 0.987754, 0.987769, + 0.987784, 0.987799, 0.987814, 0.987829, 0.987844, 0.987859, 0.987874, 0.987889, + 0.987903, 0.987918, 0.987933, 0.987948, 0.987963, 0.987978, 0.987992, 0.988007, + 0.988022, 0.988037, 0.988052, 0.988066, 0.988081, 0.988096, 0.988111, 0.988125, + 0.988140, 0.988155, 0.988169, 0.988184, 0.988199, 0.988214, 0.988228, 0.988243, + 0.988258, 0.988272, 0.988287, 0.988301, 0.988316, 0.988331, 0.988345, 0.988360, + 0.988374, 0.988389, 0.988404, 0.988418, 0.988433, 0.988447, 0.988462, 0.988476, + 0.988491, 0.988505, 0.988520, 0.988534, 0.988549, 0.988563, 0.988578, 0.988592, + 0.988607, 0.988621, 0.988635, 0.988650, 0.988664, 0.988679, 0.988693, 0.988707, + 0.988722, 0.988736, 0.988750, 0.988765, 0.988779, 0.988793, 0.988808, 0.988822, + 0.988836, 0.988851, 0.988865, 0.988879, 0.988893, 0.988908, 0.988922, 0.988936, + 0.988950, 0.988964, 0.988979, 0.988993, 0.989007, 0.989021, 0.989035, 0.989050, + 0.989064, 0.989078, 0.989092, 0.989106, 0.989120, 0.989134, 0.989148, 0.989162, + 0.989177, 0.989191, 0.989205, 0.989219, 0.989233, 0.989247, 0.989261, 0.989275, + 0.989289, 0.989303, 0.989317, 0.989331, 0.989345, 0.989359, 0.989373, 0.989386, + 0.989400, 0.989414, 0.989428, 0.989442, 0.989456, 0.989470, 0.989484, 0.989498, + 0.989511, 0.989525, 0.989539, 0.989553, 0.989567, 0.989581, 0.989594, 0.989608, + 0.989622, 0.989636, 0.989650, 0.989663, 0.989677, 0.989691, 0.989704, 0.989718, + 0.989732, 0.989746, 0.989759, 0.989773, 0.989787, 0.989800, 0.989814, 0.989828, + 0.989841, 0.989855, 0.989869, 0.989882, 0.989896, 0.989909, 0.989923, 0.989936, + 0.989950, 0.989964, 0.989977, 0.989991, 0.990004, 0.990018, 0.990031, 0.990045, + 0.990058, 0.990072, 0.990085, 0.990099, 0.990112, 0.990126, 0.990139, 0.990152, + 0.990166, 0.990179, 0.990193, 0.990206, 0.990219, 0.990233, 0.990246, 0.990259, + 0.990273, 0.990286, 0.990299, 0.990313, 0.990326, 0.990339, 0.990353, 0.990366, + 0.990379, 0.990393, 0.990406, 0.990419, 0.990432, 0.990445, 0.990459, 0.990472, + 0.990485, 0.990498, 0.990511, 0.990525, 0.990538, 0.990551, 0.990564, 0.990577, + 0.990590, 0.990603, 0.990617, 0.990630, 0.990643, 0.990656, 0.990669, 0.990682, + 0.990695, 0.990708, 0.990721, 0.990734, 0.990747, 0.990760, 0.990773, 0.990786, + 0.990799, 0.990812, 0.990825, 0.990838, 0.990851, 0.990864, 0.990877, 0.990890, + 0.990903, 0.990916, 0.990928, 0.990941, 0.990954, 0.990967, 0.990980, 0.990993, + 0.991006, 0.991018, 0.991031, 0.991044, 0.991057, 0.991070, 0.991082, 0.991095, + 0.991108, 0.991121, 0.991133, 0.991146, 0.991159, 0.991172, 0.991184, 0.991197, + 0.991210, 0.991222, 0.991235, 0.991248, 0.991260, 0.991273, 0.991286, 0.991298, + 0.991311, 0.991323, 0.991336, 0.991349, 0.991361, 0.991374, 0.991386, 0.991399, + 0.991411, 0.991424, 0.991437, 0.991449, 0.991462, 0.991474, 0.991487, 0.991499, + 0.991511, 0.991524, 0.991536, 0.991549, 0.991561, 0.991574, 0.991586, 0.991598, + 0.991611, 0.991623, 0.991636, 0.991648, 0.991660, 0.991673, 0.991685, 0.991697, + 0.991710, 0.991722, 0.991734, 0.991747, 0.991759, 0.991771, 0.991783, 0.991796, + 0.991808, 0.991820, 0.991832, 0.991845, 0.991857, 0.991869, 0.991881, 0.991894, + 0.991906, 0.991918, 0.991930, 0.991942, 0.991954, 0.991966, 0.991979, 0.991991, + 0.992003, 0.992015, 0.992027, 0.992039, 0.992051, 0.992063, 0.992075, 0.992087, + 0.992099, 0.992111, 0.992123, 0.992135, 0.992147, 0.992159, 0.992171, 0.992183, + 0.992195, 0.992207, 0.992219, 0.992231, 0.992243, 0.992255, 0.992267, 0.992279, + 0.992291, 0.992302, 0.992314, 0.992326, 0.992338, 0.992350, 0.992362, 0.992374, + 0.992385, 0.992397, 0.992409, 0.992421, 0.992433, 0.992444, 0.992456, 0.992468, + 0.992480, 0.992491, 0.992503, 0.992515, 0.992526, 0.992538, 0.992550, 0.992561, + 0.992573, 0.992585, 0.992596, 0.992608, 0.992620, 0.992631, 0.992643, 0.992655, + 0.992666, 0.992678, 0.992689, 0.992701, 0.992712, 0.992724, 0.992736, 0.992747, + 0.992759, 0.992770, 0.992782, 0.992793, 0.992805, 0.992816, 0.992828, 0.992839, + 0.992850, 0.992862, 0.992873, 0.992885, 0.992896, 0.992908, 0.992919, 0.992930, + 0.992942, 0.992953, 0.992964, 0.992976, 0.992987, 0.992998, 0.993010, 0.993021, + 0.993032, 0.993044, 0.993055, 0.993066, 0.993077, 0.993089, 0.993100, 0.993111, + 0.993122, 0.993134, 0.993145, 0.993156, 0.993167, 0.993178, 0.993190, 0.993201, + 0.993212, 0.993223, 0.993234, 0.993245, 0.993257, 0.993268, 0.993279, 0.993290, + 0.993301, 0.993312, 0.993323, 0.993334, 0.993345, 0.993356, 0.993367, 0.993378, + 0.993389, 0.993400, 0.993411, 0.993422, 0.993433, 0.993444, 0.993455, 0.993466, + 0.993477, 0.993488, 0.993499, 0.993510, 0.993521, 0.993532, 0.993542, 0.993553, + 0.993564, 0.993575, 0.993586, 0.993597, 0.993608, 0.993618, 0.993629, 0.993640, + 0.993651, 0.993662, 0.993672, 0.993683, 0.993694, 0.993705, 0.993715, 0.993726, + 0.993737, 0.993747, 0.993758, 0.993769, 0.993779, 0.993790, 0.993801, 0.993811, + 0.993822, 0.993833, 0.993843, 0.993854, 0.993865, 0.993875, 0.993886, 0.993896, + 0.993907, 0.993918, 0.993928, 0.993939, 0.993949, 0.993960, 0.993970, 0.993981, + 0.993991, 0.994002, 0.994012, 0.994023, 0.994033, 0.994044, 0.994054, 0.994064, + 0.994075, 0.994085, 0.994096, 0.994106, 0.994116, 0.994127, 0.994137, 0.994148, + 0.994158, 0.994168, 0.994179, 0.994189, 0.994199, 0.994210, 0.994220, 0.994230, + 0.994240, 0.994251, 0.994261, 0.994271, 0.994281, 0.994292, 0.994302, 0.994312, + 0.994322, 0.994333, 0.994343, 0.994353, 0.994363, 0.994373, 0.994383, 0.994394, + 0.994404, 0.994414, 0.994424, 0.994434, 0.994444, 0.994454, 0.994464, 0.994474, + 0.994484, 0.994494, 0.994505, 0.994515, 0.994525, 0.994535, 0.994545, 0.994555, + 0.994565, 0.994575, 0.994585, 0.994594, 0.994604, 0.994614, 0.994624, 0.994634, + 0.994644, 0.994654, 0.994664, 0.994674, 0.994684, 0.994694, 0.994703, 0.994713, + 0.994723, 0.994733, 0.994743, 0.994753, 0.994762, 0.994772, 0.994782, 0.994792, + 0.994802, 0.994811, 0.994821, 0.994831, 0.994841, 0.994850, 0.994860, 0.994870, + 0.994879, 0.994889, 0.994899, 0.994908, 0.994918, 0.994928, 0.994937, 0.994947, + 0.994957, 0.994966, 0.994976, 0.994985, 0.994995, 0.995005, 0.995014, 0.995024, + 0.995033, 0.995043, 0.995052, 0.995062, 0.995071, 0.995081, 0.995090, 0.995100, + 0.995109, 0.995119, 0.995128, 0.995138, 0.995147, 0.995156, 0.995166, 0.995175, + 0.995185, 0.995194, 0.995203, 0.995213, 0.995222, 0.995232, 0.995241, 0.995250, + 0.995260, 0.995269, 0.995278, 0.995288, 0.995297, 0.995306, 0.995315, 0.995325, + 0.995334, 0.995343, 0.995352, 0.995362, 0.995371, 0.995380, 0.995389, 0.995398, + 0.995408, 0.995417, 0.995426, 0.995435, 0.995444, 0.995453, 0.995463, 0.995472, + 0.995481, 0.995490, 0.995499, 0.995508, 0.995517, 0.995526, 0.995535, 0.995544, + 0.995553, 0.995562, 0.995571, 0.995580, 0.995589, 0.995598, 0.995607, 0.995616, + 0.995625, 0.995634, 0.995643, 0.995652, 0.995661, 0.995670, 0.995679, 0.995688, + 0.995697, 0.995705, 0.995714, 0.995723, 0.995732, 0.995741, 0.995750, 0.995759, + 0.995767, 0.995776, 0.995785, 0.995794, 0.995803, 0.995811, 0.995820, 0.995829, + 0.995838, 0.995846, 0.995855, 0.995864, 0.995872, 0.995881, 0.995890, 0.995899, + 0.995907, 0.995916, 0.995925, 0.995933, 0.995942, 0.995950, 0.995959, 0.995968, + 0.995976, 0.995985, 0.995993, 0.996002, 0.996011, 0.996019, 0.996028, 0.996036, + 0.996045, 0.996053, 0.996062, 0.996070, 0.996079, 0.996087, 0.996096, 0.996104, + 0.996113, 0.996121, 0.996129, 0.996138, 0.996146, 0.996155, 0.996163, 0.996171, + 0.996180, 0.996188, 0.996197, 0.996205, 0.996213, 0.996222, 0.996230, 0.996238, + 0.996247, 0.996255, 0.996263, 0.996271, 0.996280, 0.996288, 0.996296, 0.996304, + 0.996313, 0.996321, 0.996329, 0.996337, 0.996345, 0.996354, 0.996362, 0.996370, + 0.996378, 0.996386, 0.996394, 0.996403, 0.996411, 0.996419, 0.996427, 0.996435, + 0.996443, 0.996451, 0.996459, 0.996467, 0.996475, 0.996483, 0.996491, 0.996499, + 0.996507, 0.996515, 0.996523, 0.996531, 0.996539, 0.996547, 0.996555, 0.996563, + 0.996571, 0.996579, 0.996587, 0.996595, 0.996603, 0.996611, 0.996619, 0.996626, + 0.996634, 0.996642, 0.996650, 0.996658, 0.996666, 0.996674, 0.996681, 0.996689, + 0.996697, 0.996705, 0.996712, 0.996720, 0.996728, 0.996736, 0.996743, 0.996751, + 0.996759, 0.996767, 0.996774, 0.996782, 0.996790, 0.996797, 0.996805, 0.996813, + 0.996820, 0.996828, 0.996836, 0.996843, 0.996851, 0.996858, 0.996866, 0.996874, + 0.996881, 0.996889, 0.996896, 0.996904, 0.996911, 0.996919, 0.996926, 0.996934, + 0.996941, 0.996949, 0.996956, 0.996964, 0.996971, 0.996979, 0.996986, 0.996994, + 0.997001, 0.997008, 0.997016, 0.997023, 0.997031, 0.997038, 0.997045, 0.997053, + 0.997060, 0.997067, 0.997075, 0.997082, 0.997089, 0.997097, 0.997104, 0.997111, + 0.997119, 0.997126, 0.997133, 0.997140, 0.997148, 0.997155, 0.997162, 0.997169, + 0.997176, 0.997184, 0.997191, 0.997198, 0.997205, 0.997212, 0.997219, 0.997227, + 0.997234, 0.997241, 0.997248, 0.997255, 0.997262, 0.997269, 0.997276, 0.997283, + 0.997290, 0.997298, 0.997305, 0.997312, 0.997319, 0.997326, 0.997333, 0.997340, + 0.997347, 0.997354, 0.997361, 0.997368, 0.997374, 0.997381, 0.997388, 0.997395, + 0.997402, 0.997409, 0.997416, 0.997423, 0.997430, 0.997437, 0.997443, 0.997450, + 0.997457, 0.997464, 0.997471, 0.997478, 0.997484, 0.997491, 0.997498, 0.997505, + 0.997511, 0.997518, 0.997525, 0.997532, 0.997538, 0.997545, 0.997552, 0.997559, + 0.997565, 0.997572, 0.997579, 0.997585, 0.997592, 0.997599, 0.997605, 0.997612, + 0.997618, 0.997625, 0.997632, 0.997638, 0.997645, 0.997651, 0.997658, 0.997665, + 0.997671, 0.997678, 0.997684, 0.997691, 0.997697, 0.997704, 0.997710, 0.997717, + 0.997723, 0.997730, 0.997736, 0.997742, 0.997749, 0.997755, 0.997762, 0.997768, + 0.997774, 0.997781, 0.997787, 0.997794, 0.997800, 0.997806, 0.997813, 0.997819, + 0.997825, 0.997832, 0.997838, 0.997844, 0.997851, 0.997857, 0.997863, 0.997869, + 0.997876, 0.997882, 0.997888, 0.997894, 0.997901, 0.997907, 0.997913, 0.997919, + 0.997925, 0.997931, 0.997938, 0.997944, 0.997950, 0.997956, 0.997962, 0.997968, + 0.997974, 0.997980, 0.997987, 0.997993, 0.997999, 0.998005, 0.998011, 0.998017, + 0.998023, 0.998029, 0.998035, 0.998041, 0.998047, 0.998053, 0.998059, 0.998065, + 0.998071, 0.998077, 0.998083, 0.998089, 0.998094, 0.998100, 0.998106, 0.998112, + 0.998118, 0.998124, 0.998130, 0.998136, 0.998142, 0.998147, 0.998153, 0.998159, + 0.998165, 0.998171, 0.998176, 0.998182, 0.998188, 0.998194, 0.998200, 0.998205, + 0.998211, 0.998217, 0.998222, 0.998228, 0.998234, 0.998240, 0.998245, 0.998251, + 0.998257, 0.998262, 0.998268, 0.998273, 0.998279, 0.998285, 0.998290, 0.998296, + 0.998302, 0.998307, 0.998313, 0.998318, 0.998324, 0.998329, 0.998335, 0.998340, + 0.998346, 0.998351, 0.998357, 0.998362, 0.998368, 0.998373, 0.998379, 0.998384, + 0.998390, 0.998395, 0.998401, 0.998406, 0.998411, 0.998417, 0.998422, 0.998428, + 0.998433, 0.998438, 0.998444, 0.998449, 0.998454, 0.998460, 0.998465, 0.998470, + 0.998476, 0.998481, 0.998486, 0.998491, 0.998497, 0.998502, 0.998507, 0.998512, + 0.998518, 0.998523, 0.998528, 0.998533, 0.998538, 0.998544, 0.998549, 0.998554, + 0.998559, 0.998564, 0.998569, 0.998574, 0.998580, 0.998585, 0.998590, 0.998595, + 0.998600, 0.998605, 0.998610, 0.998615, 0.998620, 0.998625, 0.998630, 0.998635, + 0.998640, 0.998645, 0.998650, 0.998655, 0.998660, 0.998665, 0.998670, 0.998675, + 0.998680, 0.998685, 0.998690, 0.998695, 0.998700, 0.998704, 0.998709, 0.998714, + 0.998719, 0.998724, 0.998729, 0.998734, 0.998738, 0.998743, 0.998748, 0.998753, + 0.998758, 0.998762, 0.998767, 0.998772, 0.998777, 0.998781, 0.998786, 0.998791, + 0.998795, 0.998800, 0.998805, 0.998810, 0.998814, 0.998819, 0.998824, 0.998828, + 0.998833, 0.998837, 0.998842, 0.998847, 0.998851, 0.998856, 0.998860, 0.998865, + 0.998870, 0.998874, 0.998879, 0.998883, 0.998888, 0.998892, 0.998897, 0.998901, + 0.998906, 0.998910, 0.998915, 0.998919, 0.998924, 0.998928, 0.998932, 0.998937, + 0.998941, 0.998946, 0.998950, 0.998954, 0.998959, 0.998963, 0.998968, 0.998972, + 0.998976, 0.998981, 0.998985, 0.998989, 0.998994, 0.998998, 0.999002, 0.999006, + 0.999011, 0.999015, 0.999019, 0.999023, 0.999028, 0.999032, 0.999036, 0.999040, + 0.999044, 0.999049, 0.999053, 0.999057, 0.999061, 0.999065, 0.999069, 0.999074, + 0.999078, 0.999082, 0.999086, 0.999090, 0.999094, 0.999098, 0.999102, 0.999106, + 0.999110, 0.999114, 0.999118, 0.999122, 0.999126, 0.999130, 0.999134, 0.999138, + 0.999142, 0.999146, 0.999150, 0.999154, 0.999158, 0.999162, 0.999166, 0.999170, + 0.999174, 0.999178, 0.999182, 0.999186, 0.999189, 0.999193, 0.999197, 0.999201, + 0.999205, 0.999209, 0.999212, 0.999216, 0.999220, 0.999224, 0.999228, 0.999231, + 0.999235, 0.999239, 0.999243, 0.999246, 0.999250, 0.999254, 0.999257, 0.999261, + 0.999265, 0.999268, 0.999272, 0.999276, 0.999279, 0.999283, 0.999287, 0.999290, + 0.999294, 0.999297, 0.999301, 0.999305, 0.999308, 0.999312, 0.999315, 0.999319, + 0.999322, 0.999326, 0.999329, 0.999333, 0.999336, 0.999340, 0.999343, 0.999347, + 0.999350, 0.999354, 0.999357, 0.999361, 0.999364, 0.999367, 0.999371, 0.999374, + 0.999378, 0.999381, 0.999384, 0.999388, 0.999391, 0.999394, 0.999398, 0.999401, + 0.999404, 0.999408, 0.999411, 0.999414, 0.999418, 0.999421, 0.999424, 0.999427, + 0.999431, 0.999434, 0.999437, 0.999440, 0.999443, 0.999447, 0.999450, 0.999453, + 0.999456, 0.999459, 0.999462, 0.999466, 0.999469, 0.999472, 0.999475, 0.999478, + 0.999481, 0.999484, 0.999487, 0.999490, 0.999493, 0.999497, 0.999500, 0.999503, + 0.999506, 0.999509, 0.999512, 0.999515, 0.999518, 0.999521, 0.999524, 0.999527, + 0.999529, 0.999532, 0.999535, 0.999538, 0.999541, 0.999544, 0.999547, 0.999550, + 0.999553, 0.999556, 0.999558, 0.999561, 0.999564, 0.999567, 0.999570, 0.999573, + 0.999575, 0.999578, 0.999581, 0.999584, 0.999586, 0.999589, 0.999592, 0.999595, + 0.999597, 0.999600, 0.999603, 0.999605, 0.999608, 0.999611, 0.999614, 0.999616, + 0.999619, 0.999621, 0.999624, 0.999627, 0.999629, 0.999632, 0.999635, 0.999637, + 0.999640, 0.999642, 0.999645, 0.999647, 0.999650, 0.999652, 0.999655, 0.999658, + 0.999660, 0.999663, 0.999665, 0.999667, 0.999670, 0.999672, 0.999675, 0.999677, + 0.999680, 0.999682, 0.999685, 0.999687, 0.999689, 0.999692, 0.999694, 0.999696, + 0.999699, 0.999701, 0.999704, 0.999706, 0.999708, 0.999710, 0.999713, 0.999715, + 0.999717, 0.999720, 0.999722, 0.999724, 0.999726, 0.999729, 0.999731, 0.999733, + 0.999735, 0.999738, 0.999740, 0.999742, 0.999744, 0.999746, 0.999748, 0.999750, + 0.999753, 0.999755, 0.999757, 0.999759, 0.999761, 0.999763, 0.999765, 0.999767, + 0.999769, 0.999771, 0.999774, 0.999776, 0.999778, 0.999780, 0.999782, 0.999784, + 0.999786, 0.999788, 0.999790, 0.999792, 0.999793, 0.999795, 0.999797, 0.999799, + 0.999801, 0.999803, 0.999805, 0.999807, 0.999809, 0.999811, 0.999812, 0.999814, + 0.999816, 0.999818, 0.999820, 0.999822, 0.999823, 0.999825, 0.999827, 0.999829, + 0.999831, 0.999832, 0.999834, 0.999836, 0.999838, 0.999839, 0.999841, 0.999843, + 0.999844, 0.999846, 0.999848, 0.999849, 0.999851, 0.999853, 0.999854, 0.999856, + 0.999858, 0.999859, 0.999861, 0.999862, 0.999864, 0.999866, 0.999867, 0.999869, + 0.999870, 0.999872, 0.999873, 0.999875, 0.999876, 0.999878, 0.999879, 0.999881, + 0.999882, 0.999884, 0.999885, 0.999887, 0.999888, 0.999890, 0.999891, 0.999892, + 0.999894, 0.999895, 0.999897, 0.999898, 0.999899, 0.999901, 0.999902, 0.999903, + 0.999905, 0.999906, 0.999907, 0.999909, 0.999910, 0.999911, 0.999913, 0.999914, + 0.999915, 0.999916, 0.999917, 0.999919, 0.999920, 0.999921, 0.999922, 0.999924, + 0.999925, 0.999926, 0.999927, 0.999928, 0.999929, 0.999930, 0.999932, 0.999933, + 0.999934, 0.999935, 0.999936, 0.999937, 0.999938, 0.999939, 0.999940, 0.999941, + 0.999942, 0.999943, 0.999944, 0.999945, 0.999946, 0.999947, 0.999948, 0.999949, + 0.999950, 0.999951, 0.999952, 0.999953, 0.999954, 0.999955, 0.999956, 0.999957, + 0.999958, 0.999959, 0.999959, 0.999960, 0.999961, 0.999962, 0.999963, 0.999964, + 0.999964, 0.999965, 0.999966, 0.999967, 0.999968, 0.999968, 0.999969, 0.999970, + 0.999971, 0.999971, 0.999972, 0.999973, 0.999973, 0.999974, 0.999975, 0.999976, + 0.999976, 0.999977, 0.999977, 0.999978, 0.999979, 0.999979, 0.999980, 0.999981, + 0.999981, 0.999982, 0.999982, 0.999983, 0.999983, 0.999984, 0.999985, 0.999985, + 0.999986, 0.999986, 0.999987, 0.999987, 0.999988, 0.999988, 0.999988, 0.999989, + 0.999989, 0.999990, 0.999990, 0.999991, 0.999991, 0.999991, 0.999992, 0.999992, + 0.999993, 0.999993, 0.999993, 0.999994, 0.999994, 0.999994, 0.999995, 0.999995, + 0.999995, 0.999996, 0.999996, 0.999996, 0.999996, 0.999997, 0.999997, 0.999997, + 0.999997, 0.999998, 0.999998, 0.999998, 0.999998, 0.999998, 0.999999, 0.999999, + 0.999999, 0.999999, 0.999999, 0.999999, 0.999999, 0.999999, 1.000000, 1.000000, + 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000 +}; + +static const float *cosTables[17] = { + 0 , 0 , 0 , 0 , + cosTable16 , cosTable32 , cosTable64 , cosTable128 , + cosTable256 , cosTable512 , cosTable1024 , cosTable2048 , + cosTable4096, cosTable8192, cosTable16384, cosTable32768, + cosTable65536 +}; + +} // End of namespace Common + +#endif // COMMON_COSINETABLES_H diff --git a/common/math.cpp b/common/math.cpp new file mode 100644 index 00000000000..8b7a68368e9 --- /dev/null +++ b/common/math.cpp @@ -0,0 +1,44 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' math code + +#include "common/math.h" + +#include "common/sinetables.h" +#include "common/cosinetables.h" + +namespace Common { + +const float *getSineTable(int bits) { + assert((bits >= 4) && (bits <= 16)); + + return sinTables[bits]; +} + +const float *getCosineTable(int bits) { + assert((bits >= 4) && (bits <= 16)); + + return cosTables[bits]; +} + +} // End of namespace Common diff --git a/common/math.h b/common/math.h new file mode 100644 index 00000000000..44ba640dfb0 --- /dev/null +++ b/common/math.h @@ -0,0 +1,120 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' math code + +#ifndef COMMON_MATH_H +#define COMMON_MATH_H + +#include "common/scummsys.h" + +#ifndef M_SQRT1_2 + #define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ +#endif + +#ifndef M_PI + #define M_PI 3.14159265358979323846 +#endif + +#ifndef FLT_MIN + #define FLT_MIN 1E-37 +#endif + +#ifndef FLT_MAX + #define FLT_MAX 1E+37 +#endif + +extern const float sinTable16[8]; +extern const float sinTable32[16]; +extern const float sinTable64[32]; +extern const float sinTable128[64]; +extern const float sinTable256[128]; +extern const float sinTable512[256]; +extern const float sinTable1024[512]; +extern const float sinTable2048[1024]; +extern const float sinTable4096[2048]; +extern const float sinTable8192[4096]; +extern const float sinTable16384[8192]; +extern const float sinTable32768[16384]; +extern const float sinTable65536[32768]; + +extern const float cosTable16[8]; +extern const float cosTable32[16]; +extern const float cosTable64[32]; +extern const float cosTable128[64]; +extern const float cosTable256[128]; +extern const float cosTable512[256]; +extern const float cosTable1024[512]; +extern const float cosTable2048[1024]; +extern const float cosTable4096[2048]; +extern const float cosTable8192[4096]; +extern const float cosTable16384[8192]; +extern const float cosTable32768[16384]; +extern const float cosTable65536[32768]; + +namespace Common { + +/** A complex number. */ +struct Complex { + float re, im; +}; + +const float *getSineTable(int bits); +const float *getCosineTable(int bits); + +// See http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogLookup +static const char LogTable256[256] = { +#define LT(n) n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n + -1, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, + LT(4), LT(5), LT(5), LT(6), LT(6), LT(6), LT(6), + LT(7), LT(7), LT(7), LT(7), LT(7), LT(7), LT(7), LT(7) +}; + +inline uint32 log2(uint32 v) { + register uint32 t, tt; + + if ((tt = v >> 16)) + return (t = tt >> 8) ? 24 + LogTable256[t] : 16 + LogTable256[tt]; + else + return (t = v >> 8) ? 8 + LogTable256[t] : LogTable256[v]; +} + +inline float rad2deg(float rad) { + return rad * 180.0 / M_PI; +} + +inline float deg2rad(float deg) { + return deg * M_PI / 180.0; +} + +inline void vector2orientation(float vX, float vY, float &x, float &y, float &z) { + x = 0.0; + y = rad2deg(acos(vY)); + z = 0.0; + + if (vX < 0) + y = 360.0 - y; +} + +} // End of namespace Common + +#endif // COMMON_MATHS_H diff --git a/common/module.mk b/common/module.mk index bada45bf91d..d2791c4f9d3 100644 --- a/common/module.mk +++ b/common/module.mk @@ -15,6 +15,7 @@ MODULE_OBJS := \ hashmap.o \ iff_container.o \ macresman.o \ + math.o \ memorypool.o \ md5.o \ mutex.o \ diff --git a/common/sinetables.h b/common/sinetables.h new file mode 100644 index 00000000000..39a5c9fda31 --- /dev/null +++ b/common/sinetables.h @@ -0,0 +1,8270 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' sine tables + +#ifndef COMMON_SINETABLES_H +#define COMMON_SINETABLES_H + +namespace Common { + +static const float sinTable16[8] = { + 0.000000, 0.382683, 0.707107, 0.923880, 0.000000, -0.382683, -0.707107, -0.923880 +}; + +static const float sinTable32[16] = { + 0.000000, 0.195090, 0.382683, 0.555570, 0.707107, 0.831470, 0.923880, 0.980785, + 0.000000, -0.195090, -0.382683, -0.555570, -0.707107, -0.831470, -0.923880, -0.980785 +}; + +static const float sinTable64[32] = { + 0.000000, 0.098017, 0.195090, 0.290285, 0.382683, 0.471397, 0.555570, 0.634393, + 0.707107, 0.773010, 0.831470, 0.881921, 0.923880, 0.956940, 0.980785, 0.995185, + 0.000000, -0.098017, -0.195090, -0.290285, -0.382683, -0.471397, -0.555570, -0.634393, + -0.707107, -0.773010, -0.831470, -0.881921, -0.923880, -0.956940, -0.980785, -0.995185 +}; + +static const float sinTable128[64] = { + 0.000000, 0.049068, 0.098017, 0.146730, 0.195090, 0.242980, 0.290285, 0.336890, + 0.382683, 0.427555, 0.471397, 0.514103, 0.555570, 0.595699, 0.634393, 0.671559, + 0.707107, 0.740951, 0.773010, 0.803208, 0.831470, 0.857729, 0.881921, 0.903989, + 0.923880, 0.941544, 0.956940, 0.970031, 0.980785, 0.989177, 0.995185, 0.998795, + 0.000000, -0.049068, -0.098017, -0.146730, -0.195090, -0.242980, -0.290285, -0.336890, + -0.382683, -0.427555, -0.471397, -0.514103, -0.555570, -0.595699, -0.634393, -0.671559, + -0.707107, -0.740951, -0.773010, -0.803208, -0.831470, -0.857729, -0.881921, -0.903989, + -0.923880, -0.941544, -0.956940, -0.970031, -0.980785, -0.989177, -0.995185, -0.998795 +}; + +static const float sinTable256[128] = { + 0.000000, 0.024541, 0.049068, 0.073565, 0.098017, 0.122411, 0.146730, 0.170962, + 0.195090, 0.219101, 0.242980, 0.266713, 0.290285, 0.313682, 0.336890, 0.359895, + 0.382683, 0.405241, 0.427555, 0.449611, 0.471397, 0.492898, 0.514103, 0.534998, + 0.555570, 0.575808, 0.595699, 0.615232, 0.634393, 0.653173, 0.671559, 0.689541, + 0.707107, 0.724247, 0.740951, 0.757209, 0.773010, 0.788346, 0.803208, 0.817585, + 0.831470, 0.844854, 0.857729, 0.870087, 0.881921, 0.893224, 0.903989, 0.914210, + 0.923880, 0.932993, 0.941544, 0.949528, 0.956940, 0.963776, 0.970031, 0.975702, + 0.980785, 0.985278, 0.989177, 0.992480, 0.995185, 0.997290, 0.998795, 0.999699, + 0.000000, -0.024541, -0.049068, -0.073565, -0.098017, -0.122411, -0.146730, -0.170962, + -0.195090, -0.219101, -0.242980, -0.266713, -0.290285, -0.313682, -0.336890, -0.359895, + -0.382683, -0.405241, -0.427555, -0.449611, -0.471397, -0.492898, -0.514103, -0.534998, + -0.555570, -0.575808, -0.595699, -0.615232, -0.634393, -0.653173, -0.671559, -0.689541, + -0.707107, -0.724247, -0.740951, -0.757209, -0.773010, -0.788346, -0.803208, -0.817585, + -0.831470, -0.844854, -0.857729, -0.870087, -0.881921, -0.893224, -0.903989, -0.914210, + -0.923880, -0.932993, -0.941544, -0.949528, -0.956940, -0.963776, -0.970031, -0.975702, + -0.980785, -0.985278, -0.989177, -0.992480, -0.995185, -0.997290, -0.998795, -0.999699 +}; + +static const float sinTable512[256] = { + 0.000000, 0.012272, 0.024541, 0.036807, 0.049068, 0.061321, 0.073565, 0.085797, + 0.098017, 0.110222, 0.122411, 0.134581, 0.146730, 0.158858, 0.170962, 0.183040, + 0.195090, 0.207111, 0.219101, 0.231058, 0.242980, 0.254866, 0.266713, 0.278520, + 0.290285, 0.302006, 0.313682, 0.325310, 0.336890, 0.348419, 0.359895, 0.371317, + 0.382683, 0.393992, 0.405241, 0.416430, 0.427555, 0.438616, 0.449611, 0.460539, + 0.471397, 0.482184, 0.492898, 0.503538, 0.514103, 0.524590, 0.534998, 0.545325, + 0.555570, 0.565732, 0.575808, 0.585798, 0.595699, 0.605511, 0.615232, 0.624860, + 0.634393, 0.643832, 0.653173, 0.662416, 0.671559, 0.680601, 0.689541, 0.698376, + 0.707107, 0.715731, 0.724247, 0.732654, 0.740951, 0.749136, 0.757209, 0.765167, + 0.773010, 0.780737, 0.788346, 0.795837, 0.803208, 0.810457, 0.817585, 0.824589, + 0.831470, 0.838225, 0.844854, 0.851355, 0.857729, 0.863973, 0.870087, 0.876070, + 0.881921, 0.887640, 0.893224, 0.898674, 0.903989, 0.909168, 0.914210, 0.919114, + 0.923880, 0.928506, 0.932993, 0.937339, 0.941544, 0.945607, 0.949528, 0.953306, + 0.956940, 0.960431, 0.963776, 0.966976, 0.970031, 0.972940, 0.975702, 0.978317, + 0.980785, 0.983105, 0.985278, 0.987301, 0.989177, 0.990903, 0.992480, 0.993907, + 0.995185, 0.996313, 0.997290, 0.998118, 0.998795, 0.999322, 0.999699, 0.999925, + 0.000000, -0.012272, -0.024541, -0.036807, -0.049068, -0.061321, -0.073565, -0.085797, + -0.098017, -0.110222, -0.122411, -0.134581, -0.146730, -0.158858, -0.170962, -0.183040, + -0.195090, -0.207111, -0.219101, -0.231058, -0.242980, -0.254866, -0.266713, -0.278520, + -0.290285, -0.302006, -0.313682, -0.325310, -0.336890, -0.348419, -0.359895, -0.371317, + -0.382683, -0.393992, -0.405241, -0.416430, -0.427555, -0.438616, -0.449611, -0.460539, + -0.471397, -0.482184, -0.492898, -0.503538, -0.514103, -0.524590, -0.534998, -0.545325, + -0.555570, -0.565732, -0.575808, -0.585798, -0.595699, -0.605511, -0.615232, -0.624860, + -0.634393, -0.643832, -0.653173, -0.662416, -0.671559, -0.680601, -0.689541, -0.698376, + -0.707107, -0.715731, -0.724247, -0.732654, -0.740951, -0.749136, -0.757209, -0.765167, + -0.773010, -0.780737, -0.788346, -0.795837, -0.803208, -0.810457, -0.817585, -0.824589, + -0.831470, -0.838225, -0.844854, -0.851355, -0.857729, -0.863973, -0.870087, -0.876070, + -0.881921, -0.887640, -0.893224, -0.898674, -0.903989, -0.909168, -0.914210, -0.919114, + -0.923880, -0.928506, -0.932993, -0.937339, -0.941544, -0.945607, -0.949528, -0.953306, + -0.956940, -0.960431, -0.963776, -0.966976, -0.970031, -0.972940, -0.975702, -0.978317, + -0.980785, -0.983105, -0.985278, -0.987301, -0.989177, -0.990903, -0.992480, -0.993907, + -0.995185, -0.996313, -0.997290, -0.998118, -0.998795, -0.999322, -0.999699, -0.999925 +}; + +static const float sinTable1024[512] = { + 0.000000, 0.006136, 0.012272, 0.018407, 0.024541, 0.030675, 0.036807, 0.042938, + 0.049068, 0.055195, 0.061321, 0.067444, 0.073565, 0.079682, 0.085797, 0.091909, + 0.098017, 0.104122, 0.110222, 0.116319, 0.122411, 0.128498, 0.134581, 0.140658, + 0.146730, 0.152797, 0.158858, 0.164913, 0.170962, 0.177004, 0.183040, 0.189069, + 0.195090, 0.201105, 0.207111, 0.213110, 0.219101, 0.225084, 0.231058, 0.237024, + 0.242980, 0.248928, 0.254866, 0.260794, 0.266713, 0.272621, 0.278520, 0.284408, + 0.290285, 0.296151, 0.302006, 0.307850, 0.313682, 0.319502, 0.325310, 0.331106, + 0.336890, 0.342661, 0.348419, 0.354164, 0.359895, 0.365613, 0.371317, 0.377007, + 0.382683, 0.388345, 0.393992, 0.399624, 0.405241, 0.410843, 0.416430, 0.422000, + 0.427555, 0.433094, 0.438616, 0.444122, 0.449611, 0.455084, 0.460539, 0.465977, + 0.471397, 0.476799, 0.482184, 0.487550, 0.492898, 0.498228, 0.503538, 0.508830, + 0.514103, 0.519356, 0.524590, 0.529804, 0.534998, 0.540171, 0.545325, 0.550458, + 0.555570, 0.560662, 0.565732, 0.570781, 0.575808, 0.580814, 0.585798, 0.590760, + 0.595699, 0.600616, 0.605511, 0.610383, 0.615232, 0.620057, 0.624860, 0.629638, + 0.634393, 0.639124, 0.643832, 0.648514, 0.653173, 0.657807, 0.662416, 0.667000, + 0.671559, 0.676093, 0.680601, 0.685084, 0.689541, 0.693971, 0.698376, 0.702755, + 0.707107, 0.711432, 0.715731, 0.720003, 0.724247, 0.728464, 0.732654, 0.736817, + 0.740951, 0.745058, 0.749136, 0.753187, 0.757209, 0.761202, 0.765167, 0.769103, + 0.773010, 0.776888, 0.780737, 0.784557, 0.788346, 0.792107, 0.795837, 0.799537, + 0.803208, 0.806848, 0.810457, 0.814036, 0.817585, 0.821102, 0.824589, 0.828045, + 0.831470, 0.834863, 0.838225, 0.841555, 0.844854, 0.848120, 0.851355, 0.854558, + 0.857729, 0.860867, 0.863973, 0.867046, 0.870087, 0.873095, 0.876070, 0.879012, + 0.881921, 0.884797, 0.887640, 0.890449, 0.893224, 0.895966, 0.898674, 0.901349, + 0.903989, 0.906596, 0.909168, 0.911706, 0.914210, 0.916679, 0.919114, 0.921514, + 0.923880, 0.926210, 0.928506, 0.930767, 0.932993, 0.935184, 0.937339, 0.939459, + 0.941544, 0.943593, 0.945607, 0.947586, 0.949528, 0.951435, 0.953306, 0.955141, + 0.956940, 0.958703, 0.960431, 0.962121, 0.963776, 0.965394, 0.966976, 0.968522, + 0.970031, 0.971504, 0.972940, 0.974339, 0.975702, 0.977028, 0.978317, 0.979570, + 0.980785, 0.981964, 0.983105, 0.984210, 0.985278, 0.986308, 0.987301, 0.988258, + 0.989177, 0.990058, 0.990903, 0.991710, 0.992480, 0.993212, 0.993907, 0.994565, + 0.995185, 0.995767, 0.996313, 0.996820, 0.997290, 0.997723, 0.998118, 0.998476, + 0.998795, 0.999078, 0.999322, 0.999529, 0.999699, 0.999831, 0.999925, 0.999981, + 0.000000, -0.006136, -0.012272, -0.018407, -0.024541, -0.030675, -0.036807, -0.042938, + -0.049068, -0.055195, -0.061321, -0.067444, -0.073565, -0.079682, -0.085797, -0.091909, + -0.098017, -0.104122, -0.110222, -0.116319, -0.122411, -0.128498, -0.134581, -0.140658, + -0.146730, -0.152797, -0.158858, -0.164913, -0.170962, -0.177004, -0.183040, -0.189069, + -0.195090, -0.201105, -0.207111, -0.213110, -0.219101, -0.225084, -0.231058, -0.237024, + -0.242980, -0.248928, -0.254866, -0.260794, -0.266713, -0.272621, -0.278520, -0.284408, + -0.290285, -0.296151, -0.302006, -0.307850, -0.313682, -0.319502, -0.325310, -0.331106, + -0.336890, -0.342661, -0.348419, -0.354164, -0.359895, -0.365613, -0.371317, -0.377007, + -0.382683, -0.388345, -0.393992, -0.399624, -0.405241, -0.410843, -0.416430, -0.422000, + -0.427555, -0.433094, -0.438616, -0.444122, -0.449611, -0.455084, -0.460539, -0.465977, + -0.471397, -0.476799, -0.482184, -0.487550, -0.492898, -0.498228, -0.503538, -0.508830, + -0.514103, -0.519356, -0.524590, -0.529804, -0.534998, -0.540171, -0.545325, -0.550458, + -0.555570, -0.560662, -0.565732, -0.570781, -0.575808, -0.580814, -0.585798, -0.590760, + -0.595699, -0.600616, -0.605511, -0.610383, -0.615232, -0.620057, -0.624860, -0.629638, + -0.634393, -0.639124, -0.643832, -0.648514, -0.653173, -0.657807, -0.662416, -0.667000, + -0.671559, -0.676093, -0.680601, -0.685084, -0.689541, -0.693971, -0.698376, -0.702755, + -0.707107, -0.711432, -0.715731, -0.720003, -0.724247, -0.728464, -0.732654, -0.736817, + -0.740951, -0.745058, -0.749136, -0.753187, -0.757209, -0.761202, -0.765167, -0.769103, + -0.773010, -0.776888, -0.780737, -0.784557, -0.788346, -0.792107, -0.795837, -0.799537, + -0.803208, -0.806848, -0.810457, -0.814036, -0.817585, -0.821102, -0.824589, -0.828045, + -0.831470, -0.834863, -0.838225, -0.841555, -0.844854, -0.848120, -0.851355, -0.854558, + -0.857729, -0.860867, -0.863973, -0.867046, -0.870087, -0.873095, -0.876070, -0.879012, + -0.881921, -0.884797, -0.887640, -0.890449, -0.893224, -0.895966, -0.898674, -0.901349, + -0.903989, -0.906596, -0.909168, -0.911706, -0.914210, -0.916679, -0.919114, -0.921514, + -0.923880, -0.926210, -0.928506, -0.930767, -0.932993, -0.935184, -0.937339, -0.939459, + -0.941544, -0.943593, -0.945607, -0.947586, -0.949528, -0.951435, -0.953306, -0.955141, + -0.956940, -0.958703, -0.960431, -0.962121, -0.963776, -0.965394, -0.966976, -0.968522, + -0.970031, -0.971504, -0.972940, -0.974339, -0.975702, -0.977028, -0.978317, -0.979570, + -0.980785, -0.981964, -0.983105, -0.984210, -0.985278, -0.986308, -0.987301, -0.988258, + -0.989177, -0.990058, -0.990903, -0.991710, -0.992480, -0.993212, -0.993907, -0.994565, + -0.995185, -0.995767, -0.996313, -0.996820, -0.997290, -0.997723, -0.998118, -0.998476, + -0.998795, -0.999078, -0.999322, -0.999529, -0.999699, -0.999831, -0.999925, -0.999981 +}; + +static const float sinTable2048[1024] = { + 0.000000, 0.003068, 0.006136, 0.009204, 0.012272, 0.015339, 0.018407, 0.021474, + 0.024541, 0.027608, 0.030675, 0.033741, 0.036807, 0.039873, 0.042938, 0.046003, + 0.049068, 0.052132, 0.055195, 0.058258, 0.061321, 0.064383, 0.067444, 0.070505, + 0.073565, 0.076624, 0.079682, 0.082740, 0.085797, 0.088854, 0.091909, 0.094963, + 0.098017, 0.101070, 0.104122, 0.107172, 0.110222, 0.113271, 0.116319, 0.119365, + 0.122411, 0.125455, 0.128498, 0.131540, 0.134581, 0.137620, 0.140658, 0.143695, + 0.146730, 0.149765, 0.152797, 0.155828, 0.158858, 0.161886, 0.164913, 0.167938, + 0.170962, 0.173984, 0.177004, 0.180023, 0.183040, 0.186055, 0.189069, 0.192080, + 0.195090, 0.198098, 0.201105, 0.204109, 0.207111, 0.210112, 0.213110, 0.216107, + 0.219101, 0.222094, 0.225084, 0.228072, 0.231058, 0.234042, 0.237024, 0.240003, + 0.242980, 0.245955, 0.248928, 0.251898, 0.254866, 0.257831, 0.260794, 0.263755, + 0.266713, 0.269668, 0.272621, 0.275572, 0.278520, 0.281465, 0.284408, 0.287347, + 0.290285, 0.293219, 0.296151, 0.299080, 0.302006, 0.304929, 0.307850, 0.310767, + 0.313682, 0.316593, 0.319502, 0.322408, 0.325310, 0.328210, 0.331106, 0.334000, + 0.336890, 0.339777, 0.342661, 0.345541, 0.348419, 0.351293, 0.354164, 0.357031, + 0.359895, 0.362756, 0.365613, 0.368467, 0.371317, 0.374164, 0.377007, 0.379847, + 0.382683, 0.385516, 0.388345, 0.391170, 0.393992, 0.396810, 0.399624, 0.402435, + 0.405241, 0.408044, 0.410843, 0.413638, 0.416430, 0.419217, 0.422000, 0.424780, + 0.427555, 0.430326, 0.433094, 0.435857, 0.438616, 0.441371, 0.444122, 0.446869, + 0.449611, 0.452350, 0.455084, 0.457813, 0.460539, 0.463260, 0.465977, 0.468689, + 0.471397, 0.474100, 0.476799, 0.479494, 0.482184, 0.484869, 0.487550, 0.490226, + 0.492898, 0.495565, 0.498228, 0.500885, 0.503538, 0.506187, 0.508830, 0.511469, + 0.514103, 0.516732, 0.519356, 0.521975, 0.524590, 0.527199, 0.529804, 0.532403, + 0.534998, 0.537587, 0.540171, 0.542751, 0.545325, 0.547894, 0.550458, 0.553017, + 0.555570, 0.558119, 0.560662, 0.563199, 0.565732, 0.568259, 0.570781, 0.573297, + 0.575808, 0.578314, 0.580814, 0.583309, 0.585798, 0.588282, 0.590760, 0.593232, + 0.595699, 0.598161, 0.600616, 0.603067, 0.605511, 0.607950, 0.610383, 0.612810, + 0.615232, 0.617647, 0.620057, 0.622461, 0.624860, 0.627252, 0.629638, 0.632019, + 0.634393, 0.636762, 0.639124, 0.641481, 0.643832, 0.646176, 0.648514, 0.650847, + 0.653173, 0.655493, 0.657807, 0.660114, 0.662416, 0.664711, 0.667000, 0.669283, + 0.671559, 0.673829, 0.676093, 0.678350, 0.680601, 0.682846, 0.685084, 0.687315, + 0.689541, 0.691759, 0.693971, 0.696177, 0.698376, 0.700569, 0.702755, 0.704934, + 0.707107, 0.709273, 0.711432, 0.713585, 0.715731, 0.717870, 0.720003, 0.722128, + 0.724247, 0.726359, 0.728464, 0.730563, 0.732654, 0.734739, 0.736817, 0.738887, + 0.740951, 0.743008, 0.745058, 0.747101, 0.749136, 0.751165, 0.753187, 0.755201, + 0.757209, 0.759209, 0.761202, 0.763188, 0.765167, 0.767139, 0.769103, 0.771061, + 0.773010, 0.774953, 0.776888, 0.778817, 0.780737, 0.782651, 0.784557, 0.786455, + 0.788346, 0.790230, 0.792107, 0.793975, 0.795837, 0.797691, 0.799537, 0.801376, + 0.803208, 0.805031, 0.806848, 0.808656, 0.810457, 0.812251, 0.814036, 0.815814, + 0.817585, 0.819348, 0.821102, 0.822850, 0.824589, 0.826321, 0.828045, 0.829761, + 0.831470, 0.833170, 0.834863, 0.836548, 0.838225, 0.839894, 0.841555, 0.843208, + 0.844854, 0.846491, 0.848120, 0.849742, 0.851355, 0.852961, 0.854558, 0.856147, + 0.857729, 0.859302, 0.860867, 0.862424, 0.863973, 0.865514, 0.867046, 0.868571, + 0.870087, 0.871595, 0.873095, 0.874587, 0.876070, 0.877545, 0.879012, 0.880471, + 0.881921, 0.883363, 0.884797, 0.886223, 0.887640, 0.889048, 0.890449, 0.891841, + 0.893224, 0.894599, 0.895966, 0.897325, 0.898674, 0.900016, 0.901349, 0.902673, + 0.903989, 0.905297, 0.906596, 0.907886, 0.909168, 0.910441, 0.911706, 0.912962, + 0.914210, 0.915449, 0.916679, 0.917901, 0.919114, 0.920318, 0.921514, 0.922701, + 0.923880, 0.925049, 0.926210, 0.927363, 0.928506, 0.929641, 0.930767, 0.931884, + 0.932993, 0.934093, 0.935184, 0.936266, 0.937339, 0.938404, 0.939459, 0.940506, + 0.941544, 0.942573, 0.943593, 0.944605, 0.945607, 0.946601, 0.947586, 0.948561, + 0.949528, 0.950486, 0.951435, 0.952375, 0.953306, 0.954228, 0.955141, 0.956045, + 0.956940, 0.957826, 0.958703, 0.959572, 0.960431, 0.961280, 0.962121, 0.962953, + 0.963776, 0.964590, 0.965394, 0.966190, 0.966976, 0.967754, 0.968522, 0.969281, + 0.970031, 0.970772, 0.971504, 0.972227, 0.972940, 0.973644, 0.974339, 0.975025, + 0.975702, 0.976370, 0.977028, 0.977677, 0.978317, 0.978948, 0.979570, 0.980182, + 0.980785, 0.981379, 0.981964, 0.982539, 0.983105, 0.983662, 0.984210, 0.984748, + 0.985278, 0.985798, 0.986308, 0.986809, 0.987301, 0.987784, 0.988258, 0.988722, + 0.989177, 0.989622, 0.990058, 0.990485, 0.990903, 0.991311, 0.991710, 0.992099, + 0.992480, 0.992850, 0.993212, 0.993564, 0.993907, 0.994240, 0.994565, 0.994879, + 0.995185, 0.995481, 0.995767, 0.996045, 0.996313, 0.996571, 0.996820, 0.997060, + 0.997290, 0.997511, 0.997723, 0.997925, 0.998118, 0.998302, 0.998476, 0.998640, + 0.998795, 0.998941, 0.999078, 0.999205, 0.999322, 0.999431, 0.999529, 0.999619, + 0.999699, 0.999769, 0.999831, 0.999882, 0.999925, 0.999958, 0.999981, 0.999995, + 0.000000, -0.003068, -0.006136, -0.009204, -0.012272, -0.015339, -0.018407, -0.021474, + -0.024541, -0.027608, -0.030675, -0.033741, -0.036807, -0.039873, -0.042938, -0.046003, + -0.049068, -0.052132, -0.055195, -0.058258, -0.061321, -0.064383, -0.067444, -0.070505, + -0.073565, -0.076624, -0.079682, -0.082740, -0.085797, -0.088854, -0.091909, -0.094963, + -0.098017, -0.101070, -0.104122, -0.107172, -0.110222, -0.113271, -0.116319, -0.119365, + -0.122411, -0.125455, -0.128498, -0.131540, -0.134581, -0.137620, -0.140658, -0.143695, + -0.146730, -0.149765, -0.152797, -0.155828, -0.158858, -0.161886, -0.164913, -0.167938, + -0.170962, -0.173984, -0.177004, -0.180023, -0.183040, -0.186055, -0.189069, -0.192080, + -0.195090, -0.198098, -0.201105, -0.204109, -0.207111, -0.210112, -0.213110, -0.216107, + -0.219101, -0.222094, -0.225084, -0.228072, -0.231058, -0.234042, -0.237024, -0.240003, + -0.242980, -0.245955, -0.248928, -0.251898, -0.254866, -0.257831, -0.260794, -0.263755, + -0.266713, -0.269668, -0.272621, -0.275572, -0.278520, -0.281465, -0.284408, -0.287347, + -0.290285, -0.293219, -0.296151, -0.299080, -0.302006, -0.304929, -0.307850, -0.310767, + -0.313682, -0.316593, -0.319502, -0.322408, -0.325310, -0.328210, -0.331106, -0.334000, + -0.336890, -0.339777, -0.342661, -0.345541, -0.348419, -0.351293, -0.354164, -0.357031, + -0.359895, -0.362756, -0.365613, -0.368467, -0.371317, -0.374164, -0.377007, -0.379847, + -0.382683, -0.385516, -0.388345, -0.391170, -0.393992, -0.396810, -0.399624, -0.402435, + -0.405241, -0.408044, -0.410843, -0.413638, -0.416430, -0.419217, -0.422000, -0.424780, + -0.427555, -0.430326, -0.433094, -0.435857, -0.438616, -0.441371, -0.444122, -0.446869, + -0.449611, -0.452350, -0.455084, -0.457813, -0.460539, -0.463260, -0.465977, -0.468689, + -0.471397, -0.474100, -0.476799, -0.479494, -0.482184, -0.484869, -0.487550, -0.490226, + -0.492898, -0.495565, -0.498228, -0.500885, -0.503538, -0.506187, -0.508830, -0.511469, + -0.514103, -0.516732, -0.519356, -0.521975, -0.524590, -0.527199, -0.529804, -0.532403, + -0.534998, -0.537587, -0.540171, -0.542751, -0.545325, -0.547894, -0.550458, -0.553017, + -0.555570, -0.558119, -0.560662, -0.563199, -0.565732, -0.568259, -0.570781, -0.573297, + -0.575808, -0.578314, -0.580814, -0.583309, -0.585798, -0.588282, -0.590760, -0.593232, + -0.595699, -0.598161, -0.600616, -0.603067, -0.605511, -0.607950, -0.610383, -0.612810, + -0.615232, -0.617647, -0.620057, -0.622461, -0.624860, -0.627252, -0.629638, -0.632019, + -0.634393, -0.636762, -0.639124, -0.641481, -0.643832, -0.646176, -0.648514, -0.650847, + -0.653173, -0.655493, -0.657807, -0.660114, -0.662416, -0.664711, -0.667000, -0.669283, + -0.671559, -0.673829, -0.676093, -0.678350, -0.680601, -0.682846, -0.685084, -0.687315, + -0.689541, -0.691759, -0.693971, -0.696177, -0.698376, -0.700569, -0.702755, -0.704934, + -0.707107, -0.709273, -0.711432, -0.713585, -0.715731, -0.717870, -0.720003, -0.722128, + -0.724247, -0.726359, -0.728464, -0.730563, -0.732654, -0.734739, -0.736817, -0.738887, + -0.740951, -0.743008, -0.745058, -0.747101, -0.749136, -0.751165, -0.753187, -0.755201, + -0.757209, -0.759209, -0.761202, -0.763188, -0.765167, -0.767139, -0.769103, -0.771061, + -0.773010, -0.774953, -0.776888, -0.778817, -0.780737, -0.782651, -0.784557, -0.786455, + -0.788346, -0.790230, -0.792107, -0.793975, -0.795837, -0.797691, -0.799537, -0.801376, + -0.803208, -0.805031, -0.806848, -0.808656, -0.810457, -0.812251, -0.814036, -0.815814, + -0.817585, -0.819348, -0.821102, -0.822850, -0.824589, -0.826321, -0.828045, -0.829761, + -0.831470, -0.833170, -0.834863, -0.836548, -0.838225, -0.839894, -0.841555, -0.843208, + -0.844854, -0.846491, -0.848120, -0.849742, -0.851355, -0.852961, -0.854558, -0.856147, + -0.857729, -0.859302, -0.860867, -0.862424, -0.863973, -0.865514, -0.867046, -0.868571, + -0.870087, -0.871595, -0.873095, -0.874587, -0.876070, -0.877545, -0.879012, -0.880471, + -0.881921, -0.883363, -0.884797, -0.886223, -0.887640, -0.889048, -0.890449, -0.891841, + -0.893224, -0.894599, -0.895966, -0.897325, -0.898674, -0.900016, -0.901349, -0.902673, + -0.903989, -0.905297, -0.906596, -0.907886, -0.909168, -0.910441, -0.911706, -0.912962, + -0.914210, -0.915449, -0.916679, -0.917901, -0.919114, -0.920318, -0.921514, -0.922701, + -0.923880, -0.925049, -0.926210, -0.927363, -0.928506, -0.929641, -0.930767, -0.931884, + -0.932993, -0.934093, -0.935184, -0.936266, -0.937339, -0.938404, -0.939459, -0.940506, + -0.941544, -0.942573, -0.943593, -0.944605, -0.945607, -0.946601, -0.947586, -0.948561, + -0.949528, -0.950486, -0.951435, -0.952375, -0.953306, -0.954228, -0.955141, -0.956045, + -0.956940, -0.957826, -0.958703, -0.959572, -0.960431, -0.961280, -0.962121, -0.962953, + -0.963776, -0.964590, -0.965394, -0.966190, -0.966976, -0.967754, -0.968522, -0.969281, + -0.970031, -0.970772, -0.971504, -0.972227, -0.972940, -0.973644, -0.974339, -0.975025, + -0.975702, -0.976370, -0.977028, -0.977677, -0.978317, -0.978948, -0.979570, -0.980182, + -0.980785, -0.981379, -0.981964, -0.982539, -0.983105, -0.983662, -0.984210, -0.984748, + -0.985278, -0.985798, -0.986308, -0.986809, -0.987301, -0.987784, -0.988258, -0.988722, + -0.989177, -0.989622, -0.990058, -0.990485, -0.990903, -0.991311, -0.991710, -0.992099, + -0.992480, -0.992850, -0.993212, -0.993564, -0.993907, -0.994240, -0.994565, -0.994879, + -0.995185, -0.995481, -0.995767, -0.996045, -0.996313, -0.996571, -0.996820, -0.997060, + -0.997290, -0.997511, -0.997723, -0.997925, -0.998118, -0.998302, -0.998476, -0.998640, + -0.998795, -0.998941, -0.999078, -0.999205, -0.999322, -0.999431, -0.999529, -0.999619, + -0.999699, -0.999769, -0.999831, -0.999882, -0.999925, -0.999958, -0.999981, -0.999995 +}; + +static const float sinTable4096[2048] = { + 0.000000, 0.001534, 0.003068, 0.004602, 0.006136, 0.007670, 0.009204, 0.010738, + 0.012272, 0.013805, 0.015339, 0.016873, 0.018407, 0.019940, 0.021474, 0.023008, + 0.024541, 0.026075, 0.027608, 0.029142, 0.030675, 0.032208, 0.033741, 0.035274, + 0.036807, 0.038340, 0.039873, 0.041406, 0.042938, 0.044471, 0.046003, 0.047535, + 0.049068, 0.050600, 0.052132, 0.053664, 0.055195, 0.056727, 0.058258, 0.059790, + 0.061321, 0.062852, 0.064383, 0.065913, 0.067444, 0.068974, 0.070505, 0.072035, + 0.073565, 0.075094, 0.076624, 0.078153, 0.079682, 0.081211, 0.082740, 0.084269, + 0.085797, 0.087326, 0.088854, 0.090381, 0.091909, 0.093436, 0.094963, 0.096490, + 0.098017, 0.099544, 0.101070, 0.102596, 0.104122, 0.105647, 0.107172, 0.108697, + 0.110222, 0.111747, 0.113271, 0.114795, 0.116319, 0.117842, 0.119365, 0.120888, + 0.122411, 0.123933, 0.125455, 0.126977, 0.128498, 0.130019, 0.131540, 0.133061, + 0.134581, 0.136101, 0.137620, 0.139139, 0.140658, 0.142177, 0.143695, 0.145213, + 0.146730, 0.148248, 0.149765, 0.151281, 0.152797, 0.154313, 0.155828, 0.157343, + 0.158858, 0.160372, 0.161886, 0.163400, 0.164913, 0.166426, 0.167938, 0.169450, + 0.170962, 0.172473, 0.173984, 0.175494, 0.177004, 0.178514, 0.180023, 0.181532, + 0.183040, 0.184548, 0.186055, 0.187562, 0.189069, 0.190575, 0.192080, 0.193586, + 0.195090, 0.196595, 0.198098, 0.199602, 0.201105, 0.202607, 0.204109, 0.205610, + 0.207111, 0.208612, 0.210112, 0.211611, 0.213110, 0.214609, 0.216107, 0.217604, + 0.219101, 0.220598, 0.222094, 0.223589, 0.225084, 0.226578, 0.228072, 0.229565, + 0.231058, 0.232550, 0.234042, 0.235533, 0.237024, 0.238514, 0.240003, 0.241492, + 0.242980, 0.244468, 0.245955, 0.247442, 0.248928, 0.250413, 0.251898, 0.253382, + 0.254866, 0.256349, 0.257831, 0.259313, 0.260794, 0.262275, 0.263755, 0.265234, + 0.266713, 0.268191, 0.269668, 0.271145, 0.272621, 0.274097, 0.275572, 0.277046, + 0.278520, 0.279993, 0.281465, 0.282937, 0.284408, 0.285878, 0.287347, 0.288816, + 0.290285, 0.291752, 0.293219, 0.294685, 0.296151, 0.297616, 0.299080, 0.300543, + 0.302006, 0.303468, 0.304929, 0.306390, 0.307850, 0.309309, 0.310767, 0.312225, + 0.313682, 0.315138, 0.316593, 0.318048, 0.319502, 0.320955, 0.322408, 0.323859, + 0.325310, 0.326760, 0.328210, 0.329658, 0.331106, 0.332553, 0.334000, 0.335445, + 0.336890, 0.338334, 0.339777, 0.341219, 0.342661, 0.344101, 0.345541, 0.346980, + 0.348419, 0.349856, 0.351293, 0.352729, 0.354164, 0.355598, 0.357031, 0.358463, + 0.359895, 0.361326, 0.362756, 0.364185, 0.365613, 0.367040, 0.368467, 0.369892, + 0.371317, 0.372741, 0.374164, 0.375586, 0.377007, 0.378428, 0.379847, 0.381266, + 0.382683, 0.384100, 0.385516, 0.386931, 0.388345, 0.389758, 0.391170, 0.392582, + 0.393992, 0.395401, 0.396810, 0.398218, 0.399624, 0.401030, 0.402435, 0.403838, + 0.405241, 0.406643, 0.408044, 0.409444, 0.410843, 0.412241, 0.413638, 0.415034, + 0.416430, 0.417824, 0.419217, 0.420609, 0.422000, 0.423390, 0.424780, 0.426168, + 0.427555, 0.428941, 0.430326, 0.431711, 0.433094, 0.434476, 0.435857, 0.437237, + 0.438616, 0.439994, 0.441371, 0.442747, 0.444122, 0.445496, 0.446869, 0.448241, + 0.449611, 0.450981, 0.452350, 0.453717, 0.455084, 0.456449, 0.457813, 0.459177, + 0.460539, 0.461900, 0.463260, 0.464619, 0.465977, 0.467333, 0.468689, 0.470043, + 0.471397, 0.472749, 0.474100, 0.475450, 0.476799, 0.478147, 0.479494, 0.480839, + 0.482184, 0.483527, 0.484869, 0.486210, 0.487550, 0.488889, 0.490226, 0.491563, + 0.492898, 0.494232, 0.495565, 0.496897, 0.498228, 0.499557, 0.500885, 0.502212, + 0.503538, 0.504863, 0.506187, 0.507509, 0.508830, 0.510150, 0.511469, 0.512786, + 0.514103, 0.515418, 0.516732, 0.518045, 0.519356, 0.520666, 0.521975, 0.523283, + 0.524590, 0.525895, 0.527199, 0.528502, 0.529804, 0.531104, 0.532403, 0.533701, + 0.534998, 0.536293, 0.537587, 0.538880, 0.540171, 0.541462, 0.542751, 0.544039, + 0.545325, 0.546610, 0.547894, 0.549177, 0.550458, 0.551738, 0.553017, 0.554294, + 0.555570, 0.556845, 0.558119, 0.559391, 0.560662, 0.561931, 0.563199, 0.564466, + 0.565732, 0.566996, 0.568259, 0.569521, 0.570781, 0.572040, 0.573297, 0.574553, + 0.575808, 0.577062, 0.578314, 0.579565, 0.580814, 0.582062, 0.583309, 0.584554, + 0.585798, 0.587040, 0.588282, 0.589521, 0.590760, 0.591997, 0.593232, 0.594467, + 0.595699, 0.596931, 0.598161, 0.599389, 0.600616, 0.601842, 0.603067, 0.604290, + 0.605511, 0.606731, 0.607950, 0.609167, 0.610383, 0.611597, 0.612810, 0.614022, + 0.615232, 0.616440, 0.617647, 0.618853, 0.620057, 0.621260, 0.622461, 0.623661, + 0.624860, 0.626056, 0.627252, 0.628446, 0.629638, 0.630829, 0.632019, 0.633207, + 0.634393, 0.635578, 0.636762, 0.637944, 0.639124, 0.640303, 0.641481, 0.642657, + 0.643832, 0.645005, 0.646176, 0.647346, 0.648514, 0.649681, 0.650847, 0.652011, + 0.653173, 0.654334, 0.655493, 0.656651, 0.657807, 0.658961, 0.660114, 0.661266, + 0.662416, 0.663564, 0.664711, 0.665856, 0.667000, 0.668142, 0.669283, 0.670422, + 0.671559, 0.672695, 0.673829, 0.674962, 0.676093, 0.677222, 0.678350, 0.679476, + 0.680601, 0.681724, 0.682846, 0.683965, 0.685084, 0.686200, 0.687315, 0.688429, + 0.689541, 0.690651, 0.691759, 0.692866, 0.693971, 0.695075, 0.696177, 0.697277, + 0.698376, 0.699473, 0.700569, 0.701663, 0.702755, 0.703845, 0.704934, 0.706021, + 0.707107, 0.708191, 0.709273, 0.710353, 0.711432, 0.712509, 0.713585, 0.714659, + 0.715731, 0.716801, 0.717870, 0.718937, 0.720003, 0.721066, 0.722128, 0.723188, + 0.724247, 0.725304, 0.726359, 0.727413, 0.728464, 0.729514, 0.730563, 0.731609, + 0.732654, 0.733697, 0.734739, 0.735779, 0.736817, 0.737853, 0.738887, 0.739920, + 0.740951, 0.741980, 0.743008, 0.744034, 0.745058, 0.746080, 0.747101, 0.748119, + 0.749136, 0.750152, 0.751165, 0.752177, 0.753187, 0.754195, 0.755201, 0.756206, + 0.757209, 0.758210, 0.759209, 0.760207, 0.761202, 0.762196, 0.763188, 0.764179, + 0.765167, 0.766154, 0.767139, 0.768122, 0.769103, 0.770083, 0.771061, 0.772036, + 0.773010, 0.773983, 0.774953, 0.775922, 0.776888, 0.777853, 0.778817, 0.779778, + 0.780737, 0.781695, 0.782651, 0.783605, 0.784557, 0.785507, 0.786455, 0.787402, + 0.788346, 0.789289, 0.790230, 0.791169, 0.792107, 0.793042, 0.793975, 0.794907, + 0.795837, 0.796765, 0.797691, 0.798615, 0.799537, 0.800458, 0.801376, 0.802293, + 0.803208, 0.804120, 0.805031, 0.805940, 0.806848, 0.807753, 0.808656, 0.809558, + 0.810457, 0.811355, 0.812251, 0.813144, 0.814036, 0.814926, 0.815814, 0.816701, + 0.817585, 0.818467, 0.819348, 0.820226, 0.821102, 0.821977, 0.822850, 0.823721, + 0.824589, 0.825456, 0.826321, 0.827184, 0.828045, 0.828904, 0.829761, 0.830616, + 0.831470, 0.832321, 0.833170, 0.834018, 0.834863, 0.835706, 0.836548, 0.837387, + 0.838225, 0.839060, 0.839894, 0.840725, 0.841555, 0.842383, 0.843208, 0.844032, + 0.844854, 0.845673, 0.846491, 0.847307, 0.848120, 0.848932, 0.849742, 0.850549, + 0.851355, 0.852159, 0.852961, 0.853760, 0.854558, 0.855354, 0.856147, 0.856939, + 0.857729, 0.858516, 0.859302, 0.860085, 0.860867, 0.861646, 0.862424, 0.863199, + 0.863973, 0.864744, 0.865514, 0.866281, 0.867046, 0.867809, 0.868571, 0.869330, + 0.870087, 0.870842, 0.871595, 0.872346, 0.873095, 0.873842, 0.874587, 0.875329, + 0.876070, 0.876809, 0.877545, 0.878280, 0.879012, 0.879743, 0.880471, 0.881197, + 0.881921, 0.882643, 0.883363, 0.884081, 0.884797, 0.885511, 0.886223, 0.886932, + 0.887640, 0.888345, 0.889048, 0.889750, 0.890449, 0.891146, 0.891841, 0.892534, + 0.893224, 0.893913, 0.894599, 0.895284, 0.895966, 0.896646, 0.897325, 0.898001, + 0.898674, 0.899346, 0.900016, 0.900683, 0.901349, 0.902012, 0.902673, 0.903332, + 0.903989, 0.904644, 0.905297, 0.905947, 0.906596, 0.907242, 0.907886, 0.908528, + 0.909168, 0.909806, 0.910441, 0.911075, 0.911706, 0.912335, 0.912962, 0.913587, + 0.914210, 0.914830, 0.915449, 0.916065, 0.916679, 0.917291, 0.917901, 0.918508, + 0.919114, 0.919717, 0.920318, 0.920917, 0.921514, 0.922109, 0.922701, 0.923291, + 0.923880, 0.924465, 0.925049, 0.925631, 0.926210, 0.926787, 0.927363, 0.927935, + 0.928506, 0.929075, 0.929641, 0.930205, 0.930767, 0.931327, 0.931884, 0.932440, + 0.932993, 0.933544, 0.934093, 0.934639, 0.935184, 0.935726, 0.936266, 0.936803, + 0.937339, 0.937872, 0.938404, 0.938932, 0.939459, 0.939984, 0.940506, 0.941026, + 0.941544, 0.942060, 0.942573, 0.943084, 0.943593, 0.944100, 0.944605, 0.945107, + 0.945607, 0.946105, 0.946601, 0.947094, 0.947586, 0.948075, 0.948561, 0.949046, + 0.949528, 0.950008, 0.950486, 0.950962, 0.951435, 0.951906, 0.952375, 0.952842, + 0.953306, 0.953768, 0.954228, 0.954686, 0.955141, 0.955594, 0.956045, 0.956494, + 0.956940, 0.957385, 0.957826, 0.958266, 0.958703, 0.959139, 0.959572, 0.960002, + 0.960431, 0.960857, 0.961280, 0.961702, 0.962121, 0.962538, 0.962953, 0.963366, + 0.963776, 0.964184, 0.964590, 0.964993, 0.965394, 0.965793, 0.966190, 0.966584, + 0.966976, 0.967366, 0.967754, 0.968139, 0.968522, 0.968903, 0.969281, 0.969657, + 0.970031, 0.970403, 0.970772, 0.971139, 0.971504, 0.971866, 0.972227, 0.972584, + 0.972940, 0.973293, 0.973644, 0.973993, 0.974339, 0.974684, 0.975025, 0.975365, + 0.975702, 0.976037, 0.976370, 0.976700, 0.977028, 0.977354, 0.977677, 0.977998, + 0.978317, 0.978634, 0.978948, 0.979260, 0.979570, 0.979877, 0.980182, 0.980485, + 0.980785, 0.981083, 0.981379, 0.981673, 0.981964, 0.982253, 0.982539, 0.982824, + 0.983105, 0.983385, 0.983662, 0.983937, 0.984210, 0.984480, 0.984748, 0.985014, + 0.985278, 0.985539, 0.985798, 0.986054, 0.986308, 0.986560, 0.986809, 0.987057, + 0.987301, 0.987544, 0.987784, 0.988022, 0.988258, 0.988491, 0.988722, 0.988950, + 0.989177, 0.989400, 0.989622, 0.989841, 0.990058, 0.990273, 0.990485, 0.990695, + 0.990903, 0.991108, 0.991311, 0.991511, 0.991710, 0.991906, 0.992099, 0.992291, + 0.992480, 0.992666, 0.992850, 0.993032, 0.993212, 0.993389, 0.993564, 0.993737, + 0.993907, 0.994075, 0.994240, 0.994404, 0.994565, 0.994723, 0.994879, 0.995033, + 0.995185, 0.995334, 0.995481, 0.995625, 0.995767, 0.995907, 0.996045, 0.996180, + 0.996313, 0.996443, 0.996571, 0.996697, 0.996820, 0.996941, 0.997060, 0.997176, + 0.997290, 0.997402, 0.997511, 0.997618, 0.997723, 0.997825, 0.997925, 0.998023, + 0.998118, 0.998211, 0.998302, 0.998390, 0.998476, 0.998559, 0.998640, 0.998719, + 0.998795, 0.998870, 0.998941, 0.999011, 0.999078, 0.999142, 0.999205, 0.999265, + 0.999322, 0.999378, 0.999431, 0.999481, 0.999529, 0.999575, 0.999619, 0.999660, + 0.999699, 0.999735, 0.999769, 0.999801, 0.999831, 0.999858, 0.999882, 0.999905, + 0.999925, 0.999942, 0.999958, 0.999971, 0.999981, 0.999989, 0.999995, 0.999999, + 0.000000, -0.001534, -0.003068, -0.004602, -0.006136, -0.007670, -0.009204, -0.010738, + -0.012272, -0.013805, -0.015339, -0.016873, -0.018407, -0.019940, -0.021474, -0.023008, + -0.024541, -0.026075, -0.027608, -0.029142, -0.030675, -0.032208, -0.033741, -0.035274, + -0.036807, -0.038340, -0.039873, -0.041406, -0.042938, -0.044471, -0.046003, -0.047535, + -0.049068, -0.050600, -0.052132, -0.053664, -0.055195, -0.056727, -0.058258, -0.059790, + -0.061321, -0.062852, -0.064383, -0.065913, -0.067444, -0.068974, -0.070505, -0.072035, + -0.073565, -0.075094, -0.076624, -0.078153, -0.079682, -0.081211, -0.082740, -0.084269, + -0.085797, -0.087326, -0.088854, -0.090381, -0.091909, -0.093436, -0.094963, -0.096490, + -0.098017, -0.099544, -0.101070, -0.102596, -0.104122, -0.105647, -0.107172, -0.108697, + -0.110222, -0.111747, -0.113271, -0.114795, -0.116319, -0.117842, -0.119365, -0.120888, + -0.122411, -0.123933, -0.125455, -0.126977, -0.128498, -0.130019, -0.131540, -0.133061, + -0.134581, -0.136101, -0.137620, -0.139139, -0.140658, -0.142177, -0.143695, -0.145213, + -0.146730, -0.148248, -0.149765, -0.151281, -0.152797, -0.154313, -0.155828, -0.157343, + -0.158858, -0.160372, -0.161886, -0.163400, -0.164913, -0.166426, -0.167938, -0.169450, + -0.170962, -0.172473, -0.173984, -0.175494, -0.177004, -0.178514, -0.180023, -0.181532, + -0.183040, -0.184548, -0.186055, -0.187562, -0.189069, -0.190575, -0.192080, -0.193586, + -0.195090, -0.196595, -0.198098, -0.199602, -0.201105, -0.202607, -0.204109, -0.205610, + -0.207111, -0.208612, -0.210112, -0.211611, -0.213110, -0.214609, -0.216107, -0.217604, + -0.219101, -0.220598, -0.222094, -0.223589, -0.225084, -0.226578, -0.228072, -0.229565, + -0.231058, -0.232550, -0.234042, -0.235533, -0.237024, -0.238514, -0.240003, -0.241492, + -0.242980, -0.244468, -0.245955, -0.247442, -0.248928, -0.250413, -0.251898, -0.253382, + -0.254866, -0.256349, -0.257831, -0.259313, -0.260794, -0.262275, -0.263755, -0.265234, + -0.266713, -0.268191, -0.269668, -0.271145, -0.272621, -0.274097, -0.275572, -0.277046, + -0.278520, -0.279993, -0.281465, -0.282937, -0.284408, -0.285878, -0.287347, -0.288816, + -0.290285, -0.291752, -0.293219, -0.294685, -0.296151, -0.297616, -0.299080, -0.300543, + -0.302006, -0.303468, -0.304929, -0.306390, -0.307850, -0.309309, -0.310767, -0.312225, + -0.313682, -0.315138, -0.316593, -0.318048, -0.319502, -0.320955, -0.322408, -0.323859, + -0.325310, -0.326760, -0.328210, -0.329658, -0.331106, -0.332553, -0.334000, -0.335445, + -0.336890, -0.338334, -0.339777, -0.341219, -0.342661, -0.344101, -0.345541, -0.346980, + -0.348419, -0.349856, -0.351293, -0.352729, -0.354164, -0.355598, -0.357031, -0.358463, + -0.359895, -0.361326, -0.362756, -0.364185, -0.365613, -0.367040, -0.368467, -0.369892, + -0.371317, -0.372741, -0.374164, -0.375586, -0.377007, -0.378428, -0.379847, -0.381266, + -0.382683, -0.384100, -0.385516, -0.386931, -0.388345, -0.389758, -0.391170, -0.392582, + -0.393992, -0.395401, -0.396810, -0.398218, -0.399624, -0.401030, -0.402435, -0.403838, + -0.405241, -0.406643, -0.408044, -0.409444, -0.410843, -0.412241, -0.413638, -0.415034, + -0.416430, -0.417824, -0.419217, -0.420609, -0.422000, -0.423390, -0.424780, -0.426168, + -0.427555, -0.428941, -0.430326, -0.431711, -0.433094, -0.434476, -0.435857, -0.437237, + -0.438616, -0.439994, -0.441371, -0.442747, -0.444122, -0.445496, -0.446869, -0.448241, + -0.449611, -0.450981, -0.452350, -0.453717, -0.455084, -0.456449, -0.457813, -0.459177, + -0.460539, -0.461900, -0.463260, -0.464619, -0.465977, -0.467333, -0.468689, -0.470043, + -0.471397, -0.472749, -0.474100, -0.475450, -0.476799, -0.478147, -0.479494, -0.480839, + -0.482184, -0.483527, -0.484869, -0.486210, -0.487550, -0.488889, -0.490226, -0.491563, + -0.492898, -0.494232, -0.495565, -0.496897, -0.498228, -0.499557, -0.500885, -0.502212, + -0.503538, -0.504863, -0.506187, -0.507509, -0.508830, -0.510150, -0.511469, -0.512786, + -0.514103, -0.515418, -0.516732, -0.518045, -0.519356, -0.520666, -0.521975, -0.523283, + -0.524590, -0.525895, -0.527199, -0.528502, -0.529804, -0.531104, -0.532403, -0.533701, + -0.534998, -0.536293, -0.537587, -0.538880, -0.540171, -0.541462, -0.542751, -0.544039, + -0.545325, -0.546610, -0.547894, -0.549177, -0.550458, -0.551738, -0.553017, -0.554294, + -0.555570, -0.556845, -0.558119, -0.559391, -0.560662, -0.561931, -0.563199, -0.564466, + -0.565732, -0.566996, -0.568259, -0.569521, -0.570781, -0.572040, -0.573297, -0.574553, + -0.575808, -0.577062, -0.578314, -0.579565, -0.580814, -0.582062, -0.583309, -0.584554, + -0.585798, -0.587040, -0.588282, -0.589521, -0.590760, -0.591997, -0.593232, -0.594467, + -0.595699, -0.596931, -0.598161, -0.599389, -0.600616, -0.601842, -0.603067, -0.604290, + -0.605511, -0.606731, -0.607950, -0.609167, -0.610383, -0.611597, -0.612810, -0.614022, + -0.615232, -0.616440, -0.617647, -0.618853, -0.620057, -0.621260, -0.622461, -0.623661, + -0.624860, -0.626056, -0.627252, -0.628446, -0.629638, -0.630829, -0.632019, -0.633207, + -0.634393, -0.635578, -0.636762, -0.637944, -0.639124, -0.640303, -0.641481, -0.642657, + -0.643832, -0.645005, -0.646176, -0.647346, -0.648514, -0.649681, -0.650847, -0.652011, + -0.653173, -0.654334, -0.655493, -0.656651, -0.657807, -0.658961, -0.660114, -0.661266, + -0.662416, -0.663564, -0.664711, -0.665856, -0.667000, -0.668142, -0.669283, -0.670422, + -0.671559, -0.672695, -0.673829, -0.674962, -0.676093, -0.677222, -0.678350, -0.679476, + -0.680601, -0.681724, -0.682846, -0.683965, -0.685084, -0.686200, -0.687315, -0.688429, + -0.689541, -0.690651, -0.691759, -0.692866, -0.693971, -0.695075, -0.696177, -0.697277, + -0.698376, -0.699473, -0.700569, -0.701663, -0.702755, -0.703845, -0.704934, -0.706021, + -0.707107, -0.708191, -0.709273, -0.710353, -0.711432, -0.712509, -0.713585, -0.714659, + -0.715731, -0.716801, -0.717870, -0.718937, -0.720003, -0.721066, -0.722128, -0.723188, + -0.724247, -0.725304, -0.726359, -0.727413, -0.728464, -0.729514, -0.730563, -0.731609, + -0.732654, -0.733697, -0.734739, -0.735779, -0.736817, -0.737853, -0.738887, -0.739920, + -0.740951, -0.741980, -0.743008, -0.744034, -0.745058, -0.746080, -0.747101, -0.748119, + -0.749136, -0.750152, -0.751165, -0.752177, -0.753187, -0.754195, -0.755201, -0.756206, + -0.757209, -0.758210, -0.759209, -0.760207, -0.761202, -0.762196, -0.763188, -0.764179, + -0.765167, -0.766154, -0.767139, -0.768122, -0.769103, -0.770083, -0.771061, -0.772036, + -0.773010, -0.773983, -0.774953, -0.775922, -0.776888, -0.777853, -0.778817, -0.779778, + -0.780737, -0.781695, -0.782651, -0.783605, -0.784557, -0.785507, -0.786455, -0.787402, + -0.788346, -0.789289, -0.790230, -0.791169, -0.792107, -0.793042, -0.793975, -0.794907, + -0.795837, -0.796765, -0.797691, -0.798615, -0.799537, -0.800458, -0.801376, -0.802293, + -0.803208, -0.804120, -0.805031, -0.805940, -0.806848, -0.807753, -0.808656, -0.809558, + -0.810457, -0.811355, -0.812251, -0.813144, -0.814036, -0.814926, -0.815814, -0.816701, + -0.817585, -0.818467, -0.819348, -0.820226, -0.821102, -0.821977, -0.822850, -0.823721, + -0.824589, -0.825456, -0.826321, -0.827184, -0.828045, -0.828904, -0.829761, -0.830616, + -0.831470, -0.832321, -0.833170, -0.834018, -0.834863, -0.835706, -0.836548, -0.837387, + -0.838225, -0.839060, -0.839894, -0.840725, -0.841555, -0.842383, -0.843208, -0.844032, + -0.844854, -0.845673, -0.846491, -0.847307, -0.848120, -0.848932, -0.849742, -0.850549, + -0.851355, -0.852159, -0.852961, -0.853760, -0.854558, -0.855354, -0.856147, -0.856939, + -0.857729, -0.858516, -0.859302, -0.860085, -0.860867, -0.861646, -0.862424, -0.863199, + -0.863973, -0.864744, -0.865514, -0.866281, -0.867046, -0.867809, -0.868571, -0.869330, + -0.870087, -0.870842, -0.871595, -0.872346, -0.873095, -0.873842, -0.874587, -0.875329, + -0.876070, -0.876809, -0.877545, -0.878280, -0.879012, -0.879743, -0.880471, -0.881197, + -0.881921, -0.882643, -0.883363, -0.884081, -0.884797, -0.885511, -0.886223, -0.886932, + -0.887640, -0.888345, -0.889048, -0.889750, -0.890449, -0.891146, -0.891841, -0.892534, + -0.893224, -0.893913, -0.894599, -0.895284, -0.895966, -0.896646, -0.897325, -0.898001, + -0.898674, -0.899346, -0.900016, -0.900683, -0.901349, -0.902012, -0.902673, -0.903332, + -0.903989, -0.904644, -0.905297, -0.905947, -0.906596, -0.907242, -0.907886, -0.908528, + -0.909168, -0.909806, -0.910441, -0.911075, -0.911706, -0.912335, -0.912962, -0.913587, + -0.914210, -0.914830, -0.915449, -0.916065, -0.916679, -0.917291, -0.917901, -0.918508, + -0.919114, -0.919717, -0.920318, -0.920917, -0.921514, -0.922109, -0.922701, -0.923291, + -0.923880, -0.924465, -0.925049, -0.925631, -0.926210, -0.926787, -0.927363, -0.927935, + -0.928506, -0.929075, -0.929641, -0.930205, -0.930767, -0.931327, -0.931884, -0.932440, + -0.932993, -0.933544, -0.934093, -0.934639, -0.935184, -0.935726, -0.936266, -0.936803, + -0.937339, -0.937872, -0.938404, -0.938932, -0.939459, -0.939984, -0.940506, -0.941026, + -0.941544, -0.942060, -0.942573, -0.943084, -0.943593, -0.944100, -0.944605, -0.945107, + -0.945607, -0.946105, -0.946601, -0.947094, -0.947586, -0.948075, -0.948561, -0.949046, + -0.949528, -0.950008, -0.950486, -0.950962, -0.951435, -0.951906, -0.952375, -0.952842, + -0.953306, -0.953768, -0.954228, -0.954686, -0.955141, -0.955594, -0.956045, -0.956494, + -0.956940, -0.957385, -0.957826, -0.958266, -0.958703, -0.959139, -0.959572, -0.960002, + -0.960431, -0.960857, -0.961280, -0.961702, -0.962121, -0.962538, -0.962953, -0.963366, + -0.963776, -0.964184, -0.964590, -0.964993, -0.965394, -0.965793, -0.966190, -0.966584, + -0.966976, -0.967366, -0.967754, -0.968139, -0.968522, -0.968903, -0.969281, -0.969657, + -0.970031, -0.970403, -0.970772, -0.971139, -0.971504, -0.971866, -0.972227, -0.972584, + -0.972940, -0.973293, -0.973644, -0.973993, -0.974339, -0.974684, -0.975025, -0.975365, + -0.975702, -0.976037, -0.976370, -0.976700, -0.977028, -0.977354, -0.977677, -0.977998, + -0.978317, -0.978634, -0.978948, -0.979260, -0.979570, -0.979877, -0.980182, -0.980485, + -0.980785, -0.981083, -0.981379, -0.981673, -0.981964, -0.982253, -0.982539, -0.982824, + -0.983105, -0.983385, -0.983662, -0.983937, -0.984210, -0.984480, -0.984748, -0.985014, + -0.985278, -0.985539, -0.985798, -0.986054, -0.986308, -0.986560, -0.986809, -0.987057, + -0.987301, -0.987544, -0.987784, -0.988022, -0.988258, -0.988491, -0.988722, -0.988950, + -0.989177, -0.989400, -0.989622, -0.989841, -0.990058, -0.990273, -0.990485, -0.990695, + -0.990903, -0.991108, -0.991311, -0.991511, -0.991710, -0.991906, -0.992099, -0.992291, + -0.992480, -0.992666, -0.992850, -0.993032, -0.993212, -0.993389, -0.993564, -0.993737, + -0.993907, -0.994075, -0.994240, -0.994404, -0.994565, -0.994723, -0.994879, -0.995033, + -0.995185, -0.995334, -0.995481, -0.995625, -0.995767, -0.995907, -0.996045, -0.996180, + -0.996313, -0.996443, -0.996571, -0.996697, -0.996820, -0.996941, -0.997060, -0.997176, + -0.997290, -0.997402, -0.997511, -0.997618, -0.997723, -0.997825, -0.997925, -0.998023, + -0.998118, -0.998211, -0.998302, -0.998390, -0.998476, -0.998559, -0.998640, -0.998719, + -0.998795, -0.998870, -0.998941, -0.999011, -0.999078, -0.999142, -0.999205, -0.999265, + -0.999322, -0.999378, -0.999431, -0.999481, -0.999529, -0.999575, -0.999619, -0.999660, + -0.999699, -0.999735, -0.999769, -0.999801, -0.999831, -0.999858, -0.999882, -0.999905, + -0.999925, -0.999942, -0.999958, -0.999971, -0.999981, -0.999989, -0.999995, -0.999999 +}; + +static const float sinTable8192[4096] = { + 0.000000, 0.000767, 0.001534, 0.002301, 0.003068, 0.003835, 0.004602, 0.005369, + 0.006136, 0.006903, 0.007670, 0.008437, 0.009204, 0.009971, 0.010738, 0.011505, + 0.012272, 0.013038, 0.013805, 0.014572, 0.015339, 0.016106, 0.016873, 0.017640, + 0.018407, 0.019174, 0.019940, 0.020707, 0.021474, 0.022241, 0.023008, 0.023774, + 0.024541, 0.025308, 0.026075, 0.026841, 0.027608, 0.028375, 0.029142, 0.029908, + 0.030675, 0.031441, 0.032208, 0.032975, 0.033741, 0.034508, 0.035274, 0.036041, + 0.036807, 0.037574, 0.038340, 0.039107, 0.039873, 0.040639, 0.041406, 0.042172, + 0.042938, 0.043705, 0.044471, 0.045237, 0.046003, 0.046769, 0.047535, 0.048302, + 0.049068, 0.049834, 0.050600, 0.051366, 0.052132, 0.052898, 0.053664, 0.054429, + 0.055195, 0.055961, 0.056727, 0.057493, 0.058258, 0.059024, 0.059790, 0.060555, + 0.061321, 0.062086, 0.062852, 0.063617, 0.064383, 0.065148, 0.065913, 0.066679, + 0.067444, 0.068209, 0.068974, 0.069739, 0.070505, 0.071270, 0.072035, 0.072800, + 0.073565, 0.074329, 0.075094, 0.075859, 0.076624, 0.077389, 0.078153, 0.078918, + 0.079682, 0.080447, 0.081211, 0.081976, 0.082740, 0.083505, 0.084269, 0.085033, + 0.085797, 0.086561, 0.087326, 0.088090, 0.088854, 0.089617, 0.090381, 0.091145, + 0.091909, 0.092673, 0.093436, 0.094200, 0.094963, 0.095727, 0.096490, 0.097254, + 0.098017, 0.098780, 0.099544, 0.100307, 0.101070, 0.101833, 0.102596, 0.103359, + 0.104122, 0.104884, 0.105647, 0.106410, 0.107172, 0.107935, 0.108697, 0.109460, + 0.110222, 0.110984, 0.111747, 0.112509, 0.113271, 0.114033, 0.114795, 0.115557, + 0.116319, 0.117080, 0.117842, 0.118604, 0.119365, 0.120127, 0.120888, 0.121649, + 0.122411, 0.123172, 0.123933, 0.124694, 0.125455, 0.126216, 0.126977, 0.127737, + 0.128498, 0.129259, 0.130019, 0.130780, 0.131540, 0.132300, 0.133061, 0.133821, + 0.134581, 0.135341, 0.136101, 0.136860, 0.137620, 0.138380, 0.139139, 0.139899, + 0.140658, 0.141418, 0.142177, 0.142936, 0.143695, 0.144454, 0.145213, 0.145972, + 0.146730, 0.147489, 0.148248, 0.149006, 0.149765, 0.150523, 0.151281, 0.152039, + 0.152797, 0.153555, 0.154313, 0.155071, 0.155828, 0.156586, 0.157343, 0.158101, + 0.158858, 0.159615, 0.160372, 0.161129, 0.161886, 0.162643, 0.163400, 0.164157, + 0.164913, 0.165670, 0.166426, 0.167182, 0.167938, 0.168694, 0.169450, 0.170206, + 0.170962, 0.171718, 0.172473, 0.173229, 0.173984, 0.174739, 0.175494, 0.176249, + 0.177004, 0.177759, 0.178514, 0.179268, 0.180023, 0.180777, 0.181532, 0.182286, + 0.183040, 0.183794, 0.184548, 0.185301, 0.186055, 0.186809, 0.187562, 0.188315, + 0.189069, 0.189822, 0.190575, 0.191328, 0.192080, 0.192833, 0.193586, 0.194338, + 0.195090, 0.195843, 0.196595, 0.197347, 0.198098, 0.198850, 0.199602, 0.200353, + 0.201105, 0.201856, 0.202607, 0.203358, 0.204109, 0.204860, 0.205610, 0.206361, + 0.207111, 0.207862, 0.208612, 0.209362, 0.210112, 0.210862, 0.211611, 0.212361, + 0.213110, 0.213860, 0.214609, 0.215358, 0.216107, 0.216856, 0.217604, 0.218353, + 0.219101, 0.219850, 0.220598, 0.221346, 0.222094, 0.222841, 0.223589, 0.224337, + 0.225084, 0.225831, 0.226578, 0.227325, 0.228072, 0.228819, 0.229565, 0.230312, + 0.231058, 0.231804, 0.232550, 0.233296, 0.234042, 0.234788, 0.235533, 0.236278, + 0.237024, 0.237769, 0.238514, 0.239258, 0.240003, 0.240748, 0.241492, 0.242236, + 0.242980, 0.243724, 0.244468, 0.245212, 0.245955, 0.246698, 0.247442, 0.248185, + 0.248928, 0.249670, 0.250413, 0.251155, 0.251898, 0.252640, 0.253382, 0.254124, + 0.254866, 0.255607, 0.256349, 0.257090, 0.257831, 0.258572, 0.259313, 0.260054, + 0.260794, 0.261534, 0.262275, 0.263015, 0.263755, 0.264494, 0.265234, 0.265973, + 0.266713, 0.267452, 0.268191, 0.268930, 0.269668, 0.270407, 0.271145, 0.271883, + 0.272621, 0.273359, 0.274097, 0.274834, 0.275572, 0.276309, 0.277046, 0.277783, + 0.278520, 0.279256, 0.279993, 0.280729, 0.281465, 0.282201, 0.282937, 0.283672, + 0.284408, 0.285143, 0.285878, 0.286613, 0.287347, 0.288082, 0.288816, 0.289551, + 0.290285, 0.291019, 0.291752, 0.292486, 0.293219, 0.293952, 0.294685, 0.295418, + 0.296151, 0.296883, 0.297616, 0.298348, 0.299080, 0.299812, 0.300543, 0.301275, + 0.302006, 0.302737, 0.303468, 0.304199, 0.304929, 0.305660, 0.306390, 0.307120, + 0.307850, 0.308579, 0.309309, 0.310038, 0.310767, 0.311496, 0.312225, 0.312953, + 0.313682, 0.314410, 0.315138, 0.315866, 0.316593, 0.317321, 0.318048, 0.318775, + 0.319502, 0.320229, 0.320955, 0.321682, 0.322408, 0.323134, 0.323859, 0.324585, + 0.325310, 0.326035, 0.326760, 0.327485, 0.328210, 0.328934, 0.329658, 0.330382, + 0.331106, 0.331830, 0.332553, 0.333277, 0.334000, 0.334722, 0.335445, 0.336168, + 0.336890, 0.337612, 0.338334, 0.339055, 0.339777, 0.340498, 0.341219, 0.341940, + 0.342661, 0.343381, 0.344101, 0.344821, 0.345541, 0.346261, 0.346980, 0.347700, + 0.348419, 0.349138, 0.349856, 0.350575, 0.351293, 0.352011, 0.352729, 0.353446, + 0.354164, 0.354881, 0.355598, 0.356314, 0.357031, 0.357747, 0.358463, 0.359179, + 0.359895, 0.360611, 0.361326, 0.362041, 0.362756, 0.363470, 0.364185, 0.364899, + 0.365613, 0.366327, 0.367040, 0.367754, 0.368467, 0.369180, 0.369892, 0.370605, + 0.371317, 0.372029, 0.372741, 0.373453, 0.374164, 0.374875, 0.375586, 0.376297, + 0.377007, 0.377718, 0.378428, 0.379138, 0.379847, 0.380557, 0.381266, 0.381975, + 0.382683, 0.383392, 0.384100, 0.384808, 0.385516, 0.386224, 0.386931, 0.387638, + 0.388345, 0.389052, 0.389758, 0.390464, 0.391170, 0.391876, 0.392582, 0.393287, + 0.393992, 0.394697, 0.395401, 0.396106, 0.396810, 0.397514, 0.398218, 0.398921, + 0.399624, 0.400327, 0.401030, 0.401732, 0.402435, 0.403137, 0.403838, 0.404540, + 0.405241, 0.405942, 0.406643, 0.407344, 0.408044, 0.408744, 0.409444, 0.410144, + 0.410843, 0.411542, 0.412241, 0.412940, 0.413638, 0.414337, 0.415034, 0.415732, + 0.416430, 0.417127, 0.417824, 0.418520, 0.419217, 0.419913, 0.420609, 0.421305, + 0.422000, 0.422695, 0.423390, 0.424085, 0.424780, 0.425474, 0.426168, 0.426862, + 0.427555, 0.428248, 0.428941, 0.429634, 0.430326, 0.431019, 0.431711, 0.432402, + 0.433094, 0.433785, 0.434476, 0.435167, 0.435857, 0.436547, 0.437237, 0.437927, + 0.438616, 0.439305, 0.439994, 0.440683, 0.441371, 0.442059, 0.442747, 0.443435, + 0.444122, 0.444809, 0.445496, 0.446183, 0.446869, 0.447555, 0.448241, 0.448926, + 0.449611, 0.450296, 0.450981, 0.451665, 0.452350, 0.453033, 0.453717, 0.454400, + 0.455084, 0.455766, 0.456449, 0.457131, 0.457813, 0.458495, 0.459177, 0.459858, + 0.460539, 0.461219, 0.461900, 0.462580, 0.463260, 0.463939, 0.464619, 0.465298, + 0.465977, 0.466655, 0.467333, 0.468011, 0.468689, 0.469366, 0.470043, 0.470720, + 0.471397, 0.472073, 0.472749, 0.473425, 0.474100, 0.474775, 0.475450, 0.476125, + 0.476799, 0.477473, 0.478147, 0.478821, 0.479494, 0.480167, 0.480839, 0.481512, + 0.482184, 0.482856, 0.483527, 0.484198, 0.484869, 0.485540, 0.486210, 0.486880, + 0.487550, 0.488220, 0.488889, 0.489558, 0.490226, 0.490895, 0.491563, 0.492231, + 0.492898, 0.493565, 0.494232, 0.494899, 0.495565, 0.496231, 0.496897, 0.497562, + 0.498228, 0.498893, 0.499557, 0.500221, 0.500885, 0.501549, 0.502212, 0.502876, + 0.503538, 0.504201, 0.504863, 0.505525, 0.506187, 0.506848, 0.507509, 0.508170, + 0.508830, 0.509490, 0.510150, 0.510810, 0.511469, 0.512128, 0.512786, 0.513445, + 0.514103, 0.514760, 0.515418, 0.516075, 0.516732, 0.517388, 0.518045, 0.518700, + 0.519356, 0.520011, 0.520666, 0.521321, 0.521975, 0.522629, 0.523283, 0.523937, + 0.524590, 0.525243, 0.525895, 0.526547, 0.527199, 0.527851, 0.528502, 0.529153, + 0.529804, 0.530454, 0.531104, 0.531754, 0.532403, 0.533052, 0.533701, 0.534349, + 0.534998, 0.535645, 0.536293, 0.536940, 0.537587, 0.538234, 0.538880, 0.539526, + 0.540171, 0.540817, 0.541462, 0.542106, 0.542751, 0.543395, 0.544039, 0.544682, + 0.545325, 0.545968, 0.546610, 0.547252, 0.547894, 0.548536, 0.549177, 0.549818, + 0.550458, 0.551098, 0.551738, 0.552378, 0.553017, 0.553656, 0.554294, 0.554932, + 0.555570, 0.556208, 0.556845, 0.557482, 0.558119, 0.558755, 0.559391, 0.560026, + 0.560662, 0.561297, 0.561931, 0.562565, 0.563199, 0.563833, 0.564466, 0.565099, + 0.565732, 0.566364, 0.566996, 0.567628, 0.568259, 0.568890, 0.569521, 0.570151, + 0.570781, 0.571410, 0.572040, 0.572669, 0.573297, 0.573925, 0.574553, 0.575181, + 0.575808, 0.576435, 0.577062, 0.577688, 0.578314, 0.578939, 0.579565, 0.580189, + 0.580814, 0.581438, 0.582062, 0.582685, 0.583309, 0.583931, 0.584554, 0.585176, + 0.585798, 0.586419, 0.587040, 0.587661, 0.588282, 0.588902, 0.589521, 0.590141, + 0.590760, 0.591378, 0.591997, 0.592615, 0.593232, 0.593850, 0.594467, 0.595083, + 0.595699, 0.596315, 0.596931, 0.597546, 0.598161, 0.598775, 0.599389, 0.600003, + 0.600616, 0.601230, 0.601842, 0.602455, 0.603067, 0.603678, 0.604290, 0.604900, + 0.605511, 0.606121, 0.606731, 0.607341, 0.607950, 0.608559, 0.609167, 0.609775, + 0.610383, 0.610990, 0.611597, 0.612204, 0.612810, 0.613416, 0.614022, 0.614627, + 0.615232, 0.615836, 0.616440, 0.617044, 0.617647, 0.618250, 0.618853, 0.619455, + 0.620057, 0.620659, 0.621260, 0.621861, 0.622461, 0.623061, 0.623661, 0.624260, + 0.624860, 0.625458, 0.626056, 0.626654, 0.627252, 0.627849, 0.628446, 0.629042, + 0.629638, 0.630234, 0.630829, 0.631424, 0.632019, 0.632613, 0.633207, 0.633800, + 0.634393, 0.634986, 0.635578, 0.636170, 0.636762, 0.637353, 0.637944, 0.638534, + 0.639124, 0.639714, 0.640303, 0.640892, 0.641481, 0.642069, 0.642657, 0.643245, + 0.643832, 0.644418, 0.645005, 0.645590, 0.646176, 0.646761, 0.647346, 0.647930, + 0.648514, 0.649098, 0.649681, 0.650264, 0.650847, 0.651429, 0.652011, 0.652592, + 0.653173, 0.653753, 0.654334, 0.654913, 0.655493, 0.656072, 0.656651, 0.657229, + 0.657807, 0.658384, 0.658961, 0.659538, 0.660114, 0.660690, 0.661266, 0.661841, + 0.662416, 0.662990, 0.663564, 0.664138, 0.664711, 0.665284, 0.665856, 0.666428, + 0.667000, 0.667571, 0.668142, 0.668712, 0.669283, 0.669852, 0.670422, 0.670990, + 0.671559, 0.672127, 0.672695, 0.673262, 0.673829, 0.674396, 0.674962, 0.675527, + 0.676093, 0.676658, 0.677222, 0.677786, 0.678350, 0.678913, 0.679476, 0.680039, + 0.680601, 0.681163, 0.681724, 0.682285, 0.682846, 0.683406, 0.683965, 0.684525, + 0.685084, 0.685642, 0.686200, 0.686758, 0.687315, 0.687872, 0.688429, 0.688985, + 0.689541, 0.690096, 0.690651, 0.691205, 0.691759, 0.692313, 0.692866, 0.693419, + 0.693971, 0.694524, 0.695075, 0.695626, 0.696177, 0.696728, 0.697277, 0.697827, + 0.698376, 0.698925, 0.699473, 0.700021, 0.700569, 0.701116, 0.701663, 0.702209, + 0.702755, 0.703300, 0.703845, 0.704390, 0.704934, 0.705478, 0.706021, 0.706564, + 0.707107, 0.707649, 0.708191, 0.708732, 0.709273, 0.709813, 0.710353, 0.710893, + 0.711432, 0.711971, 0.712509, 0.713047, 0.713585, 0.714122, 0.714659, 0.715195, + 0.715731, 0.716266, 0.716801, 0.717336, 0.717870, 0.718404, 0.718937, 0.719470, + 0.720003, 0.720535, 0.721066, 0.721597, 0.722128, 0.722659, 0.723188, 0.723718, + 0.724247, 0.724776, 0.725304, 0.725832, 0.726359, 0.726886, 0.727413, 0.727939, + 0.728464, 0.728990, 0.729514, 0.730039, 0.730563, 0.731086, 0.731609, 0.732132, + 0.732654, 0.733176, 0.733697, 0.734218, 0.734739, 0.735259, 0.735779, 0.736298, + 0.736817, 0.737335, 0.737853, 0.738370, 0.738887, 0.739404, 0.739920, 0.740436, + 0.740951, 0.741466, 0.741980, 0.742494, 0.743008, 0.743521, 0.744034, 0.744546, + 0.745058, 0.745569, 0.746080, 0.746591, 0.747101, 0.747610, 0.748119, 0.748628, + 0.749136, 0.749644, 0.750152, 0.750659, 0.751165, 0.751671, 0.752177, 0.752682, + 0.753187, 0.753691, 0.754195, 0.754698, 0.755201, 0.755704, 0.756206, 0.756708, + 0.757209, 0.757710, 0.758210, 0.758710, 0.759209, 0.759708, 0.760207, 0.760705, + 0.761202, 0.761700, 0.762196, 0.762693, 0.763188, 0.763684, 0.764179, 0.764673, + 0.765167, 0.765661, 0.766154, 0.766647, 0.767139, 0.767631, 0.768122, 0.768613, + 0.769103, 0.769593, 0.770083, 0.770572, 0.771061, 0.771549, 0.772036, 0.772524, + 0.773010, 0.773497, 0.773983, 0.774468, 0.774953, 0.775438, 0.775922, 0.776405, + 0.776888, 0.777371, 0.777853, 0.778335, 0.778817, 0.779297, 0.779778, 0.780258, + 0.780737, 0.781216, 0.781695, 0.782173, 0.782651, 0.783128, 0.783605, 0.784081, + 0.784557, 0.785032, 0.785507, 0.785981, 0.786455, 0.786929, 0.787402, 0.787874, + 0.788346, 0.788818, 0.789289, 0.789760, 0.790230, 0.790700, 0.791169, 0.791638, + 0.792107, 0.792575, 0.793042, 0.793509, 0.793975, 0.794442, 0.794907, 0.795372, + 0.795837, 0.796301, 0.796765, 0.797228, 0.797691, 0.798153, 0.798615, 0.799076, + 0.799537, 0.799998, 0.800458, 0.800917, 0.801376, 0.801835, 0.802293, 0.802750, + 0.803208, 0.803664, 0.804120, 0.804576, 0.805031, 0.805486, 0.805940, 0.806394, + 0.806848, 0.807300, 0.807753, 0.808205, 0.808656, 0.809107, 0.809558, 0.810008, + 0.810457, 0.810906, 0.811355, 0.811803, 0.812251, 0.812698, 0.813144, 0.813591, + 0.814036, 0.814482, 0.814926, 0.815371, 0.815814, 0.816258, 0.816701, 0.817143, + 0.817585, 0.818026, 0.818467, 0.818908, 0.819348, 0.819787, 0.820226, 0.820664, + 0.821102, 0.821540, 0.821977, 0.822414, 0.822850, 0.823285, 0.823721, 0.824155, + 0.824589, 0.825023, 0.825456, 0.825889, 0.826321, 0.826753, 0.827184, 0.827615, + 0.828045, 0.828475, 0.828904, 0.829333, 0.829761, 0.830189, 0.830616, 0.831043, + 0.831470, 0.831895, 0.832321, 0.832746, 0.833170, 0.833594, 0.834018, 0.834440, + 0.834863, 0.835285, 0.835706, 0.836127, 0.836548, 0.836968, 0.837387, 0.837806, + 0.838225, 0.838643, 0.839060, 0.839477, 0.839894, 0.840310, 0.840725, 0.841140, + 0.841555, 0.841969, 0.842383, 0.842796, 0.843208, 0.843620, 0.844032, 0.844443, + 0.844854, 0.845264, 0.845673, 0.846082, 0.846491, 0.846899, 0.847307, 0.847714, + 0.848120, 0.848526, 0.848932, 0.849337, 0.849742, 0.850146, 0.850549, 0.850953, + 0.851355, 0.851757, 0.852159, 0.852560, 0.852961, 0.853361, 0.853760, 0.854159, + 0.854558, 0.854956, 0.855354, 0.855751, 0.856147, 0.856543, 0.856939, 0.857334, + 0.857729, 0.858123, 0.858516, 0.858909, 0.859302, 0.859694, 0.860085, 0.860476, + 0.860867, 0.861257, 0.861646, 0.862035, 0.862424, 0.862812, 0.863199, 0.863586, + 0.863973, 0.864359, 0.864744, 0.865129, 0.865514, 0.865898, 0.866281, 0.866664, + 0.867046, 0.867428, 0.867809, 0.868190, 0.868571, 0.868951, 0.869330, 0.869709, + 0.870087, 0.870465, 0.870842, 0.871219, 0.871595, 0.871971, 0.872346, 0.872721, + 0.873095, 0.873469, 0.873842, 0.874215, 0.874587, 0.874958, 0.875329, 0.875700, + 0.876070, 0.876440, 0.876809, 0.877177, 0.877545, 0.877913, 0.878280, 0.878646, + 0.879012, 0.879378, 0.879743, 0.880107, 0.880471, 0.880834, 0.881197, 0.881559, + 0.881921, 0.882283, 0.882643, 0.883004, 0.883363, 0.883723, 0.884081, 0.884439, + 0.884797, 0.885154, 0.885511, 0.885867, 0.886223, 0.886578, 0.886932, 0.887286, + 0.887640, 0.887993, 0.888345, 0.888697, 0.889048, 0.889399, 0.889750, 0.890099, + 0.890449, 0.890797, 0.891146, 0.891493, 0.891841, 0.892187, 0.892534, 0.892879, + 0.893224, 0.893569, 0.893913, 0.894256, 0.894599, 0.894942, 0.895284, 0.895625, + 0.895966, 0.896307, 0.896646, 0.896986, 0.897325, 0.897663, 0.898001, 0.898338, + 0.898674, 0.899011, 0.899346, 0.899681, 0.900016, 0.900350, 0.900683, 0.901016, + 0.901349, 0.901681, 0.902012, 0.902343, 0.902673, 0.903003, 0.903332, 0.903661, + 0.903989, 0.904317, 0.904644, 0.904971, 0.905297, 0.905622, 0.905947, 0.906272, + 0.906596, 0.906919, 0.907242, 0.907564, 0.907886, 0.908207, 0.908528, 0.908848, + 0.909168, 0.909487, 0.909806, 0.910124, 0.910441, 0.910758, 0.911075, 0.911391, + 0.911706, 0.912021, 0.912335, 0.912649, 0.912962, 0.913275, 0.913587, 0.913899, + 0.914210, 0.914520, 0.914830, 0.915140, 0.915449, 0.915757, 0.916065, 0.916372, + 0.916679, 0.916985, 0.917291, 0.917596, 0.917901, 0.918205, 0.918508, 0.918811, + 0.919114, 0.919416, 0.919717, 0.920018, 0.920318, 0.920618, 0.920917, 0.921216, + 0.921514, 0.921812, 0.922109, 0.922405, 0.922701, 0.922997, 0.923291, 0.923586, + 0.923880, 0.924173, 0.924465, 0.924758, 0.925049, 0.925340, 0.925631, 0.925921, + 0.926210, 0.926499, 0.926787, 0.927075, 0.927363, 0.927649, 0.927935, 0.928221, + 0.928506, 0.928791, 0.929075, 0.929358, 0.929641, 0.929923, 0.930205, 0.930486, + 0.930767, 0.931047, 0.931327, 0.931606, 0.931884, 0.932162, 0.932440, 0.932716, + 0.932993, 0.933269, 0.933544, 0.933818, 0.934093, 0.934366, 0.934639, 0.934912, + 0.935184, 0.935455, 0.935726, 0.935996, 0.936266, 0.936535, 0.936803, 0.937072, + 0.937339, 0.937606, 0.937872, 0.938138, 0.938404, 0.938668, 0.938932, 0.939196, + 0.939459, 0.939722, 0.939984, 0.940245, 0.940506, 0.940766, 0.941026, 0.941285, + 0.941544, 0.941802, 0.942060, 0.942317, 0.942573, 0.942829, 0.943084, 0.943339, + 0.943593, 0.943847, 0.944100, 0.944353, 0.944605, 0.944856, 0.945107, 0.945358, + 0.945607, 0.945857, 0.946105, 0.946353, 0.946601, 0.946848, 0.947094, 0.947340, + 0.947586, 0.947830, 0.948075, 0.948318, 0.948561, 0.948804, 0.949046, 0.949287, + 0.949528, 0.949768, 0.950008, 0.950247, 0.950486, 0.950724, 0.950962, 0.951199, + 0.951435, 0.951671, 0.951906, 0.952141, 0.952375, 0.952609, 0.952842, 0.953074, + 0.953306, 0.953537, 0.953768, 0.953998, 0.954228, 0.954457, 0.954686, 0.954914, + 0.955141, 0.955368, 0.955594, 0.955820, 0.956045, 0.956270, 0.956494, 0.956717, + 0.956940, 0.957163, 0.957385, 0.957606, 0.957826, 0.958046, 0.958266, 0.958485, + 0.958703, 0.958921, 0.959139, 0.959355, 0.959572, 0.959787, 0.960002, 0.960217, + 0.960431, 0.960644, 0.960857, 0.961069, 0.961280, 0.961492, 0.961702, 0.961912, + 0.962121, 0.962330, 0.962538, 0.962746, 0.962953, 0.963160, 0.963366, 0.963571, + 0.963776, 0.963980, 0.964184, 0.964387, 0.964590, 0.964792, 0.964993, 0.965194, + 0.965394, 0.965594, 0.965793, 0.965992, 0.966190, 0.966387, 0.966584, 0.966781, + 0.966976, 0.967172, 0.967366, 0.967560, 0.967754, 0.967947, 0.968139, 0.968331, + 0.968522, 0.968713, 0.968903, 0.969092, 0.969281, 0.969470, 0.969657, 0.969845, + 0.970031, 0.970217, 0.970403, 0.970588, 0.970772, 0.970956, 0.971139, 0.971322, + 0.971504, 0.971685, 0.971866, 0.972047, 0.972227, 0.972406, 0.972584, 0.972762, + 0.972940, 0.973117, 0.973293, 0.973469, 0.973644, 0.973819, 0.973993, 0.974166, + 0.974339, 0.974512, 0.974684, 0.974855, 0.975025, 0.975195, 0.975365, 0.975534, + 0.975702, 0.975870, 0.976037, 0.976204, 0.976370, 0.976535, 0.976700, 0.976864, + 0.977028, 0.977191, 0.977354, 0.977516, 0.977677, 0.977838, 0.977998, 0.978158, + 0.978317, 0.978476, 0.978634, 0.978791, 0.978948, 0.979104, 0.979260, 0.979415, + 0.979570, 0.979724, 0.979877, 0.980030, 0.980182, 0.980334, 0.980485, 0.980635, + 0.980785, 0.980935, 0.981083, 0.981232, 0.981379, 0.981526, 0.981673, 0.981819, + 0.981964, 0.982109, 0.982253, 0.982396, 0.982539, 0.982682, 0.982824, 0.982965, + 0.983105, 0.983246, 0.983385, 0.983524, 0.983662, 0.983800, 0.983937, 0.984074, + 0.984210, 0.984346, 0.984480, 0.984615, 0.984748, 0.984882, 0.985014, 0.985146, + 0.985278, 0.985408, 0.985539, 0.985668, 0.985798, 0.985926, 0.986054, 0.986181, + 0.986308, 0.986434, 0.986560, 0.986685, 0.986809, 0.986933, 0.987057, 0.987179, + 0.987301, 0.987423, 0.987544, 0.987664, 0.987784, 0.987903, 0.988022, 0.988140, + 0.988258, 0.988374, 0.988491, 0.988607, 0.988722, 0.988836, 0.988950, 0.989064, + 0.989177, 0.989289, 0.989400, 0.989511, 0.989622, 0.989732, 0.989841, 0.989950, + 0.990058, 0.990166, 0.990273, 0.990379, 0.990485, 0.990590, 0.990695, 0.990799, + 0.990903, 0.991006, 0.991108, 0.991210, 0.991311, 0.991411, 0.991511, 0.991611, + 0.991710, 0.991808, 0.991906, 0.992003, 0.992099, 0.992195, 0.992291, 0.992385, + 0.992480, 0.992573, 0.992666, 0.992759, 0.992850, 0.992942, 0.993032, 0.993122, + 0.993212, 0.993301, 0.993389, 0.993477, 0.993564, 0.993651, 0.993737, 0.993822, + 0.993907, 0.993991, 0.994075, 0.994158, 0.994240, 0.994322, 0.994404, 0.994484, + 0.994565, 0.994644, 0.994723, 0.994802, 0.994879, 0.994957, 0.995033, 0.995109, + 0.995185, 0.995260, 0.995334, 0.995408, 0.995481, 0.995553, 0.995625, 0.995697, + 0.995767, 0.995838, 0.995907, 0.995976, 0.996045, 0.996113, 0.996180, 0.996247, + 0.996313, 0.996378, 0.996443, 0.996507, 0.996571, 0.996634, 0.996697, 0.996759, + 0.996820, 0.996881, 0.996941, 0.997001, 0.997060, 0.997119, 0.997176, 0.997234, + 0.997290, 0.997347, 0.997402, 0.997457, 0.997511, 0.997565, 0.997618, 0.997671, + 0.997723, 0.997774, 0.997825, 0.997876, 0.997925, 0.997974, 0.998023, 0.998071, + 0.998118, 0.998165, 0.998211, 0.998257, 0.998302, 0.998346, 0.998390, 0.998433, + 0.998476, 0.998518, 0.998559, 0.998600, 0.998640, 0.998680, 0.998719, 0.998758, + 0.998795, 0.998833, 0.998870, 0.998906, 0.998941, 0.998976, 0.999011, 0.999044, + 0.999078, 0.999110, 0.999142, 0.999174, 0.999205, 0.999235, 0.999265, 0.999294, + 0.999322, 0.999350, 0.999378, 0.999404, 0.999431, 0.999456, 0.999481, 0.999506, + 0.999529, 0.999553, 0.999575, 0.999597, 0.999619, 0.999640, 0.999660, 0.999680, + 0.999699, 0.999717, 0.999735, 0.999753, 0.999769, 0.999786, 0.999801, 0.999816, + 0.999831, 0.999844, 0.999858, 0.999870, 0.999882, 0.999894, 0.999905, 0.999915, + 0.999925, 0.999934, 0.999942, 0.999950, 0.999958, 0.999964, 0.999971, 0.999976, + 0.999981, 0.999986, 0.999989, 0.999993, 0.999995, 0.999997, 0.999999, 1.000000, + 0.000000, -0.000767, -0.001534, -0.002301, -0.003068, -0.003835, -0.004602, -0.005369, + -0.006136, -0.006903, -0.007670, -0.008437, -0.009204, -0.009971, -0.010738, -0.011505, + -0.012272, -0.013038, -0.013805, -0.014572, -0.015339, -0.016106, -0.016873, -0.017640, + -0.018407, -0.019174, -0.019940, -0.020707, -0.021474, -0.022241, -0.023008, -0.023774, + -0.024541, -0.025308, -0.026075, -0.026841, -0.027608, -0.028375, -0.029142, -0.029908, + -0.030675, -0.031441, -0.032208, -0.032975, -0.033741, -0.034508, -0.035274, -0.036041, + -0.036807, -0.037574, -0.038340, -0.039107, -0.039873, -0.040639, -0.041406, -0.042172, + -0.042938, -0.043705, -0.044471, -0.045237, -0.046003, -0.046769, -0.047535, -0.048302, + -0.049068, -0.049834, -0.050600, -0.051366, -0.052132, -0.052898, -0.053664, -0.054429, + -0.055195, -0.055961, -0.056727, -0.057493, -0.058258, -0.059024, -0.059790, -0.060555, + -0.061321, -0.062086, -0.062852, -0.063617, -0.064383, -0.065148, -0.065913, -0.066679, + -0.067444, -0.068209, -0.068974, -0.069739, -0.070505, -0.071270, -0.072035, -0.072800, + -0.073565, -0.074329, -0.075094, -0.075859, -0.076624, -0.077389, -0.078153, -0.078918, + -0.079682, -0.080447, -0.081211, -0.081976, -0.082740, -0.083505, -0.084269, -0.085033, + -0.085797, -0.086561, -0.087326, -0.088090, -0.088854, -0.089617, -0.090381, -0.091145, + -0.091909, -0.092673, -0.093436, -0.094200, -0.094963, -0.095727, -0.096490, -0.097254, + -0.098017, -0.098780, -0.099544, -0.100307, -0.101070, -0.101833, -0.102596, -0.103359, + -0.104122, -0.104884, -0.105647, -0.106410, -0.107172, -0.107935, -0.108697, -0.109460, + -0.110222, -0.110984, -0.111747, -0.112509, -0.113271, -0.114033, -0.114795, -0.115557, + -0.116319, -0.117080, -0.117842, -0.118604, -0.119365, -0.120127, -0.120888, -0.121649, + -0.122411, -0.123172, -0.123933, -0.124694, -0.125455, -0.126216, -0.126977, -0.127737, + -0.128498, -0.129259, -0.130019, -0.130780, -0.131540, -0.132300, -0.133061, -0.133821, + -0.134581, -0.135341, -0.136101, -0.136860, -0.137620, -0.138380, -0.139139, -0.139899, + -0.140658, -0.141418, -0.142177, -0.142936, -0.143695, -0.144454, -0.145213, -0.145972, + -0.146730, -0.147489, -0.148248, -0.149006, -0.149765, -0.150523, -0.151281, -0.152039, + -0.152797, -0.153555, -0.154313, -0.155071, -0.155828, -0.156586, -0.157343, -0.158101, + -0.158858, -0.159615, -0.160372, -0.161129, -0.161886, -0.162643, -0.163400, -0.164157, + -0.164913, -0.165670, -0.166426, -0.167182, -0.167938, -0.168694, -0.169450, -0.170206, + -0.170962, -0.171718, -0.172473, -0.173229, -0.173984, -0.174739, -0.175494, -0.176249, + -0.177004, -0.177759, -0.178514, -0.179268, -0.180023, -0.180777, -0.181532, -0.182286, + -0.183040, -0.183794, -0.184548, -0.185301, -0.186055, -0.186809, -0.187562, -0.188315, + -0.189069, -0.189822, -0.190575, -0.191328, -0.192080, -0.192833, -0.193586, -0.194338, + -0.195090, -0.195843, -0.196595, -0.197347, -0.198098, -0.198850, -0.199602, -0.200353, + -0.201105, -0.201856, -0.202607, -0.203358, -0.204109, -0.204860, -0.205610, -0.206361, + -0.207111, -0.207862, -0.208612, -0.209362, -0.210112, -0.210862, -0.211611, -0.212361, + -0.213110, -0.213860, -0.214609, -0.215358, -0.216107, -0.216856, -0.217604, -0.218353, + -0.219101, -0.219850, -0.220598, -0.221346, -0.222094, -0.222841, -0.223589, -0.224337, + -0.225084, -0.225831, -0.226578, -0.227325, -0.228072, -0.228819, -0.229565, -0.230312, + -0.231058, -0.231804, -0.232550, -0.233296, -0.234042, -0.234788, -0.235533, -0.236278, + -0.237024, -0.237769, -0.238514, -0.239258, -0.240003, -0.240748, -0.241492, -0.242236, + -0.242980, -0.243724, -0.244468, -0.245212, -0.245955, -0.246698, -0.247442, -0.248185, + -0.248928, -0.249670, -0.250413, -0.251155, -0.251898, -0.252640, -0.253382, -0.254124, + -0.254866, -0.255607, -0.256349, -0.257090, -0.257831, -0.258572, -0.259313, -0.260054, + -0.260794, -0.261534, -0.262275, -0.263015, -0.263755, -0.264494, -0.265234, -0.265973, + -0.266713, -0.267452, -0.268191, -0.268930, -0.269668, -0.270407, -0.271145, -0.271883, + -0.272621, -0.273359, -0.274097, -0.274834, -0.275572, -0.276309, -0.277046, -0.277783, + -0.278520, -0.279256, -0.279993, -0.280729, -0.281465, -0.282201, -0.282937, -0.283672, + -0.284408, -0.285143, -0.285878, -0.286613, -0.287347, -0.288082, -0.288816, -0.289551, + -0.290285, -0.291019, -0.291752, -0.292486, -0.293219, -0.293952, -0.294685, -0.295418, + -0.296151, -0.296883, -0.297616, -0.298348, -0.299080, -0.299812, -0.300543, -0.301275, + -0.302006, -0.302737, -0.303468, -0.304199, -0.304929, -0.305660, -0.306390, -0.307120, + -0.307850, -0.308579, -0.309309, -0.310038, -0.310767, -0.311496, -0.312225, -0.312953, + -0.313682, -0.314410, -0.315138, -0.315866, -0.316593, -0.317321, -0.318048, -0.318775, + -0.319502, -0.320229, -0.320955, -0.321682, -0.322408, -0.323134, -0.323859, -0.324585, + -0.325310, -0.326035, -0.326760, -0.327485, -0.328210, -0.328934, -0.329658, -0.330382, + -0.331106, -0.331830, -0.332553, -0.333277, -0.334000, -0.334722, -0.335445, -0.336168, + -0.336890, -0.337612, -0.338334, -0.339055, -0.339777, -0.340498, -0.341219, -0.341940, + -0.342661, -0.343381, -0.344101, -0.344821, -0.345541, -0.346261, -0.346980, -0.347700, + -0.348419, -0.349138, -0.349856, -0.350575, -0.351293, -0.352011, -0.352729, -0.353446, + -0.354164, -0.354881, -0.355598, -0.356314, -0.357031, -0.357747, -0.358463, -0.359179, + -0.359895, -0.360611, -0.361326, -0.362041, -0.362756, -0.363470, -0.364185, -0.364899, + -0.365613, -0.366327, -0.367040, -0.367754, -0.368467, -0.369180, -0.369892, -0.370605, + -0.371317, -0.372029, -0.372741, -0.373453, -0.374164, -0.374875, -0.375586, -0.376297, + -0.377007, -0.377718, -0.378428, -0.379138, -0.379847, -0.380557, -0.381266, -0.381975, + -0.382683, -0.383392, -0.384100, -0.384808, -0.385516, -0.386224, -0.386931, -0.387638, + -0.388345, -0.389052, -0.389758, -0.390464, -0.391170, -0.391876, -0.392582, -0.393287, + -0.393992, -0.394697, -0.395401, -0.396106, -0.396810, -0.397514, -0.398218, -0.398921, + -0.399624, -0.400327, -0.401030, -0.401732, -0.402435, -0.403137, -0.403838, -0.404540, + -0.405241, -0.405942, -0.406643, -0.407344, -0.408044, -0.408744, -0.409444, -0.410144, + -0.410843, -0.411542, -0.412241, -0.412940, -0.413638, -0.414337, -0.415034, -0.415732, + -0.416430, -0.417127, -0.417824, -0.418520, -0.419217, -0.419913, -0.420609, -0.421305, + -0.422000, -0.422695, -0.423390, -0.424085, -0.424780, -0.425474, -0.426168, -0.426862, + -0.427555, -0.428248, -0.428941, -0.429634, -0.430326, -0.431019, -0.431711, -0.432402, + -0.433094, -0.433785, -0.434476, -0.435167, -0.435857, -0.436547, -0.437237, -0.437927, + -0.438616, -0.439305, -0.439994, -0.440683, -0.441371, -0.442059, -0.442747, -0.443435, + -0.444122, -0.444809, -0.445496, -0.446183, -0.446869, -0.447555, -0.448241, -0.448926, + -0.449611, -0.450296, -0.450981, -0.451665, -0.452350, -0.453033, -0.453717, -0.454400, + -0.455084, -0.455766, -0.456449, -0.457131, -0.457813, -0.458495, -0.459177, -0.459858, + -0.460539, -0.461219, -0.461900, -0.462580, -0.463260, -0.463939, -0.464619, -0.465298, + -0.465977, -0.466655, -0.467333, -0.468011, -0.468689, -0.469366, -0.470043, -0.470720, + -0.471397, -0.472073, -0.472749, -0.473425, -0.474100, -0.474775, -0.475450, -0.476125, + -0.476799, -0.477473, -0.478147, -0.478821, -0.479494, -0.480167, -0.480839, -0.481512, + -0.482184, -0.482856, -0.483527, -0.484198, -0.484869, -0.485540, -0.486210, -0.486880, + -0.487550, -0.488220, -0.488889, -0.489558, -0.490226, -0.490895, -0.491563, -0.492231, + -0.492898, -0.493565, -0.494232, -0.494899, -0.495565, -0.496231, -0.496897, -0.497562, + -0.498228, -0.498893, -0.499557, -0.500221, -0.500885, -0.501549, -0.502212, -0.502876, + -0.503538, -0.504201, -0.504863, -0.505525, -0.506187, -0.506848, -0.507509, -0.508170, + -0.508830, -0.509490, -0.510150, -0.510810, -0.511469, -0.512128, -0.512786, -0.513445, + -0.514103, -0.514760, -0.515418, -0.516075, -0.516732, -0.517388, -0.518045, -0.518700, + -0.519356, -0.520011, -0.520666, -0.521321, -0.521975, -0.522629, -0.523283, -0.523937, + -0.524590, -0.525243, -0.525895, -0.526547, -0.527199, -0.527851, -0.528502, -0.529153, + -0.529804, -0.530454, -0.531104, -0.531754, -0.532403, -0.533052, -0.533701, -0.534349, + -0.534998, -0.535645, -0.536293, -0.536940, -0.537587, -0.538234, -0.538880, -0.539526, + -0.540171, -0.540817, -0.541462, -0.542106, -0.542751, -0.543395, -0.544039, -0.544682, + -0.545325, -0.545968, -0.546610, -0.547252, -0.547894, -0.548536, -0.549177, -0.549818, + -0.550458, -0.551098, -0.551738, -0.552378, -0.553017, -0.553656, -0.554294, -0.554932, + -0.555570, -0.556208, -0.556845, -0.557482, -0.558119, -0.558755, -0.559391, -0.560026, + -0.560662, -0.561297, -0.561931, -0.562565, -0.563199, -0.563833, -0.564466, -0.565099, + -0.565732, -0.566364, -0.566996, -0.567628, -0.568259, -0.568890, -0.569521, -0.570151, + -0.570781, -0.571410, -0.572040, -0.572669, -0.573297, -0.573925, -0.574553, -0.575181, + -0.575808, -0.576435, -0.577062, -0.577688, -0.578314, -0.578939, -0.579565, -0.580189, + -0.580814, -0.581438, -0.582062, -0.582685, -0.583309, -0.583931, -0.584554, -0.585176, + -0.585798, -0.586419, -0.587040, -0.587661, -0.588282, -0.588902, -0.589521, -0.590141, + -0.590760, -0.591378, -0.591997, -0.592615, -0.593232, -0.593850, -0.594467, -0.595083, + -0.595699, -0.596315, -0.596931, -0.597546, -0.598161, -0.598775, -0.599389, -0.600003, + -0.600616, -0.601230, -0.601842, -0.602455, -0.603067, -0.603678, -0.604290, -0.604900, + -0.605511, -0.606121, -0.606731, -0.607341, -0.607950, -0.608559, -0.609167, -0.609775, + -0.610383, -0.610990, -0.611597, -0.612204, -0.612810, -0.613416, -0.614022, -0.614627, + -0.615232, -0.615836, -0.616440, -0.617044, -0.617647, -0.618250, -0.618853, -0.619455, + -0.620057, -0.620659, -0.621260, -0.621861, -0.622461, -0.623061, -0.623661, -0.624260, + -0.624860, -0.625458, -0.626056, -0.626654, -0.627252, -0.627849, -0.628446, -0.629042, + -0.629638, -0.630234, -0.630829, -0.631424, -0.632019, -0.632613, -0.633207, -0.633800, + -0.634393, -0.634986, -0.635578, -0.636170, -0.636762, -0.637353, -0.637944, -0.638534, + -0.639124, -0.639714, -0.640303, -0.640892, -0.641481, -0.642069, -0.642657, -0.643245, + -0.643832, -0.644418, -0.645005, -0.645590, -0.646176, -0.646761, -0.647346, -0.647930, + -0.648514, -0.649098, -0.649681, -0.650264, -0.650847, -0.651429, -0.652011, -0.652592, + -0.653173, -0.653753, -0.654334, -0.654913, -0.655493, -0.656072, -0.656651, -0.657229, + -0.657807, -0.658384, -0.658961, -0.659538, -0.660114, -0.660690, -0.661266, -0.661841, + -0.662416, -0.662990, -0.663564, -0.664138, -0.664711, -0.665284, -0.665856, -0.666428, + -0.667000, -0.667571, -0.668142, -0.668712, -0.669283, -0.669852, -0.670422, -0.670990, + -0.671559, -0.672127, -0.672695, -0.673262, -0.673829, -0.674396, -0.674962, -0.675527, + -0.676093, -0.676658, -0.677222, -0.677786, -0.678350, -0.678913, -0.679476, -0.680039, + -0.680601, -0.681163, -0.681724, -0.682285, -0.682846, -0.683406, -0.683965, -0.684525, + -0.685084, -0.685642, -0.686200, -0.686758, -0.687315, -0.687872, -0.688429, -0.688985, + -0.689541, -0.690096, -0.690651, -0.691205, -0.691759, -0.692313, -0.692866, -0.693419, + -0.693971, -0.694524, -0.695075, -0.695626, -0.696177, -0.696728, -0.697277, -0.697827, + -0.698376, -0.698925, -0.699473, -0.700021, -0.700569, -0.701116, -0.701663, -0.702209, + -0.702755, -0.703300, -0.703845, -0.704390, -0.704934, -0.705478, -0.706021, -0.706564, + -0.707107, -0.707649, -0.708191, -0.708732, -0.709273, -0.709813, -0.710353, -0.710893, + -0.711432, -0.711971, -0.712509, -0.713047, -0.713585, -0.714122, -0.714659, -0.715195, + -0.715731, -0.716266, -0.716801, -0.717336, -0.717870, -0.718404, -0.718937, -0.719470, + -0.720003, -0.720535, -0.721066, -0.721597, -0.722128, -0.722659, -0.723188, -0.723718, + -0.724247, -0.724776, -0.725304, -0.725832, -0.726359, -0.726886, -0.727413, -0.727939, + -0.728464, -0.728990, -0.729514, -0.730039, -0.730563, -0.731086, -0.731609, -0.732132, + -0.732654, -0.733176, -0.733697, -0.734218, -0.734739, -0.735259, -0.735779, -0.736298, + -0.736817, -0.737335, -0.737853, -0.738370, -0.738887, -0.739404, -0.739920, -0.740436, + -0.740951, -0.741466, -0.741980, -0.742494, -0.743008, -0.743521, -0.744034, -0.744546, + -0.745058, -0.745569, -0.746080, -0.746591, -0.747101, -0.747610, -0.748119, -0.748628, + -0.749136, -0.749644, -0.750152, -0.750659, -0.751165, -0.751671, -0.752177, -0.752682, + -0.753187, -0.753691, -0.754195, -0.754698, -0.755201, -0.755704, -0.756206, -0.756708, + -0.757209, -0.757710, -0.758210, -0.758710, -0.759209, -0.759708, -0.760207, -0.760705, + -0.761202, -0.761700, -0.762196, -0.762693, -0.763188, -0.763684, -0.764179, -0.764673, + -0.765167, -0.765661, -0.766154, -0.766647, -0.767139, -0.767631, -0.768122, -0.768613, + -0.769103, -0.769593, -0.770083, -0.770572, -0.771061, -0.771549, -0.772036, -0.772524, + -0.773010, -0.773497, -0.773983, -0.774468, -0.774953, -0.775438, -0.775922, -0.776405, + -0.776888, -0.777371, -0.777853, -0.778335, -0.778817, -0.779297, -0.779778, -0.780258, + -0.780737, -0.781216, -0.781695, -0.782173, -0.782651, -0.783128, -0.783605, -0.784081, + -0.784557, -0.785032, -0.785507, -0.785981, -0.786455, -0.786929, -0.787402, -0.787874, + -0.788346, -0.788818, -0.789289, -0.789760, -0.790230, -0.790700, -0.791169, -0.791638, + -0.792107, -0.792575, -0.793042, -0.793509, -0.793975, -0.794442, -0.794907, -0.795372, + -0.795837, -0.796301, -0.796765, -0.797228, -0.797691, -0.798153, -0.798615, -0.799076, + -0.799537, -0.799998, -0.800458, -0.800917, -0.801376, -0.801835, -0.802293, -0.802750, + -0.803208, -0.803664, -0.804120, -0.804576, -0.805031, -0.805486, -0.805940, -0.806394, + -0.806848, -0.807300, -0.807753, -0.808205, -0.808656, -0.809107, -0.809558, -0.810008, + -0.810457, -0.810906, -0.811355, -0.811803, -0.812251, -0.812698, -0.813144, -0.813591, + -0.814036, -0.814482, -0.814926, -0.815371, -0.815814, -0.816258, -0.816701, -0.817143, + -0.817585, -0.818026, -0.818467, -0.818908, -0.819348, -0.819787, -0.820226, -0.820664, + -0.821102, -0.821540, -0.821977, -0.822414, -0.822850, -0.823285, -0.823721, -0.824155, + -0.824589, -0.825023, -0.825456, -0.825889, -0.826321, -0.826753, -0.827184, -0.827615, + -0.828045, -0.828475, -0.828904, -0.829333, -0.829761, -0.830189, -0.830616, -0.831043, + -0.831470, -0.831895, -0.832321, -0.832746, -0.833170, -0.833594, -0.834018, -0.834440, + -0.834863, -0.835285, -0.835706, -0.836127, -0.836548, -0.836968, -0.837387, -0.837806, + -0.838225, -0.838643, -0.839060, -0.839477, -0.839894, -0.840310, -0.840725, -0.841140, + -0.841555, -0.841969, -0.842383, -0.842796, -0.843208, -0.843620, -0.844032, -0.844443, + -0.844854, -0.845264, -0.845673, -0.846082, -0.846491, -0.846899, -0.847307, -0.847714, + -0.848120, -0.848526, -0.848932, -0.849337, -0.849742, -0.850146, -0.850549, -0.850953, + -0.851355, -0.851757, -0.852159, -0.852560, -0.852961, -0.853361, -0.853760, -0.854159, + -0.854558, -0.854956, -0.855354, -0.855751, -0.856147, -0.856543, -0.856939, -0.857334, + -0.857729, -0.858123, -0.858516, -0.858909, -0.859302, -0.859694, -0.860085, -0.860476, + -0.860867, -0.861257, -0.861646, -0.862035, -0.862424, -0.862812, -0.863199, -0.863586, + -0.863973, -0.864359, -0.864744, -0.865129, -0.865514, -0.865898, -0.866281, -0.866664, + -0.867046, -0.867428, -0.867809, -0.868190, -0.868571, -0.868951, -0.869330, -0.869709, + -0.870087, -0.870465, -0.870842, -0.871219, -0.871595, -0.871971, -0.872346, -0.872721, + -0.873095, -0.873469, -0.873842, -0.874215, -0.874587, -0.874958, -0.875329, -0.875700, + -0.876070, -0.876440, -0.876809, -0.877177, -0.877545, -0.877913, -0.878280, -0.878646, + -0.879012, -0.879378, -0.879743, -0.880107, -0.880471, -0.880834, -0.881197, -0.881559, + -0.881921, -0.882283, -0.882643, -0.883004, -0.883363, -0.883723, -0.884081, -0.884439, + -0.884797, -0.885154, -0.885511, -0.885867, -0.886223, -0.886578, -0.886932, -0.887286, + -0.887640, -0.887993, -0.888345, -0.888697, -0.889048, -0.889399, -0.889750, -0.890099, + -0.890449, -0.890797, -0.891146, -0.891493, -0.891841, -0.892187, -0.892534, -0.892879, + -0.893224, -0.893569, -0.893913, -0.894256, -0.894599, -0.894942, -0.895284, -0.895625, + -0.895966, -0.896307, -0.896646, -0.896986, -0.897325, -0.897663, -0.898001, -0.898338, + -0.898674, -0.899011, -0.899346, -0.899681, -0.900016, -0.900350, -0.900683, -0.901016, + -0.901349, -0.901681, -0.902012, -0.902343, -0.902673, -0.903003, -0.903332, -0.903661, + -0.903989, -0.904317, -0.904644, -0.904971, -0.905297, -0.905622, -0.905947, -0.906272, + -0.906596, -0.906919, -0.907242, -0.907564, -0.907886, -0.908207, -0.908528, -0.908848, + -0.909168, -0.909487, -0.909806, -0.910124, -0.910441, -0.910758, -0.911075, -0.911391, + -0.911706, -0.912021, -0.912335, -0.912649, -0.912962, -0.913275, -0.913587, -0.913899, + -0.914210, -0.914520, -0.914830, -0.915140, -0.915449, -0.915757, -0.916065, -0.916372, + -0.916679, -0.916985, -0.917291, -0.917596, -0.917901, -0.918205, -0.918508, -0.918811, + -0.919114, -0.919416, -0.919717, -0.920018, -0.920318, -0.920618, -0.920917, -0.921216, + -0.921514, -0.921812, -0.922109, -0.922405, -0.922701, -0.922997, -0.923291, -0.923586, + -0.923880, -0.924173, -0.924465, -0.924758, -0.925049, -0.925340, -0.925631, -0.925921, + -0.926210, -0.926499, -0.926787, -0.927075, -0.927363, -0.927649, -0.927935, -0.928221, + -0.928506, -0.928791, -0.929075, -0.929358, -0.929641, -0.929923, -0.930205, -0.930486, + -0.930767, -0.931047, -0.931327, -0.931606, -0.931884, -0.932162, -0.932440, -0.932716, + -0.932993, -0.933269, -0.933544, -0.933818, -0.934093, -0.934366, -0.934639, -0.934912, + -0.935184, -0.935455, -0.935726, -0.935996, -0.936266, -0.936535, -0.936803, -0.937072, + -0.937339, -0.937606, -0.937872, -0.938138, -0.938404, -0.938668, -0.938932, -0.939196, + -0.939459, -0.939722, -0.939984, -0.940245, -0.940506, -0.940766, -0.941026, -0.941285, + -0.941544, -0.941802, -0.942060, -0.942317, -0.942573, -0.942829, -0.943084, -0.943339, + -0.943593, -0.943847, -0.944100, -0.944353, -0.944605, -0.944856, -0.945107, -0.945358, + -0.945607, -0.945857, -0.946105, -0.946353, -0.946601, -0.946848, -0.947094, -0.947340, + -0.947586, -0.947830, -0.948075, -0.948318, -0.948561, -0.948804, -0.949046, -0.949287, + -0.949528, -0.949768, -0.950008, -0.950247, -0.950486, -0.950724, -0.950962, -0.951199, + -0.951435, -0.951671, -0.951906, -0.952141, -0.952375, -0.952609, -0.952842, -0.953074, + -0.953306, -0.953537, -0.953768, -0.953998, -0.954228, -0.954457, -0.954686, -0.954914, + -0.955141, -0.955368, -0.955594, -0.955820, -0.956045, -0.956270, -0.956494, -0.956717, + -0.956940, -0.957163, -0.957385, -0.957606, -0.957826, -0.958046, -0.958266, -0.958485, + -0.958703, -0.958921, -0.959139, -0.959355, -0.959572, -0.959787, -0.960002, -0.960217, + -0.960431, -0.960644, -0.960857, -0.961069, -0.961280, -0.961492, -0.961702, -0.961912, + -0.962121, -0.962330, -0.962538, -0.962746, -0.962953, -0.963160, -0.963366, -0.963571, + -0.963776, -0.963980, -0.964184, -0.964387, -0.964590, -0.964792, -0.964993, -0.965194, + -0.965394, -0.965594, -0.965793, -0.965992, -0.966190, -0.966387, -0.966584, -0.966781, + -0.966976, -0.967172, -0.967366, -0.967560, -0.967754, -0.967947, -0.968139, -0.968331, + -0.968522, -0.968713, -0.968903, -0.969092, -0.969281, -0.969470, -0.969657, -0.969845, + -0.970031, -0.970217, -0.970403, -0.970588, -0.970772, -0.970956, -0.971139, -0.971322, + -0.971504, -0.971685, -0.971866, -0.972047, -0.972227, -0.972406, -0.972584, -0.972762, + -0.972940, -0.973117, -0.973293, -0.973469, -0.973644, -0.973819, -0.973993, -0.974166, + -0.974339, -0.974512, -0.974684, -0.974855, -0.975025, -0.975195, -0.975365, -0.975534, + -0.975702, -0.975870, -0.976037, -0.976204, -0.976370, -0.976535, -0.976700, -0.976864, + -0.977028, -0.977191, -0.977354, -0.977516, -0.977677, -0.977838, -0.977998, -0.978158, + -0.978317, -0.978476, -0.978634, -0.978791, -0.978948, -0.979104, -0.979260, -0.979415, + -0.979570, -0.979724, -0.979877, -0.980030, -0.980182, -0.980334, -0.980485, -0.980635, + -0.980785, -0.980935, -0.981083, -0.981232, -0.981379, -0.981526, -0.981673, -0.981819, + -0.981964, -0.982109, -0.982253, -0.982396, -0.982539, -0.982682, -0.982824, -0.982965, + -0.983105, -0.983246, -0.983385, -0.983524, -0.983662, -0.983800, -0.983937, -0.984074, + -0.984210, -0.984346, -0.984480, -0.984615, -0.984748, -0.984882, -0.985014, -0.985146, + -0.985278, -0.985408, -0.985539, -0.985668, -0.985798, -0.985926, -0.986054, -0.986181, + -0.986308, -0.986434, -0.986560, -0.986685, -0.986809, -0.986933, -0.987057, -0.987179, + -0.987301, -0.987423, -0.987544, -0.987664, -0.987784, -0.987903, -0.988022, -0.988140, + -0.988258, -0.988374, -0.988491, -0.988607, -0.988722, -0.988836, -0.988950, -0.989064, + -0.989177, -0.989289, -0.989400, -0.989511, -0.989622, -0.989732, -0.989841, -0.989950, + -0.990058, -0.990166, -0.990273, -0.990379, -0.990485, -0.990590, -0.990695, -0.990799, + -0.990903, -0.991006, -0.991108, -0.991210, -0.991311, -0.991411, -0.991511, -0.991611, + -0.991710, -0.991808, -0.991906, -0.992003, -0.992099, -0.992195, -0.992291, -0.992385, + -0.992480, -0.992573, -0.992666, -0.992759, -0.992850, -0.992942, -0.993032, -0.993122, + -0.993212, -0.993301, -0.993389, -0.993477, -0.993564, -0.993651, -0.993737, -0.993822, + -0.993907, -0.993991, -0.994075, -0.994158, -0.994240, -0.994322, -0.994404, -0.994484, + -0.994565, -0.994644, -0.994723, -0.994802, -0.994879, -0.994957, -0.995033, -0.995109, + -0.995185, -0.995260, -0.995334, -0.995408, -0.995481, -0.995553, -0.995625, -0.995697, + -0.995767, -0.995838, -0.995907, -0.995976, -0.996045, -0.996113, -0.996180, -0.996247, + -0.996313, -0.996378, -0.996443, -0.996507, -0.996571, -0.996634, -0.996697, -0.996759, + -0.996820, -0.996881, -0.996941, -0.997001, -0.997060, -0.997119, -0.997176, -0.997234, + -0.997290, -0.997347, -0.997402, -0.997457, -0.997511, -0.997565, -0.997618, -0.997671, + -0.997723, -0.997774, -0.997825, -0.997876, -0.997925, -0.997974, -0.998023, -0.998071, + -0.998118, -0.998165, -0.998211, -0.998257, -0.998302, -0.998346, -0.998390, -0.998433, + -0.998476, -0.998518, -0.998559, -0.998600, -0.998640, -0.998680, -0.998719, -0.998758, + -0.998795, -0.998833, -0.998870, -0.998906, -0.998941, -0.998976, -0.999011, -0.999044, + -0.999078, -0.999110, -0.999142, -0.999174, -0.999205, -0.999235, -0.999265, -0.999294, + -0.999322, -0.999350, -0.999378, -0.999404, -0.999431, -0.999456, -0.999481, -0.999506, + -0.999529, -0.999553, -0.999575, -0.999597, -0.999619, -0.999640, -0.999660, -0.999680, + -0.999699, -0.999717, -0.999735, -0.999753, -0.999769, -0.999786, -0.999801, -0.999816, + -0.999831, -0.999844, -0.999858, -0.999870, -0.999882, -0.999894, -0.999905, -0.999915, + -0.999925, -0.999934, -0.999942, -0.999950, -0.999958, -0.999964, -0.999971, -0.999976, + -0.999981, -0.999986, -0.999989, -0.999993, -0.999995, -0.999997, -0.999999, -1.000000 +}; + +static const float sinTable16384[8192] = { + 0.000000, 0.000383, 0.000767, 0.001150, 0.001534, 0.001917, 0.002301, 0.002684, + 0.003068, 0.003451, 0.003835, 0.004218, 0.004602, 0.004985, 0.005369, 0.005752, + 0.006136, 0.006519, 0.006903, 0.007286, 0.007670, 0.008053, 0.008437, 0.008820, + 0.009204, 0.009587, 0.009971, 0.010354, 0.010738, 0.011121, 0.011505, 0.011888, + 0.012272, 0.012655, 0.013038, 0.013422, 0.013805, 0.014189, 0.014572, 0.014956, + 0.015339, 0.015723, 0.016106, 0.016490, 0.016873, 0.017256, 0.017640, 0.018023, + 0.018407, 0.018790, 0.019174, 0.019557, 0.019940, 0.020324, 0.020707, 0.021091, + 0.021474, 0.021857, 0.022241, 0.022624, 0.023008, 0.023391, 0.023774, 0.024158, + 0.024541, 0.024925, 0.025308, 0.025691, 0.026075, 0.026458, 0.026841, 0.027225, + 0.027608, 0.027991, 0.028375, 0.028758, 0.029142, 0.029525, 0.029908, 0.030291, + 0.030675, 0.031058, 0.031441, 0.031825, 0.032208, 0.032591, 0.032975, 0.033358, + 0.033741, 0.034124, 0.034508, 0.034891, 0.035274, 0.035657, 0.036041, 0.036424, + 0.036807, 0.037190, 0.037574, 0.037957, 0.038340, 0.038723, 0.039107, 0.039490, + 0.039873, 0.040256, 0.040639, 0.041022, 0.041406, 0.041789, 0.042172, 0.042555, + 0.042938, 0.043321, 0.043705, 0.044088, 0.044471, 0.044854, 0.045237, 0.045620, + 0.046003, 0.046386, 0.046769, 0.047152, 0.047535, 0.047919, 0.048302, 0.048685, + 0.049068, 0.049451, 0.049834, 0.050217, 0.050600, 0.050983, 0.051366, 0.051749, + 0.052132, 0.052515, 0.052898, 0.053281, 0.053664, 0.054046, 0.054429, 0.054812, + 0.055195, 0.055578, 0.055961, 0.056344, 0.056727, 0.057110, 0.057493, 0.057875, + 0.058258, 0.058641, 0.059024, 0.059407, 0.059790, 0.060172, 0.060555, 0.060938, + 0.061321, 0.061704, 0.062086, 0.062469, 0.062852, 0.063234, 0.063617, 0.064000, + 0.064383, 0.064765, 0.065148, 0.065531, 0.065913, 0.066296, 0.066679, 0.067061, + 0.067444, 0.067827, 0.068209, 0.068592, 0.068974, 0.069357, 0.069739, 0.070122, + 0.070505, 0.070887, 0.071270, 0.071652, 0.072035, 0.072417, 0.072800, 0.073182, + 0.073565, 0.073947, 0.074329, 0.074712, 0.075094, 0.075477, 0.075859, 0.076241, + 0.076624, 0.077006, 0.077389, 0.077771, 0.078153, 0.078536, 0.078918, 0.079300, + 0.079682, 0.080065, 0.080447, 0.080829, 0.081211, 0.081594, 0.081976, 0.082358, + 0.082740, 0.083122, 0.083505, 0.083887, 0.084269, 0.084651, 0.085033, 0.085415, + 0.085797, 0.086179, 0.086561, 0.086943, 0.087326, 0.087708, 0.088090, 0.088472, + 0.088854, 0.089236, 0.089617, 0.089999, 0.090381, 0.090763, 0.091145, 0.091527, + 0.091909, 0.092291, 0.092673, 0.093055, 0.093436, 0.093818, 0.094200, 0.094582, + 0.094963, 0.095345, 0.095727, 0.096109, 0.096490, 0.096872, 0.097254, 0.097635, + 0.098017, 0.098399, 0.098780, 0.099162, 0.099544, 0.099925, 0.100307, 0.100688, + 0.101070, 0.101451, 0.101833, 0.102214, 0.102596, 0.102977, 0.103359, 0.103740, + 0.104122, 0.104503, 0.104884, 0.105266, 0.105647, 0.106028, 0.106410, 0.106791, + 0.107172, 0.107554, 0.107935, 0.108316, 0.108697, 0.109079, 0.109460, 0.109841, + 0.110222, 0.110603, 0.110984, 0.111366, 0.111747, 0.112128, 0.112509, 0.112890, + 0.113271, 0.113652, 0.114033, 0.114414, 0.114795, 0.115176, 0.115557, 0.115938, + 0.116319, 0.116700, 0.117080, 0.117461, 0.117842, 0.118223, 0.118604, 0.118984, + 0.119365, 0.119746, 0.120127, 0.120507, 0.120888, 0.121269, 0.121649, 0.122030, + 0.122411, 0.122791, 0.123172, 0.123552, 0.123933, 0.124314, 0.124694, 0.125075, + 0.125455, 0.125835, 0.126216, 0.126596, 0.126977, 0.127357, 0.127737, 0.128118, + 0.128498, 0.128878, 0.129259, 0.129639, 0.130019, 0.130399, 0.130780, 0.131160, + 0.131540, 0.131920, 0.132300, 0.132680, 0.133061, 0.133441, 0.133821, 0.134201, + 0.134581, 0.134961, 0.135341, 0.135721, 0.136101, 0.136480, 0.136860, 0.137240, + 0.137620, 0.138000, 0.138380, 0.138760, 0.139139, 0.139519, 0.139899, 0.140279, + 0.140658, 0.141038, 0.141418, 0.141797, 0.142177, 0.142556, 0.142936, 0.143316, + 0.143695, 0.144075, 0.144454, 0.144833, 0.145213, 0.145592, 0.145972, 0.146351, + 0.146730, 0.147110, 0.147489, 0.147868, 0.148248, 0.148627, 0.149006, 0.149385, + 0.149765, 0.150144, 0.150523, 0.150902, 0.151281, 0.151660, 0.152039, 0.152418, + 0.152797, 0.153176, 0.153555, 0.153934, 0.154313, 0.154692, 0.155071, 0.155450, + 0.155828, 0.156207, 0.156586, 0.156965, 0.157343, 0.157722, 0.158101, 0.158480, + 0.158858, 0.159237, 0.159615, 0.159994, 0.160372, 0.160751, 0.161129, 0.161508, + 0.161886, 0.162265, 0.162643, 0.163022, 0.163400, 0.163778, 0.164157, 0.164535, + 0.164913, 0.165291, 0.165670, 0.166048, 0.166426, 0.166804, 0.167182, 0.167560, + 0.167938, 0.168316, 0.168694, 0.169072, 0.169450, 0.169828, 0.170206, 0.170584, + 0.170962, 0.171340, 0.171718, 0.172095, 0.172473, 0.172851, 0.173229, 0.173606, + 0.173984, 0.174362, 0.174739, 0.175117, 0.175494, 0.175872, 0.176249, 0.176627, + 0.177004, 0.177382, 0.177759, 0.178136, 0.178514, 0.178891, 0.179268, 0.179646, + 0.180023, 0.180400, 0.180777, 0.181154, 0.181532, 0.181909, 0.182286, 0.182663, + 0.183040, 0.183417, 0.183794, 0.184171, 0.184548, 0.184925, 0.185301, 0.185678, + 0.186055, 0.186432, 0.186809, 0.187185, 0.187562, 0.187939, 0.188315, 0.188692, + 0.189069, 0.189445, 0.189822, 0.190198, 0.190575, 0.190951, 0.191328, 0.191704, + 0.192080, 0.192457, 0.192833, 0.193209, 0.193586, 0.193962, 0.194338, 0.194714, + 0.195090, 0.195466, 0.195843, 0.196219, 0.196595, 0.196971, 0.197347, 0.197722, + 0.198098, 0.198474, 0.198850, 0.199226, 0.199602, 0.199978, 0.200353, 0.200729, + 0.201105, 0.201480, 0.201856, 0.202231, 0.202607, 0.202983, 0.203358, 0.203734, + 0.204109, 0.204484, 0.204860, 0.205235, 0.205610, 0.205986, 0.206361, 0.206736, + 0.207111, 0.207487, 0.207862, 0.208237, 0.208612, 0.208987, 0.209362, 0.209737, + 0.210112, 0.210487, 0.210862, 0.211237, 0.211611, 0.211986, 0.212361, 0.212736, + 0.213110, 0.213485, 0.213860, 0.214234, 0.214609, 0.214983, 0.215358, 0.215732, + 0.216107, 0.216481, 0.216856, 0.217230, 0.217604, 0.217979, 0.218353, 0.218727, + 0.219101, 0.219475, 0.219850, 0.220224, 0.220598, 0.220972, 0.221346, 0.221720, + 0.222094, 0.222468, 0.222841, 0.223215, 0.223589, 0.223963, 0.224337, 0.224710, + 0.225084, 0.225458, 0.225831, 0.226205, 0.226578, 0.226952, 0.227325, 0.227699, + 0.228072, 0.228445, 0.228819, 0.229192, 0.229565, 0.229939, 0.230312, 0.230685, + 0.231058, 0.231431, 0.231804, 0.232177, 0.232550, 0.232923, 0.233296, 0.233669, + 0.234042, 0.234415, 0.234788, 0.235160, 0.235533, 0.235906, 0.236278, 0.236651, + 0.237024, 0.237396, 0.237769, 0.238141, 0.238514, 0.238886, 0.239258, 0.239631, + 0.240003, 0.240375, 0.240748, 0.241120, 0.241492, 0.241864, 0.242236, 0.242608, + 0.242980, 0.243352, 0.243724, 0.244096, 0.244468, 0.244840, 0.245212, 0.245583, + 0.245955, 0.246327, 0.246698, 0.247070, 0.247442, 0.247813, 0.248185, 0.248556, + 0.248928, 0.249299, 0.249670, 0.250042, 0.250413, 0.250784, 0.251155, 0.251527, + 0.251898, 0.252269, 0.252640, 0.253011, 0.253382, 0.253753, 0.254124, 0.254495, + 0.254866, 0.255236, 0.255607, 0.255978, 0.256349, 0.256719, 0.257090, 0.257461, + 0.257831, 0.258202, 0.258572, 0.258943, 0.259313, 0.259683, 0.260054, 0.260424, + 0.260794, 0.261164, 0.261534, 0.261905, 0.262275, 0.262645, 0.263015, 0.263385, + 0.263755, 0.264125, 0.264494, 0.264864, 0.265234, 0.265604, 0.265973, 0.266343, + 0.266713, 0.267082, 0.267452, 0.267821, 0.268191, 0.268560, 0.268930, 0.269299, + 0.269668, 0.270038, 0.270407, 0.270776, 0.271145, 0.271514, 0.271883, 0.272252, + 0.272621, 0.272990, 0.273359, 0.273728, 0.274097, 0.274466, 0.274834, 0.275203, + 0.275572, 0.275940, 0.276309, 0.276678, 0.277046, 0.277415, 0.277783, 0.278151, + 0.278520, 0.278888, 0.279256, 0.279624, 0.279993, 0.280361, 0.280729, 0.281097, + 0.281465, 0.281833, 0.282201, 0.282569, 0.282937, 0.283304, 0.283672, 0.284040, + 0.284408, 0.284775, 0.285143, 0.285510, 0.285878, 0.286245, 0.286613, 0.286980, + 0.287347, 0.287715, 0.288082, 0.288449, 0.288816, 0.289184, 0.289551, 0.289918, + 0.290285, 0.290652, 0.291019, 0.291385, 0.291752, 0.292119, 0.292486, 0.292852, + 0.293219, 0.293586, 0.293952, 0.294319, 0.294685, 0.295052, 0.295418, 0.295785, + 0.296151, 0.296517, 0.296883, 0.297250, 0.297616, 0.297982, 0.298348, 0.298714, + 0.299080, 0.299446, 0.299812, 0.300177, 0.300543, 0.300909, 0.301275, 0.301640, + 0.302006, 0.302372, 0.302737, 0.303103, 0.303468, 0.303833, 0.304199, 0.304564, + 0.304929, 0.305294, 0.305660, 0.306025, 0.306390, 0.306755, 0.307120, 0.307485, + 0.307850, 0.308214, 0.308579, 0.308944, 0.309309, 0.309673, 0.310038, 0.310403, + 0.310767, 0.311132, 0.311496, 0.311860, 0.312225, 0.312589, 0.312953, 0.313318, + 0.313682, 0.314046, 0.314410, 0.314774, 0.315138, 0.315502, 0.315866, 0.316230, + 0.316593, 0.316957, 0.317321, 0.317684, 0.318048, 0.318412, 0.318775, 0.319139, + 0.319502, 0.319865, 0.320229, 0.320592, 0.320955, 0.321318, 0.321682, 0.322045, + 0.322408, 0.322771, 0.323134, 0.323497, 0.323859, 0.324222, 0.324585, 0.324948, + 0.325310, 0.325673, 0.326035, 0.326398, 0.326760, 0.327123, 0.327485, 0.327848, + 0.328210, 0.328572, 0.328934, 0.329296, 0.329658, 0.330020, 0.330382, 0.330744, + 0.331106, 0.331468, 0.331830, 0.332192, 0.332553, 0.332915, 0.333277, 0.333638, + 0.334000, 0.334361, 0.334722, 0.335084, 0.335445, 0.335806, 0.336168, 0.336529, + 0.336890, 0.337251, 0.337612, 0.337973, 0.338334, 0.338695, 0.339055, 0.339416, + 0.339777, 0.340138, 0.340498, 0.340859, 0.341219, 0.341580, 0.341940, 0.342300, + 0.342661, 0.343021, 0.343381, 0.343741, 0.344101, 0.344461, 0.344821, 0.345181, + 0.345541, 0.345901, 0.346261, 0.346621, 0.346980, 0.347340, 0.347700, 0.348059, + 0.348419, 0.348778, 0.349138, 0.349497, 0.349856, 0.350215, 0.350575, 0.350934, + 0.351293, 0.351652, 0.352011, 0.352370, 0.352729, 0.353087, 0.353446, 0.353805, + 0.354164, 0.354522, 0.354881, 0.355239, 0.355598, 0.355956, 0.356314, 0.356673, + 0.357031, 0.357389, 0.357747, 0.358105, 0.358463, 0.358821, 0.359179, 0.359537, + 0.359895, 0.360253, 0.360611, 0.360968, 0.361326, 0.361683, 0.362041, 0.362398, + 0.362756, 0.363113, 0.363470, 0.363828, 0.364185, 0.364542, 0.364899, 0.365256, + 0.365613, 0.365970, 0.366327, 0.366684, 0.367040, 0.367397, 0.367754, 0.368110, + 0.368467, 0.368823, 0.369180, 0.369536, 0.369892, 0.370249, 0.370605, 0.370961, + 0.371317, 0.371673, 0.372029, 0.372385, 0.372741, 0.373097, 0.373453, 0.373808, + 0.374164, 0.374520, 0.374875, 0.375231, 0.375586, 0.375942, 0.376297, 0.376652, + 0.377007, 0.377363, 0.377718, 0.378073, 0.378428, 0.378783, 0.379138, 0.379492, + 0.379847, 0.380202, 0.380557, 0.380911, 0.381266, 0.381620, 0.381975, 0.382329, + 0.382683, 0.383038, 0.383392, 0.383746, 0.384100, 0.384454, 0.384808, 0.385162, + 0.385516, 0.385870, 0.386224, 0.386577, 0.386931, 0.387285, 0.387638, 0.387992, + 0.388345, 0.388698, 0.389052, 0.389405, 0.389758, 0.390111, 0.390464, 0.390817, + 0.391170, 0.391523, 0.391876, 0.392229, 0.392582, 0.392934, 0.393287, 0.393640, + 0.393992, 0.394344, 0.394697, 0.395049, 0.395401, 0.395754, 0.396106, 0.396458, + 0.396810, 0.397162, 0.397514, 0.397866, 0.398218, 0.398569, 0.398921, 0.399273, + 0.399624, 0.399976, 0.400327, 0.400679, 0.401030, 0.401381, 0.401732, 0.402084, + 0.402435, 0.402786, 0.403137, 0.403488, 0.403838, 0.404189, 0.404540, 0.404891, + 0.405241, 0.405592, 0.405942, 0.406293, 0.406643, 0.406994, 0.407344, 0.407694, + 0.408044, 0.408394, 0.408744, 0.409094, 0.409444, 0.409794, 0.410144, 0.410493, + 0.410843, 0.411193, 0.411542, 0.411892, 0.412241, 0.412591, 0.412940, 0.413289, + 0.413638, 0.413987, 0.414337, 0.414685, 0.415034, 0.415383, 0.415732, 0.416081, + 0.416430, 0.416778, 0.417127, 0.417475, 0.417824, 0.418172, 0.418520, 0.418869, + 0.419217, 0.419565, 0.419913, 0.420261, 0.420609, 0.420957, 0.421305, 0.421653, + 0.422000, 0.422348, 0.422695, 0.423043, 0.423390, 0.423738, 0.424085, 0.424432, + 0.424780, 0.425127, 0.425474, 0.425821, 0.426168, 0.426515, 0.426862, 0.427208, + 0.427555, 0.427902, 0.428248, 0.428595, 0.428941, 0.429288, 0.429634, 0.429980, + 0.430326, 0.430673, 0.431019, 0.431365, 0.431711, 0.432057, 0.432402, 0.432748, + 0.433094, 0.433439, 0.433785, 0.434131, 0.434476, 0.434821, 0.435167, 0.435512, + 0.435857, 0.436202, 0.436547, 0.436892, 0.437237, 0.437582, 0.437927, 0.438272, + 0.438616, 0.438961, 0.439305, 0.439650, 0.439994, 0.440339, 0.440683, 0.441027, + 0.441371, 0.441715, 0.442059, 0.442403, 0.442747, 0.443091, 0.443435, 0.443779, + 0.444122, 0.444466, 0.444809, 0.445153, 0.445496, 0.445839, 0.446183, 0.446526, + 0.446869, 0.447212, 0.447555, 0.447898, 0.448241, 0.448583, 0.448926, 0.449269, + 0.449611, 0.449954, 0.450296, 0.450639, 0.450981, 0.451323, 0.451665, 0.452008, + 0.452350, 0.452692, 0.453033, 0.453375, 0.453717, 0.454059, 0.454400, 0.454742, + 0.455084, 0.455425, 0.455766, 0.456108, 0.456449, 0.456790, 0.457131, 0.457472, + 0.457813, 0.458154, 0.458495, 0.458836, 0.459177, 0.459517, 0.459858, 0.460198, + 0.460539, 0.460879, 0.461219, 0.461560, 0.461900, 0.462240, 0.462580, 0.462920, + 0.463260, 0.463600, 0.463939, 0.464279, 0.464619, 0.464958, 0.465298, 0.465637, + 0.465977, 0.466316, 0.466655, 0.466994, 0.467333, 0.467672, 0.468011, 0.468350, + 0.468689, 0.469028, 0.469366, 0.469705, 0.470043, 0.470382, 0.470720, 0.471058, + 0.471397, 0.471735, 0.472073, 0.472411, 0.472749, 0.473087, 0.473425, 0.473763, + 0.474100, 0.474438, 0.474775, 0.475113, 0.475450, 0.475788, 0.476125, 0.476462, + 0.476799, 0.477136, 0.477473, 0.477810, 0.478147, 0.478484, 0.478821, 0.479157, + 0.479494, 0.479830, 0.480167, 0.480503, 0.480839, 0.481176, 0.481512, 0.481848, + 0.482184, 0.482520, 0.482856, 0.483191, 0.483527, 0.483863, 0.484198, 0.484534, + 0.484869, 0.485205, 0.485540, 0.485875, 0.486210, 0.486545, 0.486880, 0.487215, + 0.487550, 0.487885, 0.488220, 0.488554, 0.488889, 0.489223, 0.489558, 0.489892, + 0.490226, 0.490561, 0.490895, 0.491229, 0.491563, 0.491897, 0.492231, 0.492564, + 0.492898, 0.493232, 0.493565, 0.493899, 0.494232, 0.494566, 0.494899, 0.495232, + 0.495565, 0.495898, 0.496231, 0.496564, 0.496897, 0.497230, 0.497562, 0.497895, + 0.498228, 0.498560, 0.498893, 0.499225, 0.499557, 0.499889, 0.500221, 0.500553, + 0.500885, 0.501217, 0.501549, 0.501881, 0.502212, 0.502544, 0.502876, 0.503207, + 0.503538, 0.503870, 0.504201, 0.504532, 0.504863, 0.505194, 0.505525, 0.505856, + 0.506187, 0.506517, 0.506848, 0.507179, 0.507509, 0.507839, 0.508170, 0.508500, + 0.508830, 0.509160, 0.509490, 0.509820, 0.510150, 0.510480, 0.510810, 0.511139, + 0.511469, 0.511798, 0.512128, 0.512457, 0.512786, 0.513116, 0.513445, 0.513774, + 0.514103, 0.514432, 0.514760, 0.515089, 0.515418, 0.515746, 0.516075, 0.516403, + 0.516732, 0.517060, 0.517388, 0.517716, 0.518045, 0.518372, 0.518700, 0.519028, + 0.519356, 0.519684, 0.520011, 0.520339, 0.520666, 0.520994, 0.521321, 0.521648, + 0.521975, 0.522302, 0.522629, 0.522956, 0.523283, 0.523610, 0.523937, 0.524263, + 0.524590, 0.524916, 0.525243, 0.525569, 0.525895, 0.526221, 0.526547, 0.526873, + 0.527199, 0.527525, 0.527851, 0.528176, 0.528502, 0.528828, 0.529153, 0.529478, + 0.529804, 0.530129, 0.530454, 0.530779, 0.531104, 0.531429, 0.531754, 0.532078, + 0.532403, 0.532728, 0.533052, 0.533377, 0.533701, 0.534025, 0.534349, 0.534674, + 0.534998, 0.535322, 0.535645, 0.535969, 0.536293, 0.536617, 0.536940, 0.537264, + 0.537587, 0.537910, 0.538234, 0.538557, 0.538880, 0.539203, 0.539526, 0.539849, + 0.540171, 0.540494, 0.540817, 0.541139, 0.541462, 0.541784, 0.542106, 0.542429, + 0.542751, 0.543073, 0.543395, 0.543717, 0.544039, 0.544360, 0.544682, 0.545003, + 0.545325, 0.545646, 0.545968, 0.546289, 0.546610, 0.546931, 0.547252, 0.547573, + 0.547894, 0.548215, 0.548536, 0.548856, 0.549177, 0.549497, 0.549818, 0.550138, + 0.550458, 0.550778, 0.551098, 0.551418, 0.551738, 0.552058, 0.552378, 0.552697, + 0.553017, 0.553336, 0.553656, 0.553975, 0.554294, 0.554613, 0.554932, 0.555251, + 0.555570, 0.555889, 0.556208, 0.556526, 0.556845, 0.557164, 0.557482, 0.557800, + 0.558119, 0.558437, 0.558755, 0.559073, 0.559391, 0.559709, 0.560026, 0.560344, + 0.560662, 0.560979, 0.561297, 0.561614, 0.561931, 0.562248, 0.562565, 0.562882, + 0.563199, 0.563516, 0.563833, 0.564150, 0.564466, 0.564783, 0.565099, 0.565416, + 0.565732, 0.566048, 0.566364, 0.566680, 0.566996, 0.567312, 0.567628, 0.567943, + 0.568259, 0.568574, 0.568890, 0.569205, 0.569521, 0.569836, 0.570151, 0.570466, + 0.570781, 0.571096, 0.571410, 0.571725, 0.572040, 0.572354, 0.572669, 0.572983, + 0.573297, 0.573611, 0.573925, 0.574239, 0.574553, 0.574867, 0.575181, 0.575495, + 0.575808, 0.576122, 0.576435, 0.576748, 0.577062, 0.577375, 0.577688, 0.578001, + 0.578314, 0.578627, 0.578939, 0.579252, 0.579565, 0.579877, 0.580189, 0.580502, + 0.580814, 0.581126, 0.581438, 0.581750, 0.582062, 0.582374, 0.582685, 0.582997, + 0.583309, 0.583620, 0.583931, 0.584243, 0.584554, 0.584865, 0.585176, 0.585487, + 0.585798, 0.586109, 0.586419, 0.586730, 0.587040, 0.587351, 0.587661, 0.587971, + 0.588282, 0.588592, 0.588902, 0.589212, 0.589521, 0.589831, 0.590141, 0.590450, + 0.590760, 0.591069, 0.591378, 0.591688, 0.591997, 0.592306, 0.592615, 0.592924, + 0.593232, 0.593541, 0.593850, 0.594158, 0.594467, 0.594775, 0.595083, 0.595391, + 0.595699, 0.596007, 0.596315, 0.596623, 0.596931, 0.597238, 0.597546, 0.597853, + 0.598161, 0.598468, 0.598775, 0.599082, 0.599389, 0.599696, 0.600003, 0.600310, + 0.600616, 0.600923, 0.601230, 0.601536, 0.601842, 0.602148, 0.602455, 0.602761, + 0.603067, 0.603372, 0.603678, 0.603984, 0.604290, 0.604595, 0.604900, 0.605206, + 0.605511, 0.605816, 0.606121, 0.606426, 0.606731, 0.607036, 0.607341, 0.607645, + 0.607950, 0.608254, 0.608559, 0.608863, 0.609167, 0.609471, 0.609775, 0.610079, + 0.610383, 0.610687, 0.610990, 0.611294, 0.611597, 0.611901, 0.612204, 0.612507, + 0.612810, 0.613113, 0.613416, 0.613719, 0.614022, 0.614324, 0.614627, 0.614929, + 0.615232, 0.615534, 0.615836, 0.616138, 0.616440, 0.616742, 0.617044, 0.617346, + 0.617647, 0.617949, 0.618250, 0.618552, 0.618853, 0.619154, 0.619455, 0.619756, + 0.620057, 0.620358, 0.620659, 0.620959, 0.621260, 0.621560, 0.621861, 0.622161, + 0.622461, 0.622761, 0.623061, 0.623361, 0.623661, 0.623961, 0.624260, 0.624560, + 0.624860, 0.625159, 0.625458, 0.625757, 0.626056, 0.626355, 0.626654, 0.626953, + 0.627252, 0.627550, 0.627849, 0.628147, 0.628446, 0.628744, 0.629042, 0.629340, + 0.629638, 0.629936, 0.630234, 0.630532, 0.630829, 0.631127, 0.631424, 0.631721, + 0.632019, 0.632316, 0.632613, 0.632910, 0.633207, 0.633504, 0.633800, 0.634097, + 0.634393, 0.634690, 0.634986, 0.635282, 0.635578, 0.635874, 0.636170, 0.636466, + 0.636762, 0.637057, 0.637353, 0.637649, 0.637944, 0.638239, 0.638534, 0.638829, + 0.639124, 0.639419, 0.639714, 0.640009, 0.640303, 0.640598, 0.640892, 0.641187, + 0.641481, 0.641775, 0.642069, 0.642363, 0.642657, 0.642951, 0.643245, 0.643538, + 0.643832, 0.644125, 0.644418, 0.644711, 0.645005, 0.645298, 0.645590, 0.645883, + 0.646176, 0.646469, 0.646761, 0.647054, 0.647346, 0.647638, 0.647930, 0.648222, + 0.648514, 0.648806, 0.649098, 0.649390, 0.649681, 0.649973, 0.650264, 0.650555, + 0.650847, 0.651138, 0.651429, 0.651720, 0.652011, 0.652301, 0.652592, 0.652882, + 0.653173, 0.653463, 0.653753, 0.654044, 0.654334, 0.654624, 0.654913, 0.655203, + 0.655493, 0.655782, 0.656072, 0.656361, 0.656651, 0.656940, 0.657229, 0.657518, + 0.657807, 0.658095, 0.658384, 0.658673, 0.658961, 0.659250, 0.659538, 0.659826, + 0.660114, 0.660402, 0.660690, 0.660978, 0.661266, 0.661553, 0.661841, 0.662128, + 0.662416, 0.662703, 0.662990, 0.663277, 0.663564, 0.663851, 0.664138, 0.664424, + 0.664711, 0.664997, 0.665284, 0.665570, 0.665856, 0.666142, 0.666428, 0.666714, + 0.667000, 0.667286, 0.667571, 0.667857, 0.668142, 0.668427, 0.668712, 0.668998, + 0.669283, 0.669567, 0.669852, 0.670137, 0.670422, 0.670706, 0.670990, 0.671275, + 0.671559, 0.671843, 0.672127, 0.672411, 0.672695, 0.672978, 0.673262, 0.673546, + 0.673829, 0.674112, 0.674396, 0.674679, 0.674962, 0.675245, 0.675527, 0.675810, + 0.676093, 0.676375, 0.676658, 0.676940, 0.677222, 0.677504, 0.677786, 0.678068, + 0.678350, 0.678632, 0.678913, 0.679195, 0.679476, 0.679758, 0.680039, 0.680320, + 0.680601, 0.680882, 0.681163, 0.681443, 0.681724, 0.682005, 0.682285, 0.682565, + 0.682846, 0.683126, 0.683406, 0.683686, 0.683965, 0.684245, 0.684525, 0.684804, + 0.685084, 0.685363, 0.685642, 0.685921, 0.686200, 0.686479, 0.686758, 0.687037, + 0.687315, 0.687594, 0.687872, 0.688151, 0.688429, 0.688707, 0.688985, 0.689263, + 0.689541, 0.689818, 0.690096, 0.690373, 0.690651, 0.690928, 0.691205, 0.691482, + 0.691759, 0.692036, 0.692313, 0.692590, 0.692866, 0.693143, 0.693419, 0.693695, + 0.693971, 0.694248, 0.694524, 0.694799, 0.695075, 0.695351, 0.695626, 0.695902, + 0.696177, 0.696452, 0.696728, 0.697003, 0.697277, 0.697552, 0.697827, 0.698102, + 0.698376, 0.698651, 0.698925, 0.699199, 0.699473, 0.699747, 0.700021, 0.700295, + 0.700569, 0.700842, 0.701116, 0.701389, 0.701663, 0.701936, 0.702209, 0.702482, + 0.702755, 0.703028, 0.703300, 0.703573, 0.703845, 0.704118, 0.704390, 0.704662, + 0.704934, 0.705206, 0.705478, 0.705750, 0.706021, 0.706293, 0.706564, 0.706836, + 0.707107, 0.707378, 0.707649, 0.707920, 0.708191, 0.708461, 0.708732, 0.709002, + 0.709273, 0.709543, 0.709813, 0.710083, 0.710353, 0.710623, 0.710893, 0.711163, + 0.711432, 0.711702, 0.711971, 0.712240, 0.712509, 0.712778, 0.713047, 0.713316, + 0.713585, 0.713853, 0.714122, 0.714390, 0.714659, 0.714927, 0.715195, 0.715463, + 0.715731, 0.715999, 0.716266, 0.716534, 0.716801, 0.717069, 0.717336, 0.717603, + 0.717870, 0.718137, 0.718404, 0.718670, 0.718937, 0.719204, 0.719470, 0.719736, + 0.720003, 0.720269, 0.720535, 0.720800, 0.721066, 0.721332, 0.721597, 0.721863, + 0.722128, 0.722393, 0.722659, 0.722924, 0.723188, 0.723453, 0.723718, 0.723983, + 0.724247, 0.724511, 0.724776, 0.725040, 0.725304, 0.725568, 0.725832, 0.726095, + 0.726359, 0.726623, 0.726886, 0.727149, 0.727413, 0.727676, 0.727939, 0.728202, + 0.728464, 0.728727, 0.728990, 0.729252, 0.729514, 0.729777, 0.730039, 0.730301, + 0.730563, 0.730825, 0.731086, 0.731348, 0.731609, 0.731871, 0.732132, 0.732393, + 0.732654, 0.732915, 0.733176, 0.733437, 0.733697, 0.733958, 0.734218, 0.734479, + 0.734739, 0.734999, 0.735259, 0.735519, 0.735779, 0.736038, 0.736298, 0.736557, + 0.736817, 0.737076, 0.737335, 0.737594, 0.737853, 0.738112, 0.738370, 0.738629, + 0.738887, 0.739146, 0.739404, 0.739662, 0.739920, 0.740178, 0.740436, 0.740694, + 0.740951, 0.741209, 0.741466, 0.741723, 0.741980, 0.742237, 0.742494, 0.742751, + 0.743008, 0.743265, 0.743521, 0.743777, 0.744034, 0.744290, 0.744546, 0.744802, + 0.745058, 0.745314, 0.745569, 0.745825, 0.746080, 0.746335, 0.746591, 0.746846, + 0.747101, 0.747355, 0.747610, 0.747865, 0.748119, 0.748374, 0.748628, 0.748882, + 0.749136, 0.749390, 0.749644, 0.749898, 0.750152, 0.750405, 0.750659, 0.750912, + 0.751165, 0.751418, 0.751671, 0.751924, 0.752177, 0.752429, 0.752682, 0.752934, + 0.753187, 0.753439, 0.753691, 0.753943, 0.754195, 0.754447, 0.754698, 0.754950, + 0.755201, 0.755453, 0.755704, 0.755955, 0.756206, 0.756457, 0.756708, 0.756958, + 0.757209, 0.757459, 0.757710, 0.757960, 0.758210, 0.758460, 0.758710, 0.758960, + 0.759209, 0.759459, 0.759708, 0.759957, 0.760207, 0.760456, 0.760705, 0.760954, + 0.761202, 0.761451, 0.761700, 0.761948, 0.762196, 0.762444, 0.762693, 0.762941, + 0.763188, 0.763436, 0.763684, 0.763931, 0.764179, 0.764426, 0.764673, 0.764920, + 0.765167, 0.765414, 0.765661, 0.765907, 0.766154, 0.766400, 0.766647, 0.766893, + 0.767139, 0.767385, 0.767631, 0.767876, 0.768122, 0.768368, 0.768613, 0.768858, + 0.769103, 0.769348, 0.769593, 0.769838, 0.770083, 0.770327, 0.770572, 0.770816, + 0.771061, 0.771305, 0.771549, 0.771793, 0.772036, 0.772280, 0.772524, 0.772767, + 0.773010, 0.773254, 0.773497, 0.773740, 0.773983, 0.774225, 0.774468, 0.774711, + 0.774953, 0.775195, 0.775438, 0.775680, 0.775922, 0.776164, 0.776405, 0.776647, + 0.776888, 0.777130, 0.777371, 0.777612, 0.777853, 0.778094, 0.778335, 0.778576, + 0.778817, 0.779057, 0.779297, 0.779538, 0.779778, 0.780018, 0.780258, 0.780498, + 0.780737, 0.780977, 0.781216, 0.781456, 0.781695, 0.781934, 0.782173, 0.782412, + 0.782651, 0.782889, 0.783128, 0.783366, 0.783605, 0.783843, 0.784081, 0.784319, + 0.784557, 0.784794, 0.785032, 0.785269, 0.785507, 0.785744, 0.785981, 0.786218, + 0.786455, 0.786692, 0.786929, 0.787165, 0.787402, 0.787638, 0.787874, 0.788110, + 0.788346, 0.788582, 0.788818, 0.789054, 0.789289, 0.789525, 0.789760, 0.789995, + 0.790230, 0.790465, 0.790700, 0.790935, 0.791169, 0.791404, 0.791638, 0.791872, + 0.792107, 0.792341, 0.792575, 0.792808, 0.793042, 0.793276, 0.793509, 0.793742, + 0.793975, 0.794209, 0.794442, 0.794674, 0.794907, 0.795140, 0.795372, 0.795605, + 0.795837, 0.796069, 0.796301, 0.796533, 0.796765, 0.796996, 0.797228, 0.797459, + 0.797691, 0.797922, 0.798153, 0.798384, 0.798615, 0.798846, 0.799076, 0.799307, + 0.799537, 0.799768, 0.799998, 0.800228, 0.800458, 0.800687, 0.800917, 0.801147, + 0.801376, 0.801606, 0.801835, 0.802064, 0.802293, 0.802522, 0.802750, 0.802979, + 0.803208, 0.803436, 0.803664, 0.803892, 0.804120, 0.804348, 0.804576, 0.804804, + 0.805031, 0.805259, 0.805486, 0.805713, 0.805940, 0.806167, 0.806394, 0.806621, + 0.806848, 0.807074, 0.807300, 0.807527, 0.807753, 0.807979, 0.808205, 0.808430, + 0.808656, 0.808882, 0.809107, 0.809332, 0.809558, 0.809783, 0.810008, 0.810232, + 0.810457, 0.810682, 0.810906, 0.811131, 0.811355, 0.811579, 0.811803, 0.812027, + 0.812251, 0.812474, 0.812698, 0.812921, 0.813144, 0.813368, 0.813591, 0.813814, + 0.814036, 0.814259, 0.814482, 0.814704, 0.814926, 0.815149, 0.815371, 0.815593, + 0.815814, 0.816036, 0.816258, 0.816479, 0.816701, 0.816922, 0.817143, 0.817364, + 0.817585, 0.817806, 0.818026, 0.818247, 0.818467, 0.818687, 0.818908, 0.819128, + 0.819348, 0.819567, 0.819787, 0.820007, 0.820226, 0.820445, 0.820664, 0.820884, + 0.821102, 0.821321, 0.821540, 0.821759, 0.821977, 0.822195, 0.822414, 0.822632, + 0.822850, 0.823068, 0.823285, 0.823503, 0.823721, 0.823938, 0.824155, 0.824372, + 0.824589, 0.824806, 0.825023, 0.825240, 0.825456, 0.825673, 0.825889, 0.826105, + 0.826321, 0.826537, 0.826753, 0.826968, 0.827184, 0.827399, 0.827615, 0.827830, + 0.828045, 0.828260, 0.828475, 0.828690, 0.828904, 0.829119, 0.829333, 0.829547, + 0.829761, 0.829975, 0.830189, 0.830403, 0.830616, 0.830830, 0.831043, 0.831257, + 0.831470, 0.831683, 0.831895, 0.832108, 0.832321, 0.832533, 0.832746, 0.832958, + 0.833170, 0.833382, 0.833594, 0.833806, 0.834018, 0.834229, 0.834440, 0.834652, + 0.834863, 0.835074, 0.835285, 0.835496, 0.835706, 0.835917, 0.836127, 0.836338, + 0.836548, 0.836758, 0.836968, 0.837178, 0.837387, 0.837597, 0.837806, 0.838015, + 0.838225, 0.838434, 0.838643, 0.838852, 0.839060, 0.839269, 0.839477, 0.839686, + 0.839894, 0.840102, 0.840310, 0.840518, 0.840725, 0.840933, 0.841140, 0.841348, + 0.841555, 0.841762, 0.841969, 0.842176, 0.842383, 0.842589, 0.842796, 0.843002, + 0.843208, 0.843414, 0.843620, 0.843826, 0.844032, 0.844238, 0.844443, 0.844648, + 0.844854, 0.845059, 0.845264, 0.845469, 0.845673, 0.845878, 0.846082, 0.846287, + 0.846491, 0.846695, 0.846899, 0.847103, 0.847307, 0.847510, 0.847714, 0.847917, + 0.848120, 0.848323, 0.848526, 0.848729, 0.848932, 0.849135, 0.849337, 0.849540, + 0.849742, 0.849944, 0.850146, 0.850348, 0.850549, 0.850751, 0.850953, 0.851154, + 0.851355, 0.851556, 0.851757, 0.851958, 0.852159, 0.852360, 0.852560, 0.852760, + 0.852961, 0.853161, 0.853361, 0.853561, 0.853760, 0.853960, 0.854159, 0.854359, + 0.854558, 0.854757, 0.854956, 0.855155, 0.855354, 0.855552, 0.855751, 0.855949, + 0.856147, 0.856345, 0.856543, 0.856741, 0.856939, 0.857137, 0.857334, 0.857531, + 0.857729, 0.857926, 0.858123, 0.858320, 0.858516, 0.858713, 0.858909, 0.859106, + 0.859302, 0.859498, 0.859694, 0.859890, 0.860085, 0.860281, 0.860476, 0.860672, + 0.860867, 0.861062, 0.861257, 0.861452, 0.861646, 0.861841, 0.862035, 0.862230, + 0.862424, 0.862618, 0.862812, 0.863006, 0.863199, 0.863393, 0.863586, 0.863780, + 0.863973, 0.864166, 0.864359, 0.864552, 0.864744, 0.864937, 0.865129, 0.865321, + 0.865514, 0.865706, 0.865898, 0.866089, 0.866281, 0.866472, 0.866664, 0.866855, + 0.867046, 0.867237, 0.867428, 0.867619, 0.867809, 0.868000, 0.868190, 0.868381, + 0.868571, 0.868761, 0.868951, 0.869140, 0.869330, 0.869519, 0.869709, 0.869898, + 0.870087, 0.870276, 0.870465, 0.870654, 0.870842, 0.871031, 0.871219, 0.871407, + 0.871595, 0.871783, 0.871971, 0.872159, 0.872346, 0.872534, 0.872721, 0.872908, + 0.873095, 0.873282, 0.873469, 0.873655, 0.873842, 0.874028, 0.874215, 0.874401, + 0.874587, 0.874773, 0.874958, 0.875144, 0.875329, 0.875515, 0.875700, 0.875885, + 0.876070, 0.876255, 0.876440, 0.876624, 0.876809, 0.876993, 0.877177, 0.877361, + 0.877545, 0.877729, 0.877913, 0.878096, 0.878280, 0.878463, 0.878646, 0.878829, + 0.879012, 0.879195, 0.879378, 0.879560, 0.879743, 0.879925, 0.880107, 0.880289, + 0.880471, 0.880653, 0.880834, 0.881016, 0.881197, 0.881378, 0.881559, 0.881740, + 0.881921, 0.882102, 0.882283, 0.882463, 0.882643, 0.882824, 0.883004, 0.883184, + 0.883363, 0.883543, 0.883723, 0.883902, 0.884081, 0.884260, 0.884439, 0.884618, + 0.884797, 0.884976, 0.885154, 0.885333, 0.885511, 0.885689, 0.885867, 0.886045, + 0.886223, 0.886400, 0.886578, 0.886755, 0.886932, 0.887109, 0.887286, 0.887463, + 0.887640, 0.887816, 0.887993, 0.888169, 0.888345, 0.888521, 0.888697, 0.888873, + 0.889048, 0.889224, 0.889399, 0.889574, 0.889750, 0.889925, 0.890099, 0.890274, + 0.890449, 0.890623, 0.890797, 0.890972, 0.891146, 0.891320, 0.891493, 0.891667, + 0.891841, 0.892014, 0.892187, 0.892361, 0.892534, 0.892706, 0.892879, 0.893052, + 0.893224, 0.893397, 0.893569, 0.893741, 0.893913, 0.894085, 0.894256, 0.894428, + 0.894599, 0.894771, 0.894942, 0.895113, 0.895284, 0.895455, 0.895625, 0.895796, + 0.895966, 0.896137, 0.896307, 0.896477, 0.896646, 0.896816, 0.896986, 0.897155, + 0.897325, 0.897494, 0.897663, 0.897832, 0.898001, 0.898169, 0.898338, 0.898506, + 0.898674, 0.898843, 0.899011, 0.899179, 0.899346, 0.899514, 0.899681, 0.899849, + 0.900016, 0.900183, 0.900350, 0.900517, 0.900683, 0.900850, 0.901016, 0.901183, + 0.901349, 0.901515, 0.901681, 0.901847, 0.902012, 0.902178, 0.902343, 0.902508, + 0.902673, 0.902838, 0.903003, 0.903168, 0.903332, 0.903497, 0.903661, 0.903825, + 0.903989, 0.904153, 0.904317, 0.904481, 0.904644, 0.904807, 0.904971, 0.905134, + 0.905297, 0.905460, 0.905622, 0.905785, 0.905947, 0.906110, 0.906272, 0.906434, + 0.906596, 0.906757, 0.906919, 0.907081, 0.907242, 0.907403, 0.907564, 0.907725, + 0.907886, 0.908047, 0.908207, 0.908368, 0.908528, 0.908688, 0.908848, 0.909008, + 0.909168, 0.909328, 0.909487, 0.909646, 0.909806, 0.909965, 0.910124, 0.910283, + 0.910441, 0.910600, 0.910758, 0.910917, 0.911075, 0.911233, 0.911391, 0.911548, + 0.911706, 0.911864, 0.912021, 0.912178, 0.912335, 0.912492, 0.912649, 0.912806, + 0.912962, 0.913119, 0.913275, 0.913431, 0.913587, 0.913743, 0.913899, 0.914054, + 0.914210, 0.914365, 0.914520, 0.914675, 0.914830, 0.914985, 0.915140, 0.915294, + 0.915449, 0.915603, 0.915757, 0.915911, 0.916065, 0.916219, 0.916372, 0.916526, + 0.916679, 0.916832, 0.916985, 0.917138, 0.917291, 0.917444, 0.917596, 0.917749, + 0.917901, 0.918053, 0.918205, 0.918357, 0.918508, 0.918660, 0.918811, 0.918963, + 0.919114, 0.919265, 0.919416, 0.919567, 0.919717, 0.919868, 0.920018, 0.920168, + 0.920318, 0.920468, 0.920618, 0.920768, 0.920917, 0.921067, 0.921216, 0.921365, + 0.921514, 0.921663, 0.921812, 0.921960, 0.922109, 0.922257, 0.922405, 0.922553, + 0.922701, 0.922849, 0.922997, 0.923144, 0.923291, 0.923439, 0.923586, 0.923733, + 0.923880, 0.924026, 0.924173, 0.924319, 0.924465, 0.924612, 0.924758, 0.924904, + 0.925049, 0.925195, 0.925340, 0.925486, 0.925631, 0.925776, 0.925921, 0.926066, + 0.926210, 0.926355, 0.926499, 0.926643, 0.926787, 0.926931, 0.927075, 0.927219, + 0.927363, 0.927506, 0.927649, 0.927792, 0.927935, 0.928078, 0.928221, 0.928364, + 0.928506, 0.928648, 0.928791, 0.928933, 0.929075, 0.929216, 0.929358, 0.929500, + 0.929641, 0.929782, 0.929923, 0.930064, 0.930205, 0.930346, 0.930486, 0.930627, + 0.930767, 0.930907, 0.931047, 0.931187, 0.931327, 0.931466, 0.931606, 0.931745, + 0.931884, 0.932023, 0.932162, 0.932301, 0.932440, 0.932578, 0.932716, 0.932855, + 0.932993, 0.933131, 0.933269, 0.933406, 0.933544, 0.933681, 0.933818, 0.933956, + 0.934093, 0.934229, 0.934366, 0.934503, 0.934639, 0.934775, 0.934912, 0.935048, + 0.935184, 0.935319, 0.935455, 0.935590, 0.935726, 0.935861, 0.935996, 0.936131, + 0.936266, 0.936400, 0.936535, 0.936669, 0.936803, 0.936938, 0.937072, 0.937205, + 0.937339, 0.937473, 0.937606, 0.937739, 0.937872, 0.938005, 0.938138, 0.938271, + 0.938404, 0.938536, 0.938668, 0.938800, 0.938932, 0.939064, 0.939196, 0.939328, + 0.939459, 0.939591, 0.939722, 0.939853, 0.939984, 0.940115, 0.940245, 0.940376, + 0.940506, 0.940636, 0.940766, 0.940896, 0.941026, 0.941156, 0.941285, 0.941415, + 0.941544, 0.941673, 0.941802, 0.941931, 0.942060, 0.942188, 0.942317, 0.942445, + 0.942573, 0.942701, 0.942829, 0.942957, 0.943084, 0.943212, 0.943339, 0.943466, + 0.943593, 0.943720, 0.943847, 0.943974, 0.944100, 0.944227, 0.944353, 0.944479, + 0.944605, 0.944731, 0.944856, 0.944982, 0.945107, 0.945232, 0.945358, 0.945482, + 0.945607, 0.945732, 0.945857, 0.945981, 0.946105, 0.946229, 0.946353, 0.946477, + 0.946601, 0.946724, 0.946848, 0.946971, 0.947094, 0.947217, 0.947340, 0.947463, + 0.947586, 0.947708, 0.947830, 0.947953, 0.948075, 0.948196, 0.948318, 0.948440, + 0.948561, 0.948683, 0.948804, 0.948925, 0.949046, 0.949167, 0.949287, 0.949408, + 0.949528, 0.949648, 0.949768, 0.949888, 0.950008, 0.950128, 0.950247, 0.950367, + 0.950486, 0.950605, 0.950724, 0.950843, 0.950962, 0.951080, 0.951199, 0.951317, + 0.951435, 0.951553, 0.951671, 0.951789, 0.951906, 0.952024, 0.952141, 0.952258, + 0.952375, 0.952492, 0.952609, 0.952725, 0.952842, 0.952958, 0.953074, 0.953190, + 0.953306, 0.953422, 0.953537, 0.953653, 0.953768, 0.953883, 0.953998, 0.954113, + 0.954228, 0.954343, 0.954457, 0.954572, 0.954686, 0.954800, 0.954914, 0.955028, + 0.955141, 0.955255, 0.955368, 0.955481, 0.955594, 0.955707, 0.955820, 0.955933, + 0.956045, 0.956158, 0.956270, 0.956382, 0.956494, 0.956606, 0.956717, 0.956829, + 0.956940, 0.957052, 0.957163, 0.957274, 0.957385, 0.957495, 0.957606, 0.957716, + 0.957826, 0.957937, 0.958046, 0.958156, 0.958266, 0.958376, 0.958485, 0.958594, + 0.958703, 0.958812, 0.958921, 0.959030, 0.959139, 0.959247, 0.959355, 0.959463, + 0.959572, 0.959679, 0.959787, 0.959895, 0.960002, 0.960109, 0.960217, 0.960324, + 0.960431, 0.960537, 0.960644, 0.960750, 0.960857, 0.960963, 0.961069, 0.961175, + 0.961280, 0.961386, 0.961492, 0.961597, 0.961702, 0.961807, 0.961912, 0.962017, + 0.962121, 0.962226, 0.962330, 0.962434, 0.962538, 0.962642, 0.962746, 0.962850, + 0.962953, 0.963057, 0.963160, 0.963263, 0.963366, 0.963469, 0.963571, 0.963674, + 0.963776, 0.963878, 0.963980, 0.964082, 0.964184, 0.964286, 0.964387, 0.964489, + 0.964590, 0.964691, 0.964792, 0.964893, 0.964993, 0.965094, 0.965194, 0.965294, + 0.965394, 0.965494, 0.965594, 0.965694, 0.965793, 0.965893, 0.965992, 0.966091, + 0.966190, 0.966289, 0.966387, 0.966486, 0.966584, 0.966683, 0.966781, 0.966879, + 0.966976, 0.967074, 0.967172, 0.967269, 0.967366, 0.967463, 0.967560, 0.967657, + 0.967754, 0.967850, 0.967947, 0.968043, 0.968139, 0.968235, 0.968331, 0.968427, + 0.968522, 0.968617, 0.968713, 0.968808, 0.968903, 0.968998, 0.969092, 0.969187, + 0.969281, 0.969375, 0.969470, 0.969564, 0.969657, 0.969751, 0.969845, 0.969938, + 0.970031, 0.970124, 0.970217, 0.970310, 0.970403, 0.970495, 0.970588, 0.970680, + 0.970772, 0.970864, 0.970956, 0.971048, 0.971139, 0.971231, 0.971322, 0.971413, + 0.971504, 0.971595, 0.971685, 0.971776, 0.971866, 0.971957, 0.972047, 0.972137, + 0.972227, 0.972316, 0.972406, 0.972495, 0.972584, 0.972673, 0.972762, 0.972851, + 0.972940, 0.973028, 0.973117, 0.973205, 0.973293, 0.973381, 0.973469, 0.973557, + 0.973644, 0.973732, 0.973819, 0.973906, 0.973993, 0.974080, 0.974166, 0.974253, + 0.974339, 0.974426, 0.974512, 0.974598, 0.974684, 0.974769, 0.974855, 0.974940, + 0.975025, 0.975110, 0.975195, 0.975280, 0.975365, 0.975449, 0.975534, 0.975618, + 0.975702, 0.975786, 0.975870, 0.975954, 0.976037, 0.976120, 0.976204, 0.976287, + 0.976370, 0.976453, 0.976535, 0.976618, 0.976700, 0.976782, 0.976864, 0.976946, + 0.977028, 0.977110, 0.977191, 0.977273, 0.977354, 0.977435, 0.977516, 0.977597, + 0.977677, 0.977758, 0.977838, 0.977918, 0.977998, 0.978078, 0.978158, 0.978238, + 0.978317, 0.978397, 0.978476, 0.978555, 0.978634, 0.978713, 0.978791, 0.978870, + 0.978948, 0.979026, 0.979104, 0.979182, 0.979260, 0.979338, 0.979415, 0.979493, + 0.979570, 0.979647, 0.979724, 0.979800, 0.979877, 0.979954, 0.980030, 0.980106, + 0.980182, 0.980258, 0.980334, 0.980409, 0.980485, 0.980560, 0.980635, 0.980710, + 0.980785, 0.980860, 0.980935, 0.981009, 0.981083, 0.981158, 0.981232, 0.981305, + 0.981379, 0.981453, 0.981526, 0.981600, 0.981673, 0.981746, 0.981819, 0.981891, + 0.981964, 0.982036, 0.982109, 0.982181, 0.982253, 0.982325, 0.982396, 0.982468, + 0.982539, 0.982611, 0.982682, 0.982753, 0.982824, 0.982894, 0.982965, 0.983035, + 0.983105, 0.983176, 0.983246, 0.983315, 0.983385, 0.983455, 0.983524, 0.983593, + 0.983662, 0.983731, 0.983800, 0.983869, 0.983937, 0.984006, 0.984074, 0.984142, + 0.984210, 0.984278, 0.984346, 0.984413, 0.984480, 0.984548, 0.984615, 0.984682, + 0.984748, 0.984815, 0.984882, 0.984948, 0.985014, 0.985080, 0.985146, 0.985212, + 0.985278, 0.985343, 0.985408, 0.985474, 0.985539, 0.985604, 0.985668, 0.985733, + 0.985798, 0.985862, 0.985926, 0.985990, 0.986054, 0.986118, 0.986181, 0.986245, + 0.986308, 0.986371, 0.986434, 0.986497, 0.986560, 0.986623, 0.986685, 0.986747, + 0.986809, 0.986871, 0.986933, 0.986995, 0.987057, 0.987118, 0.987179, 0.987240, + 0.987301, 0.987362, 0.987423, 0.987484, 0.987544, 0.987604, 0.987664, 0.987724, + 0.987784, 0.987844, 0.987903, 0.987963, 0.988022, 0.988081, 0.988140, 0.988199, + 0.988258, 0.988316, 0.988374, 0.988433, 0.988491, 0.988549, 0.988607, 0.988664, + 0.988722, 0.988779, 0.988836, 0.988893, 0.988950, 0.989007, 0.989064, 0.989120, + 0.989177, 0.989233, 0.989289, 0.989345, 0.989400, 0.989456, 0.989511, 0.989567, + 0.989622, 0.989677, 0.989732, 0.989787, 0.989841, 0.989896, 0.989950, 0.990004, + 0.990058, 0.990112, 0.990166, 0.990219, 0.990273, 0.990326, 0.990379, 0.990432, + 0.990485, 0.990538, 0.990590, 0.990643, 0.990695, 0.990747, 0.990799, 0.990851, + 0.990903, 0.990954, 0.991006, 0.991057, 0.991108, 0.991159, 0.991210, 0.991260, + 0.991311, 0.991361, 0.991411, 0.991462, 0.991511, 0.991561, 0.991611, 0.991660, + 0.991710, 0.991759, 0.991808, 0.991857, 0.991906, 0.991954, 0.992003, 0.992051, + 0.992099, 0.992147, 0.992195, 0.992243, 0.992291, 0.992338, 0.992385, 0.992433, + 0.992480, 0.992526, 0.992573, 0.992620, 0.992666, 0.992712, 0.992759, 0.992805, + 0.992850, 0.992896, 0.992942, 0.992987, 0.993032, 0.993077, 0.993122, 0.993167, + 0.993212, 0.993257, 0.993301, 0.993345, 0.993389, 0.993433, 0.993477, 0.993521, + 0.993564, 0.993608, 0.993651, 0.993694, 0.993737, 0.993779, 0.993822, 0.993865, + 0.993907, 0.993949, 0.993991, 0.994033, 0.994075, 0.994116, 0.994158, 0.994199, + 0.994240, 0.994281, 0.994322, 0.994363, 0.994404, 0.994444, 0.994484, 0.994525, + 0.994565, 0.994604, 0.994644, 0.994684, 0.994723, 0.994762, 0.994802, 0.994841, + 0.994879, 0.994918, 0.994957, 0.994995, 0.995033, 0.995071, 0.995109, 0.995147, + 0.995185, 0.995222, 0.995260, 0.995297, 0.995334, 0.995371, 0.995408, 0.995444, + 0.995481, 0.995517, 0.995553, 0.995589, 0.995625, 0.995661, 0.995697, 0.995732, + 0.995767, 0.995803, 0.995838, 0.995872, 0.995907, 0.995942, 0.995976, 0.996011, + 0.996045, 0.996079, 0.996113, 0.996146, 0.996180, 0.996213, 0.996247, 0.996280, + 0.996313, 0.996345, 0.996378, 0.996411, 0.996443, 0.996475, 0.996507, 0.996539, + 0.996571, 0.996603, 0.996634, 0.996666, 0.996697, 0.996728, 0.996759, 0.996790, + 0.996820, 0.996851, 0.996881, 0.996911, 0.996941, 0.996971, 0.997001, 0.997031, + 0.997060, 0.997089, 0.997119, 0.997148, 0.997176, 0.997205, 0.997234, 0.997262, + 0.997290, 0.997319, 0.997347, 0.997374, 0.997402, 0.997430, 0.997457, 0.997484, + 0.997511, 0.997538, 0.997565, 0.997592, 0.997618, 0.997645, 0.997671, 0.997697, + 0.997723, 0.997749, 0.997774, 0.997800, 0.997825, 0.997851, 0.997876, 0.997901, + 0.997925, 0.997950, 0.997974, 0.997999, 0.998023, 0.998047, 0.998071, 0.998094, + 0.998118, 0.998142, 0.998165, 0.998188, 0.998211, 0.998234, 0.998257, 0.998279, + 0.998302, 0.998324, 0.998346, 0.998368, 0.998390, 0.998411, 0.998433, 0.998454, + 0.998476, 0.998497, 0.998518, 0.998538, 0.998559, 0.998580, 0.998600, 0.998620, + 0.998640, 0.998660, 0.998680, 0.998700, 0.998719, 0.998738, 0.998758, 0.998777, + 0.998795, 0.998814, 0.998833, 0.998851, 0.998870, 0.998888, 0.998906, 0.998924, + 0.998941, 0.998959, 0.998976, 0.998994, 0.999011, 0.999028, 0.999044, 0.999061, + 0.999078, 0.999094, 0.999110, 0.999126, 0.999142, 0.999158, 0.999174, 0.999189, + 0.999205, 0.999220, 0.999235, 0.999250, 0.999265, 0.999279, 0.999294, 0.999308, + 0.999322, 0.999336, 0.999350, 0.999364, 0.999378, 0.999391, 0.999404, 0.999418, + 0.999431, 0.999443, 0.999456, 0.999469, 0.999481, 0.999493, 0.999506, 0.999518, + 0.999529, 0.999541, 0.999553, 0.999564, 0.999575, 0.999586, 0.999597, 0.999608, + 0.999619, 0.999629, 0.999640, 0.999650, 0.999660, 0.999670, 0.999680, 0.999689, + 0.999699, 0.999708, 0.999717, 0.999726, 0.999735, 0.999744, 0.999753, 0.999761, + 0.999769, 0.999778, 0.999786, 0.999793, 0.999801, 0.999809, 0.999816, 0.999823, + 0.999831, 0.999838, 0.999844, 0.999851, 0.999858, 0.999864, 0.999870, 0.999876, + 0.999882, 0.999888, 0.999894, 0.999899, 0.999905, 0.999910, 0.999915, 0.999920, + 0.999925, 0.999929, 0.999934, 0.999938, 0.999942, 0.999946, 0.999950, 0.999954, + 0.999958, 0.999961, 0.999964, 0.999968, 0.999971, 0.999973, 0.999976, 0.999979, + 0.999981, 0.999983, 0.999986, 0.999988, 0.999989, 0.999991, 0.999993, 0.999994, + 0.999995, 0.999996, 0.999997, 0.999998, 0.999999, 0.999999, 1.000000, 1.000000, + 0.000000, -0.000383, -0.000767, -0.001150, -0.001534, -0.001917, -0.002301, -0.002684, + -0.003068, -0.003451, -0.003835, -0.004218, -0.004602, -0.004985, -0.005369, -0.005752, + -0.006136, -0.006519, -0.006903, -0.007286, -0.007670, -0.008053, -0.008437, -0.008820, + -0.009204, -0.009587, -0.009971, -0.010354, -0.010738, -0.011121, -0.011505, -0.011888, + -0.012272, -0.012655, -0.013038, -0.013422, -0.013805, -0.014189, -0.014572, -0.014956, + -0.015339, -0.015723, -0.016106, -0.016490, -0.016873, -0.017256, -0.017640, -0.018023, + -0.018407, -0.018790, -0.019174, -0.019557, -0.019940, -0.020324, -0.020707, -0.021091, + -0.021474, -0.021857, -0.022241, -0.022624, -0.023008, -0.023391, -0.023774, -0.024158, + -0.024541, -0.024925, -0.025308, -0.025691, -0.026075, -0.026458, -0.026841, -0.027225, + -0.027608, -0.027991, -0.028375, -0.028758, -0.029142, -0.029525, -0.029908, -0.030291, + -0.030675, -0.031058, -0.031441, -0.031825, -0.032208, -0.032591, -0.032975, -0.033358, + -0.033741, -0.034124, -0.034508, -0.034891, -0.035274, -0.035657, -0.036041, -0.036424, + -0.036807, -0.037190, -0.037574, -0.037957, -0.038340, -0.038723, -0.039107, -0.039490, + -0.039873, -0.040256, -0.040639, -0.041022, -0.041406, -0.041789, -0.042172, -0.042555, + -0.042938, -0.043321, -0.043705, -0.044088, -0.044471, -0.044854, -0.045237, -0.045620, + -0.046003, -0.046386, -0.046769, -0.047152, -0.047535, -0.047919, -0.048302, -0.048685, + -0.049068, -0.049451, -0.049834, -0.050217, -0.050600, -0.050983, -0.051366, -0.051749, + -0.052132, -0.052515, -0.052898, -0.053281, -0.053664, -0.054046, -0.054429, -0.054812, + -0.055195, -0.055578, -0.055961, -0.056344, -0.056727, -0.057110, -0.057493, -0.057875, + -0.058258, -0.058641, -0.059024, -0.059407, -0.059790, -0.060172, -0.060555, -0.060938, + -0.061321, -0.061704, -0.062086, -0.062469, -0.062852, -0.063234, -0.063617, -0.064000, + -0.064383, -0.064765, -0.065148, -0.065531, -0.065913, -0.066296, -0.066679, -0.067061, + -0.067444, -0.067827, -0.068209, -0.068592, -0.068974, -0.069357, -0.069739, -0.070122, + -0.070505, -0.070887, -0.071270, -0.071652, -0.072035, -0.072417, -0.072800, -0.073182, + -0.073565, -0.073947, -0.074329, -0.074712, -0.075094, -0.075477, -0.075859, -0.076241, + -0.076624, -0.077006, -0.077389, -0.077771, -0.078153, -0.078536, -0.078918, -0.079300, + -0.079682, -0.080065, -0.080447, -0.080829, -0.081211, -0.081594, -0.081976, -0.082358, + -0.082740, -0.083122, -0.083505, -0.083887, -0.084269, -0.084651, -0.085033, -0.085415, + -0.085797, -0.086179, -0.086561, -0.086943, -0.087326, -0.087708, -0.088090, -0.088472, + -0.088854, -0.089236, -0.089617, -0.089999, -0.090381, -0.090763, -0.091145, -0.091527, + -0.091909, -0.092291, -0.092673, -0.093055, -0.093436, -0.093818, -0.094200, -0.094582, + -0.094963, -0.095345, -0.095727, -0.096109, -0.096490, -0.096872, -0.097254, -0.097635, + -0.098017, -0.098399, -0.098780, -0.099162, -0.099544, -0.099925, -0.100307, -0.100688, + -0.101070, -0.101451, -0.101833, -0.102214, -0.102596, -0.102977, -0.103359, -0.103740, + -0.104122, -0.104503, -0.104884, -0.105266, -0.105647, -0.106028, -0.106410, -0.106791, + -0.107172, -0.107554, -0.107935, -0.108316, -0.108697, -0.109079, -0.109460, -0.109841, + -0.110222, -0.110603, -0.110984, -0.111366, -0.111747, -0.112128, -0.112509, -0.112890, + -0.113271, -0.113652, -0.114033, -0.114414, -0.114795, -0.115176, -0.115557, -0.115938, + -0.116319, -0.116700, -0.117080, -0.117461, -0.117842, -0.118223, -0.118604, -0.118984, + -0.119365, -0.119746, -0.120127, -0.120507, -0.120888, -0.121269, -0.121649, -0.122030, + -0.122411, -0.122791, -0.123172, -0.123552, -0.123933, -0.124314, -0.124694, -0.125075, + -0.125455, -0.125835, -0.126216, -0.126596, -0.126977, -0.127357, -0.127737, -0.128118, + -0.128498, -0.128878, -0.129259, -0.129639, -0.130019, -0.130399, -0.130780, -0.131160, + -0.131540, -0.131920, -0.132300, -0.132680, -0.133061, -0.133441, -0.133821, -0.134201, + -0.134581, -0.134961, -0.135341, -0.135721, -0.136101, -0.136480, -0.136860, -0.137240, + -0.137620, -0.138000, -0.138380, -0.138760, -0.139139, -0.139519, -0.139899, -0.140279, + -0.140658, -0.141038, -0.141418, -0.141797, -0.142177, -0.142556, -0.142936, -0.143316, + -0.143695, -0.144075, -0.144454, -0.144833, -0.145213, -0.145592, -0.145972, -0.146351, + -0.146730, -0.147110, -0.147489, -0.147868, -0.148248, -0.148627, -0.149006, -0.149385, + -0.149765, -0.150144, -0.150523, -0.150902, -0.151281, -0.151660, -0.152039, -0.152418, + -0.152797, -0.153176, -0.153555, -0.153934, -0.154313, -0.154692, -0.155071, -0.155450, + -0.155828, -0.156207, -0.156586, -0.156965, -0.157343, -0.157722, -0.158101, -0.158480, + -0.158858, -0.159237, -0.159615, -0.159994, -0.160372, -0.160751, -0.161129, -0.161508, + -0.161886, -0.162265, -0.162643, -0.163022, -0.163400, -0.163778, -0.164157, -0.164535, + -0.164913, -0.165291, -0.165670, -0.166048, -0.166426, -0.166804, -0.167182, -0.167560, + -0.167938, -0.168316, -0.168694, -0.169072, -0.169450, -0.169828, -0.170206, -0.170584, + -0.170962, -0.171340, -0.171718, -0.172095, -0.172473, -0.172851, -0.173229, -0.173606, + -0.173984, -0.174362, -0.174739, -0.175117, -0.175494, -0.175872, -0.176249, -0.176627, + -0.177004, -0.177382, -0.177759, -0.178136, -0.178514, -0.178891, -0.179268, -0.179646, + -0.180023, -0.180400, -0.180777, -0.181154, -0.181532, -0.181909, -0.182286, -0.182663, + -0.183040, -0.183417, -0.183794, -0.184171, -0.184548, -0.184925, -0.185301, -0.185678, + -0.186055, -0.186432, -0.186809, -0.187185, -0.187562, -0.187939, -0.188315, -0.188692, + -0.189069, -0.189445, -0.189822, -0.190198, -0.190575, -0.190951, -0.191328, -0.191704, + -0.192080, -0.192457, -0.192833, -0.193209, -0.193586, -0.193962, -0.194338, -0.194714, + -0.195090, -0.195466, -0.195843, -0.196219, -0.196595, -0.196971, -0.197347, -0.197722, + -0.198098, -0.198474, -0.198850, -0.199226, -0.199602, -0.199978, -0.200353, -0.200729, + -0.201105, -0.201480, -0.201856, -0.202231, -0.202607, -0.202983, -0.203358, -0.203734, + -0.204109, -0.204484, -0.204860, -0.205235, -0.205610, -0.205986, -0.206361, -0.206736, + -0.207111, -0.207487, -0.207862, -0.208237, -0.208612, -0.208987, -0.209362, -0.209737, + -0.210112, -0.210487, -0.210862, -0.211237, -0.211611, -0.211986, -0.212361, -0.212736, + -0.213110, -0.213485, -0.213860, -0.214234, -0.214609, -0.214983, -0.215358, -0.215732, + -0.216107, -0.216481, -0.216856, -0.217230, -0.217604, -0.217979, -0.218353, -0.218727, + -0.219101, -0.219475, -0.219850, -0.220224, -0.220598, -0.220972, -0.221346, -0.221720, + -0.222094, -0.222468, -0.222841, -0.223215, -0.223589, -0.223963, -0.224337, -0.224710, + -0.225084, -0.225458, -0.225831, -0.226205, -0.226578, -0.226952, -0.227325, -0.227699, + -0.228072, -0.228445, -0.228819, -0.229192, -0.229565, -0.229939, -0.230312, -0.230685, + -0.231058, -0.231431, -0.231804, -0.232177, -0.232550, -0.232923, -0.233296, -0.233669, + -0.234042, -0.234415, -0.234788, -0.235160, -0.235533, -0.235906, -0.236278, -0.236651, + -0.237024, -0.237396, -0.237769, -0.238141, -0.238514, -0.238886, -0.239258, -0.239631, + -0.240003, -0.240375, -0.240748, -0.241120, -0.241492, -0.241864, -0.242236, -0.242608, + -0.242980, -0.243352, -0.243724, -0.244096, -0.244468, -0.244840, -0.245212, -0.245583, + -0.245955, -0.246327, -0.246698, -0.247070, -0.247442, -0.247813, -0.248185, -0.248556, + -0.248928, -0.249299, -0.249670, -0.250042, -0.250413, -0.250784, -0.251155, -0.251527, + -0.251898, -0.252269, -0.252640, -0.253011, -0.253382, -0.253753, -0.254124, -0.254495, + -0.254866, -0.255236, -0.255607, -0.255978, -0.256349, -0.256719, -0.257090, -0.257461, + -0.257831, -0.258202, -0.258572, -0.258943, -0.259313, -0.259683, -0.260054, -0.260424, + -0.260794, -0.261164, -0.261534, -0.261905, -0.262275, -0.262645, -0.263015, -0.263385, + -0.263755, -0.264125, -0.264494, -0.264864, -0.265234, -0.265604, -0.265973, -0.266343, + -0.266713, -0.267082, -0.267452, -0.267821, -0.268191, -0.268560, -0.268930, -0.269299, + -0.269668, -0.270038, -0.270407, -0.270776, -0.271145, -0.271514, -0.271883, -0.272252, + -0.272621, -0.272990, -0.273359, -0.273728, -0.274097, -0.274466, -0.274834, -0.275203, + -0.275572, -0.275940, -0.276309, -0.276678, -0.277046, -0.277415, -0.277783, -0.278151, + -0.278520, -0.278888, -0.279256, -0.279624, -0.279993, -0.280361, -0.280729, -0.281097, + -0.281465, -0.281833, -0.282201, -0.282569, -0.282937, -0.283304, -0.283672, -0.284040, + -0.284408, -0.284775, -0.285143, -0.285510, -0.285878, -0.286245, -0.286613, -0.286980, + -0.287347, -0.287715, -0.288082, -0.288449, -0.288816, -0.289184, -0.289551, -0.289918, + -0.290285, -0.290652, -0.291019, -0.291385, -0.291752, -0.292119, -0.292486, -0.292852, + -0.293219, -0.293586, -0.293952, -0.294319, -0.294685, -0.295052, -0.295418, -0.295785, + -0.296151, -0.296517, -0.296883, -0.297250, -0.297616, -0.297982, -0.298348, -0.298714, + -0.299080, -0.299446, -0.299812, -0.300177, -0.300543, -0.300909, -0.301275, -0.301640, + -0.302006, -0.302372, -0.302737, -0.303103, -0.303468, -0.303833, -0.304199, -0.304564, + -0.304929, -0.305294, -0.305660, -0.306025, -0.306390, -0.306755, -0.307120, -0.307485, + -0.307850, -0.308214, -0.308579, -0.308944, -0.309309, -0.309673, -0.310038, -0.310403, + -0.310767, -0.311132, -0.311496, -0.311860, -0.312225, -0.312589, -0.312953, -0.313318, + -0.313682, -0.314046, -0.314410, -0.314774, -0.315138, -0.315502, -0.315866, -0.316230, + -0.316593, -0.316957, -0.317321, -0.317684, -0.318048, -0.318412, -0.318775, -0.319139, + -0.319502, -0.319865, -0.320229, -0.320592, -0.320955, -0.321318, -0.321682, -0.322045, + -0.322408, -0.322771, -0.323134, -0.323497, -0.323859, -0.324222, -0.324585, -0.324948, + -0.325310, -0.325673, -0.326035, -0.326398, -0.326760, -0.327123, -0.327485, -0.327848, + -0.328210, -0.328572, -0.328934, -0.329296, -0.329658, -0.330020, -0.330382, -0.330744, + -0.331106, -0.331468, -0.331830, -0.332192, -0.332553, -0.332915, -0.333277, -0.333638, + -0.334000, -0.334361, -0.334722, -0.335084, -0.335445, -0.335806, -0.336168, -0.336529, + -0.336890, -0.337251, -0.337612, -0.337973, -0.338334, -0.338695, -0.339055, -0.339416, + -0.339777, -0.340138, -0.340498, -0.340859, -0.341219, -0.341580, -0.341940, -0.342300, + -0.342661, -0.343021, -0.343381, -0.343741, -0.344101, -0.344461, -0.344821, -0.345181, + -0.345541, -0.345901, -0.346261, -0.346621, -0.346980, -0.347340, -0.347700, -0.348059, + -0.348419, -0.348778, -0.349138, -0.349497, -0.349856, -0.350215, -0.350575, -0.350934, + -0.351293, -0.351652, -0.352011, -0.352370, -0.352729, -0.353087, -0.353446, -0.353805, + -0.354164, -0.354522, -0.354881, -0.355239, -0.355598, -0.355956, -0.356314, -0.356673, + -0.357031, -0.357389, -0.357747, -0.358105, -0.358463, -0.358821, -0.359179, -0.359537, + -0.359895, -0.360253, -0.360611, -0.360968, -0.361326, -0.361683, -0.362041, -0.362398, + -0.362756, -0.363113, -0.363470, -0.363828, -0.364185, -0.364542, -0.364899, -0.365256, + -0.365613, -0.365970, -0.366327, -0.366684, -0.367040, -0.367397, -0.367754, -0.368110, + -0.368467, -0.368823, -0.369180, -0.369536, -0.369892, -0.370249, -0.370605, -0.370961, + -0.371317, -0.371673, -0.372029, -0.372385, -0.372741, -0.373097, -0.373453, -0.373808, + -0.374164, -0.374520, -0.374875, -0.375231, -0.375586, -0.375942, -0.376297, -0.376652, + -0.377007, -0.377363, -0.377718, -0.378073, -0.378428, -0.378783, -0.379138, -0.379492, + -0.379847, -0.380202, -0.380557, -0.380911, -0.381266, -0.381620, -0.381975, -0.382329, + -0.382683, -0.383038, -0.383392, -0.383746, -0.384100, -0.384454, -0.384808, -0.385162, + -0.385516, -0.385870, -0.386224, -0.386577, -0.386931, -0.387285, -0.387638, -0.387992, + -0.388345, -0.388698, -0.389052, -0.389405, -0.389758, -0.390111, -0.390464, -0.390817, + -0.391170, -0.391523, -0.391876, -0.392229, -0.392582, -0.392934, -0.393287, -0.393640, + -0.393992, -0.394344, -0.394697, -0.395049, -0.395401, -0.395754, -0.396106, -0.396458, + -0.396810, -0.397162, -0.397514, -0.397866, -0.398218, -0.398569, -0.398921, -0.399273, + -0.399624, -0.399976, -0.400327, -0.400679, -0.401030, -0.401381, -0.401732, -0.402084, + -0.402435, -0.402786, -0.403137, -0.403488, -0.403838, -0.404189, -0.404540, -0.404891, + -0.405241, -0.405592, -0.405942, -0.406293, -0.406643, -0.406994, -0.407344, -0.407694, + -0.408044, -0.408394, -0.408744, -0.409094, -0.409444, -0.409794, -0.410144, -0.410493, + -0.410843, -0.411193, -0.411542, -0.411892, -0.412241, -0.412591, -0.412940, -0.413289, + -0.413638, -0.413987, -0.414337, -0.414685, -0.415034, -0.415383, -0.415732, -0.416081, + -0.416430, -0.416778, -0.417127, -0.417475, -0.417824, -0.418172, -0.418520, -0.418869, + -0.419217, -0.419565, -0.419913, -0.420261, -0.420609, -0.420957, -0.421305, -0.421653, + -0.422000, -0.422348, -0.422695, -0.423043, -0.423390, -0.423738, -0.424085, -0.424432, + -0.424780, -0.425127, -0.425474, -0.425821, -0.426168, -0.426515, -0.426862, -0.427208, + -0.427555, -0.427902, -0.428248, -0.428595, -0.428941, -0.429288, -0.429634, -0.429980, + -0.430326, -0.430673, -0.431019, -0.431365, -0.431711, -0.432057, -0.432402, -0.432748, + -0.433094, -0.433439, -0.433785, -0.434131, -0.434476, -0.434821, -0.435167, -0.435512, + -0.435857, -0.436202, -0.436547, -0.436892, -0.437237, -0.437582, -0.437927, -0.438272, + -0.438616, -0.438961, -0.439305, -0.439650, -0.439994, -0.440339, -0.440683, -0.441027, + -0.441371, -0.441715, -0.442059, -0.442403, -0.442747, -0.443091, -0.443435, -0.443779, + -0.444122, -0.444466, -0.444809, -0.445153, -0.445496, -0.445839, -0.446183, -0.446526, + -0.446869, -0.447212, -0.447555, -0.447898, -0.448241, -0.448583, -0.448926, -0.449269, + -0.449611, -0.449954, -0.450296, -0.450639, -0.450981, -0.451323, -0.451665, -0.452008, + -0.452350, -0.452692, -0.453033, -0.453375, -0.453717, -0.454059, -0.454400, -0.454742, + -0.455084, -0.455425, -0.455766, -0.456108, -0.456449, -0.456790, -0.457131, -0.457472, + -0.457813, -0.458154, -0.458495, -0.458836, -0.459177, -0.459517, -0.459858, -0.460198, + -0.460539, -0.460879, -0.461219, -0.461560, -0.461900, -0.462240, -0.462580, -0.462920, + -0.463260, -0.463600, -0.463939, -0.464279, -0.464619, -0.464958, -0.465298, -0.465637, + -0.465977, -0.466316, -0.466655, -0.466994, -0.467333, -0.467672, -0.468011, -0.468350, + -0.468689, -0.469028, -0.469366, -0.469705, -0.470043, -0.470382, -0.470720, -0.471058, + -0.471397, -0.471735, -0.472073, -0.472411, -0.472749, -0.473087, -0.473425, -0.473763, + -0.474100, -0.474438, -0.474775, -0.475113, -0.475450, -0.475788, -0.476125, -0.476462, + -0.476799, -0.477136, -0.477473, -0.477810, -0.478147, -0.478484, -0.478821, -0.479157, + -0.479494, -0.479830, -0.480167, -0.480503, -0.480839, -0.481176, -0.481512, -0.481848, + -0.482184, -0.482520, -0.482856, -0.483191, -0.483527, -0.483863, -0.484198, -0.484534, + -0.484869, -0.485205, -0.485540, -0.485875, -0.486210, -0.486545, -0.486880, -0.487215, + -0.487550, -0.487885, -0.488220, -0.488554, -0.488889, -0.489223, -0.489558, -0.489892, + -0.490226, -0.490561, -0.490895, -0.491229, -0.491563, -0.491897, -0.492231, -0.492564, + -0.492898, -0.493232, -0.493565, -0.493899, -0.494232, -0.494566, -0.494899, -0.495232, + -0.495565, -0.495898, -0.496231, -0.496564, -0.496897, -0.497230, -0.497562, -0.497895, + -0.498228, -0.498560, -0.498893, -0.499225, -0.499557, -0.499889, -0.500221, -0.500553, + -0.500885, -0.501217, -0.501549, -0.501881, -0.502212, -0.502544, -0.502876, -0.503207, + -0.503538, -0.503870, -0.504201, -0.504532, -0.504863, -0.505194, -0.505525, -0.505856, + -0.506187, -0.506517, -0.506848, -0.507179, -0.507509, -0.507839, -0.508170, -0.508500, + -0.508830, -0.509160, -0.509490, -0.509820, -0.510150, -0.510480, -0.510810, -0.511139, + -0.511469, -0.511798, -0.512128, -0.512457, -0.512786, -0.513116, -0.513445, -0.513774, + -0.514103, -0.514432, -0.514760, -0.515089, -0.515418, -0.515746, -0.516075, -0.516403, + -0.516732, -0.517060, -0.517388, -0.517716, -0.518045, -0.518372, -0.518700, -0.519028, + -0.519356, -0.519684, -0.520011, -0.520339, -0.520666, -0.520994, -0.521321, -0.521648, + -0.521975, -0.522302, -0.522629, -0.522956, -0.523283, -0.523610, -0.523937, -0.524263, + -0.524590, -0.524916, -0.525243, -0.525569, -0.525895, -0.526221, -0.526547, -0.526873, + -0.527199, -0.527525, -0.527851, -0.528176, -0.528502, -0.528828, -0.529153, -0.529478, + -0.529804, -0.530129, -0.530454, -0.530779, -0.531104, -0.531429, -0.531754, -0.532078, + -0.532403, -0.532728, -0.533052, -0.533377, -0.533701, -0.534025, -0.534349, -0.534674, + -0.534998, -0.535322, -0.535645, -0.535969, -0.536293, -0.536617, -0.536940, -0.537264, + -0.537587, -0.537910, -0.538234, -0.538557, -0.538880, -0.539203, -0.539526, -0.539849, + -0.540171, -0.540494, -0.540817, -0.541139, -0.541462, -0.541784, -0.542106, -0.542429, + -0.542751, -0.543073, -0.543395, -0.543717, -0.544039, -0.544360, -0.544682, -0.545003, + -0.545325, -0.545646, -0.545968, -0.546289, -0.546610, -0.546931, -0.547252, -0.547573, + -0.547894, -0.548215, -0.548536, -0.548856, -0.549177, -0.549497, -0.549818, -0.550138, + -0.550458, -0.550778, -0.551098, -0.551418, -0.551738, -0.552058, -0.552378, -0.552697, + -0.553017, -0.553336, -0.553656, -0.553975, -0.554294, -0.554613, -0.554932, -0.555251, + -0.555570, -0.555889, -0.556208, -0.556526, -0.556845, -0.557164, -0.557482, -0.557800, + -0.558119, -0.558437, -0.558755, -0.559073, -0.559391, -0.559709, -0.560026, -0.560344, + -0.560662, -0.560979, -0.561297, -0.561614, -0.561931, -0.562248, -0.562565, -0.562882, + -0.563199, -0.563516, -0.563833, -0.564150, -0.564466, -0.564783, -0.565099, -0.565416, + -0.565732, -0.566048, -0.566364, -0.566680, -0.566996, -0.567312, -0.567628, -0.567943, + -0.568259, -0.568574, -0.568890, -0.569205, -0.569521, -0.569836, -0.570151, -0.570466, + -0.570781, -0.571096, -0.571410, -0.571725, -0.572040, -0.572354, -0.572669, -0.572983, + -0.573297, -0.573611, -0.573925, -0.574239, -0.574553, -0.574867, -0.575181, -0.575495, + -0.575808, -0.576122, -0.576435, -0.576748, -0.577062, -0.577375, -0.577688, -0.578001, + -0.578314, -0.578627, -0.578939, -0.579252, -0.579565, -0.579877, -0.580189, -0.580502, + -0.580814, -0.581126, -0.581438, -0.581750, -0.582062, -0.582374, -0.582685, -0.582997, + -0.583309, -0.583620, -0.583931, -0.584243, -0.584554, -0.584865, -0.585176, -0.585487, + -0.585798, -0.586109, -0.586419, -0.586730, -0.587040, -0.587351, -0.587661, -0.587971, + -0.588282, -0.588592, -0.588902, -0.589212, -0.589521, -0.589831, -0.590141, -0.590450, + -0.590760, -0.591069, -0.591378, -0.591688, -0.591997, -0.592306, -0.592615, -0.592924, + -0.593232, -0.593541, -0.593850, -0.594158, -0.594467, -0.594775, -0.595083, -0.595391, + -0.595699, -0.596007, -0.596315, -0.596623, -0.596931, -0.597238, -0.597546, -0.597853, + -0.598161, -0.598468, -0.598775, -0.599082, -0.599389, -0.599696, -0.600003, -0.600310, + -0.600616, -0.600923, -0.601230, -0.601536, -0.601842, -0.602148, -0.602455, -0.602761, + -0.603067, -0.603372, -0.603678, -0.603984, -0.604290, -0.604595, -0.604900, -0.605206, + -0.605511, -0.605816, -0.606121, -0.606426, -0.606731, -0.607036, -0.607341, -0.607645, + -0.607950, -0.608254, -0.608559, -0.608863, -0.609167, -0.609471, -0.609775, -0.610079, + -0.610383, -0.610687, -0.610990, -0.611294, -0.611597, -0.611901, -0.612204, -0.612507, + -0.612810, -0.613113, -0.613416, -0.613719, -0.614022, -0.614324, -0.614627, -0.614929, + -0.615232, -0.615534, -0.615836, -0.616138, -0.616440, -0.616742, -0.617044, -0.617346, + -0.617647, -0.617949, -0.618250, -0.618552, -0.618853, -0.619154, -0.619455, -0.619756, + -0.620057, -0.620358, -0.620659, -0.620959, -0.621260, -0.621560, -0.621861, -0.622161, + -0.622461, -0.622761, -0.623061, -0.623361, -0.623661, -0.623961, -0.624260, -0.624560, + -0.624860, -0.625159, -0.625458, -0.625757, -0.626056, -0.626355, -0.626654, -0.626953, + -0.627252, -0.627550, -0.627849, -0.628147, -0.628446, -0.628744, -0.629042, -0.629340, + -0.629638, -0.629936, -0.630234, -0.630532, -0.630829, -0.631127, -0.631424, -0.631721, + -0.632019, -0.632316, -0.632613, -0.632910, -0.633207, -0.633504, -0.633800, -0.634097, + -0.634393, -0.634690, -0.634986, -0.635282, -0.635578, -0.635874, -0.636170, -0.636466, + -0.636762, -0.637057, -0.637353, -0.637649, -0.637944, -0.638239, -0.638534, -0.638829, + -0.639124, -0.639419, -0.639714, -0.640009, -0.640303, -0.640598, -0.640892, -0.641187, + -0.641481, -0.641775, -0.642069, -0.642363, -0.642657, -0.642951, -0.643245, -0.643538, + -0.643832, -0.644125, -0.644418, -0.644711, -0.645005, -0.645298, -0.645590, -0.645883, + -0.646176, -0.646469, -0.646761, -0.647054, -0.647346, -0.647638, -0.647930, -0.648222, + -0.648514, -0.648806, -0.649098, -0.649390, -0.649681, -0.649973, -0.650264, -0.650555, + -0.650847, -0.651138, -0.651429, -0.651720, -0.652011, -0.652301, -0.652592, -0.652882, + -0.653173, -0.653463, -0.653753, -0.654044, -0.654334, -0.654624, -0.654913, -0.655203, + -0.655493, -0.655782, -0.656072, -0.656361, -0.656651, -0.656940, -0.657229, -0.657518, + -0.657807, -0.658095, -0.658384, -0.658673, -0.658961, -0.659250, -0.659538, -0.659826, + -0.660114, -0.660402, -0.660690, -0.660978, -0.661266, -0.661553, -0.661841, -0.662128, + -0.662416, -0.662703, -0.662990, -0.663277, -0.663564, -0.663851, -0.664138, -0.664424, + -0.664711, -0.664997, -0.665284, -0.665570, -0.665856, -0.666142, -0.666428, -0.666714, + -0.667000, -0.667286, -0.667571, -0.667857, -0.668142, -0.668427, -0.668712, -0.668998, + -0.669283, -0.669567, -0.669852, -0.670137, -0.670422, -0.670706, -0.670990, -0.671275, + -0.671559, -0.671843, -0.672127, -0.672411, -0.672695, -0.672978, -0.673262, -0.673546, + -0.673829, -0.674112, -0.674396, -0.674679, -0.674962, -0.675245, -0.675527, -0.675810, + -0.676093, -0.676375, -0.676658, -0.676940, -0.677222, -0.677504, -0.677786, -0.678068, + -0.678350, -0.678632, -0.678913, -0.679195, -0.679476, -0.679758, -0.680039, -0.680320, + -0.680601, -0.680882, -0.681163, -0.681443, -0.681724, -0.682005, -0.682285, -0.682565, + -0.682846, -0.683126, -0.683406, -0.683686, -0.683965, -0.684245, -0.684525, -0.684804, + -0.685084, -0.685363, -0.685642, -0.685921, -0.686200, -0.686479, -0.686758, -0.687037, + -0.687315, -0.687594, -0.687872, -0.688151, -0.688429, -0.688707, -0.688985, -0.689263, + -0.689541, -0.689818, -0.690096, -0.690373, -0.690651, -0.690928, -0.691205, -0.691482, + -0.691759, -0.692036, -0.692313, -0.692590, -0.692866, -0.693143, -0.693419, -0.693695, + -0.693971, -0.694248, -0.694524, -0.694799, -0.695075, -0.695351, -0.695626, -0.695902, + -0.696177, -0.696452, -0.696728, -0.697003, -0.697277, -0.697552, -0.697827, -0.698102, + -0.698376, -0.698651, -0.698925, -0.699199, -0.699473, -0.699747, -0.700021, -0.700295, + -0.700569, -0.700842, -0.701116, -0.701389, -0.701663, -0.701936, -0.702209, -0.702482, + -0.702755, -0.703028, -0.703300, -0.703573, -0.703845, -0.704118, -0.704390, -0.704662, + -0.704934, -0.705206, -0.705478, -0.705750, -0.706021, -0.706293, -0.706564, -0.706836, + -0.707107, -0.707378, -0.707649, -0.707920, -0.708191, -0.708461, -0.708732, -0.709002, + -0.709273, -0.709543, -0.709813, -0.710083, -0.710353, -0.710623, -0.710893, -0.711163, + -0.711432, -0.711702, -0.711971, -0.712240, -0.712509, -0.712778, -0.713047, -0.713316, + -0.713585, -0.713853, -0.714122, -0.714390, -0.714659, -0.714927, -0.715195, -0.715463, + -0.715731, -0.715999, -0.716266, -0.716534, -0.716801, -0.717069, -0.717336, -0.717603, + -0.717870, -0.718137, -0.718404, -0.718670, -0.718937, -0.719204, -0.719470, -0.719736, + -0.720003, -0.720269, -0.720535, -0.720800, -0.721066, -0.721332, -0.721597, -0.721863, + -0.722128, -0.722393, -0.722659, -0.722924, -0.723188, -0.723453, -0.723718, -0.723983, + -0.724247, -0.724511, -0.724776, -0.725040, -0.725304, -0.725568, -0.725832, -0.726095, + -0.726359, -0.726623, -0.726886, -0.727149, -0.727413, -0.727676, -0.727939, -0.728202, + -0.728464, -0.728727, -0.728990, -0.729252, -0.729514, -0.729777, -0.730039, -0.730301, + -0.730563, -0.730825, -0.731086, -0.731348, -0.731609, -0.731871, -0.732132, -0.732393, + -0.732654, -0.732915, -0.733176, -0.733437, -0.733697, -0.733958, -0.734218, -0.734479, + -0.734739, -0.734999, -0.735259, -0.735519, -0.735779, -0.736038, -0.736298, -0.736557, + -0.736817, -0.737076, -0.737335, -0.737594, -0.737853, -0.738112, -0.738370, -0.738629, + -0.738887, -0.739146, -0.739404, -0.739662, -0.739920, -0.740178, -0.740436, -0.740694, + -0.740951, -0.741209, -0.741466, -0.741723, -0.741980, -0.742237, -0.742494, -0.742751, + -0.743008, -0.743265, -0.743521, -0.743777, -0.744034, -0.744290, -0.744546, -0.744802, + -0.745058, -0.745314, -0.745569, -0.745825, -0.746080, -0.746335, -0.746591, -0.746846, + -0.747101, -0.747355, -0.747610, -0.747865, -0.748119, -0.748374, -0.748628, -0.748882, + -0.749136, -0.749390, -0.749644, -0.749898, -0.750152, -0.750405, -0.750659, -0.750912, + -0.751165, -0.751418, -0.751671, -0.751924, -0.752177, -0.752429, -0.752682, -0.752934, + -0.753187, -0.753439, -0.753691, -0.753943, -0.754195, -0.754447, -0.754698, -0.754950, + -0.755201, -0.755453, -0.755704, -0.755955, -0.756206, -0.756457, -0.756708, -0.756958, + -0.757209, -0.757459, -0.757710, -0.757960, -0.758210, -0.758460, -0.758710, -0.758960, + -0.759209, -0.759459, -0.759708, -0.759957, -0.760207, -0.760456, -0.760705, -0.760954, + -0.761202, -0.761451, -0.761700, -0.761948, -0.762196, -0.762444, -0.762693, -0.762941, + -0.763188, -0.763436, -0.763684, -0.763931, -0.764179, -0.764426, -0.764673, -0.764920, + -0.765167, -0.765414, -0.765661, -0.765907, -0.766154, -0.766400, -0.766647, -0.766893, + -0.767139, -0.767385, -0.767631, -0.767876, -0.768122, -0.768368, -0.768613, -0.768858, + -0.769103, -0.769348, -0.769593, -0.769838, -0.770083, -0.770327, -0.770572, -0.770816, + -0.771061, -0.771305, -0.771549, -0.771793, -0.772036, -0.772280, -0.772524, -0.772767, + -0.773010, -0.773254, -0.773497, -0.773740, -0.773983, -0.774225, -0.774468, -0.774711, + -0.774953, -0.775195, -0.775438, -0.775680, -0.775922, -0.776164, -0.776405, -0.776647, + -0.776888, -0.777130, -0.777371, -0.777612, -0.777853, -0.778094, -0.778335, -0.778576, + -0.778817, -0.779057, -0.779297, -0.779538, -0.779778, -0.780018, -0.780258, -0.780498, + -0.780737, -0.780977, -0.781216, -0.781456, -0.781695, -0.781934, -0.782173, -0.782412, + -0.782651, -0.782889, -0.783128, -0.783366, -0.783605, -0.783843, -0.784081, -0.784319, + -0.784557, -0.784794, -0.785032, -0.785269, -0.785507, -0.785744, -0.785981, -0.786218, + -0.786455, -0.786692, -0.786929, -0.787165, -0.787402, -0.787638, -0.787874, -0.788110, + -0.788346, -0.788582, -0.788818, -0.789054, -0.789289, -0.789525, -0.789760, -0.789995, + -0.790230, -0.790465, -0.790700, -0.790935, -0.791169, -0.791404, -0.791638, -0.791872, + -0.792107, -0.792341, -0.792575, -0.792808, -0.793042, -0.793276, -0.793509, -0.793742, + -0.793975, -0.794209, -0.794442, -0.794674, -0.794907, -0.795140, -0.795372, -0.795605, + -0.795837, -0.796069, -0.796301, -0.796533, -0.796765, -0.796996, -0.797228, -0.797459, + -0.797691, -0.797922, -0.798153, -0.798384, -0.798615, -0.798846, -0.799076, -0.799307, + -0.799537, -0.799768, -0.799998, -0.800228, -0.800458, -0.800687, -0.800917, -0.801147, + -0.801376, -0.801606, -0.801835, -0.802064, -0.802293, -0.802522, -0.802750, -0.802979, + -0.803208, -0.803436, -0.803664, -0.803892, -0.804120, -0.804348, -0.804576, -0.804804, + -0.805031, -0.805259, -0.805486, -0.805713, -0.805940, -0.806167, -0.806394, -0.806621, + -0.806848, -0.807074, -0.807300, -0.807527, -0.807753, -0.807979, -0.808205, -0.808430, + -0.808656, -0.808882, -0.809107, -0.809332, -0.809558, -0.809783, -0.810008, -0.810232, + -0.810457, -0.810682, -0.810906, -0.811131, -0.811355, -0.811579, -0.811803, -0.812027, + -0.812251, -0.812474, -0.812698, -0.812921, -0.813144, -0.813368, -0.813591, -0.813814, + -0.814036, -0.814259, -0.814482, -0.814704, -0.814926, -0.815149, -0.815371, -0.815593, + -0.815814, -0.816036, -0.816258, -0.816479, -0.816701, -0.816922, -0.817143, -0.817364, + -0.817585, -0.817806, -0.818026, -0.818247, -0.818467, -0.818687, -0.818908, -0.819128, + -0.819348, -0.819567, -0.819787, -0.820007, -0.820226, -0.820445, -0.820664, -0.820884, + -0.821102, -0.821321, -0.821540, -0.821759, -0.821977, -0.822195, -0.822414, -0.822632, + -0.822850, -0.823068, -0.823285, -0.823503, -0.823721, -0.823938, -0.824155, -0.824372, + -0.824589, -0.824806, -0.825023, -0.825240, -0.825456, -0.825673, -0.825889, -0.826105, + -0.826321, -0.826537, -0.826753, -0.826968, -0.827184, -0.827399, -0.827615, -0.827830, + -0.828045, -0.828260, -0.828475, -0.828690, -0.828904, -0.829119, -0.829333, -0.829547, + -0.829761, -0.829975, -0.830189, -0.830403, -0.830616, -0.830830, -0.831043, -0.831257, + -0.831470, -0.831683, -0.831895, -0.832108, -0.832321, -0.832533, -0.832746, -0.832958, + -0.833170, -0.833382, -0.833594, -0.833806, -0.834018, -0.834229, -0.834440, -0.834652, + -0.834863, -0.835074, -0.835285, -0.835496, -0.835706, -0.835917, -0.836127, -0.836338, + -0.836548, -0.836758, -0.836968, -0.837178, -0.837387, -0.837597, -0.837806, -0.838015, + -0.838225, -0.838434, -0.838643, -0.838852, -0.839060, -0.839269, -0.839477, -0.839686, + -0.839894, -0.840102, -0.840310, -0.840518, -0.840725, -0.840933, -0.841140, -0.841348, + -0.841555, -0.841762, -0.841969, -0.842176, -0.842383, -0.842589, -0.842796, -0.843002, + -0.843208, -0.843414, -0.843620, -0.843826, -0.844032, -0.844238, -0.844443, -0.844648, + -0.844854, -0.845059, -0.845264, -0.845469, -0.845673, -0.845878, -0.846082, -0.846287, + -0.846491, -0.846695, -0.846899, -0.847103, -0.847307, -0.847510, -0.847714, -0.847917, + -0.848120, -0.848323, -0.848526, -0.848729, -0.848932, -0.849135, -0.849337, -0.849540, + -0.849742, -0.849944, -0.850146, -0.850348, -0.850549, -0.850751, -0.850953, -0.851154, + -0.851355, -0.851556, -0.851757, -0.851958, -0.852159, -0.852360, -0.852560, -0.852760, + -0.852961, -0.853161, -0.853361, -0.853561, -0.853760, -0.853960, -0.854159, -0.854359, + -0.854558, -0.854757, -0.854956, -0.855155, -0.855354, -0.855552, -0.855751, -0.855949, + -0.856147, -0.856345, -0.856543, -0.856741, -0.856939, -0.857137, -0.857334, -0.857531, + -0.857729, -0.857926, -0.858123, -0.858320, -0.858516, -0.858713, -0.858909, -0.859106, + -0.859302, -0.859498, -0.859694, -0.859890, -0.860085, -0.860281, -0.860476, -0.860672, + -0.860867, -0.861062, -0.861257, -0.861452, -0.861646, -0.861841, -0.862035, -0.862230, + -0.862424, -0.862618, -0.862812, -0.863006, -0.863199, -0.863393, -0.863586, -0.863780, + -0.863973, -0.864166, -0.864359, -0.864552, -0.864744, -0.864937, -0.865129, -0.865321, + -0.865514, -0.865706, -0.865898, -0.866089, -0.866281, -0.866472, -0.866664, -0.866855, + -0.867046, -0.867237, -0.867428, -0.867619, -0.867809, -0.868000, -0.868190, -0.868381, + -0.868571, -0.868761, -0.868951, -0.869140, -0.869330, -0.869519, -0.869709, -0.869898, + -0.870087, -0.870276, -0.870465, -0.870654, -0.870842, -0.871031, -0.871219, -0.871407, + -0.871595, -0.871783, -0.871971, -0.872159, -0.872346, -0.872534, -0.872721, -0.872908, + -0.873095, -0.873282, -0.873469, -0.873655, -0.873842, -0.874028, -0.874215, -0.874401, + -0.874587, -0.874773, -0.874958, -0.875144, -0.875329, -0.875515, -0.875700, -0.875885, + -0.876070, -0.876255, -0.876440, -0.876624, -0.876809, -0.876993, -0.877177, -0.877361, + -0.877545, -0.877729, -0.877913, -0.878096, -0.878280, -0.878463, -0.878646, -0.878829, + -0.879012, -0.879195, -0.879378, -0.879560, -0.879743, -0.879925, -0.880107, -0.880289, + -0.880471, -0.880653, -0.880834, -0.881016, -0.881197, -0.881378, -0.881559, -0.881740, + -0.881921, -0.882102, -0.882283, -0.882463, -0.882643, -0.882824, -0.883004, -0.883184, + -0.883363, -0.883543, -0.883723, -0.883902, -0.884081, -0.884260, -0.884439, -0.884618, + -0.884797, -0.884976, -0.885154, -0.885333, -0.885511, -0.885689, -0.885867, -0.886045, + -0.886223, -0.886400, -0.886578, -0.886755, -0.886932, -0.887109, -0.887286, -0.887463, + -0.887640, -0.887816, -0.887993, -0.888169, -0.888345, -0.888521, -0.888697, -0.888873, + -0.889048, -0.889224, -0.889399, -0.889574, -0.889750, -0.889925, -0.890099, -0.890274, + -0.890449, -0.890623, -0.890797, -0.890972, -0.891146, -0.891320, -0.891493, -0.891667, + -0.891841, -0.892014, -0.892187, -0.892361, -0.892534, -0.892706, -0.892879, -0.893052, + -0.893224, -0.893397, -0.893569, -0.893741, -0.893913, -0.894085, -0.894256, -0.894428, + -0.894599, -0.894771, -0.894942, -0.895113, -0.895284, -0.895455, -0.895625, -0.895796, + -0.895966, -0.896137, -0.896307, -0.896477, -0.896646, -0.896816, -0.896986, -0.897155, + -0.897325, -0.897494, -0.897663, -0.897832, -0.898001, -0.898169, -0.898338, -0.898506, + -0.898674, -0.898843, -0.899011, -0.899179, -0.899346, -0.899514, -0.899681, -0.899849, + -0.900016, -0.900183, -0.900350, -0.900517, -0.900683, -0.900850, -0.901016, -0.901183, + -0.901349, -0.901515, -0.901681, -0.901847, -0.902012, -0.902178, -0.902343, -0.902508, + -0.902673, -0.902838, -0.903003, -0.903168, -0.903332, -0.903497, -0.903661, -0.903825, + -0.903989, -0.904153, -0.904317, -0.904481, -0.904644, -0.904807, -0.904971, -0.905134, + -0.905297, -0.905460, -0.905622, -0.905785, -0.905947, -0.906110, -0.906272, -0.906434, + -0.906596, -0.906757, -0.906919, -0.907081, -0.907242, -0.907403, -0.907564, -0.907725, + -0.907886, -0.908047, -0.908207, -0.908368, -0.908528, -0.908688, -0.908848, -0.909008, + -0.909168, -0.909328, -0.909487, -0.909646, -0.909806, -0.909965, -0.910124, -0.910283, + -0.910441, -0.910600, -0.910758, -0.910917, -0.911075, -0.911233, -0.911391, -0.911548, + -0.911706, -0.911864, -0.912021, -0.912178, -0.912335, -0.912492, -0.912649, -0.912806, + -0.912962, -0.913119, -0.913275, -0.913431, -0.913587, -0.913743, -0.913899, -0.914054, + -0.914210, -0.914365, -0.914520, -0.914675, -0.914830, -0.914985, -0.915140, -0.915294, + -0.915449, -0.915603, -0.915757, -0.915911, -0.916065, -0.916219, -0.916372, -0.916526, + -0.916679, -0.916832, -0.916985, -0.917138, -0.917291, -0.917444, -0.917596, -0.917749, + -0.917901, -0.918053, -0.918205, -0.918357, -0.918508, -0.918660, -0.918811, -0.918963, + -0.919114, -0.919265, -0.919416, -0.919567, -0.919717, -0.919868, -0.920018, -0.920168, + -0.920318, -0.920468, -0.920618, -0.920768, -0.920917, -0.921067, -0.921216, -0.921365, + -0.921514, -0.921663, -0.921812, -0.921960, -0.922109, -0.922257, -0.922405, -0.922553, + -0.922701, -0.922849, -0.922997, -0.923144, -0.923291, -0.923439, -0.923586, -0.923733, + -0.923880, -0.924026, -0.924173, -0.924319, -0.924465, -0.924612, -0.924758, -0.924904, + -0.925049, -0.925195, -0.925340, -0.925486, -0.925631, -0.925776, -0.925921, -0.926066, + -0.926210, -0.926355, -0.926499, -0.926643, -0.926787, -0.926931, -0.927075, -0.927219, + -0.927363, -0.927506, -0.927649, -0.927792, -0.927935, -0.928078, -0.928221, -0.928364, + -0.928506, -0.928648, -0.928791, -0.928933, -0.929075, -0.929216, -0.929358, -0.929500, + -0.929641, -0.929782, -0.929923, -0.930064, -0.930205, -0.930346, -0.930486, -0.930627, + -0.930767, -0.930907, -0.931047, -0.931187, -0.931327, -0.931466, -0.931606, -0.931745, + -0.931884, -0.932023, -0.932162, -0.932301, -0.932440, -0.932578, -0.932716, -0.932855, + -0.932993, -0.933131, -0.933269, -0.933406, -0.933544, -0.933681, -0.933818, -0.933956, + -0.934093, -0.934229, -0.934366, -0.934503, -0.934639, -0.934775, -0.934912, -0.935048, + -0.935184, -0.935319, -0.935455, -0.935590, -0.935726, -0.935861, -0.935996, -0.936131, + -0.936266, -0.936400, -0.936535, -0.936669, -0.936803, -0.936938, -0.937072, -0.937205, + -0.937339, -0.937473, -0.937606, -0.937739, -0.937872, -0.938005, -0.938138, -0.938271, + -0.938404, -0.938536, -0.938668, -0.938800, -0.938932, -0.939064, -0.939196, -0.939328, + -0.939459, -0.939591, -0.939722, -0.939853, -0.939984, -0.940115, -0.940245, -0.940376, + -0.940506, -0.940636, -0.940766, -0.940896, -0.941026, -0.941156, -0.941285, -0.941415, + -0.941544, -0.941673, -0.941802, -0.941931, -0.942060, -0.942188, -0.942317, -0.942445, + -0.942573, -0.942701, -0.942829, -0.942957, -0.943084, -0.943212, -0.943339, -0.943466, + -0.943593, -0.943720, -0.943847, -0.943974, -0.944100, -0.944227, -0.944353, -0.944479, + -0.944605, -0.944731, -0.944856, -0.944982, -0.945107, -0.945232, -0.945358, -0.945482, + -0.945607, -0.945732, -0.945857, -0.945981, -0.946105, -0.946229, -0.946353, -0.946477, + -0.946601, -0.946724, -0.946848, -0.946971, -0.947094, -0.947217, -0.947340, -0.947463, + -0.947586, -0.947708, -0.947830, -0.947953, -0.948075, -0.948196, -0.948318, -0.948440, + -0.948561, -0.948683, -0.948804, -0.948925, -0.949046, -0.949167, -0.949287, -0.949408, + -0.949528, -0.949648, -0.949768, -0.949888, -0.950008, -0.950128, -0.950247, -0.950367, + -0.950486, -0.950605, -0.950724, -0.950843, -0.950962, -0.951080, -0.951199, -0.951317, + -0.951435, -0.951553, -0.951671, -0.951789, -0.951906, -0.952024, -0.952141, -0.952258, + -0.952375, -0.952492, -0.952609, -0.952725, -0.952842, -0.952958, -0.953074, -0.953190, + -0.953306, -0.953422, -0.953537, -0.953653, -0.953768, -0.953883, -0.953998, -0.954113, + -0.954228, -0.954343, -0.954457, -0.954572, -0.954686, -0.954800, -0.954914, -0.955028, + -0.955141, -0.955255, -0.955368, -0.955481, -0.955594, -0.955707, -0.955820, -0.955933, + -0.956045, -0.956158, -0.956270, -0.956382, -0.956494, -0.956606, -0.956717, -0.956829, + -0.956940, -0.957052, -0.957163, -0.957274, -0.957385, -0.957495, -0.957606, -0.957716, + -0.957826, -0.957937, -0.958046, -0.958156, -0.958266, -0.958376, -0.958485, -0.958594, + -0.958703, -0.958812, -0.958921, -0.959030, -0.959139, -0.959247, -0.959355, -0.959463, + -0.959572, -0.959679, -0.959787, -0.959895, -0.960002, -0.960109, -0.960217, -0.960324, + -0.960431, -0.960537, -0.960644, -0.960750, -0.960857, -0.960963, -0.961069, -0.961175, + -0.961280, -0.961386, -0.961492, -0.961597, -0.961702, -0.961807, -0.961912, -0.962017, + -0.962121, -0.962226, -0.962330, -0.962434, -0.962538, -0.962642, -0.962746, -0.962850, + -0.962953, -0.963057, -0.963160, -0.963263, -0.963366, -0.963469, -0.963571, -0.963674, + -0.963776, -0.963878, -0.963980, -0.964082, -0.964184, -0.964286, -0.964387, -0.964489, + -0.964590, -0.964691, -0.964792, -0.964893, -0.964993, -0.965094, -0.965194, -0.965294, + -0.965394, -0.965494, -0.965594, -0.965694, -0.965793, -0.965893, -0.965992, -0.966091, + -0.966190, -0.966289, -0.966387, -0.966486, -0.966584, -0.966683, -0.966781, -0.966879, + -0.966976, -0.967074, -0.967172, -0.967269, -0.967366, -0.967463, -0.967560, -0.967657, + -0.967754, -0.967850, -0.967947, -0.968043, -0.968139, -0.968235, -0.968331, -0.968427, + -0.968522, -0.968617, -0.968713, -0.968808, -0.968903, -0.968998, -0.969092, -0.969187, + -0.969281, -0.969375, -0.969470, -0.969564, -0.969657, -0.969751, -0.969845, -0.969938, + -0.970031, -0.970124, -0.970217, -0.970310, -0.970403, -0.970495, -0.970588, -0.970680, + -0.970772, -0.970864, -0.970956, -0.971048, -0.971139, -0.971231, -0.971322, -0.971413, + -0.971504, -0.971595, -0.971685, -0.971776, -0.971866, -0.971957, -0.972047, -0.972137, + -0.972227, -0.972316, -0.972406, -0.972495, -0.972584, -0.972673, -0.972762, -0.972851, + -0.972940, -0.973028, -0.973117, -0.973205, -0.973293, -0.973381, -0.973469, -0.973557, + -0.973644, -0.973732, -0.973819, -0.973906, -0.973993, -0.974080, -0.974166, -0.974253, + -0.974339, -0.974426, -0.974512, -0.974598, -0.974684, -0.974769, -0.974855, -0.974940, + -0.975025, -0.975110, -0.975195, -0.975280, -0.975365, -0.975449, -0.975534, -0.975618, + -0.975702, -0.975786, -0.975870, -0.975954, -0.976037, -0.976120, -0.976204, -0.976287, + -0.976370, -0.976453, -0.976535, -0.976618, -0.976700, -0.976782, -0.976864, -0.976946, + -0.977028, -0.977110, -0.977191, -0.977273, -0.977354, -0.977435, -0.977516, -0.977597, + -0.977677, -0.977758, -0.977838, -0.977918, -0.977998, -0.978078, -0.978158, -0.978238, + -0.978317, -0.978397, -0.978476, -0.978555, -0.978634, -0.978713, -0.978791, -0.978870, + -0.978948, -0.979026, -0.979104, -0.979182, -0.979260, -0.979338, -0.979415, -0.979493, + -0.979570, -0.979647, -0.979724, -0.979800, -0.979877, -0.979954, -0.980030, -0.980106, + -0.980182, -0.980258, -0.980334, -0.980409, -0.980485, -0.980560, -0.980635, -0.980710, + -0.980785, -0.980860, -0.980935, -0.981009, -0.981083, -0.981158, -0.981232, -0.981305, + -0.981379, -0.981453, -0.981526, -0.981600, -0.981673, -0.981746, -0.981819, -0.981891, + -0.981964, -0.982036, -0.982109, -0.982181, -0.982253, -0.982325, -0.982396, -0.982468, + -0.982539, -0.982611, -0.982682, -0.982753, -0.982824, -0.982894, -0.982965, -0.983035, + -0.983105, -0.983176, -0.983246, -0.983315, -0.983385, -0.983455, -0.983524, -0.983593, + -0.983662, -0.983731, -0.983800, -0.983869, -0.983937, -0.984006, -0.984074, -0.984142, + -0.984210, -0.984278, -0.984346, -0.984413, -0.984480, -0.984548, -0.984615, -0.984682, + -0.984748, -0.984815, -0.984882, -0.984948, -0.985014, -0.985080, -0.985146, -0.985212, + -0.985278, -0.985343, -0.985408, -0.985474, -0.985539, -0.985604, -0.985668, -0.985733, + -0.985798, -0.985862, -0.985926, -0.985990, -0.986054, -0.986118, -0.986181, -0.986245, + -0.986308, -0.986371, -0.986434, -0.986497, -0.986560, -0.986623, -0.986685, -0.986747, + -0.986809, -0.986871, -0.986933, -0.986995, -0.987057, -0.987118, -0.987179, -0.987240, + -0.987301, -0.987362, -0.987423, -0.987484, -0.987544, -0.987604, -0.987664, -0.987724, + -0.987784, -0.987844, -0.987903, -0.987963, -0.988022, -0.988081, -0.988140, -0.988199, + -0.988258, -0.988316, -0.988374, -0.988433, -0.988491, -0.988549, -0.988607, -0.988664, + -0.988722, -0.988779, -0.988836, -0.988893, -0.988950, -0.989007, -0.989064, -0.989120, + -0.989177, -0.989233, -0.989289, -0.989345, -0.989400, -0.989456, -0.989511, -0.989567, + -0.989622, -0.989677, -0.989732, -0.989787, -0.989841, -0.989896, -0.989950, -0.990004, + -0.990058, -0.990112, -0.990166, -0.990219, -0.990273, -0.990326, -0.990379, -0.990432, + -0.990485, -0.990538, -0.990590, -0.990643, -0.990695, -0.990747, -0.990799, -0.990851, + -0.990903, -0.990954, -0.991006, -0.991057, -0.991108, -0.991159, -0.991210, -0.991260, + -0.991311, -0.991361, -0.991411, -0.991462, -0.991511, -0.991561, -0.991611, -0.991660, + -0.991710, -0.991759, -0.991808, -0.991857, -0.991906, -0.991954, -0.992003, -0.992051, + -0.992099, -0.992147, -0.992195, -0.992243, -0.992291, -0.992338, -0.992385, -0.992433, + -0.992480, -0.992526, -0.992573, -0.992620, -0.992666, -0.992712, -0.992759, -0.992805, + -0.992850, -0.992896, -0.992942, -0.992987, -0.993032, -0.993077, -0.993122, -0.993167, + -0.993212, -0.993257, -0.993301, -0.993345, -0.993389, -0.993433, -0.993477, -0.993521, + -0.993564, -0.993608, -0.993651, -0.993694, -0.993737, -0.993779, -0.993822, -0.993865, + -0.993907, -0.993949, -0.993991, -0.994033, -0.994075, -0.994116, -0.994158, -0.994199, + -0.994240, -0.994281, -0.994322, -0.994363, -0.994404, -0.994444, -0.994484, -0.994525, + -0.994565, -0.994604, -0.994644, -0.994684, -0.994723, -0.994762, -0.994802, -0.994841, + -0.994879, -0.994918, -0.994957, -0.994995, -0.995033, -0.995071, -0.995109, -0.995147, + -0.995185, -0.995222, -0.995260, -0.995297, -0.995334, -0.995371, -0.995408, -0.995444, + -0.995481, -0.995517, -0.995553, -0.995589, -0.995625, -0.995661, -0.995697, -0.995732, + -0.995767, -0.995803, -0.995838, -0.995872, -0.995907, -0.995942, -0.995976, -0.996011, + -0.996045, -0.996079, -0.996113, -0.996146, -0.996180, -0.996213, -0.996247, -0.996280, + -0.996313, -0.996345, -0.996378, -0.996411, -0.996443, -0.996475, -0.996507, -0.996539, + -0.996571, -0.996603, -0.996634, -0.996666, -0.996697, -0.996728, -0.996759, -0.996790, + -0.996820, -0.996851, -0.996881, -0.996911, -0.996941, -0.996971, -0.997001, -0.997031, + -0.997060, -0.997089, -0.997119, -0.997148, -0.997176, -0.997205, -0.997234, -0.997262, + -0.997290, -0.997319, -0.997347, -0.997374, -0.997402, -0.997430, -0.997457, -0.997484, + -0.997511, -0.997538, -0.997565, -0.997592, -0.997618, -0.997645, -0.997671, -0.997697, + -0.997723, -0.997749, -0.997774, -0.997800, -0.997825, -0.997851, -0.997876, -0.997901, + -0.997925, -0.997950, -0.997974, -0.997999, -0.998023, -0.998047, -0.998071, -0.998094, + -0.998118, -0.998142, -0.998165, -0.998188, -0.998211, -0.998234, -0.998257, -0.998279, + -0.998302, -0.998324, -0.998346, -0.998368, -0.998390, -0.998411, -0.998433, -0.998454, + -0.998476, -0.998497, -0.998518, -0.998538, -0.998559, -0.998580, -0.998600, -0.998620, + -0.998640, -0.998660, -0.998680, -0.998700, -0.998719, -0.998738, -0.998758, -0.998777, + -0.998795, -0.998814, -0.998833, -0.998851, -0.998870, -0.998888, -0.998906, -0.998924, + -0.998941, -0.998959, -0.998976, -0.998994, -0.999011, -0.999028, -0.999044, -0.999061, + -0.999078, -0.999094, -0.999110, -0.999126, -0.999142, -0.999158, -0.999174, -0.999189, + -0.999205, -0.999220, -0.999235, -0.999250, -0.999265, -0.999279, -0.999294, -0.999308, + -0.999322, -0.999336, -0.999350, -0.999364, -0.999378, -0.999391, -0.999404, -0.999418, + -0.999431, -0.999443, -0.999456, -0.999469, -0.999481, -0.999493, -0.999506, -0.999518, + -0.999529, -0.999541, -0.999553, -0.999564, -0.999575, -0.999586, -0.999597, -0.999608, + -0.999619, -0.999629, -0.999640, -0.999650, -0.999660, -0.999670, -0.999680, -0.999689, + -0.999699, -0.999708, -0.999717, -0.999726, -0.999735, -0.999744, -0.999753, -0.999761, + -0.999769, -0.999778, -0.999786, -0.999793, -0.999801, -0.999809, -0.999816, -0.999823, + -0.999831, -0.999838, -0.999844, -0.999851, -0.999858, -0.999864, -0.999870, -0.999876, + -0.999882, -0.999888, -0.999894, -0.999899, -0.999905, -0.999910, -0.999915, -0.999920, + -0.999925, -0.999929, -0.999934, -0.999938, -0.999942, -0.999946, -0.999950, -0.999954, + -0.999958, -0.999961, -0.999964, -0.999968, -0.999971, -0.999973, -0.999976, -0.999979, + -0.999981, -0.999983, -0.999986, -0.999988, -0.999989, -0.999991, -0.999993, -0.999994, + -0.999995, -0.999996, -0.999997, -0.999998, -0.999999, -0.999999, -1.000000, -1.000000 +}; + +static const float sinTable32768[16384] = { + 0.000000, 0.000192, 0.000383, 0.000575, 0.000767, 0.000959, 0.001150, 0.001342, + 0.001534, 0.001726, 0.001917, 0.002109, 0.002301, 0.002493, 0.002684, 0.002876, + 0.003068, 0.003260, 0.003451, 0.003643, 0.003835, 0.004027, 0.004218, 0.004410, + 0.004602, 0.004794, 0.004985, 0.005177, 0.005369, 0.005561, 0.005752, 0.005944, + 0.006136, 0.006328, 0.006519, 0.006711, 0.006903, 0.007095, 0.007286, 0.007478, + 0.007670, 0.007862, 0.008053, 0.008245, 0.008437, 0.008629, 0.008820, 0.009012, + 0.009204, 0.009395, 0.009587, 0.009779, 0.009971, 0.010162, 0.010354, 0.010546, + 0.010738, 0.010929, 0.011121, 0.011313, 0.011505, 0.011696, 0.011888, 0.012080, + 0.012272, 0.012463, 0.012655, 0.012847, 0.013038, 0.013230, 0.013422, 0.013614, + 0.013805, 0.013997, 0.014189, 0.014381, 0.014572, 0.014764, 0.014956, 0.015147, + 0.015339, 0.015531, 0.015723, 0.015914, 0.016106, 0.016298, 0.016490, 0.016681, + 0.016873, 0.017065, 0.017256, 0.017448, 0.017640, 0.017832, 0.018023, 0.018215, + 0.018407, 0.018598, 0.018790, 0.018982, 0.019174, 0.019365, 0.019557, 0.019749, + 0.019940, 0.020132, 0.020324, 0.020516, 0.020707, 0.020899, 0.021091, 0.021282, + 0.021474, 0.021666, 0.021857, 0.022049, 0.022241, 0.022433, 0.022624, 0.022816, + 0.023008, 0.023199, 0.023391, 0.023583, 0.023774, 0.023966, 0.024158, 0.024350, + 0.024541, 0.024733, 0.024925, 0.025116, 0.025308, 0.025500, 0.025691, 0.025883, + 0.026075, 0.026266, 0.026458, 0.026650, 0.026841, 0.027033, 0.027225, 0.027416, + 0.027608, 0.027800, 0.027991, 0.028183, 0.028375, 0.028567, 0.028758, 0.028950, + 0.029142, 0.029333, 0.029525, 0.029717, 0.029908, 0.030100, 0.030291, 0.030483, + 0.030675, 0.030866, 0.031058, 0.031250, 0.031441, 0.031633, 0.031825, 0.032016, + 0.032208, 0.032400, 0.032591, 0.032783, 0.032975, 0.033166, 0.033358, 0.033550, + 0.033741, 0.033933, 0.034124, 0.034316, 0.034508, 0.034699, 0.034891, 0.035083, + 0.035274, 0.035466, 0.035657, 0.035849, 0.036041, 0.036232, 0.036424, 0.036616, + 0.036807, 0.036999, 0.037190, 0.037382, 0.037574, 0.037765, 0.037957, 0.038149, + 0.038340, 0.038532, 0.038723, 0.038915, 0.039107, 0.039298, 0.039490, 0.039681, + 0.039873, 0.040065, 0.040256, 0.040448, 0.040639, 0.040831, 0.041022, 0.041214, + 0.041406, 0.041597, 0.041789, 0.041980, 0.042172, 0.042364, 0.042555, 0.042747, + 0.042938, 0.043130, 0.043321, 0.043513, 0.043705, 0.043896, 0.044088, 0.044279, + 0.044471, 0.044662, 0.044854, 0.045045, 0.045237, 0.045429, 0.045620, 0.045812, + 0.046003, 0.046195, 0.046386, 0.046578, 0.046769, 0.046961, 0.047152, 0.047344, + 0.047535, 0.047727, 0.047919, 0.048110, 0.048302, 0.048493, 0.048685, 0.048876, + 0.049068, 0.049259, 0.049451, 0.049642, 0.049834, 0.050025, 0.050217, 0.050408, + 0.050600, 0.050791, 0.050983, 0.051174, 0.051366, 0.051557, 0.051749, 0.051940, + 0.052132, 0.052323, 0.052515, 0.052706, 0.052898, 0.053089, 0.053281, 0.053472, + 0.053664, 0.053855, 0.054046, 0.054238, 0.054429, 0.054621, 0.054812, 0.055004, + 0.055195, 0.055387, 0.055578, 0.055770, 0.055961, 0.056152, 0.056344, 0.056535, + 0.056727, 0.056918, 0.057110, 0.057301, 0.057493, 0.057684, 0.057875, 0.058067, + 0.058258, 0.058450, 0.058641, 0.058833, 0.059024, 0.059215, 0.059407, 0.059598, + 0.059790, 0.059981, 0.060172, 0.060364, 0.060555, 0.060747, 0.060938, 0.061129, + 0.061321, 0.061512, 0.061704, 0.061895, 0.062086, 0.062278, 0.062469, 0.062660, + 0.062852, 0.063043, 0.063234, 0.063426, 0.063617, 0.063809, 0.064000, 0.064191, + 0.064383, 0.064574, 0.064765, 0.064957, 0.065148, 0.065339, 0.065531, 0.065722, + 0.065913, 0.066105, 0.066296, 0.066487, 0.066679, 0.066870, 0.067061, 0.067253, + 0.067444, 0.067635, 0.067827, 0.068018, 0.068209, 0.068400, 0.068592, 0.068783, + 0.068974, 0.069166, 0.069357, 0.069548, 0.069739, 0.069931, 0.070122, 0.070313, + 0.070505, 0.070696, 0.070887, 0.071078, 0.071270, 0.071461, 0.071652, 0.071843, + 0.072035, 0.072226, 0.072417, 0.072608, 0.072800, 0.072991, 0.073182, 0.073373, + 0.073565, 0.073756, 0.073947, 0.074138, 0.074329, 0.074521, 0.074712, 0.074903, + 0.075094, 0.075286, 0.075477, 0.075668, 0.075859, 0.076050, 0.076241, 0.076433, + 0.076624, 0.076815, 0.077006, 0.077197, 0.077389, 0.077580, 0.077771, 0.077962, + 0.078153, 0.078344, 0.078536, 0.078727, 0.078918, 0.079109, 0.079300, 0.079491, + 0.079682, 0.079874, 0.080065, 0.080256, 0.080447, 0.080638, 0.080829, 0.081020, + 0.081211, 0.081403, 0.081594, 0.081785, 0.081976, 0.082167, 0.082358, 0.082549, + 0.082740, 0.082931, 0.083122, 0.083314, 0.083505, 0.083696, 0.083887, 0.084078, + 0.084269, 0.084460, 0.084651, 0.084842, 0.085033, 0.085224, 0.085415, 0.085606, + 0.085797, 0.085988, 0.086179, 0.086370, 0.086561, 0.086752, 0.086943, 0.087135, + 0.087326, 0.087517, 0.087708, 0.087899, 0.088090, 0.088281, 0.088472, 0.088663, + 0.088854, 0.089045, 0.089236, 0.089427, 0.089617, 0.089808, 0.089999, 0.090190, + 0.090381, 0.090572, 0.090763, 0.090954, 0.091145, 0.091336, 0.091527, 0.091718, + 0.091909, 0.092100, 0.092291, 0.092482, 0.092673, 0.092864, 0.093055, 0.093245, + 0.093436, 0.093627, 0.093818, 0.094009, 0.094200, 0.094391, 0.094582, 0.094773, + 0.094963, 0.095154, 0.095345, 0.095536, 0.095727, 0.095918, 0.096109, 0.096300, + 0.096490, 0.096681, 0.096872, 0.097063, 0.097254, 0.097445, 0.097635, 0.097826, + 0.098017, 0.098208, 0.098399, 0.098590, 0.098780, 0.098971, 0.099162, 0.099353, + 0.099544, 0.099734, 0.099925, 0.100116, 0.100307, 0.100498, 0.100688, 0.100879, + 0.101070, 0.101261, 0.101451, 0.101642, 0.101833, 0.102024, 0.102214, 0.102405, + 0.102596, 0.102787, 0.102977, 0.103168, 0.103359, 0.103550, 0.103740, 0.103931, + 0.104122, 0.104312, 0.104503, 0.104694, 0.104884, 0.105075, 0.105266, 0.105456, + 0.105647, 0.105838, 0.106028, 0.106219, 0.106410, 0.106600, 0.106791, 0.106982, + 0.107172, 0.107363, 0.107554, 0.107744, 0.107935, 0.108126, 0.108316, 0.108507, + 0.108697, 0.108888, 0.109079, 0.109269, 0.109460, 0.109650, 0.109841, 0.110032, + 0.110222, 0.110413, 0.110603, 0.110794, 0.110984, 0.111175, 0.111366, 0.111556, + 0.111747, 0.111937, 0.112128, 0.112318, 0.112509, 0.112699, 0.112890, 0.113080, + 0.113271, 0.113461, 0.113652, 0.113842, 0.114033, 0.114223, 0.114414, 0.114604, + 0.114795, 0.114985, 0.115176, 0.115366, 0.115557, 0.115747, 0.115938, 0.116128, + 0.116319, 0.116509, 0.116700, 0.116890, 0.117080, 0.117271, 0.117461, 0.117652, + 0.117842, 0.118032, 0.118223, 0.118413, 0.118604, 0.118794, 0.118984, 0.119175, + 0.119365, 0.119556, 0.119746, 0.119936, 0.120127, 0.120317, 0.120507, 0.120698, + 0.120888, 0.121078, 0.121269, 0.121459, 0.121649, 0.121840, 0.122030, 0.122220, + 0.122411, 0.122601, 0.122791, 0.122982, 0.123172, 0.123362, 0.123552, 0.123743, + 0.123933, 0.124123, 0.124314, 0.124504, 0.124694, 0.124884, 0.125075, 0.125265, + 0.125455, 0.125645, 0.125835, 0.126026, 0.126216, 0.126406, 0.126596, 0.126787, + 0.126977, 0.127167, 0.127357, 0.127547, 0.127737, 0.127928, 0.128118, 0.128308, + 0.128498, 0.128688, 0.128878, 0.129069, 0.129259, 0.129449, 0.129639, 0.129829, + 0.130019, 0.130209, 0.130399, 0.130590, 0.130780, 0.130970, 0.131160, 0.131350, + 0.131540, 0.131730, 0.131920, 0.132110, 0.132300, 0.132490, 0.132680, 0.132870, + 0.133061, 0.133251, 0.133441, 0.133631, 0.133821, 0.134011, 0.134201, 0.134391, + 0.134581, 0.134771, 0.134961, 0.135151, 0.135341, 0.135531, 0.135721, 0.135911, + 0.136101, 0.136291, 0.136480, 0.136670, 0.136860, 0.137050, 0.137240, 0.137430, + 0.137620, 0.137810, 0.138000, 0.138190, 0.138380, 0.138570, 0.138760, 0.138949, + 0.139139, 0.139329, 0.139519, 0.139709, 0.139899, 0.140089, 0.140279, 0.140468, + 0.140658, 0.140848, 0.141038, 0.141228, 0.141418, 0.141607, 0.141797, 0.141987, + 0.142177, 0.142367, 0.142556, 0.142746, 0.142936, 0.143126, 0.143316, 0.143505, + 0.143695, 0.143885, 0.144075, 0.144264, 0.144454, 0.144644, 0.144833, 0.145023, + 0.145213, 0.145403, 0.145592, 0.145782, 0.145972, 0.146161, 0.146351, 0.146541, + 0.146730, 0.146920, 0.147110, 0.147299, 0.147489, 0.147679, 0.147868, 0.148058, + 0.148248, 0.148437, 0.148627, 0.148817, 0.149006, 0.149196, 0.149385, 0.149575, + 0.149765, 0.149954, 0.150144, 0.150333, 0.150523, 0.150712, 0.150902, 0.151092, + 0.151281, 0.151471, 0.151660, 0.151850, 0.152039, 0.152229, 0.152418, 0.152608, + 0.152797, 0.152987, 0.153176, 0.153366, 0.153555, 0.153745, 0.153934, 0.154124, + 0.154313, 0.154502, 0.154692, 0.154881, 0.155071, 0.155260, 0.155450, 0.155639, + 0.155828, 0.156018, 0.156207, 0.156397, 0.156586, 0.156775, 0.156965, 0.157154, + 0.157343, 0.157533, 0.157722, 0.157912, 0.158101, 0.158290, 0.158480, 0.158669, + 0.158858, 0.159047, 0.159237, 0.159426, 0.159615, 0.159805, 0.159994, 0.160183, + 0.160372, 0.160562, 0.160751, 0.160940, 0.161129, 0.161319, 0.161508, 0.161697, + 0.161886, 0.162076, 0.162265, 0.162454, 0.162643, 0.162832, 0.163022, 0.163211, + 0.163400, 0.163589, 0.163778, 0.163967, 0.164157, 0.164346, 0.164535, 0.164724, + 0.164913, 0.165102, 0.165291, 0.165480, 0.165670, 0.165859, 0.166048, 0.166237, + 0.166426, 0.166615, 0.166804, 0.166993, 0.167182, 0.167371, 0.167560, 0.167749, + 0.167938, 0.168127, 0.168316, 0.168505, 0.168694, 0.168883, 0.169072, 0.169261, + 0.169450, 0.169639, 0.169828, 0.170017, 0.170206, 0.170395, 0.170584, 0.170773, + 0.170962, 0.171151, 0.171340, 0.171529, 0.171718, 0.171906, 0.172095, 0.172284, + 0.172473, 0.172662, 0.172851, 0.173040, 0.173229, 0.173417, 0.173606, 0.173795, + 0.173984, 0.174173, 0.174362, 0.174550, 0.174739, 0.174928, 0.175117, 0.175305, + 0.175494, 0.175683, 0.175872, 0.176061, 0.176249, 0.176438, 0.176627, 0.176815, + 0.177004, 0.177193, 0.177382, 0.177570, 0.177759, 0.177948, 0.178136, 0.178325, + 0.178514, 0.178702, 0.178891, 0.179080, 0.179268, 0.179457, 0.179646, 0.179834, + 0.180023, 0.180212, 0.180400, 0.180589, 0.180777, 0.180966, 0.181154, 0.181343, + 0.181532, 0.181720, 0.181909, 0.182097, 0.182286, 0.182474, 0.182663, 0.182851, + 0.183040, 0.183228, 0.183417, 0.183605, 0.183794, 0.183982, 0.184171, 0.184359, + 0.184548, 0.184736, 0.184925, 0.185113, 0.185301, 0.185490, 0.185678, 0.185867, + 0.186055, 0.186244, 0.186432, 0.186620, 0.186809, 0.186997, 0.187185, 0.187374, + 0.187562, 0.187750, 0.187939, 0.188127, 0.188315, 0.188504, 0.188692, 0.188880, + 0.189069, 0.189257, 0.189445, 0.189634, 0.189822, 0.190010, 0.190198, 0.190387, + 0.190575, 0.190763, 0.190951, 0.191139, 0.191328, 0.191516, 0.191704, 0.191892, + 0.192080, 0.192269, 0.192457, 0.192645, 0.192833, 0.193021, 0.193209, 0.193397, + 0.193586, 0.193774, 0.193962, 0.194150, 0.194338, 0.194526, 0.194714, 0.194902, + 0.195090, 0.195278, 0.195466, 0.195654, 0.195843, 0.196031, 0.196219, 0.196407, + 0.196595, 0.196783, 0.196971, 0.197159, 0.197347, 0.197535, 0.197722, 0.197910, + 0.198098, 0.198286, 0.198474, 0.198662, 0.198850, 0.199038, 0.199226, 0.199414, + 0.199602, 0.199790, 0.199978, 0.200165, 0.200353, 0.200541, 0.200729, 0.200917, + 0.201105, 0.201292, 0.201480, 0.201668, 0.201856, 0.202044, 0.202231, 0.202419, + 0.202607, 0.202795, 0.202983, 0.203170, 0.203358, 0.203546, 0.203734, 0.203921, + 0.204109, 0.204297, 0.204484, 0.204672, 0.204860, 0.205047, 0.205235, 0.205423, + 0.205610, 0.205798, 0.205986, 0.206173, 0.206361, 0.206549, 0.206736, 0.206924, + 0.207111, 0.207299, 0.207487, 0.207674, 0.207862, 0.208049, 0.208237, 0.208424, + 0.208612, 0.208799, 0.208987, 0.209174, 0.209362, 0.209549, 0.209737, 0.209924, + 0.210112, 0.210299, 0.210487, 0.210674, 0.210862, 0.211049, 0.211237, 0.211424, + 0.211611, 0.211799, 0.211986, 0.212174, 0.212361, 0.212548, 0.212736, 0.212923, + 0.213110, 0.213298, 0.213485, 0.213672, 0.213860, 0.214047, 0.214234, 0.214422, + 0.214609, 0.214796, 0.214983, 0.215171, 0.215358, 0.215545, 0.215732, 0.215920, + 0.216107, 0.216294, 0.216481, 0.216668, 0.216856, 0.217043, 0.217230, 0.217417, + 0.217604, 0.217791, 0.217979, 0.218166, 0.218353, 0.218540, 0.218727, 0.218914, + 0.219101, 0.219288, 0.219475, 0.219662, 0.219850, 0.220037, 0.220224, 0.220411, + 0.220598, 0.220785, 0.220972, 0.221159, 0.221346, 0.221533, 0.221720, 0.221907, + 0.222094, 0.222281, 0.222468, 0.222654, 0.222841, 0.223028, 0.223215, 0.223402, + 0.223589, 0.223776, 0.223963, 0.224150, 0.224337, 0.224523, 0.224710, 0.224897, + 0.225084, 0.225271, 0.225458, 0.225644, 0.225831, 0.226018, 0.226205, 0.226391, + 0.226578, 0.226765, 0.226952, 0.227139, 0.227325, 0.227512, 0.227699, 0.227885, + 0.228072, 0.228259, 0.228445, 0.228632, 0.228819, 0.229005, 0.229192, 0.229379, + 0.229565, 0.229752, 0.229939, 0.230125, 0.230312, 0.230498, 0.230685, 0.230872, + 0.231058, 0.231245, 0.231431, 0.231618, 0.231804, 0.231991, 0.232177, 0.232364, + 0.232550, 0.232737, 0.232923, 0.233110, 0.233296, 0.233483, 0.233669, 0.233856, + 0.234042, 0.234228, 0.234415, 0.234601, 0.234788, 0.234974, 0.235160, 0.235347, + 0.235533, 0.235719, 0.235906, 0.236092, 0.236278, 0.236465, 0.236651, 0.236837, + 0.237024, 0.237210, 0.237396, 0.237582, 0.237769, 0.237955, 0.238141, 0.238327, + 0.238514, 0.238700, 0.238886, 0.239072, 0.239258, 0.239445, 0.239631, 0.239817, + 0.240003, 0.240189, 0.240375, 0.240561, 0.240748, 0.240934, 0.241120, 0.241306, + 0.241492, 0.241678, 0.241864, 0.242050, 0.242236, 0.242422, 0.242608, 0.242794, + 0.242980, 0.243166, 0.243352, 0.243538, 0.243724, 0.243910, 0.244096, 0.244282, + 0.244468, 0.244654, 0.244840, 0.245026, 0.245212, 0.245397, 0.245583, 0.245769, + 0.245955, 0.246141, 0.246327, 0.246513, 0.246698, 0.246884, 0.247070, 0.247256, + 0.247442, 0.247627, 0.247813, 0.247999, 0.248185, 0.248370, 0.248556, 0.248742, + 0.248928, 0.249113, 0.249299, 0.249485, 0.249670, 0.249856, 0.250042, 0.250227, + 0.250413, 0.250599, 0.250784, 0.250970, 0.251155, 0.251341, 0.251527, 0.251712, + 0.251898, 0.252083, 0.252269, 0.252454, 0.252640, 0.252826, 0.253011, 0.253197, + 0.253382, 0.253568, 0.253753, 0.253938, 0.254124, 0.254309, 0.254495, 0.254680, + 0.254866, 0.255051, 0.255236, 0.255422, 0.255607, 0.255793, 0.255978, 0.256163, + 0.256349, 0.256534, 0.256719, 0.256905, 0.257090, 0.257275, 0.257461, 0.257646, + 0.257831, 0.258016, 0.258202, 0.258387, 0.258572, 0.258757, 0.258943, 0.259128, + 0.259313, 0.259498, 0.259683, 0.259868, 0.260054, 0.260239, 0.260424, 0.260609, + 0.260794, 0.260979, 0.261164, 0.261349, 0.261534, 0.261720, 0.261905, 0.262090, + 0.262275, 0.262460, 0.262645, 0.262830, 0.263015, 0.263200, 0.263385, 0.263570, + 0.263755, 0.263940, 0.264125, 0.264309, 0.264494, 0.264679, 0.264864, 0.265049, + 0.265234, 0.265419, 0.265604, 0.265789, 0.265973, 0.266158, 0.266343, 0.266528, + 0.266713, 0.266898, 0.267082, 0.267267, 0.267452, 0.267637, 0.267821, 0.268006, + 0.268191, 0.268376, 0.268560, 0.268745, 0.268930, 0.269114, 0.269299, 0.269484, + 0.269668, 0.269853, 0.270038, 0.270222, 0.270407, 0.270591, 0.270776, 0.270961, + 0.271145, 0.271330, 0.271514, 0.271699, 0.271883, 0.272068, 0.272252, 0.272437, + 0.272621, 0.272806, 0.272990, 0.273175, 0.273359, 0.273544, 0.273728, 0.273912, + 0.274097, 0.274281, 0.274466, 0.274650, 0.274834, 0.275019, 0.275203, 0.275387, + 0.275572, 0.275756, 0.275940, 0.276125, 0.276309, 0.276493, 0.276678, 0.276862, + 0.277046, 0.277230, 0.277415, 0.277599, 0.277783, 0.277967, 0.278151, 0.278336, + 0.278520, 0.278704, 0.278888, 0.279072, 0.279256, 0.279440, 0.279624, 0.279809, + 0.279993, 0.280177, 0.280361, 0.280545, 0.280729, 0.280913, 0.281097, 0.281281, + 0.281465, 0.281649, 0.281833, 0.282017, 0.282201, 0.282385, 0.282569, 0.282753, + 0.282937, 0.283120, 0.283304, 0.283488, 0.283672, 0.283856, 0.284040, 0.284224, + 0.284408, 0.284591, 0.284775, 0.284959, 0.285143, 0.285327, 0.285510, 0.285694, + 0.285878, 0.286062, 0.286245, 0.286429, 0.286613, 0.286796, 0.286980, 0.287164, + 0.287347, 0.287531, 0.287715, 0.287898, 0.288082, 0.288266, 0.288449, 0.288633, + 0.288816, 0.289000, 0.289184, 0.289367, 0.289551, 0.289734, 0.289918, 0.290101, + 0.290285, 0.290468, 0.290652, 0.290835, 0.291019, 0.291202, 0.291385, 0.291569, + 0.291752, 0.291936, 0.292119, 0.292302, 0.292486, 0.292669, 0.292852, 0.293036, + 0.293219, 0.293402, 0.293586, 0.293769, 0.293952, 0.294136, 0.294319, 0.294502, + 0.294685, 0.294869, 0.295052, 0.295235, 0.295418, 0.295601, 0.295785, 0.295968, + 0.296151, 0.296334, 0.296517, 0.296700, 0.296883, 0.297066, 0.297250, 0.297433, + 0.297616, 0.297799, 0.297982, 0.298165, 0.298348, 0.298531, 0.298714, 0.298897, + 0.299080, 0.299263, 0.299446, 0.299629, 0.299812, 0.299995, 0.300177, 0.300360, + 0.300543, 0.300726, 0.300909, 0.301092, 0.301275, 0.301458, 0.301640, 0.301823, + 0.302006, 0.302189, 0.302372, 0.302554, 0.302737, 0.302920, 0.303103, 0.303285, + 0.303468, 0.303651, 0.303833, 0.304016, 0.304199, 0.304381, 0.304564, 0.304747, + 0.304929, 0.305112, 0.305294, 0.305477, 0.305660, 0.305842, 0.306025, 0.306207, + 0.306390, 0.306572, 0.306755, 0.306937, 0.307120, 0.307302, 0.307485, 0.307667, + 0.307850, 0.308032, 0.308214, 0.308397, 0.308579, 0.308762, 0.308944, 0.309126, + 0.309309, 0.309491, 0.309673, 0.309856, 0.310038, 0.310220, 0.310403, 0.310585, + 0.310767, 0.310949, 0.311132, 0.311314, 0.311496, 0.311678, 0.311860, 0.312043, + 0.312225, 0.312407, 0.312589, 0.312771, 0.312953, 0.313135, 0.313318, 0.313500, + 0.313682, 0.313864, 0.314046, 0.314228, 0.314410, 0.314592, 0.314774, 0.314956, + 0.315138, 0.315320, 0.315502, 0.315684, 0.315866, 0.316048, 0.316230, 0.316411, + 0.316593, 0.316775, 0.316957, 0.317139, 0.317321, 0.317503, 0.317684, 0.317866, + 0.318048, 0.318230, 0.318412, 0.318593, 0.318775, 0.318957, 0.319139, 0.319320, + 0.319502, 0.319684, 0.319865, 0.320047, 0.320229, 0.320410, 0.320592, 0.320774, + 0.320955, 0.321137, 0.321318, 0.321500, 0.321682, 0.321863, 0.322045, 0.322226, + 0.322408, 0.322589, 0.322771, 0.322952, 0.323134, 0.323315, 0.323497, 0.323678, + 0.323859, 0.324041, 0.324222, 0.324404, 0.324585, 0.324766, 0.324948, 0.325129, + 0.325310, 0.325492, 0.325673, 0.325854, 0.326035, 0.326217, 0.326398, 0.326579, + 0.326760, 0.326942, 0.327123, 0.327304, 0.327485, 0.327666, 0.327848, 0.328029, + 0.328210, 0.328391, 0.328572, 0.328753, 0.328934, 0.329115, 0.329296, 0.329477, + 0.329658, 0.329839, 0.330020, 0.330202, 0.330382, 0.330563, 0.330744, 0.330925, + 0.331106, 0.331287, 0.331468, 0.331649, 0.331830, 0.332011, 0.332192, 0.332373, + 0.332553, 0.332734, 0.332915, 0.333096, 0.333277, 0.333457, 0.333638, 0.333819, + 0.334000, 0.334180, 0.334361, 0.334542, 0.334722, 0.334903, 0.335084, 0.335265, + 0.335445, 0.335626, 0.335806, 0.335987, 0.336168, 0.336348, 0.336529, 0.336709, + 0.336890, 0.337070, 0.337251, 0.337431, 0.337612, 0.337792, 0.337973, 0.338153, + 0.338334, 0.338514, 0.338695, 0.338875, 0.339055, 0.339236, 0.339416, 0.339597, + 0.339777, 0.339957, 0.340138, 0.340318, 0.340498, 0.340678, 0.340859, 0.341039, + 0.341219, 0.341399, 0.341580, 0.341760, 0.341940, 0.342120, 0.342300, 0.342481, + 0.342661, 0.342841, 0.343021, 0.343201, 0.343381, 0.343561, 0.343741, 0.343921, + 0.344101, 0.344281, 0.344461, 0.344641, 0.344821, 0.345001, 0.345181, 0.345361, + 0.345541, 0.345721, 0.345901, 0.346081, 0.346261, 0.346441, 0.346621, 0.346801, + 0.346980, 0.347160, 0.347340, 0.347520, 0.347700, 0.347879, 0.348059, 0.348239, + 0.348419, 0.348598, 0.348778, 0.348958, 0.349138, 0.349317, 0.349497, 0.349676, + 0.349856, 0.350036, 0.350215, 0.350395, 0.350575, 0.350754, 0.350934, 0.351113, + 0.351293, 0.351472, 0.351652, 0.351831, 0.352011, 0.352190, 0.352370, 0.352549, + 0.352729, 0.352908, 0.353087, 0.353267, 0.353446, 0.353626, 0.353805, 0.353984, + 0.354164, 0.354343, 0.354522, 0.354701, 0.354881, 0.355060, 0.355239, 0.355418, + 0.355598, 0.355777, 0.355956, 0.356135, 0.356314, 0.356494, 0.356673, 0.356852, + 0.357031, 0.357210, 0.357389, 0.357568, 0.357747, 0.357926, 0.358105, 0.358284, + 0.358463, 0.358642, 0.358821, 0.359000, 0.359179, 0.359358, 0.359537, 0.359716, + 0.359895, 0.360074, 0.360253, 0.360432, 0.360611, 0.360789, 0.360968, 0.361147, + 0.361326, 0.361505, 0.361683, 0.361862, 0.362041, 0.362220, 0.362398, 0.362577, + 0.362756, 0.362934, 0.363113, 0.363292, 0.363470, 0.363649, 0.363828, 0.364006, + 0.364185, 0.364363, 0.364542, 0.364720, 0.364899, 0.365078, 0.365256, 0.365435, + 0.365613, 0.365791, 0.365970, 0.366148, 0.366327, 0.366505, 0.366684, 0.366862, + 0.367040, 0.367219, 0.367397, 0.367575, 0.367754, 0.367932, 0.368110, 0.368289, + 0.368467, 0.368645, 0.368823, 0.369002, 0.369180, 0.369358, 0.369536, 0.369714, + 0.369892, 0.370071, 0.370249, 0.370427, 0.370605, 0.370783, 0.370961, 0.371139, + 0.371317, 0.371495, 0.371673, 0.371851, 0.372029, 0.372207, 0.372385, 0.372563, + 0.372741, 0.372919, 0.373097, 0.373275, 0.373453, 0.373631, 0.373808, 0.373986, + 0.374164, 0.374342, 0.374520, 0.374697, 0.374875, 0.375053, 0.375231, 0.375408, + 0.375586, 0.375764, 0.375942, 0.376119, 0.376297, 0.376475, 0.376652, 0.376830, + 0.377007, 0.377185, 0.377363, 0.377540, 0.377718, 0.377895, 0.378073, 0.378250, + 0.378428, 0.378605, 0.378783, 0.378960, 0.379138, 0.379315, 0.379492, 0.379670, + 0.379847, 0.380025, 0.380202, 0.380379, 0.380557, 0.380734, 0.380911, 0.381088, + 0.381266, 0.381443, 0.381620, 0.381797, 0.381975, 0.382152, 0.382329, 0.382506, + 0.382683, 0.382861, 0.383038, 0.383215, 0.383392, 0.383569, 0.383746, 0.383923, + 0.384100, 0.384277, 0.384454, 0.384631, 0.384808, 0.384985, 0.385162, 0.385339, + 0.385516, 0.385693, 0.385870, 0.386047, 0.386224, 0.386400, 0.386577, 0.386754, + 0.386931, 0.387108, 0.387285, 0.387461, 0.387638, 0.387815, 0.387992, 0.388168, + 0.388345, 0.388522, 0.388698, 0.388875, 0.389052, 0.389228, 0.389405, 0.389582, + 0.389758, 0.389935, 0.390111, 0.390288, 0.390464, 0.390641, 0.390817, 0.390994, + 0.391170, 0.391347, 0.391523, 0.391700, 0.391876, 0.392053, 0.392229, 0.392405, + 0.392582, 0.392758, 0.392934, 0.393111, 0.393287, 0.393463, 0.393640, 0.393816, + 0.393992, 0.394168, 0.394344, 0.394521, 0.394697, 0.394873, 0.395049, 0.395225, + 0.395401, 0.395578, 0.395754, 0.395930, 0.396106, 0.396282, 0.396458, 0.396634, + 0.396810, 0.396986, 0.397162, 0.397338, 0.397514, 0.397690, 0.397866, 0.398042, + 0.398218, 0.398393, 0.398569, 0.398745, 0.398921, 0.399097, 0.399273, 0.399448, + 0.399624, 0.399800, 0.399976, 0.400151, 0.400327, 0.400503, 0.400679, 0.400854, + 0.401030, 0.401206, 0.401381, 0.401557, 0.401732, 0.401908, 0.402084, 0.402259, + 0.402435, 0.402610, 0.402786, 0.402961, 0.403137, 0.403312, 0.403488, 0.403663, + 0.403838, 0.404014, 0.404189, 0.404365, 0.404540, 0.404715, 0.404891, 0.405066, + 0.405241, 0.405417, 0.405592, 0.405767, 0.405942, 0.406118, 0.406293, 0.406468, + 0.406643, 0.406818, 0.406994, 0.407169, 0.407344, 0.407519, 0.407694, 0.407869, + 0.408044, 0.408219, 0.408394, 0.408569, 0.408744, 0.408919, 0.409094, 0.409269, + 0.409444, 0.409619, 0.409794, 0.409969, 0.410144, 0.410319, 0.410493, 0.410668, + 0.410843, 0.411018, 0.411193, 0.411368, 0.411542, 0.411717, 0.411892, 0.412067, + 0.412241, 0.412416, 0.412591, 0.412765, 0.412940, 0.413115, 0.413289, 0.413464, + 0.413638, 0.413813, 0.413987, 0.414162, 0.414337, 0.414511, 0.414685, 0.414860, + 0.415034, 0.415209, 0.415383, 0.415558, 0.415732, 0.415906, 0.416081, 0.416255, + 0.416430, 0.416604, 0.416778, 0.416952, 0.417127, 0.417301, 0.417475, 0.417650, + 0.417824, 0.417998, 0.418172, 0.418346, 0.418520, 0.418695, 0.418869, 0.419043, + 0.419217, 0.419391, 0.419565, 0.419739, 0.419913, 0.420087, 0.420261, 0.420435, + 0.420609, 0.420783, 0.420957, 0.421131, 0.421305, 0.421479, 0.421653, 0.421826, + 0.422000, 0.422174, 0.422348, 0.422522, 0.422695, 0.422869, 0.423043, 0.423217, + 0.423390, 0.423564, 0.423738, 0.423912, 0.424085, 0.424259, 0.424432, 0.424606, + 0.424780, 0.424953, 0.425127, 0.425300, 0.425474, 0.425647, 0.425821, 0.425994, + 0.426168, 0.426341, 0.426515, 0.426688, 0.426862, 0.427035, 0.427208, 0.427382, + 0.427555, 0.427728, 0.427902, 0.428075, 0.428248, 0.428422, 0.428595, 0.428768, + 0.428941, 0.429114, 0.429288, 0.429461, 0.429634, 0.429807, 0.429980, 0.430153, + 0.430326, 0.430500, 0.430673, 0.430846, 0.431019, 0.431192, 0.431365, 0.431538, + 0.431711, 0.431884, 0.432057, 0.432229, 0.432402, 0.432575, 0.432748, 0.432921, + 0.433094, 0.433267, 0.433439, 0.433612, 0.433785, 0.433958, 0.434131, 0.434303, + 0.434476, 0.434649, 0.434821, 0.434994, 0.435167, 0.435339, 0.435512, 0.435685, + 0.435857, 0.436030, 0.436202, 0.436375, 0.436547, 0.436720, 0.436892, 0.437065, + 0.437237, 0.437410, 0.437582, 0.437754, 0.437927, 0.438099, 0.438272, 0.438444, + 0.438616, 0.438789, 0.438961, 0.439133, 0.439305, 0.439478, 0.439650, 0.439822, + 0.439994, 0.440166, 0.440339, 0.440511, 0.440683, 0.440855, 0.441027, 0.441199, + 0.441371, 0.441543, 0.441715, 0.441887, 0.442059, 0.442231, 0.442403, 0.442575, + 0.442747, 0.442919, 0.443091, 0.443263, 0.443435, 0.443607, 0.443779, 0.443950, + 0.444122, 0.444294, 0.444466, 0.444637, 0.444809, 0.444981, 0.445153, 0.445324, + 0.445496, 0.445668, 0.445839, 0.446011, 0.446183, 0.446354, 0.446526, 0.446697, + 0.446869, 0.447040, 0.447212, 0.447383, 0.447555, 0.447726, 0.447898, 0.448069, + 0.448241, 0.448412, 0.448583, 0.448755, 0.448926, 0.449097, 0.449269, 0.449440, + 0.449611, 0.449783, 0.449954, 0.450125, 0.450296, 0.450467, 0.450639, 0.450810, + 0.450981, 0.451152, 0.451323, 0.451494, 0.451665, 0.451836, 0.452008, 0.452179, + 0.452350, 0.452521, 0.452692, 0.452863, 0.453033, 0.453204, 0.453375, 0.453546, + 0.453717, 0.453888, 0.454059, 0.454230, 0.454400, 0.454571, 0.454742, 0.454913, + 0.455084, 0.455254, 0.455425, 0.455596, 0.455766, 0.455937, 0.456108, 0.456278, + 0.456449, 0.456620, 0.456790, 0.456961, 0.457131, 0.457302, 0.457472, 0.457643, + 0.457813, 0.457984, 0.458154, 0.458325, 0.458495, 0.458665, 0.458836, 0.459006, + 0.459177, 0.459347, 0.459517, 0.459687, 0.459858, 0.460028, 0.460198, 0.460369, + 0.460539, 0.460709, 0.460879, 0.461049, 0.461219, 0.461390, 0.461560, 0.461730, + 0.461900, 0.462070, 0.462240, 0.462410, 0.462580, 0.462750, 0.462920, 0.463090, + 0.463260, 0.463430, 0.463600, 0.463769, 0.463939, 0.464109, 0.464279, 0.464449, + 0.464619, 0.464788, 0.464958, 0.465128, 0.465298, 0.465467, 0.465637, 0.465807, + 0.465977, 0.466146, 0.466316, 0.466485, 0.466655, 0.466825, 0.466994, 0.467164, + 0.467333, 0.467503, 0.467672, 0.467842, 0.468011, 0.468181, 0.468350, 0.468519, + 0.468689, 0.468858, 0.469028, 0.469197, 0.469366, 0.469536, 0.469705, 0.469874, + 0.470043, 0.470213, 0.470382, 0.470551, 0.470720, 0.470889, 0.471058, 0.471228, + 0.471397, 0.471566, 0.471735, 0.471904, 0.472073, 0.472242, 0.472411, 0.472580, + 0.472749, 0.472918, 0.473087, 0.473256, 0.473425, 0.473594, 0.473763, 0.473931, + 0.474100, 0.474269, 0.474438, 0.474607, 0.474775, 0.474944, 0.475113, 0.475282, + 0.475450, 0.475619, 0.475788, 0.475956, 0.476125, 0.476294, 0.476462, 0.476631, + 0.476799, 0.476968, 0.477136, 0.477305, 0.477473, 0.477642, 0.477810, 0.477979, + 0.478147, 0.478315, 0.478484, 0.478652, 0.478821, 0.478989, 0.479157, 0.479325, + 0.479494, 0.479662, 0.479830, 0.479998, 0.480167, 0.480335, 0.480503, 0.480671, + 0.480839, 0.481007, 0.481176, 0.481344, 0.481512, 0.481680, 0.481848, 0.482016, + 0.482184, 0.482352, 0.482520, 0.482688, 0.482856, 0.483023, 0.483191, 0.483359, + 0.483527, 0.483695, 0.483863, 0.484031, 0.484198, 0.484366, 0.484534, 0.484702, + 0.484869, 0.485037, 0.485205, 0.485372, 0.485540, 0.485708, 0.485875, 0.486043, + 0.486210, 0.486378, 0.486545, 0.486713, 0.486880, 0.487048, 0.487215, 0.487383, + 0.487550, 0.487718, 0.487885, 0.488052, 0.488220, 0.488387, 0.488554, 0.488722, + 0.488889, 0.489056, 0.489223, 0.489391, 0.489558, 0.489725, 0.489892, 0.490059, + 0.490226, 0.490394, 0.490561, 0.490728, 0.490895, 0.491062, 0.491229, 0.491396, + 0.491563, 0.491730, 0.491897, 0.492064, 0.492231, 0.492398, 0.492564, 0.492731, + 0.492898, 0.493065, 0.493232, 0.493399, 0.493565, 0.493732, 0.493899, 0.494066, + 0.494232, 0.494399, 0.494566, 0.494732, 0.494899, 0.495066, 0.495232, 0.495399, + 0.495565, 0.495732, 0.495898, 0.496065, 0.496231, 0.496398, 0.496564, 0.496731, + 0.496897, 0.497063, 0.497230, 0.497396, 0.497562, 0.497729, 0.497895, 0.498061, + 0.498228, 0.498394, 0.498560, 0.498726, 0.498893, 0.499059, 0.499225, 0.499391, + 0.499557, 0.499723, 0.499889, 0.500055, 0.500221, 0.500387, 0.500553, 0.500719, + 0.500885, 0.501051, 0.501217, 0.501383, 0.501549, 0.501715, 0.501881, 0.502047, + 0.502212, 0.502378, 0.502544, 0.502710, 0.502876, 0.503041, 0.503207, 0.503373, + 0.503538, 0.503704, 0.503870, 0.504035, 0.504201, 0.504366, 0.504532, 0.504698, + 0.504863, 0.505029, 0.505194, 0.505360, 0.505525, 0.505690, 0.505856, 0.506021, + 0.506187, 0.506352, 0.506517, 0.506683, 0.506848, 0.507013, 0.507179, 0.507344, + 0.507509, 0.507674, 0.507839, 0.508005, 0.508170, 0.508335, 0.508500, 0.508665, + 0.508830, 0.508995, 0.509160, 0.509325, 0.509490, 0.509655, 0.509820, 0.509985, + 0.510150, 0.510315, 0.510480, 0.510645, 0.510810, 0.510974, 0.511139, 0.511304, + 0.511469, 0.511634, 0.511798, 0.511963, 0.512128, 0.512292, 0.512457, 0.512622, + 0.512786, 0.512951, 0.513116, 0.513280, 0.513445, 0.513609, 0.513774, 0.513938, + 0.514103, 0.514267, 0.514432, 0.514596, 0.514760, 0.514925, 0.515089, 0.515254, + 0.515418, 0.515582, 0.515746, 0.515911, 0.516075, 0.516239, 0.516403, 0.516568, + 0.516732, 0.516896, 0.517060, 0.517224, 0.517388, 0.517552, 0.517716, 0.517880, + 0.518045, 0.518209, 0.518372, 0.518536, 0.518700, 0.518864, 0.519028, 0.519192, + 0.519356, 0.519520, 0.519684, 0.519848, 0.520011, 0.520175, 0.520339, 0.520503, + 0.520666, 0.520830, 0.520994, 0.521157, 0.521321, 0.521485, 0.521648, 0.521812, + 0.521975, 0.522139, 0.522302, 0.522466, 0.522629, 0.522793, 0.522956, 0.523120, + 0.523283, 0.523447, 0.523610, 0.523773, 0.523937, 0.524100, 0.524263, 0.524426, + 0.524590, 0.524753, 0.524916, 0.525079, 0.525243, 0.525406, 0.525569, 0.525732, + 0.525895, 0.526058, 0.526221, 0.526384, 0.526547, 0.526710, 0.526873, 0.527036, + 0.527199, 0.527362, 0.527525, 0.527688, 0.527851, 0.528014, 0.528176, 0.528339, + 0.528502, 0.528665, 0.528828, 0.528990, 0.529153, 0.529316, 0.529478, 0.529641, + 0.529804, 0.529966, 0.530129, 0.530291, 0.530454, 0.530617, 0.530779, 0.530942, + 0.531104, 0.531266, 0.531429, 0.531591, 0.531754, 0.531916, 0.532078, 0.532241, + 0.532403, 0.532565, 0.532728, 0.532890, 0.533052, 0.533214, 0.533377, 0.533539, + 0.533701, 0.533863, 0.534025, 0.534187, 0.534349, 0.534512, 0.534674, 0.534836, + 0.534998, 0.535160, 0.535322, 0.535484, 0.535645, 0.535807, 0.535969, 0.536131, + 0.536293, 0.536455, 0.536617, 0.536778, 0.536940, 0.537102, 0.537264, 0.537425, + 0.537587, 0.537749, 0.537910, 0.538072, 0.538234, 0.538395, 0.538557, 0.538718, + 0.538880, 0.539041, 0.539203, 0.539364, 0.539526, 0.539687, 0.539849, 0.540010, + 0.540171, 0.540333, 0.540494, 0.540655, 0.540817, 0.540978, 0.541139, 0.541301, + 0.541462, 0.541623, 0.541784, 0.541945, 0.542106, 0.542268, 0.542429, 0.542590, + 0.542751, 0.542912, 0.543073, 0.543234, 0.543395, 0.543556, 0.543717, 0.543878, + 0.544039, 0.544199, 0.544360, 0.544521, 0.544682, 0.544843, 0.545003, 0.545164, + 0.545325, 0.545486, 0.545646, 0.545807, 0.545968, 0.546128, 0.546289, 0.546450, + 0.546610, 0.546771, 0.546931, 0.547092, 0.547252, 0.547413, 0.547573, 0.547734, + 0.547894, 0.548054, 0.548215, 0.548375, 0.548536, 0.548696, 0.548856, 0.549016, + 0.549177, 0.549337, 0.549497, 0.549657, 0.549818, 0.549978, 0.550138, 0.550298, + 0.550458, 0.550618, 0.550778, 0.550938, 0.551098, 0.551258, 0.551418, 0.551578, + 0.551738, 0.551898, 0.552058, 0.552218, 0.552378, 0.552537, 0.552697, 0.552857, + 0.553017, 0.553176, 0.553336, 0.553496, 0.553656, 0.553815, 0.553975, 0.554134, + 0.554294, 0.554454, 0.554613, 0.554773, 0.554932, 0.555092, 0.555251, 0.555411, + 0.555570, 0.555730, 0.555889, 0.556048, 0.556208, 0.556367, 0.556526, 0.556686, + 0.556845, 0.557004, 0.557164, 0.557323, 0.557482, 0.557641, 0.557800, 0.557959, + 0.558119, 0.558278, 0.558437, 0.558596, 0.558755, 0.558914, 0.559073, 0.559232, + 0.559391, 0.559550, 0.559709, 0.559867, 0.560026, 0.560185, 0.560344, 0.560503, + 0.560662, 0.560820, 0.560979, 0.561138, 0.561297, 0.561455, 0.561614, 0.561773, + 0.561931, 0.562090, 0.562248, 0.562407, 0.562565, 0.562724, 0.562882, 0.563041, + 0.563199, 0.563358, 0.563516, 0.563675, 0.563833, 0.563991, 0.564150, 0.564308, + 0.564466, 0.564624, 0.564783, 0.564941, 0.565099, 0.565257, 0.565416, 0.565574, + 0.565732, 0.565890, 0.566048, 0.566206, 0.566364, 0.566522, 0.566680, 0.566838, + 0.566996, 0.567154, 0.567312, 0.567470, 0.567628, 0.567786, 0.567943, 0.568101, + 0.568259, 0.568417, 0.568574, 0.568732, 0.568890, 0.569048, 0.569205, 0.569363, + 0.569521, 0.569678, 0.569836, 0.569993, 0.570151, 0.570308, 0.570466, 0.570623, + 0.570781, 0.570938, 0.571096, 0.571253, 0.571410, 0.571568, 0.571725, 0.571882, + 0.572040, 0.572197, 0.572354, 0.572511, 0.572669, 0.572826, 0.572983, 0.573140, + 0.573297, 0.573454, 0.573611, 0.573768, 0.573925, 0.574082, 0.574239, 0.574396, + 0.574553, 0.574710, 0.574867, 0.575024, 0.575181, 0.575338, 0.575495, 0.575651, + 0.575808, 0.575965, 0.576122, 0.576278, 0.576435, 0.576592, 0.576748, 0.576905, + 0.577062, 0.577218, 0.577375, 0.577531, 0.577688, 0.577844, 0.578001, 0.578157, + 0.578314, 0.578470, 0.578627, 0.578783, 0.578939, 0.579096, 0.579252, 0.579408, + 0.579565, 0.579721, 0.579877, 0.580033, 0.580189, 0.580346, 0.580502, 0.580658, + 0.580814, 0.580970, 0.581126, 0.581282, 0.581438, 0.581594, 0.581750, 0.581906, + 0.582062, 0.582218, 0.582374, 0.582530, 0.582685, 0.582841, 0.582997, 0.583153, + 0.583309, 0.583464, 0.583620, 0.583776, 0.583931, 0.584087, 0.584243, 0.584398, + 0.584554, 0.584710, 0.584865, 0.585021, 0.585176, 0.585332, 0.585487, 0.585642, + 0.585798, 0.585953, 0.586109, 0.586264, 0.586419, 0.586575, 0.586730, 0.586885, + 0.587040, 0.587196, 0.587351, 0.587506, 0.587661, 0.587816, 0.587971, 0.588126, + 0.588282, 0.588437, 0.588592, 0.588747, 0.588902, 0.589057, 0.589212, 0.589366, + 0.589521, 0.589676, 0.589831, 0.589986, 0.590141, 0.590295, 0.590450, 0.590605, + 0.590760, 0.590914, 0.591069, 0.591224, 0.591378, 0.591533, 0.591688, 0.591842, + 0.591997, 0.592151, 0.592306, 0.592460, 0.592615, 0.592769, 0.592924, 0.593078, + 0.593232, 0.593387, 0.593541, 0.593695, 0.593850, 0.594004, 0.594158, 0.594312, + 0.594467, 0.594621, 0.594775, 0.594929, 0.595083, 0.595237, 0.595391, 0.595545, + 0.595699, 0.595853, 0.596007, 0.596161, 0.596315, 0.596469, 0.596623, 0.596777, + 0.596931, 0.597085, 0.597238, 0.597392, 0.597546, 0.597700, 0.597853, 0.598007, + 0.598161, 0.598314, 0.598468, 0.598622, 0.598775, 0.598929, 0.599082, 0.599236, + 0.599389, 0.599543, 0.599696, 0.599850, 0.600003, 0.600156, 0.600310, 0.600463, + 0.600616, 0.600770, 0.600923, 0.601076, 0.601230, 0.601383, 0.601536, 0.601689, + 0.601842, 0.601995, 0.602148, 0.602302, 0.602455, 0.602608, 0.602761, 0.602914, + 0.603067, 0.603220, 0.603372, 0.603525, 0.603678, 0.603831, 0.603984, 0.604137, + 0.604290, 0.604442, 0.604595, 0.604748, 0.604900, 0.605053, 0.605206, 0.605358, + 0.605511, 0.605664, 0.605816, 0.605969, 0.606121, 0.606274, 0.606426, 0.606579, + 0.606731, 0.606884, 0.607036, 0.607188, 0.607341, 0.607493, 0.607645, 0.607798, + 0.607950, 0.608102, 0.608254, 0.608406, 0.608559, 0.608711, 0.608863, 0.609015, + 0.609167, 0.609319, 0.609471, 0.609623, 0.609775, 0.609927, 0.610079, 0.610231, + 0.610383, 0.610535, 0.610687, 0.610838, 0.610990, 0.611142, 0.611294, 0.611445, + 0.611597, 0.611749, 0.611901, 0.612052, 0.612204, 0.612355, 0.612507, 0.612659, + 0.612810, 0.612962, 0.613113, 0.613265, 0.613416, 0.613567, 0.613719, 0.613870, + 0.614022, 0.614173, 0.614324, 0.614475, 0.614627, 0.614778, 0.614929, 0.615080, + 0.615232, 0.615383, 0.615534, 0.615685, 0.615836, 0.615987, 0.616138, 0.616289, + 0.616440, 0.616591, 0.616742, 0.616893, 0.617044, 0.617195, 0.617346, 0.617496, + 0.617647, 0.617798, 0.617949, 0.618100, 0.618250, 0.618401, 0.618552, 0.618702, + 0.618853, 0.619004, 0.619154, 0.619305, 0.619455, 0.619606, 0.619756, 0.619907, + 0.620057, 0.620208, 0.620358, 0.620508, 0.620659, 0.620809, 0.620959, 0.621110, + 0.621260, 0.621410, 0.621560, 0.621711, 0.621861, 0.622011, 0.622161, 0.622311, + 0.622461, 0.622611, 0.622761, 0.622911, 0.623061, 0.623211, 0.623361, 0.623511, + 0.623661, 0.623811, 0.623961, 0.624111, 0.624260, 0.624410, 0.624560, 0.624710, + 0.624860, 0.625009, 0.625159, 0.625309, 0.625458, 0.625608, 0.625757, 0.625907, + 0.626056, 0.626206, 0.626355, 0.626505, 0.626654, 0.626804, 0.626953, 0.627102, + 0.627252, 0.627401, 0.627550, 0.627700, 0.627849, 0.627998, 0.628147, 0.628297, + 0.628446, 0.628595, 0.628744, 0.628893, 0.629042, 0.629191, 0.629340, 0.629489, + 0.629638, 0.629787, 0.629936, 0.630085, 0.630234, 0.630383, 0.630532, 0.630680, + 0.630829, 0.630978, 0.631127, 0.631275, 0.631424, 0.631573, 0.631721, 0.631870, + 0.632019, 0.632167, 0.632316, 0.632464, 0.632613, 0.632761, 0.632910, 0.633058, + 0.633207, 0.633355, 0.633504, 0.633652, 0.633800, 0.633949, 0.634097, 0.634245, + 0.634393, 0.634542, 0.634690, 0.634838, 0.634986, 0.635134, 0.635282, 0.635430, + 0.635578, 0.635726, 0.635874, 0.636022, 0.636170, 0.636318, 0.636466, 0.636614, + 0.636762, 0.636910, 0.637057, 0.637205, 0.637353, 0.637501, 0.637649, 0.637796, + 0.637944, 0.638092, 0.638239, 0.638387, 0.638534, 0.638682, 0.638829, 0.638977, + 0.639124, 0.639272, 0.639419, 0.639567, 0.639714, 0.639862, 0.640009, 0.640156, + 0.640303, 0.640451, 0.640598, 0.640745, 0.640892, 0.641040, 0.641187, 0.641334, + 0.641481, 0.641628, 0.641775, 0.641922, 0.642069, 0.642216, 0.642363, 0.642510, + 0.642657, 0.642804, 0.642951, 0.643098, 0.643245, 0.643391, 0.643538, 0.643685, + 0.643832, 0.643978, 0.644125, 0.644272, 0.644418, 0.644565, 0.644711, 0.644858, + 0.645005, 0.645151, 0.645298, 0.645444, 0.645590, 0.645737, 0.645883, 0.646030, + 0.646176, 0.646322, 0.646469, 0.646615, 0.646761, 0.646907, 0.647054, 0.647200, + 0.647346, 0.647492, 0.647638, 0.647784, 0.647930, 0.648076, 0.648222, 0.648368, + 0.648514, 0.648660, 0.648806, 0.648952, 0.649098, 0.649244, 0.649390, 0.649536, + 0.649681, 0.649827, 0.649973, 0.650119, 0.650264, 0.650410, 0.650555, 0.650701, + 0.650847, 0.650992, 0.651138, 0.651283, 0.651429, 0.651574, 0.651720, 0.651865, + 0.652011, 0.652156, 0.652301, 0.652447, 0.652592, 0.652737, 0.652882, 0.653028, + 0.653173, 0.653318, 0.653463, 0.653608, 0.653753, 0.653899, 0.654044, 0.654189, + 0.654334, 0.654479, 0.654624, 0.654769, 0.654913, 0.655058, 0.655203, 0.655348, + 0.655493, 0.655638, 0.655782, 0.655927, 0.656072, 0.656217, 0.656361, 0.656506, + 0.656651, 0.656795, 0.656940, 0.657084, 0.657229, 0.657373, 0.657518, 0.657662, + 0.657807, 0.657951, 0.658095, 0.658240, 0.658384, 0.658529, 0.658673, 0.658817, + 0.658961, 0.659105, 0.659250, 0.659394, 0.659538, 0.659682, 0.659826, 0.659970, + 0.660114, 0.660258, 0.660402, 0.660546, 0.660690, 0.660834, 0.660978, 0.661122, + 0.661266, 0.661410, 0.661553, 0.661697, 0.661841, 0.661985, 0.662128, 0.662272, + 0.662416, 0.662559, 0.662703, 0.662847, 0.662990, 0.663134, 0.663277, 0.663421, + 0.663564, 0.663708, 0.663851, 0.663994, 0.664138, 0.664281, 0.664424, 0.664568, + 0.664711, 0.664854, 0.664997, 0.665141, 0.665284, 0.665427, 0.665570, 0.665713, + 0.665856, 0.665999, 0.666142, 0.666285, 0.666428, 0.666571, 0.666714, 0.666857, + 0.667000, 0.667143, 0.667286, 0.667428, 0.667571, 0.667714, 0.667857, 0.667999, + 0.668142, 0.668285, 0.668427, 0.668570, 0.668712, 0.668855, 0.668998, 0.669140, + 0.669283, 0.669425, 0.669567, 0.669710, 0.669852, 0.669995, 0.670137, 0.670279, + 0.670422, 0.670564, 0.670706, 0.670848, 0.670990, 0.671133, 0.671275, 0.671417, + 0.671559, 0.671701, 0.671843, 0.671985, 0.672127, 0.672269, 0.672411, 0.672553, + 0.672695, 0.672837, 0.672978, 0.673120, 0.673262, 0.673404, 0.673546, 0.673687, + 0.673829, 0.673971, 0.674112, 0.674254, 0.674396, 0.674537, 0.674679, 0.674820, + 0.674962, 0.675103, 0.675245, 0.675386, 0.675527, 0.675669, 0.675810, 0.675951, + 0.676093, 0.676234, 0.676375, 0.676516, 0.676658, 0.676799, 0.676940, 0.677081, + 0.677222, 0.677363, 0.677504, 0.677645, 0.677786, 0.677927, 0.678068, 0.678209, + 0.678350, 0.678491, 0.678632, 0.678773, 0.678913, 0.679054, 0.679195, 0.679336, + 0.679476, 0.679617, 0.679758, 0.679898, 0.680039, 0.680179, 0.680320, 0.680461, + 0.680601, 0.680741, 0.680882, 0.681022, 0.681163, 0.681303, 0.681443, 0.681584, + 0.681724, 0.681864, 0.682005, 0.682145, 0.682285, 0.682425, 0.682565, 0.682705, + 0.682846, 0.682986, 0.683126, 0.683266, 0.683406, 0.683546, 0.683686, 0.683825, + 0.683965, 0.684105, 0.684245, 0.684385, 0.684525, 0.684664, 0.684804, 0.684944, + 0.685084, 0.685223, 0.685363, 0.685503, 0.685642, 0.685782, 0.685921, 0.686061, + 0.686200, 0.686340, 0.686479, 0.686619, 0.686758, 0.686897, 0.687037, 0.687176, + 0.687315, 0.687455, 0.687594, 0.687733, 0.687872, 0.688011, 0.688151, 0.688290, + 0.688429, 0.688568, 0.688707, 0.688846, 0.688985, 0.689124, 0.689263, 0.689402, + 0.689541, 0.689679, 0.689818, 0.689957, 0.690096, 0.690235, 0.690373, 0.690512, + 0.690651, 0.690789, 0.690928, 0.691067, 0.691205, 0.691344, 0.691482, 0.691621, + 0.691759, 0.691898, 0.692036, 0.692175, 0.692313, 0.692451, 0.692590, 0.692728, + 0.692866, 0.693004, 0.693143, 0.693281, 0.693419, 0.693557, 0.693695, 0.693833, + 0.693971, 0.694109, 0.694248, 0.694386, 0.694524, 0.694661, 0.694799, 0.694937, + 0.695075, 0.695213, 0.695351, 0.695489, 0.695626, 0.695764, 0.695902, 0.696039, + 0.696177, 0.696315, 0.696452, 0.696590, 0.696728, 0.696865, 0.697003, 0.697140, + 0.697277, 0.697415, 0.697552, 0.697690, 0.697827, 0.697964, 0.698102, 0.698239, + 0.698376, 0.698513, 0.698651, 0.698788, 0.698925, 0.699062, 0.699199, 0.699336, + 0.699473, 0.699610, 0.699747, 0.699884, 0.700021, 0.700158, 0.700295, 0.700432, + 0.700569, 0.700706, 0.700842, 0.700979, 0.701116, 0.701253, 0.701389, 0.701526, + 0.701663, 0.701799, 0.701936, 0.702072, 0.702209, 0.702345, 0.702482, 0.702618, + 0.702755, 0.702891, 0.703028, 0.703164, 0.703300, 0.703436, 0.703573, 0.703709, + 0.703845, 0.703981, 0.704118, 0.704254, 0.704390, 0.704526, 0.704662, 0.704798, + 0.704934, 0.705070, 0.705206, 0.705342, 0.705478, 0.705614, 0.705750, 0.705885, + 0.706021, 0.706157, 0.706293, 0.706429, 0.706564, 0.706700, 0.706836, 0.706971, + 0.707107, 0.707242, 0.707378, 0.707513, 0.707649, 0.707784, 0.707920, 0.708055, + 0.708191, 0.708326, 0.708461, 0.708597, 0.708732, 0.708867, 0.709002, 0.709138, + 0.709273, 0.709408, 0.709543, 0.709678, 0.709813, 0.709948, 0.710083, 0.710218, + 0.710353, 0.710488, 0.710623, 0.710758, 0.710893, 0.711028, 0.711163, 0.711297, + 0.711432, 0.711567, 0.711702, 0.711836, 0.711971, 0.712106, 0.712240, 0.712375, + 0.712509, 0.712644, 0.712778, 0.712913, 0.713047, 0.713182, 0.713316, 0.713451, + 0.713585, 0.713719, 0.713853, 0.713988, 0.714122, 0.714256, 0.714390, 0.714525, + 0.714659, 0.714793, 0.714927, 0.715061, 0.715195, 0.715329, 0.715463, 0.715597, + 0.715731, 0.715865, 0.715999, 0.716132, 0.716266, 0.716400, 0.716534, 0.716668, + 0.716801, 0.716935, 0.717069, 0.717202, 0.717336, 0.717469, 0.717603, 0.717737, + 0.717870, 0.718004, 0.718137, 0.718270, 0.718404, 0.718537, 0.718670, 0.718804, + 0.718937, 0.719070, 0.719204, 0.719337, 0.719470, 0.719603, 0.719736, 0.719869, + 0.720003, 0.720136, 0.720269, 0.720402, 0.720535, 0.720668, 0.720800, 0.720933, + 0.721066, 0.721199, 0.721332, 0.721465, 0.721597, 0.721730, 0.721863, 0.721996, + 0.722128, 0.722261, 0.722393, 0.722526, 0.722659, 0.722791, 0.722924, 0.723056, + 0.723188, 0.723321, 0.723453, 0.723586, 0.723718, 0.723850, 0.723983, 0.724115, + 0.724247, 0.724379, 0.724511, 0.724644, 0.724776, 0.724908, 0.725040, 0.725172, + 0.725304, 0.725436, 0.725568, 0.725700, 0.725832, 0.725964, 0.726095, 0.726227, + 0.726359, 0.726491, 0.726623, 0.726754, 0.726886, 0.727018, 0.727149, 0.727281, + 0.727413, 0.727544, 0.727676, 0.727807, 0.727939, 0.728070, 0.728202, 0.728333, + 0.728464, 0.728596, 0.728727, 0.728858, 0.728990, 0.729121, 0.729252, 0.729383, + 0.729514, 0.729646, 0.729777, 0.729908, 0.730039, 0.730170, 0.730301, 0.730432, + 0.730563, 0.730694, 0.730825, 0.730955, 0.731086, 0.731217, 0.731348, 0.731479, + 0.731609, 0.731740, 0.731871, 0.732001, 0.732132, 0.732263, 0.732393, 0.732524, + 0.732654, 0.732785, 0.732915, 0.733046, 0.733176, 0.733306, 0.733437, 0.733567, + 0.733697, 0.733828, 0.733958, 0.734088, 0.734218, 0.734349, 0.734479, 0.734609, + 0.734739, 0.734869, 0.734999, 0.735129, 0.735259, 0.735389, 0.735519, 0.735649, + 0.735779, 0.735908, 0.736038, 0.736168, 0.736298, 0.736428, 0.736557, 0.736687, + 0.736817, 0.736946, 0.737076, 0.737205, 0.737335, 0.737464, 0.737594, 0.737723, + 0.737853, 0.737982, 0.738112, 0.738241, 0.738370, 0.738500, 0.738629, 0.738758, + 0.738887, 0.739017, 0.739146, 0.739275, 0.739404, 0.739533, 0.739662, 0.739791, + 0.739920, 0.740049, 0.740178, 0.740307, 0.740436, 0.740565, 0.740694, 0.740822, + 0.740951, 0.741080, 0.741209, 0.741337, 0.741466, 0.741595, 0.741723, 0.741852, + 0.741980, 0.742109, 0.742237, 0.742366, 0.742494, 0.742623, 0.742751, 0.742880, + 0.743008, 0.743136, 0.743265, 0.743393, 0.743521, 0.743649, 0.743777, 0.743906, + 0.744034, 0.744162, 0.744290, 0.744418, 0.744546, 0.744674, 0.744802, 0.744930, + 0.745058, 0.745186, 0.745314, 0.745441, 0.745569, 0.745697, 0.745825, 0.745952, + 0.746080, 0.746208, 0.746335, 0.746463, 0.746591, 0.746718, 0.746846, 0.746973, + 0.747101, 0.747228, 0.747355, 0.747483, 0.747610, 0.747738, 0.747865, 0.747992, + 0.748119, 0.748247, 0.748374, 0.748501, 0.748628, 0.748755, 0.748882, 0.749009, + 0.749136, 0.749263, 0.749390, 0.749517, 0.749644, 0.749771, 0.749898, 0.750025, + 0.750152, 0.750278, 0.750405, 0.750532, 0.750659, 0.750785, 0.750912, 0.751039, + 0.751165, 0.751292, 0.751418, 0.751545, 0.751671, 0.751798, 0.751924, 0.752050, + 0.752177, 0.752303, 0.752429, 0.752556, 0.752682, 0.752808, 0.752934, 0.753061, + 0.753187, 0.753313, 0.753439, 0.753565, 0.753691, 0.753817, 0.753943, 0.754069, + 0.754195, 0.754321, 0.754447, 0.754573, 0.754698, 0.754824, 0.754950, 0.755076, + 0.755201, 0.755327, 0.755453, 0.755578, 0.755704, 0.755829, 0.755955, 0.756081, + 0.756206, 0.756331, 0.756457, 0.756582, 0.756708, 0.756833, 0.756958, 0.757084, + 0.757209, 0.757334, 0.757459, 0.757584, 0.757710, 0.757835, 0.757960, 0.758085, + 0.758210, 0.758335, 0.758460, 0.758585, 0.758710, 0.758835, 0.758960, 0.759084, + 0.759209, 0.759334, 0.759459, 0.759583, 0.759708, 0.759833, 0.759957, 0.760082, + 0.760207, 0.760331, 0.760456, 0.760580, 0.760705, 0.760829, 0.760954, 0.761078, + 0.761202, 0.761327, 0.761451, 0.761575, 0.761700, 0.761824, 0.761948, 0.762072, + 0.762196, 0.762320, 0.762444, 0.762569, 0.762693, 0.762817, 0.762941, 0.763065, + 0.763188, 0.763312, 0.763436, 0.763560, 0.763684, 0.763808, 0.763931, 0.764055, + 0.764179, 0.764302, 0.764426, 0.764550, 0.764673, 0.764797, 0.764920, 0.765044, + 0.765167, 0.765291, 0.765414, 0.765538, 0.765661, 0.765784, 0.765907, 0.766031, + 0.766154, 0.766277, 0.766400, 0.766524, 0.766647, 0.766770, 0.766893, 0.767016, + 0.767139, 0.767262, 0.767385, 0.767508, 0.767631, 0.767754, 0.767876, 0.767999, + 0.768122, 0.768245, 0.768368, 0.768490, 0.768613, 0.768736, 0.768858, 0.768981, + 0.769103, 0.769226, 0.769348, 0.769471, 0.769593, 0.769716, 0.769838, 0.769961, + 0.770083, 0.770205, 0.770327, 0.770450, 0.770572, 0.770694, 0.770816, 0.770938, + 0.771061, 0.771183, 0.771305, 0.771427, 0.771549, 0.771671, 0.771793, 0.771915, + 0.772036, 0.772158, 0.772280, 0.772402, 0.772524, 0.772645, 0.772767, 0.772889, + 0.773010, 0.773132, 0.773254, 0.773375, 0.773497, 0.773618, 0.773740, 0.773861, + 0.773983, 0.774104, 0.774225, 0.774347, 0.774468, 0.774589, 0.774711, 0.774832, + 0.774953, 0.775074, 0.775195, 0.775317, 0.775438, 0.775559, 0.775680, 0.775801, + 0.775922, 0.776043, 0.776164, 0.776284, 0.776405, 0.776526, 0.776647, 0.776768, + 0.776888, 0.777009, 0.777130, 0.777251, 0.777371, 0.777492, 0.777612, 0.777733, + 0.777853, 0.777974, 0.778094, 0.778215, 0.778335, 0.778456, 0.778576, 0.778696, + 0.778817, 0.778937, 0.779057, 0.779177, 0.779297, 0.779418, 0.779538, 0.779658, + 0.779778, 0.779898, 0.780018, 0.780138, 0.780258, 0.780378, 0.780498, 0.780617, + 0.780737, 0.780857, 0.780977, 0.781097, 0.781216, 0.781336, 0.781456, 0.781575, + 0.781695, 0.781814, 0.781934, 0.782053, 0.782173, 0.782292, 0.782412, 0.782531, + 0.782651, 0.782770, 0.782889, 0.783009, 0.783128, 0.783247, 0.783366, 0.783485, + 0.783605, 0.783724, 0.783843, 0.783962, 0.784081, 0.784200, 0.784319, 0.784438, + 0.784557, 0.784675, 0.784794, 0.784913, 0.785032, 0.785151, 0.785269, 0.785388, + 0.785507, 0.785625, 0.785744, 0.785863, 0.785981, 0.786100, 0.786218, 0.786337, + 0.786455, 0.786574, 0.786692, 0.786810, 0.786929, 0.787047, 0.787165, 0.787284, + 0.787402, 0.787520, 0.787638, 0.787756, 0.787874, 0.787992, 0.788110, 0.788228, + 0.788346, 0.788464, 0.788582, 0.788700, 0.788818, 0.788936, 0.789054, 0.789172, + 0.789289, 0.789407, 0.789525, 0.789642, 0.789760, 0.789878, 0.789995, 0.790113, + 0.790230, 0.790348, 0.790465, 0.790583, 0.790700, 0.790817, 0.790935, 0.791052, + 0.791169, 0.791287, 0.791404, 0.791521, 0.791638, 0.791755, 0.791872, 0.791990, + 0.792107, 0.792224, 0.792341, 0.792458, 0.792575, 0.792691, 0.792808, 0.792925, + 0.793042, 0.793159, 0.793276, 0.793392, 0.793509, 0.793626, 0.793742, 0.793859, + 0.793975, 0.794092, 0.794209, 0.794325, 0.794442, 0.794558, 0.794674, 0.794791, + 0.794907, 0.795023, 0.795140, 0.795256, 0.795372, 0.795488, 0.795605, 0.795721, + 0.795837, 0.795953, 0.796069, 0.796185, 0.796301, 0.796417, 0.796533, 0.796649, + 0.796765, 0.796881, 0.796996, 0.797112, 0.797228, 0.797344, 0.797459, 0.797575, + 0.797691, 0.797806, 0.797922, 0.798038, 0.798153, 0.798269, 0.798384, 0.798500, + 0.798615, 0.798730, 0.798846, 0.798961, 0.799076, 0.799192, 0.799307, 0.799422, + 0.799537, 0.799652, 0.799768, 0.799883, 0.799998, 0.800113, 0.800228, 0.800343, + 0.800458, 0.800573, 0.800687, 0.800802, 0.800917, 0.801032, 0.801147, 0.801261, + 0.801376, 0.801491, 0.801606, 0.801720, 0.801835, 0.801949, 0.802064, 0.802178, + 0.802293, 0.802407, 0.802522, 0.802636, 0.802750, 0.802865, 0.802979, 0.803093, + 0.803208, 0.803322, 0.803436, 0.803550, 0.803664, 0.803778, 0.803892, 0.804006, + 0.804120, 0.804234, 0.804348, 0.804462, 0.804576, 0.804690, 0.804804, 0.804918, + 0.805031, 0.805145, 0.805259, 0.805372, 0.805486, 0.805600, 0.805713, 0.805827, + 0.805940, 0.806054, 0.806167, 0.806281, 0.806394, 0.806508, 0.806621, 0.806734, + 0.806848, 0.806961, 0.807074, 0.807187, 0.807300, 0.807414, 0.807527, 0.807640, + 0.807753, 0.807866, 0.807979, 0.808092, 0.808205, 0.808318, 0.808430, 0.808543, + 0.808656, 0.808769, 0.808882, 0.808994, 0.809107, 0.809220, 0.809332, 0.809445, + 0.809558, 0.809670, 0.809783, 0.809895, 0.810008, 0.810120, 0.810232, 0.810345, + 0.810457, 0.810570, 0.810682, 0.810794, 0.810906, 0.811018, 0.811131, 0.811243, + 0.811355, 0.811467, 0.811579, 0.811691, 0.811803, 0.811915, 0.812027, 0.812139, + 0.812251, 0.812362, 0.812474, 0.812586, 0.812698, 0.812809, 0.812921, 0.813033, + 0.813144, 0.813256, 0.813368, 0.813479, 0.813591, 0.813702, 0.813814, 0.813925, + 0.814036, 0.814148, 0.814259, 0.814370, 0.814482, 0.814593, 0.814704, 0.814815, + 0.814926, 0.815037, 0.815149, 0.815260, 0.815371, 0.815482, 0.815593, 0.815704, + 0.815814, 0.815925, 0.816036, 0.816147, 0.816258, 0.816368, 0.816479, 0.816590, + 0.816701, 0.816811, 0.816922, 0.817032, 0.817143, 0.817253, 0.817364, 0.817474, + 0.817585, 0.817695, 0.817806, 0.817916, 0.818026, 0.818137, 0.818247, 0.818357, + 0.818467, 0.818577, 0.818687, 0.818798, 0.818908, 0.819018, 0.819128, 0.819238, + 0.819348, 0.819457, 0.819567, 0.819677, 0.819787, 0.819897, 0.820007, 0.820116, + 0.820226, 0.820336, 0.820445, 0.820555, 0.820664, 0.820774, 0.820884, 0.820993, + 0.821102, 0.821212, 0.821321, 0.821431, 0.821540, 0.821649, 0.821759, 0.821868, + 0.821977, 0.822086, 0.822195, 0.822305, 0.822414, 0.822523, 0.822632, 0.822741, + 0.822850, 0.822959, 0.823068, 0.823177, 0.823285, 0.823394, 0.823503, 0.823612, + 0.823721, 0.823829, 0.823938, 0.824047, 0.824155, 0.824264, 0.824372, 0.824481, + 0.824589, 0.824698, 0.824806, 0.824915, 0.825023, 0.825131, 0.825240, 0.825348, + 0.825456, 0.825564, 0.825673, 0.825781, 0.825889, 0.825997, 0.826105, 0.826213, + 0.826321, 0.826429, 0.826537, 0.826645, 0.826753, 0.826861, 0.826968, 0.827076, + 0.827184, 0.827292, 0.827399, 0.827507, 0.827615, 0.827722, 0.827830, 0.827938, + 0.828045, 0.828153, 0.828260, 0.828367, 0.828475, 0.828582, 0.828690, 0.828797, + 0.828904, 0.829011, 0.829119, 0.829226, 0.829333, 0.829440, 0.829547, 0.829654, + 0.829761, 0.829868, 0.829975, 0.830082, 0.830189, 0.830296, 0.830403, 0.830510, + 0.830616, 0.830723, 0.830830, 0.830937, 0.831043, 0.831150, 0.831257, 0.831363, + 0.831470, 0.831576, 0.831683, 0.831789, 0.831895, 0.832002, 0.832108, 0.832215, + 0.832321, 0.832427, 0.832533, 0.832640, 0.832746, 0.832852, 0.832958, 0.833064, + 0.833170, 0.833276, 0.833382, 0.833488, 0.833594, 0.833700, 0.833806, 0.833912, + 0.834018, 0.834123, 0.834229, 0.834335, 0.834440, 0.834546, 0.834652, 0.834757, + 0.834863, 0.834968, 0.835074, 0.835179, 0.835285, 0.835390, 0.835496, 0.835601, + 0.835706, 0.835812, 0.835917, 0.836022, 0.836127, 0.836232, 0.836338, 0.836443, + 0.836548, 0.836653, 0.836758, 0.836863, 0.836968, 0.837073, 0.837178, 0.837282, + 0.837387, 0.837492, 0.837597, 0.837701, 0.837806, 0.837911, 0.838015, 0.838120, + 0.838225, 0.838329, 0.838434, 0.838538, 0.838643, 0.838747, 0.838852, 0.838956, + 0.839060, 0.839165, 0.839269, 0.839373, 0.839477, 0.839581, 0.839686, 0.839790, + 0.839894, 0.839998, 0.840102, 0.840206, 0.840310, 0.840414, 0.840518, 0.840622, + 0.840725, 0.840829, 0.840933, 0.841037, 0.841140, 0.841244, 0.841348, 0.841451, + 0.841555, 0.841659, 0.841762, 0.841866, 0.841969, 0.842072, 0.842176, 0.842279, + 0.842383, 0.842486, 0.842589, 0.842692, 0.842796, 0.842899, 0.843002, 0.843105, + 0.843208, 0.843311, 0.843414, 0.843517, 0.843620, 0.843723, 0.843826, 0.843929, + 0.844032, 0.844135, 0.844238, 0.844340, 0.844443, 0.844546, 0.844648, 0.844751, + 0.844854, 0.844956, 0.845059, 0.845161, 0.845264, 0.845366, 0.845469, 0.845571, + 0.845673, 0.845776, 0.845878, 0.845980, 0.846082, 0.846185, 0.846287, 0.846389, + 0.846491, 0.846593, 0.846695, 0.846797, 0.846899, 0.847001, 0.847103, 0.847205, + 0.847307, 0.847408, 0.847510, 0.847612, 0.847714, 0.847815, 0.847917, 0.848019, + 0.848120, 0.848222, 0.848323, 0.848425, 0.848526, 0.848628, 0.848729, 0.848831, + 0.848932, 0.849033, 0.849135, 0.849236, 0.849337, 0.849438, 0.849540, 0.849641, + 0.849742, 0.849843, 0.849944, 0.850045, 0.850146, 0.850247, 0.850348, 0.850449, + 0.850549, 0.850650, 0.850751, 0.850852, 0.850953, 0.851053, 0.851154, 0.851255, + 0.851355, 0.851456, 0.851556, 0.851657, 0.851757, 0.851858, 0.851958, 0.852059, + 0.852159, 0.852259, 0.852360, 0.852460, 0.852560, 0.852660, 0.852760, 0.852861, + 0.852961, 0.853061, 0.853161, 0.853261, 0.853361, 0.853461, 0.853561, 0.853660, + 0.853760, 0.853860, 0.853960, 0.854060, 0.854159, 0.854259, 0.854359, 0.854458, + 0.854558, 0.854658, 0.854757, 0.854857, 0.854956, 0.855056, 0.855155, 0.855254, + 0.855354, 0.855453, 0.855552, 0.855651, 0.855751, 0.855850, 0.855949, 0.856048, + 0.856147, 0.856246, 0.856345, 0.856444, 0.856543, 0.856642, 0.856741, 0.856840, + 0.856939, 0.857038, 0.857137, 0.857235, 0.857334, 0.857433, 0.857531, 0.857630, + 0.857729, 0.857827, 0.857926, 0.858024, 0.858123, 0.858221, 0.858320, 0.858418, + 0.858516, 0.858615, 0.858713, 0.858811, 0.858909, 0.859007, 0.859106, 0.859204, + 0.859302, 0.859400, 0.859498, 0.859596, 0.859694, 0.859792, 0.859890, 0.859988, + 0.860085, 0.860183, 0.860281, 0.860379, 0.860476, 0.860574, 0.860672, 0.860769, + 0.860867, 0.860964, 0.861062, 0.861160, 0.861257, 0.861354, 0.861452, 0.861549, + 0.861646, 0.861744, 0.861841, 0.861938, 0.862035, 0.862133, 0.862230, 0.862327, + 0.862424, 0.862521, 0.862618, 0.862715, 0.862812, 0.862909, 0.863006, 0.863103, + 0.863199, 0.863296, 0.863393, 0.863490, 0.863586, 0.863683, 0.863780, 0.863876, + 0.863973, 0.864069, 0.864166, 0.864262, 0.864359, 0.864455, 0.864552, 0.864648, + 0.864744, 0.864841, 0.864937, 0.865033, 0.865129, 0.865225, 0.865321, 0.865418, + 0.865514, 0.865610, 0.865706, 0.865802, 0.865898, 0.865993, 0.866089, 0.866185, + 0.866281, 0.866377, 0.866472, 0.866568, 0.866664, 0.866759, 0.866855, 0.866951, + 0.867046, 0.867142, 0.867237, 0.867333, 0.867428, 0.867523, 0.867619, 0.867714, + 0.867809, 0.867905, 0.868000, 0.868095, 0.868190, 0.868285, 0.868381, 0.868476, + 0.868571, 0.868666, 0.868761, 0.868856, 0.868951, 0.869045, 0.869140, 0.869235, + 0.869330, 0.869425, 0.869519, 0.869614, 0.869709, 0.869803, 0.869898, 0.869992, + 0.870087, 0.870182, 0.870276, 0.870370, 0.870465, 0.870559, 0.870654, 0.870748, + 0.870842, 0.870936, 0.871031, 0.871125, 0.871219, 0.871313, 0.871407, 0.871501, + 0.871595, 0.871689, 0.871783, 0.871877, 0.871971, 0.872065, 0.872159, 0.872252, + 0.872346, 0.872440, 0.872534, 0.872627, 0.872721, 0.872814, 0.872908, 0.873001, + 0.873095, 0.873188, 0.873282, 0.873375, 0.873469, 0.873562, 0.873655, 0.873749, + 0.873842, 0.873935, 0.874028, 0.874121, 0.874215, 0.874308, 0.874401, 0.874494, + 0.874587, 0.874680, 0.874773, 0.874865, 0.874958, 0.875051, 0.875144, 0.875237, + 0.875329, 0.875422, 0.875515, 0.875607, 0.875700, 0.875793, 0.875885, 0.875978, + 0.876070, 0.876163, 0.876255, 0.876347, 0.876440, 0.876532, 0.876624, 0.876716, + 0.876809, 0.876901, 0.876993, 0.877085, 0.877177, 0.877269, 0.877361, 0.877453, + 0.877545, 0.877637, 0.877729, 0.877821, 0.877913, 0.878005, 0.878096, 0.878188, + 0.878280, 0.878371, 0.878463, 0.878555, 0.878646, 0.878738, 0.878829, 0.878921, + 0.879012, 0.879104, 0.879195, 0.879286, 0.879378, 0.879469, 0.879560, 0.879651, + 0.879743, 0.879834, 0.879925, 0.880016, 0.880107, 0.880198, 0.880289, 0.880380, + 0.880471, 0.880562, 0.880653, 0.880743, 0.880834, 0.880925, 0.881016, 0.881106, + 0.881197, 0.881288, 0.881378, 0.881469, 0.881559, 0.881650, 0.881740, 0.881831, + 0.881921, 0.882012, 0.882102, 0.882192, 0.882283, 0.882373, 0.882463, 0.882553, + 0.882643, 0.882733, 0.882824, 0.882914, 0.883004, 0.883094, 0.883184, 0.883273, + 0.883363, 0.883453, 0.883543, 0.883633, 0.883723, 0.883812, 0.883902, 0.883992, + 0.884081, 0.884171, 0.884260, 0.884350, 0.884439, 0.884529, 0.884618, 0.884708, + 0.884797, 0.884886, 0.884976, 0.885065, 0.885154, 0.885243, 0.885333, 0.885422, + 0.885511, 0.885600, 0.885689, 0.885778, 0.885867, 0.885956, 0.886045, 0.886134, + 0.886223, 0.886311, 0.886400, 0.886489, 0.886578, 0.886666, 0.886755, 0.886844, + 0.886932, 0.887021, 0.887109, 0.887198, 0.887286, 0.887375, 0.887463, 0.887551, + 0.887640, 0.887728, 0.887816, 0.887904, 0.887993, 0.888081, 0.888169, 0.888257, + 0.888345, 0.888433, 0.888521, 0.888609, 0.888697, 0.888785, 0.888873, 0.888961, + 0.889048, 0.889136, 0.889224, 0.889312, 0.889399, 0.889487, 0.889574, 0.889662, + 0.889750, 0.889837, 0.889925, 0.890012, 0.890099, 0.890187, 0.890274, 0.890361, + 0.890449, 0.890536, 0.890623, 0.890710, 0.890797, 0.890885, 0.890972, 0.891059, + 0.891146, 0.891233, 0.891320, 0.891407, 0.891493, 0.891580, 0.891667, 0.891754, + 0.891841, 0.891927, 0.892014, 0.892101, 0.892187, 0.892274, 0.892361, 0.892447, + 0.892534, 0.892620, 0.892706, 0.892793, 0.892879, 0.892965, 0.893052, 0.893138, + 0.893224, 0.893310, 0.893397, 0.893483, 0.893569, 0.893655, 0.893741, 0.893827, + 0.893913, 0.893999, 0.894085, 0.894171, 0.894256, 0.894342, 0.894428, 0.894514, + 0.894599, 0.894685, 0.894771, 0.894856, 0.894942, 0.895028, 0.895113, 0.895198, + 0.895284, 0.895369, 0.895455, 0.895540, 0.895625, 0.895711, 0.895796, 0.895881, + 0.895966, 0.896051, 0.896137, 0.896222, 0.896307, 0.896392, 0.896477, 0.896562, + 0.896646, 0.896731, 0.896816, 0.896901, 0.896986, 0.897071, 0.897155, 0.897240, + 0.897325, 0.897409, 0.897494, 0.897578, 0.897663, 0.897747, 0.897832, 0.897916, + 0.898001, 0.898085, 0.898169, 0.898254, 0.898338, 0.898422, 0.898506, 0.898590, + 0.898674, 0.898759, 0.898843, 0.898927, 0.899011, 0.899095, 0.899179, 0.899262, + 0.899346, 0.899430, 0.899514, 0.899598, 0.899681, 0.899765, 0.899849, 0.899932, + 0.900016, 0.900099, 0.900183, 0.900266, 0.900350, 0.900433, 0.900517, 0.900600, + 0.900683, 0.900767, 0.900850, 0.900933, 0.901016, 0.901100, 0.901183, 0.901266, + 0.901349, 0.901432, 0.901515, 0.901598, 0.901681, 0.901764, 0.901847, 0.901929, + 0.902012, 0.902095, 0.902178, 0.902260, 0.902343, 0.902426, 0.902508, 0.902591, + 0.902673, 0.902756, 0.902838, 0.902921, 0.903003, 0.903085, 0.903168, 0.903250, + 0.903332, 0.903415, 0.903497, 0.903579, 0.903661, 0.903743, 0.903825, 0.903907, + 0.903989, 0.904071, 0.904153, 0.904235, 0.904317, 0.904399, 0.904481, 0.904562, + 0.904644, 0.904726, 0.904807, 0.904889, 0.904971, 0.905052, 0.905134, 0.905215, + 0.905297, 0.905378, 0.905460, 0.905541, 0.905622, 0.905704, 0.905785, 0.905866, + 0.905947, 0.906028, 0.906110, 0.906191, 0.906272, 0.906353, 0.906434, 0.906515, + 0.906596, 0.906677, 0.906757, 0.906838, 0.906919, 0.907000, 0.907081, 0.907161, + 0.907242, 0.907323, 0.907403, 0.907484, 0.907564, 0.907645, 0.907725, 0.907806, + 0.907886, 0.907966, 0.908047, 0.908127, 0.908207, 0.908288, 0.908368, 0.908448, + 0.908528, 0.908608, 0.908688, 0.908768, 0.908848, 0.908928, 0.909008, 0.909088, + 0.909168, 0.909248, 0.909328, 0.909407, 0.909487, 0.909567, 0.909646, 0.909726, + 0.909806, 0.909885, 0.909965, 0.910044, 0.910124, 0.910203, 0.910283, 0.910362, + 0.910441, 0.910521, 0.910600, 0.910679, 0.910758, 0.910837, 0.910917, 0.910996, + 0.911075, 0.911154, 0.911233, 0.911312, 0.911391, 0.911470, 0.911548, 0.911627, + 0.911706, 0.911785, 0.911864, 0.911942, 0.912021, 0.912099, 0.912178, 0.912257, + 0.912335, 0.912414, 0.912492, 0.912571, 0.912649, 0.912727, 0.912806, 0.912884, + 0.912962, 0.913040, 0.913119, 0.913197, 0.913275, 0.913353, 0.913431, 0.913509, + 0.913587, 0.913665, 0.913743, 0.913821, 0.913899, 0.913976, 0.914054, 0.914132, + 0.914210, 0.914287, 0.914365, 0.914443, 0.914520, 0.914598, 0.914675, 0.914753, + 0.914830, 0.914908, 0.914985, 0.915062, 0.915140, 0.915217, 0.915294, 0.915372, + 0.915449, 0.915526, 0.915603, 0.915680, 0.915757, 0.915834, 0.915911, 0.915988, + 0.916065, 0.916142, 0.916219, 0.916296, 0.916372, 0.916449, 0.916526, 0.916602, + 0.916679, 0.916756, 0.916832, 0.916909, 0.916985, 0.917062, 0.917138, 0.917215, + 0.917291, 0.917367, 0.917444, 0.917520, 0.917596, 0.917672, 0.917749, 0.917825, + 0.917901, 0.917977, 0.918053, 0.918129, 0.918205, 0.918281, 0.918357, 0.918433, + 0.918508, 0.918584, 0.918660, 0.918736, 0.918811, 0.918887, 0.918963, 0.919038, + 0.919114, 0.919189, 0.919265, 0.919340, 0.919416, 0.919491, 0.919567, 0.919642, + 0.919717, 0.919792, 0.919868, 0.919943, 0.920018, 0.920093, 0.920168, 0.920243, + 0.920318, 0.920393, 0.920468, 0.920543, 0.920618, 0.920693, 0.920768, 0.920842, + 0.920917, 0.920992, 0.921067, 0.921141, 0.921216, 0.921291, 0.921365, 0.921440, + 0.921514, 0.921588, 0.921663, 0.921737, 0.921812, 0.921886, 0.921960, 0.922034, + 0.922109, 0.922183, 0.922257, 0.922331, 0.922405, 0.922479, 0.922553, 0.922627, + 0.922701, 0.922775, 0.922849, 0.922923, 0.922997, 0.923070, 0.923144, 0.923218, + 0.923291, 0.923365, 0.923439, 0.923512, 0.923586, 0.923659, 0.923733, 0.923806, + 0.923880, 0.923953, 0.924026, 0.924100, 0.924173, 0.924246, 0.924319, 0.924392, + 0.924465, 0.924539, 0.924612, 0.924685, 0.924758, 0.924831, 0.924904, 0.924976, + 0.925049, 0.925122, 0.925195, 0.925268, 0.925340, 0.925413, 0.925486, 0.925558, + 0.925631, 0.925703, 0.925776, 0.925848, 0.925921, 0.925993, 0.926066, 0.926138, + 0.926210, 0.926283, 0.926355, 0.926427, 0.926499, 0.926571, 0.926643, 0.926715, + 0.926787, 0.926859, 0.926931, 0.927003, 0.927075, 0.927147, 0.927219, 0.927291, + 0.927363, 0.927434, 0.927506, 0.927578, 0.927649, 0.927721, 0.927792, 0.927864, + 0.927935, 0.928007, 0.928078, 0.928150, 0.928221, 0.928292, 0.928364, 0.928435, + 0.928506, 0.928577, 0.928648, 0.928720, 0.928791, 0.928862, 0.928933, 0.929004, + 0.929075, 0.929146, 0.929216, 0.929287, 0.929358, 0.929429, 0.929500, 0.929570, + 0.929641, 0.929712, 0.929782, 0.929853, 0.929923, 0.929994, 0.930064, 0.930135, + 0.930205, 0.930275, 0.930346, 0.930416, 0.930486, 0.930556, 0.930627, 0.930697, + 0.930767, 0.930837, 0.930907, 0.930977, 0.931047, 0.931117, 0.931187, 0.931257, + 0.931327, 0.931397, 0.931466, 0.931536, 0.931606, 0.931675, 0.931745, 0.931815, + 0.931884, 0.931954, 0.932023, 0.932093, 0.932162, 0.932232, 0.932301, 0.932370, + 0.932440, 0.932509, 0.932578, 0.932647, 0.932716, 0.932786, 0.932855, 0.932924, + 0.932993, 0.933062, 0.933131, 0.933200, 0.933269, 0.933337, 0.933406, 0.933475, + 0.933544, 0.933612, 0.933681, 0.933750, 0.933818, 0.933887, 0.933956, 0.934024, + 0.934093, 0.934161, 0.934229, 0.934298, 0.934366, 0.934434, 0.934503, 0.934571, + 0.934639, 0.934707, 0.934775, 0.934844, 0.934912, 0.934980, 0.935048, 0.935116, + 0.935184, 0.935251, 0.935319, 0.935387, 0.935455, 0.935523, 0.935590, 0.935658, + 0.935726, 0.935793, 0.935861, 0.935928, 0.935996, 0.936063, 0.936131, 0.936198, + 0.936266, 0.936333, 0.936400, 0.936468, 0.936535, 0.936602, 0.936669, 0.936736, + 0.936803, 0.936871, 0.936938, 0.937005, 0.937072, 0.937138, 0.937205, 0.937272, + 0.937339, 0.937406, 0.937473, 0.937539, 0.937606, 0.937673, 0.937739, 0.937806, + 0.937872, 0.937939, 0.938005, 0.938072, 0.938138, 0.938205, 0.938271, 0.938337, + 0.938404, 0.938470, 0.938536, 0.938602, 0.938668, 0.938734, 0.938800, 0.938866, + 0.938932, 0.938998, 0.939064, 0.939130, 0.939196, 0.939262, 0.939328, 0.939394, + 0.939459, 0.939525, 0.939591, 0.939656, 0.939722, 0.939787, 0.939853, 0.939918, + 0.939984, 0.940049, 0.940115, 0.940180, 0.940245, 0.940310, 0.940376, 0.940441, + 0.940506, 0.940571, 0.940636, 0.940701, 0.940766, 0.940831, 0.940896, 0.940961, + 0.941026, 0.941091, 0.941156, 0.941221, 0.941285, 0.941350, 0.941415, 0.941479, + 0.941544, 0.941609, 0.941673, 0.941738, 0.941802, 0.941867, 0.941931, 0.941995, + 0.942060, 0.942124, 0.942188, 0.942253, 0.942317, 0.942381, 0.942445, 0.942509, + 0.942573, 0.942637, 0.942701, 0.942765, 0.942829, 0.942893, 0.942957, 0.943021, + 0.943084, 0.943148, 0.943212, 0.943276, 0.943339, 0.943403, 0.943466, 0.943530, + 0.943593, 0.943657, 0.943720, 0.943784, 0.943847, 0.943910, 0.943974, 0.944037, + 0.944100, 0.944163, 0.944227, 0.944290, 0.944353, 0.944416, 0.944479, 0.944542, + 0.944605, 0.944668, 0.944731, 0.944793, 0.944856, 0.944919, 0.944982, 0.945045, + 0.945107, 0.945170, 0.945232, 0.945295, 0.945358, 0.945420, 0.945482, 0.945545, + 0.945607, 0.945670, 0.945732, 0.945794, 0.945857, 0.945919, 0.945981, 0.946043, + 0.946105, 0.946167, 0.946229, 0.946291, 0.946353, 0.946415, 0.946477, 0.946539, + 0.946601, 0.946663, 0.946724, 0.946786, 0.946848, 0.946910, 0.946971, 0.947033, + 0.947094, 0.947156, 0.947217, 0.947279, 0.947340, 0.947402, 0.947463, 0.947524, + 0.947586, 0.947647, 0.947708, 0.947769, 0.947830, 0.947891, 0.947953, 0.948014, + 0.948075, 0.948136, 0.948196, 0.948257, 0.948318, 0.948379, 0.948440, 0.948501, + 0.948561, 0.948622, 0.948683, 0.948743, 0.948804, 0.948864, 0.948925, 0.948985, + 0.949046, 0.949106, 0.949167, 0.949227, 0.949287, 0.949348, 0.949408, 0.949468, + 0.949528, 0.949588, 0.949648, 0.949708, 0.949768, 0.949829, 0.949888, 0.949948, + 0.950008, 0.950068, 0.950128, 0.950188, 0.950247, 0.950307, 0.950367, 0.950426, + 0.950486, 0.950546, 0.950605, 0.950665, 0.950724, 0.950784, 0.950843, 0.950902, + 0.950962, 0.951021, 0.951080, 0.951139, 0.951199, 0.951258, 0.951317, 0.951376, + 0.951435, 0.951494, 0.951553, 0.951612, 0.951671, 0.951730, 0.951789, 0.951847, + 0.951906, 0.951965, 0.952024, 0.952082, 0.952141, 0.952199, 0.952258, 0.952317, + 0.952375, 0.952433, 0.952492, 0.952550, 0.952609, 0.952667, 0.952725, 0.952783, + 0.952842, 0.952900, 0.952958, 0.953016, 0.953074, 0.953132, 0.953190, 0.953248, + 0.953306, 0.953364, 0.953422, 0.953480, 0.953537, 0.953595, 0.953653, 0.953711, + 0.953768, 0.953826, 0.953883, 0.953941, 0.953998, 0.954056, 0.954113, 0.954171, + 0.954228, 0.954285, 0.954343, 0.954400, 0.954457, 0.954514, 0.954572, 0.954629, + 0.954686, 0.954743, 0.954800, 0.954857, 0.954914, 0.954971, 0.955028, 0.955084, + 0.955141, 0.955198, 0.955255, 0.955311, 0.955368, 0.955425, 0.955481, 0.955538, + 0.955594, 0.955651, 0.955707, 0.955764, 0.955820, 0.955876, 0.955933, 0.955989, + 0.956045, 0.956101, 0.956158, 0.956214, 0.956270, 0.956326, 0.956382, 0.956438, + 0.956494, 0.956550, 0.956606, 0.956662, 0.956717, 0.956773, 0.956829, 0.956885, + 0.956940, 0.956996, 0.957052, 0.957107, 0.957163, 0.957218, 0.957274, 0.957329, + 0.957385, 0.957440, 0.957495, 0.957550, 0.957606, 0.957661, 0.957716, 0.957771, + 0.957826, 0.957882, 0.957937, 0.957992, 0.958046, 0.958101, 0.958156, 0.958211, + 0.958266, 0.958321, 0.958376, 0.958430, 0.958485, 0.958540, 0.958594, 0.958649, + 0.958703, 0.958758, 0.958812, 0.958867, 0.958921, 0.958976, 0.959030, 0.959084, + 0.959139, 0.959193, 0.959247, 0.959301, 0.959355, 0.959409, 0.959463, 0.959518, + 0.959572, 0.959625, 0.959679, 0.959733, 0.959787, 0.959841, 0.959895, 0.959948, + 0.960002, 0.960056, 0.960109, 0.960163, 0.960217, 0.960270, 0.960324, 0.960377, + 0.960431, 0.960484, 0.960537, 0.960591, 0.960644, 0.960697, 0.960750, 0.960804, + 0.960857, 0.960910, 0.960963, 0.961016, 0.961069, 0.961122, 0.961175, 0.961228, + 0.961280, 0.961333, 0.961386, 0.961439, 0.961492, 0.961544, 0.961597, 0.961649, + 0.961702, 0.961755, 0.961807, 0.961860, 0.961912, 0.961964, 0.962017, 0.962069, + 0.962121, 0.962174, 0.962226, 0.962278, 0.962330, 0.962382, 0.962434, 0.962486, + 0.962538, 0.962590, 0.962642, 0.962694, 0.962746, 0.962798, 0.962850, 0.962902, + 0.962953, 0.963005, 0.963057, 0.963108, 0.963160, 0.963211, 0.963263, 0.963314, + 0.963366, 0.963417, 0.963469, 0.963520, 0.963571, 0.963623, 0.963674, 0.963725, + 0.963776, 0.963827, 0.963878, 0.963929, 0.963980, 0.964031, 0.964082, 0.964133, + 0.964184, 0.964235, 0.964286, 0.964336, 0.964387, 0.964438, 0.964489, 0.964539, + 0.964590, 0.964640, 0.964691, 0.964741, 0.964792, 0.964842, 0.964893, 0.964943, + 0.964993, 0.965044, 0.965094, 0.965144, 0.965194, 0.965244, 0.965294, 0.965344, + 0.965394, 0.965444, 0.965494, 0.965544, 0.965594, 0.965644, 0.965694, 0.965744, + 0.965793, 0.965843, 0.965893, 0.965942, 0.965992, 0.966042, 0.966091, 0.966141, + 0.966190, 0.966239, 0.966289, 0.966338, 0.966387, 0.966437, 0.966486, 0.966535, + 0.966584, 0.966633, 0.966683, 0.966732, 0.966781, 0.966830, 0.966879, 0.966928, + 0.966976, 0.967025, 0.967074, 0.967123, 0.967172, 0.967220, 0.967269, 0.967318, + 0.967366, 0.967415, 0.967463, 0.967512, 0.967560, 0.967609, 0.967657, 0.967706, + 0.967754, 0.967802, 0.967850, 0.967899, 0.967947, 0.967995, 0.968043, 0.968091, + 0.968139, 0.968187, 0.968235, 0.968283, 0.968331, 0.968379, 0.968427, 0.968474, + 0.968522, 0.968570, 0.968617, 0.968665, 0.968713, 0.968760, 0.968808, 0.968855, + 0.968903, 0.968950, 0.968998, 0.969045, 0.969092, 0.969140, 0.969187, 0.969234, + 0.969281, 0.969328, 0.969375, 0.969423, 0.969470, 0.969517, 0.969564, 0.969611, + 0.969657, 0.969704, 0.969751, 0.969798, 0.969845, 0.969891, 0.969938, 0.969985, + 0.970031, 0.970078, 0.970124, 0.970171, 0.970217, 0.970264, 0.970310, 0.970357, + 0.970403, 0.970449, 0.970495, 0.970542, 0.970588, 0.970634, 0.970680, 0.970726, + 0.970772, 0.970818, 0.970864, 0.970910, 0.970956, 0.971002, 0.971048, 0.971093, + 0.971139, 0.971185, 0.971231, 0.971276, 0.971322, 0.971367, 0.971413, 0.971458, + 0.971504, 0.971549, 0.971595, 0.971640, 0.971685, 0.971731, 0.971776, 0.971821, + 0.971866, 0.971911, 0.971957, 0.972002, 0.972047, 0.972092, 0.972137, 0.972182, + 0.972227, 0.972271, 0.972316, 0.972361, 0.972406, 0.972450, 0.972495, 0.972540, + 0.972584, 0.972629, 0.972673, 0.972718, 0.972762, 0.972807, 0.972851, 0.972896, + 0.972940, 0.972984, 0.973028, 0.973073, 0.973117, 0.973161, 0.973205, 0.973249, + 0.973293, 0.973337, 0.973381, 0.973425, 0.973469, 0.973513, 0.973557, 0.973601, + 0.973644, 0.973688, 0.973732, 0.973775, 0.973819, 0.973862, 0.973906, 0.973949, + 0.973993, 0.974036, 0.974080, 0.974123, 0.974166, 0.974210, 0.974253, 0.974296, + 0.974339, 0.974383, 0.974426, 0.974469, 0.974512, 0.974555, 0.974598, 0.974641, + 0.974684, 0.974726, 0.974769, 0.974812, 0.974855, 0.974897, 0.974940, 0.974983, + 0.975025, 0.975068, 0.975110, 0.975153, 0.975195, 0.975238, 0.975280, 0.975323, + 0.975365, 0.975407, 0.975449, 0.975492, 0.975534, 0.975576, 0.975618, 0.975660, + 0.975702, 0.975744, 0.975786, 0.975828, 0.975870, 0.975912, 0.975954, 0.975995, + 0.976037, 0.976079, 0.976120, 0.976162, 0.976204, 0.976245, 0.976287, 0.976328, + 0.976370, 0.976411, 0.976453, 0.976494, 0.976535, 0.976576, 0.976618, 0.976659, + 0.976700, 0.976741, 0.976782, 0.976823, 0.976864, 0.976905, 0.976946, 0.976987, + 0.977028, 0.977069, 0.977110, 0.977151, 0.977191, 0.977232, 0.977273, 0.977313, + 0.977354, 0.977394, 0.977435, 0.977475, 0.977516, 0.977556, 0.977597, 0.977637, + 0.977677, 0.977718, 0.977758, 0.977798, 0.977838, 0.977878, 0.977918, 0.977959, + 0.977998, 0.978038, 0.978078, 0.978118, 0.978158, 0.978198, 0.978238, 0.978278, + 0.978317, 0.978357, 0.978397, 0.978436, 0.978476, 0.978516, 0.978555, 0.978594, + 0.978634, 0.978673, 0.978713, 0.978752, 0.978791, 0.978831, 0.978870, 0.978909, + 0.978948, 0.978987, 0.979026, 0.979065, 0.979104, 0.979143, 0.979182, 0.979221, + 0.979260, 0.979299, 0.979338, 0.979376, 0.979415, 0.979454, 0.979493, 0.979531, + 0.979570, 0.979608, 0.979647, 0.979685, 0.979724, 0.979762, 0.979800, 0.979839, + 0.979877, 0.979915, 0.979954, 0.979992, 0.980030, 0.980068, 0.980106, 0.980144, + 0.980182, 0.980220, 0.980258, 0.980296, 0.980334, 0.980372, 0.980409, 0.980447, + 0.980485, 0.980523, 0.980560, 0.980598, 0.980635, 0.980673, 0.980710, 0.980748, + 0.980785, 0.980823, 0.980860, 0.980897, 0.980935, 0.980972, 0.981009, 0.981046, + 0.981083, 0.981120, 0.981158, 0.981195, 0.981232, 0.981269, 0.981305, 0.981342, + 0.981379, 0.981416, 0.981453, 0.981490, 0.981526, 0.981563, 0.981600, 0.981636, + 0.981673, 0.981709, 0.981746, 0.981782, 0.981819, 0.981855, 0.981891, 0.981928, + 0.981964, 0.982000, 0.982036, 0.982072, 0.982109, 0.982145, 0.982181, 0.982217, + 0.982253, 0.982289, 0.982325, 0.982360, 0.982396, 0.982432, 0.982468, 0.982504, + 0.982539, 0.982575, 0.982611, 0.982646, 0.982682, 0.982717, 0.982753, 0.982788, + 0.982824, 0.982859, 0.982894, 0.982930, 0.982965, 0.983000, 0.983035, 0.983070, + 0.983105, 0.983141, 0.983176, 0.983211, 0.983246, 0.983281, 0.983315, 0.983350, + 0.983385, 0.983420, 0.983455, 0.983489, 0.983524, 0.983559, 0.983593, 0.983628, + 0.983662, 0.983697, 0.983731, 0.983766, 0.983800, 0.983835, 0.983869, 0.983903, + 0.983937, 0.983972, 0.984006, 0.984040, 0.984074, 0.984108, 0.984142, 0.984176, + 0.984210, 0.984244, 0.984278, 0.984312, 0.984346, 0.984379, 0.984413, 0.984447, + 0.984480, 0.984514, 0.984548, 0.984581, 0.984615, 0.984648, 0.984682, 0.984715, + 0.984748, 0.984782, 0.984815, 0.984848, 0.984882, 0.984915, 0.984948, 0.984981, + 0.985014, 0.985047, 0.985080, 0.985113, 0.985146, 0.985179, 0.985212, 0.985245, + 0.985278, 0.985310, 0.985343, 0.985376, 0.985408, 0.985441, 0.985474, 0.985506, + 0.985539, 0.985571, 0.985604, 0.985636, 0.985668, 0.985701, 0.985733, 0.985765, + 0.985798, 0.985830, 0.985862, 0.985894, 0.985926, 0.985958, 0.985990, 0.986022, + 0.986054, 0.986086, 0.986118, 0.986150, 0.986181, 0.986213, 0.986245, 0.986276, + 0.986308, 0.986340, 0.986371, 0.986403, 0.986434, 0.986466, 0.986497, 0.986529, + 0.986560, 0.986591, 0.986623, 0.986654, 0.986685, 0.986716, 0.986747, 0.986778, + 0.986809, 0.986840, 0.986871, 0.986902, 0.986933, 0.986964, 0.986995, 0.987026, + 0.987057, 0.987087, 0.987118, 0.987149, 0.987179, 0.987210, 0.987240, 0.987271, + 0.987301, 0.987332, 0.987362, 0.987393, 0.987423, 0.987453, 0.987484, 0.987514, + 0.987544, 0.987574, 0.987604, 0.987634, 0.987664, 0.987694, 0.987724, 0.987754, + 0.987784, 0.987814, 0.987844, 0.987874, 0.987903, 0.987933, 0.987963, 0.987992, + 0.988022, 0.988052, 0.988081, 0.988111, 0.988140, 0.988169, 0.988199, 0.988228, + 0.988258, 0.988287, 0.988316, 0.988345, 0.988374, 0.988404, 0.988433, 0.988462, + 0.988491, 0.988520, 0.988549, 0.988578, 0.988607, 0.988635, 0.988664, 0.988693, + 0.988722, 0.988750, 0.988779, 0.988808, 0.988836, 0.988865, 0.988893, 0.988922, + 0.988950, 0.988979, 0.989007, 0.989035, 0.989064, 0.989092, 0.989120, 0.989148, + 0.989177, 0.989205, 0.989233, 0.989261, 0.989289, 0.989317, 0.989345, 0.989373, + 0.989400, 0.989428, 0.989456, 0.989484, 0.989511, 0.989539, 0.989567, 0.989594, + 0.989622, 0.989650, 0.989677, 0.989704, 0.989732, 0.989759, 0.989787, 0.989814, + 0.989841, 0.989869, 0.989896, 0.989923, 0.989950, 0.989977, 0.990004, 0.990031, + 0.990058, 0.990085, 0.990112, 0.990139, 0.990166, 0.990193, 0.990219, 0.990246, + 0.990273, 0.990299, 0.990326, 0.990353, 0.990379, 0.990406, 0.990432, 0.990459, + 0.990485, 0.990511, 0.990538, 0.990564, 0.990590, 0.990617, 0.990643, 0.990669, + 0.990695, 0.990721, 0.990747, 0.990773, 0.990799, 0.990825, 0.990851, 0.990877, + 0.990903, 0.990928, 0.990954, 0.990980, 0.991006, 0.991031, 0.991057, 0.991082, + 0.991108, 0.991133, 0.991159, 0.991184, 0.991210, 0.991235, 0.991260, 0.991286, + 0.991311, 0.991336, 0.991361, 0.991386, 0.991411, 0.991437, 0.991462, 0.991487, + 0.991511, 0.991536, 0.991561, 0.991586, 0.991611, 0.991636, 0.991660, 0.991685, + 0.991710, 0.991734, 0.991759, 0.991783, 0.991808, 0.991832, 0.991857, 0.991881, + 0.991906, 0.991930, 0.991954, 0.991979, 0.992003, 0.992027, 0.992051, 0.992075, + 0.992099, 0.992123, 0.992147, 0.992171, 0.992195, 0.992219, 0.992243, 0.992267, + 0.992291, 0.992314, 0.992338, 0.992362, 0.992385, 0.992409, 0.992433, 0.992456, + 0.992480, 0.992503, 0.992526, 0.992550, 0.992573, 0.992596, 0.992620, 0.992643, + 0.992666, 0.992689, 0.992712, 0.992736, 0.992759, 0.992782, 0.992805, 0.992828, + 0.992850, 0.992873, 0.992896, 0.992919, 0.992942, 0.992964, 0.992987, 0.993010, + 0.993032, 0.993055, 0.993077, 0.993100, 0.993122, 0.993145, 0.993167, 0.993190, + 0.993212, 0.993234, 0.993257, 0.993279, 0.993301, 0.993323, 0.993345, 0.993367, + 0.993389, 0.993411, 0.993433, 0.993455, 0.993477, 0.993499, 0.993521, 0.993542, + 0.993564, 0.993586, 0.993608, 0.993629, 0.993651, 0.993672, 0.993694, 0.993715, + 0.993737, 0.993758, 0.993779, 0.993801, 0.993822, 0.993843, 0.993865, 0.993886, + 0.993907, 0.993928, 0.993949, 0.993970, 0.993991, 0.994012, 0.994033, 0.994054, + 0.994075, 0.994096, 0.994116, 0.994137, 0.994158, 0.994179, 0.994199, 0.994220, + 0.994240, 0.994261, 0.994281, 0.994302, 0.994322, 0.994343, 0.994363, 0.994383, + 0.994404, 0.994424, 0.994444, 0.994464, 0.994484, 0.994505, 0.994525, 0.994545, + 0.994565, 0.994585, 0.994604, 0.994624, 0.994644, 0.994664, 0.994684, 0.994703, + 0.994723, 0.994743, 0.994762, 0.994782, 0.994802, 0.994821, 0.994841, 0.994860, + 0.994879, 0.994899, 0.994918, 0.994937, 0.994957, 0.994976, 0.994995, 0.995014, + 0.995033, 0.995052, 0.995071, 0.995090, 0.995109, 0.995128, 0.995147, 0.995166, + 0.995185, 0.995203, 0.995222, 0.995241, 0.995260, 0.995278, 0.995297, 0.995315, + 0.995334, 0.995352, 0.995371, 0.995389, 0.995408, 0.995426, 0.995444, 0.995463, + 0.995481, 0.995499, 0.995517, 0.995535, 0.995553, 0.995571, 0.995589, 0.995607, + 0.995625, 0.995643, 0.995661, 0.995679, 0.995697, 0.995714, 0.995732, 0.995750, + 0.995767, 0.995785, 0.995803, 0.995820, 0.995838, 0.995855, 0.995872, 0.995890, + 0.995907, 0.995925, 0.995942, 0.995959, 0.995976, 0.995993, 0.996011, 0.996028, + 0.996045, 0.996062, 0.996079, 0.996096, 0.996113, 0.996129, 0.996146, 0.996163, + 0.996180, 0.996197, 0.996213, 0.996230, 0.996247, 0.996263, 0.996280, 0.996296, + 0.996313, 0.996329, 0.996345, 0.996362, 0.996378, 0.996394, 0.996411, 0.996427, + 0.996443, 0.996459, 0.996475, 0.996491, 0.996507, 0.996523, 0.996539, 0.996555, + 0.996571, 0.996587, 0.996603, 0.996619, 0.996634, 0.996650, 0.996666, 0.996681, + 0.996697, 0.996712, 0.996728, 0.996743, 0.996759, 0.996774, 0.996790, 0.996805, + 0.996820, 0.996836, 0.996851, 0.996866, 0.996881, 0.996896, 0.996911, 0.996926, + 0.996941, 0.996956, 0.996971, 0.996986, 0.997001, 0.997016, 0.997031, 0.997045, + 0.997060, 0.997075, 0.997089, 0.997104, 0.997119, 0.997133, 0.997148, 0.997162, + 0.997176, 0.997191, 0.997205, 0.997219, 0.997234, 0.997248, 0.997262, 0.997276, + 0.997290, 0.997305, 0.997319, 0.997333, 0.997347, 0.997361, 0.997374, 0.997388, + 0.997402, 0.997416, 0.997430, 0.997443, 0.997457, 0.997471, 0.997484, 0.997498, + 0.997511, 0.997525, 0.997538, 0.997552, 0.997565, 0.997579, 0.997592, 0.997605, + 0.997618, 0.997632, 0.997645, 0.997658, 0.997671, 0.997684, 0.997697, 0.997710, + 0.997723, 0.997736, 0.997749, 0.997762, 0.997774, 0.997787, 0.997800, 0.997813, + 0.997825, 0.997838, 0.997851, 0.997863, 0.997876, 0.997888, 0.997901, 0.997913, + 0.997925, 0.997938, 0.997950, 0.997962, 0.997974, 0.997987, 0.997999, 0.998011, + 0.998023, 0.998035, 0.998047, 0.998059, 0.998071, 0.998083, 0.998094, 0.998106, + 0.998118, 0.998130, 0.998142, 0.998153, 0.998165, 0.998176, 0.998188, 0.998200, + 0.998211, 0.998222, 0.998234, 0.998245, 0.998257, 0.998268, 0.998279, 0.998290, + 0.998302, 0.998313, 0.998324, 0.998335, 0.998346, 0.998357, 0.998368, 0.998379, + 0.998390, 0.998401, 0.998411, 0.998422, 0.998433, 0.998444, 0.998454, 0.998465, + 0.998476, 0.998486, 0.998497, 0.998507, 0.998518, 0.998528, 0.998538, 0.998549, + 0.998559, 0.998569, 0.998580, 0.998590, 0.998600, 0.998610, 0.998620, 0.998630, + 0.998640, 0.998650, 0.998660, 0.998670, 0.998680, 0.998690, 0.998700, 0.998709, + 0.998719, 0.998729, 0.998738, 0.998748, 0.998758, 0.998767, 0.998777, 0.998786, + 0.998795, 0.998805, 0.998814, 0.998824, 0.998833, 0.998842, 0.998851, 0.998860, + 0.998870, 0.998879, 0.998888, 0.998897, 0.998906, 0.998915, 0.998924, 0.998932, + 0.998941, 0.998950, 0.998959, 0.998968, 0.998976, 0.998985, 0.998994, 0.999002, + 0.999011, 0.999019, 0.999028, 0.999036, 0.999044, 0.999053, 0.999061, 0.999069, + 0.999078, 0.999086, 0.999094, 0.999102, 0.999110, 0.999118, 0.999126, 0.999134, + 0.999142, 0.999150, 0.999158, 0.999166, 0.999174, 0.999182, 0.999189, 0.999197, + 0.999205, 0.999212, 0.999220, 0.999228, 0.999235, 0.999243, 0.999250, 0.999257, + 0.999265, 0.999272, 0.999279, 0.999287, 0.999294, 0.999301, 0.999308, 0.999315, + 0.999322, 0.999329, 0.999336, 0.999343, 0.999350, 0.999357, 0.999364, 0.999371, + 0.999378, 0.999384, 0.999391, 0.999398, 0.999404, 0.999411, 0.999418, 0.999424, + 0.999431, 0.999437, 0.999443, 0.999450, 0.999456, 0.999462, 0.999469, 0.999475, + 0.999481, 0.999487, 0.999493, 0.999500, 0.999506, 0.999512, 0.999518, 0.999524, + 0.999529, 0.999535, 0.999541, 0.999547, 0.999553, 0.999558, 0.999564, 0.999570, + 0.999575, 0.999581, 0.999586, 0.999592, 0.999597, 0.999603, 0.999608, 0.999614, + 0.999619, 0.999624, 0.999629, 0.999635, 0.999640, 0.999645, 0.999650, 0.999655, + 0.999660, 0.999665, 0.999670, 0.999675, 0.999680, 0.999685, 0.999689, 0.999694, + 0.999699, 0.999704, 0.999708, 0.999713, 0.999717, 0.999722, 0.999726, 0.999731, + 0.999735, 0.999740, 0.999744, 0.999748, 0.999753, 0.999757, 0.999761, 0.999765, + 0.999769, 0.999774, 0.999778, 0.999782, 0.999786, 0.999790, 0.999793, 0.999797, + 0.999801, 0.999805, 0.999809, 0.999812, 0.999816, 0.999820, 0.999823, 0.999827, + 0.999831, 0.999834, 0.999838, 0.999841, 0.999844, 0.999848, 0.999851, 0.999854, + 0.999858, 0.999861, 0.999864, 0.999867, 0.999870, 0.999873, 0.999876, 0.999879, + 0.999882, 0.999885, 0.999888, 0.999891, 0.999894, 0.999897, 0.999899, 0.999902, + 0.999905, 0.999907, 0.999910, 0.999913, 0.999915, 0.999917, 0.999920, 0.999922, + 0.999925, 0.999927, 0.999929, 0.999932, 0.999934, 0.999936, 0.999938, 0.999940, + 0.999942, 0.999944, 0.999946, 0.999948, 0.999950, 0.999952, 0.999954, 0.999956, + 0.999958, 0.999959, 0.999961, 0.999963, 0.999964, 0.999966, 0.999968, 0.999969, + 0.999971, 0.999972, 0.999973, 0.999975, 0.999976, 0.999977, 0.999979, 0.999980, + 0.999981, 0.999982, 0.999983, 0.999985, 0.999986, 0.999987, 0.999988, 0.999988, + 0.999989, 0.999990, 0.999991, 0.999992, 0.999993, 0.999993, 0.999994, 0.999995, + 0.999995, 0.999996, 0.999996, 0.999997, 0.999997, 0.999998, 0.999998, 0.999999, + 0.999999, 0.999999, 0.999999, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, + 0.000000, -0.000192, -0.000383, -0.000575, -0.000767, -0.000959, -0.001150, -0.001342, + -0.001534, -0.001726, -0.001917, -0.002109, -0.002301, -0.002493, -0.002684, -0.002876, + -0.003068, -0.003260, -0.003451, -0.003643, -0.003835, -0.004027, -0.004218, -0.004410, + -0.004602, -0.004794, -0.004985, -0.005177, -0.005369, -0.005561, -0.005752, -0.005944, + -0.006136, -0.006328, -0.006519, -0.006711, -0.006903, -0.007095, -0.007286, -0.007478, + -0.007670, -0.007862, -0.008053, -0.008245, -0.008437, -0.008629, -0.008820, -0.009012, + -0.009204, -0.009395, -0.009587, -0.009779, -0.009971, -0.010162, -0.010354, -0.010546, + -0.010738, -0.010929, -0.011121, -0.011313, -0.011505, -0.011696, -0.011888, -0.012080, + -0.012272, -0.012463, -0.012655, -0.012847, -0.013038, -0.013230, -0.013422, -0.013614, + -0.013805, -0.013997, -0.014189, -0.014381, -0.014572, -0.014764, -0.014956, -0.015147, + -0.015339, -0.015531, -0.015723, -0.015914, -0.016106, -0.016298, -0.016490, -0.016681, + -0.016873, -0.017065, -0.017256, -0.017448, -0.017640, -0.017832, -0.018023, -0.018215, + -0.018407, -0.018598, -0.018790, -0.018982, -0.019174, -0.019365, -0.019557, -0.019749, + -0.019940, -0.020132, -0.020324, -0.020516, -0.020707, -0.020899, -0.021091, -0.021282, + -0.021474, -0.021666, -0.021857, -0.022049, -0.022241, -0.022433, -0.022624, -0.022816, + -0.023008, -0.023199, -0.023391, -0.023583, -0.023774, -0.023966, -0.024158, -0.024350, + -0.024541, -0.024733, -0.024925, -0.025116, -0.025308, -0.025500, -0.025691, -0.025883, + -0.026075, -0.026266, -0.026458, -0.026650, -0.026841, -0.027033, -0.027225, -0.027416, + -0.027608, -0.027800, -0.027991, -0.028183, -0.028375, -0.028567, -0.028758, -0.028950, + -0.029142, -0.029333, -0.029525, -0.029717, -0.029908, -0.030100, -0.030291, -0.030483, + -0.030675, -0.030866, -0.031058, -0.031250, -0.031441, -0.031633, -0.031825, -0.032016, + -0.032208, -0.032400, -0.032591, -0.032783, -0.032975, -0.033166, -0.033358, -0.033550, + -0.033741, -0.033933, -0.034124, -0.034316, -0.034508, -0.034699, -0.034891, -0.035083, + -0.035274, -0.035466, -0.035657, -0.035849, -0.036041, -0.036232, -0.036424, -0.036616, + -0.036807, -0.036999, -0.037190, -0.037382, -0.037574, -0.037765, -0.037957, -0.038149, + -0.038340, -0.038532, -0.038723, -0.038915, -0.039107, -0.039298, -0.039490, -0.039681, + -0.039873, -0.040065, -0.040256, -0.040448, -0.040639, -0.040831, -0.041022, -0.041214, + -0.041406, -0.041597, -0.041789, -0.041980, -0.042172, -0.042364, -0.042555, -0.042747, + -0.042938, -0.043130, -0.043321, -0.043513, -0.043705, -0.043896, -0.044088, -0.044279, + -0.044471, -0.044662, -0.044854, -0.045045, -0.045237, -0.045429, -0.045620, -0.045812, + -0.046003, -0.046195, -0.046386, -0.046578, -0.046769, -0.046961, -0.047152, -0.047344, + -0.047535, -0.047727, -0.047919, -0.048110, -0.048302, -0.048493, -0.048685, -0.048876, + -0.049068, -0.049259, -0.049451, -0.049642, -0.049834, -0.050025, -0.050217, -0.050408, + -0.050600, -0.050791, -0.050983, -0.051174, -0.051366, -0.051557, -0.051749, -0.051940, + -0.052132, -0.052323, -0.052515, -0.052706, -0.052898, -0.053089, -0.053281, -0.053472, + -0.053664, -0.053855, -0.054046, -0.054238, -0.054429, -0.054621, -0.054812, -0.055004, + -0.055195, -0.055387, -0.055578, -0.055770, -0.055961, -0.056152, -0.056344, -0.056535, + -0.056727, -0.056918, -0.057110, -0.057301, -0.057493, -0.057684, -0.057875, -0.058067, + -0.058258, -0.058450, -0.058641, -0.058833, -0.059024, -0.059215, -0.059407, -0.059598, + -0.059790, -0.059981, -0.060172, -0.060364, -0.060555, -0.060747, -0.060938, -0.061129, + -0.061321, -0.061512, -0.061704, -0.061895, -0.062086, -0.062278, -0.062469, -0.062660, + -0.062852, -0.063043, -0.063234, -0.063426, -0.063617, -0.063809, -0.064000, -0.064191, + -0.064383, -0.064574, -0.064765, -0.064957, -0.065148, -0.065339, -0.065531, -0.065722, + -0.065913, -0.066105, -0.066296, -0.066487, -0.066679, -0.066870, -0.067061, -0.067253, + -0.067444, -0.067635, -0.067827, -0.068018, -0.068209, -0.068400, -0.068592, -0.068783, + -0.068974, -0.069166, -0.069357, -0.069548, -0.069739, -0.069931, -0.070122, -0.070313, + -0.070505, -0.070696, -0.070887, -0.071078, -0.071270, -0.071461, -0.071652, -0.071843, + -0.072035, -0.072226, -0.072417, -0.072608, -0.072800, -0.072991, -0.073182, -0.073373, + -0.073565, -0.073756, -0.073947, -0.074138, -0.074329, -0.074521, -0.074712, -0.074903, + -0.075094, -0.075286, -0.075477, -0.075668, -0.075859, -0.076050, -0.076241, -0.076433, + -0.076624, -0.076815, -0.077006, -0.077197, -0.077389, -0.077580, -0.077771, -0.077962, + -0.078153, -0.078344, -0.078536, -0.078727, -0.078918, -0.079109, -0.079300, -0.079491, + -0.079682, -0.079874, -0.080065, -0.080256, -0.080447, -0.080638, -0.080829, -0.081020, + -0.081211, -0.081403, -0.081594, -0.081785, -0.081976, -0.082167, -0.082358, -0.082549, + -0.082740, -0.082931, -0.083122, -0.083314, -0.083505, -0.083696, -0.083887, -0.084078, + -0.084269, -0.084460, -0.084651, -0.084842, -0.085033, -0.085224, -0.085415, -0.085606, + -0.085797, -0.085988, -0.086179, -0.086370, -0.086561, -0.086752, -0.086943, -0.087135, + -0.087326, -0.087517, -0.087708, -0.087899, -0.088090, -0.088281, -0.088472, -0.088663, + -0.088854, -0.089045, -0.089236, -0.089427, -0.089617, -0.089808, -0.089999, -0.090190, + -0.090381, -0.090572, -0.090763, -0.090954, -0.091145, -0.091336, -0.091527, -0.091718, + -0.091909, -0.092100, -0.092291, -0.092482, -0.092673, -0.092864, -0.093055, -0.093245, + -0.093436, -0.093627, -0.093818, -0.094009, -0.094200, -0.094391, -0.094582, -0.094773, + -0.094963, -0.095154, -0.095345, -0.095536, -0.095727, -0.095918, -0.096109, -0.096300, + -0.096490, -0.096681, -0.096872, -0.097063, -0.097254, -0.097445, -0.097635, -0.097826, + -0.098017, -0.098208, -0.098399, -0.098590, -0.098780, -0.098971, -0.099162, -0.099353, + -0.099544, -0.099734, -0.099925, -0.100116, -0.100307, -0.100498, -0.100688, -0.100879, + -0.101070, -0.101261, -0.101451, -0.101642, -0.101833, -0.102024, -0.102214, -0.102405, + -0.102596, -0.102787, -0.102977, -0.103168, -0.103359, -0.103550, -0.103740, -0.103931, + -0.104122, -0.104312, -0.104503, -0.104694, -0.104884, -0.105075, -0.105266, -0.105456, + -0.105647, -0.105838, -0.106028, -0.106219, -0.106410, -0.106600, -0.106791, -0.106982, + -0.107172, -0.107363, -0.107554, -0.107744, -0.107935, -0.108126, -0.108316, -0.108507, + -0.108697, -0.108888, -0.109079, -0.109269, -0.109460, -0.109650, -0.109841, -0.110032, + -0.110222, -0.110413, -0.110603, -0.110794, -0.110984, -0.111175, -0.111366, -0.111556, + -0.111747, -0.111937, -0.112128, -0.112318, -0.112509, -0.112699, -0.112890, -0.113080, + -0.113271, -0.113461, -0.113652, -0.113842, -0.114033, -0.114223, -0.114414, -0.114604, + -0.114795, -0.114985, -0.115176, -0.115366, -0.115557, -0.115747, -0.115938, -0.116128, + -0.116319, -0.116509, -0.116700, -0.116890, -0.117080, -0.117271, -0.117461, -0.117652, + -0.117842, -0.118032, -0.118223, -0.118413, -0.118604, -0.118794, -0.118984, -0.119175, + -0.119365, -0.119556, -0.119746, -0.119936, -0.120127, -0.120317, -0.120507, -0.120698, + -0.120888, -0.121078, -0.121269, -0.121459, -0.121649, -0.121840, -0.122030, -0.122220, + -0.122411, -0.122601, -0.122791, -0.122982, -0.123172, -0.123362, -0.123552, -0.123743, + -0.123933, -0.124123, -0.124314, -0.124504, -0.124694, -0.124884, -0.125075, -0.125265, + -0.125455, -0.125645, -0.125835, -0.126026, -0.126216, -0.126406, -0.126596, -0.126787, + -0.126977, -0.127167, -0.127357, -0.127547, -0.127737, -0.127928, -0.128118, -0.128308, + -0.128498, -0.128688, -0.128878, -0.129069, -0.129259, -0.129449, -0.129639, -0.129829, + -0.130019, -0.130209, -0.130399, -0.130590, -0.130780, -0.130970, -0.131160, -0.131350, + -0.131540, -0.131730, -0.131920, -0.132110, -0.132300, -0.132490, -0.132680, -0.132870, + -0.133061, -0.133251, -0.133441, -0.133631, -0.133821, -0.134011, -0.134201, -0.134391, + -0.134581, -0.134771, -0.134961, -0.135151, -0.135341, -0.135531, -0.135721, -0.135911, + -0.136101, -0.136291, -0.136480, -0.136670, -0.136860, -0.137050, -0.137240, -0.137430, + -0.137620, -0.137810, -0.138000, -0.138190, -0.138380, -0.138570, -0.138760, -0.138949, + -0.139139, -0.139329, -0.139519, -0.139709, -0.139899, -0.140089, -0.140279, -0.140468, + -0.140658, -0.140848, -0.141038, -0.141228, -0.141418, -0.141607, -0.141797, -0.141987, + -0.142177, -0.142367, -0.142556, -0.142746, -0.142936, -0.143126, -0.143316, -0.143505, + -0.143695, -0.143885, -0.144075, -0.144264, -0.144454, -0.144644, -0.144833, -0.145023, + -0.145213, -0.145403, -0.145592, -0.145782, -0.145972, -0.146161, -0.146351, -0.146541, + -0.146730, -0.146920, -0.147110, -0.147299, -0.147489, -0.147679, -0.147868, -0.148058, + -0.148248, -0.148437, -0.148627, -0.148817, -0.149006, -0.149196, -0.149385, -0.149575, + -0.149765, -0.149954, -0.150144, -0.150333, -0.150523, -0.150712, -0.150902, -0.151092, + -0.151281, -0.151471, -0.151660, -0.151850, -0.152039, -0.152229, -0.152418, -0.152608, + -0.152797, -0.152987, -0.153176, -0.153366, -0.153555, -0.153745, -0.153934, -0.154124, + -0.154313, -0.154502, -0.154692, -0.154881, -0.155071, -0.155260, -0.155450, -0.155639, + -0.155828, -0.156018, -0.156207, -0.156397, -0.156586, -0.156775, -0.156965, -0.157154, + -0.157343, -0.157533, -0.157722, -0.157912, -0.158101, -0.158290, -0.158480, -0.158669, + -0.158858, -0.159047, -0.159237, -0.159426, -0.159615, -0.159805, -0.159994, -0.160183, + -0.160372, -0.160562, -0.160751, -0.160940, -0.161129, -0.161319, -0.161508, -0.161697, + -0.161886, -0.162076, -0.162265, -0.162454, -0.162643, -0.162832, -0.163022, -0.163211, + -0.163400, -0.163589, -0.163778, -0.163967, -0.164157, -0.164346, -0.164535, -0.164724, + -0.164913, -0.165102, -0.165291, -0.165480, -0.165670, -0.165859, -0.166048, -0.166237, + -0.166426, -0.166615, -0.166804, -0.166993, -0.167182, -0.167371, -0.167560, -0.167749, + -0.167938, -0.168127, -0.168316, -0.168505, -0.168694, -0.168883, -0.169072, -0.169261, + -0.169450, -0.169639, -0.169828, -0.170017, -0.170206, -0.170395, -0.170584, -0.170773, + -0.170962, -0.171151, -0.171340, -0.171529, -0.171718, -0.171906, -0.172095, -0.172284, + -0.172473, -0.172662, -0.172851, -0.173040, -0.173229, -0.173417, -0.173606, -0.173795, + -0.173984, -0.174173, -0.174362, -0.174550, -0.174739, -0.174928, -0.175117, -0.175305, + -0.175494, -0.175683, -0.175872, -0.176061, -0.176249, -0.176438, -0.176627, -0.176815, + -0.177004, -0.177193, -0.177382, -0.177570, -0.177759, -0.177948, -0.178136, -0.178325, + -0.178514, -0.178702, -0.178891, -0.179080, -0.179268, -0.179457, -0.179646, -0.179834, + -0.180023, -0.180212, -0.180400, -0.180589, -0.180777, -0.180966, -0.181154, -0.181343, + -0.181532, -0.181720, -0.181909, -0.182097, -0.182286, -0.182474, -0.182663, -0.182851, + -0.183040, -0.183228, -0.183417, -0.183605, -0.183794, -0.183982, -0.184171, -0.184359, + -0.184548, -0.184736, -0.184925, -0.185113, -0.185301, -0.185490, -0.185678, -0.185867, + -0.186055, -0.186244, -0.186432, -0.186620, -0.186809, -0.186997, -0.187185, -0.187374, + -0.187562, -0.187750, -0.187939, -0.188127, -0.188315, -0.188504, -0.188692, -0.188880, + -0.189069, -0.189257, -0.189445, -0.189634, -0.189822, -0.190010, -0.190198, -0.190387, + -0.190575, -0.190763, -0.190951, -0.191139, -0.191328, -0.191516, -0.191704, -0.191892, + -0.192080, -0.192269, -0.192457, -0.192645, -0.192833, -0.193021, -0.193209, -0.193397, + -0.193586, -0.193774, -0.193962, -0.194150, -0.194338, -0.194526, -0.194714, -0.194902, + -0.195090, -0.195278, -0.195466, -0.195654, -0.195843, -0.196031, -0.196219, -0.196407, + -0.196595, -0.196783, -0.196971, -0.197159, -0.197347, -0.197535, -0.197722, -0.197910, + -0.198098, -0.198286, -0.198474, -0.198662, -0.198850, -0.199038, -0.199226, -0.199414, + -0.199602, -0.199790, -0.199978, -0.200165, -0.200353, -0.200541, -0.200729, -0.200917, + -0.201105, -0.201292, -0.201480, -0.201668, -0.201856, -0.202044, -0.202231, -0.202419, + -0.202607, -0.202795, -0.202983, -0.203170, -0.203358, -0.203546, -0.203734, -0.203921, + -0.204109, -0.204297, -0.204484, -0.204672, -0.204860, -0.205047, -0.205235, -0.205423, + -0.205610, -0.205798, -0.205986, -0.206173, -0.206361, -0.206549, -0.206736, -0.206924, + -0.207111, -0.207299, -0.207487, -0.207674, -0.207862, -0.208049, -0.208237, -0.208424, + -0.208612, -0.208799, -0.208987, -0.209174, -0.209362, -0.209549, -0.209737, -0.209924, + -0.210112, -0.210299, -0.210487, -0.210674, -0.210862, -0.211049, -0.211237, -0.211424, + -0.211611, -0.211799, -0.211986, -0.212174, -0.212361, -0.212548, -0.212736, -0.212923, + -0.213110, -0.213298, -0.213485, -0.213672, -0.213860, -0.214047, -0.214234, -0.214422, + -0.214609, -0.214796, -0.214983, -0.215171, -0.215358, -0.215545, -0.215732, -0.215920, + -0.216107, -0.216294, -0.216481, -0.216668, -0.216856, -0.217043, -0.217230, -0.217417, + -0.217604, -0.217791, -0.217979, -0.218166, -0.218353, -0.218540, -0.218727, -0.218914, + -0.219101, -0.219288, -0.219475, -0.219662, -0.219850, -0.220037, -0.220224, -0.220411, + -0.220598, -0.220785, -0.220972, -0.221159, -0.221346, -0.221533, -0.221720, -0.221907, + -0.222094, -0.222281, -0.222468, -0.222654, -0.222841, -0.223028, -0.223215, -0.223402, + -0.223589, -0.223776, -0.223963, -0.224150, -0.224337, -0.224523, -0.224710, -0.224897, + -0.225084, -0.225271, -0.225458, -0.225644, -0.225831, -0.226018, -0.226205, -0.226391, + -0.226578, -0.226765, -0.226952, -0.227139, -0.227325, -0.227512, -0.227699, -0.227885, + -0.228072, -0.228259, -0.228445, -0.228632, -0.228819, -0.229005, -0.229192, -0.229379, + -0.229565, -0.229752, -0.229939, -0.230125, -0.230312, -0.230498, -0.230685, -0.230872, + -0.231058, -0.231245, -0.231431, -0.231618, -0.231804, -0.231991, -0.232177, -0.232364, + -0.232550, -0.232737, -0.232923, -0.233110, -0.233296, -0.233483, -0.233669, -0.233856, + -0.234042, -0.234228, -0.234415, -0.234601, -0.234788, -0.234974, -0.235160, -0.235347, + -0.235533, -0.235719, -0.235906, -0.236092, -0.236278, -0.236465, -0.236651, -0.236837, + -0.237024, -0.237210, -0.237396, -0.237582, -0.237769, -0.237955, -0.238141, -0.238327, + -0.238514, -0.238700, -0.238886, -0.239072, -0.239258, -0.239445, -0.239631, -0.239817, + -0.240003, -0.240189, -0.240375, -0.240561, -0.240748, -0.240934, -0.241120, -0.241306, + -0.241492, -0.241678, -0.241864, -0.242050, -0.242236, -0.242422, -0.242608, -0.242794, + -0.242980, -0.243166, -0.243352, -0.243538, -0.243724, -0.243910, -0.244096, -0.244282, + -0.244468, -0.244654, -0.244840, -0.245026, -0.245212, -0.245397, -0.245583, -0.245769, + -0.245955, -0.246141, -0.246327, -0.246513, -0.246698, -0.246884, -0.247070, -0.247256, + -0.247442, -0.247627, -0.247813, -0.247999, -0.248185, -0.248370, -0.248556, -0.248742, + -0.248928, -0.249113, -0.249299, -0.249485, -0.249670, -0.249856, -0.250042, -0.250227, + -0.250413, -0.250599, -0.250784, -0.250970, -0.251155, -0.251341, -0.251527, -0.251712, + -0.251898, -0.252083, -0.252269, -0.252454, -0.252640, -0.252826, -0.253011, -0.253197, + -0.253382, -0.253568, -0.253753, -0.253938, -0.254124, -0.254309, -0.254495, -0.254680, + -0.254866, -0.255051, -0.255236, -0.255422, -0.255607, -0.255793, -0.255978, -0.256163, + -0.256349, -0.256534, -0.256719, -0.256905, -0.257090, -0.257275, -0.257461, -0.257646, + -0.257831, -0.258016, -0.258202, -0.258387, -0.258572, -0.258757, -0.258943, -0.259128, + -0.259313, -0.259498, -0.259683, -0.259868, -0.260054, -0.260239, -0.260424, -0.260609, + -0.260794, -0.260979, -0.261164, -0.261349, -0.261534, -0.261720, -0.261905, -0.262090, + -0.262275, -0.262460, -0.262645, -0.262830, -0.263015, -0.263200, -0.263385, -0.263570, + -0.263755, -0.263940, -0.264125, -0.264309, -0.264494, -0.264679, -0.264864, -0.265049, + -0.265234, -0.265419, -0.265604, -0.265789, -0.265973, -0.266158, -0.266343, -0.266528, + -0.266713, -0.266898, -0.267082, -0.267267, -0.267452, -0.267637, -0.267821, -0.268006, + -0.268191, -0.268376, -0.268560, -0.268745, -0.268930, -0.269114, -0.269299, -0.269484, + -0.269668, -0.269853, -0.270038, -0.270222, -0.270407, -0.270591, -0.270776, -0.270961, + -0.271145, -0.271330, -0.271514, -0.271699, -0.271883, -0.272068, -0.272252, -0.272437, + -0.272621, -0.272806, -0.272990, -0.273175, -0.273359, -0.273544, -0.273728, -0.273912, + -0.274097, -0.274281, -0.274466, -0.274650, -0.274834, -0.275019, -0.275203, -0.275387, + -0.275572, -0.275756, -0.275940, -0.276125, -0.276309, -0.276493, -0.276678, -0.276862, + -0.277046, -0.277230, -0.277415, -0.277599, -0.277783, -0.277967, -0.278151, -0.278336, + -0.278520, -0.278704, -0.278888, -0.279072, -0.279256, -0.279440, -0.279624, -0.279809, + -0.279993, -0.280177, -0.280361, -0.280545, -0.280729, -0.280913, -0.281097, -0.281281, + -0.281465, -0.281649, -0.281833, -0.282017, -0.282201, -0.282385, -0.282569, -0.282753, + -0.282937, -0.283120, -0.283304, -0.283488, -0.283672, -0.283856, -0.284040, -0.284224, + -0.284408, -0.284591, -0.284775, -0.284959, -0.285143, -0.285327, -0.285510, -0.285694, + -0.285878, -0.286062, -0.286245, -0.286429, -0.286613, -0.286796, -0.286980, -0.287164, + -0.287347, -0.287531, -0.287715, -0.287898, -0.288082, -0.288266, -0.288449, -0.288633, + -0.288816, -0.289000, -0.289184, -0.289367, -0.289551, -0.289734, -0.289918, -0.290101, + -0.290285, -0.290468, -0.290652, -0.290835, -0.291019, -0.291202, -0.291385, -0.291569, + -0.291752, -0.291936, -0.292119, -0.292302, -0.292486, -0.292669, -0.292852, -0.293036, + -0.293219, -0.293402, -0.293586, -0.293769, -0.293952, -0.294136, -0.294319, -0.294502, + -0.294685, -0.294869, -0.295052, -0.295235, -0.295418, -0.295601, -0.295785, -0.295968, + -0.296151, -0.296334, -0.296517, -0.296700, -0.296883, -0.297066, -0.297250, -0.297433, + -0.297616, -0.297799, -0.297982, -0.298165, -0.298348, -0.298531, -0.298714, -0.298897, + -0.299080, -0.299263, -0.299446, -0.299629, -0.299812, -0.299995, -0.300177, -0.300360, + -0.300543, -0.300726, -0.300909, -0.301092, -0.301275, -0.301458, -0.301640, -0.301823, + -0.302006, -0.302189, -0.302372, -0.302554, -0.302737, -0.302920, -0.303103, -0.303285, + -0.303468, -0.303651, -0.303833, -0.304016, -0.304199, -0.304381, -0.304564, -0.304747, + -0.304929, -0.305112, -0.305294, -0.305477, -0.305660, -0.305842, -0.306025, -0.306207, + -0.306390, -0.306572, -0.306755, -0.306937, -0.307120, -0.307302, -0.307485, -0.307667, + -0.307850, -0.308032, -0.308214, -0.308397, -0.308579, -0.308762, -0.308944, -0.309126, + -0.309309, -0.309491, -0.309673, -0.309856, -0.310038, -0.310220, -0.310403, -0.310585, + -0.310767, -0.310949, -0.311132, -0.311314, -0.311496, -0.311678, -0.311860, -0.312043, + -0.312225, -0.312407, -0.312589, -0.312771, -0.312953, -0.313135, -0.313318, -0.313500, + -0.313682, -0.313864, -0.314046, -0.314228, -0.314410, -0.314592, -0.314774, -0.314956, + -0.315138, -0.315320, -0.315502, -0.315684, -0.315866, -0.316048, -0.316230, -0.316411, + -0.316593, -0.316775, -0.316957, -0.317139, -0.317321, -0.317503, -0.317684, -0.317866, + -0.318048, -0.318230, -0.318412, -0.318593, -0.318775, -0.318957, -0.319139, -0.319320, + -0.319502, -0.319684, -0.319865, -0.320047, -0.320229, -0.320410, -0.320592, -0.320774, + -0.320955, -0.321137, -0.321318, -0.321500, -0.321682, -0.321863, -0.322045, -0.322226, + -0.322408, -0.322589, -0.322771, -0.322952, -0.323134, -0.323315, -0.323497, -0.323678, + -0.323859, -0.324041, -0.324222, -0.324404, -0.324585, -0.324766, -0.324948, -0.325129, + -0.325310, -0.325492, -0.325673, -0.325854, -0.326035, -0.326217, -0.326398, -0.326579, + -0.326760, -0.326942, -0.327123, -0.327304, -0.327485, -0.327666, -0.327848, -0.328029, + -0.328210, -0.328391, -0.328572, -0.328753, -0.328934, -0.329115, -0.329296, -0.329477, + -0.329658, -0.329839, -0.330020, -0.330202, -0.330382, -0.330563, -0.330744, -0.330925, + -0.331106, -0.331287, -0.331468, -0.331649, -0.331830, -0.332011, -0.332192, -0.332373, + -0.332553, -0.332734, -0.332915, -0.333096, -0.333277, -0.333457, -0.333638, -0.333819, + -0.334000, -0.334180, -0.334361, -0.334542, -0.334722, -0.334903, -0.335084, -0.335265, + -0.335445, -0.335626, -0.335806, -0.335987, -0.336168, -0.336348, -0.336529, -0.336709, + -0.336890, -0.337070, -0.337251, -0.337431, -0.337612, -0.337792, -0.337973, -0.338153, + -0.338334, -0.338514, -0.338695, -0.338875, -0.339055, -0.339236, -0.339416, -0.339597, + -0.339777, -0.339957, -0.340138, -0.340318, -0.340498, -0.340678, -0.340859, -0.341039, + -0.341219, -0.341399, -0.341580, -0.341760, -0.341940, -0.342120, -0.342300, -0.342481, + -0.342661, -0.342841, -0.343021, -0.343201, -0.343381, -0.343561, -0.343741, -0.343921, + -0.344101, -0.344281, -0.344461, -0.344641, -0.344821, -0.345001, -0.345181, -0.345361, + -0.345541, -0.345721, -0.345901, -0.346081, -0.346261, -0.346441, -0.346621, -0.346801, + -0.346980, -0.347160, -0.347340, -0.347520, -0.347700, -0.347879, -0.348059, -0.348239, + -0.348419, -0.348598, -0.348778, -0.348958, -0.349138, -0.349317, -0.349497, -0.349676, + -0.349856, -0.350036, -0.350215, -0.350395, -0.350575, -0.350754, -0.350934, -0.351113, + -0.351293, -0.351472, -0.351652, -0.351831, -0.352011, -0.352190, -0.352370, -0.352549, + -0.352729, -0.352908, -0.353087, -0.353267, -0.353446, -0.353626, -0.353805, -0.353984, + -0.354164, -0.354343, -0.354522, -0.354701, -0.354881, -0.355060, -0.355239, -0.355418, + -0.355598, -0.355777, -0.355956, -0.356135, -0.356314, -0.356494, -0.356673, -0.356852, + -0.357031, -0.357210, -0.357389, -0.357568, -0.357747, -0.357926, -0.358105, -0.358284, + -0.358463, -0.358642, -0.358821, -0.359000, -0.359179, -0.359358, -0.359537, -0.359716, + -0.359895, -0.360074, -0.360253, -0.360432, -0.360611, -0.360789, -0.360968, -0.361147, + -0.361326, -0.361505, -0.361683, -0.361862, -0.362041, -0.362220, -0.362398, -0.362577, + -0.362756, -0.362934, -0.363113, -0.363292, -0.363470, -0.363649, -0.363828, -0.364006, + -0.364185, -0.364363, -0.364542, -0.364720, -0.364899, -0.365078, -0.365256, -0.365435, + -0.365613, -0.365791, -0.365970, -0.366148, -0.366327, -0.366505, -0.366684, -0.366862, + -0.367040, -0.367219, -0.367397, -0.367575, -0.367754, -0.367932, -0.368110, -0.368289, + -0.368467, -0.368645, -0.368823, -0.369002, -0.369180, -0.369358, -0.369536, -0.369714, + -0.369892, -0.370071, -0.370249, -0.370427, -0.370605, -0.370783, -0.370961, -0.371139, + -0.371317, -0.371495, -0.371673, -0.371851, -0.372029, -0.372207, -0.372385, -0.372563, + -0.372741, -0.372919, -0.373097, -0.373275, -0.373453, -0.373631, -0.373808, -0.373986, + -0.374164, -0.374342, -0.374520, -0.374697, -0.374875, -0.375053, -0.375231, -0.375408, + -0.375586, -0.375764, -0.375942, -0.376119, -0.376297, -0.376475, -0.376652, -0.376830, + -0.377007, -0.377185, -0.377363, -0.377540, -0.377718, -0.377895, -0.378073, -0.378250, + -0.378428, -0.378605, -0.378783, -0.378960, -0.379138, -0.379315, -0.379492, -0.379670, + -0.379847, -0.380025, -0.380202, -0.380379, -0.380557, -0.380734, -0.380911, -0.381088, + -0.381266, -0.381443, -0.381620, -0.381797, -0.381975, -0.382152, -0.382329, -0.382506, + -0.382683, -0.382861, -0.383038, -0.383215, -0.383392, -0.383569, -0.383746, -0.383923, + -0.384100, -0.384277, -0.384454, -0.384631, -0.384808, -0.384985, -0.385162, -0.385339, + -0.385516, -0.385693, -0.385870, -0.386047, -0.386224, -0.386400, -0.386577, -0.386754, + -0.386931, -0.387108, -0.387285, -0.387461, -0.387638, -0.387815, -0.387992, -0.388168, + -0.388345, -0.388522, -0.388698, -0.388875, -0.389052, -0.389228, -0.389405, -0.389582, + -0.389758, -0.389935, -0.390111, -0.390288, -0.390464, -0.390641, -0.390817, -0.390994, + -0.391170, -0.391347, -0.391523, -0.391700, -0.391876, -0.392053, -0.392229, -0.392405, + -0.392582, -0.392758, -0.392934, -0.393111, -0.393287, -0.393463, -0.393640, -0.393816, + -0.393992, -0.394168, -0.394344, -0.394521, -0.394697, -0.394873, -0.395049, -0.395225, + -0.395401, -0.395578, -0.395754, -0.395930, -0.396106, -0.396282, -0.396458, -0.396634, + -0.396810, -0.396986, -0.397162, -0.397338, -0.397514, -0.397690, -0.397866, -0.398042, + -0.398218, -0.398393, -0.398569, -0.398745, -0.398921, -0.399097, -0.399273, -0.399448, + -0.399624, -0.399800, -0.399976, -0.400151, -0.400327, -0.400503, -0.400679, -0.400854, + -0.401030, -0.401206, -0.401381, -0.401557, -0.401732, -0.401908, -0.402084, -0.402259, + -0.402435, -0.402610, -0.402786, -0.402961, -0.403137, -0.403312, -0.403488, -0.403663, + -0.403838, -0.404014, -0.404189, -0.404365, -0.404540, -0.404715, -0.404891, -0.405066, + -0.405241, -0.405417, -0.405592, -0.405767, -0.405942, -0.406118, -0.406293, -0.406468, + -0.406643, -0.406818, -0.406994, -0.407169, -0.407344, -0.407519, -0.407694, -0.407869, + -0.408044, -0.408219, -0.408394, -0.408569, -0.408744, -0.408919, -0.409094, -0.409269, + -0.409444, -0.409619, -0.409794, -0.409969, -0.410144, -0.410319, -0.410493, -0.410668, + -0.410843, -0.411018, -0.411193, -0.411368, -0.411542, -0.411717, -0.411892, -0.412067, + -0.412241, -0.412416, -0.412591, -0.412765, -0.412940, -0.413115, -0.413289, -0.413464, + -0.413638, -0.413813, -0.413987, -0.414162, -0.414337, -0.414511, -0.414685, -0.414860, + -0.415034, -0.415209, -0.415383, -0.415558, -0.415732, -0.415906, -0.416081, -0.416255, + -0.416430, -0.416604, -0.416778, -0.416952, -0.417127, -0.417301, -0.417475, -0.417650, + -0.417824, -0.417998, -0.418172, -0.418346, -0.418520, -0.418695, -0.418869, -0.419043, + -0.419217, -0.419391, -0.419565, -0.419739, -0.419913, -0.420087, -0.420261, -0.420435, + -0.420609, -0.420783, -0.420957, -0.421131, -0.421305, -0.421479, -0.421653, -0.421826, + -0.422000, -0.422174, -0.422348, -0.422522, -0.422695, -0.422869, -0.423043, -0.423217, + -0.423390, -0.423564, -0.423738, -0.423912, -0.424085, -0.424259, -0.424432, -0.424606, + -0.424780, -0.424953, -0.425127, -0.425300, -0.425474, -0.425647, -0.425821, -0.425994, + -0.426168, -0.426341, -0.426515, -0.426688, -0.426862, -0.427035, -0.427208, -0.427382, + -0.427555, -0.427728, -0.427902, -0.428075, -0.428248, -0.428422, -0.428595, -0.428768, + -0.428941, -0.429114, -0.429288, -0.429461, -0.429634, -0.429807, -0.429980, -0.430153, + -0.430326, -0.430500, -0.430673, -0.430846, -0.431019, -0.431192, -0.431365, -0.431538, + -0.431711, -0.431884, -0.432057, -0.432229, -0.432402, -0.432575, -0.432748, -0.432921, + -0.433094, -0.433267, -0.433439, -0.433612, -0.433785, -0.433958, -0.434131, -0.434303, + -0.434476, -0.434649, -0.434821, -0.434994, -0.435167, -0.435339, -0.435512, -0.435685, + -0.435857, -0.436030, -0.436202, -0.436375, -0.436547, -0.436720, -0.436892, -0.437065, + -0.437237, -0.437410, -0.437582, -0.437754, -0.437927, -0.438099, -0.438272, -0.438444, + -0.438616, -0.438789, -0.438961, -0.439133, -0.439305, -0.439478, -0.439650, -0.439822, + -0.439994, -0.440166, -0.440339, -0.440511, -0.440683, -0.440855, -0.441027, -0.441199, + -0.441371, -0.441543, -0.441715, -0.441887, -0.442059, -0.442231, -0.442403, -0.442575, + -0.442747, -0.442919, -0.443091, -0.443263, -0.443435, -0.443607, -0.443779, -0.443950, + -0.444122, -0.444294, -0.444466, -0.444637, -0.444809, -0.444981, -0.445153, -0.445324, + -0.445496, -0.445668, -0.445839, -0.446011, -0.446183, -0.446354, -0.446526, -0.446697, + -0.446869, -0.447040, -0.447212, -0.447383, -0.447555, -0.447726, -0.447898, -0.448069, + -0.448241, -0.448412, -0.448583, -0.448755, -0.448926, -0.449097, -0.449269, -0.449440, + -0.449611, -0.449783, -0.449954, -0.450125, -0.450296, -0.450467, -0.450639, -0.450810, + -0.450981, -0.451152, -0.451323, -0.451494, -0.451665, -0.451836, -0.452008, -0.452179, + -0.452350, -0.452521, -0.452692, -0.452863, -0.453033, -0.453204, -0.453375, -0.453546, + -0.453717, -0.453888, -0.454059, -0.454230, -0.454400, -0.454571, -0.454742, -0.454913, + -0.455084, -0.455254, -0.455425, -0.455596, -0.455766, -0.455937, -0.456108, -0.456278, + -0.456449, -0.456620, -0.456790, -0.456961, -0.457131, -0.457302, -0.457472, -0.457643, + -0.457813, -0.457984, -0.458154, -0.458325, -0.458495, -0.458665, -0.458836, -0.459006, + -0.459177, -0.459347, -0.459517, -0.459687, -0.459858, -0.460028, -0.460198, -0.460369, + -0.460539, -0.460709, -0.460879, -0.461049, -0.461219, -0.461390, -0.461560, -0.461730, + -0.461900, -0.462070, -0.462240, -0.462410, -0.462580, -0.462750, -0.462920, -0.463090, + -0.463260, -0.463430, -0.463600, -0.463769, -0.463939, -0.464109, -0.464279, -0.464449, + -0.464619, -0.464788, -0.464958, -0.465128, -0.465298, -0.465467, -0.465637, -0.465807, + -0.465977, -0.466146, -0.466316, -0.466485, -0.466655, -0.466825, -0.466994, -0.467164, + -0.467333, -0.467503, -0.467672, -0.467842, -0.468011, -0.468181, -0.468350, -0.468519, + -0.468689, -0.468858, -0.469028, -0.469197, -0.469366, -0.469536, -0.469705, -0.469874, + -0.470043, -0.470213, -0.470382, -0.470551, -0.470720, -0.470889, -0.471058, -0.471228, + -0.471397, -0.471566, -0.471735, -0.471904, -0.472073, -0.472242, -0.472411, -0.472580, + -0.472749, -0.472918, -0.473087, -0.473256, -0.473425, -0.473594, -0.473763, -0.473931, + -0.474100, -0.474269, -0.474438, -0.474607, -0.474775, -0.474944, -0.475113, -0.475282, + -0.475450, -0.475619, -0.475788, -0.475956, -0.476125, -0.476294, -0.476462, -0.476631, + -0.476799, -0.476968, -0.477136, -0.477305, -0.477473, -0.477642, -0.477810, -0.477979, + -0.478147, -0.478315, -0.478484, -0.478652, -0.478821, -0.478989, -0.479157, -0.479325, + -0.479494, -0.479662, -0.479830, -0.479998, -0.480167, -0.480335, -0.480503, -0.480671, + -0.480839, -0.481007, -0.481176, -0.481344, -0.481512, -0.481680, -0.481848, -0.482016, + -0.482184, -0.482352, -0.482520, -0.482688, -0.482856, -0.483023, -0.483191, -0.483359, + -0.483527, -0.483695, -0.483863, -0.484031, -0.484198, -0.484366, -0.484534, -0.484702, + -0.484869, -0.485037, -0.485205, -0.485372, -0.485540, -0.485708, -0.485875, -0.486043, + -0.486210, -0.486378, -0.486545, -0.486713, -0.486880, -0.487048, -0.487215, -0.487383, + -0.487550, -0.487718, -0.487885, -0.488052, -0.488220, -0.488387, -0.488554, -0.488722, + -0.488889, -0.489056, -0.489223, -0.489391, -0.489558, -0.489725, -0.489892, -0.490059, + -0.490226, -0.490394, -0.490561, -0.490728, -0.490895, -0.491062, -0.491229, -0.491396, + -0.491563, -0.491730, -0.491897, -0.492064, -0.492231, -0.492398, -0.492564, -0.492731, + -0.492898, -0.493065, -0.493232, -0.493399, -0.493565, -0.493732, -0.493899, -0.494066, + -0.494232, -0.494399, -0.494566, -0.494732, -0.494899, -0.495066, -0.495232, -0.495399, + -0.495565, -0.495732, -0.495898, -0.496065, -0.496231, -0.496398, -0.496564, -0.496731, + -0.496897, -0.497063, -0.497230, -0.497396, -0.497562, -0.497729, -0.497895, -0.498061, + -0.498228, -0.498394, -0.498560, -0.498726, -0.498893, -0.499059, -0.499225, -0.499391, + -0.499557, -0.499723, -0.499889, -0.500055, -0.500221, -0.500387, -0.500553, -0.500719, + -0.500885, -0.501051, -0.501217, -0.501383, -0.501549, -0.501715, -0.501881, -0.502047, + -0.502212, -0.502378, -0.502544, -0.502710, -0.502876, -0.503041, -0.503207, -0.503373, + -0.503538, -0.503704, -0.503870, -0.504035, -0.504201, -0.504366, -0.504532, -0.504698, + -0.504863, -0.505029, -0.505194, -0.505360, -0.505525, -0.505690, -0.505856, -0.506021, + -0.506187, -0.506352, -0.506517, -0.506683, -0.506848, -0.507013, -0.507179, -0.507344, + -0.507509, -0.507674, -0.507839, -0.508005, -0.508170, -0.508335, -0.508500, -0.508665, + -0.508830, -0.508995, -0.509160, -0.509325, -0.509490, -0.509655, -0.509820, -0.509985, + -0.510150, -0.510315, -0.510480, -0.510645, -0.510810, -0.510974, -0.511139, -0.511304, + -0.511469, -0.511634, -0.511798, -0.511963, -0.512128, -0.512292, -0.512457, -0.512622, + -0.512786, -0.512951, -0.513116, -0.513280, -0.513445, -0.513609, -0.513774, -0.513938, + -0.514103, -0.514267, -0.514432, -0.514596, -0.514760, -0.514925, -0.515089, -0.515254, + -0.515418, -0.515582, -0.515746, -0.515911, -0.516075, -0.516239, -0.516403, -0.516568, + -0.516732, -0.516896, -0.517060, -0.517224, -0.517388, -0.517552, -0.517716, -0.517880, + -0.518045, -0.518209, -0.518372, -0.518536, -0.518700, -0.518864, -0.519028, -0.519192, + -0.519356, -0.519520, -0.519684, -0.519848, -0.520011, -0.520175, -0.520339, -0.520503, + -0.520666, -0.520830, -0.520994, -0.521157, -0.521321, -0.521485, -0.521648, -0.521812, + -0.521975, -0.522139, -0.522302, -0.522466, -0.522629, -0.522793, -0.522956, -0.523120, + -0.523283, -0.523447, -0.523610, -0.523773, -0.523937, -0.524100, -0.524263, -0.524426, + -0.524590, -0.524753, -0.524916, -0.525079, -0.525243, -0.525406, -0.525569, -0.525732, + -0.525895, -0.526058, -0.526221, -0.526384, -0.526547, -0.526710, -0.526873, -0.527036, + -0.527199, -0.527362, -0.527525, -0.527688, -0.527851, -0.528014, -0.528176, -0.528339, + -0.528502, -0.528665, -0.528828, -0.528990, -0.529153, -0.529316, -0.529478, -0.529641, + -0.529804, -0.529966, -0.530129, -0.530291, -0.530454, -0.530617, -0.530779, -0.530942, + -0.531104, -0.531266, -0.531429, -0.531591, -0.531754, -0.531916, -0.532078, -0.532241, + -0.532403, -0.532565, -0.532728, -0.532890, -0.533052, -0.533214, -0.533377, -0.533539, + -0.533701, -0.533863, -0.534025, -0.534187, -0.534349, -0.534512, -0.534674, -0.534836, + -0.534998, -0.535160, -0.535322, -0.535484, -0.535645, -0.535807, -0.535969, -0.536131, + -0.536293, -0.536455, -0.536617, -0.536778, -0.536940, -0.537102, -0.537264, -0.537425, + -0.537587, -0.537749, -0.537910, -0.538072, -0.538234, -0.538395, -0.538557, -0.538718, + -0.538880, -0.539041, -0.539203, -0.539364, -0.539526, -0.539687, -0.539849, -0.540010, + -0.540171, -0.540333, -0.540494, -0.540655, -0.540817, -0.540978, -0.541139, -0.541301, + -0.541462, -0.541623, -0.541784, -0.541945, -0.542106, -0.542268, -0.542429, -0.542590, + -0.542751, -0.542912, -0.543073, -0.543234, -0.543395, -0.543556, -0.543717, -0.543878, + -0.544039, -0.544199, -0.544360, -0.544521, -0.544682, -0.544843, -0.545003, -0.545164, + -0.545325, -0.545486, -0.545646, -0.545807, -0.545968, -0.546128, -0.546289, -0.546450, + -0.546610, -0.546771, -0.546931, -0.547092, -0.547252, -0.547413, -0.547573, -0.547734, + -0.547894, -0.548054, -0.548215, -0.548375, -0.548536, -0.548696, -0.548856, -0.549016, + -0.549177, -0.549337, -0.549497, -0.549657, -0.549818, -0.549978, -0.550138, -0.550298, + -0.550458, -0.550618, -0.550778, -0.550938, -0.551098, -0.551258, -0.551418, -0.551578, + -0.551738, -0.551898, -0.552058, -0.552218, -0.552378, -0.552537, -0.552697, -0.552857, + -0.553017, -0.553176, -0.553336, -0.553496, -0.553656, -0.553815, -0.553975, -0.554134, + -0.554294, -0.554454, -0.554613, -0.554773, -0.554932, -0.555092, -0.555251, -0.555411, + -0.555570, -0.555730, -0.555889, -0.556048, -0.556208, -0.556367, -0.556526, -0.556686, + -0.556845, -0.557004, -0.557164, -0.557323, -0.557482, -0.557641, -0.557800, -0.557959, + -0.558119, -0.558278, -0.558437, -0.558596, -0.558755, -0.558914, -0.559073, -0.559232, + -0.559391, -0.559550, -0.559709, -0.559867, -0.560026, -0.560185, -0.560344, -0.560503, + -0.560662, -0.560820, -0.560979, -0.561138, -0.561297, -0.561455, -0.561614, -0.561773, + -0.561931, -0.562090, -0.562248, -0.562407, -0.562565, -0.562724, -0.562882, -0.563041, + -0.563199, -0.563358, -0.563516, -0.563675, -0.563833, -0.563991, -0.564150, -0.564308, + -0.564466, -0.564624, -0.564783, -0.564941, -0.565099, -0.565257, -0.565416, -0.565574, + -0.565732, -0.565890, -0.566048, -0.566206, -0.566364, -0.566522, -0.566680, -0.566838, + -0.566996, -0.567154, -0.567312, -0.567470, -0.567628, -0.567786, -0.567943, -0.568101, + -0.568259, -0.568417, -0.568574, -0.568732, -0.568890, -0.569048, -0.569205, -0.569363, + -0.569521, -0.569678, -0.569836, -0.569993, -0.570151, -0.570308, -0.570466, -0.570623, + -0.570781, -0.570938, -0.571096, -0.571253, -0.571410, -0.571568, -0.571725, -0.571882, + -0.572040, -0.572197, -0.572354, -0.572511, -0.572669, -0.572826, -0.572983, -0.573140, + -0.573297, -0.573454, -0.573611, -0.573768, -0.573925, -0.574082, -0.574239, -0.574396, + -0.574553, -0.574710, -0.574867, -0.575024, -0.575181, -0.575338, -0.575495, -0.575651, + -0.575808, -0.575965, -0.576122, -0.576278, -0.576435, -0.576592, -0.576748, -0.576905, + -0.577062, -0.577218, -0.577375, -0.577531, -0.577688, -0.577844, -0.578001, -0.578157, + -0.578314, -0.578470, -0.578627, -0.578783, -0.578939, -0.579096, -0.579252, -0.579408, + -0.579565, -0.579721, -0.579877, -0.580033, -0.580189, -0.580346, -0.580502, -0.580658, + -0.580814, -0.580970, -0.581126, -0.581282, -0.581438, -0.581594, -0.581750, -0.581906, + -0.582062, -0.582218, -0.582374, -0.582530, -0.582685, -0.582841, -0.582997, -0.583153, + -0.583309, -0.583464, -0.583620, -0.583776, -0.583931, -0.584087, -0.584243, -0.584398, + -0.584554, -0.584710, -0.584865, -0.585021, -0.585176, -0.585332, -0.585487, -0.585642, + -0.585798, -0.585953, -0.586109, -0.586264, -0.586419, -0.586575, -0.586730, -0.586885, + -0.587040, -0.587196, -0.587351, -0.587506, -0.587661, -0.587816, -0.587971, -0.588126, + -0.588282, -0.588437, -0.588592, -0.588747, -0.588902, -0.589057, -0.589212, -0.589366, + -0.589521, -0.589676, -0.589831, -0.589986, -0.590141, -0.590295, -0.590450, -0.590605, + -0.590760, -0.590914, -0.591069, -0.591224, -0.591378, -0.591533, -0.591688, -0.591842, + -0.591997, -0.592151, -0.592306, -0.592460, -0.592615, -0.592769, -0.592924, -0.593078, + -0.593232, -0.593387, -0.593541, -0.593695, -0.593850, -0.594004, -0.594158, -0.594312, + -0.594467, -0.594621, -0.594775, -0.594929, -0.595083, -0.595237, -0.595391, -0.595545, + -0.595699, -0.595853, -0.596007, -0.596161, -0.596315, -0.596469, -0.596623, -0.596777, + -0.596931, -0.597085, -0.597238, -0.597392, -0.597546, -0.597700, -0.597853, -0.598007, + -0.598161, -0.598314, -0.598468, -0.598622, -0.598775, -0.598929, -0.599082, -0.599236, + -0.599389, -0.599543, -0.599696, -0.599850, -0.600003, -0.600156, -0.600310, -0.600463, + -0.600616, -0.600770, -0.600923, -0.601076, -0.601230, -0.601383, -0.601536, -0.601689, + -0.601842, -0.601995, -0.602148, -0.602302, -0.602455, -0.602608, -0.602761, -0.602914, + -0.603067, -0.603220, -0.603372, -0.603525, -0.603678, -0.603831, -0.603984, -0.604137, + -0.604290, -0.604442, -0.604595, -0.604748, -0.604900, -0.605053, -0.605206, -0.605358, + -0.605511, -0.605664, -0.605816, -0.605969, -0.606121, -0.606274, -0.606426, -0.606579, + -0.606731, -0.606884, -0.607036, -0.607188, -0.607341, -0.607493, -0.607645, -0.607798, + -0.607950, -0.608102, -0.608254, -0.608406, -0.608559, -0.608711, -0.608863, -0.609015, + -0.609167, -0.609319, -0.609471, -0.609623, -0.609775, -0.609927, -0.610079, -0.610231, + -0.610383, -0.610535, -0.610687, -0.610838, -0.610990, -0.611142, -0.611294, -0.611445, + -0.611597, -0.611749, -0.611901, -0.612052, -0.612204, -0.612355, -0.612507, -0.612659, + -0.612810, -0.612962, -0.613113, -0.613265, -0.613416, -0.613567, -0.613719, -0.613870, + -0.614022, -0.614173, -0.614324, -0.614475, -0.614627, -0.614778, -0.614929, -0.615080, + -0.615232, -0.615383, -0.615534, -0.615685, -0.615836, -0.615987, -0.616138, -0.616289, + -0.616440, -0.616591, -0.616742, -0.616893, -0.617044, -0.617195, -0.617346, -0.617496, + -0.617647, -0.617798, -0.617949, -0.618100, -0.618250, -0.618401, -0.618552, -0.618702, + -0.618853, -0.619004, -0.619154, -0.619305, -0.619455, -0.619606, -0.619756, -0.619907, + -0.620057, -0.620208, -0.620358, -0.620508, -0.620659, -0.620809, -0.620959, -0.621110, + -0.621260, -0.621410, -0.621560, -0.621711, -0.621861, -0.622011, -0.622161, -0.622311, + -0.622461, -0.622611, -0.622761, -0.622911, -0.623061, -0.623211, -0.623361, -0.623511, + -0.623661, -0.623811, -0.623961, -0.624111, -0.624260, -0.624410, -0.624560, -0.624710, + -0.624860, -0.625009, -0.625159, -0.625309, -0.625458, -0.625608, -0.625757, -0.625907, + -0.626056, -0.626206, -0.626355, -0.626505, -0.626654, -0.626804, -0.626953, -0.627102, + -0.627252, -0.627401, -0.627550, -0.627700, -0.627849, -0.627998, -0.628147, -0.628297, + -0.628446, -0.628595, -0.628744, -0.628893, -0.629042, -0.629191, -0.629340, -0.629489, + -0.629638, -0.629787, -0.629936, -0.630085, -0.630234, -0.630383, -0.630532, -0.630680, + -0.630829, -0.630978, -0.631127, -0.631275, -0.631424, -0.631573, -0.631721, -0.631870, + -0.632019, -0.632167, -0.632316, -0.632464, -0.632613, -0.632761, -0.632910, -0.633058, + -0.633207, -0.633355, -0.633504, -0.633652, -0.633800, -0.633949, -0.634097, -0.634245, + -0.634393, -0.634542, -0.634690, -0.634838, -0.634986, -0.635134, -0.635282, -0.635430, + -0.635578, -0.635726, -0.635874, -0.636022, -0.636170, -0.636318, -0.636466, -0.636614, + -0.636762, -0.636910, -0.637057, -0.637205, -0.637353, -0.637501, -0.637649, -0.637796, + -0.637944, -0.638092, -0.638239, -0.638387, -0.638534, -0.638682, -0.638829, -0.638977, + -0.639124, -0.639272, -0.639419, -0.639567, -0.639714, -0.639862, -0.640009, -0.640156, + -0.640303, -0.640451, -0.640598, -0.640745, -0.640892, -0.641040, -0.641187, -0.641334, + -0.641481, -0.641628, -0.641775, -0.641922, -0.642069, -0.642216, -0.642363, -0.642510, + -0.642657, -0.642804, -0.642951, -0.643098, -0.643245, -0.643391, -0.643538, -0.643685, + -0.643832, -0.643978, -0.644125, -0.644272, -0.644418, -0.644565, -0.644711, -0.644858, + -0.645005, -0.645151, -0.645298, -0.645444, -0.645590, -0.645737, -0.645883, -0.646030, + -0.646176, -0.646322, -0.646469, -0.646615, -0.646761, -0.646907, -0.647054, -0.647200, + -0.647346, -0.647492, -0.647638, -0.647784, -0.647930, -0.648076, -0.648222, -0.648368, + -0.648514, -0.648660, -0.648806, -0.648952, -0.649098, -0.649244, -0.649390, -0.649536, + -0.649681, -0.649827, -0.649973, -0.650119, -0.650264, -0.650410, -0.650555, -0.650701, + -0.650847, -0.650992, -0.651138, -0.651283, -0.651429, -0.651574, -0.651720, -0.651865, + -0.652011, -0.652156, -0.652301, -0.652447, -0.652592, -0.652737, -0.652882, -0.653028, + -0.653173, -0.653318, -0.653463, -0.653608, -0.653753, -0.653899, -0.654044, -0.654189, + -0.654334, -0.654479, -0.654624, -0.654769, -0.654913, -0.655058, -0.655203, -0.655348, + -0.655493, -0.655638, -0.655782, -0.655927, -0.656072, -0.656217, -0.656361, -0.656506, + -0.656651, -0.656795, -0.656940, -0.657084, -0.657229, -0.657373, -0.657518, -0.657662, + -0.657807, -0.657951, -0.658095, -0.658240, -0.658384, -0.658529, -0.658673, -0.658817, + -0.658961, -0.659105, -0.659250, -0.659394, -0.659538, -0.659682, -0.659826, -0.659970, + -0.660114, -0.660258, -0.660402, -0.660546, -0.660690, -0.660834, -0.660978, -0.661122, + -0.661266, -0.661410, -0.661553, -0.661697, -0.661841, -0.661985, -0.662128, -0.662272, + -0.662416, -0.662559, -0.662703, -0.662847, -0.662990, -0.663134, -0.663277, -0.663421, + -0.663564, -0.663708, -0.663851, -0.663994, -0.664138, -0.664281, -0.664424, -0.664568, + -0.664711, -0.664854, -0.664997, -0.665141, -0.665284, -0.665427, -0.665570, -0.665713, + -0.665856, -0.665999, -0.666142, -0.666285, -0.666428, -0.666571, -0.666714, -0.666857, + -0.667000, -0.667143, -0.667286, -0.667428, -0.667571, -0.667714, -0.667857, -0.667999, + -0.668142, -0.668285, -0.668427, -0.668570, -0.668712, -0.668855, -0.668998, -0.669140, + -0.669283, -0.669425, -0.669567, -0.669710, -0.669852, -0.669995, -0.670137, -0.670279, + -0.670422, -0.670564, -0.670706, -0.670848, -0.670990, -0.671133, -0.671275, -0.671417, + -0.671559, -0.671701, -0.671843, -0.671985, -0.672127, -0.672269, -0.672411, -0.672553, + -0.672695, -0.672837, -0.672978, -0.673120, -0.673262, -0.673404, -0.673546, -0.673687, + -0.673829, -0.673971, -0.674112, -0.674254, -0.674396, -0.674537, -0.674679, -0.674820, + -0.674962, -0.675103, -0.675245, -0.675386, -0.675527, -0.675669, -0.675810, -0.675951, + -0.676093, -0.676234, -0.676375, -0.676516, -0.676658, -0.676799, -0.676940, -0.677081, + -0.677222, -0.677363, -0.677504, -0.677645, -0.677786, -0.677927, -0.678068, -0.678209, + -0.678350, -0.678491, -0.678632, -0.678773, -0.678913, -0.679054, -0.679195, -0.679336, + -0.679476, -0.679617, -0.679758, -0.679898, -0.680039, -0.680179, -0.680320, -0.680461, + -0.680601, -0.680741, -0.680882, -0.681022, -0.681163, -0.681303, -0.681443, -0.681584, + -0.681724, -0.681864, -0.682005, -0.682145, -0.682285, -0.682425, -0.682565, -0.682705, + -0.682846, -0.682986, -0.683126, -0.683266, -0.683406, -0.683546, -0.683686, -0.683825, + -0.683965, -0.684105, -0.684245, -0.684385, -0.684525, -0.684664, -0.684804, -0.684944, + -0.685084, -0.685223, -0.685363, -0.685503, -0.685642, -0.685782, -0.685921, -0.686061, + -0.686200, -0.686340, -0.686479, -0.686619, -0.686758, -0.686897, -0.687037, -0.687176, + -0.687315, -0.687455, -0.687594, -0.687733, -0.687872, -0.688011, -0.688151, -0.688290, + -0.688429, -0.688568, -0.688707, -0.688846, -0.688985, -0.689124, -0.689263, -0.689402, + -0.689541, -0.689679, -0.689818, -0.689957, -0.690096, -0.690235, -0.690373, -0.690512, + -0.690651, -0.690789, -0.690928, -0.691067, -0.691205, -0.691344, -0.691482, -0.691621, + -0.691759, -0.691898, -0.692036, -0.692175, -0.692313, -0.692451, -0.692590, -0.692728, + -0.692866, -0.693004, -0.693143, -0.693281, -0.693419, -0.693557, -0.693695, -0.693833, + -0.693971, -0.694109, -0.694248, -0.694386, -0.694524, -0.694661, -0.694799, -0.694937, + -0.695075, -0.695213, -0.695351, -0.695489, -0.695626, -0.695764, -0.695902, -0.696039, + -0.696177, -0.696315, -0.696452, -0.696590, -0.696728, -0.696865, -0.697003, -0.697140, + -0.697277, -0.697415, -0.697552, -0.697690, -0.697827, -0.697964, -0.698102, -0.698239, + -0.698376, -0.698513, -0.698651, -0.698788, -0.698925, -0.699062, -0.699199, -0.699336, + -0.699473, -0.699610, -0.699747, -0.699884, -0.700021, -0.700158, -0.700295, -0.700432, + -0.700569, -0.700706, -0.700842, -0.700979, -0.701116, -0.701253, -0.701389, -0.701526, + -0.701663, -0.701799, -0.701936, -0.702072, -0.702209, -0.702345, -0.702482, -0.702618, + -0.702755, -0.702891, -0.703028, -0.703164, -0.703300, -0.703436, -0.703573, -0.703709, + -0.703845, -0.703981, -0.704118, -0.704254, -0.704390, -0.704526, -0.704662, -0.704798, + -0.704934, -0.705070, -0.705206, -0.705342, -0.705478, -0.705614, -0.705750, -0.705885, + -0.706021, -0.706157, -0.706293, -0.706429, -0.706564, -0.706700, -0.706836, -0.706971, + -0.707107, -0.707242, -0.707378, -0.707513, -0.707649, -0.707784, -0.707920, -0.708055, + -0.708191, -0.708326, -0.708461, -0.708597, -0.708732, -0.708867, -0.709002, -0.709138, + -0.709273, -0.709408, -0.709543, -0.709678, -0.709813, -0.709948, -0.710083, -0.710218, + -0.710353, -0.710488, -0.710623, -0.710758, -0.710893, -0.711028, -0.711163, -0.711297, + -0.711432, -0.711567, -0.711702, -0.711836, -0.711971, -0.712106, -0.712240, -0.712375, + -0.712509, -0.712644, -0.712778, -0.712913, -0.713047, -0.713182, -0.713316, -0.713451, + -0.713585, -0.713719, -0.713853, -0.713988, -0.714122, -0.714256, -0.714390, -0.714525, + -0.714659, -0.714793, -0.714927, -0.715061, -0.715195, -0.715329, -0.715463, -0.715597, + -0.715731, -0.715865, -0.715999, -0.716132, -0.716266, -0.716400, -0.716534, -0.716668, + -0.716801, -0.716935, -0.717069, -0.717202, -0.717336, -0.717469, -0.717603, -0.717737, + -0.717870, -0.718004, -0.718137, -0.718270, -0.718404, -0.718537, -0.718670, -0.718804, + -0.718937, -0.719070, -0.719204, -0.719337, -0.719470, -0.719603, -0.719736, -0.719869, + -0.720003, -0.720136, -0.720269, -0.720402, -0.720535, -0.720668, -0.720800, -0.720933, + -0.721066, -0.721199, -0.721332, -0.721465, -0.721597, -0.721730, -0.721863, -0.721996, + -0.722128, -0.722261, -0.722393, -0.722526, -0.722659, -0.722791, -0.722924, -0.723056, + -0.723188, -0.723321, -0.723453, -0.723586, -0.723718, -0.723850, -0.723983, -0.724115, + -0.724247, -0.724379, -0.724511, -0.724644, -0.724776, -0.724908, -0.725040, -0.725172, + -0.725304, -0.725436, -0.725568, -0.725700, -0.725832, -0.725964, -0.726095, -0.726227, + -0.726359, -0.726491, -0.726623, -0.726754, -0.726886, -0.727018, -0.727149, -0.727281, + -0.727413, -0.727544, -0.727676, -0.727807, -0.727939, -0.728070, -0.728202, -0.728333, + -0.728464, -0.728596, -0.728727, -0.728858, -0.728990, -0.729121, -0.729252, -0.729383, + -0.729514, -0.729646, -0.729777, -0.729908, -0.730039, -0.730170, -0.730301, -0.730432, + -0.730563, -0.730694, -0.730825, -0.730955, -0.731086, -0.731217, -0.731348, -0.731479, + -0.731609, -0.731740, -0.731871, -0.732001, -0.732132, -0.732263, -0.732393, -0.732524, + -0.732654, -0.732785, -0.732915, -0.733046, -0.733176, -0.733306, -0.733437, -0.733567, + -0.733697, -0.733828, -0.733958, -0.734088, -0.734218, -0.734349, -0.734479, -0.734609, + -0.734739, -0.734869, -0.734999, -0.735129, -0.735259, -0.735389, -0.735519, -0.735649, + -0.735779, -0.735908, -0.736038, -0.736168, -0.736298, -0.736428, -0.736557, -0.736687, + -0.736817, -0.736946, -0.737076, -0.737205, -0.737335, -0.737464, -0.737594, -0.737723, + -0.737853, -0.737982, -0.738112, -0.738241, -0.738370, -0.738500, -0.738629, -0.738758, + -0.738887, -0.739017, -0.739146, -0.739275, -0.739404, -0.739533, -0.739662, -0.739791, + -0.739920, -0.740049, -0.740178, -0.740307, -0.740436, -0.740565, -0.740694, -0.740822, + -0.740951, -0.741080, -0.741209, -0.741337, -0.741466, -0.741595, -0.741723, -0.741852, + -0.741980, -0.742109, -0.742237, -0.742366, -0.742494, -0.742623, -0.742751, -0.742880, + -0.743008, -0.743136, -0.743265, -0.743393, -0.743521, -0.743649, -0.743777, -0.743906, + -0.744034, -0.744162, -0.744290, -0.744418, -0.744546, -0.744674, -0.744802, -0.744930, + -0.745058, -0.745186, -0.745314, -0.745441, -0.745569, -0.745697, -0.745825, -0.745952, + -0.746080, -0.746208, -0.746335, -0.746463, -0.746591, -0.746718, -0.746846, -0.746973, + -0.747101, -0.747228, -0.747355, -0.747483, -0.747610, -0.747738, -0.747865, -0.747992, + -0.748119, -0.748247, -0.748374, -0.748501, -0.748628, -0.748755, -0.748882, -0.749009, + -0.749136, -0.749263, -0.749390, -0.749517, -0.749644, -0.749771, -0.749898, -0.750025, + -0.750152, -0.750278, -0.750405, -0.750532, -0.750659, -0.750785, -0.750912, -0.751039, + -0.751165, -0.751292, -0.751418, -0.751545, -0.751671, -0.751798, -0.751924, -0.752050, + -0.752177, -0.752303, -0.752429, -0.752556, -0.752682, -0.752808, -0.752934, -0.753061, + -0.753187, -0.753313, -0.753439, -0.753565, -0.753691, -0.753817, -0.753943, -0.754069, + -0.754195, -0.754321, -0.754447, -0.754573, -0.754698, -0.754824, -0.754950, -0.755076, + -0.755201, -0.755327, -0.755453, -0.755578, -0.755704, -0.755829, -0.755955, -0.756081, + -0.756206, -0.756331, -0.756457, -0.756582, -0.756708, -0.756833, -0.756958, -0.757084, + -0.757209, -0.757334, -0.757459, -0.757584, -0.757710, -0.757835, -0.757960, -0.758085, + -0.758210, -0.758335, -0.758460, -0.758585, -0.758710, -0.758835, -0.758960, -0.759084, + -0.759209, -0.759334, -0.759459, -0.759583, -0.759708, -0.759833, -0.759957, -0.760082, + -0.760207, -0.760331, -0.760456, -0.760580, -0.760705, -0.760829, -0.760954, -0.761078, + -0.761202, -0.761327, -0.761451, -0.761575, -0.761700, -0.761824, -0.761948, -0.762072, + -0.762196, -0.762320, -0.762444, -0.762569, -0.762693, -0.762817, -0.762941, -0.763065, + -0.763188, -0.763312, -0.763436, -0.763560, -0.763684, -0.763808, -0.763931, -0.764055, + -0.764179, -0.764302, -0.764426, -0.764550, -0.764673, -0.764797, -0.764920, -0.765044, + -0.765167, -0.765291, -0.765414, -0.765538, -0.765661, -0.765784, -0.765907, -0.766031, + -0.766154, -0.766277, -0.766400, -0.766524, -0.766647, -0.766770, -0.766893, -0.767016, + -0.767139, -0.767262, -0.767385, -0.767508, -0.767631, -0.767754, -0.767876, -0.767999, + -0.768122, -0.768245, -0.768368, -0.768490, -0.768613, -0.768736, -0.768858, -0.768981, + -0.769103, -0.769226, -0.769348, -0.769471, -0.769593, -0.769716, -0.769838, -0.769961, + -0.770083, -0.770205, -0.770327, -0.770450, -0.770572, -0.770694, -0.770816, -0.770938, + -0.771061, -0.771183, -0.771305, -0.771427, -0.771549, -0.771671, -0.771793, -0.771915, + -0.772036, -0.772158, -0.772280, -0.772402, -0.772524, -0.772645, -0.772767, -0.772889, + -0.773010, -0.773132, -0.773254, -0.773375, -0.773497, -0.773618, -0.773740, -0.773861, + -0.773983, -0.774104, -0.774225, -0.774347, -0.774468, -0.774589, -0.774711, -0.774832, + -0.774953, -0.775074, -0.775195, -0.775317, -0.775438, -0.775559, -0.775680, -0.775801, + -0.775922, -0.776043, -0.776164, -0.776284, -0.776405, -0.776526, -0.776647, -0.776768, + -0.776888, -0.777009, -0.777130, -0.777251, -0.777371, -0.777492, -0.777612, -0.777733, + -0.777853, -0.777974, -0.778094, -0.778215, -0.778335, -0.778456, -0.778576, -0.778696, + -0.778817, -0.778937, -0.779057, -0.779177, -0.779297, -0.779418, -0.779538, -0.779658, + -0.779778, -0.779898, -0.780018, -0.780138, -0.780258, -0.780378, -0.780498, -0.780617, + -0.780737, -0.780857, -0.780977, -0.781097, -0.781216, -0.781336, -0.781456, -0.781575, + -0.781695, -0.781814, -0.781934, -0.782053, -0.782173, -0.782292, -0.782412, -0.782531, + -0.782651, -0.782770, -0.782889, -0.783009, -0.783128, -0.783247, -0.783366, -0.783485, + -0.783605, -0.783724, -0.783843, -0.783962, -0.784081, -0.784200, -0.784319, -0.784438, + -0.784557, -0.784675, -0.784794, -0.784913, -0.785032, -0.785151, -0.785269, -0.785388, + -0.785507, -0.785625, -0.785744, -0.785863, -0.785981, -0.786100, -0.786218, -0.786337, + -0.786455, -0.786574, -0.786692, -0.786810, -0.786929, -0.787047, -0.787165, -0.787284, + -0.787402, -0.787520, -0.787638, -0.787756, -0.787874, -0.787992, -0.788110, -0.788228, + -0.788346, -0.788464, -0.788582, -0.788700, -0.788818, -0.788936, -0.789054, -0.789172, + -0.789289, -0.789407, -0.789525, -0.789642, -0.789760, -0.789878, -0.789995, -0.790113, + -0.790230, -0.790348, -0.790465, -0.790583, -0.790700, -0.790817, -0.790935, -0.791052, + -0.791169, -0.791287, -0.791404, -0.791521, -0.791638, -0.791755, -0.791872, -0.791990, + -0.792107, -0.792224, -0.792341, -0.792458, -0.792575, -0.792691, -0.792808, -0.792925, + -0.793042, -0.793159, -0.793276, -0.793392, -0.793509, -0.793626, -0.793742, -0.793859, + -0.793975, -0.794092, -0.794209, -0.794325, -0.794442, -0.794558, -0.794674, -0.794791, + -0.794907, -0.795023, -0.795140, -0.795256, -0.795372, -0.795488, -0.795605, -0.795721, + -0.795837, -0.795953, -0.796069, -0.796185, -0.796301, -0.796417, -0.796533, -0.796649, + -0.796765, -0.796881, -0.796996, -0.797112, -0.797228, -0.797344, -0.797459, -0.797575, + -0.797691, -0.797806, -0.797922, -0.798038, -0.798153, -0.798269, -0.798384, -0.798500, + -0.798615, -0.798730, -0.798846, -0.798961, -0.799076, -0.799192, -0.799307, -0.799422, + -0.799537, -0.799652, -0.799768, -0.799883, -0.799998, -0.800113, -0.800228, -0.800343, + -0.800458, -0.800573, -0.800687, -0.800802, -0.800917, -0.801032, -0.801147, -0.801261, + -0.801376, -0.801491, -0.801606, -0.801720, -0.801835, -0.801949, -0.802064, -0.802178, + -0.802293, -0.802407, -0.802522, -0.802636, -0.802750, -0.802865, -0.802979, -0.803093, + -0.803208, -0.803322, -0.803436, -0.803550, -0.803664, -0.803778, -0.803892, -0.804006, + -0.804120, -0.804234, -0.804348, -0.804462, -0.804576, -0.804690, -0.804804, -0.804918, + -0.805031, -0.805145, -0.805259, -0.805372, -0.805486, -0.805600, -0.805713, -0.805827, + -0.805940, -0.806054, -0.806167, -0.806281, -0.806394, -0.806508, -0.806621, -0.806734, + -0.806848, -0.806961, -0.807074, -0.807187, -0.807300, -0.807414, -0.807527, -0.807640, + -0.807753, -0.807866, -0.807979, -0.808092, -0.808205, -0.808318, -0.808430, -0.808543, + -0.808656, -0.808769, -0.808882, -0.808994, -0.809107, -0.809220, -0.809332, -0.809445, + -0.809558, -0.809670, -0.809783, -0.809895, -0.810008, -0.810120, -0.810232, -0.810345, + -0.810457, -0.810570, -0.810682, -0.810794, -0.810906, -0.811018, -0.811131, -0.811243, + -0.811355, -0.811467, -0.811579, -0.811691, -0.811803, -0.811915, -0.812027, -0.812139, + -0.812251, -0.812362, -0.812474, -0.812586, -0.812698, -0.812809, -0.812921, -0.813033, + -0.813144, -0.813256, -0.813368, -0.813479, -0.813591, -0.813702, -0.813814, -0.813925, + -0.814036, -0.814148, -0.814259, -0.814370, -0.814482, -0.814593, -0.814704, -0.814815, + -0.814926, -0.815037, -0.815149, -0.815260, -0.815371, -0.815482, -0.815593, -0.815704, + -0.815814, -0.815925, -0.816036, -0.816147, -0.816258, -0.816368, -0.816479, -0.816590, + -0.816701, -0.816811, -0.816922, -0.817032, -0.817143, -0.817253, -0.817364, -0.817474, + -0.817585, -0.817695, -0.817806, -0.817916, -0.818026, -0.818137, -0.818247, -0.818357, + -0.818467, -0.818577, -0.818687, -0.818798, -0.818908, -0.819018, -0.819128, -0.819238, + -0.819348, -0.819457, -0.819567, -0.819677, -0.819787, -0.819897, -0.820007, -0.820116, + -0.820226, -0.820336, -0.820445, -0.820555, -0.820664, -0.820774, -0.820884, -0.820993, + -0.821102, -0.821212, -0.821321, -0.821431, -0.821540, -0.821649, -0.821759, -0.821868, + -0.821977, -0.822086, -0.822195, -0.822305, -0.822414, -0.822523, -0.822632, -0.822741, + -0.822850, -0.822959, -0.823068, -0.823177, -0.823285, -0.823394, -0.823503, -0.823612, + -0.823721, -0.823829, -0.823938, -0.824047, -0.824155, -0.824264, -0.824372, -0.824481, + -0.824589, -0.824698, -0.824806, -0.824915, -0.825023, -0.825131, -0.825240, -0.825348, + -0.825456, -0.825564, -0.825673, -0.825781, -0.825889, -0.825997, -0.826105, -0.826213, + -0.826321, -0.826429, -0.826537, -0.826645, -0.826753, -0.826861, -0.826968, -0.827076, + -0.827184, -0.827292, -0.827399, -0.827507, -0.827615, -0.827722, -0.827830, -0.827938, + -0.828045, -0.828153, -0.828260, -0.828367, -0.828475, -0.828582, -0.828690, -0.828797, + -0.828904, -0.829011, -0.829119, -0.829226, -0.829333, -0.829440, -0.829547, -0.829654, + -0.829761, -0.829868, -0.829975, -0.830082, -0.830189, -0.830296, -0.830403, -0.830510, + -0.830616, -0.830723, -0.830830, -0.830937, -0.831043, -0.831150, -0.831257, -0.831363, + -0.831470, -0.831576, -0.831683, -0.831789, -0.831895, -0.832002, -0.832108, -0.832215, + -0.832321, -0.832427, -0.832533, -0.832640, -0.832746, -0.832852, -0.832958, -0.833064, + -0.833170, -0.833276, -0.833382, -0.833488, -0.833594, -0.833700, -0.833806, -0.833912, + -0.834018, -0.834123, -0.834229, -0.834335, -0.834440, -0.834546, -0.834652, -0.834757, + -0.834863, -0.834968, -0.835074, -0.835179, -0.835285, -0.835390, -0.835496, -0.835601, + -0.835706, -0.835812, -0.835917, -0.836022, -0.836127, -0.836232, -0.836338, -0.836443, + -0.836548, -0.836653, -0.836758, -0.836863, -0.836968, -0.837073, -0.837178, -0.837282, + -0.837387, -0.837492, -0.837597, -0.837701, -0.837806, -0.837911, -0.838015, -0.838120, + -0.838225, -0.838329, -0.838434, -0.838538, -0.838643, -0.838747, -0.838852, -0.838956, + -0.839060, -0.839165, -0.839269, -0.839373, -0.839477, -0.839581, -0.839686, -0.839790, + -0.839894, -0.839998, -0.840102, -0.840206, -0.840310, -0.840414, -0.840518, -0.840622, + -0.840725, -0.840829, -0.840933, -0.841037, -0.841140, -0.841244, -0.841348, -0.841451, + -0.841555, -0.841659, -0.841762, -0.841866, -0.841969, -0.842072, -0.842176, -0.842279, + -0.842383, -0.842486, -0.842589, -0.842692, -0.842796, -0.842899, -0.843002, -0.843105, + -0.843208, -0.843311, -0.843414, -0.843517, -0.843620, -0.843723, -0.843826, -0.843929, + -0.844032, -0.844135, -0.844238, -0.844340, -0.844443, -0.844546, -0.844648, -0.844751, + -0.844854, -0.844956, -0.845059, -0.845161, -0.845264, -0.845366, -0.845469, -0.845571, + -0.845673, -0.845776, -0.845878, -0.845980, -0.846082, -0.846185, -0.846287, -0.846389, + -0.846491, -0.846593, -0.846695, -0.846797, -0.846899, -0.847001, -0.847103, -0.847205, + -0.847307, -0.847408, -0.847510, -0.847612, -0.847714, -0.847815, -0.847917, -0.848019, + -0.848120, -0.848222, -0.848323, -0.848425, -0.848526, -0.848628, -0.848729, -0.848831, + -0.848932, -0.849033, -0.849135, -0.849236, -0.849337, -0.849438, -0.849540, -0.849641, + -0.849742, -0.849843, -0.849944, -0.850045, -0.850146, -0.850247, -0.850348, -0.850449, + -0.850549, -0.850650, -0.850751, -0.850852, -0.850953, -0.851053, -0.851154, -0.851255, + -0.851355, -0.851456, -0.851556, -0.851657, -0.851757, -0.851858, -0.851958, -0.852059, + -0.852159, -0.852259, -0.852360, -0.852460, -0.852560, -0.852660, -0.852760, -0.852861, + -0.852961, -0.853061, -0.853161, -0.853261, -0.853361, -0.853461, -0.853561, -0.853660, + -0.853760, -0.853860, -0.853960, -0.854060, -0.854159, -0.854259, -0.854359, -0.854458, + -0.854558, -0.854658, -0.854757, -0.854857, -0.854956, -0.855056, -0.855155, -0.855254, + -0.855354, -0.855453, -0.855552, -0.855651, -0.855751, -0.855850, -0.855949, -0.856048, + -0.856147, -0.856246, -0.856345, -0.856444, -0.856543, -0.856642, -0.856741, -0.856840, + -0.856939, -0.857038, -0.857137, -0.857235, -0.857334, -0.857433, -0.857531, -0.857630, + -0.857729, -0.857827, -0.857926, -0.858024, -0.858123, -0.858221, -0.858320, -0.858418, + -0.858516, -0.858615, -0.858713, -0.858811, -0.858909, -0.859007, -0.859106, -0.859204, + -0.859302, -0.859400, -0.859498, -0.859596, -0.859694, -0.859792, -0.859890, -0.859988, + -0.860085, -0.860183, -0.860281, -0.860379, -0.860476, -0.860574, -0.860672, -0.860769, + -0.860867, -0.860964, -0.861062, -0.861160, -0.861257, -0.861354, -0.861452, -0.861549, + -0.861646, -0.861744, -0.861841, -0.861938, -0.862035, -0.862133, -0.862230, -0.862327, + -0.862424, -0.862521, -0.862618, -0.862715, -0.862812, -0.862909, -0.863006, -0.863103, + -0.863199, -0.863296, -0.863393, -0.863490, -0.863586, -0.863683, -0.863780, -0.863876, + -0.863973, -0.864069, -0.864166, -0.864262, -0.864359, -0.864455, -0.864552, -0.864648, + -0.864744, -0.864841, -0.864937, -0.865033, -0.865129, -0.865225, -0.865321, -0.865418, + -0.865514, -0.865610, -0.865706, -0.865802, -0.865898, -0.865993, -0.866089, -0.866185, + -0.866281, -0.866377, -0.866472, -0.866568, -0.866664, -0.866759, -0.866855, -0.866951, + -0.867046, -0.867142, -0.867237, -0.867333, -0.867428, -0.867523, -0.867619, -0.867714, + -0.867809, -0.867905, -0.868000, -0.868095, -0.868190, -0.868285, -0.868381, -0.868476, + -0.868571, -0.868666, -0.868761, -0.868856, -0.868951, -0.869045, -0.869140, -0.869235, + -0.869330, -0.869425, -0.869519, -0.869614, -0.869709, -0.869803, -0.869898, -0.869992, + -0.870087, -0.870182, -0.870276, -0.870370, -0.870465, -0.870559, -0.870654, -0.870748, + -0.870842, -0.870936, -0.871031, -0.871125, -0.871219, -0.871313, -0.871407, -0.871501, + -0.871595, -0.871689, -0.871783, -0.871877, -0.871971, -0.872065, -0.872159, -0.872252, + -0.872346, -0.872440, -0.872534, -0.872627, -0.872721, -0.872814, -0.872908, -0.873001, + -0.873095, -0.873188, -0.873282, -0.873375, -0.873469, -0.873562, -0.873655, -0.873749, + -0.873842, -0.873935, -0.874028, -0.874121, -0.874215, -0.874308, -0.874401, -0.874494, + -0.874587, -0.874680, -0.874773, -0.874865, -0.874958, -0.875051, -0.875144, -0.875237, + -0.875329, -0.875422, -0.875515, -0.875607, -0.875700, -0.875793, -0.875885, -0.875978, + -0.876070, -0.876163, -0.876255, -0.876347, -0.876440, -0.876532, -0.876624, -0.876716, + -0.876809, -0.876901, -0.876993, -0.877085, -0.877177, -0.877269, -0.877361, -0.877453, + -0.877545, -0.877637, -0.877729, -0.877821, -0.877913, -0.878005, -0.878096, -0.878188, + -0.878280, -0.878371, -0.878463, -0.878555, -0.878646, -0.878738, -0.878829, -0.878921, + -0.879012, -0.879104, -0.879195, -0.879286, -0.879378, -0.879469, -0.879560, -0.879651, + -0.879743, -0.879834, -0.879925, -0.880016, -0.880107, -0.880198, -0.880289, -0.880380, + -0.880471, -0.880562, -0.880653, -0.880743, -0.880834, -0.880925, -0.881016, -0.881106, + -0.881197, -0.881288, -0.881378, -0.881469, -0.881559, -0.881650, -0.881740, -0.881831, + -0.881921, -0.882012, -0.882102, -0.882192, -0.882283, -0.882373, -0.882463, -0.882553, + -0.882643, -0.882733, -0.882824, -0.882914, -0.883004, -0.883094, -0.883184, -0.883273, + -0.883363, -0.883453, -0.883543, -0.883633, -0.883723, -0.883812, -0.883902, -0.883992, + -0.884081, -0.884171, -0.884260, -0.884350, -0.884439, -0.884529, -0.884618, -0.884708, + -0.884797, -0.884886, -0.884976, -0.885065, -0.885154, -0.885243, -0.885333, -0.885422, + -0.885511, -0.885600, -0.885689, -0.885778, -0.885867, -0.885956, -0.886045, -0.886134, + -0.886223, -0.886311, -0.886400, -0.886489, -0.886578, -0.886666, -0.886755, -0.886844, + -0.886932, -0.887021, -0.887109, -0.887198, -0.887286, -0.887375, -0.887463, -0.887551, + -0.887640, -0.887728, -0.887816, -0.887904, -0.887993, -0.888081, -0.888169, -0.888257, + -0.888345, -0.888433, -0.888521, -0.888609, -0.888697, -0.888785, -0.888873, -0.888961, + -0.889048, -0.889136, -0.889224, -0.889312, -0.889399, -0.889487, -0.889574, -0.889662, + -0.889750, -0.889837, -0.889925, -0.890012, -0.890099, -0.890187, -0.890274, -0.890361, + -0.890449, -0.890536, -0.890623, -0.890710, -0.890797, -0.890885, -0.890972, -0.891059, + -0.891146, -0.891233, -0.891320, -0.891407, -0.891493, -0.891580, -0.891667, -0.891754, + -0.891841, -0.891927, -0.892014, -0.892101, -0.892187, -0.892274, -0.892361, -0.892447, + -0.892534, -0.892620, -0.892706, -0.892793, -0.892879, -0.892965, -0.893052, -0.893138, + -0.893224, -0.893310, -0.893397, -0.893483, -0.893569, -0.893655, -0.893741, -0.893827, + -0.893913, -0.893999, -0.894085, -0.894171, -0.894256, -0.894342, -0.894428, -0.894514, + -0.894599, -0.894685, -0.894771, -0.894856, -0.894942, -0.895028, -0.895113, -0.895198, + -0.895284, -0.895369, -0.895455, -0.895540, -0.895625, -0.895711, -0.895796, -0.895881, + -0.895966, -0.896051, -0.896137, -0.896222, -0.896307, -0.896392, -0.896477, -0.896562, + -0.896646, -0.896731, -0.896816, -0.896901, -0.896986, -0.897071, -0.897155, -0.897240, + -0.897325, -0.897409, -0.897494, -0.897578, -0.897663, -0.897747, -0.897832, -0.897916, + -0.898001, -0.898085, -0.898169, -0.898254, -0.898338, -0.898422, -0.898506, -0.898590, + -0.898674, -0.898759, -0.898843, -0.898927, -0.899011, -0.899095, -0.899179, -0.899262, + -0.899346, -0.899430, -0.899514, -0.899598, -0.899681, -0.899765, -0.899849, -0.899932, + -0.900016, -0.900099, -0.900183, -0.900266, -0.900350, -0.900433, -0.900517, -0.900600, + -0.900683, -0.900767, -0.900850, -0.900933, -0.901016, -0.901100, -0.901183, -0.901266, + -0.901349, -0.901432, -0.901515, -0.901598, -0.901681, -0.901764, -0.901847, -0.901929, + -0.902012, -0.902095, -0.902178, -0.902260, -0.902343, -0.902426, -0.902508, -0.902591, + -0.902673, -0.902756, -0.902838, -0.902921, -0.903003, -0.903085, -0.903168, -0.903250, + -0.903332, -0.903415, -0.903497, -0.903579, -0.903661, -0.903743, -0.903825, -0.903907, + -0.903989, -0.904071, -0.904153, -0.904235, -0.904317, -0.904399, -0.904481, -0.904562, + -0.904644, -0.904726, -0.904807, -0.904889, -0.904971, -0.905052, -0.905134, -0.905215, + -0.905297, -0.905378, -0.905460, -0.905541, -0.905622, -0.905704, -0.905785, -0.905866, + -0.905947, -0.906028, -0.906110, -0.906191, -0.906272, -0.906353, -0.906434, -0.906515, + -0.906596, -0.906677, -0.906757, -0.906838, -0.906919, -0.907000, -0.907081, -0.907161, + -0.907242, -0.907323, -0.907403, -0.907484, -0.907564, -0.907645, -0.907725, -0.907806, + -0.907886, -0.907966, -0.908047, -0.908127, -0.908207, -0.908288, -0.908368, -0.908448, + -0.908528, -0.908608, -0.908688, -0.908768, -0.908848, -0.908928, -0.909008, -0.909088, + -0.909168, -0.909248, -0.909328, -0.909407, -0.909487, -0.909567, -0.909646, -0.909726, + -0.909806, -0.909885, -0.909965, -0.910044, -0.910124, -0.910203, -0.910283, -0.910362, + -0.910441, -0.910521, -0.910600, -0.910679, -0.910758, -0.910837, -0.910917, -0.910996, + -0.911075, -0.911154, -0.911233, -0.911312, -0.911391, -0.911470, -0.911548, -0.911627, + -0.911706, -0.911785, -0.911864, -0.911942, -0.912021, -0.912099, -0.912178, -0.912257, + -0.912335, -0.912414, -0.912492, -0.912571, -0.912649, -0.912727, -0.912806, -0.912884, + -0.912962, -0.913040, -0.913119, -0.913197, -0.913275, -0.913353, -0.913431, -0.913509, + -0.913587, -0.913665, -0.913743, -0.913821, -0.913899, -0.913976, -0.914054, -0.914132, + -0.914210, -0.914287, -0.914365, -0.914443, -0.914520, -0.914598, -0.914675, -0.914753, + -0.914830, -0.914908, -0.914985, -0.915062, -0.915140, -0.915217, -0.915294, -0.915372, + -0.915449, -0.915526, -0.915603, -0.915680, -0.915757, -0.915834, -0.915911, -0.915988, + -0.916065, -0.916142, -0.916219, -0.916296, -0.916372, -0.916449, -0.916526, -0.916602, + -0.916679, -0.916756, -0.916832, -0.916909, -0.916985, -0.917062, -0.917138, -0.917215, + -0.917291, -0.917367, -0.917444, -0.917520, -0.917596, -0.917672, -0.917749, -0.917825, + -0.917901, -0.917977, -0.918053, -0.918129, -0.918205, -0.918281, -0.918357, -0.918433, + -0.918508, -0.918584, -0.918660, -0.918736, -0.918811, -0.918887, -0.918963, -0.919038, + -0.919114, -0.919189, -0.919265, -0.919340, -0.919416, -0.919491, -0.919567, -0.919642, + -0.919717, -0.919792, -0.919868, -0.919943, -0.920018, -0.920093, -0.920168, -0.920243, + -0.920318, -0.920393, -0.920468, -0.920543, -0.920618, -0.920693, -0.920768, -0.920842, + -0.920917, -0.920992, -0.921067, -0.921141, -0.921216, -0.921291, -0.921365, -0.921440, + -0.921514, -0.921588, -0.921663, -0.921737, -0.921812, -0.921886, -0.921960, -0.922034, + -0.922109, -0.922183, -0.922257, -0.922331, -0.922405, -0.922479, -0.922553, -0.922627, + -0.922701, -0.922775, -0.922849, -0.922923, -0.922997, -0.923070, -0.923144, -0.923218, + -0.923291, -0.923365, -0.923439, -0.923512, -0.923586, -0.923659, -0.923733, -0.923806, + -0.923880, -0.923953, -0.924026, -0.924100, -0.924173, -0.924246, -0.924319, -0.924392, + -0.924465, -0.924539, -0.924612, -0.924685, -0.924758, -0.924831, -0.924904, -0.924976, + -0.925049, -0.925122, -0.925195, -0.925268, -0.925340, -0.925413, -0.925486, -0.925558, + -0.925631, -0.925703, -0.925776, -0.925848, -0.925921, -0.925993, -0.926066, -0.926138, + -0.926210, -0.926283, -0.926355, -0.926427, -0.926499, -0.926571, -0.926643, -0.926715, + -0.926787, -0.926859, -0.926931, -0.927003, -0.927075, -0.927147, -0.927219, -0.927291, + -0.927363, -0.927434, -0.927506, -0.927578, -0.927649, -0.927721, -0.927792, -0.927864, + -0.927935, -0.928007, -0.928078, -0.928150, -0.928221, -0.928292, -0.928364, -0.928435, + -0.928506, -0.928577, -0.928648, -0.928720, -0.928791, -0.928862, -0.928933, -0.929004, + -0.929075, -0.929146, -0.929216, -0.929287, -0.929358, -0.929429, -0.929500, -0.929570, + -0.929641, -0.929712, -0.929782, -0.929853, -0.929923, -0.929994, -0.930064, -0.930135, + -0.930205, -0.930275, -0.930346, -0.930416, -0.930486, -0.930556, -0.930627, -0.930697, + -0.930767, -0.930837, -0.930907, -0.930977, -0.931047, -0.931117, -0.931187, -0.931257, + -0.931327, -0.931397, -0.931466, -0.931536, -0.931606, -0.931675, -0.931745, -0.931815, + -0.931884, -0.931954, -0.932023, -0.932093, -0.932162, -0.932232, -0.932301, -0.932370, + -0.932440, -0.932509, -0.932578, -0.932647, -0.932716, -0.932786, -0.932855, -0.932924, + -0.932993, -0.933062, -0.933131, -0.933200, -0.933269, -0.933337, -0.933406, -0.933475, + -0.933544, -0.933612, -0.933681, -0.933750, -0.933818, -0.933887, -0.933956, -0.934024, + -0.934093, -0.934161, -0.934229, -0.934298, -0.934366, -0.934434, -0.934503, -0.934571, + -0.934639, -0.934707, -0.934775, -0.934844, -0.934912, -0.934980, -0.935048, -0.935116, + -0.935184, -0.935251, -0.935319, -0.935387, -0.935455, -0.935523, -0.935590, -0.935658, + -0.935726, -0.935793, -0.935861, -0.935928, -0.935996, -0.936063, -0.936131, -0.936198, + -0.936266, -0.936333, -0.936400, -0.936468, -0.936535, -0.936602, -0.936669, -0.936736, + -0.936803, -0.936871, -0.936938, -0.937005, -0.937072, -0.937138, -0.937205, -0.937272, + -0.937339, -0.937406, -0.937473, -0.937539, -0.937606, -0.937673, -0.937739, -0.937806, + -0.937872, -0.937939, -0.938005, -0.938072, -0.938138, -0.938205, -0.938271, -0.938337, + -0.938404, -0.938470, -0.938536, -0.938602, -0.938668, -0.938734, -0.938800, -0.938866, + -0.938932, -0.938998, -0.939064, -0.939130, -0.939196, -0.939262, -0.939328, -0.939394, + -0.939459, -0.939525, -0.939591, -0.939656, -0.939722, -0.939787, -0.939853, -0.939918, + -0.939984, -0.940049, -0.940115, -0.940180, -0.940245, -0.940310, -0.940376, -0.940441, + -0.940506, -0.940571, -0.940636, -0.940701, -0.940766, -0.940831, -0.940896, -0.940961, + -0.941026, -0.941091, -0.941156, -0.941221, -0.941285, -0.941350, -0.941415, -0.941479, + -0.941544, -0.941609, -0.941673, -0.941738, -0.941802, -0.941867, -0.941931, -0.941995, + -0.942060, -0.942124, -0.942188, -0.942253, -0.942317, -0.942381, -0.942445, -0.942509, + -0.942573, -0.942637, -0.942701, -0.942765, -0.942829, -0.942893, -0.942957, -0.943021, + -0.943084, -0.943148, -0.943212, -0.943276, -0.943339, -0.943403, -0.943466, -0.943530, + -0.943593, -0.943657, -0.943720, -0.943784, -0.943847, -0.943910, -0.943974, -0.944037, + -0.944100, -0.944163, -0.944227, -0.944290, -0.944353, -0.944416, -0.944479, -0.944542, + -0.944605, -0.944668, -0.944731, -0.944793, -0.944856, -0.944919, -0.944982, -0.945045, + -0.945107, -0.945170, -0.945232, -0.945295, -0.945358, -0.945420, -0.945482, -0.945545, + -0.945607, -0.945670, -0.945732, -0.945794, -0.945857, -0.945919, -0.945981, -0.946043, + -0.946105, -0.946167, -0.946229, -0.946291, -0.946353, -0.946415, -0.946477, -0.946539, + -0.946601, -0.946663, -0.946724, -0.946786, -0.946848, -0.946910, -0.946971, -0.947033, + -0.947094, -0.947156, -0.947217, -0.947279, -0.947340, -0.947402, -0.947463, -0.947524, + -0.947586, -0.947647, -0.947708, -0.947769, -0.947830, -0.947891, -0.947953, -0.948014, + -0.948075, -0.948136, -0.948196, -0.948257, -0.948318, -0.948379, -0.948440, -0.948501, + -0.948561, -0.948622, -0.948683, -0.948743, -0.948804, -0.948864, -0.948925, -0.948985, + -0.949046, -0.949106, -0.949167, -0.949227, -0.949287, -0.949348, -0.949408, -0.949468, + -0.949528, -0.949588, -0.949648, -0.949708, -0.949768, -0.949829, -0.949888, -0.949948, + -0.950008, -0.950068, -0.950128, -0.950188, -0.950247, -0.950307, -0.950367, -0.950426, + -0.950486, -0.950546, -0.950605, -0.950665, -0.950724, -0.950784, -0.950843, -0.950902, + -0.950962, -0.951021, -0.951080, -0.951139, -0.951199, -0.951258, -0.951317, -0.951376, + -0.951435, -0.951494, -0.951553, -0.951612, -0.951671, -0.951730, -0.951789, -0.951847, + -0.951906, -0.951965, -0.952024, -0.952082, -0.952141, -0.952199, -0.952258, -0.952317, + -0.952375, -0.952433, -0.952492, -0.952550, -0.952609, -0.952667, -0.952725, -0.952783, + -0.952842, -0.952900, -0.952958, -0.953016, -0.953074, -0.953132, -0.953190, -0.953248, + -0.953306, -0.953364, -0.953422, -0.953480, -0.953537, -0.953595, -0.953653, -0.953711, + -0.953768, -0.953826, -0.953883, -0.953941, -0.953998, -0.954056, -0.954113, -0.954171, + -0.954228, -0.954285, -0.954343, -0.954400, -0.954457, -0.954514, -0.954572, -0.954629, + -0.954686, -0.954743, -0.954800, -0.954857, -0.954914, -0.954971, -0.955028, -0.955084, + -0.955141, -0.955198, -0.955255, -0.955311, -0.955368, -0.955425, -0.955481, -0.955538, + -0.955594, -0.955651, -0.955707, -0.955764, -0.955820, -0.955876, -0.955933, -0.955989, + -0.956045, -0.956101, -0.956158, -0.956214, -0.956270, -0.956326, -0.956382, -0.956438, + -0.956494, -0.956550, -0.956606, -0.956662, -0.956717, -0.956773, -0.956829, -0.956885, + -0.956940, -0.956996, -0.957052, -0.957107, -0.957163, -0.957218, -0.957274, -0.957329, + -0.957385, -0.957440, -0.957495, -0.957550, -0.957606, -0.957661, -0.957716, -0.957771, + -0.957826, -0.957882, -0.957937, -0.957992, -0.958046, -0.958101, -0.958156, -0.958211, + -0.958266, -0.958321, -0.958376, -0.958430, -0.958485, -0.958540, -0.958594, -0.958649, + -0.958703, -0.958758, -0.958812, -0.958867, -0.958921, -0.958976, -0.959030, -0.959084, + -0.959139, -0.959193, -0.959247, -0.959301, -0.959355, -0.959409, -0.959463, -0.959518, + -0.959572, -0.959625, -0.959679, -0.959733, -0.959787, -0.959841, -0.959895, -0.959948, + -0.960002, -0.960056, -0.960109, -0.960163, -0.960217, -0.960270, -0.960324, -0.960377, + -0.960431, -0.960484, -0.960537, -0.960591, -0.960644, -0.960697, -0.960750, -0.960804, + -0.960857, -0.960910, -0.960963, -0.961016, -0.961069, -0.961122, -0.961175, -0.961228, + -0.961280, -0.961333, -0.961386, -0.961439, -0.961492, -0.961544, -0.961597, -0.961649, + -0.961702, -0.961755, -0.961807, -0.961860, -0.961912, -0.961964, -0.962017, -0.962069, + -0.962121, -0.962174, -0.962226, -0.962278, -0.962330, -0.962382, -0.962434, -0.962486, + -0.962538, -0.962590, -0.962642, -0.962694, -0.962746, -0.962798, -0.962850, -0.962902, + -0.962953, -0.963005, -0.963057, -0.963108, -0.963160, -0.963211, -0.963263, -0.963314, + -0.963366, -0.963417, -0.963469, -0.963520, -0.963571, -0.963623, -0.963674, -0.963725, + -0.963776, -0.963827, -0.963878, -0.963929, -0.963980, -0.964031, -0.964082, -0.964133, + -0.964184, -0.964235, -0.964286, -0.964336, -0.964387, -0.964438, -0.964489, -0.964539, + -0.964590, -0.964640, -0.964691, -0.964741, -0.964792, -0.964842, -0.964893, -0.964943, + -0.964993, -0.965044, -0.965094, -0.965144, -0.965194, -0.965244, -0.965294, -0.965344, + -0.965394, -0.965444, -0.965494, -0.965544, -0.965594, -0.965644, -0.965694, -0.965744, + -0.965793, -0.965843, -0.965893, -0.965942, -0.965992, -0.966042, -0.966091, -0.966141, + -0.966190, -0.966239, -0.966289, -0.966338, -0.966387, -0.966437, -0.966486, -0.966535, + -0.966584, -0.966633, -0.966683, -0.966732, -0.966781, -0.966830, -0.966879, -0.966928, + -0.966976, -0.967025, -0.967074, -0.967123, -0.967172, -0.967220, -0.967269, -0.967318, + -0.967366, -0.967415, -0.967463, -0.967512, -0.967560, -0.967609, -0.967657, -0.967706, + -0.967754, -0.967802, -0.967850, -0.967899, -0.967947, -0.967995, -0.968043, -0.968091, + -0.968139, -0.968187, -0.968235, -0.968283, -0.968331, -0.968379, -0.968427, -0.968474, + -0.968522, -0.968570, -0.968617, -0.968665, -0.968713, -0.968760, -0.968808, -0.968855, + -0.968903, -0.968950, -0.968998, -0.969045, -0.969092, -0.969140, -0.969187, -0.969234, + -0.969281, -0.969328, -0.969375, -0.969423, -0.969470, -0.969517, -0.969564, -0.969611, + -0.969657, -0.969704, -0.969751, -0.969798, -0.969845, -0.969891, -0.969938, -0.969985, + -0.970031, -0.970078, -0.970124, -0.970171, -0.970217, -0.970264, -0.970310, -0.970357, + -0.970403, -0.970449, -0.970495, -0.970542, -0.970588, -0.970634, -0.970680, -0.970726, + -0.970772, -0.970818, -0.970864, -0.970910, -0.970956, -0.971002, -0.971048, -0.971093, + -0.971139, -0.971185, -0.971231, -0.971276, -0.971322, -0.971367, -0.971413, -0.971458, + -0.971504, -0.971549, -0.971595, -0.971640, -0.971685, -0.971731, -0.971776, -0.971821, + -0.971866, -0.971911, -0.971957, -0.972002, -0.972047, -0.972092, -0.972137, -0.972182, + -0.972227, -0.972271, -0.972316, -0.972361, -0.972406, -0.972450, -0.972495, -0.972540, + -0.972584, -0.972629, -0.972673, -0.972718, -0.972762, -0.972807, -0.972851, -0.972896, + -0.972940, -0.972984, -0.973028, -0.973073, -0.973117, -0.973161, -0.973205, -0.973249, + -0.973293, -0.973337, -0.973381, -0.973425, -0.973469, -0.973513, -0.973557, -0.973601, + -0.973644, -0.973688, -0.973732, -0.973775, -0.973819, -0.973862, -0.973906, -0.973949, + -0.973993, -0.974036, -0.974080, -0.974123, -0.974166, -0.974210, -0.974253, -0.974296, + -0.974339, -0.974383, -0.974426, -0.974469, -0.974512, -0.974555, -0.974598, -0.974641, + -0.974684, -0.974726, -0.974769, -0.974812, -0.974855, -0.974897, -0.974940, -0.974983, + -0.975025, -0.975068, -0.975110, -0.975153, -0.975195, -0.975238, -0.975280, -0.975323, + -0.975365, -0.975407, -0.975449, -0.975492, -0.975534, -0.975576, -0.975618, -0.975660, + -0.975702, -0.975744, -0.975786, -0.975828, -0.975870, -0.975912, -0.975954, -0.975995, + -0.976037, -0.976079, -0.976120, -0.976162, -0.976204, -0.976245, -0.976287, -0.976328, + -0.976370, -0.976411, -0.976453, -0.976494, -0.976535, -0.976576, -0.976618, -0.976659, + -0.976700, -0.976741, -0.976782, -0.976823, -0.976864, -0.976905, -0.976946, -0.976987, + -0.977028, -0.977069, -0.977110, -0.977151, -0.977191, -0.977232, -0.977273, -0.977313, + -0.977354, -0.977394, -0.977435, -0.977475, -0.977516, -0.977556, -0.977597, -0.977637, + -0.977677, -0.977718, -0.977758, -0.977798, -0.977838, -0.977878, -0.977918, -0.977959, + -0.977998, -0.978038, -0.978078, -0.978118, -0.978158, -0.978198, -0.978238, -0.978278, + -0.978317, -0.978357, -0.978397, -0.978436, -0.978476, -0.978516, -0.978555, -0.978594, + -0.978634, -0.978673, -0.978713, -0.978752, -0.978791, -0.978831, -0.978870, -0.978909, + -0.978948, -0.978987, -0.979026, -0.979065, -0.979104, -0.979143, -0.979182, -0.979221, + -0.979260, -0.979299, -0.979338, -0.979376, -0.979415, -0.979454, -0.979493, -0.979531, + -0.979570, -0.979608, -0.979647, -0.979685, -0.979724, -0.979762, -0.979800, -0.979839, + -0.979877, -0.979915, -0.979954, -0.979992, -0.980030, -0.980068, -0.980106, -0.980144, + -0.980182, -0.980220, -0.980258, -0.980296, -0.980334, -0.980372, -0.980409, -0.980447, + -0.980485, -0.980523, -0.980560, -0.980598, -0.980635, -0.980673, -0.980710, -0.980748, + -0.980785, -0.980823, -0.980860, -0.980897, -0.980935, -0.980972, -0.981009, -0.981046, + -0.981083, -0.981120, -0.981158, -0.981195, -0.981232, -0.981269, -0.981305, -0.981342, + -0.981379, -0.981416, -0.981453, -0.981490, -0.981526, -0.981563, -0.981600, -0.981636, + -0.981673, -0.981709, -0.981746, -0.981782, -0.981819, -0.981855, -0.981891, -0.981928, + -0.981964, -0.982000, -0.982036, -0.982072, -0.982109, -0.982145, -0.982181, -0.982217, + -0.982253, -0.982289, -0.982325, -0.982360, -0.982396, -0.982432, -0.982468, -0.982504, + -0.982539, -0.982575, -0.982611, -0.982646, -0.982682, -0.982717, -0.982753, -0.982788, + -0.982824, -0.982859, -0.982894, -0.982930, -0.982965, -0.983000, -0.983035, -0.983070, + -0.983105, -0.983141, -0.983176, -0.983211, -0.983246, -0.983281, -0.983315, -0.983350, + -0.983385, -0.983420, -0.983455, -0.983489, -0.983524, -0.983559, -0.983593, -0.983628, + -0.983662, -0.983697, -0.983731, -0.983766, -0.983800, -0.983835, -0.983869, -0.983903, + -0.983937, -0.983972, -0.984006, -0.984040, -0.984074, -0.984108, -0.984142, -0.984176, + -0.984210, -0.984244, -0.984278, -0.984312, -0.984346, -0.984379, -0.984413, -0.984447, + -0.984480, -0.984514, -0.984548, -0.984581, -0.984615, -0.984648, -0.984682, -0.984715, + -0.984748, -0.984782, -0.984815, -0.984848, -0.984882, -0.984915, -0.984948, -0.984981, + -0.985014, -0.985047, -0.985080, -0.985113, -0.985146, -0.985179, -0.985212, -0.985245, + -0.985278, -0.985310, -0.985343, -0.985376, -0.985408, -0.985441, -0.985474, -0.985506, + -0.985539, -0.985571, -0.985604, -0.985636, -0.985668, -0.985701, -0.985733, -0.985765, + -0.985798, -0.985830, -0.985862, -0.985894, -0.985926, -0.985958, -0.985990, -0.986022, + -0.986054, -0.986086, -0.986118, -0.986150, -0.986181, -0.986213, -0.986245, -0.986276, + -0.986308, -0.986340, -0.986371, -0.986403, -0.986434, -0.986466, -0.986497, -0.986529, + -0.986560, -0.986591, -0.986623, -0.986654, -0.986685, -0.986716, -0.986747, -0.986778, + -0.986809, -0.986840, -0.986871, -0.986902, -0.986933, -0.986964, -0.986995, -0.987026, + -0.987057, -0.987087, -0.987118, -0.987149, -0.987179, -0.987210, -0.987240, -0.987271, + -0.987301, -0.987332, -0.987362, -0.987393, -0.987423, -0.987453, -0.987484, -0.987514, + -0.987544, -0.987574, -0.987604, -0.987634, -0.987664, -0.987694, -0.987724, -0.987754, + -0.987784, -0.987814, -0.987844, -0.987874, -0.987903, -0.987933, -0.987963, -0.987992, + -0.988022, -0.988052, -0.988081, -0.988111, -0.988140, -0.988169, -0.988199, -0.988228, + -0.988258, -0.988287, -0.988316, -0.988345, -0.988374, -0.988404, -0.988433, -0.988462, + -0.988491, -0.988520, -0.988549, -0.988578, -0.988607, -0.988635, -0.988664, -0.988693, + -0.988722, -0.988750, -0.988779, -0.988808, -0.988836, -0.988865, -0.988893, -0.988922, + -0.988950, -0.988979, -0.989007, -0.989035, -0.989064, -0.989092, -0.989120, -0.989148, + -0.989177, -0.989205, -0.989233, -0.989261, -0.989289, -0.989317, -0.989345, -0.989373, + -0.989400, -0.989428, -0.989456, -0.989484, -0.989511, -0.989539, -0.989567, -0.989594, + -0.989622, -0.989650, -0.989677, -0.989704, -0.989732, -0.989759, -0.989787, -0.989814, + -0.989841, -0.989869, -0.989896, -0.989923, -0.989950, -0.989977, -0.990004, -0.990031, + -0.990058, -0.990085, -0.990112, -0.990139, -0.990166, -0.990193, -0.990219, -0.990246, + -0.990273, -0.990299, -0.990326, -0.990353, -0.990379, -0.990406, -0.990432, -0.990459, + -0.990485, -0.990511, -0.990538, -0.990564, -0.990590, -0.990617, -0.990643, -0.990669, + -0.990695, -0.990721, -0.990747, -0.990773, -0.990799, -0.990825, -0.990851, -0.990877, + -0.990903, -0.990928, -0.990954, -0.990980, -0.991006, -0.991031, -0.991057, -0.991082, + -0.991108, -0.991133, -0.991159, -0.991184, -0.991210, -0.991235, -0.991260, -0.991286, + -0.991311, -0.991336, -0.991361, -0.991386, -0.991411, -0.991437, -0.991462, -0.991487, + -0.991511, -0.991536, -0.991561, -0.991586, -0.991611, -0.991636, -0.991660, -0.991685, + -0.991710, -0.991734, -0.991759, -0.991783, -0.991808, -0.991832, -0.991857, -0.991881, + -0.991906, -0.991930, -0.991954, -0.991979, -0.992003, -0.992027, -0.992051, -0.992075, + -0.992099, -0.992123, -0.992147, -0.992171, -0.992195, -0.992219, -0.992243, -0.992267, + -0.992291, -0.992314, -0.992338, -0.992362, -0.992385, -0.992409, -0.992433, -0.992456, + -0.992480, -0.992503, -0.992526, -0.992550, -0.992573, -0.992596, -0.992620, -0.992643, + -0.992666, -0.992689, -0.992712, -0.992736, -0.992759, -0.992782, -0.992805, -0.992828, + -0.992850, -0.992873, -0.992896, -0.992919, -0.992942, -0.992964, -0.992987, -0.993010, + -0.993032, -0.993055, -0.993077, -0.993100, -0.993122, -0.993145, -0.993167, -0.993190, + -0.993212, -0.993234, -0.993257, -0.993279, -0.993301, -0.993323, -0.993345, -0.993367, + -0.993389, -0.993411, -0.993433, -0.993455, -0.993477, -0.993499, -0.993521, -0.993542, + -0.993564, -0.993586, -0.993608, -0.993629, -0.993651, -0.993672, -0.993694, -0.993715, + -0.993737, -0.993758, -0.993779, -0.993801, -0.993822, -0.993843, -0.993865, -0.993886, + -0.993907, -0.993928, -0.993949, -0.993970, -0.993991, -0.994012, -0.994033, -0.994054, + -0.994075, -0.994096, -0.994116, -0.994137, -0.994158, -0.994179, -0.994199, -0.994220, + -0.994240, -0.994261, -0.994281, -0.994302, -0.994322, -0.994343, -0.994363, -0.994383, + -0.994404, -0.994424, -0.994444, -0.994464, -0.994484, -0.994505, -0.994525, -0.994545, + -0.994565, -0.994585, -0.994604, -0.994624, -0.994644, -0.994664, -0.994684, -0.994703, + -0.994723, -0.994743, -0.994762, -0.994782, -0.994802, -0.994821, -0.994841, -0.994860, + -0.994879, -0.994899, -0.994918, -0.994937, -0.994957, -0.994976, -0.994995, -0.995014, + -0.995033, -0.995052, -0.995071, -0.995090, -0.995109, -0.995128, -0.995147, -0.995166, + -0.995185, -0.995203, -0.995222, -0.995241, -0.995260, -0.995278, -0.995297, -0.995315, + -0.995334, -0.995352, -0.995371, -0.995389, -0.995408, -0.995426, -0.995444, -0.995463, + -0.995481, -0.995499, -0.995517, -0.995535, -0.995553, -0.995571, -0.995589, -0.995607, + -0.995625, -0.995643, -0.995661, -0.995679, -0.995697, -0.995714, -0.995732, -0.995750, + -0.995767, -0.995785, -0.995803, -0.995820, -0.995838, -0.995855, -0.995872, -0.995890, + -0.995907, -0.995925, -0.995942, -0.995959, -0.995976, -0.995993, -0.996011, -0.996028, + -0.996045, -0.996062, -0.996079, -0.996096, -0.996113, -0.996129, -0.996146, -0.996163, + -0.996180, -0.996197, -0.996213, -0.996230, -0.996247, -0.996263, -0.996280, -0.996296, + -0.996313, -0.996329, -0.996345, -0.996362, -0.996378, -0.996394, -0.996411, -0.996427, + -0.996443, -0.996459, -0.996475, -0.996491, -0.996507, -0.996523, -0.996539, -0.996555, + -0.996571, -0.996587, -0.996603, -0.996619, -0.996634, -0.996650, -0.996666, -0.996681, + -0.996697, -0.996712, -0.996728, -0.996743, -0.996759, -0.996774, -0.996790, -0.996805, + -0.996820, -0.996836, -0.996851, -0.996866, -0.996881, -0.996896, -0.996911, -0.996926, + -0.996941, -0.996956, -0.996971, -0.996986, -0.997001, -0.997016, -0.997031, -0.997045, + -0.997060, -0.997075, -0.997089, -0.997104, -0.997119, -0.997133, -0.997148, -0.997162, + -0.997176, -0.997191, -0.997205, -0.997219, -0.997234, -0.997248, -0.997262, -0.997276, + -0.997290, -0.997305, -0.997319, -0.997333, -0.997347, -0.997361, -0.997374, -0.997388, + -0.997402, -0.997416, -0.997430, -0.997443, -0.997457, -0.997471, -0.997484, -0.997498, + -0.997511, -0.997525, -0.997538, -0.997552, -0.997565, -0.997579, -0.997592, -0.997605, + -0.997618, -0.997632, -0.997645, -0.997658, -0.997671, -0.997684, -0.997697, -0.997710, + -0.997723, -0.997736, -0.997749, -0.997762, -0.997774, -0.997787, -0.997800, -0.997813, + -0.997825, -0.997838, -0.997851, -0.997863, -0.997876, -0.997888, -0.997901, -0.997913, + -0.997925, -0.997938, -0.997950, -0.997962, -0.997974, -0.997987, -0.997999, -0.998011, + -0.998023, -0.998035, -0.998047, -0.998059, -0.998071, -0.998083, -0.998094, -0.998106, + -0.998118, -0.998130, -0.998142, -0.998153, -0.998165, -0.998176, -0.998188, -0.998200, + -0.998211, -0.998222, -0.998234, -0.998245, -0.998257, -0.998268, -0.998279, -0.998290, + -0.998302, -0.998313, -0.998324, -0.998335, -0.998346, -0.998357, -0.998368, -0.998379, + -0.998390, -0.998401, -0.998411, -0.998422, -0.998433, -0.998444, -0.998454, -0.998465, + -0.998476, -0.998486, -0.998497, -0.998507, -0.998518, -0.998528, -0.998538, -0.998549, + -0.998559, -0.998569, -0.998580, -0.998590, -0.998600, -0.998610, -0.998620, -0.998630, + -0.998640, -0.998650, -0.998660, -0.998670, -0.998680, -0.998690, -0.998700, -0.998709, + -0.998719, -0.998729, -0.998738, -0.998748, -0.998758, -0.998767, -0.998777, -0.998786, + -0.998795, -0.998805, -0.998814, -0.998824, -0.998833, -0.998842, -0.998851, -0.998860, + -0.998870, -0.998879, -0.998888, -0.998897, -0.998906, -0.998915, -0.998924, -0.998932, + -0.998941, -0.998950, -0.998959, -0.998968, -0.998976, -0.998985, -0.998994, -0.999002, + -0.999011, -0.999019, -0.999028, -0.999036, -0.999044, -0.999053, -0.999061, -0.999069, + -0.999078, -0.999086, -0.999094, -0.999102, -0.999110, -0.999118, -0.999126, -0.999134, + -0.999142, -0.999150, -0.999158, -0.999166, -0.999174, -0.999182, -0.999189, -0.999197, + -0.999205, -0.999212, -0.999220, -0.999228, -0.999235, -0.999243, -0.999250, -0.999257, + -0.999265, -0.999272, -0.999279, -0.999287, -0.999294, -0.999301, -0.999308, -0.999315, + -0.999322, -0.999329, -0.999336, -0.999343, -0.999350, -0.999357, -0.999364, -0.999371, + -0.999378, -0.999384, -0.999391, -0.999398, -0.999404, -0.999411, -0.999418, -0.999424, + -0.999431, -0.999437, -0.999443, -0.999450, -0.999456, -0.999462, -0.999469, -0.999475, + -0.999481, -0.999487, -0.999493, -0.999500, -0.999506, -0.999512, -0.999518, -0.999524, + -0.999529, -0.999535, -0.999541, -0.999547, -0.999553, -0.999558, -0.999564, -0.999570, + -0.999575, -0.999581, -0.999586, -0.999592, -0.999597, -0.999603, -0.999608, -0.999614, + -0.999619, -0.999624, -0.999629, -0.999635, -0.999640, -0.999645, -0.999650, -0.999655, + -0.999660, -0.999665, -0.999670, -0.999675, -0.999680, -0.999685, -0.999689, -0.999694, + -0.999699, -0.999704, -0.999708, -0.999713, -0.999717, -0.999722, -0.999726, -0.999731, + -0.999735, -0.999740, -0.999744, -0.999748, -0.999753, -0.999757, -0.999761, -0.999765, + -0.999769, -0.999774, -0.999778, -0.999782, -0.999786, -0.999790, -0.999793, -0.999797, + -0.999801, -0.999805, -0.999809, -0.999812, -0.999816, -0.999820, -0.999823, -0.999827, + -0.999831, -0.999834, -0.999838, -0.999841, -0.999844, -0.999848, -0.999851, -0.999854, + -0.999858, -0.999861, -0.999864, -0.999867, -0.999870, -0.999873, -0.999876, -0.999879, + -0.999882, -0.999885, -0.999888, -0.999891, -0.999894, -0.999897, -0.999899, -0.999902, + -0.999905, -0.999907, -0.999910, -0.999913, -0.999915, -0.999917, -0.999920, -0.999922, + -0.999925, -0.999927, -0.999929, -0.999932, -0.999934, -0.999936, -0.999938, -0.999940, + -0.999942, -0.999944, -0.999946, -0.999948, -0.999950, -0.999952, -0.999954, -0.999956, + -0.999958, -0.999959, -0.999961, -0.999963, -0.999964, -0.999966, -0.999968, -0.999969, + -0.999971, -0.999972, -0.999973, -0.999975, -0.999976, -0.999977, -0.999979, -0.999980, + -0.999981, -0.999982, -0.999983, -0.999985, -0.999986, -0.999987, -0.999988, -0.999988, + -0.999989, -0.999990, -0.999991, -0.999992, -0.999993, -0.999993, -0.999994, -0.999995, + -0.999995, -0.999996, -0.999996, -0.999997, -0.999997, -0.999998, -0.999998, -0.999999, + -0.999999, -0.999999, -0.999999, -1.000000, -1.000000, -1.000000, -1.000000, -1.000000 +}; + +static const float sinTable65536[32768] = { + 0.000000, 0.000096, 0.000192, 0.000288, 0.000383, 0.000479, 0.000575, 0.000671, + 0.000767, 0.000863, 0.000959, 0.001055, 0.001150, 0.001246, 0.001342, 0.001438, + 0.001534, 0.001630, 0.001726, 0.001822, 0.001917, 0.002013, 0.002109, 0.002205, + 0.002301, 0.002397, 0.002493, 0.002589, 0.002684, 0.002780, 0.002876, 0.002972, + 0.003068, 0.003164, 0.003260, 0.003356, 0.003451, 0.003547, 0.003643, 0.003739, + 0.003835, 0.003931, 0.004027, 0.004123, 0.004218, 0.004314, 0.004410, 0.004506, + 0.004602, 0.004698, 0.004794, 0.004890, 0.004985, 0.005081, 0.005177, 0.005273, + 0.005369, 0.005465, 0.005561, 0.005657, 0.005752, 0.005848, 0.005944, 0.006040, + 0.006136, 0.006232, 0.006328, 0.006424, 0.006519, 0.006615, 0.006711, 0.006807, + 0.006903, 0.006999, 0.007095, 0.007190, 0.007286, 0.007382, 0.007478, 0.007574, + 0.007670, 0.007766, 0.007862, 0.007957, 0.008053, 0.008149, 0.008245, 0.008341, + 0.008437, 0.008533, 0.008629, 0.008724, 0.008820, 0.008916, 0.009012, 0.009108, + 0.009204, 0.009300, 0.009395, 0.009491, 0.009587, 0.009683, 0.009779, 0.009875, + 0.009971, 0.010067, 0.010162, 0.010258, 0.010354, 0.010450, 0.010546, 0.010642, + 0.010738, 0.010834, 0.010929, 0.011025, 0.011121, 0.011217, 0.011313, 0.011409, + 0.011505, 0.011600, 0.011696, 0.011792, 0.011888, 0.011984, 0.012080, 0.012176, + 0.012272, 0.012367, 0.012463, 0.012559, 0.012655, 0.012751, 0.012847, 0.012943, + 0.013038, 0.013134, 0.013230, 0.013326, 0.013422, 0.013518, 0.013614, 0.013710, + 0.013805, 0.013901, 0.013997, 0.014093, 0.014189, 0.014285, 0.014381, 0.014476, + 0.014572, 0.014668, 0.014764, 0.014860, 0.014956, 0.015052, 0.015147, 0.015243, + 0.015339, 0.015435, 0.015531, 0.015627, 0.015723, 0.015819, 0.015914, 0.016010, + 0.016106, 0.016202, 0.016298, 0.016394, 0.016490, 0.016585, 0.016681, 0.016777, + 0.016873, 0.016969, 0.017065, 0.017161, 0.017256, 0.017352, 0.017448, 0.017544, + 0.017640, 0.017736, 0.017832, 0.017927, 0.018023, 0.018119, 0.018215, 0.018311, + 0.018407, 0.018503, 0.018598, 0.018694, 0.018790, 0.018886, 0.018982, 0.019078, + 0.019174, 0.019269, 0.019365, 0.019461, 0.019557, 0.019653, 0.019749, 0.019845, + 0.019940, 0.020036, 0.020132, 0.020228, 0.020324, 0.020420, 0.020516, 0.020611, + 0.020707, 0.020803, 0.020899, 0.020995, 0.021091, 0.021187, 0.021282, 0.021378, + 0.021474, 0.021570, 0.021666, 0.021762, 0.021857, 0.021953, 0.022049, 0.022145, + 0.022241, 0.022337, 0.022433, 0.022528, 0.022624, 0.022720, 0.022816, 0.022912, + 0.023008, 0.023104, 0.023199, 0.023295, 0.023391, 0.023487, 0.023583, 0.023679, + 0.023774, 0.023870, 0.023966, 0.024062, 0.024158, 0.024254, 0.024350, 0.024445, + 0.024541, 0.024637, 0.024733, 0.024829, 0.024925, 0.025020, 0.025116, 0.025212, + 0.025308, 0.025404, 0.025500, 0.025596, 0.025691, 0.025787, 0.025883, 0.025979, + 0.026075, 0.026171, 0.026266, 0.026362, 0.026458, 0.026554, 0.026650, 0.026746, + 0.026841, 0.026937, 0.027033, 0.027129, 0.027225, 0.027321, 0.027416, 0.027512, + 0.027608, 0.027704, 0.027800, 0.027896, 0.027991, 0.028087, 0.028183, 0.028279, + 0.028375, 0.028471, 0.028567, 0.028662, 0.028758, 0.028854, 0.028950, 0.029046, + 0.029142, 0.029237, 0.029333, 0.029429, 0.029525, 0.029621, 0.029717, 0.029812, + 0.029908, 0.030004, 0.030100, 0.030196, 0.030291, 0.030387, 0.030483, 0.030579, + 0.030675, 0.030771, 0.030866, 0.030962, 0.031058, 0.031154, 0.031250, 0.031346, + 0.031441, 0.031537, 0.031633, 0.031729, 0.031825, 0.031921, 0.032016, 0.032112, + 0.032208, 0.032304, 0.032400, 0.032495, 0.032591, 0.032687, 0.032783, 0.032879, + 0.032975, 0.033070, 0.033166, 0.033262, 0.033358, 0.033454, 0.033550, 0.033645, + 0.033741, 0.033837, 0.033933, 0.034029, 0.034124, 0.034220, 0.034316, 0.034412, + 0.034508, 0.034604, 0.034699, 0.034795, 0.034891, 0.034987, 0.035083, 0.035178, + 0.035274, 0.035370, 0.035466, 0.035562, 0.035657, 0.035753, 0.035849, 0.035945, + 0.036041, 0.036137, 0.036232, 0.036328, 0.036424, 0.036520, 0.036616, 0.036711, + 0.036807, 0.036903, 0.036999, 0.037095, 0.037190, 0.037286, 0.037382, 0.037478, + 0.037574, 0.037669, 0.037765, 0.037861, 0.037957, 0.038053, 0.038149, 0.038244, + 0.038340, 0.038436, 0.038532, 0.038628, 0.038723, 0.038819, 0.038915, 0.039011, + 0.039107, 0.039202, 0.039298, 0.039394, 0.039490, 0.039586, 0.039681, 0.039777, + 0.039873, 0.039969, 0.040065, 0.040160, 0.040256, 0.040352, 0.040448, 0.040544, + 0.040639, 0.040735, 0.040831, 0.040927, 0.041022, 0.041118, 0.041214, 0.041310, + 0.041406, 0.041501, 0.041597, 0.041693, 0.041789, 0.041885, 0.041980, 0.042076, + 0.042172, 0.042268, 0.042364, 0.042459, 0.042555, 0.042651, 0.042747, 0.042842, + 0.042938, 0.043034, 0.043130, 0.043226, 0.043321, 0.043417, 0.043513, 0.043609, + 0.043705, 0.043800, 0.043896, 0.043992, 0.044088, 0.044183, 0.044279, 0.044375, + 0.044471, 0.044567, 0.044662, 0.044758, 0.044854, 0.044950, 0.045045, 0.045141, + 0.045237, 0.045333, 0.045429, 0.045524, 0.045620, 0.045716, 0.045812, 0.045907, + 0.046003, 0.046099, 0.046195, 0.046290, 0.046386, 0.046482, 0.046578, 0.046674, + 0.046769, 0.046865, 0.046961, 0.047057, 0.047152, 0.047248, 0.047344, 0.047440, + 0.047535, 0.047631, 0.047727, 0.047823, 0.047919, 0.048014, 0.048110, 0.048206, + 0.048302, 0.048397, 0.048493, 0.048589, 0.048685, 0.048780, 0.048876, 0.048972, + 0.049068, 0.049163, 0.049259, 0.049355, 0.049451, 0.049546, 0.049642, 0.049738, + 0.049834, 0.049929, 0.050025, 0.050121, 0.050217, 0.050312, 0.050408, 0.050504, + 0.050600, 0.050696, 0.050791, 0.050887, 0.050983, 0.051078, 0.051174, 0.051270, + 0.051366, 0.051461, 0.051557, 0.051653, 0.051749, 0.051844, 0.051940, 0.052036, + 0.052132, 0.052227, 0.052323, 0.052419, 0.052515, 0.052610, 0.052706, 0.052802, + 0.052898, 0.052993, 0.053089, 0.053185, 0.053281, 0.053376, 0.053472, 0.053568, + 0.053664, 0.053759, 0.053855, 0.053951, 0.054046, 0.054142, 0.054238, 0.054334, + 0.054429, 0.054525, 0.054621, 0.054717, 0.054812, 0.054908, 0.055004, 0.055100, + 0.055195, 0.055291, 0.055387, 0.055482, 0.055578, 0.055674, 0.055770, 0.055865, + 0.055961, 0.056057, 0.056152, 0.056248, 0.056344, 0.056440, 0.056535, 0.056631, + 0.056727, 0.056823, 0.056918, 0.057014, 0.057110, 0.057205, 0.057301, 0.057397, + 0.057493, 0.057588, 0.057684, 0.057780, 0.057875, 0.057971, 0.058067, 0.058163, + 0.058258, 0.058354, 0.058450, 0.058545, 0.058641, 0.058737, 0.058833, 0.058928, + 0.059024, 0.059120, 0.059215, 0.059311, 0.059407, 0.059502, 0.059598, 0.059694, + 0.059790, 0.059885, 0.059981, 0.060077, 0.060172, 0.060268, 0.060364, 0.060459, + 0.060555, 0.060651, 0.060747, 0.060842, 0.060938, 0.061034, 0.061129, 0.061225, + 0.061321, 0.061416, 0.061512, 0.061608, 0.061704, 0.061799, 0.061895, 0.061991, + 0.062086, 0.062182, 0.062278, 0.062373, 0.062469, 0.062565, 0.062660, 0.062756, + 0.062852, 0.062947, 0.063043, 0.063139, 0.063234, 0.063330, 0.063426, 0.063522, + 0.063617, 0.063713, 0.063809, 0.063904, 0.064000, 0.064096, 0.064191, 0.064287, + 0.064383, 0.064478, 0.064574, 0.064670, 0.064765, 0.064861, 0.064957, 0.065052, + 0.065148, 0.065244, 0.065339, 0.065435, 0.065531, 0.065626, 0.065722, 0.065818, + 0.065913, 0.066009, 0.066105, 0.066200, 0.066296, 0.066392, 0.066487, 0.066583, + 0.066679, 0.066774, 0.066870, 0.066966, 0.067061, 0.067157, 0.067253, 0.067348, + 0.067444, 0.067540, 0.067635, 0.067731, 0.067827, 0.067922, 0.068018, 0.068113, + 0.068209, 0.068305, 0.068400, 0.068496, 0.068592, 0.068687, 0.068783, 0.068879, + 0.068974, 0.069070, 0.069166, 0.069261, 0.069357, 0.069453, 0.069548, 0.069644, + 0.069739, 0.069835, 0.069931, 0.070026, 0.070122, 0.070218, 0.070313, 0.070409, + 0.070505, 0.070600, 0.070696, 0.070791, 0.070887, 0.070983, 0.071078, 0.071174, + 0.071270, 0.071365, 0.071461, 0.071557, 0.071652, 0.071748, 0.071843, 0.071939, + 0.072035, 0.072130, 0.072226, 0.072322, 0.072417, 0.072513, 0.072608, 0.072704, + 0.072800, 0.072895, 0.072991, 0.073086, 0.073182, 0.073278, 0.073373, 0.073469, + 0.073565, 0.073660, 0.073756, 0.073851, 0.073947, 0.074043, 0.074138, 0.074234, + 0.074329, 0.074425, 0.074521, 0.074616, 0.074712, 0.074807, 0.074903, 0.074999, + 0.075094, 0.075190, 0.075286, 0.075381, 0.075477, 0.075572, 0.075668, 0.075764, + 0.075859, 0.075955, 0.076050, 0.076146, 0.076241, 0.076337, 0.076433, 0.076528, + 0.076624, 0.076719, 0.076815, 0.076911, 0.077006, 0.077102, 0.077197, 0.077293, + 0.077389, 0.077484, 0.077580, 0.077675, 0.077771, 0.077866, 0.077962, 0.078058, + 0.078153, 0.078249, 0.078344, 0.078440, 0.078536, 0.078631, 0.078727, 0.078822, + 0.078918, 0.079013, 0.079109, 0.079205, 0.079300, 0.079396, 0.079491, 0.079587, + 0.079682, 0.079778, 0.079874, 0.079969, 0.080065, 0.080160, 0.080256, 0.080351, + 0.080447, 0.080543, 0.080638, 0.080734, 0.080829, 0.080925, 0.081020, 0.081116, + 0.081211, 0.081307, 0.081403, 0.081498, 0.081594, 0.081689, 0.081785, 0.081880, + 0.081976, 0.082071, 0.082167, 0.082263, 0.082358, 0.082454, 0.082549, 0.082645, + 0.082740, 0.082836, 0.082931, 0.083027, 0.083122, 0.083218, 0.083314, 0.083409, + 0.083505, 0.083600, 0.083696, 0.083791, 0.083887, 0.083982, 0.084078, 0.084173, + 0.084269, 0.084364, 0.084460, 0.084555, 0.084651, 0.084747, 0.084842, 0.084938, + 0.085033, 0.085129, 0.085224, 0.085320, 0.085415, 0.085511, 0.085606, 0.085702, + 0.085797, 0.085893, 0.085988, 0.086084, 0.086179, 0.086275, 0.086370, 0.086466, + 0.086561, 0.086657, 0.086752, 0.086848, 0.086943, 0.087039, 0.087135, 0.087230, + 0.087326, 0.087421, 0.087517, 0.087612, 0.087708, 0.087803, 0.087899, 0.087994, + 0.088090, 0.088185, 0.088281, 0.088376, 0.088472, 0.088567, 0.088663, 0.088758, + 0.088854, 0.088949, 0.089045, 0.089140, 0.089236, 0.089331, 0.089427, 0.089522, + 0.089617, 0.089713, 0.089808, 0.089904, 0.089999, 0.090095, 0.090190, 0.090286, + 0.090381, 0.090477, 0.090572, 0.090668, 0.090763, 0.090859, 0.090954, 0.091050, + 0.091145, 0.091241, 0.091336, 0.091432, 0.091527, 0.091623, 0.091718, 0.091813, + 0.091909, 0.092004, 0.092100, 0.092195, 0.092291, 0.092386, 0.092482, 0.092577, + 0.092673, 0.092768, 0.092864, 0.092959, 0.093055, 0.093150, 0.093245, 0.093341, + 0.093436, 0.093532, 0.093627, 0.093723, 0.093818, 0.093914, 0.094009, 0.094104, + 0.094200, 0.094295, 0.094391, 0.094486, 0.094582, 0.094677, 0.094773, 0.094868, + 0.094963, 0.095059, 0.095154, 0.095250, 0.095345, 0.095441, 0.095536, 0.095632, + 0.095727, 0.095822, 0.095918, 0.096013, 0.096109, 0.096204, 0.096300, 0.096395, + 0.096490, 0.096586, 0.096681, 0.096777, 0.096872, 0.096968, 0.097063, 0.097158, + 0.097254, 0.097349, 0.097445, 0.097540, 0.097635, 0.097731, 0.097826, 0.097922, + 0.098017, 0.098113, 0.098208, 0.098303, 0.098399, 0.098494, 0.098590, 0.098685, + 0.098780, 0.098876, 0.098971, 0.099067, 0.099162, 0.099257, 0.099353, 0.099448, + 0.099544, 0.099639, 0.099734, 0.099830, 0.099925, 0.100021, 0.100116, 0.100211, + 0.100307, 0.100402, 0.100498, 0.100593, 0.100688, 0.100784, 0.100879, 0.100974, + 0.101070, 0.101165, 0.101261, 0.101356, 0.101451, 0.101547, 0.101642, 0.101738, + 0.101833, 0.101928, 0.102024, 0.102119, 0.102214, 0.102310, 0.102405, 0.102500, + 0.102596, 0.102691, 0.102787, 0.102882, 0.102977, 0.103073, 0.103168, 0.103263, + 0.103359, 0.103454, 0.103550, 0.103645, 0.103740, 0.103836, 0.103931, 0.104026, + 0.104122, 0.104217, 0.104312, 0.104408, 0.104503, 0.104598, 0.104694, 0.104789, + 0.104884, 0.104980, 0.105075, 0.105170, 0.105266, 0.105361, 0.105456, 0.105552, + 0.105647, 0.105742, 0.105838, 0.105933, 0.106028, 0.106124, 0.106219, 0.106314, + 0.106410, 0.106505, 0.106600, 0.106696, 0.106791, 0.106886, 0.106982, 0.107077, + 0.107172, 0.107268, 0.107363, 0.107458, 0.107554, 0.107649, 0.107744, 0.107840, + 0.107935, 0.108030, 0.108126, 0.108221, 0.108316, 0.108412, 0.108507, 0.108602, + 0.108697, 0.108793, 0.108888, 0.108983, 0.109079, 0.109174, 0.109269, 0.109365, + 0.109460, 0.109555, 0.109650, 0.109746, 0.109841, 0.109936, 0.110032, 0.110127, + 0.110222, 0.110317, 0.110413, 0.110508, 0.110603, 0.110699, 0.110794, 0.110889, + 0.110984, 0.111080, 0.111175, 0.111270, 0.111366, 0.111461, 0.111556, 0.111651, + 0.111747, 0.111842, 0.111937, 0.112033, 0.112128, 0.112223, 0.112318, 0.112414, + 0.112509, 0.112604, 0.112699, 0.112795, 0.112890, 0.112985, 0.113080, 0.113176, + 0.113271, 0.113366, 0.113461, 0.113557, 0.113652, 0.113747, 0.113842, 0.113938, + 0.114033, 0.114128, 0.114223, 0.114319, 0.114414, 0.114509, 0.114604, 0.114700, + 0.114795, 0.114890, 0.114985, 0.115081, 0.115176, 0.115271, 0.115366, 0.115462, + 0.115557, 0.115652, 0.115747, 0.115842, 0.115938, 0.116033, 0.116128, 0.116223, + 0.116319, 0.116414, 0.116509, 0.116604, 0.116700, 0.116795, 0.116890, 0.116985, + 0.117080, 0.117176, 0.117271, 0.117366, 0.117461, 0.117556, 0.117652, 0.117747, + 0.117842, 0.117937, 0.118032, 0.118128, 0.118223, 0.118318, 0.118413, 0.118508, + 0.118604, 0.118699, 0.118794, 0.118889, 0.118984, 0.119080, 0.119175, 0.119270, + 0.119365, 0.119460, 0.119556, 0.119651, 0.119746, 0.119841, 0.119936, 0.120032, + 0.120127, 0.120222, 0.120317, 0.120412, 0.120507, 0.120603, 0.120698, 0.120793, + 0.120888, 0.120983, 0.121078, 0.121174, 0.121269, 0.121364, 0.121459, 0.121554, + 0.121649, 0.121745, 0.121840, 0.121935, 0.122030, 0.122125, 0.122220, 0.122316, + 0.122411, 0.122506, 0.122601, 0.122696, 0.122791, 0.122886, 0.122982, 0.123077, + 0.123172, 0.123267, 0.123362, 0.123457, 0.123552, 0.123648, 0.123743, 0.123838, + 0.123933, 0.124028, 0.124123, 0.124218, 0.124314, 0.124409, 0.124504, 0.124599, + 0.124694, 0.124789, 0.124884, 0.124979, 0.125075, 0.125170, 0.125265, 0.125360, + 0.125455, 0.125550, 0.125645, 0.125740, 0.125835, 0.125931, 0.126026, 0.126121, + 0.126216, 0.126311, 0.126406, 0.126501, 0.126596, 0.126691, 0.126787, 0.126882, + 0.126977, 0.127072, 0.127167, 0.127262, 0.127357, 0.127452, 0.127547, 0.127642, + 0.127737, 0.127833, 0.127928, 0.128023, 0.128118, 0.128213, 0.128308, 0.128403, + 0.128498, 0.128593, 0.128688, 0.128783, 0.128878, 0.128973, 0.129069, 0.129164, + 0.129259, 0.129354, 0.129449, 0.129544, 0.129639, 0.129734, 0.129829, 0.129924, + 0.130019, 0.130114, 0.130209, 0.130304, 0.130399, 0.130495, 0.130590, 0.130685, + 0.130780, 0.130875, 0.130970, 0.131065, 0.131160, 0.131255, 0.131350, 0.131445, + 0.131540, 0.131635, 0.131730, 0.131825, 0.131920, 0.132015, 0.132110, 0.132205, + 0.132300, 0.132395, 0.132490, 0.132585, 0.132680, 0.132775, 0.132870, 0.132966, + 0.133061, 0.133156, 0.133251, 0.133346, 0.133441, 0.133536, 0.133631, 0.133726, + 0.133821, 0.133916, 0.134011, 0.134106, 0.134201, 0.134296, 0.134391, 0.134486, + 0.134581, 0.134676, 0.134771, 0.134866, 0.134961, 0.135056, 0.135151, 0.135246, + 0.135341, 0.135436, 0.135531, 0.135626, 0.135721, 0.135816, 0.135911, 0.136006, + 0.136101, 0.136196, 0.136291, 0.136386, 0.136480, 0.136575, 0.136670, 0.136765, + 0.136860, 0.136955, 0.137050, 0.137145, 0.137240, 0.137335, 0.137430, 0.137525, + 0.137620, 0.137715, 0.137810, 0.137905, 0.138000, 0.138095, 0.138190, 0.138285, + 0.138380, 0.138475, 0.138570, 0.138665, 0.138760, 0.138855, 0.138949, 0.139044, + 0.139139, 0.139234, 0.139329, 0.139424, 0.139519, 0.139614, 0.139709, 0.139804, + 0.139899, 0.139994, 0.140089, 0.140184, 0.140279, 0.140373, 0.140468, 0.140563, + 0.140658, 0.140753, 0.140848, 0.140943, 0.141038, 0.141133, 0.141228, 0.141323, + 0.141418, 0.141512, 0.141607, 0.141702, 0.141797, 0.141892, 0.141987, 0.142082, + 0.142177, 0.142272, 0.142367, 0.142461, 0.142556, 0.142651, 0.142746, 0.142841, + 0.142936, 0.143031, 0.143126, 0.143221, 0.143316, 0.143410, 0.143505, 0.143600, + 0.143695, 0.143790, 0.143885, 0.143980, 0.144075, 0.144169, 0.144264, 0.144359, + 0.144454, 0.144549, 0.144644, 0.144739, 0.144833, 0.144928, 0.145023, 0.145118, + 0.145213, 0.145308, 0.145403, 0.145497, 0.145592, 0.145687, 0.145782, 0.145877, + 0.145972, 0.146067, 0.146161, 0.146256, 0.146351, 0.146446, 0.146541, 0.146636, + 0.146730, 0.146825, 0.146920, 0.147015, 0.147110, 0.147205, 0.147299, 0.147394, + 0.147489, 0.147584, 0.147679, 0.147774, 0.147868, 0.147963, 0.148058, 0.148153, + 0.148248, 0.148342, 0.148437, 0.148532, 0.148627, 0.148722, 0.148817, 0.148911, + 0.149006, 0.149101, 0.149196, 0.149291, 0.149385, 0.149480, 0.149575, 0.149670, + 0.149765, 0.149859, 0.149954, 0.150049, 0.150144, 0.150238, 0.150333, 0.150428, + 0.150523, 0.150618, 0.150712, 0.150807, 0.150902, 0.150997, 0.151092, 0.151186, + 0.151281, 0.151376, 0.151471, 0.151565, 0.151660, 0.151755, 0.151850, 0.151944, + 0.152039, 0.152134, 0.152229, 0.152323, 0.152418, 0.152513, 0.152608, 0.152702, + 0.152797, 0.152892, 0.152987, 0.153081, 0.153176, 0.153271, 0.153366, 0.153460, + 0.153555, 0.153650, 0.153745, 0.153839, 0.153934, 0.154029, 0.154124, 0.154218, + 0.154313, 0.154408, 0.154502, 0.154597, 0.154692, 0.154787, 0.154881, 0.154976, + 0.155071, 0.155165, 0.155260, 0.155355, 0.155450, 0.155544, 0.155639, 0.155734, + 0.155828, 0.155923, 0.156018, 0.156112, 0.156207, 0.156302, 0.156397, 0.156491, + 0.156586, 0.156681, 0.156775, 0.156870, 0.156965, 0.157059, 0.157154, 0.157249, + 0.157343, 0.157438, 0.157533, 0.157627, 0.157722, 0.157817, 0.157912, 0.158006, + 0.158101, 0.158196, 0.158290, 0.158385, 0.158480, 0.158574, 0.158669, 0.158763, + 0.158858, 0.158953, 0.159047, 0.159142, 0.159237, 0.159331, 0.159426, 0.159521, + 0.159615, 0.159710, 0.159805, 0.159899, 0.159994, 0.160089, 0.160183, 0.160278, + 0.160372, 0.160467, 0.160562, 0.160656, 0.160751, 0.160846, 0.160940, 0.161035, + 0.161129, 0.161224, 0.161319, 0.161413, 0.161508, 0.161603, 0.161697, 0.161792, + 0.161886, 0.161981, 0.162076, 0.162170, 0.162265, 0.162359, 0.162454, 0.162549, + 0.162643, 0.162738, 0.162832, 0.162927, 0.163022, 0.163116, 0.163211, 0.163305, + 0.163400, 0.163495, 0.163589, 0.163684, 0.163778, 0.163873, 0.163967, 0.164062, + 0.164157, 0.164251, 0.164346, 0.164440, 0.164535, 0.164629, 0.164724, 0.164819, + 0.164913, 0.165008, 0.165102, 0.165197, 0.165291, 0.165386, 0.165480, 0.165575, + 0.165670, 0.165764, 0.165859, 0.165953, 0.166048, 0.166142, 0.166237, 0.166331, + 0.166426, 0.166520, 0.166615, 0.166710, 0.166804, 0.166899, 0.166993, 0.167088, + 0.167182, 0.167277, 0.167371, 0.167466, 0.167560, 0.167655, 0.167749, 0.167844, + 0.167938, 0.168033, 0.168127, 0.168222, 0.168316, 0.168411, 0.168505, 0.168600, + 0.168694, 0.168789, 0.168883, 0.168978, 0.169072, 0.169167, 0.169261, 0.169356, + 0.169450, 0.169545, 0.169639, 0.169734, 0.169828, 0.169923, 0.170017, 0.170112, + 0.170206, 0.170301, 0.170395, 0.170490, 0.170584, 0.170678, 0.170773, 0.170867, + 0.170962, 0.171056, 0.171151, 0.171245, 0.171340, 0.171434, 0.171529, 0.171623, + 0.171718, 0.171812, 0.171906, 0.172001, 0.172095, 0.172190, 0.172284, 0.172379, + 0.172473, 0.172568, 0.172662, 0.172756, 0.172851, 0.172945, 0.173040, 0.173134, + 0.173229, 0.173323, 0.173417, 0.173512, 0.173606, 0.173701, 0.173795, 0.173889, + 0.173984, 0.174078, 0.174173, 0.174267, 0.174362, 0.174456, 0.174550, 0.174645, + 0.174739, 0.174834, 0.174928, 0.175022, 0.175117, 0.175211, 0.175305, 0.175400, + 0.175494, 0.175589, 0.175683, 0.175777, 0.175872, 0.175966, 0.176061, 0.176155, + 0.176249, 0.176344, 0.176438, 0.176532, 0.176627, 0.176721, 0.176815, 0.176910, + 0.177004, 0.177099, 0.177193, 0.177287, 0.177382, 0.177476, 0.177570, 0.177665, + 0.177759, 0.177853, 0.177948, 0.178042, 0.178136, 0.178231, 0.178325, 0.178419, + 0.178514, 0.178608, 0.178702, 0.178797, 0.178891, 0.178985, 0.179080, 0.179174, + 0.179268, 0.179363, 0.179457, 0.179551, 0.179646, 0.179740, 0.179834, 0.179929, + 0.180023, 0.180117, 0.180212, 0.180306, 0.180400, 0.180494, 0.180589, 0.180683, + 0.180777, 0.180872, 0.180966, 0.181060, 0.181154, 0.181249, 0.181343, 0.181437, + 0.181532, 0.181626, 0.181720, 0.181814, 0.181909, 0.182003, 0.182097, 0.182192, + 0.182286, 0.182380, 0.182474, 0.182569, 0.182663, 0.182757, 0.182851, 0.182946, + 0.183040, 0.183134, 0.183228, 0.183323, 0.183417, 0.183511, 0.183605, 0.183700, + 0.183794, 0.183888, 0.183982, 0.184077, 0.184171, 0.184265, 0.184359, 0.184454, + 0.184548, 0.184642, 0.184736, 0.184830, 0.184925, 0.185019, 0.185113, 0.185207, + 0.185301, 0.185396, 0.185490, 0.185584, 0.185678, 0.185773, 0.185867, 0.185961, + 0.186055, 0.186149, 0.186244, 0.186338, 0.186432, 0.186526, 0.186620, 0.186715, + 0.186809, 0.186903, 0.186997, 0.187091, 0.187185, 0.187280, 0.187374, 0.187468, + 0.187562, 0.187656, 0.187750, 0.187845, 0.187939, 0.188033, 0.188127, 0.188221, + 0.188315, 0.188410, 0.188504, 0.188598, 0.188692, 0.188786, 0.188880, 0.188975, + 0.189069, 0.189163, 0.189257, 0.189351, 0.189445, 0.189539, 0.189634, 0.189728, + 0.189822, 0.189916, 0.190010, 0.190104, 0.190198, 0.190292, 0.190387, 0.190481, + 0.190575, 0.190669, 0.190763, 0.190857, 0.190951, 0.191045, 0.191139, 0.191234, + 0.191328, 0.191422, 0.191516, 0.191610, 0.191704, 0.191798, 0.191892, 0.191986, + 0.192080, 0.192174, 0.192269, 0.192363, 0.192457, 0.192551, 0.192645, 0.192739, + 0.192833, 0.192927, 0.193021, 0.193115, 0.193209, 0.193303, 0.193397, 0.193492, + 0.193586, 0.193680, 0.193774, 0.193868, 0.193962, 0.194056, 0.194150, 0.194244, + 0.194338, 0.194432, 0.194526, 0.194620, 0.194714, 0.194808, 0.194902, 0.194996, + 0.195090, 0.195184, 0.195278, 0.195372, 0.195466, 0.195560, 0.195654, 0.195748, + 0.195843, 0.195937, 0.196031, 0.196125, 0.196219, 0.196313, 0.196407, 0.196501, + 0.196595, 0.196689, 0.196783, 0.196877, 0.196971, 0.197065, 0.197159, 0.197253, + 0.197347, 0.197441, 0.197535, 0.197629, 0.197722, 0.197816, 0.197910, 0.198004, + 0.198098, 0.198192, 0.198286, 0.198380, 0.198474, 0.198568, 0.198662, 0.198756, + 0.198850, 0.198944, 0.199038, 0.199132, 0.199226, 0.199320, 0.199414, 0.199508, + 0.199602, 0.199696, 0.199790, 0.199884, 0.199978, 0.200071, 0.200165, 0.200259, + 0.200353, 0.200447, 0.200541, 0.200635, 0.200729, 0.200823, 0.200917, 0.201011, + 0.201105, 0.201199, 0.201292, 0.201386, 0.201480, 0.201574, 0.201668, 0.201762, + 0.201856, 0.201950, 0.202044, 0.202138, 0.202231, 0.202325, 0.202419, 0.202513, + 0.202607, 0.202701, 0.202795, 0.202889, 0.202983, 0.203076, 0.203170, 0.203264, + 0.203358, 0.203452, 0.203546, 0.203640, 0.203734, 0.203827, 0.203921, 0.204015, + 0.204109, 0.204203, 0.204297, 0.204391, 0.204484, 0.204578, 0.204672, 0.204766, + 0.204860, 0.204954, 0.205047, 0.205141, 0.205235, 0.205329, 0.205423, 0.205517, + 0.205610, 0.205704, 0.205798, 0.205892, 0.205986, 0.206080, 0.206173, 0.206267, + 0.206361, 0.206455, 0.206549, 0.206642, 0.206736, 0.206830, 0.206924, 0.207018, + 0.207111, 0.207205, 0.207299, 0.207393, 0.207487, 0.207580, 0.207674, 0.207768, + 0.207862, 0.207955, 0.208049, 0.208143, 0.208237, 0.208331, 0.208424, 0.208518, + 0.208612, 0.208706, 0.208799, 0.208893, 0.208987, 0.209081, 0.209174, 0.209268, + 0.209362, 0.209456, 0.209549, 0.209643, 0.209737, 0.209831, 0.209924, 0.210018, + 0.210112, 0.210206, 0.210299, 0.210393, 0.210487, 0.210580, 0.210674, 0.210768, + 0.210862, 0.210955, 0.211049, 0.211143, 0.211237, 0.211330, 0.211424, 0.211518, + 0.211611, 0.211705, 0.211799, 0.211892, 0.211986, 0.212080, 0.212174, 0.212267, + 0.212361, 0.212455, 0.212548, 0.212642, 0.212736, 0.212829, 0.212923, 0.213017, + 0.213110, 0.213204, 0.213298, 0.213391, 0.213485, 0.213579, 0.213672, 0.213766, + 0.213860, 0.213953, 0.214047, 0.214141, 0.214234, 0.214328, 0.214422, 0.214515, + 0.214609, 0.214702, 0.214796, 0.214890, 0.214983, 0.215077, 0.215171, 0.215264, + 0.215358, 0.215451, 0.215545, 0.215639, 0.215732, 0.215826, 0.215920, 0.216013, + 0.216107, 0.216200, 0.216294, 0.216388, 0.216481, 0.216575, 0.216668, 0.216762, + 0.216856, 0.216949, 0.217043, 0.217136, 0.217230, 0.217324, 0.217417, 0.217511, + 0.217604, 0.217698, 0.217791, 0.217885, 0.217979, 0.218072, 0.218166, 0.218259, + 0.218353, 0.218446, 0.218540, 0.218633, 0.218727, 0.218821, 0.218914, 0.219008, + 0.219101, 0.219195, 0.219288, 0.219382, 0.219475, 0.219569, 0.219662, 0.219756, + 0.219850, 0.219943, 0.220037, 0.220130, 0.220224, 0.220317, 0.220411, 0.220504, + 0.220598, 0.220691, 0.220785, 0.220878, 0.220972, 0.221065, 0.221159, 0.221252, + 0.221346, 0.221439, 0.221533, 0.221626, 0.221720, 0.221813, 0.221907, 0.222000, + 0.222094, 0.222187, 0.222281, 0.222374, 0.222468, 0.222561, 0.222654, 0.222748, + 0.222841, 0.222935, 0.223028, 0.223122, 0.223215, 0.223309, 0.223402, 0.223496, + 0.223589, 0.223682, 0.223776, 0.223869, 0.223963, 0.224056, 0.224150, 0.224243, + 0.224337, 0.224430, 0.224523, 0.224617, 0.224710, 0.224804, 0.224897, 0.224991, + 0.225084, 0.225177, 0.225271, 0.225364, 0.225458, 0.225551, 0.225644, 0.225738, + 0.225831, 0.225925, 0.226018, 0.226111, 0.226205, 0.226298, 0.226391, 0.226485, + 0.226578, 0.226672, 0.226765, 0.226858, 0.226952, 0.227045, 0.227139, 0.227232, + 0.227325, 0.227419, 0.227512, 0.227605, 0.227699, 0.227792, 0.227885, 0.227979, + 0.228072, 0.228165, 0.228259, 0.228352, 0.228445, 0.228539, 0.228632, 0.228725, + 0.228819, 0.228912, 0.229005, 0.229099, 0.229192, 0.229285, 0.229379, 0.229472, + 0.229565, 0.229659, 0.229752, 0.229845, 0.229939, 0.230032, 0.230125, 0.230218, + 0.230312, 0.230405, 0.230498, 0.230592, 0.230685, 0.230778, 0.230872, 0.230965, + 0.231058, 0.231151, 0.231245, 0.231338, 0.231431, 0.231524, 0.231618, 0.231711, + 0.231804, 0.231898, 0.231991, 0.232084, 0.232177, 0.232271, 0.232364, 0.232457, + 0.232550, 0.232644, 0.232737, 0.232830, 0.232923, 0.233017, 0.233110, 0.233203, + 0.233296, 0.233389, 0.233483, 0.233576, 0.233669, 0.233762, 0.233856, 0.233949, + 0.234042, 0.234135, 0.234228, 0.234322, 0.234415, 0.234508, 0.234601, 0.234694, + 0.234788, 0.234881, 0.234974, 0.235067, 0.235160, 0.235254, 0.235347, 0.235440, + 0.235533, 0.235626, 0.235719, 0.235813, 0.235906, 0.235999, 0.236092, 0.236185, + 0.236278, 0.236372, 0.236465, 0.236558, 0.236651, 0.236744, 0.236837, 0.236930, + 0.237024, 0.237117, 0.237210, 0.237303, 0.237396, 0.237489, 0.237582, 0.237676, + 0.237769, 0.237862, 0.237955, 0.238048, 0.238141, 0.238234, 0.238327, 0.238420, + 0.238514, 0.238607, 0.238700, 0.238793, 0.238886, 0.238979, 0.239072, 0.239165, + 0.239258, 0.239351, 0.239445, 0.239538, 0.239631, 0.239724, 0.239817, 0.239910, + 0.240003, 0.240096, 0.240189, 0.240282, 0.240375, 0.240468, 0.240561, 0.240654, + 0.240748, 0.240841, 0.240934, 0.241027, 0.241120, 0.241213, 0.241306, 0.241399, + 0.241492, 0.241585, 0.241678, 0.241771, 0.241864, 0.241957, 0.242050, 0.242143, + 0.242236, 0.242329, 0.242422, 0.242515, 0.242608, 0.242701, 0.242794, 0.242887, + 0.242980, 0.243073, 0.243166, 0.243259, 0.243352, 0.243445, 0.243538, 0.243631, + 0.243724, 0.243817, 0.243910, 0.244003, 0.244096, 0.244189, 0.244282, 0.244375, + 0.244468, 0.244561, 0.244654, 0.244747, 0.244840, 0.244933, 0.245026, 0.245119, + 0.245212, 0.245304, 0.245397, 0.245490, 0.245583, 0.245676, 0.245769, 0.245862, + 0.245955, 0.246048, 0.246141, 0.246234, 0.246327, 0.246420, 0.246513, 0.246606, + 0.246698, 0.246791, 0.246884, 0.246977, 0.247070, 0.247163, 0.247256, 0.247349, + 0.247442, 0.247535, 0.247627, 0.247720, 0.247813, 0.247906, 0.247999, 0.248092, + 0.248185, 0.248278, 0.248370, 0.248463, 0.248556, 0.248649, 0.248742, 0.248835, + 0.248928, 0.249020, 0.249113, 0.249206, 0.249299, 0.249392, 0.249485, 0.249578, + 0.249670, 0.249763, 0.249856, 0.249949, 0.250042, 0.250135, 0.250227, 0.250320, + 0.250413, 0.250506, 0.250599, 0.250691, 0.250784, 0.250877, 0.250970, 0.251063, + 0.251155, 0.251248, 0.251341, 0.251434, 0.251527, 0.251619, 0.251712, 0.251805, + 0.251898, 0.251991, 0.252083, 0.252176, 0.252269, 0.252362, 0.252454, 0.252547, + 0.252640, 0.252733, 0.252826, 0.252918, 0.253011, 0.253104, 0.253197, 0.253289, + 0.253382, 0.253475, 0.253568, 0.253660, 0.253753, 0.253846, 0.253938, 0.254031, + 0.254124, 0.254217, 0.254309, 0.254402, 0.254495, 0.254588, 0.254680, 0.254773, + 0.254866, 0.254958, 0.255051, 0.255144, 0.255236, 0.255329, 0.255422, 0.255515, + 0.255607, 0.255700, 0.255793, 0.255885, 0.255978, 0.256071, 0.256163, 0.256256, + 0.256349, 0.256441, 0.256534, 0.256627, 0.256719, 0.256812, 0.256905, 0.256997, + 0.257090, 0.257183, 0.257275, 0.257368, 0.257461, 0.257553, 0.257646, 0.257738, + 0.257831, 0.257924, 0.258016, 0.258109, 0.258202, 0.258294, 0.258387, 0.258479, + 0.258572, 0.258665, 0.258757, 0.258850, 0.258943, 0.259035, 0.259128, 0.259220, + 0.259313, 0.259405, 0.259498, 0.259591, 0.259683, 0.259776, 0.259868, 0.259961, + 0.260054, 0.260146, 0.260239, 0.260331, 0.260424, 0.260516, 0.260609, 0.260702, + 0.260794, 0.260887, 0.260979, 0.261072, 0.261164, 0.261257, 0.261349, 0.261442, + 0.261534, 0.261627, 0.261720, 0.261812, 0.261905, 0.261997, 0.262090, 0.262182, + 0.262275, 0.262367, 0.262460, 0.262552, 0.262645, 0.262737, 0.262830, 0.262922, + 0.263015, 0.263107, 0.263200, 0.263292, 0.263385, 0.263477, 0.263570, 0.263662, + 0.263755, 0.263847, 0.263940, 0.264032, 0.264125, 0.264217, 0.264309, 0.264402, + 0.264494, 0.264587, 0.264679, 0.264772, 0.264864, 0.264957, 0.265049, 0.265142, + 0.265234, 0.265326, 0.265419, 0.265511, 0.265604, 0.265696, 0.265789, 0.265881, + 0.265973, 0.266066, 0.266158, 0.266251, 0.266343, 0.266436, 0.266528, 0.266620, + 0.266713, 0.266805, 0.266898, 0.266990, 0.267082, 0.267175, 0.267267, 0.267359, + 0.267452, 0.267544, 0.267637, 0.267729, 0.267821, 0.267914, 0.268006, 0.268099, + 0.268191, 0.268283, 0.268376, 0.268468, 0.268560, 0.268653, 0.268745, 0.268837, + 0.268930, 0.269022, 0.269114, 0.269207, 0.269299, 0.269391, 0.269484, 0.269576, + 0.269668, 0.269761, 0.269853, 0.269945, 0.270038, 0.270130, 0.270222, 0.270315, + 0.270407, 0.270499, 0.270591, 0.270684, 0.270776, 0.270868, 0.270961, 0.271053, + 0.271145, 0.271237, 0.271330, 0.271422, 0.271514, 0.271607, 0.271699, 0.271791, + 0.271883, 0.271976, 0.272068, 0.272160, 0.272252, 0.272345, 0.272437, 0.272529, + 0.272621, 0.272714, 0.272806, 0.272898, 0.272990, 0.273083, 0.273175, 0.273267, + 0.273359, 0.273451, 0.273544, 0.273636, 0.273728, 0.273820, 0.273912, 0.274005, + 0.274097, 0.274189, 0.274281, 0.274374, 0.274466, 0.274558, 0.274650, 0.274742, + 0.274834, 0.274927, 0.275019, 0.275111, 0.275203, 0.275295, 0.275387, 0.275480, + 0.275572, 0.275664, 0.275756, 0.275848, 0.275940, 0.276033, 0.276125, 0.276217, + 0.276309, 0.276401, 0.276493, 0.276585, 0.276678, 0.276770, 0.276862, 0.276954, + 0.277046, 0.277138, 0.277230, 0.277322, 0.277415, 0.277507, 0.277599, 0.277691, + 0.277783, 0.277875, 0.277967, 0.278059, 0.278151, 0.278243, 0.278336, 0.278428, + 0.278520, 0.278612, 0.278704, 0.278796, 0.278888, 0.278980, 0.279072, 0.279164, + 0.279256, 0.279348, 0.279440, 0.279532, 0.279624, 0.279717, 0.279809, 0.279901, + 0.279993, 0.280085, 0.280177, 0.280269, 0.280361, 0.280453, 0.280545, 0.280637, + 0.280729, 0.280821, 0.280913, 0.281005, 0.281097, 0.281189, 0.281281, 0.281373, + 0.281465, 0.281557, 0.281649, 0.281741, 0.281833, 0.281925, 0.282017, 0.282109, + 0.282201, 0.282293, 0.282385, 0.282477, 0.282569, 0.282661, 0.282753, 0.282845, + 0.282937, 0.283029, 0.283120, 0.283212, 0.283304, 0.283396, 0.283488, 0.283580, + 0.283672, 0.283764, 0.283856, 0.283948, 0.284040, 0.284132, 0.284224, 0.284316, + 0.284408, 0.284499, 0.284591, 0.284683, 0.284775, 0.284867, 0.284959, 0.285051, + 0.285143, 0.285235, 0.285327, 0.285418, 0.285510, 0.285602, 0.285694, 0.285786, + 0.285878, 0.285970, 0.286062, 0.286153, 0.286245, 0.286337, 0.286429, 0.286521, + 0.286613, 0.286705, 0.286796, 0.286888, 0.286980, 0.287072, 0.287164, 0.287256, + 0.287347, 0.287439, 0.287531, 0.287623, 0.287715, 0.287807, 0.287898, 0.287990, + 0.288082, 0.288174, 0.288266, 0.288357, 0.288449, 0.288541, 0.288633, 0.288725, + 0.288816, 0.288908, 0.289000, 0.289092, 0.289184, 0.289275, 0.289367, 0.289459, + 0.289551, 0.289642, 0.289734, 0.289826, 0.289918, 0.290009, 0.290101, 0.290193, + 0.290285, 0.290376, 0.290468, 0.290560, 0.290652, 0.290743, 0.290835, 0.290927, + 0.291019, 0.291110, 0.291202, 0.291294, 0.291385, 0.291477, 0.291569, 0.291661, + 0.291752, 0.291844, 0.291936, 0.292027, 0.292119, 0.292211, 0.292302, 0.292394, + 0.292486, 0.292577, 0.292669, 0.292761, 0.292852, 0.292944, 0.293036, 0.293128, + 0.293219, 0.293311, 0.293402, 0.293494, 0.293586, 0.293677, 0.293769, 0.293861, + 0.293952, 0.294044, 0.294136, 0.294227, 0.294319, 0.294410, 0.294502, 0.294594, + 0.294685, 0.294777, 0.294869, 0.294960, 0.295052, 0.295143, 0.295235, 0.295327, + 0.295418, 0.295510, 0.295601, 0.295693, 0.295785, 0.295876, 0.295968, 0.296059, + 0.296151, 0.296242, 0.296334, 0.296426, 0.296517, 0.296609, 0.296700, 0.296792, + 0.296883, 0.296975, 0.297066, 0.297158, 0.297250, 0.297341, 0.297433, 0.297524, + 0.297616, 0.297707, 0.297799, 0.297890, 0.297982, 0.298073, 0.298165, 0.298256, + 0.298348, 0.298439, 0.298531, 0.298622, 0.298714, 0.298805, 0.298897, 0.298988, + 0.299080, 0.299171, 0.299263, 0.299354, 0.299446, 0.299537, 0.299629, 0.299720, + 0.299812, 0.299903, 0.299995, 0.300086, 0.300177, 0.300269, 0.300360, 0.300452, + 0.300543, 0.300635, 0.300726, 0.300818, 0.300909, 0.301000, 0.301092, 0.301183, + 0.301275, 0.301366, 0.301458, 0.301549, 0.301640, 0.301732, 0.301823, 0.301915, + 0.302006, 0.302097, 0.302189, 0.302280, 0.302372, 0.302463, 0.302554, 0.302646, + 0.302737, 0.302828, 0.302920, 0.303011, 0.303103, 0.303194, 0.303285, 0.303377, + 0.303468, 0.303559, 0.303651, 0.303742, 0.303833, 0.303925, 0.304016, 0.304107, + 0.304199, 0.304290, 0.304381, 0.304473, 0.304564, 0.304655, 0.304747, 0.304838, + 0.304929, 0.305021, 0.305112, 0.305203, 0.305294, 0.305386, 0.305477, 0.305568, + 0.305660, 0.305751, 0.305842, 0.305933, 0.306025, 0.306116, 0.306207, 0.306299, + 0.306390, 0.306481, 0.306572, 0.306664, 0.306755, 0.306846, 0.306937, 0.307029, + 0.307120, 0.307211, 0.307302, 0.307394, 0.307485, 0.307576, 0.307667, 0.307758, + 0.307850, 0.307941, 0.308032, 0.308123, 0.308214, 0.308306, 0.308397, 0.308488, + 0.308579, 0.308670, 0.308762, 0.308853, 0.308944, 0.309035, 0.309126, 0.309218, + 0.309309, 0.309400, 0.309491, 0.309582, 0.309673, 0.309765, 0.309856, 0.309947, + 0.310038, 0.310129, 0.310220, 0.310311, 0.310403, 0.310494, 0.310585, 0.310676, + 0.310767, 0.310858, 0.310949, 0.311041, 0.311132, 0.311223, 0.311314, 0.311405, + 0.311496, 0.311587, 0.311678, 0.311769, 0.311860, 0.311952, 0.312043, 0.312134, + 0.312225, 0.312316, 0.312407, 0.312498, 0.312589, 0.312680, 0.312771, 0.312862, + 0.312953, 0.313044, 0.313135, 0.313227, 0.313318, 0.313409, 0.313500, 0.313591, + 0.313682, 0.313773, 0.313864, 0.313955, 0.314046, 0.314137, 0.314228, 0.314319, + 0.314410, 0.314501, 0.314592, 0.314683, 0.314774, 0.314865, 0.314956, 0.315047, + 0.315138, 0.315229, 0.315320, 0.315411, 0.315502, 0.315593, 0.315684, 0.315775, + 0.315866, 0.315957, 0.316048, 0.316139, 0.316230, 0.316321, 0.316411, 0.316502, + 0.316593, 0.316684, 0.316775, 0.316866, 0.316957, 0.317048, 0.317139, 0.317230, + 0.317321, 0.317412, 0.317503, 0.317594, 0.317684, 0.317775, 0.317866, 0.317957, + 0.318048, 0.318139, 0.318230, 0.318321, 0.318412, 0.318503, 0.318593, 0.318684, + 0.318775, 0.318866, 0.318957, 0.319048, 0.319139, 0.319229, 0.319320, 0.319411, + 0.319502, 0.319593, 0.319684, 0.319775, 0.319865, 0.319956, 0.320047, 0.320138, + 0.320229, 0.320320, 0.320410, 0.320501, 0.320592, 0.320683, 0.320774, 0.320864, + 0.320955, 0.321046, 0.321137, 0.321228, 0.321318, 0.321409, 0.321500, 0.321591, + 0.321682, 0.321772, 0.321863, 0.321954, 0.322045, 0.322135, 0.322226, 0.322317, + 0.322408, 0.322498, 0.322589, 0.322680, 0.322771, 0.322861, 0.322952, 0.323043, + 0.323134, 0.323224, 0.323315, 0.323406, 0.323497, 0.323587, 0.323678, 0.323769, + 0.323859, 0.323950, 0.324041, 0.324131, 0.324222, 0.324313, 0.324404, 0.324494, + 0.324585, 0.324676, 0.324766, 0.324857, 0.324948, 0.325038, 0.325129, 0.325220, + 0.325310, 0.325401, 0.325492, 0.325582, 0.325673, 0.325764, 0.325854, 0.325945, + 0.326035, 0.326126, 0.326217, 0.326307, 0.326398, 0.326489, 0.326579, 0.326670, + 0.326760, 0.326851, 0.326942, 0.327032, 0.327123, 0.327213, 0.327304, 0.327395, + 0.327485, 0.327576, 0.327666, 0.327757, 0.327848, 0.327938, 0.328029, 0.328119, + 0.328210, 0.328300, 0.328391, 0.328482, 0.328572, 0.328663, 0.328753, 0.328844, + 0.328934, 0.329025, 0.329115, 0.329206, 0.329296, 0.329387, 0.329477, 0.329568, + 0.329658, 0.329749, 0.329839, 0.329930, 0.330020, 0.330111, 0.330202, 0.330292, + 0.330382, 0.330473, 0.330563, 0.330654, 0.330744, 0.330835, 0.330925, 0.331016, + 0.331106, 0.331197, 0.331287, 0.331378, 0.331468, 0.331559, 0.331649, 0.331739, + 0.331830, 0.331920, 0.332011, 0.332101, 0.332192, 0.332282, 0.332373, 0.332463, + 0.332553, 0.332644, 0.332734, 0.332825, 0.332915, 0.333005, 0.333096, 0.333186, + 0.333277, 0.333367, 0.333457, 0.333548, 0.333638, 0.333729, 0.333819, 0.333909, + 0.334000, 0.334090, 0.334180, 0.334271, 0.334361, 0.334451, 0.334542, 0.334632, + 0.334722, 0.334813, 0.334903, 0.334994, 0.335084, 0.335174, 0.335265, 0.335355, + 0.335445, 0.335535, 0.335626, 0.335716, 0.335806, 0.335897, 0.335987, 0.336077, + 0.336168, 0.336258, 0.336348, 0.336438, 0.336529, 0.336619, 0.336709, 0.336800, + 0.336890, 0.336980, 0.337070, 0.337161, 0.337251, 0.337341, 0.337431, 0.337522, + 0.337612, 0.337702, 0.337792, 0.337883, 0.337973, 0.338063, 0.338153, 0.338244, + 0.338334, 0.338424, 0.338514, 0.338604, 0.338695, 0.338785, 0.338875, 0.338965, + 0.339055, 0.339146, 0.339236, 0.339326, 0.339416, 0.339506, 0.339597, 0.339687, + 0.339777, 0.339867, 0.339957, 0.340047, 0.340138, 0.340228, 0.340318, 0.340408, + 0.340498, 0.340588, 0.340678, 0.340769, 0.340859, 0.340949, 0.341039, 0.341129, + 0.341219, 0.341309, 0.341399, 0.341490, 0.341580, 0.341670, 0.341760, 0.341850, + 0.341940, 0.342030, 0.342120, 0.342210, 0.342300, 0.342391, 0.342481, 0.342571, + 0.342661, 0.342751, 0.342841, 0.342931, 0.343021, 0.343111, 0.343201, 0.343291, + 0.343381, 0.343471, 0.343561, 0.343651, 0.343741, 0.343831, 0.343921, 0.344011, + 0.344101, 0.344191, 0.344281, 0.344371, 0.344461, 0.344551, 0.344641, 0.344731, + 0.344821, 0.344911, 0.345001, 0.345091, 0.345181, 0.345271, 0.345361, 0.345451, + 0.345541, 0.345631, 0.345721, 0.345811, 0.345901, 0.345991, 0.346081, 0.346171, + 0.346261, 0.346351, 0.346441, 0.346531, 0.346621, 0.346711, 0.346801, 0.346890, + 0.346980, 0.347070, 0.347160, 0.347250, 0.347340, 0.347430, 0.347520, 0.347610, + 0.347700, 0.347790, 0.347879, 0.347969, 0.348059, 0.348149, 0.348239, 0.348329, + 0.348419, 0.348509, 0.348598, 0.348688, 0.348778, 0.348868, 0.348958, 0.349048, + 0.349138, 0.349227, 0.349317, 0.349407, 0.349497, 0.349587, 0.349676, 0.349766, + 0.349856, 0.349946, 0.350036, 0.350126, 0.350215, 0.350305, 0.350395, 0.350485, + 0.350575, 0.350664, 0.350754, 0.350844, 0.350934, 0.351023, 0.351113, 0.351203, + 0.351293, 0.351383, 0.351472, 0.351562, 0.351652, 0.351742, 0.351831, 0.351921, + 0.352011, 0.352100, 0.352190, 0.352280, 0.352370, 0.352459, 0.352549, 0.352639, + 0.352729, 0.352818, 0.352908, 0.352998, 0.353087, 0.353177, 0.353267, 0.353356, + 0.353446, 0.353536, 0.353626, 0.353715, 0.353805, 0.353895, 0.353984, 0.354074, + 0.354164, 0.354253, 0.354343, 0.354432, 0.354522, 0.354612, 0.354701, 0.354791, + 0.354881, 0.354970, 0.355060, 0.355150, 0.355239, 0.355329, 0.355418, 0.355508, + 0.355598, 0.355687, 0.355777, 0.355866, 0.355956, 0.356046, 0.356135, 0.356225, + 0.356314, 0.356404, 0.356494, 0.356583, 0.356673, 0.356762, 0.356852, 0.356941, + 0.357031, 0.357121, 0.357210, 0.357300, 0.357389, 0.357479, 0.357568, 0.357658, + 0.357747, 0.357837, 0.357926, 0.358016, 0.358105, 0.358195, 0.358284, 0.358374, + 0.358463, 0.358553, 0.358642, 0.358732, 0.358821, 0.358911, 0.359000, 0.359090, + 0.359179, 0.359269, 0.359358, 0.359448, 0.359537, 0.359627, 0.359716, 0.359806, + 0.359895, 0.359984, 0.360074, 0.360163, 0.360253, 0.360342, 0.360432, 0.360521, + 0.360611, 0.360700, 0.360789, 0.360879, 0.360968, 0.361058, 0.361147, 0.361236, + 0.361326, 0.361415, 0.361505, 0.361594, 0.361683, 0.361773, 0.361862, 0.361952, + 0.362041, 0.362130, 0.362220, 0.362309, 0.362398, 0.362488, 0.362577, 0.362666, + 0.362756, 0.362845, 0.362934, 0.363024, 0.363113, 0.363202, 0.363292, 0.363381, + 0.363470, 0.363560, 0.363649, 0.363738, 0.363828, 0.363917, 0.364006, 0.364096, + 0.364185, 0.364274, 0.364363, 0.364453, 0.364542, 0.364631, 0.364720, 0.364810, + 0.364899, 0.364988, 0.365078, 0.365167, 0.365256, 0.365345, 0.365435, 0.365524, + 0.365613, 0.365702, 0.365791, 0.365881, 0.365970, 0.366059, 0.366148, 0.366238, + 0.366327, 0.366416, 0.366505, 0.366594, 0.366684, 0.366773, 0.366862, 0.366951, + 0.367040, 0.367130, 0.367219, 0.367308, 0.367397, 0.367486, 0.367575, 0.367665, + 0.367754, 0.367843, 0.367932, 0.368021, 0.368110, 0.368199, 0.368289, 0.368378, + 0.368467, 0.368556, 0.368645, 0.368734, 0.368823, 0.368912, 0.369002, 0.369091, + 0.369180, 0.369269, 0.369358, 0.369447, 0.369536, 0.369625, 0.369714, 0.369803, + 0.369892, 0.369982, 0.370071, 0.370160, 0.370249, 0.370338, 0.370427, 0.370516, + 0.370605, 0.370694, 0.370783, 0.370872, 0.370961, 0.371050, 0.371139, 0.371228, + 0.371317, 0.371406, 0.371495, 0.371584, 0.371673, 0.371762, 0.371851, 0.371940, + 0.372029, 0.372118, 0.372207, 0.372296, 0.372385, 0.372474, 0.372563, 0.372652, + 0.372741, 0.372830, 0.372919, 0.373008, 0.373097, 0.373186, 0.373275, 0.373364, + 0.373453, 0.373542, 0.373631, 0.373719, 0.373808, 0.373897, 0.373986, 0.374075, + 0.374164, 0.374253, 0.374342, 0.374431, 0.374520, 0.374609, 0.374697, 0.374786, + 0.374875, 0.374964, 0.375053, 0.375142, 0.375231, 0.375320, 0.375408, 0.375497, + 0.375586, 0.375675, 0.375764, 0.375853, 0.375942, 0.376030, 0.376119, 0.376208, + 0.376297, 0.376386, 0.376475, 0.376563, 0.376652, 0.376741, 0.376830, 0.376919, + 0.377007, 0.377096, 0.377185, 0.377274, 0.377363, 0.377451, 0.377540, 0.377629, + 0.377718, 0.377806, 0.377895, 0.377984, 0.378073, 0.378162, 0.378250, 0.378339, + 0.378428, 0.378516, 0.378605, 0.378694, 0.378783, 0.378871, 0.378960, 0.379049, + 0.379138, 0.379226, 0.379315, 0.379404, 0.379492, 0.379581, 0.379670, 0.379759, + 0.379847, 0.379936, 0.380025, 0.380113, 0.380202, 0.380291, 0.380379, 0.380468, + 0.380557, 0.380645, 0.380734, 0.380823, 0.380911, 0.381000, 0.381088, 0.381177, + 0.381266, 0.381354, 0.381443, 0.381532, 0.381620, 0.381709, 0.381797, 0.381886, + 0.381975, 0.382063, 0.382152, 0.382241, 0.382329, 0.382418, 0.382506, 0.382595, + 0.382683, 0.382772, 0.382861, 0.382949, 0.383038, 0.383126, 0.383215, 0.383303, + 0.383392, 0.383480, 0.383569, 0.383658, 0.383746, 0.383835, 0.383923, 0.384012, + 0.384100, 0.384189, 0.384277, 0.384366, 0.384454, 0.384543, 0.384631, 0.384720, + 0.384808, 0.384897, 0.384985, 0.385074, 0.385162, 0.385251, 0.385339, 0.385428, + 0.385516, 0.385605, 0.385693, 0.385781, 0.385870, 0.385958, 0.386047, 0.386135, + 0.386224, 0.386312, 0.386400, 0.386489, 0.386577, 0.386666, 0.386754, 0.386843, + 0.386931, 0.387019, 0.387108, 0.387196, 0.387285, 0.387373, 0.387461, 0.387550, + 0.387638, 0.387727, 0.387815, 0.387903, 0.387992, 0.388080, 0.388168, 0.388257, + 0.388345, 0.388433, 0.388522, 0.388610, 0.388698, 0.388787, 0.388875, 0.388963, + 0.389052, 0.389140, 0.389228, 0.389317, 0.389405, 0.389493, 0.389582, 0.389670, + 0.389758, 0.389846, 0.389935, 0.390023, 0.390111, 0.390200, 0.390288, 0.390376, + 0.390464, 0.390553, 0.390641, 0.390729, 0.390817, 0.390906, 0.390994, 0.391082, + 0.391170, 0.391259, 0.391347, 0.391435, 0.391523, 0.391612, 0.391700, 0.391788, + 0.391876, 0.391964, 0.392053, 0.392141, 0.392229, 0.392317, 0.392405, 0.392493, + 0.392582, 0.392670, 0.392758, 0.392846, 0.392934, 0.393023, 0.393111, 0.393199, + 0.393287, 0.393375, 0.393463, 0.393551, 0.393640, 0.393728, 0.393816, 0.393904, + 0.393992, 0.394080, 0.394168, 0.394256, 0.394344, 0.394433, 0.394521, 0.394609, + 0.394697, 0.394785, 0.394873, 0.394961, 0.395049, 0.395137, 0.395225, 0.395313, + 0.395401, 0.395490, 0.395578, 0.395666, 0.395754, 0.395842, 0.395930, 0.396018, + 0.396106, 0.396194, 0.396282, 0.396370, 0.396458, 0.396546, 0.396634, 0.396722, + 0.396810, 0.396898, 0.396986, 0.397074, 0.397162, 0.397250, 0.397338, 0.397426, + 0.397514, 0.397602, 0.397690, 0.397778, 0.397866, 0.397954, 0.398042, 0.398130, + 0.398218, 0.398306, 0.398393, 0.398481, 0.398569, 0.398657, 0.398745, 0.398833, + 0.398921, 0.399009, 0.399097, 0.399185, 0.399273, 0.399361, 0.399448, 0.399536, + 0.399624, 0.399712, 0.399800, 0.399888, 0.399976, 0.400064, 0.400151, 0.400239, + 0.400327, 0.400415, 0.400503, 0.400591, 0.400679, 0.400766, 0.400854, 0.400942, + 0.401030, 0.401118, 0.401206, 0.401293, 0.401381, 0.401469, 0.401557, 0.401645, + 0.401732, 0.401820, 0.401908, 0.401996, 0.402084, 0.402171, 0.402259, 0.402347, + 0.402435, 0.402522, 0.402610, 0.402698, 0.402786, 0.402873, 0.402961, 0.403049, + 0.403137, 0.403224, 0.403312, 0.403400, 0.403488, 0.403575, 0.403663, 0.403751, + 0.403838, 0.403926, 0.404014, 0.404102, 0.404189, 0.404277, 0.404365, 0.404452, + 0.404540, 0.404628, 0.404715, 0.404803, 0.404891, 0.404978, 0.405066, 0.405154, + 0.405241, 0.405329, 0.405417, 0.405504, 0.405592, 0.405680, 0.405767, 0.405855, + 0.405942, 0.406030, 0.406118, 0.406205, 0.406293, 0.406380, 0.406468, 0.406556, + 0.406643, 0.406731, 0.406818, 0.406906, 0.406994, 0.407081, 0.407169, 0.407256, + 0.407344, 0.407431, 0.407519, 0.407606, 0.407694, 0.407782, 0.407869, 0.407957, + 0.408044, 0.408132, 0.408219, 0.408307, 0.408394, 0.408482, 0.408569, 0.408657, + 0.408744, 0.408832, 0.408919, 0.409007, 0.409094, 0.409182, 0.409269, 0.409357, + 0.409444, 0.409532, 0.409619, 0.409707, 0.409794, 0.409881, 0.409969, 0.410056, + 0.410144, 0.410231, 0.410319, 0.410406, 0.410493, 0.410581, 0.410668, 0.410756, + 0.410843, 0.410931, 0.411018, 0.411105, 0.411193, 0.411280, 0.411368, 0.411455, + 0.411542, 0.411630, 0.411717, 0.411804, 0.411892, 0.411979, 0.412067, 0.412154, + 0.412241, 0.412329, 0.412416, 0.412503, 0.412591, 0.412678, 0.412765, 0.412853, + 0.412940, 0.413027, 0.413115, 0.413202, 0.413289, 0.413376, 0.413464, 0.413551, + 0.413638, 0.413726, 0.413813, 0.413900, 0.413987, 0.414075, 0.414162, 0.414249, + 0.414337, 0.414424, 0.414511, 0.414598, 0.414685, 0.414773, 0.414860, 0.414947, + 0.415034, 0.415122, 0.415209, 0.415296, 0.415383, 0.415471, 0.415558, 0.415645, + 0.415732, 0.415819, 0.415906, 0.415994, 0.416081, 0.416168, 0.416255, 0.416342, + 0.416430, 0.416517, 0.416604, 0.416691, 0.416778, 0.416865, 0.416952, 0.417040, + 0.417127, 0.417214, 0.417301, 0.417388, 0.417475, 0.417562, 0.417650, 0.417737, + 0.417824, 0.417911, 0.417998, 0.418085, 0.418172, 0.418259, 0.418346, 0.418433, + 0.418520, 0.418608, 0.418695, 0.418782, 0.418869, 0.418956, 0.419043, 0.419130, + 0.419217, 0.419304, 0.419391, 0.419478, 0.419565, 0.419652, 0.419739, 0.419826, + 0.419913, 0.420000, 0.420087, 0.420174, 0.420261, 0.420348, 0.420435, 0.420522, + 0.420609, 0.420696, 0.420783, 0.420870, 0.420957, 0.421044, 0.421131, 0.421218, + 0.421305, 0.421392, 0.421479, 0.421566, 0.421653, 0.421739, 0.421826, 0.421913, + 0.422000, 0.422087, 0.422174, 0.422261, 0.422348, 0.422435, 0.422522, 0.422609, + 0.422695, 0.422782, 0.422869, 0.422956, 0.423043, 0.423130, 0.423217, 0.423304, + 0.423390, 0.423477, 0.423564, 0.423651, 0.423738, 0.423825, 0.423912, 0.423998, + 0.424085, 0.424172, 0.424259, 0.424346, 0.424432, 0.424519, 0.424606, 0.424693, + 0.424780, 0.424866, 0.424953, 0.425040, 0.425127, 0.425214, 0.425300, 0.425387, + 0.425474, 0.425561, 0.425647, 0.425734, 0.425821, 0.425908, 0.425994, 0.426081, + 0.426168, 0.426255, 0.426341, 0.426428, 0.426515, 0.426601, 0.426688, 0.426775, + 0.426862, 0.426948, 0.427035, 0.427122, 0.427208, 0.427295, 0.427382, 0.427468, + 0.427555, 0.427642, 0.427728, 0.427815, 0.427902, 0.427988, 0.428075, 0.428162, + 0.428248, 0.428335, 0.428422, 0.428508, 0.428595, 0.428681, 0.428768, 0.428855, + 0.428941, 0.429028, 0.429114, 0.429201, 0.429288, 0.429374, 0.429461, 0.429547, + 0.429634, 0.429721, 0.429807, 0.429894, 0.429980, 0.430067, 0.430153, 0.430240, + 0.430326, 0.430413, 0.430500, 0.430586, 0.430673, 0.430759, 0.430846, 0.430932, + 0.431019, 0.431105, 0.431192, 0.431278, 0.431365, 0.431451, 0.431538, 0.431624, + 0.431711, 0.431797, 0.431884, 0.431970, 0.432057, 0.432143, 0.432229, 0.432316, + 0.432402, 0.432489, 0.432575, 0.432662, 0.432748, 0.432835, 0.432921, 0.433007, + 0.433094, 0.433180, 0.433267, 0.433353, 0.433439, 0.433526, 0.433612, 0.433699, + 0.433785, 0.433871, 0.433958, 0.434044, 0.434131, 0.434217, 0.434303, 0.434390, + 0.434476, 0.434562, 0.434649, 0.434735, 0.434821, 0.434908, 0.434994, 0.435080, + 0.435167, 0.435253, 0.435339, 0.435426, 0.435512, 0.435598, 0.435685, 0.435771, + 0.435857, 0.435943, 0.436030, 0.436116, 0.436202, 0.436288, 0.436375, 0.436461, + 0.436547, 0.436633, 0.436720, 0.436806, 0.436892, 0.436978, 0.437065, 0.437151, + 0.437237, 0.437323, 0.437410, 0.437496, 0.437582, 0.437668, 0.437754, 0.437841, + 0.437927, 0.438013, 0.438099, 0.438185, 0.438272, 0.438358, 0.438444, 0.438530, + 0.438616, 0.438702, 0.438789, 0.438875, 0.438961, 0.439047, 0.439133, 0.439219, + 0.439305, 0.439392, 0.439478, 0.439564, 0.439650, 0.439736, 0.439822, 0.439908, + 0.439994, 0.440080, 0.440166, 0.440253, 0.440339, 0.440425, 0.440511, 0.440597, + 0.440683, 0.440769, 0.440855, 0.440941, 0.441027, 0.441113, 0.441199, 0.441285, + 0.441371, 0.441457, 0.441543, 0.441629, 0.441715, 0.441801, 0.441887, 0.441973, + 0.442059, 0.442145, 0.442231, 0.442317, 0.442403, 0.442489, 0.442575, 0.442661, + 0.442747, 0.442833, 0.442919, 0.443005, 0.443091, 0.443177, 0.443263, 0.443349, + 0.443435, 0.443521, 0.443607, 0.443693, 0.443779, 0.443864, 0.443950, 0.444036, + 0.444122, 0.444208, 0.444294, 0.444380, 0.444466, 0.444552, 0.444637, 0.444723, + 0.444809, 0.444895, 0.444981, 0.445067, 0.445153, 0.445239, 0.445324, 0.445410, + 0.445496, 0.445582, 0.445668, 0.445754, 0.445839, 0.445925, 0.446011, 0.446097, + 0.446183, 0.446268, 0.446354, 0.446440, 0.446526, 0.446612, 0.446697, 0.446783, + 0.446869, 0.446955, 0.447040, 0.447126, 0.447212, 0.447298, 0.447383, 0.447469, + 0.447555, 0.447641, 0.447726, 0.447812, 0.447898, 0.447983, 0.448069, 0.448155, + 0.448241, 0.448326, 0.448412, 0.448498, 0.448583, 0.448669, 0.448755, 0.448840, + 0.448926, 0.449012, 0.449097, 0.449183, 0.449269, 0.449354, 0.449440, 0.449526, + 0.449611, 0.449697, 0.449783, 0.449868, 0.449954, 0.450039, 0.450125, 0.450211, + 0.450296, 0.450382, 0.450467, 0.450553, 0.450639, 0.450724, 0.450810, 0.450895, + 0.450981, 0.451067, 0.451152, 0.451238, 0.451323, 0.451409, 0.451494, 0.451580, + 0.451665, 0.451751, 0.451836, 0.451922, 0.452008, 0.452093, 0.452179, 0.452264, + 0.452350, 0.452435, 0.452521, 0.452606, 0.452692, 0.452777, 0.452863, 0.452948, + 0.453033, 0.453119, 0.453204, 0.453290, 0.453375, 0.453461, 0.453546, 0.453632, + 0.453717, 0.453803, 0.453888, 0.453973, 0.454059, 0.454144, 0.454230, 0.454315, + 0.454400, 0.454486, 0.454571, 0.454657, 0.454742, 0.454827, 0.454913, 0.454998, + 0.455084, 0.455169, 0.455254, 0.455340, 0.455425, 0.455510, 0.455596, 0.455681, + 0.455766, 0.455852, 0.455937, 0.456022, 0.456108, 0.456193, 0.456278, 0.456364, + 0.456449, 0.456534, 0.456620, 0.456705, 0.456790, 0.456875, 0.456961, 0.457046, + 0.457131, 0.457217, 0.457302, 0.457387, 0.457472, 0.457558, 0.457643, 0.457728, + 0.457813, 0.457899, 0.457984, 0.458069, 0.458154, 0.458239, 0.458325, 0.458410, + 0.458495, 0.458580, 0.458665, 0.458751, 0.458836, 0.458921, 0.459006, 0.459091, + 0.459177, 0.459262, 0.459347, 0.459432, 0.459517, 0.459602, 0.459687, 0.459773, + 0.459858, 0.459943, 0.460028, 0.460113, 0.460198, 0.460283, 0.460369, 0.460454, + 0.460539, 0.460624, 0.460709, 0.460794, 0.460879, 0.460964, 0.461049, 0.461134, + 0.461219, 0.461304, 0.461390, 0.461475, 0.461560, 0.461645, 0.461730, 0.461815, + 0.461900, 0.461985, 0.462070, 0.462155, 0.462240, 0.462325, 0.462410, 0.462495, + 0.462580, 0.462665, 0.462750, 0.462835, 0.462920, 0.463005, 0.463090, 0.463175, + 0.463260, 0.463345, 0.463430, 0.463515, 0.463600, 0.463685, 0.463769, 0.463854, + 0.463939, 0.464024, 0.464109, 0.464194, 0.464279, 0.464364, 0.464449, 0.464534, + 0.464619, 0.464704, 0.464788, 0.464873, 0.464958, 0.465043, 0.465128, 0.465213, + 0.465298, 0.465383, 0.465467, 0.465552, 0.465637, 0.465722, 0.465807, 0.465892, + 0.465977, 0.466061, 0.466146, 0.466231, 0.466316, 0.466401, 0.466485, 0.466570, + 0.466655, 0.466740, 0.466825, 0.466909, 0.466994, 0.467079, 0.467164, 0.467248, + 0.467333, 0.467418, 0.467503, 0.467587, 0.467672, 0.467757, 0.467842, 0.467926, + 0.468011, 0.468096, 0.468181, 0.468265, 0.468350, 0.468435, 0.468519, 0.468604, + 0.468689, 0.468774, 0.468858, 0.468943, 0.469028, 0.469112, 0.469197, 0.469282, + 0.469366, 0.469451, 0.469536, 0.469620, 0.469705, 0.469789, 0.469874, 0.469959, + 0.470043, 0.470128, 0.470213, 0.470297, 0.470382, 0.470466, 0.470551, 0.470636, + 0.470720, 0.470805, 0.470889, 0.470974, 0.471058, 0.471143, 0.471228, 0.471312, + 0.471397, 0.471481, 0.471566, 0.471650, 0.471735, 0.471819, 0.471904, 0.471988, + 0.472073, 0.472158, 0.472242, 0.472327, 0.472411, 0.472496, 0.472580, 0.472665, + 0.472749, 0.472834, 0.472918, 0.473002, 0.473087, 0.473171, 0.473256, 0.473340, + 0.473425, 0.473509, 0.473594, 0.473678, 0.473763, 0.473847, 0.473931, 0.474016, + 0.474100, 0.474185, 0.474269, 0.474353, 0.474438, 0.474522, 0.474607, 0.474691, + 0.474775, 0.474860, 0.474944, 0.475029, 0.475113, 0.475197, 0.475282, 0.475366, + 0.475450, 0.475535, 0.475619, 0.475703, 0.475788, 0.475872, 0.475956, 0.476041, + 0.476125, 0.476209, 0.476294, 0.476378, 0.476462, 0.476546, 0.476631, 0.476715, + 0.476799, 0.476884, 0.476968, 0.477052, 0.477136, 0.477221, 0.477305, 0.477389, + 0.477473, 0.477558, 0.477642, 0.477726, 0.477810, 0.477894, 0.477979, 0.478063, + 0.478147, 0.478231, 0.478315, 0.478400, 0.478484, 0.478568, 0.478652, 0.478736, + 0.478821, 0.478905, 0.478989, 0.479073, 0.479157, 0.479241, 0.479325, 0.479410, + 0.479494, 0.479578, 0.479662, 0.479746, 0.479830, 0.479914, 0.479998, 0.480083, + 0.480167, 0.480251, 0.480335, 0.480419, 0.480503, 0.480587, 0.480671, 0.480755, + 0.480839, 0.480923, 0.481007, 0.481091, 0.481176, 0.481260, 0.481344, 0.481428, + 0.481512, 0.481596, 0.481680, 0.481764, 0.481848, 0.481932, 0.482016, 0.482100, + 0.482184, 0.482268, 0.482352, 0.482436, 0.482520, 0.482604, 0.482688, 0.482772, + 0.482856, 0.482940, 0.483023, 0.483107, 0.483191, 0.483275, 0.483359, 0.483443, + 0.483527, 0.483611, 0.483695, 0.483779, 0.483863, 0.483947, 0.484031, 0.484114, + 0.484198, 0.484282, 0.484366, 0.484450, 0.484534, 0.484618, 0.484702, 0.484785, + 0.484869, 0.484953, 0.485037, 0.485121, 0.485205, 0.485288, 0.485372, 0.485456, + 0.485540, 0.485624, 0.485708, 0.485791, 0.485875, 0.485959, 0.486043, 0.486126, + 0.486210, 0.486294, 0.486378, 0.486462, 0.486545, 0.486629, 0.486713, 0.486797, + 0.486880, 0.486964, 0.487048, 0.487132, 0.487215, 0.487299, 0.487383, 0.487466, + 0.487550, 0.487634, 0.487718, 0.487801, 0.487885, 0.487969, 0.488052, 0.488136, + 0.488220, 0.488303, 0.488387, 0.488471, 0.488554, 0.488638, 0.488722, 0.488805, + 0.488889, 0.488973, 0.489056, 0.489140, 0.489223, 0.489307, 0.489391, 0.489474, + 0.489558, 0.489641, 0.489725, 0.489809, 0.489892, 0.489976, 0.490059, 0.490143, + 0.490226, 0.490310, 0.490394, 0.490477, 0.490561, 0.490644, 0.490728, 0.490811, + 0.490895, 0.490978, 0.491062, 0.491145, 0.491229, 0.491312, 0.491396, 0.491479, + 0.491563, 0.491646, 0.491730, 0.491813, 0.491897, 0.491980, 0.492064, 0.492147, + 0.492231, 0.492314, 0.492398, 0.492481, 0.492564, 0.492648, 0.492731, 0.492815, + 0.492898, 0.492982, 0.493065, 0.493148, 0.493232, 0.493315, 0.493399, 0.493482, + 0.493565, 0.493649, 0.493732, 0.493816, 0.493899, 0.493982, 0.494066, 0.494149, + 0.494232, 0.494316, 0.494399, 0.494482, 0.494566, 0.494649, 0.494732, 0.494816, + 0.494899, 0.494982, 0.495066, 0.495149, 0.495232, 0.495315, 0.495399, 0.495482, + 0.495565, 0.495649, 0.495732, 0.495815, 0.495898, 0.495982, 0.496065, 0.496148, + 0.496231, 0.496315, 0.496398, 0.496481, 0.496564, 0.496647, 0.496731, 0.496814, + 0.496897, 0.496980, 0.497063, 0.497147, 0.497230, 0.497313, 0.497396, 0.497479, + 0.497562, 0.497646, 0.497729, 0.497812, 0.497895, 0.497978, 0.498061, 0.498145, + 0.498228, 0.498311, 0.498394, 0.498477, 0.498560, 0.498643, 0.498726, 0.498809, + 0.498893, 0.498976, 0.499059, 0.499142, 0.499225, 0.499308, 0.499391, 0.499474, + 0.499557, 0.499640, 0.499723, 0.499806, 0.499889, 0.499972, 0.500055, 0.500138, + 0.500221, 0.500304, 0.500387, 0.500470, 0.500553, 0.500636, 0.500719, 0.500802, + 0.500885, 0.500968, 0.501051, 0.501134, 0.501217, 0.501300, 0.501383, 0.501466, + 0.501549, 0.501632, 0.501715, 0.501798, 0.501881, 0.501964, 0.502047, 0.502130, + 0.502212, 0.502295, 0.502378, 0.502461, 0.502544, 0.502627, 0.502710, 0.502793, + 0.502876, 0.502958, 0.503041, 0.503124, 0.503207, 0.503290, 0.503373, 0.503456, + 0.503538, 0.503621, 0.503704, 0.503787, 0.503870, 0.503953, 0.504035, 0.504118, + 0.504201, 0.504284, 0.504366, 0.504449, 0.504532, 0.504615, 0.504698, 0.504780, + 0.504863, 0.504946, 0.505029, 0.505111, 0.505194, 0.505277, 0.505360, 0.505442, + 0.505525, 0.505608, 0.505690, 0.505773, 0.505856, 0.505939, 0.506021, 0.506104, + 0.506187, 0.506269, 0.506352, 0.506435, 0.506517, 0.506600, 0.506683, 0.506765, + 0.506848, 0.506931, 0.507013, 0.507096, 0.507179, 0.507261, 0.507344, 0.507426, + 0.507509, 0.507592, 0.507674, 0.507757, 0.507839, 0.507922, 0.508005, 0.508087, + 0.508170, 0.508252, 0.508335, 0.508417, 0.508500, 0.508583, 0.508665, 0.508748, + 0.508830, 0.508913, 0.508995, 0.509078, 0.509160, 0.509243, 0.509325, 0.509408, + 0.509490, 0.509573, 0.509655, 0.509738, 0.509820, 0.509903, 0.509985, 0.510068, + 0.510150, 0.510233, 0.510315, 0.510397, 0.510480, 0.510562, 0.510645, 0.510727, + 0.510810, 0.510892, 0.510974, 0.511057, 0.511139, 0.511222, 0.511304, 0.511386, + 0.511469, 0.511551, 0.511634, 0.511716, 0.511798, 0.511881, 0.511963, 0.512045, + 0.512128, 0.512210, 0.512292, 0.512375, 0.512457, 0.512539, 0.512622, 0.512704, + 0.512786, 0.512869, 0.512951, 0.513033, 0.513116, 0.513198, 0.513280, 0.513362, + 0.513445, 0.513527, 0.513609, 0.513692, 0.513774, 0.513856, 0.513938, 0.514021, + 0.514103, 0.514185, 0.514267, 0.514349, 0.514432, 0.514514, 0.514596, 0.514678, + 0.514760, 0.514843, 0.514925, 0.515007, 0.515089, 0.515171, 0.515254, 0.515336, + 0.515418, 0.515500, 0.515582, 0.515664, 0.515746, 0.515829, 0.515911, 0.515993, + 0.516075, 0.516157, 0.516239, 0.516321, 0.516403, 0.516486, 0.516568, 0.516650, + 0.516732, 0.516814, 0.516896, 0.516978, 0.517060, 0.517142, 0.517224, 0.517306, + 0.517388, 0.517470, 0.517552, 0.517634, 0.517716, 0.517798, 0.517880, 0.517963, + 0.518045, 0.518126, 0.518209, 0.518291, 0.518372, 0.518454, 0.518536, 0.518618, + 0.518700, 0.518782, 0.518864, 0.518946, 0.519028, 0.519110, 0.519192, 0.519274, + 0.519356, 0.519438, 0.519520, 0.519602, 0.519684, 0.519766, 0.519848, 0.519929, + 0.520011, 0.520093, 0.520175, 0.520257, 0.520339, 0.520421, 0.520503, 0.520584, + 0.520666, 0.520748, 0.520830, 0.520912, 0.520994, 0.521075, 0.521157, 0.521239, + 0.521321, 0.521403, 0.521485, 0.521566, 0.521648, 0.521730, 0.521812, 0.521894, + 0.521975, 0.522057, 0.522139, 0.522221, 0.522302, 0.522384, 0.522466, 0.522548, + 0.522629, 0.522711, 0.522793, 0.522875, 0.522956, 0.523038, 0.523120, 0.523201, + 0.523283, 0.523365, 0.523447, 0.523528, 0.523610, 0.523692, 0.523773, 0.523855, + 0.523937, 0.524018, 0.524100, 0.524181, 0.524263, 0.524345, 0.524426, 0.524508, + 0.524590, 0.524671, 0.524753, 0.524835, 0.524916, 0.524998, 0.525079, 0.525161, + 0.525243, 0.525324, 0.525406, 0.525487, 0.525569, 0.525650, 0.525732, 0.525813, + 0.525895, 0.525977, 0.526058, 0.526140, 0.526221, 0.526303, 0.526384, 0.526466, + 0.526547, 0.526629, 0.526710, 0.526792, 0.526873, 0.526955, 0.527036, 0.527118, + 0.527199, 0.527281, 0.527362, 0.527444, 0.527525, 0.527606, 0.527688, 0.527769, + 0.527851, 0.527932, 0.528014, 0.528095, 0.528176, 0.528258, 0.528339, 0.528421, + 0.528502, 0.528583, 0.528665, 0.528746, 0.528828, 0.528909, 0.528990, 0.529072, + 0.529153, 0.529234, 0.529316, 0.529397, 0.529478, 0.529560, 0.529641, 0.529722, + 0.529804, 0.529885, 0.529966, 0.530048, 0.530129, 0.530210, 0.530291, 0.530373, + 0.530454, 0.530535, 0.530617, 0.530698, 0.530779, 0.530860, 0.530942, 0.531023, + 0.531104, 0.531185, 0.531266, 0.531348, 0.531429, 0.531510, 0.531591, 0.531673, + 0.531754, 0.531835, 0.531916, 0.531997, 0.532078, 0.532160, 0.532241, 0.532322, + 0.532403, 0.532484, 0.532565, 0.532647, 0.532728, 0.532809, 0.532890, 0.532971, + 0.533052, 0.533133, 0.533214, 0.533296, 0.533377, 0.533458, 0.533539, 0.533620, + 0.533701, 0.533782, 0.533863, 0.533944, 0.534025, 0.534106, 0.534187, 0.534268, + 0.534349, 0.534431, 0.534512, 0.534593, 0.534674, 0.534755, 0.534836, 0.534917, + 0.534998, 0.535079, 0.535160, 0.535241, 0.535322, 0.535403, 0.535484, 0.535564, + 0.535645, 0.535726, 0.535807, 0.535888, 0.535969, 0.536050, 0.536131, 0.536212, + 0.536293, 0.536374, 0.536455, 0.536536, 0.536617, 0.536698, 0.536778, 0.536859, + 0.536940, 0.537021, 0.537102, 0.537183, 0.537264, 0.537345, 0.537425, 0.537506, + 0.537587, 0.537668, 0.537749, 0.537830, 0.537910, 0.537991, 0.538072, 0.538153, + 0.538234, 0.538314, 0.538395, 0.538476, 0.538557, 0.538638, 0.538718, 0.538799, + 0.538880, 0.538961, 0.539041, 0.539122, 0.539203, 0.539284, 0.539364, 0.539445, + 0.539526, 0.539607, 0.539687, 0.539768, 0.539849, 0.539929, 0.540010, 0.540091, + 0.540171, 0.540252, 0.540333, 0.540413, 0.540494, 0.540575, 0.540655, 0.540736, + 0.540817, 0.540897, 0.540978, 0.541059, 0.541139, 0.541220, 0.541301, 0.541381, + 0.541462, 0.541542, 0.541623, 0.541704, 0.541784, 0.541865, 0.541945, 0.542026, + 0.542106, 0.542187, 0.542268, 0.542348, 0.542429, 0.542509, 0.542590, 0.542670, + 0.542751, 0.542831, 0.542912, 0.542992, 0.543073, 0.543153, 0.543234, 0.543314, + 0.543395, 0.543475, 0.543556, 0.543636, 0.543717, 0.543797, 0.543878, 0.543958, + 0.544039, 0.544119, 0.544199, 0.544280, 0.544360, 0.544441, 0.544521, 0.544602, + 0.544682, 0.544762, 0.544843, 0.544923, 0.545003, 0.545084, 0.545164, 0.545245, + 0.545325, 0.545405, 0.545486, 0.545566, 0.545646, 0.545727, 0.545807, 0.545887, + 0.545968, 0.546048, 0.546128, 0.546209, 0.546289, 0.546369, 0.546450, 0.546530, + 0.546610, 0.546690, 0.546771, 0.546851, 0.546931, 0.547011, 0.547092, 0.547172, + 0.547252, 0.547333, 0.547413, 0.547493, 0.547573, 0.547653, 0.547734, 0.547814, + 0.547894, 0.547974, 0.548054, 0.548135, 0.548215, 0.548295, 0.548375, 0.548455, + 0.548536, 0.548616, 0.548696, 0.548776, 0.548856, 0.548936, 0.549016, 0.549097, + 0.549177, 0.549257, 0.549337, 0.549417, 0.549497, 0.549577, 0.549657, 0.549737, + 0.549818, 0.549898, 0.549978, 0.550058, 0.550138, 0.550218, 0.550298, 0.550378, + 0.550458, 0.550538, 0.550618, 0.550698, 0.550778, 0.550858, 0.550938, 0.551018, + 0.551098, 0.551178, 0.551258, 0.551338, 0.551418, 0.551498, 0.551578, 0.551658, + 0.551738, 0.551818, 0.551898, 0.551978, 0.552058, 0.552138, 0.552218, 0.552298, + 0.552378, 0.552457, 0.552537, 0.552617, 0.552697, 0.552777, 0.552857, 0.552937, + 0.553017, 0.553097, 0.553176, 0.553256, 0.553336, 0.553416, 0.553496, 0.553576, + 0.553656, 0.553735, 0.553815, 0.553895, 0.553975, 0.554055, 0.554134, 0.554214, + 0.554294, 0.554374, 0.554454, 0.554533, 0.554613, 0.554693, 0.554773, 0.554853, + 0.554932, 0.555012, 0.555092, 0.555172, 0.555251, 0.555331, 0.555411, 0.555490, + 0.555570, 0.555650, 0.555730, 0.555809, 0.555889, 0.555969, 0.556048, 0.556128, + 0.556208, 0.556287, 0.556367, 0.556447, 0.556526, 0.556606, 0.556686, 0.556765, + 0.556845, 0.556925, 0.557004, 0.557084, 0.557164, 0.557243, 0.557323, 0.557402, + 0.557482, 0.557562, 0.557641, 0.557721, 0.557800, 0.557880, 0.557959, 0.558039, + 0.558119, 0.558198, 0.558278, 0.558357, 0.558437, 0.558516, 0.558596, 0.558675, + 0.558755, 0.558834, 0.558914, 0.558993, 0.559073, 0.559152, 0.559232, 0.559311, + 0.559391, 0.559470, 0.559550, 0.559629, 0.559709, 0.559788, 0.559867, 0.559947, + 0.560026, 0.560106, 0.560185, 0.560265, 0.560344, 0.560423, 0.560503, 0.560582, + 0.560662, 0.560741, 0.560820, 0.560900, 0.560979, 0.561058, 0.561138, 0.561217, + 0.561297, 0.561376, 0.561455, 0.561535, 0.561614, 0.561693, 0.561773, 0.561852, + 0.561931, 0.562010, 0.562090, 0.562169, 0.562248, 0.562328, 0.562407, 0.562486, + 0.562565, 0.562645, 0.562724, 0.562803, 0.562882, 0.562962, 0.563041, 0.563120, + 0.563199, 0.563279, 0.563358, 0.563437, 0.563516, 0.563595, 0.563675, 0.563754, + 0.563833, 0.563912, 0.563991, 0.564070, 0.564150, 0.564229, 0.564308, 0.564387, + 0.564466, 0.564545, 0.564624, 0.564704, 0.564783, 0.564862, 0.564941, 0.565020, + 0.565099, 0.565178, 0.565257, 0.565336, 0.565416, 0.565495, 0.565574, 0.565653, + 0.565732, 0.565811, 0.565890, 0.565969, 0.566048, 0.566127, 0.566206, 0.566285, + 0.566364, 0.566443, 0.566522, 0.566601, 0.566680, 0.566759, 0.566838, 0.566917, + 0.566996, 0.567075, 0.567154, 0.567233, 0.567312, 0.567391, 0.567470, 0.567549, + 0.567628, 0.567707, 0.567786, 0.567864, 0.567943, 0.568022, 0.568101, 0.568180, + 0.568259, 0.568338, 0.568417, 0.568496, 0.568574, 0.568653, 0.568732, 0.568811, + 0.568890, 0.568969, 0.569048, 0.569126, 0.569205, 0.569284, 0.569363, 0.569442, + 0.569521, 0.569599, 0.569678, 0.569757, 0.569836, 0.569914, 0.569993, 0.570072, + 0.570151, 0.570230, 0.570308, 0.570387, 0.570466, 0.570545, 0.570623, 0.570702, + 0.570781, 0.570859, 0.570938, 0.571017, 0.571096, 0.571174, 0.571253, 0.571332, + 0.571410, 0.571489, 0.571568, 0.571646, 0.571725, 0.571804, 0.571882, 0.571961, + 0.572040, 0.572118, 0.572197, 0.572276, 0.572354, 0.572433, 0.572511, 0.572590, + 0.572669, 0.572747, 0.572826, 0.572904, 0.572983, 0.573061, 0.573140, 0.573219, + 0.573297, 0.573376, 0.573454, 0.573533, 0.573611, 0.573690, 0.573768, 0.573847, + 0.573925, 0.574004, 0.574082, 0.574161, 0.574239, 0.574318, 0.574396, 0.574475, + 0.574553, 0.574632, 0.574710, 0.574789, 0.574867, 0.574946, 0.575024, 0.575103, + 0.575181, 0.575259, 0.575338, 0.575416, 0.575495, 0.575573, 0.575651, 0.575730, + 0.575808, 0.575887, 0.575965, 0.576043, 0.576122, 0.576200, 0.576278, 0.576357, + 0.576435, 0.576513, 0.576592, 0.576670, 0.576748, 0.576827, 0.576905, 0.576983, + 0.577062, 0.577140, 0.577218, 0.577297, 0.577375, 0.577453, 0.577531, 0.577610, + 0.577688, 0.577766, 0.577844, 0.577923, 0.578001, 0.578079, 0.578157, 0.578236, + 0.578314, 0.578392, 0.578470, 0.578548, 0.578627, 0.578705, 0.578783, 0.578861, + 0.578939, 0.579018, 0.579096, 0.579174, 0.579252, 0.579330, 0.579408, 0.579486, + 0.579565, 0.579643, 0.579721, 0.579799, 0.579877, 0.579955, 0.580033, 0.580111, + 0.580189, 0.580267, 0.580346, 0.580424, 0.580502, 0.580580, 0.580658, 0.580736, + 0.580814, 0.580892, 0.580970, 0.581048, 0.581126, 0.581204, 0.581282, 0.581360, + 0.581438, 0.581516, 0.581594, 0.581672, 0.581750, 0.581828, 0.581906, 0.581984, + 0.582062, 0.582140, 0.582218, 0.582296, 0.582374, 0.582452, 0.582530, 0.582608, + 0.582685, 0.582763, 0.582841, 0.582919, 0.582997, 0.583075, 0.583153, 0.583231, + 0.583309, 0.583387, 0.583464, 0.583542, 0.583620, 0.583698, 0.583776, 0.583854, + 0.583931, 0.584009, 0.584087, 0.584165, 0.584243, 0.584321, 0.584398, 0.584476, + 0.584554, 0.584632, 0.584710, 0.584787, 0.584865, 0.584943, 0.585021, 0.585098, + 0.585176, 0.585254, 0.585332, 0.585409, 0.585487, 0.585565, 0.585642, 0.585720, + 0.585798, 0.585876, 0.585953, 0.586031, 0.586109, 0.586186, 0.586264, 0.586342, + 0.586419, 0.586497, 0.586575, 0.586652, 0.586730, 0.586808, 0.586885, 0.586963, + 0.587040, 0.587118, 0.587196, 0.587273, 0.587351, 0.587428, 0.587506, 0.587584, + 0.587661, 0.587739, 0.587816, 0.587894, 0.587971, 0.588049, 0.588126, 0.588204, + 0.588282, 0.588359, 0.588437, 0.588514, 0.588592, 0.588669, 0.588747, 0.588824, + 0.588902, 0.588979, 0.589057, 0.589134, 0.589212, 0.589289, 0.589366, 0.589444, + 0.589521, 0.589599, 0.589676, 0.589754, 0.589831, 0.589908, 0.589986, 0.590063, + 0.590141, 0.590218, 0.590295, 0.590373, 0.590450, 0.590528, 0.590605, 0.590682, + 0.590760, 0.590837, 0.590914, 0.590992, 0.591069, 0.591146, 0.591224, 0.591301, + 0.591378, 0.591456, 0.591533, 0.591610, 0.591688, 0.591765, 0.591842, 0.591919, + 0.591997, 0.592074, 0.592151, 0.592228, 0.592306, 0.592383, 0.592460, 0.592537, + 0.592615, 0.592692, 0.592769, 0.592846, 0.592924, 0.593001, 0.593078, 0.593155, + 0.593232, 0.593309, 0.593387, 0.593464, 0.593541, 0.593618, 0.593695, 0.593772, + 0.593850, 0.593927, 0.594004, 0.594081, 0.594158, 0.594235, 0.594312, 0.594389, + 0.594467, 0.594544, 0.594621, 0.594698, 0.594775, 0.594852, 0.594929, 0.595006, + 0.595083, 0.595160, 0.595237, 0.595314, 0.595391, 0.595468, 0.595545, 0.595622, + 0.595699, 0.595776, 0.595853, 0.595930, 0.596007, 0.596084, 0.596161, 0.596238, + 0.596315, 0.596392, 0.596469, 0.596546, 0.596623, 0.596700, 0.596777, 0.596854, + 0.596931, 0.597008, 0.597085, 0.597161, 0.597238, 0.597315, 0.597392, 0.597469, + 0.597546, 0.597623, 0.597700, 0.597776, 0.597853, 0.597930, 0.598007, 0.598084, + 0.598161, 0.598238, 0.598314, 0.598391, 0.598468, 0.598545, 0.598622, 0.598698, + 0.598775, 0.598852, 0.598929, 0.599006, 0.599082, 0.599159, 0.599236, 0.599313, + 0.599389, 0.599466, 0.599543, 0.599620, 0.599696, 0.599773, 0.599850, 0.599926, + 0.600003, 0.600080, 0.600156, 0.600233, 0.600310, 0.600387, 0.600463, 0.600540, + 0.600616, 0.600693, 0.600770, 0.600846, 0.600923, 0.601000, 0.601076, 0.601153, + 0.601230, 0.601306, 0.601383, 0.601459, 0.601536, 0.601613, 0.601689, 0.601766, + 0.601842, 0.601919, 0.601995, 0.602072, 0.602148, 0.602225, 0.602302, 0.602378, + 0.602455, 0.602531, 0.602608, 0.602684, 0.602761, 0.602837, 0.602914, 0.602990, + 0.603067, 0.603143, 0.603220, 0.603296, 0.603372, 0.603449, 0.603525, 0.603602, + 0.603678, 0.603755, 0.603831, 0.603908, 0.603984, 0.604060, 0.604137, 0.604213, + 0.604290, 0.604366, 0.604442, 0.604519, 0.604595, 0.604671, 0.604748, 0.604824, + 0.604900, 0.604977, 0.605053, 0.605129, 0.605206, 0.605282, 0.605358, 0.605435, + 0.605511, 0.605587, 0.605664, 0.605740, 0.605816, 0.605892, 0.605969, 0.606045, + 0.606121, 0.606198, 0.606274, 0.606350, 0.606426, 0.606502, 0.606579, 0.606655, + 0.606731, 0.606807, 0.606884, 0.606960, 0.607036, 0.607112, 0.607188, 0.607264, + 0.607341, 0.607417, 0.607493, 0.607569, 0.607645, 0.607721, 0.607798, 0.607874, + 0.607950, 0.608026, 0.608102, 0.608178, 0.608254, 0.608330, 0.608406, 0.608482, + 0.608559, 0.608635, 0.608711, 0.608787, 0.608863, 0.608939, 0.609015, 0.609091, + 0.609167, 0.609243, 0.609319, 0.609395, 0.609471, 0.609547, 0.609623, 0.609699, + 0.609775, 0.609851, 0.609927, 0.610003, 0.610079, 0.610155, 0.610231, 0.610307, + 0.610383, 0.610459, 0.610535, 0.610611, 0.610687, 0.610762, 0.610838, 0.610914, + 0.610990, 0.611066, 0.611142, 0.611218, 0.611294, 0.611370, 0.611445, 0.611521, + 0.611597, 0.611673, 0.611749, 0.611825, 0.611901, 0.611976, 0.612052, 0.612128, + 0.612204, 0.612280, 0.612355, 0.612431, 0.612507, 0.612583, 0.612659, 0.612734, + 0.612810, 0.612886, 0.612962, 0.613037, 0.613113, 0.613189, 0.613265, 0.613340, + 0.613416, 0.613492, 0.613567, 0.613643, 0.613719, 0.613795, 0.613870, 0.613946, + 0.614022, 0.614097, 0.614173, 0.614249, 0.614324, 0.614400, 0.614475, 0.614551, + 0.614627, 0.614702, 0.614778, 0.614854, 0.614929, 0.615005, 0.615080, 0.615156, + 0.615232, 0.615307, 0.615383, 0.615458, 0.615534, 0.615609, 0.615685, 0.615761, + 0.615836, 0.615912, 0.615987, 0.616063, 0.616138, 0.616214, 0.616289, 0.616365, + 0.616440, 0.616516, 0.616591, 0.616667, 0.616742, 0.616818, 0.616893, 0.616968, + 0.617044, 0.617119, 0.617195, 0.617270, 0.617346, 0.617421, 0.617496, 0.617572, + 0.617647, 0.617723, 0.617798, 0.617873, 0.617949, 0.618024, 0.618100, 0.618175, + 0.618250, 0.618326, 0.618401, 0.618476, 0.618552, 0.618627, 0.618702, 0.618778, + 0.618853, 0.618928, 0.619004, 0.619079, 0.619154, 0.619229, 0.619305, 0.619380, + 0.619455, 0.619531, 0.619606, 0.619681, 0.619756, 0.619832, 0.619907, 0.619982, + 0.620057, 0.620132, 0.620208, 0.620283, 0.620358, 0.620433, 0.620508, 0.620584, + 0.620659, 0.620734, 0.620809, 0.620884, 0.620959, 0.621035, 0.621110, 0.621185, + 0.621260, 0.621335, 0.621410, 0.621485, 0.621560, 0.621636, 0.621711, 0.621786, + 0.621861, 0.621936, 0.622011, 0.622086, 0.622161, 0.622236, 0.622311, 0.622386, + 0.622461, 0.622536, 0.622611, 0.622686, 0.622761, 0.622836, 0.622911, 0.622986, + 0.623061, 0.623136, 0.623211, 0.623286, 0.623361, 0.623436, 0.623511, 0.623586, + 0.623661, 0.623736, 0.623811, 0.623886, 0.623961, 0.624036, 0.624111, 0.624186, + 0.624260, 0.624335, 0.624410, 0.624485, 0.624560, 0.624635, 0.624710, 0.624785, + 0.624860, 0.624934, 0.625009, 0.625084, 0.625159, 0.625234, 0.625309, 0.625383, + 0.625458, 0.625533, 0.625608, 0.625683, 0.625757, 0.625832, 0.625907, 0.625982, + 0.626056, 0.626131, 0.626206, 0.626281, 0.626355, 0.626430, 0.626505, 0.626580, + 0.626654, 0.626729, 0.626804, 0.626878, 0.626953, 0.627028, 0.627102, 0.627177, + 0.627252, 0.627326, 0.627401, 0.627476, 0.627550, 0.627625, 0.627700, 0.627774, + 0.627849, 0.627924, 0.627998, 0.628073, 0.628147, 0.628222, 0.628297, 0.628371, + 0.628446, 0.628520, 0.628595, 0.628669, 0.628744, 0.628819, 0.628893, 0.628968, + 0.629042, 0.629117, 0.629191, 0.629266, 0.629340, 0.629415, 0.629489, 0.629564, + 0.629638, 0.629713, 0.629787, 0.629862, 0.629936, 0.630011, 0.630085, 0.630159, + 0.630234, 0.630308, 0.630383, 0.630457, 0.630532, 0.630606, 0.630680, 0.630755, + 0.630829, 0.630904, 0.630978, 0.631052, 0.631127, 0.631201, 0.631275, 0.631350, + 0.631424, 0.631499, 0.631573, 0.631647, 0.631721, 0.631796, 0.631870, 0.631944, + 0.632019, 0.632093, 0.632167, 0.632242, 0.632316, 0.632390, 0.632464, 0.632539, + 0.632613, 0.632687, 0.632761, 0.632836, 0.632910, 0.632984, 0.633058, 0.633133, + 0.633207, 0.633281, 0.633355, 0.633429, 0.633504, 0.633578, 0.633652, 0.633726, + 0.633800, 0.633874, 0.633949, 0.634023, 0.634097, 0.634171, 0.634245, 0.634319, + 0.634393, 0.634467, 0.634542, 0.634616, 0.634690, 0.634764, 0.634838, 0.634912, + 0.634986, 0.635060, 0.635134, 0.635208, 0.635282, 0.635356, 0.635430, 0.635504, + 0.635578, 0.635652, 0.635726, 0.635800, 0.635874, 0.635948, 0.636022, 0.636096, + 0.636170, 0.636244, 0.636318, 0.636392, 0.636466, 0.636540, 0.636614, 0.636688, + 0.636762, 0.636836, 0.636910, 0.636984, 0.637057, 0.637131, 0.637205, 0.637279, + 0.637353, 0.637427, 0.637501, 0.637575, 0.637649, 0.637722, 0.637796, 0.637870, + 0.637944, 0.638018, 0.638092, 0.638165, 0.638239, 0.638313, 0.638387, 0.638461, + 0.638534, 0.638608, 0.638682, 0.638756, 0.638829, 0.638903, 0.638977, 0.639051, + 0.639124, 0.639198, 0.639272, 0.639346, 0.639419, 0.639493, 0.639567, 0.639640, + 0.639714, 0.639788, 0.639862, 0.639935, 0.640009, 0.640083, 0.640156, 0.640230, + 0.640303, 0.640377, 0.640451, 0.640524, 0.640598, 0.640672, 0.640745, 0.640819, + 0.640892, 0.640966, 0.641040, 0.641113, 0.641187, 0.641260, 0.641334, 0.641407, + 0.641481, 0.641555, 0.641628, 0.641702, 0.641775, 0.641849, 0.641922, 0.641996, + 0.642069, 0.642143, 0.642216, 0.642290, 0.642363, 0.642437, 0.642510, 0.642584, + 0.642657, 0.642730, 0.642804, 0.642877, 0.642951, 0.643024, 0.643098, 0.643171, + 0.643245, 0.643318, 0.643391, 0.643465, 0.643538, 0.643611, 0.643685, 0.643758, + 0.643832, 0.643905, 0.643978, 0.644052, 0.644125, 0.644198, 0.644272, 0.644345, + 0.644418, 0.644492, 0.644565, 0.644638, 0.644711, 0.644785, 0.644858, 0.644931, + 0.645005, 0.645078, 0.645151, 0.645224, 0.645298, 0.645371, 0.645444, 0.645517, + 0.645590, 0.645664, 0.645737, 0.645810, 0.645883, 0.645956, 0.646030, 0.646103, + 0.646176, 0.646249, 0.646322, 0.646396, 0.646469, 0.646542, 0.646615, 0.646688, + 0.646761, 0.646834, 0.646907, 0.646981, 0.647054, 0.647127, 0.647200, 0.647273, + 0.647346, 0.647419, 0.647492, 0.647565, 0.647638, 0.647711, 0.647784, 0.647857, + 0.647930, 0.648003, 0.648076, 0.648149, 0.648222, 0.648295, 0.648368, 0.648441, + 0.648514, 0.648587, 0.648660, 0.648733, 0.648806, 0.648879, 0.648952, 0.649025, + 0.649098, 0.649171, 0.649244, 0.649317, 0.649390, 0.649463, 0.649536, 0.649608, + 0.649681, 0.649754, 0.649827, 0.649900, 0.649973, 0.650046, 0.650119, 0.650191, + 0.650264, 0.650337, 0.650410, 0.650483, 0.650555, 0.650628, 0.650701, 0.650774, + 0.650847, 0.650919, 0.650992, 0.651065, 0.651138, 0.651211, 0.651283, 0.651356, + 0.651429, 0.651502, 0.651574, 0.651647, 0.651720, 0.651792, 0.651865, 0.651938, + 0.652011, 0.652083, 0.652156, 0.652229, 0.652301, 0.652374, 0.652447, 0.652519, + 0.652592, 0.652665, 0.652737, 0.652810, 0.652882, 0.652955, 0.653028, 0.653100, + 0.653173, 0.653245, 0.653318, 0.653391, 0.653463, 0.653536, 0.653608, 0.653681, + 0.653753, 0.653826, 0.653899, 0.653971, 0.654044, 0.654116, 0.654189, 0.654261, + 0.654334, 0.654406, 0.654479, 0.654551, 0.654624, 0.654696, 0.654769, 0.654841, + 0.654913, 0.654986, 0.655058, 0.655131, 0.655203, 0.655276, 0.655348, 0.655420, + 0.655493, 0.655565, 0.655638, 0.655710, 0.655782, 0.655855, 0.655927, 0.656000, + 0.656072, 0.656144, 0.656217, 0.656289, 0.656361, 0.656434, 0.656506, 0.656578, + 0.656651, 0.656723, 0.656795, 0.656867, 0.656940, 0.657012, 0.657084, 0.657157, + 0.657229, 0.657301, 0.657373, 0.657446, 0.657518, 0.657590, 0.657662, 0.657734, + 0.657807, 0.657879, 0.657951, 0.658023, 0.658095, 0.658168, 0.658240, 0.658312, + 0.658384, 0.658456, 0.658529, 0.658601, 0.658673, 0.658745, 0.658817, 0.658889, + 0.658961, 0.659033, 0.659105, 0.659178, 0.659250, 0.659322, 0.659394, 0.659466, + 0.659538, 0.659610, 0.659682, 0.659754, 0.659826, 0.659898, 0.659970, 0.660042, + 0.660114, 0.660186, 0.660258, 0.660330, 0.660402, 0.660474, 0.660546, 0.660618, + 0.660690, 0.660762, 0.660834, 0.660906, 0.660978, 0.661050, 0.661122, 0.661194, + 0.661266, 0.661338, 0.661410, 0.661482, 0.661553, 0.661625, 0.661697, 0.661769, + 0.661841, 0.661913, 0.661985, 0.662057, 0.662128, 0.662200, 0.662272, 0.662344, + 0.662416, 0.662488, 0.662559, 0.662631, 0.662703, 0.662775, 0.662847, 0.662918, + 0.662990, 0.663062, 0.663134, 0.663205, 0.663277, 0.663349, 0.663421, 0.663492, + 0.663564, 0.663636, 0.663708, 0.663779, 0.663851, 0.663923, 0.663994, 0.664066, + 0.664138, 0.664209, 0.664281, 0.664353, 0.664424, 0.664496, 0.664568, 0.664639, + 0.664711, 0.664783, 0.664854, 0.664926, 0.664997, 0.665069, 0.665141, 0.665212, + 0.665284, 0.665355, 0.665427, 0.665498, 0.665570, 0.665642, 0.665713, 0.665785, + 0.665856, 0.665928, 0.665999, 0.666071, 0.666142, 0.666214, 0.666285, 0.666357, + 0.666428, 0.666500, 0.666571, 0.666643, 0.666714, 0.666786, 0.666857, 0.666928, + 0.667000, 0.667071, 0.667143, 0.667214, 0.667286, 0.667357, 0.667428, 0.667500, + 0.667571, 0.667643, 0.667714, 0.667785, 0.667857, 0.667928, 0.667999, 0.668071, + 0.668142, 0.668213, 0.668285, 0.668356, 0.668427, 0.668499, 0.668570, 0.668641, + 0.668712, 0.668784, 0.668855, 0.668926, 0.668998, 0.669069, 0.669140, 0.669211, + 0.669283, 0.669354, 0.669425, 0.669496, 0.669567, 0.669639, 0.669710, 0.669781, + 0.669852, 0.669923, 0.669995, 0.670066, 0.670137, 0.670208, 0.670279, 0.670350, + 0.670422, 0.670493, 0.670564, 0.670635, 0.670706, 0.670777, 0.670848, 0.670919, + 0.670990, 0.671062, 0.671133, 0.671204, 0.671275, 0.671346, 0.671417, 0.671488, + 0.671559, 0.671630, 0.671701, 0.671772, 0.671843, 0.671914, 0.671985, 0.672056, + 0.672127, 0.672198, 0.672269, 0.672340, 0.672411, 0.672482, 0.672553, 0.672624, + 0.672695, 0.672766, 0.672837, 0.672908, 0.672978, 0.673049, 0.673120, 0.673191, + 0.673262, 0.673333, 0.673404, 0.673475, 0.673546, 0.673616, 0.673687, 0.673758, + 0.673829, 0.673900, 0.673971, 0.674042, 0.674112, 0.674183, 0.674254, 0.674325, + 0.674396, 0.674466, 0.674537, 0.674608, 0.674679, 0.674749, 0.674820, 0.674891, + 0.674962, 0.675032, 0.675103, 0.675174, 0.675245, 0.675315, 0.675386, 0.675457, + 0.675527, 0.675598, 0.675669, 0.675739, 0.675810, 0.675881, 0.675951, 0.676022, + 0.676093, 0.676163, 0.676234, 0.676305, 0.676375, 0.676446, 0.676516, 0.676587, + 0.676658, 0.676728, 0.676799, 0.676869, 0.676940, 0.677011, 0.677081, 0.677152, + 0.677222, 0.677293, 0.677363, 0.677434, 0.677504, 0.677575, 0.677645, 0.677716, + 0.677786, 0.677857, 0.677927, 0.677998, 0.678068, 0.678139, 0.678209, 0.678280, + 0.678350, 0.678420, 0.678491, 0.678561, 0.678632, 0.678702, 0.678773, 0.678843, + 0.678913, 0.678984, 0.679054, 0.679125, 0.679195, 0.679265, 0.679336, 0.679406, + 0.679476, 0.679547, 0.679617, 0.679687, 0.679758, 0.679828, 0.679898, 0.679969, + 0.680039, 0.680109, 0.680179, 0.680250, 0.680320, 0.680390, 0.680461, 0.680531, + 0.680601, 0.680671, 0.680741, 0.680812, 0.680882, 0.680952, 0.681022, 0.681093, + 0.681163, 0.681233, 0.681303, 0.681373, 0.681443, 0.681514, 0.681584, 0.681654, + 0.681724, 0.681794, 0.681864, 0.681934, 0.682005, 0.682075, 0.682145, 0.682215, + 0.682285, 0.682355, 0.682425, 0.682495, 0.682565, 0.682635, 0.682705, 0.682775, + 0.682846, 0.682916, 0.682986, 0.683056, 0.683126, 0.683196, 0.683266, 0.683336, + 0.683406, 0.683476, 0.683546, 0.683616, 0.683686, 0.683756, 0.683825, 0.683895, + 0.683965, 0.684035, 0.684105, 0.684175, 0.684245, 0.684315, 0.684385, 0.684455, + 0.684525, 0.684595, 0.684664, 0.684734, 0.684804, 0.684874, 0.684944, 0.685014, + 0.685084, 0.685153, 0.685223, 0.685293, 0.685363, 0.685433, 0.685503, 0.685572, + 0.685642, 0.685712, 0.685782, 0.685852, 0.685921, 0.685991, 0.686061, 0.686131, + 0.686200, 0.686270, 0.686340, 0.686409, 0.686479, 0.686549, 0.686619, 0.686688, + 0.686758, 0.686828, 0.686897, 0.686967, 0.687037, 0.687106, 0.687176, 0.687246, + 0.687315, 0.687385, 0.687455, 0.687524, 0.687594, 0.687663, 0.687733, 0.687803, + 0.687872, 0.687942, 0.688011, 0.688081, 0.688151, 0.688220, 0.688290, 0.688359, + 0.688429, 0.688498, 0.688568, 0.688637, 0.688707, 0.688776, 0.688846, 0.688915, + 0.688985, 0.689054, 0.689124, 0.689193, 0.689263, 0.689332, 0.689402, 0.689471, + 0.689541, 0.689610, 0.689679, 0.689749, 0.689818, 0.689888, 0.689957, 0.690026, + 0.690096, 0.690165, 0.690235, 0.690304, 0.690373, 0.690443, 0.690512, 0.690581, + 0.690651, 0.690720, 0.690789, 0.690859, 0.690928, 0.690997, 0.691067, 0.691136, + 0.691205, 0.691274, 0.691344, 0.691413, 0.691482, 0.691552, 0.691621, 0.691690, + 0.691759, 0.691828, 0.691898, 0.691967, 0.692036, 0.692105, 0.692175, 0.692244, + 0.692313, 0.692382, 0.692451, 0.692520, 0.692590, 0.692659, 0.692728, 0.692797, + 0.692866, 0.692935, 0.693004, 0.693074, 0.693143, 0.693212, 0.693281, 0.693350, + 0.693419, 0.693488, 0.693557, 0.693626, 0.693695, 0.693764, 0.693833, 0.693902, + 0.693971, 0.694040, 0.694109, 0.694179, 0.694248, 0.694317, 0.694386, 0.694454, + 0.694524, 0.694592, 0.694661, 0.694730, 0.694799, 0.694868, 0.694937, 0.695006, + 0.695075, 0.695144, 0.695213, 0.695282, 0.695351, 0.695420, 0.695489, 0.695557, + 0.695626, 0.695695, 0.695764, 0.695833, 0.695902, 0.695971, 0.696039, 0.696108, + 0.696177, 0.696246, 0.696315, 0.696384, 0.696452, 0.696521, 0.696590, 0.696659, + 0.696728, 0.696796, 0.696865, 0.696934, 0.697003, 0.697071, 0.697140, 0.697209, + 0.697277, 0.697346, 0.697415, 0.697484, 0.697552, 0.697621, 0.697690, 0.697758, + 0.697827, 0.697896, 0.697964, 0.698033, 0.698102, 0.698170, 0.698239, 0.698308, + 0.698376, 0.698445, 0.698513, 0.698582, 0.698651, 0.698719, 0.698788, 0.698856, + 0.698925, 0.698994, 0.699062, 0.699131, 0.699199, 0.699268, 0.699336, 0.699405, + 0.699473, 0.699542, 0.699610, 0.699679, 0.699747, 0.699816, 0.699884, 0.699953, + 0.700021, 0.700090, 0.700158, 0.700227, 0.700295, 0.700364, 0.700432, 0.700500, + 0.700569, 0.700637, 0.700706, 0.700774, 0.700842, 0.700911, 0.700979, 0.701048, + 0.701116, 0.701184, 0.701253, 0.701321, 0.701389, 0.701458, 0.701526, 0.701594, + 0.701663, 0.701731, 0.701799, 0.701868, 0.701936, 0.702004, 0.702072, 0.702141, + 0.702209, 0.702277, 0.702345, 0.702414, 0.702482, 0.702550, 0.702618, 0.702687, + 0.702755, 0.702823, 0.702891, 0.702959, 0.703028, 0.703096, 0.703164, 0.703232, + 0.703300, 0.703368, 0.703436, 0.703505, 0.703573, 0.703641, 0.703709, 0.703777, + 0.703845, 0.703913, 0.703981, 0.704050, 0.704118, 0.704186, 0.704254, 0.704322, + 0.704390, 0.704458, 0.704526, 0.704594, 0.704662, 0.704730, 0.704798, 0.704866, + 0.704934, 0.705002, 0.705070, 0.705138, 0.705206, 0.705274, 0.705342, 0.705410, + 0.705478, 0.705546, 0.705614, 0.705682, 0.705750, 0.705818, 0.705885, 0.705953, + 0.706021, 0.706089, 0.706157, 0.706225, 0.706293, 0.706361, 0.706429, 0.706496, + 0.706564, 0.706632, 0.706700, 0.706768, 0.706836, 0.706903, 0.706971, 0.707039, + 0.707107, 0.707175, 0.707242, 0.707310, 0.707378, 0.707446, 0.707513, 0.707581, + 0.707649, 0.707717, 0.707784, 0.707852, 0.707920, 0.707988, 0.708055, 0.708123, + 0.708191, 0.708258, 0.708326, 0.708394, 0.708461, 0.708529, 0.708597, 0.708664, + 0.708732, 0.708800, 0.708867, 0.708935, 0.709002, 0.709070, 0.709138, 0.709205, + 0.709273, 0.709340, 0.709408, 0.709476, 0.709543, 0.709611, 0.709678, 0.709746, + 0.709813, 0.709881, 0.709948, 0.710016, 0.710083, 0.710151, 0.710218, 0.710286, + 0.710353, 0.710421, 0.710488, 0.710556, 0.710623, 0.710691, 0.710758, 0.710826, + 0.710893, 0.710960, 0.711028, 0.711095, 0.711163, 0.711230, 0.711297, 0.711365, + 0.711432, 0.711500, 0.711567, 0.711634, 0.711702, 0.711769, 0.711836, 0.711904, + 0.711971, 0.712038, 0.712106, 0.712173, 0.712240, 0.712308, 0.712375, 0.712442, + 0.712509, 0.712577, 0.712644, 0.712711, 0.712778, 0.712846, 0.712913, 0.712980, + 0.713047, 0.713115, 0.713182, 0.713249, 0.713316, 0.713383, 0.713451, 0.713518, + 0.713585, 0.713652, 0.713719, 0.713786, 0.713853, 0.713921, 0.713988, 0.714055, + 0.714122, 0.714189, 0.714256, 0.714323, 0.714390, 0.714457, 0.714525, 0.714592, + 0.714659, 0.714726, 0.714793, 0.714860, 0.714927, 0.714994, 0.715061, 0.715128, + 0.715195, 0.715262, 0.715329, 0.715396, 0.715463, 0.715530, 0.715597, 0.715664, + 0.715731, 0.715798, 0.715865, 0.715932, 0.715999, 0.716066, 0.716132, 0.716199, + 0.716266, 0.716333, 0.716400, 0.716467, 0.716534, 0.716601, 0.716668, 0.716734, + 0.716801, 0.716868, 0.716935, 0.717002, 0.717069, 0.717135, 0.717202, 0.717269, + 0.717336, 0.717403, 0.717469, 0.717536, 0.717603, 0.717670, 0.717737, 0.717803, + 0.717870, 0.717937, 0.718004, 0.718070, 0.718137, 0.718204, 0.718270, 0.718337, + 0.718404, 0.718471, 0.718537, 0.718604, 0.718670, 0.718737, 0.718804, 0.718870, + 0.718937, 0.719004, 0.719070, 0.719137, 0.719204, 0.719270, 0.719337, 0.719403, + 0.719470, 0.719537, 0.719603, 0.719670, 0.719736, 0.719803, 0.719869, 0.719936, + 0.720003, 0.720069, 0.720136, 0.720202, 0.720269, 0.720335, 0.720402, 0.720468, + 0.720535, 0.720601, 0.720668, 0.720734, 0.720800, 0.720867, 0.720933, 0.721000, + 0.721066, 0.721133, 0.721199, 0.721265, 0.721332, 0.721398, 0.721465, 0.721531, + 0.721597, 0.721664, 0.721730, 0.721797, 0.721863, 0.721929, 0.721996, 0.722062, + 0.722128, 0.722194, 0.722261, 0.722327, 0.722393, 0.722460, 0.722526, 0.722592, + 0.722659, 0.722725, 0.722791, 0.722857, 0.722924, 0.722990, 0.723056, 0.723122, + 0.723188, 0.723255, 0.723321, 0.723387, 0.723453, 0.723520, 0.723586, 0.723652, + 0.723718, 0.723784, 0.723850, 0.723916, 0.723983, 0.724049, 0.724115, 0.724181, + 0.724247, 0.724313, 0.724379, 0.724445, 0.724511, 0.724578, 0.724644, 0.724710, + 0.724776, 0.724842, 0.724908, 0.724974, 0.725040, 0.725106, 0.725172, 0.725238, + 0.725304, 0.725370, 0.725436, 0.725502, 0.725568, 0.725634, 0.725700, 0.725766, + 0.725832, 0.725898, 0.725964, 0.726030, 0.726095, 0.726161, 0.726227, 0.726293, + 0.726359, 0.726425, 0.726491, 0.726557, 0.726623, 0.726689, 0.726754, 0.726820, + 0.726886, 0.726952, 0.727018, 0.727084, 0.727149, 0.727215, 0.727281, 0.727347, + 0.727413, 0.727478, 0.727544, 0.727610, 0.727676, 0.727741, 0.727807, 0.727873, + 0.727939, 0.728004, 0.728070, 0.728136, 0.728202, 0.728267, 0.728333, 0.728399, + 0.728464, 0.728530, 0.728596, 0.728661, 0.728727, 0.728793, 0.728858, 0.728924, + 0.728990, 0.729055, 0.729121, 0.729186, 0.729252, 0.729318, 0.729383, 0.729449, + 0.729514, 0.729580, 0.729646, 0.729711, 0.729777, 0.729842, 0.729908, 0.729973, + 0.730039, 0.730104, 0.730170, 0.730235, 0.730301, 0.730366, 0.730432, 0.730497, + 0.730563, 0.730628, 0.730694, 0.730759, 0.730825, 0.730890, 0.730955, 0.731021, + 0.731086, 0.731152, 0.731217, 0.731282, 0.731348, 0.731413, 0.731479, 0.731544, + 0.731609, 0.731675, 0.731740, 0.731805, 0.731871, 0.731936, 0.732001, 0.732067, + 0.732132, 0.732197, 0.732263, 0.732328, 0.732393, 0.732458, 0.732524, 0.732589, + 0.732654, 0.732720, 0.732785, 0.732850, 0.732915, 0.732980, 0.733046, 0.733111, + 0.733176, 0.733241, 0.733306, 0.733372, 0.733437, 0.733502, 0.733567, 0.733632, + 0.733697, 0.733763, 0.733828, 0.733893, 0.733958, 0.734023, 0.734088, 0.734153, + 0.734218, 0.734283, 0.734349, 0.734414, 0.734479, 0.734544, 0.734609, 0.734674, + 0.734739, 0.734804, 0.734869, 0.734934, 0.734999, 0.735064, 0.735129, 0.735194, + 0.735259, 0.735324, 0.735389, 0.735454, 0.735519, 0.735584, 0.735649, 0.735714, + 0.735779, 0.735844, 0.735908, 0.735973, 0.736038, 0.736103, 0.736168, 0.736233, + 0.736298, 0.736363, 0.736428, 0.736492, 0.736557, 0.736622, 0.736687, 0.736752, + 0.736817, 0.736881, 0.736946, 0.737011, 0.737076, 0.737141, 0.737205, 0.737270, + 0.737335, 0.737400, 0.737464, 0.737529, 0.737594, 0.737659, 0.737723, 0.737788, + 0.737853, 0.737918, 0.737982, 0.738047, 0.738112, 0.738176, 0.738241, 0.738306, + 0.738370, 0.738435, 0.738500, 0.738564, 0.738629, 0.738693, 0.738758, 0.738823, + 0.738887, 0.738952, 0.739017, 0.739081, 0.739146, 0.739210, 0.739275, 0.739339, + 0.739404, 0.739468, 0.739533, 0.739598, 0.739662, 0.739727, 0.739791, 0.739856, + 0.739920, 0.739985, 0.740049, 0.740114, 0.740178, 0.740242, 0.740307, 0.740371, + 0.740436, 0.740500, 0.740565, 0.740629, 0.740694, 0.740758, 0.740822, 0.740887, + 0.740951, 0.741015, 0.741080, 0.741144, 0.741209, 0.741273, 0.741337, 0.741402, + 0.741466, 0.741530, 0.741595, 0.741659, 0.741723, 0.741788, 0.741852, 0.741916, + 0.741980, 0.742045, 0.742109, 0.742173, 0.742237, 0.742302, 0.742366, 0.742430, + 0.742494, 0.742559, 0.742623, 0.742687, 0.742751, 0.742815, 0.742880, 0.742944, + 0.743008, 0.743072, 0.743136, 0.743200, 0.743265, 0.743329, 0.743393, 0.743457, + 0.743521, 0.743585, 0.743649, 0.743713, 0.743777, 0.743842, 0.743906, 0.743970, + 0.744034, 0.744098, 0.744162, 0.744226, 0.744290, 0.744354, 0.744418, 0.744482, + 0.744546, 0.744610, 0.744674, 0.744738, 0.744802, 0.744866, 0.744930, 0.744994, + 0.745058, 0.745122, 0.745186, 0.745250, 0.745314, 0.745377, 0.745441, 0.745505, + 0.745569, 0.745633, 0.745697, 0.745761, 0.745825, 0.745889, 0.745952, 0.746016, + 0.746080, 0.746144, 0.746208, 0.746272, 0.746335, 0.746399, 0.746463, 0.746527, + 0.746591, 0.746654, 0.746718, 0.746782, 0.746846, 0.746909, 0.746973, 0.747037, + 0.747101, 0.747164, 0.747228, 0.747292, 0.747355, 0.747419, 0.747483, 0.747547, + 0.747610, 0.747674, 0.747738, 0.747801, 0.747865, 0.747929, 0.747992, 0.748056, + 0.748119, 0.748183, 0.748247, 0.748310, 0.748374, 0.748437, 0.748501, 0.748565, + 0.748628, 0.748692, 0.748755, 0.748819, 0.748882, 0.748946, 0.749009, 0.749073, + 0.749136, 0.749200, 0.749263, 0.749327, 0.749390, 0.749454, 0.749517, 0.749581, + 0.749644, 0.749708, 0.749771, 0.749835, 0.749898, 0.749961, 0.750025, 0.750088, + 0.750152, 0.750215, 0.750278, 0.750342, 0.750405, 0.750469, 0.750532, 0.750595, + 0.750659, 0.750722, 0.750785, 0.750849, 0.750912, 0.750975, 0.751039, 0.751102, + 0.751165, 0.751228, 0.751292, 0.751355, 0.751418, 0.751481, 0.751545, 0.751608, + 0.751671, 0.751734, 0.751798, 0.751861, 0.751924, 0.751987, 0.752050, 0.752114, + 0.752177, 0.752240, 0.752303, 0.752366, 0.752429, 0.752493, 0.752556, 0.752619, + 0.752682, 0.752745, 0.752808, 0.752871, 0.752934, 0.752998, 0.753061, 0.753124, + 0.753187, 0.753250, 0.753313, 0.753376, 0.753439, 0.753502, 0.753565, 0.753628, + 0.753691, 0.753754, 0.753817, 0.753880, 0.753943, 0.754006, 0.754069, 0.754132, + 0.754195, 0.754258, 0.754321, 0.754384, 0.754447, 0.754510, 0.754573, 0.754636, + 0.754698, 0.754761, 0.754824, 0.754887, 0.754950, 0.755013, 0.755076, 0.755139, + 0.755201, 0.755264, 0.755327, 0.755390, 0.755453, 0.755516, 0.755578, 0.755641, + 0.755704, 0.755767, 0.755829, 0.755892, 0.755955, 0.756018, 0.756081, 0.756143, + 0.756206, 0.756269, 0.756331, 0.756394, 0.756457, 0.756520, 0.756582, 0.756645, + 0.756708, 0.756770, 0.756833, 0.756896, 0.756958, 0.757021, 0.757084, 0.757146, + 0.757209, 0.757271, 0.757334, 0.757397, 0.757459, 0.757522, 0.757584, 0.757647, + 0.757710, 0.757772, 0.757835, 0.757897, 0.757960, 0.758022, 0.758085, 0.758147, + 0.758210, 0.758272, 0.758335, 0.758397, 0.758460, 0.758522, 0.758585, 0.758647, + 0.758710, 0.758772, 0.758835, 0.758897, 0.758960, 0.759022, 0.759084, 0.759147, + 0.759209, 0.759272, 0.759334, 0.759396, 0.759459, 0.759521, 0.759583, 0.759646, + 0.759708, 0.759771, 0.759833, 0.759895, 0.759957, 0.760020, 0.760082, 0.760144, + 0.760207, 0.760269, 0.760331, 0.760394, 0.760456, 0.760518, 0.760580, 0.760643, + 0.760705, 0.760767, 0.760829, 0.760891, 0.760954, 0.761016, 0.761078, 0.761140, + 0.761202, 0.761265, 0.761327, 0.761389, 0.761451, 0.761513, 0.761575, 0.761637, + 0.761700, 0.761762, 0.761824, 0.761886, 0.761948, 0.762010, 0.762072, 0.762134, + 0.762196, 0.762258, 0.762320, 0.762382, 0.762444, 0.762507, 0.762569, 0.762631, + 0.762693, 0.762755, 0.762817, 0.762879, 0.762941, 0.763003, 0.763065, 0.763126, + 0.763188, 0.763250, 0.763312, 0.763374, 0.763436, 0.763498, 0.763560, 0.763622, + 0.763684, 0.763746, 0.763808, 0.763869, 0.763931, 0.763993, 0.764055, 0.764117, + 0.764179, 0.764241, 0.764302, 0.764364, 0.764426, 0.764488, 0.764550, 0.764611, + 0.764673, 0.764735, 0.764797, 0.764859, 0.764920, 0.764982, 0.765044, 0.765106, + 0.765167, 0.765229, 0.765291, 0.765352, 0.765414, 0.765476, 0.765538, 0.765599, + 0.765661, 0.765723, 0.765784, 0.765846, 0.765907, 0.765969, 0.766031, 0.766092, + 0.766154, 0.766216, 0.766277, 0.766339, 0.766400, 0.766462, 0.766524, 0.766585, + 0.766647, 0.766708, 0.766770, 0.766831, 0.766893, 0.766954, 0.767016, 0.767077, + 0.767139, 0.767200, 0.767262, 0.767323, 0.767385, 0.767446, 0.767508, 0.767569, + 0.767631, 0.767692, 0.767754, 0.767815, 0.767876, 0.767938, 0.767999, 0.768061, + 0.768122, 0.768183, 0.768245, 0.768306, 0.768368, 0.768429, 0.768490, 0.768552, + 0.768613, 0.768674, 0.768736, 0.768797, 0.768858, 0.768919, 0.768981, 0.769042, + 0.769103, 0.769165, 0.769226, 0.769287, 0.769348, 0.769410, 0.769471, 0.769532, + 0.769593, 0.769655, 0.769716, 0.769777, 0.769838, 0.769899, 0.769961, 0.770022, + 0.770083, 0.770144, 0.770205, 0.770266, 0.770327, 0.770389, 0.770450, 0.770511, + 0.770572, 0.770633, 0.770694, 0.770755, 0.770816, 0.770877, 0.770938, 0.770999, + 0.771061, 0.771122, 0.771183, 0.771244, 0.771305, 0.771366, 0.771427, 0.771488, + 0.771549, 0.771610, 0.771671, 0.771732, 0.771793, 0.771854, 0.771915, 0.771975, + 0.772036, 0.772097, 0.772158, 0.772219, 0.772280, 0.772341, 0.772402, 0.772463, + 0.772524, 0.772584, 0.772645, 0.772706, 0.772767, 0.772828, 0.772889, 0.772950, + 0.773010, 0.773071, 0.773132, 0.773193, 0.773254, 0.773314, 0.773375, 0.773436, + 0.773497, 0.773558, 0.773618, 0.773679, 0.773740, 0.773801, 0.773861, 0.773922, + 0.773983, 0.774043, 0.774104, 0.774165, 0.774225, 0.774286, 0.774347, 0.774407, + 0.774468, 0.774529, 0.774589, 0.774650, 0.774711, 0.774771, 0.774832, 0.774893, + 0.774953, 0.775014, 0.775074, 0.775135, 0.775195, 0.775256, 0.775317, 0.775377, + 0.775438, 0.775498, 0.775559, 0.775619, 0.775680, 0.775740, 0.775801, 0.775861, + 0.775922, 0.775982, 0.776043, 0.776103, 0.776164, 0.776224, 0.776284, 0.776345, + 0.776405, 0.776466, 0.776526, 0.776587, 0.776647, 0.776707, 0.776768, 0.776828, + 0.776888, 0.776949, 0.777009, 0.777070, 0.777130, 0.777190, 0.777251, 0.777311, + 0.777371, 0.777431, 0.777492, 0.777552, 0.777612, 0.777673, 0.777733, 0.777793, + 0.777853, 0.777914, 0.777974, 0.778034, 0.778094, 0.778155, 0.778215, 0.778275, + 0.778335, 0.778395, 0.778456, 0.778516, 0.778576, 0.778636, 0.778696, 0.778756, + 0.778817, 0.778877, 0.778937, 0.778997, 0.779057, 0.779117, 0.779177, 0.779237, + 0.779297, 0.779357, 0.779418, 0.779478, 0.779538, 0.779598, 0.779658, 0.779718, + 0.779778, 0.779838, 0.779898, 0.779958, 0.780018, 0.780078, 0.780138, 0.780198, + 0.780258, 0.780318, 0.780378, 0.780438, 0.780498, 0.780557, 0.780617, 0.780677, + 0.780737, 0.780797, 0.780857, 0.780917, 0.780977, 0.781037, 0.781097, 0.781156, + 0.781216, 0.781276, 0.781336, 0.781396, 0.781456, 0.781515, 0.781575, 0.781635, + 0.781695, 0.781755, 0.781814, 0.781874, 0.781934, 0.781994, 0.782053, 0.782113, + 0.782173, 0.782233, 0.782292, 0.782352, 0.782412, 0.782472, 0.782531, 0.782591, + 0.782651, 0.782710, 0.782770, 0.782830, 0.782889, 0.782949, 0.783009, 0.783068, + 0.783128, 0.783187, 0.783247, 0.783307, 0.783366, 0.783426, 0.783485, 0.783545, + 0.783605, 0.783664, 0.783724, 0.783783, 0.783843, 0.783902, 0.783962, 0.784021, + 0.784081, 0.784140, 0.784200, 0.784259, 0.784319, 0.784378, 0.784438, 0.784497, + 0.784557, 0.784616, 0.784675, 0.784735, 0.784794, 0.784854, 0.784913, 0.784973, + 0.785032, 0.785091, 0.785151, 0.785210, 0.785269, 0.785329, 0.785388, 0.785447, + 0.785507, 0.785566, 0.785625, 0.785685, 0.785744, 0.785803, 0.785863, 0.785922, + 0.785981, 0.786041, 0.786100, 0.786159, 0.786218, 0.786278, 0.786337, 0.786396, + 0.786455, 0.786514, 0.786574, 0.786633, 0.786692, 0.786751, 0.786810, 0.786870, + 0.786929, 0.786988, 0.787047, 0.787106, 0.787165, 0.787224, 0.787284, 0.787343, + 0.787402, 0.787461, 0.787520, 0.787579, 0.787638, 0.787697, 0.787756, 0.787815, + 0.787874, 0.787933, 0.787992, 0.788051, 0.788110, 0.788169, 0.788228, 0.788287, + 0.788346, 0.788405, 0.788464, 0.788523, 0.788582, 0.788641, 0.788700, 0.788759, + 0.788818, 0.788877, 0.788936, 0.788995, 0.789054, 0.789113, 0.789172, 0.789230, + 0.789289, 0.789348, 0.789407, 0.789466, 0.789525, 0.789584, 0.789642, 0.789701, + 0.789760, 0.789819, 0.789878, 0.789936, 0.789995, 0.790054, 0.790113, 0.790171, + 0.790230, 0.790289, 0.790348, 0.790406, 0.790465, 0.790524, 0.790583, 0.790641, + 0.790700, 0.790759, 0.790817, 0.790876, 0.790935, 0.790993, 0.791052, 0.791111, + 0.791169, 0.791228, 0.791287, 0.791345, 0.791404, 0.791462, 0.791521, 0.791580, + 0.791638, 0.791697, 0.791755, 0.791814, 0.791872, 0.791931, 0.791990, 0.792048, + 0.792107, 0.792165, 0.792224, 0.792282, 0.792341, 0.792399, 0.792458, 0.792516, + 0.792575, 0.792633, 0.792691, 0.792750, 0.792808, 0.792867, 0.792925, 0.792984, + 0.793042, 0.793100, 0.793159, 0.793217, 0.793276, 0.793334, 0.793392, 0.793451, + 0.793509, 0.793567, 0.793626, 0.793684, 0.793742, 0.793801, 0.793859, 0.793917, + 0.793975, 0.794034, 0.794092, 0.794150, 0.794209, 0.794267, 0.794325, 0.794383, + 0.794442, 0.794500, 0.794558, 0.794616, 0.794674, 0.794733, 0.794791, 0.794849, + 0.794907, 0.794965, 0.795023, 0.795082, 0.795140, 0.795198, 0.795256, 0.795314, + 0.795372, 0.795430, 0.795488, 0.795547, 0.795605, 0.795663, 0.795721, 0.795779, + 0.795837, 0.795895, 0.795953, 0.796011, 0.796069, 0.796127, 0.796185, 0.796243, + 0.796301, 0.796359, 0.796417, 0.796475, 0.796533, 0.796591, 0.796649, 0.796707, + 0.796765, 0.796823, 0.796881, 0.796939, 0.796996, 0.797054, 0.797112, 0.797170, + 0.797228, 0.797286, 0.797344, 0.797402, 0.797459, 0.797517, 0.797575, 0.797633, + 0.797691, 0.797749, 0.797806, 0.797864, 0.797922, 0.797980, 0.798038, 0.798095, + 0.798153, 0.798211, 0.798269, 0.798326, 0.798384, 0.798442, 0.798500, 0.798557, + 0.798615, 0.798673, 0.798730, 0.798788, 0.798846, 0.798903, 0.798961, 0.799019, + 0.799076, 0.799134, 0.799192, 0.799249, 0.799307, 0.799365, 0.799422, 0.799480, + 0.799537, 0.799595, 0.799652, 0.799710, 0.799768, 0.799825, 0.799883, 0.799940, + 0.799998, 0.800055, 0.800113, 0.800170, 0.800228, 0.800285, 0.800343, 0.800400, + 0.800458, 0.800515, 0.800573, 0.800630, 0.800687, 0.800745, 0.800802, 0.800860, + 0.800917, 0.800975, 0.801032, 0.801089, 0.801147, 0.801204, 0.801261, 0.801319, + 0.801376, 0.801434, 0.801491, 0.801548, 0.801606, 0.801663, 0.801720, 0.801777, + 0.801835, 0.801892, 0.801949, 0.802007, 0.802064, 0.802121, 0.802178, 0.802236, + 0.802293, 0.802350, 0.802407, 0.802464, 0.802522, 0.802579, 0.802636, 0.802693, + 0.802750, 0.802808, 0.802865, 0.802922, 0.802979, 0.803036, 0.803093, 0.803150, + 0.803208, 0.803265, 0.803322, 0.803379, 0.803436, 0.803493, 0.803550, 0.803607, + 0.803664, 0.803721, 0.803778, 0.803835, 0.803892, 0.803949, 0.804006, 0.804063, + 0.804120, 0.804177, 0.804234, 0.804291, 0.804348, 0.804405, 0.804462, 0.804519, + 0.804576, 0.804633, 0.804690, 0.804747, 0.804804, 0.804861, 0.804918, 0.804974, + 0.805031, 0.805088, 0.805145, 0.805202, 0.805259, 0.805316, 0.805372, 0.805429, + 0.805486, 0.805543, 0.805600, 0.805656, 0.805713, 0.805770, 0.805827, 0.805884, + 0.805940, 0.805997, 0.806054, 0.806111, 0.806167, 0.806224, 0.806281, 0.806338, + 0.806394, 0.806451, 0.806508, 0.806564, 0.806621, 0.806678, 0.806734, 0.806791, + 0.806848, 0.806904, 0.806961, 0.807017, 0.807074, 0.807131, 0.807187, 0.807244, + 0.807300, 0.807357, 0.807414, 0.807470, 0.807527, 0.807583, 0.807640, 0.807696, + 0.807753, 0.807809, 0.807866, 0.807922, 0.807979, 0.808035, 0.808092, 0.808148, + 0.808205, 0.808261, 0.808318, 0.808374, 0.808430, 0.808487, 0.808543, 0.808600, + 0.808656, 0.808713, 0.808769, 0.808825, 0.808882, 0.808938, 0.808994, 0.809051, + 0.809107, 0.809164, 0.809220, 0.809276, 0.809332, 0.809389, 0.809445, 0.809501, + 0.809558, 0.809614, 0.809670, 0.809726, 0.809783, 0.809839, 0.809895, 0.809951, + 0.810008, 0.810064, 0.810120, 0.810176, 0.810232, 0.810289, 0.810345, 0.810401, + 0.810457, 0.810513, 0.810570, 0.810626, 0.810682, 0.810738, 0.810794, 0.810850, + 0.810906, 0.810962, 0.811018, 0.811075, 0.811131, 0.811187, 0.811243, 0.811299, + 0.811355, 0.811411, 0.811467, 0.811523, 0.811579, 0.811635, 0.811691, 0.811747, + 0.811803, 0.811859, 0.811915, 0.811971, 0.812027, 0.812083, 0.812139, 0.812195, + 0.812251, 0.812307, 0.812362, 0.812418, 0.812474, 0.812530, 0.812586, 0.812642, + 0.812698, 0.812754, 0.812809, 0.812865, 0.812921, 0.812977, 0.813033, 0.813089, + 0.813144, 0.813200, 0.813256, 0.813312, 0.813368, 0.813423, 0.813479, 0.813535, + 0.813591, 0.813646, 0.813702, 0.813758, 0.813814, 0.813869, 0.813925, 0.813981, + 0.814036, 0.814092, 0.814148, 0.814203, 0.814259, 0.814315, 0.814370, 0.814426, + 0.814482, 0.814537, 0.814593, 0.814648, 0.814704, 0.814760, 0.814815, 0.814871, + 0.814926, 0.814982, 0.815037, 0.815093, 0.815149, 0.815204, 0.815260, 0.815315, + 0.815371, 0.815426, 0.815482, 0.815537, 0.815593, 0.815648, 0.815704, 0.815759, + 0.815814, 0.815870, 0.815925, 0.815981, 0.816036, 0.816092, 0.816147, 0.816202, + 0.816258, 0.816313, 0.816368, 0.816424, 0.816479, 0.816535, 0.816590, 0.816645, + 0.816701, 0.816756, 0.816811, 0.816867, 0.816922, 0.816977, 0.817032, 0.817088, + 0.817143, 0.817198, 0.817253, 0.817309, 0.817364, 0.817419, 0.817474, 0.817530, + 0.817585, 0.817640, 0.817695, 0.817750, 0.817806, 0.817861, 0.817916, 0.817971, + 0.818026, 0.818081, 0.818137, 0.818192, 0.818247, 0.818302, 0.818357, 0.818412, + 0.818467, 0.818522, 0.818577, 0.818632, 0.818687, 0.818742, 0.818798, 0.818853, + 0.818908, 0.818963, 0.819018, 0.819073, 0.819128, 0.819183, 0.819238, 0.819293, + 0.819348, 0.819402, 0.819457, 0.819512, 0.819567, 0.819622, 0.819677, 0.819732, + 0.819787, 0.819842, 0.819897, 0.819952, 0.820007, 0.820061, 0.820116, 0.820171, + 0.820226, 0.820281, 0.820336, 0.820390, 0.820445, 0.820500, 0.820555, 0.820610, + 0.820664, 0.820719, 0.820774, 0.820829, 0.820884, 0.820938, 0.820993, 0.821048, + 0.821102, 0.821157, 0.821212, 0.821267, 0.821321, 0.821376, 0.821431, 0.821485, + 0.821540, 0.821595, 0.821649, 0.821704, 0.821759, 0.821813, 0.821868, 0.821922, + 0.821977, 0.822032, 0.822086, 0.822141, 0.822195, 0.822250, 0.822305, 0.822359, + 0.822414, 0.822468, 0.822523, 0.822577, 0.822632, 0.822686, 0.822741, 0.822795, + 0.822850, 0.822904, 0.822959, 0.823013, 0.823068, 0.823122, 0.823177, 0.823231, + 0.823285, 0.823340, 0.823394, 0.823449, 0.823503, 0.823557, 0.823612, 0.823666, + 0.823721, 0.823775, 0.823829, 0.823884, 0.823938, 0.823992, 0.824047, 0.824101, + 0.824155, 0.824209, 0.824264, 0.824318, 0.824372, 0.824427, 0.824481, 0.824535, + 0.824589, 0.824644, 0.824698, 0.824752, 0.824806, 0.824860, 0.824915, 0.824969, + 0.825023, 0.825077, 0.825131, 0.825185, 0.825240, 0.825294, 0.825348, 0.825402, + 0.825456, 0.825510, 0.825564, 0.825618, 0.825673, 0.825727, 0.825781, 0.825835, + 0.825889, 0.825943, 0.825997, 0.826051, 0.826105, 0.826159, 0.826213, 0.826267, + 0.826321, 0.826375, 0.826429, 0.826483, 0.826537, 0.826591, 0.826645, 0.826699, + 0.826753, 0.826807, 0.826861, 0.826915, 0.826968, 0.827022, 0.827076, 0.827130, + 0.827184, 0.827238, 0.827292, 0.827346, 0.827399, 0.827453, 0.827507, 0.827561, + 0.827615, 0.827669, 0.827722, 0.827776, 0.827830, 0.827884, 0.827938, 0.827991, + 0.828045, 0.828099, 0.828153, 0.828206, 0.828260, 0.828314, 0.828367, 0.828421, + 0.828475, 0.828529, 0.828582, 0.828636, 0.828690, 0.828743, 0.828797, 0.828851, + 0.828904, 0.828958, 0.829011, 0.829065, 0.829119, 0.829172, 0.829226, 0.829279, + 0.829333, 0.829386, 0.829440, 0.829494, 0.829547, 0.829601, 0.829654, 0.829708, + 0.829761, 0.829815, 0.829868, 0.829922, 0.829975, 0.830029, 0.830082, 0.830136, + 0.830189, 0.830243, 0.830296, 0.830349, 0.830403, 0.830456, 0.830510, 0.830563, + 0.830616, 0.830670, 0.830723, 0.830777, 0.830830, 0.830883, 0.830937, 0.830990, + 0.831043, 0.831097, 0.831150, 0.831203, 0.831257, 0.831310, 0.831363, 0.831416, + 0.831470, 0.831523, 0.831576, 0.831629, 0.831683, 0.831736, 0.831789, 0.831842, + 0.831895, 0.831949, 0.832002, 0.832055, 0.832108, 0.832161, 0.832215, 0.832268, + 0.832321, 0.832374, 0.832427, 0.832480, 0.832533, 0.832586, 0.832640, 0.832693, + 0.832746, 0.832799, 0.832852, 0.832905, 0.832958, 0.833011, 0.833064, 0.833117, + 0.833170, 0.833223, 0.833276, 0.833329, 0.833382, 0.833435, 0.833488, 0.833541, + 0.833594, 0.833647, 0.833700, 0.833753, 0.833806, 0.833859, 0.833912, 0.833965, + 0.834018, 0.834070, 0.834123, 0.834176, 0.834229, 0.834282, 0.834335, 0.834388, + 0.834440, 0.834493, 0.834546, 0.834599, 0.834652, 0.834705, 0.834757, 0.834810, + 0.834863, 0.834916, 0.834968, 0.835021, 0.835074, 0.835127, 0.835179, 0.835232, + 0.835285, 0.835338, 0.835390, 0.835443, 0.835496, 0.835548, 0.835601, 0.835654, + 0.835706, 0.835759, 0.835812, 0.835864, 0.835917, 0.835969, 0.836022, 0.836075, + 0.836127, 0.836180, 0.836232, 0.836285, 0.836338, 0.836390, 0.836443, 0.836495, + 0.836548, 0.836600, 0.836653, 0.836705, 0.836758, 0.836810, 0.836863, 0.836915, + 0.836968, 0.837020, 0.837073, 0.837125, 0.837178, 0.837230, 0.837282, 0.837335, + 0.837387, 0.837440, 0.837492, 0.837544, 0.837597, 0.837649, 0.837701, 0.837754, + 0.837806, 0.837859, 0.837911, 0.837963, 0.838015, 0.838068, 0.838120, 0.838172, + 0.838225, 0.838277, 0.838329, 0.838382, 0.838434, 0.838486, 0.838538, 0.838591, + 0.838643, 0.838695, 0.838747, 0.838799, 0.838852, 0.838904, 0.838956, 0.839008, + 0.839060, 0.839112, 0.839165, 0.839217, 0.839269, 0.839321, 0.839373, 0.839425, + 0.839477, 0.839529, 0.839581, 0.839634, 0.839686, 0.839738, 0.839790, 0.839842, + 0.839894, 0.839946, 0.839998, 0.840050, 0.840102, 0.840154, 0.840206, 0.840258, + 0.840310, 0.840362, 0.840414, 0.840466, 0.840518, 0.840570, 0.840622, 0.840673, + 0.840725, 0.840777, 0.840829, 0.840881, 0.840933, 0.840985, 0.841037, 0.841089, + 0.841140, 0.841192, 0.841244, 0.841296, 0.841348, 0.841400, 0.841451, 0.841503, + 0.841555, 0.841607, 0.841659, 0.841710, 0.841762, 0.841814, 0.841866, 0.841917, + 0.841969, 0.842021, 0.842072, 0.842124, 0.842176, 0.842228, 0.842279, 0.842331, + 0.842383, 0.842434, 0.842486, 0.842538, 0.842589, 0.842641, 0.842692, 0.842744, + 0.842796, 0.842847, 0.842899, 0.842950, 0.843002, 0.843054, 0.843105, 0.843157, + 0.843208, 0.843260, 0.843311, 0.843363, 0.843414, 0.843466, 0.843517, 0.843569, + 0.843620, 0.843672, 0.843723, 0.843775, 0.843826, 0.843878, 0.843929, 0.843980, + 0.844032, 0.844083, 0.844135, 0.844186, 0.844238, 0.844289, 0.844340, 0.844392, + 0.844443, 0.844494, 0.844546, 0.844597, 0.844648, 0.844700, 0.844751, 0.844802, + 0.844854, 0.844905, 0.844956, 0.845007, 0.845059, 0.845110, 0.845161, 0.845212, + 0.845264, 0.845315, 0.845366, 0.845417, 0.845469, 0.845520, 0.845571, 0.845622, + 0.845673, 0.845724, 0.845776, 0.845827, 0.845878, 0.845929, 0.845980, 0.846031, + 0.846082, 0.846133, 0.846185, 0.846236, 0.846287, 0.846338, 0.846389, 0.846440, + 0.846491, 0.846542, 0.846593, 0.846644, 0.846695, 0.846746, 0.846797, 0.846848, + 0.846899, 0.846950, 0.847001, 0.847052, 0.847103, 0.847154, 0.847205, 0.847256, + 0.847307, 0.847358, 0.847408, 0.847459, 0.847510, 0.847561, 0.847612, 0.847663, + 0.847714, 0.847765, 0.847815, 0.847866, 0.847917, 0.847968, 0.848019, 0.848070, + 0.848120, 0.848171, 0.848222, 0.848273, 0.848323, 0.848374, 0.848425, 0.848476, + 0.848526, 0.848577, 0.848628, 0.848679, 0.848729, 0.848780, 0.848831, 0.848881, + 0.848932, 0.848983, 0.849033, 0.849084, 0.849135, 0.849185, 0.849236, 0.849287, + 0.849337, 0.849388, 0.849438, 0.849489, 0.849540, 0.849590, 0.849641, 0.849691, + 0.849742, 0.849792, 0.849843, 0.849893, 0.849944, 0.849994, 0.850045, 0.850095, + 0.850146, 0.850196, 0.850247, 0.850297, 0.850348, 0.850398, 0.850449, 0.850499, + 0.850549, 0.850600, 0.850650, 0.850701, 0.850751, 0.850801, 0.850852, 0.850902, + 0.850953, 0.851003, 0.851053, 0.851104, 0.851154, 0.851204, 0.851255, 0.851305, + 0.851355, 0.851406, 0.851456, 0.851506, 0.851556, 0.851607, 0.851657, 0.851707, + 0.851757, 0.851808, 0.851858, 0.851908, 0.851958, 0.852008, 0.852059, 0.852109, + 0.852159, 0.852209, 0.852259, 0.852309, 0.852360, 0.852410, 0.852460, 0.852510, + 0.852560, 0.852610, 0.852660, 0.852710, 0.852760, 0.852810, 0.852861, 0.852911, + 0.852961, 0.853011, 0.853061, 0.853111, 0.853161, 0.853211, 0.853261, 0.853311, + 0.853361, 0.853411, 0.853461, 0.853511, 0.853561, 0.853611, 0.853660, 0.853710, + 0.853760, 0.853810, 0.853860, 0.853910, 0.853960, 0.854010, 0.854060, 0.854110, + 0.854159, 0.854209, 0.854259, 0.854309, 0.854359, 0.854409, 0.854458, 0.854508, + 0.854558, 0.854608, 0.854658, 0.854707, 0.854757, 0.854807, 0.854857, 0.854906, + 0.854956, 0.855006, 0.855056, 0.855105, 0.855155, 0.855205, 0.855254, 0.855304, + 0.855354, 0.855403, 0.855453, 0.855503, 0.855552, 0.855602, 0.855651, 0.855701, + 0.855751, 0.855800, 0.855850, 0.855900, 0.855949, 0.855999, 0.856048, 0.856098, + 0.856147, 0.856197, 0.856246, 0.856296, 0.856345, 0.856395, 0.856444, 0.856494, + 0.856543, 0.856593, 0.856642, 0.856692, 0.856741, 0.856791, 0.856840, 0.856890, + 0.856939, 0.856988, 0.857038, 0.857087, 0.857137, 0.857186, 0.857235, 0.857285, + 0.857334, 0.857383, 0.857433, 0.857482, 0.857531, 0.857581, 0.857630, 0.857679, + 0.857729, 0.857778, 0.857827, 0.857876, 0.857926, 0.857975, 0.858024, 0.858073, + 0.858123, 0.858172, 0.858221, 0.858270, 0.858320, 0.858369, 0.858418, 0.858467, + 0.858516, 0.858565, 0.858615, 0.858664, 0.858713, 0.858762, 0.858811, 0.858860, + 0.858909, 0.858958, 0.859007, 0.859057, 0.859106, 0.859155, 0.859204, 0.859253, + 0.859302, 0.859351, 0.859400, 0.859449, 0.859498, 0.859547, 0.859596, 0.859645, + 0.859694, 0.859743, 0.859792, 0.859841, 0.859890, 0.859939, 0.859988, 0.860036, + 0.860085, 0.860134, 0.860183, 0.860232, 0.860281, 0.860330, 0.860379, 0.860428, + 0.860476, 0.860525, 0.860574, 0.860623, 0.860672, 0.860721, 0.860769, 0.860818, + 0.860867, 0.860916, 0.860964, 0.861013, 0.861062, 0.861111, 0.861160, 0.861208, + 0.861257, 0.861306, 0.861354, 0.861403, 0.861452, 0.861500, 0.861549, 0.861598, + 0.861646, 0.861695, 0.861744, 0.861792, 0.861841, 0.861890, 0.861938, 0.861987, + 0.862035, 0.862084, 0.862133, 0.862181, 0.862230, 0.862278, 0.862327, 0.862375, + 0.862424, 0.862472, 0.862521, 0.862570, 0.862618, 0.862666, 0.862715, 0.862763, + 0.862812, 0.862860, 0.862909, 0.862957, 0.863006, 0.863054, 0.863103, 0.863151, + 0.863199, 0.863248, 0.863296, 0.863345, 0.863393, 0.863441, 0.863490, 0.863538, + 0.863586, 0.863635, 0.863683, 0.863731, 0.863780, 0.863828, 0.863876, 0.863925, + 0.863973, 0.864021, 0.864069, 0.864118, 0.864166, 0.864214, 0.864262, 0.864311, + 0.864359, 0.864407, 0.864455, 0.864503, 0.864552, 0.864600, 0.864648, 0.864696, + 0.864744, 0.864792, 0.864841, 0.864889, 0.864937, 0.864985, 0.865033, 0.865081, + 0.865129, 0.865177, 0.865225, 0.865273, 0.865321, 0.865369, 0.865418, 0.865466, + 0.865514, 0.865562, 0.865610, 0.865658, 0.865706, 0.865754, 0.865802, 0.865850, + 0.865898, 0.865946, 0.865993, 0.866041, 0.866089, 0.866137, 0.866185, 0.866233, + 0.866281, 0.866329, 0.866377, 0.866425, 0.866472, 0.866520, 0.866568, 0.866616, + 0.866664, 0.866712, 0.866759, 0.866807, 0.866855, 0.866903, 0.866951, 0.866998, + 0.867046, 0.867094, 0.867142, 0.867190, 0.867237, 0.867285, 0.867333, 0.867380, + 0.867428, 0.867476, 0.867523, 0.867571, 0.867619, 0.867667, 0.867714, 0.867762, + 0.867809, 0.867857, 0.867905, 0.867952, 0.868000, 0.868048, 0.868095, 0.868143, + 0.868190, 0.868238, 0.868285, 0.868333, 0.868381, 0.868428, 0.868476, 0.868523, + 0.868571, 0.868618, 0.868666, 0.868713, 0.868761, 0.868808, 0.868856, 0.868903, + 0.868951, 0.868998, 0.869045, 0.869093, 0.869140, 0.869188, 0.869235, 0.869282, + 0.869330, 0.869377, 0.869425, 0.869472, 0.869519, 0.869567, 0.869614, 0.869661, + 0.869709, 0.869756, 0.869803, 0.869851, 0.869898, 0.869945, 0.869992, 0.870040, + 0.870087, 0.870134, 0.870182, 0.870229, 0.870276, 0.870323, 0.870370, 0.870418, + 0.870465, 0.870512, 0.870559, 0.870606, 0.870654, 0.870701, 0.870748, 0.870795, + 0.870842, 0.870889, 0.870936, 0.870983, 0.871031, 0.871078, 0.871125, 0.871172, + 0.871219, 0.871266, 0.871313, 0.871360, 0.871407, 0.871454, 0.871501, 0.871548, + 0.871595, 0.871642, 0.871689, 0.871736, 0.871783, 0.871830, 0.871877, 0.871924, + 0.871971, 0.872018, 0.872065, 0.872112, 0.872159, 0.872205, 0.872252, 0.872299, + 0.872346, 0.872393, 0.872440, 0.872487, 0.872534, 0.872580, 0.872627, 0.872674, + 0.872721, 0.872768, 0.872814, 0.872861, 0.872908, 0.872955, 0.873001, 0.873048, + 0.873095, 0.873142, 0.873188, 0.873235, 0.873282, 0.873329, 0.873375, 0.873422, + 0.873469, 0.873515, 0.873562, 0.873609, 0.873655, 0.873702, 0.873749, 0.873795, + 0.873842, 0.873888, 0.873935, 0.873982, 0.874028, 0.874075, 0.874121, 0.874168, + 0.874215, 0.874261, 0.874308, 0.874354, 0.874401, 0.874447, 0.874494, 0.874540, + 0.874587, 0.874633, 0.874680, 0.874726, 0.874773, 0.874819, 0.874865, 0.874912, + 0.874958, 0.875005, 0.875051, 0.875098, 0.875144, 0.875190, 0.875237, 0.875283, + 0.875329, 0.875376, 0.875422, 0.875468, 0.875515, 0.875561, 0.875607, 0.875654, + 0.875700, 0.875746, 0.875793, 0.875839, 0.875885, 0.875931, 0.875978, 0.876024, + 0.876070, 0.876116, 0.876163, 0.876209, 0.876255, 0.876301, 0.876347, 0.876393, + 0.876440, 0.876486, 0.876532, 0.876578, 0.876624, 0.876670, 0.876716, 0.876763, + 0.876809, 0.876855, 0.876901, 0.876947, 0.876993, 0.877039, 0.877085, 0.877131, + 0.877177, 0.877223, 0.877269, 0.877315, 0.877361, 0.877407, 0.877453, 0.877499, + 0.877545, 0.877591, 0.877637, 0.877683, 0.877729, 0.877775, 0.877821, 0.877867, + 0.877913, 0.877959, 0.878005, 0.878051, 0.878096, 0.878142, 0.878188, 0.878234, + 0.878280, 0.878326, 0.878371, 0.878417, 0.878463, 0.878509, 0.878555, 0.878600, + 0.878646, 0.878692, 0.878738, 0.878784, 0.878829, 0.878875, 0.878921, 0.878967, + 0.879012, 0.879058, 0.879104, 0.879149, 0.879195, 0.879241, 0.879286, 0.879332, + 0.879378, 0.879423, 0.879469, 0.879515, 0.879560, 0.879606, 0.879651, 0.879697, + 0.879743, 0.879788, 0.879834, 0.879879, 0.879925, 0.879970, 0.880016, 0.880061, + 0.880107, 0.880153, 0.880198, 0.880244, 0.880289, 0.880334, 0.880380, 0.880425, + 0.880471, 0.880516, 0.880562, 0.880607, 0.880653, 0.880698, 0.880743, 0.880789, + 0.880834, 0.880880, 0.880925, 0.880970, 0.881016, 0.881061, 0.881106, 0.881152, + 0.881197, 0.881242, 0.881288, 0.881333, 0.881378, 0.881424, 0.881469, 0.881514, + 0.881559, 0.881605, 0.881650, 0.881695, 0.881740, 0.881786, 0.881831, 0.881876, + 0.881921, 0.881966, 0.882012, 0.882057, 0.882102, 0.882147, 0.882192, 0.882237, + 0.882283, 0.882328, 0.882373, 0.882418, 0.882463, 0.882508, 0.882553, 0.882598, + 0.882643, 0.882688, 0.882733, 0.882779, 0.882824, 0.882869, 0.882914, 0.882959, + 0.883004, 0.883049, 0.883094, 0.883139, 0.883184, 0.883228, 0.883273, 0.883318, + 0.883363, 0.883408, 0.883453, 0.883498, 0.883543, 0.883588, 0.883633, 0.883678, + 0.883723, 0.883767, 0.883812, 0.883857, 0.883902, 0.883947, 0.883992, 0.884036, + 0.884081, 0.884126, 0.884171, 0.884216, 0.884260, 0.884305, 0.884350, 0.884395, + 0.884439, 0.884484, 0.884529, 0.884574, 0.884618, 0.884663, 0.884708, 0.884752, + 0.884797, 0.884842, 0.884886, 0.884931, 0.884976, 0.885020, 0.885065, 0.885110, + 0.885154, 0.885199, 0.885243, 0.885288, 0.885333, 0.885377, 0.885422, 0.885466, + 0.885511, 0.885555, 0.885600, 0.885644, 0.885689, 0.885733, 0.885778, 0.885822, + 0.885867, 0.885911, 0.885956, 0.886000, 0.886045, 0.886089, 0.886134, 0.886178, + 0.886223, 0.886267, 0.886311, 0.886356, 0.886400, 0.886445, 0.886489, 0.886533, + 0.886578, 0.886622, 0.886666, 0.886711, 0.886755, 0.886799, 0.886844, 0.886888, + 0.886932, 0.886976, 0.887021, 0.887065, 0.887109, 0.887153, 0.887198, 0.887242, + 0.887286, 0.887330, 0.887375, 0.887419, 0.887463, 0.887507, 0.887551, 0.887595, + 0.887640, 0.887684, 0.887728, 0.887772, 0.887816, 0.887860, 0.887904, 0.887949, + 0.887993, 0.888037, 0.888081, 0.888125, 0.888169, 0.888213, 0.888257, 0.888301, + 0.888345, 0.888389, 0.888433, 0.888477, 0.888521, 0.888565, 0.888609, 0.888653, + 0.888697, 0.888741, 0.888785, 0.888829, 0.888873, 0.888917, 0.888961, 0.889004, + 0.889048, 0.889092, 0.889136, 0.889180, 0.889224, 0.889268, 0.889312, 0.889355, + 0.889399, 0.889443, 0.889487, 0.889531, 0.889574, 0.889618, 0.889662, 0.889706, + 0.889750, 0.889793, 0.889837, 0.889881, 0.889925, 0.889968, 0.890012, 0.890056, + 0.890099, 0.890143, 0.890187, 0.890230, 0.890274, 0.890318, 0.890361, 0.890405, + 0.890449, 0.890492, 0.890536, 0.890580, 0.890623, 0.890667, 0.890710, 0.890754, + 0.890797, 0.890841, 0.890885, 0.890928, 0.890972, 0.891015, 0.891059, 0.891102, + 0.891146, 0.891189, 0.891233, 0.891276, 0.891320, 0.891363, 0.891407, 0.891450, + 0.891493, 0.891537, 0.891580, 0.891624, 0.891667, 0.891711, 0.891754, 0.891797, + 0.891841, 0.891884, 0.891927, 0.891971, 0.892014, 0.892057, 0.892101, 0.892144, + 0.892187, 0.892231, 0.892274, 0.892317, 0.892361, 0.892404, 0.892447, 0.892490, + 0.892534, 0.892577, 0.892620, 0.892663, 0.892706, 0.892750, 0.892793, 0.892836, + 0.892879, 0.892922, 0.892965, 0.893009, 0.893052, 0.893095, 0.893138, 0.893181, + 0.893224, 0.893267, 0.893310, 0.893354, 0.893397, 0.893440, 0.893483, 0.893526, + 0.893569, 0.893612, 0.893655, 0.893698, 0.893741, 0.893784, 0.893827, 0.893870, + 0.893913, 0.893956, 0.893999, 0.894042, 0.894085, 0.894128, 0.894171, 0.894214, + 0.894256, 0.894299, 0.894342, 0.894385, 0.894428, 0.894471, 0.894514, 0.894557, + 0.894599, 0.894642, 0.894685, 0.894728, 0.894771, 0.894814, 0.894856, 0.894899, + 0.894942, 0.894985, 0.895028, 0.895070, 0.895113, 0.895156, 0.895198, 0.895241, + 0.895284, 0.895327, 0.895369, 0.895412, 0.895455, 0.895497, 0.895540, 0.895583, + 0.895625, 0.895668, 0.895711, 0.895753, 0.895796, 0.895838, 0.895881, 0.895924, + 0.895966, 0.896009, 0.896051, 0.896094, 0.896137, 0.896179, 0.896222, 0.896264, + 0.896307, 0.896349, 0.896392, 0.896434, 0.896477, 0.896519, 0.896562, 0.896604, + 0.896646, 0.896689, 0.896731, 0.896774, 0.896816, 0.896859, 0.896901, 0.896943, + 0.896986, 0.897028, 0.897071, 0.897113, 0.897155, 0.897198, 0.897240, 0.897282, + 0.897325, 0.897367, 0.897409, 0.897452, 0.897494, 0.897536, 0.897578, 0.897621, + 0.897663, 0.897705, 0.897747, 0.897790, 0.897832, 0.897874, 0.897916, 0.897958, + 0.898001, 0.898043, 0.898085, 0.898127, 0.898169, 0.898211, 0.898254, 0.898296, + 0.898338, 0.898380, 0.898422, 0.898464, 0.898506, 0.898548, 0.898590, 0.898632, + 0.898674, 0.898717, 0.898759, 0.898801, 0.898843, 0.898885, 0.898927, 0.898969, + 0.899011, 0.899053, 0.899095, 0.899137, 0.899179, 0.899220, 0.899262, 0.899304, + 0.899346, 0.899388, 0.899430, 0.899472, 0.899514, 0.899556, 0.899598, 0.899639, + 0.899681, 0.899723, 0.899765, 0.899807, 0.899849, 0.899890, 0.899932, 0.899974, + 0.900016, 0.900058, 0.900099, 0.900141, 0.900183, 0.900225, 0.900266, 0.900308, + 0.900350, 0.900392, 0.900433, 0.900475, 0.900517, 0.900558, 0.900600, 0.900642, + 0.900683, 0.900725, 0.900767, 0.900808, 0.900850, 0.900892, 0.900933, 0.900975, + 0.901016, 0.901058, 0.901100, 0.901141, 0.901183, 0.901224, 0.901266, 0.901307, + 0.901349, 0.901390, 0.901432, 0.901473, 0.901515, 0.901556, 0.901598, 0.901639, + 0.901681, 0.901722, 0.901764, 0.901805, 0.901847, 0.901888, 0.901929, 0.901971, + 0.902012, 0.902054, 0.902095, 0.902136, 0.902178, 0.902219, 0.902260, 0.902302, + 0.902343, 0.902384, 0.902426, 0.902467, 0.902508, 0.902550, 0.902591, 0.902632, + 0.902673, 0.902715, 0.902756, 0.902797, 0.902838, 0.902879, 0.902921, 0.902962, + 0.903003, 0.903044, 0.903085, 0.903127, 0.903168, 0.903209, 0.903250, 0.903291, + 0.903332, 0.903373, 0.903415, 0.903456, 0.903497, 0.903538, 0.903579, 0.903620, + 0.903661, 0.903702, 0.903743, 0.903784, 0.903825, 0.903866, 0.903907, 0.903948, + 0.903989, 0.904030, 0.904071, 0.904112, 0.904153, 0.904194, 0.904235, 0.904276, + 0.904317, 0.904358, 0.904399, 0.904440, 0.904481, 0.904521, 0.904562, 0.904603, + 0.904644, 0.904685, 0.904726, 0.904767, 0.904807, 0.904848, 0.904889, 0.904930, + 0.904971, 0.905011, 0.905052, 0.905093, 0.905134, 0.905175, 0.905215, 0.905256, + 0.905297, 0.905337, 0.905378, 0.905419, 0.905460, 0.905500, 0.905541, 0.905582, + 0.905622, 0.905663, 0.905704, 0.905744, 0.905785, 0.905825, 0.905866, 0.905907, + 0.905947, 0.905988, 0.906028, 0.906069, 0.906110, 0.906150, 0.906191, 0.906231, + 0.906272, 0.906312, 0.906353, 0.906393, 0.906434, 0.906474, 0.906515, 0.906555, + 0.906596, 0.906636, 0.906677, 0.906717, 0.906757, 0.906798, 0.906838, 0.906879, + 0.906919, 0.906959, 0.907000, 0.907040, 0.907081, 0.907121, 0.907161, 0.907202, + 0.907242, 0.907282, 0.907323, 0.907363, 0.907403, 0.907444, 0.907484, 0.907524, + 0.907564, 0.907605, 0.907645, 0.907685, 0.907725, 0.907766, 0.907806, 0.907846, + 0.907886, 0.907926, 0.907966, 0.908007, 0.908047, 0.908087, 0.908127, 0.908167, + 0.908207, 0.908248, 0.908288, 0.908328, 0.908368, 0.908408, 0.908448, 0.908488, + 0.908528, 0.908568, 0.908608, 0.908648, 0.908688, 0.908728, 0.908768, 0.908808, + 0.908848, 0.908888, 0.908928, 0.908968, 0.909008, 0.909048, 0.909088, 0.909128, + 0.909168, 0.909208, 0.909248, 0.909288, 0.909328, 0.909368, 0.909407, 0.909447, + 0.909487, 0.909527, 0.909567, 0.909607, 0.909646, 0.909686, 0.909726, 0.909766, + 0.909806, 0.909845, 0.909885, 0.909925, 0.909965, 0.910005, 0.910044, 0.910084, + 0.910124, 0.910163, 0.910203, 0.910243, 0.910283, 0.910322, 0.910362, 0.910402, + 0.910441, 0.910481, 0.910521, 0.910560, 0.910600, 0.910639, 0.910679, 0.910719, + 0.910758, 0.910798, 0.910837, 0.910877, 0.910917, 0.910956, 0.910996, 0.911035, + 0.911075, 0.911114, 0.911154, 0.911193, 0.911233, 0.911272, 0.911312, 0.911351, + 0.911391, 0.911430, 0.911470, 0.911509, 0.911548, 0.911588, 0.911627, 0.911667, + 0.911706, 0.911745, 0.911785, 0.911824, 0.911864, 0.911903, 0.911942, 0.911982, + 0.912021, 0.912060, 0.912099, 0.912139, 0.912178, 0.912217, 0.912257, 0.912296, + 0.912335, 0.912374, 0.912414, 0.912453, 0.912492, 0.912531, 0.912571, 0.912610, + 0.912649, 0.912688, 0.912727, 0.912766, 0.912806, 0.912845, 0.912884, 0.912923, + 0.912962, 0.913001, 0.913040, 0.913080, 0.913119, 0.913158, 0.913197, 0.913236, + 0.913275, 0.913314, 0.913353, 0.913392, 0.913431, 0.913470, 0.913509, 0.913548, + 0.913587, 0.913626, 0.913665, 0.913704, 0.913743, 0.913782, 0.913821, 0.913860, + 0.913899, 0.913938, 0.913976, 0.914015, 0.914054, 0.914093, 0.914132, 0.914171, + 0.914210, 0.914249, 0.914287, 0.914326, 0.914365, 0.914404, 0.914443, 0.914482, + 0.914520, 0.914559, 0.914598, 0.914637, 0.914675, 0.914714, 0.914753, 0.914792, + 0.914830, 0.914869, 0.914908, 0.914946, 0.914985, 0.915024, 0.915062, 0.915101, + 0.915140, 0.915178, 0.915217, 0.915256, 0.915294, 0.915333, 0.915372, 0.915410, + 0.915449, 0.915487, 0.915526, 0.915564, 0.915603, 0.915642, 0.915680, 0.915719, + 0.915757, 0.915796, 0.915834, 0.915873, 0.915911, 0.915950, 0.915988, 0.916027, + 0.916065, 0.916103, 0.916142, 0.916180, 0.916219, 0.916257, 0.916296, 0.916334, + 0.916372, 0.916411, 0.916449, 0.916487, 0.916526, 0.916564, 0.916602, 0.916641, + 0.916679, 0.916717, 0.916756, 0.916794, 0.916832, 0.916871, 0.916909, 0.916947, + 0.916985, 0.917024, 0.917062, 0.917100, 0.917138, 0.917176, 0.917215, 0.917253, + 0.917291, 0.917329, 0.917367, 0.917405, 0.917444, 0.917482, 0.917520, 0.917558, + 0.917596, 0.917634, 0.917672, 0.917710, 0.917749, 0.917787, 0.917825, 0.917863, + 0.917901, 0.917939, 0.917977, 0.918015, 0.918053, 0.918091, 0.918129, 0.918167, + 0.918205, 0.918243, 0.918281, 0.918319, 0.918357, 0.918395, 0.918433, 0.918471, + 0.918508, 0.918546, 0.918584, 0.918622, 0.918660, 0.918698, 0.918736, 0.918774, + 0.918811, 0.918849, 0.918887, 0.918925, 0.918963, 0.919001, 0.919038, 0.919076, + 0.919114, 0.919152, 0.919189, 0.919227, 0.919265, 0.919303, 0.919340, 0.919378, + 0.919416, 0.919453, 0.919491, 0.919529, 0.919567, 0.919604, 0.919642, 0.919680, + 0.919717, 0.919755, 0.919792, 0.919830, 0.919868, 0.919905, 0.919943, 0.919980, + 0.920018, 0.920056, 0.920093, 0.920131, 0.920168, 0.920206, 0.920243, 0.920281, + 0.920318, 0.920356, 0.920393, 0.920431, 0.920468, 0.920506, 0.920543, 0.920581, + 0.920618, 0.920655, 0.920693, 0.920730, 0.920768, 0.920805, 0.920842, 0.920880, + 0.920917, 0.920955, 0.920992, 0.921029, 0.921067, 0.921104, 0.921141, 0.921179, + 0.921216, 0.921253, 0.921291, 0.921328, 0.921365, 0.921402, 0.921440, 0.921477, + 0.921514, 0.921551, 0.921588, 0.921626, 0.921663, 0.921700, 0.921737, 0.921774, + 0.921812, 0.921849, 0.921886, 0.921923, 0.921960, 0.921997, 0.922034, 0.922072, + 0.922109, 0.922146, 0.922183, 0.922220, 0.922257, 0.922294, 0.922331, 0.922368, + 0.922405, 0.922442, 0.922479, 0.922516, 0.922553, 0.922590, 0.922627, 0.922664, + 0.922701, 0.922738, 0.922775, 0.922812, 0.922849, 0.922886, 0.922923, 0.922960, + 0.922997, 0.923033, 0.923070, 0.923107, 0.923144, 0.923181, 0.923218, 0.923255, + 0.923291, 0.923328, 0.923365, 0.923402, 0.923439, 0.923475, 0.923512, 0.923549, + 0.923586, 0.923622, 0.923659, 0.923696, 0.923733, 0.923769, 0.923806, 0.923843, + 0.923880, 0.923916, 0.923953, 0.923990, 0.924026, 0.924063, 0.924100, 0.924136, + 0.924173, 0.924209, 0.924246, 0.924283, 0.924319, 0.924356, 0.924392, 0.924429, + 0.924465, 0.924502, 0.924539, 0.924575, 0.924612, 0.924648, 0.924685, 0.924721, + 0.924758, 0.924794, 0.924831, 0.924867, 0.924904, 0.924940, 0.924976, 0.925013, + 0.925049, 0.925086, 0.925122, 0.925158, 0.925195, 0.925231, 0.925268, 0.925304, + 0.925340, 0.925377, 0.925413, 0.925449, 0.925486, 0.925522, 0.925558, 0.925595, + 0.925631, 0.925667, 0.925703, 0.925740, 0.925776, 0.925812, 0.925848, 0.925885, + 0.925921, 0.925957, 0.925993, 0.926029, 0.926066, 0.926102, 0.926138, 0.926174, + 0.926210, 0.926246, 0.926283, 0.926319, 0.926355, 0.926391, 0.926427, 0.926463, + 0.926499, 0.926535, 0.926571, 0.926607, 0.926643, 0.926679, 0.926715, 0.926751, + 0.926787, 0.926823, 0.926859, 0.926895, 0.926931, 0.926967, 0.927003, 0.927039, + 0.927075, 0.927111, 0.927147, 0.927183, 0.927219, 0.927255, 0.927291, 0.927327, + 0.927363, 0.927398, 0.927434, 0.927470, 0.927506, 0.927542, 0.927578, 0.927613, + 0.927649, 0.927685, 0.927721, 0.927757, 0.927792, 0.927828, 0.927864, 0.927900, + 0.927935, 0.927971, 0.928007, 0.928043, 0.928078, 0.928114, 0.928150, 0.928185, + 0.928221, 0.928257, 0.928292, 0.928328, 0.928364, 0.928399, 0.928435, 0.928470, + 0.928506, 0.928542, 0.928577, 0.928613, 0.928648, 0.928684, 0.928720, 0.928755, + 0.928791, 0.928826, 0.928862, 0.928897, 0.928933, 0.928968, 0.929004, 0.929039, + 0.929075, 0.929110, 0.929146, 0.929181, 0.929216, 0.929252, 0.929287, 0.929323, + 0.929358, 0.929393, 0.929429, 0.929464, 0.929500, 0.929535, 0.929570, 0.929606, + 0.929641, 0.929676, 0.929712, 0.929747, 0.929782, 0.929817, 0.929853, 0.929888, + 0.929923, 0.929958, 0.929994, 0.930029, 0.930064, 0.930099, 0.930135, 0.930170, + 0.930205, 0.930240, 0.930275, 0.930311, 0.930346, 0.930381, 0.930416, 0.930451, + 0.930486, 0.930521, 0.930556, 0.930592, 0.930627, 0.930662, 0.930697, 0.930732, + 0.930767, 0.930802, 0.930837, 0.930872, 0.930907, 0.930942, 0.930977, 0.931012, + 0.931047, 0.931082, 0.931117, 0.931152, 0.931187, 0.931222, 0.931257, 0.931292, + 0.931327, 0.931362, 0.931397, 0.931431, 0.931466, 0.931501, 0.931536, 0.931571, + 0.931606, 0.931641, 0.931675, 0.931710, 0.931745, 0.931780, 0.931815, 0.931849, + 0.931884, 0.931919, 0.931954, 0.931989, 0.932023, 0.932058, 0.932093, 0.932128, + 0.932162, 0.932197, 0.932232, 0.932266, 0.932301, 0.932336, 0.932370, 0.932405, + 0.932440, 0.932474, 0.932509, 0.932544, 0.932578, 0.932613, 0.932647, 0.932682, + 0.932716, 0.932751, 0.932786, 0.932820, 0.932855, 0.932889, 0.932924, 0.932958, + 0.932993, 0.933027, 0.933062, 0.933096, 0.933131, 0.933165, 0.933200, 0.933234, + 0.933269, 0.933303, 0.933337, 0.933372, 0.933406, 0.933441, 0.933475, 0.933509, + 0.933544, 0.933578, 0.933612, 0.933647, 0.933681, 0.933716, 0.933750, 0.933784, + 0.933818, 0.933853, 0.933887, 0.933921, 0.933956, 0.933990, 0.934024, 0.934058, + 0.934093, 0.934127, 0.934161, 0.934195, 0.934229, 0.934264, 0.934298, 0.934332, + 0.934366, 0.934400, 0.934434, 0.934469, 0.934503, 0.934537, 0.934571, 0.934605, + 0.934639, 0.934673, 0.934707, 0.934741, 0.934775, 0.934810, 0.934844, 0.934878, + 0.934912, 0.934946, 0.934980, 0.935014, 0.935048, 0.935082, 0.935116, 0.935150, + 0.935184, 0.935217, 0.935251, 0.935285, 0.935319, 0.935353, 0.935387, 0.935421, + 0.935455, 0.935489, 0.935523, 0.935556, 0.935590, 0.935624, 0.935658, 0.935692, + 0.935726, 0.935759, 0.935793, 0.935827, 0.935861, 0.935895, 0.935928, 0.935962, + 0.935996, 0.936030, 0.936063, 0.936097, 0.936131, 0.936165, 0.936198, 0.936232, + 0.936266, 0.936299, 0.936333, 0.936367, 0.936400, 0.936434, 0.936468, 0.936501, + 0.936535, 0.936568, 0.936602, 0.936636, 0.936669, 0.936703, 0.936736, 0.936770, + 0.936803, 0.936837, 0.936871, 0.936904, 0.936938, 0.936971, 0.937005, 0.937038, + 0.937072, 0.937105, 0.937138, 0.937172, 0.937205, 0.937239, 0.937272, 0.937306, + 0.937339, 0.937372, 0.937406, 0.937439, 0.937473, 0.937506, 0.937539, 0.937573, + 0.937606, 0.937639, 0.937673, 0.937706, 0.937739, 0.937773, 0.937806, 0.937839, + 0.937872, 0.937906, 0.937939, 0.937972, 0.938005, 0.938039, 0.938072, 0.938105, + 0.938138, 0.938171, 0.938205, 0.938238, 0.938271, 0.938304, 0.938337, 0.938370, + 0.938404, 0.938437, 0.938470, 0.938503, 0.938536, 0.938569, 0.938602, 0.938635, + 0.938668, 0.938701, 0.938734, 0.938767, 0.938800, 0.938833, 0.938866, 0.938900, + 0.938932, 0.938965, 0.938998, 0.939031, 0.939064, 0.939097, 0.939130, 0.939163, + 0.939196, 0.939229, 0.939262, 0.939295, 0.939328, 0.939361, 0.939394, 0.939426, + 0.939459, 0.939492, 0.939525, 0.939558, 0.939591, 0.939623, 0.939656, 0.939689, + 0.939722, 0.939755, 0.939787, 0.939820, 0.939853, 0.939886, 0.939918, 0.939951, + 0.939984, 0.940016, 0.940049, 0.940082, 0.940115, 0.940147, 0.940180, 0.940213, + 0.940245, 0.940278, 0.940310, 0.940343, 0.940376, 0.940408, 0.940441, 0.940473, + 0.940506, 0.940539, 0.940571, 0.940604, 0.940636, 0.940669, 0.940701, 0.940734, + 0.940766, 0.940799, 0.940831, 0.940864, 0.940896, 0.940929, 0.940961, 0.940994, + 0.941026, 0.941059, 0.941091, 0.941123, 0.941156, 0.941188, 0.941221, 0.941253, + 0.941285, 0.941318, 0.941350, 0.941382, 0.941415, 0.941447, 0.941479, 0.941512, + 0.941544, 0.941576, 0.941609, 0.941641, 0.941673, 0.941705, 0.941738, 0.941770, + 0.941802, 0.941834, 0.941867, 0.941899, 0.941931, 0.941963, 0.941995, 0.942028, + 0.942060, 0.942092, 0.942124, 0.942156, 0.942188, 0.942220, 0.942253, 0.942285, + 0.942317, 0.942349, 0.942381, 0.942413, 0.942445, 0.942477, 0.942509, 0.942541, + 0.942573, 0.942605, 0.942637, 0.942669, 0.942701, 0.942733, 0.942765, 0.942797, + 0.942829, 0.942861, 0.942893, 0.942925, 0.942957, 0.942989, 0.943021, 0.943053, + 0.943084, 0.943116, 0.943148, 0.943180, 0.943212, 0.943244, 0.943276, 0.943307, + 0.943339, 0.943371, 0.943403, 0.943435, 0.943466, 0.943498, 0.943530, 0.943562, + 0.943593, 0.943625, 0.943657, 0.943689, 0.943720, 0.943752, 0.943784, 0.943815, + 0.943847, 0.943879, 0.943910, 0.943942, 0.943974, 0.944005, 0.944037, 0.944069, + 0.944100, 0.944132, 0.944163, 0.944195, 0.944227, 0.944258, 0.944290, 0.944321, + 0.944353, 0.944384, 0.944416, 0.944447, 0.944479, 0.944510, 0.944542, 0.944573, + 0.944605, 0.944636, 0.944668, 0.944699, 0.944731, 0.944762, 0.944793, 0.944825, + 0.944856, 0.944888, 0.944919, 0.944950, 0.944982, 0.945013, 0.945045, 0.945076, + 0.945107, 0.945139, 0.945170, 0.945201, 0.945232, 0.945264, 0.945295, 0.945326, + 0.945358, 0.945389, 0.945420, 0.945451, 0.945482, 0.945514, 0.945545, 0.945576, + 0.945607, 0.945639, 0.945670, 0.945701, 0.945732, 0.945763, 0.945794, 0.945825, + 0.945857, 0.945888, 0.945919, 0.945950, 0.945981, 0.946012, 0.946043, 0.946074, + 0.946105, 0.946136, 0.946167, 0.946198, 0.946229, 0.946260, 0.946291, 0.946322, + 0.946353, 0.946384, 0.946415, 0.946446, 0.946477, 0.946508, 0.946539, 0.946570, + 0.946601, 0.946632, 0.946663, 0.946694, 0.946724, 0.946755, 0.946786, 0.946817, + 0.946848, 0.946879, 0.946910, 0.946940, 0.946971, 0.947002, 0.947033, 0.947064, + 0.947094, 0.947125, 0.947156, 0.947187, 0.947217, 0.947248, 0.947279, 0.947310, + 0.947340, 0.947371, 0.947402, 0.947432, 0.947463, 0.947494, 0.947524, 0.947555, + 0.947586, 0.947616, 0.947647, 0.947677, 0.947708, 0.947739, 0.947769, 0.947800, + 0.947830, 0.947861, 0.947891, 0.947922, 0.947953, 0.947983, 0.948014, 0.948044, + 0.948075, 0.948105, 0.948136, 0.948166, 0.948196, 0.948227, 0.948257, 0.948288, + 0.948318, 0.948349, 0.948379, 0.948409, 0.948440, 0.948470, 0.948501, 0.948531, + 0.948561, 0.948592, 0.948622, 0.948652, 0.948683, 0.948713, 0.948743, 0.948774, + 0.948804, 0.948834, 0.948864, 0.948895, 0.948925, 0.948955, 0.948985, 0.949016, + 0.949046, 0.949076, 0.949106, 0.949136, 0.949167, 0.949197, 0.949227, 0.949257, + 0.949287, 0.949317, 0.949348, 0.949378, 0.949408, 0.949438, 0.949468, 0.949498, + 0.949528, 0.949558, 0.949588, 0.949618, 0.949648, 0.949678, 0.949708, 0.949739, + 0.949768, 0.949798, 0.949829, 0.949858, 0.949888, 0.949918, 0.949948, 0.949978, + 0.950008, 0.950038, 0.950068, 0.950098, 0.950128, 0.950158, 0.950188, 0.950218, + 0.950247, 0.950277, 0.950307, 0.950337, 0.950367, 0.950397, 0.950426, 0.950456, + 0.950486, 0.950516, 0.950546, 0.950575, 0.950605, 0.950635, 0.950665, 0.950694, + 0.950724, 0.950754, 0.950784, 0.950813, 0.950843, 0.950873, 0.950902, 0.950932, + 0.950962, 0.950991, 0.951021, 0.951051, 0.951080, 0.951110, 0.951139, 0.951169, + 0.951199, 0.951228, 0.951258, 0.951287, 0.951317, 0.951346, 0.951376, 0.951406, + 0.951435, 0.951465, 0.951494, 0.951524, 0.951553, 0.951582, 0.951612, 0.951641, + 0.951671, 0.951700, 0.951730, 0.951759, 0.951789, 0.951818, 0.951847, 0.951877, + 0.951906, 0.951936, 0.951965, 0.951994, 0.952024, 0.952053, 0.952082, 0.952112, + 0.952141, 0.952170, 0.952199, 0.952229, 0.952258, 0.952287, 0.952317, 0.952346, + 0.952375, 0.952404, 0.952433, 0.952463, 0.952492, 0.952521, 0.952550, 0.952579, + 0.952609, 0.952638, 0.952667, 0.952696, 0.952725, 0.952754, 0.952783, 0.952813, + 0.952842, 0.952871, 0.952900, 0.952929, 0.952958, 0.952987, 0.953016, 0.953045, + 0.953074, 0.953103, 0.953132, 0.953161, 0.953190, 0.953219, 0.953248, 0.953277, + 0.953306, 0.953335, 0.953364, 0.953393, 0.953422, 0.953451, 0.953480, 0.953508, + 0.953537, 0.953566, 0.953595, 0.953624, 0.953653, 0.953682, 0.953711, 0.953739, + 0.953768, 0.953797, 0.953826, 0.953855, 0.953883, 0.953912, 0.953941, 0.953970, + 0.953998, 0.954027, 0.954056, 0.954085, 0.954113, 0.954142, 0.954171, 0.954199, + 0.954228, 0.954257, 0.954285, 0.954314, 0.954343, 0.954371, 0.954400, 0.954429, + 0.954457, 0.954486, 0.954514, 0.954543, 0.954572, 0.954600, 0.954629, 0.954657, + 0.954686, 0.954714, 0.954743, 0.954771, 0.954800, 0.954828, 0.954857, 0.954885, + 0.954914, 0.954942, 0.954971, 0.954999, 0.955028, 0.955056, 0.955084, 0.955113, + 0.955141, 0.955170, 0.955198, 0.955226, 0.955255, 0.955283, 0.955311, 0.955340, + 0.955368, 0.955396, 0.955425, 0.955453, 0.955481, 0.955510, 0.955538, 0.955566, + 0.955594, 0.955623, 0.955651, 0.955679, 0.955707, 0.955736, 0.955764, 0.955792, + 0.955820, 0.955848, 0.955876, 0.955905, 0.955933, 0.955961, 0.955989, 0.956017, + 0.956045, 0.956073, 0.956101, 0.956130, 0.956158, 0.956186, 0.956214, 0.956242, + 0.956270, 0.956298, 0.956326, 0.956354, 0.956382, 0.956410, 0.956438, 0.956466, + 0.956494, 0.956522, 0.956550, 0.956578, 0.956606, 0.956634, 0.956662, 0.956689, + 0.956717, 0.956745, 0.956773, 0.956801, 0.956829, 0.956857, 0.956885, 0.956913, + 0.956940, 0.956968, 0.956996, 0.957024, 0.957052, 0.957079, 0.957107, 0.957135, + 0.957163, 0.957190, 0.957218, 0.957246, 0.957274, 0.957301, 0.957329, 0.957357, + 0.957385, 0.957412, 0.957440, 0.957468, 0.957495, 0.957523, 0.957550, 0.957578, + 0.957606, 0.957633, 0.957661, 0.957689, 0.957716, 0.957744, 0.957771, 0.957799, + 0.957826, 0.957854, 0.957882, 0.957909, 0.957937, 0.957964, 0.957992, 0.958019, + 0.958046, 0.958074, 0.958101, 0.958129, 0.958156, 0.958184, 0.958211, 0.958239, + 0.958266, 0.958293, 0.958321, 0.958348, 0.958376, 0.958403, 0.958430, 0.958458, + 0.958485, 0.958512, 0.958540, 0.958567, 0.958594, 0.958622, 0.958649, 0.958676, + 0.958703, 0.958731, 0.958758, 0.958785, 0.958812, 0.958840, 0.958867, 0.958894, + 0.958921, 0.958949, 0.958976, 0.959003, 0.959030, 0.959057, 0.959084, 0.959112, + 0.959139, 0.959166, 0.959193, 0.959220, 0.959247, 0.959274, 0.959301, 0.959328, + 0.959355, 0.959382, 0.959409, 0.959436, 0.959463, 0.959491, 0.959518, 0.959545, + 0.959572, 0.959598, 0.959625, 0.959652, 0.959679, 0.959706, 0.959733, 0.959760, + 0.959787, 0.959814, 0.959841, 0.959868, 0.959895, 0.959922, 0.959948, 0.959975, + 0.960002, 0.960029, 0.960056, 0.960083, 0.960109, 0.960136, 0.960163, 0.960190, + 0.960217, 0.960243, 0.960270, 0.960297, 0.960324, 0.960350, 0.960377, 0.960404, + 0.960431, 0.960457, 0.960484, 0.960511, 0.960537, 0.960564, 0.960591, 0.960617, + 0.960644, 0.960670, 0.960697, 0.960724, 0.960750, 0.960777, 0.960804, 0.960830, + 0.960857, 0.960883, 0.960910, 0.960936, 0.960963, 0.960989, 0.961016, 0.961042, + 0.961069, 0.961095, 0.961122, 0.961148, 0.961175, 0.961201, 0.961228, 0.961254, + 0.961280, 0.961307, 0.961333, 0.961360, 0.961386, 0.961412, 0.961439, 0.961465, + 0.961492, 0.961518, 0.961544, 0.961571, 0.961597, 0.961623, 0.961649, 0.961676, + 0.961702, 0.961728, 0.961755, 0.961781, 0.961807, 0.961833, 0.961860, 0.961886, + 0.961912, 0.961938, 0.961964, 0.961991, 0.962017, 0.962043, 0.962069, 0.962095, + 0.962121, 0.962148, 0.962174, 0.962200, 0.962226, 0.962252, 0.962278, 0.962304, + 0.962330, 0.962356, 0.962382, 0.962408, 0.962434, 0.962460, 0.962486, 0.962512, + 0.962538, 0.962564, 0.962590, 0.962616, 0.962642, 0.962668, 0.962694, 0.962720, + 0.962746, 0.962772, 0.962798, 0.962824, 0.962850, 0.962876, 0.962902, 0.962927, + 0.962953, 0.962979, 0.963005, 0.963031, 0.963057, 0.963082, 0.963108, 0.963134, + 0.963160, 0.963186, 0.963211, 0.963237, 0.963263, 0.963289, 0.963314, 0.963340, + 0.963366, 0.963391, 0.963417, 0.963443, 0.963469, 0.963494, 0.963520, 0.963546, + 0.963571, 0.963597, 0.963623, 0.963648, 0.963674, 0.963699, 0.963725, 0.963750, + 0.963776, 0.963802, 0.963827, 0.963853, 0.963878, 0.963904, 0.963929, 0.963955, + 0.963980, 0.964006, 0.964031, 0.964057, 0.964082, 0.964108, 0.964133, 0.964159, + 0.964184, 0.964209, 0.964235, 0.964260, 0.964286, 0.964311, 0.964336, 0.964362, + 0.964387, 0.964413, 0.964438, 0.964463, 0.964489, 0.964514, 0.964539, 0.964565, + 0.964590, 0.964615, 0.964640, 0.964666, 0.964691, 0.964716, 0.964741, 0.964767, + 0.964792, 0.964817, 0.964842, 0.964867, 0.964893, 0.964918, 0.964943, 0.964968, + 0.964993, 0.965018, 0.965044, 0.965069, 0.965094, 0.965119, 0.965144, 0.965169, + 0.965194, 0.965219, 0.965244, 0.965269, 0.965294, 0.965319, 0.965344, 0.965369, + 0.965394, 0.965419, 0.965444, 0.965469, 0.965494, 0.965519, 0.965544, 0.965569, + 0.965594, 0.965619, 0.965644, 0.965669, 0.965694, 0.965719, 0.965744, 0.965769, + 0.965793, 0.965818, 0.965843, 0.965868, 0.965893, 0.965918, 0.965942, 0.965967, + 0.965992, 0.966017, 0.966042, 0.966066, 0.966091, 0.966116, 0.966141, 0.966165, + 0.966190, 0.966215, 0.966239, 0.966264, 0.966289, 0.966313, 0.966338, 0.966363, + 0.966387, 0.966412, 0.966437, 0.966461, 0.966486, 0.966511, 0.966535, 0.966560, + 0.966584, 0.966609, 0.966633, 0.966658, 0.966683, 0.966707, 0.966732, 0.966756, + 0.966781, 0.966805, 0.966830, 0.966854, 0.966879, 0.966903, 0.966928, 0.966952, + 0.966976, 0.967001, 0.967025, 0.967050, 0.967074, 0.967099, 0.967123, 0.967147, + 0.967172, 0.967196, 0.967220, 0.967245, 0.967269, 0.967293, 0.967318, 0.967342, + 0.967366, 0.967391, 0.967415, 0.967439, 0.967463, 0.967488, 0.967512, 0.967536, + 0.967560, 0.967585, 0.967609, 0.967633, 0.967657, 0.967681, 0.967706, 0.967730, + 0.967754, 0.967778, 0.967802, 0.967826, 0.967850, 0.967874, 0.967899, 0.967923, + 0.967947, 0.967971, 0.967995, 0.968019, 0.968043, 0.968067, 0.968091, 0.968115, + 0.968139, 0.968163, 0.968187, 0.968211, 0.968235, 0.968259, 0.968283, 0.968307, + 0.968331, 0.968355, 0.968379, 0.968403, 0.968427, 0.968450, 0.968474, 0.968498, + 0.968522, 0.968546, 0.968570, 0.968594, 0.968617, 0.968641, 0.968665, 0.968689, + 0.968713, 0.968737, 0.968760, 0.968784, 0.968808, 0.968832, 0.968855, 0.968879, + 0.968903, 0.968927, 0.968950, 0.968974, 0.968998, 0.969021, 0.969045, 0.969069, + 0.969092, 0.969116, 0.969140, 0.969163, 0.969187, 0.969210, 0.969234, 0.969258, + 0.969281, 0.969305, 0.969328, 0.969352, 0.969375, 0.969399, 0.969423, 0.969446, + 0.969470, 0.969493, 0.969517, 0.969540, 0.969564, 0.969587, 0.969611, 0.969634, + 0.969657, 0.969681, 0.969704, 0.969728, 0.969751, 0.969774, 0.969798, 0.969821, + 0.969845, 0.969868, 0.969891, 0.969915, 0.969938, 0.969961, 0.969985, 0.970008, + 0.970031, 0.970055, 0.970078, 0.970101, 0.970124, 0.970148, 0.970171, 0.970194, + 0.970217, 0.970241, 0.970264, 0.970287, 0.970310, 0.970333, 0.970357, 0.970380, + 0.970403, 0.970426, 0.970449, 0.970472, 0.970495, 0.970518, 0.970542, 0.970565, + 0.970588, 0.970611, 0.970634, 0.970657, 0.970680, 0.970703, 0.970726, 0.970749, + 0.970772, 0.970795, 0.970818, 0.970841, 0.970864, 0.970887, 0.970910, 0.970933, + 0.970956, 0.970979, 0.971002, 0.971025, 0.971048, 0.971071, 0.971093, 0.971116, + 0.971139, 0.971162, 0.971185, 0.971208, 0.971231, 0.971253, 0.971276, 0.971299, + 0.971322, 0.971345, 0.971367, 0.971390, 0.971413, 0.971436, 0.971458, 0.971481, + 0.971504, 0.971527, 0.971549, 0.971572, 0.971595, 0.971617, 0.971640, 0.971663, + 0.971685, 0.971708, 0.971731, 0.971753, 0.971776, 0.971799, 0.971821, 0.971844, + 0.971866, 0.971889, 0.971911, 0.971934, 0.971957, 0.971979, 0.972002, 0.972024, + 0.972047, 0.972069, 0.972092, 0.972114, 0.972137, 0.972159, 0.972182, 0.972204, + 0.972227, 0.972249, 0.972271, 0.972294, 0.972316, 0.972339, 0.972361, 0.972383, + 0.972406, 0.972428, 0.972450, 0.972473, 0.972495, 0.972517, 0.972540, 0.972562, + 0.972584, 0.972607, 0.972629, 0.972651, 0.972673, 0.972696, 0.972718, 0.972740, + 0.972762, 0.972785, 0.972807, 0.972829, 0.972851, 0.972873, 0.972896, 0.972918, + 0.972940, 0.972962, 0.972984, 0.973006, 0.973028, 0.973051, 0.973073, 0.973095, + 0.973117, 0.973139, 0.973161, 0.973183, 0.973205, 0.973227, 0.973249, 0.973271, + 0.973293, 0.973315, 0.973337, 0.973359, 0.973381, 0.973403, 0.973425, 0.973447, + 0.973469, 0.973491, 0.973513, 0.973535, 0.973557, 0.973579, 0.973601, 0.973622, + 0.973644, 0.973666, 0.973688, 0.973710, 0.973732, 0.973753, 0.973775, 0.973797, + 0.973819, 0.973841, 0.973862, 0.973884, 0.973906, 0.973928, 0.973949, 0.973971, + 0.973993, 0.974015, 0.974036, 0.974058, 0.974080, 0.974101, 0.974123, 0.974145, + 0.974166, 0.974188, 0.974210, 0.974231, 0.974253, 0.974275, 0.974296, 0.974318, + 0.974339, 0.974361, 0.974383, 0.974404, 0.974426, 0.974447, 0.974469, 0.974490, + 0.974512, 0.974533, 0.974555, 0.974576, 0.974598, 0.974619, 0.974641, 0.974662, + 0.974684, 0.974705, 0.974726, 0.974748, 0.974769, 0.974791, 0.974812, 0.974833, + 0.974855, 0.974876, 0.974897, 0.974919, 0.974940, 0.974961, 0.974983, 0.975004, + 0.975025, 0.975047, 0.975068, 0.975089, 0.975110, 0.975132, 0.975153, 0.975174, + 0.975195, 0.975217, 0.975238, 0.975259, 0.975280, 0.975301, 0.975323, 0.975344, + 0.975365, 0.975386, 0.975407, 0.975428, 0.975449, 0.975471, 0.975492, 0.975513, + 0.975534, 0.975555, 0.975576, 0.975597, 0.975618, 0.975639, 0.975660, 0.975681, + 0.975702, 0.975723, 0.975744, 0.975765, 0.975786, 0.975807, 0.975828, 0.975849, + 0.975870, 0.975891, 0.975912, 0.975933, 0.975954, 0.975974, 0.975995, 0.976016, + 0.976037, 0.976058, 0.976079, 0.976100, 0.976120, 0.976141, 0.976162, 0.976183, + 0.976204, 0.976224, 0.976245, 0.976266, 0.976287, 0.976308, 0.976328, 0.976349, + 0.976370, 0.976390, 0.976411, 0.976432, 0.976453, 0.976473, 0.976494, 0.976515, + 0.976535, 0.976556, 0.976576, 0.976597, 0.976618, 0.976638, 0.976659, 0.976680, + 0.976700, 0.976721, 0.976741, 0.976762, 0.976782, 0.976803, 0.976823, 0.976844, + 0.976864, 0.976885, 0.976905, 0.976926, 0.976946, 0.976967, 0.976987, 0.977008, + 0.977028, 0.977049, 0.977069, 0.977089, 0.977110, 0.977130, 0.977151, 0.977171, + 0.977191, 0.977212, 0.977232, 0.977252, 0.977273, 0.977293, 0.977313, 0.977334, + 0.977354, 0.977374, 0.977394, 0.977415, 0.977435, 0.977455, 0.977475, 0.977496, + 0.977516, 0.977536, 0.977556, 0.977577, 0.977597, 0.977617, 0.977637, 0.977657, + 0.977677, 0.977697, 0.977718, 0.977738, 0.977758, 0.977778, 0.977798, 0.977818, + 0.977838, 0.977858, 0.977878, 0.977898, 0.977918, 0.977938, 0.977959, 0.977979, + 0.977998, 0.978019, 0.978038, 0.978058, 0.978078, 0.978098, 0.978118, 0.978138, + 0.978158, 0.978178, 0.978198, 0.978218, 0.978238, 0.978258, 0.978278, 0.978298, + 0.978317, 0.978337, 0.978357, 0.978377, 0.978397, 0.978417, 0.978436, 0.978456, + 0.978476, 0.978496, 0.978516, 0.978535, 0.978555, 0.978575, 0.978594, 0.978614, + 0.978634, 0.978654, 0.978673, 0.978693, 0.978713, 0.978732, 0.978752, 0.978772, + 0.978791, 0.978811, 0.978831, 0.978850, 0.978870, 0.978889, 0.978909, 0.978929, + 0.978948, 0.978968, 0.978987, 0.979007, 0.979026, 0.979046, 0.979065, 0.979085, + 0.979104, 0.979124, 0.979143, 0.979163, 0.979182, 0.979202, 0.979221, 0.979241, + 0.979260, 0.979280, 0.979299, 0.979318, 0.979338, 0.979357, 0.979376, 0.979396, + 0.979415, 0.979435, 0.979454, 0.979473, 0.979493, 0.979512, 0.979531, 0.979550, + 0.979570, 0.979589, 0.979608, 0.979628, 0.979647, 0.979666, 0.979685, 0.979704, + 0.979724, 0.979743, 0.979762, 0.979781, 0.979800, 0.979820, 0.979839, 0.979858, + 0.979877, 0.979896, 0.979915, 0.979934, 0.979954, 0.979973, 0.979992, 0.980011, + 0.980030, 0.980049, 0.980068, 0.980087, 0.980106, 0.980125, 0.980144, 0.980163, + 0.980182, 0.980201, 0.980220, 0.980239, 0.980258, 0.980277, 0.980296, 0.980315, + 0.980334, 0.980353, 0.980372, 0.980390, 0.980409, 0.980428, 0.980447, 0.980466, + 0.980485, 0.980504, 0.980523, 0.980541, 0.980560, 0.980579, 0.980598, 0.980617, + 0.980635, 0.980654, 0.980673, 0.980692, 0.980710, 0.980729, 0.980748, 0.980767, + 0.980785, 0.980804, 0.980823, 0.980841, 0.980860, 0.980879, 0.980897, 0.980916, + 0.980935, 0.980953, 0.980972, 0.980990, 0.981009, 0.981028, 0.981046, 0.981065, + 0.981083, 0.981102, 0.981120, 0.981139, 0.981158, 0.981176, 0.981195, 0.981213, + 0.981232, 0.981250, 0.981269, 0.981287, 0.981305, 0.981324, 0.981342, 0.981361, + 0.981379, 0.981398, 0.981416, 0.981434, 0.981453, 0.981471, 0.981490, 0.981508, + 0.981526, 0.981545, 0.981563, 0.981581, 0.981600, 0.981618, 0.981636, 0.981654, + 0.981673, 0.981691, 0.981709, 0.981727, 0.981746, 0.981764, 0.981782, 0.981800, + 0.981819, 0.981837, 0.981855, 0.981873, 0.981891, 0.981909, 0.981928, 0.981946, + 0.981964, 0.981982, 0.982000, 0.982018, 0.982036, 0.982054, 0.982072, 0.982091, + 0.982109, 0.982127, 0.982145, 0.982163, 0.982181, 0.982199, 0.982217, 0.982235, + 0.982253, 0.982271, 0.982289, 0.982307, 0.982325, 0.982343, 0.982360, 0.982378, + 0.982396, 0.982414, 0.982432, 0.982450, 0.982468, 0.982486, 0.982504, 0.982521, + 0.982539, 0.982557, 0.982575, 0.982593, 0.982611, 0.982628, 0.982646, 0.982664, + 0.982682, 0.982699, 0.982717, 0.982735, 0.982753, 0.982770, 0.982788, 0.982806, + 0.982824, 0.982841, 0.982859, 0.982877, 0.982894, 0.982912, 0.982930, 0.982947, + 0.982965, 0.982982, 0.983000, 0.983018, 0.983035, 0.983053, 0.983070, 0.983088, + 0.983105, 0.983123, 0.983141, 0.983158, 0.983176, 0.983193, 0.983211, 0.983228, + 0.983246, 0.983263, 0.983281, 0.983298, 0.983315, 0.983333, 0.983350, 0.983368, + 0.983385, 0.983402, 0.983420, 0.983437, 0.983455, 0.983472, 0.983489, 0.983507, + 0.983524, 0.983541, 0.983559, 0.983576, 0.983593, 0.983611, 0.983628, 0.983645, + 0.983662, 0.983680, 0.983697, 0.983714, 0.983731, 0.983749, 0.983766, 0.983783, + 0.983800, 0.983817, 0.983835, 0.983852, 0.983869, 0.983886, 0.983903, 0.983920, + 0.983937, 0.983955, 0.983972, 0.983989, 0.984006, 0.984023, 0.984040, 0.984057, + 0.984074, 0.984091, 0.984108, 0.984125, 0.984142, 0.984159, 0.984176, 0.984193, + 0.984210, 0.984227, 0.984244, 0.984261, 0.984278, 0.984295, 0.984312, 0.984329, + 0.984346, 0.984362, 0.984379, 0.984396, 0.984413, 0.984430, 0.984447, 0.984464, + 0.984480, 0.984497, 0.984514, 0.984531, 0.984548, 0.984564, 0.984581, 0.984598, + 0.984615, 0.984632, 0.984648, 0.984665, 0.984682, 0.984698, 0.984715, 0.984732, + 0.984748, 0.984765, 0.984782, 0.984798, 0.984815, 0.984832, 0.984848, 0.984865, + 0.984882, 0.984898, 0.984915, 0.984931, 0.984948, 0.984965, 0.984981, 0.984998, + 0.985014, 0.985031, 0.985047, 0.985064, 0.985080, 0.985097, 0.985113, 0.985130, + 0.985146, 0.985163, 0.985179, 0.985196, 0.985212, 0.985228, 0.985245, 0.985261, + 0.985278, 0.985294, 0.985310, 0.985327, 0.985343, 0.985359, 0.985376, 0.985392, + 0.985408, 0.985425, 0.985441, 0.985457, 0.985474, 0.985490, 0.985506, 0.985523, + 0.985539, 0.985555, 0.985571, 0.985587, 0.985604, 0.985620, 0.985636, 0.985652, + 0.985668, 0.985685, 0.985701, 0.985717, 0.985733, 0.985749, 0.985765, 0.985781, + 0.985798, 0.985814, 0.985830, 0.985846, 0.985862, 0.985878, 0.985894, 0.985910, + 0.985926, 0.985942, 0.985958, 0.985974, 0.985990, 0.986006, 0.986022, 0.986038, + 0.986054, 0.986070, 0.986086, 0.986102, 0.986118, 0.986134, 0.986150, 0.986165, + 0.986181, 0.986197, 0.986213, 0.986229, 0.986245, 0.986261, 0.986276, 0.986292, + 0.986308, 0.986324, 0.986340, 0.986355, 0.986371, 0.986387, 0.986403, 0.986419, + 0.986434, 0.986450, 0.986466, 0.986481, 0.986497, 0.986513, 0.986529, 0.986544, + 0.986560, 0.986576, 0.986591, 0.986607, 0.986623, 0.986638, 0.986654, 0.986669, + 0.986685, 0.986701, 0.986716, 0.986732, 0.986747, 0.986763, 0.986778, 0.986794, + 0.986809, 0.986825, 0.986840, 0.986856, 0.986871, 0.986887, 0.986902, 0.986918, + 0.986933, 0.986949, 0.986964, 0.986980, 0.986995, 0.987010, 0.987026, 0.987041, + 0.987057, 0.987072, 0.987087, 0.987103, 0.987118, 0.987133, 0.987149, 0.987164, + 0.987179, 0.987195, 0.987210, 0.987225, 0.987240, 0.987256, 0.987271, 0.987286, + 0.987301, 0.987317, 0.987332, 0.987347, 0.987362, 0.987377, 0.987393, 0.987408, + 0.987423, 0.987438, 0.987453, 0.987468, 0.987484, 0.987499, 0.987514, 0.987529, + 0.987544, 0.987559, 0.987574, 0.987589, 0.987604, 0.987619, 0.987634, 0.987649, + 0.987664, 0.987679, 0.987694, 0.987709, 0.987724, 0.987739, 0.987754, 0.987769, + 0.987784, 0.987799, 0.987814, 0.987829, 0.987844, 0.987859, 0.987874, 0.987889, + 0.987903, 0.987918, 0.987933, 0.987948, 0.987963, 0.987978, 0.987992, 0.988007, + 0.988022, 0.988037, 0.988052, 0.988066, 0.988081, 0.988096, 0.988111, 0.988125, + 0.988140, 0.988155, 0.988169, 0.988184, 0.988199, 0.988214, 0.988228, 0.988243, + 0.988258, 0.988272, 0.988287, 0.988301, 0.988316, 0.988331, 0.988345, 0.988360, + 0.988374, 0.988389, 0.988404, 0.988418, 0.988433, 0.988447, 0.988462, 0.988476, + 0.988491, 0.988505, 0.988520, 0.988534, 0.988549, 0.988563, 0.988578, 0.988592, + 0.988607, 0.988621, 0.988635, 0.988650, 0.988664, 0.988679, 0.988693, 0.988707, + 0.988722, 0.988736, 0.988750, 0.988765, 0.988779, 0.988793, 0.988808, 0.988822, + 0.988836, 0.988851, 0.988865, 0.988879, 0.988893, 0.988908, 0.988922, 0.988936, + 0.988950, 0.988964, 0.988979, 0.988993, 0.989007, 0.989021, 0.989035, 0.989050, + 0.989064, 0.989078, 0.989092, 0.989106, 0.989120, 0.989134, 0.989148, 0.989162, + 0.989177, 0.989191, 0.989205, 0.989219, 0.989233, 0.989247, 0.989261, 0.989275, + 0.989289, 0.989303, 0.989317, 0.989331, 0.989345, 0.989359, 0.989373, 0.989386, + 0.989400, 0.989414, 0.989428, 0.989442, 0.989456, 0.989470, 0.989484, 0.989498, + 0.989511, 0.989525, 0.989539, 0.989553, 0.989567, 0.989581, 0.989594, 0.989608, + 0.989622, 0.989636, 0.989650, 0.989663, 0.989677, 0.989691, 0.989704, 0.989718, + 0.989732, 0.989746, 0.989759, 0.989773, 0.989787, 0.989800, 0.989814, 0.989828, + 0.989841, 0.989855, 0.989869, 0.989882, 0.989896, 0.989909, 0.989923, 0.989936, + 0.989950, 0.989964, 0.989977, 0.989991, 0.990004, 0.990018, 0.990031, 0.990045, + 0.990058, 0.990072, 0.990085, 0.990099, 0.990112, 0.990126, 0.990139, 0.990152, + 0.990166, 0.990179, 0.990193, 0.990206, 0.990219, 0.990233, 0.990246, 0.990259, + 0.990273, 0.990286, 0.990299, 0.990313, 0.990326, 0.990339, 0.990353, 0.990366, + 0.990379, 0.990393, 0.990406, 0.990419, 0.990432, 0.990445, 0.990459, 0.990472, + 0.990485, 0.990498, 0.990511, 0.990525, 0.990538, 0.990551, 0.990564, 0.990577, + 0.990590, 0.990603, 0.990617, 0.990630, 0.990643, 0.990656, 0.990669, 0.990682, + 0.990695, 0.990708, 0.990721, 0.990734, 0.990747, 0.990760, 0.990773, 0.990786, + 0.990799, 0.990812, 0.990825, 0.990838, 0.990851, 0.990864, 0.990877, 0.990890, + 0.990903, 0.990916, 0.990928, 0.990941, 0.990954, 0.990967, 0.990980, 0.990993, + 0.991006, 0.991018, 0.991031, 0.991044, 0.991057, 0.991070, 0.991082, 0.991095, + 0.991108, 0.991121, 0.991133, 0.991146, 0.991159, 0.991172, 0.991184, 0.991197, + 0.991210, 0.991222, 0.991235, 0.991248, 0.991260, 0.991273, 0.991286, 0.991298, + 0.991311, 0.991323, 0.991336, 0.991349, 0.991361, 0.991374, 0.991386, 0.991399, + 0.991411, 0.991424, 0.991437, 0.991449, 0.991462, 0.991474, 0.991487, 0.991499, + 0.991511, 0.991524, 0.991536, 0.991549, 0.991561, 0.991574, 0.991586, 0.991598, + 0.991611, 0.991623, 0.991636, 0.991648, 0.991660, 0.991673, 0.991685, 0.991697, + 0.991710, 0.991722, 0.991734, 0.991747, 0.991759, 0.991771, 0.991783, 0.991796, + 0.991808, 0.991820, 0.991832, 0.991845, 0.991857, 0.991869, 0.991881, 0.991894, + 0.991906, 0.991918, 0.991930, 0.991942, 0.991954, 0.991966, 0.991979, 0.991991, + 0.992003, 0.992015, 0.992027, 0.992039, 0.992051, 0.992063, 0.992075, 0.992087, + 0.992099, 0.992111, 0.992123, 0.992135, 0.992147, 0.992159, 0.992171, 0.992183, + 0.992195, 0.992207, 0.992219, 0.992231, 0.992243, 0.992255, 0.992267, 0.992279, + 0.992291, 0.992302, 0.992314, 0.992326, 0.992338, 0.992350, 0.992362, 0.992374, + 0.992385, 0.992397, 0.992409, 0.992421, 0.992433, 0.992444, 0.992456, 0.992468, + 0.992480, 0.992491, 0.992503, 0.992515, 0.992526, 0.992538, 0.992550, 0.992561, + 0.992573, 0.992585, 0.992596, 0.992608, 0.992620, 0.992631, 0.992643, 0.992655, + 0.992666, 0.992678, 0.992689, 0.992701, 0.992712, 0.992724, 0.992736, 0.992747, + 0.992759, 0.992770, 0.992782, 0.992793, 0.992805, 0.992816, 0.992828, 0.992839, + 0.992850, 0.992862, 0.992873, 0.992885, 0.992896, 0.992908, 0.992919, 0.992930, + 0.992942, 0.992953, 0.992964, 0.992976, 0.992987, 0.992998, 0.993010, 0.993021, + 0.993032, 0.993044, 0.993055, 0.993066, 0.993077, 0.993089, 0.993100, 0.993111, + 0.993122, 0.993134, 0.993145, 0.993156, 0.993167, 0.993178, 0.993190, 0.993201, + 0.993212, 0.993223, 0.993234, 0.993245, 0.993257, 0.993268, 0.993279, 0.993290, + 0.993301, 0.993312, 0.993323, 0.993334, 0.993345, 0.993356, 0.993367, 0.993378, + 0.993389, 0.993400, 0.993411, 0.993422, 0.993433, 0.993444, 0.993455, 0.993466, + 0.993477, 0.993488, 0.993499, 0.993510, 0.993521, 0.993532, 0.993542, 0.993553, + 0.993564, 0.993575, 0.993586, 0.993597, 0.993608, 0.993618, 0.993629, 0.993640, + 0.993651, 0.993662, 0.993672, 0.993683, 0.993694, 0.993705, 0.993715, 0.993726, + 0.993737, 0.993747, 0.993758, 0.993769, 0.993779, 0.993790, 0.993801, 0.993811, + 0.993822, 0.993833, 0.993843, 0.993854, 0.993865, 0.993875, 0.993886, 0.993896, + 0.993907, 0.993918, 0.993928, 0.993939, 0.993949, 0.993960, 0.993970, 0.993981, + 0.993991, 0.994002, 0.994012, 0.994023, 0.994033, 0.994044, 0.994054, 0.994064, + 0.994075, 0.994085, 0.994096, 0.994106, 0.994116, 0.994127, 0.994137, 0.994148, + 0.994158, 0.994168, 0.994179, 0.994189, 0.994199, 0.994210, 0.994220, 0.994230, + 0.994240, 0.994251, 0.994261, 0.994271, 0.994281, 0.994292, 0.994302, 0.994312, + 0.994322, 0.994333, 0.994343, 0.994353, 0.994363, 0.994373, 0.994383, 0.994394, + 0.994404, 0.994414, 0.994424, 0.994434, 0.994444, 0.994454, 0.994464, 0.994474, + 0.994484, 0.994494, 0.994505, 0.994515, 0.994525, 0.994535, 0.994545, 0.994555, + 0.994565, 0.994575, 0.994585, 0.994594, 0.994604, 0.994614, 0.994624, 0.994634, + 0.994644, 0.994654, 0.994664, 0.994674, 0.994684, 0.994694, 0.994703, 0.994713, + 0.994723, 0.994733, 0.994743, 0.994753, 0.994762, 0.994772, 0.994782, 0.994792, + 0.994802, 0.994811, 0.994821, 0.994831, 0.994841, 0.994850, 0.994860, 0.994870, + 0.994879, 0.994889, 0.994899, 0.994908, 0.994918, 0.994928, 0.994937, 0.994947, + 0.994957, 0.994966, 0.994976, 0.994985, 0.994995, 0.995005, 0.995014, 0.995024, + 0.995033, 0.995043, 0.995052, 0.995062, 0.995071, 0.995081, 0.995090, 0.995100, + 0.995109, 0.995119, 0.995128, 0.995138, 0.995147, 0.995156, 0.995166, 0.995175, + 0.995185, 0.995194, 0.995203, 0.995213, 0.995222, 0.995232, 0.995241, 0.995250, + 0.995260, 0.995269, 0.995278, 0.995288, 0.995297, 0.995306, 0.995315, 0.995325, + 0.995334, 0.995343, 0.995352, 0.995362, 0.995371, 0.995380, 0.995389, 0.995398, + 0.995408, 0.995417, 0.995426, 0.995435, 0.995444, 0.995453, 0.995463, 0.995472, + 0.995481, 0.995490, 0.995499, 0.995508, 0.995517, 0.995526, 0.995535, 0.995544, + 0.995553, 0.995562, 0.995571, 0.995580, 0.995589, 0.995598, 0.995607, 0.995616, + 0.995625, 0.995634, 0.995643, 0.995652, 0.995661, 0.995670, 0.995679, 0.995688, + 0.995697, 0.995705, 0.995714, 0.995723, 0.995732, 0.995741, 0.995750, 0.995759, + 0.995767, 0.995776, 0.995785, 0.995794, 0.995803, 0.995811, 0.995820, 0.995829, + 0.995838, 0.995846, 0.995855, 0.995864, 0.995872, 0.995881, 0.995890, 0.995899, + 0.995907, 0.995916, 0.995925, 0.995933, 0.995942, 0.995950, 0.995959, 0.995968, + 0.995976, 0.995985, 0.995993, 0.996002, 0.996011, 0.996019, 0.996028, 0.996036, + 0.996045, 0.996053, 0.996062, 0.996070, 0.996079, 0.996087, 0.996096, 0.996104, + 0.996113, 0.996121, 0.996129, 0.996138, 0.996146, 0.996155, 0.996163, 0.996171, + 0.996180, 0.996188, 0.996197, 0.996205, 0.996213, 0.996222, 0.996230, 0.996238, + 0.996247, 0.996255, 0.996263, 0.996271, 0.996280, 0.996288, 0.996296, 0.996304, + 0.996313, 0.996321, 0.996329, 0.996337, 0.996345, 0.996354, 0.996362, 0.996370, + 0.996378, 0.996386, 0.996394, 0.996403, 0.996411, 0.996419, 0.996427, 0.996435, + 0.996443, 0.996451, 0.996459, 0.996467, 0.996475, 0.996483, 0.996491, 0.996499, + 0.996507, 0.996515, 0.996523, 0.996531, 0.996539, 0.996547, 0.996555, 0.996563, + 0.996571, 0.996579, 0.996587, 0.996595, 0.996603, 0.996611, 0.996619, 0.996626, + 0.996634, 0.996642, 0.996650, 0.996658, 0.996666, 0.996674, 0.996681, 0.996689, + 0.996697, 0.996705, 0.996712, 0.996720, 0.996728, 0.996736, 0.996743, 0.996751, + 0.996759, 0.996767, 0.996774, 0.996782, 0.996790, 0.996797, 0.996805, 0.996813, + 0.996820, 0.996828, 0.996836, 0.996843, 0.996851, 0.996858, 0.996866, 0.996874, + 0.996881, 0.996889, 0.996896, 0.996904, 0.996911, 0.996919, 0.996926, 0.996934, + 0.996941, 0.996949, 0.996956, 0.996964, 0.996971, 0.996979, 0.996986, 0.996994, + 0.997001, 0.997008, 0.997016, 0.997023, 0.997031, 0.997038, 0.997045, 0.997053, + 0.997060, 0.997067, 0.997075, 0.997082, 0.997089, 0.997097, 0.997104, 0.997111, + 0.997119, 0.997126, 0.997133, 0.997140, 0.997148, 0.997155, 0.997162, 0.997169, + 0.997176, 0.997184, 0.997191, 0.997198, 0.997205, 0.997212, 0.997219, 0.997227, + 0.997234, 0.997241, 0.997248, 0.997255, 0.997262, 0.997269, 0.997276, 0.997283, + 0.997290, 0.997298, 0.997305, 0.997312, 0.997319, 0.997326, 0.997333, 0.997340, + 0.997347, 0.997354, 0.997361, 0.997368, 0.997374, 0.997381, 0.997388, 0.997395, + 0.997402, 0.997409, 0.997416, 0.997423, 0.997430, 0.997437, 0.997443, 0.997450, + 0.997457, 0.997464, 0.997471, 0.997478, 0.997484, 0.997491, 0.997498, 0.997505, + 0.997511, 0.997518, 0.997525, 0.997532, 0.997538, 0.997545, 0.997552, 0.997559, + 0.997565, 0.997572, 0.997579, 0.997585, 0.997592, 0.997599, 0.997605, 0.997612, + 0.997618, 0.997625, 0.997632, 0.997638, 0.997645, 0.997651, 0.997658, 0.997665, + 0.997671, 0.997678, 0.997684, 0.997691, 0.997697, 0.997704, 0.997710, 0.997717, + 0.997723, 0.997730, 0.997736, 0.997742, 0.997749, 0.997755, 0.997762, 0.997768, + 0.997774, 0.997781, 0.997787, 0.997794, 0.997800, 0.997806, 0.997813, 0.997819, + 0.997825, 0.997832, 0.997838, 0.997844, 0.997851, 0.997857, 0.997863, 0.997869, + 0.997876, 0.997882, 0.997888, 0.997894, 0.997901, 0.997907, 0.997913, 0.997919, + 0.997925, 0.997931, 0.997938, 0.997944, 0.997950, 0.997956, 0.997962, 0.997968, + 0.997974, 0.997980, 0.997987, 0.997993, 0.997999, 0.998005, 0.998011, 0.998017, + 0.998023, 0.998029, 0.998035, 0.998041, 0.998047, 0.998053, 0.998059, 0.998065, + 0.998071, 0.998077, 0.998083, 0.998089, 0.998094, 0.998100, 0.998106, 0.998112, + 0.998118, 0.998124, 0.998130, 0.998136, 0.998142, 0.998147, 0.998153, 0.998159, + 0.998165, 0.998171, 0.998176, 0.998182, 0.998188, 0.998194, 0.998200, 0.998205, + 0.998211, 0.998217, 0.998222, 0.998228, 0.998234, 0.998240, 0.998245, 0.998251, + 0.998257, 0.998262, 0.998268, 0.998273, 0.998279, 0.998285, 0.998290, 0.998296, + 0.998302, 0.998307, 0.998313, 0.998318, 0.998324, 0.998329, 0.998335, 0.998340, + 0.998346, 0.998351, 0.998357, 0.998362, 0.998368, 0.998373, 0.998379, 0.998384, + 0.998390, 0.998395, 0.998401, 0.998406, 0.998411, 0.998417, 0.998422, 0.998428, + 0.998433, 0.998438, 0.998444, 0.998449, 0.998454, 0.998460, 0.998465, 0.998470, + 0.998476, 0.998481, 0.998486, 0.998491, 0.998497, 0.998502, 0.998507, 0.998512, + 0.998518, 0.998523, 0.998528, 0.998533, 0.998538, 0.998544, 0.998549, 0.998554, + 0.998559, 0.998564, 0.998569, 0.998574, 0.998580, 0.998585, 0.998590, 0.998595, + 0.998600, 0.998605, 0.998610, 0.998615, 0.998620, 0.998625, 0.998630, 0.998635, + 0.998640, 0.998645, 0.998650, 0.998655, 0.998660, 0.998665, 0.998670, 0.998675, + 0.998680, 0.998685, 0.998690, 0.998695, 0.998700, 0.998704, 0.998709, 0.998714, + 0.998719, 0.998724, 0.998729, 0.998734, 0.998738, 0.998743, 0.998748, 0.998753, + 0.998758, 0.998762, 0.998767, 0.998772, 0.998777, 0.998781, 0.998786, 0.998791, + 0.998795, 0.998800, 0.998805, 0.998810, 0.998814, 0.998819, 0.998824, 0.998828, + 0.998833, 0.998837, 0.998842, 0.998847, 0.998851, 0.998856, 0.998860, 0.998865, + 0.998870, 0.998874, 0.998879, 0.998883, 0.998888, 0.998892, 0.998897, 0.998901, + 0.998906, 0.998910, 0.998915, 0.998919, 0.998924, 0.998928, 0.998932, 0.998937, + 0.998941, 0.998946, 0.998950, 0.998954, 0.998959, 0.998963, 0.998968, 0.998972, + 0.998976, 0.998981, 0.998985, 0.998989, 0.998994, 0.998998, 0.999002, 0.999006, + 0.999011, 0.999015, 0.999019, 0.999023, 0.999028, 0.999032, 0.999036, 0.999040, + 0.999044, 0.999049, 0.999053, 0.999057, 0.999061, 0.999065, 0.999069, 0.999074, + 0.999078, 0.999082, 0.999086, 0.999090, 0.999094, 0.999098, 0.999102, 0.999106, + 0.999110, 0.999114, 0.999118, 0.999122, 0.999126, 0.999130, 0.999134, 0.999138, + 0.999142, 0.999146, 0.999150, 0.999154, 0.999158, 0.999162, 0.999166, 0.999170, + 0.999174, 0.999178, 0.999182, 0.999186, 0.999189, 0.999193, 0.999197, 0.999201, + 0.999205, 0.999209, 0.999212, 0.999216, 0.999220, 0.999224, 0.999228, 0.999231, + 0.999235, 0.999239, 0.999243, 0.999246, 0.999250, 0.999254, 0.999257, 0.999261, + 0.999265, 0.999268, 0.999272, 0.999276, 0.999279, 0.999283, 0.999287, 0.999290, + 0.999294, 0.999297, 0.999301, 0.999305, 0.999308, 0.999312, 0.999315, 0.999319, + 0.999322, 0.999326, 0.999329, 0.999333, 0.999336, 0.999340, 0.999343, 0.999347, + 0.999350, 0.999354, 0.999357, 0.999361, 0.999364, 0.999367, 0.999371, 0.999374, + 0.999378, 0.999381, 0.999384, 0.999388, 0.999391, 0.999394, 0.999398, 0.999401, + 0.999404, 0.999408, 0.999411, 0.999414, 0.999418, 0.999421, 0.999424, 0.999427, + 0.999431, 0.999434, 0.999437, 0.999440, 0.999443, 0.999447, 0.999450, 0.999453, + 0.999456, 0.999459, 0.999462, 0.999466, 0.999469, 0.999472, 0.999475, 0.999478, + 0.999481, 0.999484, 0.999487, 0.999490, 0.999493, 0.999497, 0.999500, 0.999503, + 0.999506, 0.999509, 0.999512, 0.999515, 0.999518, 0.999521, 0.999524, 0.999527, + 0.999529, 0.999532, 0.999535, 0.999538, 0.999541, 0.999544, 0.999547, 0.999550, + 0.999553, 0.999556, 0.999558, 0.999561, 0.999564, 0.999567, 0.999570, 0.999573, + 0.999575, 0.999578, 0.999581, 0.999584, 0.999586, 0.999589, 0.999592, 0.999595, + 0.999597, 0.999600, 0.999603, 0.999605, 0.999608, 0.999611, 0.999614, 0.999616, + 0.999619, 0.999621, 0.999624, 0.999627, 0.999629, 0.999632, 0.999635, 0.999637, + 0.999640, 0.999642, 0.999645, 0.999647, 0.999650, 0.999652, 0.999655, 0.999658, + 0.999660, 0.999663, 0.999665, 0.999667, 0.999670, 0.999672, 0.999675, 0.999677, + 0.999680, 0.999682, 0.999685, 0.999687, 0.999689, 0.999692, 0.999694, 0.999696, + 0.999699, 0.999701, 0.999704, 0.999706, 0.999708, 0.999710, 0.999713, 0.999715, + 0.999717, 0.999720, 0.999722, 0.999724, 0.999726, 0.999729, 0.999731, 0.999733, + 0.999735, 0.999738, 0.999740, 0.999742, 0.999744, 0.999746, 0.999748, 0.999750, + 0.999753, 0.999755, 0.999757, 0.999759, 0.999761, 0.999763, 0.999765, 0.999767, + 0.999769, 0.999771, 0.999774, 0.999776, 0.999778, 0.999780, 0.999782, 0.999784, + 0.999786, 0.999788, 0.999790, 0.999792, 0.999793, 0.999795, 0.999797, 0.999799, + 0.999801, 0.999803, 0.999805, 0.999807, 0.999809, 0.999811, 0.999812, 0.999814, + 0.999816, 0.999818, 0.999820, 0.999822, 0.999823, 0.999825, 0.999827, 0.999829, + 0.999831, 0.999832, 0.999834, 0.999836, 0.999838, 0.999839, 0.999841, 0.999843, + 0.999844, 0.999846, 0.999848, 0.999849, 0.999851, 0.999853, 0.999854, 0.999856, + 0.999858, 0.999859, 0.999861, 0.999862, 0.999864, 0.999866, 0.999867, 0.999869, + 0.999870, 0.999872, 0.999873, 0.999875, 0.999876, 0.999878, 0.999879, 0.999881, + 0.999882, 0.999884, 0.999885, 0.999887, 0.999888, 0.999890, 0.999891, 0.999892, + 0.999894, 0.999895, 0.999897, 0.999898, 0.999899, 0.999901, 0.999902, 0.999903, + 0.999905, 0.999906, 0.999907, 0.999909, 0.999910, 0.999911, 0.999913, 0.999914, + 0.999915, 0.999916, 0.999917, 0.999919, 0.999920, 0.999921, 0.999922, 0.999924, + 0.999925, 0.999926, 0.999927, 0.999928, 0.999929, 0.999930, 0.999932, 0.999933, + 0.999934, 0.999935, 0.999936, 0.999937, 0.999938, 0.999939, 0.999940, 0.999941, + 0.999942, 0.999943, 0.999944, 0.999945, 0.999946, 0.999947, 0.999948, 0.999949, + 0.999950, 0.999951, 0.999952, 0.999953, 0.999954, 0.999955, 0.999956, 0.999957, + 0.999958, 0.999959, 0.999959, 0.999960, 0.999961, 0.999962, 0.999963, 0.999964, + 0.999964, 0.999965, 0.999966, 0.999967, 0.999968, 0.999968, 0.999969, 0.999970, + 0.999971, 0.999971, 0.999972, 0.999973, 0.999973, 0.999974, 0.999975, 0.999976, + 0.999976, 0.999977, 0.999977, 0.999978, 0.999979, 0.999979, 0.999980, 0.999981, + 0.999981, 0.999982, 0.999982, 0.999983, 0.999983, 0.999984, 0.999985, 0.999985, + 0.999986, 0.999986, 0.999987, 0.999987, 0.999988, 0.999988, 0.999988, 0.999989, + 0.999989, 0.999990, 0.999990, 0.999991, 0.999991, 0.999991, 0.999992, 0.999992, + 0.999993, 0.999993, 0.999993, 0.999994, 0.999994, 0.999994, 0.999995, 0.999995, + 0.999995, 0.999996, 0.999996, 0.999996, 0.999996, 0.999997, 0.999997, 0.999997, + 0.999997, 0.999998, 0.999998, 0.999998, 0.999998, 0.999998, 0.999999, 0.999999, + 0.999999, 0.999999, 0.999999, 0.999999, 0.999999, 0.999999, 1.000000, 1.000000, + 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, + 0.000000, -0.000096, -0.000192, -0.000288, -0.000383, -0.000479, -0.000575, -0.000671, + -0.000767, -0.000863, -0.000959, -0.001055, -0.001150, -0.001246, -0.001342, -0.001438, + -0.001534, -0.001630, -0.001726, -0.001822, -0.001917, -0.002013, -0.002109, -0.002205, + -0.002301, -0.002397, -0.002493, -0.002589, -0.002684, -0.002780, -0.002876, -0.002972, + -0.003068, -0.003164, -0.003260, -0.003356, -0.003451, -0.003547, -0.003643, -0.003739, + -0.003835, -0.003931, -0.004027, -0.004123, -0.004218, -0.004314, -0.004410, -0.004506, + -0.004602, -0.004698, -0.004794, -0.004890, -0.004985, -0.005081, -0.005177, -0.005273, + -0.005369, -0.005465, -0.005561, -0.005657, -0.005752, -0.005848, -0.005944, -0.006040, + -0.006136, -0.006232, -0.006328, -0.006424, -0.006519, -0.006615, -0.006711, -0.006807, + -0.006903, -0.006999, -0.007095, -0.007190, -0.007286, -0.007382, -0.007478, -0.007574, + -0.007670, -0.007766, -0.007862, -0.007957, -0.008053, -0.008149, -0.008245, -0.008341, + -0.008437, -0.008533, -0.008629, -0.008724, -0.008820, -0.008916, -0.009012, -0.009108, + -0.009204, -0.009300, -0.009395, -0.009491, -0.009587, -0.009683, -0.009779, -0.009875, + -0.009971, -0.010067, -0.010162, -0.010258, -0.010354, -0.010450, -0.010546, -0.010642, + -0.010738, -0.010834, -0.010929, -0.011025, -0.011121, -0.011217, -0.011313, -0.011409, + -0.011505, -0.011600, -0.011696, -0.011792, -0.011888, -0.011984, -0.012080, -0.012176, + -0.012272, -0.012367, -0.012463, -0.012559, -0.012655, -0.012751, -0.012847, -0.012943, + -0.013038, -0.013134, -0.013230, -0.013326, -0.013422, -0.013518, -0.013614, -0.013710, + -0.013805, -0.013901, -0.013997, -0.014093, -0.014189, -0.014285, -0.014381, -0.014476, + -0.014572, -0.014668, -0.014764, -0.014860, -0.014956, -0.015052, -0.015147, -0.015243, + -0.015339, -0.015435, -0.015531, -0.015627, -0.015723, -0.015819, -0.015914, -0.016010, + -0.016106, -0.016202, -0.016298, -0.016394, -0.016490, -0.016585, -0.016681, -0.016777, + -0.016873, -0.016969, -0.017065, -0.017161, -0.017256, -0.017352, -0.017448, -0.017544, + -0.017640, -0.017736, -0.017832, -0.017927, -0.018023, -0.018119, -0.018215, -0.018311, + -0.018407, -0.018503, -0.018598, -0.018694, -0.018790, -0.018886, -0.018982, -0.019078, + -0.019174, -0.019269, -0.019365, -0.019461, -0.019557, -0.019653, -0.019749, -0.019845, + -0.019940, -0.020036, -0.020132, -0.020228, -0.020324, -0.020420, -0.020516, -0.020611, + -0.020707, -0.020803, -0.020899, -0.020995, -0.021091, -0.021187, -0.021282, -0.021378, + -0.021474, -0.021570, -0.021666, -0.021762, -0.021857, -0.021953, -0.022049, -0.022145, + -0.022241, -0.022337, -0.022433, -0.022528, -0.022624, -0.022720, -0.022816, -0.022912, + -0.023008, -0.023104, -0.023199, -0.023295, -0.023391, -0.023487, -0.023583, -0.023679, + -0.023774, -0.023870, -0.023966, -0.024062, -0.024158, -0.024254, -0.024350, -0.024445, + -0.024541, -0.024637, -0.024733, -0.024829, -0.024925, -0.025020, -0.025116, -0.025212, + -0.025308, -0.025404, -0.025500, -0.025596, -0.025691, -0.025787, -0.025883, -0.025979, + -0.026075, -0.026171, -0.026266, -0.026362, -0.026458, -0.026554, -0.026650, -0.026746, + -0.026841, -0.026937, -0.027033, -0.027129, -0.027225, -0.027321, -0.027416, -0.027512, + -0.027608, -0.027704, -0.027800, -0.027896, -0.027991, -0.028087, -0.028183, -0.028279, + -0.028375, -0.028471, -0.028567, -0.028662, -0.028758, -0.028854, -0.028950, -0.029046, + -0.029142, -0.029237, -0.029333, -0.029429, -0.029525, -0.029621, -0.029717, -0.029812, + -0.029908, -0.030004, -0.030100, -0.030196, -0.030291, -0.030387, -0.030483, -0.030579, + -0.030675, -0.030771, -0.030866, -0.030962, -0.031058, -0.031154, -0.031250, -0.031346, + -0.031441, -0.031537, -0.031633, -0.031729, -0.031825, -0.031921, -0.032016, -0.032112, + -0.032208, -0.032304, -0.032400, -0.032495, -0.032591, -0.032687, -0.032783, -0.032879, + -0.032975, -0.033070, -0.033166, -0.033262, -0.033358, -0.033454, -0.033550, -0.033645, + -0.033741, -0.033837, -0.033933, -0.034029, -0.034124, -0.034220, -0.034316, -0.034412, + -0.034508, -0.034604, -0.034699, -0.034795, -0.034891, -0.034987, -0.035083, -0.035178, + -0.035274, -0.035370, -0.035466, -0.035562, -0.035657, -0.035753, -0.035849, -0.035945, + -0.036041, -0.036137, -0.036232, -0.036328, -0.036424, -0.036520, -0.036616, -0.036711, + -0.036807, -0.036903, -0.036999, -0.037095, -0.037190, -0.037286, -0.037382, -0.037478, + -0.037574, -0.037669, -0.037765, -0.037861, -0.037957, -0.038053, -0.038149, -0.038244, + -0.038340, -0.038436, -0.038532, -0.038628, -0.038723, -0.038819, -0.038915, -0.039011, + -0.039107, -0.039202, -0.039298, -0.039394, -0.039490, -0.039586, -0.039681, -0.039777, + -0.039873, -0.039969, -0.040065, -0.040160, -0.040256, -0.040352, -0.040448, -0.040544, + -0.040639, -0.040735, -0.040831, -0.040927, -0.041022, -0.041118, -0.041214, -0.041310, + -0.041406, -0.041501, -0.041597, -0.041693, -0.041789, -0.041885, -0.041980, -0.042076, + -0.042172, -0.042268, -0.042364, -0.042459, -0.042555, -0.042651, -0.042747, -0.042842, + -0.042938, -0.043034, -0.043130, -0.043226, -0.043321, -0.043417, -0.043513, -0.043609, + -0.043705, -0.043800, -0.043896, -0.043992, -0.044088, -0.044183, -0.044279, -0.044375, + -0.044471, -0.044567, -0.044662, -0.044758, -0.044854, -0.044950, -0.045045, -0.045141, + -0.045237, -0.045333, -0.045429, -0.045524, -0.045620, -0.045716, -0.045812, -0.045907, + -0.046003, -0.046099, -0.046195, -0.046290, -0.046386, -0.046482, -0.046578, -0.046674, + -0.046769, -0.046865, -0.046961, -0.047057, -0.047152, -0.047248, -0.047344, -0.047440, + -0.047535, -0.047631, -0.047727, -0.047823, -0.047919, -0.048014, -0.048110, -0.048206, + -0.048302, -0.048397, -0.048493, -0.048589, -0.048685, -0.048780, -0.048876, -0.048972, + -0.049068, -0.049163, -0.049259, -0.049355, -0.049451, -0.049546, -0.049642, -0.049738, + -0.049834, -0.049929, -0.050025, -0.050121, -0.050217, -0.050312, -0.050408, -0.050504, + -0.050600, -0.050696, -0.050791, -0.050887, -0.050983, -0.051078, -0.051174, -0.051270, + -0.051366, -0.051461, -0.051557, -0.051653, -0.051749, -0.051844, -0.051940, -0.052036, + -0.052132, -0.052227, -0.052323, -0.052419, -0.052515, -0.052610, -0.052706, -0.052802, + -0.052898, -0.052993, -0.053089, -0.053185, -0.053281, -0.053376, -0.053472, -0.053568, + -0.053664, -0.053759, -0.053855, -0.053951, -0.054046, -0.054142, -0.054238, -0.054334, + -0.054429, -0.054525, -0.054621, -0.054717, -0.054812, -0.054908, -0.055004, -0.055100, + -0.055195, -0.055291, -0.055387, -0.055482, -0.055578, -0.055674, -0.055770, -0.055865, + -0.055961, -0.056057, -0.056152, -0.056248, -0.056344, -0.056440, -0.056535, -0.056631, + -0.056727, -0.056823, -0.056918, -0.057014, -0.057110, -0.057205, -0.057301, -0.057397, + -0.057493, -0.057588, -0.057684, -0.057780, -0.057875, -0.057971, -0.058067, -0.058163, + -0.058258, -0.058354, -0.058450, -0.058545, -0.058641, -0.058737, -0.058833, -0.058928, + -0.059024, -0.059120, -0.059215, -0.059311, -0.059407, -0.059502, -0.059598, -0.059694, + -0.059790, -0.059885, -0.059981, -0.060077, -0.060172, -0.060268, -0.060364, -0.060459, + -0.060555, -0.060651, -0.060747, -0.060842, -0.060938, -0.061034, -0.061129, -0.061225, + -0.061321, -0.061416, -0.061512, -0.061608, -0.061704, -0.061799, -0.061895, -0.061991, + -0.062086, -0.062182, -0.062278, -0.062373, -0.062469, -0.062565, -0.062660, -0.062756, + -0.062852, -0.062947, -0.063043, -0.063139, -0.063234, -0.063330, -0.063426, -0.063522, + -0.063617, -0.063713, -0.063809, -0.063904, -0.064000, -0.064096, -0.064191, -0.064287, + -0.064383, -0.064478, -0.064574, -0.064670, -0.064765, -0.064861, -0.064957, -0.065052, + -0.065148, -0.065244, -0.065339, -0.065435, -0.065531, -0.065626, -0.065722, -0.065818, + -0.065913, -0.066009, -0.066105, -0.066200, -0.066296, -0.066392, -0.066487, -0.066583, + -0.066679, -0.066774, -0.066870, -0.066966, -0.067061, -0.067157, -0.067253, -0.067348, + -0.067444, -0.067540, -0.067635, -0.067731, -0.067827, -0.067922, -0.068018, -0.068113, + -0.068209, -0.068305, -0.068400, -0.068496, -0.068592, -0.068687, -0.068783, -0.068879, + -0.068974, -0.069070, -0.069166, -0.069261, -0.069357, -0.069453, -0.069548, -0.069644, + -0.069739, -0.069835, -0.069931, -0.070026, -0.070122, -0.070218, -0.070313, -0.070409, + -0.070505, -0.070600, -0.070696, -0.070791, -0.070887, -0.070983, -0.071078, -0.071174, + -0.071270, -0.071365, -0.071461, -0.071557, -0.071652, -0.071748, -0.071843, -0.071939, + -0.072035, -0.072130, -0.072226, -0.072322, -0.072417, -0.072513, -0.072608, -0.072704, + -0.072800, -0.072895, -0.072991, -0.073086, -0.073182, -0.073278, -0.073373, -0.073469, + -0.073565, -0.073660, -0.073756, -0.073851, -0.073947, -0.074043, -0.074138, -0.074234, + -0.074329, -0.074425, -0.074521, -0.074616, -0.074712, -0.074807, -0.074903, -0.074999, + -0.075094, -0.075190, -0.075286, -0.075381, -0.075477, -0.075572, -0.075668, -0.075764, + -0.075859, -0.075955, -0.076050, -0.076146, -0.076241, -0.076337, -0.076433, -0.076528, + -0.076624, -0.076719, -0.076815, -0.076911, -0.077006, -0.077102, -0.077197, -0.077293, + -0.077389, -0.077484, -0.077580, -0.077675, -0.077771, -0.077866, -0.077962, -0.078058, + -0.078153, -0.078249, -0.078344, -0.078440, -0.078536, -0.078631, -0.078727, -0.078822, + -0.078918, -0.079013, -0.079109, -0.079205, -0.079300, -0.079396, -0.079491, -0.079587, + -0.079682, -0.079778, -0.079874, -0.079969, -0.080065, -0.080160, -0.080256, -0.080351, + -0.080447, -0.080543, -0.080638, -0.080734, -0.080829, -0.080925, -0.081020, -0.081116, + -0.081211, -0.081307, -0.081403, -0.081498, -0.081594, -0.081689, -0.081785, -0.081880, + -0.081976, -0.082071, -0.082167, -0.082263, -0.082358, -0.082454, -0.082549, -0.082645, + -0.082740, -0.082836, -0.082931, -0.083027, -0.083122, -0.083218, -0.083314, -0.083409, + -0.083505, -0.083600, -0.083696, -0.083791, -0.083887, -0.083982, -0.084078, -0.084173, + -0.084269, -0.084364, -0.084460, -0.084555, -0.084651, -0.084747, -0.084842, -0.084938, + -0.085033, -0.085129, -0.085224, -0.085320, -0.085415, -0.085511, -0.085606, -0.085702, + -0.085797, -0.085893, -0.085988, -0.086084, -0.086179, -0.086275, -0.086370, -0.086466, + -0.086561, -0.086657, -0.086752, -0.086848, -0.086943, -0.087039, -0.087135, -0.087230, + -0.087326, -0.087421, -0.087517, -0.087612, -0.087708, -0.087803, -0.087899, -0.087994, + -0.088090, -0.088185, -0.088281, -0.088376, -0.088472, -0.088567, -0.088663, -0.088758, + -0.088854, -0.088949, -0.089045, -0.089140, -0.089236, -0.089331, -0.089427, -0.089522, + -0.089617, -0.089713, -0.089808, -0.089904, -0.089999, -0.090095, -0.090190, -0.090286, + -0.090381, -0.090477, -0.090572, -0.090668, -0.090763, -0.090859, -0.090954, -0.091050, + -0.091145, -0.091241, -0.091336, -0.091432, -0.091527, -0.091623, -0.091718, -0.091813, + -0.091909, -0.092004, -0.092100, -0.092195, -0.092291, -0.092386, -0.092482, -0.092577, + -0.092673, -0.092768, -0.092864, -0.092959, -0.093055, -0.093150, -0.093245, -0.093341, + -0.093436, -0.093532, -0.093627, -0.093723, -0.093818, -0.093914, -0.094009, -0.094104, + -0.094200, -0.094295, -0.094391, -0.094486, -0.094582, -0.094677, -0.094773, -0.094868, + -0.094963, -0.095059, -0.095154, -0.095250, -0.095345, -0.095441, -0.095536, -0.095632, + -0.095727, -0.095822, -0.095918, -0.096013, -0.096109, -0.096204, -0.096300, -0.096395, + -0.096490, -0.096586, -0.096681, -0.096777, -0.096872, -0.096968, -0.097063, -0.097158, + -0.097254, -0.097349, -0.097445, -0.097540, -0.097635, -0.097731, -0.097826, -0.097922, + -0.098017, -0.098113, -0.098208, -0.098303, -0.098399, -0.098494, -0.098590, -0.098685, + -0.098780, -0.098876, -0.098971, -0.099067, -0.099162, -0.099257, -0.099353, -0.099448, + -0.099544, -0.099639, -0.099734, -0.099830, -0.099925, -0.100021, -0.100116, -0.100211, + -0.100307, -0.100402, -0.100498, -0.100593, -0.100688, -0.100784, -0.100879, -0.100974, + -0.101070, -0.101165, -0.101261, -0.101356, -0.101451, -0.101547, -0.101642, -0.101738, + -0.101833, -0.101928, -0.102024, -0.102119, -0.102214, -0.102310, -0.102405, -0.102500, + -0.102596, -0.102691, -0.102787, -0.102882, -0.102977, -0.103073, -0.103168, -0.103263, + -0.103359, -0.103454, -0.103550, -0.103645, -0.103740, -0.103836, -0.103931, -0.104026, + -0.104122, -0.104217, -0.104312, -0.104408, -0.104503, -0.104598, -0.104694, -0.104789, + -0.104884, -0.104980, -0.105075, -0.105170, -0.105266, -0.105361, -0.105456, -0.105552, + -0.105647, -0.105742, -0.105838, -0.105933, -0.106028, -0.106124, -0.106219, -0.106314, + -0.106410, -0.106505, -0.106600, -0.106696, -0.106791, -0.106886, -0.106982, -0.107077, + -0.107172, -0.107268, -0.107363, -0.107458, -0.107554, -0.107649, -0.107744, -0.107840, + -0.107935, -0.108030, -0.108126, -0.108221, -0.108316, -0.108412, -0.108507, -0.108602, + -0.108697, -0.108793, -0.108888, -0.108983, -0.109079, -0.109174, -0.109269, -0.109365, + -0.109460, -0.109555, -0.109650, -0.109746, -0.109841, -0.109936, -0.110032, -0.110127, + -0.110222, -0.110317, -0.110413, -0.110508, -0.110603, -0.110699, -0.110794, -0.110889, + -0.110984, -0.111080, -0.111175, -0.111270, -0.111366, -0.111461, -0.111556, -0.111651, + -0.111747, -0.111842, -0.111937, -0.112033, -0.112128, -0.112223, -0.112318, -0.112414, + -0.112509, -0.112604, -0.112699, -0.112795, -0.112890, -0.112985, -0.113080, -0.113176, + -0.113271, -0.113366, -0.113461, -0.113557, -0.113652, -0.113747, -0.113842, -0.113938, + -0.114033, -0.114128, -0.114223, -0.114319, -0.114414, -0.114509, -0.114604, -0.114700, + -0.114795, -0.114890, -0.114985, -0.115081, -0.115176, -0.115271, -0.115366, -0.115462, + -0.115557, -0.115652, -0.115747, -0.115842, -0.115938, -0.116033, -0.116128, -0.116223, + -0.116319, -0.116414, -0.116509, -0.116604, -0.116700, -0.116795, -0.116890, -0.116985, + -0.117080, -0.117176, -0.117271, -0.117366, -0.117461, -0.117556, -0.117652, -0.117747, + -0.117842, -0.117937, -0.118032, -0.118128, -0.118223, -0.118318, -0.118413, -0.118508, + -0.118604, -0.118699, -0.118794, -0.118889, -0.118984, -0.119080, -0.119175, -0.119270, + -0.119365, -0.119460, -0.119556, -0.119651, -0.119746, -0.119841, -0.119936, -0.120032, + -0.120127, -0.120222, -0.120317, -0.120412, -0.120507, -0.120603, -0.120698, -0.120793, + -0.120888, -0.120983, -0.121078, -0.121174, -0.121269, -0.121364, -0.121459, -0.121554, + -0.121649, -0.121745, -0.121840, -0.121935, -0.122030, -0.122125, -0.122220, -0.122316, + -0.122411, -0.122506, -0.122601, -0.122696, -0.122791, -0.122886, -0.122982, -0.123077, + -0.123172, -0.123267, -0.123362, -0.123457, -0.123552, -0.123648, -0.123743, -0.123838, + -0.123933, -0.124028, -0.124123, -0.124218, -0.124314, -0.124409, -0.124504, -0.124599, + -0.124694, -0.124789, -0.124884, -0.124979, -0.125075, -0.125170, -0.125265, -0.125360, + -0.125455, -0.125550, -0.125645, -0.125740, -0.125835, -0.125931, -0.126026, -0.126121, + -0.126216, -0.126311, -0.126406, -0.126501, -0.126596, -0.126691, -0.126787, -0.126882, + -0.126977, -0.127072, -0.127167, -0.127262, -0.127357, -0.127452, -0.127547, -0.127642, + -0.127737, -0.127833, -0.127928, -0.128023, -0.128118, -0.128213, -0.128308, -0.128403, + -0.128498, -0.128593, -0.128688, -0.128783, -0.128878, -0.128973, -0.129069, -0.129164, + -0.129259, -0.129354, -0.129449, -0.129544, -0.129639, -0.129734, -0.129829, -0.129924, + -0.130019, -0.130114, -0.130209, -0.130304, -0.130399, -0.130495, -0.130590, -0.130685, + -0.130780, -0.130875, -0.130970, -0.131065, -0.131160, -0.131255, -0.131350, -0.131445, + -0.131540, -0.131635, -0.131730, -0.131825, -0.131920, -0.132015, -0.132110, -0.132205, + -0.132300, -0.132395, -0.132490, -0.132585, -0.132680, -0.132775, -0.132870, -0.132966, + -0.133061, -0.133156, -0.133251, -0.133346, -0.133441, -0.133536, -0.133631, -0.133726, + -0.133821, -0.133916, -0.134011, -0.134106, -0.134201, -0.134296, -0.134391, -0.134486, + -0.134581, -0.134676, -0.134771, -0.134866, -0.134961, -0.135056, -0.135151, -0.135246, + -0.135341, -0.135436, -0.135531, -0.135626, -0.135721, -0.135816, -0.135911, -0.136006, + -0.136101, -0.136196, -0.136291, -0.136386, -0.136480, -0.136575, -0.136670, -0.136765, + -0.136860, -0.136955, -0.137050, -0.137145, -0.137240, -0.137335, -0.137430, -0.137525, + -0.137620, -0.137715, -0.137810, -0.137905, -0.138000, -0.138095, -0.138190, -0.138285, + -0.138380, -0.138475, -0.138570, -0.138665, -0.138760, -0.138855, -0.138949, -0.139044, + -0.139139, -0.139234, -0.139329, -0.139424, -0.139519, -0.139614, -0.139709, -0.139804, + -0.139899, -0.139994, -0.140089, -0.140184, -0.140279, -0.140373, -0.140468, -0.140563, + -0.140658, -0.140753, -0.140848, -0.140943, -0.141038, -0.141133, -0.141228, -0.141323, + -0.141418, -0.141512, -0.141607, -0.141702, -0.141797, -0.141892, -0.141987, -0.142082, + -0.142177, -0.142272, -0.142367, -0.142461, -0.142556, -0.142651, -0.142746, -0.142841, + -0.142936, -0.143031, -0.143126, -0.143221, -0.143316, -0.143410, -0.143505, -0.143600, + -0.143695, -0.143790, -0.143885, -0.143980, -0.144075, -0.144169, -0.144264, -0.144359, + -0.144454, -0.144549, -0.144644, -0.144739, -0.144833, -0.144928, -0.145023, -0.145118, + -0.145213, -0.145308, -0.145403, -0.145497, -0.145592, -0.145687, -0.145782, -0.145877, + -0.145972, -0.146067, -0.146161, -0.146256, -0.146351, -0.146446, -0.146541, -0.146636, + -0.146730, -0.146825, -0.146920, -0.147015, -0.147110, -0.147205, -0.147299, -0.147394, + -0.147489, -0.147584, -0.147679, -0.147774, -0.147868, -0.147963, -0.148058, -0.148153, + -0.148248, -0.148342, -0.148437, -0.148532, -0.148627, -0.148722, -0.148817, -0.148911, + -0.149006, -0.149101, -0.149196, -0.149291, -0.149385, -0.149480, -0.149575, -0.149670, + -0.149765, -0.149859, -0.149954, -0.150049, -0.150144, -0.150238, -0.150333, -0.150428, + -0.150523, -0.150618, -0.150712, -0.150807, -0.150902, -0.150997, -0.151092, -0.151186, + -0.151281, -0.151376, -0.151471, -0.151565, -0.151660, -0.151755, -0.151850, -0.151944, + -0.152039, -0.152134, -0.152229, -0.152323, -0.152418, -0.152513, -0.152608, -0.152702, + -0.152797, -0.152892, -0.152987, -0.153081, -0.153176, -0.153271, -0.153366, -0.153460, + -0.153555, -0.153650, -0.153745, -0.153839, -0.153934, -0.154029, -0.154124, -0.154218, + -0.154313, -0.154408, -0.154502, -0.154597, -0.154692, -0.154787, -0.154881, -0.154976, + -0.155071, -0.155165, -0.155260, -0.155355, -0.155450, -0.155544, -0.155639, -0.155734, + -0.155828, -0.155923, -0.156018, -0.156112, -0.156207, -0.156302, -0.156397, -0.156491, + -0.156586, -0.156681, -0.156775, -0.156870, -0.156965, -0.157059, -0.157154, -0.157249, + -0.157343, -0.157438, -0.157533, -0.157627, -0.157722, -0.157817, -0.157912, -0.158006, + -0.158101, -0.158196, -0.158290, -0.158385, -0.158480, -0.158574, -0.158669, -0.158763, + -0.158858, -0.158953, -0.159047, -0.159142, -0.159237, -0.159331, -0.159426, -0.159521, + -0.159615, -0.159710, -0.159805, -0.159899, -0.159994, -0.160089, -0.160183, -0.160278, + -0.160372, -0.160467, -0.160562, -0.160656, -0.160751, -0.160846, -0.160940, -0.161035, + -0.161129, -0.161224, -0.161319, -0.161413, -0.161508, -0.161603, -0.161697, -0.161792, + -0.161886, -0.161981, -0.162076, -0.162170, -0.162265, -0.162359, -0.162454, -0.162549, + -0.162643, -0.162738, -0.162832, -0.162927, -0.163022, -0.163116, -0.163211, -0.163305, + -0.163400, -0.163495, -0.163589, -0.163684, -0.163778, -0.163873, -0.163967, -0.164062, + -0.164157, -0.164251, -0.164346, -0.164440, -0.164535, -0.164629, -0.164724, -0.164819, + -0.164913, -0.165008, -0.165102, -0.165197, -0.165291, -0.165386, -0.165480, -0.165575, + -0.165670, -0.165764, -0.165859, -0.165953, -0.166048, -0.166142, -0.166237, -0.166331, + -0.166426, -0.166520, -0.166615, -0.166710, -0.166804, -0.166899, -0.166993, -0.167088, + -0.167182, -0.167277, -0.167371, -0.167466, -0.167560, -0.167655, -0.167749, -0.167844, + -0.167938, -0.168033, -0.168127, -0.168222, -0.168316, -0.168411, -0.168505, -0.168600, + -0.168694, -0.168789, -0.168883, -0.168978, -0.169072, -0.169167, -0.169261, -0.169356, + -0.169450, -0.169545, -0.169639, -0.169734, -0.169828, -0.169923, -0.170017, -0.170112, + -0.170206, -0.170301, -0.170395, -0.170490, -0.170584, -0.170678, -0.170773, -0.170867, + -0.170962, -0.171056, -0.171151, -0.171245, -0.171340, -0.171434, -0.171529, -0.171623, + -0.171718, -0.171812, -0.171906, -0.172001, -0.172095, -0.172190, -0.172284, -0.172379, + -0.172473, -0.172568, -0.172662, -0.172756, -0.172851, -0.172945, -0.173040, -0.173134, + -0.173229, -0.173323, -0.173417, -0.173512, -0.173606, -0.173701, -0.173795, -0.173889, + -0.173984, -0.174078, -0.174173, -0.174267, -0.174362, -0.174456, -0.174550, -0.174645, + -0.174739, -0.174834, -0.174928, -0.175022, -0.175117, -0.175211, -0.175305, -0.175400, + -0.175494, -0.175589, -0.175683, -0.175777, -0.175872, -0.175966, -0.176061, -0.176155, + -0.176249, -0.176344, -0.176438, -0.176532, -0.176627, -0.176721, -0.176815, -0.176910, + -0.177004, -0.177099, -0.177193, -0.177287, -0.177382, -0.177476, -0.177570, -0.177665, + -0.177759, -0.177853, -0.177948, -0.178042, -0.178136, -0.178231, -0.178325, -0.178419, + -0.178514, -0.178608, -0.178702, -0.178797, -0.178891, -0.178985, -0.179080, -0.179174, + -0.179268, -0.179363, -0.179457, -0.179551, -0.179646, -0.179740, -0.179834, -0.179929, + -0.180023, -0.180117, -0.180212, -0.180306, -0.180400, -0.180494, -0.180589, -0.180683, + -0.180777, -0.180872, -0.180966, -0.181060, -0.181154, -0.181249, -0.181343, -0.181437, + -0.181532, -0.181626, -0.181720, -0.181814, -0.181909, -0.182003, -0.182097, -0.182192, + -0.182286, -0.182380, -0.182474, -0.182569, -0.182663, -0.182757, -0.182851, -0.182946, + -0.183040, -0.183134, -0.183228, -0.183323, -0.183417, -0.183511, -0.183605, -0.183700, + -0.183794, -0.183888, -0.183982, -0.184077, -0.184171, -0.184265, -0.184359, -0.184454, + -0.184548, -0.184642, -0.184736, -0.184830, -0.184925, -0.185019, -0.185113, -0.185207, + -0.185301, -0.185396, -0.185490, -0.185584, -0.185678, -0.185773, -0.185867, -0.185961, + -0.186055, -0.186149, -0.186244, -0.186338, -0.186432, -0.186526, -0.186620, -0.186715, + -0.186809, -0.186903, -0.186997, -0.187091, -0.187185, -0.187280, -0.187374, -0.187468, + -0.187562, -0.187656, -0.187750, -0.187845, -0.187939, -0.188033, -0.188127, -0.188221, + -0.188315, -0.188410, -0.188504, -0.188598, -0.188692, -0.188786, -0.188880, -0.188975, + -0.189069, -0.189163, -0.189257, -0.189351, -0.189445, -0.189539, -0.189634, -0.189728, + -0.189822, -0.189916, -0.190010, -0.190104, -0.190198, -0.190292, -0.190387, -0.190481, + -0.190575, -0.190669, -0.190763, -0.190857, -0.190951, -0.191045, -0.191139, -0.191234, + -0.191328, -0.191422, -0.191516, -0.191610, -0.191704, -0.191798, -0.191892, -0.191986, + -0.192080, -0.192174, -0.192269, -0.192363, -0.192457, -0.192551, -0.192645, -0.192739, + -0.192833, -0.192927, -0.193021, -0.193115, -0.193209, -0.193303, -0.193397, -0.193492, + -0.193586, -0.193680, -0.193774, -0.193868, -0.193962, -0.194056, -0.194150, -0.194244, + -0.194338, -0.194432, -0.194526, -0.194620, -0.194714, -0.194808, -0.194902, -0.194996, + -0.195090, -0.195184, -0.195278, -0.195372, -0.195466, -0.195560, -0.195654, -0.195748, + -0.195843, -0.195937, -0.196031, -0.196125, -0.196219, -0.196313, -0.196407, -0.196501, + -0.196595, -0.196689, -0.196783, -0.196877, -0.196971, -0.197065, -0.197159, -0.197253, + -0.197347, -0.197441, -0.197535, -0.197629, -0.197722, -0.197816, -0.197910, -0.198004, + -0.198098, -0.198192, -0.198286, -0.198380, -0.198474, -0.198568, -0.198662, -0.198756, + -0.198850, -0.198944, -0.199038, -0.199132, -0.199226, -0.199320, -0.199414, -0.199508, + -0.199602, -0.199696, -0.199790, -0.199884, -0.199978, -0.200071, -0.200165, -0.200259, + -0.200353, -0.200447, -0.200541, -0.200635, -0.200729, -0.200823, -0.200917, -0.201011, + -0.201105, -0.201199, -0.201292, -0.201386, -0.201480, -0.201574, -0.201668, -0.201762, + -0.201856, -0.201950, -0.202044, -0.202138, -0.202231, -0.202325, -0.202419, -0.202513, + -0.202607, -0.202701, -0.202795, -0.202889, -0.202983, -0.203076, -0.203170, -0.203264, + -0.203358, -0.203452, -0.203546, -0.203640, -0.203734, -0.203827, -0.203921, -0.204015, + -0.204109, -0.204203, -0.204297, -0.204391, -0.204484, -0.204578, -0.204672, -0.204766, + -0.204860, -0.204954, -0.205047, -0.205141, -0.205235, -0.205329, -0.205423, -0.205517, + -0.205610, -0.205704, -0.205798, -0.205892, -0.205986, -0.206080, -0.206173, -0.206267, + -0.206361, -0.206455, -0.206549, -0.206642, -0.206736, -0.206830, -0.206924, -0.207018, + -0.207111, -0.207205, -0.207299, -0.207393, -0.207487, -0.207580, -0.207674, -0.207768, + -0.207862, -0.207955, -0.208049, -0.208143, -0.208237, -0.208331, -0.208424, -0.208518, + -0.208612, -0.208706, -0.208799, -0.208893, -0.208987, -0.209081, -0.209174, -0.209268, + -0.209362, -0.209456, -0.209549, -0.209643, -0.209737, -0.209831, -0.209924, -0.210018, + -0.210112, -0.210206, -0.210299, -0.210393, -0.210487, -0.210580, -0.210674, -0.210768, + -0.210862, -0.210955, -0.211049, -0.211143, -0.211237, -0.211330, -0.211424, -0.211518, + -0.211611, -0.211705, -0.211799, -0.211892, -0.211986, -0.212080, -0.212174, -0.212267, + -0.212361, -0.212455, -0.212548, -0.212642, -0.212736, -0.212829, -0.212923, -0.213017, + -0.213110, -0.213204, -0.213298, -0.213391, -0.213485, -0.213579, -0.213672, -0.213766, + -0.213860, -0.213953, -0.214047, -0.214141, -0.214234, -0.214328, -0.214422, -0.214515, + -0.214609, -0.214702, -0.214796, -0.214890, -0.214983, -0.215077, -0.215171, -0.215264, + -0.215358, -0.215451, -0.215545, -0.215639, -0.215732, -0.215826, -0.215920, -0.216013, + -0.216107, -0.216200, -0.216294, -0.216388, -0.216481, -0.216575, -0.216668, -0.216762, + -0.216856, -0.216949, -0.217043, -0.217136, -0.217230, -0.217324, -0.217417, -0.217511, + -0.217604, -0.217698, -0.217791, -0.217885, -0.217979, -0.218072, -0.218166, -0.218259, + -0.218353, -0.218446, -0.218540, -0.218633, -0.218727, -0.218821, -0.218914, -0.219008, + -0.219101, -0.219195, -0.219288, -0.219382, -0.219475, -0.219569, -0.219662, -0.219756, + -0.219850, -0.219943, -0.220037, -0.220130, -0.220224, -0.220317, -0.220411, -0.220504, + -0.220598, -0.220691, -0.220785, -0.220878, -0.220972, -0.221065, -0.221159, -0.221252, + -0.221346, -0.221439, -0.221533, -0.221626, -0.221720, -0.221813, -0.221907, -0.222000, + -0.222094, -0.222187, -0.222281, -0.222374, -0.222468, -0.222561, -0.222654, -0.222748, + -0.222841, -0.222935, -0.223028, -0.223122, -0.223215, -0.223309, -0.223402, -0.223496, + -0.223589, -0.223682, -0.223776, -0.223869, -0.223963, -0.224056, -0.224150, -0.224243, + -0.224337, -0.224430, -0.224523, -0.224617, -0.224710, -0.224804, -0.224897, -0.224991, + -0.225084, -0.225177, -0.225271, -0.225364, -0.225458, -0.225551, -0.225644, -0.225738, + -0.225831, -0.225925, -0.226018, -0.226111, -0.226205, -0.226298, -0.226391, -0.226485, + -0.226578, -0.226672, -0.226765, -0.226858, -0.226952, -0.227045, -0.227139, -0.227232, + -0.227325, -0.227419, -0.227512, -0.227605, -0.227699, -0.227792, -0.227885, -0.227979, + -0.228072, -0.228165, -0.228259, -0.228352, -0.228445, -0.228539, -0.228632, -0.228725, + -0.228819, -0.228912, -0.229005, -0.229099, -0.229192, -0.229285, -0.229379, -0.229472, + -0.229565, -0.229659, -0.229752, -0.229845, -0.229939, -0.230032, -0.230125, -0.230218, + -0.230312, -0.230405, -0.230498, -0.230592, -0.230685, -0.230778, -0.230872, -0.230965, + -0.231058, -0.231151, -0.231245, -0.231338, -0.231431, -0.231524, -0.231618, -0.231711, + -0.231804, -0.231898, -0.231991, -0.232084, -0.232177, -0.232271, -0.232364, -0.232457, + -0.232550, -0.232644, -0.232737, -0.232830, -0.232923, -0.233017, -0.233110, -0.233203, + -0.233296, -0.233389, -0.233483, -0.233576, -0.233669, -0.233762, -0.233856, -0.233949, + -0.234042, -0.234135, -0.234228, -0.234322, -0.234415, -0.234508, -0.234601, -0.234694, + -0.234788, -0.234881, -0.234974, -0.235067, -0.235160, -0.235254, -0.235347, -0.235440, + -0.235533, -0.235626, -0.235719, -0.235813, -0.235906, -0.235999, -0.236092, -0.236185, + -0.236278, -0.236372, -0.236465, -0.236558, -0.236651, -0.236744, -0.236837, -0.236930, + -0.237024, -0.237117, -0.237210, -0.237303, -0.237396, -0.237489, -0.237582, -0.237676, + -0.237769, -0.237862, -0.237955, -0.238048, -0.238141, -0.238234, -0.238327, -0.238420, + -0.238514, -0.238607, -0.238700, -0.238793, -0.238886, -0.238979, -0.239072, -0.239165, + -0.239258, -0.239351, -0.239445, -0.239538, -0.239631, -0.239724, -0.239817, -0.239910, + -0.240003, -0.240096, -0.240189, -0.240282, -0.240375, -0.240468, -0.240561, -0.240654, + -0.240748, -0.240841, -0.240934, -0.241027, -0.241120, -0.241213, -0.241306, -0.241399, + -0.241492, -0.241585, -0.241678, -0.241771, -0.241864, -0.241957, -0.242050, -0.242143, + -0.242236, -0.242329, -0.242422, -0.242515, -0.242608, -0.242701, -0.242794, -0.242887, + -0.242980, -0.243073, -0.243166, -0.243259, -0.243352, -0.243445, -0.243538, -0.243631, + -0.243724, -0.243817, -0.243910, -0.244003, -0.244096, -0.244189, -0.244282, -0.244375, + -0.244468, -0.244561, -0.244654, -0.244747, -0.244840, -0.244933, -0.245026, -0.245119, + -0.245212, -0.245304, -0.245397, -0.245490, -0.245583, -0.245676, -0.245769, -0.245862, + -0.245955, -0.246048, -0.246141, -0.246234, -0.246327, -0.246420, -0.246513, -0.246606, + -0.246698, -0.246791, -0.246884, -0.246977, -0.247070, -0.247163, -0.247256, -0.247349, + -0.247442, -0.247535, -0.247627, -0.247720, -0.247813, -0.247906, -0.247999, -0.248092, + -0.248185, -0.248278, -0.248370, -0.248463, -0.248556, -0.248649, -0.248742, -0.248835, + -0.248928, -0.249020, -0.249113, -0.249206, -0.249299, -0.249392, -0.249485, -0.249578, + -0.249670, -0.249763, -0.249856, -0.249949, -0.250042, -0.250135, -0.250227, -0.250320, + -0.250413, -0.250506, -0.250599, -0.250691, -0.250784, -0.250877, -0.250970, -0.251063, + -0.251155, -0.251248, -0.251341, -0.251434, -0.251527, -0.251619, -0.251712, -0.251805, + -0.251898, -0.251991, -0.252083, -0.252176, -0.252269, -0.252362, -0.252454, -0.252547, + -0.252640, -0.252733, -0.252826, -0.252918, -0.253011, -0.253104, -0.253197, -0.253289, + -0.253382, -0.253475, -0.253568, -0.253660, -0.253753, -0.253846, -0.253938, -0.254031, + -0.254124, -0.254217, -0.254309, -0.254402, -0.254495, -0.254588, -0.254680, -0.254773, + -0.254866, -0.254958, -0.255051, -0.255144, -0.255236, -0.255329, -0.255422, -0.255515, + -0.255607, -0.255700, -0.255793, -0.255885, -0.255978, -0.256071, -0.256163, -0.256256, + -0.256349, -0.256441, -0.256534, -0.256627, -0.256719, -0.256812, -0.256905, -0.256997, + -0.257090, -0.257183, -0.257275, -0.257368, -0.257461, -0.257553, -0.257646, -0.257738, + -0.257831, -0.257924, -0.258016, -0.258109, -0.258202, -0.258294, -0.258387, -0.258479, + -0.258572, -0.258665, -0.258757, -0.258850, -0.258943, -0.259035, -0.259128, -0.259220, + -0.259313, -0.259405, -0.259498, -0.259591, -0.259683, -0.259776, -0.259868, -0.259961, + -0.260054, -0.260146, -0.260239, -0.260331, -0.260424, -0.260516, -0.260609, -0.260702, + -0.260794, -0.260887, -0.260979, -0.261072, -0.261164, -0.261257, -0.261349, -0.261442, + -0.261534, -0.261627, -0.261720, -0.261812, -0.261905, -0.261997, -0.262090, -0.262182, + -0.262275, -0.262367, -0.262460, -0.262552, -0.262645, -0.262737, -0.262830, -0.262922, + -0.263015, -0.263107, -0.263200, -0.263292, -0.263385, -0.263477, -0.263570, -0.263662, + -0.263755, -0.263847, -0.263940, -0.264032, -0.264125, -0.264217, -0.264309, -0.264402, + -0.264494, -0.264587, -0.264679, -0.264772, -0.264864, -0.264957, -0.265049, -0.265142, + -0.265234, -0.265326, -0.265419, -0.265511, -0.265604, -0.265696, -0.265789, -0.265881, + -0.265973, -0.266066, -0.266158, -0.266251, -0.266343, -0.266436, -0.266528, -0.266620, + -0.266713, -0.266805, -0.266898, -0.266990, -0.267082, -0.267175, -0.267267, -0.267359, + -0.267452, -0.267544, -0.267637, -0.267729, -0.267821, -0.267914, -0.268006, -0.268099, + -0.268191, -0.268283, -0.268376, -0.268468, -0.268560, -0.268653, -0.268745, -0.268837, + -0.268930, -0.269022, -0.269114, -0.269207, -0.269299, -0.269391, -0.269484, -0.269576, + -0.269668, -0.269761, -0.269853, -0.269945, -0.270038, -0.270130, -0.270222, -0.270315, + -0.270407, -0.270499, -0.270591, -0.270684, -0.270776, -0.270868, -0.270961, -0.271053, + -0.271145, -0.271237, -0.271330, -0.271422, -0.271514, -0.271607, -0.271699, -0.271791, + -0.271883, -0.271976, -0.272068, -0.272160, -0.272252, -0.272345, -0.272437, -0.272529, + -0.272621, -0.272714, -0.272806, -0.272898, -0.272990, -0.273083, -0.273175, -0.273267, + -0.273359, -0.273451, -0.273544, -0.273636, -0.273728, -0.273820, -0.273912, -0.274005, + -0.274097, -0.274189, -0.274281, -0.274374, -0.274466, -0.274558, -0.274650, -0.274742, + -0.274834, -0.274927, -0.275019, -0.275111, -0.275203, -0.275295, -0.275387, -0.275480, + -0.275572, -0.275664, -0.275756, -0.275848, -0.275940, -0.276033, -0.276125, -0.276217, + -0.276309, -0.276401, -0.276493, -0.276585, -0.276678, -0.276770, -0.276862, -0.276954, + -0.277046, -0.277138, -0.277230, -0.277322, -0.277415, -0.277507, -0.277599, -0.277691, + -0.277783, -0.277875, -0.277967, -0.278059, -0.278151, -0.278243, -0.278336, -0.278428, + -0.278520, -0.278612, -0.278704, -0.278796, -0.278888, -0.278980, -0.279072, -0.279164, + -0.279256, -0.279348, -0.279440, -0.279532, -0.279624, -0.279717, -0.279809, -0.279901, + -0.279993, -0.280085, -0.280177, -0.280269, -0.280361, -0.280453, -0.280545, -0.280637, + -0.280729, -0.280821, -0.280913, -0.281005, -0.281097, -0.281189, -0.281281, -0.281373, + -0.281465, -0.281557, -0.281649, -0.281741, -0.281833, -0.281925, -0.282017, -0.282109, + -0.282201, -0.282293, -0.282385, -0.282477, -0.282569, -0.282661, -0.282753, -0.282845, + -0.282937, -0.283029, -0.283120, -0.283212, -0.283304, -0.283396, -0.283488, -0.283580, + -0.283672, -0.283764, -0.283856, -0.283948, -0.284040, -0.284132, -0.284224, -0.284316, + -0.284408, -0.284499, -0.284591, -0.284683, -0.284775, -0.284867, -0.284959, -0.285051, + -0.285143, -0.285235, -0.285327, -0.285418, -0.285510, -0.285602, -0.285694, -0.285786, + -0.285878, -0.285970, -0.286062, -0.286153, -0.286245, -0.286337, -0.286429, -0.286521, + -0.286613, -0.286705, -0.286796, -0.286888, -0.286980, -0.287072, -0.287164, -0.287256, + -0.287347, -0.287439, -0.287531, -0.287623, -0.287715, -0.287807, -0.287898, -0.287990, + -0.288082, -0.288174, -0.288266, -0.288357, -0.288449, -0.288541, -0.288633, -0.288725, + -0.288816, -0.288908, -0.289000, -0.289092, -0.289184, -0.289275, -0.289367, -0.289459, + -0.289551, -0.289642, -0.289734, -0.289826, -0.289918, -0.290009, -0.290101, -0.290193, + -0.290285, -0.290376, -0.290468, -0.290560, -0.290652, -0.290743, -0.290835, -0.290927, + -0.291019, -0.291110, -0.291202, -0.291294, -0.291385, -0.291477, -0.291569, -0.291661, + -0.291752, -0.291844, -0.291936, -0.292027, -0.292119, -0.292211, -0.292302, -0.292394, + -0.292486, -0.292577, -0.292669, -0.292761, -0.292852, -0.292944, -0.293036, -0.293128, + -0.293219, -0.293311, -0.293402, -0.293494, -0.293586, -0.293677, -0.293769, -0.293861, + -0.293952, -0.294044, -0.294136, -0.294227, -0.294319, -0.294410, -0.294502, -0.294594, + -0.294685, -0.294777, -0.294869, -0.294960, -0.295052, -0.295143, -0.295235, -0.295327, + -0.295418, -0.295510, -0.295601, -0.295693, -0.295785, -0.295876, -0.295968, -0.296059, + -0.296151, -0.296242, -0.296334, -0.296426, -0.296517, -0.296609, -0.296700, -0.296792, + -0.296883, -0.296975, -0.297066, -0.297158, -0.297250, -0.297341, -0.297433, -0.297524, + -0.297616, -0.297707, -0.297799, -0.297890, -0.297982, -0.298073, -0.298165, -0.298256, + -0.298348, -0.298439, -0.298531, -0.298622, -0.298714, -0.298805, -0.298897, -0.298988, + -0.299080, -0.299171, -0.299263, -0.299354, -0.299446, -0.299537, -0.299629, -0.299720, + -0.299812, -0.299903, -0.299995, -0.300086, -0.300177, -0.300269, -0.300360, -0.300452, + -0.300543, -0.300635, -0.300726, -0.300818, -0.300909, -0.301000, -0.301092, -0.301183, + -0.301275, -0.301366, -0.301458, -0.301549, -0.301640, -0.301732, -0.301823, -0.301915, + -0.302006, -0.302097, -0.302189, -0.302280, -0.302372, -0.302463, -0.302554, -0.302646, + -0.302737, -0.302828, -0.302920, -0.303011, -0.303103, -0.303194, -0.303285, -0.303377, + -0.303468, -0.303559, -0.303651, -0.303742, -0.303833, -0.303925, -0.304016, -0.304107, + -0.304199, -0.304290, -0.304381, -0.304473, -0.304564, -0.304655, -0.304747, -0.304838, + -0.304929, -0.305021, -0.305112, -0.305203, -0.305294, -0.305386, -0.305477, -0.305568, + -0.305660, -0.305751, -0.305842, -0.305933, -0.306025, -0.306116, -0.306207, -0.306299, + -0.306390, -0.306481, -0.306572, -0.306664, -0.306755, -0.306846, -0.306937, -0.307029, + -0.307120, -0.307211, -0.307302, -0.307394, -0.307485, -0.307576, -0.307667, -0.307758, + -0.307850, -0.307941, -0.308032, -0.308123, -0.308214, -0.308306, -0.308397, -0.308488, + -0.308579, -0.308670, -0.308762, -0.308853, -0.308944, -0.309035, -0.309126, -0.309218, + -0.309309, -0.309400, -0.309491, -0.309582, -0.309673, -0.309765, -0.309856, -0.309947, + -0.310038, -0.310129, -0.310220, -0.310311, -0.310403, -0.310494, -0.310585, -0.310676, + -0.310767, -0.310858, -0.310949, -0.311041, -0.311132, -0.311223, -0.311314, -0.311405, + -0.311496, -0.311587, -0.311678, -0.311769, -0.311860, -0.311952, -0.312043, -0.312134, + -0.312225, -0.312316, -0.312407, -0.312498, -0.312589, -0.312680, -0.312771, -0.312862, + -0.312953, -0.313044, -0.313135, -0.313227, -0.313318, -0.313409, -0.313500, -0.313591, + -0.313682, -0.313773, -0.313864, -0.313955, -0.314046, -0.314137, -0.314228, -0.314319, + -0.314410, -0.314501, -0.314592, -0.314683, -0.314774, -0.314865, -0.314956, -0.315047, + -0.315138, -0.315229, -0.315320, -0.315411, -0.315502, -0.315593, -0.315684, -0.315775, + -0.315866, -0.315957, -0.316048, -0.316139, -0.316230, -0.316321, -0.316411, -0.316502, + -0.316593, -0.316684, -0.316775, -0.316866, -0.316957, -0.317048, -0.317139, -0.317230, + -0.317321, -0.317412, -0.317503, -0.317594, -0.317684, -0.317775, -0.317866, -0.317957, + -0.318048, -0.318139, -0.318230, -0.318321, -0.318412, -0.318503, -0.318593, -0.318684, + -0.318775, -0.318866, -0.318957, -0.319048, -0.319139, -0.319229, -0.319320, -0.319411, + -0.319502, -0.319593, -0.319684, -0.319775, -0.319865, -0.319956, -0.320047, -0.320138, + -0.320229, -0.320320, -0.320410, -0.320501, -0.320592, -0.320683, -0.320774, -0.320864, + -0.320955, -0.321046, -0.321137, -0.321228, -0.321318, -0.321409, -0.321500, -0.321591, + -0.321682, -0.321772, -0.321863, -0.321954, -0.322045, -0.322135, -0.322226, -0.322317, + -0.322408, -0.322498, -0.322589, -0.322680, -0.322771, -0.322861, -0.322952, -0.323043, + -0.323134, -0.323224, -0.323315, -0.323406, -0.323497, -0.323587, -0.323678, -0.323769, + -0.323859, -0.323950, -0.324041, -0.324131, -0.324222, -0.324313, -0.324404, -0.324494, + -0.324585, -0.324676, -0.324766, -0.324857, -0.324948, -0.325038, -0.325129, -0.325220, + -0.325310, -0.325401, -0.325492, -0.325582, -0.325673, -0.325764, -0.325854, -0.325945, + -0.326035, -0.326126, -0.326217, -0.326307, -0.326398, -0.326489, -0.326579, -0.326670, + -0.326760, -0.326851, -0.326942, -0.327032, -0.327123, -0.327213, -0.327304, -0.327395, + -0.327485, -0.327576, -0.327666, -0.327757, -0.327848, -0.327938, -0.328029, -0.328119, + -0.328210, -0.328300, -0.328391, -0.328482, -0.328572, -0.328663, -0.328753, -0.328844, + -0.328934, -0.329025, -0.329115, -0.329206, -0.329296, -0.329387, -0.329477, -0.329568, + -0.329658, -0.329749, -0.329839, -0.329930, -0.330020, -0.330111, -0.330202, -0.330292, + -0.330382, -0.330473, -0.330563, -0.330654, -0.330744, -0.330835, -0.330925, -0.331016, + -0.331106, -0.331197, -0.331287, -0.331378, -0.331468, -0.331559, -0.331649, -0.331739, + -0.331830, -0.331920, -0.332011, -0.332101, -0.332192, -0.332282, -0.332373, -0.332463, + -0.332553, -0.332644, -0.332734, -0.332825, -0.332915, -0.333005, -0.333096, -0.333186, + -0.333277, -0.333367, -0.333457, -0.333548, -0.333638, -0.333729, -0.333819, -0.333909, + -0.334000, -0.334090, -0.334180, -0.334271, -0.334361, -0.334451, -0.334542, -0.334632, + -0.334722, -0.334813, -0.334903, -0.334994, -0.335084, -0.335174, -0.335265, -0.335355, + -0.335445, -0.335535, -0.335626, -0.335716, -0.335806, -0.335897, -0.335987, -0.336077, + -0.336168, -0.336258, -0.336348, -0.336438, -0.336529, -0.336619, -0.336709, -0.336800, + -0.336890, -0.336980, -0.337070, -0.337161, -0.337251, -0.337341, -0.337431, -0.337522, + -0.337612, -0.337702, -0.337792, -0.337883, -0.337973, -0.338063, -0.338153, -0.338244, + -0.338334, -0.338424, -0.338514, -0.338604, -0.338695, -0.338785, -0.338875, -0.338965, + -0.339055, -0.339146, -0.339236, -0.339326, -0.339416, -0.339506, -0.339597, -0.339687, + -0.339777, -0.339867, -0.339957, -0.340047, -0.340138, -0.340228, -0.340318, -0.340408, + -0.340498, -0.340588, -0.340678, -0.340769, -0.340859, -0.340949, -0.341039, -0.341129, + -0.341219, -0.341309, -0.341399, -0.341490, -0.341580, -0.341670, -0.341760, -0.341850, + -0.341940, -0.342030, -0.342120, -0.342210, -0.342300, -0.342391, -0.342481, -0.342571, + -0.342661, -0.342751, -0.342841, -0.342931, -0.343021, -0.343111, -0.343201, -0.343291, + -0.343381, -0.343471, -0.343561, -0.343651, -0.343741, -0.343831, -0.343921, -0.344011, + -0.344101, -0.344191, -0.344281, -0.344371, -0.344461, -0.344551, -0.344641, -0.344731, + -0.344821, -0.344911, -0.345001, -0.345091, -0.345181, -0.345271, -0.345361, -0.345451, + -0.345541, -0.345631, -0.345721, -0.345811, -0.345901, -0.345991, -0.346081, -0.346171, + -0.346261, -0.346351, -0.346441, -0.346531, -0.346621, -0.346711, -0.346801, -0.346890, + -0.346980, -0.347070, -0.347160, -0.347250, -0.347340, -0.347430, -0.347520, -0.347610, + -0.347700, -0.347790, -0.347879, -0.347969, -0.348059, -0.348149, -0.348239, -0.348329, + -0.348419, -0.348509, -0.348598, -0.348688, -0.348778, -0.348868, -0.348958, -0.349048, + -0.349138, -0.349227, -0.349317, -0.349407, -0.349497, -0.349587, -0.349676, -0.349766, + -0.349856, -0.349946, -0.350036, -0.350126, -0.350215, -0.350305, -0.350395, -0.350485, + -0.350575, -0.350664, -0.350754, -0.350844, -0.350934, -0.351023, -0.351113, -0.351203, + -0.351293, -0.351383, -0.351472, -0.351562, -0.351652, -0.351742, -0.351831, -0.351921, + -0.352011, -0.352100, -0.352190, -0.352280, -0.352370, -0.352459, -0.352549, -0.352639, + -0.352729, -0.352818, -0.352908, -0.352998, -0.353087, -0.353177, -0.353267, -0.353356, + -0.353446, -0.353536, -0.353626, -0.353715, -0.353805, -0.353895, -0.353984, -0.354074, + -0.354164, -0.354253, -0.354343, -0.354432, -0.354522, -0.354612, -0.354701, -0.354791, + -0.354881, -0.354970, -0.355060, -0.355150, -0.355239, -0.355329, -0.355418, -0.355508, + -0.355598, -0.355687, -0.355777, -0.355866, -0.355956, -0.356046, -0.356135, -0.356225, + -0.356314, -0.356404, -0.356494, -0.356583, -0.356673, -0.356762, -0.356852, -0.356941, + -0.357031, -0.357121, -0.357210, -0.357300, -0.357389, -0.357479, -0.357568, -0.357658, + -0.357747, -0.357837, -0.357926, -0.358016, -0.358105, -0.358195, -0.358284, -0.358374, + -0.358463, -0.358553, -0.358642, -0.358732, -0.358821, -0.358911, -0.359000, -0.359090, + -0.359179, -0.359269, -0.359358, -0.359448, -0.359537, -0.359627, -0.359716, -0.359806, + -0.359895, -0.359984, -0.360074, -0.360163, -0.360253, -0.360342, -0.360432, -0.360521, + -0.360611, -0.360700, -0.360789, -0.360879, -0.360968, -0.361058, -0.361147, -0.361236, + -0.361326, -0.361415, -0.361505, -0.361594, -0.361683, -0.361773, -0.361862, -0.361952, + -0.362041, -0.362130, -0.362220, -0.362309, -0.362398, -0.362488, -0.362577, -0.362666, + -0.362756, -0.362845, -0.362934, -0.363024, -0.363113, -0.363202, -0.363292, -0.363381, + -0.363470, -0.363560, -0.363649, -0.363738, -0.363828, -0.363917, -0.364006, -0.364096, + -0.364185, -0.364274, -0.364363, -0.364453, -0.364542, -0.364631, -0.364720, -0.364810, + -0.364899, -0.364988, -0.365078, -0.365167, -0.365256, -0.365345, -0.365435, -0.365524, + -0.365613, -0.365702, -0.365791, -0.365881, -0.365970, -0.366059, -0.366148, -0.366238, + -0.366327, -0.366416, -0.366505, -0.366594, -0.366684, -0.366773, -0.366862, -0.366951, + -0.367040, -0.367130, -0.367219, -0.367308, -0.367397, -0.367486, -0.367575, -0.367665, + -0.367754, -0.367843, -0.367932, -0.368021, -0.368110, -0.368199, -0.368289, -0.368378, + -0.368467, -0.368556, -0.368645, -0.368734, -0.368823, -0.368912, -0.369002, -0.369091, + -0.369180, -0.369269, -0.369358, -0.369447, -0.369536, -0.369625, -0.369714, -0.369803, + -0.369892, -0.369982, -0.370071, -0.370160, -0.370249, -0.370338, -0.370427, -0.370516, + -0.370605, -0.370694, -0.370783, -0.370872, -0.370961, -0.371050, -0.371139, -0.371228, + -0.371317, -0.371406, -0.371495, -0.371584, -0.371673, -0.371762, -0.371851, -0.371940, + -0.372029, -0.372118, -0.372207, -0.372296, -0.372385, -0.372474, -0.372563, -0.372652, + -0.372741, -0.372830, -0.372919, -0.373008, -0.373097, -0.373186, -0.373275, -0.373364, + -0.373453, -0.373542, -0.373631, -0.373719, -0.373808, -0.373897, -0.373986, -0.374075, + -0.374164, -0.374253, -0.374342, -0.374431, -0.374520, -0.374609, -0.374697, -0.374786, + -0.374875, -0.374964, -0.375053, -0.375142, -0.375231, -0.375320, -0.375408, -0.375497, + -0.375586, -0.375675, -0.375764, -0.375853, -0.375942, -0.376030, -0.376119, -0.376208, + -0.376297, -0.376386, -0.376475, -0.376563, -0.376652, -0.376741, -0.376830, -0.376919, + -0.377007, -0.377096, -0.377185, -0.377274, -0.377363, -0.377451, -0.377540, -0.377629, + -0.377718, -0.377806, -0.377895, -0.377984, -0.378073, -0.378162, -0.378250, -0.378339, + -0.378428, -0.378516, -0.378605, -0.378694, -0.378783, -0.378871, -0.378960, -0.379049, + -0.379138, -0.379226, -0.379315, -0.379404, -0.379492, -0.379581, -0.379670, -0.379759, + -0.379847, -0.379936, -0.380025, -0.380113, -0.380202, -0.380291, -0.380379, -0.380468, + -0.380557, -0.380645, -0.380734, -0.380823, -0.380911, -0.381000, -0.381088, -0.381177, + -0.381266, -0.381354, -0.381443, -0.381532, -0.381620, -0.381709, -0.381797, -0.381886, + -0.381975, -0.382063, -0.382152, -0.382241, -0.382329, -0.382418, -0.382506, -0.382595, + -0.382683, -0.382772, -0.382861, -0.382949, -0.383038, -0.383126, -0.383215, -0.383303, + -0.383392, -0.383480, -0.383569, -0.383658, -0.383746, -0.383835, -0.383923, -0.384012, + -0.384100, -0.384189, -0.384277, -0.384366, -0.384454, -0.384543, -0.384631, -0.384720, + -0.384808, -0.384897, -0.384985, -0.385074, -0.385162, -0.385251, -0.385339, -0.385428, + -0.385516, -0.385605, -0.385693, -0.385781, -0.385870, -0.385958, -0.386047, -0.386135, + -0.386224, -0.386312, -0.386400, -0.386489, -0.386577, -0.386666, -0.386754, -0.386843, + -0.386931, -0.387019, -0.387108, -0.387196, -0.387285, -0.387373, -0.387461, -0.387550, + -0.387638, -0.387727, -0.387815, -0.387903, -0.387992, -0.388080, -0.388168, -0.388257, + -0.388345, -0.388433, -0.388522, -0.388610, -0.388698, -0.388787, -0.388875, -0.388963, + -0.389052, -0.389140, -0.389228, -0.389317, -0.389405, -0.389493, -0.389582, -0.389670, + -0.389758, -0.389846, -0.389935, -0.390023, -0.390111, -0.390200, -0.390288, -0.390376, + -0.390464, -0.390553, -0.390641, -0.390729, -0.390817, -0.390906, -0.390994, -0.391082, + -0.391170, -0.391259, -0.391347, -0.391435, -0.391523, -0.391612, -0.391700, -0.391788, + -0.391876, -0.391964, -0.392053, -0.392141, -0.392229, -0.392317, -0.392405, -0.392493, + -0.392582, -0.392670, -0.392758, -0.392846, -0.392934, -0.393023, -0.393111, -0.393199, + -0.393287, -0.393375, -0.393463, -0.393551, -0.393640, -0.393728, -0.393816, -0.393904, + -0.393992, -0.394080, -0.394168, -0.394256, -0.394344, -0.394433, -0.394521, -0.394609, + -0.394697, -0.394785, -0.394873, -0.394961, -0.395049, -0.395137, -0.395225, -0.395313, + -0.395401, -0.395490, -0.395578, -0.395666, -0.395754, -0.395842, -0.395930, -0.396018, + -0.396106, -0.396194, -0.396282, -0.396370, -0.396458, -0.396546, -0.396634, -0.396722, + -0.396810, -0.396898, -0.396986, -0.397074, -0.397162, -0.397250, -0.397338, -0.397426, + -0.397514, -0.397602, -0.397690, -0.397778, -0.397866, -0.397954, -0.398042, -0.398130, + -0.398218, -0.398306, -0.398393, -0.398481, -0.398569, -0.398657, -0.398745, -0.398833, + -0.398921, -0.399009, -0.399097, -0.399185, -0.399273, -0.399361, -0.399448, -0.399536, + -0.399624, -0.399712, -0.399800, -0.399888, -0.399976, -0.400064, -0.400151, -0.400239, + -0.400327, -0.400415, -0.400503, -0.400591, -0.400679, -0.400766, -0.400854, -0.400942, + -0.401030, -0.401118, -0.401206, -0.401293, -0.401381, -0.401469, -0.401557, -0.401645, + -0.401732, -0.401820, -0.401908, -0.401996, -0.402084, -0.402171, -0.402259, -0.402347, + -0.402435, -0.402522, -0.402610, -0.402698, -0.402786, -0.402873, -0.402961, -0.403049, + -0.403137, -0.403224, -0.403312, -0.403400, -0.403488, -0.403575, -0.403663, -0.403751, + -0.403838, -0.403926, -0.404014, -0.404102, -0.404189, -0.404277, -0.404365, -0.404452, + -0.404540, -0.404628, -0.404715, -0.404803, -0.404891, -0.404978, -0.405066, -0.405154, + -0.405241, -0.405329, -0.405417, -0.405504, -0.405592, -0.405680, -0.405767, -0.405855, + -0.405942, -0.406030, -0.406118, -0.406205, -0.406293, -0.406380, -0.406468, -0.406556, + -0.406643, -0.406731, -0.406818, -0.406906, -0.406994, -0.407081, -0.407169, -0.407256, + -0.407344, -0.407431, -0.407519, -0.407606, -0.407694, -0.407782, -0.407869, -0.407957, + -0.408044, -0.408132, -0.408219, -0.408307, -0.408394, -0.408482, -0.408569, -0.408657, + -0.408744, -0.408832, -0.408919, -0.409007, -0.409094, -0.409182, -0.409269, -0.409357, + -0.409444, -0.409532, -0.409619, -0.409707, -0.409794, -0.409881, -0.409969, -0.410056, + -0.410144, -0.410231, -0.410319, -0.410406, -0.410493, -0.410581, -0.410668, -0.410756, + -0.410843, -0.410931, -0.411018, -0.411105, -0.411193, -0.411280, -0.411368, -0.411455, + -0.411542, -0.411630, -0.411717, -0.411804, -0.411892, -0.411979, -0.412067, -0.412154, + -0.412241, -0.412329, -0.412416, -0.412503, -0.412591, -0.412678, -0.412765, -0.412853, + -0.412940, -0.413027, -0.413115, -0.413202, -0.413289, -0.413376, -0.413464, -0.413551, + -0.413638, -0.413726, -0.413813, -0.413900, -0.413987, -0.414075, -0.414162, -0.414249, + -0.414337, -0.414424, -0.414511, -0.414598, -0.414685, -0.414773, -0.414860, -0.414947, + -0.415034, -0.415122, -0.415209, -0.415296, -0.415383, -0.415471, -0.415558, -0.415645, + -0.415732, -0.415819, -0.415906, -0.415994, -0.416081, -0.416168, -0.416255, -0.416342, + -0.416430, -0.416517, -0.416604, -0.416691, -0.416778, -0.416865, -0.416952, -0.417040, + -0.417127, -0.417214, -0.417301, -0.417388, -0.417475, -0.417562, -0.417650, -0.417737, + -0.417824, -0.417911, -0.417998, -0.418085, -0.418172, -0.418259, -0.418346, -0.418433, + -0.418520, -0.418608, -0.418695, -0.418782, -0.418869, -0.418956, -0.419043, -0.419130, + -0.419217, -0.419304, -0.419391, -0.419478, -0.419565, -0.419652, -0.419739, -0.419826, + -0.419913, -0.420000, -0.420087, -0.420174, -0.420261, -0.420348, -0.420435, -0.420522, + -0.420609, -0.420696, -0.420783, -0.420870, -0.420957, -0.421044, -0.421131, -0.421218, + -0.421305, -0.421392, -0.421479, -0.421566, -0.421653, -0.421739, -0.421826, -0.421913, + -0.422000, -0.422087, -0.422174, -0.422261, -0.422348, -0.422435, -0.422522, -0.422609, + -0.422695, -0.422782, -0.422869, -0.422956, -0.423043, -0.423130, -0.423217, -0.423304, + -0.423390, -0.423477, -0.423564, -0.423651, -0.423738, -0.423825, -0.423912, -0.423998, + -0.424085, -0.424172, -0.424259, -0.424346, -0.424432, -0.424519, -0.424606, -0.424693, + -0.424780, -0.424866, -0.424953, -0.425040, -0.425127, -0.425214, -0.425300, -0.425387, + -0.425474, -0.425561, -0.425647, -0.425734, -0.425821, -0.425908, -0.425994, -0.426081, + -0.426168, -0.426255, -0.426341, -0.426428, -0.426515, -0.426601, -0.426688, -0.426775, + -0.426862, -0.426948, -0.427035, -0.427122, -0.427208, -0.427295, -0.427382, -0.427468, + -0.427555, -0.427642, -0.427728, -0.427815, -0.427902, -0.427988, -0.428075, -0.428162, + -0.428248, -0.428335, -0.428422, -0.428508, -0.428595, -0.428681, -0.428768, -0.428855, + -0.428941, -0.429028, -0.429114, -0.429201, -0.429288, -0.429374, -0.429461, -0.429547, + -0.429634, -0.429721, -0.429807, -0.429894, -0.429980, -0.430067, -0.430153, -0.430240, + -0.430326, -0.430413, -0.430500, -0.430586, -0.430673, -0.430759, -0.430846, -0.430932, + -0.431019, -0.431105, -0.431192, -0.431278, -0.431365, -0.431451, -0.431538, -0.431624, + -0.431711, -0.431797, -0.431884, -0.431970, -0.432057, -0.432143, -0.432229, -0.432316, + -0.432402, -0.432489, -0.432575, -0.432662, -0.432748, -0.432835, -0.432921, -0.433007, + -0.433094, -0.433180, -0.433267, -0.433353, -0.433439, -0.433526, -0.433612, -0.433699, + -0.433785, -0.433871, -0.433958, -0.434044, -0.434131, -0.434217, -0.434303, -0.434390, + -0.434476, -0.434562, -0.434649, -0.434735, -0.434821, -0.434908, -0.434994, -0.435080, + -0.435167, -0.435253, -0.435339, -0.435426, -0.435512, -0.435598, -0.435685, -0.435771, + -0.435857, -0.435943, -0.436030, -0.436116, -0.436202, -0.436288, -0.436375, -0.436461, + -0.436547, -0.436633, -0.436720, -0.436806, -0.436892, -0.436978, -0.437065, -0.437151, + -0.437237, -0.437323, -0.437410, -0.437496, -0.437582, -0.437668, -0.437754, -0.437841, + -0.437927, -0.438013, -0.438099, -0.438185, -0.438272, -0.438358, -0.438444, -0.438530, + -0.438616, -0.438702, -0.438789, -0.438875, -0.438961, -0.439047, -0.439133, -0.439219, + -0.439305, -0.439392, -0.439478, -0.439564, -0.439650, -0.439736, -0.439822, -0.439908, + -0.439994, -0.440080, -0.440166, -0.440253, -0.440339, -0.440425, -0.440511, -0.440597, + -0.440683, -0.440769, -0.440855, -0.440941, -0.441027, -0.441113, -0.441199, -0.441285, + -0.441371, -0.441457, -0.441543, -0.441629, -0.441715, -0.441801, -0.441887, -0.441973, + -0.442059, -0.442145, -0.442231, -0.442317, -0.442403, -0.442489, -0.442575, -0.442661, + -0.442747, -0.442833, -0.442919, -0.443005, -0.443091, -0.443177, -0.443263, -0.443349, + -0.443435, -0.443521, -0.443607, -0.443693, -0.443779, -0.443864, -0.443950, -0.444036, + -0.444122, -0.444208, -0.444294, -0.444380, -0.444466, -0.444552, -0.444637, -0.444723, + -0.444809, -0.444895, -0.444981, -0.445067, -0.445153, -0.445239, -0.445324, -0.445410, + -0.445496, -0.445582, -0.445668, -0.445754, -0.445839, -0.445925, -0.446011, -0.446097, + -0.446183, -0.446268, -0.446354, -0.446440, -0.446526, -0.446612, -0.446697, -0.446783, + -0.446869, -0.446955, -0.447040, -0.447126, -0.447212, -0.447298, -0.447383, -0.447469, + -0.447555, -0.447641, -0.447726, -0.447812, -0.447898, -0.447983, -0.448069, -0.448155, + -0.448241, -0.448326, -0.448412, -0.448498, -0.448583, -0.448669, -0.448755, -0.448840, + -0.448926, -0.449012, -0.449097, -0.449183, -0.449269, -0.449354, -0.449440, -0.449526, + -0.449611, -0.449697, -0.449783, -0.449868, -0.449954, -0.450039, -0.450125, -0.450211, + -0.450296, -0.450382, -0.450467, -0.450553, -0.450639, -0.450724, -0.450810, -0.450895, + -0.450981, -0.451067, -0.451152, -0.451238, -0.451323, -0.451409, -0.451494, -0.451580, + -0.451665, -0.451751, -0.451836, -0.451922, -0.452008, -0.452093, -0.452179, -0.452264, + -0.452350, -0.452435, -0.452521, -0.452606, -0.452692, -0.452777, -0.452863, -0.452948, + -0.453033, -0.453119, -0.453204, -0.453290, -0.453375, -0.453461, -0.453546, -0.453632, + -0.453717, -0.453803, -0.453888, -0.453973, -0.454059, -0.454144, -0.454230, -0.454315, + -0.454400, -0.454486, -0.454571, -0.454657, -0.454742, -0.454827, -0.454913, -0.454998, + -0.455084, -0.455169, -0.455254, -0.455340, -0.455425, -0.455510, -0.455596, -0.455681, + -0.455766, -0.455852, -0.455937, -0.456022, -0.456108, -0.456193, -0.456278, -0.456364, + -0.456449, -0.456534, -0.456620, -0.456705, -0.456790, -0.456875, -0.456961, -0.457046, + -0.457131, -0.457217, -0.457302, -0.457387, -0.457472, -0.457558, -0.457643, -0.457728, + -0.457813, -0.457899, -0.457984, -0.458069, -0.458154, -0.458239, -0.458325, -0.458410, + -0.458495, -0.458580, -0.458665, -0.458751, -0.458836, -0.458921, -0.459006, -0.459091, + -0.459177, -0.459262, -0.459347, -0.459432, -0.459517, -0.459602, -0.459687, -0.459773, + -0.459858, -0.459943, -0.460028, -0.460113, -0.460198, -0.460283, -0.460369, -0.460454, + -0.460539, -0.460624, -0.460709, -0.460794, -0.460879, -0.460964, -0.461049, -0.461134, + -0.461219, -0.461304, -0.461390, -0.461475, -0.461560, -0.461645, -0.461730, -0.461815, + -0.461900, -0.461985, -0.462070, -0.462155, -0.462240, -0.462325, -0.462410, -0.462495, + -0.462580, -0.462665, -0.462750, -0.462835, -0.462920, -0.463005, -0.463090, -0.463175, + -0.463260, -0.463345, -0.463430, -0.463515, -0.463600, -0.463685, -0.463769, -0.463854, + -0.463939, -0.464024, -0.464109, -0.464194, -0.464279, -0.464364, -0.464449, -0.464534, + -0.464619, -0.464704, -0.464788, -0.464873, -0.464958, -0.465043, -0.465128, -0.465213, + -0.465298, -0.465383, -0.465467, -0.465552, -0.465637, -0.465722, -0.465807, -0.465892, + -0.465977, -0.466061, -0.466146, -0.466231, -0.466316, -0.466401, -0.466485, -0.466570, + -0.466655, -0.466740, -0.466825, -0.466909, -0.466994, -0.467079, -0.467164, -0.467248, + -0.467333, -0.467418, -0.467503, -0.467587, -0.467672, -0.467757, -0.467842, -0.467926, + -0.468011, -0.468096, -0.468181, -0.468265, -0.468350, -0.468435, -0.468519, -0.468604, + -0.468689, -0.468774, -0.468858, -0.468943, -0.469028, -0.469112, -0.469197, -0.469282, + -0.469366, -0.469451, -0.469536, -0.469620, -0.469705, -0.469789, -0.469874, -0.469959, + -0.470043, -0.470128, -0.470213, -0.470297, -0.470382, -0.470466, -0.470551, -0.470636, + -0.470720, -0.470805, -0.470889, -0.470974, -0.471058, -0.471143, -0.471228, -0.471312, + -0.471397, -0.471481, -0.471566, -0.471650, -0.471735, -0.471819, -0.471904, -0.471988, + -0.472073, -0.472158, -0.472242, -0.472327, -0.472411, -0.472496, -0.472580, -0.472665, + -0.472749, -0.472834, -0.472918, -0.473002, -0.473087, -0.473171, -0.473256, -0.473340, + -0.473425, -0.473509, -0.473594, -0.473678, -0.473763, -0.473847, -0.473931, -0.474016, + -0.474100, -0.474185, -0.474269, -0.474353, -0.474438, -0.474522, -0.474607, -0.474691, + -0.474775, -0.474860, -0.474944, -0.475029, -0.475113, -0.475197, -0.475282, -0.475366, + -0.475450, -0.475535, -0.475619, -0.475703, -0.475788, -0.475872, -0.475956, -0.476041, + -0.476125, -0.476209, -0.476294, -0.476378, -0.476462, -0.476546, -0.476631, -0.476715, + -0.476799, -0.476884, -0.476968, -0.477052, -0.477136, -0.477221, -0.477305, -0.477389, + -0.477473, -0.477558, -0.477642, -0.477726, -0.477810, -0.477894, -0.477979, -0.478063, + -0.478147, -0.478231, -0.478315, -0.478400, -0.478484, -0.478568, -0.478652, -0.478736, + -0.478821, -0.478905, -0.478989, -0.479073, -0.479157, -0.479241, -0.479325, -0.479410, + -0.479494, -0.479578, -0.479662, -0.479746, -0.479830, -0.479914, -0.479998, -0.480083, + -0.480167, -0.480251, -0.480335, -0.480419, -0.480503, -0.480587, -0.480671, -0.480755, + -0.480839, -0.480923, -0.481007, -0.481091, -0.481176, -0.481260, -0.481344, -0.481428, + -0.481512, -0.481596, -0.481680, -0.481764, -0.481848, -0.481932, -0.482016, -0.482100, + -0.482184, -0.482268, -0.482352, -0.482436, -0.482520, -0.482604, -0.482688, -0.482772, + -0.482856, -0.482940, -0.483023, -0.483107, -0.483191, -0.483275, -0.483359, -0.483443, + -0.483527, -0.483611, -0.483695, -0.483779, -0.483863, -0.483947, -0.484031, -0.484114, + -0.484198, -0.484282, -0.484366, -0.484450, -0.484534, -0.484618, -0.484702, -0.484785, + -0.484869, -0.484953, -0.485037, -0.485121, -0.485205, -0.485288, -0.485372, -0.485456, + -0.485540, -0.485624, -0.485708, -0.485791, -0.485875, -0.485959, -0.486043, -0.486126, + -0.486210, -0.486294, -0.486378, -0.486462, -0.486545, -0.486629, -0.486713, -0.486797, + -0.486880, -0.486964, -0.487048, -0.487132, -0.487215, -0.487299, -0.487383, -0.487466, + -0.487550, -0.487634, -0.487718, -0.487801, -0.487885, -0.487969, -0.488052, -0.488136, + -0.488220, -0.488303, -0.488387, -0.488471, -0.488554, -0.488638, -0.488722, -0.488805, + -0.488889, -0.488973, -0.489056, -0.489140, -0.489223, -0.489307, -0.489391, -0.489474, + -0.489558, -0.489641, -0.489725, -0.489809, -0.489892, -0.489976, -0.490059, -0.490143, + -0.490226, -0.490310, -0.490394, -0.490477, -0.490561, -0.490644, -0.490728, -0.490811, + -0.490895, -0.490978, -0.491062, -0.491145, -0.491229, -0.491312, -0.491396, -0.491479, + -0.491563, -0.491646, -0.491730, -0.491813, -0.491897, -0.491980, -0.492064, -0.492147, + -0.492231, -0.492314, -0.492398, -0.492481, -0.492564, -0.492648, -0.492731, -0.492815, + -0.492898, -0.492982, -0.493065, -0.493148, -0.493232, -0.493315, -0.493399, -0.493482, + -0.493565, -0.493649, -0.493732, -0.493816, -0.493899, -0.493982, -0.494066, -0.494149, + -0.494232, -0.494316, -0.494399, -0.494482, -0.494566, -0.494649, -0.494732, -0.494816, + -0.494899, -0.494982, -0.495066, -0.495149, -0.495232, -0.495315, -0.495399, -0.495482, + -0.495565, -0.495649, -0.495732, -0.495815, -0.495898, -0.495982, -0.496065, -0.496148, + -0.496231, -0.496315, -0.496398, -0.496481, -0.496564, -0.496647, -0.496731, -0.496814, + -0.496897, -0.496980, -0.497063, -0.497147, -0.497230, -0.497313, -0.497396, -0.497479, + -0.497562, -0.497646, -0.497729, -0.497812, -0.497895, -0.497978, -0.498061, -0.498145, + -0.498228, -0.498311, -0.498394, -0.498477, -0.498560, -0.498643, -0.498726, -0.498809, + -0.498893, -0.498976, -0.499059, -0.499142, -0.499225, -0.499308, -0.499391, -0.499474, + -0.499557, -0.499640, -0.499723, -0.499806, -0.499889, -0.499972, -0.500055, -0.500138, + -0.500221, -0.500304, -0.500387, -0.500470, -0.500553, -0.500636, -0.500719, -0.500802, + -0.500885, -0.500968, -0.501051, -0.501134, -0.501217, -0.501300, -0.501383, -0.501466, + -0.501549, -0.501632, -0.501715, -0.501798, -0.501881, -0.501964, -0.502047, -0.502130, + -0.502212, -0.502295, -0.502378, -0.502461, -0.502544, -0.502627, -0.502710, -0.502793, + -0.502876, -0.502958, -0.503041, -0.503124, -0.503207, -0.503290, -0.503373, -0.503456, + -0.503538, -0.503621, -0.503704, -0.503787, -0.503870, -0.503953, -0.504035, -0.504118, + -0.504201, -0.504284, -0.504366, -0.504449, -0.504532, -0.504615, -0.504698, -0.504780, + -0.504863, -0.504946, -0.505029, -0.505111, -0.505194, -0.505277, -0.505360, -0.505442, + -0.505525, -0.505608, -0.505690, -0.505773, -0.505856, -0.505939, -0.506021, -0.506104, + -0.506187, -0.506269, -0.506352, -0.506435, -0.506517, -0.506600, -0.506683, -0.506765, + -0.506848, -0.506931, -0.507013, -0.507096, -0.507179, -0.507261, -0.507344, -0.507426, + -0.507509, -0.507592, -0.507674, -0.507757, -0.507839, -0.507922, -0.508005, -0.508087, + -0.508170, -0.508252, -0.508335, -0.508417, -0.508500, -0.508583, -0.508665, -0.508748, + -0.508830, -0.508913, -0.508995, -0.509078, -0.509160, -0.509243, -0.509325, -0.509408, + -0.509490, -0.509573, -0.509655, -0.509738, -0.509820, -0.509903, -0.509985, -0.510068, + -0.510150, -0.510233, -0.510315, -0.510397, -0.510480, -0.510562, -0.510645, -0.510727, + -0.510810, -0.510892, -0.510974, -0.511057, -0.511139, -0.511222, -0.511304, -0.511386, + -0.511469, -0.511551, -0.511634, -0.511716, -0.511798, -0.511881, -0.511963, -0.512045, + -0.512128, -0.512210, -0.512292, -0.512375, -0.512457, -0.512539, -0.512622, -0.512704, + -0.512786, -0.512869, -0.512951, -0.513033, -0.513116, -0.513198, -0.513280, -0.513362, + -0.513445, -0.513527, -0.513609, -0.513692, -0.513774, -0.513856, -0.513938, -0.514021, + -0.514103, -0.514185, -0.514267, -0.514349, -0.514432, -0.514514, -0.514596, -0.514678, + -0.514760, -0.514843, -0.514925, -0.515007, -0.515089, -0.515171, -0.515254, -0.515336, + -0.515418, -0.515500, -0.515582, -0.515664, -0.515746, -0.515829, -0.515911, -0.515993, + -0.516075, -0.516157, -0.516239, -0.516321, -0.516403, -0.516486, -0.516568, -0.516650, + -0.516732, -0.516814, -0.516896, -0.516978, -0.517060, -0.517142, -0.517224, -0.517306, + -0.517388, -0.517470, -0.517552, -0.517634, -0.517716, -0.517798, -0.517880, -0.517963, + -0.518045, -0.518126, -0.518209, -0.518291, -0.518372, -0.518454, -0.518536, -0.518618, + -0.518700, -0.518782, -0.518864, -0.518946, -0.519028, -0.519110, -0.519192, -0.519274, + -0.519356, -0.519438, -0.519520, -0.519602, -0.519684, -0.519766, -0.519848, -0.519929, + -0.520011, -0.520093, -0.520175, -0.520257, -0.520339, -0.520421, -0.520503, -0.520584, + -0.520666, -0.520748, -0.520830, -0.520912, -0.520994, -0.521075, -0.521157, -0.521239, + -0.521321, -0.521403, -0.521485, -0.521566, -0.521648, -0.521730, -0.521812, -0.521894, + -0.521975, -0.522057, -0.522139, -0.522221, -0.522302, -0.522384, -0.522466, -0.522548, + -0.522629, -0.522711, -0.522793, -0.522875, -0.522956, -0.523038, -0.523120, -0.523201, + -0.523283, -0.523365, -0.523447, -0.523528, -0.523610, -0.523692, -0.523773, -0.523855, + -0.523937, -0.524018, -0.524100, -0.524181, -0.524263, -0.524345, -0.524426, -0.524508, + -0.524590, -0.524671, -0.524753, -0.524835, -0.524916, -0.524998, -0.525079, -0.525161, + -0.525243, -0.525324, -0.525406, -0.525487, -0.525569, -0.525650, -0.525732, -0.525813, + -0.525895, -0.525977, -0.526058, -0.526140, -0.526221, -0.526303, -0.526384, -0.526466, + -0.526547, -0.526629, -0.526710, -0.526792, -0.526873, -0.526955, -0.527036, -0.527118, + -0.527199, -0.527281, -0.527362, -0.527444, -0.527525, -0.527606, -0.527688, -0.527769, + -0.527851, -0.527932, -0.528014, -0.528095, -0.528176, -0.528258, -0.528339, -0.528421, + -0.528502, -0.528583, -0.528665, -0.528746, -0.528828, -0.528909, -0.528990, -0.529072, + -0.529153, -0.529234, -0.529316, -0.529397, -0.529478, -0.529560, -0.529641, -0.529722, + -0.529804, -0.529885, -0.529966, -0.530048, -0.530129, -0.530210, -0.530291, -0.530373, + -0.530454, -0.530535, -0.530617, -0.530698, -0.530779, -0.530860, -0.530942, -0.531023, + -0.531104, -0.531185, -0.531266, -0.531348, -0.531429, -0.531510, -0.531591, -0.531673, + -0.531754, -0.531835, -0.531916, -0.531997, -0.532078, -0.532160, -0.532241, -0.532322, + -0.532403, -0.532484, -0.532565, -0.532647, -0.532728, -0.532809, -0.532890, -0.532971, + -0.533052, -0.533133, -0.533214, -0.533296, -0.533377, -0.533458, -0.533539, -0.533620, + -0.533701, -0.533782, -0.533863, -0.533944, -0.534025, -0.534106, -0.534187, -0.534268, + -0.534349, -0.534431, -0.534512, -0.534593, -0.534674, -0.534755, -0.534836, -0.534917, + -0.534998, -0.535079, -0.535160, -0.535241, -0.535322, -0.535403, -0.535484, -0.535564, + -0.535645, -0.535726, -0.535807, -0.535888, -0.535969, -0.536050, -0.536131, -0.536212, + -0.536293, -0.536374, -0.536455, -0.536536, -0.536617, -0.536698, -0.536778, -0.536859, + -0.536940, -0.537021, -0.537102, -0.537183, -0.537264, -0.537345, -0.537425, -0.537506, + -0.537587, -0.537668, -0.537749, -0.537830, -0.537910, -0.537991, -0.538072, -0.538153, + -0.538234, -0.538314, -0.538395, -0.538476, -0.538557, -0.538638, -0.538718, -0.538799, + -0.538880, -0.538961, -0.539041, -0.539122, -0.539203, -0.539284, -0.539364, -0.539445, + -0.539526, -0.539607, -0.539687, -0.539768, -0.539849, -0.539929, -0.540010, -0.540091, + -0.540171, -0.540252, -0.540333, -0.540413, -0.540494, -0.540575, -0.540655, -0.540736, + -0.540817, -0.540897, -0.540978, -0.541059, -0.541139, -0.541220, -0.541301, -0.541381, + -0.541462, -0.541542, -0.541623, -0.541704, -0.541784, -0.541865, -0.541945, -0.542026, + -0.542106, -0.542187, -0.542268, -0.542348, -0.542429, -0.542509, -0.542590, -0.542670, + -0.542751, -0.542831, -0.542912, -0.542992, -0.543073, -0.543153, -0.543234, -0.543314, + -0.543395, -0.543475, -0.543556, -0.543636, -0.543717, -0.543797, -0.543878, -0.543958, + -0.544039, -0.544119, -0.544199, -0.544280, -0.544360, -0.544441, -0.544521, -0.544602, + -0.544682, -0.544762, -0.544843, -0.544923, -0.545003, -0.545084, -0.545164, -0.545245, + -0.545325, -0.545405, -0.545486, -0.545566, -0.545646, -0.545727, -0.545807, -0.545887, + -0.545968, -0.546048, -0.546128, -0.546209, -0.546289, -0.546369, -0.546450, -0.546530, + -0.546610, -0.546690, -0.546771, -0.546851, -0.546931, -0.547011, -0.547092, -0.547172, + -0.547252, -0.547333, -0.547413, -0.547493, -0.547573, -0.547653, -0.547734, -0.547814, + -0.547894, -0.547974, -0.548054, -0.548135, -0.548215, -0.548295, -0.548375, -0.548455, + -0.548536, -0.548616, -0.548696, -0.548776, -0.548856, -0.548936, -0.549016, -0.549097, + -0.549177, -0.549257, -0.549337, -0.549417, -0.549497, -0.549577, -0.549657, -0.549737, + -0.549818, -0.549898, -0.549978, -0.550058, -0.550138, -0.550218, -0.550298, -0.550378, + -0.550458, -0.550538, -0.550618, -0.550698, -0.550778, -0.550858, -0.550938, -0.551018, + -0.551098, -0.551178, -0.551258, -0.551338, -0.551418, -0.551498, -0.551578, -0.551658, + -0.551738, -0.551818, -0.551898, -0.551978, -0.552058, -0.552138, -0.552218, -0.552298, + -0.552378, -0.552457, -0.552537, -0.552617, -0.552697, -0.552777, -0.552857, -0.552937, + -0.553017, -0.553097, -0.553176, -0.553256, -0.553336, -0.553416, -0.553496, -0.553576, + -0.553656, -0.553735, -0.553815, -0.553895, -0.553975, -0.554055, -0.554134, -0.554214, + -0.554294, -0.554374, -0.554454, -0.554533, -0.554613, -0.554693, -0.554773, -0.554853, + -0.554932, -0.555012, -0.555092, -0.555172, -0.555251, -0.555331, -0.555411, -0.555490, + -0.555570, -0.555650, -0.555730, -0.555809, -0.555889, -0.555969, -0.556048, -0.556128, + -0.556208, -0.556287, -0.556367, -0.556447, -0.556526, -0.556606, -0.556686, -0.556765, + -0.556845, -0.556925, -0.557004, -0.557084, -0.557164, -0.557243, -0.557323, -0.557402, + -0.557482, -0.557562, -0.557641, -0.557721, -0.557800, -0.557880, -0.557959, -0.558039, + -0.558119, -0.558198, -0.558278, -0.558357, -0.558437, -0.558516, -0.558596, -0.558675, + -0.558755, -0.558834, -0.558914, -0.558993, -0.559073, -0.559152, -0.559232, -0.559311, + -0.559391, -0.559470, -0.559550, -0.559629, -0.559709, -0.559788, -0.559867, -0.559947, + -0.560026, -0.560106, -0.560185, -0.560265, -0.560344, -0.560423, -0.560503, -0.560582, + -0.560662, -0.560741, -0.560820, -0.560900, -0.560979, -0.561058, -0.561138, -0.561217, + -0.561297, -0.561376, -0.561455, -0.561535, -0.561614, -0.561693, -0.561773, -0.561852, + -0.561931, -0.562010, -0.562090, -0.562169, -0.562248, -0.562328, -0.562407, -0.562486, + -0.562565, -0.562645, -0.562724, -0.562803, -0.562882, -0.562962, -0.563041, -0.563120, + -0.563199, -0.563279, -0.563358, -0.563437, -0.563516, -0.563595, -0.563675, -0.563754, + -0.563833, -0.563912, -0.563991, -0.564070, -0.564150, -0.564229, -0.564308, -0.564387, + -0.564466, -0.564545, -0.564624, -0.564704, -0.564783, -0.564862, -0.564941, -0.565020, + -0.565099, -0.565178, -0.565257, -0.565336, -0.565416, -0.565495, -0.565574, -0.565653, + -0.565732, -0.565811, -0.565890, -0.565969, -0.566048, -0.566127, -0.566206, -0.566285, + -0.566364, -0.566443, -0.566522, -0.566601, -0.566680, -0.566759, -0.566838, -0.566917, + -0.566996, -0.567075, -0.567154, -0.567233, -0.567312, -0.567391, -0.567470, -0.567549, + -0.567628, -0.567707, -0.567786, -0.567864, -0.567943, -0.568022, -0.568101, -0.568180, + -0.568259, -0.568338, -0.568417, -0.568496, -0.568574, -0.568653, -0.568732, -0.568811, + -0.568890, -0.568969, -0.569048, -0.569126, -0.569205, -0.569284, -0.569363, -0.569442, + -0.569521, -0.569599, -0.569678, -0.569757, -0.569836, -0.569914, -0.569993, -0.570072, + -0.570151, -0.570230, -0.570308, -0.570387, -0.570466, -0.570545, -0.570623, -0.570702, + -0.570781, -0.570859, -0.570938, -0.571017, -0.571096, -0.571174, -0.571253, -0.571332, + -0.571410, -0.571489, -0.571568, -0.571646, -0.571725, -0.571804, -0.571882, -0.571961, + -0.572040, -0.572118, -0.572197, -0.572276, -0.572354, -0.572433, -0.572511, -0.572590, + -0.572669, -0.572747, -0.572826, -0.572904, -0.572983, -0.573061, -0.573140, -0.573219, + -0.573297, -0.573376, -0.573454, -0.573533, -0.573611, -0.573690, -0.573768, -0.573847, + -0.573925, -0.574004, -0.574082, -0.574161, -0.574239, -0.574318, -0.574396, -0.574475, + -0.574553, -0.574632, -0.574710, -0.574789, -0.574867, -0.574946, -0.575024, -0.575103, + -0.575181, -0.575259, -0.575338, -0.575416, -0.575495, -0.575573, -0.575651, -0.575730, + -0.575808, -0.575887, -0.575965, -0.576043, -0.576122, -0.576200, -0.576278, -0.576357, + -0.576435, -0.576513, -0.576592, -0.576670, -0.576748, -0.576827, -0.576905, -0.576983, + -0.577062, -0.577140, -0.577218, -0.577297, -0.577375, -0.577453, -0.577531, -0.577610, + -0.577688, -0.577766, -0.577844, -0.577923, -0.578001, -0.578079, -0.578157, -0.578236, + -0.578314, -0.578392, -0.578470, -0.578548, -0.578627, -0.578705, -0.578783, -0.578861, + -0.578939, -0.579018, -0.579096, -0.579174, -0.579252, -0.579330, -0.579408, -0.579486, + -0.579565, -0.579643, -0.579721, -0.579799, -0.579877, -0.579955, -0.580033, -0.580111, + -0.580189, -0.580267, -0.580346, -0.580424, -0.580502, -0.580580, -0.580658, -0.580736, + -0.580814, -0.580892, -0.580970, -0.581048, -0.581126, -0.581204, -0.581282, -0.581360, + -0.581438, -0.581516, -0.581594, -0.581672, -0.581750, -0.581828, -0.581906, -0.581984, + -0.582062, -0.582140, -0.582218, -0.582296, -0.582374, -0.582452, -0.582530, -0.582608, + -0.582685, -0.582763, -0.582841, -0.582919, -0.582997, -0.583075, -0.583153, -0.583231, + -0.583309, -0.583387, -0.583464, -0.583542, -0.583620, -0.583698, -0.583776, -0.583854, + -0.583931, -0.584009, -0.584087, -0.584165, -0.584243, -0.584321, -0.584398, -0.584476, + -0.584554, -0.584632, -0.584710, -0.584787, -0.584865, -0.584943, -0.585021, -0.585098, + -0.585176, -0.585254, -0.585332, -0.585409, -0.585487, -0.585565, -0.585642, -0.585720, + -0.585798, -0.585876, -0.585953, -0.586031, -0.586109, -0.586186, -0.586264, -0.586342, + -0.586419, -0.586497, -0.586575, -0.586652, -0.586730, -0.586808, -0.586885, -0.586963, + -0.587040, -0.587118, -0.587196, -0.587273, -0.587351, -0.587428, -0.587506, -0.587584, + -0.587661, -0.587739, -0.587816, -0.587894, -0.587971, -0.588049, -0.588126, -0.588204, + -0.588282, -0.588359, -0.588437, -0.588514, -0.588592, -0.588669, -0.588747, -0.588824, + -0.588902, -0.588979, -0.589057, -0.589134, -0.589212, -0.589289, -0.589366, -0.589444, + -0.589521, -0.589599, -0.589676, -0.589754, -0.589831, -0.589908, -0.589986, -0.590063, + -0.590141, -0.590218, -0.590295, -0.590373, -0.590450, -0.590528, -0.590605, -0.590682, + -0.590760, -0.590837, -0.590914, -0.590992, -0.591069, -0.591146, -0.591224, -0.591301, + -0.591378, -0.591456, -0.591533, -0.591610, -0.591688, -0.591765, -0.591842, -0.591919, + -0.591997, -0.592074, -0.592151, -0.592228, -0.592306, -0.592383, -0.592460, -0.592537, + -0.592615, -0.592692, -0.592769, -0.592846, -0.592924, -0.593001, -0.593078, -0.593155, + -0.593232, -0.593309, -0.593387, -0.593464, -0.593541, -0.593618, -0.593695, -0.593772, + -0.593850, -0.593927, -0.594004, -0.594081, -0.594158, -0.594235, -0.594312, -0.594389, + -0.594467, -0.594544, -0.594621, -0.594698, -0.594775, -0.594852, -0.594929, -0.595006, + -0.595083, -0.595160, -0.595237, -0.595314, -0.595391, -0.595468, -0.595545, -0.595622, + -0.595699, -0.595776, -0.595853, -0.595930, -0.596007, -0.596084, -0.596161, -0.596238, + -0.596315, -0.596392, -0.596469, -0.596546, -0.596623, -0.596700, -0.596777, -0.596854, + -0.596931, -0.597008, -0.597085, -0.597161, -0.597238, -0.597315, -0.597392, -0.597469, + -0.597546, -0.597623, -0.597700, -0.597776, -0.597853, -0.597930, -0.598007, -0.598084, + -0.598161, -0.598238, -0.598314, -0.598391, -0.598468, -0.598545, -0.598622, -0.598698, + -0.598775, -0.598852, -0.598929, -0.599006, -0.599082, -0.599159, -0.599236, -0.599313, + -0.599389, -0.599466, -0.599543, -0.599620, -0.599696, -0.599773, -0.599850, -0.599926, + -0.600003, -0.600080, -0.600156, -0.600233, -0.600310, -0.600387, -0.600463, -0.600540, + -0.600616, -0.600693, -0.600770, -0.600846, -0.600923, -0.601000, -0.601076, -0.601153, + -0.601230, -0.601306, -0.601383, -0.601459, -0.601536, -0.601613, -0.601689, -0.601766, + -0.601842, -0.601919, -0.601995, -0.602072, -0.602148, -0.602225, -0.602302, -0.602378, + -0.602455, -0.602531, -0.602608, -0.602684, -0.602761, -0.602837, -0.602914, -0.602990, + -0.603067, -0.603143, -0.603220, -0.603296, -0.603372, -0.603449, -0.603525, -0.603602, + -0.603678, -0.603755, -0.603831, -0.603908, -0.603984, -0.604060, -0.604137, -0.604213, + -0.604290, -0.604366, -0.604442, -0.604519, -0.604595, -0.604671, -0.604748, -0.604824, + -0.604900, -0.604977, -0.605053, -0.605129, -0.605206, -0.605282, -0.605358, -0.605435, + -0.605511, -0.605587, -0.605664, -0.605740, -0.605816, -0.605892, -0.605969, -0.606045, + -0.606121, -0.606198, -0.606274, -0.606350, -0.606426, -0.606502, -0.606579, -0.606655, + -0.606731, -0.606807, -0.606884, -0.606960, -0.607036, -0.607112, -0.607188, -0.607264, + -0.607341, -0.607417, -0.607493, -0.607569, -0.607645, -0.607721, -0.607798, -0.607874, + -0.607950, -0.608026, -0.608102, -0.608178, -0.608254, -0.608330, -0.608406, -0.608482, + -0.608559, -0.608635, -0.608711, -0.608787, -0.608863, -0.608939, -0.609015, -0.609091, + -0.609167, -0.609243, -0.609319, -0.609395, -0.609471, -0.609547, -0.609623, -0.609699, + -0.609775, -0.609851, -0.609927, -0.610003, -0.610079, -0.610155, -0.610231, -0.610307, + -0.610383, -0.610459, -0.610535, -0.610611, -0.610687, -0.610762, -0.610838, -0.610914, + -0.610990, -0.611066, -0.611142, -0.611218, -0.611294, -0.611370, -0.611445, -0.611521, + -0.611597, -0.611673, -0.611749, -0.611825, -0.611901, -0.611976, -0.612052, -0.612128, + -0.612204, -0.612280, -0.612355, -0.612431, -0.612507, -0.612583, -0.612659, -0.612734, + -0.612810, -0.612886, -0.612962, -0.613037, -0.613113, -0.613189, -0.613265, -0.613340, + -0.613416, -0.613492, -0.613567, -0.613643, -0.613719, -0.613795, -0.613870, -0.613946, + -0.614022, -0.614097, -0.614173, -0.614249, -0.614324, -0.614400, -0.614475, -0.614551, + -0.614627, -0.614702, -0.614778, -0.614854, -0.614929, -0.615005, -0.615080, -0.615156, + -0.615232, -0.615307, -0.615383, -0.615458, -0.615534, -0.615609, -0.615685, -0.615761, + -0.615836, -0.615912, -0.615987, -0.616063, -0.616138, -0.616214, -0.616289, -0.616365, + -0.616440, -0.616516, -0.616591, -0.616667, -0.616742, -0.616818, -0.616893, -0.616968, + -0.617044, -0.617119, -0.617195, -0.617270, -0.617346, -0.617421, -0.617496, -0.617572, + -0.617647, -0.617723, -0.617798, -0.617873, -0.617949, -0.618024, -0.618100, -0.618175, + -0.618250, -0.618326, -0.618401, -0.618476, -0.618552, -0.618627, -0.618702, -0.618778, + -0.618853, -0.618928, -0.619004, -0.619079, -0.619154, -0.619229, -0.619305, -0.619380, + -0.619455, -0.619531, -0.619606, -0.619681, -0.619756, -0.619832, -0.619907, -0.619982, + -0.620057, -0.620132, -0.620208, -0.620283, -0.620358, -0.620433, -0.620508, -0.620584, + -0.620659, -0.620734, -0.620809, -0.620884, -0.620959, -0.621035, -0.621110, -0.621185, + -0.621260, -0.621335, -0.621410, -0.621485, -0.621560, -0.621636, -0.621711, -0.621786, + -0.621861, -0.621936, -0.622011, -0.622086, -0.622161, -0.622236, -0.622311, -0.622386, + -0.622461, -0.622536, -0.622611, -0.622686, -0.622761, -0.622836, -0.622911, -0.622986, + -0.623061, -0.623136, -0.623211, -0.623286, -0.623361, -0.623436, -0.623511, -0.623586, + -0.623661, -0.623736, -0.623811, -0.623886, -0.623961, -0.624036, -0.624111, -0.624186, + -0.624260, -0.624335, -0.624410, -0.624485, -0.624560, -0.624635, -0.624710, -0.624785, + -0.624860, -0.624934, -0.625009, -0.625084, -0.625159, -0.625234, -0.625309, -0.625383, + -0.625458, -0.625533, -0.625608, -0.625683, -0.625757, -0.625832, -0.625907, -0.625982, + -0.626056, -0.626131, -0.626206, -0.626281, -0.626355, -0.626430, -0.626505, -0.626580, + -0.626654, -0.626729, -0.626804, -0.626878, -0.626953, -0.627028, -0.627102, -0.627177, + -0.627252, -0.627326, -0.627401, -0.627476, -0.627550, -0.627625, -0.627700, -0.627774, + -0.627849, -0.627924, -0.627998, -0.628073, -0.628147, -0.628222, -0.628297, -0.628371, + -0.628446, -0.628520, -0.628595, -0.628669, -0.628744, -0.628819, -0.628893, -0.628968, + -0.629042, -0.629117, -0.629191, -0.629266, -0.629340, -0.629415, -0.629489, -0.629564, + -0.629638, -0.629713, -0.629787, -0.629862, -0.629936, -0.630011, -0.630085, -0.630159, + -0.630234, -0.630308, -0.630383, -0.630457, -0.630532, -0.630606, -0.630680, -0.630755, + -0.630829, -0.630904, -0.630978, -0.631052, -0.631127, -0.631201, -0.631275, -0.631350, + -0.631424, -0.631499, -0.631573, -0.631647, -0.631721, -0.631796, -0.631870, -0.631944, + -0.632019, -0.632093, -0.632167, -0.632242, -0.632316, -0.632390, -0.632464, -0.632539, + -0.632613, -0.632687, -0.632761, -0.632836, -0.632910, -0.632984, -0.633058, -0.633133, + -0.633207, -0.633281, -0.633355, -0.633429, -0.633504, -0.633578, -0.633652, -0.633726, + -0.633800, -0.633874, -0.633949, -0.634023, -0.634097, -0.634171, -0.634245, -0.634319, + -0.634393, -0.634467, -0.634542, -0.634616, -0.634690, -0.634764, -0.634838, -0.634912, + -0.634986, -0.635060, -0.635134, -0.635208, -0.635282, -0.635356, -0.635430, -0.635504, + -0.635578, -0.635652, -0.635726, -0.635800, -0.635874, -0.635948, -0.636022, -0.636096, + -0.636170, -0.636244, -0.636318, -0.636392, -0.636466, -0.636540, -0.636614, -0.636688, + -0.636762, -0.636836, -0.636910, -0.636984, -0.637057, -0.637131, -0.637205, -0.637279, + -0.637353, -0.637427, -0.637501, -0.637575, -0.637649, -0.637722, -0.637796, -0.637870, + -0.637944, -0.638018, -0.638092, -0.638165, -0.638239, -0.638313, -0.638387, -0.638461, + -0.638534, -0.638608, -0.638682, -0.638756, -0.638829, -0.638903, -0.638977, -0.639051, + -0.639124, -0.639198, -0.639272, -0.639346, -0.639419, -0.639493, -0.639567, -0.639640, + -0.639714, -0.639788, -0.639862, -0.639935, -0.640009, -0.640083, -0.640156, -0.640230, + -0.640303, -0.640377, -0.640451, -0.640524, -0.640598, -0.640672, -0.640745, -0.640819, + -0.640892, -0.640966, -0.641040, -0.641113, -0.641187, -0.641260, -0.641334, -0.641407, + -0.641481, -0.641555, -0.641628, -0.641702, -0.641775, -0.641849, -0.641922, -0.641996, + -0.642069, -0.642143, -0.642216, -0.642290, -0.642363, -0.642437, -0.642510, -0.642584, + -0.642657, -0.642730, -0.642804, -0.642877, -0.642951, -0.643024, -0.643098, -0.643171, + -0.643245, -0.643318, -0.643391, -0.643465, -0.643538, -0.643611, -0.643685, -0.643758, + -0.643832, -0.643905, -0.643978, -0.644052, -0.644125, -0.644198, -0.644272, -0.644345, + -0.644418, -0.644492, -0.644565, -0.644638, -0.644711, -0.644785, -0.644858, -0.644931, + -0.645005, -0.645078, -0.645151, -0.645224, -0.645298, -0.645371, -0.645444, -0.645517, + -0.645590, -0.645664, -0.645737, -0.645810, -0.645883, -0.645956, -0.646030, -0.646103, + -0.646176, -0.646249, -0.646322, -0.646396, -0.646469, -0.646542, -0.646615, -0.646688, + -0.646761, -0.646834, -0.646907, -0.646981, -0.647054, -0.647127, -0.647200, -0.647273, + -0.647346, -0.647419, -0.647492, -0.647565, -0.647638, -0.647711, -0.647784, -0.647857, + -0.647930, -0.648003, -0.648076, -0.648149, -0.648222, -0.648295, -0.648368, -0.648441, + -0.648514, -0.648587, -0.648660, -0.648733, -0.648806, -0.648879, -0.648952, -0.649025, + -0.649098, -0.649171, -0.649244, -0.649317, -0.649390, -0.649463, -0.649536, -0.649608, + -0.649681, -0.649754, -0.649827, -0.649900, -0.649973, -0.650046, -0.650119, -0.650191, + -0.650264, -0.650337, -0.650410, -0.650483, -0.650555, -0.650628, -0.650701, -0.650774, + -0.650847, -0.650919, -0.650992, -0.651065, -0.651138, -0.651211, -0.651283, -0.651356, + -0.651429, -0.651502, -0.651574, -0.651647, -0.651720, -0.651792, -0.651865, -0.651938, + -0.652011, -0.652083, -0.652156, -0.652229, -0.652301, -0.652374, -0.652447, -0.652519, + -0.652592, -0.652665, -0.652737, -0.652810, -0.652882, -0.652955, -0.653028, -0.653100, + -0.653173, -0.653245, -0.653318, -0.653391, -0.653463, -0.653536, -0.653608, -0.653681, + -0.653753, -0.653826, -0.653899, -0.653971, -0.654044, -0.654116, -0.654189, -0.654261, + -0.654334, -0.654406, -0.654479, -0.654551, -0.654624, -0.654696, -0.654769, -0.654841, + -0.654913, -0.654986, -0.655058, -0.655131, -0.655203, -0.655276, -0.655348, -0.655420, + -0.655493, -0.655565, -0.655638, -0.655710, -0.655782, -0.655855, -0.655927, -0.656000, + -0.656072, -0.656144, -0.656217, -0.656289, -0.656361, -0.656434, -0.656506, -0.656578, + -0.656651, -0.656723, -0.656795, -0.656867, -0.656940, -0.657012, -0.657084, -0.657157, + -0.657229, -0.657301, -0.657373, -0.657446, -0.657518, -0.657590, -0.657662, -0.657734, + -0.657807, -0.657879, -0.657951, -0.658023, -0.658095, -0.658168, -0.658240, -0.658312, + -0.658384, -0.658456, -0.658529, -0.658601, -0.658673, -0.658745, -0.658817, -0.658889, + -0.658961, -0.659033, -0.659105, -0.659178, -0.659250, -0.659322, -0.659394, -0.659466, + -0.659538, -0.659610, -0.659682, -0.659754, -0.659826, -0.659898, -0.659970, -0.660042, + -0.660114, -0.660186, -0.660258, -0.660330, -0.660402, -0.660474, -0.660546, -0.660618, + -0.660690, -0.660762, -0.660834, -0.660906, -0.660978, -0.661050, -0.661122, -0.661194, + -0.661266, -0.661338, -0.661410, -0.661482, -0.661553, -0.661625, -0.661697, -0.661769, + -0.661841, -0.661913, -0.661985, -0.662057, -0.662128, -0.662200, -0.662272, -0.662344, + -0.662416, -0.662488, -0.662559, -0.662631, -0.662703, -0.662775, -0.662847, -0.662918, + -0.662990, -0.663062, -0.663134, -0.663205, -0.663277, -0.663349, -0.663421, -0.663492, + -0.663564, -0.663636, -0.663708, -0.663779, -0.663851, -0.663923, -0.663994, -0.664066, + -0.664138, -0.664209, -0.664281, -0.664353, -0.664424, -0.664496, -0.664568, -0.664639, + -0.664711, -0.664783, -0.664854, -0.664926, -0.664997, -0.665069, -0.665141, -0.665212, + -0.665284, -0.665355, -0.665427, -0.665498, -0.665570, -0.665642, -0.665713, -0.665785, + -0.665856, -0.665928, -0.665999, -0.666071, -0.666142, -0.666214, -0.666285, -0.666357, + -0.666428, -0.666500, -0.666571, -0.666643, -0.666714, -0.666786, -0.666857, -0.666928, + -0.667000, -0.667071, -0.667143, -0.667214, -0.667286, -0.667357, -0.667428, -0.667500, + -0.667571, -0.667643, -0.667714, -0.667785, -0.667857, -0.667928, -0.667999, -0.668071, + -0.668142, -0.668213, -0.668285, -0.668356, -0.668427, -0.668499, -0.668570, -0.668641, + -0.668712, -0.668784, -0.668855, -0.668926, -0.668998, -0.669069, -0.669140, -0.669211, + -0.669283, -0.669354, -0.669425, -0.669496, -0.669567, -0.669639, -0.669710, -0.669781, + -0.669852, -0.669923, -0.669995, -0.670066, -0.670137, -0.670208, -0.670279, -0.670350, + -0.670422, -0.670493, -0.670564, -0.670635, -0.670706, -0.670777, -0.670848, -0.670919, + -0.670990, -0.671062, -0.671133, -0.671204, -0.671275, -0.671346, -0.671417, -0.671488, + -0.671559, -0.671630, -0.671701, -0.671772, -0.671843, -0.671914, -0.671985, -0.672056, + -0.672127, -0.672198, -0.672269, -0.672340, -0.672411, -0.672482, -0.672553, -0.672624, + -0.672695, -0.672766, -0.672837, -0.672908, -0.672978, -0.673049, -0.673120, -0.673191, + -0.673262, -0.673333, -0.673404, -0.673475, -0.673546, -0.673616, -0.673687, -0.673758, + -0.673829, -0.673900, -0.673971, -0.674042, -0.674112, -0.674183, -0.674254, -0.674325, + -0.674396, -0.674466, -0.674537, -0.674608, -0.674679, -0.674749, -0.674820, -0.674891, + -0.674962, -0.675032, -0.675103, -0.675174, -0.675245, -0.675315, -0.675386, -0.675457, + -0.675527, -0.675598, -0.675669, -0.675739, -0.675810, -0.675881, -0.675951, -0.676022, + -0.676093, -0.676163, -0.676234, -0.676305, -0.676375, -0.676446, -0.676516, -0.676587, + -0.676658, -0.676728, -0.676799, -0.676869, -0.676940, -0.677011, -0.677081, -0.677152, + -0.677222, -0.677293, -0.677363, -0.677434, -0.677504, -0.677575, -0.677645, -0.677716, + -0.677786, -0.677857, -0.677927, -0.677998, -0.678068, -0.678139, -0.678209, -0.678280, + -0.678350, -0.678420, -0.678491, -0.678561, -0.678632, -0.678702, -0.678773, -0.678843, + -0.678913, -0.678984, -0.679054, -0.679125, -0.679195, -0.679265, -0.679336, -0.679406, + -0.679476, -0.679547, -0.679617, -0.679687, -0.679758, -0.679828, -0.679898, -0.679969, + -0.680039, -0.680109, -0.680179, -0.680250, -0.680320, -0.680390, -0.680461, -0.680531, + -0.680601, -0.680671, -0.680741, -0.680812, -0.680882, -0.680952, -0.681022, -0.681093, + -0.681163, -0.681233, -0.681303, -0.681373, -0.681443, -0.681514, -0.681584, -0.681654, + -0.681724, -0.681794, -0.681864, -0.681934, -0.682005, -0.682075, -0.682145, -0.682215, + -0.682285, -0.682355, -0.682425, -0.682495, -0.682565, -0.682635, -0.682705, -0.682775, + -0.682846, -0.682916, -0.682986, -0.683056, -0.683126, -0.683196, -0.683266, -0.683336, + -0.683406, -0.683476, -0.683546, -0.683616, -0.683686, -0.683756, -0.683825, -0.683895, + -0.683965, -0.684035, -0.684105, -0.684175, -0.684245, -0.684315, -0.684385, -0.684455, + -0.684525, -0.684595, -0.684664, -0.684734, -0.684804, -0.684874, -0.684944, -0.685014, + -0.685084, -0.685153, -0.685223, -0.685293, -0.685363, -0.685433, -0.685503, -0.685572, + -0.685642, -0.685712, -0.685782, -0.685852, -0.685921, -0.685991, -0.686061, -0.686131, + -0.686200, -0.686270, -0.686340, -0.686409, -0.686479, -0.686549, -0.686619, -0.686688, + -0.686758, -0.686828, -0.686897, -0.686967, -0.687037, -0.687106, -0.687176, -0.687246, + -0.687315, -0.687385, -0.687455, -0.687524, -0.687594, -0.687663, -0.687733, -0.687803, + -0.687872, -0.687942, -0.688011, -0.688081, -0.688151, -0.688220, -0.688290, -0.688359, + -0.688429, -0.688498, -0.688568, -0.688637, -0.688707, -0.688776, -0.688846, -0.688915, + -0.688985, -0.689054, -0.689124, -0.689193, -0.689263, -0.689332, -0.689402, -0.689471, + -0.689541, -0.689610, -0.689679, -0.689749, -0.689818, -0.689888, -0.689957, -0.690026, + -0.690096, -0.690165, -0.690235, -0.690304, -0.690373, -0.690443, -0.690512, -0.690581, + -0.690651, -0.690720, -0.690789, -0.690859, -0.690928, -0.690997, -0.691067, -0.691136, + -0.691205, -0.691274, -0.691344, -0.691413, -0.691482, -0.691552, -0.691621, -0.691690, + -0.691759, -0.691828, -0.691898, -0.691967, -0.692036, -0.692105, -0.692175, -0.692244, + -0.692313, -0.692382, -0.692451, -0.692520, -0.692590, -0.692659, -0.692728, -0.692797, + -0.692866, -0.692935, -0.693004, -0.693074, -0.693143, -0.693212, -0.693281, -0.693350, + -0.693419, -0.693488, -0.693557, -0.693626, -0.693695, -0.693764, -0.693833, -0.693902, + -0.693971, -0.694040, -0.694109, -0.694179, -0.694248, -0.694317, -0.694386, -0.694454, + -0.694524, -0.694592, -0.694661, -0.694730, -0.694799, -0.694868, -0.694937, -0.695006, + -0.695075, -0.695144, -0.695213, -0.695282, -0.695351, -0.695420, -0.695489, -0.695557, + -0.695626, -0.695695, -0.695764, -0.695833, -0.695902, -0.695971, -0.696039, -0.696108, + -0.696177, -0.696246, -0.696315, -0.696384, -0.696452, -0.696521, -0.696590, -0.696659, + -0.696728, -0.696796, -0.696865, -0.696934, -0.697003, -0.697071, -0.697140, -0.697209, + -0.697277, -0.697346, -0.697415, -0.697484, -0.697552, -0.697621, -0.697690, -0.697758, + -0.697827, -0.697896, -0.697964, -0.698033, -0.698102, -0.698170, -0.698239, -0.698308, + -0.698376, -0.698445, -0.698513, -0.698582, -0.698651, -0.698719, -0.698788, -0.698856, + -0.698925, -0.698994, -0.699062, -0.699131, -0.699199, -0.699268, -0.699336, -0.699405, + -0.699473, -0.699542, -0.699610, -0.699679, -0.699747, -0.699816, -0.699884, -0.699953, + -0.700021, -0.700090, -0.700158, -0.700227, -0.700295, -0.700364, -0.700432, -0.700500, + -0.700569, -0.700637, -0.700706, -0.700774, -0.700842, -0.700911, -0.700979, -0.701048, + -0.701116, -0.701184, -0.701253, -0.701321, -0.701389, -0.701458, -0.701526, -0.701594, + -0.701663, -0.701731, -0.701799, -0.701868, -0.701936, -0.702004, -0.702072, -0.702141, + -0.702209, -0.702277, -0.702345, -0.702414, -0.702482, -0.702550, -0.702618, -0.702687, + -0.702755, -0.702823, -0.702891, -0.702959, -0.703028, -0.703096, -0.703164, -0.703232, + -0.703300, -0.703368, -0.703436, -0.703505, -0.703573, -0.703641, -0.703709, -0.703777, + -0.703845, -0.703913, -0.703981, -0.704050, -0.704118, -0.704186, -0.704254, -0.704322, + -0.704390, -0.704458, -0.704526, -0.704594, -0.704662, -0.704730, -0.704798, -0.704866, + -0.704934, -0.705002, -0.705070, -0.705138, -0.705206, -0.705274, -0.705342, -0.705410, + -0.705478, -0.705546, -0.705614, -0.705682, -0.705750, -0.705818, -0.705885, -0.705953, + -0.706021, -0.706089, -0.706157, -0.706225, -0.706293, -0.706361, -0.706429, -0.706496, + -0.706564, -0.706632, -0.706700, -0.706768, -0.706836, -0.706903, -0.706971, -0.707039, + -0.707107, -0.707175, -0.707242, -0.707310, -0.707378, -0.707446, -0.707513, -0.707581, + -0.707649, -0.707717, -0.707784, -0.707852, -0.707920, -0.707988, -0.708055, -0.708123, + -0.708191, -0.708258, -0.708326, -0.708394, -0.708461, -0.708529, -0.708597, -0.708664, + -0.708732, -0.708800, -0.708867, -0.708935, -0.709002, -0.709070, -0.709138, -0.709205, + -0.709273, -0.709340, -0.709408, -0.709476, -0.709543, -0.709611, -0.709678, -0.709746, + -0.709813, -0.709881, -0.709948, -0.710016, -0.710083, -0.710151, -0.710218, -0.710286, + -0.710353, -0.710421, -0.710488, -0.710556, -0.710623, -0.710691, -0.710758, -0.710826, + -0.710893, -0.710960, -0.711028, -0.711095, -0.711163, -0.711230, -0.711297, -0.711365, + -0.711432, -0.711500, -0.711567, -0.711634, -0.711702, -0.711769, -0.711836, -0.711904, + -0.711971, -0.712038, -0.712106, -0.712173, -0.712240, -0.712308, -0.712375, -0.712442, + -0.712509, -0.712577, -0.712644, -0.712711, -0.712778, -0.712846, -0.712913, -0.712980, + -0.713047, -0.713115, -0.713182, -0.713249, -0.713316, -0.713383, -0.713451, -0.713518, + -0.713585, -0.713652, -0.713719, -0.713786, -0.713853, -0.713921, -0.713988, -0.714055, + -0.714122, -0.714189, -0.714256, -0.714323, -0.714390, -0.714457, -0.714525, -0.714592, + -0.714659, -0.714726, -0.714793, -0.714860, -0.714927, -0.714994, -0.715061, -0.715128, + -0.715195, -0.715262, -0.715329, -0.715396, -0.715463, -0.715530, -0.715597, -0.715664, + -0.715731, -0.715798, -0.715865, -0.715932, -0.715999, -0.716066, -0.716132, -0.716199, + -0.716266, -0.716333, -0.716400, -0.716467, -0.716534, -0.716601, -0.716668, -0.716734, + -0.716801, -0.716868, -0.716935, -0.717002, -0.717069, -0.717135, -0.717202, -0.717269, + -0.717336, -0.717403, -0.717469, -0.717536, -0.717603, -0.717670, -0.717737, -0.717803, + -0.717870, -0.717937, -0.718004, -0.718070, -0.718137, -0.718204, -0.718270, -0.718337, + -0.718404, -0.718471, -0.718537, -0.718604, -0.718670, -0.718737, -0.718804, -0.718870, + -0.718937, -0.719004, -0.719070, -0.719137, -0.719204, -0.719270, -0.719337, -0.719403, + -0.719470, -0.719537, -0.719603, -0.719670, -0.719736, -0.719803, -0.719869, -0.719936, + -0.720003, -0.720069, -0.720136, -0.720202, -0.720269, -0.720335, -0.720402, -0.720468, + -0.720535, -0.720601, -0.720668, -0.720734, -0.720800, -0.720867, -0.720933, -0.721000, + -0.721066, -0.721133, -0.721199, -0.721265, -0.721332, -0.721398, -0.721465, -0.721531, + -0.721597, -0.721664, -0.721730, -0.721797, -0.721863, -0.721929, -0.721996, -0.722062, + -0.722128, -0.722194, -0.722261, -0.722327, -0.722393, -0.722460, -0.722526, -0.722592, + -0.722659, -0.722725, -0.722791, -0.722857, -0.722924, -0.722990, -0.723056, -0.723122, + -0.723188, -0.723255, -0.723321, -0.723387, -0.723453, -0.723520, -0.723586, -0.723652, + -0.723718, -0.723784, -0.723850, -0.723916, -0.723983, -0.724049, -0.724115, -0.724181, + -0.724247, -0.724313, -0.724379, -0.724445, -0.724511, -0.724578, -0.724644, -0.724710, + -0.724776, -0.724842, -0.724908, -0.724974, -0.725040, -0.725106, -0.725172, -0.725238, + -0.725304, -0.725370, -0.725436, -0.725502, -0.725568, -0.725634, -0.725700, -0.725766, + -0.725832, -0.725898, -0.725964, -0.726030, -0.726095, -0.726161, -0.726227, -0.726293, + -0.726359, -0.726425, -0.726491, -0.726557, -0.726623, -0.726689, -0.726754, -0.726820, + -0.726886, -0.726952, -0.727018, -0.727084, -0.727149, -0.727215, -0.727281, -0.727347, + -0.727413, -0.727478, -0.727544, -0.727610, -0.727676, -0.727741, -0.727807, -0.727873, + -0.727939, -0.728004, -0.728070, -0.728136, -0.728202, -0.728267, -0.728333, -0.728399, + -0.728464, -0.728530, -0.728596, -0.728661, -0.728727, -0.728793, -0.728858, -0.728924, + -0.728990, -0.729055, -0.729121, -0.729186, -0.729252, -0.729318, -0.729383, -0.729449, + -0.729514, -0.729580, -0.729646, -0.729711, -0.729777, -0.729842, -0.729908, -0.729973, + -0.730039, -0.730104, -0.730170, -0.730235, -0.730301, -0.730366, -0.730432, -0.730497, + -0.730563, -0.730628, -0.730694, -0.730759, -0.730825, -0.730890, -0.730955, -0.731021, + -0.731086, -0.731152, -0.731217, -0.731282, -0.731348, -0.731413, -0.731479, -0.731544, + -0.731609, -0.731675, -0.731740, -0.731805, -0.731871, -0.731936, -0.732001, -0.732067, + -0.732132, -0.732197, -0.732263, -0.732328, -0.732393, -0.732458, -0.732524, -0.732589, + -0.732654, -0.732720, -0.732785, -0.732850, -0.732915, -0.732980, -0.733046, -0.733111, + -0.733176, -0.733241, -0.733306, -0.733372, -0.733437, -0.733502, -0.733567, -0.733632, + -0.733697, -0.733763, -0.733828, -0.733893, -0.733958, -0.734023, -0.734088, -0.734153, + -0.734218, -0.734283, -0.734349, -0.734414, -0.734479, -0.734544, -0.734609, -0.734674, + -0.734739, -0.734804, -0.734869, -0.734934, -0.734999, -0.735064, -0.735129, -0.735194, + -0.735259, -0.735324, -0.735389, -0.735454, -0.735519, -0.735584, -0.735649, -0.735714, + -0.735779, -0.735844, -0.735908, -0.735973, -0.736038, -0.736103, -0.736168, -0.736233, + -0.736298, -0.736363, -0.736428, -0.736492, -0.736557, -0.736622, -0.736687, -0.736752, + -0.736817, -0.736881, -0.736946, -0.737011, -0.737076, -0.737141, -0.737205, -0.737270, + -0.737335, -0.737400, -0.737464, -0.737529, -0.737594, -0.737659, -0.737723, -0.737788, + -0.737853, -0.737918, -0.737982, -0.738047, -0.738112, -0.738176, -0.738241, -0.738306, + -0.738370, -0.738435, -0.738500, -0.738564, -0.738629, -0.738693, -0.738758, -0.738823, + -0.738887, -0.738952, -0.739017, -0.739081, -0.739146, -0.739210, -0.739275, -0.739339, + -0.739404, -0.739468, -0.739533, -0.739598, -0.739662, -0.739727, -0.739791, -0.739856, + -0.739920, -0.739985, -0.740049, -0.740114, -0.740178, -0.740242, -0.740307, -0.740371, + -0.740436, -0.740500, -0.740565, -0.740629, -0.740694, -0.740758, -0.740822, -0.740887, + -0.740951, -0.741015, -0.741080, -0.741144, -0.741209, -0.741273, -0.741337, -0.741402, + -0.741466, -0.741530, -0.741595, -0.741659, -0.741723, -0.741788, -0.741852, -0.741916, + -0.741980, -0.742045, -0.742109, -0.742173, -0.742237, -0.742302, -0.742366, -0.742430, + -0.742494, -0.742559, -0.742623, -0.742687, -0.742751, -0.742815, -0.742880, -0.742944, + -0.743008, -0.743072, -0.743136, -0.743200, -0.743265, -0.743329, -0.743393, -0.743457, + -0.743521, -0.743585, -0.743649, -0.743713, -0.743777, -0.743842, -0.743906, -0.743970, + -0.744034, -0.744098, -0.744162, -0.744226, -0.744290, -0.744354, -0.744418, -0.744482, + -0.744546, -0.744610, -0.744674, -0.744738, -0.744802, -0.744866, -0.744930, -0.744994, + -0.745058, -0.745122, -0.745186, -0.745250, -0.745314, -0.745377, -0.745441, -0.745505, + -0.745569, -0.745633, -0.745697, -0.745761, -0.745825, -0.745889, -0.745952, -0.746016, + -0.746080, -0.746144, -0.746208, -0.746272, -0.746335, -0.746399, -0.746463, -0.746527, + -0.746591, -0.746654, -0.746718, -0.746782, -0.746846, -0.746909, -0.746973, -0.747037, + -0.747101, -0.747164, -0.747228, -0.747292, -0.747355, -0.747419, -0.747483, -0.747547, + -0.747610, -0.747674, -0.747738, -0.747801, -0.747865, -0.747929, -0.747992, -0.748056, + -0.748119, -0.748183, -0.748247, -0.748310, -0.748374, -0.748437, -0.748501, -0.748565, + -0.748628, -0.748692, -0.748755, -0.748819, -0.748882, -0.748946, -0.749009, -0.749073, + -0.749136, -0.749200, -0.749263, -0.749327, -0.749390, -0.749454, -0.749517, -0.749581, + -0.749644, -0.749708, -0.749771, -0.749835, -0.749898, -0.749961, -0.750025, -0.750088, + -0.750152, -0.750215, -0.750278, -0.750342, -0.750405, -0.750469, -0.750532, -0.750595, + -0.750659, -0.750722, -0.750785, -0.750849, -0.750912, -0.750975, -0.751039, -0.751102, + -0.751165, -0.751228, -0.751292, -0.751355, -0.751418, -0.751481, -0.751545, -0.751608, + -0.751671, -0.751734, -0.751798, -0.751861, -0.751924, -0.751987, -0.752050, -0.752114, + -0.752177, -0.752240, -0.752303, -0.752366, -0.752429, -0.752493, -0.752556, -0.752619, + -0.752682, -0.752745, -0.752808, -0.752871, -0.752934, -0.752998, -0.753061, -0.753124, + -0.753187, -0.753250, -0.753313, -0.753376, -0.753439, -0.753502, -0.753565, -0.753628, + -0.753691, -0.753754, -0.753817, -0.753880, -0.753943, -0.754006, -0.754069, -0.754132, + -0.754195, -0.754258, -0.754321, -0.754384, -0.754447, -0.754510, -0.754573, -0.754636, + -0.754698, -0.754761, -0.754824, -0.754887, -0.754950, -0.755013, -0.755076, -0.755139, + -0.755201, -0.755264, -0.755327, -0.755390, -0.755453, -0.755516, -0.755578, -0.755641, + -0.755704, -0.755767, -0.755829, -0.755892, -0.755955, -0.756018, -0.756081, -0.756143, + -0.756206, -0.756269, -0.756331, -0.756394, -0.756457, -0.756520, -0.756582, -0.756645, + -0.756708, -0.756770, -0.756833, -0.756896, -0.756958, -0.757021, -0.757084, -0.757146, + -0.757209, -0.757271, -0.757334, -0.757397, -0.757459, -0.757522, -0.757584, -0.757647, + -0.757710, -0.757772, -0.757835, -0.757897, -0.757960, -0.758022, -0.758085, -0.758147, + -0.758210, -0.758272, -0.758335, -0.758397, -0.758460, -0.758522, -0.758585, -0.758647, + -0.758710, -0.758772, -0.758835, -0.758897, -0.758960, -0.759022, -0.759084, -0.759147, + -0.759209, -0.759272, -0.759334, -0.759396, -0.759459, -0.759521, -0.759583, -0.759646, + -0.759708, -0.759771, -0.759833, -0.759895, -0.759957, -0.760020, -0.760082, -0.760144, + -0.760207, -0.760269, -0.760331, -0.760394, -0.760456, -0.760518, -0.760580, -0.760643, + -0.760705, -0.760767, -0.760829, -0.760891, -0.760954, -0.761016, -0.761078, -0.761140, + -0.761202, -0.761265, -0.761327, -0.761389, -0.761451, -0.761513, -0.761575, -0.761637, + -0.761700, -0.761762, -0.761824, -0.761886, -0.761948, -0.762010, -0.762072, -0.762134, + -0.762196, -0.762258, -0.762320, -0.762382, -0.762444, -0.762507, -0.762569, -0.762631, + -0.762693, -0.762755, -0.762817, -0.762879, -0.762941, -0.763003, -0.763065, -0.763126, + -0.763188, -0.763250, -0.763312, -0.763374, -0.763436, -0.763498, -0.763560, -0.763622, + -0.763684, -0.763746, -0.763808, -0.763869, -0.763931, -0.763993, -0.764055, -0.764117, + -0.764179, -0.764241, -0.764302, -0.764364, -0.764426, -0.764488, -0.764550, -0.764611, + -0.764673, -0.764735, -0.764797, -0.764859, -0.764920, -0.764982, -0.765044, -0.765106, + -0.765167, -0.765229, -0.765291, -0.765352, -0.765414, -0.765476, -0.765538, -0.765599, + -0.765661, -0.765723, -0.765784, -0.765846, -0.765907, -0.765969, -0.766031, -0.766092, + -0.766154, -0.766216, -0.766277, -0.766339, -0.766400, -0.766462, -0.766524, -0.766585, + -0.766647, -0.766708, -0.766770, -0.766831, -0.766893, -0.766954, -0.767016, -0.767077, + -0.767139, -0.767200, -0.767262, -0.767323, -0.767385, -0.767446, -0.767508, -0.767569, + -0.767631, -0.767692, -0.767754, -0.767815, -0.767876, -0.767938, -0.767999, -0.768061, + -0.768122, -0.768183, -0.768245, -0.768306, -0.768368, -0.768429, -0.768490, -0.768552, + -0.768613, -0.768674, -0.768736, -0.768797, -0.768858, -0.768919, -0.768981, -0.769042, + -0.769103, -0.769165, -0.769226, -0.769287, -0.769348, -0.769410, -0.769471, -0.769532, + -0.769593, -0.769655, -0.769716, -0.769777, -0.769838, -0.769899, -0.769961, -0.770022, + -0.770083, -0.770144, -0.770205, -0.770266, -0.770327, -0.770389, -0.770450, -0.770511, + -0.770572, -0.770633, -0.770694, -0.770755, -0.770816, -0.770877, -0.770938, -0.770999, + -0.771061, -0.771122, -0.771183, -0.771244, -0.771305, -0.771366, -0.771427, -0.771488, + -0.771549, -0.771610, -0.771671, -0.771732, -0.771793, -0.771854, -0.771915, -0.771975, + -0.772036, -0.772097, -0.772158, -0.772219, -0.772280, -0.772341, -0.772402, -0.772463, + -0.772524, -0.772584, -0.772645, -0.772706, -0.772767, -0.772828, -0.772889, -0.772950, + -0.773010, -0.773071, -0.773132, -0.773193, -0.773254, -0.773314, -0.773375, -0.773436, + -0.773497, -0.773558, -0.773618, -0.773679, -0.773740, -0.773801, -0.773861, -0.773922, + -0.773983, -0.774043, -0.774104, -0.774165, -0.774225, -0.774286, -0.774347, -0.774407, + -0.774468, -0.774529, -0.774589, -0.774650, -0.774711, -0.774771, -0.774832, -0.774893, + -0.774953, -0.775014, -0.775074, -0.775135, -0.775195, -0.775256, -0.775317, -0.775377, + -0.775438, -0.775498, -0.775559, -0.775619, -0.775680, -0.775740, -0.775801, -0.775861, + -0.775922, -0.775982, -0.776043, -0.776103, -0.776164, -0.776224, -0.776284, -0.776345, + -0.776405, -0.776466, -0.776526, -0.776587, -0.776647, -0.776707, -0.776768, -0.776828, + -0.776888, -0.776949, -0.777009, -0.777070, -0.777130, -0.777190, -0.777251, -0.777311, + -0.777371, -0.777431, -0.777492, -0.777552, -0.777612, -0.777673, -0.777733, -0.777793, + -0.777853, -0.777914, -0.777974, -0.778034, -0.778094, -0.778155, -0.778215, -0.778275, + -0.778335, -0.778395, -0.778456, -0.778516, -0.778576, -0.778636, -0.778696, -0.778756, + -0.778817, -0.778877, -0.778937, -0.778997, -0.779057, -0.779117, -0.779177, -0.779237, + -0.779297, -0.779357, -0.779418, -0.779478, -0.779538, -0.779598, -0.779658, -0.779718, + -0.779778, -0.779838, -0.779898, -0.779958, -0.780018, -0.780078, -0.780138, -0.780198, + -0.780258, -0.780318, -0.780378, -0.780438, -0.780498, -0.780557, -0.780617, -0.780677, + -0.780737, -0.780797, -0.780857, -0.780917, -0.780977, -0.781037, -0.781097, -0.781156, + -0.781216, -0.781276, -0.781336, -0.781396, -0.781456, -0.781515, -0.781575, -0.781635, + -0.781695, -0.781755, -0.781814, -0.781874, -0.781934, -0.781994, -0.782053, -0.782113, + -0.782173, -0.782233, -0.782292, -0.782352, -0.782412, -0.782472, -0.782531, -0.782591, + -0.782651, -0.782710, -0.782770, -0.782830, -0.782889, -0.782949, -0.783009, -0.783068, + -0.783128, -0.783187, -0.783247, -0.783307, -0.783366, -0.783426, -0.783485, -0.783545, + -0.783605, -0.783664, -0.783724, -0.783783, -0.783843, -0.783902, -0.783962, -0.784021, + -0.784081, -0.784140, -0.784200, -0.784259, -0.784319, -0.784378, -0.784438, -0.784497, + -0.784557, -0.784616, -0.784675, -0.784735, -0.784794, -0.784854, -0.784913, -0.784973, + -0.785032, -0.785091, -0.785151, -0.785210, -0.785269, -0.785329, -0.785388, -0.785447, + -0.785507, -0.785566, -0.785625, -0.785685, -0.785744, -0.785803, -0.785863, -0.785922, + -0.785981, -0.786041, -0.786100, -0.786159, -0.786218, -0.786278, -0.786337, -0.786396, + -0.786455, -0.786514, -0.786574, -0.786633, -0.786692, -0.786751, -0.786810, -0.786870, + -0.786929, -0.786988, -0.787047, -0.787106, -0.787165, -0.787224, -0.787284, -0.787343, + -0.787402, -0.787461, -0.787520, -0.787579, -0.787638, -0.787697, -0.787756, -0.787815, + -0.787874, -0.787933, -0.787992, -0.788051, -0.788110, -0.788169, -0.788228, -0.788287, + -0.788346, -0.788405, -0.788464, -0.788523, -0.788582, -0.788641, -0.788700, -0.788759, + -0.788818, -0.788877, -0.788936, -0.788995, -0.789054, -0.789113, -0.789172, -0.789230, + -0.789289, -0.789348, -0.789407, -0.789466, -0.789525, -0.789584, -0.789642, -0.789701, + -0.789760, -0.789819, -0.789878, -0.789936, -0.789995, -0.790054, -0.790113, -0.790171, + -0.790230, -0.790289, -0.790348, -0.790406, -0.790465, -0.790524, -0.790583, -0.790641, + -0.790700, -0.790759, -0.790817, -0.790876, -0.790935, -0.790993, -0.791052, -0.791111, + -0.791169, -0.791228, -0.791287, -0.791345, -0.791404, -0.791462, -0.791521, -0.791580, + -0.791638, -0.791697, -0.791755, -0.791814, -0.791872, -0.791931, -0.791990, -0.792048, + -0.792107, -0.792165, -0.792224, -0.792282, -0.792341, -0.792399, -0.792458, -0.792516, + -0.792575, -0.792633, -0.792691, -0.792750, -0.792808, -0.792867, -0.792925, -0.792984, + -0.793042, -0.793100, -0.793159, -0.793217, -0.793276, -0.793334, -0.793392, -0.793451, + -0.793509, -0.793567, -0.793626, -0.793684, -0.793742, -0.793801, -0.793859, -0.793917, + -0.793975, -0.794034, -0.794092, -0.794150, -0.794209, -0.794267, -0.794325, -0.794383, + -0.794442, -0.794500, -0.794558, -0.794616, -0.794674, -0.794733, -0.794791, -0.794849, + -0.794907, -0.794965, -0.795023, -0.795082, -0.795140, -0.795198, -0.795256, -0.795314, + -0.795372, -0.795430, -0.795488, -0.795547, -0.795605, -0.795663, -0.795721, -0.795779, + -0.795837, -0.795895, -0.795953, -0.796011, -0.796069, -0.796127, -0.796185, -0.796243, + -0.796301, -0.796359, -0.796417, -0.796475, -0.796533, -0.796591, -0.796649, -0.796707, + -0.796765, -0.796823, -0.796881, -0.796939, -0.796996, -0.797054, -0.797112, -0.797170, + -0.797228, -0.797286, -0.797344, -0.797402, -0.797459, -0.797517, -0.797575, -0.797633, + -0.797691, -0.797749, -0.797806, -0.797864, -0.797922, -0.797980, -0.798038, -0.798095, + -0.798153, -0.798211, -0.798269, -0.798326, -0.798384, -0.798442, -0.798500, -0.798557, + -0.798615, -0.798673, -0.798730, -0.798788, -0.798846, -0.798903, -0.798961, -0.799019, + -0.799076, -0.799134, -0.799192, -0.799249, -0.799307, -0.799365, -0.799422, -0.799480, + -0.799537, -0.799595, -0.799652, -0.799710, -0.799768, -0.799825, -0.799883, -0.799940, + -0.799998, -0.800055, -0.800113, -0.800170, -0.800228, -0.800285, -0.800343, -0.800400, + -0.800458, -0.800515, -0.800573, -0.800630, -0.800687, -0.800745, -0.800802, -0.800860, + -0.800917, -0.800975, -0.801032, -0.801089, -0.801147, -0.801204, -0.801261, -0.801319, + -0.801376, -0.801434, -0.801491, -0.801548, -0.801606, -0.801663, -0.801720, -0.801777, + -0.801835, -0.801892, -0.801949, -0.802007, -0.802064, -0.802121, -0.802178, -0.802236, + -0.802293, -0.802350, -0.802407, -0.802464, -0.802522, -0.802579, -0.802636, -0.802693, + -0.802750, -0.802808, -0.802865, -0.802922, -0.802979, -0.803036, -0.803093, -0.803150, + -0.803208, -0.803265, -0.803322, -0.803379, -0.803436, -0.803493, -0.803550, -0.803607, + -0.803664, -0.803721, -0.803778, -0.803835, -0.803892, -0.803949, -0.804006, -0.804063, + -0.804120, -0.804177, -0.804234, -0.804291, -0.804348, -0.804405, -0.804462, -0.804519, + -0.804576, -0.804633, -0.804690, -0.804747, -0.804804, -0.804861, -0.804918, -0.804974, + -0.805031, -0.805088, -0.805145, -0.805202, -0.805259, -0.805316, -0.805372, -0.805429, + -0.805486, -0.805543, -0.805600, -0.805656, -0.805713, -0.805770, -0.805827, -0.805884, + -0.805940, -0.805997, -0.806054, -0.806111, -0.806167, -0.806224, -0.806281, -0.806338, + -0.806394, -0.806451, -0.806508, -0.806564, -0.806621, -0.806678, -0.806734, -0.806791, + -0.806848, -0.806904, -0.806961, -0.807017, -0.807074, -0.807131, -0.807187, -0.807244, + -0.807300, -0.807357, -0.807414, -0.807470, -0.807527, -0.807583, -0.807640, -0.807696, + -0.807753, -0.807809, -0.807866, -0.807922, -0.807979, -0.808035, -0.808092, -0.808148, + -0.808205, -0.808261, -0.808318, -0.808374, -0.808430, -0.808487, -0.808543, -0.808600, + -0.808656, -0.808713, -0.808769, -0.808825, -0.808882, -0.808938, -0.808994, -0.809051, + -0.809107, -0.809164, -0.809220, -0.809276, -0.809332, -0.809389, -0.809445, -0.809501, + -0.809558, -0.809614, -0.809670, -0.809726, -0.809783, -0.809839, -0.809895, -0.809951, + -0.810008, -0.810064, -0.810120, -0.810176, -0.810232, -0.810289, -0.810345, -0.810401, + -0.810457, -0.810513, -0.810570, -0.810626, -0.810682, -0.810738, -0.810794, -0.810850, + -0.810906, -0.810962, -0.811018, -0.811075, -0.811131, -0.811187, -0.811243, -0.811299, + -0.811355, -0.811411, -0.811467, -0.811523, -0.811579, -0.811635, -0.811691, -0.811747, + -0.811803, -0.811859, -0.811915, -0.811971, -0.812027, -0.812083, -0.812139, -0.812195, + -0.812251, -0.812307, -0.812362, -0.812418, -0.812474, -0.812530, -0.812586, -0.812642, + -0.812698, -0.812754, -0.812809, -0.812865, -0.812921, -0.812977, -0.813033, -0.813089, + -0.813144, -0.813200, -0.813256, -0.813312, -0.813368, -0.813423, -0.813479, -0.813535, + -0.813591, -0.813646, -0.813702, -0.813758, -0.813814, -0.813869, -0.813925, -0.813981, + -0.814036, -0.814092, -0.814148, -0.814203, -0.814259, -0.814315, -0.814370, -0.814426, + -0.814482, -0.814537, -0.814593, -0.814648, -0.814704, -0.814760, -0.814815, -0.814871, + -0.814926, -0.814982, -0.815037, -0.815093, -0.815149, -0.815204, -0.815260, -0.815315, + -0.815371, -0.815426, -0.815482, -0.815537, -0.815593, -0.815648, -0.815704, -0.815759, + -0.815814, -0.815870, -0.815925, -0.815981, -0.816036, -0.816092, -0.816147, -0.816202, + -0.816258, -0.816313, -0.816368, -0.816424, -0.816479, -0.816535, -0.816590, -0.816645, + -0.816701, -0.816756, -0.816811, -0.816867, -0.816922, -0.816977, -0.817032, -0.817088, + -0.817143, -0.817198, -0.817253, -0.817309, -0.817364, -0.817419, -0.817474, -0.817530, + -0.817585, -0.817640, -0.817695, -0.817750, -0.817806, -0.817861, -0.817916, -0.817971, + -0.818026, -0.818081, -0.818137, -0.818192, -0.818247, -0.818302, -0.818357, -0.818412, + -0.818467, -0.818522, -0.818577, -0.818632, -0.818687, -0.818742, -0.818798, -0.818853, + -0.818908, -0.818963, -0.819018, -0.819073, -0.819128, -0.819183, -0.819238, -0.819293, + -0.819348, -0.819402, -0.819457, -0.819512, -0.819567, -0.819622, -0.819677, -0.819732, + -0.819787, -0.819842, -0.819897, -0.819952, -0.820007, -0.820061, -0.820116, -0.820171, + -0.820226, -0.820281, -0.820336, -0.820390, -0.820445, -0.820500, -0.820555, -0.820610, + -0.820664, -0.820719, -0.820774, -0.820829, -0.820884, -0.820938, -0.820993, -0.821048, + -0.821102, -0.821157, -0.821212, -0.821267, -0.821321, -0.821376, -0.821431, -0.821485, + -0.821540, -0.821595, -0.821649, -0.821704, -0.821759, -0.821813, -0.821868, -0.821922, + -0.821977, -0.822032, -0.822086, -0.822141, -0.822195, -0.822250, -0.822305, -0.822359, + -0.822414, -0.822468, -0.822523, -0.822577, -0.822632, -0.822686, -0.822741, -0.822795, + -0.822850, -0.822904, -0.822959, -0.823013, -0.823068, -0.823122, -0.823177, -0.823231, + -0.823285, -0.823340, -0.823394, -0.823449, -0.823503, -0.823557, -0.823612, -0.823666, + -0.823721, -0.823775, -0.823829, -0.823884, -0.823938, -0.823992, -0.824047, -0.824101, + -0.824155, -0.824209, -0.824264, -0.824318, -0.824372, -0.824427, -0.824481, -0.824535, + -0.824589, -0.824644, -0.824698, -0.824752, -0.824806, -0.824860, -0.824915, -0.824969, + -0.825023, -0.825077, -0.825131, -0.825185, -0.825240, -0.825294, -0.825348, -0.825402, + -0.825456, -0.825510, -0.825564, -0.825618, -0.825673, -0.825727, -0.825781, -0.825835, + -0.825889, -0.825943, -0.825997, -0.826051, -0.826105, -0.826159, -0.826213, -0.826267, + -0.826321, -0.826375, -0.826429, -0.826483, -0.826537, -0.826591, -0.826645, -0.826699, + -0.826753, -0.826807, -0.826861, -0.826915, -0.826968, -0.827022, -0.827076, -0.827130, + -0.827184, -0.827238, -0.827292, -0.827346, -0.827399, -0.827453, -0.827507, -0.827561, + -0.827615, -0.827669, -0.827722, -0.827776, -0.827830, -0.827884, -0.827938, -0.827991, + -0.828045, -0.828099, -0.828153, -0.828206, -0.828260, -0.828314, -0.828367, -0.828421, + -0.828475, -0.828529, -0.828582, -0.828636, -0.828690, -0.828743, -0.828797, -0.828851, + -0.828904, -0.828958, -0.829011, -0.829065, -0.829119, -0.829172, -0.829226, -0.829279, + -0.829333, -0.829386, -0.829440, -0.829494, -0.829547, -0.829601, -0.829654, -0.829708, + -0.829761, -0.829815, -0.829868, -0.829922, -0.829975, -0.830029, -0.830082, -0.830136, + -0.830189, -0.830243, -0.830296, -0.830349, -0.830403, -0.830456, -0.830510, -0.830563, + -0.830616, -0.830670, -0.830723, -0.830777, -0.830830, -0.830883, -0.830937, -0.830990, + -0.831043, -0.831097, -0.831150, -0.831203, -0.831257, -0.831310, -0.831363, -0.831416, + -0.831470, -0.831523, -0.831576, -0.831629, -0.831683, -0.831736, -0.831789, -0.831842, + -0.831895, -0.831949, -0.832002, -0.832055, -0.832108, -0.832161, -0.832215, -0.832268, + -0.832321, -0.832374, -0.832427, -0.832480, -0.832533, -0.832586, -0.832640, -0.832693, + -0.832746, -0.832799, -0.832852, -0.832905, -0.832958, -0.833011, -0.833064, -0.833117, + -0.833170, -0.833223, -0.833276, -0.833329, -0.833382, -0.833435, -0.833488, -0.833541, + -0.833594, -0.833647, -0.833700, -0.833753, -0.833806, -0.833859, -0.833912, -0.833965, + -0.834018, -0.834070, -0.834123, -0.834176, -0.834229, -0.834282, -0.834335, -0.834388, + -0.834440, -0.834493, -0.834546, -0.834599, -0.834652, -0.834705, -0.834757, -0.834810, + -0.834863, -0.834916, -0.834968, -0.835021, -0.835074, -0.835127, -0.835179, -0.835232, + -0.835285, -0.835338, -0.835390, -0.835443, -0.835496, -0.835548, -0.835601, -0.835654, + -0.835706, -0.835759, -0.835812, -0.835864, -0.835917, -0.835969, -0.836022, -0.836075, + -0.836127, -0.836180, -0.836232, -0.836285, -0.836338, -0.836390, -0.836443, -0.836495, + -0.836548, -0.836600, -0.836653, -0.836705, -0.836758, -0.836810, -0.836863, -0.836915, + -0.836968, -0.837020, -0.837073, -0.837125, -0.837178, -0.837230, -0.837282, -0.837335, + -0.837387, -0.837440, -0.837492, -0.837544, -0.837597, -0.837649, -0.837701, -0.837754, + -0.837806, -0.837859, -0.837911, -0.837963, -0.838015, -0.838068, -0.838120, -0.838172, + -0.838225, -0.838277, -0.838329, -0.838382, -0.838434, -0.838486, -0.838538, -0.838591, + -0.838643, -0.838695, -0.838747, -0.838799, -0.838852, -0.838904, -0.838956, -0.839008, + -0.839060, -0.839112, -0.839165, -0.839217, -0.839269, -0.839321, -0.839373, -0.839425, + -0.839477, -0.839529, -0.839581, -0.839634, -0.839686, -0.839738, -0.839790, -0.839842, + -0.839894, -0.839946, -0.839998, -0.840050, -0.840102, -0.840154, -0.840206, -0.840258, + -0.840310, -0.840362, -0.840414, -0.840466, -0.840518, -0.840570, -0.840622, -0.840673, + -0.840725, -0.840777, -0.840829, -0.840881, -0.840933, -0.840985, -0.841037, -0.841089, + -0.841140, -0.841192, -0.841244, -0.841296, -0.841348, -0.841400, -0.841451, -0.841503, + -0.841555, -0.841607, -0.841659, -0.841710, -0.841762, -0.841814, -0.841866, -0.841917, + -0.841969, -0.842021, -0.842072, -0.842124, -0.842176, -0.842228, -0.842279, -0.842331, + -0.842383, -0.842434, -0.842486, -0.842538, -0.842589, -0.842641, -0.842692, -0.842744, + -0.842796, -0.842847, -0.842899, -0.842950, -0.843002, -0.843054, -0.843105, -0.843157, + -0.843208, -0.843260, -0.843311, -0.843363, -0.843414, -0.843466, -0.843517, -0.843569, + -0.843620, -0.843672, -0.843723, -0.843775, -0.843826, -0.843878, -0.843929, -0.843980, + -0.844032, -0.844083, -0.844135, -0.844186, -0.844238, -0.844289, -0.844340, -0.844392, + -0.844443, -0.844494, -0.844546, -0.844597, -0.844648, -0.844700, -0.844751, -0.844802, + -0.844854, -0.844905, -0.844956, -0.845007, -0.845059, -0.845110, -0.845161, -0.845212, + -0.845264, -0.845315, -0.845366, -0.845417, -0.845469, -0.845520, -0.845571, -0.845622, + -0.845673, -0.845724, -0.845776, -0.845827, -0.845878, -0.845929, -0.845980, -0.846031, + -0.846082, -0.846133, -0.846185, -0.846236, -0.846287, -0.846338, -0.846389, -0.846440, + -0.846491, -0.846542, -0.846593, -0.846644, -0.846695, -0.846746, -0.846797, -0.846848, + -0.846899, -0.846950, -0.847001, -0.847052, -0.847103, -0.847154, -0.847205, -0.847256, + -0.847307, -0.847358, -0.847408, -0.847459, -0.847510, -0.847561, -0.847612, -0.847663, + -0.847714, -0.847765, -0.847815, -0.847866, -0.847917, -0.847968, -0.848019, -0.848070, + -0.848120, -0.848171, -0.848222, -0.848273, -0.848323, -0.848374, -0.848425, -0.848476, + -0.848526, -0.848577, -0.848628, -0.848679, -0.848729, -0.848780, -0.848831, -0.848881, + -0.848932, -0.848983, -0.849033, -0.849084, -0.849135, -0.849185, -0.849236, -0.849287, + -0.849337, -0.849388, -0.849438, -0.849489, -0.849540, -0.849590, -0.849641, -0.849691, + -0.849742, -0.849792, -0.849843, -0.849893, -0.849944, -0.849994, -0.850045, -0.850095, + -0.850146, -0.850196, -0.850247, -0.850297, -0.850348, -0.850398, -0.850449, -0.850499, + -0.850549, -0.850600, -0.850650, -0.850701, -0.850751, -0.850801, -0.850852, -0.850902, + -0.850953, -0.851003, -0.851053, -0.851104, -0.851154, -0.851204, -0.851255, -0.851305, + -0.851355, -0.851406, -0.851456, -0.851506, -0.851556, -0.851607, -0.851657, -0.851707, + -0.851757, -0.851808, -0.851858, -0.851908, -0.851958, -0.852008, -0.852059, -0.852109, + -0.852159, -0.852209, -0.852259, -0.852309, -0.852360, -0.852410, -0.852460, -0.852510, + -0.852560, -0.852610, -0.852660, -0.852710, -0.852760, -0.852810, -0.852861, -0.852911, + -0.852961, -0.853011, -0.853061, -0.853111, -0.853161, -0.853211, -0.853261, -0.853311, + -0.853361, -0.853411, -0.853461, -0.853511, -0.853561, -0.853611, -0.853660, -0.853710, + -0.853760, -0.853810, -0.853860, -0.853910, -0.853960, -0.854010, -0.854060, -0.854110, + -0.854159, -0.854209, -0.854259, -0.854309, -0.854359, -0.854409, -0.854458, -0.854508, + -0.854558, -0.854608, -0.854658, -0.854707, -0.854757, -0.854807, -0.854857, -0.854906, + -0.854956, -0.855006, -0.855056, -0.855105, -0.855155, -0.855205, -0.855254, -0.855304, + -0.855354, -0.855403, -0.855453, -0.855503, -0.855552, -0.855602, -0.855651, -0.855701, + -0.855751, -0.855800, -0.855850, -0.855900, -0.855949, -0.855999, -0.856048, -0.856098, + -0.856147, -0.856197, -0.856246, -0.856296, -0.856345, -0.856395, -0.856444, -0.856494, + -0.856543, -0.856593, -0.856642, -0.856692, -0.856741, -0.856791, -0.856840, -0.856890, + -0.856939, -0.856988, -0.857038, -0.857087, -0.857137, -0.857186, -0.857235, -0.857285, + -0.857334, -0.857383, -0.857433, -0.857482, -0.857531, -0.857581, -0.857630, -0.857679, + -0.857729, -0.857778, -0.857827, -0.857876, -0.857926, -0.857975, -0.858024, -0.858073, + -0.858123, -0.858172, -0.858221, -0.858270, -0.858320, -0.858369, -0.858418, -0.858467, + -0.858516, -0.858565, -0.858615, -0.858664, -0.858713, -0.858762, -0.858811, -0.858860, + -0.858909, -0.858958, -0.859007, -0.859057, -0.859106, -0.859155, -0.859204, -0.859253, + -0.859302, -0.859351, -0.859400, -0.859449, -0.859498, -0.859547, -0.859596, -0.859645, + -0.859694, -0.859743, -0.859792, -0.859841, -0.859890, -0.859939, -0.859988, -0.860036, + -0.860085, -0.860134, -0.860183, -0.860232, -0.860281, -0.860330, -0.860379, -0.860428, + -0.860476, -0.860525, -0.860574, -0.860623, -0.860672, -0.860721, -0.860769, -0.860818, + -0.860867, -0.860916, -0.860964, -0.861013, -0.861062, -0.861111, -0.861160, -0.861208, + -0.861257, -0.861306, -0.861354, -0.861403, -0.861452, -0.861500, -0.861549, -0.861598, + -0.861646, -0.861695, -0.861744, -0.861792, -0.861841, -0.861890, -0.861938, -0.861987, + -0.862035, -0.862084, -0.862133, -0.862181, -0.862230, -0.862278, -0.862327, -0.862375, + -0.862424, -0.862472, -0.862521, -0.862570, -0.862618, -0.862666, -0.862715, -0.862763, + -0.862812, -0.862860, -0.862909, -0.862957, -0.863006, -0.863054, -0.863103, -0.863151, + -0.863199, -0.863248, -0.863296, -0.863345, -0.863393, -0.863441, -0.863490, -0.863538, + -0.863586, -0.863635, -0.863683, -0.863731, -0.863780, -0.863828, -0.863876, -0.863925, + -0.863973, -0.864021, -0.864069, -0.864118, -0.864166, -0.864214, -0.864262, -0.864311, + -0.864359, -0.864407, -0.864455, -0.864503, -0.864552, -0.864600, -0.864648, -0.864696, + -0.864744, -0.864792, -0.864841, -0.864889, -0.864937, -0.864985, -0.865033, -0.865081, + -0.865129, -0.865177, -0.865225, -0.865273, -0.865321, -0.865369, -0.865418, -0.865466, + -0.865514, -0.865562, -0.865610, -0.865658, -0.865706, -0.865754, -0.865802, -0.865850, + -0.865898, -0.865946, -0.865993, -0.866041, -0.866089, -0.866137, -0.866185, -0.866233, + -0.866281, -0.866329, -0.866377, -0.866425, -0.866472, -0.866520, -0.866568, -0.866616, + -0.866664, -0.866712, -0.866759, -0.866807, -0.866855, -0.866903, -0.866951, -0.866998, + -0.867046, -0.867094, -0.867142, -0.867190, -0.867237, -0.867285, -0.867333, -0.867380, + -0.867428, -0.867476, -0.867523, -0.867571, -0.867619, -0.867667, -0.867714, -0.867762, + -0.867809, -0.867857, -0.867905, -0.867952, -0.868000, -0.868048, -0.868095, -0.868143, + -0.868190, -0.868238, -0.868285, -0.868333, -0.868381, -0.868428, -0.868476, -0.868523, + -0.868571, -0.868618, -0.868666, -0.868713, -0.868761, -0.868808, -0.868856, -0.868903, + -0.868951, -0.868998, -0.869045, -0.869093, -0.869140, -0.869188, -0.869235, -0.869282, + -0.869330, -0.869377, -0.869425, -0.869472, -0.869519, -0.869567, -0.869614, -0.869661, + -0.869709, -0.869756, -0.869803, -0.869851, -0.869898, -0.869945, -0.869992, -0.870040, + -0.870087, -0.870134, -0.870182, -0.870229, -0.870276, -0.870323, -0.870370, -0.870418, + -0.870465, -0.870512, -0.870559, -0.870606, -0.870654, -0.870701, -0.870748, -0.870795, + -0.870842, -0.870889, -0.870936, -0.870983, -0.871031, -0.871078, -0.871125, -0.871172, + -0.871219, -0.871266, -0.871313, -0.871360, -0.871407, -0.871454, -0.871501, -0.871548, + -0.871595, -0.871642, -0.871689, -0.871736, -0.871783, -0.871830, -0.871877, -0.871924, + -0.871971, -0.872018, -0.872065, -0.872112, -0.872159, -0.872205, -0.872252, -0.872299, + -0.872346, -0.872393, -0.872440, -0.872487, -0.872534, -0.872580, -0.872627, -0.872674, + -0.872721, -0.872768, -0.872814, -0.872861, -0.872908, -0.872955, -0.873001, -0.873048, + -0.873095, -0.873142, -0.873188, -0.873235, -0.873282, -0.873329, -0.873375, -0.873422, + -0.873469, -0.873515, -0.873562, -0.873609, -0.873655, -0.873702, -0.873749, -0.873795, + -0.873842, -0.873888, -0.873935, -0.873982, -0.874028, -0.874075, -0.874121, -0.874168, + -0.874215, -0.874261, -0.874308, -0.874354, -0.874401, -0.874447, -0.874494, -0.874540, + -0.874587, -0.874633, -0.874680, -0.874726, -0.874773, -0.874819, -0.874865, -0.874912, + -0.874958, -0.875005, -0.875051, -0.875098, -0.875144, -0.875190, -0.875237, -0.875283, + -0.875329, -0.875376, -0.875422, -0.875468, -0.875515, -0.875561, -0.875607, -0.875654, + -0.875700, -0.875746, -0.875793, -0.875839, -0.875885, -0.875931, -0.875978, -0.876024, + -0.876070, -0.876116, -0.876163, -0.876209, -0.876255, -0.876301, -0.876347, -0.876393, + -0.876440, -0.876486, -0.876532, -0.876578, -0.876624, -0.876670, -0.876716, -0.876763, + -0.876809, -0.876855, -0.876901, -0.876947, -0.876993, -0.877039, -0.877085, -0.877131, + -0.877177, -0.877223, -0.877269, -0.877315, -0.877361, -0.877407, -0.877453, -0.877499, + -0.877545, -0.877591, -0.877637, -0.877683, -0.877729, -0.877775, -0.877821, -0.877867, + -0.877913, -0.877959, -0.878005, -0.878051, -0.878096, -0.878142, -0.878188, -0.878234, + -0.878280, -0.878326, -0.878371, -0.878417, -0.878463, -0.878509, -0.878555, -0.878600, + -0.878646, -0.878692, -0.878738, -0.878784, -0.878829, -0.878875, -0.878921, -0.878967, + -0.879012, -0.879058, -0.879104, -0.879149, -0.879195, -0.879241, -0.879286, -0.879332, + -0.879378, -0.879423, -0.879469, -0.879515, -0.879560, -0.879606, -0.879651, -0.879697, + -0.879743, -0.879788, -0.879834, -0.879879, -0.879925, -0.879970, -0.880016, -0.880061, + -0.880107, -0.880153, -0.880198, -0.880244, -0.880289, -0.880334, -0.880380, -0.880425, + -0.880471, -0.880516, -0.880562, -0.880607, -0.880653, -0.880698, -0.880743, -0.880789, + -0.880834, -0.880880, -0.880925, -0.880970, -0.881016, -0.881061, -0.881106, -0.881152, + -0.881197, -0.881242, -0.881288, -0.881333, -0.881378, -0.881424, -0.881469, -0.881514, + -0.881559, -0.881605, -0.881650, -0.881695, -0.881740, -0.881786, -0.881831, -0.881876, + -0.881921, -0.881966, -0.882012, -0.882057, -0.882102, -0.882147, -0.882192, -0.882237, + -0.882283, -0.882328, -0.882373, -0.882418, -0.882463, -0.882508, -0.882553, -0.882598, + -0.882643, -0.882688, -0.882733, -0.882779, -0.882824, -0.882869, -0.882914, -0.882959, + -0.883004, -0.883049, -0.883094, -0.883139, -0.883184, -0.883228, -0.883273, -0.883318, + -0.883363, -0.883408, -0.883453, -0.883498, -0.883543, -0.883588, -0.883633, -0.883678, + -0.883723, -0.883767, -0.883812, -0.883857, -0.883902, -0.883947, -0.883992, -0.884036, + -0.884081, -0.884126, -0.884171, -0.884216, -0.884260, -0.884305, -0.884350, -0.884395, + -0.884439, -0.884484, -0.884529, -0.884574, -0.884618, -0.884663, -0.884708, -0.884752, + -0.884797, -0.884842, -0.884886, -0.884931, -0.884976, -0.885020, -0.885065, -0.885110, + -0.885154, -0.885199, -0.885243, -0.885288, -0.885333, -0.885377, -0.885422, -0.885466, + -0.885511, -0.885555, -0.885600, -0.885644, -0.885689, -0.885733, -0.885778, -0.885822, + -0.885867, -0.885911, -0.885956, -0.886000, -0.886045, -0.886089, -0.886134, -0.886178, + -0.886223, -0.886267, -0.886311, -0.886356, -0.886400, -0.886445, -0.886489, -0.886533, + -0.886578, -0.886622, -0.886666, -0.886711, -0.886755, -0.886799, -0.886844, -0.886888, + -0.886932, -0.886976, -0.887021, -0.887065, -0.887109, -0.887153, -0.887198, -0.887242, + -0.887286, -0.887330, -0.887375, -0.887419, -0.887463, -0.887507, -0.887551, -0.887595, + -0.887640, -0.887684, -0.887728, -0.887772, -0.887816, -0.887860, -0.887904, -0.887949, + -0.887993, -0.888037, -0.888081, -0.888125, -0.888169, -0.888213, -0.888257, -0.888301, + -0.888345, -0.888389, -0.888433, -0.888477, -0.888521, -0.888565, -0.888609, -0.888653, + -0.888697, -0.888741, -0.888785, -0.888829, -0.888873, -0.888917, -0.888961, -0.889004, + -0.889048, -0.889092, -0.889136, -0.889180, -0.889224, -0.889268, -0.889312, -0.889355, + -0.889399, -0.889443, -0.889487, -0.889531, -0.889574, -0.889618, -0.889662, -0.889706, + -0.889750, -0.889793, -0.889837, -0.889881, -0.889925, -0.889968, -0.890012, -0.890056, + -0.890099, -0.890143, -0.890187, -0.890230, -0.890274, -0.890318, -0.890361, -0.890405, + -0.890449, -0.890492, -0.890536, -0.890580, -0.890623, -0.890667, -0.890710, -0.890754, + -0.890797, -0.890841, -0.890885, -0.890928, -0.890972, -0.891015, -0.891059, -0.891102, + -0.891146, -0.891189, -0.891233, -0.891276, -0.891320, -0.891363, -0.891407, -0.891450, + -0.891493, -0.891537, -0.891580, -0.891624, -0.891667, -0.891711, -0.891754, -0.891797, + -0.891841, -0.891884, -0.891927, -0.891971, -0.892014, -0.892057, -0.892101, -0.892144, + -0.892187, -0.892231, -0.892274, -0.892317, -0.892361, -0.892404, -0.892447, -0.892490, + -0.892534, -0.892577, -0.892620, -0.892663, -0.892706, -0.892750, -0.892793, -0.892836, + -0.892879, -0.892922, -0.892965, -0.893009, -0.893052, -0.893095, -0.893138, -0.893181, + -0.893224, -0.893267, -0.893310, -0.893354, -0.893397, -0.893440, -0.893483, -0.893526, + -0.893569, -0.893612, -0.893655, -0.893698, -0.893741, -0.893784, -0.893827, -0.893870, + -0.893913, -0.893956, -0.893999, -0.894042, -0.894085, -0.894128, -0.894171, -0.894214, + -0.894256, -0.894299, -0.894342, -0.894385, -0.894428, -0.894471, -0.894514, -0.894557, + -0.894599, -0.894642, -0.894685, -0.894728, -0.894771, -0.894814, -0.894856, -0.894899, + -0.894942, -0.894985, -0.895028, -0.895070, -0.895113, -0.895156, -0.895198, -0.895241, + -0.895284, -0.895327, -0.895369, -0.895412, -0.895455, -0.895497, -0.895540, -0.895583, + -0.895625, -0.895668, -0.895711, -0.895753, -0.895796, -0.895838, -0.895881, -0.895924, + -0.895966, -0.896009, -0.896051, -0.896094, -0.896137, -0.896179, -0.896222, -0.896264, + -0.896307, -0.896349, -0.896392, -0.896434, -0.896477, -0.896519, -0.896562, -0.896604, + -0.896646, -0.896689, -0.896731, -0.896774, -0.896816, -0.896859, -0.896901, -0.896943, + -0.896986, -0.897028, -0.897071, -0.897113, -0.897155, -0.897198, -0.897240, -0.897282, + -0.897325, -0.897367, -0.897409, -0.897452, -0.897494, -0.897536, -0.897578, -0.897621, + -0.897663, -0.897705, -0.897747, -0.897790, -0.897832, -0.897874, -0.897916, -0.897958, + -0.898001, -0.898043, -0.898085, -0.898127, -0.898169, -0.898211, -0.898254, -0.898296, + -0.898338, -0.898380, -0.898422, -0.898464, -0.898506, -0.898548, -0.898590, -0.898632, + -0.898674, -0.898717, -0.898759, -0.898801, -0.898843, -0.898885, -0.898927, -0.898969, + -0.899011, -0.899053, -0.899095, -0.899137, -0.899179, -0.899220, -0.899262, -0.899304, + -0.899346, -0.899388, -0.899430, -0.899472, -0.899514, -0.899556, -0.899598, -0.899639, + -0.899681, -0.899723, -0.899765, -0.899807, -0.899849, -0.899890, -0.899932, -0.899974, + -0.900016, -0.900058, -0.900099, -0.900141, -0.900183, -0.900225, -0.900266, -0.900308, + -0.900350, -0.900392, -0.900433, -0.900475, -0.900517, -0.900558, -0.900600, -0.900642, + -0.900683, -0.900725, -0.900767, -0.900808, -0.900850, -0.900892, -0.900933, -0.900975, + -0.901016, -0.901058, -0.901100, -0.901141, -0.901183, -0.901224, -0.901266, -0.901307, + -0.901349, -0.901390, -0.901432, -0.901473, -0.901515, -0.901556, -0.901598, -0.901639, + -0.901681, -0.901722, -0.901764, -0.901805, -0.901847, -0.901888, -0.901929, -0.901971, + -0.902012, -0.902054, -0.902095, -0.902136, -0.902178, -0.902219, -0.902260, -0.902302, + -0.902343, -0.902384, -0.902426, -0.902467, -0.902508, -0.902550, -0.902591, -0.902632, + -0.902673, -0.902715, -0.902756, -0.902797, -0.902838, -0.902879, -0.902921, -0.902962, + -0.903003, -0.903044, -0.903085, -0.903127, -0.903168, -0.903209, -0.903250, -0.903291, + -0.903332, -0.903373, -0.903415, -0.903456, -0.903497, -0.903538, -0.903579, -0.903620, + -0.903661, -0.903702, -0.903743, -0.903784, -0.903825, -0.903866, -0.903907, -0.903948, + -0.903989, -0.904030, -0.904071, -0.904112, -0.904153, -0.904194, -0.904235, -0.904276, + -0.904317, -0.904358, -0.904399, -0.904440, -0.904481, -0.904521, -0.904562, -0.904603, + -0.904644, -0.904685, -0.904726, -0.904767, -0.904807, -0.904848, -0.904889, -0.904930, + -0.904971, -0.905011, -0.905052, -0.905093, -0.905134, -0.905175, -0.905215, -0.905256, + -0.905297, -0.905337, -0.905378, -0.905419, -0.905460, -0.905500, -0.905541, -0.905582, + -0.905622, -0.905663, -0.905704, -0.905744, -0.905785, -0.905825, -0.905866, -0.905907, + -0.905947, -0.905988, -0.906028, -0.906069, -0.906110, -0.906150, -0.906191, -0.906231, + -0.906272, -0.906312, -0.906353, -0.906393, -0.906434, -0.906474, -0.906515, -0.906555, + -0.906596, -0.906636, -0.906677, -0.906717, -0.906757, -0.906798, -0.906838, -0.906879, + -0.906919, -0.906959, -0.907000, -0.907040, -0.907081, -0.907121, -0.907161, -0.907202, + -0.907242, -0.907282, -0.907323, -0.907363, -0.907403, -0.907444, -0.907484, -0.907524, + -0.907564, -0.907605, -0.907645, -0.907685, -0.907725, -0.907766, -0.907806, -0.907846, + -0.907886, -0.907926, -0.907966, -0.908007, -0.908047, -0.908087, -0.908127, -0.908167, + -0.908207, -0.908248, -0.908288, -0.908328, -0.908368, -0.908408, -0.908448, -0.908488, + -0.908528, -0.908568, -0.908608, -0.908648, -0.908688, -0.908728, -0.908768, -0.908808, + -0.908848, -0.908888, -0.908928, -0.908968, -0.909008, -0.909048, -0.909088, -0.909128, + -0.909168, -0.909208, -0.909248, -0.909288, -0.909328, -0.909368, -0.909407, -0.909447, + -0.909487, -0.909527, -0.909567, -0.909607, -0.909646, -0.909686, -0.909726, -0.909766, + -0.909806, -0.909845, -0.909885, -0.909925, -0.909965, -0.910005, -0.910044, -0.910084, + -0.910124, -0.910163, -0.910203, -0.910243, -0.910283, -0.910322, -0.910362, -0.910402, + -0.910441, -0.910481, -0.910521, -0.910560, -0.910600, -0.910639, -0.910679, -0.910719, + -0.910758, -0.910798, -0.910837, -0.910877, -0.910917, -0.910956, -0.910996, -0.911035, + -0.911075, -0.911114, -0.911154, -0.911193, -0.911233, -0.911272, -0.911312, -0.911351, + -0.911391, -0.911430, -0.911470, -0.911509, -0.911548, -0.911588, -0.911627, -0.911667, + -0.911706, -0.911745, -0.911785, -0.911824, -0.911864, -0.911903, -0.911942, -0.911982, + -0.912021, -0.912060, -0.912099, -0.912139, -0.912178, -0.912217, -0.912257, -0.912296, + -0.912335, -0.912374, -0.912414, -0.912453, -0.912492, -0.912531, -0.912571, -0.912610, + -0.912649, -0.912688, -0.912727, -0.912766, -0.912806, -0.912845, -0.912884, -0.912923, + -0.912962, -0.913001, -0.913040, -0.913080, -0.913119, -0.913158, -0.913197, -0.913236, + -0.913275, -0.913314, -0.913353, -0.913392, -0.913431, -0.913470, -0.913509, -0.913548, + -0.913587, -0.913626, -0.913665, -0.913704, -0.913743, -0.913782, -0.913821, -0.913860, + -0.913899, -0.913938, -0.913976, -0.914015, -0.914054, -0.914093, -0.914132, -0.914171, + -0.914210, -0.914249, -0.914287, -0.914326, -0.914365, -0.914404, -0.914443, -0.914482, + -0.914520, -0.914559, -0.914598, -0.914637, -0.914675, -0.914714, -0.914753, -0.914792, + -0.914830, -0.914869, -0.914908, -0.914946, -0.914985, -0.915024, -0.915062, -0.915101, + -0.915140, -0.915178, -0.915217, -0.915256, -0.915294, -0.915333, -0.915372, -0.915410, + -0.915449, -0.915487, -0.915526, -0.915564, -0.915603, -0.915642, -0.915680, -0.915719, + -0.915757, -0.915796, -0.915834, -0.915873, -0.915911, -0.915950, -0.915988, -0.916027, + -0.916065, -0.916103, -0.916142, -0.916180, -0.916219, -0.916257, -0.916296, -0.916334, + -0.916372, -0.916411, -0.916449, -0.916487, -0.916526, -0.916564, -0.916602, -0.916641, + -0.916679, -0.916717, -0.916756, -0.916794, -0.916832, -0.916871, -0.916909, -0.916947, + -0.916985, -0.917024, -0.917062, -0.917100, -0.917138, -0.917176, -0.917215, -0.917253, + -0.917291, -0.917329, -0.917367, -0.917405, -0.917444, -0.917482, -0.917520, -0.917558, + -0.917596, -0.917634, -0.917672, -0.917710, -0.917749, -0.917787, -0.917825, -0.917863, + -0.917901, -0.917939, -0.917977, -0.918015, -0.918053, -0.918091, -0.918129, -0.918167, + -0.918205, -0.918243, -0.918281, -0.918319, -0.918357, -0.918395, -0.918433, -0.918471, + -0.918508, -0.918546, -0.918584, -0.918622, -0.918660, -0.918698, -0.918736, -0.918774, + -0.918811, -0.918849, -0.918887, -0.918925, -0.918963, -0.919001, -0.919038, -0.919076, + -0.919114, -0.919152, -0.919189, -0.919227, -0.919265, -0.919303, -0.919340, -0.919378, + -0.919416, -0.919453, -0.919491, -0.919529, -0.919567, -0.919604, -0.919642, -0.919680, + -0.919717, -0.919755, -0.919792, -0.919830, -0.919868, -0.919905, -0.919943, -0.919980, + -0.920018, -0.920056, -0.920093, -0.920131, -0.920168, -0.920206, -0.920243, -0.920281, + -0.920318, -0.920356, -0.920393, -0.920431, -0.920468, -0.920506, -0.920543, -0.920581, + -0.920618, -0.920655, -0.920693, -0.920730, -0.920768, -0.920805, -0.920842, -0.920880, + -0.920917, -0.920955, -0.920992, -0.921029, -0.921067, -0.921104, -0.921141, -0.921179, + -0.921216, -0.921253, -0.921291, -0.921328, -0.921365, -0.921402, -0.921440, -0.921477, + -0.921514, -0.921551, -0.921588, -0.921626, -0.921663, -0.921700, -0.921737, -0.921774, + -0.921812, -0.921849, -0.921886, -0.921923, -0.921960, -0.921997, -0.922034, -0.922072, + -0.922109, -0.922146, -0.922183, -0.922220, -0.922257, -0.922294, -0.922331, -0.922368, + -0.922405, -0.922442, -0.922479, -0.922516, -0.922553, -0.922590, -0.922627, -0.922664, + -0.922701, -0.922738, -0.922775, -0.922812, -0.922849, -0.922886, -0.922923, -0.922960, + -0.922997, -0.923033, -0.923070, -0.923107, -0.923144, -0.923181, -0.923218, -0.923255, + -0.923291, -0.923328, -0.923365, -0.923402, -0.923439, -0.923475, -0.923512, -0.923549, + -0.923586, -0.923622, -0.923659, -0.923696, -0.923733, -0.923769, -0.923806, -0.923843, + -0.923880, -0.923916, -0.923953, -0.923990, -0.924026, -0.924063, -0.924100, -0.924136, + -0.924173, -0.924209, -0.924246, -0.924283, -0.924319, -0.924356, -0.924392, -0.924429, + -0.924465, -0.924502, -0.924539, -0.924575, -0.924612, -0.924648, -0.924685, -0.924721, + -0.924758, -0.924794, -0.924831, -0.924867, -0.924904, -0.924940, -0.924976, -0.925013, + -0.925049, -0.925086, -0.925122, -0.925158, -0.925195, -0.925231, -0.925268, -0.925304, + -0.925340, -0.925377, -0.925413, -0.925449, -0.925486, -0.925522, -0.925558, -0.925595, + -0.925631, -0.925667, -0.925703, -0.925740, -0.925776, -0.925812, -0.925848, -0.925885, + -0.925921, -0.925957, -0.925993, -0.926029, -0.926066, -0.926102, -0.926138, -0.926174, + -0.926210, -0.926246, -0.926283, -0.926319, -0.926355, -0.926391, -0.926427, -0.926463, + -0.926499, -0.926535, -0.926571, -0.926607, -0.926643, -0.926679, -0.926715, -0.926751, + -0.926787, -0.926823, -0.926859, -0.926895, -0.926931, -0.926967, -0.927003, -0.927039, + -0.927075, -0.927111, -0.927147, -0.927183, -0.927219, -0.927255, -0.927291, -0.927327, + -0.927363, -0.927398, -0.927434, -0.927470, -0.927506, -0.927542, -0.927578, -0.927613, + -0.927649, -0.927685, -0.927721, -0.927757, -0.927792, -0.927828, -0.927864, -0.927900, + -0.927935, -0.927971, -0.928007, -0.928043, -0.928078, -0.928114, -0.928150, -0.928185, + -0.928221, -0.928257, -0.928292, -0.928328, -0.928364, -0.928399, -0.928435, -0.928470, + -0.928506, -0.928542, -0.928577, -0.928613, -0.928648, -0.928684, -0.928720, -0.928755, + -0.928791, -0.928826, -0.928862, -0.928897, -0.928933, -0.928968, -0.929004, -0.929039, + -0.929075, -0.929110, -0.929146, -0.929181, -0.929216, -0.929252, -0.929287, -0.929323, + -0.929358, -0.929393, -0.929429, -0.929464, -0.929500, -0.929535, -0.929570, -0.929606, + -0.929641, -0.929676, -0.929712, -0.929747, -0.929782, -0.929817, -0.929853, -0.929888, + -0.929923, -0.929958, -0.929994, -0.930029, -0.930064, -0.930099, -0.930135, -0.930170, + -0.930205, -0.930240, -0.930275, -0.930311, -0.930346, -0.930381, -0.930416, -0.930451, + -0.930486, -0.930521, -0.930556, -0.930592, -0.930627, -0.930662, -0.930697, -0.930732, + -0.930767, -0.930802, -0.930837, -0.930872, -0.930907, -0.930942, -0.930977, -0.931012, + -0.931047, -0.931082, -0.931117, -0.931152, -0.931187, -0.931222, -0.931257, -0.931292, + -0.931327, -0.931362, -0.931397, -0.931431, -0.931466, -0.931501, -0.931536, -0.931571, + -0.931606, -0.931641, -0.931675, -0.931710, -0.931745, -0.931780, -0.931815, -0.931849, + -0.931884, -0.931919, -0.931954, -0.931989, -0.932023, -0.932058, -0.932093, -0.932128, + -0.932162, -0.932197, -0.932232, -0.932266, -0.932301, -0.932336, -0.932370, -0.932405, + -0.932440, -0.932474, -0.932509, -0.932544, -0.932578, -0.932613, -0.932647, -0.932682, + -0.932716, -0.932751, -0.932786, -0.932820, -0.932855, -0.932889, -0.932924, -0.932958, + -0.932993, -0.933027, -0.933062, -0.933096, -0.933131, -0.933165, -0.933200, -0.933234, + -0.933269, -0.933303, -0.933337, -0.933372, -0.933406, -0.933441, -0.933475, -0.933509, + -0.933544, -0.933578, -0.933612, -0.933647, -0.933681, -0.933716, -0.933750, -0.933784, + -0.933818, -0.933853, -0.933887, -0.933921, -0.933956, -0.933990, -0.934024, -0.934058, + -0.934093, -0.934127, -0.934161, -0.934195, -0.934229, -0.934264, -0.934298, -0.934332, + -0.934366, -0.934400, -0.934434, -0.934469, -0.934503, -0.934537, -0.934571, -0.934605, + -0.934639, -0.934673, -0.934707, -0.934741, -0.934775, -0.934810, -0.934844, -0.934878, + -0.934912, -0.934946, -0.934980, -0.935014, -0.935048, -0.935082, -0.935116, -0.935150, + -0.935184, -0.935217, -0.935251, -0.935285, -0.935319, -0.935353, -0.935387, -0.935421, + -0.935455, -0.935489, -0.935523, -0.935556, -0.935590, -0.935624, -0.935658, -0.935692, + -0.935726, -0.935759, -0.935793, -0.935827, -0.935861, -0.935895, -0.935928, -0.935962, + -0.935996, -0.936030, -0.936063, -0.936097, -0.936131, -0.936165, -0.936198, -0.936232, + -0.936266, -0.936299, -0.936333, -0.936367, -0.936400, -0.936434, -0.936468, -0.936501, + -0.936535, -0.936568, -0.936602, -0.936636, -0.936669, -0.936703, -0.936736, -0.936770, + -0.936803, -0.936837, -0.936871, -0.936904, -0.936938, -0.936971, -0.937005, -0.937038, + -0.937072, -0.937105, -0.937138, -0.937172, -0.937205, -0.937239, -0.937272, -0.937306, + -0.937339, -0.937372, -0.937406, -0.937439, -0.937473, -0.937506, -0.937539, -0.937573, + -0.937606, -0.937639, -0.937673, -0.937706, -0.937739, -0.937773, -0.937806, -0.937839, + -0.937872, -0.937906, -0.937939, -0.937972, -0.938005, -0.938039, -0.938072, -0.938105, + -0.938138, -0.938171, -0.938205, -0.938238, -0.938271, -0.938304, -0.938337, -0.938370, + -0.938404, -0.938437, -0.938470, -0.938503, -0.938536, -0.938569, -0.938602, -0.938635, + -0.938668, -0.938701, -0.938734, -0.938767, -0.938800, -0.938833, -0.938866, -0.938900, + -0.938932, -0.938965, -0.938998, -0.939031, -0.939064, -0.939097, -0.939130, -0.939163, + -0.939196, -0.939229, -0.939262, -0.939295, -0.939328, -0.939361, -0.939394, -0.939426, + -0.939459, -0.939492, -0.939525, -0.939558, -0.939591, -0.939623, -0.939656, -0.939689, + -0.939722, -0.939755, -0.939787, -0.939820, -0.939853, -0.939886, -0.939918, -0.939951, + -0.939984, -0.940016, -0.940049, -0.940082, -0.940115, -0.940147, -0.940180, -0.940213, + -0.940245, -0.940278, -0.940310, -0.940343, -0.940376, -0.940408, -0.940441, -0.940473, + -0.940506, -0.940539, -0.940571, -0.940604, -0.940636, -0.940669, -0.940701, -0.940734, + -0.940766, -0.940799, -0.940831, -0.940864, -0.940896, -0.940929, -0.940961, -0.940994, + -0.941026, -0.941059, -0.941091, -0.941123, -0.941156, -0.941188, -0.941221, -0.941253, + -0.941285, -0.941318, -0.941350, -0.941382, -0.941415, -0.941447, -0.941479, -0.941512, + -0.941544, -0.941576, -0.941609, -0.941641, -0.941673, -0.941705, -0.941738, -0.941770, + -0.941802, -0.941834, -0.941867, -0.941899, -0.941931, -0.941963, -0.941995, -0.942028, + -0.942060, -0.942092, -0.942124, -0.942156, -0.942188, -0.942220, -0.942253, -0.942285, + -0.942317, -0.942349, -0.942381, -0.942413, -0.942445, -0.942477, -0.942509, -0.942541, + -0.942573, -0.942605, -0.942637, -0.942669, -0.942701, -0.942733, -0.942765, -0.942797, + -0.942829, -0.942861, -0.942893, -0.942925, -0.942957, -0.942989, -0.943021, -0.943053, + -0.943084, -0.943116, -0.943148, -0.943180, -0.943212, -0.943244, -0.943276, -0.943307, + -0.943339, -0.943371, -0.943403, -0.943435, -0.943466, -0.943498, -0.943530, -0.943562, + -0.943593, -0.943625, -0.943657, -0.943689, -0.943720, -0.943752, -0.943784, -0.943815, + -0.943847, -0.943879, -0.943910, -0.943942, -0.943974, -0.944005, -0.944037, -0.944069, + -0.944100, -0.944132, -0.944163, -0.944195, -0.944227, -0.944258, -0.944290, -0.944321, + -0.944353, -0.944384, -0.944416, -0.944447, -0.944479, -0.944510, -0.944542, -0.944573, + -0.944605, -0.944636, -0.944668, -0.944699, -0.944731, -0.944762, -0.944793, -0.944825, + -0.944856, -0.944888, -0.944919, -0.944950, -0.944982, -0.945013, -0.945045, -0.945076, + -0.945107, -0.945139, -0.945170, -0.945201, -0.945232, -0.945264, -0.945295, -0.945326, + -0.945358, -0.945389, -0.945420, -0.945451, -0.945482, -0.945514, -0.945545, -0.945576, + -0.945607, -0.945639, -0.945670, -0.945701, -0.945732, -0.945763, -0.945794, -0.945825, + -0.945857, -0.945888, -0.945919, -0.945950, -0.945981, -0.946012, -0.946043, -0.946074, + -0.946105, -0.946136, -0.946167, -0.946198, -0.946229, -0.946260, -0.946291, -0.946322, + -0.946353, -0.946384, -0.946415, -0.946446, -0.946477, -0.946508, -0.946539, -0.946570, + -0.946601, -0.946632, -0.946663, -0.946694, -0.946724, -0.946755, -0.946786, -0.946817, + -0.946848, -0.946879, -0.946910, -0.946940, -0.946971, -0.947002, -0.947033, -0.947064, + -0.947094, -0.947125, -0.947156, -0.947187, -0.947217, -0.947248, -0.947279, -0.947310, + -0.947340, -0.947371, -0.947402, -0.947432, -0.947463, -0.947494, -0.947524, -0.947555, + -0.947586, -0.947616, -0.947647, -0.947677, -0.947708, -0.947739, -0.947769, -0.947800, + -0.947830, -0.947861, -0.947891, -0.947922, -0.947953, -0.947983, -0.948014, -0.948044, + -0.948075, -0.948105, -0.948136, -0.948166, -0.948196, -0.948227, -0.948257, -0.948288, + -0.948318, -0.948349, -0.948379, -0.948409, -0.948440, -0.948470, -0.948501, -0.948531, + -0.948561, -0.948592, -0.948622, -0.948652, -0.948683, -0.948713, -0.948743, -0.948774, + -0.948804, -0.948834, -0.948864, -0.948895, -0.948925, -0.948955, -0.948985, -0.949016, + -0.949046, -0.949076, -0.949106, -0.949136, -0.949167, -0.949197, -0.949227, -0.949257, + -0.949287, -0.949317, -0.949348, -0.949378, -0.949408, -0.949438, -0.949468, -0.949498, + -0.949528, -0.949558, -0.949588, -0.949618, -0.949648, -0.949678, -0.949708, -0.949739, + -0.949768, -0.949798, -0.949829, -0.949858, -0.949888, -0.949918, -0.949948, -0.949978, + -0.950008, -0.950038, -0.950068, -0.950098, -0.950128, -0.950158, -0.950188, -0.950218, + -0.950247, -0.950277, -0.950307, -0.950337, -0.950367, -0.950397, -0.950426, -0.950456, + -0.950486, -0.950516, -0.950546, -0.950575, -0.950605, -0.950635, -0.950665, -0.950694, + -0.950724, -0.950754, -0.950784, -0.950813, -0.950843, -0.950873, -0.950902, -0.950932, + -0.950962, -0.950991, -0.951021, -0.951051, -0.951080, -0.951110, -0.951139, -0.951169, + -0.951199, -0.951228, -0.951258, -0.951287, -0.951317, -0.951346, -0.951376, -0.951406, + -0.951435, -0.951465, -0.951494, -0.951524, -0.951553, -0.951582, -0.951612, -0.951641, + -0.951671, -0.951700, -0.951730, -0.951759, -0.951789, -0.951818, -0.951847, -0.951877, + -0.951906, -0.951936, -0.951965, -0.951994, -0.952024, -0.952053, -0.952082, -0.952112, + -0.952141, -0.952170, -0.952199, -0.952229, -0.952258, -0.952287, -0.952317, -0.952346, + -0.952375, -0.952404, -0.952433, -0.952463, -0.952492, -0.952521, -0.952550, -0.952579, + -0.952609, -0.952638, -0.952667, -0.952696, -0.952725, -0.952754, -0.952783, -0.952813, + -0.952842, -0.952871, -0.952900, -0.952929, -0.952958, -0.952987, -0.953016, -0.953045, + -0.953074, -0.953103, -0.953132, -0.953161, -0.953190, -0.953219, -0.953248, -0.953277, + -0.953306, -0.953335, -0.953364, -0.953393, -0.953422, -0.953451, -0.953480, -0.953508, + -0.953537, -0.953566, -0.953595, -0.953624, -0.953653, -0.953682, -0.953711, -0.953739, + -0.953768, -0.953797, -0.953826, -0.953855, -0.953883, -0.953912, -0.953941, -0.953970, + -0.953998, -0.954027, -0.954056, -0.954085, -0.954113, -0.954142, -0.954171, -0.954199, + -0.954228, -0.954257, -0.954285, -0.954314, -0.954343, -0.954371, -0.954400, -0.954429, + -0.954457, -0.954486, -0.954514, -0.954543, -0.954572, -0.954600, -0.954629, -0.954657, + -0.954686, -0.954714, -0.954743, -0.954771, -0.954800, -0.954828, -0.954857, -0.954885, + -0.954914, -0.954942, -0.954971, -0.954999, -0.955028, -0.955056, -0.955084, -0.955113, + -0.955141, -0.955170, -0.955198, -0.955226, -0.955255, -0.955283, -0.955311, -0.955340, + -0.955368, -0.955396, -0.955425, -0.955453, -0.955481, -0.955510, -0.955538, -0.955566, + -0.955594, -0.955623, -0.955651, -0.955679, -0.955707, -0.955736, -0.955764, -0.955792, + -0.955820, -0.955848, -0.955876, -0.955905, -0.955933, -0.955961, -0.955989, -0.956017, + -0.956045, -0.956073, -0.956101, -0.956130, -0.956158, -0.956186, -0.956214, -0.956242, + -0.956270, -0.956298, -0.956326, -0.956354, -0.956382, -0.956410, -0.956438, -0.956466, + -0.956494, -0.956522, -0.956550, -0.956578, -0.956606, -0.956634, -0.956662, -0.956689, + -0.956717, -0.956745, -0.956773, -0.956801, -0.956829, -0.956857, -0.956885, -0.956913, + -0.956940, -0.956968, -0.956996, -0.957024, -0.957052, -0.957079, -0.957107, -0.957135, + -0.957163, -0.957190, -0.957218, -0.957246, -0.957274, -0.957301, -0.957329, -0.957357, + -0.957385, -0.957412, -0.957440, -0.957468, -0.957495, -0.957523, -0.957550, -0.957578, + -0.957606, -0.957633, -0.957661, -0.957689, -0.957716, -0.957744, -0.957771, -0.957799, + -0.957826, -0.957854, -0.957882, -0.957909, -0.957937, -0.957964, -0.957992, -0.958019, + -0.958046, -0.958074, -0.958101, -0.958129, -0.958156, -0.958184, -0.958211, -0.958239, + -0.958266, -0.958293, -0.958321, -0.958348, -0.958376, -0.958403, -0.958430, -0.958458, + -0.958485, -0.958512, -0.958540, -0.958567, -0.958594, -0.958622, -0.958649, -0.958676, + -0.958703, -0.958731, -0.958758, -0.958785, -0.958812, -0.958840, -0.958867, -0.958894, + -0.958921, -0.958949, -0.958976, -0.959003, -0.959030, -0.959057, -0.959084, -0.959112, + -0.959139, -0.959166, -0.959193, -0.959220, -0.959247, -0.959274, -0.959301, -0.959328, + -0.959355, -0.959382, -0.959409, -0.959436, -0.959463, -0.959491, -0.959518, -0.959545, + -0.959572, -0.959598, -0.959625, -0.959652, -0.959679, -0.959706, -0.959733, -0.959760, + -0.959787, -0.959814, -0.959841, -0.959868, -0.959895, -0.959922, -0.959948, -0.959975, + -0.960002, -0.960029, -0.960056, -0.960083, -0.960109, -0.960136, -0.960163, -0.960190, + -0.960217, -0.960243, -0.960270, -0.960297, -0.960324, -0.960350, -0.960377, -0.960404, + -0.960431, -0.960457, -0.960484, -0.960511, -0.960537, -0.960564, -0.960591, -0.960617, + -0.960644, -0.960670, -0.960697, -0.960724, -0.960750, -0.960777, -0.960804, -0.960830, + -0.960857, -0.960883, -0.960910, -0.960936, -0.960963, -0.960989, -0.961016, -0.961042, + -0.961069, -0.961095, -0.961122, -0.961148, -0.961175, -0.961201, -0.961228, -0.961254, + -0.961280, -0.961307, -0.961333, -0.961360, -0.961386, -0.961412, -0.961439, -0.961465, + -0.961492, -0.961518, -0.961544, -0.961571, -0.961597, -0.961623, -0.961649, -0.961676, + -0.961702, -0.961728, -0.961755, -0.961781, -0.961807, -0.961833, -0.961860, -0.961886, + -0.961912, -0.961938, -0.961964, -0.961991, -0.962017, -0.962043, -0.962069, -0.962095, + -0.962121, -0.962148, -0.962174, -0.962200, -0.962226, -0.962252, -0.962278, -0.962304, + -0.962330, -0.962356, -0.962382, -0.962408, -0.962434, -0.962460, -0.962486, -0.962512, + -0.962538, -0.962564, -0.962590, -0.962616, -0.962642, -0.962668, -0.962694, -0.962720, + -0.962746, -0.962772, -0.962798, -0.962824, -0.962850, -0.962876, -0.962902, -0.962927, + -0.962953, -0.962979, -0.963005, -0.963031, -0.963057, -0.963082, -0.963108, -0.963134, + -0.963160, -0.963186, -0.963211, -0.963237, -0.963263, -0.963289, -0.963314, -0.963340, + -0.963366, -0.963391, -0.963417, -0.963443, -0.963469, -0.963494, -0.963520, -0.963546, + -0.963571, -0.963597, -0.963623, -0.963648, -0.963674, -0.963699, -0.963725, -0.963750, + -0.963776, -0.963802, -0.963827, -0.963853, -0.963878, -0.963904, -0.963929, -0.963955, + -0.963980, -0.964006, -0.964031, -0.964057, -0.964082, -0.964108, -0.964133, -0.964159, + -0.964184, -0.964209, -0.964235, -0.964260, -0.964286, -0.964311, -0.964336, -0.964362, + -0.964387, -0.964413, -0.964438, -0.964463, -0.964489, -0.964514, -0.964539, -0.964565, + -0.964590, -0.964615, -0.964640, -0.964666, -0.964691, -0.964716, -0.964741, -0.964767, + -0.964792, -0.964817, -0.964842, -0.964867, -0.964893, -0.964918, -0.964943, -0.964968, + -0.964993, -0.965018, -0.965044, -0.965069, -0.965094, -0.965119, -0.965144, -0.965169, + -0.965194, -0.965219, -0.965244, -0.965269, -0.965294, -0.965319, -0.965344, -0.965369, + -0.965394, -0.965419, -0.965444, -0.965469, -0.965494, -0.965519, -0.965544, -0.965569, + -0.965594, -0.965619, -0.965644, -0.965669, -0.965694, -0.965719, -0.965744, -0.965769, + -0.965793, -0.965818, -0.965843, -0.965868, -0.965893, -0.965918, -0.965942, -0.965967, + -0.965992, -0.966017, -0.966042, -0.966066, -0.966091, -0.966116, -0.966141, -0.966165, + -0.966190, -0.966215, -0.966239, -0.966264, -0.966289, -0.966313, -0.966338, -0.966363, + -0.966387, -0.966412, -0.966437, -0.966461, -0.966486, -0.966511, -0.966535, -0.966560, + -0.966584, -0.966609, -0.966633, -0.966658, -0.966683, -0.966707, -0.966732, -0.966756, + -0.966781, -0.966805, -0.966830, -0.966854, -0.966879, -0.966903, -0.966928, -0.966952, + -0.966976, -0.967001, -0.967025, -0.967050, -0.967074, -0.967099, -0.967123, -0.967147, + -0.967172, -0.967196, -0.967220, -0.967245, -0.967269, -0.967293, -0.967318, -0.967342, + -0.967366, -0.967391, -0.967415, -0.967439, -0.967463, -0.967488, -0.967512, -0.967536, + -0.967560, -0.967585, -0.967609, -0.967633, -0.967657, -0.967681, -0.967706, -0.967730, + -0.967754, -0.967778, -0.967802, -0.967826, -0.967850, -0.967874, -0.967899, -0.967923, + -0.967947, -0.967971, -0.967995, -0.968019, -0.968043, -0.968067, -0.968091, -0.968115, + -0.968139, -0.968163, -0.968187, -0.968211, -0.968235, -0.968259, -0.968283, -0.968307, + -0.968331, -0.968355, -0.968379, -0.968403, -0.968427, -0.968450, -0.968474, -0.968498, + -0.968522, -0.968546, -0.968570, -0.968594, -0.968617, -0.968641, -0.968665, -0.968689, + -0.968713, -0.968737, -0.968760, -0.968784, -0.968808, -0.968832, -0.968855, -0.968879, + -0.968903, -0.968927, -0.968950, -0.968974, -0.968998, -0.969021, -0.969045, -0.969069, + -0.969092, -0.969116, -0.969140, -0.969163, -0.969187, -0.969210, -0.969234, -0.969258, + -0.969281, -0.969305, -0.969328, -0.969352, -0.969375, -0.969399, -0.969423, -0.969446, + -0.969470, -0.969493, -0.969517, -0.969540, -0.969564, -0.969587, -0.969611, -0.969634, + -0.969657, -0.969681, -0.969704, -0.969728, -0.969751, -0.969774, -0.969798, -0.969821, + -0.969845, -0.969868, -0.969891, -0.969915, -0.969938, -0.969961, -0.969985, -0.970008, + -0.970031, -0.970055, -0.970078, -0.970101, -0.970124, -0.970148, -0.970171, -0.970194, + -0.970217, -0.970241, -0.970264, -0.970287, -0.970310, -0.970333, -0.970357, -0.970380, + -0.970403, -0.970426, -0.970449, -0.970472, -0.970495, -0.970518, -0.970542, -0.970565, + -0.970588, -0.970611, -0.970634, -0.970657, -0.970680, -0.970703, -0.970726, -0.970749, + -0.970772, -0.970795, -0.970818, -0.970841, -0.970864, -0.970887, -0.970910, -0.970933, + -0.970956, -0.970979, -0.971002, -0.971025, -0.971048, -0.971071, -0.971093, -0.971116, + -0.971139, -0.971162, -0.971185, -0.971208, -0.971231, -0.971253, -0.971276, -0.971299, + -0.971322, -0.971345, -0.971367, -0.971390, -0.971413, -0.971436, -0.971458, -0.971481, + -0.971504, -0.971527, -0.971549, -0.971572, -0.971595, -0.971617, -0.971640, -0.971663, + -0.971685, -0.971708, -0.971731, -0.971753, -0.971776, -0.971799, -0.971821, -0.971844, + -0.971866, -0.971889, -0.971911, -0.971934, -0.971957, -0.971979, -0.972002, -0.972024, + -0.972047, -0.972069, -0.972092, -0.972114, -0.972137, -0.972159, -0.972182, -0.972204, + -0.972227, -0.972249, -0.972271, -0.972294, -0.972316, -0.972339, -0.972361, -0.972383, + -0.972406, -0.972428, -0.972450, -0.972473, -0.972495, -0.972517, -0.972540, -0.972562, + -0.972584, -0.972607, -0.972629, -0.972651, -0.972673, -0.972696, -0.972718, -0.972740, + -0.972762, -0.972785, -0.972807, -0.972829, -0.972851, -0.972873, -0.972896, -0.972918, + -0.972940, -0.972962, -0.972984, -0.973006, -0.973028, -0.973051, -0.973073, -0.973095, + -0.973117, -0.973139, -0.973161, -0.973183, -0.973205, -0.973227, -0.973249, -0.973271, + -0.973293, -0.973315, -0.973337, -0.973359, -0.973381, -0.973403, -0.973425, -0.973447, + -0.973469, -0.973491, -0.973513, -0.973535, -0.973557, -0.973579, -0.973601, -0.973622, + -0.973644, -0.973666, -0.973688, -0.973710, -0.973732, -0.973753, -0.973775, -0.973797, + -0.973819, -0.973841, -0.973862, -0.973884, -0.973906, -0.973928, -0.973949, -0.973971, + -0.973993, -0.974015, -0.974036, -0.974058, -0.974080, -0.974101, -0.974123, -0.974145, + -0.974166, -0.974188, -0.974210, -0.974231, -0.974253, -0.974275, -0.974296, -0.974318, + -0.974339, -0.974361, -0.974383, -0.974404, -0.974426, -0.974447, -0.974469, -0.974490, + -0.974512, -0.974533, -0.974555, -0.974576, -0.974598, -0.974619, -0.974641, -0.974662, + -0.974684, -0.974705, -0.974726, -0.974748, -0.974769, -0.974791, -0.974812, -0.974833, + -0.974855, -0.974876, -0.974897, -0.974919, -0.974940, -0.974961, -0.974983, -0.975004, + -0.975025, -0.975047, -0.975068, -0.975089, -0.975110, -0.975132, -0.975153, -0.975174, + -0.975195, -0.975217, -0.975238, -0.975259, -0.975280, -0.975301, -0.975323, -0.975344, + -0.975365, -0.975386, -0.975407, -0.975428, -0.975449, -0.975471, -0.975492, -0.975513, + -0.975534, -0.975555, -0.975576, -0.975597, -0.975618, -0.975639, -0.975660, -0.975681, + -0.975702, -0.975723, -0.975744, -0.975765, -0.975786, -0.975807, -0.975828, -0.975849, + -0.975870, -0.975891, -0.975912, -0.975933, -0.975954, -0.975974, -0.975995, -0.976016, + -0.976037, -0.976058, -0.976079, -0.976100, -0.976120, -0.976141, -0.976162, -0.976183, + -0.976204, -0.976224, -0.976245, -0.976266, -0.976287, -0.976308, -0.976328, -0.976349, + -0.976370, -0.976390, -0.976411, -0.976432, -0.976453, -0.976473, -0.976494, -0.976515, + -0.976535, -0.976556, -0.976576, -0.976597, -0.976618, -0.976638, -0.976659, -0.976680, + -0.976700, -0.976721, -0.976741, -0.976762, -0.976782, -0.976803, -0.976823, -0.976844, + -0.976864, -0.976885, -0.976905, -0.976926, -0.976946, -0.976967, -0.976987, -0.977008, + -0.977028, -0.977049, -0.977069, -0.977089, -0.977110, -0.977130, -0.977151, -0.977171, + -0.977191, -0.977212, -0.977232, -0.977252, -0.977273, -0.977293, -0.977313, -0.977334, + -0.977354, -0.977374, -0.977394, -0.977415, -0.977435, -0.977455, -0.977475, -0.977496, + -0.977516, -0.977536, -0.977556, -0.977577, -0.977597, -0.977617, -0.977637, -0.977657, + -0.977677, -0.977697, -0.977718, -0.977738, -0.977758, -0.977778, -0.977798, -0.977818, + -0.977838, -0.977858, -0.977878, -0.977898, -0.977918, -0.977938, -0.977959, -0.977979, + -0.977998, -0.978019, -0.978038, -0.978058, -0.978078, -0.978098, -0.978118, -0.978138, + -0.978158, -0.978178, -0.978198, -0.978218, -0.978238, -0.978258, -0.978278, -0.978298, + -0.978317, -0.978337, -0.978357, -0.978377, -0.978397, -0.978417, -0.978436, -0.978456, + -0.978476, -0.978496, -0.978516, -0.978535, -0.978555, -0.978575, -0.978594, -0.978614, + -0.978634, -0.978654, -0.978673, -0.978693, -0.978713, -0.978732, -0.978752, -0.978772, + -0.978791, -0.978811, -0.978831, -0.978850, -0.978870, -0.978889, -0.978909, -0.978929, + -0.978948, -0.978968, -0.978987, -0.979007, -0.979026, -0.979046, -0.979065, -0.979085, + -0.979104, -0.979124, -0.979143, -0.979163, -0.979182, -0.979202, -0.979221, -0.979241, + -0.979260, -0.979280, -0.979299, -0.979318, -0.979338, -0.979357, -0.979376, -0.979396, + -0.979415, -0.979435, -0.979454, -0.979473, -0.979493, -0.979512, -0.979531, -0.979550, + -0.979570, -0.979589, -0.979608, -0.979628, -0.979647, -0.979666, -0.979685, -0.979704, + -0.979724, -0.979743, -0.979762, -0.979781, -0.979800, -0.979820, -0.979839, -0.979858, + -0.979877, -0.979896, -0.979915, -0.979934, -0.979954, -0.979973, -0.979992, -0.980011, + -0.980030, -0.980049, -0.980068, -0.980087, -0.980106, -0.980125, -0.980144, -0.980163, + -0.980182, -0.980201, -0.980220, -0.980239, -0.980258, -0.980277, -0.980296, -0.980315, + -0.980334, -0.980353, -0.980372, -0.980390, -0.980409, -0.980428, -0.980447, -0.980466, + -0.980485, -0.980504, -0.980523, -0.980541, -0.980560, -0.980579, -0.980598, -0.980617, + -0.980635, -0.980654, -0.980673, -0.980692, -0.980710, -0.980729, -0.980748, -0.980767, + -0.980785, -0.980804, -0.980823, -0.980841, -0.980860, -0.980879, -0.980897, -0.980916, + -0.980935, -0.980953, -0.980972, -0.980990, -0.981009, -0.981028, -0.981046, -0.981065, + -0.981083, -0.981102, -0.981120, -0.981139, -0.981158, -0.981176, -0.981195, -0.981213, + -0.981232, -0.981250, -0.981269, -0.981287, -0.981305, -0.981324, -0.981342, -0.981361, + -0.981379, -0.981398, -0.981416, -0.981434, -0.981453, -0.981471, -0.981490, -0.981508, + -0.981526, -0.981545, -0.981563, -0.981581, -0.981600, -0.981618, -0.981636, -0.981654, + -0.981673, -0.981691, -0.981709, -0.981727, -0.981746, -0.981764, -0.981782, -0.981800, + -0.981819, -0.981837, -0.981855, -0.981873, -0.981891, -0.981909, -0.981928, -0.981946, + -0.981964, -0.981982, -0.982000, -0.982018, -0.982036, -0.982054, -0.982072, -0.982091, + -0.982109, -0.982127, -0.982145, -0.982163, -0.982181, -0.982199, -0.982217, -0.982235, + -0.982253, -0.982271, -0.982289, -0.982307, -0.982325, -0.982343, -0.982360, -0.982378, + -0.982396, -0.982414, -0.982432, -0.982450, -0.982468, -0.982486, -0.982504, -0.982521, + -0.982539, -0.982557, -0.982575, -0.982593, -0.982611, -0.982628, -0.982646, -0.982664, + -0.982682, -0.982699, -0.982717, -0.982735, -0.982753, -0.982770, -0.982788, -0.982806, + -0.982824, -0.982841, -0.982859, -0.982877, -0.982894, -0.982912, -0.982930, -0.982947, + -0.982965, -0.982982, -0.983000, -0.983018, -0.983035, -0.983053, -0.983070, -0.983088, + -0.983105, -0.983123, -0.983141, -0.983158, -0.983176, -0.983193, -0.983211, -0.983228, + -0.983246, -0.983263, -0.983281, -0.983298, -0.983315, -0.983333, -0.983350, -0.983368, + -0.983385, -0.983402, -0.983420, -0.983437, -0.983455, -0.983472, -0.983489, -0.983507, + -0.983524, -0.983541, -0.983559, -0.983576, -0.983593, -0.983611, -0.983628, -0.983645, + -0.983662, -0.983680, -0.983697, -0.983714, -0.983731, -0.983749, -0.983766, -0.983783, + -0.983800, -0.983817, -0.983835, -0.983852, -0.983869, -0.983886, -0.983903, -0.983920, + -0.983937, -0.983955, -0.983972, -0.983989, -0.984006, -0.984023, -0.984040, -0.984057, + -0.984074, -0.984091, -0.984108, -0.984125, -0.984142, -0.984159, -0.984176, -0.984193, + -0.984210, -0.984227, -0.984244, -0.984261, -0.984278, -0.984295, -0.984312, -0.984329, + -0.984346, -0.984362, -0.984379, -0.984396, -0.984413, -0.984430, -0.984447, -0.984464, + -0.984480, -0.984497, -0.984514, -0.984531, -0.984548, -0.984564, -0.984581, -0.984598, + -0.984615, -0.984632, -0.984648, -0.984665, -0.984682, -0.984698, -0.984715, -0.984732, + -0.984748, -0.984765, -0.984782, -0.984798, -0.984815, -0.984832, -0.984848, -0.984865, + -0.984882, -0.984898, -0.984915, -0.984931, -0.984948, -0.984965, -0.984981, -0.984998, + -0.985014, -0.985031, -0.985047, -0.985064, -0.985080, -0.985097, -0.985113, -0.985130, + -0.985146, -0.985163, -0.985179, -0.985196, -0.985212, -0.985228, -0.985245, -0.985261, + -0.985278, -0.985294, -0.985310, -0.985327, -0.985343, -0.985359, -0.985376, -0.985392, + -0.985408, -0.985425, -0.985441, -0.985457, -0.985474, -0.985490, -0.985506, -0.985523, + -0.985539, -0.985555, -0.985571, -0.985587, -0.985604, -0.985620, -0.985636, -0.985652, + -0.985668, -0.985685, -0.985701, -0.985717, -0.985733, -0.985749, -0.985765, -0.985781, + -0.985798, -0.985814, -0.985830, -0.985846, -0.985862, -0.985878, -0.985894, -0.985910, + -0.985926, -0.985942, -0.985958, -0.985974, -0.985990, -0.986006, -0.986022, -0.986038, + -0.986054, -0.986070, -0.986086, -0.986102, -0.986118, -0.986134, -0.986150, -0.986165, + -0.986181, -0.986197, -0.986213, -0.986229, -0.986245, -0.986261, -0.986276, -0.986292, + -0.986308, -0.986324, -0.986340, -0.986355, -0.986371, -0.986387, -0.986403, -0.986419, + -0.986434, -0.986450, -0.986466, -0.986481, -0.986497, -0.986513, -0.986529, -0.986544, + -0.986560, -0.986576, -0.986591, -0.986607, -0.986623, -0.986638, -0.986654, -0.986669, + -0.986685, -0.986701, -0.986716, -0.986732, -0.986747, -0.986763, -0.986778, -0.986794, + -0.986809, -0.986825, -0.986840, -0.986856, -0.986871, -0.986887, -0.986902, -0.986918, + -0.986933, -0.986949, -0.986964, -0.986980, -0.986995, -0.987010, -0.987026, -0.987041, + -0.987057, -0.987072, -0.987087, -0.987103, -0.987118, -0.987133, -0.987149, -0.987164, + -0.987179, -0.987195, -0.987210, -0.987225, -0.987240, -0.987256, -0.987271, -0.987286, + -0.987301, -0.987317, -0.987332, -0.987347, -0.987362, -0.987377, -0.987393, -0.987408, + -0.987423, -0.987438, -0.987453, -0.987468, -0.987484, -0.987499, -0.987514, -0.987529, + -0.987544, -0.987559, -0.987574, -0.987589, -0.987604, -0.987619, -0.987634, -0.987649, + -0.987664, -0.987679, -0.987694, -0.987709, -0.987724, -0.987739, -0.987754, -0.987769, + -0.987784, -0.987799, -0.987814, -0.987829, -0.987844, -0.987859, -0.987874, -0.987889, + -0.987903, -0.987918, -0.987933, -0.987948, -0.987963, -0.987978, -0.987992, -0.988007, + -0.988022, -0.988037, -0.988052, -0.988066, -0.988081, -0.988096, -0.988111, -0.988125, + -0.988140, -0.988155, -0.988169, -0.988184, -0.988199, -0.988214, -0.988228, -0.988243, + -0.988258, -0.988272, -0.988287, -0.988301, -0.988316, -0.988331, -0.988345, -0.988360, + -0.988374, -0.988389, -0.988404, -0.988418, -0.988433, -0.988447, -0.988462, -0.988476, + -0.988491, -0.988505, -0.988520, -0.988534, -0.988549, -0.988563, -0.988578, -0.988592, + -0.988607, -0.988621, -0.988635, -0.988650, -0.988664, -0.988679, -0.988693, -0.988707, + -0.988722, -0.988736, -0.988750, -0.988765, -0.988779, -0.988793, -0.988808, -0.988822, + -0.988836, -0.988851, -0.988865, -0.988879, -0.988893, -0.988908, -0.988922, -0.988936, + -0.988950, -0.988964, -0.988979, -0.988993, -0.989007, -0.989021, -0.989035, -0.989050, + -0.989064, -0.989078, -0.989092, -0.989106, -0.989120, -0.989134, -0.989148, -0.989162, + -0.989177, -0.989191, -0.989205, -0.989219, -0.989233, -0.989247, -0.989261, -0.989275, + -0.989289, -0.989303, -0.989317, -0.989331, -0.989345, -0.989359, -0.989373, -0.989386, + -0.989400, -0.989414, -0.989428, -0.989442, -0.989456, -0.989470, -0.989484, -0.989498, + -0.989511, -0.989525, -0.989539, -0.989553, -0.989567, -0.989581, -0.989594, -0.989608, + -0.989622, -0.989636, -0.989650, -0.989663, -0.989677, -0.989691, -0.989704, -0.989718, + -0.989732, -0.989746, -0.989759, -0.989773, -0.989787, -0.989800, -0.989814, -0.989828, + -0.989841, -0.989855, -0.989869, -0.989882, -0.989896, -0.989909, -0.989923, -0.989936, + -0.989950, -0.989964, -0.989977, -0.989991, -0.990004, -0.990018, -0.990031, -0.990045, + -0.990058, -0.990072, -0.990085, -0.990099, -0.990112, -0.990126, -0.990139, -0.990152, + -0.990166, -0.990179, -0.990193, -0.990206, -0.990219, -0.990233, -0.990246, -0.990259, + -0.990273, -0.990286, -0.990299, -0.990313, -0.990326, -0.990339, -0.990353, -0.990366, + -0.990379, -0.990393, -0.990406, -0.990419, -0.990432, -0.990445, -0.990459, -0.990472, + -0.990485, -0.990498, -0.990511, -0.990525, -0.990538, -0.990551, -0.990564, -0.990577, + -0.990590, -0.990603, -0.990617, -0.990630, -0.990643, -0.990656, -0.990669, -0.990682, + -0.990695, -0.990708, -0.990721, -0.990734, -0.990747, -0.990760, -0.990773, -0.990786, + -0.990799, -0.990812, -0.990825, -0.990838, -0.990851, -0.990864, -0.990877, -0.990890, + -0.990903, -0.990916, -0.990928, -0.990941, -0.990954, -0.990967, -0.990980, -0.990993, + -0.991006, -0.991018, -0.991031, -0.991044, -0.991057, -0.991070, -0.991082, -0.991095, + -0.991108, -0.991121, -0.991133, -0.991146, -0.991159, -0.991172, -0.991184, -0.991197, + -0.991210, -0.991222, -0.991235, -0.991248, -0.991260, -0.991273, -0.991286, -0.991298, + -0.991311, -0.991323, -0.991336, -0.991349, -0.991361, -0.991374, -0.991386, -0.991399, + -0.991411, -0.991424, -0.991437, -0.991449, -0.991462, -0.991474, -0.991487, -0.991499, + -0.991511, -0.991524, -0.991536, -0.991549, -0.991561, -0.991574, -0.991586, -0.991598, + -0.991611, -0.991623, -0.991636, -0.991648, -0.991660, -0.991673, -0.991685, -0.991697, + -0.991710, -0.991722, -0.991734, -0.991747, -0.991759, -0.991771, -0.991783, -0.991796, + -0.991808, -0.991820, -0.991832, -0.991845, -0.991857, -0.991869, -0.991881, -0.991894, + -0.991906, -0.991918, -0.991930, -0.991942, -0.991954, -0.991966, -0.991979, -0.991991, + -0.992003, -0.992015, -0.992027, -0.992039, -0.992051, -0.992063, -0.992075, -0.992087, + -0.992099, -0.992111, -0.992123, -0.992135, -0.992147, -0.992159, -0.992171, -0.992183, + -0.992195, -0.992207, -0.992219, -0.992231, -0.992243, -0.992255, -0.992267, -0.992279, + -0.992291, -0.992302, -0.992314, -0.992326, -0.992338, -0.992350, -0.992362, -0.992374, + -0.992385, -0.992397, -0.992409, -0.992421, -0.992433, -0.992444, -0.992456, -0.992468, + -0.992480, -0.992491, -0.992503, -0.992515, -0.992526, -0.992538, -0.992550, -0.992561, + -0.992573, -0.992585, -0.992596, -0.992608, -0.992620, -0.992631, -0.992643, -0.992655, + -0.992666, -0.992678, -0.992689, -0.992701, -0.992712, -0.992724, -0.992736, -0.992747, + -0.992759, -0.992770, -0.992782, -0.992793, -0.992805, -0.992816, -0.992828, -0.992839, + -0.992850, -0.992862, -0.992873, -0.992885, -0.992896, -0.992908, -0.992919, -0.992930, + -0.992942, -0.992953, -0.992964, -0.992976, -0.992987, -0.992998, -0.993010, -0.993021, + -0.993032, -0.993044, -0.993055, -0.993066, -0.993077, -0.993089, -0.993100, -0.993111, + -0.993122, -0.993134, -0.993145, -0.993156, -0.993167, -0.993178, -0.993190, -0.993201, + -0.993212, -0.993223, -0.993234, -0.993245, -0.993257, -0.993268, -0.993279, -0.993290, + -0.993301, -0.993312, -0.993323, -0.993334, -0.993345, -0.993356, -0.993367, -0.993378, + -0.993389, -0.993400, -0.993411, -0.993422, -0.993433, -0.993444, -0.993455, -0.993466, + -0.993477, -0.993488, -0.993499, -0.993510, -0.993521, -0.993532, -0.993542, -0.993553, + -0.993564, -0.993575, -0.993586, -0.993597, -0.993608, -0.993618, -0.993629, -0.993640, + -0.993651, -0.993662, -0.993672, -0.993683, -0.993694, -0.993705, -0.993715, -0.993726, + -0.993737, -0.993747, -0.993758, -0.993769, -0.993779, -0.993790, -0.993801, -0.993811, + -0.993822, -0.993833, -0.993843, -0.993854, -0.993865, -0.993875, -0.993886, -0.993896, + -0.993907, -0.993918, -0.993928, -0.993939, -0.993949, -0.993960, -0.993970, -0.993981, + -0.993991, -0.994002, -0.994012, -0.994023, -0.994033, -0.994044, -0.994054, -0.994064, + -0.994075, -0.994085, -0.994096, -0.994106, -0.994116, -0.994127, -0.994137, -0.994148, + -0.994158, -0.994168, -0.994179, -0.994189, -0.994199, -0.994210, -0.994220, -0.994230, + -0.994240, -0.994251, -0.994261, -0.994271, -0.994281, -0.994292, -0.994302, -0.994312, + -0.994322, -0.994333, -0.994343, -0.994353, -0.994363, -0.994373, -0.994383, -0.994394, + -0.994404, -0.994414, -0.994424, -0.994434, -0.994444, -0.994454, -0.994464, -0.994474, + -0.994484, -0.994494, -0.994505, -0.994515, -0.994525, -0.994535, -0.994545, -0.994555, + -0.994565, -0.994575, -0.994585, -0.994594, -0.994604, -0.994614, -0.994624, -0.994634, + -0.994644, -0.994654, -0.994664, -0.994674, -0.994684, -0.994694, -0.994703, -0.994713, + -0.994723, -0.994733, -0.994743, -0.994753, -0.994762, -0.994772, -0.994782, -0.994792, + -0.994802, -0.994811, -0.994821, -0.994831, -0.994841, -0.994850, -0.994860, -0.994870, + -0.994879, -0.994889, -0.994899, -0.994908, -0.994918, -0.994928, -0.994937, -0.994947, + -0.994957, -0.994966, -0.994976, -0.994985, -0.994995, -0.995005, -0.995014, -0.995024, + -0.995033, -0.995043, -0.995052, -0.995062, -0.995071, -0.995081, -0.995090, -0.995100, + -0.995109, -0.995119, -0.995128, -0.995138, -0.995147, -0.995156, -0.995166, -0.995175, + -0.995185, -0.995194, -0.995203, -0.995213, -0.995222, -0.995232, -0.995241, -0.995250, + -0.995260, -0.995269, -0.995278, -0.995288, -0.995297, -0.995306, -0.995315, -0.995325, + -0.995334, -0.995343, -0.995352, -0.995362, -0.995371, -0.995380, -0.995389, -0.995398, + -0.995408, -0.995417, -0.995426, -0.995435, -0.995444, -0.995453, -0.995463, -0.995472, + -0.995481, -0.995490, -0.995499, -0.995508, -0.995517, -0.995526, -0.995535, -0.995544, + -0.995553, -0.995562, -0.995571, -0.995580, -0.995589, -0.995598, -0.995607, -0.995616, + -0.995625, -0.995634, -0.995643, -0.995652, -0.995661, -0.995670, -0.995679, -0.995688, + -0.995697, -0.995705, -0.995714, -0.995723, -0.995732, -0.995741, -0.995750, -0.995759, + -0.995767, -0.995776, -0.995785, -0.995794, -0.995803, -0.995811, -0.995820, -0.995829, + -0.995838, -0.995846, -0.995855, -0.995864, -0.995872, -0.995881, -0.995890, -0.995899, + -0.995907, -0.995916, -0.995925, -0.995933, -0.995942, -0.995950, -0.995959, -0.995968, + -0.995976, -0.995985, -0.995993, -0.996002, -0.996011, -0.996019, -0.996028, -0.996036, + -0.996045, -0.996053, -0.996062, -0.996070, -0.996079, -0.996087, -0.996096, -0.996104, + -0.996113, -0.996121, -0.996129, -0.996138, -0.996146, -0.996155, -0.996163, -0.996171, + -0.996180, -0.996188, -0.996197, -0.996205, -0.996213, -0.996222, -0.996230, -0.996238, + -0.996247, -0.996255, -0.996263, -0.996271, -0.996280, -0.996288, -0.996296, -0.996304, + -0.996313, -0.996321, -0.996329, -0.996337, -0.996345, -0.996354, -0.996362, -0.996370, + -0.996378, -0.996386, -0.996394, -0.996403, -0.996411, -0.996419, -0.996427, -0.996435, + -0.996443, -0.996451, -0.996459, -0.996467, -0.996475, -0.996483, -0.996491, -0.996499, + -0.996507, -0.996515, -0.996523, -0.996531, -0.996539, -0.996547, -0.996555, -0.996563, + -0.996571, -0.996579, -0.996587, -0.996595, -0.996603, -0.996611, -0.996619, -0.996626, + -0.996634, -0.996642, -0.996650, -0.996658, -0.996666, -0.996674, -0.996681, -0.996689, + -0.996697, -0.996705, -0.996712, -0.996720, -0.996728, -0.996736, -0.996743, -0.996751, + -0.996759, -0.996767, -0.996774, -0.996782, -0.996790, -0.996797, -0.996805, -0.996813, + -0.996820, -0.996828, -0.996836, -0.996843, -0.996851, -0.996858, -0.996866, -0.996874, + -0.996881, -0.996889, -0.996896, -0.996904, -0.996911, -0.996919, -0.996926, -0.996934, + -0.996941, -0.996949, -0.996956, -0.996964, -0.996971, -0.996979, -0.996986, -0.996994, + -0.997001, -0.997008, -0.997016, -0.997023, -0.997031, -0.997038, -0.997045, -0.997053, + -0.997060, -0.997067, -0.997075, -0.997082, -0.997089, -0.997097, -0.997104, -0.997111, + -0.997119, -0.997126, -0.997133, -0.997140, -0.997148, -0.997155, -0.997162, -0.997169, + -0.997176, -0.997184, -0.997191, -0.997198, -0.997205, -0.997212, -0.997219, -0.997227, + -0.997234, -0.997241, -0.997248, -0.997255, -0.997262, -0.997269, -0.997276, -0.997283, + -0.997290, -0.997298, -0.997305, -0.997312, -0.997319, -0.997326, -0.997333, -0.997340, + -0.997347, -0.997354, -0.997361, -0.997368, -0.997374, -0.997381, -0.997388, -0.997395, + -0.997402, -0.997409, -0.997416, -0.997423, -0.997430, -0.997437, -0.997443, -0.997450, + -0.997457, -0.997464, -0.997471, -0.997478, -0.997484, -0.997491, -0.997498, -0.997505, + -0.997511, -0.997518, -0.997525, -0.997532, -0.997538, -0.997545, -0.997552, -0.997559, + -0.997565, -0.997572, -0.997579, -0.997585, -0.997592, -0.997599, -0.997605, -0.997612, + -0.997618, -0.997625, -0.997632, -0.997638, -0.997645, -0.997651, -0.997658, -0.997665, + -0.997671, -0.997678, -0.997684, -0.997691, -0.997697, -0.997704, -0.997710, -0.997717, + -0.997723, -0.997730, -0.997736, -0.997742, -0.997749, -0.997755, -0.997762, -0.997768, + -0.997774, -0.997781, -0.997787, -0.997794, -0.997800, -0.997806, -0.997813, -0.997819, + -0.997825, -0.997832, -0.997838, -0.997844, -0.997851, -0.997857, -0.997863, -0.997869, + -0.997876, -0.997882, -0.997888, -0.997894, -0.997901, -0.997907, -0.997913, -0.997919, + -0.997925, -0.997931, -0.997938, -0.997944, -0.997950, -0.997956, -0.997962, -0.997968, + -0.997974, -0.997980, -0.997987, -0.997993, -0.997999, -0.998005, -0.998011, -0.998017, + -0.998023, -0.998029, -0.998035, -0.998041, -0.998047, -0.998053, -0.998059, -0.998065, + -0.998071, -0.998077, -0.998083, -0.998089, -0.998094, -0.998100, -0.998106, -0.998112, + -0.998118, -0.998124, -0.998130, -0.998136, -0.998142, -0.998147, -0.998153, -0.998159, + -0.998165, -0.998171, -0.998176, -0.998182, -0.998188, -0.998194, -0.998200, -0.998205, + -0.998211, -0.998217, -0.998222, -0.998228, -0.998234, -0.998240, -0.998245, -0.998251, + -0.998257, -0.998262, -0.998268, -0.998273, -0.998279, -0.998285, -0.998290, -0.998296, + -0.998302, -0.998307, -0.998313, -0.998318, -0.998324, -0.998329, -0.998335, -0.998340, + -0.998346, -0.998351, -0.998357, -0.998362, -0.998368, -0.998373, -0.998379, -0.998384, + -0.998390, -0.998395, -0.998401, -0.998406, -0.998411, -0.998417, -0.998422, -0.998428, + -0.998433, -0.998438, -0.998444, -0.998449, -0.998454, -0.998460, -0.998465, -0.998470, + -0.998476, -0.998481, -0.998486, -0.998491, -0.998497, -0.998502, -0.998507, -0.998512, + -0.998518, -0.998523, -0.998528, -0.998533, -0.998538, -0.998544, -0.998549, -0.998554, + -0.998559, -0.998564, -0.998569, -0.998574, -0.998580, -0.998585, -0.998590, -0.998595, + -0.998600, -0.998605, -0.998610, -0.998615, -0.998620, -0.998625, -0.998630, -0.998635, + -0.998640, -0.998645, -0.998650, -0.998655, -0.998660, -0.998665, -0.998670, -0.998675, + -0.998680, -0.998685, -0.998690, -0.998695, -0.998700, -0.998704, -0.998709, -0.998714, + -0.998719, -0.998724, -0.998729, -0.998734, -0.998738, -0.998743, -0.998748, -0.998753, + -0.998758, -0.998762, -0.998767, -0.998772, -0.998777, -0.998781, -0.998786, -0.998791, + -0.998795, -0.998800, -0.998805, -0.998810, -0.998814, -0.998819, -0.998824, -0.998828, + -0.998833, -0.998837, -0.998842, -0.998847, -0.998851, -0.998856, -0.998860, -0.998865, + -0.998870, -0.998874, -0.998879, -0.998883, -0.998888, -0.998892, -0.998897, -0.998901, + -0.998906, -0.998910, -0.998915, -0.998919, -0.998924, -0.998928, -0.998932, -0.998937, + -0.998941, -0.998946, -0.998950, -0.998954, -0.998959, -0.998963, -0.998968, -0.998972, + -0.998976, -0.998981, -0.998985, -0.998989, -0.998994, -0.998998, -0.999002, -0.999006, + -0.999011, -0.999015, -0.999019, -0.999023, -0.999028, -0.999032, -0.999036, -0.999040, + -0.999044, -0.999049, -0.999053, -0.999057, -0.999061, -0.999065, -0.999069, -0.999074, + -0.999078, -0.999082, -0.999086, -0.999090, -0.999094, -0.999098, -0.999102, -0.999106, + -0.999110, -0.999114, -0.999118, -0.999122, -0.999126, -0.999130, -0.999134, -0.999138, + -0.999142, -0.999146, -0.999150, -0.999154, -0.999158, -0.999162, -0.999166, -0.999170, + -0.999174, -0.999178, -0.999182, -0.999186, -0.999189, -0.999193, -0.999197, -0.999201, + -0.999205, -0.999209, -0.999212, -0.999216, -0.999220, -0.999224, -0.999228, -0.999231, + -0.999235, -0.999239, -0.999243, -0.999246, -0.999250, -0.999254, -0.999257, -0.999261, + -0.999265, -0.999268, -0.999272, -0.999276, -0.999279, -0.999283, -0.999287, -0.999290, + -0.999294, -0.999297, -0.999301, -0.999305, -0.999308, -0.999312, -0.999315, -0.999319, + -0.999322, -0.999326, -0.999329, -0.999333, -0.999336, -0.999340, -0.999343, -0.999347, + -0.999350, -0.999354, -0.999357, -0.999361, -0.999364, -0.999367, -0.999371, -0.999374, + -0.999378, -0.999381, -0.999384, -0.999388, -0.999391, -0.999394, -0.999398, -0.999401, + -0.999404, -0.999408, -0.999411, -0.999414, -0.999418, -0.999421, -0.999424, -0.999427, + -0.999431, -0.999434, -0.999437, -0.999440, -0.999443, -0.999447, -0.999450, -0.999453, + -0.999456, -0.999459, -0.999462, -0.999466, -0.999469, -0.999472, -0.999475, -0.999478, + -0.999481, -0.999484, -0.999487, -0.999490, -0.999493, -0.999497, -0.999500, -0.999503, + -0.999506, -0.999509, -0.999512, -0.999515, -0.999518, -0.999521, -0.999524, -0.999527, + -0.999529, -0.999532, -0.999535, -0.999538, -0.999541, -0.999544, -0.999547, -0.999550, + -0.999553, -0.999556, -0.999558, -0.999561, -0.999564, -0.999567, -0.999570, -0.999573, + -0.999575, -0.999578, -0.999581, -0.999584, -0.999586, -0.999589, -0.999592, -0.999595, + -0.999597, -0.999600, -0.999603, -0.999605, -0.999608, -0.999611, -0.999614, -0.999616, + -0.999619, -0.999621, -0.999624, -0.999627, -0.999629, -0.999632, -0.999635, -0.999637, + -0.999640, -0.999642, -0.999645, -0.999647, -0.999650, -0.999652, -0.999655, -0.999658, + -0.999660, -0.999663, -0.999665, -0.999667, -0.999670, -0.999672, -0.999675, -0.999677, + -0.999680, -0.999682, -0.999685, -0.999687, -0.999689, -0.999692, -0.999694, -0.999696, + -0.999699, -0.999701, -0.999704, -0.999706, -0.999708, -0.999710, -0.999713, -0.999715, + -0.999717, -0.999720, -0.999722, -0.999724, -0.999726, -0.999729, -0.999731, -0.999733, + -0.999735, -0.999738, -0.999740, -0.999742, -0.999744, -0.999746, -0.999748, -0.999750, + -0.999753, -0.999755, -0.999757, -0.999759, -0.999761, -0.999763, -0.999765, -0.999767, + -0.999769, -0.999771, -0.999774, -0.999776, -0.999778, -0.999780, -0.999782, -0.999784, + -0.999786, -0.999788, -0.999790, -0.999792, -0.999793, -0.999795, -0.999797, -0.999799, + -0.999801, -0.999803, -0.999805, -0.999807, -0.999809, -0.999811, -0.999812, -0.999814, + -0.999816, -0.999818, -0.999820, -0.999822, -0.999823, -0.999825, -0.999827, -0.999829, + -0.999831, -0.999832, -0.999834, -0.999836, -0.999838, -0.999839, -0.999841, -0.999843, + -0.999844, -0.999846, -0.999848, -0.999849, -0.999851, -0.999853, -0.999854, -0.999856, + -0.999858, -0.999859, -0.999861, -0.999862, -0.999864, -0.999866, -0.999867, -0.999869, + -0.999870, -0.999872, -0.999873, -0.999875, -0.999876, -0.999878, -0.999879, -0.999881, + -0.999882, -0.999884, -0.999885, -0.999887, -0.999888, -0.999890, -0.999891, -0.999892, + -0.999894, -0.999895, -0.999897, -0.999898, -0.999899, -0.999901, -0.999902, -0.999903, + -0.999905, -0.999906, -0.999907, -0.999909, -0.999910, -0.999911, -0.999913, -0.999914, + -0.999915, -0.999916, -0.999917, -0.999919, -0.999920, -0.999921, -0.999922, -0.999924, + -0.999925, -0.999926, -0.999927, -0.999928, -0.999929, -0.999930, -0.999932, -0.999933, + -0.999934, -0.999935, -0.999936, -0.999937, -0.999938, -0.999939, -0.999940, -0.999941, + -0.999942, -0.999943, -0.999944, -0.999945, -0.999946, -0.999947, -0.999948, -0.999949, + -0.999950, -0.999951, -0.999952, -0.999953, -0.999954, -0.999955, -0.999956, -0.999957, + -0.999958, -0.999959, -0.999959, -0.999960, -0.999961, -0.999962, -0.999963, -0.999964, + -0.999964, -0.999965, -0.999966, -0.999967, -0.999968, -0.999968, -0.999969, -0.999970, + -0.999971, -0.999971, -0.999972, -0.999973, -0.999973, -0.999974, -0.999975, -0.999976, + -0.999976, -0.999977, -0.999977, -0.999978, -0.999979, -0.999979, -0.999980, -0.999981, + -0.999981, -0.999982, -0.999982, -0.999983, -0.999983, -0.999984, -0.999985, -0.999985, + -0.999986, -0.999986, -0.999987, -0.999987, -0.999988, -0.999988, -0.999988, -0.999989, + -0.999989, -0.999990, -0.999990, -0.999991, -0.999991, -0.999991, -0.999992, -0.999992, + -0.999993, -0.999993, -0.999993, -0.999994, -0.999994, -0.999994, -0.999995, -0.999995, + -0.999995, -0.999996, -0.999996, -0.999996, -0.999996, -0.999997, -0.999997, -0.999997, + -0.999997, -0.999998, -0.999998, -0.999998, -0.999998, -0.999998, -0.999999, -0.999999, + -0.999999, -0.999999, -0.999999, -0.999999, -0.999999, -0.999999, -1.000000, -1.000000, + -1.000000, -1.000000, -1.000000, -1.000000, -1.000000, -1.000000, -1.000000, -1.000000 +}; + +static const float *sinTables[17] = { + 0 , 0 , 0 , 0 , + sinTable16 , sinTable32 , sinTable64 , sinTable128 , + sinTable256 , sinTable512 , sinTable1024 , sinTable2048 , + sinTable4096, sinTable8192, sinTable16384, sinTable32768, + sinTable65536 +}; + +} // End of namespace Common + +#endif // COMMON_SINETABLES_H From 0aa58b9033ee83b3008a7f4ac48d10baa6c7335d Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 15:20:34 -0400 Subject: [PATCH 006/731] COMMON: Add a Huffman bitstream decoder Based on eos' code --- common/huffman.cpp | 81 ++++++++++++++++++++++++++++++++++++++++++++++ common/huffman.h | 77 +++++++++++++++++++++++++++++++++++++++++++ common/module.mk | 1 + 3 files changed, 159 insertions(+) create mode 100644 common/huffman.cpp create mode 100644 common/huffman.h diff --git a/common/huffman.cpp b/common/huffman.cpp new file mode 100644 index 00000000000..668e2216c9d --- /dev/null +++ b/common/huffman.cpp @@ -0,0 +1,81 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' Huffman code + +#include "common/huffman.h" +#include "common/util.h" +#include "common/textconsole.h" +#include "common/bitstream.h" + +namespace Common { + +Huffman::Symbol::Symbol(uint32 c, uint32 s) : code(c), symbol(s) { +} + + +Huffman::Huffman(uint8 maxLength, uint32 codeCount, const uint32 *codes, const uint8 *lengths, const uint32 *symbols) { + assert(maxLength > 0); + assert(codeCount > 0); + + assert(codes); + assert(lengths); + + _codes.resize(maxLength); + _symbols.resize(codeCount); + + for (uint32 i = 0; i < codeCount; i++) { + // The symbol. If none were specified, just assume it's identical to the code index + uint32 symbol = symbols ? symbols[i] : i; + + // Put the code and symbol into the correct list + _codes[lengths[i] - 1].push_back(Symbol(codes[i], symbol)); + + // And put the pointer to the symbol/code struct into the symbol list. + _symbols[i] = &_codes[lengths[i] - 1].back(); + } +} + +Huffman::~Huffman() { +} + +void Huffman::setSymbols(const uint32 *symbols) { + for (uint32 i = 0; i < _symbols.size(); i++) + _symbols[i]->symbol = symbols ? *symbols++ : i; +} + +uint32 Huffman::getSymbol(BitStream &bits) { + uint32 code = 0; + + for (uint32 i = 0; i < _codes.size(); i++) { + bits.addBit(code, i); + + for (CodeList::const_iterator cCode = _codes[i].begin(); cCode != _codes[i].end(); ++cCode) + if (code == cCode->code) + return cCode->symbol; + } + + error("Unknown Huffman code"); + return 0; +} + +} // End of namespace Common diff --git a/common/huffman.h b/common/huffman.h new file mode 100644 index 00000000000..9c88a37541e --- /dev/null +++ b/common/huffman.h @@ -0,0 +1,77 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' Huffman code + +#ifndef COMMON_HUFFMAN_H +#define COMMON_HUFFMAN_H + +#include "common/array.h" +#include "common/list.h" +#include "common/types.h" + +namespace Common { + +class BitStream; + +/** Decode a Huffman'd bitstream. */ +class Huffman { +public: + /** Construct a Huffman decoder. + * + * @param maxLength Maximal code length. + * @param codeCount Number of codes. + * @param codes The actual codes. + * @param lengths Lengths of the individual codes. + * @param symbols The symbols. If 0, assume they are identical to the code indices. + */ + Huffman(uint8 maxLength, uint32 codeCount, const uint32 *codes, const uint8 *lengths, const uint32 *symbols = 0); + ~Huffman(); + + /** Modify the codes' symbols. */ + void setSymbols(const uint32 *symbols = 0); + + /** Return the next symbol in the bitstream. */ + uint32 getSymbol(BitStream &bits); + +private: + struct Symbol { + uint32 code; + uint32 symbol; + + Symbol(uint32 c, uint32 s); + }; + + typedef Common::List CodeList; + typedef Common::Array CodeLists; + typedef Common::Array SymbolList; + + /** Lists of codes and their symbols, sorted by code length. */ + CodeLists _codes; + + /** Sorted list of pointers to the symbols. */ + SymbolList _symbols; +}; + +} // End of namespace Common + +#endif // COMMON_HUFFMAN_H diff --git a/common/module.mk b/common/module.mk index d2791c4f9d3..7716f74d34c 100644 --- a/common/module.mk +++ b/common/module.mk @@ -13,6 +13,7 @@ MODULE_OBJS := \ file.o \ fs.o \ hashmap.o \ + huffman.o \ iff_container.o \ macresman.o \ math.o \ From 3aefa913faaf2a98512f02b0581ca8a077876b84 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 15:23:49 -0400 Subject: [PATCH 007/731] COMMON: Add an FFT math handler Based on eos' code which is based on FFmpeg's code --- common/fft.cpp | 245 +++++++++++++++++++++++++++++++++++++++++++++++ common/fft.h | 73 ++++++++++++++ common/module.mk | 1 + 3 files changed, 319 insertions(+) create mode 100644 common/fft.cpp create mode 100644 common/fft.h diff --git a/common/fft.cpp b/common/fft.cpp new file mode 100644 index 00000000000..9398034c82c --- /dev/null +++ b/common/fft.cpp @@ -0,0 +1,245 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' (I)FFT code which is in turn +// Based upon the (I)FFT code in FFmpeg +// Copyright (c) 2008 Loren Merritt +// Copyright (c) 2002 Fabrice Bellard +// Partly based on libdjbfft by D. J. Bernstein + +#include "common/fft.h" +#include "common/util.h" + +namespace Common { + +FFT::FFT(int bits, int inverse) : _bits(bits), _inverse(inverse) { + assert((_bits >= 2) && (_bits <= 16)); + + int n = 1 << bits; + + _tmpBuf = new Complex[n]; + _expTab = new Complex[n / 2]; + _revTab = new uint16[n]; + + _splitRadix = 1; + + for (int i = 0; i < n; i++) + _revTab[-splitRadixPermutation(i, n, _inverse) & (n - 1)] = i; +} + +FFT::~FFT() { + delete[] _revTab; + delete[] _expTab; + delete[] _tmpBuf; +} + +void FFT::permute(Complex *z) { + int np = 1 << _bits; + + if (_tmpBuf) { + for(int j = 0; j < np; j++) + _tmpBuf[_revTab[j]] = z[j]; + + memcpy(z, _tmpBuf, np * sizeof(Complex)); + + return; + } + + // Reverse + for(int j = 0; j < np; j++) { + int k = _revTab[j]; + + if (k < j) + SWAP(z[k], z[j]); + } +} + +int FFT::splitRadixPermutation(int i, int n, int inverse) { + if (n <= 2) + return i & 1; + + int m = n >> 1; + + if(!(i & m)) + return splitRadixPermutation(i, m, inverse) * 2; + + m >>= 1; + + if(inverse == !(i & m)) + return splitRadixPermutation(i, m, inverse) * 4 + 1; + + return splitRadixPermutation(i, m, inverse) * 4 - 1; +} + +#define sqrthalf (float)M_SQRT1_2 + +#define BF(x,y,a,b) {\ + x = a - b;\ + y = a + b;\ +} + +#define BUTTERFLIES(a0,a1,a2,a3) {\ + BF(t3, t5, t5, t1);\ + BF(a2.re, a0.re, a0.re, t5);\ + BF(a3.im, a1.im, a1.im, t3);\ + BF(t4, t6, t2, t6);\ + BF(a3.re, a1.re, a1.re, t4);\ + BF(a2.im, a0.im, a0.im, t6);\ +} + +// force loading all the inputs before storing any. +// this is slightly slower for small data, but avoids store->load aliasing +// for addresses separated by large powers of 2. +#define BUTTERFLIES_BIG(a0,a1,a2,a3) {\ + float r0=a0.re, i0=a0.im, r1=a1.re, i1=a1.im;\ + BF(t3, t5, t5, t1);\ + BF(a2.re, a0.re, r0, t5);\ + BF(a3.im, a1.im, i1, t3);\ + BF(t4, t6, t2, t6);\ + BF(a3.re, a1.re, r1, t4);\ + BF(a2.im, a0.im, i0, t6);\ +} + +#define TRANSFORM(a0,a1,a2,a3,wre,wim) {\ + t1 = a2.re * wre + a2.im * wim;\ + t2 = a2.im * wre - a2.re * wim;\ + t5 = a3.re * wre - a3.im * wim;\ + t6 = a3.im * wre + a3.re * wim;\ + BUTTERFLIES(a0,a1,a2,a3)\ +} + +#define TRANSFORM_ZERO(a0,a1,a2,a3) {\ + t1 = a2.re;\ + t2 = a2.im;\ + t5 = a3.re;\ + t6 = a3.im;\ + BUTTERFLIES(a0,a1,a2,a3)\ +} + +/* z[0...8n-1], w[1...2n-1] */ +#define PASS(name)\ +static void name(Complex *z, const float *wre, unsigned int n)\ +{\ + float t1, t2, t3, t4, t5, t6;\ + int o1 = 2*n;\ + int o2 = 4*n;\ + int o3 = 6*n;\ + const float *wim = wre+o1;\ + n--;\ +\ + TRANSFORM_ZERO(z[0],z[o1],z[o2],z[o3]);\ + TRANSFORM(z[1],z[o1+1],z[o2+1],z[o3+1],wre[1],wim[-1]);\ + do {\ + z += 2;\ + wre += 2;\ + wim -= 2;\ + TRANSFORM(z[0],z[o1],z[o2],z[o3],wre[0],wim[0]);\ + TRANSFORM(z[1],z[o1+1],z[o2+1],z[o3+1],wre[1],wim[-1]);\ + } while(--n);\ +} + +PASS(pass) +#undef BUTTERFLIES +#define BUTTERFLIES BUTTERFLIES_BIG +PASS(pass_big) + +#define DECL_FFT(n,n2,n4)\ +static void fft##n(Complex *z)\ +{\ + fft##n2(z);\ + fft##n4(z+n4*2);\ + fft##n4(z+n4*3);\ + pass(z,cosTable##n,n4/2);\ +} + +static void fft4(Complex *z) +{ + float t1, t2, t3, t4, t5, t6, t7, t8; + + BF(t3, t1, z[0].re, z[1].re); + BF(t8, t6, z[3].re, z[2].re); + BF(z[2].re, z[0].re, t1, t6); + BF(t4, t2, z[0].im, z[1].im); + BF(t7, t5, z[2].im, z[3].im); + BF(z[3].im, z[1].im, t4, t8); + BF(z[3].re, z[1].re, t3, t7); + BF(z[2].im, z[0].im, t2, t5); +} + +static void fft8(Complex *z) +{ + float t1, t2, t3, t4, t5, t6, t7, t8; + + fft4(z); + + BF(t1, z[5].re, z[4].re, -z[5].re); + BF(t2, z[5].im, z[4].im, -z[5].im); + BF(t3, z[7].re, z[6].re, -z[7].re); + BF(t4, z[7].im, z[6].im, -z[7].im); + BF(t8, t1, t3, t1); + BF(t7, t2, t2, t4); + BF(z[4].re, z[0].re, z[0].re, t1); + BF(z[4].im, z[0].im, z[0].im, t2); + BF(z[6].re, z[2].re, z[2].re, t7); + BF(z[6].im, z[2].im, z[2].im, t8); + + TRANSFORM(z[1],z[3],z[5],z[7],sqrthalf,sqrthalf); +} + +static void fft16(Complex *z) +{ + float t1, t2, t3, t4, t5, t6; + + fft8(z); + fft4(z+8); + fft4(z+12); + + TRANSFORM_ZERO(z[0],z[4],z[8],z[12]); + TRANSFORM(z[2],z[6],z[10],z[14],sqrthalf,sqrthalf); + TRANSFORM(z[1],z[5],z[9],z[13],cosTable16[1],cosTable16[3]); + TRANSFORM(z[3],z[7],z[11],z[15],cosTable16[3],cosTable16[1]); +} + +DECL_FFT(32,16,8) +DECL_FFT(64,32,16) +DECL_FFT(128,64,32) +DECL_FFT(256,128,64) +DECL_FFT(512,256,128) +#define pass pass_big +DECL_FFT(1024,512,256) +DECL_FFT(2048,1024,512) +DECL_FFT(4096,2048,1024) +DECL_FFT(8192,4096,2048) +DECL_FFT(16384,8192,4096) +DECL_FFT(32768,16384,8192) +DECL_FFT(65536,32768,16384) + +static void (* const fft_dispatch[])(Complex*) = { + fft4, fft8, fft16, fft32, fft64, fft128, fft256, fft512, fft1024, + fft2048, fft4096, fft8192, fft16384, fft32768, fft65536, +}; + +void FFT::calc(Complex *z) { + fft_dispatch[_bits - 2](z); +} + +} // End of namespace Common diff --git a/common/fft.h b/common/fft.h new file mode 100644 index 00000000000..17d1ef00557 --- /dev/null +++ b/common/fft.h @@ -0,0 +1,73 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' (I)FFT code which is in turn +// based upon the (I)FFT code in FFmpeg +// Copyright (c) 2008 Loren Merritt +// Copyright (c) 2002 Fabrice Bellard +// Partly based on libdjbfft by D. J. Bernstein + +#ifndef COMMON_FFT_H +#define COMMON_FFT_H + +#include "common/scummsys.h" +#include "common/math.h" + +namespace Common { + +/** (Inverse) Fast Fourier Transform. */ +class FFT { +public: + FFT(int bits, int inverse); + ~FFT(); + + /** Do the permutation needed BEFORE calling calc(). */ + void permute(Complex *z); + + /** Do a complex FFT. + * + * The input data must be permuted before. + * No 1.0/sqrt(n) normalization is done. + */ + void calc(Complex *z); + +private: + int _bits; + int _inverse; + + uint16 *_revTab; + + Complex *_expTab; + Complex *_tmpBuf; + + const float *_tSin; + const float *_tCos; + + int _splitRadix; + int _permutation; + + static int splitRadixPermutation(int i, int n, int inverse); +}; + +} // End of namespace Common + +#endif // COMMON_FFT_H diff --git a/common/module.mk b/common/module.mk index 7716f74d34c..2ab4c113fa4 100644 --- a/common/module.mk +++ b/common/module.mk @@ -10,6 +10,7 @@ MODULE_OBJS := \ error.o \ EventDispatcher.o \ EventRecorder.o \ + fft.o \ file.o \ fs.o \ hashmap.o \ From f311a7ee67d459e1033abe7eed4f23f7ada1f537 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 15:28:09 -0400 Subject: [PATCH 008/731] COMMON: Add RDFT math code Based on eos' code which is based on FFmpeg's code --- common/module.mk | 1 + common/rdft.cpp | 100 +++++++++++++++++++++++++++++++++++++++++++++++ common/rdft.h | 64 ++++++++++++++++++++++++++++++ 3 files changed, 165 insertions(+) create mode 100644 common/rdft.cpp create mode 100644 common/rdft.h diff --git a/common/module.mk b/common/module.mk index 2ab4c113fa4..2a50d9d7867 100644 --- a/common/module.mk +++ b/common/module.mk @@ -24,6 +24,7 @@ MODULE_OBJS := \ quicktime.o \ random.o \ rational.o \ + rdft.o \ str.o \ stream.o \ system.o \ diff --git a/common/rdft.cpp b/common/rdft.cpp new file mode 100644 index 00000000000..ca6a9616ddf --- /dev/null +++ b/common/rdft.cpp @@ -0,0 +1,100 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' (I)RDFT code which is in turn +// Based upon the (I)RDFT code in FFmpeg +// Copyright (c) 2009 Alex Converse + +#include "common/rdft.h" + +namespace Common { + +RDFT::RDFT(int bits, TransformType trans) : _bits(bits), _fft(0) { + assert ((_bits >= 4) && (_bits <= 16)); + + _inverse = trans == IDFT_C2R || trans == DFT_C2R; + _signConvention = trans == IDFT_R2C || trans == DFT_C2R ? 1 : -1; + + _fft = new FFT(bits - 1, trans == IDFT_C2R || trans == IDFT_R2C); + + int n = 1 << bits; + + _tSin = getSineTable(bits) + (trans == DFT_R2C || trans == DFT_C2R) * (n >> 2); + _tCos = getCosineTable(bits); +} + +RDFT::~RDFT() { + delete _fft; +} + +void RDFT::calc(float *data) { + const int n = 1 << _bits; + + const float k1 = 0.5; + const float k2 = 0.5 - _inverse; + + if (!_inverse) { + _fft->permute((Complex *) data); + _fft->calc ((Complex *) data); + } + + Complex ev, od; + + /* i=0 is a special case because of packing, the DC term is real, so we + are going to throw the N/2 term (also real) in with it. */ + + ev.re = data[0]; + + data[0] = ev.re + data[1]; + data[1] = ev.re - data[1]; + + int i; + for (i = 1; i < (n >> 2); i++) { + int i1 = 2 * i; + int i2 = n - i1; + + /* Separate even and odd FFTs */ + ev.re = k1 * (data[i1 ] + data[i2 ]); + od.im = -k2 * (data[i1 ] - data[i2 ]); + ev.im = k1 * (data[i1 + 1] - data[i2 + 1]); + od.re = k2 * (data[i1 + 1] + data[i2 + 1]); + + /* Apply twiddle factors to the odd FFT and add to the even FFT */ + data[i1 ] = ev.re + od.re * _tCos[i] - od.im * _tSin[i]; + data[i1 + 1] = ev.im + od.im * _tCos[i] + od.re * _tSin[i]; + data[i2 ] = ev.re - od.re * _tCos[i] + od.im * _tSin[i]; + data[i2 + 1] = -ev.im + od.im * _tCos[i] + od.re * _tSin[i]; + } + + data[2 * i + 1] = _signConvention * data[2 * i + 1]; + + if (_inverse) { + data[0] *= k1; + data[1] *= k1; + + _fft->permute((Complex *) data); + _fft->calc ((Complex *) data); + } + +} + +} // End of namespace Common diff --git a/common/rdft.h b/common/rdft.h new file mode 100644 index 00000000000..33fcdd2b3be --- /dev/null +++ b/common/rdft.h @@ -0,0 +1,64 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' (I)RDFT code which is in turn +// Based upon the (I)RDFT code in FFmpeg +// Copyright (c) 2009 Alex Converse + +#ifndef COMMON_RDFT_H +#define COMMON_RDFT_H + +#include "common/scummsys.h" +#include "common/math.h" +#include "common/fft.h" + +namespace Common { + +/** (Inverse) Real Discrete Fourier Transform. */ +class RDFT { +public: + enum TransformType { + DFT_R2C, + IDFT_C2R, + IDFT_R2C, + DFT_C2R + }; + + RDFT(int bits, TransformType trans); + ~RDFT(); + + void calc(float *data); + +private: + int _bits; + int _inverse; + int _signConvention; + + const float *_tSin; + const float *_tCos; + + FFT *_fft; +}; + +} // End of namespace Common + +#endif // COMMON_RDFT_H From b44ea652ed745beffb83b73a8675938fa2f01744 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 15:30:22 -0400 Subject: [PATCH 009/731] COMMON: Add DCT math code Based on eos' code which is based on FFmpeg's code --- common/dct.cpp | 210 +++++++++++++++++++++++++++++++++++++++++++++++ common/dct.h | 71 ++++++++++++++++ common/module.mk | 1 + 3 files changed, 282 insertions(+) create mode 100644 common/dct.cpp create mode 100644 common/dct.h diff --git a/common/dct.cpp b/common/dct.cpp new file mode 100644 index 00000000000..b39239e8dde --- /dev/null +++ b/common/dct.cpp @@ -0,0 +1,210 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' (I)RDFT code which is in turn +// Based upon the (I)DCT code in FFmpeg +// Copyright (c) 2009 Peter Ross +// Copyright (c) 2010 Alex Converse +// Copyright (c) 2010 Vitor Sessak + +#include "common/dct.h" + +namespace Common { + +DCT::DCT(int bits, TransformType trans) : _bits(bits), _trans(trans), _rdft(0) { + int n = 1 << _bits; + + _tCos = getCosineTable(_bits + 2); + + _csc2 = new float[n / 2]; + + _rdft = new RDFT(_bits, (_trans == DCT_III) ? RDFT::IDFT_C2R : RDFT::DFT_R2C); + + for (int i = 0; i < (n / 2); i++) + _csc2[i] = 0.5 / sin((M_PI / (2 * n) * (2 * i + 1))); +} + +DCT::~DCT() { + delete _rdft; + delete[] _csc2; +} + +void DCT::calc(float *data) { + switch (_trans) { + case DCT_I: + calcDCTI(data); + break; + + case DCT_II: + calcDCTII(data); + break; + + case DCT_III: + calcDCTIII(data); + break; + + case DST_I: + calcDSTI(data); + break; + } +} + +/* sin((M_PI * x / (2*n)) */ +#define SIN(n,x) (_tCos[(n) - (x)]) +/* cos((M_PI * x / (2*n)) */ +#define COS(n,x) (_tCos[x]) + +void DCT::calcDCTI(float *data) { + int n = 1 << _bits; + + float next = -0.5 * (data[0] - data[n]); + + for (int i = 0; i < (n / 2); i++) { + float tmp1 = data[i ]; + float tmp2 = data[n - i]; + + float s = SIN(n, 2 * i); + float c = COS(n, 2 * i); + + c *= tmp1 - tmp2; + s *= tmp1 - tmp2; + + next += c; + + tmp1 = (tmp1 + tmp2) * 0.5; + + data[i ] = tmp1 - s; + data[n - i] = tmp1 + s; + } + + _rdft->calc(data); + + data[n] = data[1]; + data[1] = next; + + for (int i = 3; i <= n; i += 2) + data[i] = data[i - 2] - data[i]; +} + +void DCT::calcDCTII(float *data) { + int n = 1 << _bits; + + for (int i = 0; i < (n / 2); i++) { + float tmp1 = data[i ]; + float tmp2 = data[n - i - 1]; + + float s = SIN(n, 2 * i + 1); + + s *= tmp1 - tmp2; + + tmp1 = (tmp1 + tmp2) * 0.5; + + data[i ] = tmp1 + s; + data[n-i-1] = tmp1 - s; + } + + _rdft->calc(data); + + float next = data[1] * 0.5; + + data[1] *= -1; + + for (int i = n - 2; i >= 0; i -= 2) { + float inr = data[i ]; + float ini = data[i + 1]; + + float c = COS(n, i); + float s = SIN(n, i); + + data[i ] = c * inr + s * ini; + data[i+1] = next; + + next += s * inr - c * ini; + } +} + +void DCT::calcDCTIII(float *data) { + int n = 1 << _bits; + + float next = data[n - 1]; + float inv_n = 1.0 / n; + + for (int i = n - 2; i >= 2; i -= 2) { + float val1 = data[i ]; + float val2 = data[i - 1] - data[i + 1]; + + float c = COS(n, i); + float s = SIN(n, i); + + data[i ] = c * val1 + s * val2; + data[i + 1] = s * val1 - c * val2; + } + + data[1] = 2 * next; + + _rdft->calc(data); + + for (int i = 0; i < (n / 2); i++) { + float tmp1 = data[i ] * inv_n; + float tmp2 = data[n - i - 1] * inv_n; + + float csc = _csc2[i] * (tmp1 - tmp2); + + tmp1 += tmp2; + + data[i ] = tmp1 + csc; + data[n - i - 1] = tmp1 - csc; + } +} + +void DCT::calcDSTI(float *data) { + int n = 1 << _bits; + + data[0] = 0; + + for (int i = 1; i < (n / 2); i++) { + float tmp1 = data[i ]; + float tmp2 = data[n - i]; + float s = SIN(n, 2 * i); + + s *= tmp1 + tmp2; + tmp1 = (tmp1 - tmp2) * 0.5; + + data[i ] = s + tmp1; + data[n - i] = s - tmp1; + } + + data[n / 2] *= 2; + + _rdft->calc(data); + + data[0] *= 0.5; + + for (int i = 1; i < (n - 2); i += 2) { + data[i + 1] += data[i - 1]; + data[i ] = -data[i + 2]; + } + + data[n - 1] = 0; +} + +} // End of namespace Common diff --git a/common/dct.h b/common/dct.h new file mode 100644 index 00000000000..a0d625d55d3 --- /dev/null +++ b/common/dct.h @@ -0,0 +1,71 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' (I)RDFT code which is in turn +// Based upon the (I)DCT code in FFmpeg +// Copyright (c) 2009 Peter Ross +// Copyright (c) 2010 Alex Converse +// Copyright (c) 2010 Vitor Sessak + +#ifndef COMMON_DCT_H +#define COMMON_DCT_H + +#include "common/scummsys.h" +#include "common/math.h" +#include "common/rdft.h" + +namespace Common { + +/** (Inverse) Discrete Cosine Transforms. */ +class DCT { +public: + enum TransformType { + DCT_II, + DCT_III, + DCT_I, + DST_I + }; + + DCT(int bits, TransformType trans); + ~DCT(); + + void calc(float *data); + +private: + int _bits; + TransformType _trans; + + const float *_tCos; + + float *_csc2; + + RDFT *_rdft; + + void calcDCTI (float *data); + void calcDCTII (float *data); + void calcDCTIII(float *data); + void calcDSTI (float *data); +}; + +} // End of namespace Common + +#endif // COMMON_DCT_H diff --git a/common/module.mk b/common/module.mk index 2a50d9d7867..31d91c8fe09 100644 --- a/common/module.mk +++ b/common/module.mk @@ -6,6 +6,7 @@ MODULE_OBJS := \ config-file.o \ config-manager.o \ dcl.o \ + dct.o \ debug.o \ error.o \ EventDispatcher.o \ From 4ace7f626b4d2a5ba2210f2a237fe1293e792a9b Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 16:36:37 -0400 Subject: [PATCH 010/731] VIDEO: Add Bink video decoder Based on eos' code which is in turn based on FFmpeg's code --- common/fft.cpp | 1 + video/bink_decoder.cpp | 1644 ++++++++++++++++++++++++++++++++++++++++ video/bink_decoder.h | 323 ++++++++ video/binkdata.h | 578 ++++++++++++++ video/module.mk | 1 + 5 files changed, 2547 insertions(+) create mode 100644 video/bink_decoder.cpp create mode 100644 video/bink_decoder.h create mode 100644 video/binkdata.h diff --git a/common/fft.cpp b/common/fft.cpp index 9398034c82c..e9764ab9e66 100644 --- a/common/fft.cpp +++ b/common/fft.cpp @@ -26,6 +26,7 @@ // Copyright (c) 2002 Fabrice Bellard // Partly based on libdjbfft by D. J. Bernstein +#include "common/cosinetables.h" #include "common/fft.h" #include "common/util.h" diff --git a/video/bink_decoder.cpp b/video/bink_decoder.cpp new file mode 100644 index 00000000000..491f8afd984 --- /dev/null +++ b/video/bink_decoder.cpp @@ -0,0 +1,1644 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' Bink decoder which is in turn +// based quite heavily on the Bink decoder found in FFmpeg. +// Many thanks to Kostya Shishkov for doing the hard work. + +#include "audio/decoders/raw.h" + +#include "common/util.h" +#include "common/textconsole.h" +#include "common/math.h" +#include "common/stream.h" +#include "common/file.h" +#include "common/str.h" +#include "common/bitstream.h" +#include "common/huffman.h" +#include "common/rdft.h" +#include "common/dct.h" +#include "common/system.h" + +#include "graphics/yuv_to_rgb.h" +#include "graphics/surface.h" + +#include "video/binkdata.h" +#include "video/bink_decoder.h" + +static const uint32 kBIKfID = MKTAG('B', 'I', 'K', 'f'); +static const uint32 kBIKgID = MKTAG('B', 'I', 'K', 'g'); +static const uint32 kBIKhID = MKTAG('B', 'I', 'K', 'h'); +static const uint32 kBIKiID = MKTAG('B', 'I', 'K', 'i'); + +static const uint32 kVideoFlagAlpha = 0x00100000; + +static const uint16 kAudioFlagDCT = 0x1000; +static const uint16 kAudioFlagStereo = 0x2000; + +// Number of bits used to store first DC value in bundle +static const uint32 kDCStartBits = 11; + +namespace Video { + +BinkDecoder::VideoFrame::VideoFrame() : bits(0) { +} + +BinkDecoder::VideoFrame::~VideoFrame() { + delete bits; +} + + +BinkDecoder::AudioTrack::AudioTrack() : bits(0), bands(0), rdft(0), dct(0) { +} + +BinkDecoder::AudioTrack::~AudioTrack() { + delete bits; + + delete[] bands; + + delete rdft; + delete dct; +} + + +BinkDecoder::BinkDecoder() { + _bink = 0; + _audioTrack = 0; + + for (int i = 0; i < 16; i++) + _huffman[i] = 0; + + for (int i = 0; i < kSourceMAX; i++) { + _bundles[i].countLength = 0; + + _bundles[i].huffman.index = 0; + for (int j = 0; j < 16; j++) + _bundles[i].huffman.symbols[j] = j; + + _bundles[i].data = 0; + _bundles[i].dataEnd = 0; + _bundles[i].curDec = 0; + _bundles[i].curPtr = 0; + } + + for (int i = 0; i < 16; i++) { + _colHighHuffman[i].index = 0; + for (int j = 0; j < 16; j++) + _colHighHuffman[i].symbols[j] = j; + } + + for (int i = 0; i < 4; i++) { + _curPlanes[i] = 0; + _oldPlanes[i] = 0; + } + + _audioStream = 0; + _audioStarted = false; +} + +BinkDecoder::~BinkDecoder() { + close(); +} + +void BinkDecoder::close() { + if (_audioStream) { + // Stop audio + g_system->getMixer()->stopHandle(_audioHandle); + _audioStream = 0; + } + + _audioStarted = false; + + for (int i = 0; i < 4; i++) { + delete[] _curPlanes[i]; + delete[] _oldPlanes[i]; + } + + deinitBundles(); + + for (int i = 0; i < 16; i++) + delete _huffman[i]; + + delete _bink; _bink = 0; + _surface.free(); + + _audioTrack = 0; + + for (int i = 0; i < 16; i++) + _huffman[i] = 0; + + for (int i = 0; i < kSourceMAX; i++) { + _bundles[i].countLength = 0; + + _bundles[i].huffman.index = 0; + for (int j = 0; j < 16; j++) + _bundles[i].huffman.symbols[j] = j; + + _bundles[i].data = 0; + _bundles[i].dataEnd = 0; + _bundles[i].curDec = 0; + _bundles[i].curPtr = 0; + } + + for (int i = 0; i < 16; i++) { + _colHighHuffman[i].index = 0; + for (int j = 0; j < 16; j++) + _colHighHuffman[i].symbols[j] = j; + } + + for (int i = 0; i < 4; i++) { + _curPlanes[i] = 0; + _oldPlanes[i] = 0; + } +} + +uint32 BinkDecoder::getElapsedTime() const { + if (_audioStream && g_system->getMixer()->isSoundHandleActive(_audioHandle)) + return g_system->getMixer()->getSoundElapsedTime(_audioHandle); + + return g_system->getMillis() - _startTime; +} + +const Graphics::Surface *BinkDecoder::decodeNextFrame() { + if (endOfVideo()) + return 0; + + VideoFrame &frame = _frames[_curFrame + 1]; + + if (!_bink->seek(frame.offset)) + error("Bad bink seek"); + + uint32 frameSize = frame.size; + + for (uint32 i = 0; i < _audioTracks.size(); i++) { + AudioTrack &audio = _audioTracks[i]; + + uint32 audioPacketLength = _bink->readUint32LE(); + + frameSize -= 4; + + if (frameSize < audioPacketLength) + error("Audio packet too big for the frame"); + + if (audioPacketLength >= 4) { + if (i == _audioTrack) { + // Only play one audio track + + // Number of samples in bytes + audio.sampleCount = _bink->readUint32LE() / (2 * audio.channels); + + audio.bits = new Common::BitStream32LE(*_bink, (audioPacketLength - 4) * 8); + + audioPacket(audio); + + delete audio.bits; + audio.bits = 0; + + } else + // Skip the rest + _bink->skip(audioPacketLength); + + frameSize -= audioPacketLength; + } + } + + frame.bits = new Common::BitStream32LE(*_bink, frameSize * 8); + + videoPacket(frame); + + delete frame.bits; + frame.bits = 0; + + _curFrame++; + if (_curFrame == 0) + _startTime = g_system->getMillis(); + + if (!_audioStarted && _audioStream) { + _audioStarted = true; + g_system->getMixer()->playStream(Audio::Mixer::kPlainSoundType, &_audioHandle, _audioStream); + } + + return &_surface; +} + +void BinkDecoder::audioPacket(AudioTrack &audio) { + if (!_audioStream) + return; + + int outSize = audio.frameLen * audio.channels; + while (audio.bits->pos() < audio.bits->size()) { + int16 *out = new int16[outSize]; + memset(out, 0, outSize * 2); + + audioBlock(audio, out); + + byte flags = Audio::FLAG_16BITS; + if (audio.channels == 2) + flags |= Audio::FLAG_STEREO; + +#ifdef SCUMM_LITTLE_ENDIAN + flags |= Audio::FLAG_LITTLE_ENDIAN; +#endif + + _audioStream->queueBuffer((byte *)out, audio.blockSize * 2, DisposeAfterUse::YES, flags); + + if (audio.bits->pos() & 0x1F) // next data block starts at a 32-byte boundary + audio.bits->skip(32 - (audio.bits->pos() & 0x1F)); + } +} + +void BinkDecoder::videoPacket(VideoFrame &video) { + assert(video.bits); + + if (_hasAlpha) { + if (_id == kBIKiID) + video.bits->skip(32); + + decodePlane(video, 3, false); + } + + if (_id == kBIKiID) + video.bits->skip(32); + + for (int i = 0; i < 3; i++) { + int planeIdx = ((i == 0) || !_swapPlanes) ? i : (i ^ 3); + + decodePlane(video, planeIdx, i != 0); + + if (video.bits->pos() >= video.bits->size()) + break; + } + + // Convert the YUV data we have to our format + // We're ignoring alpha for now + assert(_curPlanes[0] && _curPlanes[1] && _curPlanes[2]); + Graphics::convertYUV420ToRGB(&_surface, _curPlanes[0], _curPlanes[1], _curPlanes[2], + _surface.w, _surface.h, _surface.w, _surface.w >> 1); + + // And swap the planes with the reference planes + for (int i = 0; i < 4; i++) + SWAP(_curPlanes[i], _oldPlanes[i]); +} + +void BinkDecoder::decodePlane(VideoFrame &video, int planeIdx, bool isChroma) { + + uint32 blockWidth = isChroma ? ((_surface.w + 15) >> 4) : ((_surface.w + 7) >> 3); + uint32 blockHeight = isChroma ? ((_surface.h + 15) >> 4) : ((_surface.h + 7) >> 3); + uint32 width = isChroma ? (_surface.w >> 1) : _surface.w; + uint32 height = isChroma ? (_surface.h >> 1) : _surface.h; + + DecodeContext ctx; + + ctx.video = &video; + ctx.planeIdx = planeIdx; + ctx.destStart = _curPlanes[planeIdx]; + ctx.destEnd = _curPlanes[planeIdx] + width * height; + ctx.prevStart = _oldPlanes[planeIdx]; + ctx.prevEnd = _oldPlanes[planeIdx] + width * height; + ctx.pitch = width; + + for (int i = 0; i < 64; i++) { + ctx.coordMap[i] = (i & 7) + (i >> 3) * ctx.pitch; + + ctx.coordScaledMap1[i] = ((i & 7) * 2 + 0) + (((i >> 3) * 2 + 0) * ctx.pitch); + ctx.coordScaledMap2[i] = ((i & 7) * 2 + 1) + (((i >> 3) * 2 + 0) * ctx.pitch); + ctx.coordScaledMap3[i] = ((i & 7) * 2 + 0) + (((i >> 3) * 2 + 1) * ctx.pitch); + ctx.coordScaledMap4[i] = ((i & 7) * 2 + 1) + (((i >> 3) * 2 + 1) * ctx.pitch); + } + + for (int i = 0; i < kSourceMAX; i++) { + _bundles[i].countLength = _bundles[i].countLengths[isChroma ? 1 : 0]; + + readBundle(video, (Source) i); + } + + for (ctx.blockY = 0; ctx.blockY < blockHeight; ctx.blockY++) { + readBlockTypes (video, _bundles[kSourceBlockTypes]); + readBlockTypes (video, _bundles[kSourceSubBlockTypes]); + readColors (video, _bundles[kSourceColors]); + readPatterns (video, _bundles[kSourcePattern]); + readMotionValues(video, _bundles[kSourceXOff]); + readMotionValues(video, _bundles[kSourceYOff]); + readDCS (video, _bundles[kSourceIntraDC], kDCStartBits, false); + readDCS (video, _bundles[kSourceInterDC], kDCStartBits, true); + readRuns (video, _bundles[kSourceRun]); + + ctx.dest = ctx.destStart + 8 * ctx.blockY * ctx.pitch; + ctx.prev = ctx.prevStart + 8 * ctx.blockY * ctx.pitch; + + for (ctx.blockX = 0; ctx.blockX < blockWidth; ctx.blockX++, ctx.dest += 8, ctx.prev += 8) { + BlockType blockType = (BlockType) getBundleValue(kSourceBlockTypes); + + // 16x16 block type on odd line means part of the already decoded block, so skip it + if ((ctx.blockY & 1) && (blockType == kBlockScaled)) { + ctx.blockX += 1; + ctx.dest += 8; + ctx.prev += 8; + continue; + } + + switch (blockType) { + case kBlockSkip: + blockSkip(ctx); + break; + + case kBlockScaled: + blockScaled(ctx); + break; + + case kBlockMotion: + blockMotion(ctx); + break; + + case kBlockRun: + blockRun(ctx); + break; + + case kBlockResidue: + blockResidue(ctx); + break; + + case kBlockIntra: + blockIntra(ctx); + break; + + case kBlockFill: + blockFill(ctx); + break; + + case kBlockInter: + blockInter(ctx); + break; + + case kBlockPattern: + blockPattern(ctx); + break; + + case kBlockRaw: + blockRaw(ctx); + break; + + default: + error("Unknown block type: %d", blockType); + } + + } + + } + + if (video.bits->pos() & 0x1F) // next plane data starts at 32-bit boundary + video.bits->skip(32 - (video.bits->pos() & 0x1F)); + +} + +void BinkDecoder::readBundle(VideoFrame &video, Source source) { + if (source == kSourceColors) { + for (int i = 0; i < 16; i++) + readHuffman(video, _colHighHuffman[i]); + + _colLastVal = 0; + } + + if ((source != kSourceIntraDC) && (source != kSourceInterDC)) + readHuffman(video, _bundles[source].huffman); + + _bundles[source].curDec = _bundles[source].data; + _bundles[source].curPtr = _bundles[source].data; +} + +void BinkDecoder::readHuffman(VideoFrame &video, Huffman &huffman) { + huffman.index = video.bits->getBits(4); + + if (huffman.index == 0) { + // The first tree always gives raw nibbles + + for (int i = 0; i < 16; i++) + huffman.symbols[i] = i; + + return; + } + + byte hasSymbol[16]; + + if (video.bits->getBit()) { + // Symbol selection + + memset(hasSymbol, 0, 16); + + uint8 length = video.bits->getBits(3); + for (int i = 0; i <= length; i++) { + huffman.symbols[i] = video.bits->getBits(4); + hasSymbol[huffman.symbols[i]] = 1; + } + + for (int i = 0; i < 16; i++) + if (hasSymbol[i] == 0) + huffman.symbols[++length] = i; + + return; + } + + // Symbol shuffling + + byte tmp1[16], tmp2[16]; + byte *in = tmp1, *out = tmp2; + + uint8 depth = video.bits->getBits(2); + + for (int i = 0; i < 16; i++) + in[i] = i; + + for (int i = 0; i <= depth; i++) { + int size = 1 << i; + + for (int j = 0; j < 16; j += (size << 1)) + mergeHuffmanSymbols(video, out + j, in + j, size); + + SWAP(in, out); + } + + memcpy(huffman.symbols, in, 16); +} + +void BinkDecoder::mergeHuffmanSymbols(VideoFrame &video, byte *dst, const byte *src, int size) { + const byte *src2 = src + size; + int size2 = size; + + do { + if (!video.bits->getBit()) { + *dst++ = *src++; + size--; + } else { + *dst++ = *src2++; + size2--; + } + + } while (size && size2); + + while (size--) + *dst++ = *src++; + while (size2--) + *dst++ = *src2++; +} + +bool BinkDecoder::loadStream(Common::SeekableReadStream *stream) { + close(); + + _id = stream->readUint32BE(); + if ((_id != kBIKfID) && (_id != kBIKgID) && (_id != kBIKhID) && (_id != kBIKiID)) + return false; + + uint32 fileSize = stream->readUint32LE() + 8; + uint32 frameCount = stream->readUint32LE(); + uint32 largestFrameSize = stream->readUint32LE(); + + if (largestFrameSize > fileSize) { + warning("Largest frame size greater than file size"); + return false; + } + + stream->skip(4); + + uint32 width = stream->readUint32LE(); + uint32 height = stream->readUint32LE(); + + uint32 frameRateNum = stream->readUint32LE(); + uint32 frameRateDen = stream->readUint32LE(); + if (frameRateNum == 0 || frameRateDen == 0) { + warning("Invalid frame rate (%d/%d)", frameRateNum, frameRateDen); + return false; + } + + _frameRate = Common::Rational(frameRateNum, frameRateDen); + _bink = stream; + + _videoFlags = _bink->readUint32LE(); + + uint32 audioTrackCount = _bink->readUint32LE(); + + if (audioTrackCount > 1) { + warning("More than one audio track found. Using the first one"); + + _audioTrack = 0; + } + + if (audioTrackCount > 0) { + _audioTracks.reserve(audioTrackCount); + + _bink->skip(4 * audioTrackCount); + + // Reading audio track properties + for (uint32 i = 0; i < audioTrackCount; i++) { + AudioTrack track; + + track.sampleRate = _bink->readUint16LE(); + track.flags = _bink->readUint16LE(); + + _audioTracks.push_back(track); + + initAudioTrack(_audioTracks[i]); + } + + _bink->skip(4 * audioTrackCount); + } + + // Reading video frame properties + _frames.resize(frameCount); + for (uint32 i = 0; i < frameCount; i++) { + _frames[i].offset = _bink->readUint32LE(); + _frames[i].keyFrame = _frames[i].offset & 1; + + _frames[i].offset &= ~1; + + if (i != 0) + _frames[i - 1].size = _frames[i].offset - _frames[i - 1].offset; + + _frames[i].bits = 0; + } + + _frames[frameCount - 1].size = _bink->size() - _frames[frameCount - 1].offset; + + _hasAlpha = _videoFlags & kVideoFlagAlpha; + _swapPlanes = (_id == kBIKhID) || (_id == kBIKiID); // BIKh and BIKi swap the chroma planes + + Graphics::PixelFormat format = g_system->getScreenFormat(); + _surface.create(width, height, format); + + // Give the planes a bit extra space + width = _surface.w + 32; + height = _surface.h + 32; + + _curPlanes[0] = new byte[ width * height ]; // Y + _curPlanes[1] = new byte[(width >> 1) * (height >> 1)]; // U, 1/4 resolution + _curPlanes[2] = new byte[(width >> 1) * (height >> 1)]; // V, 1/4 resolution + _curPlanes[3] = new byte[ width * height ]; // A + _oldPlanes[0] = new byte[ width * height ]; // Y + _oldPlanes[1] = new byte[(width >> 1) * (height >> 1)]; // U, 1/4 resolution + _oldPlanes[2] = new byte[(width >> 1) * (height >> 1)]; // V, 1/4 resolution + _oldPlanes[3] = new byte[ width * height ]; // A + + // Initialize the video with solid black + memset(_curPlanes[0], 0, width * height ); + memset(_curPlanes[1], 0, (width >> 1) * (height >> 1)); + memset(_curPlanes[2], 0, (width >> 1) * (height >> 1)); + memset(_curPlanes[3], 255, width * height ); + memset(_oldPlanes[0], 0, width * height ); + memset(_oldPlanes[1], 0, (width >> 1) * (height >> 1)); + memset(_oldPlanes[2], 0, (width >> 1) * (height >> 1)); + memset(_oldPlanes[3], 255, width * height ); + + initBundles(); + initHuffman(); + + if (_audioTrack < _audioTracks.size()) { + const AudioTrack &audio = _audioTracks[_audioTrack]; + + _audioStream = Audio::makeQueuingAudioStream(audio.outSampleRate, audio.outChannels == 2); + } + + return true; +} + +void BinkDecoder::initAudioTrack(AudioTrack &audio) { + audio.sampleCount = 0; + audio.bits = 0; + + audio.channels = ((audio.flags & kAudioFlagStereo) != 0) ? 2 : 1; + audio.codec = ((audio.flags & kAudioFlagDCT ) != 0) ? kAudioCodecDCT : kAudioCodecRDFT; + + if (audio.channels > kAudioChannelsMax) + error("Too many audio channels: %d", audio.channels); + + uint32 frameLenBits; + // Calculate frame length + if (audio.sampleRate < 22050) + frameLenBits = 9; + else if(audio.sampleRate < 44100) + frameLenBits = 10; + else + frameLenBits = 11; + + audio.frameLen = 1 << frameLenBits; + + audio.outSampleRate = audio.sampleRate; + audio.outChannels = audio.channels; + + if (audio.codec == kAudioCodecRDFT) { + // RDFT audio already interleaves the samples correctly + + if (audio.channels == 2) + frameLenBits++; + + audio.sampleRate *= audio.channels; + audio.frameLen *= audio.channels; + audio.channels = 1; + } + + audio.overlapLen = audio.frameLen / 16; + audio.blockSize = (audio.frameLen - audio.overlapLen) * audio.channels; + audio.root = 2.0 / sqrt(audio.frameLen); + + uint32 sampleRateHalf = (audio.sampleRate + 1) / 2; + + // Calculate number of bands + for (audio.bandCount = 1; audio.bandCount < 25; audio.bandCount++) + if (sampleRateHalf <= binkCriticalFreqs[audio.bandCount - 1]) + break; + + audio.bands = new uint32[audio.bandCount + 1]; + + // Populate bands + audio.bands[0] = 1; + for (uint32 i = 1; i < audio.bandCount; i++) + audio.bands[i] = binkCriticalFreqs[i - 1] * (audio.frameLen / 2) / sampleRateHalf; + audio.bands[audio.bandCount] = audio.frameLen / 2; + + audio.first = true; + + for (uint8 i = 0; i < audio.channels; i++) + audio.coeffsPtr[i] = audio.coeffs + i * audio.frameLen; + + audio.codec = ((audio.flags & kAudioFlagDCT) != 0) ? kAudioCodecDCT : kAudioCodecRDFT; + + if (audio.codec == kAudioCodecRDFT) + audio.rdft = new Common::RDFT(frameLenBits, Common::RDFT::DFT_C2R); + else if (audio.codec == kAudioCodecDCT) + audio.dct = new Common::DCT(frameLenBits, Common::DCT::DCT_III); +} + +void BinkDecoder::initBundles() { + uint32 bw = (_surface.w + 7) >> 3; + uint32 bh = (_surface.h + 7) >> 3; + uint32 blocks = bw * bh; + + for (int i = 0; i < kSourceMAX; i++) { + _bundles[i].data = new byte[blocks * 64]; + _bundles[i].dataEnd = _bundles[i].data + blocks * 64; + } + + uint32 cbw[2] = { (_surface.w + 7) >> 3, (_surface.w + 15) >> 4 }; + uint32 cw [2] = { _surface.w , _surface.w >> 1 }; + + // Calculate the lengths of an element count in bits + for (int i = 0; i < 2; i++) { + int width = MAX(cw[i], 8); + + _bundles[kSourceBlockTypes ].countLengths[i] = Common::log2((width >> 3) + 511) + 1; + _bundles[kSourceSubBlockTypes].countLengths[i] = Common::log2((width >> 4) + 511) + 1; + _bundles[kSourceColors ].countLengths[i] = Common::log2((width >> 3)*64 + 511) + 1; + _bundles[kSourceIntraDC ].countLengths[i] = Common::log2((width >> 3) + 511) + 1; + _bundles[kSourceInterDC ].countLengths[i] = Common::log2((width >> 3) + 511) + 1; + _bundles[kSourceXOff ].countLengths[i] = Common::log2((width >> 3) + 511) + 1; + _bundles[kSourceYOff ].countLengths[i] = Common::log2((width >> 3) + 511) + 1; + _bundles[kSourcePattern ].countLengths[i] = Common::log2((cbw[i] << 3) + 511) + 1; + _bundles[kSourceRun ].countLengths[i] = Common::log2((width >> 3)*48 + 511) + 1; + } +} + +void BinkDecoder::deinitBundles() { + for (int i = 0; i < kSourceMAX; i++) + delete[] _bundles[i].data; +} + +void BinkDecoder::initHuffman() { + for (int i = 0; i < 16; i++) + _huffman[i] = new Common::Huffman(binkHuffmanLengths[i][15], 16, binkHuffmanCodes[i], binkHuffmanLengths[i]); +} + +byte BinkDecoder::getHuffmanSymbol(VideoFrame &video, Huffman &huffman) { + return huffman.symbols[_huffman[huffman.index]->getSymbol(*video.bits)]; +} + +int32 BinkDecoder::getBundleValue(Source source) { + if ((source < kSourceXOff) || (source == kSourceRun)) + return *_bundles[source].curPtr++; + + if ((source == kSourceXOff) || (source == kSourceYOff)) + return (int8) *_bundles[source].curPtr++; + + int16 ret = *((int16 *) _bundles[source].curPtr); + + _bundles[source].curPtr += 2; + + return ret; +} + +uint32 BinkDecoder::readBundleCount(VideoFrame &video, Bundle &bundle) { + if (!bundle.curDec || (bundle.curDec > bundle.curPtr)) + return 0; + + uint32 n = video.bits->getBits(bundle.countLength); + if (n == 0) + bundle.curDec = 0; + + return n; +} + +void BinkDecoder::blockSkip(DecodeContext &ctx) { + byte *dest = ctx.dest; + byte *prev = ctx.prev; + + for (int j = 0; j < 8; j++, dest += ctx.pitch, prev += ctx.pitch) + memcpy(dest, prev, 8); +} + +void BinkDecoder::blockScaledSkip(DecodeContext &ctx) { + byte *dest = ctx.dest; + byte *prev = ctx.prev; + + for (int j = 0; j < 16; j++, dest += ctx.pitch, prev += ctx.pitch) + memcpy(dest, prev, 16); +} + +void BinkDecoder::blockScaledRun(DecodeContext &ctx) { + const uint8 *scan = binkPatterns[ctx.video->bits->getBits(4)]; + + int i = 0; + do { + int run = getBundleValue(kSourceRun) + 1; + + i += run; + if (i > 64) + error("Run went out of bounds"); + + if (ctx.video->bits->getBit()) { + + byte v = getBundleValue(kSourceColors); + for (int j = 0; j < run; j++, scan++) + ctx.dest[ctx.coordScaledMap1[*scan]] = + ctx.dest[ctx.coordScaledMap2[*scan]] = + ctx.dest[ctx.coordScaledMap3[*scan]] = + ctx.dest[ctx.coordScaledMap4[*scan]] = v; + + } else + for (int j = 0; j < run; j++, scan++) + ctx.dest[ctx.coordScaledMap1[*scan]] = + ctx.dest[ctx.coordScaledMap2[*scan]] = + ctx.dest[ctx.coordScaledMap3[*scan]] = + ctx.dest[ctx.coordScaledMap4[*scan]] = getBundleValue(kSourceColors); + + } while (i < 63); + + if (i == 63) + ctx.dest[ctx.coordScaledMap1[*scan]] = + ctx.dest[ctx.coordScaledMap2[*scan]] = + ctx.dest[ctx.coordScaledMap3[*scan]] = + ctx.dest[ctx.coordScaledMap4[*scan]] = getBundleValue(kSourceColors); +} + +void BinkDecoder::blockScaledIntra(DecodeContext &ctx) { + int16 block[64]; + memset(block, 0, 64 * sizeof(int16)); + + block[0] = getBundleValue(kSourceIntraDC); + + readDCTCoeffs(*ctx.video, block, true); + + IDCT(block); + + int16 *src = block; + byte *dest1 = ctx.dest; + byte *dest2 = ctx.dest + ctx.pitch; + for (int j = 0; j < 8; j++, dest1 += (ctx.pitch << 1) - 16, dest2 += (ctx.pitch << 1) - 16, src += 8) { + + for (int i = 0; i < 8; i++, dest1 += 2, dest2 += 2) + dest1[0] = dest1[1] = dest2[0] = dest2[1] = src[i]; + + } +} + +void BinkDecoder::blockScaledFill(DecodeContext &ctx) { + byte v = getBundleValue(kSourceColors); + + byte *dest = ctx.dest; + for (int i = 0; i < 16; i++, dest += ctx.pitch) + memset(dest, v, 16); +} + +void BinkDecoder::blockScaledPattern(DecodeContext &ctx) { + byte col[2]; + + for (int i = 0; i < 2; i++) + col[i] = getBundleValue(kSourceColors); + + byte *dest1 = ctx.dest; + byte *dest2 = ctx.dest + ctx.pitch; + for (int j = 0; j < 8; j++, dest1 += (ctx.pitch << 1) - 16, dest2 += (ctx.pitch << 1) - 16) { + byte v = getBundleValue(kSourcePattern); + + for (int i = 0; i < 8; i++, dest1 += 2, dest2 += 2, v >>= 1) + dest1[0] = dest1[1] = dest2[0] = dest2[1] = col[v & 1]; + } +} + +void BinkDecoder::blockScaledRaw(DecodeContext &ctx) { + byte row[8]; + + byte *dest1 = ctx.dest; + byte *dest2 = ctx.dest + ctx.pitch; + for (int j = 0; j < 8; j++, dest1 += (ctx.pitch << 1) - 16, dest2 += (ctx.pitch << 1) - 16) { + memcpy(row, _bundles[kSourceColors].curPtr, 8); + + for (int i = 0; i < 8; i++, dest1 += 2, dest2 += 2) + dest1[0] = dest1[1] = dest2[0] = dest2[1] = row[i]; + + _bundles[kSourceColors].curPtr += 8; + } +} + +void BinkDecoder::blockScaled(DecodeContext &ctx) { + BlockType blockType = (BlockType) getBundleValue(kSourceSubBlockTypes); + + switch (blockType) { + case kBlockRun: + blockScaledRun(ctx); + break; + + case kBlockIntra: + blockScaledIntra(ctx); + break; + + case kBlockFill: + blockScaledFill(ctx); + break; + + case kBlockPattern: + blockScaledPattern(ctx); + break; + + case kBlockRaw: + blockScaledRaw(ctx); + break; + + default: + error("Invalid 16x16 block type: %d", blockType); + } + + ctx.blockX += 1; + ctx.dest += 8; + ctx.prev += 8; +} + +void BinkDecoder::blockMotion(DecodeContext &ctx) { + int8 xOff = getBundleValue(kSourceXOff); + int8 yOff = getBundleValue(kSourceYOff); + + byte *dest = ctx.dest; + byte *prev = ctx.prev + yOff * ((int32) ctx.pitch) + xOff; + if ((prev < ctx.prevStart) || (prev > ctx.prevEnd)) + error("Copy out of bounds (%d | %d)", ctx.blockX * 8 + xOff, ctx.blockY * 8 + yOff); + + for (int j = 0; j < 8; j++, dest += ctx.pitch, prev += ctx.pitch) + memcpy(dest, prev, 8); +} + +void BinkDecoder::blockRun(DecodeContext &ctx) { + const uint8 *scan = binkPatterns[ctx.video->bits->getBits(4)]; + + int i = 0; + do { + int run = getBundleValue(kSourceRun) + 1; + + i += run; + if (i > 64) + error("Run went out of bounds"); + + if (ctx.video->bits->getBit()) { + + byte v = getBundleValue(kSourceColors); + for (int j = 0; j < run; j++) + ctx.dest[ctx.coordMap[*scan++]] = v; + + } else + for (int j = 0; j < run; j++) + ctx.dest[ctx.coordMap[*scan++]] = getBundleValue(kSourceColors); + + } while (i < 63); + + if (i == 63) + ctx.dest[ctx.coordMap[*scan++]] = getBundleValue(kSourceColors); +} + +void BinkDecoder::blockResidue(DecodeContext &ctx) { + blockMotion(ctx); + + byte v = ctx.video->bits->getBits(7); + + int16 block[64]; + memset(block, 0, 64 * sizeof(int16)); + + readResidue(*ctx.video, block, v); + + byte *dst = ctx.dest; + int16 *src = block; + for (int i = 0; i < 8; i++, dst += ctx.pitch, src += 8) + for (int j = 0; j < 8; j++) + dst[j] += src[j]; +} + +void BinkDecoder::blockIntra(DecodeContext &ctx) { + int16 block[64]; + memset(block, 0, 64 * sizeof(int16)); + + block[0] = getBundleValue(kSourceIntraDC); + + readDCTCoeffs(*ctx.video, block, true); + + IDCTPut(ctx, block); +} + +void BinkDecoder::blockFill(DecodeContext &ctx) { + byte v = getBundleValue(kSourceColors); + + byte *dest = ctx.dest; + for (int i = 0; i < 8; i++, dest += ctx.pitch) + memset(dest, v, 8); +} + +void BinkDecoder::blockInter(DecodeContext &ctx) { + blockMotion(ctx); + + int16 block[64]; + memset(block, 0, 64 * sizeof(int16)); + + block[0] = getBundleValue(kSourceInterDC); + + readDCTCoeffs(*ctx.video, block, false); + + IDCTAdd(ctx, block); +} + +void BinkDecoder::blockPattern(DecodeContext &ctx) { + byte col[2]; + + for (int i = 0; i < 2; i++) + col[i] = getBundleValue(kSourceColors); + + byte *dest = ctx.dest; + for (int i = 0; i < 8; i++, dest += ctx.pitch - 8) { + byte v = getBundleValue(kSourcePattern); + + for (int j = 0; j < 8; j++, v >>= 1) + *dest++ = col[v & 1]; + } +} + +void BinkDecoder::blockRaw(DecodeContext &ctx) { + byte *dest = ctx.dest; + byte *data = _bundles[kSourceColors].curPtr; + for (int i = 0; i < 8; i++, dest += ctx.pitch, data += 8) + memcpy(dest, data, 8); + + _bundles[kSourceColors].curPtr += 64; +} + +void BinkDecoder::readRuns(VideoFrame &video, Bundle &bundle) { + uint32 n = readBundleCount(video, bundle); + if (n == 0) + return; + + byte *decEnd = bundle.curDec + n; + if (decEnd > bundle.dataEnd) + error("Run value went out of bounds"); + + if (video.bits->getBit()) { + byte v = video.bits->getBits(4); + + memset(bundle.curDec, v, n); + bundle.curDec += n; + + } else + while (bundle.curDec < decEnd) + *bundle.curDec++ = getHuffmanSymbol(video, bundle.huffman); +} + +void BinkDecoder::readMotionValues(VideoFrame &video, Bundle &bundle) { + uint32 n = readBundleCount(video, bundle); + if (n == 0) + return; + + byte *decEnd = bundle.curDec + n; + if (decEnd > bundle.dataEnd) + error("Too many motion values"); + + if (video.bits->getBit()) { + byte v = video.bits->getBits(4); + + if (v) { + int sign = -video.bits->getBit(); + v = (v ^ sign) - sign; + } + + memset(bundle.curDec, v, n); + + bundle.curDec += n; + return; + } + + do { + byte v = getHuffmanSymbol(video, bundle.huffman); + + if (v) { + int sign = -video.bits->getBit(); + v = (v ^ sign) - sign; + } + + *bundle.curDec++ = v; + + } while (bundle.curDec < decEnd); +} + +const uint8 rleLens[4] = { 4, 8, 12, 32 }; +void BinkDecoder::readBlockTypes(VideoFrame &video, Bundle &bundle) { + uint32 n = readBundleCount(video, bundle); + if (n == 0) + return; + + byte *decEnd = bundle.curDec + n; + if (decEnd > bundle.dataEnd) + error("Too many block type values"); + + if (video.bits->getBit()) { + byte v = video.bits->getBits(4); + + memset(bundle.curDec, v, n); + + bundle.curDec += n; + return; + } + + byte last = 0; + do { + + byte v = getHuffmanSymbol(video, bundle.huffman); + + if (v < 12) { + last = v; + *bundle.curDec++ = v; + } else { + int run = rleLens[v - 12]; + + memset(bundle.curDec, last, run); + + bundle.curDec += run; + } + + } while (bundle.curDec < decEnd); +} + +void BinkDecoder::readPatterns(VideoFrame &video, Bundle &bundle) { + uint32 n = readBundleCount(video, bundle); + if (n == 0) + return; + + byte *decEnd = bundle.curDec + n; + if (decEnd > bundle.dataEnd) + error("Too many pattern values"); + + byte v; + while (bundle.curDec < decEnd) { + v = getHuffmanSymbol(video, bundle.huffman); + v |= getHuffmanSymbol(video, bundle.huffman) << 4; + *bundle.curDec++ = v; + } +} + + +void BinkDecoder::readColors(VideoFrame &video, Bundle &bundle) { + uint32 n = readBundleCount(video, bundle); + if (n == 0) + return; + + byte *decEnd = bundle.curDec + n; + if (decEnd > bundle.dataEnd) + error("Too many color values"); + + if (video.bits->getBit()) { + _colLastVal = getHuffmanSymbol(video, _colHighHuffman[_colLastVal]); + + byte v; + v = getHuffmanSymbol(video, bundle.huffman); + v = (_colLastVal << 4) | v; + + if (_id != kBIKiID) { + int sign = ((int8) v) >> 7; + v = ((v & 0x7F) ^ sign) - sign; + v += 0x80; + } + + memset(bundle.curDec, v, n); + bundle.curDec += n; + + return; + } + + while (bundle.curDec < decEnd) { + _colLastVal = getHuffmanSymbol(video, _colHighHuffman[_colLastVal]); + + byte v; + v = getHuffmanSymbol(video, bundle.huffman); + v = (_colLastVal << 4) | v; + + if (_id != kBIKiID) { + int sign = ((int8) v) >> 7; + v = ((v & 0x7F) ^ sign) - sign; + v += 0x80; + } + *bundle.curDec++ = v; + } +} + +void BinkDecoder::readDCS(VideoFrame &video, Bundle &bundle, int startBits, bool hasSign) { + uint32 length = readBundleCount(video, bundle); + if (length == 0) + return; + + int16 *dest = (int16 *) bundle.curDec; + + int32 v = video.bits->getBits(startBits - (hasSign ? 1 : 0)); + if (v && hasSign) { + int sign = -video.bits->getBit(); + v = (v ^ sign) - sign; + } + + *dest++ = v; + length--; + + for (uint32 i = 0; i < length; i += 8) { + uint32 length2 = MIN(length - i, 8); + + byte bSize = video.bits->getBits(4); + + if (bSize) { + + for (uint32 j = 0; j < length2; j++) { + int16 v2 = video.bits->getBits(bSize); + if (v2) { + int sign = -video.bits->getBit(); + v2 = (v2 ^ sign) - sign; + } + + v += v2; + *dest++ = v; + + if ((v < -32768) || (v > 32767)) + error("DC value went out of bounds: %d", v); + } + + } else + for (uint32 j = 0; j < length2; j++) + *dest++ = v; + } + + bundle.curDec = (byte *) dest; +} + +/** Reads 8x8 block of DCT coefficients. */ +void BinkDecoder::readDCTCoeffs(VideoFrame &video, int16 *block, bool isIntra) { + int coefCount = 0; + int coefIdx[64]; + + int listStart = 64; + int listEnd = 64; + + int coefList[128]; int modeList[128]; + coefList[listEnd] = 4; modeList[listEnd++] = 0; + coefList[listEnd] = 24; modeList[listEnd++] = 0; + coefList[listEnd] = 44; modeList[listEnd++] = 0; + coefList[listEnd] = 1; modeList[listEnd++] = 3; + coefList[listEnd] = 2; modeList[listEnd++] = 3; + coefList[listEnd] = 3; modeList[listEnd++] = 3; + + int bits = video.bits->getBits(4) - 1; + for (int mask = 1 << bits; bits >= 0; mask >>= 1, bits--) { + int listPos = listStart; + + while (listPos < listEnd) { + + if (!(modeList[listPos] | coefList[listPos]) || !video.bits->getBit()) { + listPos++; + continue; + } + + int ccoef = coefList[listPos]; + int mode = modeList[listPos]; + + switch (mode) { + case 0: + coefList[listPos] = ccoef + 4; + modeList[listPos] = 1; + case 2: + if (mode == 2) { + coefList[listPos] = 0; + modeList[listPos++] = 0; + } + for (int i = 0; i < 4; i++, ccoef++) { + if (video.bits->getBit()) { + coefList[--listStart] = ccoef; + modeList[ listStart] = 3; + } else { + int t; + if (!bits) { + t = 1 - (video.bits->getBit() << 1); + } else { + t = video.bits->getBits(bits) | mask; + + int sign = -video.bits->getBit(); + t = (t ^ sign) - sign; + } + block[binkScan[ccoef]] = t; + coefIdx[coefCount++] = ccoef; + } + } + break; + + case 1: + modeList[listPos] = 2; + for (int i = 0; i < 3; i++) { + ccoef += 4; + coefList[listEnd] = ccoef; + modeList[listEnd++] = 2; + } + break; + + case 3: + int t; + if (!bits) { + t = 1 - (video.bits->getBit() << 1); + } else { + t = video.bits->getBits(bits) | mask; + + int sign = -video.bits->getBit(); + t = (t ^ sign) - sign; + } + block[binkScan[ccoef]] = t; + coefIdx[coefCount++] = ccoef; + coefList[listPos] = 0; + modeList[listPos++] = 0; + break; + } + } + } + + uint8 quantIdx = video.bits->getBits(4); + const uint32 *quant = isIntra ? binkIntraQuant[quantIdx] : binkInterQuant[quantIdx]; + block[0] = (block[0] * quant[0]) >> 11; + + for (int i = 0; i < coefCount; i++) { + int idx = coefIdx[i]; + block[binkScan[idx]] = (block[binkScan[idx]] * quant[idx]) >> 11; + } + +} + +/** Reads 8x8 block with residue after motion compensation. */ +void BinkDecoder::readResidue(VideoFrame &video, int16 *block, int masksCount) { + int nzCoeff[64]; + int nzCoeffCount = 0; + + int listStart = 64; + int listEnd = 64; + + int coefList[128]; int modeList[128]; + coefList[listEnd] = 4; modeList[listEnd++] = 0; + coefList[listEnd] = 24; modeList[listEnd++] = 0; + coefList[listEnd] = 44; modeList[listEnd++] = 0; + coefList[listEnd] = 0; modeList[listEnd++] = 2; + + for (int mask = 1 << video.bits->getBits(3); mask; mask >>= 1) { + + for (int i = 0; i < nzCoeffCount; i++) { + if (!video.bits->getBit()) + continue; + if (block[nzCoeff[i]] < 0) + block[nzCoeff[i]] -= mask; + else + block[nzCoeff[i]] += mask; + masksCount--; + if (masksCount < 0) + return; + } + + int listPos = listStart; + while (listPos < listEnd) { + + if (!(coefList[listPos] | modeList[listPos]) || !video.bits->getBit()) { + listPos++; + continue; + } + + int ccoef = coefList[listPos]; + int mode = modeList[listPos]; + + switch (mode) { + case 0: + coefList[listPos] = ccoef + 4; + modeList[listPos] = 1; + case 2: + if (mode == 2) { + coefList[listPos] = 0; + modeList[listPos++] = 0; + } + + for (int i = 0; i < 4; i++, ccoef++) { + if (video.bits->getBit()) { + coefList[--listStart] = ccoef; + modeList[ listStart] = 3; + } else { + nzCoeff[nzCoeffCount++] = binkScan[ccoef]; + + int sign = -video.bits->getBit(); + block[binkScan[ccoef]] = (mask ^ sign) - sign; + + masksCount--; + if (masksCount < 0) + return; + } + } + break; + + case 1: + modeList[listPos] = 2; + for (int i = 0; i < 3; i++) { + ccoef += 4; + coefList[listEnd] = ccoef; + modeList[listEnd++] = 2; + } + break; + + case 3: + nzCoeff[nzCoeffCount++] = binkScan[ccoef]; + + int sign = -video.bits->getBit(); + block[binkScan[ccoef]] = (mask ^ sign) - sign; + + coefList[listPos] = 0; + modeList[listPos++] = 0; + masksCount--; + if (masksCount < 0) + return; + break; + } + } + } +} + +float BinkDecoder::getFloat(AudioTrack &audio) { + int power = audio.bits->getBits(5); + + float f = ldexpf(audio.bits->getBits(23), power - 23); + + if (audio.bits->getBit()) + f = -f; + + return f; +} + +void BinkDecoder::audioBlock(AudioTrack &audio, int16 *out) { + if (audio.codec == kAudioCodecDCT) + audioBlockDCT (audio); + else if (audio.codec == kAudioCodecRDFT) + audioBlockRDFT(audio); + + for (uint32 i = 0; i < audio.channels; i++) + for (uint32 j = 0; j < audio.frameLen; j++) + audio.coeffsPtr[i][j] = 385.0 + audio.coeffsPtr[i][j] * (1.0 / 32767.0); + + floatToInt16Interleave(out, (const float **)audio.coeffsPtr, audio.frameLen, audio.channels); + + if (!audio.first) { + int count = audio.overlapLen * audio.channels; + int shift = Common::log2(count); + for (int i = 0; i < count; i++) { + out[i] = (audio.prevCoeffs[i] * (count - i) + out[i] * i) >> shift; + } + } + + memcpy(audio.prevCoeffs, out + audio.blockSize, audio.overlapLen * audio.channels * sizeof(*out)); + + audio.first = false; +} + +void BinkDecoder::audioBlockDCT(AudioTrack &audio) { + audio.bits->skip(2); + + for (uint8 i = 0; i < audio.channels; i++) { + float *coeffs = audio.coeffsPtr[i]; + + readAudioCoeffs(audio, coeffs); + + coeffs[0] /= 0.5; + + audio.dct->calc(coeffs); + + for (uint32 j = 0; j < audio.frameLen; j++) + coeffs[j] *= (audio.frameLen / 2.0); + } + +} + +void BinkDecoder::audioBlockRDFT(AudioTrack &audio) { + for (uint8 i = 0; i < audio.channels; i++) { + float *coeffs = audio.coeffsPtr[i]; + + readAudioCoeffs(audio, coeffs); + + audio.rdft->calc(coeffs); + } +} + +static const uint8 rleLengthTab[16] = { + 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 32, 64 +}; + +void BinkDecoder::readAudioCoeffs(AudioTrack &audio, float *coeffs) { + coeffs[0] = getFloat(audio) * audio.root; + coeffs[1] = getFloat(audio) * audio.root; + + float quant[25]; + + for (uint32 i = 0; i < audio.bandCount; i++) { + int value = audio.bits->getBits(8); + + // 0.066399999 / log10(M_E) + quant[i] = expf(MIN(value, 95) * 0.15289164787221953823f) * audio.root; + } + + float q = 0.0; + + // Find band (k) + int k; + for (k = 0; audio.bands[k] < 1; k++) + q = quant[k]; + + // Parse coefficients + uint32 i = 2; + while (i < audio.frameLen) { + + uint32 j = 0; + if (audio.bits->getBit()) + j = i + rleLengthTab[audio.bits->getBits(4)] * 8; + else + j = i + 8; + + j = MIN(j, audio.frameLen); + + int width = audio.bits->getBits(4); + if (width == 0) { + + memset(coeffs + i, 0, (j - i) * sizeof(*coeffs)); + i = j; + while (audio.bands[k] * 2 < i) + q = quant[k++]; + + } else { + + while (i < j) { + if (audio.bands[k] * 2 == i) + q = quant[k++]; + + int coeff = audio.bits->getBits(width); + if (coeff) { + + if (audio.bits->getBit()) + coeffs[i] = -q * coeff; + else + coeffs[i] = q * coeff; + + } else { + coeffs[i] = 0.0; + } + i++; + } + + } + + } + +} + +static inline int floatToInt16One(const float *src) { + int32 tmp = *(const int32 *) src; + + if (tmp & 0xF0000) + tmp = (0x43C0FFFF - tmp) >> 31; + + return tmp - 0x8000; +} + +void BinkDecoder::floatToInt16Interleave(int16 *dst, const float **src, uint32 length, uint8 channels) { + if (channels == 2) { + for (uint32 i = 0; i < length; i++) { + dst[2 * i ] = TO_LE_16(floatToInt16One(src[0] + i)); + dst[2 * i + 1] = TO_LE_16(floatToInt16One(src[1] + i)); + } + } else { + for(uint8 c = 0; c < channels; c++) + for(uint32 i = 0, j = c; i < length; i++, j += channels) + dst[j] = TO_LE_16(floatToInt16One(src[c] + i)); + } +} + +#define A1 2896 /* (1/sqrt(2))<<12 */ +#define A2 2217 +#define A3 3784 +#define A4 -5352 + +#define IDCT_TRANSFORM(dest,s0,s1,s2,s3,s4,s5,s6,s7,d0,d1,d2,d3,d4,d5,d6,d7,munge,src) {\ + const int a0 = (src)[s0] + (src)[s4]; \ + const int a1 = (src)[s0] - (src)[s4]; \ + const int a2 = (src)[s2] + (src)[s6]; \ + const int a3 = (A1*((src)[s2] - (src)[s6])) >> 11; \ + const int a4 = (src)[s5] + (src)[s3]; \ + const int a5 = (src)[s5] - (src)[s3]; \ + const int a6 = (src)[s1] + (src)[s7]; \ + const int a7 = (src)[s1] - (src)[s7]; \ + const int b0 = a4 + a6; \ + const int b1 = (A3*(a5 + a7)) >> 11; \ + const int b2 = ((A4*a5) >> 11) - b0 + b1; \ + const int b3 = (A1*(a6 - a4) >> 11) - b2; \ + const int b4 = ((A2*a7) >> 11) + b3 - b1; \ + (dest)[d0] = munge(a0+a2 +b0); \ + (dest)[d1] = munge(a1+a3-a2+b2); \ + (dest)[d2] = munge(a1-a3+a2+b3); \ + (dest)[d3] = munge(a0-a2 -b4); \ + (dest)[d4] = munge(a0-a2 +b4); \ + (dest)[d5] = munge(a1-a3+a2-b3); \ + (dest)[d6] = munge(a1+a3-a2-b2); \ + (dest)[d7] = munge(a0+a2 -b0); \ +} +/* end IDCT_TRANSFORM macro */ + +#define MUNGE_NONE(x) (x) +#define IDCT_COL(dest,src) IDCT_TRANSFORM(dest,0,8,16,24,32,40,48,56,0,8,16,24,32,40,48,56,MUNGE_NONE,src) + +#define MUNGE_ROW(x) (((x) + 0x7F)>>8) +#define IDCT_ROW(dest,src) IDCT_TRANSFORM(dest,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,MUNGE_ROW,src) + +static inline void IDCTCol(int16 *dest, const int16 *src) +{ + if ((src[8] | src[16] | src[24] | src[32] | src[40] | src[48] | src[56]) == 0) { + dest[ 0] = + dest[ 8] = + dest[16] = + dest[24] = + dest[32] = + dest[40] = + dest[48] = + dest[56] = src[0]; + } else { + IDCT_COL(dest, src); + } +} + +void BinkDecoder::IDCT(int16 *block) { + int i; + int16 temp[64]; + + for (i = 0; i < 8; i++) + IDCTCol(&temp[i], &block[i]); + for (i = 0; i < 8; i++) { + IDCT_ROW( (&block[8*i]), (&temp[8*i]) ); + } +} + +void BinkDecoder::IDCTAdd(DecodeContext &ctx, int16 *block) { + int i, j; + + IDCT(block); + byte *dest = ctx.dest; + for (i = 0; i < 8; i++, dest += ctx.pitch, block += 8) + for (j = 0; j < 8; j++) + dest[j] += block[j]; +} + +void BinkDecoder::IDCTPut(DecodeContext &ctx, int16 *block) { + int i; + int16 temp[64]; + for (i = 0; i < 8; i++) + IDCTCol(&temp[i], &block[i]); + for (i = 0; i < 8; i++) { + IDCT_ROW( (&ctx.dest[i*ctx.pitch]), (&temp[8*i]) ); + } +} + +} // End of namespace Video diff --git a/video/bink_decoder.h b/video/bink_decoder.h new file mode 100644 index 00000000000..e15cabb4265 --- /dev/null +++ b/video/bink_decoder.h @@ -0,0 +1,323 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Based on eos' Bink decoder which is in turn +// based quite heavily on the Bink decoder found in FFmpeg. +// Many thanks to Kostya Shishkov for doing the hard work. + +#ifndef VIDEO_BINK_DECODER_H +#define VIDEO_BINK_DECODER_H + +#include "audio/audiostream.h" +#include "audio/mixer.h" +#include "common/array.h" +#include "common/rational.h" + +#include "video/video_decoder.h" + +namespace Common { + class SeekableReadStream; + class BitStream; + class Huffman; + + class RDFT; + class DCT; +} + +namespace Video { + +/** A decoder for RAD Game Tools' Bink videos. */ +class BinkDecoder : public FixedRateVideoDecoder { +public: + BinkDecoder(); + ~BinkDecoder(); + + // VideoDecoder API + bool loadStream(Common::SeekableReadStream *stream); + void close(); + bool isVideoLoaded() const { return _bink != 0; } + uint16 getWidth() const { return _surface.w; } + uint16 getHeight() const { return _surface.h; } + Graphics::PixelFormat getPixelFormat() const { return _surface.format; } + uint32 getFrameCount() const { return _frames.size(); } + uint32 getElapsedTime() const; + const Graphics::Surface *decodeNextFrame(); + + // FixedRateVideoDecoder + Common::Rational getFrameRate() const { return _frameRate; } + +private: + static const int kAudioChannelsMax = 2; + static const int kAudioBlockSizeMax = (kAudioChannelsMax << 11); + + /** IDs for different data types used in Bink video codec. */ + enum Source { + kSourceBlockTypes = 0, ///< 8x8 block types. + kSourceSubBlockTypes , ///< 16x16 block types (a subset of 8x8 block types). + kSourceColors , ///< Pixel values used for different block types. + kSourcePattern , ///< 8-bit values for 2-color pattern fill. + kSourceXOff , ///< X components of motion value. + kSourceYOff , ///< Y components of motion value. + kSourceIntraDC , ///< DC values for intrablocks with DCT. + kSourceInterDC , ///< DC values for interblocks with DCT. + kSourceRun , ///< Run lengths for special fill block. + + kSourceMAX + }; + + /** Bink video block types. */ + enum BlockType { + kBlockSkip = 0, ///< Skipped block. + kBlockScaled , ///< Block has size 16x16. + kBlockMotion , ///< Block is copied from previous frame with some offset. + kBlockRun , ///< Block is composed from runs of colors with custom scan order. + kBlockResidue , ///< Motion block with some difference added. + kBlockIntra , ///< Intra DCT block. + kBlockFill , ///< Block is filled with single color. + kBlockInter , ///< Motion block with DCT applied to the difference. + kBlockPattern , ///< Block is filled with two colors following custom pattern. + kBlockRaw ///< Uncoded 8x8 block. + }; + + /** Data structure for decoding and tranlating Huffman'd data. */ + struct Huffman { + int index; ///< Index of the Huffman codebook to use. + byte symbols[16]; ///< Huffman symbol => Bink symbol tranlation list. + }; + + /** Data structure used for decoding a single Bink data type. */ + struct Bundle { + int countLengths[2]; ///< Lengths of number of entries to decode (in bits). + int countLength; ///< Length of number of entries to decode (in bits) for the current plane. + + Huffman huffman; ///< Huffman codebook. + + byte *data; ///< Buffer for decoded symbols. + byte *dataEnd; ///< Buffer end. + + byte *curDec; ///< Pointer to the data that wasn't yet decoded. + byte *curPtr; ///< Pointer to the data that wasn't yet read. + }; + + enum AudioCodec { + kAudioCodecDCT, + kAudioCodecRDFT + }; + + /** An audio track. */ + struct AudioTrack { + uint16 flags; + + uint32 sampleRate; + uint8 channels; + + uint32 outSampleRate; + uint8 outChannels; + + AudioCodec codec; + + uint32 sampleCount; + + Common::BitStream *bits; + + bool first; + + uint32 frameLen; + uint32 overlapLen; + + uint32 blockSize; + + uint32 bandCount; + uint32 *bands; + + float root; + + float coeffs[16 * kAudioBlockSizeMax]; + int16 prevCoeffs[kAudioBlockSizeMax]; + + float *coeffsPtr[kAudioChannelsMax]; + + Common::RDFT *rdft; + Common::DCT *dct; + + AudioTrack(); + ~AudioTrack(); + }; + + /** A video frame. */ + struct VideoFrame { + bool keyFrame; + + uint32 offset; + uint32 size; + + Common::BitStream *bits; + + VideoFrame(); + ~VideoFrame(); + }; + + /** A decoder state. */ + struct DecodeContext { + VideoFrame *video; + + uint32 planeIdx; + + uint32 blockX; + uint32 blockY; + + byte *dest; + byte *prev; + + byte *destStart, *destEnd; + byte *prevStart, *prevEnd; + + uint32 pitch; + + int coordMap[64]; + int coordScaledMap1[64]; + int coordScaledMap2[64]; + int coordScaledMap3[64]; + int coordScaledMap4[64]; + }; + + Common::SeekableReadStream *_bink; + + uint32 _id; ///< The BIK FourCC. + + Common::Rational _frameRate; + + Graphics::Surface _surface; + + Audio::SoundHandle _audioHandle; + Audio::QueuingAudioStream *_audioStream; + bool _audioStarted; + + uint32 _videoFlags; ///< Video frame features. + + bool _hasAlpha; ///< Do video frames have alpha? + bool _swapPlanes; ///< Are the planes ordered (A)YVU instead of (A)YUV? + + uint32 _audioFrame; + + Common::Array _audioTracks; ///< All audio tracks. + Common::Array _frames; ///< All video frames. + + uint32 _audioTrack; ///< Audio track to use. + + Common::Huffman *_huffman[16]; ///< The 16 Huffman codebooks used in Bink decoding. + + Bundle _bundles[kSourceMAX]; ///< Bundles for decoding all data types. + + /** Huffman codebooks to use for decoding high nibbles in color data types. */ + Huffman _colHighHuffman[16]; + /** Value of the last decoded high nibble in color data types. */ + int _colLastVal; + + byte *_curPlanes[4]; ///< The 4 color planes, YUVA, current frame. + byte *_oldPlanes[4]; ///< The 4 color planes, YUVA, last frame. + + + /** Initialize the bundles. */ + void initBundles(); + /** Deinitialize the bundles. */ + void deinitBundles(); + + /** Initialize the Huffman decoders. */ + void initHuffman(); + + /** Decode an audio packet. */ + void audioPacket(AudioTrack &audio); + /** Decode a video packet. */ + void videoPacket(VideoFrame &video); + + /** Decode a plane. */ + void decodePlane(VideoFrame &video, int planeIdx, bool isChroma); + + /** Read/Initialize a bundle for decoding a plane. */ + void readBundle(VideoFrame &video, Source source); + + /** Read the symbols for a Huffman code. */ + void readHuffman(VideoFrame &video, Huffman &huffman); + /** Merge two Huffman symbol lists. */ + void mergeHuffmanSymbols(VideoFrame &video, byte *dst, const byte *src, int size); + + /** Read and translate a symbol out of a Huffman code. */ + byte getHuffmanSymbol(VideoFrame &video, Huffman &huffman); + + /** Get a direct value out of a bundle. */ + int32 getBundleValue(Source source); + /** Read a count value out of a bundle. */ + uint32 readBundleCount(VideoFrame &video, Bundle &bundle); + + // Handle the block types + void blockSkip (DecodeContext &ctx); + void blockScaledSkip (DecodeContext &ctx); + void blockScaledRun (DecodeContext &ctx); + void blockScaledIntra (DecodeContext &ctx); + void blockScaledFill (DecodeContext &ctx); + void blockScaledPattern(DecodeContext &ctx); + void blockScaledRaw (DecodeContext &ctx); + void blockScaled (DecodeContext &ctx); + void blockMotion (DecodeContext &ctx); + void blockRun (DecodeContext &ctx); + void blockResidue (DecodeContext &ctx); + void blockIntra (DecodeContext &ctx); + void blockFill (DecodeContext &ctx); + void blockInter (DecodeContext &ctx); + void blockPattern (DecodeContext &ctx); + void blockRaw (DecodeContext &ctx); + + // Read the bundles + void readRuns (VideoFrame &video, Bundle &bundle); + void readMotionValues(VideoFrame &video, Bundle &bundle); + void readBlockTypes (VideoFrame &video, Bundle &bundle); + void readPatterns (VideoFrame &video, Bundle &bundle); + void readColors (VideoFrame &video, Bundle &bundle); + void readDCS (VideoFrame &video, Bundle &bundle, int startBits, bool hasSign); + void readDCTCoeffs (VideoFrame &video, int16 *block, bool isIntra); + void readResidue (VideoFrame &video, int16 *block, int masksCount); + + void initAudioTrack(AudioTrack &audio); + + float getFloat(AudioTrack &audio); + + /** Decode an audio block. */ + void audioBlock (AudioTrack &audio, int16 *out); + /** Decode a DCT'd audio block. */ + void audioBlockDCT (AudioTrack &audio); + /** Decode a RDFT'd audio block. */ + void audioBlockRDFT(AudioTrack &audio); + + void readAudioCoeffs(AudioTrack &audio, float *coeffs); + + void floatToInt16Interleave(int16 *dst, const float **src, uint32 length, uint8 channels); + + // Bink video IDCT + void IDCT(int16 *block); + void IDCTPut(DecodeContext &ctx, int16 *block); + void IDCTAdd(DecodeContext &ctx, int16 *block); +}; + +} // End of namespace Video + +#endif diff --git a/video/binkdata.h b/video/binkdata.h new file mode 100644 index 00000000000..02105a74938 --- /dev/null +++ b/video/binkdata.h @@ -0,0 +1,578 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef VIDEO_BINKDATA_H +#define VIDEO_BINKDATA_H + +#include "common/scummsys.h" + +namespace Video { + +static const uint16 binkCriticalFreqs[25] = { + 100, 200, 300, 400, 510, 630, 770, 920, + 1080, 1270, 1480, 1720, 2000, 2320, 2700, 3150, + 3700, 4400, 5300, 6400, 7700, 9500, 12000, 15500, + 24500, +}; + +/** Bink DCT and residue 8x8 block scan order */ +static const uint8 binkScan[64] = { + 0, 1, 8, 9, 2, 3, 10, 11, + 4, 5, 12, 13, 6, 7, 14, 15, + 20, 21, 28, 29, 22, 23, 30, 31, + 16, 17, 24, 25, 32, 33, 40, 41, + 34, 35, 42, 43, 48, 49, 56, 57, + 50, 51, 58, 59, 18, 19, 26, 27, + 36, 37, 44, 45, 38, 39, 46, 47, + 52, 53, 60, 61, 54, 55, 62, 63 +}; + +static const uint32 binkHuffmanCodes[16][16] = { + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, + { 0x00, 0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F }, + { 0x00, 0x02, 0x01, 0x09, 0x05, 0x15, 0x0D, 0x1D, 0x03, 0x13, 0x0B, 0x1B, 0x07, 0x17, 0x0F, 0x1F }, + { 0x00, 0x02, 0x06, 0x01, 0x09, 0x05, 0x0D, 0x1D, 0x03, 0x13, 0x0B, 0x1B, 0x07, 0x17, 0x0F, 0x1F }, + { 0x00, 0x04, 0x02, 0x06, 0x01, 0x09, 0x05, 0x0D, 0x03, 0x13, 0x0B, 0x1B, 0x07, 0x17, 0x0F, 0x1F }, + { 0x00, 0x04, 0x02, 0x0A, 0x06, 0x0E, 0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x17, 0x0F, 0x1F }, + { 0x00, 0x02, 0x0A, 0x06, 0x0E, 0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x1B, 0x07, 0x17, 0x0F, 0x1F }, + { 0x00, 0x01, 0x05, 0x03, 0x13, 0x0B, 0x1B, 0x3B, 0x07, 0x27, 0x17, 0x37, 0x0F, 0x2F, 0x1F, 0x3F }, + { 0x00, 0x01, 0x03, 0x13, 0x0B, 0x2B, 0x1B, 0x3B, 0x07, 0x27, 0x17, 0x37, 0x0F, 0x2F, 0x1F, 0x3F }, + { 0x00, 0x01, 0x05, 0x0D, 0x03, 0x13, 0x0B, 0x1B, 0x07, 0x27, 0x17, 0x37, 0x0F, 0x2F, 0x1F, 0x3F }, + { 0x00, 0x02, 0x01, 0x05, 0x0D, 0x03, 0x13, 0x0B, 0x1B, 0x07, 0x17, 0x37, 0x0F, 0x2F, 0x1F, 0x3F }, + { 0x00, 0x01, 0x09, 0x05, 0x0D, 0x03, 0x13, 0x0B, 0x1B, 0x07, 0x17, 0x37, 0x0F, 0x2F, 0x1F, 0x3F }, + { 0x00, 0x02, 0x01, 0x03, 0x13, 0x0B, 0x1B, 0x3B, 0x07, 0x27, 0x17, 0x37, 0x0F, 0x2F, 0x1F, 0x3F }, + { 0x00, 0x01, 0x05, 0x03, 0x07, 0x27, 0x17, 0x37, 0x0F, 0x4F, 0x2F, 0x6F, 0x1F, 0x5F, 0x3F, 0x7F }, + { 0x00, 0x01, 0x05, 0x03, 0x07, 0x17, 0x37, 0x77, 0x0F, 0x4F, 0x2F, 0x6F, 0x1F, 0x5F, 0x3F, 0x7F }, + { 0x00, 0x02, 0x01, 0x05, 0x03, 0x07, 0x27, 0x17, 0x37, 0x0F, 0x2F, 0x6F, 0x1F, 0x5F, 0x3F, 0x7F } +}; + +static const uint8 binkHuffmanLengths[16][16] = { + { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 }, + { 1, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }, + { 2, 2, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }, + { 2, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }, + { 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5 }, + { 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5 }, + { 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5 }, + { 1, 3, 3, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, + { 1, 2, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, + { 1, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6 }, + { 2, 2, 3, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6 }, + { 1, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6 }, + { 2, 2, 2, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, + { 1, 3, 3, 3, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7 }, + { 1, 3, 3, 3, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }, + { 2, 2, 3, 3, 3, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7 } +}; + +static const uint8 binkPatterns[16][64] = { +{ + 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, + 0x39, 0x31, 0x29, 0x21, 0x19, 0x11, 0x09, 0x01, + 0x02, 0x0A, 0x12, 0x1A, 0x22, 0x2A, 0x32, 0x3A, + 0x3B, 0x33, 0x2B, 0x23, 0x1B, 0x13, 0x0B, 0x03, + 0x04, 0x0C, 0x14, 0x1C, 0x24, 0x2C, 0x34, 0x3C, + 0x3D, 0x35, 0x2D, 0x25, 0x1D, 0x15, 0x0D, 0x05, + 0x06, 0x0E, 0x16, 0x1E, 0x26, 0x2E, 0x36, 0x3E, + 0x3F, 0x37, 0x2F, 0x27, 0x1F, 0x17, 0x0F, 0x07 +}, +{ + 0x3B, 0x3A, 0x39, 0x38, 0x30, 0x31, 0x32, 0x33, + 0x2B, 0x2A, 0x29, 0x28, 0x20, 0x21, 0x22, 0x23, + 0x1B, 0x1A, 0x19, 0x18, 0x10, 0x11, 0x12, 0x13, + 0x0B, 0x0A, 0x09, 0x08, 0x00, 0x01, 0x02, 0x03, + 0x04, 0x05, 0x06, 0x07, 0x0F, 0x0E, 0x0D, 0x0C, + 0x14, 0x15, 0x16, 0x17, 0x1F, 0x1E, 0x1D, 0x1C, + 0x24, 0x25, 0x26, 0x27, 0x2F, 0x2E, 0x2D, 0x2C, + 0x34, 0x35, 0x36, 0x37, 0x3F, 0x3E, 0x3D, 0x3C +}, +{ + 0x19, 0x11, 0x12, 0x1A, 0x1B, 0x13, 0x0B, 0x03, + 0x02, 0x0A, 0x09, 0x01, 0x00, 0x08, 0x10, 0x18, + 0x20, 0x28, 0x30, 0x38, 0x39, 0x31, 0x29, 0x2A, + 0x32, 0x3A, 0x3B, 0x33, 0x2B, 0x23, 0x22, 0x21, + 0x1D, 0x15, 0x16, 0x1E, 0x1F, 0x17, 0x0F, 0x07, + 0x06, 0x0E, 0x0D, 0x05, 0x04, 0x0C, 0x14, 0x1C, + 0x24, 0x2C, 0x34, 0x3C, 0x3D, 0x35, 0x2D, 0x2E, + 0x36, 0x3E, 0x3F, 0x37, 0x2F, 0x27, 0x26, 0x25 +}, +{ + 0x03, 0x0B, 0x02, 0x0A, 0x01, 0x09, 0x00, 0x08, + 0x10, 0x18, 0x11, 0x19, 0x12, 0x1A, 0x13, 0x1B, + 0x23, 0x2B, 0x22, 0x2A, 0x21, 0x29, 0x20, 0x28, + 0x30, 0x38, 0x31, 0x39, 0x32, 0x3A, 0x33, 0x3B, + 0x3C, 0x34, 0x3D, 0x35, 0x3E, 0x36, 0x3F, 0x37, + 0x2F, 0x27, 0x2E, 0x26, 0x2D, 0x25, 0x2C, 0x24, + 0x1C, 0x14, 0x1D, 0x15, 0x1E, 0x16, 0x1F, 0x17, + 0x0F, 0x07, 0x0E, 0x06, 0x0D, 0x05, 0x0C, 0x04 +}, +{ + 0x18, 0x19, 0x10, 0x11, 0x08, 0x09, 0x00, 0x01, + 0x02, 0x03, 0x0A, 0x0B, 0x12, 0x13, 0x1A, 0x1B, + 0x1C, 0x1D, 0x14, 0x15, 0x0C, 0x0D, 0x04, 0x05, + 0x06, 0x07, 0x0E, 0x0F, 0x16, 0x17, 0x1E, 0x1F, + 0x27, 0x26, 0x2F, 0x2E, 0x37, 0x36, 0x3F, 0x3E, + 0x3D, 0x3C, 0x35, 0x34, 0x2D, 0x2C, 0x25, 0x24, + 0x23, 0x22, 0x2B, 0x2A, 0x33, 0x32, 0x3B, 0x3A, + 0x39, 0x38, 0x31, 0x30, 0x29, 0x28, 0x21, 0x20 +}, +{ + 0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B, + 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B, + 0x20, 0x21, 0x22, 0x23, 0x28, 0x29, 0x2A, 0x2B, + 0x30, 0x31, 0x32, 0x33, 0x38, 0x39, 0x3A, 0x3B, + 0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F, + 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F, + 0x24, 0x25, 0x26, 0x27, 0x2C, 0x2D, 0x2E, 0x2F, + 0x34, 0x35, 0x36, 0x37, 0x3C, 0x3D, 0x3E, 0x3F +}, +{ + 0x06, 0x07, 0x0F, 0x0E, 0x0D, 0x05, 0x0C, 0x04, + 0x03, 0x0B, 0x02, 0x0A, 0x09, 0x01, 0x00, 0x08, + 0x10, 0x18, 0x11, 0x19, 0x12, 0x1A, 0x13, 0x1B, + 0x14, 0x1C, 0x15, 0x1D, 0x16, 0x1E, 0x17, 0x1F, + 0x27, 0x2F, 0x26, 0x2E, 0x25, 0x2D, 0x24, 0x2C, + 0x23, 0x2B, 0x22, 0x2A, 0x21, 0x29, 0x20, 0x28, + 0x31, 0x30, 0x38, 0x39, 0x3A, 0x32, 0x3B, 0x33, + 0x3C, 0x34, 0x3D, 0x35, 0x36, 0x37, 0x3F, 0x3E +}, +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19, 0x18, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29, 0x28, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39, 0x38 +}, +{ + 0x00, 0x08, 0x09, 0x01, 0x02, 0x03, 0x0B, 0x0A, + 0x12, 0x13, 0x1B, 0x1A, 0x19, 0x11, 0x10, 0x18, + 0x20, 0x28, 0x29, 0x21, 0x22, 0x23, 0x2B, 0x2A, + 0x32, 0x31, 0x30, 0x38, 0x39, 0x3A, 0x3B, 0x33, + 0x34, 0x3C, 0x3D, 0x3E, 0x3F, 0x37, 0x36, 0x35, + 0x2D, 0x2C, 0x24, 0x25, 0x26, 0x2E, 0x2F, 0x27, + 0x1F, 0x17, 0x16, 0x1E, 0x1D, 0x1C, 0x14, 0x15, + 0x0D, 0x0C, 0x04, 0x05, 0x06, 0x0E, 0x0F, 0x07 +}, +{ + 0x18, 0x19, 0x10, 0x11, 0x08, 0x09, 0x00, 0x01, + 0x02, 0x03, 0x0A, 0x0B, 0x12, 0x13, 0x1A, 0x1B, + 0x1C, 0x1D, 0x14, 0x15, 0x0C, 0x0D, 0x04, 0x05, + 0x06, 0x07, 0x0E, 0x0F, 0x16, 0x17, 0x1E, 0x1F, + 0x26, 0x27, 0x2E, 0x2F, 0x36, 0x37, 0x3E, 0x3F, + 0x3C, 0x3D, 0x34, 0x35, 0x2C, 0x2D, 0x24, 0x25, + 0x22, 0x23, 0x2A, 0x2B, 0x32, 0x33, 0x3A, 0x3B, + 0x38, 0x39, 0x30, 0x31, 0x28, 0x29, 0x20, 0x21 +}, +{ + 0x00, 0x08, 0x01, 0x09, 0x02, 0x0A, 0x03, 0x0B, + 0x13, 0x1B, 0x12, 0x1A, 0x11, 0x19, 0x10, 0x18, + 0x20, 0x28, 0x21, 0x29, 0x22, 0x2A, 0x23, 0x2B, + 0x33, 0x3B, 0x32, 0x3A, 0x31, 0x39, 0x30, 0x38, + 0x3C, 0x34, 0x3D, 0x35, 0x3E, 0x36, 0x3F, 0x37, + 0x2F, 0x27, 0x2E, 0x26, 0x2D, 0x25, 0x2C, 0x24, + 0x1F, 0x17, 0x1E, 0x16, 0x1D, 0x15, 0x1C, 0x14, + 0x0C, 0x04, 0x0D, 0x05, 0x0E, 0x06, 0x0F, 0x07 +}, +{ + 0x00, 0x08, 0x10, 0x18, 0x19, 0x1A, 0x1B, 0x13, + 0x0B, 0x03, 0x02, 0x01, 0x09, 0x11, 0x12, 0x0A, + 0x04, 0x0C, 0x14, 0x1C, 0x1D, 0x1E, 0x1F, 0x17, + 0x0F, 0x07, 0x06, 0x05, 0x0D, 0x15, 0x16, 0x0E, + 0x24, 0x2C, 0x34, 0x3C, 0x3D, 0x3E, 0x3F, 0x37, + 0x2F, 0x27, 0x26, 0x25, 0x2D, 0x35, 0x36, 0x2E, + 0x20, 0x28, 0x30, 0x38, 0x39, 0x3A, 0x3B, 0x33, + 0x2B, 0x23, 0x22, 0x21, 0x29, 0x31, 0x32, 0x2A +}, +{ + 0x00, 0x08, 0x09, 0x01, 0x02, 0x03, 0x0B, 0x0A, + 0x13, 0x1B, 0x1A, 0x12, 0x11, 0x10, 0x18, 0x19, + 0x21, 0x20, 0x28, 0x29, 0x2A, 0x22, 0x23, 0x2B, + 0x33, 0x3B, 0x3A, 0x32, 0x31, 0x39, 0x38, 0x30, + 0x34, 0x3C, 0x3D, 0x35, 0x36, 0x3E, 0x3F, 0x37, + 0x2F, 0x27, 0x26, 0x2E, 0x2D, 0x2C, 0x24, 0x25, + 0x1D, 0x1C, 0x14, 0x15, 0x16, 0x1E, 0x1F, 0x17, + 0x0E, 0x0F, 0x07, 0x06, 0x05, 0x0D, 0x0C, 0x04 +}, +{ + 0x18, 0x10, 0x08, 0x00, 0x01, 0x02, 0x03, 0x0B, + 0x13, 0x1B, 0x1A, 0x19, 0x11, 0x0A, 0x09, 0x12, + 0x1C, 0x14, 0x0C, 0x04, 0x05, 0x06, 0x07, 0x0F, + 0x17, 0x1F, 0x1E, 0x1D, 0x15, 0x0E, 0x0D, 0x16, + 0x3C, 0x34, 0x2C, 0x24, 0x25, 0x26, 0x27, 0x2F, + 0x37, 0x3F, 0x3E, 0x3D, 0x35, 0x2E, 0x2D, 0x36, + 0x38, 0x30, 0x28, 0x20, 0x21, 0x22, 0x23, 0x2B, + 0x33, 0x3B, 0x3A, 0x39, 0x31, 0x2A, 0x29, 0x32 +}, +{ + 0x00, 0x08, 0x09, 0x01, 0x02, 0x0A, 0x12, 0x11, + 0x10, 0x18, 0x19, 0x1A, 0x1B, 0x13, 0x0B, 0x03, + 0x07, 0x06, 0x0E, 0x0F, 0x17, 0x16, 0x15, 0x0D, + 0x05, 0x04, 0x0C, 0x14, 0x1C, 0x1D, 0x1E, 0x1F, + 0x3F, 0x3E, 0x36, 0x37, 0x2F, 0x2E, 0x2D, 0x35, + 0x3D, 0x3C, 0x34, 0x2C, 0x24, 0x25, 0x26, 0x27, + 0x38, 0x30, 0x31, 0x39, 0x3A, 0x32, 0x2A, 0x29, + 0x28, 0x20, 0x21, 0x22, 0x23, 0x2B, 0x33, 0x3B +}, +{ + 0x00, 0x01, 0x08, 0x09, 0x10, 0x11, 0x18, 0x19, + 0x20, 0x21, 0x28, 0x29, 0x30, 0x31, 0x38, 0x39, + 0x3A, 0x3B, 0x32, 0x33, 0x2A, 0x2B, 0x22, 0x23, + 0x1A, 0x1B, 0x12, 0x13, 0x0A, 0x0B, 0x02, 0x03, + 0x04, 0x05, 0x0C, 0x0D, 0x14, 0x15, 0x1C, 0x1D, + 0x24, 0x25, 0x2C, 0x2D, 0x34, 0x35, 0x3C, 0x3D, + 0x3E, 0x3F, 0x36, 0x37, 0x2E, 0x2F, 0x26, 0x27, + 0x1E, 0x1F, 0x16, 0x17, 0x0E, 0x0F, 0x06, 0x07 +} +}; + +static const uint32 binkIntraQuant[16][64] = { +{ + 0x010000, 0x016315, 0x01E83D, 0x02A535, 0x014E7B, 0x016577, 0x02F1E6, 0x02724C, + 0x010000, 0x00EEDA, 0x024102, 0x017F9B, 0x00BE80, 0x00611E, 0x01083C, 0x00A552, + 0x021F88, 0x01DC53, 0x027FAD, 0x01F697, 0x014819, 0x00A743, 0x015A31, 0x009688, + 0x02346F, 0x030EE5, 0x01FBFA, 0x02C096, 0x01D000, 0x028396, 0x019247, 0x01F9AA, + 0x02346F, 0x01FBFA, 0x01DC53, 0x0231B8, 0x012F12, 0x01E06C, 0x00CB10, 0x0119A8, + 0x01C48C, 0x019748, 0x014E86, 0x0122AF, 0x02C628, 0x027F20, 0x0297B5, 0x023F32, + 0x025000, 0x01AB6B, 0x01D122, 0x0159B3, 0x012669, 0x008D43, 0x00EE1F, 0x0075ED, + 0x01490C, 0x010288, 0x00F735, 0x00EF51, 0x00E0F1, 0x0072AD, 0x00A4D8, 0x006517, +}, +{ + 0x015555, 0x01D971, 0x028AFC, 0x0386F1, 0x01BDF9, 0x01DC9F, 0x03ED33, 0x034311, + 0x015555, 0x013E78, 0x030158, 0x01FF7A, 0x00FE00, 0x00817D, 0x01604F, 0x00DC6D, + 0x02D4B5, 0x027B19, 0x0354E7, 0x029E1F, 0x01B577, 0x00DF04, 0x01CD96, 0x00C8B6, + 0x02F095, 0x0413DC, 0x02A54E, 0x03AB73, 0x026AAB, 0x035A1E, 0x02185E, 0x02A238, + 0x02F095, 0x02A54E, 0x027B19, 0x02ECF5, 0x019418, 0x028090, 0x010EC0, 0x01778A, + 0x025B66, 0x021F0B, 0x01BE09, 0x018394, 0x03B2E0, 0x03542A, 0x0374F1, 0x02FEEE, + 0x031555, 0x0239E4, 0x026C2D, 0x01CCEE, 0x01888C, 0x00BC59, 0x013D7E, 0x009D3C, + 0x01B6BB, 0x0158B5, 0x01499C, 0x013F17, 0x012BEC, 0x0098E6, 0x00DBCB, 0x0086C9, +}, +{ + 0x01AAAB, 0x024FCE, 0x032DBB, 0x0468AD, 0x022D78, 0x0253C7, 0x04E87F, 0x0413D5, + 0x01AAAB, 0x018E16, 0x03C1AE, 0x027F58, 0x013D80, 0x00A1DC, 0x01B863, 0x011388, + 0x0389E2, 0x0319DF, 0x042A21, 0x0345A7, 0x0222D4, 0x0116C5, 0x0240FC, 0x00FAE3, + 0x03ACBA, 0x0518D3, 0x034EA1, 0x04964F, 0x030555, 0x0430A5, 0x029E76, 0x034AC5, + 0x03ACBA, 0x034EA1, 0x0319DF, 0x03A833, 0x01F91E, 0x0320B4, 0x015270, 0x01D56D, + 0x02F23F, 0x02A6CE, 0x022D8B, 0x01E479, 0x049F98, 0x042935, 0x04522D, 0x03BEA9, + 0x03DAAB, 0x02C85D, 0x030738, 0x02402A, 0x01EAAF, 0x00EB6F, 0x018CDE, 0x00C48A, + 0x022469, 0x01AEE2, 0x019C02, 0x018EDD, 0x0176E7, 0x00BF20, 0x0112BE, 0x00A87B, +}, +{ + 0x020000, 0x02C62A, 0x03D07A, 0x054A69, 0x029CF6, 0x02CAEF, 0x05E3CC, 0x04E499, + 0x020000, 0x01DDB4, 0x048204, 0x02FF36, 0x017D01, 0x00C23C, 0x021077, 0x014AA3, + 0x043F0F, 0x03B8A6, 0x04FF5A, 0x03ED2E, 0x029032, 0x014E86, 0x02B461, 0x012D11, + 0x0468DF, 0x061DCA, 0x03F7F5, 0x05812C, 0x03A000, 0x05072C, 0x03248D, 0x03F353, + 0x0468DF, 0x03F7F5, 0x03B8A6, 0x046370, 0x025E24, 0x03C0D8, 0x019620, 0x02334F, + 0x038919, 0x032E91, 0x029D0D, 0x02455E, 0x058C50, 0x04FE3F, 0x052F69, 0x047E65, + 0x04A000, 0x0356D6, 0x03A243, 0x02B365, 0x024CD2, 0x011A85, 0x01DC3E, 0x00EBD9, + 0x029218, 0x020510, 0x01EE69, 0x01DEA2, 0x01C1E2, 0x00E559, 0x0149B0, 0x00CA2D, +}, +{ + 0x02AAAB, 0x03B2E3, 0x0515F8, 0x070DE2, 0x037BF2, 0x03B93E, 0x07DA65, 0x068621, + 0x02AAAB, 0x027CF0, 0x0602B1, 0x03FEF3, 0x01FC01, 0x0102FA, 0x02C09F, 0x01B8DA, + 0x05A96A, 0x04F632, 0x06A9CE, 0x053C3E, 0x036AED, 0x01BE09, 0x039B2D, 0x01916B, + 0x05E129, 0x0827B8, 0x054A9C, 0x0756E5, 0x04D555, 0x06B43B, 0x0430BC, 0x05446F, + 0x05E129, 0x054A9C, 0x04F632, 0x05D9EB, 0x032830, 0x050121, 0x021D80, 0x02EF14, + 0x04B6CC, 0x043E16, 0x037C11, 0x030728, 0x0765C0, 0x06A855, 0x06E9E2, 0x05FDDB, + 0x062AAB, 0x0473C8, 0x04D85A, 0x0399DC, 0x031118, 0x0178B2, 0x027AFD, 0x013A77, + 0x036D76, 0x02B16A, 0x029337, 0x027E2E, 0x0257D8, 0x0131CC, 0x01B796, 0x010D91, +}, +{ + 0x038000, 0x04DACA, 0x06ACD5, 0x094238, 0x0492AE, 0x04E322, 0x0A4EA5, 0x08900C, + 0x038000, 0x0343FB, 0x07E388, 0x053E9F, 0x029AC1, 0x0153E8, 0x039CD0, 0x02429E, + 0x076E5B, 0x068322, 0x08BEDE, 0x06DF11, 0x047C57, 0x02496B, 0x04BBAB, 0x020EDD, + 0x07B786, 0x0AB421, 0x06F1ED, 0x09A20D, 0x065800, 0x08CC8E, 0x057FF7, 0x06E9D2, + 0x07B786, 0x06F1ED, 0x068322, 0x07AE04, 0x0424BF, 0x06917B, 0x02C6B8, 0x03D9CB, + 0x062FEB, 0x05917D, 0x0492D7, 0x03F964, 0x09B58C, 0x08BCEF, 0x0912F8, 0x07DD30, + 0x081800, 0x05D7F7, 0x065BF6, 0x04B9F1, 0x040670, 0x01EE69, 0x03416C, 0x019CBC, + 0x047FAA, 0x0388DC, 0x036138, 0x03459C, 0x03134C, 0x01915C, 0x0240F5, 0x0161CF, +}, +{ + 0x040000, 0x058C54, 0x07A0F4, 0x0A94D3, 0x0539EC, 0x0595DD, 0x0BC798, 0x09C932, + 0x040000, 0x03BB68, 0x090409, 0x05FE6D, 0x02FA01, 0x018477, 0x0420EE, 0x029547, + 0x087E1F, 0x07714C, 0x09FEB5, 0x07DA5D, 0x052064, 0x029D0D, 0x0568C3, 0x025A21, + 0x08D1BE, 0x0C3B94, 0x07EFEA, 0x0B0258, 0x074000, 0x0A0E59, 0x06491A, 0x07E6A7, + 0x08D1BE, 0x07EFEA, 0x07714C, 0x08C6E0, 0x04BC48, 0x0781B1, 0x032C3F, 0x04669F, + 0x071232, 0x065D22, 0x053A1A, 0x048ABC, 0x0B18A0, 0x09FC7F, 0x0A5ED3, 0x08FCC9, + 0x094000, 0x06ADAC, 0x074487, 0x0566CA, 0x0499A5, 0x02350B, 0x03B87B, 0x01D7B3, + 0x052430, 0x040A20, 0x03DCD3, 0x03BD45, 0x0383C5, 0x01CAB3, 0x029361, 0x01945A, +}, +{ + 0x050000, 0x06EF69, 0x098931, 0x0D3A07, 0x068867, 0x06FB55, 0x0EB97E, 0x0C3B7E, + 0x050000, 0x04AA42, 0x0B450B, 0x077E08, 0x03B881, 0x01E595, 0x05292A, 0x033A99, + 0x0A9DA7, 0x094D9F, 0x0C7E62, 0x09D0F4, 0x06687D, 0x034450, 0x06C2F4, 0x02F0AA, + 0x0B062D, 0x0F4A78, 0x09EBE4, 0x0DC2EE, 0x091000, 0x0C91EF, 0x07DB61, 0x09E050, + 0x0B062D, 0x09EBE4, 0x094D9F, 0x0AF898, 0x05EB59, 0x09621D, 0x03F74F, 0x058046, + 0x08D6BE, 0x07F46A, 0x0688A0, 0x05AD6B, 0x0DDEC8, 0x0C7B9F, 0x0CF687, 0x0B3BFB, + 0x0B9000, 0x085917, 0x0915A8, 0x06C07D, 0x05C00E, 0x02C24D, 0x04A69A, 0x024D9F, + 0x066D3C, 0x050CA7, 0x04D407, 0x04AC96, 0x0464B6, 0x023D5F, 0x033839, 0x01F971, +}, +{ + 0x060000, 0x08527E, 0x0B716E, 0x0FDF3C, 0x07D6E1, 0x0860CC, 0x11AB63, 0x0EADCB, + 0x060000, 0x05991C, 0x0D860D, 0x08FDA3, 0x047702, 0x0246B3, 0x063165, 0x03DFEA, + 0x0CBD2E, 0x0B29F1, 0x0EFE0F, 0x0BC78B, 0x07B096, 0x03EB93, 0x081D24, 0x038732, + 0x0D3A9C, 0x12595D, 0x0BE7DF, 0x108384, 0x0AE000, 0x0F1585, 0x096DA8, 0x0BD9FA, + 0x0D3A9C, 0x0BE7DF, 0x0B29F1, 0x0D2A50, 0x071A6B, 0x0B4289, 0x04C25F, 0x0699EE, + 0x0A9B4A, 0x098BB2, 0x07D727, 0x06D01A, 0x10A4F0, 0x0EFABE, 0x0F8E3C, 0x0D7B2E, + 0x0DE000, 0x0A0482, 0x0AE6CA, 0x081A2F, 0x06E677, 0x034F90, 0x0594B9, 0x02C38C, + 0x07B649, 0x060F2F, 0x05CB3C, 0x059BE7, 0x0545A7, 0x02B00C, 0x03DD11, 0x025E87, +}, +{ + 0x080000, 0x0B18A8, 0x0F41E8, 0x1529A5, 0x0A73D7, 0x0B2BBB, 0x178F2F, 0x139264, + 0x080000, 0x0776CF, 0x120812, 0x0BFCD9, 0x05F402, 0x0308EF, 0x0841DC, 0x052A8E, + 0x10FC3E, 0x0EE297, 0x13FD69, 0x0FB4B9, 0x0A40C8, 0x053A1A, 0x0AD186, 0x04B442, + 0x11A37B, 0x187727, 0x0FDFD4, 0x1604B0, 0x0E8000, 0x141CB1, 0x0C9235, 0x0FCD4D, + 0x11A37B, 0x0FDFD4, 0x0EE297, 0x118DC0, 0x09788F, 0x0F0362, 0x06587F, 0x08CD3D, + 0x0E2463, 0x0CBA43, 0x0A7434, 0x091577, 0x163140, 0x13F8FE, 0x14BDA5, 0x11F992, + 0x128000, 0x0D5B58, 0x0E890D, 0x0ACD94, 0x093349, 0x046A15, 0x0770F7, 0x03AF65, + 0x0A4861, 0x08143F, 0x07B9A6, 0x077A89, 0x070789, 0x039565, 0x0526C2, 0x0328B4, +}, +{ + 0x0C0000, 0x10A4FD, 0x16E2DB, 0x1FBE78, 0x0FADC3, 0x10C198, 0x2356C7, 0x1D5B96, + 0x0C0000, 0x0B3237, 0x1B0C1A, 0x11FB46, 0x08EE03, 0x048D66, 0x0C62CA, 0x07BFD5, + 0x197A5D, 0x1653E3, 0x1DFC1E, 0x178F16, 0x0F612C, 0x07D727, 0x103A49, 0x070E64, + 0x1A7539, 0x24B2BB, 0x17CFBD, 0x210709, 0x15C000, 0x1E2B0A, 0x12DB4F, 0x17B3F4, + 0x1A7539, 0x17CFBD, 0x1653E3, 0x1A54A0, 0x0E34D7, 0x168513, 0x0984BE, 0x0D33DC, + 0x153695, 0x131765, 0x0FAE4E, 0x0DA033, 0x2149E1, 0x1DF57D, 0x1F1C78, 0x1AF65B, + 0x1BC000, 0x140904, 0x15CD94, 0x10345E, 0x0DCCEE, 0x069F20, 0x0B2972, 0x058718, + 0x0F6C91, 0x0C1E5E, 0x0B9678, 0x0B37CE, 0x0A8B4E, 0x056018, 0x07BA22, 0x04BD0E, +}, +{ + 0x110000, 0x179466, 0x206C0C, 0x2CF87F, 0x16362A, 0x17BCED, 0x321044, 0x299714, + 0x110000, 0x0FDC79, 0x265125, 0x19794E, 0x0CA685, 0x0672FB, 0x118BF4, 0x0AFA6D, + 0x241804, 0x1FA181, 0x2A7A80, 0x21600A, 0x15C9A9, 0x0B1B77, 0x16FD3C, 0x09FF0D, + 0x257B66, 0x33FD33, 0x21BBA2, 0x2EC9F7, 0x1ED000, 0x2ABCF9, 0x1AB6B0, 0x219444, + 0x257B66, 0x21BBA2, 0x1FA181, 0x254D38, 0x142030, 0x1FE730, 0x0D7C0E, 0x12B423, + 0x1E0D52, 0x1B0BCF, 0x1636EE, 0x134D9E, 0x2F28A9, 0x2A711B, 0x2C12FF, 0x263256, + 0x275000, 0x1C621B, 0x1EE33C, 0x16F4DB, 0x138CFB, 0x09616E, 0x0FD00C, 0x07D4B7, + 0x15D9CE, 0x112B06, 0x106A80, 0x0FE464, 0x0EF004, 0x079D77, 0x0AF25B, 0x06B67F, +}, +{ + 0x160000, 0x1E83CF, 0x29F53D, 0x3A3286, 0x1CBE90, 0x1EB842, 0x40C9C2, 0x35D293, + 0x160000, 0x1486BA, 0x319630, 0x20F756, 0x105F06, 0x085891, 0x16B51E, 0x0E3506, + 0x2EB5AA, 0x28EF20, 0x36F8E1, 0x2B30FE, 0x1C3225, 0x0E5FC7, 0x1DC030, 0x0CEFB7, + 0x308193, 0x4347AC, 0x2BA786, 0x3C8CE5, 0x27E000, 0x374EE7, 0x229212, 0x2B7494, + 0x308193, 0x2BA786, 0x28EF20, 0x3045D0, 0x1A0B89, 0x29494D, 0x11735D, 0x183469, + 0x26E410, 0x230039, 0x1CBF8F, 0x18FB09, 0x3D0771, 0x36ECBA, 0x390986, 0x316E52, + 0x32E000, 0x24BB33, 0x27F8E4, 0x1DB557, 0x194D09, 0x0C23BB, 0x1476A6, 0x0A2256, + 0x1C470A, 0x1637AD, 0x153E87, 0x1490FA, 0x1354B9, 0x09DAD6, 0x0E2A94, 0x08AFF0, +}, +{ + 0x1C0000, 0x26D64D, 0x3566AA, 0x4A11C2, 0x249572, 0x27190E, 0x527525, 0x44805E, + 0x1C0000, 0x1A1FD6, 0x3F1C3E, 0x29F4F9, 0x14D607, 0x0A9F44, 0x1CE683, 0x1214F0, + 0x3B72D9, 0x341911, 0x45F6F0, 0x36F889, 0x23E2BB, 0x124B5B, 0x25DD54, 0x1076E9, + 0x3DBC30, 0x55A109, 0x378F64, 0x4D1069, 0x32C000, 0x46646C, 0x2BFFB9, 0x374E8E, + 0x3DBC30, 0x378F64, 0x341911, 0x3D7020, 0x2125F5, 0x348BD6, 0x1635BC, 0x1ECE57, + 0x317F5B, 0x2C8BEB, 0x2496B6, 0x1FCB22, 0x4DAC61, 0x45E778, 0x4897C2, 0x3EE97F, + 0x40C000, 0x2EBFB5, 0x32DFAE, 0x25CF86, 0x203380, 0x0F734B, 0x1A0B5F, 0x0CE5E2, + 0x23FD53, 0x1C46DC, 0x1B09C4, 0x1A2CE1, 0x189A60, 0x0C8AE2, 0x1207A5, 0x0B0E77, +}, +{ + 0x220000, 0x2F28CC, 0x40D818, 0x59F0FE, 0x2C6C53, 0x2F79DA, 0x642089, 0x532E29, + 0x220000, 0x1FB8F1, 0x4CA24B, 0x32F29C, 0x194D09, 0x0CE5F7, 0x2317E8, 0x15F4DB, + 0x483007, 0x3F4303, 0x54F4FF, 0x42C014, 0x2B9351, 0x1636EE, 0x2DFA79, 0x13FE1A, + 0x4AF6CC, 0x67FA67, 0x437743, 0x5D93EE, 0x3DA000, 0x5579F1, 0x356D61, 0x432888, + 0x4AF6CC, 0x437743, 0x3F4303, 0x4A9A70, 0x284060, 0x3FCE60, 0x1AF81B, 0x256845, + 0x3C1AA5, 0x36179D, 0x2C6DDD, 0x269B3C, 0x5E5152, 0x54E237, 0x5825FE, 0x4C64AD, + 0x4EA000, 0x38C437, 0x3DC678, 0x2DE9B5, 0x2719F7, 0x12C2DB, 0x1FA018, 0x0FA96E, + 0x2BB39B, 0x22560C, 0x20D500, 0x1FC8C8, 0x1DE007, 0x0F3AEE, 0x15E4B7, 0x0D6CFE, +}, +{ + 0x2C0000, 0x3D079E, 0x53EA79, 0x74650C, 0x397D20, 0x3D7083, 0x819383, 0x6BA525, + 0x2C0000, 0x290D75, 0x632C61, 0x41EEAC, 0x20BE0C, 0x10B121, 0x2D6A3B, 0x1C6A0C, + 0x5D6B54, 0x51DE40, 0x6DF1C2, 0x5661FB, 0x38644B, 0x1CBF8F, 0x3B8060, 0x19DF6D, + 0x610326, 0x868F57, 0x574F0B, 0x7919CA, 0x4FC000, 0x6E9DCE, 0x452423, 0x56E928, + 0x610326, 0x574F0B, 0x51DE40, 0x608BA0, 0x341713, 0x52929A, 0x22E6BA, 0x3068D2, + 0x4DC821, 0x460071, 0x397F1E, 0x31F611, 0x7A0EE2, 0x6DD974, 0x72130C, 0x62DCA3, + 0x65C000, 0x497665, 0x4FF1C9, 0x3B6AAE, 0x329A12, 0x184776, 0x28ED4D, 0x1444AC, + 0x388E14, 0x2C6F5A, 0x2A7D0F, 0x2921F4, 0x26A973, 0x13B5AD, 0x1C5528, 0x115FDF, +}, +}; + +static const uint32 binkInterQuant[16][64] = { +{ + 0x010000, 0x017946, 0x01A5A9, 0x0248DC, 0x016363, 0x0152A7, 0x0243EC, 0x0209EA, + 0x012000, 0x00E248, 0x01BBDA, 0x015CBC, 0x00A486, 0x0053E0, 0x00F036, 0x008095, + 0x01B701, 0x016959, 0x01B0B9, 0x0153FD, 0x00F8E7, 0x007EE4, 0x00EA30, 0x007763, + 0x01B701, 0x0260EB, 0x019DE9, 0x023E1B, 0x017000, 0x01FE6E, 0x012DB5, 0x01A27B, + 0x01E0D1, 0x01B0B9, 0x018A33, 0x01718D, 0x00D87A, 0x014449, 0x007B9A, 0x00AB71, + 0x013178, 0x0112EA, 0x00AD08, 0x009BB9, 0x023D97, 0x020437, 0x021CCC, 0x01E6B4, + 0x018000, 0x012DB5, 0x0146D9, 0x0100CE, 0x00CFD2, 0x006E5C, 0x00B0E4, 0x005A2D, + 0x00E9CC, 0x00B7B1, 0x00846F, 0x006B85, 0x008337, 0x0042E5, 0x004A10, 0x002831, +}, +{ + 0x015555, 0x01F708, 0x023237, 0x030BD0, 0x01D9D9, 0x01C389, 0x03053B, 0x02B7E3, + 0x018000, 0x012DB5, 0x024FCE, 0x01D0FA, 0x00DB5D, 0x006FD5, 0x014048, 0x00AB71, + 0x024957, 0x01E1CC, 0x0240F7, 0x01C551, 0x014BDE, 0x00A92F, 0x013840, 0x009F2F, + 0x024957, 0x032BE4, 0x0227E1, 0x02FD7A, 0x01EAAB, 0x02A893, 0x019247, 0x022DF9, + 0x028116, 0x0240F7, 0x020D99, 0x01ECBC, 0x0120A3, 0x01B061, 0x00A4CE, 0x00E497, + 0x01974B, 0x016E8E, 0x00E6B5, 0x00CFA2, 0x02FCC9, 0x02B04A, 0x02D110, 0x0288F1, + 0x020000, 0x019247, 0x01B3CC, 0x015668, 0x011518, 0x009325, 0x00EBDA, 0x00783D, + 0x0137BB, 0x00F4ED, 0x00B093, 0x008F5C, 0x00AEF4, 0x005931, 0x0062BF, 0x003597, +}, +{ + 0x01AAAB, 0x0274CB, 0x02BEC4, 0x03CEC4, 0x02504F, 0x02346C, 0x03C689, 0x0365DC, + 0x01E000, 0x017922, 0x02E3C1, 0x024539, 0x011235, 0x008BCA, 0x01905A, 0x00D64D, + 0x02DBAD, 0x025A40, 0x02D134, 0x0236A5, 0x019ED6, 0x00D37B, 0x018650, 0x00C6FB, + 0x02DBAD, 0x03F6DD, 0x02B1D9, 0x03BCD8, 0x026555, 0x0352B8, 0x01F6D8, 0x02B977, + 0x03215C, 0x02D134, 0x029100, 0x0267EB, 0x0168CC, 0x021C7A, 0x00CE01, 0x011DBD, + 0x01FD1E, 0x01CA31, 0x012062, 0x01038A, 0x03BBFB, 0x035C5C, 0x038554, 0x032B2D, + 0x028000, 0x01F6D8, 0x0220C0, 0x01AC02, 0x015A5E, 0x00B7EF, 0x0126D1, 0x00964C, + 0x0185A9, 0x013228, 0x00DCB8, 0x00B333, 0x00DAB2, 0x006F7D, 0x007B6F, 0x0042FC, +}, +{ + 0x020000, 0x02F28D, 0x034B52, 0x0491B8, 0x02C6C5, 0x02A54E, 0x0487D8, 0x0413D5, + 0x024000, 0x01C48F, 0x0377B5, 0x02B977, 0x01490C, 0x00A7BF, 0x01E06C, 0x01012A, + 0x036E03, 0x02D2B3, 0x036172, 0x02A7FA, 0x01F1CE, 0x00FDC7, 0x01D460, 0x00EEC7, + 0x036E03, 0x04C1D6, 0x033BD1, 0x047C37, 0x02E000, 0x03FCDD, 0x025B6A, 0x0344F5, + 0x03C1A1, 0x036172, 0x031466, 0x02E31B, 0x01B0F5, 0x028892, 0x00F735, 0x0156E2, + 0x0262F1, 0x0225D5, 0x015A10, 0x013772, 0x047B2D, 0x04086E, 0x043998, 0x03CD69, + 0x030000, 0x025B6A, 0x028DB3, 0x02019B, 0x019FA3, 0x00DCB8, 0x0161C7, 0x00B45B, + 0x01D398, 0x016F63, 0x0108DD, 0x00D70A, 0x01066F, 0x0085C9, 0x00941F, 0x005062, +}, +{ + 0x02AAAB, 0x03EE11, 0x04646D, 0x0617A0, 0x03B3B2, 0x038713, 0x060A75, 0x056FC6, + 0x030000, 0x025B6A, 0x049F9B, 0x03A1F4, 0x01B6BB, 0x00DFAA, 0x028090, 0x0156E2, + 0x0492AE, 0x03C399, 0x0481ED, 0x038AA2, 0x0297BD, 0x01525F, 0x027080, 0x013E5E, + 0x0492AE, 0x0657C8, 0x044FC1, 0x05FAF4, 0x03D555, 0x055126, 0x03248D, 0x045BF2, + 0x05022D, 0x0481ED, 0x041B33, 0x03D979, 0x024147, 0x0360C3, 0x01499C, 0x01C92E, + 0x032E96, 0x02DD1C, 0x01CD6A, 0x019F43, 0x05F991, 0x056093, 0x05A220, 0x0511E1, + 0x040000, 0x03248D, 0x036799, 0x02ACCF, 0x022A2F, 0x01264B, 0x01D7B5, 0x00F079, + 0x026F75, 0x01E9D9, 0x016127, 0x011EB8, 0x015DE9, 0x00B262, 0x00C57F, 0x006B2D, +}, +{ + 0x038000, 0x052876, 0x05C3CF, 0x07FF02, 0x04DBD9, 0x04A148, 0x07EDBA, 0x0722B4, + 0x03F000, 0x0317FB, 0x06117C, 0x04C491, 0x023FD5, 0x01258F, 0x0348BD, 0x01C209, + 0x060085, 0x04F0B9, 0x05EA87, 0x04A5F5, 0x036728, 0x01BC1C, 0x0333A8, 0x01A1DB, + 0x060085, 0x085336, 0x05A8AE, 0x07D960, 0x050800, 0x06FA82, 0x041FF9, 0x05B8AE, + 0x0692DA, 0x05EA87, 0x0563B2, 0x050D6E, 0x02F5AD, 0x046F00, 0x01B09C, 0x02580C, + 0x042D25, 0x03C235, 0x025D9B, 0x022108, 0x07D78F, 0x070EC1, 0x0764CA, 0x06A777, + 0x054000, 0x041FF9, 0x0477F9, 0x0382D0, 0x02D75E, 0x018242, 0x026B1D, 0x013B9F, + 0x03324A, 0x0282ED, 0x01CF83, 0x017851, 0x01CB42, 0x00EA21, 0x010336, 0x008CAC, +}, +{ + 0x040000, 0x05E519, 0x0696A4, 0x092370, 0x058D8A, 0x054A9C, 0x090FB0, 0x0827AA, + 0x048000, 0x03891F, 0x06EF69, 0x0572EE, 0x029218, 0x014F7E, 0x03C0D8, 0x020254, + 0x06DC05, 0x05A565, 0x06C2E4, 0x054FF3, 0x03E39B, 0x01FB8E, 0x03A8C0, 0x01DD8D, + 0x06DC05, 0x0983AC, 0x0677A2, 0x08F86E, 0x05C000, 0x07F9B9, 0x04B6D4, 0x0689EB, + 0x078343, 0x06C2E4, 0x0628CC, 0x05C635, 0x0361EA, 0x051124, 0x01EE69, 0x02ADC5, + 0x04C5E1, 0x044BAA, 0x02B41F, 0x026EE5, 0x08F65A, 0x0810DD, 0x087330, 0x079AD1, + 0x060000, 0x04B6D4, 0x051B65, 0x040337, 0x033F47, 0x01B970, 0x02C38F, 0x0168B6, + 0x03A730, 0x02DEC6, 0x0211BA, 0x01AE14, 0x020CDD, 0x010B93, 0x01283E, 0x00A0C4, +}, +{ + 0x050000, 0x075E60, 0x083C4D, 0x0B6C4C, 0x06F0ED, 0x069D43, 0x0B539C, 0x0A3194, + 0x05A000, 0x046B67, 0x08AB44, 0x06CFAA, 0x03369E, 0x01A35E, 0x04B10F, 0x0282E8, + 0x089307, 0x070EBF, 0x08739C, 0x06A3F0, 0x04DC82, 0x027A72, 0x0492F0, 0x0254F0, + 0x089307, 0x0BE497, 0x08158B, 0x0B3689, 0x073000, 0x09F827, 0x05E489, 0x082C66, + 0x096413, 0x08739C, 0x07B2FF, 0x0737C2, 0x043A64, 0x06556D, 0x026A04, 0x035936, + 0x05F75A, 0x055E94, 0x036127, 0x030A9E, 0x0B33F1, 0x0A1514, 0x0A8FFC, 0x098186, + 0x078000, 0x05E489, 0x06623F, 0x050405, 0x040F19, 0x0227CC, 0x037473, 0x01C2E3, + 0x0490FC, 0x039677, 0x029629, 0x021999, 0x029015, 0x014E78, 0x01724E, 0x00C8F5, +}, +{ + 0x060000, 0x08D7A6, 0x09E1F6, 0x0DB528, 0x085450, 0x07EFEA, 0x0D9788, 0x0C3B7E, + 0x06C000, 0x054DAE, 0x0A671E, 0x082C66, 0x03DB24, 0x01F73E, 0x05A145, 0x03037D, + 0x0A4A08, 0x087818, 0x0A2455, 0x07F7ED, 0x05D569, 0x02F955, 0x057D20, 0x02CC54, + 0x0A4A08, 0x0E4582, 0x09B373, 0x0D74A5, 0x08A000, 0x0BF696, 0x07123E, 0x09CEE0, + 0x0B44E4, 0x0A2455, 0x093D32, 0x08A950, 0x0512DF, 0x0799B6, 0x02E59E, 0x0404A7, + 0x0728D2, 0x06717F, 0x040E2F, 0x03A657, 0x0D7187, 0x0C194B, 0x0CACC8, 0x0B683A, + 0x090000, 0x07123E, 0x07A918, 0x0604D2, 0x04DEEA, 0x029629, 0x042556, 0x021D11, + 0x057AC8, 0x044E28, 0x031A97, 0x02851E, 0x03134C, 0x01915C, 0x01BC5D, 0x00F126, +}, +{ + 0x080000, 0x0BCA33, 0x0D2D48, 0x1246E0, 0x0B1B15, 0x0A9538, 0x121F5F, 0x104F53, + 0x090000, 0x07123E, 0x0DDED2, 0x0AE5DD, 0x052430, 0x029EFD, 0x0781B1, 0x0404A7, + 0x0DB80B, 0x0B4ACB, 0x0D85C7, 0x0A9FE7, 0x07C736, 0x03F71D, 0x075180, 0x03BB1A, + 0x0DB80B, 0x130757, 0x0CEF44, 0x11F0DC, 0x0B8000, 0x0FF372, 0x096DA8, 0x0D13D6, + 0x0F0686, 0x0D85C7, 0x0C5198, 0x0B8C6A, 0x06C3D4, 0x0A2248, 0x03DCD3, 0x055B8A, + 0x098BC3, 0x089754, 0x05683E, 0x04DDC9, 0x11ECB4, 0x1021B9, 0x10E661, 0x0F35A3, + 0x0C0000, 0x096DA8, 0x0A36CB, 0x08066E, 0x067E8E, 0x0372E1, 0x05871E, 0x02D16B, + 0x074E60, 0x05BD8B, 0x042374, 0x035C28, 0x0419BB, 0x021726, 0x02507C, 0x014188, +}, +{ + 0x0C0000, 0x11AF4C, 0x13C3EC, 0x1B6A50, 0x10A89F, 0x0FDFD4, 0x1B2F0F, 0x1876FD, + 0x0D8000, 0x0A9B5D, 0x14CE3C, 0x1058CB, 0x07B649, 0x03EE7B, 0x0B4289, 0x0606FB, + 0x149410, 0x10F030, 0x1448AB, 0x0FEFDA, 0x0BAAD2, 0x05F2AB, 0x0AFA40, 0x0598A7, + 0x149410, 0x1C8B03, 0x1366E6, 0x1AE949, 0x114000, 0x17ED2B, 0x0E247C, 0x139DC1, + 0x1689C8, 0x1448AB, 0x127A63, 0x11529F, 0x0A25BE, 0x0F336D, 0x05CB3C, 0x08094E, + 0x0E51A4, 0x0CE2FE, 0x081C5D, 0x074CAE, 0x1AE30E, 0x183296, 0x195991, 0x16D074, + 0x120000, 0x0E247C, 0x0F5230, 0x0C09A5, 0x09BDD5, 0x052C51, 0x084AAC, 0x043A21, + 0x0AF590, 0x089C51, 0x06352E, 0x050A3B, 0x062698, 0x0322B9, 0x0378BA, 0x01E24D, +}, +{ + 0x110000, 0x190DAC, 0x1C0039, 0x26D69C, 0x17998C, 0x167D16, 0x2682AB, 0x22A891, + 0x132000, 0x0F06C3, 0x1D797F, 0x172876, 0x0AECE7, 0x0591D9, 0x0FF398, 0x0889E3, + 0x1D2717, 0x17FEEF, 0x1CBC47, 0x1693CA, 0x108754, 0x086D1D, 0x0F8D30, 0x07ED98, + 0x1D2717, 0x286F9A, 0x1B7C71, 0x261FD3, 0x187000, 0x21E552, 0x140904, 0x1BCA27, + 0x1FEDDC, 0x1CBC47, 0x1A2D62, 0x188A62, 0x0E6022, 0x1588DA, 0x083540, 0x0B6284, + 0x1448FE, 0x124192, 0x0B7D84, 0x0A574B, 0x2616FF, 0x2247AA, 0x23E98D, 0x2051FA, + 0x198000, 0x140904, 0x15B46F, 0x110DAA, 0x0DCCEE, 0x07541E, 0x0BBF1F, 0x05FD04, + 0x0F868B, 0x0C32C8, 0x08CB57, 0x0723D4, 0x08B6AD, 0x047130, 0x04EB08, 0x02AB42, +}, +{ + 0x160000, 0x206C0C, 0x243C86, 0x3242E8, 0x1E8A79, 0x1D1A59, 0x31D646, 0x2CDA25, + 0x18C000, 0x13722A, 0x2624C3, 0x1DF820, 0x0E2385, 0x073537, 0x14A4A7, 0x0B0CCC, + 0x25BA1D, 0x1F0DAE, 0x252FE4, 0x1D37BB, 0x1563D6, 0x0AE78E, 0x142021, 0x0A4288, + 0x25BA1D, 0x345430, 0x2391FB, 0x31565C, 0x1FA000, 0x2BDD7A, 0x19ED8D, 0x23F68C, + 0x2951EF, 0x252FE4, 0x21E061, 0x1FC224, 0x129A87, 0x1BDE47, 0x0A9F44, 0x0EBBBA, + 0x1A4058, 0x17A026, 0x0EDEAB, 0x0D61E9, 0x314AEF, 0x2C5CBE, 0x2E798A, 0x29D380, + 0x210000, 0x19ED8D, 0x1C16AE, 0x1611AE, 0x11DC06, 0x097BEA, 0x0F3391, 0x07BFE7, + 0x141787, 0x0FC93E, 0x0B617F, 0x093D6D, 0x0B46C1, 0x05BFA8, 0x065D55, 0x037437, +}, +{ + 0x1C0000, 0x2943B2, 0x2E1E7C, 0x3FF810, 0x26DEC9, 0x250A43, 0x3F6DCE, 0x3915A3, + 0x1F8000, 0x18BFD8, 0x308BE1, 0x262485, 0x11FEA9, 0x092C75, 0x1A45EB, 0x0E1049, + 0x300425, 0x2785C6, 0x2F5439, 0x252FA8, 0x1B393F, 0x0DE0E4, 0x199D41, 0x0D0EDC, + 0x300425, 0x4299B2, 0x2D456E, 0x3ECB00, 0x284000, 0x37D40F, 0x20FFCB, 0x2DC56D, + 0x3496D3, 0x2F5439, 0x2B1D93, 0x286B74, 0x17AD66, 0x2377FE, 0x0D84E2, 0x12C062, + 0x21692A, 0x1E11A5, 0x12ECDA, 0x110840, 0x3EBC76, 0x387608, 0x3B2652, 0x353BBA, + 0x2A0000, 0x20FFCB, 0x23BFC6, 0x1C1681, 0x16BAF1, 0x0C1213, 0x1358E8, 0x09DCF8, + 0x19924F, 0x141767, 0x0E7C16, 0x0BC28A, 0x0E5A0D, 0x075104, 0x0819B2, 0x04655D, +}, +{ + 0x220000, 0x321B58, 0x380072, 0x4DAD38, 0x2F3318, 0x2CFA2D, 0x4D0556, 0x455122, + 0x264000, 0x1E0D86, 0x3AF2FE, 0x2E50EB, 0x15D9CE, 0x0B23B2, 0x1FE730, 0x1113C7, + 0x3A4E2D, 0x2FFDDF, 0x39788E, 0x2D2795, 0x210EA8, 0x10DA39, 0x1F1A61, 0x0FDB2F, + 0x3A4E2D, 0x50DF33, 0x36F8E1, 0x4C3FA5, 0x30E000, 0x43CAA5, 0x281209, 0x37944D, + 0x3FDBB7, 0x39788E, 0x345AC4, 0x3114C3, 0x1CC044, 0x2B11B4, 0x106A80, 0x16C509, + 0x2891FC, 0x248324, 0x16FB08, 0x14AE97, 0x4C2DFD, 0x448F54, 0x47D31B, 0x40A3F5, + 0x330000, 0x281209, 0x2B68DF, 0x221B53, 0x1B99DB, 0x0EA83B, 0x177E3E, 0x0BFA09, + 0x1F0D17, 0x18658F, 0x1196AE, 0x0E47A8, 0x116D5A, 0x08E260, 0x09D60F, 0x055684, +}, +{ + 0x2C0000, 0x40D818, 0x48790C, 0x6485D0, 0x3D14F2, 0x3A34B2, 0x63AC8D, 0x59B44A, + 0x318000, 0x26E454, 0x4C4986, 0x3BF03F, 0x1C470A, 0x0E6A6E, 0x29494D, 0x161998, + 0x4B743A, 0x3E1B5C, 0x4A5FC7, 0x3A6F75, 0x2AC7AC, 0x15CF1D, 0x284041, 0x148510, + 0x4B743A, 0x68A861, 0x4723F6, 0x62ACB8, 0x3F4000, 0x57BAF3, 0x33DB1A, 0x47ED19, + 0x52A3DE, 0x4A5FC7, 0x43C0C2, 0x3F8448, 0x25350D, 0x37BC8E, 0x153E87, 0x1D7775, + 0x3480B0, 0x2F404C, 0x1DBD56, 0x1AC3D2, 0x6295DE, 0x58B97B, 0x5CF313, 0x53A701, + 0x420000, 0x33DB1A, 0x382D5C, 0x2C235D, 0x23B80D, 0x12F7D4, 0x1E6723, 0x0F7FCF, + 0x282F0E, 0x1F927D, 0x16C2FF, 0x127AD9, 0x168D83, 0x0B7F50, 0x0CBAAA, 0x06E86E, +}, +}; + +} // End of namespace Video + +#endif // GRAPHICS_VIDEO_BINKDATA_H diff --git a/video/module.mk b/video/module.mk index d8132187854..98c84e3516b 100644 --- a/video/module.mk +++ b/video/module.mk @@ -2,6 +2,7 @@ MODULE := video MODULE_OBJS := \ avi_decoder.o \ + bink_decoder.o \ coktel_decoder.o \ dxa_decoder.o \ flic_decoder.o \ From fffe7a9cc06cd03b8a7efbe6e75e3fc1a14c38ba Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 16:37:24 -0400 Subject: [PATCH 011/731] VIDEO: Remove Bink header check from Smacker --- video/smk_decoder.cpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/video/smk_decoder.cpp b/video/smk_decoder.cpp index 05a20ecd8da..c4c3721a28a 100644 --- a/video/smk_decoder.cpp +++ b/video/smk_decoder.cpp @@ -374,14 +374,6 @@ bool SmackerDecoder::loadStream(Common::SeekableReadStream *stream) { // Seek to the first frame _header.signature = _fileStream->readUint32BE(); - - // No BINK support available - if (_header.signature == MKTAG('B','I','K','i')) { - delete _fileStream; - _fileStream = 0; - return false; - } - assert(_header.signature == MKTAG('S','M','K','2') || _header.signature == MKTAG('S','M','K','4')); uint32 width = _fileStream->readUint32LE(); From 9374215789fcfa3ee34f256d819eaa91aa08b04f Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 16:37:41 -0400 Subject: [PATCH 012/731] SCUMM: Add support for Bink video --- engines/scumm/he/animation_he.cpp | 66 ++++++++++++++++++++++--------- engines/scumm/vars.cpp | 4 +- 2 files changed, 50 insertions(+), 20 deletions(-) diff --git a/engines/scumm/he/animation_he.cpp b/engines/scumm/he/animation_he.cpp index 95a8a701bb6..7c1bbfc9a5f 100644 --- a/engines/scumm/he/animation_he.cpp +++ b/engines/scumm/he/animation_he.cpp @@ -26,12 +26,17 @@ #include "scumm/he/intern_he.h" #include "audio/audiostream.h" +#include "video/bink_decoder.h" #include "video/smk_decoder.h" namespace Scumm { MoviePlayer::MoviePlayer(ScummEngine_v90he *vm, Audio::Mixer *mixer) : _vm(vm) { - _video = new Video::SmackerDecoder(mixer); + if (_vm->_game.heversion >= 100 && (_vm->_game.features & GF_16BIT_COLOR)) + _video = new Video::BinkDecoder(); + else + _video = new Video::SmackerDecoder(mixer); + _flags = 0; _wizResNum = 0; } @@ -71,30 +76,55 @@ void MoviePlayer::copyFrameToBuffer(byte *dst, int dstType, uint x, uint y, uint uint w = _video->getWidth(); const Graphics::Surface *surface = _video->decodeNextFrame(); + + if (!surface) + return; + byte *src = (byte *)surface->pixels; if (_video->hasDirtyPalette()) _vm->setPaletteFromPtr(_video->getPalette(), 256); if (_vm->_game.features & GF_16BIT_COLOR) { - dst += y * pitch + x * 2; - do { - for (uint i = 0; i < w; i++) { - uint16 color = READ_LE_UINT16(_vm->_hePalettes + _vm->_hePaletteSlot + 768 + src[i] * 2); - switch (dstType) { - case kDstScreen: - WRITE_UINT16(dst + i * 2, color); - break; - case kDstResource: - WRITE_LE_UINT16(dst + i * 2, color); - break; - default: - error("copyFrameToBuffer: Unknown dstType %d", dstType); + if (surface->format.bytesPerPixel == 1) { + dst += y * pitch + x * 2; + do { + for (uint i = 0; i < w; i++) { + uint16 color = READ_LE_UINT16(_vm->_hePalettes + _vm->_hePaletteSlot + 768 + src[i] * 2); + switch (dstType) { + case kDstScreen: + WRITE_UINT16(dst + i * 2, color); + break; + case kDstResource: + WRITE_LE_UINT16(dst + i * 2, color); + break; + default: + error("copyFrameToBuffer: Unknown dstType %d", dstType); + } } - } - dst += pitch; - src += w; - } while (--h); + dst += pitch; + src += w; + } while (--h); + } else { + dst += y * pitch + x * 2; + do { + for (uint i = 0; i < w; i++) { + uint16 color = *((uint16 *)src + i); + switch (dstType) { + case kDstScreen: + WRITE_UINT16(dst + i * 2, color); + break; + case kDstResource: + WRITE_LE_UINT16(dst + i * 2, color); + break; + default: + error("copyFrameToBuffer: Unknown dstType %d", dstType); + } + } + dst += pitch; + src += surface->pitch; + } while (--h); + } } else { dst += y * pitch + x; do { diff --git a/engines/scumm/vars.cpp b/engines/scumm/vars.cpp index 56f8de2ad15..65d34a4f2ea 100644 --- a/engines/scumm/vars.cpp +++ b/engines/scumm/vars.cpp @@ -704,8 +704,8 @@ void ScummEngine_v99he::resetScummVars() { VAR(VAR_NUM_UNK) = _numUnk; if (_game.heversion >= 100 && (_game.features & GF_16BIT_COLOR)) { - // Disable Bink and Smacker video in 16bit color games - VAR(140) = 0; + // Enable Bink and Smacker video in 16bit color games + VAR(140) = 1; } } #endif From 4c065363a05589ab761d24dc7a25da592ba69934 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 17:32:36 -0400 Subject: [PATCH 013/731] VIDEO: Fix Bink RDFT stereo Thanks to DrMcCoy --- video/bink_decoder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/video/bink_decoder.cpp b/video/bink_decoder.cpp index 491f8afd984..79bcdc18909 100644 --- a/video/bink_decoder.cpp +++ b/video/bink_decoder.cpp @@ -252,7 +252,7 @@ void BinkDecoder::audioPacket(AudioTrack &audio) { audioBlock(audio, out); byte flags = Audio::FLAG_16BITS; - if (audio.channels == 2) + if (audio.outChannels == 2) flags |= Audio::FLAG_STEREO; #ifdef SCUMM_LITTLE_ENDIAN From 82ed30817d539486912a394222d32975b5db2c0a Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 19:23:49 -0400 Subject: [PATCH 014/731] VIDEO: Cleanup Bink a bit - Fix playing videos back-to-back - Silence a cast warning --- video/bink_decoder.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/video/bink_decoder.cpp b/video/bink_decoder.cpp index 79bcdc18909..5ed4011b613 100644 --- a/video/bink_decoder.cpp +++ b/video/bink_decoder.cpp @@ -129,23 +129,22 @@ void BinkDecoder::close() { _audioStarted = false; for (int i = 0; i < 4; i++) { - delete[] _curPlanes[i]; - delete[] _oldPlanes[i]; + delete[] _curPlanes[i]; _curPlanes[i] = 0; + delete[] _oldPlanes[i]; _oldPlanes[i] = 0; } deinitBundles(); - for (int i = 0; i < 16; i++) + for (int i = 0; i < 16; i++) { delete _huffman[i]; + _huffman[i] = 0; + } delete _bink; _bink = 0; _surface.free(); _audioTrack = 0; - for (int i = 0; i < 16; i++) - _huffman[i] = 0; - for (int i = 0; i < kSourceMAX; i++) { _bundles[i].countLength = 0; @@ -165,10 +164,8 @@ void BinkDecoder::close() { _colHighHuffman[i].symbols[j] = j; } - for (int i = 0; i < 4; i++) { - _curPlanes[i] = 0; - _oldPlanes[i] = 0; - } + _audioTracks.clear(); + _frames.clear(); } uint32 BinkDecoder::getElapsedTime() const { @@ -1423,7 +1420,7 @@ void BinkDecoder::audioBlock(AudioTrack &audio, int16 *out) { for (uint32 j = 0; j < audio.frameLen; j++) audio.coeffsPtr[i][j] = 385.0 + audio.coeffsPtr[i][j] * (1.0 / 32767.0); - floatToInt16Interleave(out, (const float **)audio.coeffsPtr, audio.frameLen, audio.channels); + floatToInt16Interleave(out, const_cast(audio.coeffsPtr), audio.frameLen, audio.channels); if (!audio.first) { int count = audio.overlapLen * audio.channels; From 7c28d22ca01e3479532d06b5c4c8f3b9fe299ee4 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 19:37:46 -0400 Subject: [PATCH 015/731] VIDEO: Fix mismatched new[]/free --- video/bink_decoder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/video/bink_decoder.cpp b/video/bink_decoder.cpp index 5ed4011b613..e8d7adfd2fa 100644 --- a/video/bink_decoder.cpp +++ b/video/bink_decoder.cpp @@ -243,7 +243,7 @@ void BinkDecoder::audioPacket(AudioTrack &audio) { int outSize = audio.frameLen * audio.channels; while (audio.bits->pos() < audio.bits->size()) { - int16 *out = new int16[outSize]; + int16 *out = (int16 *)malloc(outSize * 2); memset(out, 0, outSize * 2); audioBlock(audio, out); From 9dd8650872e4053c78df9609ec59d4b500a19692 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 19:44:04 -0400 Subject: [PATCH 016/731] COMMON: Cleanup BitStream Fix mismatched new[]/free and restored a missing statement --- common/bitstream.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/common/bitstream.cpp b/common/bitstream.cpp index fb40957ef6b..b41ad237e0e 100644 --- a/common/bitstream.cpp +++ b/common/bitstream.cpp @@ -49,12 +49,14 @@ BitStreamBE::BitStreamBE(SeekableReadStream &stream, uint32 bitCount) : _value(0 // Read the number of bytes of the stream uint32 byteSize = bitCount / 8; - byte *data = new byte[byteSize]; + byte *data = (byte *)malloc(byteSize); if (stream.read(data, byteSize) != byteSize) { - delete[] data; + free(data); error("Bad BitStreamBE size"); } + + _stream = new MemoryReadStream(data, byteSize, DisposeAfterUse::YES); } BitStreamBE::BitStreamBE(const byte *data, uint32 bitCount) : _value(0), _inValue(0) { @@ -64,7 +66,7 @@ BitStreamBE::BitStreamBE(const byte *data, uint32 bitCount) : _value(0), _inValu // Copy the number of bytes from the data array uint32 byteSize = bitCount / 8; - byte *dataN = new byte[byteSize]; + byte *dataN = (byte *)malloc(byteSize); memcpy(dataN, data, byteSize); @@ -133,10 +135,10 @@ BitStream32LE::BitStream32LE(SeekableReadStream &stream, uint32 bitCount) : _val // Read the number of bytes of the stream uint32 byteSize = bitCount / 8; - byte *data = new byte[byteSize]; + byte *data = (byte *)malloc(byteSize); if (stream.read(data, byteSize) != byteSize) { - delete[] data; + free(data); error("Bad BitStream32LE size"); } @@ -150,7 +152,7 @@ BitStream32LE::BitStream32LE(const byte *data, uint32 bitCount) : _value(0), _in // Copy the number of bytes from the data array uint32 byteSize = bitCount / 8; - byte *dataN = new byte[byteSize]; + byte *dataN = (byte *)malloc(byteSize); memcpy(dataN, data, byteSize); From ccfb7cb86fd8cf8e21aa398d5b7e291c15eba6d8 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 19:53:15 -0400 Subject: [PATCH 017/731] VIDEO: Remember to call reset() from BinkDecoder::close() --- video/bink_decoder.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/video/bink_decoder.cpp b/video/bink_decoder.cpp index e8d7adfd2fa..a21582e5f3f 100644 --- a/video/bink_decoder.cpp +++ b/video/bink_decoder.cpp @@ -120,6 +120,8 @@ BinkDecoder::~BinkDecoder() { } void BinkDecoder::close() { + reset(); + if (_audioStream) { // Stop audio g_system->getMixer()->stopHandle(_audioHandle); From c270d5be12f71c9ae51db6182f5d413e21375d83 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 21:09:25 -0400 Subject: [PATCH 018/731] GRAPHICS: Note that SCUMM now uses the YUV to RGB code --- graphics/yuv_to_rgb.h | 1 + 1 file changed, 1 insertion(+) diff --git a/graphics/yuv_to_rgb.h b/graphics/yuv_to_rgb.h index 9b561f20029..e85c1040980 100644 --- a/graphics/yuv_to_rgb.h +++ b/graphics/yuv_to_rgb.h @@ -26,6 +26,7 @@ /** * @file * YUV to RGB conversion used in engines: + * - scumm (he) * - sword25 */ From f0cc1eb58b55f5ad9b14d5d5e0182d4b6eba7412 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sat, 2 Jul 2011 21:11:21 -0400 Subject: [PATCH 019/731] VIDEO: Add more to the BinkDecoder class comment --- video/bink_decoder.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/video/bink_decoder.h b/video/bink_decoder.h index e15cabb4265..8cb447749db 100644 --- a/video/bink_decoder.h +++ b/video/bink_decoder.h @@ -45,7 +45,12 @@ namespace Common { namespace Video { -/** A decoder for RAD Game Tools' Bink videos. */ +/** + * Decoder for Bink videos. + * + * Video decoder used in engines: + * - scumm (he) + */ class BinkDecoder : public FixedRateVideoDecoder { public: BinkDecoder(); From 7dc727131682806c9bd97ba1099ee2291c21a7a6 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sun, 3 Jul 2011 13:32:05 -0400 Subject: [PATCH 020/731] COMMON: Remove unused vector2orientation function --- common/math.h | 9 --------- 1 file changed, 9 deletions(-) diff --git a/common/math.h b/common/math.h index 44ba640dfb0..db803d98897 100644 --- a/common/math.h +++ b/common/math.h @@ -106,15 +106,6 @@ inline float deg2rad(float deg) { return deg * M_PI / 180.0; } -inline void vector2orientation(float vX, float vY, float &x, float &y, float &z) { - x = 0.0; - y = rad2deg(acos(vY)); - z = 0.0; - - if (vX < 0) - y = 360.0 - y; -} - } // End of namespace Common #endif // COMMON_MATHS_H From b00586df8253a645d4d7a59b68ffa208cb86ee7c Mon Sep 17 00:00:00 2001 From: CeRiAl Date: Sun, 3 Jul 2011 22:34:20 +0200 Subject: [PATCH 021/731] MACOSX: Add i18n support for Mac OSX application menu --- backends/platform/sdl/macosx/appMenu_osx.h | 32 +++++++ backends/platform/sdl/macosx/appMenu_osx.mm | 100 ++++++++++++++++++++ backends/platform/sdl/macosx/macosx.cpp | 12 +++ backends/platform/sdl/module.mk | 3 +- po/POTFILES | 1 + 5 files changed, 147 insertions(+), 1 deletion(-) create mode 100755 backends/platform/sdl/macosx/appMenu_osx.h create mode 100755 backends/platform/sdl/macosx/appMenu_osx.mm diff --git a/backends/platform/sdl/macosx/appMenu_osx.h b/backends/platform/sdl/macosx/appMenu_osx.h new file mode 100755 index 00000000000..005414b7894 --- /dev/null +++ b/backends/platform/sdl/macosx/appMenu_osx.h @@ -0,0 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef APPMENU_OSX_H +#define APPMENU_OSX_H + +#if defined(MACOSX) + +void replaceApplicationMenuItems(); + +#endif // MACOSX + +#endif diff --git a/backends/platform/sdl/macosx/appMenu_osx.mm b/backends/platform/sdl/macosx/appMenu_osx.mm new file mode 100755 index 00000000000..e39815fbd92 --- /dev/null +++ b/backends/platform/sdl/macosx/appMenu_osx.mm @@ -0,0 +1,100 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#if defined(MACOSX) + +#include "backends/platform/sdl/macosx/appMenu_osx.h" +#include "common/translation.h" + +#include + +void replaceApplicationMenuItems() { + + // Code mainly copied and adapted from SDLmain.m + NSMenu *appleMenu; + NSMenu *windowMenu; + NSMenuItem *menuItem; + + // For some reason [[NSApp mainMenu] removeAllItems] doesn't work and crashes, so we need + // to remove the SDL generated menus one by one + [[NSApp mainMenu] removeItemAtIndex:0]; // Remove application menu + [[NSApp mainMenu] removeItemAtIndex:0]; // Remove "Windows" menu + + // Create new application menu + appleMenu = [[NSMenu alloc] initWithTitle:@""]; + + // Get current encoding + NSStringEncoding *stringEncoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)[NSString stringWithCString:(TransMan.getCurrentCharset()).c_str() encoding:NSASCIIStringEncoding])); + + // Add "About ScummVM" menu item + [appleMenu addItemWithTitle:[NSString stringWithCString:_("About ScummVM") encoding:stringEncoding] action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; + + // Add seperator + [appleMenu addItem:[NSMenuItem separatorItem]]; + + // Add "Hide ScummVM" menu item + [appleMenu addItemWithTitle:[NSString stringWithCString:_("Hide ScummVM") encoding:stringEncoding] action:@selector(hide:) keyEquivalent:@"h"]; + + // Add "Hide Others" menu item + menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:[NSString stringWithCString:_("Hide Others") encoding:stringEncoding] action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; + [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; + + // Add "Show All" menu item + [appleMenu addItemWithTitle:[NSString stringWithCString:_("Show All") encoding:stringEncoding] action:@selector(unhideAllApplications:) keyEquivalent:@""]; + + // Add seperator + [appleMenu addItem:[NSMenuItem separatorItem]]; + + // Add "Quit ScummVM" menu item + [appleMenu addItemWithTitle:[NSString stringWithCString:_("Quit ScummVM") encoding:stringEncoding] action:@selector(terminate:) keyEquivalent:@"q"]; + + // Put application menu into the menubar + menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; + [menuItem setSubmenu:appleMenu]; + [[NSApp mainMenu] addItem:menuItem]; + + // Tell the application object that this is now the application menu + [NSApp setAppleMenu:appleMenu]; + + + // Create new "Window" menu + windowMenu = [[NSMenu alloc] initWithTitle:[NSString stringWithCString:_("Window") encoding:stringEncoding]]; + + // Add "Minimize" menu item + menuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithCString:_("Minimize") encoding:stringEncoding] action:@selector(performMiniaturize:) keyEquivalent:@"m"]; + [windowMenu addItem:menuItem]; + + // Put menu into the menubar + menuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithCString:_("Window") encoding:stringEncoding] action:nil keyEquivalent:@""]; + [menuItem setSubmenu:windowMenu]; + [[NSApp mainMenu] addItem:menuItem]; + + // Tell the application object that this is now the window menu. + [NSApp setWindowsMenu:windowMenu]; + + // Finally give up our references to the objects + [appleMenu release]; + [windowMenu release]; + [menuItem release]; +} + +#endif // MACOSX diff --git a/backends/platform/sdl/macosx/macosx.cpp b/backends/platform/sdl/macosx/macosx.cpp index 817f61e8644..e263192c824 100644 --- a/backends/platform/sdl/macosx/macosx.cpp +++ b/backends/platform/sdl/macosx/macosx.cpp @@ -29,9 +29,12 @@ #include "backends/platform/sdl/macosx/macosx.h" #include "backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h" +#include "backends/platform/sdl/macosx/appMenu_osx.h" #include "common/archive.h" +#include "common/config-manager.h" #include "common/fs.h" +#include "common/translation.h" #include "ApplicationServices/ApplicationServices.h" // for LSOpenFSRef #include "CoreFoundation/CoreFoundation.h" // for CF* stuff @@ -51,6 +54,15 @@ void OSystem_MacOSX::initBackend() { _mixerManager->init(); } +#ifdef USE_TRANSLATION + // We need to initialize the translataion manager here for the following + // call to replaceApplicationMenuItems() work correctly + TransMan.setLanguage(ConfMan.get("gui_language").c_str()); +#endif // USE_TRANSLATION + + // Replace the SDL generated menu items with our own translated ones on Mac-OSX + replaceApplicationMenuItems(); + // Invoke parent implementation of this method OSystem_POSIX::initBackend(); } diff --git a/backends/platform/sdl/module.mk b/backends/platform/sdl/module.mk index e67bf859d6f..34631c372d9 100644 --- a/backends/platform/sdl/module.mk +++ b/backends/platform/sdl/module.mk @@ -14,7 +14,8 @@ endif ifdef MACOSX MODULE_OBJS += \ macosx/macosx-main.o \ - macosx/macosx.o + macosx/macosx.o \ + macosx/appMenu_osx.o endif ifdef WIN32 diff --git a/po/POTFILES b/po/POTFILES index 3ffb587f016..26bbf52d8f1 100644 --- a/po/POTFILES +++ b/po/POTFILES @@ -63,6 +63,7 @@ backends/keymapper/remap-dialog.cpp backends/midi/windows.cpp backends/platform/ds/arm9/source/dsoptions.cpp backends/platform/iphone/osys_events.cpp +backends/platform/sdl/macosx/appMenu_osx.mm backends/graphics/surfacesdl/surfacesdl-graphics.cpp backends/graphics/opengl/opengl-graphics.cpp backends/graphics/openglsdl/openglsdl-graphics.cpp From 7cf07dfa249f6b8705b43d9f264bd13f24310518 Mon Sep 17 00:00:00 2001 From: Vladimir Menshakov Date: Thu, 7 Jul 2011 13:34:10 +0400 Subject: [PATCH 022/731] =?UTF-8?q?DREAMWEB:=20Fixed=20=C3=9F=20in=20germa?= =?UTF-8?q?n=20version(typo)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- engines/dreamweb/dreamweb.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp index eebadfddae9..85cb2c19831 100644 --- a/engines/dreamweb/dreamweb.cpp +++ b/engines/dreamweb/dreamweb.cpp @@ -591,7 +591,7 @@ uint8 DreamWebEngine::modifyChar(uint8 c) const { return 'Z' + 4; case 154: return 'Z' + 6; - case 255: + case 225: return 'A' - 1; case 153: return 'Z' + 5; From e3558e56d7b94fce8a561eb52c4c02c73ab74091 Mon Sep 17 00:00:00 2001 From: dhewg Date: Thu, 7 Jul 2011 15:22:53 +0200 Subject: [PATCH 023/731] PS3: Fix comment --- backends/platform/sdl/ps3/ps3.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backends/platform/sdl/ps3/ps3.cpp b/backends/platform/sdl/ps3/ps3.cpp index 16722ccdb7f..33586ce693e 100644 --- a/backends/platform/sdl/ps3/ps3.cpp +++ b/backends/platform/sdl/ps3/ps3.cpp @@ -21,7 +21,7 @@ */ #define FORBIDDEN_SYMBOL_EXCEPTION_mkdir -#define FORBIDDEN_SYMBOL_EXCEPTION_time_h //On IRIX, sys/stat.h includes sys/time.h +#define FORBIDDEN_SYMBOL_EXCEPTION_time_h // sys/stat.h includes sys/time.h #define FORBIDDEN_SYMBOL_EXCEPTION_unistd_h #include "common/scummsys.h" From f0bef196b19802b2ad544775ee80acfafb057bbf Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Thu, 7 Jul 2011 16:21:09 +0200 Subject: [PATCH 024/731] MOHAWK: Maintain ordered list of LB items. --- engines/mohawk/livingbooks.cpp | 14 +++++++++++--- engines/mohawk/livingbooks.h | 3 +++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/engines/mohawk/livingbooks.cpp b/engines/mohawk/livingbooks.cpp index f9d18ff7ffe..dd7bc9a8399 100644 --- a/engines/mohawk/livingbooks.cpp +++ b/engines/mohawk/livingbooks.cpp @@ -204,9 +204,12 @@ Common::Error MohawkEngine_LivingBooks::run() { break; case Common::EVENT_LBUTTONDOWN: - for (uint16 i = 0; i < _items.size(); i++) - if (_items[i]->contains(event.mouse)) - found = _items[i]; + for (Common::List::const_iterator i = _orderedItems.begin(); i != _orderedItems.end(); ++i) { + if ((*i)->contains(event.mouse)) { + found = *i; + break; + } + } if (found) found->handleMouseDown(event.mouse); @@ -341,6 +344,7 @@ void MohawkEngine_LivingBooks::destroyPage() { delete _page; assert(_items.empty()); + assert(_orderedItems.empty()); _page = NULL; _notifyEvents.clear(); @@ -567,6 +571,7 @@ void MohawkEngine_LivingBooks::updatePage() { case kLBDelayedEventDestroy: _items.remove_at(i); i--; + _orderedItems.remove(delayedEvent.item); delete delayedEvent.item; _page->itemDestroyed(delayedEvent.item); if (_focus == delayedEvent.item) @@ -613,6 +618,8 @@ void MohawkEngine_LivingBooks::removeArchive(Archive *archive) { void MohawkEngine_LivingBooks::addItem(LBItem *item) { _items.push_back(item); + _orderedItems.push_front(item); + item->_iterator = _orderedItems.begin(); } void MohawkEngine_LivingBooks::removeItems(const Common::Array &items) { @@ -626,6 +633,7 @@ void MohawkEngine_LivingBooks::removeItems(const Common::Array &items) break; } assert(found); + _orderedItems.erase(items[i]->_iterator); } } diff --git a/engines/mohawk/livingbooks.h b/engines/mohawk/livingbooks.h index ad2fe56a52c..c86a3cc0550 100644 --- a/engines/mohawk/livingbooks.h +++ b/engines/mohawk/livingbooks.h @@ -405,6 +405,8 @@ public: uint16 getSoundPriority() { return _soundMode; } bool isAmbient() { return _isAmbient; } + Common::List::iterator _iterator; + protected: MohawkEngine_LivingBooks *_vm; LBPage *_page; @@ -714,6 +716,7 @@ private: uint16 _phase; LBPage *_page; Common::Array _items; + Common::List _orderedItems; Common::Queue _eventQueue; LBItem *_focus; void destroyPage(); From 33a85af915bed7db63561f54ee5848aa7792fcbc Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Thu, 7 Jul 2011 16:21:49 +0200 Subject: [PATCH 025/731] MOHAWK: Handle cursor changes in kLBNotifyChangeMode. --- engines/mohawk/livingbooks.cpp | 51 ++++++++++++++++++++++++++-------- engines/mohawk/livingbooks.h | 4 +++ 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/engines/mohawk/livingbooks.cpp b/engines/mohawk/livingbooks.cpp index dd7bc9a8399..65073bd970b 100644 --- a/engines/mohawk/livingbooks.cpp +++ b/engines/mohawk/livingbooks.cpp @@ -1327,8 +1327,13 @@ void MohawkEngine_LivingBooks::handleNotify(NotifyEvent &event) { if (getGameType() == GType_LIVINGBOOKSV1) { debug(2, "kLBNotifyChangeMode: %d", event.param); quitGame(); - } else { - debug(2, "kLBNotifyChangeMode: mode %d, page %d.%d", + break; + } + + debug(2, "kLBNotifyChangeMode: v2 type %d", event.param); + switch (event.param) { + case 1: + debug(2, "kLBNotifyChangeMode:, mode %d, page %d.%d", event.newMode, event.newPage, event.newSubpage); // TODO: what is entry.newUnknown? if (!event.newMode) @@ -1339,6 +1344,13 @@ void MohawkEngine_LivingBooks::handleNotify(NotifyEvent &event) { error("kLBNotifyChangeMode failed to move to mode %d, page %d.%d", event.newMode, event.newPage, event.newSubpage); } + break; + case 3: + debug(2, "kLBNotifyChangeMode: new cursor '%s'", event.newCursor.c_str()); + _cursor->setCursor(event.newCursor); + break; + default: + error("unknown v2 kLBNotifyChangeMode type %d", event.param); } break; @@ -2092,16 +2104,32 @@ LBScriptEntry *LBItem::parseScriptEntry(uint16 type, uint16 &size, Common::Memor } if (type == kLBNotifyScript && entry->opcode == kLBNotifyChangeMode && _vm->getGameType() != GType_LIVINGBOOKSV1) { - if (size < 8) { - error("%d unknown bytes in notify entry kLBNotifyChangeMode", size); + switch (entry->param) { + case 1: + if (size < 8) + error("%d unknown bytes in notify entry kLBNotifyChangeMode", size); + entry->newUnknown = stream->readUint16(); + entry->newMode = stream->readUint16(); + entry->newPage = stream->readUint16(); + entry->newSubpage = stream->readUint16(); + debug(4, "kLBNotifyChangeMode: unknown %04x, mode %d, page %d.%d", + entry->newUnknown, entry->newMode, entry->newPage, entry->newSubpage); + size -= 8; + break; + case 3: + { + Common::String newCursor = _vm->readString(stream); + entry->newCursor = newCursor; + if (size < newCursor.size() + 1) + error("failed to read newCursor in notify entry"); + size -= newCursor.size() + 1; + debug(4, "kLBNotifyChangeMode: new cursor '%s'", newCursor.c_str()); + } + break; + default: + // the original engine also does something when param==2 (but not a notify) + error("unknown v2 kLBNotifyChangeMode type %d", entry->param); } - entry->newUnknown = stream->readUint16(); - entry->newMode = stream->readUint16(); - entry->newPage = stream->readUint16(); - entry->newSubpage = stream->readUint16(); - debug(4, "kLBNotifyChangeMode: unknown %04x, mode %d, page %d.%d", - entry->newUnknown, entry->newMode, entry->newPage, entry->newSubpage); - size -= 8; } if (entry->opcode == kLBOpSendExpression) { if (size < 4) @@ -2585,6 +2613,7 @@ void LBItem::runScript(uint event, uint16 data, uint16 from) { notifyEvent.newMode = entry->newMode; notifyEvent.newPage = entry->newPage; notifyEvent.newSubpage = entry->newSubpage; + notifyEvent.newCursor = entry->newCursor; _vm->addNotifyEvent(notifyEvent); } else _vm->addNotifyEvent(NotifyEvent(entry->opcode, entry->param)); diff --git a/engines/mohawk/livingbooks.h b/engines/mohawk/livingbooks.h index c86a3cc0550..84269452579 100644 --- a/engines/mohawk/livingbooks.h +++ b/engines/mohawk/livingbooks.h @@ -133,7 +133,9 @@ enum { kLBEventMouseUp = 5, kLBEventPhaseMain = 6, kLBEventNotified = 7, + kLBEventDragStart = 8, kLBEventDragMove = 9, + kLBEventDragEnd = 0xa, kLBEventRolloverBegin = 0xb, kLBEventRolloverMove = 0xc, kLBEventRolloverEnd = 0xd, @@ -271,6 +273,7 @@ struct LBScriptEntry { uint16 newMode; uint16 newPage; uint16 newSubpage; + Common::String newCursor; // kLBEventNotified uint16 matchFrom; @@ -610,6 +613,7 @@ struct NotifyEvent { uint16 newMode; uint16 newPage; uint16 newSubpage; + Common::String newCursor; }; enum DelayedEventType { From e4fc8e85ed30217ee537c178e01d5a980ba0f14a Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Thu, 7 Jul 2011 16:20:01 +0200 Subject: [PATCH 026/731] MOHAWK: Implement stringLen and substring LBCode functions. --- engines/mohawk/livingbooks_code.cpp | 29 +++++++++++++++++++++++++++-- engines/mohawk/livingbooks_code.h | 2 ++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/engines/mohawk/livingbooks_code.cpp b/engines/mohawk/livingbooks_code.cpp index e9ef2516e29..6531f65753a 100644 --- a/engines/mohawk/livingbooks_code.cpp +++ b/engines/mohawk/livingbooks_code.cpp @@ -686,8 +686,8 @@ struct CodeCommandInfo { CodeCommandInfo generalCommandInfo[NUM_GENERAL_COMMANDS] = { { "eval", &LBCode::cmdEval }, { "random", &LBCode::cmdRandom }, - { "stringLen", 0 }, - { "substring", 0 }, + { "stringLen", &LBCode::cmdStringLen }, + { "substring", &LBCode::cmdSubstring }, { "max", 0 }, { "min", 0 }, { "abs", 0 }, @@ -861,6 +861,31 @@ void LBCode::cmdRandom(const Common::Array ¶ms) { _stack.push(_vm->_rnd->getRandomNumberRng(min, max)); } +void LBCode::cmdStringLen(const Common::Array ¶ms) { + if (params.size() != 1) + error("incorrect number of parameters (%d) to stringLen", params.size()); + + const Common::String &string = params[0].toString(); + _stack.push(string.size()); +} + +void LBCode::cmdSubstring(const Common::Array ¶ms) { + if (params.size() != 3) + error("incorrect number of parameters (%d) to substring", params.size()); + + const Common::String &string = params[0].toString(); + uint begin = params[1].toInt(); + uint end = params[2].toInt(); + if (begin == 0) + error("invalid substring call (%d to %d)", begin, end); + if (begin > end || end > string.size()) { + _stack.push(Common::String()); + return; + } + Common::String substring(string.c_str() + (begin - 1), end - begin + 1); + _stack.push(substring); +} + void LBCode::cmdGetRect(const Common::Array ¶ms) { if (params.size() < 2) { _stack.push(getRectFromParams(params)); diff --git a/engines/mohawk/livingbooks_code.h b/engines/mohawk/livingbooks_code.h index 9c58ed7a462..79c9af94f75 100644 --- a/engines/mohawk/livingbooks_code.h +++ b/engines/mohawk/livingbooks_code.h @@ -222,6 +222,8 @@ public: void cmdUnimplemented(const Common::Array ¶ms); void cmdEval(const Common::Array ¶ms); void cmdRandom(const Common::Array ¶ms); + void cmdStringLen(const Common::Array ¶ms); + void cmdSubstring(const Common::Array ¶ms); void cmdGetRect(const Common::Array ¶ms); void cmdTopLeft(const Common::Array ¶ms); void cmdBottomRight(const Common::Array ¶ms); From 5757fc577e2b69716814ceef8b357c20e74fff0c Mon Sep 17 00:00:00 2001 From: David-John Willis Date: Thu, 7 Jul 2011 17:42:24 +0100 Subject: [PATCH 027/731] GPH: Add note to the README stored with 'mmuhack.o' for the GP2X explaining why the binary object is in the source tree. --- .../gph/devices/gp2x/mmuhack/{readme.txt => README} | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) rename backends/platform/gph/devices/gp2x/mmuhack/{readme.txt => README} (94%) diff --git a/backends/platform/gph/devices/gp2x/mmuhack/readme.txt b/backends/platform/gph/devices/gp2x/mmuhack/README similarity index 94% rename from backends/platform/gph/devices/gp2x/mmuhack/readme.txt rename to backends/platform/gph/devices/gp2x/mmuhack/README index bea49d7d6d1..6db7d818457 100644 --- a/backends/platform/gph/devices/gp2x/mmuhack/readme.txt +++ b/backends/platform/gph/devices/gp2x/mmuhack/README @@ -1,3 +1,10 @@ +PLEASE NOTE: + +The binary object 'mmuhack.o' is stored in the source tree as it is very awkward to +build it manually each time and would require the use of 2 toolchains to do so. + +Notes on how to rebuild from the included source can be found below. + About ----- @@ -107,4 +114,3 @@ Credits Original idea/implementation: Squidge (this whole thing is also known as squidgehack) Kernel module: NK Documentation: notaz - From a4a99f8cc891d55dd4e196046ee2be6a4e3fd00c Mon Sep 17 00:00:00 2001 From: D G Turner Date: Thu, 7 Jul 2011 19:18:13 +0100 Subject: [PATCH 028/731] TSAGE: Add Spanish CD Detection Entry From Bug #3357777 --- engines/tsage/detection_tables.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/engines/tsage/detection_tables.h b/engines/tsage/detection_tables.h index 8b80edf89d0..f9ced562c25 100644 --- a/engines/tsage/detection_tables.h +++ b/engines/tsage/detection_tables.h @@ -24,7 +24,7 @@ namespace tSage { static const tSageGameDescription gameDescriptions[] = { - // Ringworld CD and First Wave versions + // Ringworld English CD and First Wave versions { { "ring", @@ -38,6 +38,20 @@ static const tSageGameDescription gameDescriptions[] = { GType_Ringworld, GF_CD | GF_ALT_REGIONS }, + // Ringworld Spanish CD + { + { + "ring", + "CD", + AD_ENTRY1s("ring.rlb", "cb8bba91b30cd172712371d7123bd763", 7427980), + Common::ES_ESP, + Common::kPlatformPC, + ADGF_UNSTABLE, + Common::GUIO_NOSPEECH | Common::GUIO_NOSFX + }, + GType_Ringworld, + GF_CD | GF_ALT_REGIONS + }, // Ringworld English Floppy version { { From b27e6ac1dcaa678f7f078f6ded12ee784e44baf2 Mon Sep 17 00:00:00 2001 From: David-John Willis Date: Thu, 7 Jul 2011 21:43:08 +0100 Subject: [PATCH 029/731] OPENPANDORA: Update support scripts that create .PND distribution file. --- backends/platform/openpandora/build/PXML.xml | 77 ++-- .../openpandora/build/PXML_schema.xsd | 341 +++++++++++++++++ .../platform/openpandora/build/pnd_make.sh | 358 +++++++++++++++--- 3 files changed, 697 insertions(+), 79 deletions(-) create mode 100644 backends/platform/openpandora/build/PXML_schema.xsd diff --git a/backends/platform/openpandora/build/PXML.xml b/backends/platform/openpandora/build/PXML.xml index f4d2e2a595e..a87c49e2b80 100755 --- a/backends/platform/openpandora/build/PXML.xml +++ b/backends/platform/openpandora/build/PXML.xml @@ -1,34 +1,55 @@ + + + + + + + ScummVM + + ScummVM + + + + ScummVM is a program which allows you to run certain classic graphical point-and-click adventure games, provided you already have their data files. The clever part about this: ScummVM just replaces the executables shipped with the games, allowing you to play them on systems for which they were never designed! - + ScummVM supports many adventure games, including LucasArts SCUMM games (such as Monkey Island 1-3, Day of the Tentacle, Sam & Max, ...), many of Sierra's AGI and SCI games (such as King's Quest 1-6, Space Quest 1-5, ...), Discworld 1 and 2, Simon the Sorcerer 1 and 2, Beneath A Steel Sky, Lure of the Temptress, Broken Sword 1 and 2, Flight of the Amazon Queen, Gobliiins 1-3, The Legend of Kyrandia 1-3, many of Humongous Entertainment's children's SCUMM games (including Freddi Fish and Putt Putt games) and many more. + + + + - ScummVM - - - - - - - - - - - Point & click game interpreter. - - - - - - - - - - - - - - - + + + + + + + + ScummVM + + ScummVM + + + + ScummVM is a program which allows you to run certain classic graphical point-and-click adventure games, provided you already have their data files. The clever part about this: ScummVM just replaces the executables shipped with the games, allowing you to play them on systems for which they were never designed! + ScummVM supports many adventure games, including LucasArts SCUMM games (such as Monkey Island 1-3, Day of the Tentacle, Sam & Max, ...), many of Sierra's AGI and SCI games (such as King's Quest 1-6, Space Quest 1-5, ...), Discworld 1 and 2, Simon the Sorcerer 1 and 2, Beneath A Steel Sky, Lure of the Temptress, Broken Sword 1 and 2, Flight of the Amazon Queen, Gobliiins 1-3, The Legend of Kyrandia 1-3, many of Humongous Entertainment's children's SCUMM games (including Freddi Fish and Putt Putt games) and many more. + + + + + + + + + + + + + + + + diff --git a/backends/platform/openpandora/build/PXML_schema.xsd b/backends/platform/openpandora/build/PXML_schema.xsd new file mode 100644 index 00000000000..335efe50025 --- /dev/null +++ b/backends/platform/openpandora/build/PXML_schema.xsd @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backends/platform/openpandora/build/pnd_make.sh b/backends/platform/openpandora/build/pnd_make.sh index b19de87bb4a..0c03e8154da 100755 --- a/backends/platform/openpandora/build/pnd_make.sh +++ b/backends/platform/openpandora/build/pnd_make.sh @@ -1,65 +1,321 @@ -#!/bin/sh +#!/bin/bash +# +# pnd_make.sh +# +# This script is meant to ease generation of a pnd file. Please consult the output +# when running --help for a list of available parameters and an explaination of +# those. +# +# Required tools when running the script: +# bash +# echo, cat, mv, rm +# mkisofs or mksquashfs (the latter when using the -c param!) +# xmllint (optional, only for validation of the PXML against the schema) -######adjust path of genpxml.sh if you want to use that "feture"##### -TEMP=`getopt -o p:d:x:i:c -- "$@"` +PXML_schema=$(dirname ${0})/PXML_schema.xsd +GENPXML_PATH=$(dirname ${0})/genpxml.sh -if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi +# useful functions ... +black='\E[30m' +red='\E[31m' +green='\E[32m' +yellow='\E[33m' +blue='\E[34m' +magenta='\E[35m' +cyan='\E[36m' +white='\E[37m' -eval set -- "$TEMP" -while true ; do - case "$1" in - -p) echo "PNDNAME set to $2" ;PNDNAME=$2;shift 2;; - -d) echo "FOLDER set to $2" ;FOLDER=$2;shift 2 ;; - -x) echo "PXML set to $2" ;PXML=$2;shift 2 ;; - -i) echo "ICON set to $2" ;ICON=$2;shift 2 ;; - -c) echo "-c set, will create compressed squasfs image instead of iso $2" ;SQUASH=1;shift 1 ;; - --) shift ; break ;; - *) echo "Error while parsing arguments! $2" ; exit 1 ;; - esac -done - -rnd=$RANDOM; # random number for genpxml and index$rnd.xml - -#generate pxml if guess or empty -if [ ! $PXML ] || [ $PXML = "guess" ] && [ $PNDNAME ] && [ $FOLDER ]; then - PXMLtxt=$(/home/user/libpnd/pandora-libraries/testdata/scripts/genpxml.sh $FOLDER $ICON) - PXML=$FOLDER/PXML.xml - echo "$PXMLtxt" > $FOLDER/PXML.xml -fi - -#check arguments -if [ ! $PNDNAME ] || [ ! $FOLDER ] || [ ! $PXML ]; then - echo " Usage: pnd_make.sh -p your.pnd -d folder/containing/your/app/ -x - your.pxml (or \"guess\" to try to generate it from the folder) -i icon.png" - exit 1 -fi -if [ ! -d $FOLDER ]; then echo "$FOLDER doesnt exist"; exit 1; fi #check if folder actually exists -if [ ! -f $PXML ]; then echo "$PXML doesnt exist"; exit 1; fi #check if pxml actually exists - -#make iso from folder -if [ ! $SQUASH ]; then - mkisofs -o $PNDNAME.iso -R $FOLDER -else - if [ $(mksquashfs -version | awk '{if ($3 >= 4) print 1}') = 1 ]; then - echo "your squashfs version is older then version 4, please upgrade to 4.0 or later" +check_for_tool() +{ + which $1 &> /dev/null + if [ "$?" -ne "0" ]; + then + cecho "ERROR: Could not find the program '$1'. Please make sure +that it is available in your PATH since it is required to complete your request." $red exit 1 fi - mksquashfs -no-recovery -nopad $FOLDER $PNDNAME.iso +} + +cecho () # Color-echo. Argument $1 = message, Argument $2 = color +{ + local default_msg="No message passed." # Doesn't really need to be a local variable. + message=${1:-$default_msg} # Defaults to default message. + color=${2:-$black} # Defaults to black, if not specified. + echo -e "$color$message" + tput sgr0 # Reset to normal. + return +} + + +print_help() +{ + cat << EOSTREAM +pnd_make.sh - A script to package "something" into a PND. + +Usage: + $(basename ${0}) {--directory|-d} {--pndname|-p} [{--compress-squashfs|-c}] + [{--genpxml} ] [{--icon|-i} ] [{--pxml|-x} ] + [{--schema|-s} ] [{--help|-h}] + + +Switches: + --compress-squashfs / -c Define whether or not the pnd should be compressed using + squashfs. If this parameter is selected, a compressed pnd + will be created. + + --directory / -d Sets the folder that is to be used for the resulting pnd + to . This option is mandatory for the script to + function correctly. + + --genpxml Sets the script used for generating a PXML file (if none + is available already) to . Please make sure to either + provide a full path or prefix a script in the current folder + with './' so that the script can actually be executed. If + this variable is not specified, $GENPXML_PATH + will be used. + + --help / -h Displays this help text. + + --icon / -i Sets the icon that will be appended in the pnd to . + + --pndname / -p Sets the output filename of the resulting pnd to . + This option is mandatory for the script to function + correctly. + + --pxml / -x Sets the PXML file that is to be used to . If you + neither provide a PXML file or set this entry to 'guess', + an existing 'PXML.xml' in your selected '--directory' + will be used, or the script $GENPXML_PATH + will be called to try to generate a basic PXML file for you. + + --schema / -s Sets the schema file, that is to be used for validation, + to =4.0 of squashfs +is required to be available in your PATH. +EOSTREAM +} + + +# Parse command line parameters +while [ "${1}" != "" ]; do + if [ "${1}" = "--compress-squashfs" ] || [ "${1}" = "-c" ]; + then + SQUASH=1 + shift 1 + elif [ "${1}" = "--directory" ] || [ "${1}" = "-d" ]; + then + FOLDER=$2 + shift 2 + elif [ "${1}" = "--genpxml" ]; + then + GENPXML_PATH=$2 + shift 2 + elif [ "${1}" = "--help" ] || [ "${1}" = "-h" ]; + then + print_help + exit 0 + elif [ "${1}" = "--icon" ] || [ "${1}" = "-i" ]; + then + ICON=$2 + shift 2 + elif [ "${1}" = "--pndname" ] || [ "${1}" = "-p" ]; + then + PNDNAME=$2 + shift 2 + elif [ "${1}" = "--pxml" ] || [ "${1}" = "-x" ]; + then + PXML=$2 + shift 2 + elif [ "${1}" = "--schema" ] || [ "${1}" = "-f" ] + then + PXML_schema=$2 + shift 2 + else + cecho "ERROR: '$1' is not a known argument. Printing --help and aborting." $red + print_help + exit 1 + fi +done + + +# Generate a PXML if the param is set to Guess or it is empty. +if [ ! $PXML ] || [ $PXML = "guess" ] && [ $PNDNAME ] && [ $FOLDER ]; +then + if [ -f $FOLDER/PXML.xml ]; # use the already existing PXML.xml file if there is one... + then + PXML=$FOLDER/PXML.xml + PXML_ALREADY_EXISTING="true" + else + if [ -f $GENPXML_PATH ]; + then + $GENPXML_PATH --src $FOLDER --dest $FOLDER --author $USER + if [ -f $FOLDER/PXML.xml ]; + then + PXML_GENERATED="true" + else + cecho "ERROR: Generating a PXML file using '$GENPXML_PATH' failed. +Please generate a PXML file manually." $red + exit 1 + fi + else + cecho "ERROR: Could not find '$GENPXML_PATH' for generating a PXML file." $red + exit 1 + fi + fi fi -#append pxml to iso -cat $PNDNAME.iso $PXML > $PNDNAME + + +# Probe if required variables were set +echo -e +cecho "Checking if all required variables were set." $green +if [ ! $PNDNAME ] || [ ! $FOLDER ] || [ ! $PXML ]; +then + echo -e + cecho "ERROR: Not all required options were set! Please see the --help information below." $red + echo -e + print_help + exit 1 +else + echo "PNDNAME set to '$PNDNAME'." +fi +# Check if the selected folder actually exists +if [ ! -d $FOLDER ]; +then + echo -e + cecho "ERROR: '$FOLDER' doesn't exist or is not a folder." $red + exit 1 +else + echo "FOLDER set to '$FOLDER'." +fi +# Check if the selected PXML file actually exists +if [ ! -f $PXML ]; +then + echo -e + cecho "ERROR: '$PXML' doesn't exist or is not a file." $red + exit 1 +else + if [ $PXML_ALREADY_EXISTING ]; + then + echo "You have not explicitly specified a PXML to use, but an existing file was +found. Will be using this one." + elif [ $PXML_GENERATED ]; + then + echo "A PXML file was generated for you using '$GENPXML_PATH'. This file will +not be removed at the end of this script because you might want to review it, adjust +single entries and rerun the script to generate a pnd with a PXML file with all the +information you want to have listed." + fi + echo "PXML set to '$PXML'." +fi + +# Print the other variables: +if [ $ICON ]; +then + if [ ! -f $ICON ] + then + cecho "WARNING: '$ICON' doesn't exist, will not append the selected icon to the pnd." $red + else + echo "ICON set to '$ICON'." + USE_ICON="true" + fi +fi +if [ $SQUASH ]; +then + echo "Will use a squashfs for '$PNDNAME'." +fi + + +# Validate the PXML file (if xmllint is available) +# Errors and problems in this section will be shown but are not fatal. +echo -e +cecho "Trying to validate '$PXML' now. Will be using '$PXML_schema' to do so." $green +which xmllint &> /dev/null +if [ "$?" -ne "0" ]; +then + VALIDATED=false + cecho "WARNING: Could not find 'xmllint'. Validity check of '$PXML' is not possible!" $red +else + if [ ! -f "$PXML_schema" ]; + then + VALIDATED=false + cecho "WARNING: Could not find '$PXML_schema'. If you want to validate your +PXML file please make sure to provide a schema using the --schema option." $red + else + xmllint --noout --schema $PXML_schema $PXML + if [ "$?" -ne "0" ]; then VALIDATED=false; else VALIDATED=true; fi + fi +fi +# Print some message at the end about the validation in case the user missed the output above +if [ $VALIDATED = "false" ] +then + cecho "WARNING: Could not successfully validate '$PXML'. Please check the output +above. This does not mean that your pnd will be broken. Either you are not following the strict +syntax required for validation or you don't have all files/programs required for validating." $red +else + cecho "Your file '$PXML' was validated successfully. The resulting pnd should +work nicely with libpnd." $green +fi + + +# Make iso from folder +echo -e +cecho "Creating an iso file based on '$FOLDER'." $green +if [ $SQUASH ]; +then + check_for_tool mksquashfs + if [ $(mksquashfs -version | awk 'BEGIN{r=0} $3>=4{r=1} END{print r}') -eq 0 ]; + then + cecho "ERROR: Your squashfs version is older then version 4, please upgrade to 4.0 or later" $red + exit 1 + fi + mksquashfs $FOLDER $PNDNAME.iso -nopad -no-recovery +else + check_for_tool mkisofs + mkisofs -o $PNDNAME.iso -R $FOLDER +fi + +# Check that the iso file was actually created before continuing +if [ ! -f $PNDNAME.iso ]; +then + cecho "ERROR: The temporary file '$PNDNAME.iso' could not be created. +Please check the output above for any errors and retry after fixing them. Aborting." $red + exit 1 +fi + + +# Append pxml to iso +echo -e +cecho "Appending '$PXML' to the created iso file." $green +cat $PNDNAME.iso $PXML > $PNDNAME rm $PNDNAME.iso #cleanup -#append icon if specified -if [ $ICON ]; then # check if we want to add an icon - if [ ! -f $ICON ]; then #does the icon actually exist? - echo "$ICON doesnt exist" - else # yes + +# Append icon if specified and available +if [ $USE_ICON ]; +then + echo -e + cecho "Appending the icon '$ICON' to the pnd." $green mv $PNDNAME $PNDNAME.tmp cat $PNDNAME.tmp $ICON > $PNDNAME # append icon rm $PNDNAME.tmp #cleanup - fi fi -if [ $PXML = "guess" ];then rm $FOLDER/PXML.xml; fi #cleanup + +# Final message +echo -e +if [ -f $PNDNAME ]; +then + cecho "Successfully finished creating the pnd '$PNDNAME'." $green +else + cecho "There seems to have been a problem and '$PNDNAME' was not created. Please check +the output above for any error messages. A possible cause for this is that there was +not enough space available." $red + exit 1 +fi + + +#if [ $PXML = "guess" ];then rm $FOLDER/PXML.xml; fi #cleanup From 0ab63af11394c3d7e05d760e7d1de87fbec93493 Mon Sep 17 00:00:00 2001 From: David-John Willis Date: Thu, 7 Jul 2011 21:48:42 +0100 Subject: [PATCH 030/731] OPENPANDORA: Change bundle rule to make a SquashFS compressed .PND. --- backends/platform/openpandora/op-bundle.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backends/platform/openpandora/op-bundle.mk b/backends/platform/openpandora/op-bundle.mk index 163f4711ce7..089430f43c9 100755 --- a/backends/platform/openpandora/op-bundle.mk +++ b/backends/platform/openpandora/op-bundle.mk @@ -75,11 +75,10 @@ endif $(CP) $(libloc)/../arm-angstrom-linux-gnueabi/usr/lib/libFLAC.so.8.2.0 $(bundle_name)/scummvm/lib/libFLAC.so.8 - $(srcdir)/backends/platform/openpandora/build/pnd_make.sh -p $(bundle_name).pnd -d $(bundle_name)/scummvm -x $(bundle_name)/scummvm/data/PXML.xml -i $(bundle_name)/scummvm/icon/scummvm.png + $(srcdir)/backends/platform/openpandora/build/pnd_make.sh -p $(bundle_name).pnd -c -d $(bundle_name)/scummvm -x $(bundle_name)/scummvm/data/PXML.xml -i $(bundle_name)/scummvm/icon/scummvm.png $(CP) $(srcdir)/backends/platform/openpandora/build/README-PND.txt $(bundle_name) tar -cvjf $(bundle_name)-pnd.tar.bz2 $(bundle_name).pnd $(bundle_name)/README-PND.txt rm -R ./$(bundle_name) -# rm $(bundle_name).pnd .PHONY: op-bundle op-pnd From ed993e6350bd4926b4b9c94a014aa0f96a628ce7 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Fri, 8 Jul 2011 04:43:45 +0200 Subject: [PATCH 031/731] SCUMM: Initial PC Speaker output implementation for SCUMM v5. This is *not* complete yet. --- engines/scumm/detection_tables.h | 8 +- engines/scumm/imuse/imuse.cpp | 6 + engines/scumm/imuse/imuse_internal.h | 2 + engines/scumm/imuse/imuse_part.cpp | 6 + engines/scumm/imuse/instrument.cpp | 52 ++++ engines/scumm/imuse/instrument.h | 4 +- engines/scumm/imuse/pcspk.cpp | 408 +++++++++++++++++++++++++++ engines/scumm/imuse/pcspk.h | 147 ++++++++++ engines/scumm/imuse/sysex_scumm.cpp | 21 +- engines/scumm/module.mk | 1 + engines/scumm/scumm.cpp | 6 +- engines/scumm/sound.cpp | 4 +- 12 files changed, 653 insertions(+), 12 deletions(-) create mode 100644 engines/scumm/imuse/pcspk.cpp create mode 100644 engines/scumm/imuse/pcspk.h diff --git a/engines/scumm/detection_tables.h b/engines/scumm/detection_tables.h index e510c46cf2f..11901f7565e 100644 --- a/engines/scumm/detection_tables.h +++ b/engines/scumm/detection_tables.h @@ -243,11 +243,11 @@ static const GameSettings gameVariantsTable[] = { {"monkey", "FM-TOWNS", 0, GID_MONKEY, 5, 0, MDT_TOWNS, GF_AUDIOTRACKS, Common::kPlatformFMTowns, GUIO_NOSPEECH | GUIO_NOMIDI | GUIO_MIDITOWNS}, {"monkey", "SEGA", 0, GID_MONKEY, 5, 0, MDT_NONE, GF_AUDIOTRACKS, Common::kPlatformSegaCD, GUIO_NOSPEECH | GUIO_NOMIDI}, - {"monkey2", "", 0, GID_MONKEY2, 5, 0, MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO_NOSPEECH}, - {"monkey2", "FM-TOWNS", 0, GID_MONKEY2, 5, 0, MDT_TOWNS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, Common::kPlatformFMTowns, GUIO_NOSPEECH | GUIO_MIDITOWNS | GUIO_MIDIADLIB | GUIO_MIDIMT32}, + {"monkey2", "", 0, GID_MONKEY2, 5, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO_NOSPEECH}, + {"monkey2", "FM-TOWNS", 0, GID_MONKEY2, 5, 0, MDT_PCSPK | MDT_TOWNS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, Common::kPlatformFMTowns, GUIO_NOSPEECH | GUIO_MIDITOWNS | GUIO_MIDIADLIB | GUIO_MIDIMT32}, - {"atlantis", "", 0, GID_INDY4, 5, 0, MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO_NONE}, - {"atlantis", "Floppy", 0, GID_INDY4, 5, 0, MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO_NOSPEECH}, + {"atlantis", "", 0, GID_INDY4, 5, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO_NONE}, + {"atlantis", "Floppy", 0, GID_INDY4, 5, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, UNK, GUIO_NOSPEECH}, {"atlantis", "FM-TOWNS", 0, GID_INDY4, 5, 0, MDT_TOWNS | MDT_ADLIB | MDT_MIDI | MDT_PREFER_MT32, 0, Common::kPlatformFMTowns, GUIO_MIDITOWNS | GUIO_MIDIADLIB | GUIO_MIDIMT32}, {"tentacle", "", 0, GID_TENTACLE, 6, 0, MDT_ADLIB | MDT_MIDI | MDT_PREFER_GM, GF_USE_KEY, UNK, GUIO_NONE}, diff --git a/engines/scumm/imuse/imuse.cpp b/engines/scumm/imuse/imuse.cpp index 317ef36cb91..961d0690d08 100644 --- a/engines/scumm/imuse/imuse.cpp +++ b/engines/scumm/imuse/imuse.cpp @@ -1674,6 +1674,12 @@ void IMuseInternal::setGlobalAdLibInstrument(byte slot, byte *data) { } } +void IMuseInternal::setGlobalPcSpkInstrument(byte slot, byte *data) { + if (slot < 32) { + _global_adlib_instruments[slot].pcspk(data); + } +} + void IMuseInternal::copyGlobalAdLibInstrument(byte slot, Instrument *dest) { if (slot >= 32) return; diff --git a/engines/scumm/imuse/imuse_internal.h b/engines/scumm/imuse/imuse_internal.h index 6a7b9fc7d90..76a8c766831 100644 --- a/engines/scumm/imuse/imuse_internal.h +++ b/engines/scumm/imuse/imuse_internal.h @@ -342,6 +342,7 @@ struct Part : public Serializable { void off(); void set_instrument(uint b); void set_instrument(byte *data); + void set_instrument_pcspk(byte *data); void load_global_instrument(byte b); void set_transpose(int8 transpose); @@ -499,6 +500,7 @@ protected: void reallocateMidiChannels(MidiDriver *midi); void setGlobalAdLibInstrument(byte slot, byte *data); + void setGlobalPcSpkInstrument(byte slot, byte *data); void copyGlobalAdLibInstrument(byte slot, Instrument *dest); bool isNativeMT32() { return _native_mt32; } diff --git a/engines/scumm/imuse/imuse_part.cpp b/engines/scumm/imuse/imuse_part.cpp index 5df8407a96c..82ad9b70d28 100644 --- a/engines/scumm/imuse/imuse_part.cpp +++ b/engines/scumm/imuse/imuse_part.cpp @@ -199,6 +199,12 @@ void Part::set_instrument(byte * data) { _instrument.send(_mc); } +void Part::set_instrument_pcspk(byte *data) { + _instrument.pcspk(data); + if (clearToTransmit()) + _instrument.send(_mc); +} + void Part::load_global_instrument(byte slot) { _player->_se->copyGlobalAdLibInstrument(slot, &_instrument); if (clearToTransmit()) diff --git a/engines/scumm/imuse/instrument.cpp b/engines/scumm/imuse/instrument.cpp index 955700fc2b9..581f3786555 100644 --- a/engines/scumm/imuse/instrument.cpp +++ b/engines/scumm/imuse/instrument.cpp @@ -259,6 +259,19 @@ public: bool is_valid() { return (_native_mt32 ? true : (_instrument_name[0] != '\0')); } }; +class Instrument_PcSpk : public InstrumentInternal { +public: + Instrument_PcSpk(const byte *data); + Instrument_PcSpk(Serializer *s); + void saveOrLoad(Serializer *s); + void send(MidiChannel *mc); + void copy_to(Instrument *dest) { dest->pcspk((byte *)&_instrument); } + bool is_valid() { return true; } + +private: + byte _instrument[23]; +}; + //////////////////////////////////////// // // Instrument class members @@ -299,6 +312,14 @@ void Instrument::roland(const byte *instrument) { _instrument = new Instrument_Roland(instrument); } +void Instrument::pcspk(const byte *instrument) { + clear(); + if (!instrument) + return; + _type = itPcSpk; + _instrument = new Instrument_PcSpk(instrument); +} + void Instrument::saveOrLoad (Serializer *s) { if (s->isSaving()) { s->saveByte(_type); @@ -319,6 +340,9 @@ void Instrument::saveOrLoad (Serializer *s) { case itRoland: _instrument = new Instrument_Roland(s); break; + case itPcSpk: + _instrument = new Instrument_PcSpk(s); + break; default: warning("No known instrument classification #%d", (int)_type); _type = itNone; @@ -470,4 +494,32 @@ uint8 Instrument_Roland::getEquivalentGM() { return 255; } +//////////////////////////////////////// +// +// Instrument_PcSpk class members +// +//////////////////////////////////////// + +Instrument_PcSpk::Instrument_PcSpk(const byte *data) { + memcpy(_instrument, data, sizeof(_instrument)); +} + +Instrument_PcSpk::Instrument_PcSpk(Serializer *s) { + if (!s->isSaving()) + saveOrLoad(s); + else + memset(_instrument, 0, sizeof(_instrument)); +} + +void Instrument_PcSpk::saveOrLoad(Serializer *s) { + if (s->isSaving()) + s->saveBytes(_instrument, sizeof(_instrument)); + else + s->loadBytes(_instrument, sizeof(_instrument)); +} + +void Instrument_PcSpk::send(MidiChannel *mc) { + mc->sysEx_customInstrument('SPK ', (byte *)&_instrument); +} + } // End of namespace Scumm diff --git a/engines/scumm/imuse/instrument.h b/engines/scumm/imuse/instrument.h index 79cbd490324..34f955518e5 100644 --- a/engines/scumm/imuse/instrument.h +++ b/engines/scumm/imuse/instrument.h @@ -51,7 +51,8 @@ public: itNone = 0, itProgram = 1, itAdLib = 2, - itRoland = 3 + itRoland = 3, + itPcSpk = 4 }; Instrument() : _type (0), _instrument (0) { } @@ -70,6 +71,7 @@ public: void program(byte program, bool mt32); void adlib(const byte *instrument); void roland(const byte *instrument); + void pcspk(const byte *instrument); byte getType() { return _type; } bool isValid() { return (_instrument ? _instrument->is_valid() : false); } diff --git a/engines/scumm/imuse/pcspk.cpp b/engines/scumm/imuse/pcspk.cpp new file mode 100644 index 00000000000..8c6e2a80c50 --- /dev/null +++ b/engines/scumm/imuse/pcspk.cpp @@ -0,0 +1,408 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "scumm/imuse/pcspk.h" + +#include "common/debug.h" +#include "common/textconsole.h" + +namespace Scumm { + +PcSpkDriver::PcSpkDriver(Audio::Mixer *mixer) + : MidiDriver_Emulated(mixer), _pcSpk(mixer->getOutputRate()) { +} + +PcSpkDriver::~PcSpkDriver() { + close(); +} + +int PcSpkDriver::open() { + if (_isOpen) + return MERR_ALREADY_OPEN; + + MidiDriver_Emulated::open(); + + for (uint i = 0; i < 6; ++i) + _channels[i].init(this, i); + _activeChannel = 0; + + _mixer->playStream(Audio::Mixer::kPlainSoundType, &_mixerSoundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true); + return 0; +} + +void PcSpkDriver::close() { + if (!_isOpen) + return; + _isOpen = false; + + _mixer->stopHandle(_mixerSoundHandle); +} + +void PcSpkDriver::send(uint32 d) { + assert((d & 0x0F) < 6); + debug("send"); + _channels[(d & 0x0F)].send(d); +} + +void PcSpkDriver::sysEx_customInstrument(byte channel, uint32 type, const byte *instr) { + assert(channel < 6); + if (type == 'SPK ') + _channels[channel].sysEx_customInstrument(type, instr); +} + +MidiChannel *PcSpkDriver::allocateChannel() { + for (uint i = 0; i < 6; ++i) { + if (_channels[i].allocate()) + return &_channels[i]; + } + + return 0; +} + +void PcSpkDriver::generateSamples(int16 *buf, int len) { + _pcSpk.readBuffer(buf, len); +} + +void PcSpkDriver::onTimer() { + if (!_activeChannel) + return; + + for (uint i = 0; i < 6; ++i) { + OutputChannel &out = _channels[i]._out; + + if (!out.active) + continue; + + if (out.length == 0 || --out.length != 0) { + if (out.unkB && out.unkC) { + // TODO + } + } else { + out.active = 0; + updateNote(); + return; + } + } + + if (_activeChannel->_tl) { + //output((_activeChannel->_out.note << 7) + _activeChannel->_pitchBend + _activeChannel->_out.unk60 + _activeChannel->_out.unkE); + } else { + _pcSpk.stop(); + } +} + +void PcSpkDriver::updateNote() { + uint8 priority = 0; + _activeChannel = 0; + for (uint i = 0; i < 6; ++i) { + if (_channels[i]._allocated && _channels[i]._out.active && _channels[i]._priority >= priority) { + priority = _channels[i]._priority; + _activeChannel = &_channels[i]; + } + } + + if (_activeChannel == 0 || _activeChannel->_tl == 0) { + _pcSpk.stop(); + } else { + output(_activeChannel->_pitchBend + (_activeChannel->_out.note << 7)); + } +} + +void PcSpkDriver::output(uint16 out) { + byte v1 = (out >> 7) & 0xFF; + byte v2 = (out >> 2) & 0x1E; + + byte shift = _outputTable1[v1]; + uint16 indexBase = _outputTable2[v1] << 5; + uint16 frequency = _frequencyTable[(indexBase + v2) / 2] >> shift; + _pcSpk.play(Audio::PCSpeaker::kWaveFormSquare, 1193180 / frequency, -1); +} + +void PcSpkDriver::MidiChannel_PcSpk::init(PcSpkDriver *owner, byte channel) { + _owner = owner; + _channel = channel; + _allocated = false; + memset(&_out, 0, sizeof(_out)); +} + +bool PcSpkDriver::MidiChannel_PcSpk::allocate() { + if (_allocated) + return false; + + memset(&_out, 0, sizeof(_out)); + memset(_instrument, 0, sizeof(_instrument)); + _out.effectDefA.envelope = &_out.effectEnvelopeA; + _out.effectDefB.envelope = &_out.effectEnvelopeB; + + _allocated = true; + return true; +} + +MidiDriver *PcSpkDriver::MidiChannel_PcSpk::device() { + return _owner; +} + +byte PcSpkDriver::MidiChannel_PcSpk::getNumber() { + return _channel; +} + +void PcSpkDriver::MidiChannel_PcSpk::release() { + _out.active = 0; + _allocated = false; + _owner->updateNote(); +} + +void PcSpkDriver::MidiChannel_PcSpk::send(uint32 b) { + uint8 type = b & 0xF0; + uint8 p1 = (b >> 8) & 0xFF; + uint8 p2 = (b >> 16) & 0xFF; + + switch (type) { + case 0x80: + noteOff(p1); + break; + + case 0x90: + if (p2) + noteOn(p1, p2); + else + noteOff(p1); + break; + + case 0xB0: + controlChange(p1, p2); + break; + + case 0xE0: + pitchBend((p1 | (p2 << 7)) - 0x2000); + break; + + default: + break; + } +} + +void PcSpkDriver::MidiChannel_PcSpk::noteOff(byte note) { + if (!_allocated) + return; + + if (_sustain) { + if (_out.note == note) + _out.sustainNoteOff = 1; + } else { + if (_out.note == note) { + _out.active = 0; + _owner->updateNote(); + } + } +} + +void PcSpkDriver::MidiChannel_PcSpk::noteOn(byte note, byte velocity) { + if (!_allocated) + return; + + _out.note = note; + _out.sustainNoteOff = 0; + _out.length = _instrument[0]; + //_out.instrument = _owner->_outInstrumentData + note; + _out.unkA = 0; + _out.unkB = _instrument[1]; + _out.unkC = _instrument[2]; + _out.unkE = 0; + _out.unk60 = 0; + _out.active = 1; + + _owner->updateNote(); + + if ((_instrument[5] & 0x80) != 0) { + warning("Effect envelope 1 used"); + } + + if ((_instrument[14] & 0x80) != 0) { + warning("Effect envelope 2 used"); + } +} + +void PcSpkDriver::MidiChannel_PcSpk::programChange(byte program) { + // Nothing to implement here, the iMuse code takes care of passing us the + // instrument data. +} + +void PcSpkDriver::MidiChannel_PcSpk::pitchBend(int16 bend) { + _pitchBend = (bend * _pitchBendFactor) >> 6; +} + +void PcSpkDriver::MidiChannel_PcSpk::controlChange(byte control, byte value) { + switch (control) { + case 1: + if (_out.effectEnvelopeA.state && _out.effectDefA.enabled) + _out.effectEnvelopeA.modWheelState = (value >> 2); + if (_out.effectEnvelopeB.state && _out.effectDefB.enabled) + _out.effectEnvelopeB.modWheelState = (value >> 2); + break; + + case 7: + _tl = value; + // TODO: Properly implement this + _owner->updateNote(); + break; + + case 64: + _sustain = value; + if (!value && _out.sustainNoteOff) { + _out.active = 0; + _owner->updateNote(); + } + break; + + case 123: + _out.active = 0; + _owner->updateNote(); + break; + + default: + break; + } +} + +void PcSpkDriver::MidiChannel_PcSpk::pitchBendFactor(byte value) { + _pitchBendFactor = value; +} + +void PcSpkDriver::MidiChannel_PcSpk::priority(byte value) { + _priority = value; +} + +void PcSpkDriver::MidiChannel_PcSpk::sysEx_customInstrument(uint32 type, const byte *instr) { + memcpy(_instrument, instr, sizeof(_instrument)); +} + +/*const byte PcSpkDriver::_outInstrumentData[] = { + 0 +};*/ + +const byte PcSpkDriver::_outputTable1[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7 +}; + +const byte PcSpkDriver::_outputTable2[] = { + 0, 1, 2, 3, + 4, 5, 6, 7, + 8, 9, 10, 11, + 0, 1, 2, 3, + 4, 5, 6, 7, + 8, 9, 10, 11, + 0, 1, 2, 3, + 4, 5, 6, 7, + 8, 9, 10, 11, + 0, 1, 2, 3, + 4, 5, 6, 7, + 8, 9, 10, 11, + 0, 1, 2, 3, + 4, 5, 6, 7, + 8, 9, 10, 11, + 0, 1, 2, 3, + 4, 5, 6, 7, + 8, 9, 10, 11, + 0, 1, 2, 3, + 4, 5, 6, 7, + 8, 9, 10, 11, + 0, 1, 2, 3, + 4, 5, 6, 7, + 8, 9, 10, 11, + 0, 1, 2, 3, + 4, 5, 6, 7, + 8, 9, 10, 11, + 0, 1, 2, 3, + 4, 5, 6, 7, + 8, 9, 10, 11, + 0, 1, 2, 3, + 4, 5, 6, 7 +}; + +const uint16 PcSpkDriver::_frequencyTable[] = { + 0x8E84, 0x8E00, 0x8D7D, 0x8CFA, + 0x8C78, 0x8BF7, 0x8B76, 0x8AF5, + 0x8A75, 0x89F5, 0x8976, 0x88F7, + 0x8879, 0x87FB, 0x877D, 0x8700, + 0x8684, 0x8608, 0x858C, 0x8511, + 0x8496, 0x841C, 0x83A2, 0x8328, + 0x82AF, 0x8237, 0x81BF, 0x8147, + 0x80D0, 0x8059, 0x7FE3, 0x7F6D, + 0x7EF7, 0x7E82, 0x7E0D, 0x7D99, + 0x7D25, 0x7CB2, 0x7C3F, 0x7BCC, + 0x7B5A, 0x7AE8, 0x7A77, 0x7A06, + 0x7995, 0x7925, 0x78B5, 0x7846, + 0x77D7, 0x7768, 0x76FA, 0x768C, + 0x761F, 0x75B2, 0x7545, 0x74D9, + 0x746D, 0x7402, 0x7397, 0x732C, + 0x72C2, 0x7258, 0x71EF, 0x7186, + 0x711D, 0x70B5, 0x704D, 0x6FE5, + 0x6F7E, 0x6F17, 0x6EB0, 0x6E4A, + 0x6DE5, 0x6D7F, 0x6D1A, 0x6CB5, + 0x6C51, 0x6BED, 0x6B8A, 0x6B26, + 0x6AC4, 0x6A61, 0x69FF, 0x699D, + 0x693C, 0x68DB, 0x687A, 0x681A, + 0x67BA, 0x675A, 0x66FA, 0x669B, + 0x663D, 0x65DF, 0x6581, 0x6523, + 0x64C6, 0x6469, 0x640C, 0x63B0, + 0x6354, 0x62F8, 0x629D, 0x6242, + 0x61E7, 0x618D, 0x6133, 0x60D9, + 0x6080, 0x6027, 0x5FCE, 0x5F76, + 0x5F1E, 0x5EC6, 0x5E6E, 0x5E17, + 0x5DC1, 0x5D6A, 0x5D14, 0x5CBE, + 0x5C68, 0x5C13, 0x5BBE, 0x5B6A, + 0x5B15, 0x5AC1, 0x5A6E, 0x5A1A, + 0x59C7, 0x5974, 0x5922, 0x58CF, + 0x587D, 0x582C, 0x57DA, 0x5789, + 0x5739, 0x56E8, 0x5698, 0x5648, + 0x55F9, 0x55A9, 0x555A, 0x550B, + 0x54BD, 0x546F, 0x5421, 0x53D3, + 0x5386, 0x5339, 0x52EC, 0x52A0, + 0x5253, 0x5207, 0x51BC, 0x5170, + 0x5125, 0x50DA, 0x5090, 0x5046, + 0x4FFB, 0x4FB2, 0x4F68, 0x4F1F, + 0x4ED6, 0x4E8D, 0x4E45, 0x4DFC, + 0x4DB5, 0x4D6D, 0x4D25, 0x4CDE, + 0x4C97, 0x4C51, 0x4C0A, 0x4BC4, + 0x4B7E, 0x4B39, 0x4AF3, 0x4AAE, + 0x4A69, 0x4A24, 0x49E0, 0x499C, + 0x4958, 0x4914, 0x48D1, 0x488E, + 0x484B, 0x4808, 0x47C6, 0x4783 +}; + +} // End of namespace Scumm + diff --git a/engines/scumm/imuse/pcspk.h b/engines/scumm/imuse/pcspk.h new file mode 100644 index 00000000000..8edf86e927a --- /dev/null +++ b/engines/scumm/imuse/pcspk.h @@ -0,0 +1,147 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef SCUMM_IMUSE_PCSPK_H +#define SCUMM_IMUSE_PCSPK_H + +#include "audio/softsynth/emumidi.h" +#include "audio/softsynth/pcspk.h" + +namespace Scumm { + +class PcSpkDriver : public MidiDriver_Emulated { +public: + PcSpkDriver(Audio::Mixer *mixer); + ~PcSpkDriver(); + + virtual int open(); + virtual void close(); + + virtual void send(uint32 d); + virtual void sysEx_customInstrument(byte channel, uint32 type, const byte *instr); + + virtual MidiChannel *allocateChannel(); + virtual MidiChannel *getPercussionChannel() { return 0; } + + bool isStereo() const { return _pcSpk.isStereo(); } + int getRate() const { return _pcSpk.getRate(); } +protected: + void generateSamples(int16 *buf, int len); + void onTimer(); + +private: + Audio::PCSpeaker _pcSpk; + + void updateNote(); + void output(uint16 out); + + struct EffectEnvelope { + uint8 state; + uint16 currentLevel; + uint16 duration; + uint16 maxLevel; + uint16 startLevel; + uint8 loop; + uint8 stateTargetLevels[4]; + uint8 stateModWheelLevels[4]; + uint8 modWheelSensitivity; + uint8 modWheelState; + uint8 modWheelLast; + uint16 stateNumSteps; + uint16 stateStepCounter; + uint16 changePerStep; + uint16 dir; + uint16 changePerStepRem; + uint16 changeCountRem; + }; + + struct EffectDefinition { + uint16 phase; + uint8 type; + uint8 enabled; + EffectEnvelope *envelope; + }; + + struct MidiChannel_PcSpk; + + struct OutputChannel { + uint8 active; + uint8 note; + uint8 sustainNoteOff; + uint8 length; + //const uint8 *instrument; + uint8 unkA; + uint8 unkB; + uint8 unkC; + uint16 unkE; + EffectEnvelope effectEnvelopeA; + EffectDefinition effectDefA; + EffectEnvelope effectEnvelopeB; + EffectDefinition effectDefB; + uint16 unk60; + }; + + struct MidiChannel_PcSpk : public MidiChannel { + virtual MidiDriver *device(); + virtual byte getNumber(); + virtual void release(); + + virtual void send(uint32 b); + virtual void noteOff(byte note); + virtual void noteOn(byte note, byte velocity); + virtual void programChange(byte program); + virtual void pitchBend(int16 bend); + virtual void controlChange(byte control, byte value); + virtual void pitchBendFactor(byte value); + virtual void priority(byte value); + virtual void sysEx_customInstrument(uint32 type, const byte *instr); + + void init(PcSpkDriver *owner, byte channel); + bool allocate(); + + PcSpkDriver *_owner; + bool _allocated; + byte _channel; + + OutputChannel _out; + uint8 _instrument[23]; + uint8 _programNr; + uint8 _priority; + uint8 _tl; + uint8 _modWheel; + uint8 _sustain; + uint8 _pitchBendFactor; + int16 _pitchBend; + }; + + MidiChannel_PcSpk _channels[6]; + MidiChannel_PcSpk *_activeChannel; + + //static const byte _outInstrumentData[]; + static const byte _outputTable1[]; + static const byte _outputTable2[]; + static const uint16 _frequencyTable[]; +}; + +} // End of namespace Scumm + +#endif + diff --git a/engines/scumm/imuse/sysex_scumm.cpp b/engines/scumm/imuse/sysex_scumm.cpp index c3bec93a607..160cdf500a9 100644 --- a/engines/scumm/imuse/sysex_scumm.cpp +++ b/engines/scumm/imuse/sysex_scumm.cpp @@ -91,8 +91,16 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { // 0 is a valid program number. MI2 tests show that in such // cases, a regular program change message always seems to follow // anyway. - if (player->_isMIDI) + if (player->_isMIDI) { part->_instrument.program((p[15] & 0x0F) << 4 |(p[16] & 0x0F), player->_isMT32); + } else { + // FIXME/HACK: This is only needed here, since when we use the following line: + // se->copyGlobalAdLibInstrument((p[15] & 0x0F) << 4 |(p[16] & 0x0F), &part->_instrument); + // We would not get any instrument for PC Speaker. Because we don't default to an + // "empty" instrument in case the global instrument specified is not set up. + byte empty[23] = {0}; + part->_instrument.pcspk(empty); + } part->sendAll(); } } @@ -116,8 +124,10 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { if (len == 62) { player->decode_sysex_bytes(p, buf, len - 2); part->set_instrument((byte *)buf); - } else { - // SPK tracks have len == 48 here, and are not supported + } else if (len == 48) { + player->decode_sysex_bytes(p, buf, len - 2); + part->set_instrument_pcspk((byte *)buf); + } else { part->programChange(254); // Must be invalid, but not 255 (which is reserved) } } @@ -127,7 +137,10 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { p += 2; // Skip hardware type and... whatever came right before it a = *p++; player->decode_sysex_bytes(p, buf, len - 3); - se->setGlobalAdLibInstrument(a, buf); + if (len == 63) + se->setGlobalAdLibInstrument(a, buf); + else if (len == 49) + se->setGlobalPcSpkInstrument(a, buf); break; case 33: // Parameter adjust diff --git a/engines/scumm/module.mk b/engines/scumm/module.mk index 1a60564a9ed..99ffdf7f21a 100644 --- a/engines/scumm/module.mk +++ b/engines/scumm/module.mk @@ -27,6 +27,7 @@ MODULE_OBJS := \ imuse/imuse_part.o \ imuse/imuse_player.o \ imuse/instrument.o \ + imuse/pcspk.o \ imuse/sysex_samnmax.o \ imuse/sysex_scumm.o \ input.o \ diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index 7b136dc36d2..ed1c90145d8 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -71,6 +71,7 @@ #include "scumm/he/cup_player_he.h" #include "scumm/util.h" #include "scumm/verbs.h" +#include "scumm/imuse/pcspk.h" #include "backends/audiocd/audiocd.h" @@ -1857,7 +1858,7 @@ void ScummEngine::setupMusic(int midi) { MidiDriver *nativeMidiDriver = 0; MidiDriver *adlibMidiDriver = 0; - if (_musicType != MDT_ADLIB && _musicType != MDT_TOWNS) + if (_musicType != MDT_ADLIB && _musicType != MDT_TOWNS && _musicType != MDT_PCSPK) nativeMidiDriver = MidiDriver::createMidi(dev); if (nativeMidiDriver != NULL && _native_mt32) nativeMidiDriver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE); @@ -1865,6 +1866,9 @@ void ScummEngine::setupMusic(int midi) { if (_musicType == MDT_ADLIB || _musicType == MDT_TOWNS || multi_midi) { adlibMidiDriver = MidiDriver::createMidi(MidiDriver::detectDevice(_musicType == MDT_TOWNS ? MDT_TOWNS : MDT_ADLIB)); adlibMidiDriver->property(MidiDriver::PROP_OLD_ADLIB, (_game.features & GF_SMALL_HEADER) ? 1 : 0); + } else if (_musicType == MDT_PCSPK) { + // HACK + adlibMidiDriver = new PcSpkDriver(_mixer); } _imuse = IMuse::create(_system, nativeMidiDriver, adlibMidiDriver); diff --git a/engines/scumm/sound.cpp b/engines/scumm/sound.cpp index 27e43b37408..544abe6b1de 100644 --- a/engines/scumm/sound.cpp +++ b/engines/scumm/sound.cpp @@ -1137,8 +1137,8 @@ int ScummEngine::readSoundResource(ResId idx) { break; case MKTAG('S','P','K',' '): pri = -1; -// if (_musicType == MDT_PCSPK || _musicType == MDT_PCJR) -// pri = 11; + if (_musicType == MDT_PCSPK || _musicType == MDT_PCJR) + pri = 11; break; } From 1a71cd1e21b318bf0fa6903cbe8b0b1993c3a398 Mon Sep 17 00:00:00 2001 From: Littleboy Date: Fri, 8 Jul 2011 04:02:45 -0400 Subject: [PATCH 032/731] LASTEXPRESS: Fix typo in filter table --- engines/lastexpress/data/snd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/lastexpress/data/snd.cpp b/engines/lastexpress/data/snd.cpp index 28d20df9bd8..29a81bec75b 100644 --- a/engines/lastexpress/data/snd.cpp +++ b/engines/lastexpress/data/snd.cpp @@ -152,7 +152,7 @@ static const int filterData[1424] = { 4224, 4352, 4480, 4608, 4096, 4096, 4096, 4096, 4288, 4416, 4544, 4672, 4096, 4096, 4096, 4096, 4288, 4416, 4544, 4672, 4160, 4160, 4160, 4160, 4352, 4480, 4608, - 4.6, 4160, 4160, 4160, 4160, 4352, 4480, 4608, 4736, + 4736, 4160, 4160, 4160, 4160, 4352, 4480, 4608, 4736, 4224, 4224, 4224, 4224, 4416, 4544, 4672, 4800, 4224, 4224, 4224, 4224, 4416, 4544, 4672, 4800, 4288, 4288, 4288, 4288, 4480, 4608, 4736, 4864, 4288, 4288, 4288, From af2bdfcb59a04bb328f702b8af6a89e1104f95bf Mon Sep 17 00:00:00 2001 From: Littleboy Date: Fri, 8 Jul 2011 05:32:05 -0400 Subject: [PATCH 033/731] LASTEXPRESS: Replace existing decodeIMA calls by code using our custom set of IMA and step tables --- engines/lastexpress/data/snd.cpp | 75 +++++++++++++++----------------- 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/engines/lastexpress/data/snd.cpp b/engines/lastexpress/data/snd.cpp index 29a81bec75b..9e92ded204c 100644 --- a/engines/lastexpress/data/snd.cpp +++ b/engines/lastexpress/data/snd.cpp @@ -38,7 +38,7 @@ namespace LastExpress { #pragma region Sound filters tables -static const int filterData[1424] = { +static const int stepTable[1424] = { 0, 0, 0, 0, 128, 256, 384, 512, 0, 0, 0, 0, 128, 256, 384, 512, 0, 0, 0, 0, 192, 320, 448, 576, 0, 0, 0, 0, 192, 320, 448, 576, 64, 64, 64, 64, 256, 384, 512, 640, @@ -195,7 +195,7 @@ static const int filterData[1424] = { 5632 }; -static const int filterData2[1424] = { +static const int imaTable[1424] = { 0, 2, 4, 6, 7, 9, 11, 13, 0, -2, -4, -6, -7, -9, -11, -13, 1, 3, 5, 7, 9, 11, 13, 15, -1, -3, -5, -7, -9, -11, -13, -15, 1, 3, 5, 7, 10, 12, 14, 16, -1, -3, -5, @@ -362,6 +362,10 @@ public: int readBuffer(int16 *buffer, const int numSamples) { int samples = 0; + // Temporary data + int step = 0; + int sample = 0; + byte idx = 0; assert(numSamples % 2 == 0); @@ -369,15 +373,37 @@ public: if (_blockPos[0] == _blockAlign) { // read block header _status.ima_ch[0].last = _stream->readSint16LE(); - _status.ima_ch[0].stepIndex = _stream->readSint16LE(); + _status.ima_ch[0].stepIndex = _stream->readSint16LE() << 6; _blockPos[0] = 4; + + // Get current filter + _currentFilterId = _nextFilterId; + _nextFilterId = -1; + + // No filter: skip decoding + if (_currentFilterId == -1) + break; + + // Compute step adjustment + _stepAdjust1 = p1s[_currentFilterId]; + _stepAdjust2 = p2s[_currentFilterId]; } for (; samples < numSamples && _blockPos[0] < _blockAlign && !_stream->eos() && _stream->pos() < _endpos; samples += 2) { byte data = _stream->readByte(); _blockPos[0]++; - buffer[samples] = decodeIMA((data >> 4) & 0x0f); - buffer[samples + 1] = decodeIMA(data & 0x0f); + + // First nibble + idx = data >> 4; + step = stepTable[idx + _status.ima_ch[0].stepIndex / 4]; + sample = CLIP(imaTable[idx + _status.ima_ch[0].stepIndex / 4] + _status.ima_ch[0].last, -32767, 32767); + buffer[samples] = (_stepAdjust2 * sample) >> _stepAdjust1; + + // Second nibble + idx = data & 0xF; + _status.ima_ch[0].stepIndex = stepTable[idx + step / 4]; + _status.ima_ch[0].last = CLIP(imaTable[idx + step / 4] + sample, -32767, 32767); + buffer[samples + 1] = (_stepAdjust2 * _status.ima_ch[0].last) >> _stepAdjust1; } } @@ -387,41 +413,10 @@ public: void setFilterId(int32 filterId) { _nextFilterId = filterId; } private: - int32 _currentFilterId; - int32 _nextFilterId; // the sound filter id, -1 for none - - /** - * Sound filter - * - * @param [in] data If non-null, the input data - * @param [in,out] buffer If non-null, the output buffer. - * @param p1 The first filter input. - * @param p2 The second filter input. - */ - static void soundFilter(byte *data, int16 *buffer, int p1, int p2) { - int data1, data2, data1p, data2p; - byte idx; - - data2 = data[0]; - data1 = data[1] << 6; - - data += 2; - - for (int count = 0; count < 735; count++) { - idx = data[count] >> 4; - - data1p = filterData[idx + data1]; - data2p = CLIP(filterData2[idx + data1] + data2, -32767, 32767); - - buffer[2 * count] = (p2 * data2p) >> p1; - - idx = data[count] & 0xF; - - data1 = filterData[idx + data1p]; - data2 = CLIP(filterData2[idx + data1p] + data2p, -32767, 32767); - buffer[2 * count + 1] = (p2 * data2) >> p1; - } - } + int32 _currentFilterId; + int32 _nextFilterId; // the sound filter id, -1 for none + int32 _stepAdjust1; + int32 _stepAdjust2; }; ////////////////////////////////////////////////////////////////////////// From c5a945b56650bd826e51fd7cb907ba0c9d91e8f3 Mon Sep 17 00:00:00 2001 From: David-John Willis Date: Fri, 8 Jul 2011 13:20:24 +0100 Subject: [PATCH 034/731] OPENPANDORA: Add explicit location for 'themepath' to the loader script. --- backends/platform/openpandora/build/runscummvm.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backends/platform/openpandora/build/runscummvm.sh b/backends/platform/openpandora/build/runscummvm.sh index 48d24a2b817..c6412352197 100755 --- a/backends/platform/openpandora/build/runscummvm.sh +++ b/backends/platform/openpandora/build/runscummvm.sh @@ -11,4 +11,5 @@ mkdir saves mkdir runtime cd runtime -../bin/scummvm --fullscreen --gfx-mode=2x --config=../scummvm.config +../bin/scummvm --fullscreen --gfx-mode=2x --config=../scummvm.config --themepath=../data + From 53985000db22e2897626e2bf26d93d7241726323 Mon Sep 17 00:00:00 2001 From: sylvaintv Date: Sat, 9 Jul 2011 01:50:38 +0200 Subject: [PATCH 035/731] TOON: Fix bad character visibility after restore Bug #3307195: "TOON: Two instances of Flux Wildly" --- engines/toon/character.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/engines/toon/character.cpp b/engines/toon/character.cpp index 06c6e21d219..022214157a1 100644 --- a/engines/toon/character.cpp +++ b/engines/toon/character.cpp @@ -596,7 +596,8 @@ int32 Character::getId() { void Character::save(Common::WriteStream *stream) { debugC(1, kDebugCharacter, "save(stream)"); - stream->writeSint32LE(_flags); + // we have to save visibility too, put in flags to not invalidate old savegames. + stream->writeSint32LE(_flags | ((_visible == false) ? 0x100 : 0)); stream->writeSint32LE(_x); stream->writeSint32LE(_y); stream->writeSint32LE(_z); @@ -633,6 +634,12 @@ void Character::load(Common::ReadStream *stream) { if (_sceneAnimationId > -1) { setAnimationInstance(_vm->getSceneAnimation(_sceneAnimationId)->_animInstance); } + + // "not visible" flag. + if (_flags & 0x100) { + _flags &= ~0x100; + setVisible(false); + } } void Character::setAnimScript(int32 animScriptId) { From 36222c747fb2feb35d8e3b8fae3e9e4eb7657111 Mon Sep 17 00:00:00 2001 From: sylvaintv Date: Sat, 9 Jul 2011 02:55:28 +0200 Subject: [PATCH 036/731] TOON: Fixed palette problem in LoadPicture Bug #3325272: "Toonstruck (Spanish) Bad Graphic in squirrel book" Was a "full" palette in spanish and a "half" palette in english version. Made it choose the good mode automatically based on color count. --- engines/toon/picture.cpp | 11 ++++++----- engines/toon/picture.h | 2 +- engines/toon/toon.cpp | 8 ++++---- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/engines/toon/picture.cpp b/engines/toon/picture.cpp index 0257964fb5e..295e304765f 100644 --- a/engines/toon/picture.cpp +++ b/engines/toon/picture.cpp @@ -29,16 +29,14 @@ namespace Toon { -bool Picture::loadPicture(Common::String file, bool totalPalette /*= false*/) { - debugC(1, kDebugPicture, "loadPicture(%s, %d)", file.c_str(), (totalPalette) ? 1 : 0); +bool Picture::loadPicture(Common::String file) { + debugC(1, kDebugPicture, "loadPicture(%s)", file.c_str()); uint32 size = 0; uint8 *fileData = _vm->resources()->getFileData(file, &size); if (!fileData) return false; - _useFullPalette = totalPalette; - uint32 compId = READ_BE_UINT32(fileData); switch (compId) { @@ -57,6 +55,8 @@ bool Picture::loadPicture(Common::String file, bool totalPalette /*= false*/) { // do we have a palette ? _paletteEntries = (dstsize & 0x7ff) / 3; + _useFullPalette = (_paletteEntries == 256); + // _useFullPalette = true; if (_paletteEntries) { _palette = new uint8[_paletteEntries * 3]; memcpy(_palette, _data + dstsize - (dstsize & 0x7ff), _paletteEntries * 3); @@ -70,7 +70,8 @@ bool Picture::loadPicture(Common::String file, bool totalPalette /*= false*/) { uint32 decSize = READ_LE_UINT32(fileData + 10); _data = new uint8[decSize + 100]; _paletteEntries = READ_LE_UINT16(fileData + 14) / 3; - + _useFullPalette = (_paletteEntries == 256); + if (_paletteEntries) { _palette = new uint8[_paletteEntries * 3]; memcpy(_palette, fileData + 16, _paletteEntries * 3); diff --git a/engines/toon/picture.h b/engines/toon/picture.h index 23edbc91da1..ee0e006702c 100644 --- a/engines/toon/picture.h +++ b/engines/toon/picture.h @@ -38,7 +38,7 @@ class Picture { public: Picture(ToonEngine *vm); ~Picture(); - bool loadPicture(Common::String file, bool totalPalette = false); + bool loadPicture(Common::String file); void setupPalette(); void draw(Graphics::Surface &surface, int32 x, int32 y, int32 dx, int32 dy); void drawWithRectList(Graphics::Surface& surface, int32 x, int32 y, int32 dx, int32 dy, Common::Array& rectArray); diff --git a/engines/toon/toon.cpp b/engines/toon/toon.cpp index 26639d71f70..c261ca1db16 100644 --- a/engines/toon/toon.cpp +++ b/engines/toon/toon.cpp @@ -614,7 +614,7 @@ struct MainMenuEntry { bool ToonEngine::showMainmenu(bool &loadedGame) { Picture *mainmenuPicture = new Picture(this); - mainmenuPicture->loadPicture("TITLESCR.CPS", true); + mainmenuPicture->loadPicture("TITLESCR.CPS"); mainmenuPicture->setupPalette(); flushPalette(false); @@ -2600,7 +2600,7 @@ int32 ToonEngine::showInventory() { delete _inventoryPicture; _inventoryPicture = new Picture(this); fadeOut(5); - _inventoryPicture->loadPicture("SACK128.CPS", true); + _inventoryPicture->loadPicture("SACK128.CPS"); _inventoryPicture->setupPalette(); dirtyAllScreen(); @@ -2786,7 +2786,7 @@ void ToonEngine::showCutaway(Common::String cutawayPicture) { if (cutawayPicture == "") { cutawayPicture = Common::String(_gameState->_locations[_gameState->_currentScene]._cutaway) + ".CPS"; } - _currentCutaway->loadPicture(cutawayPicture, false); + _currentCutaway->loadPicture(cutawayPicture); _currentCutaway->setupPalette(); _oldScrollValue = _gameState->_currentScrollValue; _gameState->_currentScrollValue = 0; @@ -3418,7 +3418,7 @@ void ToonEngine::viewInventoryItem(Common::String str, int32 lineId, int32 itemD fadeOut(5); Picture *pic = new Picture(this); - pic->loadPicture(str, false); + pic->loadPicture(str); pic->setupPalette(); dirtyAllScreen(); flushPalette(); From 831d358d425b8d0e2725df87054fd321e6e8dd3b Mon Sep 17 00:00:00 2001 From: sylvaintv Date: Sat, 9 Jul 2011 03:26:43 +0200 Subject: [PATCH 037/731] TOON: Fix rare palette glitch during one frame after cutscene --- engines/toon/movie.cpp | 3 +-- engines/toon/toon.cpp | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/engines/toon/movie.cpp b/engines/toon/movie.cpp index 2318eaaac7a..7637f4e62f6 100644 --- a/engines/toon/movie.cpp +++ b/engines/toon/movie.cpp @@ -94,7 +94,7 @@ void Movie::play(Common::String video, int32 flags) { _vm->getAudioManager()->setMusicVolume(0); _decoder->loadFile(video.c_str()); playVideo(isFirstIntroVideo); - _vm->flushPalette(false); + _vm->flushPalette(true); if (flags & 1) _vm->getAudioManager()->setMusicVolume(_vm->getAudioManager()->isMusicMuted() ? 0 : 255); _decoder->close(); @@ -103,7 +103,6 @@ void Movie::play(Common::String video, int32 flags) { bool Movie::playVideo(bool isFirstIntroVideo) { debugC(1, kDebugMovie, "playVideo(isFirstIntroVideo: %d)", isFirstIntroVideo); - while (!_vm->shouldQuit() && !_decoder->endOfVideo()) { if (_decoder->needsUpdate()) { const Graphics::Surface *frame = _decoder->decodeNextFrame(); diff --git a/engines/toon/toon.cpp b/engines/toon/toon.cpp index c261ca1db16..401ab3d70e8 100644 --- a/engines/toon/toon.cpp +++ b/engines/toon/toon.cpp @@ -690,6 +690,11 @@ bool ToonEngine::showMainmenu(bool &loadedGame) { } } + if (_needPaletteFlush) { + flushPalette(false); + _needPaletteFlush = false; + } + parseInput(); copyToVirtualScreen(true); _system->delayMillis(17); From 63e2fe7e7bc54f93cf47a5c85d6ca621d332a94a Mon Sep 17 00:00:00 2001 From: Littleboy Date: Fri, 8 Jul 2011 21:28:49 -0400 Subject: [PATCH 038/731] LASTEXPRESS: Have LastExpress_ADPCMStream inherit directly from Audio::ADPCMStream (as suggested by clone2727) --- engines/lastexpress/data/snd.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/lastexpress/data/snd.cpp b/engines/lastexpress/data/snd.cpp index 9e92ded204c..6845be8808b 100644 --- a/engines/lastexpress/data/snd.cpp +++ b/engines/lastexpress/data/snd.cpp @@ -352,10 +352,10 @@ static const int p2s[17] = { 0, 1, 1, 3, 1, 5, 3, 7, 1, 9, 5, 11, 3, 13, 7, 15, // Last Express ADPCM is similar to MS IMA mono, but inverts its nibbles // and does not have the 4 byte per channel requirement -class LastExpress_ADPCMStream : public Audio::Ima_ADPCMStream { +class LastExpress_ADPCMStream : public Audio::ADPCMStream { public: LastExpress_ADPCMStream(Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeAfterUse, uint32 size, uint32 blockSize, int32 filterId) : - Audio::Ima_ADPCMStream(stream, disposeAfterUse, size, 44100, 1, blockSize) { + Audio::ADPCMStream(stream, disposeAfterUse, size, 44100, 1, blockSize) { _currentFilterId = -1; _nextFilterId = filterId; } From e7e689450b942b8328ab25a043a67ae2e392e46e Mon Sep 17 00:00:00 2001 From: Littleboy Date: Fri, 8 Jul 2011 21:32:02 -0400 Subject: [PATCH 039/731] LASTEXPRESS: Prefix savegame filenames with "lastexpress" --- engines/lastexpress/game/savegame.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/engines/lastexpress/game/savegame.cpp b/engines/lastexpress/game/savegame.cpp index ebada5dd4e4..57c18b56977 100644 --- a/engines/lastexpress/game/savegame.cpp +++ b/engines/lastexpress/game/savegame.cpp @@ -45,12 +45,12 @@ namespace LastExpress { static const struct { const char *saveFile; } gameInfo[6] = { - {"blue.egg"}, - {"red.egg"}, - {"green.egg"}, - {"purple.egg"}, - {"teal.egg"}, - {"gold.egg"} + {"lastexpress-blue.egg"}, + {"lastexpress-red.egg"}, + {"lastexpress-green.egg"}, + {"lastexpress-purple.egg"}, + {"lastexpress-teal.egg"}, + {"lastexpress-gold.egg"} }; ////////////////////////////////////////////////////////////////////////// From bc298a58f53a9ac2f8e3b5b96da8d7541ad99c71 Mon Sep 17 00:00:00 2001 From: Littleboy Date: Fri, 8 Jul 2011 22:02:24 -0400 Subject: [PATCH 040/731] LASTEXPRESS: Simplify SoundQueue::updateQueue() - Remove useless cache code - Use helper function to get the proper sound entry - Fix crash on using an invalid entry --- engines/lastexpress/shared.h | 17 +++--- engines/lastexpress/sound/entry.cpp | 6 +- engines/lastexpress/sound/queue.cpp | 86 +++++++---------------------- engines/lastexpress/sound/sound.cpp | 4 +- 4 files changed, 32 insertions(+), 81 deletions(-) diff --git a/engines/lastexpress/shared.h b/engines/lastexpress/shared.h index 7b640c773a4..d60a4984477 100644 --- a/engines/lastexpress/shared.h +++ b/engines/lastexpress/shared.h @@ -84,29 +84,26 @@ enum SoundFlag { }; enum SoundState { - kSoundState0 = 0, - kSoundState1 = 1, - kSoundState2 = 2 + kSoundStateNone = 0, + kSoundState1 = 1, + kSoundState2 = 2 }; enum SoundStatus { + kSoundStatusClear0 = 0x10, + kSoundStatusFilter = 0x1F, kSoundStatus_20 = 0x20, kSoundStatus_40 = 0x40, + kSoundStatusCached = 0x80, kSoundStatus_180 = 0x180, kSoundStatusClosed = 0x200, kSoundStatus_400 = 0x400, - + kSoundStatusClear4 = 0x800, kSoundStatus_8000 = 0x8000, kSoundStatus_20000 = 0x20000, kSoundStatus_100000 = 0x100000, kSoundStatus_20000000 = 0x20000000, kSoundStatus_40000000 = 0x40000000, - - kSoundStatusClear0 = 0x10, - kSoundStatusFilter = 0x1F, - kSoundStatusCached = 0x80, - kSoundStatusClear3 = 0x200, - kSoundStatusClear4 = 0x800, kSoundStatusClearAll = 0xFFFFFFE0 }; diff --git a/engines/lastexpress/sound/entry.cpp b/engines/lastexpress/sound/entry.cpp index 87d8ccdb304..44cc68a57bf 100644 --- a/engines/lastexpress/sound/entry.cpp +++ b/engines/lastexpress/sound/entry.cpp @@ -88,8 +88,8 @@ void SoundEntry::close() { _status.status |= kSoundStatusClosed; // Loop until ready - while (!(_status.status1 & 4) && !(getSoundQueue()->getFlag() & 8) && (getSoundQueue()->getFlag() & 1)) - ; // empty loop body + //while (!(_status.status1 & 4) && !(getSoundQueue()->getFlag() & 8) && (getSoundQueue()->getFlag() & 1)) + // ; // empty loop body // The original game remove the entry from the cache here, // but since we are called from within an iterator loop @@ -290,7 +290,7 @@ bool SoundEntry::updateSound() { } } } - //if (status.status2 & 0x40 && !((uint32)_status.status & 0x180) && v1->soundBuffer) + //if (status.status2 & 0x40 && !((uint32)_status.status & 0x180) && v1->soundBuffer) // Sound_FillSoundBuffer(v1); } result = true; diff --git a/engines/lastexpress/sound/queue.cpp b/engines/lastexpress/sound/queue.cpp index 0a6442ceeda..33b4c067936 100644 --- a/engines/lastexpress/sound/queue.cpp +++ b/engines/lastexpress/sound/queue.cpp @@ -102,80 +102,41 @@ void SoundQueue::removeFromQueue(Common::String filename) { } void SoundQueue::updateQueue() { - //Common::StackLock locker(_mutex); + Common::StackLock locker(_mutex); - //warning("[Sound::updateQueue] Not implemented"); + ++_flag; - int maxPriority = 0; - Common::List::iterator lsnd; - SoundEntry *msnd; - - bool loopedPlaying; - - loopedPlaying = 0; - //++g_sound_flag; - - for (lsnd = _soundList.begin(); lsnd != _soundList.end(); ++lsnd) { - if ((*lsnd)->getType() == kSoundType1) - break; - } - - if (getSoundState() & 1) { - if (!(*lsnd) || getFlags()->flag_3 || (*lsnd && (*lsnd)->getTime() > getSound()->getLoopingSoundDuration())) { + if (getSoundState() & kSoundState1) { + SoundEntry *entry = getEntry(kSoundType1); + if (!entry || getFlags()->flag_3 || (entry && entry->getTime() > getSound()->getLoopingSoundDuration())) { getSound()->playLoopingSound(0x45); } else { if (getSound()->getData1() && getSound()->getData2() >= getSound()->getData1()) { - (*lsnd)->update(getSound()->getData0()); + entry->update(getSound()->getData0()); getSound()->setData1(0); } } } - msnd = NULL; + for (Common::List::iterator it = _soundList.begin(); it != _soundList.end(); ++it) { + SoundEntry *entry = *it; - for (lsnd = _soundList.begin(); lsnd != _soundList.end(); ++lsnd) { - if ((*lsnd)->getStatus().status2 & 0x1) { // Sound is stopped - // original code - //if ((*lsnd)->soundBuffer) - // Sound_RemoveSoundDataFromCache(*lsnd); - //if ((*lsnd)->archive) { - // Archive_SetStatusNotLoaded((*lsnd)->archive); - // (*lsnd)->archive = 0; - // (*lsnd)->field_28 = 3; - //} + // Original removes the entry data from the cache and sets the archive as not loaded + // and if the sound data buffer is not full, loads a new entry to be played based on + // its priority and filter id - if (_soundList.size() < 6) { - if ((*lsnd)->getStatus().status1 & 0x1F) { - int pri = (*lsnd)->getPriority() + ((*lsnd)->getStatus().status1 & 0x1F); - - if (pri > maxPriority) { - msnd = *lsnd; - maxPriority = pri; - } - } - } - } - - if (!(*lsnd)->updateSound() && !((*lsnd)->getStatus().status3 & 0x8)) { - if (msnd == *lsnd) { - maxPriority = 0; - msnd = 0; - } - if (*lsnd) { - (*lsnd)->close(); - SAFE_DELETE(*lsnd); - lsnd = _soundList.reverse_erase(lsnd); - } + if (!entry->updateSound() && !(entry->getStatus().status3 & 0x8)) { + entry->close(); + SAFE_DELETE(entry); + it = _soundList.reverse_erase(it); } } - - // We don't need this - //if (msnd) - // msnd->updateEntryInternal(); + // Original update the current entry, loading another set of samples to be decoded getFlags()->flag_3 = 0; - //--g_sound_flag; + + --_flag; } void SoundQueue::resetQueue() { @@ -209,17 +170,10 @@ void SoundQueue::resetQueue(SoundType type1, SoundType type2) { } void SoundQueue::clearQueue() { - _flag |= 4; - - // FIXME: Wait a while for a flag to be set - //for (int i = 0; i < 3000000; i++) - // if (_flag & 8) - // break; + Common::StackLock locker(_mutex); _flag |= 8; - Common::StackLock locker(_mutex); - for (Common::List::iterator i = _soundList.begin(); i != _soundList.end(); ++i) { SoundEntry *entry = (*i); @@ -240,7 +194,7 @@ void SoundQueue::clearStatus() { Common::StackLock locker(_mutex); for (Common::List::iterator i = _soundList.begin(); i != _soundList.end(); ++i) - (*i)->setStatus((*i)->getStatus().status | kSoundStatusClear3); + (*i)->setStatus((*i)->getStatus().status | kSoundStatusClosed); } ////////////////////////////////////////////////////////////////////////// diff --git a/engines/lastexpress/sound/sound.cpp b/engines/lastexpress/sound/sound.cpp index c04b6d361ff..2f7bb4a6015 100644 --- a/engines/lastexpress/sound/sound.cpp +++ b/engines/lastexpress/sound/sound.cpp @@ -1305,8 +1305,8 @@ void SoundManager::playLoopingSound(int param) { int partNumber = 1; int fnameLen = 6; - if (_queue->getSoundState() & 1 && param >= 0x45 && param <= 0x46) { - if (_queue->getSoundState() & 2) { + if (_queue->getSoundState() & kSoundState1 && param >= 0x45 && param <= 0x46) { + if (_queue->getSoundState() & kSoundState2) { strcpy(tmp, "STEAM.SND"); _loopingSoundDuration = 32767; From ec3b9314e8cddb4636e45d414f3d7c78dd9f716e Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 9 Jul 2011 09:44:34 +0200 Subject: [PATCH 041/731] CREATE_PROJECT: Quote parameters in MSVC10 post-build step. Also, do the same commands for Release and Debug. --- .../msvc10/create_project.vcxproj | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/devtools/create_project/msvc10/create_project.vcxproj b/devtools/create_project/msvc10/create_project.vcxproj index 3d7f8fdd3db..40c515f26b6 100644 --- a/devtools/create_project/msvc10/create_project.vcxproj +++ b/devtools/create_project/msvc10/create_project.vcxproj @@ -59,11 +59,11 @@ @echo off -xcopy /Y $(TargetPath) $(SolutionDir)\..\..\..\dists\msvc10\ -xcopy /Y $(TargetPath) $(SolutionDir)\..\..\..\dists\msvc9\ -xcopy /Y $(TargetPath) $(SolutionDir)\..\..\..\dists\msvc8\ -xcopy /Y $(TargetPath) $(SolutionDir)\..\..\..\dists\codeblocks\ -xcopy /Y $(TargetPath) $(SolutionDir)\..\..\..\dists\iphone\ +xcopy /Y "$(TargetPath)" "$(SolutionDir)\..\..\..\dists\msvc10\" +xcopy /Y "$(TargetPath)" "$(SolutionDir)\..\..\..\dists\msvc9\" +xcopy /Y "$(TargetPath)" "$(SolutionDir)\..\..\..\dists\msvc8\" +xcopy /Y "$(TargetPath)" "$(SolutionDir)\..\..\..\dists\codeblocks\" +xcopy /Y "$(TargetPath)" "$(SolutionDir)\..\..\..\dists\iphone\" @@ -84,10 +84,12 @@ xcopy /Y $(TargetPath) $(SolutionDir)\..\..\..\dists\iphone\ MachineX86 - xcopy /Y $(TargetPath) $(SolutionDir)\..\..\..\dists\msvc10\ -xcopy /Y $(TargetPath) $(SolutionDir)\..\..\..\dists\msvc9\ -xcopy /Y $(TargetPath) $(SolutionDir)\..\..\..\dists\msvc8\ -xcopy /Y $(TargetPath) $(SolutionDir)\..\..\..\dists\codeblocks\ + @echo off +xcopy /Y "$(TargetPath)" "$(SolutionDir)\..\..\..\dists\msvc10\" +xcopy /Y "$(TargetPath)" "$(SolutionDir)\..\..\..\dists\msvc9\" +xcopy /Y "$(TargetPath)" "$(SolutionDir)\..\..\..\dists\msvc8\" +xcopy /Y "$(TargetPath)" "$(SolutionDir)\..\..\..\dists\codeblocks\" +xcopy /Y "$(TargetPath)" "$(SolutionDir)\..\..\..\dists\iphone\" @@ -120,4 +122,4 @@ xcopy /Y $(TargetPath) $(SolutionDir)\..\..\..\dists\codeblocks\ - \ No newline at end of file + From 49f209a4d20bec37fe567164671c3341a3e8d300 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Sat, 9 Jul 2011 14:34:59 +0300 Subject: [PATCH 042/731] MOHAWK: Silence MSVC warnings --- engines/mohawk/livingbooks.h | 2 +- engines/mohawk/livingbooks_code.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/engines/mohawk/livingbooks.h b/engines/mohawk/livingbooks.h index 84269452579..27e703a5786 100644 --- a/engines/mohawk/livingbooks.h +++ b/engines/mohawk/livingbooks.h @@ -673,7 +673,7 @@ public: GUI::Debugger *getDebugger() { return _console; } void addArchive(Archive *archive); - void removeArchive(Archive *Archive); + void removeArchive(Archive *archive); void addItem(LBItem *item); void removeItems(const Common::Array &items); diff --git a/engines/mohawk/livingbooks_code.cpp b/engines/mohawk/livingbooks_code.cpp index 6531f65753a..80b5fe9660b 100644 --- a/engines/mohawk/livingbooks_code.cpp +++ b/engines/mohawk/livingbooks_code.cpp @@ -1181,8 +1181,8 @@ bool LBCode::parseCodeSymbol(const Common::String &name, uint &pos, Common::Arra // first, check whether the name matches a known function for (uint i = 0; i < 2; i++) { byte cmdToken; - CodeCommandInfo *cmdInfo; - uint cmdCount; + CodeCommandInfo *cmdInfo = NULL; + uint cmdCount = 0; switch (i) { case 0: From 0d3a2267c7a06b14302736c50dd4d5e4f9c6eafd Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Sat, 9 Jul 2011 15:59:30 +0300 Subject: [PATCH 043/731] SAGA: Removed several game flags, which are now found more reliably on the fly - The logo screens of all ITE versions are shown correctly now - Wyrmkeep versions, demo versions with scene substitutes, demos with mono music and demo versions with LE VOX encoded voices are all found automatically now --- engines/saga/detection.cpp | 3 --- engines/saga/detection_tables.h | 14 +++++++------- engines/saga/introproc_ite.cpp | 33 +++++++++++++++------------------ engines/saga/music.cpp | 7 ++++++- engines/saga/resource.cpp | 6 ------ engines/saga/saga.cpp | 5 ++--- engines/saga/saga.h | 14 +++++--------- engines/saga/scene.cpp | 2 +- engines/saga/sndres.cpp | 9 +++++---- 9 files changed, 41 insertions(+), 52 deletions(-) diff --git a/engines/saga/detection.cpp b/engines/saga/detection.cpp index 7a98fe41645..2f1b61eed85 100644 --- a/engines/saga/detection.cpp +++ b/engines/saga/detection.cpp @@ -67,9 +67,6 @@ int SagaEngine::getGameId() const { return _gameDescription->gameId; } uint32 SagaEngine::getFeatures() const { uint32 result = _gameDescription->features; - if (_gf_wyrmkeep) - result |= GF_WYRMKEEP; - return result; } diff --git a/engines/saga/detection_tables.h b/engines/saga/detection_tables.h index ab73fcba6e8..a29d835a546 100644 --- a/engines/saga/detection_tables.h +++ b/engines/saga/detection_tables.h @@ -221,7 +221,7 @@ static const SAGAGameDescription gameDescriptions[] = { GUIO_NOSPEECH }, GID_ITE, - GF_WYRMKEEP | GF_SCENE_SUBSTITUTES | GF_MONO_MUSIC | GF_LE_VOICES, + 0, ITE_DEFAULT_SCENE, &ITE_Resources, ARRAYSIZE(ITEWINDEMO_GameFonts), @@ -247,7 +247,7 @@ static const SAGAGameDescription gameDescriptions[] = { GUIO_NOSPEECH }, GID_ITE, - GF_WYRMKEEP | GF_LE_VOICES, + 0, ITE_DEFAULT_SCENE, &ITE_Resources, ARRAYSIZE(ITEWINDEMO_GameFonts), @@ -273,7 +273,7 @@ static const SAGAGameDescription gameDescriptions[] = { GUIO_NONE }, GID_ITE, - GF_WYRMKEEP | GF_SCENE_SUBSTITUTES, + 0, ITE_DEFAULT_SCENE, &ITE_Resources, ARRAYSIZE(ITEWINDEMO_GameFonts), @@ -299,7 +299,7 @@ static const SAGAGameDescription gameDescriptions[] = { GUIO_NONE }, GID_ITE, - GF_WYRMKEEP | GF_8BIT_UNSIGNED_PCM, + GF_8BIT_UNSIGNED_PCM, ITE_DEFAULT_SCENE, &ITE_Resources, ARRAYSIZE(ITEWINDEMO_GameFonts), @@ -356,7 +356,7 @@ static const SAGAGameDescription gameDescriptions[] = { GUIO_NONE }, GID_ITE, - GF_WYRMKEEP, + 0, ITE_DEFAULT_SCENE, &ITE_Resources, ARRAYSIZE(ITEWINDEMO_GameFonts), @@ -388,7 +388,7 @@ static const SAGAGameDescription gameDescriptions[] = { GUIO_NONE }, GID_ITE, - GF_WYRMKEEP, + 0, ITE_DEFAULT_SCENE, &ITE_Resources, ARRAYSIZE(ITE_GameFonts), @@ -418,7 +418,7 @@ static const SAGAGameDescription gameDescriptions[] = { GUIO_NONE }, GID_ITE, - GF_WYRMKEEP, + 0, ITE_DEFAULT_SCENE, &ITE_Resources, ARRAYSIZE(ITE_GameFonts), diff --git a/engines/saga/introproc_ite.cpp b/engines/saga/introproc_ite.cpp index 87fd48e2d2a..9248f2b530e 100644 --- a/engines/saga/introproc_ite.cpp +++ b/engines/saga/introproc_ite.cpp @@ -179,21 +179,22 @@ enum { EventColumns *Scene::ITEQueueCredits(int delta_time, int duration, int n_credits, const IntroCredit credits[]) { int game; Common::Language lang; + bool hasWyrmkeepCredits = (Common::File::exists("credit3n.dlt") || // PC + Common::File::exists("credit3m.dlt")); // Mac // The assumption here is that all WyrmKeep versions have the same // credits, regardless of which operating system they're for. lang = _vm->getLanguage(); - if (_vm->getFeatures() & GF_WYRMKEEP) { + if (hasWyrmkeepCredits) game = kITEWyrmKeep; - } else if (_vm->getPlatform() == Common::kPlatformMacintosh) { + else if (_vm->getPlatform() == Common::kPlatformMacintosh) game = kITEMac; - } else if (_vm->getFeatures() & GF_EXTRA_ITE_CREDITS) { + else if (_vm->getFeatures() & GF_EXTRA_ITE_CREDITS) game = kITEPCCD; - } else { + else game = kITEPC; - } int line_spacing = 0; int paragraph_spacing; @@ -303,6 +304,11 @@ int Scene::SC_ITEIntroAnimProc(int param, void *refCon) { int Scene::ITEIntroAnimProc(int param) { Event event; EventColumns *eventColumns; + bool isMac = _vm->getPlatform() == Common::kPlatformMacintosh; + bool isMultiCD = _vm->getPlatform() == Common::kPlatformUnknown; + bool hasWyrmkeepCredits = (Common::File::exists("credit3n.dlt") || // PC + Common::File::exists("credit3m.dlt")); // Mac + bool isDemo = Common::File::exists("scriptsd.rsc"); switch (param) { case SCENE_BEGIN:{ @@ -324,19 +330,10 @@ int Scene::ITEIntroAnimProc(int param) { // playback int lastAnim; - if (_vm->getFeatures() & GF_WYRMKEEP) { - if (_vm->getPlatform() == Common::kPlatformMacintosh) { - lastAnim = 3; - } else { - lastAnim = 2; - } - } else { - if (_vm->getPlatform() == Common::kPlatformMacintosh) { - lastAnim = 4; - } else { - lastAnim = 5; - } - } + if (hasWyrmkeepCredits || isMultiCD || isDemo) + lastAnim = isMac ? 3 : 2; + else + lastAnim = isMac ? 4 : 5; for (int i = 0; i < lastAnim; i++) _vm->_anim->link(i, i+1); diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp index 21f3cc489e5..85315ab8c49 100644 --- a/engines/saga/music.cpp +++ b/engines/saga/music.cpp @@ -287,7 +287,12 @@ void Music::play(uint32 resourceId, MusicFlags flags) { if (_vm->isBigEndian()) musicFlags &= ~Audio::FLAG_LITTLE_ENDIAN; - if (_vm->getFeatures() & GF_MONO_MUSIC) + // The newer ITE Mac demo version contains a music file, but it has mono music. + // This is the only music file that is about 7MB, whereas all the other ones + // are much larger. Thus, we use this simple heuristic to determine if we got + // mono music in the ITE demos or not. + if (!strcmp(_digitalMusicContext->fileName(), "musicd.rsc") && + _digitalMusicContext->fileSize() < 8000000) musicFlags &= ~Audio::FLAG_STEREO; audioStream = Audio::makeRawStream(musicStream, 11025, musicFlags, DisposeAfterUse::YES); diff --git a/engines/saga/resource.cpp b/engines/saga/resource.cpp index 72b021309c6..1b0dfa2f227 100644 --- a/engines/saga/resource.cpp +++ b/engines/saga/resource.cpp @@ -162,12 +162,6 @@ bool Resource::createContexts() { uint16 voiceFileAddType; }; - - // If the Wyrmkeep credits file is found, set the Wyrmkeep version flag to true - if (Common::File::exists("credit3n.dlt")) { - _vm->_gf_wyrmkeep = true; - } - for (const ADGameFileDescription *gameFileDescription = _vm->getFilesDescriptions(); gameFileDescription->fileName; gameFileDescription++) { addContext(gameFileDescription->fileName, gameFileDescription->fileType); diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp index d168605e992..6e272d37c06 100644 --- a/engines/saga/saga.cpp +++ b/engines/saga/saga.cpp @@ -72,9 +72,8 @@ SagaEngine::SagaEngine(OSystem *syst, const SAGAGameDescription *gameDesc) _readingSpeed = 0; _copyProtection = false; - _gf_wyrmkeep = false; _musicWasPlaying = false; - + _hasITESceneSubstitutes = false; _sndRes = NULL; _sound = NULL; @@ -211,9 +210,9 @@ Common::Error SagaEngine::run() { _subtitlesEnabled = ConfMan.getBool("subtitles"); _readingSpeed = getTalkspeed(); _copyProtection = ConfMan.getBool("copy_protection"); - _gf_wyrmkeep = false; _musicWasPlaying = false; _isIHNMDemo = Common::File::exists("music.res"); + _hasITESceneSubstitutes = Common::File::exists("boarhall.bbm"); if (_readingSpeed > 3) _readingSpeed = 0; diff --git a/engines/saga/saga.h b/engines/saga/saga.h index 23258e12774..336883680ab 100644 --- a/engines/saga/saga.h +++ b/engines/saga/saga.h @@ -137,16 +137,12 @@ enum GameFileTypes { }; enum GameFeatures { - GF_WYRMKEEP = 1 << 0, - GF_ITE_FLOPPY = 1 << 1, - GF_SCENE_SUBSTITUTES = 1 << 2, + GF_ITE_FLOPPY = 1 << 0, #if 0 - GF_OLD_ITE_DOS = 1 << 3, // Currently unused + GF_OLD_ITE_DOS = 1 << 1, // Currently unused #endif - GF_MONO_MUSIC = 1 << 4, - GF_EXTRA_ITE_CREDITS = 1 << 5, - GF_LE_VOICES = 1 << 6, - GF_8BIT_UNSIGNED_PCM = 1 << 7 + GF_EXTRA_ITE_CREDITS = 1 << 2, + GF_8BIT_UNSIGNED_PCM = 1 << 3 }; enum VerbTypeIds { @@ -532,9 +528,9 @@ public: int _readingSpeed; bool _copyProtection; - bool _gf_wyrmkeep; bool _musicWasPlaying; bool _isIHNMDemo; + bool _hasITESceneSubstitutes; SndRes *_sndRes; Sound *_sound; diff --git a/engines/saga/scene.cpp b/engines/saga/scene.cpp index 66ee8f45043..61e62d56268 100644 --- a/engines/saga/scene.cpp +++ b/engines/saga/scene.cpp @@ -451,7 +451,7 @@ void Scene::changeScene(int16 sceneNumber, int actorsEntrance, SceneTransitionTy // This is used for latter ITE demos where all places on world map except // Tent Faire are substituted with LBM picture and short description - if (_vm->getFeatures() & GF_SCENE_SUBSTITUTES) { + if (_vm->_hasITESceneSubstitutes) { for (int i = 0; i < ARRAYSIZE(sceneSubstitutes); i++) { if (sceneSubstitutes[i].sceneId == sceneNumber) { Surface bbmBuffer; diff --git a/engines/saga/sndres.cpp b/engines/saga/sndres.cpp index 2433c93e93a..add34e22a2a 100644 --- a/engines/saga/sndres.cpp +++ b/engines/saga/sndres.cpp @@ -262,9 +262,12 @@ bool SndRes::load(ResourceContext *context, uint32 resourceId, SoundBuffer &buff buffer.flags |= Audio::FLAG_UNSIGNED; buffer.flags &= ~Audio::FLAG_16BITS; } else { - // Voice files in newer ITE demo versions are OKI ADPCM (VOX) encoded - if (!uncompressedSound && !scumm_stricmp(context->fileName(), "voicesd.rsc")) + // Voice files in newer ITE demo versions are OKI ADPCM (VOX) encoded. + // These are LE in all the Windows and Mac demos + if (!uncompressedSound && !scumm_stricmp(context->fileName(), "voicesd.rsc")) { resourceType = kSoundVOX; + buffer.flags |= Audio::FLAG_LITTLE_ENDIAN; + } } } buffer.buffer = NULL; @@ -272,8 +275,6 @@ bool SndRes::load(ResourceContext *context, uint32 resourceId, SoundBuffer &buff // Check for LE sounds if (!context->isBigEndian()) buffer.flags |= Audio::FLAG_LITTLE_ENDIAN; - if ((context->fileType() & GAME_VOICEFILE) && (_vm->getFeatures() & GF_LE_VOICES)) - buffer.flags |= Audio::FLAG_LITTLE_ENDIAN; // Older Mac versions of ITE were Macbinary packed int soundOffset = (context->fileType() & GAME_MACBINARY) ? 36 : 0; From 52dce792997e20c6028878f5321a938182f89e81 Mon Sep 17 00:00:00 2001 From: D G Turner Date: Sat, 9 Jul 2011 15:30:23 +0100 Subject: [PATCH 044/731] Wii: Enable Virtual Keyboard for Wii and Gamecube in Configure. This should avoid future bugs similar to #3358466 ("Wii: Virtual Keyboard doesnt show up"). --- configure | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 78998f8100b..74541e3d981 100755 --- a/configure +++ b/configure @@ -121,7 +121,6 @@ add_engine touche "Touche: The Adventures of the Fifth Musketeer" yes add_engine tsage "Ringworld: Revenge Of The Patriarch" no add_engine tucker "Bud Tucker in Double Trouble" yes - # # Default settings # @@ -2065,6 +2064,7 @@ if test -n "$_host"; then gamecube) _backend="wii" _build_scalers=no + _vkeybd=yes _mt32emu=no _port_mk="backends/platform/wii/wii.mk" add_line_to_config_mk 'GAMECUBE = 1' @@ -2279,6 +2279,7 @@ if test -n "$_host"; then wii) _backend="wii" _build_scalers=no + _vkeybd=yes _port_mk="backends/platform/wii/wii.mk" add_line_to_config_mk 'GAMECUBE = 0' add_line_to_config_h '#define AUDIO_REVERSE_STEREO' From b1cb88ddc25da64772bbba253bd2210678189ace Mon Sep 17 00:00:00 2001 From: athrxx Date: Thu, 7 Jul 2011 16:33:14 +0200 Subject: [PATCH 045/731] SCUMM: cleanup sjis font rendering code --- engines/scumm/charset.cpp | 782 +++++++++++++++++++------------------- engines/scumm/charset.h | 82 ++-- engines/scumm/scumm.cpp | 13 +- engines/scumm/scumm.h | 9 +- 4 files changed, 474 insertions(+), 412 deletions(-) diff --git a/engines/scumm/charset.cpp b/engines/scumm/charset.cpp index eaae64dc779..8adeaa076c0 100644 --- a/engines/scumm/charset.cpp +++ b/engines/scumm/charset.cpp @@ -217,6 +217,9 @@ static int SJIStoPCEChunk(int f, int s) { //converts sjis code to pce font offse } byte *ScummEngine::get2byteCharPtr(int idx) { + if (_game.platform == Common::kPlatformFMTowns) + return 0; + switch (_language) { case Common::KO_KOR: idx = ((idx % 256) - 0xb0) * 94 + (idx / 256) - 0xa1; @@ -314,7 +317,7 @@ CharsetRenderer::~CharsetRenderer() { CharsetRendererCommon::CharsetRendererCommon(ScummEngine *vm) : CharsetRenderer(vm), _bytesPerPixel(0), _fontHeight(0), _numChars(0) { - _shadowMode = kNoShadowMode; + _shadowMode = false; _shadowColor = 0; } @@ -362,17 +365,9 @@ void CharsetRendererV3::setCurID(int32 id) { } int CharsetRendererCommon::getFontHeight() { - if (_vm->_useCJKMode) { - if (_vm->_game.platform == Common::kPlatformFMTowns) { - static const uint8 sjisFontHeightM1[] = { 0, 8, 9, 8, 9, 8, 9, 0, 0, 0 }; - static const uint8 sjisFontHeightM2[] = { 0, 8, 9, 9, 9, 8, 9, 9, 9, 8 }; - static const uint8 sjisFontHeightI4[] = { 0, 8, 9, 9, 9, 8, 8, 8, 8, 8 }; - const uint8 *htbl = (_vm->_game.id == GID_MONKEY) ? sjisFontHeightM1 : ((_vm->_game.id == GID_INDY4) ? sjisFontHeightI4 : sjisFontHeightM2); - return (_vm->_game.version == 3) ? 8 : htbl[_curId]; - } else { - return MAX(_vm->_2byteHeight + 1, _fontHeight); - } - } else + if (_vm->_useCJKMode) + return MAX(_vm->_2byteHeight + 1, _fontHeight); + else return _fontHeight; } @@ -380,57 +375,16 @@ int CharsetRendererCommon::getFontHeight() { int CharsetRendererClassic::getCharWidth(uint16 chr) { int spacing = 0; - if (_vm->_useCJKMode) { - if (_vm->_game.platform == Common::kPlatformFMTowns) { - if ((chr & 0xff00) == 0xfd00) { - chr &= 0xff; - } else if (chr >= 256) { - spacing = 8; - } else if (useTownsFontRomCharacter(chr)) { - spacing = 4; - } + if (_vm->_useCJKMode && chr >= 0x80) + return _vm->_2byteWidth / 2; - if (spacing) { - if (_vm->_game.id == GID_MONKEY) { - spacing++; - if (_curId == 2) - spacing++; - } else if (_vm->_game.id != GID_INDY4 && _curId == 1) { - spacing++; - } - } - - } else if (chr >= 0x80) { - return _vm->_2byteWidth / 2; - } - } - - if (!spacing) { - int offs = READ_LE_UINT32(_fontPtr + chr * 4 + 4); - if (offs) { - spacing = _fontPtr[offs] + (signed char)_fontPtr[offs + 2]; - } - } + int offs = READ_LE_UINT32(_fontPtr + chr * 4 + 4); + if (offs) + spacing = _fontPtr[offs] + (signed char)_fontPtr[offs + 2]; return spacing; } -bool CharsetRendererClassic::useTownsFontRomCharacter(uint16 chr) { -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - if (_vm->_game.platform != Common::kPlatformFMTowns || !_vm->_useCJKMode) - return false; - - if (chr < 128) { - if (((_vm->_game.id == GID_MONKEY2 && _curId != 0) || (_vm->_game.id == GID_INDY4 && _curId != 3)) && (chr > 31 && chr != 94 && chr != 95 && chr != 126 && chr != 127)) - return true; - return false; - } - return true; -#else - return false; -#endif -} - int CharsetRenderer::getStringWidth(int arg, const byte *text) { int pos = 0; int width = 1; @@ -608,24 +562,53 @@ void CharsetRenderer::addLinebreaks(int a, byte *str, int pos, int maxwidth) { int CharsetRendererV3::getCharWidth(uint16 chr) { int spacing = 0; - if (_vm->_useCJKMode) { - if (_vm->_game.platform == Common::kPlatformFMTowns) { - if (chr >= 256) - spacing = 8; - else if (chr >= 128) - spacing = 4; - } else if (chr & 0x80) { - spacing = _vm->_2byteWidth / 2; - } - } - - if (!spacing) { + if (_vm->_useCJKMode && (chr & 0x80)) + spacing = _vm->_2byteWidth / 2; + + if (!spacing) spacing = *(_widthTable + chr); - } return spacing; } +void CharsetRendererV3::enableShadow(bool enable) { + _shadowColor = 0; + _shadowMode = enable; +} + +void CharsetRendererV3::drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth) { + int y, x; + byte bits = 0; + uint8 col = _color; + int pitch = s.pitch - width * bitDepth; + byte *dst2 = dst + s.pitch; + + for (y = 0; y < height && y + drawTop < s.h; y++) { + for (x = 0; x < width; x++) { + if ((x % 8) == 0) + bits = *src++; + if ((bits & revBitMask(x % 8)) && y + drawTop >= 0) { + if (_shadowMode) + dst[1] = dst2[0] = dst2[1] = _shadowColor; + dst[0] = col; + } + dst += bitDepth; + dst2 += bitDepth; + } + + dst += pitch; + dst2 += pitch; + } +} + +int CharsetRendererV3::getDrawWidthIntern(uint16 chr) { + return getCharWidth(chr); +} + +int CharsetRendererV3::getDrawHeightIntern(uint16) { + return 8; +} + void CharsetRendererV3::setColor(byte color) { bool useShadow = false; _color = color; @@ -662,43 +645,6 @@ void CharsetRendererPCE::setColor(byte color) { } #endif -void CharsetRendererCommon::enableShadow(bool enable) { - if (enable) { - if (_vm->_game.platform == Common::kPlatformFMTowns) { - _shadowColor = 8; -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - _shadowColor = _vm->_game.version == 5 ? _vm->_townsCharsetColorMap[0] : 0x88; - if (_vm->_cjkFont) { - if (_vm->_game.version == 5) { - if (((_vm->_game.id == GID_MONKEY) && (_curId == 2 || _curId == 4 || _curId == 6)) || - ((_vm->_game.id == GID_MONKEY2) && (_curId != 1 && _curId != 5 && _curId != 9)) || - ((_vm->_game.id == GID_INDY4) && (_curId == 2 || _curId == 3 || _curId == 4))) { - _vm->_cjkFont->setDrawingMode(Graphics::FontSJIS::kOutlineMode); - } else { - _vm->_cjkFont->setDrawingMode(Graphics::FontSJIS::kDefaultMode); - } - _vm->_cjkFont->toggleFlippedMode((_vm->_game.id == GID_MONKEY || _vm->_game.id == GID_MONKEY2) && _curId == 3); - } else { - _vm->_cjkFont->setDrawingMode(Graphics::FontSJIS::kShadowMode); - } - } -#endif - _shadowMode = kFMTOWNSShadowMode; - } else { - _shadowColor = 0; - _shadowMode = kNormalShadowMode; - } - } else { -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - if (_vm->_cjkFont) { - _vm->_cjkFont->setDrawingMode(Graphics::FontSJIS::kDefaultMode); - _vm->_cjkFont->toggleFlippedMode(false); - } -#endif - _shadowMode = kNoShadowMode; - } -} - void CharsetRendererV3::printChar(int chr, bool ignoreCharsetMask) { // WORKAROUND for bug #1509509: Indy3 Mac does not show black // characters (such as in the grail diary) if ignoreCharsetMask @@ -721,24 +667,10 @@ void CharsetRendererV3::printChar(int chr, bool ignoreCharsetMask) { if (chr == '@') return; -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - if (_vm->_useCJKMode && chr > 127) { - if (_vm->_game.platform == Common::kPlatformFMTowns) { - charPtr = 0; - width = _vm->_cjkFont->getCharWidth(chr); - height = _vm->_cjkFont->getFontHeight(); - } else { - width = _vm->_2byteWidth; - height = _vm->_2byteHeight; - charPtr = _vm->get2byteCharPtr(chr); - } - } else -#endif - { - charPtr = _fontPtr + chr * 8; - width = getCharWidth(chr); - height = 8; - } + charPtr = (_vm->_useCJKMode && chr > 127) ? _vm->get2byteCharPtr(chr) : _fontPtr + chr * 8; + width = getDrawWidthIntern(chr); + height = getDrawHeightIntern(chr); + setDrawCharIntern(chr); // Clip at the right side (to avoid drawing "outside" the screen bounds). if (_left + origWidth > _right + 1) @@ -747,7 +679,7 @@ void CharsetRendererV3::printChar(int chr, bool ignoreCharsetMask) { origWidth = width; origHeight = height; - if (_shadowMode != kNoShadowMode) { + if (_shadowMode) { width++; height++; } @@ -769,30 +701,17 @@ void CharsetRendererV3::printChar(int chr, bool ignoreCharsetMask) { _textScreenID = vs->number; } - if ( -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - (_vm->_game.platform != Common::kPlatformFMTowns) && -#endif - (ignoreCharsetMask || !vs->hasTwoBuffers)) { + if ((ignoreCharsetMask || !vs->hasTwoBuffers)) { dst = vs->getPixels(_left, drawTop); - if (charPtr) - drawBits1(*vs, dst, charPtr, drawTop, origWidth, origHeight, vs->format.bytesPerPixel); -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - else if (_vm->_cjkFont) - _vm->_cjkFont->drawChar(*vs, chr, _left, drawTop, _color, _shadowColor); -#endif + drawBits1(*vs, dst, charPtr, drawTop, origWidth, origHeight, vs->format.bytesPerPixel); } else { dst = (byte *)_vm->_textSurface.getBasePtr(_left * _vm->_textSurfaceMultiplier, _top * _vm->_textSurfaceMultiplier); - if (charPtr) - drawBits1(_vm->_textSurface, dst, charPtr, drawTop, origWidth, origHeight, _vm->_textSurface.format.bytesPerPixel, (_vm->_textSurfaceMultiplier == 2 && !is2byte)); -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - else if (_vm->_cjkFont) - _vm->_cjkFont->drawChar(_vm->_textSurface, chr, _left * _vm->_textSurfaceMultiplier, _top * _vm->_textSurfaceMultiplier, _color, _shadowColor); -#endif - if (is2byte) { - origWidth /= _vm->_textSurfaceMultiplier; - height /= _vm->_textSurfaceMultiplier; - } + drawBits1(_vm->_textSurface, dst, charPtr, drawTop, origWidth, origHeight, _vm->_textSurface.format.bytesPerPixel); + } + + if (is2byte) { + origWidth /= _vm->_textSurfaceMultiplier; + height /= _vm->_textSurfaceMultiplier; } if (_str.left > _left) @@ -802,7 +721,7 @@ void CharsetRendererV3::printChar(int chr, bool ignoreCharsetMask) { if (_str.right < _left) { _str.right = _left; - if (_shadowMode != kNoShadowMode) + if (_shadowMode) _str.right++; } @@ -811,30 +730,12 @@ void CharsetRendererV3::printChar(int chr, bool ignoreCharsetMask) { } void CharsetRendererV3::drawChar(int chr, Graphics::Surface &s, int x, int y) { - const byte *charPtr; - byte *dst; - int width, height; - int is2byte = (chr >= 0x80 && _vm->_useCJKMode) ? 1 : 0; - if (is2byte) { -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - if (_vm->_game.platform == Common::kPlatformFMTowns) { - _vm->_cjkFont->drawChar(s, chr, x * _vm->_textSurfaceMultiplier, y * _vm->_textSurfaceMultiplier, _color, _shadowColor); - return; - } - else -#endif - { - charPtr = _vm->get2byteCharPtr(chr); - width = _vm->_2byteWidth; - height = _vm->_2byteHeight; - } - } else { - charPtr = _fontPtr + chr * 8; -// width = height = 8; - width = getCharWidth(chr); - height = 8; - } - dst = (byte *)s.pixels + y * s.pitch + x; + const byte *charPtr = (_vm->_useCJKMode && chr > 127) ? _vm->get2byteCharPtr(chr) : _fontPtr + chr * 8; + int width = getDrawWidthIntern(chr); + int height = getDrawHeightIntern(chr); + setDrawCharIntern(chr); + + byte *dst = (byte *)s.pixels + y * s.pitch + x; drawBits1(s, dst, charPtr, y, width, height, s.format.bytesPerPixel); } @@ -853,29 +754,6 @@ void CharsetRenderer::translateColor() { } } -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE -void CharsetRenderer::processTownsCharsetColors(uint8 bytesPerPixel) { - if (_vm->_game.platform == Common::kPlatformFMTowns) { - for (int i = 0; i < (1 << bytesPerPixel); i++) { - uint8 c = _vm->_charsetColorMap[i]; - - if (c > 16) { - uint8 t = (_vm->_currentPalette[c * 3] < 32) ? 4 : 12; - t |= ((_vm->_currentPalette[c * 3 + 1] < 32) ? 2 : 10); - t |= ((_vm->_currentPalette[c * 3 + 1] < 32) ? 1 : 9); - c = t; - } - - if (c == 0) - c = _vm->_townsOverrideShadowColor; - - c = ((c & 0x0f) << 4) | (c & 0x0f); - _vm->_townsCharsetColorMap[i] = c; - } - } -} -#endif - void CharsetRenderer::saveLoadWithSerializer(Serializer *ser) { static const SaveLoadEntry charsetRendererEntries[] = { MKLINE_OLD(CharsetRenderer, _curId, sleByte, VER(73), VER(73)), @@ -893,10 +771,7 @@ void CharsetRenderer::saveLoadWithSerializer(Serializer *ser) { } void CharsetRendererClassic::printChar(int chr, bool ignoreCharsetMask) { - int width, height, origWidth, origHeight; - int offsX, offsY; VirtScreen *vs; - const byte *charPtr; bool is2byte = (chr >= 256 && _vm->_useCJKMode); assertRange(1, _curId, _vm->_numCharsets - 1, "charset"); @@ -911,64 +786,7 @@ void CharsetRendererClassic::printChar(int chr, bool ignoreCharsetMask) { _vm->_charsetColorMap[1] = _color; -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - processTownsCharsetColors(_bytesPerPixel); - bool noSjis = false; - - if (_vm->_game.platform == Common::kPlatformFMTowns && _vm->_useCJKMode) { - if ((chr & 0x00ff) == 0x00fd) { - chr >>= 8; - noSjis = true; - } - } - - if (useTownsFontRomCharacter(chr) && !noSjis) { - charPtr = 0; - _vm->_cjkChar = chr; - enableShadow(true); - - width = getCharWidth(chr); - // For whatever reason MI1 uses a different font width - // for alignment calculation and for drawing when - // charset 2 is active. This fixes some subtle glitches. - if (_vm->_game.id == GID_MONKEY && _curId == 2) - width--; - origWidth = width; - - origHeight = height = getFontHeight(); - offsX = offsY = 0; - } else if (_vm->_useCJKMode && (chr >= 128) && !noSjis) { - enableShadow(true); - origWidth = width = _vm->_2byteWidth; - origHeight = height = _vm->_2byteHeight; - charPtr = _vm->get2byteCharPtr(chr); - offsX = offsY = 0; - if (_shadowMode != kNoShadowMode) { - width++; - height++; - } - } else -#endif - { - uint32 charOffs = READ_LE_UINT32(_fontPtr + chr * 4 + 4); - assert(charOffs < 0x14000); - if (!charOffs) - return; - charPtr = _fontPtr + charOffs; - - width = origWidth = charPtr[0]; - height = origHeight = charPtr[1]; - - if (_disableOffsX) { - offsX = 0; - } else { - offsX = (signed char)charPtr[2]; - } - - offsY = (signed char)charPtr[3]; - - charPtr += 4; // Skip over char header - } + prepareDraw(chr); if (_firstChar) { _str.left = 0; @@ -977,12 +795,12 @@ void CharsetRendererClassic::printChar(int chr, bool ignoreCharsetMask) { _str.bottom = 0; } - _top += offsY; - _left += offsX; + _top += _offsY; + _left += _offsX; - if (_left + origWidth > _right + 1 || _left < 0) { - _left += origWidth; - _top -= offsY; + if (_left + _origWidth > _right + 1 || _left < 0) { + _left += _origWidth; + _top -= _offsY; return; } @@ -1004,33 +822,29 @@ void CharsetRendererClassic::printChar(int chr, bool ignoreCharsetMask) { int drawTop = _top - vs->topline; - _vm->markRectAsDirty(vs->number, _left, _left + width, drawTop, drawTop + height); + _vm->markRectAsDirty(vs->number, _left, _left + _width, drawTop, drawTop + _height); // This check for kPlatformFMTowns and kMainVirtScreen is at least required for the chat with // the navigator's head in front of the ghost ship in Monkey Island 1 - if (!ignoreCharsetMask -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - || (_vm->_game.platform == Common::kPlatformFMTowns && vs->number == kMainVirtScreen) -#endif - ) { + if (!ignoreCharsetMask || (_vm->_game.platform == Common::kPlatformFMTowns && vs->number == kMainVirtScreen)) { _hasMask = true; _textScreenID = vs->number; } - printCharIntern(is2byte, charPtr, origWidth, origHeight, width, height, vs, ignoreCharsetMask); + printCharIntern(is2byte, _charPtr, _origWidth, _origHeight, _width, _height, vs, ignoreCharsetMask); - _left += origWidth; + _left += _origWidth; if (_str.right < _left) { _str.right = _left; - if (_vm->_game.platform != Common::kPlatformFMTowns && _shadowMode != kNoShadowMode) + if (_vm->_game.platform != Common::kPlatformFMTowns && _shadowMode) _str.right++; } - if (_str.bottom < _top + origHeight) - _str.bottom = _top + origHeight; + if (_str.bottom < _top + _origHeight) + _str.bottom = _top + _origHeight; - _top -= offsY; + _top -= _offsY; } void CharsetRendererClassic::printCharIntern(bool is2byte, const byte *charPtr, int origWidth, int origHeight, int width, int height, VirtScreen *vs, bool ignoreCharsetMask) { @@ -1068,11 +882,7 @@ void CharsetRendererClassic::printCharIntern(bool is2byte, const byte *charPtr, } else { Graphics::Surface dstSurface; Graphics::Surface backSurface; - if ((ignoreCharsetMask || !vs->hasTwoBuffers) -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - && (_vm->_game.platform != Common::kPlatformFMTowns) -#endif - ) { + if ((ignoreCharsetMask || !vs->hasTwoBuffers)) { dstSurface = *vs; dstPtr = vs->getPixels(_left, drawTop); } else { @@ -1091,16 +901,7 @@ void CharsetRendererClassic::printCharIntern(bool is2byte, const byte *charPtr, drawTop = _top - _vm->_screenTop; } -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - if (!charPtr && _vm->_cjkFont) { - _vm->_cjkFont->drawChar(dstSurface, _vm->_cjkChar, _left * _vm->_textSurfaceMultiplier, (_top - _vm->_screenTop) * _vm->_textSurfaceMultiplier, _vm->_townsCharsetColorMap[1], _shadowColor); - } else -#endif - if (is2byte) { - drawBits1(dstSurface, dstPtr, charPtr, drawTop, origWidth, origHeight, dstSurface.format.bytesPerPixel); - } else { - drawBitsN(dstSurface, dstPtr, charPtr, *_fontPtr, drawTop, origWidth, origHeight, _vm->_textSurfaceMultiplier == 2); - } + drawBitsN(dstSurface, dstPtr, charPtr, *_fontPtr, drawTop, origWidth, origHeight); if (_blitAlso && vs->hasTwoBuffers) { // FIXME: Revisiting this code, I think the _blitAlso mode is likely broken @@ -1139,54 +940,34 @@ void CharsetRendererClassic::printCharIntern(bool is2byte, const byte *charPtr, } } -void CharsetRendererClassic::drawChar(int chr, Graphics::Surface &s, int x, int y) { - const byte *charPtr; - byte *dst; - int width, height; - int is2byte = (chr >= 0x80 && _vm->_useCJKMode) ? 1 : 0; +void CharsetRendererClassic::prepareDraw(uint16 chr) { + uint32 charOffs = READ_LE_UINT32(_fontPtr + chr * 4 + 4); + assert(charOffs < 0x14000); + if (!charOffs) + return; + _charPtr = _fontPtr + charOffs; - if (is2byte) { - enableShadow(true); -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - if (_vm->_game.platform == Common::kPlatformFMTowns) { - _vm->_cjkFont->drawChar(s, chr, x * _vm->_textSurfaceMultiplier, y * _vm->_textSurfaceMultiplier, _color, _shadowColor); - return; - } else -#endif - { - charPtr = _vm->get2byteCharPtr(chr); - width = _vm->_2byteWidth; - height = _vm->_2byteHeight; - } + _width = _origWidth = _charPtr[0]; + _height = _origHeight = _charPtr[1]; + + if (_disableOffsX) { + _offsX = 0; } else { - uint32 charOffs = READ_LE_UINT32(_fontPtr + chr * 4 + 4); - assert(charOffs < 0x10000); - if (!charOffs) - return; - charPtr = _fontPtr + charOffs; - - width = charPtr[0]; - height = charPtr[1]; - - charPtr += 4; // Skip over char header + _offsX = (signed char)_charPtr[2]; } - dst = (byte *)s.pixels + y * s.pitch + x; + _offsY = (signed char)_charPtr[3]; - if (is2byte) { - drawBits1(s, dst, charPtr, y, width, height, s.format.bytesPerPixel); - } else { - drawBitsN(s, dst, charPtr, *_fontPtr, y, width, height); - } + _charPtr += 4; // Skip over char header } -void CharsetRendererClassic::drawBitsN(const Graphics::Surface &s, byte *dst, const byte *src, byte bpp, int drawTop, int width, int height, -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - bool scale2x) { -#else - bool) { -#endif +void CharsetRendererClassic::drawChar(int chr, Graphics::Surface &s, int x, int y) { + prepareDraw(chr); + byte *dst = (byte *)s.pixels + y * s.pitch + x; + drawBitsN(s, dst, _charPtr, *_fontPtr, y, _width, _height); +} +void CharsetRendererClassic::drawBitsN(const Graphics::Surface &s, byte *dst, const byte *src, byte bpp, int drawTop, int width, int height) { int y, x; int color; byte numbits, bits; @@ -1198,38 +979,13 @@ void CharsetRendererClassic::drawBitsN(const Graphics::Surface &s, byte *dst, co numbits = 8; byte *cmap = _vm->_charsetColorMap; -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - byte *dst2 = dst; - - if (_vm->_game.platform == Common::kPlatformFMTowns) - cmap = _vm->_townsCharsetColorMap; - if (scale2x) { - dst2 += s.pitch; - pitch <<= 1; - } -#endif - for (y = 0; y < height && y + drawTop < s.h; y++) { for (x = 0; x < width; x++) { color = (bits >> (8 - bpp)) & 0xFF; - if (color && y + drawTop >= 0) { + if (color && y + drawTop >= 0) *dst = cmap[color]; - -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - if (scale2x) - dst[1] = dst2[0] = dst2[1] = dst[0]; -#endif - } dst++; - -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - if (scale2x) { - dst++; - dst2 += 2; - } -#endif - bits <<= bpp; numbits -= bpp; if (numbits == 0) { @@ -1238,52 +994,89 @@ void CharsetRendererClassic::drawBitsN(const Graphics::Surface &s, byte *dst, co } } dst += pitch; -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - dst2 += pitch; -#endif } } -void CharsetRendererCommon::drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth, +CharsetRendererTownsV3::CharsetRendererTownsV3(ScummEngine *vm) : CharsetRendererV3(vm), _sjisCurChar(0) { +} + +int CharsetRendererTownsV3::getCharWidth(uint16 chr) { + int spacing = 0; + + if (_vm->_useCJKMode) { + if (chr >= 256) + spacing = 8; + else if (chr >= 128) + spacing = 4; + } + + if (!spacing) + spacing = *(_widthTable + chr); + + return spacing; +} + +int CharsetRendererTownsV3::getFontHeight() { + return _vm->_useCJKMode ? 8 : _fontHeight; +} + +void CharsetRendererTownsV3::enableShadow(bool enable) { + _shadowColor = 8; + _shadowMode = enable; + #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - bool scale2x) { + _shadowColor = 0x88; + if (_vm->_cjkFont) + _vm->_cjkFont->setDrawingMode(enable ? Graphics::FontSJIS::kFMTownsShadowMode : Graphics::FontSJIS::kDefaultMode); +#endif +} + +void CharsetRendererTownsV3::drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth) { +#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE + if (_sjisCurChar) { + assert(_vm->_cjkFont); + _vm->_cjkFont->drawChar(_vm->_textSurface, _sjisCurChar, _left * _vm->_textSurfaceMultiplier, _top * _vm->_textSurfaceMultiplier, _color, _shadowColor); + return; + } + + dst = (byte *)_vm->_textSurface.getBasePtr(_left * _vm->_textSurfaceMultiplier, _top * _vm->_textSurfaceMultiplier); + int sfPitch = _vm->_textSurface.pitch; + int sfHeight = _vm->_textSurface.h; + bool scale2x = (_vm->_textSurfaceMultiplier == 2 && !(_sjisCurChar >= 256 && _vm->_useCJKMode)); #else - bool) { + int sfPitch = s.pitch; + int sfHeight = s.h; #endif int y, x; byte bits = 0; uint8 col = _color; - int pitch = s.pitch - width * bitDepth; - byte *dst2 = dst + s.pitch; + int pitch = sfPitch - width * bitDepth; + byte *dst2 = dst + sfPitch; #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE byte *dst3 = dst2; byte *dst4 = dst2; if (scale2x) { - dst3 = dst2 + s.pitch; - dst4 = dst3 + s.pitch; + dst3 = dst2 + sfPitch; + dst4 = dst3 + sfPitch; pitch <<= 1; } - if (_vm->_game.platform == Common::kPlatformFMTowns && _vm->_game.version == 5) - col = _vm->_townsCharsetColorMap[1]; #endif - for (y = 0; y < height && y + drawTop < s.h; y++) { + for (y = 0; y < height && y + drawTop < sfHeight; y++) { for (x = 0; x < width; x++) { if ((x % 8) == 0) bits = *src++; if ((bits & revBitMask(x % 8)) && y + drawTop >= 0) { if (bitDepth == 2) { - if (_shadowMode != kNoShadowMode) { + if (_shadowMode) { WRITE_UINT16(dst + 2, _vm->_16BitPalette[_shadowColor]); - WRITE_UINT16(dst + s.pitch, _vm->_16BitPalette[_shadowColor]); - if (_shadowMode != kFMTOWNSShadowMode) - WRITE_UINT16(dst + s.pitch + 2, _vm->_16BitPalette[_shadowColor]); + WRITE_UINT16(dst + sfPitch, _vm->_16BitPalette[_shadowColor]); } WRITE_UINT16(dst, _vm->_16BitPalette[_color]); } else { - if (_shadowMode != kNoShadowMode) { + if (_shadowMode) { #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE if (scale2x) { dst[2] = dst[3] = dst2[2] = dst2[3] = _shadowColor; @@ -1292,8 +1085,6 @@ void CharsetRendererCommon::drawBits1(const Graphics::Surface &s, byte *dst, con #endif { dst[1] = dst2[0] = _shadowColor; - if (_shadowMode != kFMTOWNSShadowMode) - dst2[1] = _shadowColor; } } dst[0] = col; @@ -1324,9 +1115,30 @@ void CharsetRendererCommon::drawBits1(const Graphics::Surface &s, byte *dst, con #endif } } +#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE +int CharsetRendererTownsV3::getDrawWidthIntern(uint16 chr) { + if (_vm->_useCJKMode && chr > 127) { + assert(_vm->_cjkFont); + return _vm->_cjkFont->getCharWidth(chr); + } + return CharsetRendererV3::getDrawWidthIntern(chr); +} + +int CharsetRendererTownsV3::getDrawHeightIntern(uint16 chr) { + if (_vm->_useCJKMode && chr > 127) { + assert(_vm->_cjkFont); + return _vm->_cjkFont->getFontHeight(); + } + return CharsetRendererV3::getDrawHeightIntern(chr); +} + +void CharsetRendererTownsV3::setDrawCharIntern(uint16 chr) { + _sjisCurChar = (_vm->_useCJKMode && chr > 127) ? chr : 0; +} +#endif #ifdef USE_RGB_COLOR -void CharsetRendererPCE::drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth, bool scalex) { +void CharsetRendererPCE::drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth) { int y, x; int bitCount = 0; byte bits = 0; @@ -1341,14 +1153,12 @@ void CharsetRendererPCE::drawBits1(const Graphics::Surface &s, byte *dst, const bits = *src++; if ((bits & revBitMask(bitCount % 8)) && y + drawTop >= 0) { if (bitDepth == 2) { - if (_shadowMode != kNoShadowMode) { + if (_shadowMode) WRITE_UINT16(dst + s.pitch + 2, _vm->_16BitPalette[_shadowColor]); - } WRITE_UINT16(dst, _vm->_16BitPalette[_color]); } else { - if (_shadowMode != kNoShadowMode) { + if (_shadowMode) *(dst + s.pitch + 1) = _shadowColor; - } *dst = _color; } } @@ -1359,6 +1169,18 @@ void CharsetRendererPCE::drawBits1(const Graphics::Surface &s, byte *dst, const dst += s.pitch - width * bitDepth; } } + +int CharsetRendererPCE::getDrawWidthIntern(uint16 chr) { + if (_vm->_useCJKMode && chr > 127) + return _vm->_2byteWidth; + return CharsetRendererV3::getDrawWidthIntern(chr); +} + +int CharsetRendererPCE::getDrawHeightIntern(uint16 chr) { + if (_vm->_useCJKMode && chr > 127) + return _vm->_2byteHeight; + return CharsetRendererV3::getDrawHeightIntern(chr); +} #endif #ifdef ENABLE_SCUMM_7_8 @@ -1533,7 +1355,7 @@ void CharsetRendererNES::printChar(int chr, bool ignoreCharsetMask) { if (_str.right < _left) { _str.right = _left; - if (_shadowMode != kNoShadowMode) + if (_shadowMode) _str.right++; } @@ -1556,7 +1378,203 @@ void CharsetRendererNES::drawChar(int chr, Graphics::Surface &s, int x, int y) { drawBits1(s, dst, charPtr, y, width, height, s.format.bytesPerPixel); } -void CharsetRendererNES::drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth, bool scalex) { +#ifdef USE_RGB_COLOR +#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE +CharsetRendererTownsClassic::CharsetRendererTownsClassic(ScummEngine *vm) : CharsetRendererClassic(vm), _sjisCurChar(0) { +} + +int CharsetRendererTownsClassic::getCharWidth(uint16 chr) { + int spacing = 0; + + if (_vm->_useCJKMode) { + if ((chr & 0xff00) == 0xfd00) { + chr &= 0xff; + } else if (chr >= 256) { + spacing = 8; + } else if (useFontRomCharacter(chr)) { + spacing = 4; + } + + if (spacing) { + if (_vm->_game.id == GID_MONKEY) { + spacing++; + if (_curId == 2) + spacing++; + } else if (_vm->_game.id != GID_INDY4 && _curId == 1) { + spacing++; + } + } + } + + if (!spacing) { + int offs = READ_LE_UINT32(_fontPtr + chr * 4 + 4); + if (offs) + spacing = _fontPtr[offs] + (signed char)_fontPtr[offs + 2]; + } + + return spacing; +} + +int CharsetRendererTownsClassic::getFontHeight() { + static const uint8 sjisFontHeightM1[] = { 0, 8, 9, 8, 9, 8, 9, 0, 0, 0 }; + static const uint8 sjisFontHeightM2[] = { 0, 8, 9, 9, 9, 8, 9, 9, 9, 8 }; + static const uint8 sjisFontHeightI4[] = { 0, 8, 9, 9, 9, 8, 8, 8, 8, 8 }; + const uint8 *htbl = (_vm->_game.id == GID_MONKEY) ? sjisFontHeightM1 : ((_vm->_game.id == GID_INDY4) ? sjisFontHeightI4 : sjisFontHeightM2); + return _vm->_useCJKMode ? htbl[_curId] : _fontHeight; +} + +void CharsetRendererTownsClassic::drawBitsN(const Graphics::Surface&, byte *dst, const byte *src, byte bpp, int drawTop, int width, int height) { + if (_sjisCurChar) { + assert(_vm->_cjkFont); + _vm->_cjkFont->drawChar(_vm->_textSurface, _sjisCurChar, _left * _vm->_textSurfaceMultiplier, (_top - _vm->_screenTop) * _vm->_textSurfaceMultiplier, _vm->_townsCharsetColorMap[1], _shadowColor); + return; + } + + bool scale2x = (_vm->_textSurfaceMultiplier == 2); + dst = (byte *)_vm->_textSurface.pixels + (_top - _vm->_screenTop) * _vm->_textSurface.pitch * _vm->_textSurfaceMultiplier + _left * _vm->_textSurfaceMultiplier; + + int y, x; + int color; + byte numbits, bits; + + int pitch = _vm->_textSurface.pitch - width; + + assert(bpp == 1 || bpp == 2 || bpp == 4 || bpp == 8); + bits = *src++; + numbits = 8; + byte *cmap = _vm->_charsetColorMap; + byte *dst2 = dst; + + if (_vm->_game.platform == Common::kPlatformFMTowns) + cmap = _vm->_townsCharsetColorMap; + if (scale2x) { + dst2 += _vm->_textSurface.pitch; + pitch <<= 1; + } + + for (y = 0; y < height && y + drawTop < _vm->_textSurface.h; y++) { + for (x = 0; x < width; x++) { + color = (bits >> (8 - bpp)) & 0xFF; + + if (color && y + drawTop >= 0) { + *dst = cmap[color]; + if (scale2x) + dst[1] = dst2[0] = dst2[1] = dst[0]; + } + dst++; + + if (scale2x) { + dst++; + dst2 += 2; + } + + bits <<= bpp; + numbits -= bpp; + if (numbits == 0) { + bits = *src++; + numbits = 8; + } + } + dst += pitch; + dst2 += pitch; + } +} + +void CharsetRendererTownsClassic::prepareDraw(uint16 chr) { + processCharsetColors(); + bool noSjis = false; + + if (_vm->_game.platform == Common::kPlatformFMTowns && _vm->_useCJKMode) { + if ((chr & 0x00ff) == 0x00fd) { + chr >>= 8; + noSjis = true; + } + } + + if (useFontRomCharacter(chr) && !noSjis) { + setupShadowMode(); + _charPtr = 0; + _sjisCurChar = chr; + + _width = getCharWidth(chr); + // For whatever reason MI1 uses a different font width + // for alignment calculation and for drawing when + // charset 2 is active. This fixes some subtle glitches. + if (_vm->_game.id == GID_MONKEY && _curId == 2) + _width--; + _origWidth = _width; + + _origHeight = _height = getFontHeight(); + _offsX = _offsY = 0; + } else if (_vm->_useCJKMode && (chr >= 128) && !noSjis) { + setupShadowMode(); + _origWidth = _width = _vm->_2byteWidth; + _origHeight = _height = _vm->_2byteHeight; + _charPtr = _vm->get2byteCharPtr(chr); + _offsX = _offsY = 0; + if (_shadowMode) { + _width++; + _height++; + } + } else { + _sjisCurChar = 0; + CharsetRendererClassic::prepareDraw(chr); + } +} + +void CharsetRendererTownsClassic::setupShadowMode() { + _shadowMode = true; + _shadowColor = _vm->_townsCharsetColorMap[0]; + assert(_vm->_cjkFont); + + if (((_vm->_game.id == GID_MONKEY) && (_curId == 2 || _curId == 4 || _curId == 6)) || + ((_vm->_game.id == GID_MONKEY2) && (_curId != 1 && _curId != 5 && _curId != 9)) || + ((_vm->_game.id == GID_INDY4) && (_curId == 2 || _curId == 3 || _curId == 4))) { + _vm->_cjkFont->setDrawingMode(Graphics::FontSJIS::kOutlineMode); + } else { + _vm->_cjkFont->setDrawingMode(Graphics::FontSJIS::kDefaultMode); + } + + _vm->_cjkFont->toggleFlippedMode((_vm->_game.id == GID_MONKEY || _vm->_game.id == GID_MONKEY2) && _curId == 3); +} + +bool CharsetRendererTownsClassic::useFontRomCharacter(uint16 chr) { + if (!_vm->_useCJKMode) + return false; + + // Some SCUMM 5 games contain hard coded logic to determine whether to use + // the SCUMM fonts or the FM-Towns font rom to draw a character. For the other + // games we will simply check for a character greater 127. + if (chr < 128) { + if (((_vm->_game.id == GID_MONKEY2 && _curId != 0) || (_vm->_game.id == GID_INDY4 && _curId != 3)) && (chr > 31 && chr != 94 && chr != 95 && chr != 126 && chr != 127)) + return true; + return false; + } + return true; +} + +void CharsetRendererTownsClassic::processCharsetColors() { + for (int i = 0; i < (1 << _bytesPerPixel); i++) { + uint8 c = _vm->_charsetColorMap[i]; + + if (c > 16) { + uint8 t = (_vm->_currentPalette[c * 3] < 32) ? 4 : 12; + t |= ((_vm->_currentPalette[c * 3 + 1] < 32) ? 2 : 10); + t |= ((_vm->_currentPalette[c * 3 + 1] < 32) ? 1 : 9); + c = t; + } + + if (c == 0) + c = _vm->_townsOverrideShadowColor; + + c = ((c & 0x0f) << 4) | (c & 0x0f); + _vm->_townsCharsetColorMap[i] = c; + } +} +#endif +#endif + +void CharsetRendererNES::drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth) { for (int i = 0; i < 8; i++) { byte c0 = src[i]; byte c1 = src[i + 8]; diff --git a/engines/scumm/charset.h b/engines/scumm/charset.h index 4c657b475e0..13e40ffe62f 100644 --- a/engines/scumm/charset.h +++ b/engines/scumm/charset.h @@ -78,10 +78,6 @@ public: void addLinebreaks(int a, byte *str, int pos, int maxwidth); void translateColor(); -#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE - void processTownsCharsetColors(uint8 bytesPerPixel); -#endif - virtual void setCurID(int32 id) = 0; int getCurID() { return _curId; } @@ -101,31 +97,26 @@ protected: int _fontHeight; int _numChars; - enum ShadowMode { - kNoShadowMode, - kFMTOWNSShadowMode, - kNormalShadowMode - }; byte _shadowColor; - ShadowMode _shadowMode; - - void enableShadow(bool enable); - virtual void drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth, bool scale2x = false); - + bool _shadowMode; public: CharsetRendererCommon(ScummEngine *vm); void setCurID(int32 id); - int getFontHeight(); + virtual int getFontHeight(); }; class CharsetRendererClassic : public CharsetRendererCommon { protected: - void drawBitsN(const Graphics::Surface &s, byte *dst, const byte *src, byte bpp, int drawTop, int width, int height, bool scale2x = false); + virtual void drawBitsN(const Graphics::Surface &s, byte *dst, const byte *src, byte bpp, int drawTop, int width, int height); + void printCharIntern(bool is2byte, const byte *charPtr, int origWidth, int origHeight, int width, int height, VirtScreen *vs, bool ignoreCharsetMask); + virtual void prepareDraw(uint16 chr); - void printCharIntern(bool is2byte, const byte *charPtr, int origWidth, int origHeight, int width, int height, VirtScreen *vs, bool ignoreCharsetMask); + int _width, _height, _origWidth, _origHeight; + int _offsX, _offsY; + const byte *_charPtr; public: CharsetRendererClassic(ScummEngine *vm) : CharsetRendererCommon(vm) {} @@ -134,18 +125,34 @@ public: void drawChar(int chr, Graphics::Surface &s, int x, int y); int getCharWidth(uint16 chr); - - // Some SCUMM 5 games contain hard coded logic to determine whether to use - // the SCUMM fonts or the FM-Towns font rom to draw a character. For the other - // games we will simply check for a character greater 127. - bool useTownsFontRomCharacter(uint16 chr); }; +#ifdef USE_RGB_COLOR +#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE +class CharsetRendererTownsClassic : public CharsetRendererClassic { +public: + CharsetRendererTownsClassic(ScummEngine *vm); + + int getCharWidth(uint16 chr); + int getFontHeight(); + +private: + void drawBitsN(const Graphics::Surface &s, byte *dst, const byte *src, byte bpp, int drawTop, int width, int height); + void prepareDraw(uint16 chr); + void setupShadowMode(); + bool useFontRomCharacter(uint16 chr); + void processCharsetColors(); + + uint16 _sjisCurChar; +}; +#endif +#endif + class CharsetRendererNES : public CharsetRendererCommon { protected: byte *_trTable; - void drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth, bool scale2x = false); + void drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth); public: CharsetRendererNES(ScummEngine *vm) : CharsetRendererCommon(vm) {} @@ -160,6 +167,12 @@ public: class CharsetRendererV3 : public CharsetRendererCommon { protected: + virtual void enableShadow(bool enable); + virtual void drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth); + virtual int getDrawWidthIntern(uint16 chr); + virtual int getDrawHeightIntern(uint16 chr); + virtual void setDrawCharIntern(uint16 chr) {} + const byte *_widthTable; public: @@ -169,13 +182,34 @@ public: void drawChar(int chr, Graphics::Surface &s, int x, int y); void setCurID(int32 id); void setColor(byte color); + virtual int getCharWidth(uint16 chr); +}; + +class CharsetRendererTownsV3 : public CharsetRendererV3 { +public: + CharsetRendererTownsV3(ScummEngine *vm); + int getCharWidth(uint16 chr); + int getFontHeight(); + +private: + void enableShadow(bool enable); + void drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth); +#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE + int getDrawWidthIntern(uint16 chr); + int getDrawHeightIntern(uint16 chr); + void setDrawCharIntern(uint16 chr); +#endif + uint16 _sjisCurChar; }; #ifdef USE_RGB_COLOR class CharsetRendererPCE : public CharsetRendererV3 { protected: - void drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth, bool scale2x = false); + void drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth); + + int getDrawWidthIntern(uint16 chr); + int getDrawHeightIntern(uint16 chr); public: CharsetRendererPCE(ScummEngine *vm) : CharsetRendererV3(vm) {} diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index 7b136dc36d2..173fb01f654 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -284,7 +284,6 @@ ScummEngine::ScummEngine(OSystem *syst, const DetectorResult &dr) #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE _townsScreen = 0; _cjkFont = 0; - _cjkChar = 0; #endif _shadowPalette = NULL; _shadowPaletteSize = 0; @@ -1350,13 +1349,23 @@ void ScummEngine::setupCharsetRenderer() { _charset = new CharsetRendererPCE(this); else #endif + if (_game.platform == Common::kPlatformFMTowns) + _charset = new CharsetRendererTownsV3(this); + else _charset = new CharsetRendererV3(this); #ifdef ENABLE_SCUMM_7_8 } else if (_game.version == 8) { _charset = new CharsetRendererNut(this); #endif } else { - _charset = new CharsetRendererClassic(this); +#ifdef USE_RGB_COLOR +#ifndef DISABLE_TOWNS_DUAL_LAYER_MODE + if (_game.platform == Common::kPlatformFMTowns) + _charset = new CharsetRendererTownsClassic(this); + else +#endif +#endif + _charset = new CharsetRendererClassic(this); } } diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h index 01bde90e1c0..ed9f650b715 100644 --- a/engines/scumm/scumm.h +++ b/engines/scumm/scumm.h @@ -46,9 +46,10 @@ /* This disables the dual layer mode which is used in FM-Towns versions * of SCUMM games and which emulates the behavior of the original code. * The only purpose is code size reduction for certain backends. - * SCUMM 3 (FM-Towns) games will run in normal (DOS VGA) mode, which should - * work just fine in most situations. Some glitches might occur. SCUMM 5 games - * will not work without dual layer (and 16 bit color) support. + * SCUMM 3 (FM-Towns) games will run in English in normal (DOS VGA) mode, + * which should work just fine in most situations. Some glitches might + * occur. Japanese mode and SCUMM 5 FM-Towns games will not work without + * dual layer (and 16 bit color) support. */ #define DISABLE_TOWNS_DUAL_LAYER_MODE #endif @@ -345,6 +346,7 @@ class ResourceManager; class ScummEngine : public Engine { friend class ScummDebugger; friend class CharsetRenderer; + friend class CharsetRendererTownsClassic; friend class ResourceManager; public: @@ -1333,7 +1335,6 @@ public: byte _townsPaletteFlags; byte _townsCharsetColorMap[16]; Graphics::FontSJIS *_cjkFont; - uint16 _cjkChar; protected: void towns_drawStripToScreen(VirtScreen *vs, int dstX, int dstY, int srcX, int srcY, int w, int h); From e3dbae886dc138433f07e4fd9e85b14254471359 Mon Sep 17 00:00:00 2001 From: athrxx Date: Sat, 9 Jul 2011 20:06:18 +0200 Subject: [PATCH 046/731] SCUMM: Make use of graphics/sjis code for LOOM PCE sjis drawing Also move font rom loader to graphics/sjis and make the necessary changes there. --- engines/scumm/charset.cpp | 129 +++++++++------------------- engines/scumm/charset.h | 7 +- graphics/sjis.cpp | 174 +++++++++++++++++++++++++++++++++----- graphics/sjis.h | 57 ++++++++++++- 4 files changed, 252 insertions(+), 115 deletions(-) diff --git a/engines/scumm/charset.cpp b/engines/scumm/charset.cpp index 8adeaa076c0..bba29bbe84a 100644 --- a/engines/scumm/charset.cpp +++ b/engines/scumm/charset.cpp @@ -54,30 +54,25 @@ void ScummEngine::loadCJKFont() { error("FM-Towns Kanji font drawing requires dual graphics layer support which is disabled in this build"); #else // use FM-TOWNS font rom, since game files don't have kanji font resources - _cjkFont = Graphics::FontSJIS::createFont(Common::kPlatformFMTowns); + _cjkFont = Graphics::FontSJIS::createFont(_game.platform); if (!_cjkFont) error("SCUMM::Font: Could not open file 'FMT_FNT.ROM'"); _textSurfaceMultiplier = 2; _useCJKMode = true; #endif } else if (_game.id == GID_LOOM && _game.platform == Common::kPlatformPCEngine && _language == Common::JA_JPN) { - int numChar = 3418; - _2byteWidth = 12; - _2byteHeight = 12; // use PC-Engine System Card, since game files don't have kanji font resources - if (!fp.open("pce.cdbios")) { - error("SCUMM::Font: Could not open System Card pce.cdbios"); - } else { - _useCJKMode = true; - debug(2, "Loading PC-Engine System Card"); + _cjkFont = Graphics::FontSJIS::createFont(_game.platform); + if (!_cjkFont) + error("SCUMM::Font: Could not open file 'pce.cdbios'"); - // A 0x200 byte header can be present at the beginning of the syscard. Seek past it too. - fp.seek((fp.size() & 0x200) ? 0x30200 : 0x30000); + _cjkFont->setDrawingMode(Graphics::FontSJIS::kShadowMode); + _cjkFont->setCharSpacing(-1); + _cjkFont->setLineSpacing(-1); + _2byteWidth = _cjkFont->getMaxFontWidth(); + _2byteHeight = _cjkFont->getFontHeight(); + _useCJKMode = true; - _2byteFontPtr = new byte[_2byteWidth * _2byteHeight * numChar / 8]; - fp.read(_2byteFontPtr, _2byteWidth * _2byteHeight * numChar / 8); - fp.close(); - } } else if (_game.id == GID_MONKEY && _game.platform == Common::kPlatformSegaCD && _language == Common::JA_JPN) { int numChar = 1413; _2byteWidth = 16; @@ -161,63 +156,8 @@ void ScummEngine::loadCJKFont() { } } -static int SJIStoPCEChunk(int f, int s) { //converts sjis code to pce font offset - // rangeTbl maps SJIS char-codes to the PCE System Card font rom. - // Each pair {,} in the array represents a SJIS range. - const int rangeCnt = 45; - static const uint16 rangeTbl[rangeCnt][2] = { - // Symbols - {0x8140,0x817E},{0x8180,0x81AC}, - // 0-9 - {0x824F,0x8258}, - // Latin upper - {0x8260,0x8279}, - // Latin lower - {0x8281,0x829A}, - // Kana - {0x829F,0x82F1},{0x8340,0x837E},{0x8380,0x8396}, - // Greek upper - {0x839F,0x83B6}, - // Greek lower - {0x83BF,0x83D6}, - // Cyrillic upper - {0x8440,0x8460}, - // Cyrillic lower - {0x8470,0x847E},{0x8480,0x8491}, - // Kanji - {0x889F,0x88FC}, - {0x8940,0x897E},{0x8980,0x89FC}, - {0x8A40,0x8A7E},{0x8A80,0x8AFC}, - {0x8B40,0x8B7E},{0x8B80,0x8BFC}, - {0x8C40,0x8C7E},{0x8C80,0x8CFC}, - {0x8D40,0x8D7E},{0x8D80,0x8DFC}, - {0x8E40,0x8E7E},{0x8E80,0x8EFC}, - {0x8F40,0x8F7E},{0x8F80,0x8FFC}, - {0x9040,0x907E},{0x9080,0x90FC}, - {0x9140,0x917E},{0x9180,0x91FC}, - {0x9240,0x927E},{0x9280,0x92FC}, - {0x9340,0x937E},{0x9380,0x93FC}, - {0x9440,0x947E},{0x9480,0x94FC}, - {0x9540,0x957E},{0x9580,0x95FC}, - {0x9640,0x967E},{0x9680,0x96FC}, - {0x9740,0x977E},{0x9780,0x97FC}, - {0x9840,0x9872} - }; - - int ch = (f << 8) | (s & 0xFF); - int offset = 0; - for (int i = 0; i < rangeCnt; ++i) { - if (ch >= rangeTbl[i][0] && ch <= rangeTbl[i][1]) - return offset + ch - rangeTbl[i][0]; - offset += rangeTbl[i][1] - rangeTbl[i][0] + 1; - } - - debug(4, "Invalid Char: 0x%x", ch); - return 0; -} - byte *ScummEngine::get2byteCharPtr(int idx) { - if (_game.platform == Common::kPlatformFMTowns) + if (_game.platform == Common::kPlatformFMTowns || _game.platform == Common::kPlatformPCEngine) return 0; switch (_language) { @@ -225,10 +165,7 @@ byte *ScummEngine::get2byteCharPtr(int idx) { idx = ((idx % 256) - 0xb0) * 94 + (idx / 256) - 0xa1; break; case Common::JA_JPN: - if (_game.id == GID_LOOM && _game.platform == Common::kPlatformPCEngine) { - idx = SJIStoPCEChunk((idx % 256), (idx / 256)); - return _2byteFontPtr + (_2byteWidth * _2byteHeight / 8) * idx; - } else if (_game.id == GID_MONKEY && _game.platform == Common::kPlatformSegaCD && _language == Common::JA_JPN) { + if (_game.id == GID_MONKEY && _game.platform == Common::kPlatformSegaCD && _language == Common::JA_JPN) { // init pointer to charset resource if (_2byteFontPtr[0] == 0xFF) { int charsetId = 5; @@ -672,13 +609,13 @@ void CharsetRendererV3::printChar(int chr, bool ignoreCharsetMask) { height = getDrawHeightIntern(chr); setDrawCharIntern(chr); + origWidth = width; + origHeight = height; + // Clip at the right side (to avoid drawing "outside" the screen bounds). if (_left + origWidth > _right + 1) return; - origWidth = width; - origHeight = height; - if (_shadowMode) { width++; height++; @@ -1139,15 +1076,25 @@ void CharsetRendererTownsV3::setDrawCharIntern(uint16 chr) { #ifdef USE_RGB_COLOR void CharsetRendererPCE::drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth) { + if (_sjisCurChar) { + assert(_vm->_cjkFont); + uint16 col1 = _color; + uint16 col2 = _shadowColor; + + if (s.format.bytesPerPixel == 2) { + col1 = _vm->_16BitPalette[col1]; + col2 = _vm->_16BitPalette[col2]; + } + + _vm->_cjkFont->drawChar(dst, _sjisCurChar, s.pitch, s.format.bytesPerPixel, col1, col2, -1, -1); + return; + } + int y, x; - int bitCount = 0; byte bits = 0; - const bool resetLineBitCount = (_vm->_language != Common::JA_JPN || width != 12); - for (y = 0; y < height && y + drawTop < s.h; y++) { - if (resetLineBitCount) - bitCount = 0; + int bitCount = 0; for (x = 0; x < width; x++) { if ((bitCount % 8) == 0) bits = *src++; @@ -1171,16 +1118,24 @@ void CharsetRendererPCE::drawBits1(const Graphics::Surface &s, byte *dst, const } int CharsetRendererPCE::getDrawWidthIntern(uint16 chr) { - if (_vm->_useCJKMode && chr > 127) - return _vm->_2byteWidth; + if (_vm->_useCJKMode && chr > 127) { + assert(_vm->_cjkFont); + return _vm->_cjkFont->getCharWidth(chr); + } return CharsetRendererV3::getDrawWidthIntern(chr); } int CharsetRendererPCE::getDrawHeightIntern(uint16 chr) { - if (_vm->_useCJKMode && chr > 127) - return _vm->_2byteHeight; + if (_vm->_useCJKMode && chr > 127) { + assert(_vm->_cjkFont); + return _vm->_cjkFont->getFontHeight(); + } return CharsetRendererV3::getDrawHeightIntern(chr); } + +void CharsetRendererPCE::setDrawCharIntern(uint16 chr) { + _sjisCurChar = (_vm->_useCJKMode && chr > 127) ? chr : 0; +} #endif #ifdef ENABLE_SCUMM_7_8 diff --git a/engines/scumm/charset.h b/engines/scumm/charset.h index 13e40ffe62f..4a5799688c7 100644 --- a/engines/scumm/charset.h +++ b/engines/scumm/charset.h @@ -205,14 +205,17 @@ private: #ifdef USE_RGB_COLOR class CharsetRendererPCE : public CharsetRendererV3 { -protected: +private: void drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth); int getDrawWidthIntern(uint16 chr); int getDrawHeightIntern(uint16 chr); + void setDrawCharIntern(uint16 chr); + + uint16 _sjisCurChar; public: - CharsetRendererPCE(ScummEngine *vm) : CharsetRendererV3(vm) {} + CharsetRendererPCE(ScummEngine *vm) : CharsetRendererV3(vm), _sjisCurChar(0) {} void setColor(byte color); }; diff --git a/graphics/sjis.cpp b/graphics/sjis.cpp index 10c780b1566..03c3cede79e 100644 --- a/graphics/sjis.cpp +++ b/graphics/sjis.cpp @@ -40,10 +40,27 @@ FontSJIS *FontSJIS::createFont(const Common::Platform platform) { // Try the font ROM of the specified platform if (platform == Common::kPlatformFMTowns) { ret = new FontTowns(); - if (ret && ret->loadData()) - return ret; + if (ret) { + if (ret->loadData()) + return ret; + } delete ret; - } + } else if (platform == Common::kPlatformPCEngine) { + ret = new FontPCEngine(); + if (ret) { + if (ret->loadData()) + return ret; + } + delete ret; + } // TODO: PC98 font rom support + /* else if (platform == Common::kPlatformPC98) { + ret = new FontPC98(); + if (ret) { + if (ret->loadData()) + return ret; + } + delete ret; + }*/ // Try ScummVM's font. ret = new FontSjisSVM(platform); @@ -59,65 +76,83 @@ void FontSJIS::drawChar(Graphics::Surface &dst, uint16 ch, int x, int y, uint32 } FontSJISBase::FontSJISBase() - : _drawMode(kDefaultMode), _flippedMode(false), _fontWidth(16), _fontHeight(16) { + : _drawMode(kDefaultMode), _flippedMode(false), _fontWidth(16), _fontHeight(16), _charSpacing(0), _lineSpacing(0), _bitPosNewLineMask(0) { } void FontSJISBase::setDrawingMode(DrawingMode mode) { - _drawMode = mode; + if (hasFeature(1 << mode)) + _drawMode = mode; + else + warning("Unsupported drawing mode selected"); } void FontSJISBase::toggleFlippedMode(bool enable) { - _flippedMode = enable; + if (hasFeature(kFeatFlipped)) + _flippedMode = enable; + else + warning("Flipped mode unsupported by this font"); +} + +void FontSJISBase::setCharSpacing(int spacing) { + _charSpacing = spacing; +} + +void FontSJISBase::setLineSpacing(int spacing) { + _lineSpacing = spacing; } uint FontSJISBase::getFontHeight() const { switch (_drawMode) { case kOutlineMode: - return _fontHeight + 2; + return _fontHeight + _lineSpacing + 2; case kDefaultMode: - return _fontHeight; + return _fontHeight + _lineSpacing; default: - return _fontHeight + 1; + return _fontHeight + _lineSpacing + 1; } } uint FontSJISBase::getMaxFontWidth() const { switch (_drawMode) { case kOutlineMode: - return _fontWidth + 2; + return _fontWidth + _charSpacing + 2; case kDefaultMode: - return _fontWidth; + return _fontWidth + _charSpacing; default: - return _fontWidth + 1; + return _fontWidth + _charSpacing + 1; } } uint FontSJISBase::getCharWidth(uint16 ch) const { if (isASCII(ch)) - return (_drawMode == kOutlineMode) ? 10 : (_drawMode == kDefaultMode ? 8 : 9); + return ((_drawMode == kOutlineMode) ? 10 : (_drawMode == kDefaultMode ? 8 : 9)) + _charSpacing; else return getMaxFontWidth(); } template void FontSJISBase::blitCharacter(const uint8 *glyph, const int w, const int h, uint8 *dst, int pitch, Color c) const { + uint8 bitPos = 0; + uint8 mask = 0; + for (int y = 0; y < h; ++y) { Color *d = (Color *)dst; dst += pitch; - uint8 mask = 0; + bitPos &= _bitPosNewLineMask; for (int x = 0; x < w; ++x) { - if (!(x % 8)) + if (!(bitPos % 8)) mask = *glyph++; if (mask & 0x80) *d = c; ++d; + ++bitPos; mask <<= 1; } } @@ -176,9 +211,6 @@ const uint8 *FontSJISBase::flipCharacter(const uint8 *glyph, const int w) const 0x0F, 0x8F, 0x4F, 0xC7, 0x2F, 0xAF, 0x6F, 0xEF, 0x1F, 0x97, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF }; - // TODO: This code looks like it will only work with 16 pixel wide - // characters we should really take care that we only call it on these - // or we fix this to support a generic width. for (int i = 0; i < w; i++) { _tempGlyph[i] = flipData[glyph[(w * 2 - 1) - i]]; _tempGlyph[(w * 2 - 1) - i] = flipData[glyph[i]]; @@ -225,9 +257,6 @@ void FontSJISBase::drawChar(void *dst, uint16 ch, int pitch, int bpp, uint32 c1, } #ifndef DISABLE_FLIPPED_MODE - // TODO: This code inside flopCharater looks like it will only work with - // 16 pixel wide characters we should really take care that we only call - // it on these or we fix it to support a generic width. if (_flippedMode) glyphSource = flipCharacter(glyphSource, width); #endif @@ -303,7 +332,7 @@ const uint8 *FontTowns::getCharData(uint16 ch) const { uint8 f = ch & 0xFF; uint8 s = ch >> 8; - // copied from scumm\charset.cpp + // moved from scumm\charset.cpp enum { KANA = 0, KANJI = 1, @@ -392,6 +421,98 @@ const uint8 *FontTowns::getCharData(uint16 ch) const { } } +bool FontTowns::hasFeature(int feat) const { + static const int features = kFeatDefault | kFeatOutline | kFeatShadow | kFeatFMTownsShadow | kFeatFlipped; + return (features & feat) ? true : false; +} + +// PC-Engine ROM font + +bool FontPCEngine::loadData() { + Common::SeekableReadStream *data = SearchMan.createReadStreamForMember("pce.cdbios"); + if (!data) + return false; + + data->seek((data->size() & 0x200) ? 0x30200 : 0x30000); + data->read(_fontData12x12, kFont12x12Chars * 18); + + _fontWidth = _fontHeight = 12; + _bitPosNewLineMask = _fontWidth & 7; + + bool retValue = !data->err(); + delete data; + return retValue; +} + +const uint8 *FontPCEngine::getCharData(uint16 ch) const { + // Converts sjis code to pce font offset + // (moved from scumm\charset.cpp). + // rangeTbl maps SJIS char-codes to the PCE System Card font rom. + // Each pair {,} in the array represents a SJIS range. + const int rangeCnt = 45; + static const uint16 rangeTbl[rangeCnt][2] = { + // Symbols + {0x8140,0x817E},{0x8180,0x81AC}, + // 0-9 + {0x824F,0x8258}, + // Latin upper + {0x8260,0x8279}, + // Latin lower + {0x8281,0x829A}, + // Kana + {0x829F,0x82F1},{0x8340,0x837E},{0x8380,0x8396}, + // Greek upper + {0x839F,0x83B6}, + // Greek lower + {0x83BF,0x83D6}, + // Cyrillic upper + {0x8440,0x8460}, + // Cyrillic lower + {0x8470,0x847E},{0x8480,0x8491}, + // Kanji + {0x889F,0x88FC}, + {0x8940,0x897E},{0x8980,0x89FC}, + {0x8A40,0x8A7E},{0x8A80,0x8AFC}, + {0x8B40,0x8B7E},{0x8B80,0x8BFC}, + {0x8C40,0x8C7E},{0x8C80,0x8CFC}, + {0x8D40,0x8D7E},{0x8D80,0x8DFC}, + {0x8E40,0x8E7E},{0x8E80,0x8EFC}, + {0x8F40,0x8F7E},{0x8F80,0x8FFC}, + {0x9040,0x907E},{0x9080,0x90FC}, + {0x9140,0x917E},{0x9180,0x91FC}, + {0x9240,0x927E},{0x9280,0x92FC}, + {0x9340,0x937E},{0x9380,0x93FC}, + {0x9440,0x947E},{0x9480,0x94FC}, + {0x9540,0x957E},{0x9580,0x95FC}, + {0x9640,0x967E},{0x9680,0x96FC}, + {0x9740,0x977E},{0x9780,0x97FC}, + {0x9840,0x9872} + }; + + ch = (ch << 8) | (ch >> 8); + int offset = 0; + for (int i = 0; i < rangeCnt; ++i) { + if (ch >= rangeTbl[i][0] && ch <= rangeTbl[i][1]) { + return _fontData12x12 + 18 * (offset + ch - rangeTbl[i][0]); + break; + } + offset += rangeTbl[i][1] - rangeTbl[i][0] + 1; + } + + debug(4, "Invalid Char: 0x%x", ch); + return 0; +} + +bool FontPCEngine::hasFeature(int feat) const { + // Outline mode not supported due to use of _bitPosNewLineMask. This could be implemented, + // but is not needed for any particular target at the moment. + // Flipped mode is also not supported since the hard coded table (taken from SCUMM 5 FM-TOWNS) + // is set up for font sizes of 8/16. This mode is also not required at the moment, since + // there aren't any SCUMM 5 PC-Engine games. + static const int features = kFeatDefault | kFeatShadow | kFeatFMTownsShadow; + return (features & feat) ? true : false; +} + // ScummVM SJIS font FontSjisSVM::FontSjisSVM(const Common::Platform platform) @@ -464,6 +585,15 @@ const uint8 *FontSjisSVM::getCharData(uint16 c) const { return getCharDataDefault(c); } +bool FontSjisSVM::hasFeature(int feat) const { + // Flipped mode is not supported since the hard coded table (taken from SCUMM 5 FM-TOWNS) + // is set up for font sizes of 8/16. This mode is also not required at the moment, since + // there aren't any SCUMM 5 PC-Engine games. + static const int features16 = kFeatDefault | kFeatOutline | kFeatShadow | kFeatFMTownsShadow | kFeatFlipped; + static const int features12 = kFeatDefault | kFeatOutline | kFeatShadow | kFeatFMTownsShadow; + return (((_fontWidth == 12) ? features12 : features16) & feat) ? true : false; +} + const uint8 *FontSjisSVM::getCharDataPCE(uint16 c) const { if (isASCII(c)) return 0; diff --git a/graphics/sjis.h b/graphics/sjis.h index 62e68013da8..de2d4b325c8 100644 --- a/graphics/sjis.h +++ b/graphics/sjis.h @@ -75,7 +75,7 @@ public: virtual bool loadData() = 0; /** - * Enable drawing with outline or shadow. + * Enable drawing with outline or shadow if supported by the Font. * * After changing outline state, getFontHeight and getMaxFontWidth / getCharWidth might return * different values! @@ -90,10 +90,16 @@ public: virtual void setDrawingMode(DrawingMode mode) {} /** - * Enable flipped character drawing (e.g. in the MI1 circus scene after Guybrush gets shot out of the cannon). + * Enable flipped character drawing if supported by the Font (e.g. in the MI1 circus scene after Guybrush gets shot out of the cannon). */ virtual void toggleFlippedMode(bool enable) {} + /** + * Set spacing between characters and lines. This affects font height / char width + */ + virtual void setCharSpacing(int spacing) {} + virtual void setLineSpacing(int spacing) {} + /** * Returns the height of the font. */ @@ -140,6 +146,10 @@ public: virtual void toggleFlippedMode(bool enable); + virtual void setCharSpacing(int spacing); + + virtual void setLineSpacing(int spacing); + virtual uint getFontHeight() const; virtual uint getMaxFontWidth() const; @@ -162,16 +172,28 @@ protected: DrawingMode _drawMode; bool _flippedMode; int _fontWidth, _fontHeight; - + int _charSpacing, _lineSpacing; + uint8 _bitPosNewLineMask; + bool isASCII(uint16 ch) const; virtual const uint8 *getCharData(uint16 c) const = 0; + + enum DrawingFeature { + kFeatDefault = 1 << 0, + kFeatOutline = 1 << 1, + kFeatShadow = 1 << 2, + kFeatFMTownsShadow = 1 << 3, + kFeatFlipped = 1 << 4 + }; + + virtual bool hasFeature(int feat) const = 0; }; /** * FM-TOWNS ROM based SJIS compatible font. * - * This is used in KYRA and SCI. + * This is used in KYRA, SCUMM and SCI. */ class FontTowns : public FontSJISBase { public: @@ -189,6 +211,31 @@ private: uint8 _fontData8x16[kFont8x16Chars * 32]; virtual const uint8 *getCharData(uint16 c) const; + + bool hasFeature(int feat) const; +}; + +/** + * PC-Engine System Card based SJIS compatible font. + * + * This is used in LOOM. + */ +class FontPCEngine : public FontSJISBase { +public: + /** + * Loads the ROM data from "pce.cdbios". + */ + bool loadData(); +private: + enum { + kFont12x12Chars = 3418 + }; + + uint8 _fontData12x12[kFont12x12Chars * 18]; + + virtual const uint8 *getCharData(uint16 c) const; + + bool hasFeature(int feat) const; }; /** @@ -215,6 +262,8 @@ private: virtual const uint8 *getCharData(uint16 c) const; + bool hasFeature(int feat) const; + const uint8 *getCharDataPCE(uint16 c) const; const uint8 *getCharDataDefault(uint16 c) const; From f24bac2d0f79bc49041cfe035a681338850b2e9d Mon Sep 17 00:00:00 2001 From: athrxx Date: Sat, 9 Jul 2011 23:57:25 +0200 Subject: [PATCH 047/731] SCUMM: fix DS compilation --- engines/scumm/charset.cpp | 13 +++++++++++-- engines/scumm/charset.h | 1 + engines/scumm/scumm.cpp | 4 ++++ engines/scumm/scumm.h | 8 ++++++-- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/engines/scumm/charset.cpp b/engines/scumm/charset.cpp index bba29bbe84a..33010af12a9 100644 --- a/engines/scumm/charset.cpp +++ b/engines/scumm/charset.cpp @@ -49,7 +49,7 @@ void ScummEngine::loadCJKFont() { _newLineCharacter = 0; if (_game.version <= 5 && _game.platform == Common::kPlatformFMTowns && _language == Common::JA_JPN) { // FM-TOWNS v3 / v5 Kanji -#ifdef DISABLE_TOWNS_DUAL_LAYER_MODE +#if defined(DISABLE_TOWNS_DUAL_LAYER_MODE) || !defined(USE_RGB_COLOR) GUIErrorMessage("FM-Towns Kanji font drawing requires dual graphics layer support which is disabled in this build"); error("FM-Towns Kanji font drawing requires dual graphics layer support which is disabled in this build"); #else @@ -61,6 +61,7 @@ void ScummEngine::loadCJKFont() { _useCJKMode = true; #endif } else if (_game.id == GID_LOOM && _game.platform == Common::kPlatformPCEngine && _language == Common::JA_JPN) { +#ifdef USE_RGB_COLOR // use PC-Engine System Card, since game files don't have kanji font resources _cjkFont = Graphics::FontSJIS::createFont(_game.platform); if (!_cjkFont) @@ -72,7 +73,7 @@ void ScummEngine::loadCJKFont() { _2byteWidth = _cjkFont->getMaxFontWidth(); _2byteHeight = _cjkFont->getFontHeight(); _useCJKMode = true; - +#endif } else if (_game.id == GID_MONKEY && _game.platform == Common::kPlatformSegaCD && _language == Common::JA_JPN) { int numChar = 1413; _2byteWidth = 16; @@ -963,18 +964,22 @@ void CharsetRendererTownsV3::enableShadow(bool enable) { #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE _shadowColor = 0x88; +#ifdef USE_RGB_COLOR if (_vm->_cjkFont) _vm->_cjkFont->setDrawingMode(enable ? Graphics::FontSJIS::kFMTownsShadowMode : Graphics::FontSJIS::kDefaultMode); #endif +#endif } void CharsetRendererTownsV3::drawBits1(const Graphics::Surface &s, byte *dst, const byte *src, int drawTop, int width, int height, uint8 bitDepth) { #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE +#ifdef USE_RGB_COLOR if (_sjisCurChar) { assert(_vm->_cjkFont); _vm->_cjkFont->drawChar(_vm->_textSurface, _sjisCurChar, _left * _vm->_textSurfaceMultiplier, _top * _vm->_textSurfaceMultiplier, _color, _shadowColor); return; } +#endif dst = (byte *)_vm->_textSurface.getBasePtr(_left * _vm->_textSurfaceMultiplier, _top * _vm->_textSurfaceMultiplier); int sfPitch = _vm->_textSurface.pitch; @@ -1054,18 +1059,22 @@ void CharsetRendererTownsV3::drawBits1(const Graphics::Surface &s, byte *dst, co } #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE int CharsetRendererTownsV3::getDrawWidthIntern(uint16 chr) { +#ifdef USE_RGB_COLOR if (_vm->_useCJKMode && chr > 127) { assert(_vm->_cjkFont); return _vm->_cjkFont->getCharWidth(chr); } +#endif return CharsetRendererV3::getDrawWidthIntern(chr); } int CharsetRendererTownsV3::getDrawHeightIntern(uint16 chr) { +#ifdef USE_RGB_COLOR if (_vm->_useCJKMode && chr > 127) { assert(_vm->_cjkFont); return _vm->_cjkFont->getFontHeight(); } +#endif return CharsetRendererV3::getDrawHeightIntern(chr); } diff --git a/engines/scumm/charset.h b/engines/scumm/charset.h index 4a5799688c7..b80db73a580 100644 --- a/engines/scumm/charset.h +++ b/engines/scumm/charset.h @@ -25,6 +25,7 @@ #include "common/scummsys.h" #include "common/rect.h" #include "graphics/sjis.h" +#include "scumm/scumm.h" #include "scumm/gfx.h" #include "scumm/saveload.h" diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index 173fb01f654..5233156fc75 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -283,7 +283,9 @@ ScummEngine::ScummEngine(OSystem *syst, const DetectorResult &dr) _16BitPalette = NULL; #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE _townsScreen = 0; +#ifdef USE_RGB_COLOR _cjkFont = 0; +#endif #endif _shadowPalette = NULL; _shadowPaletteSize = 0; @@ -632,7 +634,9 @@ ScummEngine::~ScummEngine() { #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE delete _townsScreen; +#ifdef USE_RGB_COLOR delete _cjkFont; +#endif #endif delete _debugger; diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h index ed9f650b715..e503af750da 100644 --- a/engines/scumm/scumm.h +++ b/engines/scumm/scumm.h @@ -1328,13 +1328,17 @@ public: // Exists both in V7 and in V72HE: byte VAR_NUM_GLOBAL_OBJS; +#ifdef USE_RGB_COLOR + // FM-Towns / PC-Engine specific + Graphics::FontSJIS *_cjkFont; +#endif + // FM-Towns specific #ifndef DISABLE_TOWNS_DUAL_LAYER_MODE public: bool towns_isRectInStringBox(int x1, int y1, int x2, int y2); byte _townsPaletteFlags; - byte _townsCharsetColorMap[16]; - Graphics::FontSJIS *_cjkFont; + byte _townsCharsetColorMap[16]; protected: void towns_drawStripToScreen(VirtScreen *vs, int dstX, int dstY, int srcX, int srcY, int w, int h); From c06c05a7696a4145afc74ffe679c9048bfc02246 Mon Sep 17 00:00:00 2001 From: athrxx Date: Sun, 10 Jul 2011 00:44:18 +0200 Subject: [PATCH 048/731] GRAPHICS: remove char/line spacing handling from sjis code (as discussed with LordHoto this should rather be handled in the engine) --- engines/scumm/charset.cpp | 17 +++++------------ graphics/sjis.cpp | 24 ++++++++---------------- graphics/sjis.h | 5 ----- 3 files changed, 13 insertions(+), 33 deletions(-) diff --git a/engines/scumm/charset.cpp b/engines/scumm/charset.cpp index 33010af12a9..b38bd3b674c 100644 --- a/engines/scumm/charset.cpp +++ b/engines/scumm/charset.cpp @@ -68,10 +68,7 @@ void ScummEngine::loadCJKFont() { error("SCUMM::Font: Could not open file 'pce.cdbios'"); _cjkFont->setDrawingMode(Graphics::FontSJIS::kShadowMode); - _cjkFont->setCharSpacing(-1); - _cjkFont->setLineSpacing(-1); - _2byteWidth = _cjkFont->getMaxFontWidth(); - _2byteHeight = _cjkFont->getFontHeight(); + _2byteWidth = _2byteHeight = 12; _useCJKMode = true; #endif } else if (_game.id == GID_MONKEY && _game.platform == Common::kPlatformSegaCD && _language == Common::JA_JPN) { @@ -1127,18 +1124,14 @@ void CharsetRendererPCE::drawBits1(const Graphics::Surface &s, byte *dst, const } int CharsetRendererPCE::getDrawWidthIntern(uint16 chr) { - if (_vm->_useCJKMode && chr > 127) { - assert(_vm->_cjkFont); - return _vm->_cjkFont->getCharWidth(chr); - } + if (_vm->_useCJKMode && chr > 127) + return _vm->_2byteWidth; return CharsetRendererV3::getDrawWidthIntern(chr); } int CharsetRendererPCE::getDrawHeightIntern(uint16 chr) { - if (_vm->_useCJKMode && chr > 127) { - assert(_vm->_cjkFont); - return _vm->_cjkFont->getFontHeight(); - } + if (_vm->_useCJKMode && chr > 127) + return _vm->_2byteHeight; return CharsetRendererV3::getDrawHeightIntern(chr); } diff --git a/graphics/sjis.cpp b/graphics/sjis.cpp index 03c3cede79e..be078a4da93 100644 --- a/graphics/sjis.cpp +++ b/graphics/sjis.cpp @@ -76,7 +76,7 @@ void FontSJIS::drawChar(Graphics::Surface &dst, uint16 ch, int x, int y, uint32 } FontSJISBase::FontSJISBase() - : _drawMode(kDefaultMode), _flippedMode(false), _fontWidth(16), _fontHeight(16), _charSpacing(0), _lineSpacing(0), _bitPosNewLineMask(0) { + : _drawMode(kDefaultMode), _flippedMode(false), _fontWidth(16), _fontHeight(16), _bitPosNewLineMask(0) { } void FontSJISBase::setDrawingMode(DrawingMode mode) { @@ -93,43 +93,35 @@ void FontSJISBase::toggleFlippedMode(bool enable) { warning("Flipped mode unsupported by this font"); } -void FontSJISBase::setCharSpacing(int spacing) { - _charSpacing = spacing; -} - -void FontSJISBase::setLineSpacing(int spacing) { - _lineSpacing = spacing; -} - uint FontSJISBase::getFontHeight() const { switch (_drawMode) { case kOutlineMode: - return _fontHeight + _lineSpacing + 2; + return _fontHeight + 2; case kDefaultMode: - return _fontHeight + _lineSpacing; + return _fontHeight; default: - return _fontHeight + _lineSpacing + 1; + return _fontHeight + 1; } } uint FontSJISBase::getMaxFontWidth() const { switch (_drawMode) { case kOutlineMode: - return _fontWidth + _charSpacing + 2; + return _fontWidth + 2; case kDefaultMode: - return _fontWidth + _charSpacing; + return _fontWidth; default: - return _fontWidth + _charSpacing + 1; + return _fontWidth + 1; } } uint FontSJISBase::getCharWidth(uint16 ch) const { if (isASCII(ch)) - return ((_drawMode == kOutlineMode) ? 10 : (_drawMode == kDefaultMode ? 8 : 9)) + _charSpacing; + return ((_drawMode == kOutlineMode) ? 10 : (_drawMode == kDefaultMode ? 8 : 9)); else return getMaxFontWidth(); } diff --git a/graphics/sjis.h b/graphics/sjis.h index de2d4b325c8..4b54da53b47 100644 --- a/graphics/sjis.h +++ b/graphics/sjis.h @@ -146,10 +146,6 @@ public: virtual void toggleFlippedMode(bool enable); - virtual void setCharSpacing(int spacing); - - virtual void setLineSpacing(int spacing); - virtual uint getFontHeight() const; virtual uint getMaxFontWidth() const; @@ -172,7 +168,6 @@ protected: DrawingMode _drawMode; bool _flippedMode; int _fontWidth, _fontHeight; - int _charSpacing, _lineSpacing; uint8 _bitPosNewLineMask; bool isASCII(uint16 ch) const; From 6355ccc677d5b7f167d5ea9a03f1cf08248e91e9 Mon Sep 17 00:00:00 2001 From: D G Turner Date: Sun, 10 Jul 2011 03:51:06 +0100 Subject: [PATCH 049/731] SCI: Added Missing Detection Entry for "Slater And Charlie Go Camping" This should fix bug #3359182 ("Game not found by 1.3.0") --- engines/sci/detection_tables.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h index 6641f243e6d..3b18a1f68dd 100644 --- a/engines/sci/detection_tables.h +++ b/engines/sci/detection_tables.h @@ -3150,6 +3150,15 @@ static const struct ADGameDescription SciGameDescriptions[] = { AD_LISTEND}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH }, + + // Slater & Charlie Go Camping - English DOS/Windows (Sierra Originals) + {"slater", "", { + {"resource.000", 0, "d7b4cc8e2c0b3a4768f8dfb5de27f206", 2256126}, + {"resource.map", 0, "21f85414124dc23e54544a5536dc35cd", 4044}, + {"resource.msg", 0, "c44f51fb955eae266fecf360ebcd5ad2", 1132}, + AD_LISTEND}, + Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH }, + // Space Quest 1 VGA Remake - English Amiga (from www.back2roots.org) // SCI interpreter version 1.000.510 (just a guess) {"sq1sci", "SCI", { From bf4091931d8069c757d98003f9363bbe85358606 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 10 Jul 2011 04:54:07 +0200 Subject: [PATCH 050/731] SCUMM: Implement effect envelope for PC Speaker output in SCUMM v5. --- engines/scumm/imuse/pcspk.cpp | 423 ++++++++++++++++++++++++++++++++-- engines/scumm/imuse/pcspk.h | 39 ++-- 2 files changed, 433 insertions(+), 29 deletions(-) diff --git a/engines/scumm/imuse/pcspk.cpp b/engines/scumm/imuse/pcspk.cpp index 8c6e2a80c50..ceecc3515ee 100644 --- a/engines/scumm/imuse/pcspk.cpp +++ b/engines/scumm/imuse/pcspk.cpp @@ -23,6 +23,7 @@ #include "common/debug.h" #include "common/textconsole.h" +#include "common/util.h" namespace Scumm { @@ -43,6 +44,8 @@ int PcSpkDriver::open() { for (uint i = 0; i < 6; ++i) _channels[i].init(this, i); _activeChannel = 0; + _effectTimer = 0; + _randBase = 1; _mixer->playStream(Audio::Mixer::kPlainSoundType, &_mixerSoundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true); return 0; @@ -58,7 +61,6 @@ void PcSpkDriver::close() { void PcSpkDriver::send(uint32 d) { assert((d & 0x0F) < 6); - debug("send"); _channels[(d & 0x0F)].send(d); } @@ -93,7 +95,19 @@ void PcSpkDriver::onTimer() { if (out.length == 0 || --out.length != 0) { if (out.unkB && out.unkC) { - // TODO + out.unkA += out.unkB; + if (out.instrument) + out.unkE = (out.instrument[out.unkA] * out.unkC) >> 4; + } + + ++_effectTimer; + if (_effectTimer > 3) { + _effectTimer = 0; + + if (out.effectEnvelopeA.state) + updateEffectGenerator(_channels[i], out.effectEnvelopeA, out.effectDefA); + if (out.effectEnvelopeB.state) + updateEffectGenerator(_channels[i], out.effectEnvelopeB, out.effectDefB); } } else { out.active = 0; @@ -103,7 +117,7 @@ void PcSpkDriver::onTimer() { } if (_activeChannel->_tl) { - //output((_activeChannel->_out.note << 7) + _activeChannel->_pitchBend + _activeChannel->_out.unk60 + _activeChannel->_out.unkE); + output((_activeChannel->_out.note << 7) + _activeChannel->_pitchBend + _activeChannel->_out.unk60 + _activeChannel->_out.unkE); } else { _pcSpk.stop(); } @@ -222,7 +236,12 @@ void PcSpkDriver::MidiChannel_PcSpk::noteOn(byte note, byte velocity) { _out.note = note; _out.sustainNoteOff = 0; _out.length = _instrument[0]; - //_out.instrument = _owner->_outInstrumentData + note; + + if (_instrument[4] * 256 < ARRAYSIZE(PcSpkDriver::_outInstrumentData)) + _out.instrument = _owner->_outInstrumentData + _instrument[4] * 256; + else + _out.instrument = 0; + _out.unkA = 0; _out.unkB = _instrument[1]; _out.unkC = _instrument[2]; @@ -232,13 +251,15 @@ void PcSpkDriver::MidiChannel_PcSpk::noteOn(byte note, byte velocity) { _owner->updateNote(); - if ((_instrument[5] & 0x80) != 0) { - warning("Effect envelope 1 used"); - } + _out.unkC += PcSpkDriver::getEffectModifier(_instrument[3] + ((velocity & 0xFE) << 4)); + if (_out.unkC > 63) + _out.unkC = 63; - if ((_instrument[14] & 0x80) != 0) { - warning("Effect envelope 2 used"); - } + if ((_instrument[5] & 0x80) != 0) + _owner->setupEffects(*this, _out.effectEnvelopeA, _out.effectDefA, _instrument[5], _instrument + 6); + + if ((_instrument[14] & 0x80) != 0) + _owner->setupEffects(*this, _out.effectEnvelopeB, _out.effectDefB, _instrument[14], _instrument + 15); } void PcSpkDriver::MidiChannel_PcSpk::programChange(byte program) { @@ -253,9 +274,9 @@ void PcSpkDriver::MidiChannel_PcSpk::pitchBend(int16 bend) { void PcSpkDriver::MidiChannel_PcSpk::controlChange(byte control, byte value) { switch (control) { case 1: - if (_out.effectEnvelopeA.state && _out.effectDefA.enabled) + if (_out.effectEnvelopeA.state && _out.effectDefA.useModWheel) _out.effectEnvelopeA.modWheelState = (value >> 2); - if (_out.effectEnvelopeB.state && _out.effectDefB.enabled) + if (_out.effectEnvelopeB.state && _out.effectDefB.useModWheel) _out.effectEnvelopeB.modWheelState = (value >> 2); break; @@ -295,9 +316,370 @@ void PcSpkDriver::MidiChannel_PcSpk::sysEx_customInstrument(uint32 type, const b memcpy(_instrument, instr, sizeof(_instrument)); } -/*const byte PcSpkDriver::_outInstrumentData[] = { - 0 -};*/ +uint8 PcSpkDriver::getEffectModifier(uint16 level) { + uint8 base = level / 32; + uint8 index = level % 32; + + if (index == 0) + return 0; + + return (base * (index + 1)) >> 5; +} + +int16 PcSpkDriver::getEffectModLevel(int16 level, int8 mod) { + if (!mod) { + return 0; + } else if (mod == 31) { + return level; + } else if (level < -63 || level > 63) { + return (mod * (level + 1)) >> 6; + } else if (mod < 0) { + if (level < 0) + return getEffectModifier(((-level) << 5) - mod); + else + return -getEffectModifier((level << 5) - mod); + } else { + if (level < 0) + return -getEffectModifier(((-level) << 5) + mod); + else + return getEffectModifier(((-level) << 5) + mod); + } +} + +int16 PcSpkDriver::getRandMultipy(int16 input) { + if (_randBase & 1) + _randBase = (_randBase >> 1) ^ 0xB8; + else + _randBase >>= 1; + + return (_randBase * input) >> 8; +} + +void PcSpkDriver::setupEffects(MidiChannel_PcSpk &chan, EffectEnvelope &env, EffectDefinition &def, byte flags, const byte *data) { + def.phase = 0; + def.useModWheel = flags & 0x40; + env.loop = flags & 0x20; + def.type = flags & 0x1F; + + env.modWheelSensitivity = 31; + if (def.useModWheel) + env.modWheelState = chan._modWheel >> 2; + else + env.modWheelState = 31; + + switch (def.type) { + case 0: + env.maxLevel = 767; + env.startLevel = 383; + break; + + case 1: + env.maxLevel = 31; + env.startLevel = 15; + break; + + case 2: + env.maxLevel = 63; + env.startLevel = chan._out.unkB; + break; + + case 3: + env.maxLevel = 63; + env.startLevel = chan._out.unkC; + break; + + case 4: + env.maxLevel = 3; + env.startLevel = chan._instrument[4]; + break; + + case 5: + env.maxLevel = 62; + env.startLevel = 31; + env.modWheelState = 0; + break; + + case 6: + env.maxLevel = 31; + env.startLevel = 0; + env.modWheelSensitivity = 0; + break; + + default: + break; + } + + startEffect(env, data); +} + +void PcSpkDriver::startEffect(EffectEnvelope &env, const byte *data) { + env.state = 1; + env.currentLevel = 0; + env.modWheelLast = 31; + env.duration = data[0] * 63; + + env.stateTargetLevels[0] = data[1]; + env.stateTargetLevels[1] = data[3]; + env.stateTargetLevels[2] = data[5]; + env.stateTargetLevels[3] = data[6]; + + env.stateModWheelLevels[0] = data[2]; + env.stateModWheelLevels[1] = data[4]; + env.stateModWheelLevels[2] = 0; + env.stateModWheelLevels[3] = data[7]; + + initNextEnvelopeState(env); +} + +void PcSpkDriver::initNextEnvelopeState(EffectEnvelope &env) { + uint8 lastState = env.state - 1; + + uint16 stepCount = _effectEnvStepTable[getEffectModifier(((env.stateTargetLevels[lastState] & 0x7F) << 5) + env.modWheelSensitivity)]; + if (env.stateTargetLevels[lastState] & 0x80) + stepCount = getRandMultipy(stepCount); + if (!stepCount) + stepCount = 1; + + env.stateNumSteps = env.stateStepCounter = stepCount; + + int16 totalChange = 0; + if (lastState != 2) { + totalChange = getEffectModLevel(env.maxLevel, (env.stateModWheelLevels[lastState] & 0x7F) - 31); + if (env.stateModWheelLevels[lastState] & 0x80) + totalChange = getRandMultipy(totalChange); + + if (totalChange + env.startLevel > env.maxLevel) + totalChange = env.maxLevel - env.startLevel; + else if (totalChange + env.startLevel < 0) + totalChange = -env.startLevel; + + totalChange -= env.currentLevel; + } + + env.changePerStep = totalChange / stepCount; + if (totalChange < 0) { + totalChange = -totalChange; + env.dir = -1; + } else { + env.dir = 1; + } + env.changePerStepRem = totalChange % stepCount; + env.changeCountRem = 0; +} + +void PcSpkDriver::updateEffectGenerator(MidiChannel_PcSpk &chan, EffectEnvelope &env, EffectDefinition &def) { + if (advanceEffectEnvelope(env, def) & 1) { + switch (def.type) { + case 0: case 1: + chan._out.unk60 = def.phase << 4; + break; + + case 2: + chan._out.unkB = (def.phase & 0xFF) + chan._instrument[1]; + break; + + case 3: + chan._out.unkC = (def.phase & 0xFF) + chan._instrument[1]; + break; + + case 4: + if ((chan._instrument[4] + (def.phase & 0xFF)) * 256 < ARRAYSIZE(_outInstrumentData)) + chan._out.instrument = _outInstrumentData + (chan._instrument[4] + (def.phase & 0xFF)) * 256; + else + chan._out.instrument = 0; + break; + + case 5: + env.modWheelState = (def.phase & 0xFF); + break; + + case 6: + env.modWheelSensitivity = (def.phase & 0xFF); + break; + + default: + break; + } + } +} + +uint8 PcSpkDriver::advanceEffectEnvelope(EffectEnvelope &env, EffectDefinition &def) { + if (env.duration > 0) { + env.duration -= 17; + if (env.duration <= 0) { + env.duration = 0; + return 0; + } + } + + uint8 changedFlags = 0; + int16 newLevel = env.currentLevel + env.changePerStep; + env.changeCountRem += env.changePerStepRem; + if (env.changeCountRem >= env.stateNumSteps) { + env.changeCountRem -= env.stateNumSteps; + newLevel += env.dir; + } + + if (env.currentLevel != newLevel || env.modWheelLast != env.modWheelState) { + env.currentLevel = newLevel; + env.modWheelLast = env.modWheelState; + + int16 newPhase = getEffectModLevel(newLevel, env.modWheelState); + if (def.phase != newPhase) { + changedFlags |= 1; + def.phase = newPhase; + } + } + + --env.stateStepCounter; + if (!env.stateStepCounter) { + ++env.state; + if (env.state > 4) { + if (env.loop) { + env.state = 1; + changedFlags |= 2; + } else { + env.state = 0; + return changedFlags; + } + } + + initNextEnvelopeState(env); + } + + return changedFlags; +} + +const byte PcSpkDriver::_outInstrumentData[1024] = { + 0x00, 0x03, 0x06, 0x09, 0x0C, 0x0F, 0x12, 0x15, + 0x18, 0x1B, 0x1E, 0x21, 0x24, 0x27, 0x2A, 0x2D, + 0x30, 0x33, 0x36, 0x39, 0x3B, 0x3E, 0x41, 0x43, + 0x46, 0x49, 0x4B, 0x4E, 0x50, 0x52, 0x55, 0x57, + 0x59, 0x5B, 0x5E, 0x60, 0x62, 0x64, 0x66, 0x67, + 0x69, 0x6B, 0x6C, 0x6E, 0x70, 0x71, 0x72, 0x74, + 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7B, + 0x7C, 0x7D, 0x7D, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, + 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7D, 0x7D, + 0x7C, 0x7B, 0x7B, 0x7A, 0x79, 0x78, 0x77, 0x76, + 0x75, 0x74, 0x72, 0x71, 0x70, 0x6E, 0x6C, 0x6B, + 0x69, 0x67, 0x66, 0x64, 0x62, 0x60, 0x5E, 0x5B, + 0x59, 0x57, 0x55, 0x52, 0x50, 0x4E, 0x4B, 0x49, + 0x46, 0x43, 0x41, 0x3E, 0x3B, 0x39, 0x36, 0x33, + 0x30, 0x2D, 0x2A, 0x27, 0x24, 0x21, 0x1E, 0x1B, + 0x18, 0x15, 0x12, 0x0F, 0x0C, 0x09, 0x06, 0x03, + 0x00, 0xFD, 0xFA, 0xF7, 0xF4, 0xF1, 0xEE, 0xEB, + 0xE8, 0xE5, 0xE2, 0xDF, 0xDC, 0xD9, 0xD6, 0xD3, + 0xD0, 0xCD, 0xCA, 0xC7, 0xC5, 0xC2, 0xBF, 0xBD, + 0xBA, 0xB7, 0xB5, 0xB2, 0xB0, 0xAE, 0xAB, 0xA9, + 0xA7, 0xA5, 0xA2, 0xA0, 0x9E, 0x9C, 0x9A, 0x99, + 0x97, 0x95, 0x94, 0x92, 0x90, 0x8F, 0x8E, 0x8C, + 0x8B, 0x8A, 0x89, 0x88, 0x87, 0x86, 0x85, 0x85, + 0x84, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, + 0x84, 0x85, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, + 0x8B, 0x8C, 0x8E, 0x8F, 0x90, 0x92, 0x94, 0x95, + 0x97, 0x99, 0x9A, 0x9C, 0x9E, 0xA0, 0xA2, 0xA5, + 0xA7, 0xA9, 0xAB, 0xAE, 0xB0, 0xB2, 0xB5, 0xB7, + 0xBA, 0xBD, 0xBF, 0xC2, 0xC5, 0xC7, 0xCA, 0xCD, + 0xD0, 0xD3, 0xD6, 0xD9, 0xDC, 0xDF, 0xE2, 0xE5, + 0xE8, 0xEB, 0xEE, 0xF1, 0xF4, 0xF7, 0xFA, 0xFD, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, + 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, + 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, + 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, + 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, + 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, + 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x29, 0x23, 0xBE, 0x84, 0xE1, 0x6C, 0xD6, 0xAE, + 0x52, 0x90, 0x49, 0xF1, 0xF1, 0xBB, 0xE9, 0xEB, + 0xB3, 0xA6, 0xDB, 0x3C, 0x87, 0x0C, 0x3E, 0x99, + 0x24, 0x5E, 0x0D, 0x1C, 0x06, 0xB7, 0x47, 0xDE, + 0xB3, 0x12, 0x4D, 0xC8, 0x43, 0xBB, 0x8B, 0xA6, + 0x1F, 0x03, 0x5A, 0x7D, 0x09, 0x38, 0x25, 0x1F, + 0x5D, 0xD4, 0xCB, 0xFC, 0x96, 0xF5, 0x45, 0x3B, + 0x13, 0x0D, 0x89, 0x0A, 0x1C, 0xDB, 0xAE, 0x32, + 0x20, 0x9A, 0x50, 0xEE, 0x40, 0x78, 0x36, 0xFD, + 0x12, 0x49, 0x32, 0xF6, 0x9E, 0x7D, 0x49, 0xDC, + 0xAD, 0x4F, 0x14, 0xF2, 0x44, 0x40, 0x66, 0xD0, + 0x6B, 0xC4, 0x30, 0xB7, 0x32, 0x3B, 0xA1, 0x22, + 0xF6, 0x22, 0x91, 0x9D, 0xE1, 0x8B, 0x1F, 0xDA, + 0xB0, 0xCA, 0x99, 0x02, 0xB9, 0x72, 0x9D, 0x49, + 0x2C, 0x80, 0x7E, 0xC5, 0x99, 0xD5, 0xE9, 0x80, + 0xB2, 0xEA, 0xC9, 0xCC, 0x53, 0xBF, 0x67, 0xD6, + 0xBF, 0x14, 0xD6, 0x7E, 0x2D, 0xDC, 0x8E, 0x66, + 0x83, 0xEF, 0x57, 0x49, 0x61, 0xFF, 0x69, 0x8F, + 0x61, 0xCD, 0xD1, 0x1E, 0x9D, 0x9C, 0x16, 0x72, + 0x72, 0xE6, 0x1D, 0xF0, 0x84, 0x4F, 0x4A, 0x77, + 0x02, 0xD7, 0xE8, 0x39, 0x2C, 0x53, 0xCB, 0xC9, + 0x12, 0x1E, 0x33, 0x74, 0x9E, 0x0C, 0xF4, 0xD5, + 0xD4, 0x9F, 0xD4, 0xA4, 0x59, 0x7E, 0x35, 0xCF, + 0x32, 0x22, 0xF4, 0xCC, 0xCF, 0xD3, 0x90, 0x2D, + 0x48, 0xD3, 0x8F, 0x75, 0xE6, 0xD9, 0x1D, 0x2A, + 0xE5, 0xC0, 0xF7, 0x2B, 0x78, 0x81, 0x87, 0x44, + 0x0E, 0x5F, 0x50, 0x00, 0xD4, 0x61, 0x8D, 0xBE, + 0x7B, 0x05, 0x15, 0x07, 0x3B, 0x33, 0x82, 0x1F, + 0x18, 0x70, 0x92, 0xDA, 0x64, 0x54, 0xCE, 0xB1, + 0x85, 0x3E, 0x69, 0x15, 0xF8, 0x46, 0x6A, 0x04, + 0x96, 0x73, 0x0E, 0xD9, 0x16, 0x2F, 0x67, 0x68, + 0xD4, 0xF7, 0x4A, 0x4A, 0xD0, 0x57, 0x68, 0x76 +}; const byte PcSpkDriver::_outputTable1[] = { 0, 0, 0, 0, 0, 0, 0, 0, @@ -353,6 +735,17 @@ const byte PcSpkDriver::_outputTable2[] = { 4, 5, 6, 7 }; +const uint16 PcSpkDriver::_effectEnvStepTable[] = { + 1, 2, 4, 5, + 6, 7, 8, 9, + 10, 12, 14, 16, + 18, 21, 24, 30, + 36, 50, 64, 82, + 100, 136, 160, 192, + 240, 276, 340, 460, + 600, 860, 1200, 1600 +}; + const uint16 PcSpkDriver::_frequencyTable[] = { 0x8E84, 0x8E00, 0x8D7D, 0x8CFA, 0x8C78, 0x8BF7, 0x8B76, 0x8AF5, diff --git a/engines/scumm/imuse/pcspk.h b/engines/scumm/imuse/pcspk.h index 8edf86e927a..3b63ec81991 100644 --- a/engines/scumm/imuse/pcspk.h +++ b/engines/scumm/imuse/pcspk.h @@ -49,45 +49,49 @@ protected: private: Audio::PCSpeaker _pcSpk; + int _effectTimer; + uint8 _randBase; void updateNote(); void output(uint16 out); + static uint8 getEffectModifier(uint16 level); + int16 getEffectModLevel(int16 level, int8 mod); + int16 getRandMultipy(int16 input); + struct EffectEnvelope { uint8 state; - uint16 currentLevel; + int16 currentLevel; uint16 duration; - uint16 maxLevel; - uint16 startLevel; + int16 maxLevel; + int16 startLevel; uint8 loop; uint8 stateTargetLevels[4]; uint8 stateModWheelLevels[4]; uint8 modWheelSensitivity; uint8 modWheelState; uint8 modWheelLast; - uint16 stateNumSteps; - uint16 stateStepCounter; - uint16 changePerStep; - uint16 dir; - uint16 changePerStepRem; - uint16 changeCountRem; + int16 stateNumSteps; + int16 stateStepCounter; + int16 changePerStep; + int8 dir; + int16 changePerStepRem; + int16 changeCountRem; }; struct EffectDefinition { uint16 phase; uint8 type; - uint8 enabled; + uint8 useModWheel; EffectEnvelope *envelope; }; - struct MidiChannel_PcSpk; - struct OutputChannel { uint8 active; uint8 note; uint8 sustainNoteOff; uint8 length; - //const uint8 *instrument; + const uint8 *instrument; uint8 unkA; uint8 unkB; uint8 unkC; @@ -132,12 +136,19 @@ private: int16 _pitchBend; }; + void setupEffects(MidiChannel_PcSpk &chan, EffectEnvelope &env, EffectDefinition &def, byte flags, const byte *data); + void startEffect(EffectEnvelope &env, const byte *data); + void initNextEnvelopeState(EffectEnvelope &env); + void updateEffectGenerator(MidiChannel_PcSpk &chan, EffectEnvelope &env, EffectDefinition &def); + uint8 advanceEffectEnvelope(EffectEnvelope &env, EffectDefinition &def); + MidiChannel_PcSpk _channels[6]; MidiChannel_PcSpk *_activeChannel; - //static const byte _outInstrumentData[]; + static const byte _outInstrumentData[1024]; static const byte _outputTable1[]; static const byte _outputTable2[]; + static const uint16 _effectEnvStepTable[]; static const uint16 _frequencyTable[]; }; From 0a94fc5b7bed22f846f2d28797107496454b0ecb Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 10 Jul 2011 05:13:03 +0200 Subject: [PATCH 051/731] SCUMM: Only try to load MT-32 instruments when we have a MIDI output in iMuse. This fixes the melody in Indy4's intro with the PC Speaker output. --- engines/scumm/imuse/imuse_player.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/engines/scumm/imuse/imuse_player.cpp b/engines/scumm/imuse/imuse_player.cpp index 61b9cad2cbc..07c793a4cb6 100644 --- a/engines/scumm/imuse/imuse_player.cpp +++ b/engines/scumm/imuse/imuse_player.cpp @@ -371,11 +371,13 @@ void Player::sysEx(const byte *p, uint16 len) { if (a != IMUSE_SYSEX_ID) { if (a == ROLAND_SYSEX_ID) { // Roland custom instrument definition. - part = getPart(p[0] & 0x0F); - if (part) { - part->_instrument.roland(p - 1); - if (part->clearToTransmit()) - part->_instrument.send(part->_mc); + if (_isMIDI || _isMT32) { + part = getPart(p[0] & 0x0F); + if (part) { + part->_instrument.roland(p - 1); + if (part->clearToTransmit()) + part->_instrument.send(part->_mc); + } } } else if (a == YM2612_SYSEX_ID) { // FM-TOWNS custom instrument definition From abbd29b16ab8f4c893415c630bb529b0e4c194ab Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 10 Jul 2011 05:21:25 +0200 Subject: [PATCH 052/731] SCUMM: Limit iMuse default instrument load to PC Speaker output. Albeit the code is marked as a hack inside the source, the original behaved exaclty the same. If the code is removed the PC Speaker output will miss notes, since unlike the original we only output to parts, which have an instrument set up. --- engines/scumm/imuse/imuse.cpp | 15 ++++++++++----- engines/scumm/imuse/imuse.h | 3 ++- engines/scumm/imuse/imuse_internal.h | 5 +++-- engines/scumm/imuse/imuse_part.cpp | 2 +- engines/scumm/imuse/sysex_scumm.cpp | 4 ++-- engines/scumm/scumm.cpp | 3 ++- 6 files changed, 20 insertions(+), 12 deletions(-) diff --git a/engines/scumm/imuse/imuse.cpp b/engines/scumm/imuse/imuse.cpp index 961d0690d08..912ab71420f 100644 --- a/engines/scumm/imuse/imuse.cpp +++ b/engines/scumm/imuse/imuse.cpp @@ -64,7 +64,8 @@ _queue_cleared(0), _master_volume(0), _music_volume(0), _trigger_count(0), -_snm_trigger_index(0) { +_snm_trigger_index(0), +_pcSpeaker(false) { memset(_channel_volume,0,sizeof(_channel_volume)); memset(_channel_volume_eff,0,sizeof(_channel_volume_eff)); memset(_volchan_table,0,sizeof(_volchan_table)); @@ -467,6 +468,10 @@ uint32 IMuseInternal::property(int prop, uint32 value) { case IMuse::PROP_GAME_ID: _game_id = value; break; + + case IMuse::PROP_PC_SPEAKER: + _pcSpeaker = (value != 0); + break; } return 0; @@ -1670,20 +1675,20 @@ void IMuseInternal::reallocateMidiChannels(MidiDriver *midi) { void IMuseInternal::setGlobalAdLibInstrument(byte slot, byte *data) { if (slot < 32) { - _global_adlib_instruments[slot].adlib(data); + _global_instruments[slot].adlib(data); } } void IMuseInternal::setGlobalPcSpkInstrument(byte slot, byte *data) { if (slot < 32) { - _global_adlib_instruments[slot].pcspk(data); + _global_instruments[slot].pcspk(data); } } -void IMuseInternal::copyGlobalAdLibInstrument(byte slot, Instrument *dest) { +void IMuseInternal::copyGlobalInstrument(byte slot, Instrument *dest) { if (slot >= 32) return; - _global_adlib_instruments[slot].copy_to(dest); + _global_instruments[slot].copy_to(dest); } diff --git a/engines/scumm/imuse/imuse.h b/engines/scumm/imuse/imuse.h index 8014b134095..73f0bb9a902 100644 --- a/engines/scumm/imuse/imuse.h +++ b/engines/scumm/imuse/imuse.h @@ -55,7 +55,8 @@ public: PROP_GS, PROP_LIMIT_PLAYERS, PROP_RECYCLE_PLAYERS, - PROP_GAME_ID + PROP_GAME_ID, + PROP_PC_SPEAKER }; public: diff --git a/engines/scumm/imuse/imuse_internal.h b/engines/scumm/imuse/imuse_internal.h index 76a8c766831..8ac9e775356 100644 --- a/engines/scumm/imuse/imuse_internal.h +++ b/engines/scumm/imuse/imuse_internal.h @@ -434,7 +434,8 @@ protected: Player _players[8]; Part _parts[32]; - Instrument _global_adlib_instruments[32]; + bool _pcSpeaker; + Instrument _global_instruments[32]; CommandQueue _cmd_queue[64]; DeferredCommand _deferredCommands[4]; @@ -501,7 +502,7 @@ protected: void reallocateMidiChannels(MidiDriver *midi); void setGlobalAdLibInstrument(byte slot, byte *data); void setGlobalPcSpkInstrument(byte slot, byte *data); - void copyGlobalAdLibInstrument(byte slot, Instrument *dest); + void copyGlobalInstrument(byte slot, Instrument *dest); bool isNativeMT32() { return _native_mt32; } protected: diff --git a/engines/scumm/imuse/imuse_part.cpp b/engines/scumm/imuse/imuse_part.cpp index 82ad9b70d28..630dd354425 100644 --- a/engines/scumm/imuse/imuse_part.cpp +++ b/engines/scumm/imuse/imuse_part.cpp @@ -206,7 +206,7 @@ void Part::set_instrument_pcspk(byte *data) { } void Part::load_global_instrument(byte slot) { - _player->_se->copyGlobalAdLibInstrument(slot, &_instrument); + _player->_se->copyGlobalInstrument(slot, &_instrument); if (clearToTransmit()) _instrument.send(_mc); } diff --git a/engines/scumm/imuse/sysex_scumm.cpp b/engines/scumm/imuse/sysex_scumm.cpp index 160cdf500a9..035953f140b 100644 --- a/engines/scumm/imuse/sysex_scumm.cpp +++ b/engines/scumm/imuse/sysex_scumm.cpp @@ -93,9 +93,9 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { // anyway. if (player->_isMIDI) { part->_instrument.program((p[15] & 0x0F) << 4 |(p[16] & 0x0F), player->_isMT32); - } else { + } else if (se->_pcSpeaker) { // FIXME/HACK: This is only needed here, since when we use the following line: - // se->copyGlobalAdLibInstrument((p[15] & 0x0F) << 4 |(p[16] & 0x0F), &part->_instrument); + // se->copyGlobalInstrument((p[15] & 0x0F) << 4 |(p[16] & 0x0F), &part->_instrument); // We would not get any instrument for PC Speaker. Because we don't default to an // "empty" instrument in case the global instrument specified is not set up. byte empty[23] = {0}; diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index ed1c90145d8..22b02e8e030 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -1867,7 +1867,6 @@ void ScummEngine::setupMusic(int midi) { adlibMidiDriver = MidiDriver::createMidi(MidiDriver::detectDevice(_musicType == MDT_TOWNS ? MDT_TOWNS : MDT_ADLIB)); adlibMidiDriver->property(MidiDriver::PROP_OLD_ADLIB, (_game.features & GF_SMALL_HEADER) ? 1 : 0); } else if (_musicType == MDT_PCSPK) { - // HACK adlibMidiDriver = new PcSpkDriver(_mixer); } @@ -1897,6 +1896,8 @@ void ScummEngine::setupMusic(int midi) { _imuse->property(IMuse::PROP_LIMIT_PLAYERS, 1); _imuse->property(IMuse::PROP_RECYCLE_PLAYERS, 1); } + if (_musicType == MDT_PCSPK) + _imuse->property(IMuse::PROP_PC_SPEAKER, 1); } } } From fb4ed2224fa744139f800315d1231c8a031d9c75 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 10 Jul 2011 05:28:20 +0200 Subject: [PATCH 053/731] SCUMM: Minor clean up in iMuse instrument handling code. --- engines/scumm/imuse/imuse.cpp | 13 +++++-------- engines/scumm/imuse/imuse_internal.h | 3 +-- engines/scumm/imuse/imuse_part.cpp | 10 ++++------ engines/scumm/imuse/sysex_scumm.cpp | 11 +++-------- 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/engines/scumm/imuse/imuse.cpp b/engines/scumm/imuse/imuse.cpp index 912ab71420f..9fb6087e53a 100644 --- a/engines/scumm/imuse/imuse.cpp +++ b/engines/scumm/imuse/imuse.cpp @@ -1673,15 +1673,12 @@ void IMuseInternal::reallocateMidiChannels(MidiDriver *midi) { } } -void IMuseInternal::setGlobalAdLibInstrument(byte slot, byte *data) { +void IMuseInternal::setGlobalInstrument(byte slot, byte *data) { if (slot < 32) { - _global_instruments[slot].adlib(data); - } -} - -void IMuseInternal::setGlobalPcSpkInstrument(byte slot, byte *data) { - if (slot < 32) { - _global_instruments[slot].pcspk(data); + if (_pcSpeaker) + _global_instruments[slot].pcspk(data); + else + _global_instruments[slot].adlib(data); } } diff --git a/engines/scumm/imuse/imuse_internal.h b/engines/scumm/imuse/imuse_internal.h index 8ac9e775356..4ab25907a4e 100644 --- a/engines/scumm/imuse/imuse_internal.h +++ b/engines/scumm/imuse/imuse_internal.h @@ -500,8 +500,7 @@ protected: int setImuseMasterVolume(uint vol); void reallocateMidiChannels(MidiDriver *midi); - void setGlobalAdLibInstrument(byte slot, byte *data); - void setGlobalPcSpkInstrument(byte slot, byte *data); + void setGlobalInstrument(byte slot, byte *data); void copyGlobalInstrument(byte slot, Instrument *dest); bool isNativeMT32() { return _native_mt32; } diff --git a/engines/scumm/imuse/imuse_part.cpp b/engines/scumm/imuse/imuse_part.cpp index 630dd354425..53627f6a4a1 100644 --- a/engines/scumm/imuse/imuse_part.cpp +++ b/engines/scumm/imuse/imuse_part.cpp @@ -194,13 +194,11 @@ void Part::set_onoff(bool on) { } void Part::set_instrument(byte * data) { - _instrument.adlib(data); - if (clearToTransmit()) - _instrument.send(_mc); -} + if (_se->_pcSpeaker) + _instrument.pcspk(data); + else + _instrument.adlib(data); -void Part::set_instrument_pcspk(byte *data) { - _instrument.pcspk(data); if (clearToTransmit()) _instrument.send(_mc); } diff --git a/engines/scumm/imuse/sysex_scumm.cpp b/engines/scumm/imuse/sysex_scumm.cpp index 035953f140b..0987ab55538 100644 --- a/engines/scumm/imuse/sysex_scumm.cpp +++ b/engines/scumm/imuse/sysex_scumm.cpp @@ -121,12 +121,9 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { ++p; // Skip hardware type part = player->getPart(a); if (part) { - if (len == 62) { + if (len == 62 || len == 48) { player->decode_sysex_bytes(p, buf, len - 2); part->set_instrument((byte *)buf); - } else if (len == 48) { - player->decode_sysex_bytes(p, buf, len - 2); - part->set_instrument_pcspk((byte *)buf); } else { part->programChange(254); // Must be invalid, but not 255 (which is reserved) } @@ -137,10 +134,8 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { p += 2; // Skip hardware type and... whatever came right before it a = *p++; player->decode_sysex_bytes(p, buf, len - 3); - if (len == 63) - se->setGlobalAdLibInstrument(a, buf); - else if (len == 49) - se->setGlobalPcSpkInstrument(a, buf); + if (len == 63 || len == 49) + se->setGlobalInstrument(a, buf); break; case 33: // Parameter adjust From 1b231ed7ff428b05d1fc6e5f8786325b7eee95a3 Mon Sep 17 00:00:00 2001 From: eriktorbjorn Date: Sun, 10 Jul 2011 07:39:38 +0200 Subject: [PATCH 054/731] SAGA: Mute the music while the game is paused It already paused the music, but any notes that were playing were just left hanging. At least with the ALSA MIDI driver. This was quite annoying when using the debug console. --- engines/saga/music.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp index 85315ab8c49..49d3f91d771 100644 --- a/engines/saga/music.cpp +++ b/engines/saga/music.cpp @@ -373,10 +373,12 @@ void Music::play(uint32 resourceId, MusicFlags flags) { void Music::pause() { _player->pause(); + _player->setVolume(0); } void Music::resume() { _player->resume(); + _player->setVolume(_vm->_musicVolume); } void Music::stop() { From ea53386f3e76301673610f3e1cdd9b60ac4704e0 Mon Sep 17 00:00:00 2001 From: eriktorbjorn Date: Sun, 10 Jul 2011 13:36:03 +0200 Subject: [PATCH 055/731] SAGA: Use #error instead of a deliberate syntax error. --- engines/saga/actor.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/saga/actor.h b/engines/saga/actor.h index a4f475660db..d9d4b701686 100644 --- a/engines/saga/actor.h +++ b/engines/saga/actor.h @@ -650,7 +650,7 @@ private: public: #ifdef ACTOR_DEBUG #ifndef SAGA_DEBUG - you must also define SAGA_DEBUG + #error You must also define SAGA_DEBUG #endif //path debug - use with care struct DebugPoint { From dab9c05783c56f6c0b0b3faf65921992bc953954 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 10 Jul 2011 16:21:30 +0200 Subject: [PATCH 056/731] SCUMM: Do not allow multi midi mode for PC Speaker output. Thanks to eriktorbjorn for catching this. --- engines/scumm/scumm.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index 22b02e8e030..5268231cff8 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -1862,7 +1862,7 @@ void ScummEngine::setupMusic(int midi) { nativeMidiDriver = MidiDriver::createMidi(dev); if (nativeMidiDriver != NULL && _native_mt32) nativeMidiDriver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE); - bool multi_midi = ConfMan.getBool("multi_midi") && _musicType != MDT_NONE && (midi & MDT_ADLIB); + bool multi_midi = ConfMan.getBool("multi_midi") && _musicType != MDT_NONE && _musicType != MDT_PCSPK && (midi & MDT_ADLIB); if (_musicType == MDT_ADLIB || _musicType == MDT_TOWNS || multi_midi) { adlibMidiDriver = MidiDriver::createMidi(MidiDriver::detectDevice(_musicType == MDT_TOWNS ? MDT_TOWNS : MDT_ADLIB)); adlibMidiDriver->property(MidiDriver::PROP_OLD_ADLIB, (_game.features & GF_SMALL_HEADER) ? 1 : 0); From 1c711da8fc2f8099e641cfbe0a726e2f5ff8e308 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 10 Jul 2011 16:34:45 +0300 Subject: [PATCH 057/731] SWORD25: Fix regression introduced in 5dd8f2575b0f Janitorial removed function call which had a side effect. Thus the actor image load code crashed. --- engines/sword25/gfx/image/vectorimage.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/engines/sword25/gfx/image/vectorimage.cpp b/engines/sword25/gfx/image/vectorimage.cpp index 45d43c465e5..81f4fc2ad5d 100644 --- a/engines/sword25/gfx/image/vectorimage.cpp +++ b/engines/sword25/gfx/image/vectorimage.cpp @@ -247,6 +247,9 @@ VectorImage::VectorImage(const byte *pFileData, uint fileSize, bool &success, co return; } + // readout SWF size + flashRectToBSRect(bs); + // Get frame rate and frame count /* uint32 frameRate = */ bs.getUInt16(); From 18cbb63cba75c41602bd54d7796d6e0f21e7fa61 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 10 Jul 2011 16:59:13 +0300 Subject: [PATCH 058/731] SWORD25: Removed custom endianness code in persistence code This is first step towards making saves portable. Binary footprint left intact, so the saves are compatible. --- .../sword25/kernel/inputpersistenceblock.cpp | 28 +++++-------- .../sword25/kernel/inputpersistenceblock.h | 1 - .../sword25/kernel/outputpersistenceblock.cpp | 12 ++++-- engines/sword25/kernel/persistenceblock.h | 42 ------------------- 4 files changed, 19 insertions(+), 64 deletions(-) diff --git a/engines/sword25/kernel/inputpersistenceblock.cpp b/engines/sword25/kernel/inputpersistenceblock.cpp index 2d45dfb6400..cdce539c310 100644 --- a/engines/sword25/kernel/inputpersistenceblock.cpp +++ b/engines/sword25/kernel/inputpersistenceblock.cpp @@ -55,8 +55,8 @@ void InputPersistenceBlock::read(int16 &value) { void InputPersistenceBlock::read(signed int &value) { if (checkMarker(SINT_MARKER)) { - rawRead(&value, sizeof(signed int)); - value = convertEndianessFromStorageToSystem(value); + value = (int32)READ_LE_UINT32(_iter); + _iter += 4; } else { value = 0; } @@ -64,8 +64,8 @@ void InputPersistenceBlock::read(signed int &value) { void InputPersistenceBlock::read(uint &value) { if (checkMarker(UINT_MARKER)) { - rawRead(&value, sizeof(uint)); - value = convertEndianessFromStorageToSystem(value); + value = READ_LE_UINT32(_iter); + _iter += 4; } else { value = 0; } @@ -73,8 +73,10 @@ void InputPersistenceBlock::read(uint &value) { void InputPersistenceBlock::read(float &value) { if (checkMarker(FLOAT_MARKER)) { - rawRead(&value, sizeof(float)); - value = convertEndianessFromStorageToSystem(value); + uint32 tmp[1]; + tmp[0] = READ_LE_UINT32(_iter); + value = ((float *)tmp)[0]; + _iter += 4; } else { value = 0.0f; } @@ -82,12 +84,11 @@ void InputPersistenceBlock::read(float &value) { void InputPersistenceBlock::read(bool &value) { if (checkMarker(BOOL_MARKER)) { - uint uintBool; - rawRead(&uintBool, sizeof(float)); - uintBool = convertEndianessFromStorageToSystem(uintBool); + uint uintBool = READ_LE_UINT32(_iter); + _iter += 4; value = uintBool == 0 ? false : true; } else { - value = 0.0f; + value = false; } } @@ -117,13 +118,6 @@ void InputPersistenceBlock::readByteArray(Common::Array &value) { } } -void InputPersistenceBlock::rawRead(void *destPtr, size_t size) { - if (checkBlockSize(size)) { - memcpy(destPtr, &*_iter, size); - _iter += size; - } -} - bool InputPersistenceBlock::checkBlockSize(int size) { if (_data.end() - _iter >= size) { return true; diff --git a/engines/sword25/kernel/inputpersistenceblock.h b/engines/sword25/kernel/inputpersistenceblock.h index 7e681372464..2518d7e32c1 100644 --- a/engines/sword25/kernel/inputpersistenceblock.h +++ b/engines/sword25/kernel/inputpersistenceblock.h @@ -69,7 +69,6 @@ public: private: bool checkMarker(byte marker); bool checkBlockSize(int size); - void rawRead(void *destPtr, size_t size); Common::Array _data; Common::Array::const_iterator _iter; diff --git a/engines/sword25/kernel/outputpersistenceblock.cpp b/engines/sword25/kernel/outputpersistenceblock.cpp index cf28ea401fb..e29d956e5f1 100644 --- a/engines/sword25/kernel/outputpersistenceblock.cpp +++ b/engines/sword25/kernel/outputpersistenceblock.cpp @@ -43,19 +43,23 @@ OutputPersistenceBlock::OutputPersistenceBlock() { void OutputPersistenceBlock::write(signed int value) { writeMarker(SINT_MARKER); - value = convertEndianessFromSystemToStorage(value); + value = TO_LE_32(value); rawWrite(&value, sizeof(value)); } void OutputPersistenceBlock::write(uint value) { writeMarker(UINT_MARKER); - value = convertEndianessFromSystemToStorage(value); + value = TO_LE_32(value); rawWrite(&value, sizeof(value)); } void OutputPersistenceBlock::write(float value) { writeMarker(FLOAT_MARKER); - value = convertEndianessFromSystemToStorage(value); + uint32 tmp[1]; + + ((float *)tmp)[0] = value; + tmp[0] = TO_LE_32(tmp[0]); + rawWrite(&value, sizeof(value)); } @@ -63,7 +67,7 @@ void OutputPersistenceBlock::write(bool value) { writeMarker(BOOL_MARKER); uint uintBool = value ? 1 : 0; - uintBool = convertEndianessFromSystemToStorage(uintBool); + uintBool = TO_LE_32(uintBool); rawWrite(&uintBool, sizeof(uintBool)); } diff --git a/engines/sword25/kernel/persistenceblock.h b/engines/sword25/kernel/persistenceblock.h index d8440faa502..8ac3e84a41a 100644 --- a/engines/sword25/kernel/persistenceblock.h +++ b/engines/sword25/kernel/persistenceblock.h @@ -64,48 +64,6 @@ protected: BLOCK_MARKER }; - // ----------------------------------------------------------------------------- - // Endianess Conversions - // ----------------------------------------------------------------------------- - // - // Everything is stored in Little Endian - // Big Endian Systems will need to be byte swapped during both saving and reading of saved values - // - - template - static T convertEndianessFromSystemToStorage(T value) { - if (isBigEndian()) - reverseByteOrder(&value); - return value; - } - - template - static T convertEndianessFromStorageToSystem(T value) { - if (isBigEndian()) - reverseByteOrder(&value); - return value; - } - -private: - static bool isBigEndian() { - uint dummy = 1; - byte *dummyPtr = reinterpret_cast(&dummy); - return dummyPtr[0] == 0; - } - - template - static void swap(T &one, T &two) { - T temp = one; - one = two; - two = temp; - } - - static void reverseByteOrder(void *ptr) { - // Reverses the byte order of the 32-bit word pointed to by Ptr - byte *charPtr = static_cast(ptr); - swap(charPtr[0], charPtr[3]); - swap(charPtr[1], charPtr[2]); - } }; #define CTASSERT(ex) typedef char ctassert_type[(ex) ? 1 : -1] From 781b7215c43ffc54ce571fb5ba830aa9dff3fcf9 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 10 Jul 2011 17:26:46 +0200 Subject: [PATCH 059/731] SCUMM: Fix PC Speaker sound. Now we only output a new frequency if a new channel was selected or a new output frequency has to be send. This makes the sound much more like in DOSBox. This is not present in the original, but since our timings are different this should make up for that. --- engines/scumm/imuse/pcspk.cpp | 27 ++++++++++++++++++++++++++- engines/scumm/imuse/pcspk.h | 3 +++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/engines/scumm/imuse/pcspk.cpp b/engines/scumm/imuse/pcspk.cpp index ceecc3515ee..6eaf7ad168e 100644 --- a/engines/scumm/imuse/pcspk.cpp +++ b/engines/scumm/imuse/pcspk.cpp @@ -47,6 +47,12 @@ int PcSpkDriver::open() { _effectTimer = 0; _randBase = 1; + // We need to take care we only send note frequencies, when the internal + // settings actually changed, thus we need some extra state to keep track + // of that. + _lastActiveChannel = 0; + _lastActiveOut = 0; + _mixer->playStream(Audio::Mixer::kPlainSoundType, &_mixerSoundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true); return 0; } @@ -120,6 +126,8 @@ void PcSpkDriver::onTimer() { output((_activeChannel->_out.note << 7) + _activeChannel->_pitchBend + _activeChannel->_out.unk60 + _activeChannel->_out.unkE); } else { _pcSpk.stop(); + _lastActiveChannel = 0; + _lastActiveOut = 0; } } @@ -135,6 +143,8 @@ void PcSpkDriver::updateNote() { if (_activeChannel == 0 || _activeChannel->_tl == 0) { _pcSpk.stop(); + _lastActiveChannel = 0; + _lastActiveOut = 0; } else { output(_activeChannel->_pitchBend + (_activeChannel->_out.note << 7)); } @@ -147,7 +157,15 @@ void PcSpkDriver::output(uint16 out) { byte shift = _outputTable1[v1]; uint16 indexBase = _outputTable2[v1] << 5; uint16 frequency = _frequencyTable[(indexBase + v2) / 2] >> shift; - _pcSpk.play(Audio::PCSpeaker::kWaveFormSquare, 1193180 / frequency, -1); + + // Only output in case the active channel changed or the frequency changed. + // This is not faithful to the original. Since our timings differ we would + // get distorted sound otherwise though. + if (_lastActiveChannel != _activeChannel || _lastActiveOut != out) { + _pcSpk.play(Audio::PCSpeaker::kWaveFormSquare, 1193180 / frequency, -1); + _lastActiveChannel = _activeChannel; + _lastActiveOut = out; + } } void PcSpkDriver::MidiChannel_PcSpk::init(PcSpkDriver *owner, byte channel) { @@ -249,6 +267,13 @@ void PcSpkDriver::MidiChannel_PcSpk::noteOn(byte note, byte velocity) { _out.unk60 = 0; _out.active = 1; + // In case we get a note on event on the last active channel, we reset the + // last active channel, thus we assure the frequency is correctly set, even + // when the same note was sent. + if (_owner->_lastActiveChannel == this) { + _owner->_lastActiveChannel = 0; + _owner->_lastActiveOut = 0; + } _owner->updateNote(); _out.unkC += PcSpkDriver::getEffectModifier(_instrument[3] + ((velocity & 0xFE) << 4)); diff --git a/engines/scumm/imuse/pcspk.h b/engines/scumm/imuse/pcspk.h index 3b63ec81991..3f70160988e 100644 --- a/engines/scumm/imuse/pcspk.h +++ b/engines/scumm/imuse/pcspk.h @@ -145,6 +145,9 @@ private: MidiChannel_PcSpk _channels[6]; MidiChannel_PcSpk *_activeChannel; + MidiChannel_PcSpk *_lastActiveChannel; + uint16 _lastActiveOut; + static const byte _outInstrumentData[1024]; static const byte _outputTable1[]; static const byte _outputTable2[]; From 5edb6f9e4a331049e49c04441aa36b67053f605c Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 10 Jul 2011 17:58:41 +0200 Subject: [PATCH 060/731] SCUMM: Fix priority settings in iMuse allocate part sysEx command. Formerly we ever only used the lower 4 bit of the priority setting for a new part. The original used a full 8 bit setting though (based on the Indy4 PC Speaker output driver). This fixes missing notes in the Indy4 intro with PC Speaker output. This might affect other outputs too! And could cause regressions in case other outputs implemented priority settings differently. --- engines/scumm/imuse/sysex_scumm.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/engines/scumm/imuse/sysex_scumm.cpp b/engines/scumm/imuse/sysex_scumm.cpp index 0987ab55538..98b8ed934e8 100644 --- a/engines/scumm/imuse/sysex_scumm.cpp +++ b/engines/scumm/imuse/sysex_scumm.cpp @@ -54,7 +54,8 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { // BYTE 00: Channel # // BYTE 02: BIT 01(0x01): Part on?(1 = yes) // BIT 02(0x02): Reverb? (1 = yes) [bug #1088045] - // BYTE 04: Priority adjustment [guessing] + // BYTE 03: Priority adjustment(upper 4 bits) + // BYTE 04: Priority adjustment(lower 4 bits) // BYTE 05: Volume(upper 4 bits) [guessing] // BYTE 06: Volume(lower 4 bits) [guessing] // BYTE 07: Pan(upper 4 bits) [bug #1088045] @@ -73,7 +74,7 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { if (part) { part->set_onoff(p[2] & 0x01); part->effectLevel((p[2] & 0x02) ? 127 : 0); - part->set_pri(p[4]); + part->set_pri((p[3] << 4) | p[4]); part->volume((p[5] & 0x0F) << 4 |(p[6] & 0x0F)); part->set_pan((p[7] & 0x0F) << 4 | (p[8] & 0x0F)); part->_percussion = player->_isMIDI ? ((p[9] & 0x08) > 0) : false; From adb2bbbb5902f0cb9f9c6ca6db81d57b723e1a23 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 10 Jul 2011 18:06:33 +0200 Subject: [PATCH 061/731] SCUMM: Properly implement volume controler for PC Speaker output. --- engines/scumm/imuse/pcspk.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/engines/scumm/imuse/pcspk.cpp b/engines/scumm/imuse/pcspk.cpp index 6eaf7ad168e..1b8afcabe59 100644 --- a/engines/scumm/imuse/pcspk.cpp +++ b/engines/scumm/imuse/pcspk.cpp @@ -307,8 +307,15 @@ void PcSpkDriver::MidiChannel_PcSpk::controlChange(byte control, byte value) { case 7: _tl = value; - // TODO: Properly implement this - _owner->updateNote(); + if (_owner->_activeChannel == this) { + if (_tl == 0) { + _owner->_lastActiveChannel = 0; + _owner->_lastActiveOut = 0; + _owner->_pcSpk.stop(); + } else { + _owner->output((_out.note << 7) + _pitchBend + _out.unk60 + _out.unkE); + } + } break; case 64: From 5f5daadedbd3dafa80836d6c9a2c865ce0a22f8b Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 10 Jul 2011 18:14:42 +0200 Subject: [PATCH 062/731] SCUMM: Let PC Speaker output be controlable via music volume. --- engines/scumm/imuse/pcspk.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/engines/scumm/imuse/pcspk.cpp b/engines/scumm/imuse/pcspk.cpp index 1b8afcabe59..51f6950bf50 100644 --- a/engines/scumm/imuse/pcspk.cpp +++ b/engines/scumm/imuse/pcspk.cpp @@ -53,7 +53,11 @@ int PcSpkDriver::open() { _lastActiveChannel = 0; _lastActiveOut = 0; - _mixer->playStream(Audio::Mixer::kPlainSoundType, &_mixerSoundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true); + // We set the output sound type to music here to allow sound volume + // adjustment. The drawback here is that we can not control the music and + // sfx separately here. But the AdLib output has the same issue so it + // should not be that bad. + _mixer->playStream(Audio::Mixer::kMusicSoundType, &_mixerSoundHandle, this, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true); return 0; } From 0d02cc0ef5efe1ed3d16904f6622fa9cd520be1d Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Mon, 4 Jul 2011 11:18:00 +0200 Subject: [PATCH 063/731] REDHAT: Update list of packaged data files (cherry picked from commit 97674b66b8f71f3128f5e0b243b44a018529ff11) --- dists/redhat/scummvm.spec | 4 ++++ dists/redhat/scummvm.spec.in | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/dists/redhat/scummvm.spec b/dists/redhat/scummvm.spec index 777e0afc8ac..cd51f45c0ae 100644 --- a/dists/redhat/scummvm.spec +++ b/dists/redhat/scummvm.spec @@ -68,6 +68,8 @@ install -m644 -D dists/engine-data/queen.tbl %{buildroot}%{_datadir}/scummvm/que install -m644 -D dists/engine-data/sky.cpt %{buildroot}%{_datadir}/scummvm/sky.cpt install -m644 -D dists/engine-data/drascula.dat %{buildroot}%{_datadir}/scummvm/drascula.dat install -m644 -D dists/engine-data/teenagent.dat %{buildroot}%{_datadir}/scummvm/teenagent.dat +install -m644 -D dists/engine-data/hugo.dat %{buildroot}%{_datadir}/scummvm/hugo.dat +install -m644 -D dists/engine-data/toon.dat %{buildroot}%{_datadir}/scummvm/toon.dat desktop-file-install --vendor scummvm --dir=%{buildroot}/%{_datadir}/applications dists/scummvm.desktop %clean @@ -105,6 +107,8 @@ fi %{_datadir}/scummvm/lure.dat %{_datadir}/scummvm/drascula.dat %{_datadir}/scummvm/teenagent.dat +%{_datadir}/scummvm/hugo.dat +%{_datadir}/scummvm/toon.dat %{_mandir}/man6/scummvm.6* #------------------------------------------------------------------------------ diff --git a/dists/redhat/scummvm.spec.in b/dists/redhat/scummvm.spec.in index 13ce600d026..838a05411a9 100644 --- a/dists/redhat/scummvm.spec.in +++ b/dists/redhat/scummvm.spec.in @@ -68,6 +68,8 @@ install -m644 -D dists/engine-data/queen.tbl %{buildroot}%{_datadir}/scummvm/que install -m644 -D dists/engine-data/sky.cpt %{buildroot}%{_datadir}/scummvm/sky.cpt install -m644 -D dists/engine-data/drascula.dat %{buildroot}%{_datadir}/scummvm/drascula.dat install -m644 -D dists/engine-data/teenagent.dat %{buildroot}%{_datadir}/scummvm/teenagent.dat +install -m644 -D dists/engine-data/hugo.dat %{buildroot}%{_datadir}/scummvm/hugo.dat +install -m644 -D dists/engine-data/toon.dat %{buildroot}%{_datadir}/scummvm/toon.dat desktop-file-install --vendor scummvm --dir=%{buildroot}/%{_datadir}/applications dists/scummvm.desktop %clean @@ -105,6 +107,8 @@ fi %{_datadir}/scummvm/lure.dat %{_datadir}/scummvm/drascula.dat %{_datadir}/scummvm/teenagent.dat +%{_datadir}/scummvm/hugo.dat +%{_datadir}/scummvm/toon.dat %{_mandir}/man6/scummvm.6* #------------------------------------------------------------------------------ From 4ee228bb1692c4f77cea861cdea05282f4567591 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 10 Jul 2011 19:23:59 +0200 Subject: [PATCH 064/731] SCUMM: Fix some envelope bugs in PC Speaker output. --- engines/scumm/imuse/pcspk.cpp | 10 ++++------ engines/scumm/imuse/pcspk.h | 8 ++++---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/engines/scumm/imuse/pcspk.cpp b/engines/scumm/imuse/pcspk.cpp index 51f6950bf50..01e2ab3b7d1 100644 --- a/engines/scumm/imuse/pcspk.cpp +++ b/engines/scumm/imuse/pcspk.cpp @@ -21,8 +21,6 @@ #include "scumm/imuse/pcspk.h" -#include "common/debug.h" -#include "common/textconsole.h" #include "common/util.h" namespace Scumm { @@ -107,7 +105,7 @@ void PcSpkDriver::onTimer() { if (out.unkB && out.unkC) { out.unkA += out.unkB; if (out.instrument) - out.unkE = (out.instrument[out.unkA] * out.unkC) >> 4; + out.unkE = ((int8)out.instrument[out.unkA] * out.unkC) >> 4; } ++_effectTimer; @@ -515,7 +513,7 @@ void PcSpkDriver::updateEffectGenerator(MidiChannel_PcSpk &chan, EffectEnvelope break; case 3: - chan._out.unkC = (def.phase & 0xFF) + chan._instrument[1]; + chan._out.unkC = (def.phase & 0xFF) + chan._instrument[2]; break; case 4: @@ -540,10 +538,10 @@ void PcSpkDriver::updateEffectGenerator(MidiChannel_PcSpk &chan, EffectEnvelope } uint8 PcSpkDriver::advanceEffectEnvelope(EffectEnvelope &env, EffectDefinition &def) { - if (env.duration > 0) { + if (env.duration != 0) { env.duration -= 17; if (env.duration <= 0) { - env.duration = 0; + env.state = 0; return 0; } } diff --git a/engines/scumm/imuse/pcspk.h b/engines/scumm/imuse/pcspk.h index 3f70160988e..e77ac8c1bf5 100644 --- a/engines/scumm/imuse/pcspk.h +++ b/engines/scumm/imuse/pcspk.h @@ -62,7 +62,7 @@ private: struct EffectEnvelope { uint8 state; int16 currentLevel; - uint16 duration; + int16 duration; int16 maxLevel; int16 startLevel; uint8 loop; @@ -80,7 +80,7 @@ private: }; struct EffectDefinition { - uint16 phase; + int16 phase; uint8 type; uint8 useModWheel; EffectEnvelope *envelope; @@ -95,12 +95,12 @@ private: uint8 unkA; uint8 unkB; uint8 unkC; - uint16 unkE; + int16 unkE; EffectEnvelope effectEnvelopeA; EffectDefinition effectDefA; EffectEnvelope effectEnvelopeB; EffectDefinition effectDefB; - uint16 unk60; + int16 unk60; }; struct MidiChannel_PcSpk : public MidiChannel { From c46aa548d6d8a1eabb968bfd0152215490bf746c Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sun, 10 Jul 2011 15:20:33 -0400 Subject: [PATCH 065/731] AUDIO: Fix remaining AAC bugs by decoding with the same AAC context This introduces a new Audio::Codec class, based on DrMcCoy's solution for WMA in eos. --- audio/decoders/aac.cpp | 120 ++++++++++-------------------- audio/decoders/aac.h | 12 +-- audio/decoders/codec.h | 47 ++++++++++++ audio/decoders/quicktime.cpp | 41 ++++++++-- audio/decoders/quicktime_intern.h | 5 ++ 5 files changed, 127 insertions(+), 98 deletions(-) create mode 100644 audio/decoders/codec.h diff --git a/audio/decoders/aac.cpp b/audio/decoders/aac.cpp index 874062a7023..50325dc9f0d 100644 --- a/audio/decoders/aac.cpp +++ b/audio/decoders/aac.cpp @@ -28,74 +28,34 @@ #ifdef USE_FAAD #include "common/debug.h" +#include "common/memstream.h" #include "common/stream.h" #include "common/textconsole.h" #include "common/util.h" #include "audio/audiostream.h" +#include "audio/decoders/codec.h" +#include "audio/decoders/raw.h" #include namespace Audio { -class AACStream : public AudioStream { +class AACDecoder : public Codec { public: - AACStream(Common::SeekableReadStream *stream, - DisposeAfterUse::Flag disposeStream, - Common::SeekableReadStream *extraData, + AACDecoder(Common::SeekableReadStream *extraData, DisposeAfterUse::Flag disposeExtraData); - ~AACStream(); + ~AACDecoder(); - int readBuffer(int16 *buffer, const int numSamples); - - bool endOfData() const { return _inBufferPos >= _inBufferSize && !_remainingSamples; } - bool isStereo() const { return _channels == 2; } - int getRate() const { return _rate; } + AudioStream *decodeFrame(Common::SeekableReadStream &stream); private: NeAACDecHandle _handle; byte _channels; unsigned long _rate; - - byte *_inBuffer; - uint32 _inBufferSize; - uint32 _inBufferPos; - - int16 *_remainingSamples; - uint32 _remainingSamplesSize; - uint32 _remainingSamplesPos; - - void init(Common::SeekableReadStream *extraData); }; -AACStream::AACStream(Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeStream, - Common::SeekableReadStream *extraData, DisposeAfterUse::Flag disposeExtraData) { - - _remainingSamples = 0; - _inBufferPos = 0; - - init(extraData); - - // Copy all the data to a pointer so it can be passed through - // (At least MPEG-4 chunks shouldn't be large) - _inBufferSize = stream->size(); - _inBuffer = new byte[_inBufferSize]; - stream->read(_inBuffer, _inBufferSize); - - if (disposeStream == DisposeAfterUse::YES) - delete stream; - - if (disposeExtraData == DisposeAfterUse::YES) - delete extraData; -} - -AACStream::~AACStream() { - NeAACDecClose(_handle); - delete[] _inBuffer; - delete[] _remainingSamples; -} - -void AACStream::init(Common::SeekableReadStream *extraData) { +AACDecoder::AACDecoder(Common::SeekableReadStream *extraData, DisposeAfterUse::Flag disposeExtraData) { // Open the library _handle = NeAACDecOpen(); @@ -117,59 +77,55 @@ void AACStream::init(Common::SeekableReadStream *extraData) { if (err < 0) error("Could not initialize AAC decoder: %s", NeAACDecGetErrorMessage(err)); + + if (disposeExtraData == DisposeAfterUse::YES) + delete extraData; } -int AACStream::readBuffer(int16 *buffer, const int numSamples) { - int samples = 0; +AACDecoder::~AACDecoder() { + NeAACDecClose(_handle); +} - assert((numSamples % _channels) == 0); +AudioStream *AACDecoder::decodeFrame(Common::SeekableReadStream &stream) { + // read everything into a buffer + uint32 inBufferPos = 0; + uint32 inBufferSize = stream.size(); + byte *inBuffer = new byte[inBufferSize]; + stream.read(inBuffer, inBufferSize); - // Dip into our remaining samples pool if it's available - if (_remainingSamples) { - samples = MIN(numSamples, _remainingSamplesSize - _remainingSamplesPos); - - memcpy(buffer, _remainingSamples + _remainingSamplesPos, samples * 2); - _remainingSamplesPos += samples; - - if (_remainingSamplesPos == _remainingSamplesSize) { - delete[] _remainingSamples; - _remainingSamples = 0; - } - } + QueuingAudioStream *audioStream = makeQueuingAudioStream(_rate, _channels == 2); // Decode until we have enough samples (or there's no more left) - while (samples < numSamples && !endOfData()) { + while (inBufferPos < inBufferSize) { NeAACDecFrameInfo frameInfo; - uint16 *decodedSamples = (uint16 *)NeAACDecDecode(_handle, &frameInfo, _inBuffer + _inBufferPos, _inBufferSize - _inBufferPos); + void *decodedSamples = NeAACDecDecode(_handle, &frameInfo, inBuffer + inBufferPos, inBufferSize - inBufferPos); if (frameInfo.error != 0) error("Failed to decode AAC frame: %s", NeAACDecGetErrorMessage(frameInfo.error)); - int decodedSampleSize = frameInfo.samples; - int copySamples = (decodedSampleSize > (numSamples - samples)) ? (numSamples - samples) : decodedSampleSize; + byte *buffer = (byte *)malloc(frameInfo.samples * 2); + memcpy(buffer, decodedSamples, frameInfo.samples * 2); - memcpy(buffer + samples, decodedSamples, copySamples * 2); - samples += copySamples; + byte flags = FLAG_16BITS; - // Copy leftover samples for use in a later readBuffer() call - if (copySamples != decodedSampleSize) { - _remainingSamplesSize = decodedSampleSize - copySamples; - _remainingSamples = new int16[_remainingSamplesSize]; - _remainingSamplesPos = 0; - memcpy(_remainingSamples, decodedSamples + copySamples, _remainingSamplesSize * 2); - } + if (_channels == 2) + flags |= FLAG_STEREO; - _inBufferPos += frameInfo.bytesconsumed; +#ifdef SCUMM_LITTLE_ENDIAN + flags |= FLAG_LITTLE_ENDIAN; +#endif + + audioStream->queueBuffer(buffer, frameInfo.samples * 2, DisposeAfterUse::YES, flags); + + inBufferPos += frameInfo.bytesconsumed; } - return samples; + return audioStream; } // Factory function -AudioStream *makeAACStream(Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeStream, - Common::SeekableReadStream *extraData, DisposeAfterUse::Flag disposeExtraData) { - - return new AACStream(stream, disposeStream, extraData, disposeExtraData); +Codec *makeAACDecoder(Common::SeekableReadStream *extraData, DisposeAfterUse::Flag disposeExtraData) { + return new AACDecoder(extraData, disposeExtraData); } } // End of namespace Audio diff --git a/audio/decoders/aac.h b/audio/decoders/aac.h index efcbcc6f422..c5085fadaa0 100644 --- a/audio/decoders/aac.h +++ b/audio/decoders/aac.h @@ -43,23 +43,19 @@ namespace Common { namespace Audio { -class AudioStream; +class Codec; /** - * Create a new AudioStream from the AAC data of an MPEG-4 file in the given stream. + * Create a new Codec for decoding AAC data of an MPEG-4 file in the given stream. * * @note This should *only* be called by our QuickTime/MPEG-4 decoder since it relies * on the MPEG-4 extra data. If you want to decode a file using AAC, go use * makeQuickTimeStream() instead! - * @param stream the SeekableReadStream from which to read the AAC data - * @param disposeStream whether to delete the stream after use * @param extraData the SeekableReadStream from which to read the AAC extra data * @param disposeExtraData whether to delete the extra data stream after use - * @return a new AudioStream, or NULL, if an error occurred + * @return a new Codec, or NULL, if an error occurred */ -AudioStream *makeAACStream( - Common::SeekableReadStream *stream, - DisposeAfterUse::Flag disposeStream, +Codec *makeAACDecoder( Common::SeekableReadStream *extraData, DisposeAfterUse::Flag disposeExtraData = DisposeAfterUse::NO); diff --git a/audio/decoders/codec.h b/audio/decoders/codec.h new file mode 100644 index 00000000000..fde7e59f54d --- /dev/null +++ b/audio/decoders/codec.h @@ -0,0 +1,47 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + * + */ + +#ifndef AUDIO_DECODERS_CODEC_H +#define AUDIO_DECODERS_CODEC_H + +namespace Common { + class SeekableReadStream; +} + +namespace Audio { + +class AudioStream; + +class Codec { +public: + Codec() {} + virtual ~Codec() {} + + virtual AudioStream *decodeFrame(Common::SeekableReadStream &data) = 0; +}; + +} // End of namespace Audio + +#endif diff --git a/audio/decoders/quicktime.cpp b/audio/decoders/quicktime.cpp index 0ad2821cd5d..4531ccee196 100644 --- a/audio/decoders/quicktime.cpp +++ b/audio/decoders/quicktime.cpp @@ -30,6 +30,7 @@ #include "common/textconsole.h" #include "audio/audiostream.h" +#include "audio/decoders/codec.h" #include "audio/decoders/quicktime.h" #include "audio/decoders/quicktime_intern.h" @@ -86,6 +87,9 @@ void QuickTimeAudioDecoder::init() { // Make sure the bits per sample transfers to the sample size if (entry->getCodecTag() == MKTAG('r', 'a', 'w', ' ') || entry->getCodecTag() == MKTAG('t', 'w', 'o', 's')) _tracks[_audioTrackIndex]->sampleSize = (entry->_bitsPerSample / 8) * entry->_channels; + + // Initialize the codec (if necessary) + entry->initCodec(); } } } @@ -217,6 +221,9 @@ void QuickTimeAudioDecoder::setAudioStreamPos(const Timestamp &where) { Audio::QuickTimeAudioDecoder::AudioSampleDesc *entry = (Audio::QuickTimeAudioDecoder::AudioSampleDesc *)_tracks[_audioTrackIndex]->sampleDescs[0]; _audStream = Audio::makeQueuingAudioStream(entry->_sampleRate, entry->_channels == 2); + // Reinitialize the codec + entry->initCodec(); + // First, we need to track down what audio sample we need Audio::Timestamp curAudioTime = where.convertToFramerate(_tracks[_audioTrackIndex]->timeScale); uint32 sample = curAudioTime.totalNumberOfFrames(); @@ -266,6 +273,11 @@ QuickTimeAudioDecoder::AudioSampleDesc::AudioSampleDesc(Common::QuickTimeParser: _samplesPerFrame = 0; _bytesPerFrame = 0; _bitsPerSample = 0; + _codec = 0; +} + +QuickTimeAudioDecoder::AudioSampleDesc::~AudioSampleDesc() { + delete _codec; } bool QuickTimeAudioDecoder::AudioSampleDesc::isAudioCodecSupported() const { @@ -313,7 +325,12 @@ AudioStream *QuickTimeAudioDecoder::AudioSampleDesc::createAudioStream(Common::S if (!stream) return 0; - if (_codecTag == MKTAG('t', 'w', 'o', 's') || _codecTag == MKTAG('r', 'a', 'w', ' ')) { + if (_codec) { + // If we've loaded a codec, make sure we use first + AudioStream *audioStream = _codec->decodeFrame(*stream); + delete stream; + return audioStream; + } else if (_codecTag == MKTAG('t', 'w', 'o', 's') || _codecTag == MKTAG('r', 'a', 'w', ' ')) { // Fortunately, most of the audio used in Myst videos is raw... uint16 flags = 0; if (_codecTag == MKTAG('r', 'a', 'w', ' ')) @@ -330,12 +347,6 @@ AudioStream *QuickTimeAudioDecoder::AudioSampleDesc::createAudioStream(Common::S } else if (_codecTag == MKTAG('i', 'm', 'a', '4')) { // Riven uses this codec (as do some Myst ME videos) return makeADPCMStream(stream, DisposeAfterUse::YES, stream->size(), kADPCMApple, _sampleRate, _channels, 34); - } else if (_codecTag == MKTAG('m', 'p', '4', 'a')) { - // The 7th Guest iOS uses an MPEG-4 codec -#ifdef USE_FAAD - if (_parentTrack->objectTypeMP4 == 0x40) - return makeAACStream(stream, DisposeAfterUse::YES, _parentTrack->extraData); -#endif #ifdef AUDIO_QDM2_H } else if (_codecTag == MKTAG('Q', 'D', 'M', '2')) { // Myst ME uses this codec for many videos @@ -344,10 +355,24 @@ AudioStream *QuickTimeAudioDecoder::AudioSampleDesc::createAudioStream(Common::S } error("Unsupported audio codec"); - return NULL; } +void QuickTimeAudioDecoder::AudioSampleDesc::initCodec() { + delete _codec; _codec = 0; + + switch (_codecTag) { + case MKTAG('m', 'p', '4', 'a'): +#ifdef USE_FAAD + if (_parentTrack->objectTypeMP4 == 0x40) + _codec = makeAACDecoder(_parentTrack->extraData); +#endif + break; + default: + break; + } +} + /** * A wrapper around QuickTimeAudioDecoder that implements the RewindableAudioStream API */ diff --git a/audio/decoders/quicktime_intern.h b/audio/decoders/quicktime_intern.h index f288d5604bf..7ce06b85fee 100644 --- a/audio/decoders/quicktime_intern.h +++ b/audio/decoders/quicktime_intern.h @@ -45,6 +45,7 @@ namespace Common { namespace Audio { class AudioStream; +class Codec; class QueuingAudioStream; class QuickTimeAudioDecoder : public Common::QuickTimeParser { @@ -68,10 +69,12 @@ protected: class AudioSampleDesc : public Common::QuickTimeParser::SampleDesc { public: AudioSampleDesc(Common::QuickTimeParser::Track *parentTrack, uint32 codecTag); + ~AudioSampleDesc(); bool isAudioCodecSupported() const; uint32 getAudioChunkSampleCount(uint chunk) const; AudioStream *createAudioStream(Common::SeekableReadStream *stream) const; + void initCodec(); // TODO: Make private in the long run uint16 _bitsPerSample; @@ -79,6 +82,8 @@ protected: uint32 _sampleRate; uint32 _samplesPerFrame; uint32 _bytesPerFrame; + + Codec *_codec; }; // Common::QuickTimeParser API From 46aabed3f5bdb3549e3c804793b5198de4b1702c Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sun, 10 Jul 2011 15:46:35 -0400 Subject: [PATCH 066/731] AUDIO: Fix QDM2 sound in QuickTime files --- audio/decoders/qdm2.cpp | 100 ++++++++++++++++++----------------- audio/decoders/qdm2.h | 15 +++--- audio/decoders/quicktime.cpp | 10 ++-- 3 files changed, 66 insertions(+), 59 deletions(-) diff --git a/audio/decoders/qdm2.cpp b/audio/decoders/qdm2.cpp index a178c363b5b..ec2911ef20b 100644 --- a/audio/decoders/qdm2.cpp +++ b/audio/decoders/qdm2.cpp @@ -28,7 +28,9 @@ #ifdef AUDIO_QDM2_H #include "audio/audiostream.h" +#include "audio/decoders/codec.h" #include "audio/decoders/qdm2data.h" +#include "audio/decoders/raw.h" #include "common/array.h" #include "common/debug.h" @@ -150,19 +152,14 @@ struct RDFTContext { FFTContext fft; }; -class QDM2Stream : public AudioStream { +class QDM2Stream : public Codec { public: - QDM2Stream(Common::SeekableReadStream *stream, Common::SeekableReadStream *extraData); + QDM2Stream(Common::SeekableReadStream *extraData, DisposeAfterUse::Flag disposeExtraData); ~QDM2Stream(); - bool isStereo() const { return _channels == 2; } - bool endOfData() const { return _stream->pos() >= _stream->size() && _outputSamples.size() == 0 && _subPacket == 0; } - int getRate() const { return _sampleRate; } - int readBuffer(int16 *buffer, const int numSamples); + AudioStream *decodeFrame(Common::SeekableReadStream &stream); private: - Common::SeekableReadStream *_stream; - // Parameters from codec header, do not change during playback uint8 _channels; uint16 _sampleRate; @@ -204,7 +201,6 @@ private: // I/O data uint8 *_compressedData; float _outputBuffer[1024]; - Common::Array _outputSamples; // Synthesis filter int16 ff_mpa_synth_window[512]; @@ -285,7 +281,7 @@ private: void qdm2_fft_tone_synthesizer(uint8 sub_packet); void qdm2_calculate_fft(int channel); void qdm2_synthesis_filter(uint8 index); - int qdm2_decodeFrame(Common::SeekableReadStream *in); + bool qdm2_decodeFrame(Common::SeekableReadStream &in, QueuingAudioStream *audioStream); }; // Fix compilation for non C99-compliant compilers, like MSVC @@ -1711,7 +1707,7 @@ void QDM2Stream::initVlc(void) { } } -QDM2Stream::QDM2Stream(Common::SeekableReadStream *stream, Common::SeekableReadStream *extraData) { +QDM2Stream::QDM2Stream(Common::SeekableReadStream *extraData, DisposeAfterUse::Flag disposeExtraData) { uint32 tmp; int32 tmp_s; int tmp_val; @@ -1719,7 +1715,6 @@ QDM2Stream::QDM2Stream(Common::SeekableReadStream *stream, Common::SeekableReadS debug(1, "QDM2Stream::QDM2Stream() Call"); - _stream = stream; _compressedData = NULL; _subPacket = 0; _superBlockStart = 0; @@ -1906,11 +1901,13 @@ QDM2Stream::QDM2Stream(Common::SeekableReadStream *stream, Common::SeekableReadS initNoiseSamples(); _compressedData = new uint8[_packetSize]; + + if (disposeExtraData == DisposeAfterUse::YES) + delete extraData; } QDM2Stream::~QDM2Stream() { delete[] _compressedData; - delete _stream; } static int qdm2_get_vlc(GetBitContext *gb, VLC *vlc, int flag, int depth) { @@ -3158,30 +3155,30 @@ void QDM2Stream::qdm2_synthesis_filter(uint8 index) _outputBuffer[_channels * i + ch] += (float)(samples[_channels * sub_sampling * i + ch] >> (sizeof(int16)*8-16)); } -int QDM2Stream::qdm2_decodeFrame(Common::SeekableReadStream *in) { - debug(1, "QDM2Stream::qdm2_decodeFrame in->pos(): %d in->size(): %d", in->pos(), in->size()); +bool QDM2Stream::qdm2_decodeFrame(Common::SeekableReadStream &in, QueuingAudioStream *audioStream) { + debug(1, "QDM2Stream::qdm2_decodeFrame in.pos(): %d in.size(): %d", in.pos(), in.size()); int ch, i; const int frame_size = (_sFrameSize * _channels); // If we're in any packet but the first, seek back to the first if (_subPacket == 0) - _superBlockStart = in->pos(); + _superBlockStart = in.pos(); else - in->seek(_superBlockStart); + in.seek(_superBlockStart); // select input buffer - if (in->eos() || in->pos() >= in->size()) { + if (in.eos() || in.pos() >= in.size()) { debug(1, "QDM2Stream::qdm2_decodeFrame End of Input Stream"); - return 0; + return false; } - if ((in->size() - in->pos()) < _packetSize) { - debug(1, "QDM2Stream::qdm2_decodeFrame Insufficient Packet Data in Input Stream Found: %d Need: %d", in->size() - in->pos(), _packetSize); - return 0; + if ((in.size() - in.pos()) < _packetSize) { + debug(1, "QDM2Stream::qdm2_decodeFrame Insufficient Packet Data in Input Stream Found: %d Need: %d", in.size() - in.pos(), _packetSize); + return false; } - if (!in->eos()) { - in->read(_compressedData, _packetSize); + if (!in.eos()) { + in.read(_compressedData, _packetSize); debug(1, "QDM2Stream::qdm2_decodeFrame constructed input data"); } @@ -3190,7 +3187,7 @@ int QDM2Stream::qdm2_decodeFrame(Common::SeekableReadStream *in) { memset(&_outputBuffer[frame_size], 0, frame_size * sizeof(float)); debug(1, "QDM2Stream::qdm2_decodeFrame cleared outputBuffer"); - if (!in->eos()) { + if (!in.eos()) { // decode block of QDM2 compressed data debug(1, "QDM2Stream::qdm2_decodeFrame decode block of QDM2 compressed data"); if (_subPacket == 0) { @@ -3218,7 +3215,7 @@ int QDM2Stream::qdm2_decodeFrame(Common::SeekableReadStream *in) { if (!_hasErrors && _subPacketListC[0].packet != NULL) { error("QDM2 : has errors, and C list is not empty"); - return 0; + return false; } } @@ -3236,6 +3233,12 @@ int QDM2Stream::qdm2_decodeFrame(Common::SeekableReadStream *in) { debug(1, "QDM2Stream::qdm2_decodeFrame clip and convert output float[] to 16bit signed samples"); } + if (frame_size == 0) + return false; + + // Prepare a buffer for queuing + uint16 *outputBuffer = (uint16 *)malloc(frame_size * 2); + for (i = 0; i < frame_size; i++) { int value = (int)_outputBuffer[i]; @@ -3244,34 +3247,35 @@ int QDM2Stream::qdm2_decodeFrame(Common::SeekableReadStream *in) { else if (value < -SOFTCLIP_THRESHOLD) value = (value < -HARDCLIP_THRESHOLD) ? -32767 : -_softclipTable[-value - SOFTCLIP_THRESHOLD]; - _outputSamples.push_back(value); - } - return frame_size; -} - -int QDM2Stream::readBuffer(int16 *buffer, const int numSamples) { - debug(1, "QDM2Stream::readBuffer numSamples: %d", numSamples); - int32 decodedSamples = _outputSamples.size(); - int32 i; - - while (decodedSamples < numSamples) { - i = qdm2_decodeFrame(_stream); - if (i == 0) - break; // Out Of Decode Frames... - decodedSamples += i; + outputBuffer[i] = value; } - if (decodedSamples > numSamples) - decodedSamples = numSamples; + // Queue the translated buffer to our stream + byte flags = FLAG_16BITS; - for (i = 0; i < decodedSamples; i++) - buffer[i] = _outputSamples.remove_at(0); + if (_channels == 2) + flags |= FLAG_STEREO; - return decodedSamples; +#ifdef SCUMM_LITTLE_ENDIAN + flags |= FLAG_LITTLE_ENDIAN; +#endif + + audioStream->queueBuffer((byte *)outputBuffer, frame_size * 2, DisposeAfterUse::YES, flags); + + return true; } -AudioStream *makeQDM2Stream(Common::SeekableReadStream *stream, Common::SeekableReadStream *extraData) { - return new QDM2Stream(stream, extraData); +AudioStream *QDM2Stream::decodeFrame(Common::SeekableReadStream &stream) { + QueuingAudioStream *audioStream = makeQueuingAudioStream(_sampleRate, _channels == 2); + + while (qdm2_decodeFrame(stream, audioStream)) + ; + + return audioStream; +} + +Codec *makeQDM2Decoder(Common::SeekableReadStream *extraData, DisposeAfterUse::Flag disposeExtraData) { + return new QDM2Stream(extraData, disposeExtraData); } } // End of namespace Audio diff --git a/audio/decoders/qdm2.h b/audio/decoders/qdm2.h index c0ec647bfdd..f0793e3c1e0 100644 --- a/audio/decoders/qdm2.h +++ b/audio/decoders/qdm2.h @@ -26,22 +26,25 @@ #ifndef AUDIO_QDM2_H #define AUDIO_QDM2_H +#include "common/types.h" + namespace Common { class SeekableReadStream; } namespace Audio { -class AudioStream; +class Codec; /** - * Create a new AudioStream from the QDM2 data in the given stream. + * Create a new Codec from the QDM2 data in the given stream. * - * @param stream the SeekableReadStream from which to read the FLAC data - * @param extraData the QuickTime extra data stream - * @return a new AudioStream, or NULL, if an error occurred + * @param extraData the QuickTime extra data stream + * @param disposeExtraData the QuickTime extra data stream + * @return a new Codec, or NULL, if an error occurred */ -AudioStream *makeQDM2Stream(Common::SeekableReadStream *stream, Common::SeekableReadStream *extraData); +Codec *makeQDM2Decoder(Common::SeekableReadStream *extraData, + DisposeAfterUse::Flag disposeExtraData = DisposeAfterUse::NO); } // End of namespace Audio diff --git a/audio/decoders/quicktime.cpp b/audio/decoders/quicktime.cpp index 4531ccee196..a39fedc1d6d 100644 --- a/audio/decoders/quicktime.cpp +++ b/audio/decoders/quicktime.cpp @@ -347,11 +347,6 @@ AudioStream *QuickTimeAudioDecoder::AudioSampleDesc::createAudioStream(Common::S } else if (_codecTag == MKTAG('i', 'm', 'a', '4')) { // Riven uses this codec (as do some Myst ME videos) return makeADPCMStream(stream, DisposeAfterUse::YES, stream->size(), kADPCMApple, _sampleRate, _channels, 34); -#ifdef AUDIO_QDM2_H - } else if (_codecTag == MKTAG('Q', 'D', 'M', '2')) { - // Myst ME uses this codec for many videos - return makeQDM2Stream(stream, _parentTrack->extraData); -#endif } error("Unsupported audio codec"); @@ -362,6 +357,11 @@ void QuickTimeAudioDecoder::AudioSampleDesc::initCodec() { delete _codec; _codec = 0; switch (_codecTag) { + case MKTAG('Q', 'D', 'M', '2'): +#ifdef AUDIO_QDM2_H + _codec = makeQDM2Decoder(_parentTrack->extraData); +#endif + break; case MKTAG('m', 'p', '4', 'a'): #ifdef USE_FAAD if (_parentTrack->objectTypeMP4 == 0x40) From f1d3b35cc4e5d254b5a6738ec392aa0d61afeea2 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 10 Jul 2011 22:10:43 +0200 Subject: [PATCH 067/731] JANITORIAL: Remove svn keywords from audio/decoders/codec.h --- audio/decoders/codec.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/audio/decoders/codec.h b/audio/decoders/codec.h index fde7e59f54d..93b6878deed 100644 --- a/audio/decoders/codec.h +++ b/audio/decoders/codec.h @@ -8,19 +8,16 @@ * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. - + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * $URL$ - * $Id$ - * */ #ifndef AUDIO_DECODERS_CODEC_H From b8f6257dded94aeef9b8290801353ca19137c60a Mon Sep 17 00:00:00 2001 From: athrxx Date: Sun, 10 Jul 2011 22:17:37 +0200 Subject: [PATCH 068/731] SCUMM: minor bug fix in FM-Towns midi driver --- audio/softsynth/fmtowns_pc98/towns_midi.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/audio/softsynth/fmtowns_pc98/towns_midi.cpp b/audio/softsynth/fmtowns_pc98/towns_midi.cpp index e415a0dda54..d69ed73ee68 100644 --- a/audio/softsynth/fmtowns_pc98/towns_midi.cpp +++ b/audio/softsynth/fmtowns_pc98/towns_midi.cpp @@ -464,9 +464,10 @@ int TownsMidiOutputChannel::advanceEffectEnvelope(EffectEnvelope *s, EffectDef * s->currentLevel = t; s->modWheelLast = s->modWheelState; t = getEffectModLevel(t, s->modWheelState); - if (t != d->phase) + if (t != d->phase) { d->phase = t; - retFlags |= 1; + retFlags |= 1; + } } if (--s->stepCounter) From ae4aad40e5b81ad5582953509c993d92d8f68d16 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Mon, 11 Jul 2011 22:20:30 +0200 Subject: [PATCH 069/731] NEWS: Mention SCUMM v5 PC Speaker support in 1.4.0 section. --- NEWS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NEWS b/NEWS index 9f1e7c698eb..4d5fa5c3255 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,9 @@ For a more comprehensive changelog of the latest experimental code, see: https://github.com/scummvm/scummvm/commits/ 1.4.0 (????-??-??) + SCUMM: + - Implemented PC Speaker support for SCUMM v5 games. + SDL ports: - Added support for OpenGL (GSoC Task). From 25c0f0a772731144f223ac89a9d9a1977861c616 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Mon, 11 Jul 2011 22:53:41 +0200 Subject: [PATCH 070/731] SCUMM: Adapt iMuse code formatting to our standards. --- engines/scumm/imuse/imuse.cpp | 123 +++++++++++++------------- engines/scumm/imuse/imuse.h | 4 +- engines/scumm/imuse/imuse_internal.h | 34 +++---- engines/scumm/imuse/imuse_part.cpp | 4 +- engines/scumm/imuse/imuse_player.cpp | 37 ++++---- engines/scumm/imuse/instrument.cpp | 48 +++++----- engines/scumm/imuse/instrument.h | 2 +- engines/scumm/imuse/sysex_samnmax.cpp | 3 +- engines/scumm/imuse/sysex_scumm.cpp | 13 ++- 9 files changed, 134 insertions(+), 134 deletions(-) diff --git a/engines/scumm/imuse/imuse.cpp b/engines/scumm/imuse/imuse.cpp index 9fb6087e53a..451721cf701 100644 --- a/engines/scumm/imuse/imuse.cpp +++ b/engines/scumm/imuse/imuse.cpp @@ -44,31 +44,31 @@ namespace Scumm { //////////////////////////////////////// IMuseInternal::IMuseInternal() : -_native_mt32(false), -_enable_gs(false), -_sc55(false), -_midi_adlib(NULL), -_midi_native(NULL), -_sysex(NULL), -_paused(false), -_initialized(false), -_tempoFactor(0), -_player_limit(ARRAYSIZE(_players)), -_recycle_players(false), -_queue_end(0), -_queue_pos(0), -_queue_sound(0), -_queue_adding(0), -_queue_marker(0), -_queue_cleared(0), -_master_volume(0), -_music_volume(0), -_trigger_count(0), -_snm_trigger_index(0), -_pcSpeaker(false) { - memset(_channel_volume,0,sizeof(_channel_volume)); - memset(_channel_volume_eff,0,sizeof(_channel_volume_eff)); - memset(_volchan_table,0,sizeof(_volchan_table)); + _native_mt32(false), + _enable_gs(false), + _sc55(false), + _midi_adlib(NULL), + _midi_native(NULL), + _sysex(NULL), + _paused(false), + _initialized(false), + _tempoFactor(0), + _player_limit(ARRAYSIZE(_players)), + _recycle_players(false), + _queue_end(0), + _queue_pos(0), + _queue_sound(0), + _queue_adding(0), + _queue_marker(0), + _queue_cleared(0), + _master_volume(0), + _music_volume(0), + _trigger_count(0), + _snm_trigger_index(0), + _pcSpeaker(false) { + memset(_channel_volume, 0, sizeof(_channel_volume)); + memset(_channel_volume_eff, 0, sizeof(_channel_volume_eff)); + memset(_volchan_table, 0, sizeof(_volchan_table)); } IMuseInternal::~IMuseInternal() { @@ -120,7 +120,7 @@ byte *IMuseInternal::findStartOfSound(int sound, int ct) { // Check for old-style headers first, like 'RO' int trFlag = (kMThd | kFORM); - if (ptr[0] == 'R' && ptr[1] == 'O'&& ptr[2] != 'L') + if (ptr[0] == 'R' && ptr[1] == 'O' && ptr[2] != 'L') return ct == trFlag ? ptr : 0; if (ptr[4] == 'S' && ptr[5] == 'O') return ct == trFlag ? ptr + 4 : 0; @@ -154,22 +154,22 @@ bool IMuseInternal::isMT32(int sound) { uint32 tag = READ_BE_UINT32(ptr); switch (tag) { - case MKTAG('A','D','L',' '): - case MKTAG('A','S','F','X'): // Special AD class for old AdLib sound effects - case MKTAG('S','P','K',' '): + case MKTAG('A', 'D', 'L', ' '): + case MKTAG('A', 'S', 'F', 'X'): // Special AD class for old AdLib sound effects + case MKTAG('S', 'P', 'K', ' '): return false; - case MKTAG('A','M','I',' '): - case MKTAG('R','O','L',' '): + case MKTAG('A', 'M', 'I', ' '): + case MKTAG('R', 'O', 'L', ' '): return true; - case MKTAG('M','A','C',' '): // Occurs in the Mac version of FOA and MI2 + case MKTAG('M', 'A', 'C', ' '): // Occurs in the Mac version of FOA and MI2 return true; - case MKTAG('G','M','D',' '): + case MKTAG('G', 'M', 'D', ' '): return false; - case MKTAG('M','I','D','I'): // Occurs in Sam & Max + case MKTAG('M', 'I', 'D', 'I'): // Occurs in Sam & Max // HE games use Roland music if (ptr[8] == 'H' && ptr[9] == 'S') return true; @@ -196,20 +196,20 @@ bool IMuseInternal::isMIDI(int sound) { uint32 tag = READ_BE_UINT32(ptr); switch (tag) { - case MKTAG('A','D','L',' '): - case MKTAG('A','S','F','X'): // Special AD class for old AdLib sound effects - case MKTAG('S','P','K',' '): + case MKTAG('A', 'D', 'L', ' '): + case MKTAG('A', 'S', 'F', 'X'): // Special AD class for old AdLib sound effects + case MKTAG('S', 'P', 'K', ' '): return false; - case MKTAG('A','M','I',' '): - case MKTAG('R','O','L',' '): + case MKTAG('A', 'M', 'I', ' '): + case MKTAG('R', 'O', 'L', ' '): return true; - case MKTAG('M','A','C',' '): // Occurs in the Mac version of FOA and MI2 + case MKTAG('M', 'A', 'C', ' '): // Occurs in the Mac version of FOA and MI2 return true; - case MKTAG('G','M','D',' '): - case MKTAG('M','I','D','I'): // Occurs in Sam & Max + case MKTAG('G', 'M', 'D', ' '): + case MKTAG('M', 'I', 'D', 'I'): // Occurs in Sam & Max return true; } @@ -382,7 +382,8 @@ int IMuseInternal::save_or_load(Serializer *ser, ScummEngine *scumm) { for (i = 0; i < ARRAYSIZE(_parts); ++i) _parts[i].saveLoadWithSerializer(ser); - { // Load/save the instrument definitions, which were revamped with V11. + { + // Load/save the instrument definitions, which were revamped with V11. Part *part = &_parts[0]; if (ser->getVersion() >= VER(11)) { for (i = ARRAYSIZE(_parts); i; --i, ++part) { @@ -527,7 +528,7 @@ void IMuseInternal::stopAllSounds() { int IMuseInternal::getSoundStatus(int sound) const { Common::StackLock lock(_mutex, "IMuseInternal::getSoundStatus()"); - return getSoundStatus_internal (sound, true); + return getSoundStatus_internal(sound, true); } int IMuseInternal::getMusicTimer() { @@ -570,7 +571,7 @@ bool IMuseInternal::startSound_internal(int sound, int offset) { int i; ImTrigger *trigger = _snm_triggers; for (i = ARRAYSIZE(_snm_triggers); i; --i, ++trigger) { - if (trigger->sound && trigger->id && trigger->command[0] == 8 && trigger->command[1] == sound && getSoundStatus_internal (trigger->sound,true)) + if (trigger->sound && trigger->id && trigger->command[0] == 8 && trigger->command[1] == sound && getSoundStatus_internal(trigger->sound, true)) return false; } @@ -668,9 +669,7 @@ int IMuseInternal::getSoundStatus_internal(int sound, bool ignoreFadeouts) const return (sound == -1) ? 0 : get_queue_sound_status(sound); } -int32 IMuseInternal::doCommand_internal - (int a, int b, int c, int d, int e, int f, int g, int h) -{ +int32 IMuseInternal::doCommand_internal(int a, int b, int c, int d, int e, int f, int g, int h) { int args[8]; args[0] = a; args[1] = b; @@ -738,7 +737,7 @@ int32 IMuseInternal::doCommand_internal(int numargs, int a[]) { } return -1; case 13: - return getSoundStatus_internal (a[1], true); + return getSoundStatus_internal(a[1], true); case 14: // Sam and Max: Parameter fade player = findActivePlayer(a[1]); @@ -784,8 +783,7 @@ int32 IMuseInternal::doCommand_internal(int numargs, int a[]) { a[0] = 0; for (i = 0; i < ARRAYSIZE(_snm_triggers); ++i) { if (_snm_triggers[i].sound == a[1] && _snm_triggers[i].id && - (a[3] == -1 || _snm_triggers[i].id == a[3])) - { + (a[3] == -1 || _snm_triggers[i].id == a[3])) { ++a[0]; } } @@ -1007,9 +1005,9 @@ int IMuseInternal::get_queue_sound_status(int sound) const { i = (i + 1) % ARRAYSIZE(_cmd_queue); } - for (i = 0; i < ARRAYSIZE (_deferredCommands); ++i) { + for (i = 0; i < ARRAYSIZE(_deferredCommands); ++i) { if (_deferredCommands[i].time_left && _deferredCommands[i].a == 8 && - _deferredCommands[i].b == sound) { + _deferredCommands[i].b == sound) { return 2; } } @@ -1218,7 +1216,7 @@ int32 IMuseInternal::ImSetTrigger(int sound, int id, int a, int b, int c, int d, // NOTE: We ONLY do this if the sound that will trigger the command is actually // playing. Otherwise, there's a problem when exiting and re-entering the // Bumpusville mansion. Ref Bug #780918. - if (trig->command[0] == 8 && getSoundStatus_internal(trig->command[1],true) && getSoundStatus_internal(sound,true)) + if (trig->command[0] == 8 && getSoundStatus_internal(trig->command[1], true) && getSoundStatus_internal(sound, true)) stopSound_internal(trig->command[1]); return 0; } @@ -1251,8 +1249,7 @@ int32 IMuseInternal::ImFireAllTriggers(int sound) { return (count > 0) ? 0 : -1; } -int IMuseInternal::set_channel_volume(uint chan, uint vol) -{ +int IMuseInternal::set_channel_volume(uint chan, uint vol) { if (chan >= 8 || vol > 127) return -1; @@ -1432,7 +1429,7 @@ void IMuseInternal::initMT32(MidiDriver *midi) { // Display a welcome message on MT-32 displays. memcpy(&buffer[0], "\x41\x10\x16\x12\x20\x00\x00", 7); memcpy(&buffer[7], " ", 20); - memcpy(buffer + 7 +(20 - len) / 2, info, len); + memcpy(buffer + 7 + (20 - len) / 2, info, len); byte checksum = 0; for (int i = 4; i < 27; ++i) checksum -= buffer[i]; @@ -1478,9 +1475,9 @@ void IMuseInternal::initGM(MidiDriver *midi) { // Set Channels 1-16 to SC-55 Map, then CM-64/32L Variation for (i = 0; i < 16; ++i) { - midi->send(( 127 << 16) | (0 << 8) | (0xB0 | i)); - midi->send(( 1 << 16) | (32 << 8) | (0xB0 | i)); - midi->send(( 0 << 16) | (0 << 8) | (0xC0 | i)); + midi->send((127 << 16) | (0 << 8) | (0xB0 | i)); + midi->send((1 << 16) | (32 << 8) | (0xB0 | i)); + midi->send((0 << 16) | (0 << 8) | (0xC0 | i)); } debug(2, "GS Program Change: CM-64/32L Map Selected"); @@ -1501,7 +1498,7 @@ void IMuseInternal::initGM(MidiDriver *midi) { // Set Channels 1-16 Reverb to 64, which is the // equivalent of MT-32 default Reverb Level 5 for (i = 0; i < 16; ++i) - midi->send(( 64 << 16) | (91 << 8) | (0xB0 | i)); + midi->send((64 << 16) | (91 << 8) | (0xB0 | i)); debug(2, "GM Controller 91 Change: Channels 1-16 Reverb Level is 64"); // Set Channels 1-16 Pitch Bend Sensitivity to @@ -1642,8 +1639,8 @@ void IMuseInternal::reallocateMidiChannels(MidiDriver *midi) { hipart = NULL; for (i = 32, part = _parts; i; i--, part++) { if (part->_player && part->_player->getMidiDriver() == midi && - !part->_percussion && part->_on && - !part->_mc && part->_pri_eff >= hipri) { + !part->_percussion && part->_on && + !part->_mc && part->_pri_eff >= hipri) { hipri = part->_pri_eff; hipart = part; } diff --git a/engines/scumm/imuse/imuse.h b/engines/scumm/imuse/imuse.h index 73f0bb9a902..23449e470b2 100644 --- a/engines/scumm/imuse/imuse.h +++ b/engines/scumm/imuse/imuse.h @@ -37,7 +37,7 @@ class Player; class ScummEngine; class Serializer; -typedef void (*sysexfunc) (Player *, const byte *, uint16); +typedef void (*sysexfunc)(Player *, const byte *, uint16); /** * iMuse implementation interface. @@ -67,7 +67,7 @@ public: virtual int32 doCommand(int numargs, int args[]) = 0; virtual int clear_queue() = 0; virtual uint32 property(int prop, uint32 value) = 0; - virtual void addSysexHandler (byte mfgID, sysexfunc handler) = 0; + virtual void addSysexHandler(byte mfgID, sysexfunc handler) = 0; public: virtual void startSoundWithNoteOffset(int sound, int offset) = 0; diff --git a/engines/scumm/imuse/imuse_internal.h b/engines/scumm/imuse/imuse_internal.h index 4ab25907a4e..3b0d36e1192 100644 --- a/engines/scumm/imuse/imuse_internal.h +++ b/engines/scumm/imuse/imuse_internal.h @@ -135,7 +135,7 @@ struct ImTrigger { int sound; byte id; uint16 expire; - int command [8]; + int command[8]; ImTrigger() { memset(this, 0, sizeof(ImTrigger)); } }; @@ -153,12 +153,12 @@ struct CommandQueue { ////////////////////////////////////////////////// class Player : public MidiDriver_BASE { -/* - * External SysEx handler functions shall each be defined in - * a separate file. This header file shall be included at the - * top of the file immediately following this special #define: - * #define SYSEX_CALLBACK_FUNCTION nameOfHandlerFunction - */ + /* + * External SysEx handler functions shall each be defined in + * a separate file. This header file shall be included at the + * top of the file immediately following this special #define: + * #define SYSEX_CALLBACK_FUNCTION nameOfHandlerFunction + */ #ifdef SYSEX_CALLBACK_FUNCTION friend void SYSEX_CALLBACK_FUNCTION(Player *, const byte *, uint16); #endif @@ -244,7 +244,7 @@ public: void clear(); void clearLoop(); void fixAfterLoad(); - Part * getActivePart(uint8 part); + Part *getActivePart(uint8 part); uint getBeatIndex(); int8 getDetune() const { return _detune; } byte getEffectiveVolume() const { return _vol_eff; } @@ -252,7 +252,7 @@ public: MidiDriver *getMidiDriver() const { return _midi; } int getParam(int param, byte chan); int8 getPan() const { return _pan; } - Part * getPart(uint8 part); + Part *getPart(uint8 part); byte getPriority() const { return _priority; } uint getTicksPerBeat() const { return TICKS_PER_BEAT; } int8 getTranspose() const { return _transpose; } @@ -376,12 +376,12 @@ class IMuseInternal : public IMuse { friend class Player; friend struct Part; -/* - * External SysEx handler functions shall each be defined in - * a separate file. This header file shall be included at the - * top of the file immediately following this special #define: - * #define SYSEX_CALLBACK_FUNCTION nameOfHandlerFunction - */ + /* + * External SysEx handler functions shall each be defined in + * a separate file. This header file shall be included at the + * top of the file immediately following this special #define: + * #define SYSEX_CALLBACK_FUNCTION nameOfHandlerFunction + */ #ifdef SYSEX_CALLBACK_FUNCTION friend void SYSEX_CALLBACK_FUNCTION(Player *, const byte *, uint16); #endif @@ -451,8 +451,8 @@ protected: enum ChunkType { kMThd = 1, kFORM = 2, - kMDhd = 4, // Used in MI2 and INDY4. Contain certain start parameters (priority, volume, etc. ) for the player. - kMDpg = 8 // These chunks exist in DOTT and SAMNMAX. They don't get processed, however. + kMDhd = 4, // Used in MI2 and INDY4. Contain certain start parameters (priority, volume, etc. ) for the player. + kMDpg = 8 // These chunks exist in DOTT and SAMNMAX. They don't get processed, however. }; byte *findStartOfSound(int sound, int ct = (kMThd | kFORM)); diff --git a/engines/scumm/imuse/imuse_part.cpp b/engines/scumm/imuse/imuse_part.cpp index 53627f6a4a1..73e7704469c 100644 --- a/engines/scumm/imuse/imuse_part.cpp +++ b/engines/scumm/imuse/imuse_part.cpp @@ -193,7 +193,7 @@ void Part::set_onoff(bool on) { } } -void Part::set_instrument(byte * data) { +void Part::set_instrument(byte *data) { if (_se->_pcSpeaker) _instrument.pcspk(data); else @@ -238,7 +238,7 @@ void Part::noteOn(byte note, byte velocity) { // should be implemented as a class static var. As it is, using // a function level static var in most cases is arcane and evil. static byte prev_vol_eff = 128; - if (_vol_eff != prev_vol_eff){ + if (_vol_eff != prev_vol_eff) { mc->volume(_vol_eff); prev_vol_eff = _vol_eff; } diff --git a/engines/scumm/imuse/imuse_player.cpp b/engines/scumm/imuse/imuse_player.cpp index 07c793a4cb6..73be2174cdb 100644 --- a/engines/scumm/imuse/imuse_player.cpp +++ b/engines/scumm/imuse/imuse_player.cpp @@ -79,7 +79,7 @@ Player::Player() : _isMT32(false), _isMIDI(false), _se(0), - _vol_chan(0){ + _vol_chan(0) { } Player::~Player() { @@ -133,7 +133,7 @@ bool Player::isFadingOut() const { int i; for (i = 0; i < ARRAYSIZE(_parameterFaders); ++i) { if (_parameterFaders[i].param == ParameterFader::pfVolume && - _parameterFaders[i].end == 0) { + _parameterFaders[i].end == 0) { return true; } } @@ -401,13 +401,13 @@ void Player::sysEx(const byte *p, uint16 len) { if (!_scanning) { for (a = 0; a < len + 1 && a < 19; ++a) { - sprintf((char *)&buf[a*3], " %02X", p[a]); + sprintf((char *)&buf[a * 3], " %02X", p[a]); } // next for if (a < len + 1) { - buf[a*3] = buf[a*3+1] = buf[a*3+2] = '.'; + buf[a * 3] = buf[a * 3 + 1] = buf[a * 3 + 2] = '.'; ++a; } // end if - buf[a*3] = '\0'; + buf[a * 3] = '\0'; debugC(DEBUG_IMUSE, "[%02d] SysEx:%s", _id, buf); } @@ -816,7 +816,7 @@ int Player::query_part_param(int param, byte chan) { return part->_vol; case 16: // FIXME: Need to know where this occurs... -error("Trying to cast instrument (%d, %d) -- please tell Fingolfin", param, chan); + error("Trying to cast instrument (%d, %d) -- please tell Fingolfin", param, chan); // In old versions of the code, this used to return part->_program. // This was changed in revision 2.29 of imuse.cpp (where this code used // to reside). @@ -847,9 +847,8 @@ void Player::onTimer() { uint beat_index = target_tick / TICKS_PER_BEAT + 1; uint tick_index = target_tick % TICKS_PER_BEAT; - if (_loop_counter &&(beat_index > _loop_from_beat || - (beat_index == _loop_from_beat && tick_index >= _loop_from_tick))) - { + if (_loop_counter && (beat_index > _loop_from_beat || + (beat_index == _loop_from_beat && tick_index >= _loop_from_tick))) { _loop_counter--; jump(_track_index, _loop_to_beat, _loop_to_tick); } @@ -893,15 +892,15 @@ int Player::addParameterFader(int param, int target, int time) { // target = target * 128 / 100; break; - case 127: - { // FIXME? I *think* this clears all parameter faders. - ParameterFader *ptr = &_parameterFaders[0]; - int i; - for (i = ARRAYSIZE(_parameterFaders); i; --i, ++ptr) - ptr->param = 0; - return 0; - } - break; + case 127: { + // FIXME? I *think* this clears all parameter faders. + ParameterFader *ptr = &_parameterFaders[0]; + int i; + for (i = ARRAYSIZE(_parameterFaders); i; --i, ++ptr) + ptr->param = 0; + return 0; + } + break; default: debug(0, "Player::addParameterFader(%d, %d, %d): Unknown parameter", param, target, time); @@ -1087,7 +1086,7 @@ void Player::saveLoadWithSerializer(Serializer *ser) { } ser->saveLoadEntries(this, playerEntries); ser->saveLoadArrayOf(_parameterFaders, ARRAYSIZE(_parameterFaders), - sizeof(ParameterFader), parameterFaderEntries); + sizeof(ParameterFader), parameterFaderEntries); return; } diff --git a/engines/scumm/imuse/instrument.cpp b/engines/scumm/imuse/instrument.cpp index 581f3786555..11bb4e76052 100644 --- a/engines/scumm/imuse/instrument.cpp +++ b/engines/scumm/imuse/instrument.cpp @@ -114,14 +114,15 @@ roland_to_gm_map[] = { // { "trickle4 ", ??? } }; +// This emulates the percussion bank setup LEC used with the MT-32, +// where notes 24 - 34 were assigned instruments without reverb. +// It also fixes problems on GS devices that map sounds to these +// notes by default. const byte Instrument::_gmRhythmMap[35] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 37, 38, 39, 40, 41, 66, 47, - 65, 48, 56}; - // This emulates the percussion bank setup LEC used with the MT-32, - // where notes 24 - 34 were assigned instruments without reverb. - // It also fixes problems on GS devices that map sounds to these - // notes by default. + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 37, 38, 39, 40, 41, 66, 47, + 65, 48, 56 +}; class Instrument_Program : public InstrumentInternal { private: @@ -136,15 +137,16 @@ public: void copy_to(Instrument *dest) { dest->program(_program, _mt32); } bool is_valid() { return (_program < 128) && - ((_native_mt32 == _mt32) || _native_mt32 - ? (MidiDriver::_gmToMt32[_program] < 128) - : (MidiDriver::_mt32ToGm[_program] < 128)); } + ((_native_mt32 == _mt32) || _native_mt32 + ? (MidiDriver::_gmToMt32[_program] < 128) + : (MidiDriver::_mt32ToGm[_program] < 128)); + } }; class Instrument_AdLib : public InstrumentInternal { private: -#include "common/pack-start.h" // START STRUCT PACKING +#include "common/pack-start.h" // START STRUCT PACKING struct AdLibInstrument { byte flags_1; @@ -159,13 +161,17 @@ private: byte waveform_2; byte feedback; byte flags_a; - struct { byte a,b,c,d,e,f,g,h; } extra_a; + struct { + byte a, b, c, d, e, f, g, h; + } extra_a; byte flags_b; - struct { byte a,b,c,d,e,f,g,h; } extra_b; + struct { + byte a, b, c, d, e, f, g, h; + } extra_b; byte duration; } PACKED_STRUCT; -#include "common/pack-end.h" // END STRUCT PACKING +#include "common/pack-end.h" // END STRUCT PACKING AdLibInstrument _instrument; @@ -181,7 +187,7 @@ public: class Instrument_Roland : public InstrumentInternal { private: -#include "common/pack-start.h" // START STRUCT PACKING +#include "common/pack-start.h" // START STRUCT PACKING struct RolandInstrument { byte roland_id; @@ -242,11 +248,11 @@ private: byte checksum; } PACKED_STRUCT; -#include "common/pack-end.h" // END STRUCT PACKING +#include "common/pack-end.h" // END STRUCT PACKING RolandInstrument _instrument; - char _instrument_name [11]; + char _instrument_name[11]; uint8 getEquivalentGM(); @@ -320,7 +326,7 @@ void Instrument::pcspk(const byte *instrument) { _instrument = new Instrument_PcSpk(instrument); } -void Instrument::saveOrLoad (Serializer *s) { +void Instrument::saveOrLoad(Serializer *s) { if (s->isSaving()) { s->saveByte(_type); if (_instrument) @@ -357,8 +363,8 @@ void Instrument::saveOrLoad (Serializer *s) { //////////////////////////////////////// Instrument_Program::Instrument_Program(byte program, bool mt32) : -_program (program), -_mt32 (mt32) { + _program(program), + _mt32(mt32) { if (program > 127) _program = 255; } @@ -437,7 +443,7 @@ Instrument_Roland::Instrument_Roland(const byte *data) { Instrument_Roland::Instrument_Roland(Serializer *s) { _instrument_name[0] = '\0'; if (!s->isSaving()) - saveOrLoad (s); + saveOrLoad(s); else memset(&_instrument, 0, sizeof(_instrument)); } diff --git a/engines/scumm/imuse/instrument.h b/engines/scumm/imuse/instrument.h index 34f955518e5..a855c64155d 100644 --- a/engines/scumm/imuse/instrument.h +++ b/engines/scumm/imuse/instrument.h @@ -55,7 +55,7 @@ public: itPcSpk = 4 }; - Instrument() : _type (0), _instrument (0) { } + Instrument() : _type(0), _instrument(0) { } ~Instrument() { delete _instrument; } static void nativeMT32(bool native); static const byte _gmRhythmMap[35]; diff --git a/engines/scumm/imuse/sysex_samnmax.cpp b/engines/scumm/imuse/sysex_samnmax.cpp index 4c4219e7bb5..a4f525da56a 100644 --- a/engines/scumm/imuse/sysex_samnmax.cpp +++ b/engines/scumm/imuse/sysex_samnmax.cpp @@ -53,8 +53,7 @@ void sysexHandler_SamNMax(Player *player, const byte *msg, uint16 len) { // something magical is supposed to happen.... for (a = 0; a < ARRAYSIZE(se->_snm_triggers); ++a) { if (se->_snm_triggers[a].sound == player->_id && - se->_snm_triggers[a].id == *p) - { + se->_snm_triggers[a].id == *p) { se->_snm_triggers[a].sound = se->_snm_triggers[a].id = 0; se->doCommand(8, se->_snm_triggers[a].command); break; diff --git a/engines/scumm/imuse/sysex_scumm.cpp b/engines/scumm/imuse/sysex_scumm.cpp index 98b8ed934e8..ec64800b20f 100644 --- a/engines/scumm/imuse/sysex_scumm.cpp +++ b/engines/scumm/imuse/sysex_scumm.cpp @@ -75,7 +75,7 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { part->set_onoff(p[2] & 0x01); part->effectLevel((p[2] & 0x02) ? 127 : 0); part->set_pri((p[3] << 4) | p[4]); - part->volume((p[5] & 0x0F) << 4 |(p[6] & 0x0F)); + part->volume((p[5] & 0x0F) << 4 | (p[6] & 0x0F)); part->set_pan((p[7] & 0x0F) << 4 | (p[8] & 0x0F)); part->_percussion = player->_isMIDI ? ((p[9] & 0x08) > 0) : false; part->set_transpose((p[9] & 0x0F) << 4 | (p[10] & 0x0F)); @@ -93,7 +93,7 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { // cases, a regular program change message always seems to follow // anyway. if (player->_isMIDI) { - part->_instrument.program((p[15] & 0x0F) << 4 |(p[16] & 0x0F), player->_isMT32); + part->_instrument.program((p[15] & 0x0F) << 4 | (p[16] & 0x0F), player->_isMT32); } else if (se->_pcSpeaker) { // FIXME/HACK: This is only needed here, since when we use the following line: // se->copyGlobalInstrument((p[15] & 0x0F) << 4 |(p[16] & 0x0F), &part->_instrument); @@ -125,7 +125,7 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { if (len == 62 || len == 48) { player->decode_sysex_bytes(p, buf, len - 2); part->set_instrument((byte *)buf); - } else { + } else { part->programChange(254); // Must be invalid, but not 255 (which is reserved) } } @@ -194,10 +194,9 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { case 80: // Loop player->decode_sysex_bytes(p + 1, buf, len - 1); - player->setLoop - (READ_BE_UINT16(buf), READ_BE_UINT16(buf + 2), - READ_BE_UINT16(buf + 4), READ_BE_UINT16(buf + 6), - READ_BE_UINT16(buf + 8)); + player->setLoop(READ_BE_UINT16(buf), READ_BE_UINT16(buf + 2), + READ_BE_UINT16(buf + 4), READ_BE_UINT16(buf + 6), + READ_BE_UINT16(buf + 8)); break; case 81: // End loop From 5a42f2901ff6300c47a9f905c5803d1139c6565d Mon Sep 17 00:00:00 2001 From: CeRiAl Date: Tue, 12 Jul 2011 00:47:02 +0200 Subject: [PATCH 071/731] MACOSX: Fix application menu i18n compilation for Mac OSX 10.4+ --- backends/platform/sdl/macosx/appMenu_osx.mm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/backends/platform/sdl/macosx/appMenu_osx.mm b/backends/platform/sdl/macosx/appMenu_osx.mm index e39815fbd92..930564313d5 100755 --- a/backends/platform/sdl/macosx/appMenu_osx.mm +++ b/backends/platform/sdl/macosx/appMenu_osx.mm @@ -22,11 +22,21 @@ #if defined(MACOSX) +// Disable symbol overrides so that we can use system headers. +#define FORBIDDEN_SYMBOL_ALLOW_ALL + #include "backends/platform/sdl/macosx/appMenu_osx.h" #include "common/translation.h" #include +// Apple removed setAppleMenu from the header files in 10.4, +// but as the method still exists we declare it ourselves here. +// Yes, this works :) +@interface NSApplication(MissingFunction) +- (void)setAppleMenu:(NSMenu *)menu; +@end + void replaceApplicationMenuItems() { // Code mainly copied and adapted from SDLmain.m @@ -43,7 +53,7 @@ void replaceApplicationMenuItems() { appleMenu = [[NSMenu alloc] initWithTitle:@""]; // Get current encoding - NSStringEncoding *stringEncoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)[NSString stringWithCString:(TransMan.getCurrentCharset()).c_str() encoding:NSASCIIStringEncoding])); + NSStringEncoding stringEncoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)[NSString stringWithCString:(TransMan.getCurrentCharset()).c_str() encoding:NSASCIIStringEncoding])); // Add "About ScummVM" menu item [appleMenu addItemWithTitle:[NSString stringWithCString:_("About ScummVM") encoding:stringEncoding] action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; From ab5850af625d44dad0c8357a0b1ae6b15e1fba40 Mon Sep 17 00:00:00 2001 From: sylvaintv Date: Tue, 12 Jul 2011 22:55:14 +0200 Subject: [PATCH 072/731] TOON: Fix default walk to object with screen scrolling Bug #3363119: "Toon: Player desapear when you use a object in pepper plant" --- engines/toon/toon.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/toon/toon.cpp b/engines/toon/toon.cpp index 401ab3d70e8..cff6c24469b 100644 --- a/engines/toon/toon.cpp +++ b/engines/toon/toon.cpp @@ -1552,7 +1552,7 @@ void ToonEngine::clickEvent() { return; } } else { - if (!_drew->walkTo(_mouseX, _mouseY)) { + if (!_drew->walkTo(_mouseX + _gameState->_currentScrollValue, _mouseY)) { // walk was canceled ? return; } From 10536e285c02de27fe3cdb703bebc461be9277c5 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 13 Jul 2011 12:33:51 +0100 Subject: [PATCH 073/731] SCUMM: Fix bug #3306145: INDY3: EGA version script bugs Based on a patch presented in the bugreport. Fixes several bugs connected with calcualting IQ points in Amiga versions of Indy3. --- engines/scumm/script_v4.cpp | 12 ++++++++++++ engines/scumm/script_v5.cpp | 14 ++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/engines/scumm/script_v4.cpp b/engines/scumm/script_v4.cpp index 1302c8c28d7..8340f62dbcc 100644 --- a/engines/scumm/script_v4.cpp +++ b/engines/scumm/script_v4.cpp @@ -68,6 +68,18 @@ void ScummEngine_v4::o4_ifState() { int a = getVarOrDirectWord(PARAM_1); int b = getVarOrDirectByte(PARAM_2); + // WORKAROUND bug #3306145 (also occurs in original): Some old versions of + // Indy3 sometimes fail to allocate IQ points correctly. To quote: + // "About the points error leaving Castle Brunwald: It seems to "reversed"! + // When you get caught, free yourself and escape, you get 25 IQ points even + // though you're not supposed to. However if you escape WITHOUT getting + // caught, you get 0 IQ points (supposed to get 25 IQ points)." + // This workaround is meant to address that. + if (_game.id == GID_INDY3 && a == 367 && + vm.slot[_currentScript].number == 363 && _currentRoom == 25) { + b = 0; + } + jumpRelative(getState(a) == b); } diff --git a/engines/scumm/script_v5.cpp b/engines/scumm/script_v5.cpp index a6cf504586b..02c8d977a50 100644 --- a/engines/scumm/script_v5.cpp +++ b/engines/scumm/script_v5.cpp @@ -2095,6 +2095,20 @@ void ScummEngine_v5::o5_startScript() { if (_game.id == GID_ZAK && _game.platform == Common::kPlatformFMTowns && script == 171) return; + // WORKAROUND bug #3306145 (also occurs in original): Some old versions of + // Indy3 sometimes fail to allocate IQ points correctly. To quote: + // "In the Amiga version you get the 15 points for puzzle 30 if you give the + // book or KO the guy. The PC version correctly gives 10 points for puzzle + // 29 for KO and 15 for puzzle 30 when giving the book." + // This workaround is meant to address that. + if (_game.id == GID_INDY3 && vm.slot[_currentScript].number == 106 && script == 125 && VAR(115) != 2) { + // If Var[115] != 2, then: + // Correct: startScript(125,[29,10]); + // Wrong : startScript(125,[30,15]); + data[0] = 29; + data[1] = 10; + } + // Method used by original games to skip copy protection scheme if (!_copyProtection) { // Copy protection was disabled in LucasArts Classic Adventures (PC Disk) From 79e08c68acc1b86b6bede08a9c4f74620f62e7ea Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 13 Jul 2011 12:39:31 +0100 Subject: [PATCH 074/731] KYRA: Add detection for Russian versions of Kyra1 & LoL --- engines/kyra/detection_tables.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/engines/kyra/detection_tables.h b/engines/kyra/detection_tables.h index 47a3c4362a8..165eddf599a 100644 --- a/engines/kyra/detection_tables.h +++ b/engines/kyra/detection_tables.h @@ -95,6 +95,18 @@ const KYRAGameDescription adGameDescs[] = { }, KYRA1_FLOPPY_FLAGS }, + { + { + "kyra1", + "Extracted", + AD_ENTRY1("GEMCUT.EMC", "689b62b7519215c1b2571d466c95624c"), + Common::RU_RUS, + Common::kPlatformPC, + ADGF_NO_FLAGS, + Common::GUIO_NOSPEECH | Common::GUIO_MIDIADLIB | Common::GUIO_MIDIMT32 | Common::GUIO_MIDIPCSPK + }, + KYRA1_FLOPPY_FLAGS + }, { { "kyra1", @@ -972,6 +984,24 @@ const KYRAGameDescription adGameDescs[] = { LOL_CD_FLAGS }, + { + { + "lol", + "CD", + { + { "GENERAL.PAK", 0, "19354b0f464295c38c801d30588df062", -1 }, + { "L01.PAK", 0, "174d37f21e0336c5d91020f8c58717ef", -1 }, + { "VOC.PAK", 0, "eb398f09ba3321d872b6174a68a987d9", -1 }, + { 0, 0, 0, 0 } + }, + Common::RU_RUS, + Common::kPlatformPC, + ADGF_DROPLANGUAGE | ADGF_CD, + Common::GUIO_MIDIADLIB | Common::GUIO_MIDIMT32 | Common::GUIO_MIDIGM | Common::GUIO_MIDIPCSPK + }, + LOL_CD_FLAGS + }, + { { "lol", From 19bb69c7ed9421fc4b410c58f32a879d9e4c44a0 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Wed, 13 Jul 2011 09:20:34 -0400 Subject: [PATCH 075/731] BACKENDS: Fix compilation on Mac OS X without translation support --- backends/platform/sdl/macosx/appMenu_osx.mm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backends/platform/sdl/macosx/appMenu_osx.mm b/backends/platform/sdl/macosx/appMenu_osx.mm index 930564313d5..794bb2d5546 100755 --- a/backends/platform/sdl/macosx/appMenu_osx.mm +++ b/backends/platform/sdl/macosx/appMenu_osx.mm @@ -53,7 +53,11 @@ void replaceApplicationMenuItems() { appleMenu = [[NSMenu alloc] initWithTitle:@""]; // Get current encoding +#ifdef USE_TRANSLATION NSStringEncoding stringEncoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)[NSString stringWithCString:(TransMan.getCurrentCharset()).c_str() encoding:NSASCIIStringEncoding])); +#else + NSStringEncoding stringEncoding = NSASCIIStringEncoding; +#endif // Add "About ScummVM" menu item [appleMenu addItemWithTitle:[NSString stringWithCString:_("About ScummVM") encoding:stringEncoding] action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; From cde3a3d9a00f67b1bc54a6ac2b135fdb8749ddcf Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Wed, 13 Jul 2011 09:26:50 -0400 Subject: [PATCH 076/731] BACKENDS: Rename appMenu_osx.* to appmenu_osx.* --- backends/platform/sdl/macosx/{appMenu_osx.h => appmenu_osx.h} | 0 backends/platform/sdl/macosx/{appMenu_osx.mm => appmenu_osx.mm} | 2 +- backends/platform/sdl/module.mk | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename backends/platform/sdl/macosx/{appMenu_osx.h => appmenu_osx.h} (100%) rename backends/platform/sdl/macosx/{appMenu_osx.mm => appmenu_osx.mm} (98%) diff --git a/backends/platform/sdl/macosx/appMenu_osx.h b/backends/platform/sdl/macosx/appmenu_osx.h similarity index 100% rename from backends/platform/sdl/macosx/appMenu_osx.h rename to backends/platform/sdl/macosx/appmenu_osx.h diff --git a/backends/platform/sdl/macosx/appMenu_osx.mm b/backends/platform/sdl/macosx/appmenu_osx.mm similarity index 98% rename from backends/platform/sdl/macosx/appMenu_osx.mm rename to backends/platform/sdl/macosx/appmenu_osx.mm index 794bb2d5546..3e930fbd713 100755 --- a/backends/platform/sdl/macosx/appMenu_osx.mm +++ b/backends/platform/sdl/macosx/appmenu_osx.mm @@ -25,7 +25,7 @@ // Disable symbol overrides so that we can use system headers. #define FORBIDDEN_SYMBOL_ALLOW_ALL -#include "backends/platform/sdl/macosx/appMenu_osx.h" +#include "backends/platform/sdl/macosx/appmenu_osx.h" #include "common/translation.h" #include diff --git a/backends/platform/sdl/module.mk b/backends/platform/sdl/module.mk index 34631c372d9..f1afe373490 100644 --- a/backends/platform/sdl/module.mk +++ b/backends/platform/sdl/module.mk @@ -15,7 +15,7 @@ ifdef MACOSX MODULE_OBJS += \ macosx/macosx-main.o \ macosx/macosx.o \ - macosx/appMenu_osx.o + macosx/appmenu_osx.o endif ifdef WIN32 From 7f58d62ba1a7d86083f0896e8e5607fb92fe018a Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Wed, 13 Jul 2011 09:28:53 -0400 Subject: [PATCH 077/731] BACKENDS: Remove unneeded define check --- backends/platform/sdl/macosx/appmenu_osx.mm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/backends/platform/sdl/macosx/appmenu_osx.mm b/backends/platform/sdl/macosx/appmenu_osx.mm index 3e930fbd713..ab0b8f8423f 100755 --- a/backends/platform/sdl/macosx/appmenu_osx.mm +++ b/backends/platform/sdl/macosx/appmenu_osx.mm @@ -20,8 +20,6 @@ * */ -#if defined(MACOSX) - // Disable symbol overrides so that we can use system headers. #define FORBIDDEN_SYMBOL_ALLOW_ALL @@ -110,5 +108,3 @@ void replaceApplicationMenuItems() { [windowMenu release]; [menuItem release]; } - -#endif // MACOSX From 708f7739eb726a08ad5af7208bc34dc9d96a3414 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Wed, 13 Jul 2011 09:29:27 -0400 Subject: [PATCH 078/731] BACKENDS: Fix a typo --- backends/platform/sdl/macosx/appmenu_osx.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backends/platform/sdl/macosx/appmenu_osx.mm b/backends/platform/sdl/macosx/appmenu_osx.mm index ab0b8f8423f..bb089a6b613 100755 --- a/backends/platform/sdl/macosx/appmenu_osx.mm +++ b/backends/platform/sdl/macosx/appmenu_osx.mm @@ -60,7 +60,7 @@ void replaceApplicationMenuItems() { // Add "About ScummVM" menu item [appleMenu addItemWithTitle:[NSString stringWithCString:_("About ScummVM") encoding:stringEncoding] action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; - // Add seperator + // Add separator [appleMenu addItem:[NSMenuItem separatorItem]]; // Add "Hide ScummVM" menu item @@ -73,7 +73,7 @@ void replaceApplicationMenuItems() { // Add "Show All" menu item [appleMenu addItemWithTitle:[NSString stringWithCString:_("Show All") encoding:stringEncoding] action:@selector(unhideAllApplications:) keyEquivalent:@""]; - // Add seperator + // Add separator [appleMenu addItem:[NSMenuItem separatorItem]]; // Add "Quit ScummVM" menu item From 554dda7008d905d47420c495481e796c4059772e Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Wed, 13 Jul 2011 09:43:16 -0400 Subject: [PATCH 079/731] BACKENDS: Fix compilation on case-sensitive Mac OS X --- backends/platform/sdl/macosx/macosx.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backends/platform/sdl/macosx/macosx.cpp b/backends/platform/sdl/macosx/macosx.cpp index e263192c824..4b3d000d348 100644 --- a/backends/platform/sdl/macosx/macosx.cpp +++ b/backends/platform/sdl/macosx/macosx.cpp @@ -29,7 +29,7 @@ #include "backends/platform/sdl/macosx/macosx.h" #include "backends/mixer/doublebuffersdl/doublebuffersdl-mixer.h" -#include "backends/platform/sdl/macosx/appMenu_osx.h" +#include "backends/platform/sdl/macosx/appmenu_osx.h" #include "common/archive.h" #include "common/config-manager.h" From 5825ccc16865b9c60d2587b31c50d2ebcc9bab67 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Wed, 13 Jul 2011 09:47:03 -0400 Subject: [PATCH 080/731] BACKENDS: Fix spelling of 'Mac OS X' --- backends/platform/sdl/macosx/macosx.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backends/platform/sdl/macosx/macosx.cpp b/backends/platform/sdl/macosx/macosx.cpp index 4b3d000d348..ddfc99570ac 100644 --- a/backends/platform/sdl/macosx/macosx.cpp +++ b/backends/platform/sdl/macosx/macosx.cpp @@ -60,7 +60,7 @@ void OSystem_MacOSX::initBackend() { TransMan.setLanguage(ConfMan.get("gui_language").c_str()); #endif // USE_TRANSLATION - // Replace the SDL generated menu items with our own translated ones on Mac-OSX + // Replace the SDL generated menu items with our own translated ones on Mac OS X replaceApplicationMenuItems(); // Invoke parent implementation of this method From a50abde1b1228aa8364349728ad7f4f328d4a2f4 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Wed, 13 Jul 2011 12:08:26 -0400 Subject: [PATCH 081/731] BUILD: Allow for disabling Bink support --- common/bitstream.h | 10 ++++++++++ common/dct.h | 10 ++++++++++ common/fft.h | 10 ++++++++++ common/huffman.h | 10 ++++++++++ common/math.h | 10 ++++++++++ common/module.mk | 16 ++++++++++------ common/rdft.h | 10 ++++++++++ configure | 11 +++++++++++ engines/scumm/he/animation_he.cpp | 7 ++++++- engines/scumm/vars.cpp | 6 +++++- video/bink_decoder.h | 8 +++++++- video/module.mk | 6 +++++- 12 files changed, 104 insertions(+), 10 deletions(-) diff --git a/common/bitstream.h b/common/bitstream.h index 99aec252a38..f7ce17c3b5e 100644 --- a/common/bitstream.h +++ b/common/bitstream.h @@ -22,6 +22,14 @@ // Based on eos' BitStream implementation +#include "common/scummsys.h" + +#ifndef USE_BINK + +#error "BitStream support disabled because Bink support is disabled" + +#else + #ifndef COMMON_BITSTREAM_H #define COMMON_BITSTREAM_H @@ -100,3 +108,5 @@ private: } // End of namespace Common #endif // COMMON_BITSTREAM_H + +#endif // USE_BINK \ No newline at end of file diff --git a/common/dct.h b/common/dct.h index a0d625d55d3..30eae8ca52b 100644 --- a/common/dct.h +++ b/common/dct.h @@ -26,6 +26,14 @@ // Copyright (c) 2010 Alex Converse // Copyright (c) 2010 Vitor Sessak +#include "common/scummsys.h" + +#ifndef USE_BINK + +#error "DCT support disabled because Bink support is disabled" + +#else + #ifndef COMMON_DCT_H #define COMMON_DCT_H @@ -69,3 +77,5 @@ private: } // End of namespace Common #endif // COMMON_DCT_H + +#endif // USE_BINK diff --git a/common/fft.h b/common/fft.h index 17d1ef00557..e32cd9d927a 100644 --- a/common/fft.h +++ b/common/fft.h @@ -26,6 +26,14 @@ // Copyright (c) 2002 Fabrice Bellard // Partly based on libdjbfft by D. J. Bernstein +#include "common/scummsys.h" + +#ifndef USE_BINK + +#error "FFT support disabled because Bink support is disabled" + +#else + #ifndef COMMON_FFT_H #define COMMON_FFT_H @@ -71,3 +79,5 @@ private: } // End of namespace Common #endif // COMMON_FFT_H + +#endif // USE_BINK diff --git a/common/huffman.h b/common/huffman.h index 9c88a37541e..5e4ad693258 100644 --- a/common/huffman.h +++ b/common/huffman.h @@ -22,6 +22,14 @@ // Based on eos' Huffman code +#include "common/scummsys.h" + +#ifndef USE_BINK + +#error "Huffman support disabled because Bink support is disabled" + +#else + #ifndef COMMON_HUFFMAN_H #define COMMON_HUFFMAN_H @@ -75,3 +83,5 @@ private: } // End of namespace Common #endif // COMMON_HUFFMAN_H + +#endif // USE_BINK diff --git a/common/math.h b/common/math.h index db803d98897..266dd72f2ab 100644 --- a/common/math.h +++ b/common/math.h @@ -22,6 +22,14 @@ // Based on eos' math code +#include "common/scummsys.h" + +#ifndef USE_BINK + +#error "Math functions disabled because Bink support is disabled" + +#else + #ifndef COMMON_MATH_H #define COMMON_MATH_H @@ -109,3 +117,5 @@ inline float deg2rad(float deg) { } // End of namespace Common #endif // COMMON_MATHS_H + +#endif // USE_BINK diff --git a/common/module.mk b/common/module.mk index 31d91c8fe09..885a4f851a0 100644 --- a/common/module.mk +++ b/common/module.mk @@ -2,30 +2,24 @@ MODULE := common MODULE_OBJS := \ archive.o \ - bitstream.o \ config-file.o \ config-manager.o \ dcl.o \ - dct.o \ debug.o \ error.o \ EventDispatcher.o \ EventRecorder.o \ - fft.o \ file.o \ fs.o \ hashmap.o \ - huffman.o \ iff_container.o \ macresman.o \ - math.o \ memorypool.o \ md5.o \ mutex.o \ quicktime.o \ random.o \ rational.o \ - rdft.o \ str.o \ stream.o \ system.o \ @@ -41,5 +35,15 @@ MODULE_OBJS := \ xmlparser.o \ zlib.o +ifdef USE_BINK +MODULE_OBJS += \ + bitstream.o \ + dct.o \ + fft.o \ + huffman.o \ + math.o \ + rdft.o +endif + # Include common rules include $(srcdir)/rules.mk diff --git a/common/rdft.h b/common/rdft.h index 33fcdd2b3be..0316f4fb174 100644 --- a/common/rdft.h +++ b/common/rdft.h @@ -24,6 +24,14 @@ // Based upon the (I)RDFT code in FFmpeg // Copyright (c) 2009 Alex Converse +#include "common/scummsys.h" + +#ifndef USE_BINK + +#error "RDFT support disabled because Bink support is disabled" + +#else + #ifndef COMMON_RDFT_H #define COMMON_RDFT_H @@ -62,3 +70,5 @@ private: } // End of namespace Common #endif // COMMON_RDFT_H + +#endif // USE_BINK diff --git a/configure b/configure index 78998f8100b..d90db8b607b 100755 --- a/configure +++ b/configure @@ -154,6 +154,7 @@ _build_scalers=yes _build_hq_scalers=yes _enable_prof=no _global_constructors=no +_bink=yes # Default vkeybd/keymapper options _vkeybd=no _keymapper=no @@ -775,6 +776,7 @@ Optional Features: --enable-text-console use text console instead of graphical console --enable-verbose-build enable regular echoing of commands during build process + --disable-bink don't build with Bink video support Optional Libraries: --with-alsa-prefix=DIR Prefix where alsa is installed (optional) @@ -877,6 +879,8 @@ for ac_option in $@; do --disable-libunity) _libunity=no ;; --enable-opengl) _opengl=yes ;; --disable-opengl) _opengl=no ;; + --enable-bink) _bink=yes ;; + --disable-bink) _bink=no ;; --enable-verbose-build) _verbose_build=yes ;; --enable-plugins) _dynamic_modules=yes ;; --default-dynamic) _plugins_default=dynamic ;; @@ -3264,6 +3268,13 @@ else echo "$_taskbar" fi +# +# Check whether to build Bink video support +# +echo_n "Building Bink video support... " +define_in_config_if_yes $_bink 'USE_BINK' +echo "$_bink" + # # Figure out installation directories # diff --git a/engines/scumm/he/animation_he.cpp b/engines/scumm/he/animation_he.cpp index 7c1bbfc9a5f..40e99c26a80 100644 --- a/engines/scumm/he/animation_he.cpp +++ b/engines/scumm/he/animation_he.cpp @@ -26,15 +26,20 @@ #include "scumm/he/intern_he.h" #include "audio/audiostream.h" -#include "video/bink_decoder.h" #include "video/smk_decoder.h" +#ifdef USE_BINK +#include "video/bink_decoder.h" +#endif + namespace Scumm { MoviePlayer::MoviePlayer(ScummEngine_v90he *vm, Audio::Mixer *mixer) : _vm(vm) { +#ifdef USE_BINK if (_vm->_game.heversion >= 100 && (_vm->_game.features & GF_16BIT_COLOR)) _video = new Video::BinkDecoder(); else +#endif _video = new Video::SmackerDecoder(mixer); _flags = 0; diff --git a/engines/scumm/vars.cpp b/engines/scumm/vars.cpp index 65d34a4f2ea..4527d7a121a 100644 --- a/engines/scumm/vars.cpp +++ b/engines/scumm/vars.cpp @@ -704,8 +704,12 @@ void ScummEngine_v99he::resetScummVars() { VAR(VAR_NUM_UNK) = _numUnk; if (_game.heversion >= 100 && (_game.features & GF_16BIT_COLOR)) { - // Enable Bink and Smacker video in 16bit color games + // Enable Bink video in 16bit color games +#ifdef USE_BINK VAR(140) = 1; +#else + VAR(140) = 0; +#endif } } #endif diff --git a/video/bink_decoder.h b/video/bink_decoder.h index 8cb447749db..ceb55391a94 100644 --- a/video/bink_decoder.h +++ b/video/bink_decoder.h @@ -24,6 +24,10 @@ // based quite heavily on the Bink decoder found in FFmpeg. // Many thanks to Kostya Shishkov for doing the hard work. +#include "common/scummsys.h" + +#ifdef USE_BINK + #ifndef VIDEO_BINK_DECODER_H #define VIDEO_BINK_DECODER_H @@ -325,4 +329,6 @@ private: } // End of namespace Video -#endif +#endif // VIDEO_BINK_DECODER_H + +#endif // USE_BINK diff --git a/video/module.mk b/video/module.mk index 98c84e3516b..ceeac943844 100644 --- a/video/module.mk +++ b/video/module.mk @@ -2,7 +2,6 @@ MODULE := video MODULE_OBJS := \ avi_decoder.o \ - bink_decoder.o \ coktel_decoder.o \ dxa_decoder.o \ flic_decoder.o \ @@ -20,5 +19,10 @@ MODULE_OBJS := \ codecs/smc.o \ codecs/truemotion1.o +ifdef USE_BINK +MODULE_OBJS += \ + bink_decoder.o +endif + # Include common rules include $(srcdir)/rules.mk From 3e38e6e22158de309914a946e5791ea2b927078b Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Wed, 13 Jul 2011 22:41:18 +0200 Subject: [PATCH 082/731] SCI: Restore deleted LSL6 workaround for crash on loading This was probably accidentally removed in 194081e7ae79a632ce446653cc7119b74d3a6fac. The TODO/CHECKME on it still applies. Reported in bug #3366329. --- engines/sci/engine/workarounds.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index e61da20f978..b2cde47f4ac 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -283,6 +283,8 @@ const SciWorkaroundEntry kGraphSaveBox_workarounds[] = { // gameID, room,script,lvl, object-name, method-name, call,index, workaround const SciWorkaroundEntry kGraphRestoreBox_workarounds[] = { + { GID_LSL6, -1, 86, 0, "LL6Inv", "show", -1, 0, { WORKAROUND_STILLCALL, 0 } }, // happens when restoring, is called with hunk segment, but hunk is not allocated at that time + // ^^ TODO: check, if this is really a script error or an issue with our restore code { GID_LSL6, -1, 86, 0, "LL6Inv", "hide", -1, 0, { WORKAROUND_STILLCALL, 0 } }, // happens during the game, gets called with 1 extra parameter { GID_SQ5, 850, 850, 0, NULL, "changeState", -1, 0, { WORKAROUND_STILLCALL, 0 } }, // happens while playing Battle Cruiser (invalid segment) - bug #3056811 SCI_WORKAROUNDENTRY_TERMINATOR From 9565af1ae42674b67fd1ed744ae4855991ba8473 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Thu, 14 Jul 2011 00:33:16 +0200 Subject: [PATCH 083/731] SCUMM: Implement iMuse alloc part command closer to the original. --- engines/scumm/imuse/sysex_scumm.cpp | 52 +++++++++++++---------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/engines/scumm/imuse/sysex_scumm.cpp b/engines/scumm/imuse/sysex_scumm.cpp index ec64800b20f..9f795133be5 100644 --- a/engines/scumm/imuse/sysex_scumm.cpp +++ b/engines/scumm/imuse/sysex_scumm.cpp @@ -49,38 +49,32 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { switch (code = *p++) { case 0: // Allocate new part. - // There are 17 bytes of useful information here. + // There are 8 bytes (after decoding!) of useful information here. // Here is what we know about them so far: - // BYTE 00: Channel # - // BYTE 02: BIT 01(0x01): Part on?(1 = yes) + // BYTE 0: Channel # + // BYTE 1: BIT 01(0x01): Part on?(1 = yes) // BIT 02(0x02): Reverb? (1 = yes) [bug #1088045] - // BYTE 03: Priority adjustment(upper 4 bits) - // BYTE 04: Priority adjustment(lower 4 bits) - // BYTE 05: Volume(upper 4 bits) [guessing] - // BYTE 06: Volume(lower 4 bits) [guessing] - // BYTE 07: Pan(upper 4 bits) [bug #1088045] - // BYTE 08: Pan(lower 4 bits) [bug #1088045] - // BYTE 09: BIT 04(0x08): Percussion?(1 = yes) - // BYTE 13: Pitchbend range(upper 4 bits) [bug #1088045] - // BYTE 14: Pitchbend range(lower 4 bits) [bug #1088045] - // BYTE 15: Program(upper 4 bits) - // BYTE 16: Program(lower 4 bits) - - // athrxx (05-21-2011): - // BYTE 9, 10: Transpose (if set to 0x80, this means that part->_transpose_eff will be 0 (also ignoring player->_transpose) - // BYTE 11, 12: Detune + // BYTE 2: Priority adjustment + // BYTE 3: Volume [guessing] + // BYTE 4: Pan [bug #1088045] + // BYTE 5: BIT 8(0x80): Percussion?(1 = yes) [guessed?] + // BYTE 5: Transpose, if set to 0x80(=-1) it means no transpose + // BYTE 6: Detune + // BYTE 7: Pitchbend factor [bug #1088045] + // BYTE 8: Program part = player->getPart(p[0] & 0x0F); + player->decode_sysex_bytes(p + 1, buf + 1, len - 1); if (part) { - part->set_onoff(p[2] & 0x01); - part->effectLevel((p[2] & 0x02) ? 127 : 0); - part->set_pri((p[3] << 4) | p[4]); - part->volume((p[5] & 0x0F) << 4 | (p[6] & 0x0F)); - part->set_pan((p[7] & 0x0F) << 4 | (p[8] & 0x0F)); - part->_percussion = player->_isMIDI ? ((p[9] & 0x08) > 0) : false; - part->set_transpose((p[9] & 0x0F) << 4 | (p[10] & 0x0F)); - part->set_detune((p[11] & 0x0F) << 4 | (p[12] & 0x0F)); - part->pitchBendFactor((p[13] & 0x0F) << 4 | (p[14] & 0x0F)); + part->set_onoff(buf[1] & 0x01); + part->effectLevel((buf[1] & 0x02) ? 127 : 0); + part->set_pri(buf[2]); + part->volume(buf[3]); + part->set_pan(buf[4]); + part->_percussion = player->_isMIDI ? ((buf[5] & 0x80) > 0) : false; + part->set_transpose(buf[5]); + part->set_detune(buf[6]); + part->pitchBendFactor(buf[7]); if (part->_percussion) { if (part->_mc) { part->off(); @@ -93,10 +87,10 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { // cases, a regular program change message always seems to follow // anyway. if (player->_isMIDI) { - part->_instrument.program((p[15] & 0x0F) << 4 | (p[16] & 0x0F), player->_isMT32); + part->_instrument.program(buf[8], player->_isMT32); } else if (se->_pcSpeaker) { // FIXME/HACK: This is only needed here, since when we use the following line: - // se->copyGlobalInstrument((p[15] & 0x0F) << 4 |(p[16] & 0x0F), &part->_instrument); + // se->copyGlobalInstrument(buf[8], &part->_instrument); // We would not get any instrument for PC Speaker. Because we don't default to an // "empty" instrument in case the global instrument specified is not set up. byte empty[23] = {0}; From f814dc971ca9f6526b4f6049642b79d6371dcfb8 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Thu, 14 Jul 2011 00:48:30 +0200 Subject: [PATCH 084/731] SCUMM: Handle default instrument set up in iMuse like the original. --- engines/scumm/imuse/imuse.cpp | 16 +++++++++++++++- engines/scumm/imuse/sysex_scumm.cpp | 23 +++++++++++------------ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/engines/scumm/imuse/imuse.cpp b/engines/scumm/imuse/imuse.cpp index 451721cf701..5ad4798578a 100644 --- a/engines/scumm/imuse/imuse.cpp +++ b/engines/scumm/imuse/imuse.cpp @@ -1682,7 +1682,21 @@ void IMuseInternal::setGlobalInstrument(byte slot, byte *data) { void IMuseInternal::copyGlobalInstrument(byte slot, Instrument *dest) { if (slot >= 32) return; - _global_instruments[slot].copy_to(dest); + + // Both the AdLib code and the PC Speaker code use an all zero instrument + // as default in the original, thus we do the same. + // PC Speaker instrument size is 23, while AdLib instrument size is 30. + // Thus we just use a 30 byte instrument data array as default. + const byte defaultInstr[30] = { 0 }; + + if (_global_instruments[slot].isValid()) { + // In case we have an valid instrument set up, copy it to the part. + _global_instruments[slot].copy_to(dest); + } else if (_pcSpeaker) { + dest->pcspk(defaultInstr); + } else { + dest->adlib(defaultInstr); + } } diff --git a/engines/scumm/imuse/sysex_scumm.cpp b/engines/scumm/imuse/sysex_scumm.cpp index 9f795133be5..85ffc86f473 100644 --- a/engines/scumm/imuse/sysex_scumm.cpp +++ b/engines/scumm/imuse/sysex_scumm.cpp @@ -81,20 +81,19 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { se->reallocateMidiChannels(player->_midi); } } else { - // Even in cases where a program does not seem to be specified, - // i.e. bytes 15 and 16 are 0, we send a program change because - // 0 is a valid program number. MI2 tests show that in such - // cases, a regular program change message always seems to follow - // anyway. if (player->_isMIDI) { + // Even in cases where a program does not seem to be specified, + // i.e. bytes 15 and 16 are 0, we send a program change because + // 0 is a valid program number. MI2 tests show that in such + // cases, a regular program change message always seems to follow + // anyway. part->_instrument.program(buf[8], player->_isMT32); - } else if (se->_pcSpeaker) { - // FIXME/HACK: This is only needed here, since when we use the following line: - // se->copyGlobalInstrument(buf[8], &part->_instrument); - // We would not get any instrument for PC Speaker. Because we don't default to an - // "empty" instrument in case the global instrument specified is not set up. - byte empty[23] = {0}; - part->_instrument.pcspk(empty); + } else { + // Like the original we set up the instrument data of the + // specified program here too. In case the global + // instrument data is not loaded already, this will take + // care of setting a default instrument too. + se->copyGlobalInstrument(buf[8], &part->_instrument); } part->sendAll(); } From ed3fe4372a270d22da167a21f61fcca7f974478b Mon Sep 17 00:00:00 2001 From: athrxx Date: Thu, 14 Jul 2011 00:50:14 +0200 Subject: [PATCH 085/731] SCUMM: fix regression caused by recent sjis code changes --- engines/scumm/charset.cpp | 16 ++++++++++------ engines/scumm/charset.h | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/engines/scumm/charset.cpp b/engines/scumm/charset.cpp index b38bd3b674c..8558da397ee 100644 --- a/engines/scumm/charset.cpp +++ b/engines/scumm/charset.cpp @@ -721,7 +721,8 @@ void CharsetRendererClassic::printChar(int chr, bool ignoreCharsetMask) { _vm->_charsetColorMap[1] = _color; - prepareDraw(chr); + if (!prepareDraw(chr)) + return; if (_firstChar) { _str.left = 0; @@ -875,11 +876,11 @@ void CharsetRendererClassic::printCharIntern(bool is2byte, const byte *charPtr, } } -void CharsetRendererClassic::prepareDraw(uint16 chr) { +bool CharsetRendererClassic::prepareDraw(uint16 chr) { uint32 charOffs = READ_LE_UINT32(_fontPtr + chr * 4 + 4); assert(charOffs < 0x14000); if (!charOffs) - return; + return false; _charPtr = _fontPtr + charOffs; _width = _origWidth = _charPtr[0]; @@ -894,10 +895,12 @@ void CharsetRendererClassic::prepareDraw(uint16 chr) { _offsY = (signed char)_charPtr[3]; _charPtr += 4; // Skip over char header + return true; } void CharsetRendererClassic::drawChar(int chr, Graphics::Surface &s, int x, int y) { - prepareDraw(chr); + if (!prepareDraw(chr)) + return; byte *dst = (byte *)s.pixels + y * s.pitch + x; drawBitsN(s, dst, _charPtr, *_fontPtr, y, _width, _height); } @@ -1437,7 +1440,7 @@ void CharsetRendererTownsClassic::drawBitsN(const Graphics::Surface&, byte *dst, } } -void CharsetRendererTownsClassic::prepareDraw(uint16 chr) { +bool CharsetRendererTownsClassic::prepareDraw(uint16 chr) { processCharsetColors(); bool noSjis = false; @@ -1475,8 +1478,9 @@ void CharsetRendererTownsClassic::prepareDraw(uint16 chr) { } } else { _sjisCurChar = 0; - CharsetRendererClassic::prepareDraw(chr); + return CharsetRendererClassic::prepareDraw(chr); } + return true; } void CharsetRendererTownsClassic::setupShadowMode() { diff --git a/engines/scumm/charset.h b/engines/scumm/charset.h index b80db73a580..b23ec996f56 100644 --- a/engines/scumm/charset.h +++ b/engines/scumm/charset.h @@ -113,7 +113,7 @@ class CharsetRendererClassic : public CharsetRendererCommon { protected: virtual void drawBitsN(const Graphics::Surface &s, byte *dst, const byte *src, byte bpp, int drawTop, int width, int height); void printCharIntern(bool is2byte, const byte *charPtr, int origWidth, int origHeight, int width, int height, VirtScreen *vs, bool ignoreCharsetMask); - virtual void prepareDraw(uint16 chr); + virtual bool prepareDraw(uint16 chr); int _width, _height, _origWidth, _origHeight; int _offsX, _offsY; @@ -139,7 +139,7 @@ public: private: void drawBitsN(const Graphics::Surface &s, byte *dst, const byte *src, byte bpp, int drawTop, int width, int height); - void prepareDraw(uint16 chr); + bool prepareDraw(uint16 chr); void setupShadowMode(); bool useFontRomCharacter(uint16 chr); void processCharsetColors(); From 482fcea8f3c57c7db12a81a3e124bc7b6e3594a5 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Thu, 14 Jul 2011 01:09:47 +0200 Subject: [PATCH 086/731] SCUMM: Add debug output in case the code tries to set up a non-existant iMuse instrument. --- engines/scumm/imuse/imuse.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/engines/scumm/imuse/imuse.cpp b/engines/scumm/imuse/imuse.cpp index 5ad4798578a..27a72c2afee 100644 --- a/engines/scumm/imuse/imuse.cpp +++ b/engines/scumm/imuse/imuse.cpp @@ -1693,8 +1693,10 @@ void IMuseInternal::copyGlobalInstrument(byte slot, Instrument *dest) { // In case we have an valid instrument set up, copy it to the part. _global_instruments[slot].copy_to(dest); } else if (_pcSpeaker) { + debug(0, "Trying to use non-existant global PC Speaker instrument %d", slot); dest->pcspk(defaultInstr); } else { + debug(0, "Trying to use non-existant global AdLib instrument %d", slot); dest->adlib(defaultInstr); } } From 40a6c232e9169a9cfe0d6a698b728c8565cd8959 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Thu, 14 Jul 2011 20:08:06 +0200 Subject: [PATCH 087/731] COMPOSER: Add a first attempt at an engine. --- base/plugins.cpp | 3 + configure | 1 + engines/composer/composer.cpp | 889 +++++++++++++++++++++++++++++++++ engines/composer/composer.h | 197 ++++++++ engines/composer/detection.cpp | 139 ++++++ engines/composer/module.mk | 14 + engines/composer/resource.cpp | 250 +++++++++ engines/composer/resource.h | 93 ++++ engines/engines.mk | 5 + 9 files changed, 1591 insertions(+) create mode 100644 engines/composer/composer.cpp create mode 100644 engines/composer/composer.h create mode 100644 engines/composer/detection.cpp create mode 100644 engines/composer/module.mk create mode 100644 engines/composer/resource.cpp create mode 100644 engines/composer/resource.h diff --git a/base/plugins.cpp b/base/plugins.cpp index 4413995b886..4fa1a961da6 100644 --- a/base/plugins.cpp +++ b/base/plugins.cpp @@ -97,6 +97,9 @@ public: #if PLUGIN_ENABLED_STATIC(CINE) LINK_PLUGIN(CINE) #endif + #if PLUGIN_ENABLED_STATIC(COMPOSER) + LINK_PLUGIN(COMPOSER) + #endif #if PLUGIN_ENABLED_STATIC(CRUISE) LINK_PLUGIN(CRUISE) #endif diff --git a/configure b/configure index 74541e3d981..b161c5a81e5 100755 --- a/configure +++ b/configure @@ -84,6 +84,7 @@ add_engine agi "AGI" yes add_engine agos "AGOS" yes "agos2" add_engine agos2 "AGOS 2 games" yes add_engine cine "Cinematique evo 1" yes +add_engine composer "Magic Composer" no add_engine cruise "Cinematique evo 2" yes add_engine draci "Dragon History" yes add_engine drascula "Drascula: The Vampire Strikes Back" yes diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp new file mode 100644 index 00000000000..b2dcc3b36c9 --- /dev/null +++ b/engines/composer/composer.cpp @@ -0,0 +1,889 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + * + */ +#include "common/scummsys.h" + +#include "common/config-manager.h" +#include "common/events.h" +#include "common/file.h" +#include "common/random.h" +#include "common/fs.h" +#include "common/keyboard.h" +#include "common/substream.h" +#include "common/memstream.h" + +#include "graphics/cursorman.h" +#include "graphics/surface.h" +#include "graphics/pixelformat.h" +#include "graphics/palette.h" + +#include "engines/util.h" +#include "engines/advancedDetector.h" + +#include "audio/audiostream.h" +#include "audio/decoders/raw.h" + +#include "composer/composer.h" +#include "composer/resource.h" + +namespace Composer { + +// bitmap compression types +enum { + kBitmapUncompressed = 0, + kBitmapSpp32 = 1, + kBitmapSLW8 = 3, + kBitmapRLESLWM = 4, + kBitmapSLWM = 5 +}; + +// new script ops +enum { + kOpPlusPlus = 0x1, + kOpMinusMinus = 0x2, + kOpAssign = 0x3, + kOpAdd = 0x4, + kOpSubtract = 0x5, + kOpMultiply = 0x6, + kOpDivide = 0x7, + kOpModulo = 0x8, + kOpMaybeAlsoAssign = 0x9, + kOpBooleanAssign = 0xA, + kOpNegate = 0xB, + kOpAnd = 0xC, + kOpOr = 0xD, + kOpXor = 0xE, + kOpNotPositive = 0xF, + kOpSqrt = 0x10, + kOpRandom = 0x11, + kOpExecuteScript = 0x12, + kOpCallFunc = 0x13, + kOpBoolLessThanEq = 0x14, + kOpBoolLessThan = 0x15, + kOpBoolGreaterThanEq = 0x16, + kOpBoolGreaterThan = 0x17, + kOpBoolEqual = 0x18, + kOpBoolNotEqual = 0x19, + kOpSaveArgs = 0x1A, + kOpRestoreArgs = 0x1B, + kOpSetReturnValue = 0x20, + kOpLessThanEq = 0x21, + kOpLessThan = 0x22, + kOpGreaterThanEq = 0x23, + kOpGreaterThan = 0x24, + kOpEqual = 0x25, + kOpNotEqual = 0x26, + kOpJump = 0x80, + kOpJumpIfNot = 0x81, + kOpJumpIf = 0x82, + kOpJumpIfNotValue = 0x83, + kOpJumpIfValue = 0x84 +}; + +enum { + kFuncPlayAnim = 35001, + kFuncStopAnim = 35002, + kFuncQueueScript = 35004, + kFuncDequeueScript = 35005, + kFuncHideMouse = 35009, + kFuncLoadPage = 35014, + kFuncUnloadPage = 35015, + kFuncSetPalette = 35016, + kFuncQueueScriptOnce = 35019 +}; + +// TODO: params: x, y, event param for done +Animation::Animation(Common::SeekableReadStream *stream, uint16 id, Common::Point basePos, uint32 eventParam) + : _stream(stream), _id(id), _basePos(basePos), _eventParam(eventParam) { + uint32 size = _stream->readUint32LE(); + _state = _stream->readUint32LE() + 1; + + // probably total size? + uint32 unknown = _stream->readUint32LE(); + + debug(8, "anim: size %d, state %08x, unknown %08x", size, _state, unknown); + + for (uint i = 0; i < size; i++) { + AnimationEntry entry; + entry.op = _stream->readUint16LE(); + entry.word6 = _stream->readUint16LE(); + entry.dword0 = _stream->readUint16LE(); + entry.counter = 0; + entry.word10 = 0; + debug(8, "anim entry: %04x, %04x, %04x", entry.op, entry.word6, entry.dword0); + _entries.push_back(entry); + } + + _offset = _stream->pos(); +} + +Animation::~Animation() { + delete _stream; +} + +void Animation::seekToCurrPos() { + _stream->seek(_offset, SEEK_SET); +} + +Pipe::Pipe(Common::SeekableReadStream *stream) { + _offset = 0; + _stream = stream; + + nextFrame(); +} + +void Pipe::nextFrame() { + _stream->seek(_offset, SEEK_SET); + + uint32 tagCount = _stream->readUint32LE(); + _offset += 4; + for (uint i = 0; i < tagCount; i++) { + uint32 tag = _stream->readUint32BE(); + uint32 count = _stream->readUint32LE(); + _offset += 8; + + ResourceMap &resMap = _types[tag]; + + _offset += (12 * count); + //uint32 baseOffset = _offset; + for (uint j = 0; j < count; j++) { + uint32 offset = _stream->readUint32LE(); + uint32 size = _stream->readUint32LE(); + uint16 id = _stream->readUint16LE(); + uint32 unknown = _stream->readUint16LE(); // frame id? + debug(9, "pipe: %s/%d: offset %d, size %d, unknown %d", tag2str(tag), id, offset, size, unknown); + + PipeResourceEntry entry; + entry.size = size; + entry.offset = _offset; + resMap[id].entries.push_back(entry); + + _offset += size; + } + _stream->seek(_offset, SEEK_SET); + } +} + +bool Pipe::hasResource(uint32 tag, uint16 id) const { + if (!_types.contains(tag)) + return false; + + return _types[tag].contains(id); +} + +Common::SeekableReadStream *Pipe::getResource(uint32 tag, uint16 id, bool buffering) { + if (!_types.contains(tag)) + error("Pipe does not contain '%s' %04x", tag2str(tag), id); + + const ResourceMap &resMap = _types[tag]; + + if (!resMap.contains(id)) + error("Archive does not contain '%s' %04x", tag2str(tag), id); + + const PipeResource &res = resMap[id]; + + if (!buffering) { + assert(res.entries.size() == 1); + return new Common::SeekableSubReadStream(_stream, res.entries[0].offset, res.entries[0].offset + res.entries[0].size); + } + + uint32 size = 0; + for (uint i = 0; i < res.entries.size(); i++) + size += res.entries[i].size; + + byte *buffer = new byte[size]; + uint32 offset = 0; + for (uint i = 0; i < res.entries.size(); i++) { + _stream->seek(res.entries[i].offset, SEEK_SET); + _stream->read(buffer + offset, res.entries[i].size); + offset += res.entries[i].size; + } + _types[tag].erase(id); + return new Common::MemoryReadStream(buffer, size, DisposeAfterUse::YES); +} + +void ComposerEngine::playAnimation(uint16 animId, int16 x, int16 y, int16 eventParam) { + // First, we check if this animation is already playing, + // and if it is, we sabotage that running one first. + for (Common::List::iterator i = _anims.begin(); i != _anims.end(); i++) { + Animation *anim = *i; + if (anim->_id != animId) + continue; + + // disable the animation + anim->_state = 0; + + // stop any animations it may have spawned + for (uint j = 0; j < anim->_entries.size(); j++) { + if (anim->_entries[j].op == 3) + ; // TODO: stop anim + } + + // kill any pipes owned by the animation + for (Common::List::iterator j = _pipes.begin(); j != _pipes.end(); j++) { + Pipe *pipe = *j; + if (pipe->_anim != anim) + continue; + j = _pipes.reverse_erase(j); + delete pipe; + break; + } + + break; + } + + Common::SeekableReadStream *stream = NULL; + Pipe *newPipe = NULL; + + // First, check the existing pipes. + for (Common::List::iterator j = _pipes.begin(); j != _pipes.end(); j++) { + Pipe *pipe = *j; + if (!pipe->hasResource(ID_ANIM, animId)) + continue; + stream = pipe->getResource(ID_ANIM, animId, false); + break; + } + + // If we didn't find it, try the libraries. + if (!stream) { + stream = getResource(ID_ANIM, animId); + + uint32 type = 0; + for (Common::List::iterator i = _libraries.begin(); i != _libraries.end(); i++) + if (i->_archive->hasResource(ID_ANIM, animId)) { + type = i->_archive->getResourceFlags(ID_ANIM, animId); + break; + } + + // If the resource is a pipe itself, then load the pipe + // and then fish the requested animation out of it. + if (type != 1) { + newPipe = new Pipe(stream); + _pipes.push_front(newPipe); + stream = newPipe->getResource(ID_ANIM, animId, false); + } + } + + Animation *anim = new Animation(stream, animId, Common::Point(x, y), eventParam); + _anims.push_back(anim); + if (newPipe) + newPipe->_anim = anim; + runEvent(1, animId, eventParam, 0); +} + +void ComposerEngine::playWaveForAnim(uint16 id, bool bufferingOnly) { + Common::SeekableReadStream *stream = NULL; + if (!bufferingOnly && hasResource(ID_WAVE, id)) { + stream = getResource(ID_WAVE, id); + } else { + for (Common::List::iterator k = _pipes.begin(); k != _pipes.end(); k++) { + Pipe *pipe = *k; + if (!pipe->hasResource(ID_WAVE, id)) + continue; + stream = pipe->getResource(ID_WAVE, id, true); + break; + } + } + if (!stream) + return; + // FIXME: non-pipe buffers have fixed wav header (data at +44, size at +40) + // FIXME: deal with word6 (priority) + byte *buffer = (byte *)malloc(stream->size()); + stream->read(buffer, stream->size()); + _audioStream->queueBuffer(buffer, stream->size(), DisposeAfterUse::YES, Audio::FLAG_UNSIGNED); + delete stream; + if (!_mixer->isSoundHandleActive(_soundHandle)) + _mixer->playStream(Audio::Mixer::kSFXSoundType, &_soundHandle, _audioStream); +} + +void ComposerEngine::processAnimFrame() { + for (Common::List::iterator i = _anims.begin(); i != _anims.end(); i++) { + Animation *anim = *i; + + if (anim->_state <= 1) { + if (anim->_state == 1) { + runEvent(2, anim->_id, anim->_eventParam, 0); + } else { + // TODO: stop anything which was running + } + // TODO: kill pipes + delete anim; + i = _anims.reverse_erase(i); + + continue; + } + + anim->seekToCurrPos(); + + for (uint j = 0; j < anim->_entries.size(); j++) { + AnimationEntry &entry = anim->_entries[j]; + if (entry.op != 1) + break; + if (entry.counter) { + entry.counter--; + } else { + uint16 event = anim->_stream->readUint16LE(); + anim->_offset += 2; + if (event == 0xffff) { + entry.counter = anim->_stream->readUint16LE() - 1; + anim->_offset += 2; + } else { + runEvent(event, anim->_id, 0, 0); + } + } + } + } + + for (Common::List::iterator i = _anims.begin(); i != _anims.end(); i++) { + Animation *anim = *i; + + anim->_state--; + + for (uint j = 0; j < anim->_entries.size(); j++) { + AnimationEntry &entry = anim->_entries[j]; + + // TODO: only skip these at the start + if (entry.op == 1) + continue; + + if (entry.counter) { + entry.counter--; + if (entry.op == 2 && entry.word10) { + debug(4, "anim: continue play wave %d", entry.word10); + playWaveForAnim(entry.word10, true); + } + } else { + anim->seekToCurrPos(); + + uint16 data = anim->_stream->readUint16LE(); + anim->_offset += 2; + if (data == 0xffff) { + entry.counter = anim->_stream->readUint16LE() - 1; + anim->_offset += 2; + } else { + switch (entry.op) { + case 1: + // TODO + warning("ignoring tingie (%d)", data); + break; + case 2: + debug(4, "anim: play wave %d", data); + playWaveForAnim(data, false); + break; + case 3: + debug(4, "anim: play anim %d", data); + playAnimation(data, anim->_basePos.x, anim->_basePos.y, 1); + break; + case 4: + if (entry.word10 && (!data || data != entry.word10)) { + // TODO: erase old sprite + warning("ignoring anim sprite erase (%d)", entry.word10); + } + if (data) { + uint16 x = anim->_stream->readUint16LE(); + uint16 y = anim->_stream->readUint16LE(); + anim->_offset += 4; + // TODO: sprite change + warning("ignoring anim sprite draw (%d @ %d,%d)", data, x, y); + } + break; + default: + warning("unknown anim op %d", entry.op); + } + + entry.word10 = data; + } + } + } + } + + for (Common::List::iterator j = _pipes.begin(); j != _pipes.end(); j++) { + Pipe *pipe = *j; + pipe->nextFrame(); + } +} + +ComposerEngine::ComposerEngine(OSystem *syst, const ComposerGameDescription *gameDesc) : Engine(syst), _gameDescription(gameDesc) { + _rnd = new Common::RandomSource("composer"); + _audioStream = NULL; +} + +ComposerEngine::~ComposerEngine() { + DebugMan.clearAllDebugChannels(); + + for (Common::List::iterator i = _libraries.begin(); i != _libraries.end(); i++) + delete i->_archive; + + delete _audioStream; + delete _rnd; +} + +Common::Error ComposerEngine::run() { + Common::Event event; + + _vars.resize(1000); + for (uint i = 0; i < _vars.size(); i++) + _vars[i] = 0; + + _queuedScripts.resize(10); + for (uint i = 0; i < _queuedScripts.size(); i++) { + _queuedScripts[i]._count = 0; + _queuedScripts[i]._scriptId = 0; + } + + _bookIni.loadFromFile("programs/book.ini"); + + uint width = 640; + if (_bookIni.hasKey("Width", "Common")) + width = atoi(getStringFromConfig("Common", "Width").c_str()); + uint height = 480; + if (_bookIni.hasKey("Height", "Common")) + height = atoi(getStringFromConfig("Common", "Height").c_str()); + initGraphics(width, height, true); + _surface.create(width, height, Graphics::PixelFormat::createFormatCLUT8()); + + _audioStream = Audio::makeQueuingAudioStream(22050, false); + + loadLibrary(0); + + uint fps = atoi(getStringFromConfig("Common", "FPS").c_str()); + uint frameTime = 1000 / fps; + uint32 lastDrawTime = 0; + while (!shouldQuit()) { + if (hasResource(ID_BMAP, 1000)) + drawBMAP(1000, 0, 0); + + _system->copyRectToScreen((byte *)_surface.pixels, _surface.pitch, 0, 0, _surface.w, _surface.h); + _system->updateScreen(); + + uint32 thisTime = _system->getMillis(); + for (uint i = 0; i < _queuedScripts.size(); i++) { + QueuedScript &script = _queuedScripts[i]; + if (!script._count) + continue; + if (script._baseTime + script._duration > thisTime) + continue; + if (script._count != 0xffff) + script._count--; + script._baseTime = thisTime; + runScript(script._scriptId, i, 0, 0); + } + + // _system->delayMillis(frameTime + lastDrawTime - thisTime); + if (lastDrawTime + frameTime <= thisTime) { + lastDrawTime += frameTime; + + processAnimFrame(); + } + + while (_eventMan->pollEvent(event)) { + switch (event.type) { + case Common::EVENT_LBUTTONDOWN: + break; + + case Common::EVENT_LBUTTONUP: + break; + + case Common::EVENT_RBUTTONDOWN: + break; + + case Common::EVENT_MOUSEMOVE: + break; + + case Common::EVENT_KEYDOWN: + switch (event.kbd.keycode) { + case Common::KEYCODE_d: + /*if (event.kbd.hasFlags(Common::KBD_CTRL)) { + // Start the debugger + getDebugger()->attach(); + getDebugger()->onFrame(); + }*/ + break; + + case Common::KEYCODE_ESCAPE: + quitGame(); + break; + + default: + break; + } + break; + + case Common::EVENT_QUIT: + case Common::EVENT_RTL: + quitGame(); + break; + + default: + break; + } + } + + _system->delayMillis(20); + } + + return Common::kNoError; +} + +Common::String ComposerEngine::getStringFromConfig(const Common::String §ion, const Common::String &key) { + Common::String value; + if (!_bookIni.getKey(key, section, value)) + error("failed to find key '%s' in section '%s' of book config", key.c_str(), section.c_str()); + return value; +} + +Common::String ComposerEngine::getFilename(const Common::String §ion, uint id) { + Common::String key = Common::String::format("%d", id); + Common::String filename = getStringFromConfig(section, key); + while (filename.size() && (filename[0] == '~' || filename[0] == ':' || filename[0] == '\\')) + filename = filename.c_str() + 1; + Common::String outFilename; + for (uint i = 0; i < filename.size(); i++) { + if (filename[i] == '\\') + outFilename += '/'; + else + outFilename += filename[i]; + } + return outFilename; +} + +void ComposerEngine::loadLibrary(uint id) { + if (!id) + id = atoi(getStringFromConfig("Common", "StartUp").c_str()); + Common::String filename = getFilename("Libs", id); + + Library library; + + library._id = id; + library._archive = new ComposerArchive(); + if (!library._archive->openFile(filename)) + error("failed to open '%s'", filename.c_str()); + // FIXME: push in front? + _libraries.push_front(library); + + /*Common::SeekableReadStream *stream = _archive->getResource(ID_ANIM, 1004); + byte buf[stream->size()]; + stream->read(buf, stream->size()); + Common::hexdump(buf, stream->size()); + delete stream;*/ + + // TODO: set background properly + // + // TODO: better CTBL logic + loadCTBL(1000, 100); + + // Run the startup script. + runScript(1000, 0, 0, 0); + + runEvent(3, id, 0, 0); +} + +bool ComposerEngine::hasResource(uint32 tag, uint16 id) { + for (Common::List::iterator i = _libraries.begin(); i != _libraries.end(); i++) + if (i->_archive->hasResource(tag, id)) + return true; + + return false; +} + +Common::SeekableReadStream *ComposerEngine::getResource(uint32 tag, uint16 id) { + for (Common::List::iterator i = _libraries.begin(); i != _libraries.end(); i++) + if (i->_archive->hasResource(tag, id)) + return i->_archive->getResource(tag, id); + + error("No loaded library contains '%s' %04x", tag2str(tag), id); +} + +void ComposerEngine::runEvent(uint16 id, int16 param1, int16 param2, int16 param3) { + if (!hasResource(ID_EVNT, id)) + return; + + Common::SeekableReadStream *stream = getResource(ID_EVNT, id); + if (stream->size() != 2) + error("bad EVNT size %d", stream->size()); + uint16 scriptId = stream->readUint16LE(); + delete stream; + + debug(2, "running event %d via script %d(%d, %d, %d)", id, scriptId, param1, param2, param3); + + runScript(scriptId, param1, param2, param3); +} + +int16 ComposerEngine::runScript(uint16 id, int16 param1, int16 param2, int16 param3) { + _vars[1] = param1; + _vars[2] = param2; + _vars[3] = param3; + + runScript(id); + + return _vars[0]; +} + +int16 ComposerEngine::getArg(uint16 arg, uint16 type) { + switch (type) { + case 0: + return (int16)arg; + case 1: + return (int16)_vars[arg]; + case 2: + return (int16)_vars[_vars[arg]]; + default: + error("invalid argument type %d (getting arg %d)", type, arg); + } +} + +void ComposerEngine::setArg(uint16 arg, uint16 type, uint16 val) { + switch (type) { + case 1: + _vars[arg] = val; + break; + case 2: + _vars[_vars[arg]] = val; + break; + default: + error("invalid argument type %d (setting arg %d)", type, arg); + } + +} + +void ComposerEngine::runScript(uint16 id) { + if (!hasResource(ID_SCRP, id)) { + warning("ignoring attempt to run script %d, because it doesn't exist", id); + return; + } + + uint stackBase = _stack.size(); + _stack.resize(_stack.size() + 19); + + Common::SeekableReadStream *stream = getResource(ID_SCRP, id); + if (stream->size() < 2) + error("SCRP was too small (%d)", stream->size()); + uint16 size = stream->readUint16LE(); + if (stream->size() < 2 + 2*size) + error("SCRP was too small (%d, but claimed %d entries)", stream->size(), size); + uint16 *script = new uint16[size]; + for (uint i = 0; i < size; i++) + script[i] = stream->readUint16LE(); + delete stream; + + uint16 pos = 0; + bool lastResult = false; + while (pos < size) { + int16 val1, val2, val3; + + byte op = (byte)script[pos]; + uint numParams = (script[pos] & 0x300) >> 8; // 2 bits + if (pos + numParams >= size) + error("script ran out of content"); + uint arg1 = (script[pos] & 0xc00) >> 10; // 2 bits + uint arg2 = (script[pos] & 0x3000) >> 12; // 2 bits + uint arg3 = (script[pos] & 0xC000) >> 14; // 2 bits + switch (op) { + case kOpPlusPlus: + val1 = getArg(script[pos + 1], arg1); + debug(9, "[%d/%d]++ (now %d)", script[pos + 1], arg1, val1 + 1); + setArg(script[pos + 1], arg1, val1 + 1); + break; + case kOpAdd: + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + debug(9, "[%d/%d] = [%d/%d]=%d + [%d/%d]=%d (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2, script[pos+3], arg3, val3, val2 + val3); + setArg(script[pos + 1], arg1, val2 + val3); + break; + case kOpAssign: + val2 = getArg(script[pos + 2], arg2); + if (numParams != 2) + error("kOpAssign had wrong number of params (%d)", numParams); + debug(9, "[%d/%d] = [%d/%d] (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2); + setArg(script[pos + 1], arg1, val2); + break; + case kOpCallFunc: + val1 = getArg(script[pos + 1], arg1); + if (numParams != 1) + error("kOpCallFunc had wrong number of params (%d)", numParams); + debug(8, "%d(%d, %d, %d)", (uint16)val1, _vars[1], _vars[2], _vars[3]); + _vars[0] = scriptFuncCall(val1, _vars[1], _vars[2], _vars[3]); + break; + /*case kOpBoolGreaterThan: + lastResult = (getArg(script[pos + 1], arg1) > getArg(script[pos + 2], arg2)); + break;*/ + case kOpBoolEqual: + val1 = getArg(script[pos + 1], arg1); + val2 = getArg(script[pos + 2], arg2); + debug(9, "[%d/%d] == [%d/%d]? (%d > %d)", script[pos + 1], arg1, script[pos + 2], arg2, val1, val2); + lastResult = (val1 == val2); + break; + case kOpSaveArgs: + debug(9, "save args"); + for (uint i = 1; i < 19; i++) + _stack[stackBase + i] = _vars[i]; + break; + case kOpRestoreArgs: + debug(9, "restore args"); + for (uint i = 1; i < 19; i++) + _vars[i] = _stack[stackBase + i]; + break; + case kOpGreaterThan: + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + debug(9, "[%d/%d] = [%d/%d] > [%d/%d]? (%d > %d)", script[pos + 1], arg1, script[pos + 2], arg2, script[pos + 3], arg3, val2, val3); + setArg(script[pos + 1], arg1, (val3 > val2) ? 1 : 0); + break; + case kOpJump: + val1 = getArg(script[pos + 1], arg1); + debug(9, "jump by [%d/%d]=%d", script[pos + 1], arg1, val1); + pos += val1; + break; + case kOpJumpIfNot: + if (lastResult) + break; + val1 = getArg(script[pos + 1], arg1); + debug(9, "jump if not, by [%d/%d]=%d", script[pos + 1], arg1, val1); + pos += val1; + break; + case kOpJumpIfNotValue: + val1 = getArg(script[pos + 1], arg1); + val2 = getArg(script[pos + 2], arg2); + debug(9, "jump if not [%d/%d]=%d", script[pos + 1], arg1, val1); + if (val1) + break; + debug(9, "--> jump by [%d/%d]=%d", script[pos + 2], arg2, val2); + pos += val2; + break; + default: + error("unknown script op 0x%02x", op); + } + pos += (1 + numParams); + } + + delete[] script; + _stack.resize(_stack.size() - 19); +} + +int16 ComposerEngine::scriptFuncCall(uint16 id, int16 param1, int16 param2, int16 param3) { + switch (id) { + case kFuncPlayAnim: + debug(3, "kFuncPlayAnim(%d, %d, %d)", param1, param2, param3); + playAnimation(param1, param2, param3, 0); + break; + case kFuncStopAnim: + // TODO + warning("ignoring kFuncStopAnim(%d)", param1); + break; + case kFuncQueueScript: + debug(3, "kFuncQueueScript(%d, %d, %d)", param1, param2, param3); + _queuedScripts[param1]._baseTime = _system->getMillis(); + _queuedScripts[param1]._duration = 10 * param2; + _queuedScripts[param1]._count = 0xffff; + _queuedScripts[param1]._scriptId = param3; + return 0; + case kFuncDequeueScript: + debug(3, "kFuncDequeueScript(%d)", param1); + _queuedScripts[param1]._count = 0; + _queuedScripts[param1]._scriptId = 0; + return 0; + case kFuncHideMouse: + // TODO + warning("ignoring kFuncHideMouse(%d)", param1); + return 0; + break; + case kFuncLoadPage: + debug(3, "kFuncLoadPage(%d)", param1); + loadLibrary(param1); + return 1; + case kFuncUnloadPage: + // TODO + warning("ignoring kFuncUnloadPage(%d)", param1); + return 1; + case kFuncSetPalette: + // TODO: incomplete? + debug(4, "kFuncSetPalette(%d, %d)", param1, param2); + loadCTBL(param1, param2); + return 1; + break; + case kFuncQueueScriptOnce: + debug(3, "kFuncQueueScriptOnce(%d, %d, %d)", param1, param2, param3); + _queuedScripts[param1]._baseTime = _system->getMillis(); + _queuedScripts[param1]._duration = 10 * param2; + _queuedScripts[param1]._count = 1; + _queuedScripts[param1]._scriptId = param3; + return 0; + default: + error("unknown scriptFuncCall %d(%d, %d, %d)", (uint32)id, param1, param2, param3); + } +} + +void ComposerEngine::loadCTBL(uint id, uint fadePercent) { + Common::SeekableReadStream *stream = getResource(ID_CTBL, id); + + uint16 numEntries = stream->readUint16LE(); + debug(1, "CTBL: %d entries", numEntries); + + assert(numEntries <= 256); + assert(stream->size() == 2 + (numEntries * 3)); + + byte buffer[256 * 3]; + stream->read(buffer, numEntries * 3); + delete stream; + + for (uint i = 0; i < numEntries * 3; i++) + buffer[i] = ((unsigned int)buffer[i] * fadePercent) / 100; + + _system->getPaletteManager()->setPalette(buffer, 0, numEntries); +} + +void ComposerEngine::decompressBitmap(uint16 type, Common::SeekableReadStream *stream, byte *buffer, uint32 size) { + switch (type) { + case kBitmapUncompressed: + assert(stream->size() - (uint)stream->pos() == size); + stream->read(buffer, size); + break; + default: + error("decompressBitmap can't handle type %d", type); + } +} + +void ComposerEngine::drawBMAP(uint id, uint x, uint y) { + Common::SeekableReadStream *stream = getResource(ID_BMAP, id); + + uint16 type = stream->readUint16LE(); + uint16 height = stream->readUint16LE(); + uint16 width = stream->readUint16LE(); + uint32 size = stream->readUint32LE(); + debug(1, "BMAP: type %d, width %d, height %d, size %d", type, width, height, size); + + byte *buffer = new byte[width * height]; + decompressBitmap(type, stream, buffer, size); + + // incoming data is BMP-style (bottom-up), so flip it + byte *pixels = (byte *)_surface.pixels; + for (uint j = 0; j < height; j++) { + memcpy(pixels + (j * width), buffer + (height - j - 1) * width, width); + } + + delete[] buffer; + delete stream; +} + +} // End of namespace Composer diff --git a/engines/composer/composer.h b/engines/composer/composer.h new file mode 100644 index 00000000000..5d4233a1ba2 --- /dev/null +++ b/engines/composer/composer.h @@ -0,0 +1,197 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + * + */ + +#ifndef COMPOSER_H +#define COMPOSER_H + +#include "common/config-file.h" +#include "common/random.h" +#include "common/system.h" +#include "common/debug.h" +#include "common/debug-channels.h" +#include "common/textconsole.h" +#include "common/rect.h" + +#include "engines/engine.h" +#include "engines/util.h" + +#include "graphics/surface.h" + +#include "audio/mixer.h" + +#include "composer/resource.h" + +namespace Audio { + class QueuingAudioStream; +} + +namespace Composer { + +struct ComposerGameDescription; + +enum GameType { + GType_ComposerV1, + GType_ComposerV2 +}; + +class Archive; +class ComposerEngine; + +class Sprite { +}; + +struct AnimationEntry { + uint32 dword0; + uint16 op; + uint16 word6; + uint16 counter; + uint16 word10; +}; + +struct Animation { + Animation(Common::SeekableReadStream *stream, uint16 id, Common::Point basePos, uint32 eventParam); + ~Animation(); + + void seekToCurrPos(); + + uint16 _id; + Common::Point _basePos; + uint32 _eventParam; + + uint32 _state; + + Common::Array _entries; + + uint32 _offset; + Common::SeekableReadStream *_stream; +}; + +struct PipeResourceEntry { + uint32 size; + uint32 offset; +}; + +struct PipeResource { + Common::Array entries; +}; + +class Pipe { +public: + Pipe(Common::SeekableReadStream *stream); + void nextFrame(); + + Animation *_anim; + + bool hasResource(uint32 tag, uint16 id) const; + Common::SeekableReadStream *getResource(uint32 tag, uint16 id, bool buffering); + +protected: + Common::SeekableReadStream *_stream; + + typedef Common::HashMap ResourceMap; + typedef Common::HashMap TypeMap; + TypeMap _types; + + uint32 _offset; +}; + +class Button { +public: + Button(ComposerEngine *vm, uint16 id); +}; + +struct Library { + uint _id; + Archive *_archive; +}; + +struct QueuedScript { + uint32 _baseTime; + uint32 _duration; + uint32 _count; + uint16 _scriptId; +}; + +class ComposerEngine : public Engine { +protected: + Common::Error run(); + +public: + ComposerEngine(OSystem *syst, const ComposerGameDescription *gameDesc); + virtual ~ComposerEngine(); + + virtual bool hasFeature(EngineFeature f) const; + + int getGameType() const; + const char *getGameId() const; + uint32 getFeatures() const; + Common::Language getLanguage() const; + + const ComposerGameDescription *_gameDescription; + +private: + Common::RandomSource *_rnd; + + Audio::SoundHandle _soundHandle; + Audio::QueuingAudioStream *_audioStream; + + Graphics::Surface _surface; + Common::ConfigFile _bookIni; + Common::List _libraries; + + Common::Array _stack; + Common::Array _vars; + + Common::Array _queuedScripts; + Common::List _anims; + Common::List _pipes; + + Common::String getStringFromConfig(const Common::String §ion, const Common::String &key); + Common::String getFilename(const Common::String §ion, uint id); + void loadLibrary(uint id); + + bool hasResource(uint32 tag, uint16 id); + Common::SeekableReadStream *getResource(uint32 tag, uint16 id); + + void runEvent(uint16 id, int16 param1, int16 param2, int16 param3); + int16 runScript(uint16 id, int16 param1, int16 param2, int16 param3); + + int16 getArg(uint16 arg, uint16 type); + void setArg(uint16 arg, uint16 type, uint16 val); + void runScript(uint16 id); + int16 scriptFuncCall(uint16 id, int16 param1, int16 param2, int16 param3); + + void playAnimation(uint16 animId, int16 param1, int16 param2, int16 param3); + void playWaveForAnim(uint16 id, bool bufferingOnly); + void processAnimFrame(); + + void loadCTBL(uint id, uint fadePercent); + void decompressBitmap(uint16 type, Common::SeekableReadStream *stream, byte *buffer, uint32 size); + void drawBMAP(uint id, uint x, uint y); +}; + +} // End of namespace Composer + +#endif diff --git a/engines/composer/detection.cpp b/engines/composer/detection.cpp new file mode 100644 index 00000000000..8704a5eabc1 --- /dev/null +++ b/engines/composer/detection.cpp @@ -0,0 +1,139 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + * + */ + +#include "base/plugins.h" +#include "engines/advancedDetector.h" + +#include "composer/composer.h" + +namespace Composer { + +struct ComposerGameDescription { + ADGameDescription desc; + + int gameType; +}; + +int ComposerEngine::getGameType() const { + return _gameDescription->gameType; +} + +const char *ComposerEngine::getGameId() const { + return _gameDescription->desc.gameid; +} + +uint32 ComposerEngine::getFeatures() const { + return _gameDescription->desc.flags; +} + +Common::Language ComposerEngine::getLanguage() const { + return _gameDescription->desc.language; +} + +} + +static const PlainGameDescriptor composerGames[] = { + {"darby", "Darby the Dragon"}, + {"demo1", "Magic Tales Demo 1"}, + {0, 0} +}; + +namespace Composer { + +using Common::GUIO_NONE; + +static const ComposerGameDescription gameDescriptions[] = { + { + { + "demo1", + 0, + {{"book.ini", 0, "dbc98c566f4ac61b544443524585dccb", -1}, + AD_LISTEND}, + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_NO_FLAGS, + Common::GUIO_NONE + }, + GType_ComposerV1 + }, + + { + { + "darby", + 0, + {{"install.inf", 0, "e83cc20ee18a2e138da1aadfc640dff2", -1}, + AD_LISTEND}, + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_NO_FLAGS, + Common::GUIO_NONE + }, + GType_ComposerV2 + }, + + { AD_TABLE_END_MARKER, 0 } +}; + +} // End of namespace Composer + +using namespace Composer; + +class ComposerMetaEngine : public AdvancedMetaEngine { +public: + ComposerMetaEngine() : AdvancedMetaEngine(Composer::gameDescriptions, sizeof(Composer::ComposerGameDescription), composerGames) {} + + virtual const char *getName() const { + return "Magic Composer Engine"; + } + + virtual const char *getOriginalCopyright() const { + return "Animation Magic"; + } + + virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const; + virtual bool hasFeature(MetaEngineFeature f) const; +}; + +bool ComposerMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const { + const Composer::ComposerGameDescription *gd = (const Composer::ComposerGameDescription *)desc; + if (gd) { + *engine = new Composer::ComposerEngine(syst, gd); + } + return gd != 0; +} + +bool ComposerMetaEngine::hasFeature(MetaEngineFeature f) const { + return false; +} + +bool Composer::ComposerEngine::hasFeature(EngineFeature f) const { + return (f == kSupportsRTL); +} + +#if PLUGIN_ENABLED_DYNAMIC(COMPOSER) +REGISTER_PLUGIN_DYNAMIC(COMPOSER, PLUGIN_TYPE_ENGINE, ComposerMetaEngine); +#else +REGISTER_PLUGIN_STATIC(COMPOSER, PLUGIN_TYPE_ENGINE, ComposerMetaEngine); +#endif diff --git a/engines/composer/module.mk b/engines/composer/module.mk new file mode 100644 index 00000000000..5637ffbc6e7 --- /dev/null +++ b/engines/composer/module.mk @@ -0,0 +1,14 @@ +MODULE := engines/composer + +MODULE_OBJS = \ + composer.o \ + detection.o \ + resource.o + +# This module can be built as a plugin +ifdef BUILD_PLUGINS +PLUGIN := 1 +endif + +# Include common rules +include $(srcdir)/rules.mk diff --git a/engines/composer/resource.cpp b/engines/composer/resource.cpp new file mode 100644 index 00000000000..390649ba525 --- /dev/null +++ b/engines/composer/resource.cpp @@ -0,0 +1,250 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "composer/resource.h" + +#include "common/debug.h" +#include "common/substream.h" +#include "common/util.h" +#include "common/textconsole.h" + +namespace Composer { + +// Base Archive code +// (copied from clone2727's mohawk code) + +Archive::Archive() { + _stream = 0; +} + +Archive::~Archive() { + close(); +} + +bool Archive::openFile(const Common::String &fileName) { + Common::File *file = new Common::File(); + + if (!file->open(fileName)) { + delete file; + return false; + } + + if (!openStream(file)) { + close(); + return false; + } + + return true; +} + +void Archive::close() { + _types.clear(); + delete _stream; _stream = 0; +} + +bool Archive::hasResource(uint32 tag, uint16 id) const { + if (!_types.contains(tag)) + return false; + + return _types[tag].contains(id); +} + +bool Archive::hasResource(uint32 tag, const Common::String &resName) const { + if (!_types.contains(tag) || resName.empty()) + return false; + + const ResourceMap &resMap = _types[tag]; + + for (ResourceMap::const_iterator it = resMap.begin(); it != resMap.end(); it++) + if (it->_value.name.matchString(resName)) + return true; + + return false; +} + +Common::SeekableReadStream *Archive::getResource(uint32 tag, uint16 id) { + if (!_types.contains(tag)) + error("Archive does not contain '%s' %04x", tag2str(tag), id); + + const ResourceMap &resMap = _types[tag]; + + if (!resMap.contains(id)) + error("Archive does not contain '%s' %04x", tag2str(tag), id); + + const Resource &res = resMap[id]; + + return new Common::SeekableSubReadStream(_stream, res.offset, res.offset + res.size); +} + +uint32 Archive::getResourceFlags(uint32 tag, uint16 id) const { + if (!_types.contains(tag)) + error("Archive does not contain '%s' %04x", tag2str(tag), id); + + const ResourceMap &resMap = _types[tag]; + + if (!resMap.contains(id)) + error("Archive does not contain '%s' %04x", tag2str(tag), id); + + const Resource &res = resMap[id]; + + return res.flags; +} + +uint32 Archive::getOffset(uint32 tag, uint16 id) const { + if (!_types.contains(tag)) + error("Archive does not contain '%s' %04x", tag2str(tag), id); + + const ResourceMap &resMap = _types[tag]; + + if (!resMap.contains(id)) + error("Archive does not contain '%s' %04x", tag2str(tag), id); + + return resMap[id].offset; +} + +uint16 Archive::findResourceID(uint32 tag, const Common::String &resName) const { + if (!_types.contains(tag) || resName.empty()) + return 0xFFFF; + + const ResourceMap &resMap = _types[tag]; + + for (ResourceMap::const_iterator it = resMap.begin(); it != resMap.end(); it++) + if (it->_value.name.matchString(resName)) + return it->_key; + + return 0xFFFF; +} + +Common::String Archive::getName(uint32 tag, uint16 id) const { + if (!_types.contains(tag)) + error("Archive does not contain '%s' %04x", tag2str(tag), id); + + const ResourceMap &resMap = _types[tag]; + + if (!resMap.contains(id)) + error("Archive does not contain '%s' %04x", tag2str(tag), id); + + return resMap[id].name; +} + +Common::Array Archive::getResourceTypeList() const { + Common::Array typeList; + + for (TypeMap::const_iterator it = _types.begin(); it != _types.end(); it++) + typeList.push_back(it->_key); + + return typeList; +} + +Common::Array Archive::getResourceIDList(uint32 type) const { + Common::Array idList; + + if (!_types.contains(type)) + return idList; + + const ResourceMap &resMap = _types[type]; + + for (ResourceMap::const_iterator it = resMap.begin(); it != resMap.end(); it++) + idList.push_back(it->_key); + + return idList; +} + +// Composer Archive code + +bool ComposerArchive::openStream(Common::SeekableReadStream *stream) { + // Make sure no other file is open... + close(); + + bool newStyle = false; + uint32 headerSize = stream->readUint32LE(); + if (headerSize == SWAP_CONSTANT_32(ID_LBRC)) { + // new-style file + newStyle = true; + headerSize = stream->readUint32LE(); + uint32 zeros = stream->readUint32LE(); + if (zeros != 0) + error("invalid LBRC header (%d instead of zeros)", zeros); + } + + uint16 numResourceTypes = stream->readUint16LE(); + if (newStyle) { + uint16 unknown = stream->readUint16LE(); + debug(4, "skipping unknown %04x", unknown); + } + + debug(4, "Reading LBRC resource table with %d entries", numResourceTypes); + for (uint i = 0; i < numResourceTypes; i++) { + uint32 tag = stream->readUint32BE(); + uint32 tableOffset = stream->readUint32LE(); + debug(4, "Type '%s' at offset %d", tag2str(tag), tableOffset); + // starting from the start of the resource table, which differs + // according to whether we have the 10 extra bytes for newStyle + if (newStyle) + tableOffset += 16; + else + tableOffset += 6; + + ResourceMap &resMap = _types[tag]; + + uint32 oldPos = stream->pos(); + stream->seek(tableOffset); + + while (true) { + if (stream->eos()) + error("LBRC file ran out of stream"); + + uint32 offset, size, id, flags; + if (newStyle) { + offset = stream->readUint32LE(); + if (!offset) + break; + size = stream->readUint32LE(); + id = stream->readUint16LE(); + flags = stream->readUint16LE(); // set to 1 for preload, otherwise no preload + /*uint32 junk = */ stream->readUint32LE(); + } else { + id = stream->readUint16LE(); + if (!id) + break; + offset = stream->readUint32LE(); + offset += headerSize; + size = stream->readUint32LE(); + flags = stream->readUint16LE(); // FIXME + + } + + Resource &res = resMap[id]; + res.offset = offset; + res.size = size; + res.flags = flags; + debug(4, "Id %d, offset %d, size %d, flags %08x", id, offset, size, flags); + } + + stream->seek(oldPos); + } + + _stream = stream; + return true; +} + +} // End of namespace Composer diff --git a/engines/composer/resource.h b/engines/composer/resource.h new file mode 100644 index 00000000000..4cadd80e224 --- /dev/null +++ b/engines/composer/resource.h @@ -0,0 +1,93 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "common/scummsys.h" +#include "common/endian.h" +#include "common/hashmap.h" +#include "common/file.h" +#include "common/str.h" + +#ifndef COMPOSER_RESOURCE_H +#define COMPOSER_RESOURCE_H + +namespace Composer { + +#define ID_LBRC MKTAG('L','B','R','C') // Main FourCC + +#define ID_ANIM MKTAG('A','N','I','M') // Animation +#define ID_BMAP MKTAG('B','M','A','P') // Bitmap +#define ID_BUTN MKTAG('B','U','T','N') // Button +#define ID_CTBL MKTAG('C','T','B','L') // Color Table +#define ID_EVNT MKTAG('E','V','N','T') // Event +#define ID_PIPE MKTAG('P','I','P','E') // Pipe +#define ID_SCRP MKTAG('S','C','R','P') // Script +#define ID_VARI MKTAG('V','A','R','I') // Variables +#define ID_WAVE MKTAG('W','A','V','E') // Wave + +class Archive { +public: + Archive(); + virtual ~Archive(); + + bool openFile(const Common::String &fileName); + virtual bool openStream(Common::SeekableReadStream *stream) = 0; + void close(); + + bool isOpen() const { return _stream != 0; } + + bool hasResource(uint32 tag, uint16 id) const; + bool hasResource(uint32 tag, const Common::String &resName) const; + Common::SeekableReadStream *getResource(uint32 tag, uint16 id); + uint32 getResourceFlags(uint32 tag, uint16 id) const; + uint32 getOffset(uint32 tag, uint16 id) const; + uint16 findResourceID(uint32 tag, const Common::String &resName) const; + Common::String getName(uint32 tag, uint16 id) const; + + Common::Array getResourceTypeList() const; + Common::Array getResourceIDList(uint32 type) const; + +protected: + Common::SeekableReadStream *_stream; + + struct Resource { + uint32 offset; + uint32 size; + Common::String name; + uint32 flags; + }; + + typedef Common::HashMap ResourceMap; + typedef Common::HashMap TypeMap; + TypeMap _types; +}; + +class ComposerArchive : public Archive { +public: + ComposerArchive() : Archive() {} + ~ComposerArchive() {} + + bool openStream(Common::SeekableReadStream *stream); +}; + +} // End of namespace Composer + +#endif diff --git a/engines/engines.mk b/engines/engines.mk index dc09fbd54ec..de11496b7bf 100644 --- a/engines/engines.mk +++ b/engines/engines.mk @@ -31,6 +31,11 @@ DEFINES += -DENABLE_CINE=$(ENABLE_CINE) MODULES += engines/cine endif +ifdef ENABLE_COMPOSER +DEFINES += -DENABLE_COMPOSER=$(ENABLE_COMPOSER) +MODULES += engines/composer +endif + ifdef ENABLE_CRUISE DEFINES += -DENABLE_CRUISE=$(ENABLE_CRUISE) MODULES += engines/cruise From 3935b3ed6be6bde5272b0d84a3dbe0df54f205fc Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Thu, 14 Jul 2011 23:36:49 +0200 Subject: [PATCH 088/731] COMPOSER: Manage/render sprites. --- engines/composer/composer.cpp | 181 +++++++++++++++++++++++++++++++--- engines/composer/composer.h | 13 ++- 2 files changed, 177 insertions(+), 17 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index b2dcc3b36c9..3651a493287 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -212,7 +212,7 @@ Common::SeekableReadStream *Pipe::getResource(uint32 tag, uint16 id, bool buffer for (uint i = 0; i < res.entries.size(); i++) size += res.entries[i].size; - byte *buffer = new byte[size]; + byte *buffer = (byte *)malloc(size); uint32 offset = 0; for (uint i = 0; i < res.entries.size(); i++) { _stream->seek(res.entries[i].offset, SEEK_SET); @@ -397,15 +397,19 @@ void ComposerEngine::processAnimFrame() { break; case 4: if (entry.word10 && (!data || data != entry.word10)) { - // TODO: erase old sprite - warning("ignoring anim sprite erase (%d)", entry.word10); + debug(4, "anim: erase sprite %d", entry.word10); + removeSprite(data, anim->_id); } if (data) { uint16 x = anim->_stream->readUint16LE(); uint16 y = anim->_stream->readUint16LE(); + Common::Point pos(x, y); anim->_offset += 4; - // TODO: sprite change - warning("ignoring anim sprite draw (%d @ %d,%d)", data, x, y); + uint16 animId = anim->_id; + if (anim->_state == entry.dword0) + animId = 0; + debug(4, "anim: draw sprite %d at (relative) %d,%d", data, x, y); + addSprite(data, animId, entry.word6, anim->_basePos + pos); } break; default: @@ -424,6 +428,33 @@ void ComposerEngine::processAnimFrame() { } } +void ComposerEngine::addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos) { + Sprite sprite; + sprite.id = id; + sprite.animId = animId; + sprite.zorder = zorder; + sprite.pos = pos; + + for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { + if (sprite.zorder < i->zorder) + continue; + _sprites.insert(i, sprite); + return; + } + _sprites.push_back(sprite); +} + +void ComposerEngine::removeSprite(uint16 id, uint16 animId) { + for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { + if (i->id != id) + continue; + if (animId && i->animId != animId) + continue; + i = _sprites.reverse_erase(i); + return; + } +} + ComposerEngine::ComposerEngine(OSystem *syst, const ComposerGameDescription *gameDesc) : Engine(syst), _gameDescription(gameDesc) { _rnd = new Common::RandomSource("composer"); _audioStream = NULL; @@ -471,12 +502,6 @@ Common::Error ComposerEngine::run() { uint frameTime = 1000 / fps; uint32 lastDrawTime = 0; while (!shouldQuit()) { - if (hasResource(ID_BMAP, 1000)) - drawBMAP(1000, 0, 0); - - _system->copyRectToScreen((byte *)_surface.pixels, _surface.pitch, 0, 0, _surface.w, _surface.h); - _system->updateScreen(); - uint32 thisTime = _system->getMillis(); for (uint i = 0; i < _queuedScripts.size(); i++) { QueuedScript &script = _queuedScripts[i]; @@ -494,6 +519,15 @@ Common::Error ComposerEngine::run() { if (lastDrawTime + frameTime <= thisTime) { lastDrawTime += frameTime; + if (hasResource(ID_BMAP, 1000)) + drawBMAP(1000, 0, 0); + for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { + drawBMAP(i->id, i->pos.x, i->pos.y); + } + + _system->copyRectToScreen((byte *)_surface.pixels, _surface.pitch, 0, 0, _surface.w, _surface.h); + _system->updateScreen(); + processAnimFrame(); } @@ -853,19 +887,130 @@ void ComposerEngine::loadCTBL(uint id, uint fadePercent) { _system->getPaletteManager()->setPalette(buffer, 0, numEntries); } -void ComposerEngine::decompressBitmap(uint16 type, Common::SeekableReadStream *stream, byte *buffer, uint32 size) { +static void decompressSLWM(byte *buffer, Common::SeekableReadStream *stream) { + uint bitsLeft = 0; + uint16 lastBits; + byte currBit; + while (true) { + if (bitsLeft == 0) { bitsLeft = 16; lastBits = stream->readUint16LE(); } + currBit = (lastBits & 1); lastBits >>= 1; bitsLeft--; + + if (currBit) { + // single byte + *buffer++ = stream->readByte(); + continue; + } + + if (bitsLeft == 0) { bitsLeft = 16; lastBits = stream->readUint16LE(); } + currBit = (lastBits & 1); lastBits >>= 1; bitsLeft--; + + uint start; + uint count; + if (currBit) { + uint orMask = stream->readByte(); + uint in = stream->readByte(); + count = in & 7; + start = ((in & ~7) << 5) | orMask; + if (!count) { + count = stream->readByte(); + if (!count) + break; + count -= 2; + } + } else { + // count encoded in the next two bits + count = 0; + + if (bitsLeft == 0) { bitsLeft = 16; lastBits = stream->readUint16LE(); } + currBit = (lastBits & 1); lastBits >>= 1; bitsLeft--; + + count = (count << 1) | currBit; + + if (bitsLeft == 0) { bitsLeft = 16; lastBits = stream->readUint16LE(); } + currBit = (lastBits & 1); lastBits >>= 1; bitsLeft--; + + count = (count << 1) | currBit; + + start = stream->readByte(); + } + + count += 2; + start++; + memcpy(buffer, buffer - start, count); + buffer += count; + } +} + +void ComposerEngine::decompressBitmap(uint16 type, Common::SeekableReadStream *stream, byte *buffer, uint32 size, uint width, uint height) { switch (type) { case kBitmapUncompressed: assert(stream->size() - (uint)stream->pos() == size); + assert(size == width * height); stream->read(buffer, size); break; + case kBitmapRLESLWM: + { + uint32 bufSize = stream->readUint32LE(); + byte *tempBuf = new byte[bufSize]; + decompressSLWM(tempBuf, stream); + + uint instrPos = tempBuf[0] + 1; + instrPos += READ_LE_UINT16(tempBuf + instrPos) + 2; + byte *instr = tempBuf + instrPos; + + uint line = 0; + while (line++ < height) { + uint pixels = 0; + + while (pixels < width) { + byte data = *instr++; + byte color = tempBuf[(data & 0x7F) + 1]; + if (!(data & 0x80)) { + *buffer++ = color; + pixels++; + } else { + byte count = *instr++; + if (!count) { + while (pixels++ < width) + *buffer++ = color; + break; + } + for (uint i = 0; i < count; i++) { + *buffer++ = color; + pixels++; + } + } + } + } + delete[] tempBuf; + } + break; + case kBitmapSLWM: + decompressSLWM(buffer, stream); + break; default: error("decompressBitmap can't handle type %d", type); } } void ComposerEngine::drawBMAP(uint id, uint x, uint y) { - Common::SeekableReadStream *stream = getResource(ID_BMAP, id); + Common::SeekableReadStream *stream = NULL; + if (hasResource(ID_BMAP, id)) + stream = getResource(ID_BMAP, id); + else + for (Common::List::iterator k = _pipes.begin(); k != _pipes.end(); k++) { + Pipe *pipe = *k; + if (!pipe->hasResource(ID_BMAP, id)) + continue; + stream = pipe->getResource(ID_BMAP, id, true); + break; + } + + if (!stream) { + // FIXME + warning("couldn't find BMAP %d", id); + return; + } uint16 type = stream->readUint16LE(); uint16 height = stream->readUint16LE(); @@ -874,12 +1019,18 @@ void ComposerEngine::drawBMAP(uint id, uint x, uint y) { debug(1, "BMAP: type %d, width %d, height %d, size %d", type, width, height, size); byte *buffer = new byte[width * height]; - decompressBitmap(type, stream, buffer, size); + decompressBitmap(type, stream, buffer, size, width, height); + + debug(1, "draw at %d,%d", x, y); // incoming data is BMP-style (bottom-up), so flip it byte *pixels = (byte *)_surface.pixels; for (uint j = 0; j < height; j++) { - memcpy(pixels + (j * width), buffer + (height - j - 1) * width, width); + byte *in = buffer + (height - j - 1) * width; + byte *out = pixels + ((j + y) * _surface.w) + x; + for (uint i = 0; i < width; i++) + if (in[i]) + out[i] = in[i]; } delete[] buffer; diff --git a/engines/composer/composer.h b/engines/composer/composer.h index 5d4233a1ba2..e535bfbc6ee 100644 --- a/engines/composer/composer.h +++ b/engines/composer/composer.h @@ -59,7 +59,11 @@ enum GameType { class Archive; class ComposerEngine; -class Sprite { +struct Sprite { + uint16 id; + uint16 animId; + uint16 zorder; + Common::Point pos; }; struct AnimationEntry { @@ -158,6 +162,8 @@ private: Audio::QueuingAudioStream *_audioStream; Graphics::Surface _surface; + Common::List _sprites; + Common::ConfigFile _bookIni; Common::List _libraries; @@ -187,8 +193,11 @@ private: void playWaveForAnim(uint16 id, bool bufferingOnly); void processAnimFrame(); + void addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos); + void removeSprite(uint16 id, uint16 animId); + void loadCTBL(uint id, uint fadePercent); - void decompressBitmap(uint16 type, Common::SeekableReadStream *stream, byte *buffer, uint32 size); + void decompressBitmap(uint16 type, Common::SeekableReadStream *stream, byte *buffer, uint32 size, uint width, uint height); void drawBMAP(uint id, uint x, uint y); }; From 24ca79e740ece52072e026d39f34234c24333c5c Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Fri, 15 Jul 2011 00:02:28 +0200 Subject: [PATCH 089/731] COMPOSER: Detect Gregory and the Hot Air Balloon. --- engines/composer/detection.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/engines/composer/detection.cpp b/engines/composer/detection.cpp index 8704a5eabc1..c646a0e43e1 100644 --- a/engines/composer/detection.cpp +++ b/engines/composer/detection.cpp @@ -56,6 +56,7 @@ Common::Language ComposerEngine::getLanguage() const { static const PlainGameDescriptor composerGames[] = { {"darby", "Darby the Dragon"}, + {"gregory", "Gregory and the Hot Air Balloon"}, {"demo1", "Magic Tales Demo 1"}, {0, 0} }; @@ -93,6 +94,20 @@ static const ComposerGameDescription gameDescriptions[] = { GType_ComposerV2 }, + { + { + "gregory", + 0, + {{"install.inf", 0, "b7e9d6f7949d412dad0a183375069844", -1}, + AD_LISTEND}, + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_NO_FLAGS, + Common::GUIO_NONE + }, + GType_ComposerV2 + }, + { AD_TABLE_END_MARKER, 0 } }; From 6092b324f39f7370da0257c0a2d32ccae55f81fe Mon Sep 17 00:00:00 2001 From: CeRiAl Date: Fri, 15 Jul 2011 00:24:44 +0200 Subject: [PATCH 090/731] WINCE: Change default values for "FM_high_quality" & "high_sample_rate" Changed the default values from "false" to "true" as current devices are fast enough to handle this. It's still possible to change the values to "false" if the device isn't fast enough. --- backends/mixer/wincesdl/wincesdl-mixer.cpp | 11 ++++++++--- backends/platform/wince/README-WinCE.txt | 20 ++++++++++++-------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/backends/mixer/wincesdl/wincesdl-mixer.cpp b/backends/mixer/wincesdl/wincesdl-mixer.cpp index 36ac310ad96..c7659cb0f5d 100644 --- a/backends/mixer/wincesdl/wincesdl-mixer.cpp +++ b/backends/mixer/wincesdl/wincesdl-mixer.cpp @@ -131,15 +131,20 @@ uint32 WINCESdlMixerManager::compute_sample_rate() { ConfMan.setBool("FM_medium_quality", true); ConfMan.flushToDisk(); } + } else { + if (!ConfMan.hasKey("FM_high_quality") && !ConfMan.hasKey("FM_medium_quality")) { + ConfMan.setBool("FM_high_quality", true); + ConfMan.flushToDisk(); + } } // See if the output frequency is forced by the game if (gameid == "ft" || gameid == "dig" || gameid == "comi" || gameid == "queen" || gameid == "sword" || gameid == "agi") sampleRate = SAMPLES_PER_SEC_NEW; else { - if (ConfMan.hasKey("high_sample_rate") && ConfMan.getBool("high_sample_rate")) - sampleRate = SAMPLES_PER_SEC_NEW; - else + if (ConfMan.hasKey("high_sample_rate") && !ConfMan.getBool("high_sample_rate")) sampleRate = SAMPLES_PER_SEC_OLD; + else + sampleRate = SAMPLES_PER_SEC_NEW; } #ifdef USE_VORBIS diff --git a/backends/platform/wince/README-WinCE.txt b/backends/platform/wince/README-WinCE.txt index 8f1262051a6..87f6e78ffe4 100644 --- a/backends/platform/wince/README-WinCE.txt +++ b/backends/platform/wince/README-WinCE.txt @@ -1,10 +1,15 @@ ScummVM Windows CE FAQ -Last updated: 2011-07-01 -Release version: 1.3.1 +Last updated: 2011-07-14 +Release version: x.x.x ------------------------------------------------------------------------ New in this version ------------------- +x.x.x: +- Changed default values for "high_sample_rate" & "FM_high_quality" to "true" as + most devices today are fast enough to handle this. It's still possible to set + this to "false" if you have a slower device. + 1.3.1: - Fix for Normal2xAspect scaler which was causing screen update issues in some games. @@ -361,14 +366,13 @@ Some parameters are specific to this port : Game specific sections (f.e. [monkey2]) - performance options * high_sample_rate bool Desktop quality (22 kHz) sound output if - set. The default is 11 kHz. - If you have a fast device, you can set this - to true to enjoy better sound effects and - music. + set. This is the default. + If you have a slow device, you can set this + to false to prevent lags/delays in the game. * FM_high_quality bool Desktop quality FM synthesis if set. Lower - quality otherwise. The default is low + quality otherwise. The default is high quality. You can change this if you have a - fast device. + slow device. * sound_thread_priority int Set the priority of the sound thread (0, 1, 2). Depending on the release, this is set to 1 internally (above normal). From add71297bd283516ff3bd75f13bea69b6898adaa Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Fri, 15 Jul 2011 15:18:59 +0200 Subject: [PATCH 091/731] COMPOSER: Don't read off the end of pipes. --- engines/composer/composer.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 3651a493287..fba699660d8 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -154,6 +154,9 @@ Pipe::Pipe(Common::SeekableReadStream *stream) { } void Pipe::nextFrame() { + if (_offset == _stream->size()) + return; + _stream->seek(_offset, SEEK_SET); uint32 tagCount = _stream->readUint32LE(); From 8517c17b0440bd8368479ea0fa3e048e050e028b Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Fri, 15 Jul 2011 15:19:37 +0200 Subject: [PATCH 092/731] COMPOSER: Handle single-directory games. --- engines/composer/composer.cpp | 18 +++++++++++++++++- engines/composer/composer.h | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index fba699660d8..961665bafc9 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -486,7 +486,12 @@ Common::Error ComposerEngine::run() { _queuedScripts[i]._scriptId = 0; } - _bookIni.loadFromFile("programs/book.ini"); + _directoriesToStrip = 1; + if (!_bookIni.loadFromFile("book.ini")) { + _directoriesToStrip = 0; + if (!_bookIni.loadFromFile("programs/book.ini")) + error("failed to find book.ini"); + } uint width = 640; if (_bookIni.hasKey("Width", "Common")) @@ -595,6 +600,17 @@ Common::String ComposerEngine::getFilename(const Common::String §ion, uint i Common::String filename = getStringFromConfig(section, key); while (filename.size() && (filename[0] == '~' || filename[0] == ':' || filename[0] == '\\')) filename = filename.c_str() + 1; + + uint slashesToStrip = _directoriesToStrip; + while (slashesToStrip--) { + for (uint i = 0; i < filename.size(); i++) { + if (filename[i] != '\\') + continue; + filename = filename.c_str() + i + 1; + break; + } + } + Common::String outFilename; for (uint i = 0; i < filename.size(); i++) { if (filename[i] == '\\') diff --git a/engines/composer/composer.h b/engines/composer/composer.h index e535bfbc6ee..b18b3575f2a 100644 --- a/engines/composer/composer.h +++ b/engines/composer/composer.h @@ -164,6 +164,7 @@ private: Graphics::Surface _surface; Common::List _sprites; + uint _directoriesToStrip; Common::ConfigFile _bookIni; Common::List _libraries; From 7849466760eca03d099d27e4b3dc9a9e1e388bb4 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Fri, 15 Jul 2011 15:20:04 +0200 Subject: [PATCH 093/731] COMPOSER: Detect 'Liam Finds a Story' and the bundled demos. --- engines/composer/detection.cpp | 36 ++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/engines/composer/detection.cpp b/engines/composer/detection.cpp index c646a0e43e1..8d4cdc5aa4d 100644 --- a/engines/composer/detection.cpp +++ b/engines/composer/detection.cpp @@ -57,7 +57,9 @@ Common::Language ComposerEngine::getLanguage() const { static const PlainGameDescriptor composerGames[] = { {"darby", "Darby the Dragon"}, {"gregory", "Gregory and the Hot Air Balloon"}, - {"demo1", "Magic Tales Demo 1"}, + {"liam", "Liam Finds a Story"}, + {"magictalesdemo1", "Magic Tales Demo 1"}, + {"magictalesdemo2", "Magic Tales Demo 2"}, {0, 0} }; @@ -66,9 +68,10 @@ namespace Composer { using Common::GUIO_NONE; static const ComposerGameDescription gameDescriptions[] = { + // from Liam Finds a Story CD { { - "demo1", + "magictalesdemo1", 0, {{"book.ini", 0, "dbc98c566f4ac61b544443524585dccb", -1}, AD_LISTEND}, @@ -80,6 +83,35 @@ static const ComposerGameDescription gameDescriptions[] = { GType_ComposerV1 }, + { + { + "liam", + 0, + {{"install.inf", 0, "320d2f1d4f8dd96947676ae25d6688c6", -1}, + AD_LISTEND}, + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_NO_FLAGS, + Common::GUIO_NONE + }, + GType_ComposerV2 + }, + + // from Liam Finds a Story CD + { + { + "magictalesdemo2", + 0, + {{"book.ini", 0, "3dede2522bb0886c95667b082987a87f", -1}, + AD_LISTEND}, + Common::EN_ANY, + Common::kPlatformWindows, + ADGF_NO_FLAGS, + Common::GUIO_NONE + }, + GType_ComposerV2 + }, + { { "darby", From 3ae2b6f2b8045cf525462a2968d4ffc555f0817b Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 15 Jul 2011 19:26:03 +0100 Subject: [PATCH 094/731] DOCS: Remove obsolete HE-related file lists --- doc/he/bink-md5s.txt | 28 - doc/he/md5s.txt | 2861 --------------------------------------- doc/he/smacker-md5s.txt | 46 - doc/he/u32.txt | 39 - doc/he/versions.html | 754 ----------- 5 files changed, 3728 deletions(-) delete mode 100644 doc/he/bink-md5s.txt delete mode 100644 doc/he/md5s.txt delete mode 100644 doc/he/smacker-md5s.txt delete mode 100644 doc/he/u32.txt delete mode 100644 doc/he/versions.html diff --git a/doc/he/bink-md5s.txt b/doc/he/bink-md5s.txt deleted file mode 100644 index 5cfcc1c4afa..00000000000 --- a/doc/he/bink-md5s.txt +++ /dev/null @@ -1,28 +0,0 @@ -(soccer2004 russian cd) // uses bink but just for external three files -sev -F:\HEdev\scummsys\SPUTM\Src\SrcPWin\*.cpp -2808c81e388743998b3c7331501cc4dd Soccer2004.(a) -7e358891079c9f366184211d14707a70 Soccer2004.(b) -c4ffae9fac495475d6bc3343ccc8faf9 Soccer2004.HE0 -b6eae47432b9545d33d4d867cef0b4ae Soccer2004.he3 -c83971b2f2020bf68724df52c9ae70a8 soccer2004.he2 -212776c1a2dc3d44a393afc4611afbc3 soccer2004.he4 -8f70113f7c01f7bfe9f83f02749d449d soccer2004.he9 -5fba7c0899429399f944a0353307863c DATA/helogo.da2 -56ed9865373c4fe63e8986989ef75999 DATA/infogrames.da2 -678dc9831679dd3f09933d0e568f6d3c DATA/intro.da2 - -(soccer2004 cd) // uses bink but just for external three files -sev -F:\HEdev\scummsys\SPUTM\Src\SrcPWin\*.cpp -e10cb34c774852175134fe166a602012 Soccer2004.(a) -8acec50e5cd48830121a3b22a8bfaa46 Soccer2004.(b) -c4ffae9fac495475d6bc3343ccc8faf9 Soccer2004.HE0 -b6eae47432b9545d33d4d867cef0b4ae Soccer2004.he3 -c83971b2f2020bf68724df52c9ae70a8 soccer2004.he2 -212776c1a2dc3d44a393afc4611afbc3 soccer2004.he4 -8f70113f7c01f7bfe9f83f02749d449d soccer2004.he9 -5fba7c0899429399f944a0353307863c DATA/helogo.da2 -56ed9865373c4fe63e8986989ef75999 DATA/infogrames.da2 -678dc9831679dd3f09933d0e568f6d3c DATA/intro.da2 - diff --git a/doc/he/md5s.txt b/doc/he/md5s.txt deleted file mode 100644 index 5007298b268..00000000000 --- a/doc/he/md5s.txt +++ /dev/null @@ -1,2861 +0,0 @@ -$Id$ - -TODO khalek -* hfs data on puttputt -* hfs data on spyfox -* extract & md5sum from farm cd hfs - - Fatty Bear Demo.sea - - Putt-Putt Moon Demo.sea - - Putt-Putt's Demo.sea -* misc other bits - -TODO sev -* hfs data on all CDs - -(baseball cd hfs) -Joachim -5494820d943b126282b31a7d00645400 BaseBall -cf8d13446ec6cb6222287a925fd47c1d BaseBall (0) -a37e1eb72b969d1461075b7f3d9dd323 BaseBall (1) -c37abed5add924975fad0df9417a8885 BaseBall (2) -cb029eb006c1758aa992e28af7e036db BaseBall (4) -91b6158bc7ec68da700f90e0fabab4b8 BaseBall (9) -d41d8cd98f00b204e9800998ecf8427e BaseBall (r) - -(baseball cd) -sev, Joachim -D:\Scummsys.90\sputm.90\*.c - -c0c0934580cde95879bef0b6a5a49c29 BASEBALL.D32 -58843bf6425883bbe143b96d11d56582 BASEBALL.EXE -cf8d13446ec6cb6222287a925fd47c1d BASEBALL.HE0 -a37e1eb72b969d1461075b7f3d9dd323 BASEBALL.HE1 -c37abed5add924975fad0df9417a8885 BASEBALL.HE2 -cb029eb006c1758aa992e28af7e036db BASEBALL.HE4 -91b6158bc7ec68da700f90e0fabab4b8 BASEBALL.HE9 -7989c98adce2b84cd710818c950616ac BASEBALL.W32 -57a68828de21e1afa208d0a5ea2fdf92 BASEBALL.X32 - - -(baseball2001 cd hfs) -kirben -??? - -(baseball2001 cd) -kirben -??? - -(bb2demo cd hfs) -khalek, sev -??? - -(humongous ftp) -2000-05-01 16:09 bb2demo.W32 -khalek, sev -C:\Dev\Project\SPUTM\Src\*.cpp -0b38fda342fdaa5e206b2a82c8ab6b9b bb2demo.(a) -a194f15f51ee62badab74b9e7da97693 bb2demo.HE0 -04862d3b91c49585400f1021bdb9faa1 bb2demo.he2 -0b3a9ff634f2fabb695358aa591154b3 bb2demo.he4 -17255b19a57a1ba0c35802b1b01792f7 BB2demo.HE9 -04770d822d0e78cf13bbf1870de3528b bb2demo.W32 - -(baseball2003 cd hfs) -sev -??? - -(baseball2003 cd) -sev -c:\Build\SRC\SPUTM\Src\SrcPWin\*.cpp -e0ea75ae94e527652ebd56b26140998c baseball2003.(a) -324f57a63fd20746195810b61a82b711 baseball2003.(b) -ba5635a315af707462b7681189287832 Baseball2003.exe -efe0a04a703e765ebebe92b6c8aa6b86 baseball2003.HE0 -c47186351316e17552532e6c31bf951a baseball2003.he2 -63d581c9548045ee8bc90633f4d123da baseball2003.he3 -fe816c17a87ed5420f1440c85e34f72e baseball2003.he4 -7f06715731111bfe639cde435ec3b650 baseball2003.he9 -b2e1d0e25ed9dbe0ea47ef1a5204ac4a DATA/infogrames.da2 -755a5cf5515610e30370a0afb7d1bc7b DATA/intro.da2 - -(football cd hfs) -Joachim -b1376bcd9c9addb7ffec43455f41f9db Football -7fc6cdb46b4c9d384c52327f4bca6416 FootBall (0) -6c33bde70c28c2eac78de8b9f3add1b4 FootBall (2) -8d02e9002b8033c00bbaf3d71bb695cc FootBall (4) -435ae8ebf6998b1ea395a5989457985f FootBall (a) -7df3c5eb3575aef947729213d6c3a877 FootBall (b) -7c44b542163266658a6110fd03973e6c Football (i) -d41d8cd98f00b204e9800998ecf8427e FootBall (r) -c9ca805103de1888a331a98f98bab22a football (u) - -(football cd) -sev, Joachim -C:\Dev\Project\SPUTM\Src\*.cpp - -435ae8ebf6998b1ea395a5989457985f FOOTBALL.(A) -7df3c5eb3575aef947729213d6c3a877 FOOTBALL.(B) -ccca9a823d117afb1a882fd707586bf0 FOOTBALL.D32 -b9e149d859b6b4ab1906ea670c4c7449 football.esk -af00c36fe744362cb60349f61db78e16 Football.exe -7fc6cdb46b4c9d384c52327f4bca6416 FOOTBALL.HE0 -6c33bde70c28c2eac78de8b9f3add1b4 FOOTBALL.HE2 -8d02e9002b8033c00bbaf3d71bb695cc football.he4 -a7e708342776af913fb70c842310379f football.mmz -e03725ba7069e7a94c28168b70dc99c4 FOOTBALL.R32 -07656b959c7febb6359c8de5fd6b6f76 FOOTBALL.U32 -1671f9302d4eca3bfcccc7d68d75d42a FOOTBALL.W32 - - -(pajama3 hfs) -Joachim -51c909630d8ca434c6e1dfe070a15792 Football Demo -425205754fa749f4f0b0dd9d09fa45fd FootBall Demo (0) -bf65bf5fbfd26a63f7bd32437a960667 FootBall Demo (2) -9e53fbcf1061636d3d192c786c4e3b7b FootBall Demo (4) -b79809888128b1d31080664487c8fc5e FootBall Demo (a) -d41d8cd98f00b204e9800998ecf8427e Football Demo (i) -d41d8cd98f00b204e9800998ecf8427e FootBall Demo (r) -c9ca805103de1888a331a98f98bab22a Football Demo (u) - -(pajama3 cd) -Joachim -b79809888128b1d31080664487c8fc5e footdemo.(a) -ccca9a823d117afb1a882fd707586bf0 footdemo.d32 -afd8621bd60d686ebc97ef259a6f0fe0 footdemo.exe -425205754fa749f4f0b0dd9d09fa45fd footdemo.HE0 -bf65bf5fbfd26a63f7bd32437a960667 footdemo.he2 -9e53fbcf1061636d3d192c786c4e3b7b footdemo.he4 -07656b959c7febb6359c8de5fd6b6f76 FOOTDEMO.U32 - -(puttsfunshop hfs/samsfunshop hfs/freddisfunshop hfs/freddicove hfs) -Joachim -51c909630d8ca434c6e1dfe070a15792 Football Demo -5bd335265a61caa3d78956ad9f88ba23 FootBall Demo (0) -bf65bf5fbfd26a63f7bd32437a960667 FootBall Demo (2) -9e53fbcf1061636d3d192c786c4e3b7b FootBall Demo (4) -bb6ec9a3a2a016b239367c2b26d9ee3b FootBall Demo (a) -d41d8cd98f00b204e9800998ecf8427e Football Demo (i) -d41d8cd98f00b204e9800998ecf8427e FootBall Demo (r) -c9ca805103de1888a331a98f98bab22a Football Demo (u) - -(putsfunshop cd/pajama3 cd/spyozon cd/freddicove cd/freddisfunshop cd/samsfunshop cd/pajama win cd) -sev, Joachim (Comment by Joachim: this version is not on the pajama3 cd for me, see above) -C:\Dev\Project\SPUTM\Src\*.cpp -bb6ec9a3a2a016b239367c2b26d9ee3b FOOTDEMO.(A) -ccca9a823d117afb1a882fd707586bf0 footdemo.d32 -afd8621bd60d686ebc97ef259a6f0fe0 footdemo.exe -5bd335265a61caa3d78956ad9f88ba23 FOOTDEMO.HE0 -bf65bf5fbfd26a63f7bd32437a960667 footdemo.he2 -9e53fbcf1061636d3d192c786c4e3b7b footdemo.he4 -07656b959c7febb6359c8de5fd6b6f76 FOOTDEMO.U32 - -(football demo hfs) -khalek -??? - -(football demo) -khalek -??? - -(football2002 cd hfs) // uses Bink as external files. 137 files -Joachim -4bfe515242f8ee4cc01b9fc4cf52b29a Football 2002 -d0549508a06bbb9f99ed19c9e97891f3 Football 2002 (0) -7c6f5da8f9d223942ff387c3b3b1262a Football 2002 (2) -eded7062b612284a62df6be9e37e8d9e Football 2002 (3) -5f22d1edf87e08f151c93726684d47a5 Football 2002 (4) -b81d20adb6371ed620fedcc0156c6fb7 Football 2002 (a) -1e45c754359ca021d50cc6776f3240a6 Football 2002 (b) -4017d76fa35c60e64011d333443dfa9c Football 2002 (i) -932e34469fd78234fff755a22960114d football 2002 (u) - -(football2002 cd) // uses Bink as external files. 137 files -c:\SRC_RELEASE\SPUTM\Src\SrcPWin\*.cpp -Joachim -b81d20adb6371ed620fedcc0156c6fb7 Football2002.(a) -1e45c754359ca021d50cc6776f3240a6 Football2002.(b) -7894dd82c874b535dc8acadef0950be4 Football2002.exe -d0549508a06bbb9f99ed19c9e97891f3 Football2002.HE0 -7c6f5da8f9d223942ff387c3b3b1262a Football2002.HE2 -eded7062b612284a62df6be9e37e8d9e Football2002.HE3 -5f22d1edf87e08f151c93726684d47a5 Football2002.HE4 - -(football2002 cd hfs) -??? - -(football2002 cd) // uses Bink as external files. 137 files -2001-09-11 14:22 football2002.exe -khalek (Comment by Joachim: I completed the deatils with details from above, I hope this is right) -C:\SRC_RELEASE\SPUTM\Src\SrcPWin\*.cpp -b81d20adb6371ed620fedcc0156c6fb7 Football2002.(a) -20aca400df5f580e4d3c019c3386d361 Football2002.(b) -2234bbc4d12a09fadf8540343eb1c00e football2002.exe -2e85f7aa054930c692a5b1bed1dfc295 Football2002.HE0 -7c6f5da8f9d223942ff387c3b3b1262a Football2002.HE2 -eded7062b612284a62df6be9e37e8d9e Football2002.HE3 -5f22d1edf87e08f151c93726684d47a5 Football2002.HE4 - -(soccer cd hfs) -Joachim -462a01a55236b1dc5aa3ea543bbfc904 Soccer -701246819d1a70573f41bf33fc19214f Soccer (0) -6b8840d83784dbceb44f9d8694fce9d4 Soccer (2) -b50ac4df3a13b7ccc73e68dae5851d36 Soccer (4) -6a89ce2925a36a1d9e0d9e9f7060c533 Soccer (9) -a70431a271fd64eb958bab0a75b9db5b Soccer (A) -d41d8cd98f00b204e9800998ecf8427e Soccer (r) -8605a367b4d66e756ccc00c8b6a22e0b Soccer (u) - -(soccer cd) -sev, Joachim -D:\scummsys.98\sputm.98\*.c -a70431a271fd64eb958bab0a75b9db5b SOCCER.(A) -ccca9a823d117afb1a882fd707586bf0 soccer.d32 -431076c63ffa5b0caf66dbe03c1eef30 SOCCER.EXE -701246819d1a70573f41bf33fc19214f SOCCER.HE0 -6b8840d83784dbceb44f9d8694fce9d4 SOCCER.HE2 -b50ac4df3a13b7ccc73e68dae5851d36 SOCCER.HE4 -6a89ce2925a36a1d9e0d9e9f7060c533 SOCCER.HE9 -ed64133f8cdfca57fb3cd09057def978 SOCCER.U32 -db16386ae24902866ec908c31f58dd6c Soccer.w32 - - -(soccerMLS cd hfs) -??? - -(soccerMLS cd) -sev -C:\Dev\Project\SPUTM\Src\*.cpp -bda62f35e0ce1f910d63f0713b3426cb SoccerMLS.(a) -9705d481fd818835e68bb3ac3ddaf787 SoccerMLS.exe -bfdf584b01503f0762baded581f6a0a2 SoccerMLS.he0 -b44275bf54bfa7e01548eec5b7101ed9 SoccerMLS.he2 -a8fa25dc67dee77f009fe5fb59b1961a SoccerMLS.he4 -6a89ce2925a36a1d9e0d9e9f7060c533 SoccerMLS.he9 - -(soccer2004 cd) // uses bink but just for external three files -sev -F:\HEdev\scummsys\SPUTM\Src\SrcPWin\*.cpp -e10cb34c774852175134fe166a602012 Soccer2004.(a) -8acec50e5cd48830121a3b22a8bfaa46 Soccer2004.(b) -c4ffae9fac495475d6bc3343ccc8faf9 Soccer2004.HE0 -b6eae47432b9545d33d4d867cef0b4ae Soccer2004.he3 -c83971b2f2020bf68724df52c9ae70a8 soccer2004.he2 -212776c1a2dc3d44a393afc4611afbc3 soccer2004.he4 -8f70113f7c01f7bfe9f83f02749d449d soccer2004.he9 -5fba7c0899429399f944a0353307863c DATA/helogo.da2 -56ed9865373c4fe63e8986989ef75999 DATA/infogrames.da2 -678dc9831679dd3f09933d0e568f6d3c DATA/intro.da2 - -(soccer2004 cd russian) // uses bink but just for external three files -sev -F:\HEdev\scummsys\SPUTM\Src\SrcPWin\*.cpp -2808c81e388743998b3c7331501cc4dd Soccer2004.(a) -7e358891079c9f366184211d14707a70 Soccer2004.(b) -c4ffae9fac495475d6bc3343ccc8faf9 Soccer2004.HE0 -b6eae47432b9545d33d4d867cef0b4ae Soccer2004.he3 -c83971b2f2020bf68724df52c9ae70a8 soccer2004.he2 -212776c1a2dc3d44a393afc4611afbc3 soccer2004.he4 -8f70113f7c01f7bfe9f83f02749d449d soccer2004.he9 -5fba7c0899429399f944a0353307863c DATA/helogo.da2 -56ed9865373c4fe63e8986989ef75999 DATA/infogrames.da2 -678dc9831679dd3f09933d0e568f6d3c DATA/intro.da2 - -(thinkerk cd hfs) -Joachim -0c8f2ebce5116dc8a4fd7cd971cab19b ThinkerK -92fc0073a4cf259ff36070ecb8628ba8 ThinkerK (0) -2b06d67c5332c84d389fa681961920da ThinkerK (1) -61b858cb5e97fc2960e74b18297be540 ThinkerK (2) -06a5613cf59c7fdb5d5b888142d6d8b4 ThinkerK (4) -d41d8cd98f00b204e9800998ecf8427e ThinkerK (r) - -(thinkerk cd) -kirben, Joachim -c0c0934580cde95879bef0b6a5a49c29 THINKERK.D32 -37b4a8ce5bc28bc958c2c2548a453d31 THINKERK.EXE -92fc0073a4cf259ff36070ecb8628ba8 THINKERK.HE0 -2b06d67c5332c84d389fa681961920da THINKERK.HE1 -61b858cb5e97fc2960e74b18297be540 THINKERK.HE2 -06a5613cf59c7fdb5d5b888142d6d8b4 THINKERK.HE4 -b10981a0805c37cda1420f29745d6537 THINKERK.W32 - -(freddi cd hfs) -khalek -1997-12-09 19:59 Kinddemo -9c445edf28ee4a2a7b3ff36ea1f75c05 Kinddemo -695fe0b3963333b7e15b37514db3c745 Kinddemo (0) -d3af0fb2011b158a28c43480fb59c588 Kinddemo (1) -e5da782a19575d12ff98feb74f7602e3 Kinddemo (2) -ba7a9148040e2421c4129b1d32c40627 Kinddemo (4) -d41d8cd98f00b204e9800998ecf8427e Kinddemo (r) - -(ftp/pajama2 cd/puttrace cd/freddi3 cd/soccer cd) -1997-09-03 18:32 kinddemo.w32 -khalek, sev, Joachim -D:\Scummsys.90\sputm.90\*.c -c0c0934580cde95879bef0b6a5a49c29 KINDDEMO.D32 -37b4a8ce5bc28bc958c2c2548a453d31 KINDDEMO.EXE -695fe0b3963333b7e15b37514db3c745 KINDDEMO.HE0 -d3af0fb2011b158a28c43480fb59c588 KINDDEMO.HE1 -e5da782a19575d12ff98feb74f7602e3 KINDDEMO.HE2 -ba7a9148040e2421c4129b1d32c40627 KINDDEMO.HE4 -b10981a0805c37cda1420f29745d6537 KINDDEMO.W32 - -(thinker1 cd hfs) -Joachim -cd7d15788407e42cb2d25e91bcb5649f Thinker1 -5c21fc49aee8f46e58fef21579e614a1 Thinker1 (0) -d208e601cbeda1082aae9959bc80d736 Thinker1 (1) -2e3a3f3cf83a6125a9bc0637dcd3daec Thinker1 (2) -70d4c5fcba615fca984a3cb4bc42fb6a Thinker1 (4) -d41d8cd98f00b204e9800998ecf8427e Thinker1 (r) - -(thinker1 cd) -Joachim -c0c0934580cde95879bef0b6a5a49c29 THINKER1.D32 -ac403714308c2a6200bbffd4cd49c77c THINKER1.EXE -5c21fc49aee8f46e58fef21579e614a1 THINKER1.HE0 -d208e601cbeda1082aae9959bc80d736 THINKER1.HE1 -2e3a3f3cf83a6125a9bc0637dcd3daec THINKER1.HE2 -70d4c5fcba615fca984a3cb4bc42fb6a THINKER1.HE4 -dafbd5699d72d4b985f1f6c46ae9a556 THINKER1.W32 - -(1grademo hfs) -??? - -1997-09-03 14:21 1grademo.w32 -khalek -D:\Scummsys.90\sputm.90\*.c -0f5935bd5e88ba6f09e558d64459746d 1grademo.he0 -e41b3ba697f00251fdefd7d64a8cf125 1grademo.he1 -007961d43ada4cca6f15b2dcedcb695e 1grademo.he2 -ae77dc6ff68d6fdfb23e5f792f91ab2d 1grademo.he4 -5d4a7c36dee1a11ed50d260f8413c27a 1grademo.w32 - -(puttsfunshop cd hfs/puttcircus cd hfs/freddisfunshop cd hfs/samsfunshop cd hfs) -Joachim -fcd508025e1963a619b2aec191907f22 BluesABCTimeDemo -7ddeaf52c8b9a50551ce0aa2ac811d07 BluesABCTimeDemo (0) -e4a7e95b00feb1a3e13b542c164c7ff3 BluesABCTimeDemo (2) -de94e921f02e3b4c6e061aab0f4cc339 BluesABCTimeDemo (4) -06fee308ab288ece9b2ab18f9c7b9f41 BluesABCTimeDemo (a) -d41d8cd98f00b204e9800998ecf8427e BluesABCTimeDemo (r) - - -(puttsfunshop cd/pajama3 cd/puttcircus cd/freddisfunshop cd/samsfunshop cd) -1998-07-26 13:36 BLUESABCTIMEDEMO.W32 -khalek, sev, Joachim -D:\scummsys.98\sputm.98\*.c -06fee308ab288ece9b2ab18f9c7b9f41 BluesABCTimeDemo.(a) -ccca9a823d117afb1a882fd707586bf0 BluesABCTimeDemo.d32 -f67221ca7890906f29ab38aedafb0802 BluesABCTimeDemo.exe -7ddeaf52c8b9a50551ce0aa2ac811d07 BluesABCTimeDemo.HE0 -e4a7e95b00feb1a3e13b542c164c7ff3 BluesABCTimeDemo.he2 -de94e921f02e3b4c6e061aab0f4cc339 BluesABCTimeDemo.he4 - -(puttrace cd hfs/freddi4 cd hfs/puttzoo cd hfs/pajama3 cd hfs) -Joachim -fcd508025e1963a619b2aec191907f22 BluesABCTimeDemo -810a9da887aefa597b0cf3c77d262897 BluesABCTimeDemo (0) -5800ab15c53341fa4b4470cd20c2affa BluesABCTimeDemo (2) -de94e921f02e3b4c6e061aab0f4cc339 BluesABCTimeDemo (4) -860eb5a38ce8edef04f614bb50489aab BluesABCTimeDemo (a) -d41d8cd98f00b204e9800998ecf8427e BluesABCTimeDemo (r) - -(puttrace cd/freddi4 cd/puttzoo cd) -sev, Joachim -D:\scummsys.98\sputm.98\*.c -860eb5a38ce8edef04f614bb50489aab BluesABCTimeDemo.(a) -ccca9a823d117afb1a882fd707586bf0 BluesABCTimeDemo.d32 -f67221ca7890906f29ab38aedafb0802 BluesABCTimeDemo.exe -810a9da887aefa597b0cf3c77d262897 BluesABCTimeDemo.HE0 -5800ab15c53341fa4b4470cd20c2affa BluesABCTimeDemo.he2 -de94e921f02e3b4c6e061aab0f4cc339 BluesABCTimeDemo.he4 - -(freddi5 cd hfs) // uses smacker videos -Joachim -181b98beb756fe07650608b0357fa934 Blues-ArtTime Demo -d00ffc8c32d17e575fd985d435d2eb88 Blues-ArtTime Demo (0) -58c91c3f750b227b136e96b410b0e7cc Blues-ArtTime Demo (2) -47f0573a8a629c6e7f8b9236112fe10e Blues-ArtTime Demo (4) -548fcedaa9cee84443a5a9acfff4cb04 Blues-ArtTime Demo (a) -5272e8074130bdcc431d6ce325e3f0ab Blues-ArtTime Demo (i) -2f1a08df8aa13924959905fc5dc34a9b Data/intr_at_in_01.dat -f7841f8a37394805fc0699999898bcca Data/intr_at_in_02.dat -6a2f8c39d2ce07d422bae9f9bf416839 Data/intr_at_in_20_b.dat - -(freddi5 cd) // uses smacker videos -sev, Joachim -C:\Dev\Project\SPUTM\Src\SrcPWin\*.cpp -548fcedaa9cee84443a5a9acfff4cb04 artdemo.(a) -e856bf226130de0d84bcaaa7ecfb5a3a artdemo.D32 -840be04790ddb035725978e70f7c78f8 ARTDEMO.EXE -d00ffc8c32d17e575fd985d435d2eb88 artdemo.HE0 -58c91c3f750b227b136e96b410b0e7cc artdemo.he2 -47f0573a8a629c6e7f8b9236112fe10e artdemo.he4 -7e98a8e45cbac83e65d98f3c133ae34d artdemo.w32 -2f1a08df8aa13924959905fc5dc34a9b Data/intr_at_in_01.dat -f7841f8a37394805fc0699999898bcca Data/intr_at_in_02.dat -6a2f8c39d2ce07d422bae9f9bf416839 Data/intr_at_in_20_b.dat - -(puttsfunshop cd hfs/freddisfunshop cd hfs/samsfunshop cd hfs/pajama3 cd hfs/puttcircus cd hfs) // uses smacker videos -Joachim -30ea41602894a180aac747198388bc5e BluesBirthdayDemo -dbf4d59d70b826733f379f998354d350 BluesBirthdayDemo (0) -60cc055b47b53cb53eaa89e1f974c888 BluesBirthdayDemo (2) -0794110b085ee91c2aa4a5fc844ff2f4 BluesBirthdayDemo (4) -44e5c3d256fe45c334ac772fa2dd23e2 BluesBirthdayDemo (+) -6ddf8b026cfb9410b560f91f353dc0f4 BluesBirthdayDemo (a) -409a570e46466aef89c3cd3a30992543 BluesBirthdayDemo (b) -b46f3aa845f11020d8420d624c120120 BluesBirthdayDemo (i) -d41d8cd98f00b204e9800998ecf8427e BluesBirthdayDemo (r) - -(puttsfunshop cd/freddisfunshop cd/samsfunshop cd/pajama3 cd/puttcircus cd) // uses smacker videos -sev, Joachim -D:\scummsys.98\sputm.98\*.c -6ddf8b026cfb9410b560f91f353dc0f4 BluesBirthdayDemo.(a) -409a570e46466aef89c3cd3a30992543 BluesBirthdayDemo.(b) -e07a222d121f7e8b04266bf4d7809cb4 BluesBirthdayDemo.a32 -ccca9a823d117afb1a882fd707586bf0 BluesBirthdayDemo.d32 -6d283612076435baad21d5cc5f40fba3 BluesBirthdayDemo.exe -dbf4d59d70b826733f379f998354d350 BluesBirthdayDemo.HE0 -60cc055b47b53cb53eaa89e1f974c888 BluesBirthdayDemo.he2 -0794110b085ee91c2aa4a5fc844ff2f4 BluesBirthdayDemo.he4 - -(puttrace cd hfs) // uses smacker videos -Joachim -30ea41602894a180aac747198388bc5e BluesBirthdayDemo -2d4acbdcfd8e374c9da8c2e7303a5cd0 BluesBirthdayDemo (0) -dc5e63ecf2672d4a3a0458fe32902a4e BluesBirthdayDemo (2) -0794110b085ee91c2aa4a5fc844ff2f4 BluesBirthdayDemo (4) -44e5c3d256fe45c334ac772fa2dd23e2 BluesBirthdayDemo (+) -18ee74255c93da057c92effbd39ebd9a BluesBirthdayDemo (a) -409a570e46466aef89c3cd3a30992543 BluesBirthdayDemo (b) -b46f3aa845f11020d8420d624c120120 BluesBirthdayDemo (i) -d41d8cd98f00b204e9800998ecf8427e BluesBirthdayDemo (r) - -(puttrace cd) // uses smacker videos -sev, Joachim -D:\scummsys.98\sputm.98\*.c -18ee74255c93da057c92effbd39ebd9a BluesBirthdayDemo.(a) -409a570e46466aef89c3cd3a30992543 BluesBirthdayDemo.(b) -e07a222d121f7e8b04266bf4d7809cb4 BluesBirthdayDemo.a32 -ccca9a823d117afb1a882fd707586bf0 BluesBirthdayDemo.d32 -e478bdc989beeeaec7e2528a11c88729 BluesBirthdayDemo.exe -2d4acbdcfd8e374c9da8c2e7303a5cd0 BluesBirthdayDemo.HE0 -dc5e63ecf2672d4a3a0458fe32902a4e BluesBirthdayDemo.he2 -0794110b085ee91c2aa4a5fc844ff2f4 BluesBirthdayDemo.he4 - - -(freddi5 cd hfs) // uses smacker videos -Joachim -853c41736ce7e4c5d6b3431dd550ea3f Blues-ReadingTime Demo -95818b178d473c989ac753574e8892aa Blues-ReadingTime Demo (0) -7c64b87e454e642e36a83c79341007b0 Blues-ReadingTime Demo (2) -4f307cf26e46f765298cc8f92f02db49 Blues-ReadingTime Demo (4) -f536221cc5d8da02009278523eda6bd5 Blues-ReadingTime Demo (a) -5272e8074130bdcc431d6ce325e3f0ab Blues-ReadingTime Demo (i) -45a973a322b177ee4b36bea81981462d Data/INT_RT_IN_01.DAT -9e0c144bf1b7f0cc8ba3edae6135e313 Data/INT_RT_IN_03.DAT -8d150f9d9e12e485da50c4560135b4ef Data/INT_RT_IN_04.DAT -8cde496829546daaaa28084c49f3f4f7 Data/INT_RT_IN_05.DAT -c784fa970208b5bd49fff568ca0036ec Data/INT_RT_IN_06.DAT - -(freddi5 cd) // uses smacker videos -sev, Joachim -C:\Dev\Project\SPUTM\Src\SrcPWin\*.cpp -f536221cc5d8da02009278523eda6bd5 readdemo.(a) -e856bf226130de0d84bcaaa7ecfb5a3a readDemo.D32 -2be2b18bf04dcd9d9dc6b16e88b8f811 READDEMO.EXE -95818b178d473c989ac753574e8892aa readdemo.HE0 -7c64b87e454e642e36a83c79341007b0 readDemo.he2 -4f307cf26e46f765298cc8f92f02db49 readdemo.he4 -eac7453b1dca87447974ef54137470f9 readDemo.w32 -45a973a322b177ee4b36bea81981462d Data/INT_RT_IN_01.DAT -9e0c144bf1b7f0cc8ba3edae6135e313 Data/INT_RT_IN_03.DAT -8d150f9d9e12e485da50c4560135b4ef Data/INT_RT_IN_04.DAT -8cde496829546daaaa28084c49f3f4f7 Data/INT_RT_IN_05.DAT -c784fa970208b5bd49fff568ca0036ec Data/INT_RT_IN_06.DAT - -(fbear cd 3do) -??? - -(he classics cd) -khalek, sev -6.1.1 (Jun 23 1993 15:31:14) -9f5ada54fef54f1602bb1b642d0fe412 FBEAR.EXE -3824e60cdf639d22f6df92a03dc4b131 FBEAR.HE0 -c75f511786a4e0c474660d074c9a421a FBEAR.HE1 -d05d89374e5e459067603cd075dd3134 FBEAR.SNG -c542564fc561aca36626259455738126 FBEAR.TLK - -(fbear cd) -Joachim -9f5ada54fef54f1602bb1b642d0fe412 FBEAR.EXE -3824e60cdf639d22f6df92a03dc4b131 FBEAR.HE0 -c75f511786a4e0c474660d074c9a421a FBEAR.HE1 -d05d89374e5e459067603cd075dd3134 FBEAR.SNG -0f19cfc74cbeb0a255b289772acad687 FBEAR.TLK - -(fbear cd hebrew) -??? - -(he classics cd hfs) -khalek -3df6ead57930488bc61e6e41901d0e97 Fatty Bear 0 -93cdebdbf8f1ec8c3f05dff0c8fedc82 Fatty Bear 1 -fc3885128832fcb876ccd79124ba36fe Fatty Bear 2 -d05d89374e5e459067603cd075dd3134 Fatty Bear Songs - -(fbear cd hfs) -Joachim -d41d8cd98f00b204e9800998ecf8427e Fatty Bear -3df6ead57930488bc61e6e41901d0e97 Fatty Bear 0 -93cdebdbf8f1ec8c3f05dff0c8fedc82 Fatty Bear 1 -110890cbcbbdacdd3a02159cbde20889 Fatty Bear 2 -d05d89374e5e459067603cd075dd3134 Fatty Bear Songs - -(he classics cd) -khalek, sev -7.0.0 (Feb 7 1995 13:27:40) -179879b6e35c1ead0d93aab26db0951b FBEAR.HE0 -7f733155adcb049e887fef942e81602a FBEAR.HE1 -fc3885128832fcb876ccd79124ba36fe FBEAR.HE2 -58dfc09f344a9dec565bb914920800d3 FBEAR.HE3 -a6b0d9c55f747f906142ed60c7d780e8 FBEAR.HE4 -d05d89374e5e459067603cd075dd3134 FBEAR.SNG -564d213162f0375b62a8fc5a3a9ef94d FBEAR.W32 - -(fbear cd) -Joachim -333714828ec2e0bd97a189882bf4e49e FBEAR.EXE -179879b6e35c1ead0d93aab26db0951b FBEAR.HE0 -7f733155adcb049e887fef942e81602a FBEAR.HE1 -110890cbcbbdacdd3a02159cbde20889 FBEAR.HE2 -58dfc09f344a9dec565bb914920800d3 FBEAR.HE3 -a6b0d9c55f747f906142ed60c7d780e8 FBEAR.HE4 -d05d89374e5e459067603cd075dd3134 FBEAR.SNG -564d213162f0375b62a8fc5a3a9ef94d FBEAR.W32 - -6.1.1 (Apr 6 1993 20:48:56) -khalek -59c820951585b7dfb0307992bbb275c7 fbdemo.exe -47e75b1bdcb44c78cb94883d1731ccf8 fbdemo.he0 -7c61c90ec5ceb812698d40b29f356559 fbdemo.he1 -f054dd0158bafd59570794397727c882 fbdemo.tlk - -(puttmoon cd hfs/airport cd hfs/jungle cd hfs) -Joachim -d41d8cd98f00b204e9800998ecf8427e Fatty Bear Demo -6df20c50c1ab19799de9be7ae7716881 Fatty Bear Demo 0 -d9e4a20226b6120d2a3d8d3a9a643a86 Fatty Bear Demo 1 -0d95ea172d9c94f4c90b9f542a824ced Fatty Bear Demo 2 - -(puttputt cd/he classics cd/fbear cd/puttmoon cd) -khalek, sev, Joachim -7.0.0 (Feb 7 1995 13:27:40) -9b44bf1f45abc809cf81fde9ff80e5a7 FBDEMO.EXE -22c9eb04455440131ffc157aeb8d40a8 FBDEMO.HE0 -5293d81516126086766540ab12a9c499 FBDEMO.HE1 -f054dd0158bafd59570794397727c882 FBDEMO.HE2 -58dfc09f344a9dec565bb914920800d3 FBDEMO.HE3 -76954add1f2c5bd9d967746ab4137d3a FBDEMO.HE4 -564d213162f0375b62a8fc5a3a9ef94d FBDEMO.W32 - -(freddi cd hfs) -khalek -1998-02-18 16:06 Freddi Fish -560da18bc11f6cf7b068a96dd928ae7e Freddi Fish -df047cc4792150f601290357566d36a6 Freddi Fish (0) -d30fb13dd3baa94a4cabe4cc1a6228d1 Freddi Fish (1) -f2f1e70bd9388c98c0ef38b1ef286ae2 Freddi Fish (2) -cb0fb189e08144bbc713b8df739ba9fc Freddi Fish (4) -d41d8cd98f00b204e9800998ecf8427e Freddi Fish (r) - -(freddi cd) -khalek, Joachim -1998-01-21 02:13 freddi.w32 -D:\Scummsys.90\sputm.90\*.c -c0c0934580cde95879bef0b6a5a49c29 FREDDI.D32 -2e0253f624f34b56cf888e557d931a3b FREDDI.EXE -df047cc4792150f601290357566d36a6 FREDDI.HE0 -d30fb13dd3baa94a4cabe4cc1a6228d1 FREDDI.HE1 -f2f1e70bd9388c98c0ef38b1ef286ae2 FREDDI.HE2 -cb0fb189e08144bbc713b8df739ba9fc FREDDI.HE4 -0d6f0f65403bd23afb78c143587d11a8 FREDDI.W32 - -(freddi cd russian) -sev -7.0.0 (Jun 23 1995 09:58:48) -d4cccb5af88f3e77f370896e9ba8c5f9 FREDDI.HE0 -1705aa5c12a2959f1b69abc1fd145f01 FREDDI.HE1 -199c5c38798ddacce5cfbfe7b31267cf FREDDI.HE2 -6daf76c1fe724ce6bf2e4c5175f39352 FREDDI.HE3 -a176fababbf7944a1d4b5d6521b20f4d FREDDI.HE4 -2085ef0c1d1cc64db1ec52901b4856b9 FREDDI.HE5 -8be6d657bcbda8b4926448e530528d6a FREDDI.W32 - -(freddi cd dutch) -adutchguy -??? - -(freddi cd german) -oncer, Joachim -fc00ad009697e2c9a50dd222f8f40c73 FREDDI.EXE -cf8ef3a1fb483c5c4b1c584d1167b2c4 FREDDI.HE0 -e3b21adcc7ad12e0b8a0a8fa9bdd30a9 FREDDI.HE1 -1d10f0e80dc84a3dd8331c55f4146ed5 FREDDI.HE2 -6daf76c1fe724ce6bf2e4c5175f39352 FREDDI.HE3 -8e27aebf6d89f8576a08b58e216a6a90 FREDDI.HE4 -842badd1332ab8d6c8fd4e8277e0471c FREDDI.W32 - -(freddi cd nb) -Karl Ove Hufthammer -??? - -(freddi cd russian updated) -sev -D:\Scummsys.90\sputm.90\*.c -746e88c172a5b7a1ae89ac0ee3ee681a Freddi.HE0 -02b964d6d7a3fcace1bc89ae2a2c9db7 FREDDI.HE1 -14a1058745c609eefa08f1591cc5d4df FREDDI.HE2 -2b219196f0cc74d626a3216932d3ea54 Freddi.he4 -58d117ae89707c7360f403186641e87f FREDDI.W32 - -(freddi cd swedish) -Sven Arvidsson -??? - -(farm cd hfs/airportcd hfs/jungle cd hfs/thinker1 cd hfs/thinkerk cd hfs/socks cd hfs/baseball cd hfs) -khalek, Joachim -1995-09-14 17:35 Freddi Demo -42f4a55732734e3c54c0b198f2615970 Freddi Demo -c8aac5e3e701874e2fa4117896f9e1b1 Freddi Demo (0) -b4805ccd0841854d6b2f596f0efb5551 Freddi Demo (1) -faca7509c38beabb37b2347b8b6bb1ea Freddi Demo (2) -a8c3ced34ecb16ad1b0eed5b464ad61e Freddi Demo (4) - -(he classics cd hfs/pajama cd hfs/puttzoo cd hfs) -khalek (comment: is this double entry really necessary?) -1996-11-17 13:28 Freddi Demo -42f4a55732734e3c54c0b198f2615970 Freddi Demo -c8aac5e3e701874e2fa4117896f9e1b1 Freddi Demo (0) -b4805ccd0841854d6b2f596f0efb5551 Freddi Demo (1) -faca7509c38beabb37b2347b8b6bb1ea Freddi Demo (2) -a8c3ced34ecb16ad1b0eed5b464ad61e Freddi Demo (4) - -(puttputt cd/puttmoon cd/fbear cd) -khalek, sev, Joachim -7.0.0 (Oct 20 1994 10:00:19) -10f764e586228d090d66bdf43cc5a1ef FREDDEMO.EXE -084ed0fa98a6d1e9368d67fe9cfbd417 FREDDEMO.HE0 -273e622b5fdf60859b549fee08384a33 FREDDEMO.HE1 -faca7509c38beabb37b2347b8b6bb1ea FREDDEMO.HE2 -6daf76c1fe724ce6bf2e4c5175f39352 FREDDEMO.HE3 -a8c3ced34ecb16ad1b0eed5b464ad61e FREDDEMO.HE4 -0ebc6a8cc24babc41dbfbfb07ee6456f FREDDEMO.W32 - -(farm cd/airport cd/jungle cd/airport hfs/jungle hfs) -khalek, Joachim -7.0.0 (Jun 22 1995 14:06:25) -e269b675a252296640430feab730e8b7 FREDDEMO.EXE -0855496dde35356b1a9691e22ba84cdc FREDDEMO.HE0 -5374aef0d7c547a95dc779f4ea51e20f FREDDEMO.HE1 -faca7509c38beabb37b2347b8b6bb1ea FREDDEMO.HE2 -6daf76c1fe724ce6bf2e4c5175f39352 FREDDEMO.HE3 -a8c3ced34ecb16ad1b0eed5b464ad61e FREDDEMO.HE4 -3d43af3f3ecc18744dda721d951e2a2f FREDDEMO.W32 - -(spyfox cd/pajama cd/puttzoo cd/he classics cd/freddi2 cd/baseball cd/socks cd/thinker1 cd/thinkerk cd) -khalek, sev, Joachim (comment: all files uppercase on CD) -7.0.0 (Jul 5 1995 14:46:05) -e269b675a252296640430feab730e8b7 FREDDEMO.EXE -566165a7338fa11029e7c14d94fa70d0 FREDDEMO.HE0 -649724a605cb66fef3fac73297ef4259 FREDDEMO.HE1 -faca7509c38beabb37b2347b8b6bb1ea FREDDEMO.HE2 -6daf76c1fe724ce6bf2e4c5175f39352 FREDDEMO.HE3 -a8c3ced34ecb16ad1b0eed5b464ad61e FREDDEMO.HE4 -25003798cd5f4b51bc1f4d02c6a2e218 FREDDEMO.W32 - -(humongous ftp) -7.0.0 (Jul 5 1995 14:46:05) -khalek, sev -566165a7338fa11029e7c14d94fa70d0 freddemo.he0 -649724a605cb66fef3fac73297ef4259 freddemo.he1 -faca7509c38beabb37b2347b8b6bb1ea freddemo.he2 -6daf76c1fe724ce6bf2e4c5175f39352 freddemo.he3 -a8c3ced34ecb16ad1b0eed5b464ad61e freddemo.he4 -a5459bfe36183cf1f4ced00fe325aa90 freddemo.w32 - -(freddi2 cd german/freddi2 cd hfs german) -Joachim -fc00ad009697e2c9a50dd222f8f40c73 FREDDEMO.EXE -cf4ef315214c7d8cdab6302cdb7e50db FREDDEMO.HE0 -c4671ee12bcb89be376a8432ac23ce77 FREDDEMO.HE1 -468e8c93b4831ff6e84ac69140f8b603 FREDDEMO.HE2 -6daf76c1fe724ce6bf2e4c5175f39352 FREDDEMO.HE3 -a8c3ced34ecb16ad1b0eed5b464ad61e FREDDEMO.HE4 -842badd1332ab8d6c8fd4e8277e0471c FREDDEMO.W32 - -(freddi2 cd hfs) -Kirben -??? - -(freddi2 hfs) -Kirben -??? - -(freddi2 cd hfs) -kirben, Joachim -91a8077251d21b9a060792f50df91cbc Freddi Fish 2 -51305e929e330e24a75a0351c8f9975e Freddi Fish 2 (0) -2f0f418ca29e298343a76e4a76ce5d96 Freddi Fish 2 (2) -c87140d52e550ee923f18789517e61ab Freddi Fish 2 (4) -722286b727e75a3e44f9333d6b604427 Freddi Fish 2 (a) -d5920b5082d570d03500fe165bb75c0a Freddi Fish 2 (i) -d41d8cd98f00b204e9800998ecf8427e Freddi Fish 2 (r) - -(freddi2 cd) -kirben, Joachim -722286b727e75a3e44f9333d6b604427 Freddi2.(a) -ccca9a823d117afb1a882fd707586bf0 Freddi2.d32 -c45467455384a11c608530d371d6669e FREDDI2.EXE -51305e929e330e24a75a0351c8f9975e Freddi2.HE0 -2f0f418ca29e298343a76e4a76ce5d96 Freddi2.he2 -c87140d52e550ee923f18789517e61ab Freddi2.he4 -15e826c4702e0c44018a6b6a31de76ef FREDDI2.w32 - -(freddi2 cd hfs german) -Joachim -5d6f8f48c758f7ce07ace9141bd177d4 Fritzi Fisch 2 -fce4b8010704b103acfeea9413788f32 Fritzi Fisch 2 (0) -d857b6f3ee3a2347faf589a823be6d6c Fritzi Fisch 2 (1) -3e25355859e2fc97c88ebebfd63c5c14 Fritzi Fisch 2 (2) -2b7114ad0e35ca65ec8de54b7acd352d Fritzi Fisch 2 (4) - -(freddi2 cd german) -Joachim -4c695f3d8015af4277fd284981e0d2c4 FREDDI2.D32 -9d4373de9fd1c25671de1500dbe358a2 FREDDI2.EXE -fce4b8010704b103acfeea9413788f32 FREDDI2.HE0 -d857b6f3ee3a2347faf589a823be6d6c FREDDI2.HE1 -3e25355859e2fc97c88ebebfd63c5c14 FREDDI2.HE2 -2b7114ad0e35ca65ec8de54b7acd352d FREDDI2.HE4 -e24b9e887a04f66db3edcd5fc81767fd FREDDI2.W32 - -(freddi2 cd) -sev -D:\Scummsrc.80\Sputm\*.c -5057fb0e99e5aa29df1836329232f101 FREDDI2.HE0 -a586db95af3146aa7793c5e2d0ed9e83 FREDDI2.HE1 -9ff9a777a343e605278127c0bbdde58f FREDDI2.HE2 -d22f1b3bd41cb4901f89164043953bc8 FREDDI2.HE4 -d06066ae0ba8ffb338d6a00f556ae3ac FREDDI2.W32 - -(freddi2 cd russian) -sev -D:\Scummsrc.80\Sputm\*.c -5057fb0e99e5aa29df1836329232f101 FREDDI2.HE0 -1b6d479d15a7eb4a55c5e90711511b00 FREDDI2.HE1 -53f72ce417e28af51e3b8a60cd6ca5ef FREDDI2.HE2 -52494431dd3f658a8dc1d4348e677e48 FREDDI2.HE4 -a1a7f76f9de6b74031f4d6c9b8cbb130 FREDDI2.W32 - -(freddi2 cd dutch) -joostp -??? - -(freddi2 cd) -vampir_raziel -??? - -(freddi2 cd russian updated) -sev -c:\Build\SRC\SPUTM\Src\SrcPWin\*.cpp -c40f2b3cf5b82d34afc222779b3f0a7c FreddiCHSH.(a) -b92b53d360319b1e0fa93d353503fbfd FreddiCHSH.exe -e41de1c2a15abbcdbf9977e2d7e8a340 FreddiCHSH.he0 -83619bbe6b084ebf1ae53b5a56442719 FreddiCHSH.he2 -c366efa1e6b3d4406b5f3123c2247d8f FreddiCHSH.he4 - -(freddi cd hfs/he classics hfs/pajama cd hfs/puttzoo cd hfs) -khalek -1997-10-28 17:16 Freddi Fish 2 Demo -d7e1af5d819c98b2f0ec8150f54ad51f Freddi Fish 2 Demo -fc8d197a22146e74766e9cb0cfcaf1da Freddi Fish 2 Demo (0) -203cf83989f6410ec19edb9bd1455512 Freddi Fish 2 Demo (1) -f96261232a8a7ae6bc7478d8c1c5a49c Freddi Fish 2 Demo (2) -a97bf54bcae67fabb8d6e4a1e506efef Freddi Fish 2 Demo (4) - -(spyfox cd/pajama cd/puttzoo cd/he classics cd/pajama2 cd/freddi3 cd/baseball cd) -khalek, sev, Joachim -1996-10-17 03:54 ff2-demo.w32 -D:\Scummsrc.80\Sputm\*.c -9d4373de9fd1c25671de1500dbe358a2 FF2-DEMO.EXE -fc8d197a22146e74766e9cb0cfcaf1da FF2-DEMO.HE0 -203cf83989f6410ec19edb9bd1455512 FF2-DEMO.HE1 -f96261232a8a7ae6bc7478d8c1c5a49c FF2-DEMO.HE2 -a97bf54bcae67fabb8d6e4a1e506efef FF2-DEMO.HE4 -21935da87e116e29f558145b0c491770 FF2-DEMO.W32 - -(freddi2 demo hfs) -??? - -(ftp) -2002-06-05 15:23 ffhsdemo.exe -khalek -c:\Build\SRC\SPUTM\Src\*.cpp -874613bc4b14dba444b43e31d843e622 ffhsdemo.exe -d0a925e6d57938021ce5b1260731ec7d FFHSDemo.(a) -d37c55388294b66e53e7ced3af88fa68 ffhsdemo.he0 -d0a925e6d57938021ce5b1260731ec7d ffhsdemo.he1 -7480dfa29b4df0002d23c72bb4932dde ffhsdemo.he2 -a97bf54bcae67fabb8d6e4a1e506efef ffhsdemo.he4 - -(freddi3 cd hfs) -Joachim -560da18bc11f6cf7b068a96dd928ae7e Freddi Fish 3 -8368f552b1e3eba559f8d559bcc4cadb Freddi Fish 3 (0) -89bba1d711672a8b52ac4a47ffcf442c Freddi Fish 3 (1) -6e95640d43a66bdec5a9b9cd42921881 Freddi Fish 3 (2) -47fed8094093a2d4d9f8d4f61d51e088 Freddi Fish 3 (4) -d41d8cd98f00b204e9800998ecf8427e Freddi Fish 3 (r) - -(freddi3 cd) -sev, Joachim -D:\Scummsys.90\sputm.90\*.c -c0c0934580cde95879bef0b6a5a49c29 FREDDI3.D32 -56e44f51bd02de77cb75737e45396987 FREDDI3.EXE -8368f552b1e3eba559f8d559bcc4cadb FREDDI3.HE0 -89bba1d711672a8b52ac4a47ffcf442c FREDDI3.HE1 -6e95640d43a66bdec5a9b9cd42921881 FREDDI3.HE2 -47fed8094093a2d4d9f8d4f61d51e088 FREDDI3.HE4 -88d57485970d3e801364812c82dec001 FREDDI3.W32 - -(freddi3 cd russian) -sev -D:\Scummsys.90\sputm.90\*.c -8368f552b1e3eba559f8d559bcc4cadb FREDDI3.HE0 -28afc2494f8f5d45726409743c2763cc FREDDI3.HE1 -2be336eb6b1853c3493da984340dc80a FREDDI3.HE2 -211d598c446697f8203857d012d83d67 FREDDI3.HE4 -1f33f143fd76de496215eaa654a60f04 FREDDI3.W32 - -(freddi3 cd hfs german) -Joachim -e228f3d94242920355d8ffc1f478ddb9 FreddiFGT -83cedbe26aa8b58988e984e3d34cac8e FreddiFGT (0) -a850841f6486fd5c8f1731f3092abfd0 FreddiFGT (2) -3aab38ffaee61ada59211fa417231292 FreddiFGT (4) -1c17cedc8593e0caebbae3ca61a8a78d FreddiFGT (a) -01368f1a5c87746b09f50363696f5883 FreddiFGT (i) - -(freddi3 cd german) -Joachim -1c17cedc8593e0caebbae3ca61a8a78d FreddiFGT.(a) -0fb226dcdd09aaa48dd77925c467d1cd FreddiFGT.D32 -045e9fab1078af432741aff53e6e438b FreddiFGT.exe -83cedbe26aa8b58988e984e3d34cac8e FreddiFGT.HE0 -a850841f6486fd5c8f1731f3092abfd0 FreddiFGT.HE2 -3aab38ffaee61ada59211fa417231292 FreddiFGT.HE4 -d8fcf115eb08f1fbed13a61a23e37851 FreddiFGT.w32 - -(freddi3 cd dutch) -adutchguy -??? - -(freddi3 cd russian alt) -sev -D:\Scummsys.90\sputm.90\*.c -898ce8eb1234a955ef75e87141902bb3 FREDDI3.HE0 -78f35e7aab370a3b4e828d317ecd7f27 FREDDI3.HE1 -ba7fe7de583c9b7a1e9173afc5d75b42 FREDDI3.HE2 -ef0df7bdc61977f783dbe1e37f6a15fe FREDDI3.HE4 -88d57485970d3e801364812c82dec001 FREDDI3.W32 - -(freddi3 cd russian updated) -sev -d:\dev\SPUTM\Src\*.cpp -b2b8622d2a1d954fedf526043fc185eb FreddiSCS.(a) -75bff95816b84672b877d22a911ab811 FreddiSCS.he0 -39b5ea82513c799a6dba899b950c2977 FreddiSCS.he2 -fff20670a77450240918f8315fcfb33d FreddiSCS.HE4 -199a34d9dd51e79e2a5022c778321af8 freddiSCS.w32 - -(freddi cd hfs/freddi3 cd hfs/pajama2 cd hfs) -khalek, Joachim -1997-12-04 18:25 F3-Mdemo -e711a6fb0b7330782c6b5ae0e1283084 F3-Mdemo -cb1559e8405d17a5a278a6b5ad9338d1 F3-Mdemo (0) -a2fde75fcbd2376f057f4a40f9893cbe F3-Mdemo (1) -30e3f97a2290f0683ccedf8b08a6ba55 F3-Mdemo (2) -b90004518ba5bb4dc473170f5c975568 F3-Mdemo (4) -d41d8cd98f00b204e9800998ecf8427e F3-Mdemo (r) - -(pajama2 cd/freddi3 cd/freddi cd) -sev, Joachim -D:\Scummsys.90\sputm.90\*.c -c0c0934580cde95879bef0b6a5a49c29 F3-MDEMO.D32 -56e44f51bd02de77cb75737e45396987 F3-MDEMO.EXE -cb1559e8405d17a5a278a6b5ad9338d1 F3-MDEMO.HE0 -a2fde75fcbd2376f057f4a40f9893cbe F3-MDEMO.HE1 -30e3f97a2290f0683ccedf8b08a6ba55 F3-MDEMO.HE2 -b90004518ba5bb4dc473170f5c975568 F3-MDEMO.HE4 -66ed086cf061ca023e5924147fc585be F3-MDEMO.W32 - -(humongous ftp) -1997-10-28 12:42 f3-mdemo.w32 -khalek, sev, Joachim -D:\Scummsys.90\sputm.90\*.c -c0c0934580cde95879bef0b6a5a49c29 F3-MDEMO.D32 -56e44f51bd02de77cb75737e45396987 F3-MDEMO.EXE -cb1559e8405d17a5a278a6b5ad9338d1 F3-MDEMO.HE0 -a2fde75fcbd2376f057f4a40f9893cbe F3-MDEMO.HE1 -30e3f97a2290f0683ccedf8b08a6ba55 F3-MDEMO.HE2 -b90004518ba5bb4dc473170f5c975568 F3-MDEMO.HE4 -3ff95314abdeebe0b2d11f4417efa449 f3-mdemo.w32 - -(puttrace cd/soccer cd) -Joachim -c0c0934580cde95879bef0b6a5a49c29 F3-MDEMO.D32 -3ff95314abdeebe0b2d11f4417efa449 F3-MDEMO.EXE -cb1559e8405d17a5a278a6b5ad9338d1 F3-MDEMO.HE0 -a2fde75fcbd2376f057f4a40f9893cbe F3-MDEMO.HE1 -30e3f97a2290f0683ccedf8b08a6ba55 F3-MDEMO.HE2 -b90004518ba5bb4dc473170f5c975568 F3-MDEMO.HE4 - -(freddi3 demo hfs french) -kirben -??? - -(freddi3 demo french) -kirben -??? - -(freddi3 demo dutch) -adutchguy -??? - -(freddi4 cd hfs) -Joachim -382e75cc3252683c18ccb4b8a964b8bf Freddi 4 -4f580a021eee026f3b4589e17d130d78 Freddi 4 (0) -944d9c81ce26f8820bbd2a6d2c2d987c Freddi 4 (2) -d1c47dfa05160c783da89e6dc9894d3e Freddi 4 (4) -d3cb0cbdd52b7684d321a3630bdf8abc Freddi 4 (a) -d41d8cd98f00b204e9800998ecf8427e Freddi 4 (r) - -(freddi4 cd) -Joachim -d3cb0cbdd52b7684d321a3630bdf8abc FREDDI4.(A) -ccca9a823d117afb1a882fd707586bf0 FREDDI4.D32 -dbde280a3b554db62f8f7920775cbed5 FREDDI4.EXE -4f580a021eee026f3b4589e17d130d78 FREDDI4.HE0 -944d9c81ce26f8820bbd2a6d2c2d987c FREDDI4.HE2 -d1c47dfa05160c783da89e6dc9894d3e FREDDI4.HE4 -24b409ff575c52d385cdc6b7e91b5b79 FREDDI4.W32 - -(freddi4 cd russian) -sev -D:\scummsys.98\sputm.98\*.c -0fb24aa2d37a8a6cbf90066c2f792596 freddi4.(a) -4f580a021eee026f3b4589e17d130d78 freddi4.he0 -02d4dba3fedc64e24c1baa9523035701 freddi4.he2 -a2e2010e75a1fd164ef6fc58eae7238d freddi4.he4 -24b409ff575c52d385cdc6b7e91b5b79 freddi4.w32 - -(freddi4 cd dutch) -adutchguy -??? - -(freddi4 cd german) -Joachim -25da2483b1d36a35c371393e907f57bf FreddiGS.(a) -0fb226dcdd09aaa48dd77925c467d1cd FreddiGS.D32 -e9e4997d16bc12ec0d7048571c84023b FREDDIGS.EXE -b5298a5c15ffbe8b381d51ea4e26d35c FreddiGS.HE0 -ee9720cc979cbad31193895c91e530f6 FreddiGS.HE2 -766c4f81601fe5fd69f6975c1dc51b98 FreddiGS.HE4 -25cb2425ded9b2e7557e8eb4dd7bb8d6 FreddiGS.w32 - - -(freddi4 cd russian updated} -sev -C:\HESystems\SPUTM\Src\*.cpp -658d27fdb9219f5c62468314cf0007ff FreddiHRBG.(a) -78bd5f036ea35a878b74e4f47941f784 FreddiHRBG.he0 -1d4023e93ffde7dae77426d293dab95b FreddiHRBG.he2 -ae8defe36ebe7d46f7b1796f3e95b139 FreddiHRBG.he4 -74b50dcbd98cd9bb3560be9a918c37db FreddiHRBG.w32 - -(freddi4 russian alt) -sev -D:\scummsys.98\sputm.98\*.c -41c340501caa1bf90cb0107679bf3e03 FREDDI4.(A) -07b810e37be7489263f7bc7627d4765d FREDDI4.HE0 -b90be0993b688bfcdd361c55fd263ccc FREDDI4.HE2 -d1c47dfa05160c783da89e6dc9894d3e FREDDI4.HE4 -8da938ee682f5f83aa2d51789e9602f4 FREDDI4.W32 - -(humongous ftp/pajama3 cd hfs/spyfox2 cd hfs/football cd hfs) -Joachim -8a61ffd683a01c2cddd9bb37e2fff119 Freddi 4 Demo -7c2e76087027eeee9c8f8985f93a1cc5 Freddi 4 Demo (0) -23632be3c8c4e77c3917148c5f8e56ef Freddi 4 Demo (2) -0453fdf42a9aa750ed198bca1d9f8e91 Freddi 4 Demo (4) -53b0e5c820bd264684df59231dbdc031 Freddi 4 Demo (a) -d41d8cd98f00b204e9800998ecf8427e Freddi 4 Demo (r) - -(humongous ftp) -1999-02-08 19:21 F4-demo.w32 -khalek, sev, Joachim -D:\scummsys.98\sputm.98\*.c -53b0e5c820bd264684df59231dbdc031 f4-demo.(a) -ccca9a823d117afb1a882fd707586bf0 F4-demo.d32 -dbde280a3b554db62f8f7920775cbed5 F4-demo.exe -7c2e76087027eeee9c8f8985f93a1cc5 f4-demo.HE0 -23632be3c8c4e77c3917148c5f8e56ef f4-demo.he2 -0453fdf42a9aa750ed198bca1d9f8e91 f4-demo.he4 -24b409ff575c52d385cdc6b7e91b5b79 F4-demo.w32 - -(pajama3 cd/spyfox2 cd/football cd) -Joachim -53b0e5c820bd264684df59231dbdc031 f4-demo.(a) -ccca9a823d117afb1a882fd707586bf0 F4-demo.d32 -24b409ff575c52d385cdc6b7e91b5b79 F4-demo.exe -7c2e76087027eeee9c8f8985f93a1cc5 f4-demo.HE0 -23632be3c8c4e77c3917148c5f8e56ef f4-demo.he2 -0453fdf42a9aa750ed198bca1d9f8e91 f4-demo.he4 - -(puttsfunshop cd hfs/puttcircus cd hfs/putttime cd hfs/spyozon cd hfs/freddicove cd hfs) -Joachim -7b08032b5e6ad870170e0d82d5786909 Freddi 4 Demo -ebd324dcf06a4c49e1ba5c231eee1060 Freddi 4 Demo (0) -23632be3c8c4e77c3917148c5f8e56ef Freddi 4 Demo (2) -0453fdf42a9aa750ed198bca1d9f8e91 Freddi 4 Demo (4) -0a5e8a6eb824c9e006dea982adf72d1e Freddi 4 Demo (a) -d41d8cd98f00b204e9800998ecf8427e Freddi 4 Demo (i) - - -(puttsfunshop cd/puttcircus cd/putttime cd/spyozon cd/freddicove cd/soccerMLS cd) -sev, Joachim -C:\Documents and Settings\stevej\My Documents\HECode\SPUTM\Src\*.cpp -0a5e8a6eb824c9e006dea982adf72d1e f4-demo.(a) -ccca9a823d117afb1a882fd707586bf0 f4-demo.D32 -20f57c3bf3f9fae1f88df9434bfd78e0 f4-demo.exe -ebd324dcf06a4c49e1ba5c231eee1060 f4-demo.HE0 -23632be3c8c4e77c3917148c5f8e56ef f4-demo.he2 -0453fdf42a9aa750ed198bca1d9f8e91 f4-demo.he4 - -(freddi4 demo hfs) -??? - -(dog cd) -sev -D:\scummsys.98\sputm.98\*.c -bd6a0ac7c15562250349dd5b64709e92 F4-DEMO.(A) -ccca9a823d117afb1a882fd707586bf0 F4-demo.d32 -24b409ff575c52d385cdc6b7e91b5b79 F4-demo.exe -c25755b08a8d0d47695e05f1e2111bfc F4-DEMO.HE0 -23632be3c8c4e77c3917148c5f8e56ef F4-DEMO.HE2 -0453fdf42a9aa750ed198bca1d9f8e91 F4-DEMO.HE4 - -(freddi4 demo hfs german) -Joachim -c089c75f6bc0f4a60c621a957043d279 Ff4demo -688328c5bdc4c8ec4145688dfa077bf2 Ff4demo (0) -3ad28b05239e4480644bea99d3804622 Ff4demo (2) -0453fdf42a9aa750ed198bca1d9f8e91 Ff4demo (4) -0eef3e0fca1f1ab0204982234be943a0 Ff4demo (a) -d41d8cd98f00b204e9800998ecf8427e Ff4demo (i) - -(freddi4 demo german) -Joachim -0eef3e0fca1f1ab0204982234be943a0 Ff4demo.(a) -2188b22aa1534b5248a8aa7dfa9c7861 Ff4demo.d32 -e179e35382bdc90601e01612c7a52ce8 FF4DEMO.EXE -688328c5bdc4c8ec4145688dfa077bf2 Ff4demo.HE0 -3ad28b05239e4480644bea99d3804622 Ff4demo.HE2 -0453fdf42a9aa750ed198bca1d9f8e91 Ff4demo.he4 - -(freddi4 demo dutch) -joostp -??? - -(freddi4 demo dutch) -adutchguy -??? - -(PuttTime CD UK release) -eriktorbjorn -d:\dev\SPUTM\Src\*.cpp -a2bb4dbf44dbf26587c2c213064853a8 FF4DEMO.(A) -cb52cbabfa8e91b76a0c6d76ded339c6 ff4demo.exe -e03ed1474ec14de78359970e0457a820 FF4DEMO.HE0 -15c9746d2d612d2693ec7e509c4e9fb5 FF4DEMO.HE2 -9470cd17e5e301f33876477f14992f29 ff4demo.he4 - -(Kellogg cereals pack) -bc20db254834452db602728f90e9a6d4 FreddiMini.(a) -d1286487c342ac81b28f3e1b90a2b7f3 FreddiMini.D32 -03d3b18ee3fd68114e2a687c871e38d5 FreddiMini.HE0 -cb52cbabfa8e91b76a0c6d76ded339c6 FreddiMini.exe -38189191a5824dd54377f0dbd4779046 FreddiMini.he2 -9470cd17e5e301f33876477f14992f29 FreddiMini.he4 - - -(freddicove hfs cd) -Joachim -b8ae37c647509afe5a406cab82e8f789 FreddiCove -590e6546aacd0d374b7f3a4f53013ab1 FreddiCove (0) -52b33175cf8abfbadcafbd4702275e0d FreddiCove (2) -a9f9f4a7ad25a3efda4626d4b6c80ffb FreddiCove (3) -dfbd9adb0d406184383dd069a64c8757 FreddiCove (4) -04ad937605bffa28fdf47693e61620cc FreddiCove (a) -63082e55aefcec01986fdfda9c57e55a FreddiCove (i) - -(freddicove cd) -Joachim -C:\Spyfox3Sputm\Src\SrcPWin\*.cpp -04ad937605bffa28fdf47693e61620cc freddicove.(a) -b4c292854d70ff6cf89e20030630c5e0 freddicove.EXE -590e6546aacd0d374b7f3a4f53013ab1 freddicove.HE0 -52b33175cf8abfbadcafbd4702275e0d freddicove.he2 -a9f9f4a7ad25a3efda4626d4b6c80ffb FreddiCove.he3 -dfbd9adb0d406184383dd069a64c8757 freddicove.he4 -213f75f25b1c92c1b401203440e2720e freddicove.w32 - -(freddicove cd) -sev -C:\Spyfox3Sputm\Src\SrcPWin\*.cpp -04ad937605bffa28fdf47693e61620cc FREDDICOVE.(A) -b4c292854d70ff6cf89e20030630c5e0 FREDDICOVE.EXE -590e6546aacd0d374b7f3a4f53013ab1 FREDDICOVE.HE0 -52b33175cf8abfbadcafbd4702275e0d FREDDICOVE.HE2 -a9f9f4a7ad25a3efda4626d4b6c80ffb FREDDICOVE.HE3 -dfbd9adb0d406184383dd069a64c8757 FREDDICOVE.HE4 - -(freddicove cd russian) -sev -C:\Spyfox3Sputm\Src\SrcPWin\*.cpp -04ad937605bffa28fdf47693e61620cc FREDDICOVE.(A) -b4c292854d70ff6cf89e20030630c5e0 FREDDICOVE.EXE -590e6546aacd0d374b7f3a4f53013ab1 FREDDICOVE.HE0 -62c6daba6da11b26e259e49c092cb08f FREDDICOVE.HE2 -a9f9f4a7ad25a3efda4626d4b6c80ffb FREDDICOVE.HE3 -dfbd9adb0d406184383dd069a64c8757 FREDDICOVE.HE4 - -(freddicove cd dutch) -adutchguy -??? - -(freddicove cd russian alt) -sev -C:\Spyfox3Sputm\Src\SrcPWin\*.cpp -2cac27c79aebf9db05ed516783d950a6 freddicove.(a) -21abe302e1b1e2b66d6f5c12e241ebfd freddicove.HE0 -52b33175cf8abfbadcafbd4702275e0d freddicove.he2 -a9f9f4a7ad25a3efda4626d4b6c80ffb FreddiCove.he3 -dfbd9adb0d406184383dd069a64c8757 freddicove.he4 -ca263c140b091bff2b31b1570e47aebe freddicove.w32 - -(freddicove cd russian updated) -sev -C:\HE_dev\SPUTM\Src\*.cpp -50211d918df60b69d78c03962a5b09ed FreddiCCC.(a) -b3d5a75a35d165c5750ab84fdc6fd638 FreddiCCC.EXE -4ce2d5b355964bbcb5e5ce73236ef868 FreddiCCC.HE0 -2890b42997816aae1bcaa618e77444bf FreddiCCC.he2 -2f238b51cfad1b8b5c179468a19aa29b FreddiCCC.he3 -29ef3472e3675c4a0e6ea440e0df4ffd FreddiCCC.he4 - -(freddicove demo dutch) -kirben, sev -??? - -(freddicove demo hfs) -??? - -(pajama4 cd) -sev -c:\SRC_RELEASE\SPUTM\Src\SrcPWin\*.cpp -f1b5cd6bceb50f8296d7a8db6efb69ec FFCoveDemo.(a) -e856bf226130de0d84bcaaa7ecfb5a3a FFCoveDemo.d32 -554762d1e011ade6cc29ab8024124017 FFCoveDemo.exe -45082a5c9f42ba14dacfe1fdeeba819d FFCoveDemo.HE0 -0c8f5b94bee7ddcbe5d41abce1daf9e3 ffCoveDemo.he2 -af9375aa14e4d967801938ee355e1486 ffCoveDemo.he4 -912c159f4a0232ceaff2b6759b18fd2f ffCoveDemo.w32 - -(super duper arcade 1 cd hfs) -Joachim -20b697227835007b68aaf078d19e239d Water Worries -4ba37f835be11a59d969f90f272f575b Water Worries (0) -e577863ba03c4c1001052e6c809bf66a Water Worries (1) -9d4a6d9c383ab9b1d0a486a5bb6bfb34 Water Worries (2) -3d5f7153500339e05815cfa9c3e9369e Water Worries (4) -2856fa0e0e74484f9c55dc58b2e9203c Water Worries (7) - -(super duper arcade 1 cd) -Joachim -7a266bd72dc8ae9a4d1c209e49502c00 Water.a32 -9a8e77ece8ed9cfcadd214ad0efabcee water.exe -4ba37f835be11a59d969f90f272f575b WATER.HE0 -e577863ba03c4c1001052e6c809bf66a WATER.HE1 -9d4a6d9c383ab9b1d0a486a5bb6bfb34 water.He2 -3d5f7153500339e05815cfa9c3e9369e water.he4 -2856fa0e0e74484f9c55dc58b2e9203c WATER.HE7 - - -(water cd hfs) -Joachim -2856fa0e0e74484f9c55dc58b2e9203c Water (7) -91a8077251d21b9a060792f50df91cbc Water Worries -f1b0e0d587b85052de5534a3847e68fe Water Worries (0) -162e516eaea7f6635e0d09923ed819d2 Water Worries (2) -3d5f7153500339e05815cfa9c3e9369e Water Worries (4) -bc97954ab2fd772d67ed91d21cd67cfd Water Worries (A) -e39e1837ed467d2e26fb57d9f14624ed Water Worries (i) -d41d8cd98f00b204e9800998ecf8427e Water Worries (r) - -(water cd) -Joachim -bc97954ab2fd772d67ed91d21cd67cfd Water.(a) -ccca9a823d117afb1a882fd707586bf0 Water.d32 -20902148fe2cdaaf73ad7fdf3663c01d Water.exe -f1b0e0d587b85052de5534a3847e68fe Water.he0 -162e516eaea7f6635e0d09923ed819d2 Water.he2 -3d5f7153500339e05815cfa9c3e9369e Water.he4 -2856fa0e0e74484f9c55dc58b2e9203c Water.he7 -2eacfb93a578132a2194937dc4be7c85 WATER.w32 - - -(water cd russian) -sev -D:\scummsys\sputm80\*.c -214d0ece69f444cc2ced3fd7bc0738dc Water.a32 -2012f854d83d9cc6f73b2b544cd8bbf8 WATER.HE0 -967f8921b88bebc81dc08cef276cdb3f WATER.HE1 -243bedd4215ec0640df55a35394b6778 water.He2 -3d5f7153500339e05815cfa9c3e9369e WATER.HE4 -2856fa0e0e74484f9c55dc58b2e9203c WATER.HE7 - -(water cd russian updated) -sev -D:\scummsys\sputm80\*.c -c2e40b953f90ed35926a958cc8cb6a52 WATER.HE2 -3d5f7153500339e05815cfa9c3e9369e WATER.HE4 -2856fa0e0e74484f9c55dc58b2e9203c WATER.HE7 -0be4193477036d3b1c57b5aaa0f4a709 WATER.W32 -6271130f440066830eca9056c1d7926f water.he0 -96a30e55cb95fc0611e4353637d6e5a7 water.he1 - -(maze cd hfs) -Kirben -??? - -(maze cd) -Kirben -??? - -(super duper arcade 2 cd hfs) -Kirben, Joachim -20d2fe8f124bd4224c52f4a545995895 Maze Madness -4f04b321a95d4315ce6d65f8e1dd0368 Maze Madness (0) -4efc960a9e16764ad3cdaa64ee79f4f7 Maze Madness (1) -86e4d05f086ab253e41eea36f9953b7b Maze Madness (2) -818620a54fe0232fa17d6df1c3e547aa Maze Madness (4) -40175d873ed23efa26dd49e3e108e943 Maze Madness (8) - - -(super duper arcade 2 cd) -Kirben, Joachim -6b201406803dfce87682febb6d99c155 maze.a32 -0c80dbb40c4edb8c9c93f7cebc34f4ab MAZE.EXE -4f04b321a95d4315ce6d65f8e1dd0368 maze.HE0 -4efc960a9e16764ad3cdaa64ee79f4f7 maze.HE1 -86e4d05f086ab253e41eea36f9953b7b maze.he2 -818620a54fe0232fa17d6df1c3e547aa maze.he4 -40175d873ed23efa26dd49e3e108e943 maze.he8 - -(freddisfunshop cd hfs) -Joachim -430d3ede85344fe8ca75f8b446be8a53 Freddi's FunShop -16542a7342a918bfe4ba512007d36c47 Freddi's FunShop (0) -ac8faff875fd9e47328c0ad6dacc1326 Freddi's FunShop (2) -db2ef7f3fdce0c5aa8932138636ab63b Freddi's FunShop (4) -895b6746ab176b3ba3e70afa3ce6588b Freddi's FunShop (a) -7a7b1e2d7b17c616c300ea736276f8e4 Freddi's FunShop (b) -de6b13747c34a629162dd257cc4f0866 Freddi's FunShop (i) -2d4bcfe0a03f44876182664b303f2bf7 Freddi's FunShop (u) - -(freddisfunshop cd) -Joachim -895b6746ab176b3ba3e70afa3ce6588b FreddisFunShop.(a) -7a7b1e2d7b17c616c300ea736276f8e4 FreddisFunShop.(b) -ccca9a823d117afb1a882fd707586bf0 FreddisFunShop.d32 -4bb50266471b1955d423d40fc716ecbf FreddisFunShop.exe -16542a7342a918bfe4ba512007d36c47 FreddisFunShop.HE0 -ac8faff875fd9e47328c0ad6dacc1326 FreddisFunShop.he2 -db2ef7f3fdce0c5aa8932138636ab63b FreddisFunShop.he4 -d82da74cd5b040fdbee2330c85006810 FreddisFunShop.map -39c468587c4bdad304be49e8d4041a22 FreddisFunShop.u32 -1f102a306b108951c86d0ea9f849935c FreddisFunShop.w32 -a38b59ccd74792e348b57e6f07ce2ccc FreddisFunShop.x32 - -(puttputt cd/puttmoon cd/fbear cd) -khalek, sev, Joachim -7.0.0 (Feb 8 1995 16:33:26) -d4d3dd3b039a5c0ecfae502064b5b2de CATALOG.EXE -11e6e244078ff09b0f3832e35420e0a7 CATALOG.HE0 -0cb65eb736529221b9269b15a7fd1914 CATALOG.HE1 -c0e6ea1d47493cca09fc674c3d097836 CATALOG.HE2 -c0e6ea1d47493cca09fc674c3d097836 CATALOG.HE3 -1978944e3e597362d3f4f13606ab2264 CATALOG.W32 - -(farm cd/airport cd/jungle cd/airport hfs/jungle hfs) -khalek, sev, Joachim -7.0.0 (Jun 22 1995 14:01:50) -698d32c4dd2cca76918710665a8c3e6c CATALOG2.EXE -037385a953789190298494d92b89b3d0 CATALOG2.HE0 -d43e75c3e71f3668727f436b4c777334 CATALOG2.HE1 -c0e6ea1d47493cca09fc674c3d097836 CATALOG2.HE2 -c0e6ea1d47493cca09fc674c3d097836 CATALOG2.HE3 -d33843ac942167d564ae5682e2b381c3 CATALOG2.W32 - -(airport cd hfs) -Joachim -df6c3ad8f24c73b153e1d1fe1f011f5b The AirPort -d6334a5a9b61afe18c368540fdf522ca The AirPort (0) -e51ba2794c8fbe267b3cc9cf5f511ea9 The AirPort (1) -0d20f6a921a35ed907a875e26e050b9c The AirPort (2) -45348231d5da1aaa87e65ca170956eee The AirPort (4) -cb6ef7b42f7804834a731826567d4212 The AirPort (7) -765492059d83bc0ae8c30a4feef50a6a The AirPort (9) - -(trips collection cd/airport cd/airport cd hfs) -sev, Joachim -7.0.0 (Jul 1 1995 21:55:39) -d031299fa80f81b7348ed57665aea617 AIRPORT.EXE -07433205acdca3bc553d0e731588b35f AIRPORT.HE0 -1a40631092357a0a2fb63ed881a83730 AIRPORT.HE1 -0d20f6a921a35ed907a875e26e050b9c AIRPORT.HE2 -c0e6ea1d47493cca09fc674c3d097836 AIRPORT.HE3 -45348231d5da1aaa87e65ca170956eee AIRPORT.HE4 -cb6ef7b42f7804834a731826567d4212 AIRPORT.HE7 -765492059d83bc0ae8c30a4feef50a6a AIRPORT.HE9 -3c45181f2f31b7d67932295d0f2bafcb AIRPORT.W32 - -(farm cd hfs/freddi cd hfs/he classics hfs/chase hfs/baseball hfs/pajama2 hfs/freddi3 hfs/socks hfs/thinker1 hfs/thinkerk hfs/jungle hfs) -khalek, Joachim (comment: checked all MD5s, there is only 1 Mac-Demo-Version for sure) -1995-09-14 17:20 Airport Demo -af4f7ee28b83c0ba471459a779a34043 Airport Demo -7ea2da67ebabea4ac20cee9f4f9d2934 Airport Demo (0) -608f6b919b663642be7104c14440434f Airport Demo (1) -858db51aa87dd51df99c00c0bab31d65 Airport Demo (2) -42161ad979949daf67924b5227b94f2d Airport Demo (4) -765492059d83bc0ae8c30a4feef50a6a Airport Demo (9) - -(puttputt cd/fbear cd/puttmoon cd/) -khalek, sev, Joachim -7.0.0 (Feb 8 1995 16:33:47) -009e6924ae0913e7728e9a7f70f5a9db AIRDEMO.EXE -86c9902b7bec1a17926d4dae85beaa45 AIRDEMO.HE0 -e5ce3f8cddd5d54aaf2b040c831dcc96 AIRDEMO.HE1 -858db51aa87dd51df99c00c0bab31d65 AIRDEMO.HE2 -c0e6ea1d47493cca09fc674c3d097836 AIRDEMO.HE3 -42161ad979949daf67924b5227b94f2d AIRDEMO.HE4 -765492059d83bc0ae8c30a4feef50a6a AIRDEMO.HE9 -a16fc5d8c29efffb65f84f3a42b154f1 AIRDEMO.W32 - -(spyfox cd/pajama cd/puttzoo cd/he classics cd/freddi2 cd/baseball cd/thinker1 cd/thinkerk cd/socks cd/) -khalek, sev, Joachim -7.0.0 (Jul 5 1995 14:46:05) -371f3abc95359eff033e6ef47c27190b AIRDEMO.EXE -e144f5f49d9241d2a9dee2576b3d09cb AIRDEMO.HE0 -855ecd2da58317064d2e01263d6ca493 AIRDEMO.HE1 -858db51aa87dd51df99c00c0bab31d65 AIRDEMO.HE2 -c0e6ea1d47493cca09fc674c3d097836 AIRDEMO.HE3 -42161ad979949daf67924b5227b94f2d AIRDEMO.HE4 -765492059d83bc0ae8c30a4feef50a6a AIRDEMO.HE9 -a5459bfe36183cf1f4ced00fe325aa90 AIRDEMO.W32 - -(farm cd/airport cd/airport hfs/jungle cd/jungle hfs/) -khalek, sev, Joachim -7.0.0 (Jun 22 1995 14:06:25) -371f3abc95359eff033e6ef47c27190b AIRDEMO.EXE -8ffd618a776a4c0d8922bb28b09f8ce8 AIRDEMO.HE0 -64fb30a7c26d119216cdadaff1b4e1bd AIRDEMO.HE1 -858db51aa87dd51df99c00c0bab31d65 AIRDEMO.HE2 -c0e6ea1d47493cca09fc674c3d097836 AIRDEMO.HE3 -42161ad979949daf67924b5227b94f2d AIRDEMO.HE4 -765492059d83bc0ae8c30a4feef50a6a AIRDEMO.HE9 -3d43af3f3ecc18744dda721d951e2a2f AIRDEMO.W32 - -(freddi cd/pajama2 cd/freddi3 cd/chase cd) -khalek, sev, Joachim -7.0.0 (Jul 5 1995 14:46:05) -371f3abc95359eff033e6ef47c27190b AIRDEMO.EXE -8ffd618a776a4c0d8922bb28b09f8ce8 AIRDEMO.HE0 -64fb30a7c26d119216cdadaff1b4e1bd AIRDEMO.HE1 -858db51aa87dd51df99c00c0bab31d65 AIRDEMO.HE2 -c0e6ea1d47493cca09fc674c3d097836 AIRDEMO.HE3 -42161ad979949daf67924b5227b94f2d AIRDEMO.HE4 -765492059d83bc0ae8c30a4feef50a6a AIRDEMO.HE9 -a5459bfe36183cf1f4ced00fe325aa90 AIRDEMO.W32 - -(farm cd hfs) -khalek -1995-09-16 14:11 The Farm -f4f88abc0635e80a4fc8c605ce9d0db3 The Farm -fbbbb38a81fc9d6a61d509278390a290 The Farm (0) -3941f75ccb280e7c73890833f2a09514 The Farm (1) -e778f5f5bbc457966f6ac90ec8f3d9ee The Farm (2) -449029f90e778a4504de146ca9d0963b The Farm (4) -3d29c1d665dcb4e4b036dfc7752b990b The Farm (9) - -(farm cd/trips collection cd) -khalek, sev -7.0.0 (Jun 11 1996 19:12:56) -a85856675429fe88051744f755b72f93 farm.he0 -3e1111db20b879a482814b4a06122672 farm.he1 -e778f5f5bbc457966f6ac90ec8f3d9ee farm.he2 -c0e6ea1d47493cca09fc674c3d097836 farm.he3 -449029f90e778a4504de146ca9d0963b farm.he4 -3d29c1d665dcb4e4b036dfc7752b990b farm.he9 -fa49452f871e506a6930cc8697db6181 farm.w32 - -(airport hfs) -Joachim -19a57595f7d2367286058a41241e574a Farm Demo -39fd6db10d0222d817025c4d3346e3b4 Farm Demo (0) -ba3cb50770848a91216565b91edf8579 Farm Demo (1) -706d44b32f7c74e98ff4fe88d625826d Farm Demo (2) -ad6a4dea7b696a28b99d40ea1d685788 Farm Demo (4) - -(farm demo dutch) -adutchguy -??? - -(farm cd/pajama cd/airport cd/jungle cd/airport hfs/jungle hfs) -khalek, sev, Joachim -7.0.0 (Jun 22 1995 14:05:27) -2e698fdcf17be7de5c70e9a66d6e8fc0 FARMDEMO.EXE -8d479e36f35e80257dfc102cf4b8a912 FARMDEMO.HE0 -4d4cb9fdb5a0f3b651bbf0f80735cbe2 FARMDEMO.HE1 -706d44b32f7c74e98ff4fe88d625826d FARMDEMO.HE2 -c0e6ea1d47493cca09fc674c3d097836 FARMDEMO.HE3 -ad6a4dea7b696a28b99d40ea1d685788 FARMDEMO.HE4 -daca65342b60a86a8ba5fbbd5d8b71d4 FARMDEMO.W32 - -(puttputt cd/puttmoon cd/fbear cd) -khalek, sev, Joachim -7.0.0 (Oct 13 1994 19:15:16) -1b6b66d63a7e80edde33a9b2f57011ba FARMDEMO.EXE -bf8b52fdd9a69c67f34e8e9fec72661c FARMDEMO.HE0 -6f5d57f1fdc449424792d840a9c85acc FARMDEMO.HE1 -706d44b32f7c74e98ff4fe88d625826d FARMDEMO.HE2 -1c26d0c926e9c31d1b77c0611a643dc9 FARMDEMO.HE3 -cdadbf8daf9c8f811dac28d348ff8825 FARMDEMO.W32 - -(jungle hfs) -Joachim -0e896300a0af8bd43f82d57a9da6a525 The Jungle -659942b9a6b519f123a13cca3c333a13 The Jungle (0) -0212155e5de27230b4ce5e36fb910945 The Jungle (1) -9a5bf899124f45288749d81a0918907a The Jungle (2) -222ad352670c1d94366a8511af846f49 The Jungle (4) -f80c48c622ba21d46fc518630f324cf7 The Jungle (9) - - -(trips collection cd/jungle cd) -sev, joachim -7.0.0 (Oct 5 1995 08:20:42) -11994b691574b2ecea7043a80a908647 JUNGLE.EXE -8801fb4a1200b347f7a38523339526dd JUNGLE.HE0 -1b39261e8d7e7384cf47fe9a6fa808d8 JUNGLE.HE1 -9a5bf899124f45288749d81a0918907a JUNGLE.HE2 -c0e6ea1d47493cca09fc674c3d097836 JUNGLE.HE3 -222ad352670c1d94366a8511af846f49 JUNGLE.HE4 -f80c48c622ba21d46fc518630f324cf7 JUNGLE.HE9 -d8561c70fe52082eace566fe038995f7 JUNGLE.W32 - -(pajama cd hfs) -Kirben -??? - -(pajama cd) -Kirben -??? - -(pajama cd hfs) -khalek -1996-09-12 20:55 Pajama Sam -57fab7dc46bb7d9450970d95cf14e8fc Pajama Sam -672dec94b82f7f0877ebb5b5cf7f4bc1 Pajama Sam (0) -2e83592ae635f53d1cc94c3d98da6335 Pajama Sam (1) -048a2cb8baad19ca90a4510783ab032b Pajama Sam (2) -147be86929b5969224c72edac30896fd Pajama Sam (4) -2546d42491fa61ac8e2d20d68d264fce Pajama Sam (7) - -(pajama cd) -khalek, sev -1996-09-14 00:28 pajama.w32 -D:\Scummsrc.80\Sputm\*.c -672dec94b82f7f0877ebb5b5cf7f4bc1 pajama.he0 -2e83592ae635f53d1cc94c3d98da6335 pajama.he1 -048a2cb8baad19ca90a4510783ab032b pajama.he2 -4417ea03a6d1b0b7522526f41d1097f6 pajama.he3 -147be86929b5969224c72edac30896fd pajama.he4 -2546d42491fa61ac8e2d20d68d264fce pajama.he7 -8e0e6d39728cc6a87b32f5e71f602b20 pajama.w32 - -(pajama cd dutch) -joostp -??? - -(pajama cd) -Joachim -1e5baa49222b0f6a6cb671bf6cb208d8 Pajama.(a) -ccca9a823d117afb1a882fd707586bf0 pajama.d32 -8f18bc14ff62d55d20cb3a9dc2ac1451 Pajama.exe -898eaa21f79cf8d4f08db856244689ff Pajama.HE0 -4dc07befa5e311abd787a2580c91a12d Pajama.he2 -f81b518a579d83c8d4d1911a365ea982 Pajama.he3 -147be86929b5969224c72edac30896fd Pajama.he4 -2546d42491fa61ac8e2d20d68d264fce Pajama.he7 -2c0273605aecaf223287da677679e42a pajama.w32 - -(freddi cd hfs/he classics hfs/puttzoo cd hfs) -khalek -1997-10-28 17:16 Pajama Sam Demo -3b032e02ccbc5d65c7397cfb32f65f1d Pajama Sam Demo -f237bf8a5ef9af78b2a6a4f3901da341 Pajama Sam Demo (0) -5c12305ff68ed053daba74a700a56ad2 Pajama Sam Demo (1) -4ccd03ca710a9053c42292cae09a6471 Pajama Sam Demo (2) -6e0fdfcf13e37b659b7155cf5969965f Pajama Sam Demo (4) - -(spyfox cd/puttzoo cd/he classics cd/pajama2 cd/freddi cd/freddi2 cd/freddi3 cd/baseball cd) -khalek, sev, Joachim -1996-10-31 22:34 pjs-demo.w32 -D:\Scummsrc.80\Sputm\*.c -11875252dea74302ea77f8adeaf9c2e9 PJS-DEMO.EXE -f237bf8a5ef9af78b2a6a4f3901da341 PJS-DEMO.HE0 -5c12305ff68ed053daba74a700a56ad2 PJS-DEMO.HE1 -4ccd03ca710a9053c42292cae09a6471 PJS-DEMO.HE2 -6e0fdfcf13e37b659b7155cf5969965f PJS-DEMO.HE4 -0c7e0d0ef005f289e9ca06bbbf5e8839 PJS-DEMO.W32 - -(pajama demo hfs) -khalek -??? - -(ftp) -2002-05-20 15:11 PjSamDemo.exe -khalek, sev -c:\Build\SRC\SPUTM\Src\SrcPWin\*.cpp -1f5564cba5d070703c85fe8eda1f6236 PjSamDemo.(a) -2c380ca1224d0c83a9de178546028cb5 PjSamDemo.exe -d7ab7cd6105546016e6a0d46fb36b964 PjSamDemo.he0 -5207295bb0b0e0b3f71b7593dd7c3a81 PjSamDemo.he2 -6e0fdfcf13e37b659b7155cf5969965f PjSamDemo.he4 - -(pajama demo hfs french) -Kirben -??? - -(pajama demo french) -Kirben -??? - -(pajama demo dutch) -adutchguy -??? - -(pajama2 cd hfs) -Joachim -b921d8279b5a3aa567c669b83d89e489 Pajama Sam 2 -d4e79c3d8645b8266cd78c325bc35154 Pajama Sam 2 (0) -cf1e7394ae00c0c65fa5af486e752e5c Pajama Sam 2 (1) -53f95adc8f6727d26e3248fb1bad8180 Pajama Sam 2 (2) -297787a960f2b591bb98add9b0689e9f Pajama Sam 2 (4) -d41d8cd98f00b204e9800998ecf8427e Pajama Sam 2 (r) - -(pajama2 cd) -sev, Joachim -D:\scummsys.95\sputm.95\*.cpp -ccca9a823d117afb1a882fd707586bf0 PAJAMA2.D32 -1830278a7bef7d5800ba02f816dbe373 PAJAMA2.EXE -d4e79c3d8645b8266cd78c325bc35154 PAJAMA2.HE0 -cf1e7394ae00c0c65fa5af486e752e5c PAJAMA2.HE1 -53f95adc8f6727d26e3248fb1bad8180 PAJAMA2.HE2 -297787a960f2b591bb98add9b0689e9f PAJAMA2.HE4 -44a282944b6392ad883a48fc03f37146 PAJAMA2.W32 -58dfc09f344a9dec565bb914920800d3 PAJAMA2.X32 - -(pajama2 cd hfs german) -Joachim -7ba80800b1302376b3a3d4d26d42aa50 PyjamaDBMN -c6907d44f1166941d982864cd42cdc89 PyjamaDBMN (0) -b4ecb33716598531823dc2a971a762f1 PyjamaDBMN (2) -297787a960f2b591bb98add9b0689e9f PyjamaDBMN (4) -55f4e9402bec2bded383843123f37c5c PyjamaDBMN (a) -01368f1a5c87746b09f50363696f5883 PyjamaDBMN (i) - -(pajama2 cd german) -Joachim -55f4e9402bec2bded383843123f37c5c PyjamaDBMN.(a) -b27cc88bc13451e9334fbf1d5f3c9c52 PyjamaDBMN.D32 -cecafac67b1f299b6f1c326bc58ba50f PyjamaDBMN.EXE -c6907d44f1166941d982864cd42cdc89 PyjamaDBMN.HE0 -b4ecb33716598531823dc2a971a762f1 PyjamaDBMN.HE2 -297787a960f2b591bb98add9b0689e9f PyjamaDBMN.HE4 -b27bf7501668c7244baf779a947b585c PyjamaDBMN.w32 - -(pajama2 cd russian updated) -sev -d:\dev\SPUTM\Src\*.cpp -486b48e4ae421cdbecfcc1431c7e801f PajamaTAL.(a) -738be524db140dc1c7fd6ddfab647c0b PajamaTAL.exe -32709cbeeb3044b34129950860a83f14 PajamaTAL.he0 -f71fe00306d8246bd5f7ee99703aaaff PajamaTAL.he2 -297787a960f2b591bb98add9b0689e9f PajamaTAL.he4 - -(pajama2 demo dutch hfs) -Kirben -??? - -(pajama2 demo dutch) -Kirben -??? - -(freddi2 cd hfs/freddi4 cd hfs/pajama3 cd hfs/puttrace cd hfs/putttime cd hfs/puttzoo cd hfs/spyfox cd hfs/superarcade1 cd hfs/superarcade2 cd hfs/water cd hfs/football cd hfs/soccer cd hfs) -sev, Joachim -01bae6f21e5c42b6a776efd57f363eb1 PJ2Demo -36a6750e03fb505fc19fc2bf3e4dbe91 PJ2Demo (0) -6b1f2b0359d146fda362f1b81892fc76 PJ2Demo (1) -0c8b86610f358f9a6b45cdd45cb70a58 PJ2Demo (2) -0f28e36711b55cc139921ddaaff6b341 PJ2Demo (4) -d41d8cd98f00b204e9800998ecf8427e PJ2Demo (r) - -(freddi2 cd/freddi4 cd/pajama3 cd/puttrace cd/putttime cd/puttzoo cd/spyfox cd/superarcade1 cd/superarcade2 cd/water cd/football cd/soccer cd ) -Joachim -ccca9a823d117afb1a882fd707586bf0 PJ2DEMO.D32 -44a282944b6392ad883a48fc03f37146 PJ2DEMO.EXE -36a6750e03fb505fc19fc2bf3e4dbe91 PJ2DEMO.HE0 -6b1f2b0359d146fda362f1b81892fc76 PJ2DEMO.HE1 -0c8b86610f358f9a6b45cdd45cb70a58 PJ2DEMO.HE2 -0f28e36711b55cc139921ddaaff6b341 PJ2DEMO.HE4 -58dfc09f344a9dec565bb914920800d3 PJ2DEMO.X32 - - -(ftp/puttrace cd/dog cd/spyfox2 cd/putttime cd/football cd/soccer cd) -1998-05-09 20:27 PJ2DEMO.W32 -khalek -D:\scummsys.95\sputm.95\*.c -36a6750e03fb505fc19fc2bf3e4dbe91 PJ2DEMO.HE0 -6b1f2b0359d146fda362f1b81892fc76 PJ2DEMO.HE1 -0c8b86610f358f9a6b45cdd45cb70a58 PJ2DEMO.HE2 -0f28e36711b55cc139921ddaaff6b341 PJ2DEMO.HE4 -44a282944b6392ad883a48fc03f37146 PJ2DEMO.W32 - -(pajama3 cd hfs) -Joachim -0b642feb91da52a174e192a082fcc70f Pajama Sam 3 -f7711f9264d4d43c2a1518ec7c10a607 Pajama Sam 3 (0) -978c86a8313b66d3b254c3b43e034460 Pajama Sam 3 (2) -87938c64ef72195231d58fec4f5add88 Pajama Sam 3 (4) -f7b0ad01b6a78bcd3854edd0ee9694df Pajama Sam 3 (a) -5a40804b409c888525b04361a907dd39 Pajama Sam 3 (i) - -(pajama3 cd) -sev, Joachim -C:\Dev\Project\SPUTM\Src\*.cpp -f7b0ad01b6a78bcd3854edd0ee9694df PAJAMA3.(A) -ccca9a823d117afb1a882fd707586bf0 Pajama3.d32 -aaf2001f4d7120fccac9123278cb0db2 Pajama3.exe -f7711f9264d4d43c2a1518ec7c10a607 PAJAMA3.HE0 -978c86a8313b66d3b254c3b43e034460 PAJAMA3.HE2 -87938c64ef72195231d58fec4f5add88 PAJAMA3.HE4 -7c4127882d847866cafd474b914da595 Pajama3.w32 - -(pajama3 cd hfs german) -Joachim -d47b3fa7fbb331d83b4cdcf6effc88d6 PyjamaSkS -2e8a1f76ea33bc5e04347646feee173d PyjamaSKS (0) -2d9d0e25c050cc1d30d78d5d2c475178 PyjamaSKS (2) -435437659b3c647c5a223e143e219846 PyjamaSKS (4) -3694b1ef70da192f3c19cd24638ec79b PyjamaSKS (a) -d41d8cd98f00b204e9800998ecf8427e PyjamaSkS (i) - - -(pajama3 cd german) -Joachim -3694b1ef70da192f3c19cd24638ec79b PyjamaSKS.(a) -c8538fa7fbb9c1b09bc4b833e04ce0dd PyjamaSKS.d32 -24efc2c233d1dfcf32e75c877e7640c0 PyjamaSKS.exe -2e8a1f76ea33bc5e04347646feee173d PyjamaSKS.HE0 -2d9d0e25c050cc1d30d78d5d2c475178 PyjamaSKS.he2 -435437659b3c647c5a223e143e219846 PyjamaSKS.he4 -88084b7b68f19dc5ded4dc5a5a8c3c76 PyjamaSKS.w32 - -(pajama3 cd russian) -sev -C:\HESystems\SPUTM\Src\SrcPWin\*.cpp -20176076d708bf14407bcc9bdcd7a418 UKPajamaEAT.he0 -6c0b2725387fe0b0bc7bfe043714492b UKPajamaEAT.(a) -eea6df70b4930c0d9e2ea69a1a193fc5 UKpajamaEAT.he2 -a7f5e841f72a72c0dec10d7d9fd74a51 UKpajamaEAT.HE4 - -(pajama3 demo hfs dutch) -joostp -??? - -(pajama3 demo dutch) -joostp -??? - -(puttcircus cd hfs/spyozon cd hfsfreddicove cd hfs) -Joachim -e221e2a53e9726ecb9bc422ed7650d42 Pajama Sam 3-Demo -a9f2f04b1ecaab9495b59befffe9bf88 Pajama Sam 3-Demo (0) -057190fd8706c51c6e6657a8eb8f6898 Pajama Sam 3-Demo (2) -d5b1d81d25d3d4850184fdb0ab627bea Pajama Sam 3-Demo (4) -e305c20b5d26d7084f035be22617d8a8 Pajama Sam 3-Demo (a) -d41d8cd98f00b204e9800998ecf8427e Pajama Sam 3-Demo (i) - -(puttcircus cd/spyozon cd/freddicove cd/soccerMLS cd) -sev, Joachim -e305c20b5d26d7084f035be22617d8a8 pj3-demo.(a) -ccca9a823d117afb1a882fd707586bf0 pj3-demo.D32 -7c4127882d847866cafd474b914da595 pj3-demo.exe -a9f2f04b1ecaab9495b59befffe9bf88 pj3-demo.HE0 -057190fd8706c51c6e6657a8eb8f6898 pj3-demo.he2 -d5b1d81d25d3d4850184fdb0ab627bea pj3-demo.he4 - -(freddi3 cd hfs german/pajama2 cd hfs german/putttime cd hfs german/spyfox cd hfs german) -Joachim -37c439a53e3b0426f8e1a57e56e1f9eb PJ3Demo -0c45eb4baff0c12c3d9dfa889c8070ab PJ3Demo (0) -5989dc5d4fecf651db4d5f497ee36d0d PJ3Demo (2) -44cef52dfec87a2dcccda97f3ac6b2cd PJ3Demo (4) -e04352df925c102041c6e954bc86d71c PJ3Demo (a) -d41d8cd98f00b204e9800998ecf8427e PJ3Demo (i) - -(freddi3 cd german/pajama2 cd german/putttime cd german/spyfox cd german) -Joachim -e04352df925c102041c6e954bc86d71c Gpj3demo.(a) -2188b22aa1534b5248a8aa7dfa9c7861 GPJ3Demo.d32 -45d9f75902265d1ecbfbf5ff37a7bc70 GPJ3Demo.exe -0c45eb4baff0c12c3d9dfa889c8070ab Gpj3demo.HE0 -5989dc5d4fecf651db4d5f497ee36d0d GPJ3Demo.HE2 -44cef52dfec87a2dcccda97f3ac6b2cd GPJ3Demo.HE4 - -(puttsfunshop cd hfs/freddisfunshop cd hfs/samsfunshop cd hfs) -Joachim -e221e2a53e9726ecb9bc422ed7650d42 Pajama Sam 3-Demo -a654fb60c3b67d6317a7894ffd9f25c5 Pajama Sam 3-Demo (0) -057190fd8706c51c6e6657a8eb8f6898 Pajama Sam 3-Demo (2) -d5b1d81d25d3d4850184fdb0ab627bea Pajama Sam 3-Demo (4) -795bb07d00d8628631e767d2c23fba56 Pajama Sam 3-Demo (a) -d41d8cd98f00b204e9800998ecf8427e Pajama Sam 3-Demo (i) - -(puttsfunshop cd/freddisfunshop cd/samsfunshop cd) -sev, Joachim -C:\Dev\Project\SPUTM\Src\*.cpp -795bb07d00d8628631e767d2c23fba56 pj3-demo.(a) -ccca9a823d117afb1a882fd707586bf0 pj3-demo.D32 -7c4127882d847866cafd474b914da595 pj3-demo.exe -a654fb60c3b67d6317a7894ffd9f25c5 pj3-demo.HE0 -057190fd8706c51c6e6657a8eb8f6898 pj3-demo.he2 -d5b1d81d25d3d4850184fdb0ab627bea pj3-demo.he4 - -2002-10-19 11:37 pj3-demo.w32 -khalek -C:\Dev\Project\SPUTM\Src\*.cpp -a2fe82b76e0e3db5d8e2f44ec9772548 pj3-demo.(a) -cf90b4db5486ef798db78fe6fbf897e5 pj3-demo.he0 -e923a8f282ad6900b24beb562894661f pj3-demo.he2 -d5b1d81d25d3d4850184fdb0ab627bea pj3-demo.he4 -7c4127882d847866cafd474b914da595 pj3-demo.w32 - -(PuttPutt CD UK release) -eriktorbjorn -d:\dev\SPUTM\Src\*.cpp -5b0f71b2503688d8783f4cc37c302666 PJ3DEMO.(A) -2702b7fad34607adea8e8a7b6adb1202 pj3demo.exe -3e48298920fab9b7aec5a971e1bd1fab PJ3DEMO.HE0 -22df1316d6594bc5c70442874079c46d Pj3Demo.he2 -0794110b085ee91c2aa4a5fc844ff2f4 Pj3Demo.he4 - -(pjgames cd hfs) -Kirben -??? - -(pjgames cd) -Kirben -??? - -(lost cd hfs) -Kirben -??? - -(lost cd) -Kirben -??? - -(superarcade2 cd hfs) -Kirben, Joachim -deb9d0989a2ffa00f77c06360b4e4794 Lost and Found -ed361270102e355afe5236954216aba2 Lost and Found (0) -2f1636bf18a437092f7e3de9614c7c49 Lost and Found (2) -e0499c7a9aad75122c902934aaa98b62 Lost and Found (a) -d41d8cd98f00b204e9800998ecf8427e Lost and Found (r) - - -(superarcade2 cd) -Kirben, Joachim -e0499c7a9aad75122c902934aaa98b62 lost.(a) -4a4564b8bdd8b3c004f2f84bf5e7fc85 lost.a32 -ccca9a823d117afb1a882fd707586bf0 lost.d32 -9d01495e4f8b34e4aefb1e29adcdd37f LOST.EXE -ed361270102e355afe5236954216aba2 lost.HE0 -2f1636bf18a437092f7e3de9614c7c49 lost.he2 - -(lost demo) -1999-07-08 08:46 SMALLER.EXE -khalek -D:\(vss)scummsys.99\SPUTM\Src\SrcPWin\*.cpp -070702d4a191580455acee3d38d5ca9e smaller.(a) -7d2b945c2afb05a370da690c36b22bdd SMALLER.EXE -a2bb6aa0537402c1b3c2ea899ccef64b SMALLER.HE0 -7fe73db8981467a6d0abdd92105f8618 data/world-1/levels/level-10.ot1 -b988a3d95f638bb342135d9bd04e0137 data/world-1/levels/level-10.ot2 -ce60d91581be1cde2d0619a85647b1a9 data/world-1/levels/level-11.ot1 -8cd6dea0b18593c8d1aaa12daff10cc7 data/world-1/levels/level-11.ot2 -7bfa53f7aa0b06372472b7fa475254cb data/world-1/levels/level-12.ot1 -ad2e8c62013a1aee64e3af638d7fac3a data/world-1/levels/level-12.ot2 -0dda1de323c63baa645863259937cfaa data/world-1/levels/level-13.ot1 -0832514ef1b2206b119054e838003241 data/world-1/levels/level-13.ot2 -08b28bfae2169083bdaf2635faf75213 data/world-1/levels/level-14.ot1 -510121696a26e6410766d3d414a4a1ed data/world-1/levels/level-14.ot2 -459027319d6db400bbb60acd37dd31a0 data/world-1/levels/level-15.ot1 -7c73fcd8abcb837bbcb72457eb71da44 data/world-1/levels/level-15.ot2 -ec75f20929d3ab9ad7b68b650e55b713 data/world-1/levels/level-16.ot1 -f90cd5c12b9dc3777b3371460bb6da1f data/world-1/levels/level-16.ot2 -085feba2672c7dc41570726e098d0d02 data/world-1/levels/level-17.ot1 -4a85080de411c54dcfd42b9929e1c0c3 data/world-1/levels/level-17.ot2 -37dacba43a2407c31d8a69dd302991a7 data/world-1/levels/level-18.ot1 -0dbc99bedd086e11dcf78794e1a21d50 data/world-1/levels/level-18.ot2 -67d9d144436e57215212bf65c6665395 data/world-1/levels/level-19.ot1 -679c0c4cdb9781ca9fe73d1f4314fc50 data/world-1/levels/level-19.ot2 -c60abc377414f72a16341901c4895b41 data/world-1/levels/level-1.ot1 -b69f642322a618c2c122e40f9533dd86 data/world-1/levels/level-1.ot2 -93de8918e2d6d35d04f21f067203b8f7 data/world-1/levels/level-20.ot1 -f5da057f3408613b5b8ed0bcd876833f data/world-1/levels/level-20.ot2 -8b175a1cb5722fccd2c649ff15e85e39 data/world-1/levels/level-2.ot1 -f958fbf2de135bcfdffd9e8d0cbfcaa4 data/world-1/levels/level-2.ot2 -453569e6100e194b2e40e52ea13a1747 data/world-1/levels/level-3.ot1 -388bb8ae5805a87ec6a9af5ffef67b65 data/world-1/levels/level-3.ot2 -a6719d4797937bc1501015d8ba02faf3 data/world-1/levels/level-4.ot1 -69946a0c1fded7a1cd1fd7e5da5bc716 data/world-1/levels/level-4.ot2 -170121ca31f889039771cf76a01fd60b data/world-1/levels/level-5.ot1 -9cd61c833f3342b881c280dd7c746db8 data/world-1/levels/level-5.ot2 -cfe953b525b530f144ba322f8969e9b8 data/world-1/levels/level-6.ot1 -650563fd608cc5f6418a20bdb3e3f6eb data/world-1/levels/level-6.ot2 -dd1d60970ff90ffe00f6a201b125ddd1 data/world-1/levels/level-7.ot1 -e5598a32e874f7451581c2fcc8118e8a data/world-1/levels/level-7.ot2 -8d9b7d1e209aa6103b5440d098e005ee data/world-1/levels/level-8.ot1 -f69c2ce78a6f2a70bf43f0cf665ac075 data/world-1/levels/level-8.ot2 -049b95a44520347dabf1d14b1cd9b9f4 data/world-1/levels/level-9.ot1 -b6087413d0aac4078203a1ef5fd88cb8 data/world-1/levels/level-9.ot2 - -(samsfunshop cd hfs) -Joachim -b4673b59ed60b26fda077c43993102ab Sam's FunShop -68155a6bf082221525f431c2cbdac8ab Sam's FunShop (0) -2e44235ef224b25ce766eab34ecc0ab5 Sam's FunShop (2) -c13b823a4f12d20a22f01acdc89102dc Sam's FunShop (4) -35202bb9a0fa8fa23bbc3c9b606ad6b6 Sam's FunShop (a) -eebac1d5bf74832aae8031c47c699197 Sam's FunShop (b) -78d5350b0d208be368e1169c6f53728b Sam's FunShop (i) -2d4bcfe0a03f44876182664b303f2bf7 Sam's FunShop (u) - -(samsfunshop cd) -Joachim -35202bb9a0fa8fa23bbc3c9b606ad6b6 SamsFunShop.(a) -eebac1d5bf74832aae8031c47c699197 SamsFunShop.(b) -ccca9a823d117afb1a882fd707586bf0 SamsFunShop.d32 -486422eba1f7ca37c6314ad13e00a041 SamsFunShop.exe -68155a6bf082221525f431c2cbdac8ab SamsFunShop.HE0 -2e44235ef224b25ce766eab34ecc0ab5 SamsFunShop.he2 -c13b823a4f12d20a22f01acdc89102dc SAMSFUNSHOP.HE4 -e03725ba7069e7a94c28168b70dc99c4 SamsFunShop.r32 -39c468587c4bdad304be49e8d4041a22 SamsFunShop.u32 -591674119a23295aede9ced62642498a SamsFunShop.w32 -a38b59ccd74792e348b57e6f07ce2ccc SamsFunShop.x32 - -(sock cd hfs/superarcade1 cd hfs) -Joachim -8351724df7b6141c57596a70f71261d1 SockWorks -5e8fb66971a60e523e5afbc4c129c0e8 SockWorks (0) -a8ae3fedb8ff53e798d22e495929812f SockWorks (1) -70c23a4651349e957ac8996275fe66f3 SockWorks (2) -14a5574aeae3187bbb71ce7f4a1b803b SockWorks (4) -c137e6e5d636c13df8ccb108523640cc SockWorks (7) - -(sock cd) -Joachim -6e076d748dd4726d1d7a230cfdb13dec SOCKS.D32 -be18099a608458fb63bc996a86195a73 SOCKS.DLL -d82c48a90176dafb1f344f13a0cefb60 SOCKS.EXE -5e8fb66971a60e523e5afbc4c129c0e8 SOCKS.HE0 -a8ae3fedb8ff53e798d22e495929812f SOCKS.HE1 -70c23a4651349e957ac8996275fe66f3 SOCKS.HE2 -14a5574aeae3187bbb71ce7f4a1b803b SOCKS.HE4 -c137e6e5d636c13df8ccb108523640cc SOCKS.HE7 -619755f82f852d94f252add9bbc73a61 SOCKS.W32 - -(superarcade1 cd) -Joachim -619755f82f852d94f252add9bbc73a61 Socks.a32 -6e076d748dd4726d1d7a230cfdb13dec socks.d32 -be18099a608458fb63bc996a86195a73 SOCKS.DLL -aa2b672c687c4cda492e3d9ceb7486eb socks.exe -5e8fb66971a60e523e5afbc4c129c0e8 SOCKS.HE0 -a8ae3fedb8ff53e798d22e495929812f SOCKS.HE1 -70c23a4651349e957ac8996275fe66f3 SOCKS.HE2 -14a5574aeae3187bbb71ce7f4a1b803b SOCKS.HE4 -c137e6e5d636c13df8ccb108523640cc SOCKS.HE7 - -(socks cd russian) -sev -D:\scummsys.80\sputm80\*.c -19263586f749a560c1adf8b3393a9593 SOCKS.HE0 -d4bc7dd56e22720c96ecf96bd68fbecd SOCKS.HE1 -5b1e928ecb604dba17e41fb739218a49 SOCKS.HE2 -14a5574aeae3187bbb71ce7f4a1b803b SOCKS.HE4 -c137e6e5d636c13df8ccb108523640cc SOCKS.HE7 -65b08876afc8c55b8dbb2022fb1b6a95 Socks.a32 - - -<----END OF WORK TODAY----> - -(puttrace cd hfs) -Joachim -??? - -(puttrace cd) -sev -D:\scummsys.98\sputm.98\*.c -ef68d6670cce33d4300468d0b76b3894 puttrace.(a) -e56b14495c0075850c900ca0999f90f4 puttrace.(b) -7ded875e14d324f610a4fde12de2d407 PUTTRACE.A32 -981e1e1891f2be7e25a01f50ae55a5af PUTTRACE.HE0 -1bb81a151d72f56b81b43b55b1de63e4 PUTTRACE.HE2 -3f368bd19438204b34db7d7ff8e5395d PUTTRACE.HE4 - -(puttrace cd russian) -sev -C:\HESystems\SPUTM\Src\*.cpp -cde08c76ce62dcb6081a3fb7dfd2bc89 UKPuttRace.(a) -e348fe80ca1a40a30bd57ff9d08812c0 UKPuttRace.(b) -62050da376483d8edcbd98cd26b6cb57 UKPuttRace.he0 -fdd32528084cd48078bb073ead02d2a9 UKPuttRace.he2 -4dfdf4303fa6769535eba7fed539002e UKPuttRace.he4 -91c0bc455b81e7e556646db1dacd461f UKPuttRace.w32 - -(puttrace cd russian alt) ALL IN MD5 -sev -D:\scummsys.98\sputm.98\*.c -fe0cbe12588be2c8e509603821566a87 Puttrace.(a) -e56b14495c0075850c900ca0999f90f4 Puttrace.(b) -86821f1e71e2a2d679da7827485fdab1 PUTTRACE.A32 -981e1e1891f2be7e25a01f50ae55a5af PUTTRACE.HE0 -544b59d0b904a745033e1850c07a8b5f Puttrace.he2 -5d930459fd1827eaa9df846a20757932 Puttrace.he4 - -(puttrace cd hfs german) -Joachim -??? - -(puttrace cd german) -Joachim -??? - -(puttrace demo hfs dutch) -Kirben -??? - -(puttrace demo dutch) -Kirben -??? - -(puttrace demo hfs dutch) -joostp -??? - -(puttrace demo dutch) -joostp -??? - -(puttrace demo hfs) -sev -??? - -(pajama3 cd/putt dog cd/spyfox2 cd/puttcircus cd/putttime cd/football cd) -sev -D:\scummsys.98\sputm.98\*.c -36590dcf019a0fa78de77354cf4db342 RACEDEMO.(A) -7ded875e14d324f610a4fde12de2d407 RACEDEMO.A32 -8e1d77b06c92662ef5128b087f84f229 racedemo.exe -0ac41e2e3d2174e5a042a6b565328dba RACEDEMO.HE0 -07e92dfae14eb6ef3afc6d40ba98fcd2 RACEDEMO.HE2 -e80168dc9bfca4577b4e2bbdd70db60b RACEDEMO.HE4 - -2002-05-07 02:53 RACEDEMO.W32 -khalek -D:\scummsys.98\sputm.98\*.c -36590dcf019a0fa78de77354cf4db342 RACEDEMO.(A) -0ac41e2e3d2174e5a042a6b565328dba RACEDEMO.HE0 -07e92dfae14eb6ef3afc6d40ba98fcd2 RACEDEMO.HE2 -e80168dc9bfca4577b4e2bbdd70db60b RACEDEMO.HE4 -a030210d465ed001953df89e3df1e558 RACEDEMO.W32 - -(puttrace demo hfs german) -Joachim -??? - -(puttrace demo german) -Joachim -??? - -(PuttPutt CD UK release) -eriktorbjorn -d:\dev\SPUTM\Src\*.cpp -cb6041f10fbaaa5e491aa8d14fc26dc0 RACEDEMO.(A) -3616b3bf5877b2fb50ce33c705f15413 racedemo.exe -7c8100e360e8ef05f88069d4cfa0afd1 RACEDEMO.HE0 -095795832ad8a4323bbfa6c137b691bb RACEDEMO.HE4 -177f4e5579e0279700c2b6b7f4f4ba71 RaceDemo.he2 - -(puttmoon 3do) -sev -??? - -(he classics cd) -khalek, sev -6.1.1 (Nov 4 1993 11:12:57) -19113cc2ecc1dc24c70c46ae015abd78 PUTTMOON.BRS -c6adfe1876ac936ff19546f0cd1e2b5b PUTTMOON.EXE -780e4a0ae2ff17dc296f4a79543b44f8 PUTTMOON.HE0 -f02f36270d684e0c245d0fd0519b5e7b PUTTMOON.HE1 -bfecc91f0bf7b86acd7f82a3dfb53ca5 PUTTMOON.TLK - -(puttmoon cd russian) -sev -6.1.1 (Nov 4 1993 11:12:57) -c6adfe1876ac936ff19546f0cd1e2b5b PUTTMOON.EXE -780e4a0ae2ff17dc296f4a79543b44f8 PUTTMOON.HE0 -6a9457c786a8dcf8d2da8a2ec0123343 PUTTMOON.HE1 -c57a7faf7416d9da11919d0957332574 PUTTMOON.SG0 -3d6deb9406a3357764d11623ed6e48ee PUTTMOON.SG1 -1927fb2e7954326152630cb0f56158f8 PUTTMOON.TLK - -(puttmoon cd russian alt) -sev -6.1.1 (Nov 4 1993 11:12:57) -c6adfe1876ac936ff19546f0cd1e2b5b PUTTMOON.EXE -780e4a0ae2ff17dc296f4a79543b44f8 PUTTMOON.HE0 -2de9f712c62fab29507298c9f69591ec PUTTMOON.HE1 -c57a7faf7416d9da11919d0957332574 PUTTMOON.SG0 -3d6deb9406a3357764d11623ed6e48ee PUTTMOON.SG1 -3a35a45c5634203c72b9f2083e0d5717 PUTTMOON.TLK - -(puttmoon cd hebrew) -sev -??? - -(he classics cd hfs) -khalek -9dc02577bf50d4cfaf3de3fbac06fbe2 Putt-Putt Moon 0 -e4e07a2763824a7646e11b6d9ad795c8 Putt-Putt Moon 1 -bfecc91f0bf7b86acd7f82a3dfb53ca5 Putt-Putt Moon 2 -19113cc2ecc1dc24c70c46ae015abd78 PUTTMOON.BRS - -(he classics cd) -khalek, sev -7.0.0 (Feb 7 1995 13:27:20) -19113cc2ecc1dc24c70c46ae015abd78 PUTTMOON.BRS -9c92eeaf517a31b7221ec2546ab669fd PUTTMOON.HE0 -cfe6d4059c4c5edb9f9f2351efb32a7b PUTTMOON.HE1 -965c113b3978682530e121ba8af7419b PUTTMOON.HE2 -58dfc09f344a9dec565bb914920800d3 PUTTMOON.HE3 -05d387396aabba20e7e3b8778bc0cf09 PUTTMOON.HE4 -56c8455570af6106931818e19344b46a PUTTMOON.W32 - -6.1.1 (Sep 29 1993 17:18:45) -khalek -ef2d93dd02bcdabc7a1a59101e31f8be MOONDEMO.EXE -aa6a91b7f6f119d1b7b1f2a4c9e24d59 MOONDEMO.HE0 -086b6835bbb924109a31e50f0b5c9e9a MOONDEMO.HE1 -0d06e43d5b5460375575a74d15d6bf07 MOONDEMO.TLK - -(puttmoon demo hfs) -khalek -??? - -(puttputt cd/he classics cd) -khalek, sev -7.0.0 (Feb 7 1995 13:27:20) -9c143c5905055d5df7a0f014ab379aee moondemo.he0 -ec82bd61eff3218216fb145004d2b005 moondemo.he1 -0d06e43d5b5460375575a74d15d6bf07 moondemo.he2 -7cf09a515cb499890e3faeab3a2aa491 moondemo.he3 -c182763838b5d06581cc9fb1c1bb1cfd moondemo.he4 -56c8455570af6106931818e19344b46a moondemo.w32 - -(puttcircus cd hfs) -sev -??? - -(puttcircus cd) -sev -C:\Dev\Project\SPUTM\Src\*.cpp -2efc1faef85c78dbfe91d46fcc26a3ec puttcircus.(a) -ab0693e9324cfcf498fdcbb12acf8bb4 puttcircus.HE0 -320a3bca28c8c30ad7aeff74f24ced2e puttcircus.he2 -9c01311b009b0b1b65735beb51eb526a puttcircus.HE4 -d0552089e0c2bbf75969643e8dc30ef1 PUTTCIRCUS.w32 - -(puttcircus cd hfs russian) -sev -??? - -(puttcircus cd russian) -sev -C:\Dev\Project\SPUTM\Src\*.cpp -0deaf09aff8db115b7da47272955f206 puttcircus.(a) -7bad72e332a59f9fcc1d437f4edad32a puttcircus.he0 -9ef7154db4ba00b89b5424ffd5cfce26 puttcircus.he2 -e902d67046bfb7cb09c9148b4462f297 puttcircus.he4 -f22635a81cf4abb712704990b7d9d597 PUTTCIRCUS.w32 - -(puttcircus demo hfs) -sev -??? - -(puttsfunshop cd/freddicove cd/soccerMLS cd) -sev -C:\Dev\Project\SPUTM\Src\*.cpp -d78d1eff392096c83687231fe2e78c6b circdemo.(a) -ccca9a823d117afb1a882fd707586bf0 circdemo.D32 -79c9cf9572d32b2c587226f32b1ab946 circdemo.exe -a7cacad9c40c4dc9e1812abf6c8af9d5 circdemo.HE0 -14b7f2b5180be87991338ea1017421be circdemo.he2 -860b38ff47ba90e910025ac8c6e9a823 circdemo.he4 - -(puttputt 3do cd) -khalek -c817613033ceb12eb4c31ea6c336808f BREEZY.DMU -fa14bc146cc6086ab44c906a320699c9 CALLIOPE.DMU -67f93260bf6519d9a47fe987f46d286b CARWASH.DMU -60fe949efb311eb660c1516fcc20edd2 CONGA.DMU -667d5c394b63381f309d8c85085748d8 GASTASHN.DMU -ed39e74166eb60b6d93ab5a26790dcac GROCER2.DMU -a06560553d188e1dc5886c7633ee602a HAPPY.DMU -01fd3afbc1b0f8b6e01a18232181cc39 HONEYBEE.DMU -6bedd1f644ff35d55f2dd4e818f662ed MARSEILL.DMU -ba59b9918a11a3f366719bb6dbb02426 MICE.DMU -3031ecf1f94e9712ec9e2d192af5adaa MISCHIEF.DMU -5b45f41c5e02ea737f64b8fb306346fa MONKEYS.DMU -6beb885fb7fae9a4dc0a7b66b8e31e27 PAINTING.DMU -725518498492603428a4b481a74f0ecd PARADE.DMU -9d166dc6e1e55f78bfac5ede2e9c2daa PAUSE.CEL -1748c190e7df232fabe70130f6636c9f PERFORM.CEL -cbcf447cb91de76b6d034d41601bd148 PLAYFUL.DMU -d8051a79de027921c27d08a67fb5fc09 POPWEASL.DMU -8296845e881ba14f6c3e76e51220896c PUPPY.DMU -7e151c17adf624f1966c8fc5827c95e9 PUTTPUTT.HE0 -3c985277e56fda01c1ef3d6da6817fd2 PUTTPUTT.HE1 -46f5aae1faea566f0e21b34572563e40 PUTTPUTT.TLK -e4978c237ab8b7eb7820048a90a3161e PUTTSONG.DMU -79e68c29627a5ba3514b87edacb57232 SHORTOCK.DMU -87ffadb9e4d62e60fa2f8b16b672677a STARTUP.CEL -d9b9d645a4f7949f127b32eb152e343b SUNNYDAY.DMU -66d7b0f5c5b9bf0cf57a96b7fa457569 TICKTOCK.DMU -b274a80fde5aaf92123972a4f3aabaa9 TOYSHOP.DMU -cefbc7824935e5377bf25b3e461effdd WADDLE.DMU -8f4c6d28938fb3a532d6038ebaadf234 WAITING.DMU -a7914691959037a5a4f25fc5a6a138d2 WALTZ.DMU -3caac70fd907c450ad8f4cd2d75ab576 WANDRING.DMU -cf7150acba9df96c16a9e20d2345941d WHISTLIN.DMU - -(puttputt patch) -khalek -6.1.1 (Nov 20 1993 12:42:10) -868b739deaf9319825137e5e55d4aee1 PUTTPUTT.EXE - -(puttputt cd/he classics cd) -khalek, sev -6.1.1 (Jan 18 1994 09:32:55) -7564ee82886b8c75b3b1bd895c98fcb4 puttputt.exe -9708cf716ed8bcc9ff3fcfc69413b746 puttputt.he0 -d109f3215ca2d5cd38c2efd83da5a51c puttputt.he1 -5f5a783f29c3da080d3bddbef0e2f01d puttputt.tlk - -(puttputt cd hebrew) -sev -??? - -(puttputt cd russian) -sev -6.1.1 (Nov 19 1992 17:56:19) -0b3222aaa7efcf283eb621e0cefd26cc PUTTPUTT.HE0 -64b5aee54f2b1453100b2040e1d778ef PUTTPUTT.HE1 -a4e799011c8320dffef43db7869b839a PUTTPUTT.TLK - -(puttputt cd russian alt) -sev -6.1.1 (Nov 19 1992 17:56:19) -68ca57feaa198976c87f4a69f1e9a958 PUTTPUTT.EXE -0b3222aaa7efcf283eb621e0cefd26cc PUTTPUTT.HE0 -64b5aee54f2b1453100b2040e1d778ef PUTTPUTT.HE1 -32453797af20693a00ccbe4dfa6db54f PUTTPUTT.TLK - -(he classics cd hfs) -khalek -684732efb5799c0f78804c99d8de9aba Putt-Putt Parade 0 -dc086db2e995aff8b2336147ccbd75d6 Putt-Putt Parade 1 -5f5a783f29c3da080d3bddbef0e2f01d Putt-Putt Parade 2 - -(puttputt cd/he classics cd) -khalek, sev -7.0.0 (Feb 7 1995 13:26:59) -6a30a07f353a75cdc602db27d73e1b42 puttputt.he0 -ce76be89bcace9527f457cab9d8231a6 puttputt.he1 -328b11537db07809864d8b2f536d07ae puttputt.he2 -58dfc09f344a9dec565bb914920800d3 puttputt.he3 -6cb903fb3d4d726fe0229affb1d22525 puttputt.he4 -71e615a8493f357e4de824a1e4632a80 puttputt.w32 - -6.1.1 (Mar 9 1993 21:19:14) -khalek -57cbe80e524afa5330a77d04316d2bf6 puttdemo.exe -31aa57f460a3d12429f0552a46a90b39 puttdemo.he0 -282a5503b45ddc15c7fb83c8e911b091 puttdemo.he1 -a49e0880f7c0638fbf7adf88894da3df puttdemo.tlk - -(puttputt demo hfs) -khalek -??? - -(puttputt cd/he classics cd) -khalek, sev -7.0.0 (Feb 7 1995 13:26:59) -37ff1b308999c4cca7319edfcc1280a0 puttdemo.he0 -9be0197fa0dac01ca3d72cf060826045 puttdemo.he1 -a49e0880f7c0638fbf7adf88894da3df puttdemo.he2 -58dfc09f344a9dec565bb914920800d3 puttdemo.he3 -cd26452706d7e66a3f4ba13975fe5c68 puttdemo.he4 -71e615a8493f357e4de824a1e4632a80 puttdemo.w32 - -(puttzoo cd hfs) -cyx -??? - -(puttzoo cd) -cyx -??? - -(puttzoo cd hfs) -khalek -1995-09-14 17:11 Putt-Putt Saves the Zoo -2f328b89b4404eaefb9bd18045dddd06 Putt-Putt Saves the Zoo -58fdf4c7ad13540a734e18f8584cad89 Putt-Putt Saves the Zoo (0) -8cffc74555fed521cc2008ed6a119118 Putt-Putt Saves the Zoo (1) -225991e6f8d3d6ac5e519413392c34f3 Putt-Putt Saves the Zoo (2) -d3235443d88751acd3412c1b0c6cec35 Putt-Putt Saves the Zoo (4) - -(puttzoo cd dutch) -joostp -??? - -########## There is 9.8 version of puttzoo, Kirben has it -(puttzoo cd) -khalek -7.0.0 (Jul 13 1995 18:45:07) -1005456bfe351c1b679e1ff2dc2849e9 puttzoo.he0 -1399aaabdfc340203ac63aff57abf8a0 puttzoo.he1 -225991e6f8d3d6ac5e519413392c34f3 puttzoo.he2 -4417ea03a6d1b0b7522526f41d1097f6 puttzoo.he3 -d3235443d88751acd3412c1b0c6cec35 puttzoo.he4 -f6cc3beae345e71055efb143a342983c puttzoo.w32 - -(puttzoo russian) (Comment: ALL LANGUAGES) -sev -7.0.0 (Jul 13 1995 18:45:07) -1005456bfe351c1b679e1ff2dc2849e9 PUTTZOO.HE0 -1399aaabdfc340203ac63aff57abf8a0 PUTTZOO.HE1 -d03846ce20bab80288af295bb66870a3 PUTTZOO.HE2 -4417ea03a6d1b0b7522526f41d1097f6 PUTTZOO.HE3 -d3235443d88751acd3412c1b0c6cec35 PUTTZOO.HE4 -91903ca0f67564d78d229afa479b0b02 PUTTZOO.W32 - -(he classics hfs/pajama cd hfs/farm cd hfs) -khalek -1996-11-17 13:28 Puttzoo Demo -34727db5bde5a2f78a1ec84f75d0810c Puttzoo Demo -3486ede0f904789267d4bcc5537a46d4 Puttzoo Demo (0) -e0cde64b0c37a188c97a0bc93225cce9 Puttzoo Demo (1) -a0cd041eb6c1a289a23549ef8740ff17 Puttzoo Demo (2) -86dc7e6f520dbabe79b324ae64456686 Puttzoo Demo (4) - -(puttzoo demo hfs) -Joachim -??? - -(ftp) -sev -7.0.0 (Jul 5 1995 14:45:19) -f3d55aea441e260e9e9c7d2a187097e0 zoodemo.he0 -92722a557c952ff5178eb32964a12061 zoodemo.he1 -a0cd041eb6c1a289a23549ef8740ff17 zoodemo.he2 -47539950e6e6f656db4c1cc963bf9a8f zoodemo.he3 -86dc7e6f520dbabe79b324ae64456686 zoodemo.he4 -d30c3ce43992a116be1a28a4edccf597 zoodemo.w32 - -(spyfox cd/pajama cd/he classics cd/freddi2 cd/baseball cd) -khalek -7.0.0 (Jun 4 1995 15:47:12) -de4efb910210736813c9a1185384bace zoodemo.he0 -8ad56037c37b1c84efc2fa00bf4c59d5 zoodemo.he1 -c9b8363220ea094d2da8cc24635d8d48 zoodemo.he2 -47539950e6e6f656db4c1cc963bf9a8f zoodemo.he3 -86dc7e6f520dbabe79b324ae64456686 zoodemo.he4 -f3324cfe3dec0288fd38197cf88962af zoodemo.w32 - -(farm cd/pajama cd) -khalek, sev -7.0.0 (Jun 22 1995 14:03:05) -de4efb910210736813c9a1185384bace zoodemo.he0 -8ad56037c37b1c84efc2fa00bf4c59d5 zoodemo.he1 -c9b8363220ea094d2da8cc24635d8d48 zoodemo.he2 -47539950e6e6f656db4c1cc963bf9a8f zoodemo.he3 -86dc7e6f520dbabe79b324ae64456686 zoodemo.he4 -37e4b9463ead881fd53bf401aa62d0bf zoodemo.w32 - -(puttzoo demo hfs german) -Joachim -??? - -(putttime cd hfs) -Kirben -??? - -(putttime cd) -Kirben -??? - -(putttime cd hfs) -sev -??? - -(putttime cd) -sev -C:\Dev\Project\SPUTM\Src\*.cpp -833cb49dd6767dc7722d671a4067ab5a PuttTime.(a) -2108d83dcf09f8adb4bc524669c8cf51 PuttTime.he0 -802147789449535e375c7c4f2e666b96 PuttTime.he2 -15d5f719ebc6bcd4fe674587a8fa8596 PuttTime.he4 -a30dd1cd2b58b2c5c6eb1aa970f5a3c2 PuttTime.w32 - -(putttime cd hfs german) -Joachim -??? - -(putttime cd german) -Joachim -??? - -(putttime cd dutch) -adutchguy -??? - -(putttime cd) -iziku -??? - -(putttime cd UK Release) -eriktorbjorn -d:\dev\SPUTM\Src\*.cpp -6ea0c0e68384e588ece7e3e110c62b09 puttputtTTT.(a) -d4aac997e2f4e15341f0bfbf905419bd puttputtTTT.HE0 -79e5273f8626f6b1448788bc0a279049 PuttPuttTTT.HE2 -7a0d96204f8874e4eda4918f63ca7b4e PuttPuttTTT.HE4 -a75403b5e853d7cc65cde2ec358ca5ba puttputtTTT.w32 - -(putttime cd german) -oncer -??? - -(putttime cd russian) -sev -d:\dev\SPUTM\Src\SAVELOAD.cpp -4a7452aabc69cdaf897ccc099ff0bafa puttputtTTT.(a) -defb8cb9ec4b0f91acfb6b61c6129ad9 puttputtTTT.he0 -5247f60e3913296860a74eef4bdfad2a PuttPuttTTT.he2 -a4816cbb60fa01f16295ab46868e7c41 PuttPuttTTT.he4 -947ce44f2336f8467ceadb184dbaa3e9 puttputtTTT.w32 - -(freddi cd hfs) -khalek -1997-12-09 19:59 TimeDemo -f2ece54cc9ca9621217c71cfd1ea594e TimeDemo -4e5867848ee61bc30d157e2c94eee9b4 TimeDemo (0) -5c58da43055710e93cfedd45bb14b03c TimeDemo (1) -42df84a2b73a3d2ee461b89474ee2f57 TimeDemo (2) -72339e5cf3f2902ad78e58c05bfcf7bb TimeDemo (4) -d41d8cd98f00b204e9800998ecf8427e TimeDemo (r) - -(pajama2 cd/puttrace cd/soccer cd) -sev -D:\Scummsys.90\sputm.90\*.c -c0c0934580cde95879bef0b6a5a49c29 timedemo.d32 -4e5867848ee61bc30d157e2c94eee9b4 timedemo.he0 -5c58da43055710e93cfedd45bb14b03c timedemo.he1 -42df84a2b73a3d2ee461b89474ee2f57 timedemo.he2 -72339e5cf3f2902ad78e58c05bfcf7bb timedemo.he4 -4c33312418b27bfe8ad307a6e14604e9 timedemo.w32 - -(ftp/freddi3 cd) -sev -D:\Scummsys.90\sputm.90\*.c -c0c0934580cde95879bef0b6a5a49c29 TIMEDEMO.D32 -4e5867848ee61bc30d157e2c94eee9b4 TIMEDEMO.HE0 -5c58da43055710e93cfedd45bb14b03c TIMEDEMO.HE1 -42df84a2b73a3d2ee461b89474ee2f57 TIMEDEMO.HE2 -72339e5cf3f2902ad78e58c05bfcf7bb TIMEDEMO.HE4 -a43540b44806b8311c7fd04c12cbf46a TIMEDEMO.W32 - -(putttime demo hfs) -sev -??? - -(web) -2002-06-10 20:14 TimeDemo.exe -khalek, sev -c:\Build\SRC\SPUTM\Src\SrcPWin\*.cpp -a64bde414f464ef8522fa0ffeea36d9c TimeDemo.exe -0ab19be9e2a3f6938226638b2a3744fe TimeDemo.HE0 -1691e37409d7f0593c1aa1449f882058 TimeDemo.(a) -63adb23ead513d5fcf657ed555e525ee TimeDemo.he2 -72339e5cf3f2902ad78e58c05bfcf7bb TimeDemo.he4 - -(putttime demo hfs french) -Kirben -??? - -(putttime demo french) -Kirben -??? - -(putttime demo dutch) -adutchguy -??? - -(Kellogg cereals pack) -a6d982141c88f167cf4ec5dc684e2684 PuttMini.(a) -d1286487c342ac81b28f3e1b90a2b7f3 PuttMini.D32 -0a6d7b81b850ed4a77811c60c9b5c555 PuttMini.HE0 -a75403b5e853d7cc65cde2ec358ca5ba PuttMini.exe -ddcb5d9f71edc07982db401776c2d79e PuttMini.he2 -72339e5cf3f2902ad78e58c05bfcf7bb PuttMini.he4 - -(balloon cd hfs) -Kirben -??? - -(balloon cd) -Kirben -??? - -(balloon cd hfs) -Kirben -??? - -(balloon cd) -Kirben -??? - -(balloon cd) -iziku -??? - -(russian balloon) -sev -D:\Scummsrc.80\Sputm\*.c -ad2d6ffbae12d46a2d50ccbbd2a15a83 Balloon.a32 -145bd3373574feb668cc2eea2ec6cf86 BALLOON.HE0 -86282ac950041a1a9723d2c86098939a BALLOON.HE1 -1dabd9eea9fa31c751ac52cfc2048c9c BALLOON.HE2 -4417ea03a6d1b0b7522526f41d1097f6 BALLOON.HE3 -6770978a98ae08e208c188d6c844ab69 BALLOON.HE4 -c2eb18b88529dc5cf79f868c73925f14 BALLOON.HE8 -cbe95e475b634087dc92d23596ad995f BALLOON.HE9 - -(dog cd hfs) -Kirben -??? - -(dog cd) -Kirben -??? - -(dog cd) -sev -C:\Dev\Project\SPUTM\Src\*.cpp -ed126ee70102f94b8c725b3b90576f1e DOG.w32 -d4b8ee426b1afd3e53bc0cf020418cf6 dog.HE0 -43821dcacadd3340396dc9bdcf9fe455 dog.(a) -8cbaaef96c0def188a98794f7e8826d6 dog.he2 -fc47c58d925148b1c1cce784d1f9fec1 dog.he4 -880f0f5e1acc4eb19c889c4d7c7492ef dog.he7 -50438756f002a90fbe7d6a4be184dccb dog.he8 -ccca9a823d117afb1a882fd707586bf0 dog.d32 - -(activity cd) -??? - -(funpack cd 3do) -sev -??? - -(funpack cd) -iziku -??? - -(funpack patch) -khalek -6.1.1 (Nov 20 1993 12:20:32) -091d066c93e751504e4b18c6748b97e0 FUNPACK.EXE - -(funpack cd) -6.1.1 (Feb 15 1993 20:31:55) -khalek -f90f40b9702cfd3e2f6c9af76c743e41 funpack.exe -46b53fd430adcfbed791b48a0d4b079f funpack.he0 -af6283c82fb6a867f91f28039b716036 funpack.he1 -7d6dec34833328722665c1e5a64e735f funpack.tlk - -(funpack cd hebrew) -??? - -(puttsfunshop cd hfs) -sev -??? - -(puttsfunshop cd) -sev -C:\Dev\Project\SPUTM\Src\SrcPWin\*.cpp -b525ccb6634db6c7f2762864f627f17a PuttsFunShop.(a) -4504676bd50cb7b0e28b1b2026dce1b3 PuttsFunShop.(b) -ccca9a823d117afb1a882fd707586bf0 PuttsFunShop.d32 -5262a27afcaee04e5c4900220bd463e7 PuttsFunShop.HE0 -5543c6d936bbec16be896902a473d2a4 PuttsFunShop.he2 -e93a12735e1a95559c755d7193676085 PUTTSFUNSHOP.HE4 -970f3883eefc562bc3949d1b1f88673e PuttsFunShop.map -39c468587c4bdad304be49e8d4041a22 PuttsFunShop.u32 -7ea658395895f10ba7dfc4a7d147f615 PuttsFunShop.w32 -a38b59ccd74792e348b57e6f07ce2ccc PuttsFunShop.x32 - -(spyfox cd hfs) -Kirben -??? - -(spyfox cd) -Kirben -??? - -(spyfox cd hfs) -Joachim -??? - -(spyfox cd) -Joachim -??? - -(spyfox cd hfs german) -Joachim -??? - -(spyfox cd german updated) -Joachim -??? - -(spyfox cd german) -nachbarnebenan -a28135a7ade38cc0208b04507c46efd1 spyfox.he0 -96da98152ccc2f0d9002c834f34d5cd0 spyfox.he1 -75bd69c4fc660695691844a68110a337 spyfox.he2 -f8029f33e2bc3da6fe38f6bda58c1f31 spyfox.he4 - -(spyfox cd dutch) -joostp -??? - -(spyfox cd) (COMMENT: ALL LANG) -khalek -1997-08-10 03:41 spyfox.w32 -D:\Scummsys.90\sputm.90\*.c -6bf70eee5de3d24d2403e0dd3d267e8a spyfox.he0 -e01f959bdd49d5b0c8660fd8a14d4799 spyfox.he1 -0a7f78543f30138effbe593d9d09e720 spyfox.he2 -9fbab8bb60448f30ce7508dbf277ab05 spyfox.he4 -b7aa3c76d463137a8a09c68d9a1045d1 spyfox.w32 - -(spyfox cd russian) -sev -D:\Scummsys.90\sputm.90\*.c -6bf70eee5de3d24d2403e0dd3d267e8a SPYFOX.HE0 -f1b79e1dcb5f57b8d91aac8487a284d7 SPYFOX.HE1 -506a333aad3af2ca8abf5b862ceeb365 SPYFOX.HE2 -9fbab8bb60448f30ce7508dbf277ab05 SPYFOX.HE4 -1355eb775fa71d6df9d506fb906a51db SPYFOX.HLP -b7aa3c76d463137a8a09c68d9a1045d1 SPYFOX.W32 - -(spyfox cd russian updated) -sev -d:\dev\SPUTM\Src\*.cpp -51ac439f04951d0910bc423e2825dab8 SPYFoxDC.(a) -72ac6bc980d5101c2142189d746bd62f SPYFoxDC.he0 -10b638ee633558d528d7be0376175065 SPYFoxDC.he2 -f8029f33e2bc3da6fe38f6bda58c1f31 SPYFoxDC.he4 -b185cdec4ea6bc218afe08325af787a4 spyfoxdc.w32 - -(farm cd hfs) -khalek -1997-12-09 19:59 FoxDemo -09507650b60e891e9c1ed5e0a7aa0152 FoxDemo -53e94115b55dd51d4b8ff0871aa1df1e FoxDemo (0) -81fef80fadf4cd3ad0e04ac619f6eaed FoxDemo (1) -1229ed0135d97aac8b50224a74ee4f34 FoxDemo (2) -6f7993e15da433b58ea63e59e3666cea FoxDemo (4) -d41d8cd98f00b204e9800998ecf8427e FoxDemo (r) - -(ftp/pajama2 demo/freddi3 cd) -sev -53e94115b55dd51d4b8ff0871aa1df1e foxdemo.he0 -81fef80fadf4cd3ad0e04ac619f6eaed foxdemo.he1 -1229ed0135d97aac8b50224a74ee4f34 foxdemo.he2 -6f7993e15da433b58ea63e59e3666cea foxdemo.he4 -b7aa3c76d463137a8a09c68d9a1045d1 foxdemo.w32 - -(spyfox demo hfs) -khalek -??? - -(ftp/putt dog cd/spyfox2 cd/putttime cd/football cd) -1999-05-17 12:21 spydemo.w32 -khalek -D:\Scummsys.90\sputm.90\*.c -fbdd947d21e8f5bac6d6f7a316af1c5a spydemo.he0 -820bceab2a1ab02254c33e6e3fc81628 spydemo.he1 -bc8ed64e6a101f6646b80aa294fa5bdc spydemo.he2 -88867a804055334db8485d7da5d2c51f spydemo.he4 -b7aa3c76d463137a8a09c68d9a1045d1 spydemo.w32 - -(spyfox demo hfs) -khalek -??? - -2002-05-21 13:29 Spydemo.exe -khalek -c:\Build\SRC\SPUTM\Src\SrcPWin\*.cpp -f5207b882c9015a4e4a9599460be6294 Spydemo.(a) -4d34bf8f8ec20f2e653b19aa283da352 Spydemo.exe -9d4ab3e0e1d1ebc6ba8a6a4c470ed184 Spydemo.HE0 -b34d614a23a7dac2be1407bbb51c6b24 Spydemo.he2 -88867a804055334db8485d7da5d2c51f Spydemo.he4 - -(spyfox demo hfs french) -Kirben -??? - -(spyfox demo french) -Kirben -??? - -(spyfox demo dutch) -Kirben -??? - -(spyfox2 cd hfs) -sev -??? - -(spyfox2 cd) -sev -D:\(vss)scummsys.99\SPUTM\Src\*.cpp -5f7ece9a7aefc709f11b6f4216c8764e spyfox2.(a) -f79e60c17cca601e411f1f75e8ee9b5a SPYFOX2.HE0 -c8f3ab5d05e09360dc88c00243db0c2a SPYFOX2.HE2 -d601630d0dcf6b3084ecd42b6c8c5a33 SPYFOX2.HE4 -0b381fa8531972edca34f9b631638148 spyfox2.he9 -26ef6933e4a560f40bbb3dc0525a783c spy2arc.hst -77179b054447bb7080aff0ec343588c6 Spyfox2.w32 - -(spyfox2 cd russian) (COMMENT: ALL LANGUAGES) -sev -d68c11a69a955b66ee1a6b8f5a2ee9e0 spyfox2.(a) -f79e60c17cca601e411f1f75e8ee9b5a SPYFOX2.HE0 -0a718eae78a467f5e664a34b601471e3 SPYFOX2.HE2 -d601630d0dcf6b3084ecd42b6c8c5a33 SPYFOX2.HE4 -0b381fa8531972edca34f9b631638148 spyfox2.he9 -010b18d51f6bf84c69333d03a4cc3c9b SPYFOX2.HLP -77179b054447bb7080aff0ec343588c6 Spyfox2.w32 - -(spyfox2 cd hfs russian updated) -sev -??? - -(spyfox2 cd russian updated) -sev -C:\HESystems\SPUTM\Src\*.cpp -4ecc3a54d961a23b80239e191309bb2a spyfoxsr.(a) -cea91e3dd47f2518ea418e41611aa77f spyfoxsr.he0 -2e73380e32fb1960de5e9871042c6b2e spyfoxsr.he2 -42e883fdae113021eaa30bca3a7bfd2c spyfoxsr.he4 -0b381fa8531972edca34f9b631638148 spyfoxsr.he9 -dda8932e4ddd10c538086df4eaa965d2 SPYFOXSR.w32 - -(spyfox2 cd dutch) -adutchguy -??? - -(spyfox2 demo hfs dutch) -joostp -??? - -(spyfox2 demo dutch) -joostp -??? - -(putsfunshop cd/pajama3 cd/puttcircus cd/spyozon cd/soccerMLS cd) -sev -C:\Dev\Project\SPUTM\Src\*.cpp -2ee6a9c1c8352d4aca638aeab38a194e sf2-demo.(a) -f378c570abf42d4875d26674a35acd83 SF2-DEMO.EXE -7222f260253f325c21fcfa68b5bfab67 sf2-demo.HE0 -8634f4ad2f224842364a86ddc57bb072 sf2-demo.he2 -c23f18777b5ad558826493f69749c4c6 SF2-DEMO.HE4 - -(humongous ftp) -sev -D:\(vss)scummsys.99\SPUTM\Src\*.cpp -2ee6a9c1c8352d4aca638aeab38a194e sf2-demo.(a) -ccca9a823d117afb1a882fd707586bf0 sf2-demo.d32 -77179b054447bb7080aff0ec343588c6 sf2-demo.exe -7222f260253f325c21fcfa68b5bfab67 sf2-demo.he0 -8634f4ad2f224842364a86ddc57bb072 sf2-demo.he2 -c23f18777b5ad558826493f69749c4c6 sf2-demo.he4 - -(spyfox2 demo hfs german) -Joachim -??? - -(spyfox2 demo german) -Joachim -??? - -(PuttPutt CD UK release) -eriktorbjorn -d:\dev\SPUTM\Src\*.cpp -e79b9525fd1e38c140424f48c609e642 SF2DEMO.(A) -6dbe2db93323010de257bcb55d99c3fa sf2demo.exe -19bf6938a94698296bcb0c99c31c91a7 SF2DEMO.HE0 -2577b0029ecfcb9e764e20a9b2a4be6a Sf2Demo.he2 -c23f18777b5ad558826493f69749c4c6 Sf2Demo.he4 - -(spyozon cd hfs) -sev -??? - -(spyozon cd) -sev -C:\Spyfox3Sputm\Src\*.cpp -845312206b245156183ffa0ee79fcede SPYOZON.(A) -600abd3e9f47e63e670188b7e4e86ac7 SPYOZON.HE0 -eec7f697ba008211d12be2108f9e6b56 SPYOZON.HE2 -2f238b51cfad1b8b5c179468a19aa29b SPYOZON.HE3 -6654406759193503d618405b075322e4 SPYOZON.HE4 -a76f985eb0fe5b9600dd8563cd5ac7d8 spyozon.w32 - -(spyozon cd hfs russian updated) -sev -??? - -(spyozon cd russian updated) -sev -C:\Spyfox3Sputm\Src\SrcPWin\*.cpp -eb03a8bd9e7654d5d06635d934f2059b SPYFoxOzu.(a) -194af4195ddb1f3a6017fbd6b27a92aa spyfoxozu.exe -96a3069a3c63caa7329588ce1fef41ee SPYFoxOzu.he0 -efab08f94696fc1a7404ba366c6629d3 SPYFoxOZU.he2 -2f238b51cfad1b8b5c179468a19aa29b SPYFoxOZU.he3 -64531d4b40f2b932c8434b5c2c0f3547 SPYFoxOzu.he4 - -(spyozon cd) -??? - -(spyozon demo hfs) -??? - -(freddicove cd/pajama4 cd) -sev -d:\dev\SPUTM\Src\SrcPWin\*.cpp -0b3dac19ac1107f3fcfa9b38c47b2dfb SF3-DEMO.(A) -ad443efafb53aa0c05749b7d523019cf SF3-DEMO.EXE -ebd0b2c8a387f18887282afe6cad894a SF3-DEMO.HE0 -46dd1febbcad9683be77f23b666cdbbe SF3-DEMO.HE2 -145feca064ba53c0002c56a199bdc719 SF3-DEMO.HE3 -24f341ed410a69e052f90f9b3cb5ecf4 SF3-DEMO.HE4 - -(chase cd hfs) -Kirben -??? - -(chase hfs) -Kirben -??? - -(chase cd hfs) -Kirben -??? - -(chase hfs) -Kirben -??? - -(chase cd russian) -sev -D:\scummsys.95\sputm.95\*.c -dab6994bacb768b75a7085c01a473c94 Chase.a32 -9cdd327c1034c046cb595d251c44da2f CHASE.HE0 -d61f7c0fa645c0cead10e93b5223197c CHASE.HE1 -79fbaace4a08b14772aeea0250e95330 CHASE.HE2 -fe9666d561a54a101c92086d2ef77448 CHASE.HE4 -5201bee3111b5335fac48ecf30b27830 CHASE.HE8 -6d12e727e12365a23270269ca4c7e538 CHASE.HE9 - -(mustard cd hfs) -Kirben -??? - -(mustard cd) -Kirben -??? - diff --git a/doc/he/smacker-md5s.txt b/doc/he/smacker-md5s.txt deleted file mode 100644 index 39233c402bd..00000000000 --- a/doc/he/smacker-md5s.txt +++ /dev/null @@ -1,46 +0,0 @@ -(puttsfunshop cd/pj3 cd/puttcircus cd) -sev -D:\scummsys.98\sputm.98\*.c -e07a222d121f7e8b04266bf4d7809cb4 BluesBirthdayDemo.a32 -dbf4d59d70b826733f379f998354d350 BluesBirthdayDemo.HE0 -6ddf8b026cfb9410b560f91f353dc0f4 BluesBirthdayDemo.(a) -409a570e46466aef89c3cd3a30992543 BluesBirthdayDemo.(b) -60cc055b47b53cb53eaa89e1f974c888 BluesBirthdayDemo.he2 -0794110b085ee91c2aa4a5fc844ff2f4 BluesBirthdayDemo.he4 - -(puttrace cd) -sev -D:\scummsys.98\sputm.98\*.c -e07a222d121f7e8b04266bf4d7809cb4 BluesBirthdayDemo.a32 -2d4acbdcfd8e374c9da8c2e7303a5cd0 BluesBirthdayDemo.HE0 -18ee74255c93da057c92effbd39ebd9a BluesBirthdayDemo.(a) -409a570e46466aef89c3cd3a30992543 BluesBirthdayDemo.(b) -dc5e63ecf2672d4a3a0458fe32902a4e BluesBirthdayDemo.he2 -0794110b085ee91c2aa4a5fc844ff2f4 BluesBirthdayDemo.he4 -ccca9a823d117afb1a882fd707586bf0 BluesBirthdayDemo.d32 - -(freddi5 cd) -sev -C:\Dev\Project\SPUTM\Src\SrcPWin\*.cpp -548fcedaa9cee84443a5a9acfff4cb04 ARTDEMO.(A) -d00ffc8c32d17e575fd985d435d2eb88 ARTDEMO.HE0 -58c91c3f750b227b136e96b410b0e7cc ARTDEMO.HE2 -47f0573a8a629c6e7f8b9236112fe10e ARTDEMO.HE4 -7e98a8e45cbac83e65d98f3c133ae34d ARTDEMO.W32 -2f1a08df8aa13924959905fc5dc34a9b DATA/INTR_AT_IN_01.DAT -f7841f8a37394805fc0699999898bcca DATA/INTR_AT_IN_02.DAT -6a2f8c39d2ce07d422bae9f9bf416839 DATA/INTR_AT_IN_20_B.DAT - -(freddi5 cd) -sev -C:\Dev\Project\SPUTM\Src\SrcPWin\*.cpp -f536221cc5d8da02009278523eda6bd5 READDEMO.(A) -95818b178d473c989ac753574e8892aa READDEMO.HE0 -7c64b87e454e642e36a83c79341007b0 READDEMO.HE2 -4f307cf26e46f765298cc8f92f02db49 READDEMO.HE4 -eac7453b1dca87447974ef54137470f9 READDEMO.W32 -45a973a322b177ee4b36bea81981462d DATA/INT_RT_IN_01.DAT -9e0c144bf1b7f0cc8ba3edae6135e313 DATA/INT_RT_IN_03.DAT -8d150f9d9e12e485da50c4560135b4ef DATA/INT_RT_IN_04.DAT -8cde496829546daaaa28084c49f3f4f7 DATA/INT_RT_IN_05.DAT -c784fa970208b5bd49fff568ca0036ec DATA/INT_RT_IN_06.DAT diff --git a/doc/he/u32.txt b/doc/he/u32.txt deleted file mode 100644 index e4735cac71b..00000000000 --- a/doc/he/u32.txt +++ /dev/null @@ -1,39 +0,0 @@ -500demo, puttrace, racedemo [55808] -39F6C16743D2AA4E0D92C2E6C4993311 500DEMO.U32 -39F6C16743D2AA4E0D92C2E6C4993311 PUTTRACE.U32 -39F6C16743D2AA4E0D92C2E6C4993311 RACEDEMO.U32 - -basketball [282690] -6e8c11a5294981e58032e9f2c8fcdb74 BASKETBALL.U32 - -baseball2001, bb2demo [180224] -23843A93F55BF0B4D7D22E80E0EEFD0A bb2demo.u32 - -chase (he100) [118784] -CC119A63F923076C300DC52575CB47C5 uberedit.u32 - -football, footdemo [155648] -07656b959c7febb6359c8de5fd6b6f76 FOOTBALL.U32 - -football2002 [90156] -2d027f461187ebadad44801c366b892c Football2002.u32 - -moonbase 1.0 [458827] -4c18f01f3020678d2ce9d5312057cb9d Moonbase.u32 - -moondemo [458827] -0C645CDF171CC79DAB28BF8962D6904B moondemo.u32 - -FreddisFunShop, PuttsFunShop, SamsFunShop [40960] -39C468587C4BDAD304BE49E8D4041A22 PuttsFunShop.u32 -39C468587C4BDAD304BE49E8D4041A22 SamsFunShop.u32 -39C468587C4BDAD304BE49E8D4041A22 FreddisFunShop.u32 - -soccer [123904] -ed64133f8cdfca57fb3cd09057def978 SOCCER.U32 - -soccer2004 [90186] -C7B6AB1B4408C4F6EB66ADD731A0DF1A SOCCER2004.U32 - -soccerMLS [135168] -86cb9583ca987446d12a4f36dd8d631b SoccerMLS.u32 diff --git a/doc/he/versions.html b/doc/he/versions.html deleted file mode 100644 index 3ab604c1286..00000000000 --- a/doc/he/versions.html +++ /dev/null @@ -1,754 +0,0 @@ - - -

-Games below are believed to be SCUMM based games... most haven't been proven however. -Every title Humongous Entertainment released before Backyard Hockey (early 2002) should be SCUMM based. -Mac versions not listed in the interest of space, they seem to be the same as pc ones after you rename -certain files anyway. Besides anyone who has a mac version has a PC version as the games are on hybrid -HFS/ISO9660 CDs. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Game -Year -Plat -SPU Ver -Source dir - - -
Putt-Putt Joins the Parade -1992 -dos -6.1.1 (Jan 18 1994 09:32:55) -  - -
Putt-Putt Joins the Parade (patch) -1992 -dos -6.1.1 (Nov 20 1993 12:42:10) -  - -
Putt-Putt Joins the Parade -1992 -win -7.0.0 (Feb 7 1995 13:26:59) -  - -
Putt-Putt Joins the Parade -1992 -3do -6.5.1 (3DO) -  - -
Putt-Putt Joins the Parade (demo) -1993 -dos -6.1.1 (Mar 9 1993 21:19:14) -  - -
Putt-Putt Joins the Parade (demo) -1993 -win -7.0.0 (Feb 7 1995 13:26:59) -  - -
Putt-Putt Goes to the Moon -1993 -dos -6.1.1 (Nov 4 1993 11:12:57) -  - -
Putt-Putt Goes to the Moon -1993 -win -7.0.0 (Feb 7 1995 13:27:20) -  - -
Putt-Putt Goes to the Moon -1993 -3do -  - -
Putt-Putt Goes to the Moon (demo) -1993 -dos -6.1.1 (Sep 29 1993 17:18:45) -  - -
Putt-Putt Goes to the Moon (demo) -1993 -win -7.0.0 (Feb 7 1995 13:27:20) -  - -
Putt-Putt's Fun Pack -1993 -dos -6.1.1 (Feb 15 1993 20:31:55) -  - -
Putt-Putt's Fun Pack (patch) -1993 -dos -6.1.1 (Nov 20 1993 12:20:32) -  - -
Putt-Putt's Fun Pack -1993 -3do -  -  - -
Putt-Putt Saves the Zoo -1995 -win -7.0.0 (Jul 13 1995 18:45:07) -D:\scummsys.98\sputm.98\*.c - -
Putt-Putt Saves the Zoo (demo) -1995 -win -7.0.0 (Jun 4 1995 15:47:12) -  - -
Putt-Putt Saves the Zoo (demo) -1995 -win -7.0.0 (Jun 22 1995 14:03:05) -  - -
Putt-Putt Saves the Zoo (demo) -1995 -win -7.0.0 (Jul 5 1995 14:45:19) -  - -
Putt-Putt Travels Through Time -1997 -win -  -C:\Dev\Project\SPUTM\Src\*.cpp - -
Putt-Putt Travels Through Time (demo) -1997 -win -7.?.? -D:\Scummsys.90\sputm.90\*.c - -
Putt-Putt Travels Through Time (demo) -1997 -win -7.?.? -c:\Build\SRC\SPUTM\Src\*.cpp - -
Putt-Putt Enters the Race -1998 -win -7.?.? -D:\scummsys.98\sputm.98\*.c - -
Putt-Putt Enters the Race (demo) -1998 -win -7.?.? -D:\scummsys.98\sputm.98\*.c - -
Putt-Putt Joins the Circus -  -  -  -C:\Documents and Settings\stevej.BOT\My Documents\HECode\Libs\Wtoolkit\Rawbitm.cpp - -
Putt-Putt One-Stop Fun Shop -2000 -win -7.?.? -C:\Dev\Project\SPUTM\Src\*.cpp - -
Putt-Putt and Pep's Balloon-O-Rama? (arcade)? -  -win -  -D:\Scummsrc.80\Sputm\*.c - -
Putt-Putt and Pep's Dog on a Stick? (arcade) -1999 -win -7.?.? -C:\Dev\Project\SPUTM\Src\*.cpp - -
  - - -
Pajama Sam 1: No Need To Hide When Its Dark -1996 -win -7.?.? -D:\Scummsrc.80\Sputm\*.c - -
Pajama Sam 1: No Need To Hide When Its Dark (demo) -1996 -win -  -D:\Scummsrc.80\Sputm\*.c - -
Pajama Sam 1: No Need to Hide When Its Dark (demo) -  -win -  -c:\Build\SRC\SPUTM\Src\*.cpp - -
Pajama Sam 2: Thunder and Lightning -1998 -win -7.?.? -D:\scummsys.95\sputm.95\*.c - -
Pajama Sam 2: Thunder and Lightning (demo) -1998 -win -  -D:\scummsys.95\sputm.95\*.c - -
Pajama Sam 3: You Are What You Eat From Your -2000 -win -7.?.? -C:\Dev\Project\SPUTM\Src\*.cpp - -
Pajama Sam 3: You Are What You Eat From (demo) -2000 -win -7.?.? -C:\Dev\Project\SPUTM\Src\*.cpp - -
Pajama Sam One-Stop Fun Shop -2000 -win -  -C:\Documents and Settings\stevej\My Documents\HECode\SPUTM\Src\SrcPWin\*.cpp - -
Pajama Sam's Sock Works (arcade) -1999 -win -  -D:\scummsys.80\sputm80\*.c - -
Pajama Sam's Lost & Found (arcade) -1999 -win -  -D:\scummsys.98\sputm.98\*.c - -
Pajama Sam's Lost & Found (demo) -1999 -win -  -D:\(vss)scummsys.99\SPUTM\Src\SrcPWin\*.cpp - -
  - -
Freddi Fish 1: The Case of the Missing Kelp -1995 -? -7.0.0 (Jun 23 1995 09:58:48) -  - -
Freddi Fish 1: The Case of the Missing Kelp -1998 -? -  -D:\Scummsys.90\sputm.90\*.c - -
Freddi Fish 1: The Case of the Missing Kelp (demo) -1995 -win -7.0.0 (Oct 20 1994 10:00:19) -  - -
Freddi Fish 1: The Case of the Missing Kelp (demo) -1995 -win -7.0.0 (Jun 22 1995 14:06:25) -  - -
Freddi Fish 1: The Case of the Missing Kelp (demo) -1995 -? -7.0.0 (Jul 5 1995 14:46:05) -  - -
Freddi Fish 2: The Case of the Haunted Schoolhouse -1998 -win -  -D:\Scummsrc.80\Sputm\*.c - -
Freddi Fish 2: The Case of the Haunted (demo) -1996 -win -7.?.? -D:\Scummsrc.80\Sputm\*.c - -
Freddi Fish 2: The Case of the Haunted (demo) -1998 -win -7.?.? -c:\Build\SRC\SPUTM\Src\*.cpp - -
Freddi Fish 3: The Case of the Stolen Conch -1998 -win -  -D:\Scummsys.90\sputm.90\*.c - -
Freddi Fish 3: The Case of the Stolen (demo) -1997 -win -  -D:\Scummsys.90\sputm.90\*.c - -
Freddi Fish 4: The Case of the Hogfish Rustlers -1999 -win -  -D:\scummsys.98\sputm.98\*.c - -
Freddi Fish 4: The Case of the Hogfish (demo) -1999 -win -  -D:\scummsys.98\sputm.98\*.c - -
Freddi Fish 5: The Case of the Creature of Coral -2001 -win -  -C:\Spyfox3Sputm\Src\*.cpp - -
Freddi Fish One Stop Fun Shop -2000 -win -  -C:\Documents and Settings\stevej\My Documents\HECode\SPUTM\Src\*.cpp
- -
Freddi Fish and Luther's Maze Madness -1999 -win -  -D:\scummsys\sputm80\*.c - -
Freddi Fish and Luther's Water Worries -1999 -win -  -D:\scummsys\sputm80\*.c - -
  - - -
Spy Fox 1: Dry Cereal -1997 -win -  -D:\Scummsys.90\sputm.90\*.c - -
Spy Fox 1: Dry Cereal (demo) -  -  -7.?.? -D:\Scummsys.90\sputm.90\*.c - -
Spy Fox 1: Dry Cereal (demo) -  -  -7.?.? -c:\Build\SRC\SPUTM\Src\*.cpp - -
Spy Fox 2: Some Assembly Required -1999 -win -  -D:\(vss)scummsys.99\SPUTM\Src\*.cpp - -
Spy Fox 2: Some Assembly Required (Demo) -  -win -  -D:\(vss)scummsys.99\SPUTM\Src\*.cpp - -
Spy Fox 3: Operation Ozone -  -win -  -C:\Spyfox3Sputm\Src\SrcPWin\*.cpp - -
Spy Fox In Cheese Chase -1999 -win -  -D:\scummsys.95\sputm.95\*.c - -
Spy Fox in Hold the Mustard -1999 -win -  -D:\(vss)scummsys.99\SPUTM\Src\*.cpp - -
  - - -
Fatty's Birthday Surprise -1993 -dos -6.1.1 (Jun 23 1993 15:31:14) -  - -
Fatty's Birthday Surprise -1993 -win -7.0.0 (Feb 7 1995 13:27:40) -  - -
Fatty's Birthday Surprise -1993 -3do -  -  - -
Fatty's Birthday Surprise (demo) -1993 -dos -6.1.1 (Apr 6 1993 20:48:56) -  - -
Fatty's Birthday Surprise (demo) -1993 -win -7.0.0 (Feb 7 1995 13:27:40) -  - -
Fatty Bear's Fun Pack -1993 -dos -6.1.1 (Nov 11 1993 09:17:08) -  - -
Fatty Bear's Fun Pack -1993 -3do -  -  - -
  - - -
Blue's ABC Time Activities -  -win -  -  - -
Blue's ABC Time Activities (demo) -  -win -7.?.? -D:\scummsys.98\sputm.98\*.c - -
Blue's 123 Time Activities -  -win -  -  - -
Blue's Art Time Activities -  -win -  -  - -
Blue's Birthday Adventure -  -win -  -  - -
Blue's Learning Time -  -win -  -  - -
Blue's Play Time -  -win -  -  - -
Blue's Reading Time Activities -  -win -  -  - -
Blue's Treasure Hunt -  -win -  -  - -
  - - -
Let's Explore the Airport with Buzzy -  -win -7.0.0 (Jul 1 1995 21:55:39) -  - -
Let's Explore the Airport with Buzzy (demo) -1995 -win -7.0.0 (Feb 8 1995 16:33:47) -  - -
Let's Explore the Airport with Buzzy (demo) -1995 -win -7.0.0 (Jun 22 1995 14:06:25) -  - -
Let's Explore the Airport with Buzzy (demo) -1995 -win -7.0.0 (Jul 5 1995 14:46:05) -  - -
Let's Explore the Jungle with Buzzy -  -win -7.0.0 (Jul 1 1995 21:55:39)
7.0.0 (Oct 5 1995 08:20:42) -
  - -
Let's Explore the Farm with Buzzy -1996 -win -7.0.0 (Jun 11 1996 19:12:56) -  - -
Let's Explore the Farm with Buzzy (demo) -1994 -win -7.0.0 (Oct 13 1994 19:15:16) -  - -
Let's Explore the Farm with Buzzy (demo) (farm cd) -1995 -win -7.0.0 (Jun 22 1995 14:05:27) -  - -
  - - -
Big Thinkers First Grade -  -win -  -  - -
Big Thinkers First Grade (demo) -1997 -win -  -D:\Scummsys.90\sputm.90\*.c - -
Big Thinkers Kindergarten -1997 -win -  -D:\Scummsys.90\sputm.90\*.c - -
Big Thinkers Kindergarten (demo) -1997 -win -  -D:\Scummsys.90\sputm.90\*.c - -
  - - -
Humongous demo launcher "catalog" -1995 -win -7.0.0 (Feb 8 1995 16:33:26) -  - -
Humongous demo launcher "catalog2" -1995 -win -7.0.0 (Jun 22 1995 14:01:50) -  - -
  - - -
Backyard Basketball -2001 -win -  -c:\Build\SRC\SPUTM\Src\*.cpp - -
Backyard Soccer -1998 -win -  -D:\scummsys.98\sputm.98\*.c - -
Backyard Soccer 2004 -2003 -win -  -F:\HEdev\scummsys\SPUTM\Src\*.cpp - -
Backyard Football -1999 -win -  -  - -
Backyard Football 2002 -? -win -  -C:\SRC_RELEASE\SPUTM\Src\*.cpp - -
Backyard Baseball -1997 -win -  -D:\Scummsys.90\sputm.90\*.c - -
Backyard Baseball 2001 -2000 -win -  -C:\Dev\Project\SPUTM\Src\*.cpp - -
Backyard Baseball 2001 (demo) -2000 -win -  -C:\Dev\Project\SPUTM\Src\*.cpp -
- From 95af0b82c7e532ca369d8b381fb7660a6306d5d7 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 15 Jul 2011 19:27:03 +0100 Subject: [PATCH 095/731] DOCS: move translated readmes one level up --- doc/{translations => }/README-translation_template.txt | 0 doc/{translations => }/de/Liesmich.txt | 0 doc/{translations => }/fr/Lisezmoi.txt | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename doc/{translations => }/README-translation_template.txt (100%) rename doc/{translations => }/de/Liesmich.txt (100%) rename doc/{translations => }/fr/Lisezmoi.txt (100%) diff --git a/doc/translations/README-translation_template.txt b/doc/README-translation_template.txt similarity index 100% rename from doc/translations/README-translation_template.txt rename to doc/README-translation_template.txt diff --git a/doc/translations/de/Liesmich.txt b/doc/de/Liesmich.txt similarity index 100% rename from doc/translations/de/Liesmich.txt rename to doc/de/Liesmich.txt diff --git a/doc/translations/fr/Lisezmoi.txt b/doc/fr/Lisezmoi.txt similarity index 100% rename from doc/translations/fr/Lisezmoi.txt rename to doc/fr/Lisezmoi.txt From 5a1d0ab7e56c8c166ed1411be4a8fef29b721c56 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 15 Jul 2011 19:36:06 +0100 Subject: [PATCH 096/731] BUILD: Include localized readmes into win32 package --- ports.mk | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ports.mk b/ports.mk index 3481b1274a2..e49b1988547 100644 --- a/ports.mk +++ b/ports.mk @@ -143,6 +143,8 @@ osxsnap: bundle cp $(srcdir)/COPYRIGHT ./ScummVM-snapshot/Copyright\ Holders cp $(srcdir)/NEWS ./ScummVM-snapshot/News cp $(srcdir)/README ./ScummVM-snapshot/ScummVM\ ReadMe + cp $(srcdir)/doc/de/Liesmich.txt ./ScummVM-snapshot/ScummVM/doc/de/Liesmich + cp $(srcdir)/doc/fr/Lisezmoi.txt ./ScummVM-snapshot/ScummVM/doc/fr/Lisezmoi /Developer/Tools/SetFile -t ttro -c ttxt ./ScummVM-snapshot/* /Developer/Tools/CpMac -r $(bundle_name) ./ScummVM-snapshot/ cp $(srcdir)/dists/macosx/DS_Store ./ScummVM-snapshot/.DS_Store @@ -166,6 +168,8 @@ scummvmwinres.o: $(srcdir)/icons/scummvm.ico $(DIST_FILES_THEMES) $(DIST_FILES_E win32dist: $(EXECUTABLE) mkdir -p $(WIN32PATH) mkdir -p $(WIN32PATH)/graphics + mkdir -p $(WIN32PATH)/doc/de + mkdir -p $(WIN32PATH)/doc/fr $(STRIP) $(EXECUTABLE) -o $(WIN32PATH)/$(EXECUTABLE) cp $(DIST_FILES_THEMES) $(WIN32PATH) ifdef DIST_FILES_ENGINEDATA @@ -177,12 +181,16 @@ endif cp $(srcdir)/COPYRIGHT $(WIN32PATH)/COPYRIGHT.txt cp $(srcdir)/NEWS $(WIN32PATH)/NEWS.txt cp $(srcdir)/README $(WIN32PATH)/README.txt + cp $(srcdir)/doc/de/Liesmich.txt $(WIN32PATH)/doc/de/Liesmich.txt + cp $(srcdir)/doc/fr/Lisezmoi.txt $(WIN32PATH)/doc/fr/Lisezmoi.txt cp /usr/local/README-SDL.txt $(WIN32PATH) cp /usr/local/bin/SDL.dll $(WIN32PATH) cp $(srcdir)/dists/win32/graphics/left.bmp $(WIN32PATH)/graphics cp $(srcdir)/dists/win32/graphics/scummvm-install.ico $(WIN32PATH)/graphics cp $(srcdir)/dists/win32/ScummVM.iss $(WIN32PATH) unix2dos $(WIN32PATH)/*.txt + unix2dos $(WIN32PATH)/doc/de/*.txt + unix2dos $(WIN32PATH)/doc/fr/*.txt # Special target to create a win32 NSIS installer win32setup: $(EXECUTABLE) From f81010887fe498e2b8275aa5a82dd84547f0a264 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Fri, 15 Jul 2011 21:10:10 +0200 Subject: [PATCH 097/731] COMPOSER: Stub remaining script function calls. --- engines/composer/composer.cpp | 115 ++++++++++++++++++++++++++++++---- 1 file changed, 104 insertions(+), 11 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 961665bafc9..9e059a4a537 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -104,13 +104,33 @@ enum { enum { kFuncPlayAnim = 35001, kFuncStopAnim = 35002, + // (no 35003) kFuncQueueScript = 35004, kFuncDequeueScript = 35005, - kFuncHideMouse = 35009, + kFuncSetCursor = 35006, + kFuncGetCursor = 35007, + kFuncShowCursor = 35008, + kFuncHideCursor = 35009, + // (no 35010) + kFuncActivateButton = 35011, + kFuncDeactivateButton = 35012, + kFuncNewPage = 35013, kFuncLoadPage = 35014, kFuncUnloadPage = 35015, kFuncSetPalette = 35016, - kFuncQueueScriptOnce = 35019 + kFuncSaveVars = 35017, + kFuncLoadVars = 35018, + kFuncQueueScriptOnce = 35019, + kFuncGetMousePos = 35020, + kFuncChangeBackground = 35021, + kFuncSetBackgroundColor = 35022, + kFuncClearSprites = 35023, + kFuncAddSprite = 35024, + kFuncRemoveSprite = 35025, + kFuncQuit = 35026, + kFuncSaveData = 35027, + kFuncLoadData = 35028, + kFuncGetSpriteSize = 35029 }; // TODO: params: x, y, event param for done @@ -154,7 +174,7 @@ Pipe::Pipe(Common::SeekableReadStream *stream) { } void Pipe::nextFrame() { - if (_offset == _stream->size()) + if (_offset == (uint)_stream->size()) return; _stream->seek(_offset, SEEK_SET); @@ -839,11 +859,11 @@ int16 ComposerEngine::scriptFuncCall(uint16 id, int16 param1, int16 param2, int1 case kFuncPlayAnim: debug(3, "kFuncPlayAnim(%d, %d, %d)", param1, param2, param3); playAnimation(param1, param2, param3, 0); - break; + return 1; // TODO: return 0 on failure case kFuncStopAnim: // TODO warning("ignoring kFuncStopAnim(%d)", param1); - break; + return 0; case kFuncQueueScript: debug(3, "kFuncQueueScript(%d, %d, %d)", param1, param2, param3); _queuedScripts[param1]._baseTime = _system->getMillis(); @@ -856,12 +876,36 @@ int16 ComposerEngine::scriptFuncCall(uint16 id, int16 param1, int16 param2, int1 _queuedScripts[param1]._count = 0; _queuedScripts[param1]._scriptId = 0; return 0; - case kFuncHideMouse: - // TODO - warning("ignoring kFuncHideMouse(%d)", param1); + case kFuncSetCursor: + warning("ignoring kSetCursor(%d, %d, %d)", param1, param2, param3); + // TODO: return old cursor return 0; - break; + case kFuncGetCursor: + warning("ignoring kFuncGetCursor()"); + // TODO: return cursor + return 0; + case kFuncShowCursor: + // TODO + warning("ignoring kFuncShowCursor(%d)", param1); + return 0; + case kFuncHideCursor: + // TODO + warning("ignoring kFuncHideCursor(%d)", param1); + return 0; + case kFuncActivateButton: + // TODO + warning("ignoring kFuncActivateButton(%d)", param1); + return 1; + case kFuncDeactivateButton: + // TODO + warning("ignoring kFuncDeactivateButton(%d)", param1); + return 1; + case kFuncNewPage: + // TODO + warning("ignoring kFuncNewPage(%d, %d)", param1, param2); + return 1; case kFuncLoadPage: + // TODO debug(3, "kFuncLoadPage(%d)", param1); loadLibrary(param1); return 1; @@ -870,11 +914,19 @@ int16 ComposerEngine::scriptFuncCall(uint16 id, int16 param1, int16 param2, int1 warning("ignoring kFuncUnloadPage(%d)", param1); return 1; case kFuncSetPalette: - // TODO: incomplete? + // TODO: return 0 if not disabling (0) and doesn't exist debug(4, "kFuncSetPalette(%d, %d)", param1, param2); loadCTBL(param1, param2); + // TODO: incomplete? + return 1; + case kFuncSaveVars: + // TODO + warning("ignoring kFuncSaveVars(%d)", param1); + return 1; + case kFuncLoadVars: + // TODO + warning("ignoring kFuncLoadVars(%d, %d, %d)", param1, param2, param3); return 1; - break; case kFuncQueueScriptOnce: debug(3, "kFuncQueueScriptOnce(%d, %d, %d)", param1, param2, param3); _queuedScripts[param1]._baseTime = _system->getMillis(); @@ -882,6 +934,47 @@ int16 ComposerEngine::scriptFuncCall(uint16 id, int16 param1, int16 param2, int1 _queuedScripts[param1]._count = 1; _queuedScripts[param1]._scriptId = param3; return 0; + case kFuncGetMousePos: + // TODO + warning("ignoring kFuncGetMousePos(%d, %d)", param1, param2); + return 0; + case kFuncChangeBackground: + // TODO + warning("ignoring kFuncChangeBackground(%d)", param1); + // TODO: return 1 if background existed, else 0 + return 0; + case kFuncSetBackgroundColor: + // TODO + warning("ignoring kFuncSetBackgroundColor(%d)", param1); + return 0; + case kFuncClearSprites: + // TODO + warning("ignoring kFuncClearSprites()"); + return 0; + case kFuncAddSprite: + // TODO + warning("ignoring kFuncAddSprite(%d, %d, %d)", param1, param2, param3); + return 0; + case kFuncRemoveSprite: + // TODO + warning("ignoring kFuncRemoveSprite(%d, %d)", param1, param2); + return 0; + case kFuncQuit: + // TODO + warning("ignoring kFuncQuit()"); + return 0; + case kFuncSaveData: + // TODO + warning("ignoring kFuncSaveData(%d, %d, %d)", param1, param2, param3); + return 1; + case kFuncLoadData: + // TODO + warning("ignoring kFuncLoadData(%d, %d, %d)", param1, param2, param3); + return 1; + case kFuncGetSpriteSize: + // TODO + warning("ignoring kFuncGetSpriteSize(%d, %d, %d)", param1, param2, param3); + return 0; default: error("unknown scriptFuncCall %d(%d, %d, %d)", (uint32)id, param1, param2, param3); } From f396e77cacdea88214baada40ce464b2baabdfa1 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Fri, 15 Jul 2011 23:43:13 +0200 Subject: [PATCH 098/731] COMPOSER: Fix removeSprite behaviour. --- engines/composer/composer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 9e059a4a537..9b907765d09 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -421,7 +421,7 @@ void ComposerEngine::processAnimFrame() { case 4: if (entry.word10 && (!data || data != entry.word10)) { debug(4, "anim: erase sprite %d", entry.word10); - removeSprite(data, anim->_id); + removeSprite(entry.word10, anim->_id); } if (data) { uint16 x = anim->_stream->readUint16LE(); @@ -471,7 +471,7 @@ void ComposerEngine::removeSprite(uint16 id, uint16 animId) { for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { if (i->id != id) continue; - if (animId && i->animId != animId) + if (i->animId && animId && (i->animId != animId)) continue; i = _sprites.reverse_erase(i); return; From 97d7767e895955673d4ad756f741e46c40e76b51 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Fri, 15 Jul 2011 23:44:00 +0200 Subject: [PATCH 099/731] COMPOSER: Decompress sprites at load time. --- engines/composer/composer.cpp | 54 +++++++++++++++++++---------------- engines/composer/composer.h | 4 ++- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 9b907765d09..cde2e0bb0a7 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -457,9 +457,13 @@ void ComposerEngine::addSprite(uint16 id, uint16 animId, uint16 zorder, const Co sprite.animId = animId; sprite.zorder = zorder; sprite.pos = pos; + if (!initSprite(sprite)) { + warning("ignoring addSprite on invalid sprite %d", id); + return; + } for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { - if (sprite.zorder < i->zorder) + if (sprite.zorder > i->zorder) continue; _sprites.insert(i, sprite); return; @@ -473,6 +477,7 @@ void ComposerEngine::removeSprite(uint16 id, uint16 animId) { continue; if (i->animId && animId && (i->animId != animId)) continue; + i->surface.free(); i = _sprites.reverse_erase(i); return; } @@ -547,10 +552,8 @@ Common::Error ComposerEngine::run() { if (lastDrawTime + frameTime <= thisTime) { lastDrawTime += frameTime; - if (hasResource(ID_BMAP, 1000)) - drawBMAP(1000, 0, 0); for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { - drawBMAP(i->id, i->pos.x, i->pos.y); + drawSprite(*i); } _system->copyRectToScreen((byte *)_surface.pixels, _surface.pitch, 0, 0, _surface.w, _surface.h); @@ -662,7 +665,8 @@ void ComposerEngine::loadLibrary(uint id) { delete stream;*/ // TODO: set background properly - // + addSprite(1000, 0, 0, Common::Point()); + // TODO: better CTBL logic loadCTBL(1000, 100); @@ -1105,48 +1109,48 @@ void ComposerEngine::decompressBitmap(uint16 type, Common::SeekableReadStream *s } } -void ComposerEngine::drawBMAP(uint id, uint x, uint y) { +bool ComposerEngine::initSprite(Sprite &sprite) { Common::SeekableReadStream *stream = NULL; - if (hasResource(ID_BMAP, id)) - stream = getResource(ID_BMAP, id); + if (hasResource(ID_BMAP, sprite.id)) + stream = getResource(ID_BMAP, sprite.id); else for (Common::List::iterator k = _pipes.begin(); k != _pipes.end(); k++) { Pipe *pipe = *k; - if (!pipe->hasResource(ID_BMAP, id)) + if (!pipe->hasResource(ID_BMAP, sprite.id)) continue; - stream = pipe->getResource(ID_BMAP, id, true); + stream = pipe->getResource(ID_BMAP, sprite.id, true); break; } - if (!stream) { - // FIXME - warning("couldn't find BMAP %d", id); - return; - } + if (!stream) + return false; uint16 type = stream->readUint16LE(); uint16 height = stream->readUint16LE(); uint16 width = stream->readUint16LE(); uint32 size = stream->readUint32LE(); - debug(1, "BMAP: type %d, width %d, height %d, size %d", type, width, height, size); + debug(1, "loading BMAP: type %d, width %d, height %d, size %d", type, width, height, size); - byte *buffer = new byte[width * height]; - decompressBitmap(type, stream, buffer, size, width, height); + sprite.surface.create(width, height, Graphics::PixelFormat::createFormatCLUT8()); + decompressBitmap(type, stream, (byte *)sprite.surface.pixels, size, width, height); + delete stream; - debug(1, "draw at %d,%d", x, y); + return true; +} + +void ComposerEngine::drawSprite(const Sprite &sprite) { + int x = sprite.pos.x; + int y = sprite.pos.y; // incoming data is BMP-style (bottom-up), so flip it byte *pixels = (byte *)_surface.pixels; - for (uint j = 0; j < height; j++) { - byte *in = buffer + (height - j - 1) * width; + for (uint j = 0; j < sprite.surface.h; j++) { + byte *in = (byte *)sprite.surface.pixels + (sprite.surface.h - j - 1) * sprite.surface.w; byte *out = pixels + ((j + y) * _surface.w) + x; - for (uint i = 0; i < width; i++) + for (uint i = 0; i < sprite.surface.w; i++) if (in[i]) out[i] = in[i]; } - - delete[] buffer; - delete stream; } } // End of namespace Composer diff --git a/engines/composer/composer.h b/engines/composer/composer.h index b18b3575f2a..4955a0ce3a9 100644 --- a/engines/composer/composer.h +++ b/engines/composer/composer.h @@ -64,6 +64,7 @@ struct Sprite { uint16 animId; uint16 zorder; Common::Point pos; + Graphics::Surface surface; }; struct AnimationEntry { @@ -199,7 +200,8 @@ private: void loadCTBL(uint id, uint fadePercent); void decompressBitmap(uint16 type, Common::SeekableReadStream *stream, byte *buffer, uint32 size, uint width, uint height); - void drawBMAP(uint id, uint x, uint y); + bool initSprite(Sprite &sprite); + void drawSprite(const Sprite &sprite); }; } // End of namespace Composer From acfd13633d97a121fe5581544feba692aa81b5a8 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 00:56:18 +0200 Subject: [PATCH 100/731] COMPOSER: Always handle multiple resource entries in pipes. --- engines/composer/composer.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index cde2e0bb0a7..936f1ff5950 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -226,11 +226,16 @@ Common::SeekableReadStream *Pipe::getResource(uint32 tag, uint16 id, bool buffer const PipeResource &res = resMap[id]; - if (!buffering) { - assert(res.entries.size() == 1); - return new Common::SeekableSubReadStream(_stream, res.entries[0].offset, res.entries[0].offset + res.entries[0].size); + if (res.entries.size() == 1) { + Common::SeekableReadStream *stream = new Common::SeekableSubReadStream(_stream, + res.entries[0].offset, res.entries[0].offset + res.entries[0].size); + if (buffering) + _types[tag].erase(id); + return stream; } + // If there are multiple entries in the pipe, we have to concaternate them together. + uint32 size = 0; for (uint i = 0; i < res.entries.size(); i++) size += res.entries[i].size; @@ -242,7 +247,8 @@ Common::SeekableReadStream *Pipe::getResource(uint32 tag, uint16 id, bool buffer _stream->read(buffer + offset, res.entries[i].size); offset += res.entries[i].size; } - _types[tag].erase(id); + if (buffering) + _types[tag].erase(id); return new Common::MemoryReadStream(buffer, size, DisposeAfterUse::YES); } From 28d4aaf095e4f3979d1f6dc75b53d73f412e83a0 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 00:57:13 +0200 Subject: [PATCH 101/731] COMPOSER: Fix z-ordering issues. --- engines/composer/composer.cpp | 3 ++- engines/composer/composer.h | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 936f1ff5950..acd1d33e65f 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -457,7 +457,7 @@ void ComposerEngine::processAnimFrame() { } } -void ComposerEngine::addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos) { +void ComposerEngine::addSprite(uint16 id, uint16 animId, int16 zorder, const Common::Point &pos) { Sprite sprite; sprite.id = id; sprite.animId = animId; @@ -471,6 +471,7 @@ void ComposerEngine::addSprite(uint16 id, uint16 animId, uint16 zorder, const Co for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { if (sprite.zorder > i->zorder) continue; + i++; _sprites.insert(i, sprite); return; } diff --git a/engines/composer/composer.h b/engines/composer/composer.h index 4955a0ce3a9..a90eb614597 100644 --- a/engines/composer/composer.h +++ b/engines/composer/composer.h @@ -62,7 +62,7 @@ class ComposerEngine; struct Sprite { uint16 id; uint16 animId; - uint16 zorder; + int16 zorder; Common::Point pos; Graphics::Surface surface; }; @@ -195,7 +195,7 @@ private: void playWaveForAnim(uint16 id, bool bufferingOnly); void processAnimFrame(); - void addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos); + void addSprite(uint16 id, uint16 animId, int16 zorder, const Common::Point &pos); void removeSprite(uint16 id, uint16 animId); void loadCTBL(uint id, uint fadePercent); From 70ae2c74e04ac84503cfe9c1a555495700d55e68 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 00:57:50 +0200 Subject: [PATCH 102/731] COMPOSER: Handle loading/unloading pages properly. --- engines/composer/composer.cpp | 51 ++++++++++++++++++++++++++++++----- engines/composer/composer.h | 10 +++++++ 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index acd1d33e65f..6228292676e 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -542,6 +542,14 @@ Common::Error ComposerEngine::run() { uint frameTime = 1000 / fps; uint32 lastDrawTime = 0; while (!shouldQuit()) { + for (uint i = 0; i < _pendingPageChanges.size(); i++) { + if (_pendingPageChanges[i]._remove) + unloadLibrary(_pendingPageChanges[i]._pageId); + else + loadLibrary(_pendingPageChanges[i]._pageId); + } + _pendingPageChanges.clear(); + uint32 thisTime = _system->getMillis(); for (uint i = 0; i < _queuedScripts.size(); i++) { QueuedScript &script = _queuedScripts[i]; @@ -683,6 +691,37 @@ void ComposerEngine::loadLibrary(uint id) { runEvent(3, id, 0, 0); } +void ComposerEngine::unloadLibrary(uint id) { + for (Common::List::iterator i = _libraries.begin(); i != _libraries.end(); i++) { + if (i->_id != id) + continue; + + for (Common::List::iterator j = _anims.begin(); j != _anims.end(); j++) { + delete *j; + } + _anims.clear(); + for (Common::List::iterator j = _pipes.begin(); j != _pipes.end(); j++) { + delete *j; + } + _pipes.clear(); + + for (Common::List::iterator j = _sprites.begin(); j != _sprites.end(); j++) { + j->surface.free(); + } + _sprites.clear(); + + for (uint j = 0; j < _queuedScripts.size(); j++) { + _queuedScripts[j]._count = 0; + _queuedScripts[j]._scriptId = 0; + } + + _libraries.erase(i); + return; + } + + error("tried to unload library %d, which isn't loaded", id); +} + bool ComposerEngine::hasResource(uint32 tag, uint16 id) { for (Common::List::iterator i = _libraries.begin(); i != _libraries.end(); i++) if (i->_archive->hasResource(tag, id)) @@ -912,17 +951,17 @@ int16 ComposerEngine::scriptFuncCall(uint16 id, int16 param1, int16 param2, int1 warning("ignoring kFuncDeactivateButton(%d)", param1); return 1; case kFuncNewPage: - // TODO - warning("ignoring kFuncNewPage(%d, %d)", param1, param2); + debug(3, "kFuncNewPage(%d, %d)", param1, param2); + _pendingPageChanges.push_back(PendingPageChange(param1, true)); + _pendingPageChanges.push_back(PendingPageChange(param2, false)); return 1; case kFuncLoadPage: - // TODO debug(3, "kFuncLoadPage(%d)", param1); - loadLibrary(param1); + _pendingPageChanges.push_back(PendingPageChange(param1, false)); return 1; case kFuncUnloadPage: - // TODO - warning("ignoring kFuncUnloadPage(%d)", param1); + debug(3, "ignoring kFuncUnloadPage(%d)", param1); + _pendingPageChanges.push_back(PendingPageChange(param1, true)); return 1; case kFuncSetPalette: // TODO: return 0 if not disabling (0) and doesn't exist diff --git a/engines/composer/composer.h b/engines/composer/composer.h index a90eb614597..eba51759a29 100644 --- a/engines/composer/composer.h +++ b/engines/composer/composer.h @@ -139,6 +139,14 @@ struct QueuedScript { uint16 _scriptId; }; +struct PendingPageChange { + PendingPageChange() { } + PendingPageChange(uint16 id, bool remove) : _pageId(id), _remove(remove) { } + + uint16 _pageId; + bool _remove; +}; + class ComposerEngine : public Engine { protected: Common::Error run(); @@ -168,6 +176,7 @@ private: uint _directoriesToStrip; Common::ConfigFile _bookIni; Common::List _libraries; + Common::Array _pendingPageChanges; Common::Array _stack; Common::Array _vars; @@ -179,6 +188,7 @@ private: Common::String getStringFromConfig(const Common::String §ion, const Common::String &key); Common::String getFilename(const Common::String §ion, uint id); void loadLibrary(uint id); + void unloadLibrary(uint id); bool hasResource(uint32 tag, uint16 id); Common::SeekableReadStream *getResource(uint32 tag, uint16 id); From 9e127a10327ced6e7172efbb237672b07df4a0a0 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 00:59:00 +0200 Subject: [PATCH 103/731] COMPOSER: Don't die on missing/bad anims. --- engines/composer/composer.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 6228292676e..cafb5e7bd92 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -296,6 +296,10 @@ void ComposerEngine::playAnimation(uint16 animId, int16 x, int16 y, int16 eventP // If we didn't find it, try the libraries. if (!stream) { + if (!hasResource(ID_ANIM, animId)) { + warning("ignoring attempt to play invalid anim %d", animId); + return; + } stream = getResource(ID_ANIM, animId); uint32 type = 0; @@ -350,6 +354,12 @@ void ComposerEngine::processAnimFrame() { for (Common::List::iterator i = _anims.begin(); i != _anims.end(); i++) { Animation *anim = *i; + anim->seekToCurrPos(); + if (anim->_stream->pos() == anim->_stream->size()) { + warning("anim with id %d ended too soon", anim->_id); + anim->_state = 0; + } + if (anim->_state <= 1) { if (anim->_state == 1) { runEvent(2, anim->_id, anim->_eventParam, 0); @@ -363,8 +373,6 @@ void ComposerEngine::processAnimFrame() { continue; } - anim->seekToCurrPos(); - for (uint j = 0; j < anim->_entries.size(); j++) { AnimationEntry &entry = anim->_entries[j]; if (entry.op != 1) @@ -679,8 +687,9 @@ void ComposerEngine::loadLibrary(uint id) { Common::hexdump(buf, stream->size()); delete stream;*/ - // TODO: set background properly - addSprite(1000, 0, 0, Common::Point()); + // add background sprite, if it exists + if (hasResource(ID_BMAP, 1000)) + addSprite(1000, 0, -1, Common::Point()); // TODO: better CTBL logic loadCTBL(1000, 100); From ec77c2f6fdbb1344d428244d5cacbac7dd48d83a Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 01:04:45 +0200 Subject: [PATCH 104/731] COMPOSER: Don't complain about on-time animation ending. --- engines/composer/composer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index cafb5e7bd92..34e383293c0 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -355,7 +355,7 @@ void ComposerEngine::processAnimFrame() { Animation *anim = *i; anim->seekToCurrPos(); - if (anim->_stream->pos() == anim->_stream->size()) { + if ((anim->_state > 1) && (anim->_stream->pos() == anim->_stream->size())) { warning("anim with id %d ended too soon", anim->_id); anim->_state = 0; } From d1fbf595206c1010755667b404e823f13caa4c2b Mon Sep 17 00:00:00 2001 From: eriktorbjorn Date: Sat, 16 Jul 2011 11:04:49 +0200 Subject: [PATCH 105/731] DREAMWEB: Rewrote lockmon() to fix pausing/unpausing The original function would busy-wait for the user to press space again. We can't do that, of course, since we don't have interrupt- driven keyboard input. --- devtools/tasmrecover/tasm-recover | 3 ++- engines/dreamweb/dreamgen.cpp | 14 -------------- engines/dreamweb/dreamgen.h | 6 +++--- engines/dreamweb/stubs.cpp | 26 ++++++++++++++++++++++++++ 4 files changed, 31 insertions(+), 18 deletions(-) diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index 5f7a528a5b3..54fc091f068 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -24,6 +24,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'readabyte', 'readoneblock', 'frameoutv', - 'modifychar' + 'modifychar', + 'lockmon' ]) generator.generate('dreamweb') #start routine diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index a183c7c7988..a25fae08742 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -11039,19 +11039,6 @@ void DreamGenContext::scrollmonitor() { ax = pop(); } -void DreamGenContext::lockmon() { - STACK_CHECK; - _cmp(data.byte(kLasthardkey), 57); - if (!flags.z()) - return /* (notlock) */; - locklighton(); -lockloop: - _cmp(data.byte(kLasthardkey), 57); - if (flags.z()) - goto lockloop; - locklightoff(); -} - void DreamGenContext::monitorlogo() { STACK_CHECK; al = data.byte(kLogonum); @@ -22407,7 +22394,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) { case 0xc550: searchforstring(); break; case 0xc554: parser(); break; case 0xc558: scrollmonitor(); break; - case 0xc55c: lockmon(); break; case 0xc560: monitorlogo(); break; case 0xc564: printlogo(); break; case 0xc568: showcurrentfile(); break; diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index 71c466da240..08053b6f546 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -602,7 +602,6 @@ public: void clearbuffers(); void neterror(); void storeit(); - void lockeddoorway(); void isitworn(); void putundertimed(); void dumpmap(); @@ -958,9 +957,8 @@ public: void showmonk(); void diarykeyn(); void set16colpalette(); - void convicons(); - void interviewer(); void sparky(); + void interviewer(); void purgeanitem(); void madman(); void createpanel(); @@ -1255,12 +1253,14 @@ public: void usechurchgate(); void monkandryan(); void allocatebuffers(); + void convicons(); void swapwithinv(); void usecontrol(); void buttonseven(); void redrawmainscrn(); void finishedwalking(); void findallryan(); + void lockeddoorway(); void channel0tran(); void buttonpress(); void parseblaster(); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 5614aa391a7..bed259db38c 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -554,4 +554,30 @@ void DreamGenContext::modifychar() { al = engine->modifyChar(al); } +void DreamGenContext::lockmon() { + // Pressing space pauses text output in the monitor. We use the "hard" + // key because calling readkey() drains characters from the input + // buffer, we we want the user to be able to type ahead while the text + // is being printed. + if (data.byte(kLasthardkey) == 57) { + // Clear the keyboard buffer. Otherwise the space that caused + // the pause will be read immediately in the pause loop. + do { + readkey(); + } while (data.byte(kCurrentkey) != 0); + + locklighton(); + while (!engine->shouldQuit()) { + engine->waitForVSync(); + readkey(); + if (data.byte(kCurrentkey) == ' ') + break; + } + // Forget the last "hard" key, otherwise the space that caused + // the unpausing will immediately re-pause the game. + data.byte(kLasthardkey) = 0; + locklightoff(); + } +} + } /*namespace dreamgen */ From c70963671616b5cb92eb91125b97ce6929d58a8d Mon Sep 17 00:00:00 2001 From: eriktorbjorn Date: Sat, 16 Jul 2011 11:07:22 +0200 Subject: [PATCH 106/731] DREAMWEB: Clarify a comment in my previous commit slightly. --- engines/dreamweb/stubs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index bed259db38c..2d3c8195616 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -561,7 +561,7 @@ void DreamGenContext::lockmon() { // is being printed. if (data.byte(kLasthardkey) == 57) { // Clear the keyboard buffer. Otherwise the space that caused - // the pause will be read immediately in the pause loop. + // the pause will be read immediately unpause the game. do { readkey(); } while (data.byte(kCurrentkey) != 0); From 54f26b6c452b4b09e0af76d67498899ff8bc28f6 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 16:03:28 +0200 Subject: [PATCH 107/731] COMPOSER: Implement the rest of the script opcodes. --- engines/composer/composer.cpp | 259 ++++++++++++++++++++++++++++++++-- 1 file changed, 250 insertions(+), 9 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 34e383293c0..ec4d45a71be 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -833,68 +833,298 @@ void ComposerEngine::runScript(uint16 id) { uint arg3 = (script[pos] & 0xC000) >> 14; // 2 bits switch (op) { case kOpPlusPlus: + if (numParams != 1) + error("kOpPlusPlus had wrong number of params (%d)", numParams); val1 = getArg(script[pos + 1], arg1); debug(9, "[%d/%d]++ (now %d)", script[pos + 1], arg1, val1 + 1); setArg(script[pos + 1], arg1, val1 + 1); break; + case kOpMinusMinus: + if (numParams != 1) + error("kOpMinusMinus had wrong number of params (%d)", numParams); + val1 = getArg(script[pos + 1], arg1); + debug(9, "[%d/%d]-- (now %d)", script[pos + 1], arg1, val1 - 1); + setArg(script[pos + 1], arg1, val1 - 1); + break; + case kOpAssign: + if (numParams != 2) + error("kOpAssign had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + debug(9, "[%d/%d] = [%d/%d] (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2); + setArg(script[pos + 1], arg1, val2); + break; case kOpAdd: + if (numParams != 3) + error("kOpAdd had wrong number of params (%d)", numParams); val2 = getArg(script[pos + 2], arg2); val3 = getArg(script[pos + 3], arg3); debug(9, "[%d/%d] = [%d/%d]=%d + [%d/%d]=%d (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2, script[pos+3], arg3, val3, val2 + val3); setArg(script[pos + 1], arg1, val2 + val3); break; - case kOpAssign: + case kOpSubtract: + if (numParams != 3) + error("kOpSubtract had wrong number of params (%d)", numParams); val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + debug(9, "[%d/%d] = [%d/%d]=%d - [%d/%d]=%d (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2, script[pos+3], arg3, val3, val2 - val3); + setArg(script[pos + 1], arg1, val2 - val3); + break; + case kOpMultiply: + if (numParams != 3) + error("kOpMultiply had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + debug(9, "[%d/%d] = [%d/%d]=%d * [%d/%d]=%d (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2, script[pos+3], arg3, val3, val2 * val3); + setArg(script[pos + 1], arg1, val2 * val3); + break; + case kOpDivide: + if (numParams != 3) + error("kOpDivide had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + if (val3 == 0) + error("script tried to divide by zero"); + debug(9, "[%d/%d] = [%d/%d]=%d / [%d/%d]=%d (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2, script[pos+3], arg3, val3, val2 / val3); + setArg(script[pos + 1], arg1, val2 / val3); + break; + case kOpModulo: + if (numParams != 3) + error("kOpModulo had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + if (val3 == 0) + error("script tried to divide by zero (modulo)"); + debug(9, "[%d/%d] = [%d/%d]=%d %% [%d/%d]=%d (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2, script[pos+3], arg3, val3, val2 % val3); + setArg(script[pos + 1], arg1, val2 % val3); + break; + case kOpMaybeAlsoAssign: if (numParams != 2) - error("kOpAssign had wrong number of params (%d)", numParams); - debug(9, "[%d/%d] = [%d/%d] (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2); + error("kOpMaybeAlsoAssign had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + debug(9, "[%d/%d] =(?) [%d/%d] (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2); setArg(script[pos + 1], arg1, val2); break; - case kOpCallFunc: + case kOpBooleanAssign: + if (numParams != 2) + error("kOpBooleanAssign had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + debug(9, "[%d/%d] = [%d/%d] (%d) ? 1 : 0", script[pos + 1], arg1, script[pos + 2], arg2, val2); + setArg(script[pos + 1], arg1, val2 ? 1 : 0); + break; + case kOpNegate: + if (numParams != 2) + error("kOpNegate had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + debug(9, "[%d/%d] = -[%d/%d] (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2); + setArg(script[pos + 1], arg1, -val2); + break; + case kOpAnd: + if (numParams != 3) + error("kOpAnd had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + debug(9, "[%d/%d] = [%d/%d]=%d & [%d/%d]=%d (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2, script[pos+3], arg3, val3, val2 & val3); + setArg(script[pos + 1], arg1, val2 & val3); + break; + case kOpOr: + if (numParams != 3) + error("kOpOr had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + debug(9, "[%d/%d] = [%d/%d]=%d | [%d/%d]=%d (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2, script[pos+3], arg3, val3, val2 | val3); + setArg(script[pos + 1], arg1, val2 | val3); + break; + case kOpXor: + if (numParams != 3) + error("kOpXor had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + debug(9, "[%d/%d] = [%d/%d]=%d ^ [%d/%d]=%d (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2, script[pos+3], arg3, val3, val2 ^ val3); + setArg(script[pos + 1], arg1, val2 ^ val3); + break; + case kOpNotPositive: + if (numParams != 2) + error("kOpNotPositive had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + debug(9, "[%d/%d] = [%d/%d] (%d) < 1", script[pos + 1], arg1, script[pos + 2], arg2, val2); + setArg(script[pos + 1], arg1, (val2 < 1) ? 1 : 0); + break; + case kOpSqrt: + if (numParams != 2) + error("kOpSqrt had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + debug(9, "[%d/%d] = sqrt([%d/%d] (%d))", script[pos + 1], arg1, script[pos + 2], arg2, val2); + setArg(script[pos + 1], arg1, (int16)sqrt((double)val2)); + break; + case kOpRandom: + if (numParams != 3) + error("kOpRandom had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + val1 = _rnd->getRandomNumberRng(val2, val3); + debug(9, "[%d/%d] = rnd([%d/%d]=%d, [%d/%d]=%d) (%d)", script[pos + 1], arg1, script[pos + 2], arg2, val2, script[pos+3], arg3, val3, val1); + setArg(script[pos + 1], arg1, val1); + break; + case kOpExecuteScript: + if (numParams != 1) + error("kOpExecuteScript had wrong number of params (%d)", numParams); val1 = getArg(script[pos + 1], arg1); + debug(8, "run script [%d/%d]=%d", script[pos + 1], arg1, val1); + runScript(val1); + debug(8, "done run script"); + break; + case kOpCallFunc: if (numParams != 1) error("kOpCallFunc had wrong number of params (%d)", numParams); + val1 = getArg(script[pos + 1], arg1); debug(8, "%d(%d, %d, %d)", (uint16)val1, _vars[1], _vars[2], _vars[3]); _vars[0] = scriptFuncCall(val1, _vars[1], _vars[2], _vars[3]); break; - /*case kOpBoolGreaterThan: - lastResult = (getArg(script[pos + 1], arg1) > getArg(script[pos + 2], arg2)); - break;*/ - case kOpBoolEqual: + case kOpBoolLessThanEq: + if (numParams != 2) + error("kOpBoolLessThanEq had wrong number of params (%d)", numParams); val1 = getArg(script[pos + 1], arg1); val2 = getArg(script[pos + 2], arg2); - debug(9, "[%d/%d] == [%d/%d]? (%d > %d)", script[pos + 1], arg1, script[pos + 2], arg2, val1, val2); + debug(9, "[%d/%d] <= [%d/%d]? (%d <= %d)", script[pos + 1], arg1, script[pos + 2], arg2, val1, val2); + lastResult = (val1 <= val2); + break; + case kOpBoolLessThan: + if (numParams != 2) + error("kOpBoolLessThan had wrong number of params (%d)", numParams); + val1 = getArg(script[pos + 1], arg1); + val2 = getArg(script[pos + 2], arg2); + debug(9, "[%d/%d] < [%d/%d]? (%d < %d)", script[pos + 1], arg1, script[pos + 2], arg2, val1, val2); + lastResult = (val1 < val2); + break; + case kOpBoolGreaterThanEq: + if (numParams != 2) + error("kOpBoolGreaterThanEq had wrong number of params (%d)", numParams); + val1 = getArg(script[pos + 1], arg1); + val2 = getArg(script[pos + 2], arg2); + debug(9, "[%d/%d] >= [%d/%d]? (%d >= %d)", script[pos + 1], arg1, script[pos + 2], arg2, val1, val2); + lastResult = (val1 >= val2); + break; + case kOpBoolGreaterThan: + if (numParams != 2) + error("kOpBoolGreaterThan had wrong number of params (%d)", numParams); + val1 = getArg(script[pos + 1], arg1); + val2 = getArg(script[pos + 2], arg2); + debug(9, "[%d/%d] > [%d/%d]? (%d > %d)", script[pos + 1], arg1, script[pos + 2], arg2, val1, val2); + lastResult = (val1 > val2); + break; + case kOpBoolEqual: + if (numParams != 2) + error("kOpBoolEqual had wrong number of params (%d)", numParams); + val1 = getArg(script[pos + 1], arg1); + val2 = getArg(script[pos + 2], arg2); + debug(9, "[%d/%d] == [%d/%d]? (%d == %d)", script[pos + 1], arg1, script[pos + 2], arg2, val1, val2); lastResult = (val1 == val2); break; + case kOpBoolNotEqual: + if (numParams != 2) + error("kOpBoolNotEqual had wrong number of params (%d)", numParams); + val1 = getArg(script[pos + 1], arg1); + val2 = getArg(script[pos + 2], arg2); + debug(9, "[%d/%d] != [%d/%d]? (%d != %d)", script[pos + 1], arg1, script[pos + 2], arg2, val1, val2); + lastResult = (val1 != val2); + break; case kOpSaveArgs: + if (numParams != 0) + error("kOpSaveArgs had wrong number of params (%d)", numParams); debug(9, "save args"); for (uint i = 1; i < 19; i++) _stack[stackBase + i] = _vars[i]; break; case kOpRestoreArgs: + if (numParams != 0) + error("kOpRestoreArgs had wrong number of params (%d)", numParams); debug(9, "restore args"); for (uint i = 1; i < 19; i++) _vars[i] = _stack[stackBase + i]; break; + case kOpSetReturnValue: + if (numParams != 1) + error("kOpSetReturnValue had wrong number of params (%d)", numParams); + val1 = getArg(script[pos + 1], arg1); + debug(9, "return [%d/%d]=%d", script[pos + 1], arg1, val1); + _vars[0] = val1; + break; + case kOpLessThanEq: + if (numParams != 3) + error("kOpLessThanEq had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + debug(9, "[%d/%d] = [%d/%d] <= [%d/%d]? (%d <= %d)", script[pos + 1], arg1, script[pos + 2], arg2, script[pos + 3], arg3, val2, val3); + setArg(script[pos + 1], arg1, (val3 <= val2) ? 1 : 0); + break; + case kOpLessThan: + if (numParams != 3) + error("kOpLessThan had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + debug(9, "[%d/%d] = [%d/%d] < [%d/%d]? (%d < %d)", script[pos + 1], arg1, script[pos + 2], arg2, script[pos + 3], arg3, val2, val3); + setArg(script[pos + 1], arg1, (val3 < val2) ? 1 : 0); + break; + case kOpGreaterThanEq: + if (numParams != 3) + error("kOpGreaterThanEq had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + debug(9, "[%d/%d] = [%d/%d] >= [%d/%d]? (%d >= %d)", script[pos + 1], arg1, script[pos + 2], arg2, script[pos + 3], arg3, val2, val3); + setArg(script[pos + 1], arg1, (val3 >= val2) ? 1 : 0); + break; case kOpGreaterThan: + if (numParams != 3) + error("kOpGreaterThan had wrong number of params (%d)", numParams); val2 = getArg(script[pos + 2], arg2); val3 = getArg(script[pos + 3], arg3); debug(9, "[%d/%d] = [%d/%d] > [%d/%d]? (%d > %d)", script[pos + 1], arg1, script[pos + 2], arg2, script[pos + 3], arg3, val2, val3); setArg(script[pos + 1], arg1, (val3 > val2) ? 1 : 0); break; + case kOpEqual: + if (numParams != 3) + error("kOpEqual had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + debug(9, "[%d/%d] = [%d/%d] == [%d/%d]? (%d == %d)", script[pos + 1], arg1, script[pos + 2], arg2, script[pos + 3], arg3, val2, val3); + setArg(script[pos + 1], arg1, (val3 == val2) ? 1 : 0); + break; + case kOpNotEqual: + if (numParams != 3) + error("kOpNotEqual had wrong number of params (%d)", numParams); + val2 = getArg(script[pos + 2], arg2); + val3 = getArg(script[pos + 3], arg3); + debug(9, "[%d/%d] = [%d/%d] != [%d/%d]? (%d != %d)", script[pos + 1], arg1, script[pos + 2], arg2, script[pos + 3], arg3, val2, val3); + setArg(script[pos + 1], arg1, (val3 != val2) ? 1 : 0); + break; case kOpJump: + if (numParams != 1) + error("kOpJump had wrong number of params (%d)", numParams); val1 = getArg(script[pos + 1], arg1); debug(9, "jump by [%d/%d]=%d", script[pos + 1], arg1, val1); pos += val1; break; case kOpJumpIfNot: + if (numParams != 1) + error("kOpJumpIfNot had wrong number of params (%d)", numParams); if (lastResult) break; val1 = getArg(script[pos + 1], arg1); debug(9, "jump if not, by [%d/%d]=%d", script[pos + 1], arg1, val1); pos += val1; break; + case kOpJumpIf: + if (numParams != 1) + error("kOpJumpIf had wrong number of params (%d)", numParams); + if (!lastResult) + break; + val1 = getArg(script[pos + 1], arg1); + debug(9, "jump if, by [%d/%d]=%d", script[pos + 1], arg1, val1); + pos += val1; + break; case kOpJumpIfNotValue: + if (numParams != 2) + error("kOpJumpIfNotValue had wrong number of params (%d)", numParams); val1 = getArg(script[pos + 1], arg1); val2 = getArg(script[pos + 2], arg2); debug(9, "jump if not [%d/%d]=%d", script[pos + 1], arg1, val1); @@ -903,6 +1133,17 @@ void ComposerEngine::runScript(uint16 id) { debug(9, "--> jump by [%d/%d]=%d", script[pos + 2], arg2, val2); pos += val2; break; + case kOpJumpIfValue: + if (numParams != 2) + error("kOpJumpIfValue had wrong number of params (%d)", numParams); + val1 = getArg(script[pos + 1], arg1); + val2 = getArg(script[pos + 2], arg2); + debug(9, "jump if [%d/%d]=%d", script[pos + 1], arg1, val1); + if (!val1) + break; + debug(9, "--> jump by [%d/%d]=%d", script[pos + 2], arg2, val2); + pos += val2; + break; default: error("unknown script op 0x%02x", op); } From aa52698d7ee5488e37f8c13c8a212259614b453e Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 20:02:19 +0200 Subject: [PATCH 108/731] COMPOSER: Fix z-ordering (properly, this time). --- engines/composer/composer.cpp | 8 ++++---- engines/composer/composer.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index ec4d45a71be..4edf513a358 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -465,7 +465,7 @@ void ComposerEngine::processAnimFrame() { } } -void ComposerEngine::addSprite(uint16 id, uint16 animId, int16 zorder, const Common::Point &pos) { +void ComposerEngine::addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos) { Sprite sprite; sprite.id = id; sprite.animId = animId; @@ -477,9 +477,9 @@ void ComposerEngine::addSprite(uint16 id, uint16 animId, int16 zorder, const Com } for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { - if (sprite.zorder > i->zorder) + if (sprite.zorder <= i->zorder) continue; - i++; + // insert *before* this sprite _sprites.insert(i, sprite); return; } @@ -689,7 +689,7 @@ void ComposerEngine::loadLibrary(uint id) { // add background sprite, if it exists if (hasResource(ID_BMAP, 1000)) - addSprite(1000, 0, -1, Common::Point()); + addSprite(1000, 0, 0xffff, Common::Point()); // TODO: better CTBL logic loadCTBL(1000, 100); diff --git a/engines/composer/composer.h b/engines/composer/composer.h index eba51759a29..3fce79e3622 100644 --- a/engines/composer/composer.h +++ b/engines/composer/composer.h @@ -62,7 +62,7 @@ class ComposerEngine; struct Sprite { uint16 id; uint16 animId; - int16 zorder; + uint16 zorder; Common::Point pos; Graphics::Surface surface; }; @@ -205,7 +205,7 @@ private: void playWaveForAnim(uint16 id, bool bufferingOnly); void processAnimFrame(); - void addSprite(uint16 id, uint16 animId, int16 zorder, const Common::Point &pos); + void addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos); void removeSprite(uint16 id, uint16 animId); void loadCTBL(uint id, uint fadePercent); From 821023678f55d2ff02985a954a23946982a5e6d1 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 20:03:23 +0200 Subject: [PATCH 109/731] COMPOSER: Improve stopping anims. --- engines/composer/composer.cpp | 86 +++++++++++++++++++++++------------ engines/composer/composer.h | 1 + 2 files changed, 58 insertions(+), 29 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 4edf513a358..d2da61f5d66 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -260,25 +260,7 @@ void ComposerEngine::playAnimation(uint16 animId, int16 x, int16 y, int16 eventP if (anim->_id != animId) continue; - // disable the animation - anim->_state = 0; - - // stop any animations it may have spawned - for (uint j = 0; j < anim->_entries.size(); j++) { - if (anim->_entries[j].op == 3) - ; // TODO: stop anim - } - - // kill any pipes owned by the animation - for (Common::List::iterator j = _pipes.begin(); j != _pipes.end(); j++) { - Pipe *pipe = *j; - if (pipe->_anim != anim) - continue; - j = _pipes.reverse_erase(j); - delete pipe; - break; - } - + stopAnimation(*i); break; } @@ -325,6 +307,43 @@ void ComposerEngine::playAnimation(uint16 animId, int16 x, int16 y, int16 eventP runEvent(1, animId, eventParam, 0); } +void ComposerEngine::stopAnimation(Animation *anim, bool localOnly, bool pipesOnly) { + // disable the animation + anim->_state = 0; + + // stop any animations it may have spawned + for (uint j = 0; j < anim->_entries.size(); j++) { + AnimationEntry &entry = anim->_entries[j]; + if (!entry.word10) + continue; + if (localOnly) { + if (pipesOnly) + continue; + // TODO: stop audio if needed + if (entry.op != 4) + continue; + removeSprite(entry.word10, anim->_id); + } else { + if (entry.op != 3) + continue; + for (Common::List::iterator i = _anims.begin(); i != _anims.end(); i++) { + if ((*i)->_id == entry.word10) + stopAnimation(*i); + } + } + } + + // kill any pipe owned by the animation + for (Common::List::iterator j = _pipes.begin(); j != _pipes.end(); j++) { + Pipe *pipe = *j; + if (pipe->_anim != anim) + continue; + j = _pipes.reverse_erase(j); + delete pipe; + break; + } +} + void ComposerEngine::playWaveForAnim(uint16 id, bool bufferingOnly) { Common::SeekableReadStream *stream = NULL; if (!bufferingOnly && hasResource(ID_WAVE, id)) { @@ -355,18 +374,13 @@ void ComposerEngine::processAnimFrame() { Animation *anim = *i; anim->seekToCurrPos(); - if ((anim->_state > 1) && (anim->_stream->pos() == anim->_stream->size())) { - warning("anim with id %d ended too soon", anim->_id); - anim->_state = 0; - } if (anim->_state <= 1) { - if (anim->_state == 1) { + bool normalEnd = (anim->_state == 1); + if (normalEnd) { runEvent(2, anim->_id, anim->_eventParam, 0); - } else { - // TODO: stop anything which was running } - // TODO: kill pipes + stopAnimation(anim, true, normalEnd); delete anim; i = _anims.reverse_erase(i); @@ -380,6 +394,12 @@ void ComposerEngine::processAnimFrame() { if (entry.counter) { entry.counter--; } else { + if ((anim->_state > 1) && (anim->_stream->pos() == anim->_stream->size())) { + warning("anim with id %d ended too soon", anim->_id); + anim->_state = 0; + break; + } + uint16 event = anim->_stream->readUint16LE(); anim->_offset += 2; if (event == 0xffff) { @@ -412,6 +432,11 @@ void ComposerEngine::processAnimFrame() { } } else { anim->seekToCurrPos(); + if ((anim->_state > 1) && (anim->_stream->pos() == anim->_stream->size())) { + warning("anim with id %d ended too soon", anim->_id); + anim->_state = 0; + break; + } uint16 data = anim->_stream->readUint16LE(); anim->_offset += 2; @@ -1161,8 +1186,11 @@ int16 ComposerEngine::scriptFuncCall(uint16 id, int16 param1, int16 param2, int1 playAnimation(param1, param2, param3, 0); return 1; // TODO: return 0 on failure case kFuncStopAnim: - // TODO - warning("ignoring kFuncStopAnim(%d)", param1); + debug(3, "ignoring kFuncStopAnim(%d)", param1); + for (Common::List::iterator i = _anims.begin(); i != _anims.end(); i++) { + if ((*i)->_id == param1) + stopAnimation(*i); + } return 0; case kFuncQueueScript: debug(3, "kFuncQueueScript(%d, %d, %d)", param1, param2, param3); diff --git a/engines/composer/composer.h b/engines/composer/composer.h index 3fce79e3622..8f22174592c 100644 --- a/engines/composer/composer.h +++ b/engines/composer/composer.h @@ -202,6 +202,7 @@ private: int16 scriptFuncCall(uint16 id, int16 param1, int16 param2, int16 param3); void playAnimation(uint16 animId, int16 param1, int16 param2, int16 param3); + void stopAnimation(Animation *anim, bool localOnly = false, bool pipesOnly = false); void playWaveForAnim(uint16 id, bool bufferingOnly); void processAnimFrame(); From c95320bb170a01ad4193246213d5c4a01d3b588d Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 20:04:23 +0200 Subject: [PATCH 110/731] COMPOSER: Clear audio on new page. --- engines/composer/composer.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index d2da61f5d66..60b31df77bd 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -363,6 +363,8 @@ void ComposerEngine::playWaveForAnim(uint16 id, bool bufferingOnly) { // FIXME: deal with word6 (priority) byte *buffer = (byte *)malloc(stream->size()); stream->read(buffer, stream->size()); + if (!_audioStream) + _audioStream = Audio::makeQueuingAudioStream(22050, false); _audioStream->queueBuffer(buffer, stream->size(), DisposeAfterUse::YES, Audio::FLAG_UNSIGNED); delete stream; if (!_mixer->isSoundHandleActive(_soundHandle)) @@ -534,7 +536,6 @@ ComposerEngine::~ComposerEngine() { for (Common::List::iterator i = _libraries.begin(); i != _libraries.end(); i++) delete i->_archive; - delete _audioStream; delete _rnd; } @@ -567,8 +568,6 @@ Common::Error ComposerEngine::run() { initGraphics(width, height, true); _surface.create(width, height, Graphics::PixelFormat::createFormatCLUT8()); - _audioStream = Audio::makeQueuingAudioStream(22050, false); - loadLibrary(0); uint fps = atoi(getStringFromConfig("Common", "FPS").c_str()); @@ -744,6 +743,9 @@ void ComposerEngine::unloadLibrary(uint id) { } _sprites.clear(); + _mixer->stopAll(); + _audioStream = NULL; + for (uint j = 0; j < _queuedScripts.size(); j++) { _queuedScripts[j]._count = 0; _queuedScripts[j]._scriptId = 0; From 1cf09e3fbf5e64183e82b8845f083ed05bc3149d Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 20:04:49 +0200 Subject: [PATCH 111/731] COMPOSER: Misc sprite changes. --- engines/composer/composer.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 60b31df77bd..cbb80d47d5c 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -493,6 +493,9 @@ void ComposerEngine::processAnimFrame() { } void ComposerEngine::addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos) { + // TODO: re-use old sprite + removeSprite(id, animId); + Sprite sprite; sprite.id = id; sprite.animId = animId; @@ -521,7 +524,6 @@ void ComposerEngine::removeSprite(uint16 id, uint16 animId) { continue; i->surface.free(); i = _sprites.reverse_erase(i); - return; } } @@ -1457,8 +1459,10 @@ bool ComposerEngine::initSprite(Sprite &sprite) { uint32 size = stream->readUint32LE(); debug(1, "loading BMAP: type %d, width %d, height %d, size %d", type, width, height, size); - sprite.surface.create(width, height, Graphics::PixelFormat::createFormatCLUT8()); - decompressBitmap(type, stream, (byte *)sprite.surface.pixels, size, width, height); + if (width && height) { + sprite.surface.create(width, height, Graphics::PixelFormat::createFormatCLUT8()); + decompressBitmap(type, stream, (byte *)sprite.surface.pixels, size, width, height); + } delete stream; return true; From 6f80bce8167536153592a1f70144362972ae5157 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 20:05:30 +0200 Subject: [PATCH 112/731] COMPOSER: Add the remaining bitmap decompressors (SLW8 is still buggy). --- engines/composer/composer.cpp | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index cbb80d47d5c..b47a2fec729 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -1392,6 +1392,50 @@ void ComposerEngine::decompressBitmap(uint16 type, Common::SeekableReadStream *s assert(size == width * height); stream->read(buffer, size); break; + case kBitmapSpp32: + byte lookup[16]; + stream->read(lookup, 16); + while (size--) { + uint in = stream->readByte(); + byte lowBits = in & 0xF; + byte highBits = (in & 0xF0) >> 4; + if (highBits == 0xf) { + // run of a single color + uint count = (uint)stream->readByte() + 3; + size--; + memset(buffer, lookup[lowBits], count); + buffer += count; + } else { + // two pixels + *buffer++ = lookup[highBits]; + *buffer++ = lookup[lowBits]; + } + } + break; + case kBitmapSLW8: + while (size--) { + byte val = stream->readByte(); + if (val != 0xff) { + *buffer++ = val; + continue; + } + uint count = stream->readByte(); + size--; + + uint16 step; + if (!(count & 0x80)) { + step = stream->readByte(); + size--; + } else { + count = (count ^ 0x80); + step = stream->readUint16LE(); + size -= 2; + } + count += 4; + memcpy(buffer, buffer - step - 1, count); + buffer += count; + } + break; case kBitmapRLESLWM: { uint32 bufSize = stream->readUint32LE(); From c7f1a87d8ba2b8feb002b2036025854cf1a92c1f Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 20:55:07 +0200 Subject: [PATCH 113/731] COMPOSER: Misc tweaks/fixes. --- engines/composer/composer.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index b47a2fec729..2e10e073bb6 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -261,7 +261,6 @@ void ComposerEngine::playAnimation(uint16 animId, int16 x, int16 y, int16 eventP continue; stopAnimation(*i); - break; } Common::SeekableReadStream *stream = NULL; @@ -396,7 +395,7 @@ void ComposerEngine::processAnimFrame() { if (entry.counter) { entry.counter--; } else { - if ((anim->_state > 1) && (anim->_stream->pos() == anim->_stream->size())) { + if ((anim->_state > 1) && (anim->_stream->pos() + 2 > anim->_stream->size())) { warning("anim with id %d ended too soon", anim->_id); anim->_state = 0; break; @@ -419,12 +418,14 @@ void ComposerEngine::processAnimFrame() { anim->_state--; + bool foundWait = false; for (uint j = 0; j < anim->_entries.size(); j++) { AnimationEntry &entry = anim->_entries[j]; - // TODO: only skip these at the start - if (entry.op == 1) + // only skip these at the start + if (!foundWait && (entry.op == 1)) continue; + foundWait = true; if (entry.counter) { entry.counter--; @@ -434,7 +435,7 @@ void ComposerEngine::processAnimFrame() { } } else { anim->seekToCurrPos(); - if ((anim->_state > 1) && (anim->_stream->pos() == anim->_stream->size())) { + if ((anim->_state > 1) && (anim->_stream->pos() + 2 > anim->_stream->size())) { warning("anim with id %d ended too soon", anim->_id); anim->_state = 0; break; @@ -581,6 +582,8 @@ Common::Error ComposerEngine::run() { unloadLibrary(_pendingPageChanges[i]._pageId); else loadLibrary(_pendingPageChanges[i]._pageId); + + lastDrawTime = _system->getMillis(); } _pendingPageChanges.clear(); @@ -597,9 +600,12 @@ Common::Error ComposerEngine::run() { runScript(script._scriptId, i, 0, 0); } - // _system->delayMillis(frameTime + lastDrawTime - thisTime); if (lastDrawTime + frameTime <= thisTime) { - lastDrawTime += frameTime; + // catch up if we're more than 5 frames behind + if (lastDrawTime + (frameTime * 5) <= thisTime) + lastDrawTime = thisTime - (frameTime * 5); + else + lastDrawTime += frameTime; for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { drawSprite(*i); @@ -1190,7 +1196,7 @@ int16 ComposerEngine::scriptFuncCall(uint16 id, int16 param1, int16 param2, int1 playAnimation(param1, param2, param3, 0); return 1; // TODO: return 0 on failure case kFuncStopAnim: - debug(3, "ignoring kFuncStopAnim(%d)", param1); + debug(3, "kFuncStopAnim(%d)", param1); for (Common::List::iterator i = _anims.begin(); i != _anims.end(); i++) { if ((*i)->_id == param1) stopAnimation(*i); @@ -1490,7 +1496,7 @@ bool ComposerEngine::initSprite(Sprite &sprite) { Pipe *pipe = *k; if (!pipe->hasResource(ID_BMAP, sprite.id)) continue; - stream = pipe->getResource(ID_BMAP, sprite.id, true); + stream = pipe->getResource(ID_BMAP, sprite.id, false); break; } From 1a9ec35de6aac704fdfbd5e3a928ef68bb59094e Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sat, 16 Jul 2011 20:55:25 +0200 Subject: [PATCH 114/731] COMPOSER: Try handling keyDown event. --- engines/composer/composer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 2e10e073bb6..639b077ed7d 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -641,13 +641,16 @@ Common::Error ComposerEngine::run() { }*/ break; - case Common::KEYCODE_ESCAPE: - quitGame(); + case Common::KEYCODE_q: + if (event.kbd.hasFlags(Common::KBD_CTRL)) + quitGame(); break; default: break; } + + runEvent(5, event.kbd.keycode, 0, 0); break; case Common::EVENT_QUIT: From 8800794f4d89f9f920a623dd39cd9d4cf370f827 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 17 Jul 2011 00:08:52 +0200 Subject: [PATCH 115/731] SCUMM: Clarify PC Speaker style sound resource handling with a comment. --- engines/scumm/sound.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/engines/scumm/sound.cpp b/engines/scumm/sound.cpp index 544abe6b1de..4d9086b22a7 100644 --- a/engines/scumm/sound.cpp +++ b/engines/scumm/sound.cpp @@ -1142,6 +1142,9 @@ int ScummEngine::readSoundResource(ResId idx) { break; } + // We only allow SPK resources for PC Speaker, PCJr and CMS here + // since other resource would sound horribly with their output + // drivers. if ((_musicType == MDT_PCSPK || _musicType == MDT_PCJR || _musicType == MDT_CMS) && pri != 11) pri = -1; From 69adb13c2f3cadd4dac2bba8164aa0b8a9400abc Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 17 Jul 2011 02:27:33 +0200 Subject: [PATCH 116/731] SCUMM: Fix strange noise in Indy4 outro with AdLib/FM-Towns output. Formerly we tried to play back a ROL resource on AdLib in this case, since the game does not contain a ADL resource for the sound the game tries to play here. The original does not exhibit this behavior, thus I changed it to behave the same now. Big thanks to eriktorbjorn for noticing and finding the cause of this problem. Also thanks to Kirben for checking how the original behaved and _athrxx for checking the FM-Towns version of Indy4. --- engines/scumm/sound.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/engines/scumm/sound.cpp b/engines/scumm/sound.cpp index 4d9086b22a7..c3cad19fdce 100644 --- a/engines/scumm/sound.cpp +++ b/engines/scumm/sound.cpp @@ -1148,6 +1148,16 @@ int ScummEngine::readSoundResource(ResId idx) { if ((_musicType == MDT_PCSPK || _musicType == MDT_PCJR || _musicType == MDT_CMS) && pri != 11) pri = -1; + // We only allow ADL resources when AdLib or FM-Towns is used as + // primary audio output. This fixes some odd sounds when Indy and + // Sophia leave Atlantis with the submarine in Indy4. (Easy to + // check with bootparam 4061 in the CD version). It seems the game + // only contains a ROL resource for sound id 60. Formerly we tried + // to play that via the AdLib or FM-Towns audio driver resulting + // in strange noises. Now we behave like the original did. + if ((_musicType == MDT_ADLIB || _musicType == MDT_TOWNS) && pri != 10) + pri = -1; + debugC(DEBUG_RESOURCE, " tag: %s, total_size=%d, pri=%d", tag2str(tag), size, pri); From 4d4d3329c3f60db245038d48ff36a14628a0c10f Mon Sep 17 00:00:00 2001 From: Bertrand Augereau Date: Sun, 26 Jun 2011 15:10:18 +0200 Subject: [PATCH 117/731] DREAMWEB: The generator includes a file for custom structs and a file for custom function definitions It also generates C++ symbols for asm proc addresses --- devtools/tasmrecover/tasm/cpp.py | 14 +- engines/dreamweb/dreamgen.cpp | 1476 +++++++++++++++--------------- engines/dreamweb/dreamgen.h | 783 +++++++++++++++- engines/dreamweb/structs.h | 24 + engines/dreamweb/stubs.h | 29 + 5 files changed, 1563 insertions(+), 763 deletions(-) create mode 100644 engines/dreamweb/structs.h create mode 100644 engines/dreamweb/stubs.h diff --git a/devtools/tasmrecover/tasm/cpp.py b/devtools/tasmrecover/tasm/cpp.py index dfdfb239f44..81c883da1ec 100644 --- a/devtools/tasmrecover/tasm/cpp.py +++ b/devtools/tasmrecover/tasm/cpp.py @@ -544,14 +544,19 @@ namespace %s { """\n#include "dreamweb/runtime.h" namespace %s { - +#include "structs.h" class %sContext : public Context { public: void __start(); void __dispatch_call(uint16 addr); +#include "stubs.h" // Allow hand-reversed functions to have a signature different than void f() """ %(self.namespace, self.namespace)) + + for name,addr in self.proc_addr: + self.hd.write("\tstatic const uint16 addr_%s = 0x%04x;\n" %(name, addr)) + offsets = [] for k, v in self.context.get_globals().items(): if isinstance(v, op.var): @@ -564,7 +569,10 @@ public: self.hd.write("\tconst static uint16 k%s = %s;\n" %o) self.hd.write("\n") for p in set(self.methods): - self.hd.write("\tvoid %s();\n" %p) + if p in self.blacklist: + self.hd.write("\t//void %s();\n" %p) + else: + self.hd.write("\tvoid %s();\n" %p) self.hd.write("};\n}\n\n#endif\n") self.hd.close() @@ -574,7 +582,7 @@ public: self.fd.write("\nvoid %sContext::__dispatch_call(uint16 addr) {\n\tswitch(addr) {\n" %self.namespace) self.proc_addr.sort(cmp = lambda x, y: x[1] - y[1]) for name,addr in self.proc_addr: - self.fd.write("\t\tcase 0x%04x: %s(); break;\n" %(addr, name)) + self.fd.write("\t\tcase addr_%s: %s(); break;\n" %(name, name)) self.fd.write("\t\tdefault: ::error(\"invalid call to %04x dispatched\", (uint16)ax);") self.fd.write("\n\t}\n}\n\n} /*namespace*/\n") diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index a25fae08742..5b057686e96 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -22062,744 +22062,744 @@ dreamweb(); void DreamGenContext::__dispatch_call(uint16 addr) { switch(addr) { - case 0xc000: alleybarksound(); break; - case 0xc004: intromusic(); break; - case 0xc008: foghornsound(); break; - case 0xc00c: receptionist(); break; - case 0xc010: smokebloke(); break; - case 0xc014: attendant(); break; - case 0xc018: manasleep(); break; - case 0xc01c: eden(); break; - case 0xc020: edeninbath(); break; - case 0xc024: malefan(); break; - case 0xc028: femalefan(); break; - case 0xc02c: louis(); break; - case 0xc030: louischair(); break; - case 0xc034: manasleep2(); break; - case 0xc038: mansatstill(); break; - case 0xc03c: tattooman(); break; - case 0xc040: drinker(); break; - case 0xc044: bartender(); break; - case 0xc048: othersmoker(); break; - case 0xc04c: barwoman(); break; - case 0xc050: interviewer(); break; - case 0xc054: soldier1(); break; - case 0xc058: rockstar(); break; - case 0xc05c: helicopter(); break; - case 0xc060: mugger(); break; - case 0xc064: aide(); break; - case 0xc068: businessman(); break; - case 0xc06c: poolguard(); break; - case 0xc070: security(); break; - case 0xc074: heavy(); break; - case 0xc078: bossman(); break; - case 0xc07c: gamer(); break; - case 0xc080: sparkydrip(); break; - case 0xc084: carparkdrip(); break; - case 0xc088: keeper(); break; - case 0xc08c: candles1(); break; - case 0xc090: smallcandle(); break; - case 0xc094: intromagic1(); break; - case 0xc098: candles(); break; - case 0xc09c: candles2(); break; - case 0xc0a0: gates(); break; - case 0xc0a4: intromagic2(); break; - case 0xc0a8: intromagic3(); break; - case 0xc0ac: intromonks1(); break; - case 0xc0b0: intromonks2(); break; - case 0xc0b4: handclap(); break; - case 0xc0b8: monks2text(); break; - case 0xc0bc: intro1text(); break; - case 0xc0c0: intro2text(); break; - case 0xc0c4: intro3text(); break; - case 0xc0c8: monkandryan(); break; - case 0xc0cc: endgameseq(); break; - case 0xc0d0: rollendcredits(); break; - case 0xc0d4: priest(); break; - case 0xc0d8: madmanstelly(); break; - case 0xc0dc: madman(); break; - case 0xc0e0: madmantext(); break; - case 0xc0e4: madmode(); break; - case 0xc0e8: priesttext(); break; - case 0xc0ec: textforend(); break; - case 0xc0f0: textformonk(); break; - case 0xc0f4: drunk(); break; - case 0xc0f8: advisor(); break; - case 0xc0fc: copper(); break; - case 0xc100: sparky(); break; - case 0xc104: train(); break; - case 0xc108: addtopeoplelist(); break; - case 0xc10c: showgamereel(); break; - case 0xc110: checkspeed(); break; - case 0xc114: clearsprites(); break; - case 0xc118: makesprite(); break; - case 0xc11c: delsprite(); break; - case 0xc120: spriteupdate(); break; - case 0xc124: printsprites(); break; - case 0xc128: printasprite(); break; - case 0xc12c: checkone(); break; - case 0xc130: findsource(); break; - case 0xc134: initman(); break; - case 0xc138: mainman(); break; - case 0xc13c: aboutturn(); break; - case 0xc140: walking(); break; - case 0xc144: facerightway(); break; - case 0xc148: checkforexit(); break; - case 0xc14c: adjustdown(); break; - case 0xc150: adjustup(); break; - case 0xc154: adjustleft(); break; - case 0xc158: adjustright(); break; - case 0xc15c: reminders(); break; - case 0xc160: initrain(); break; - case 0xc164: splitintolines(); break; - case 0xc168: getblockofpixel(); break; - case 0xc16c: showrain(); break; - case 0xc170: backobject(); break; - case 0xc174: liftsprite(); break; - case 0xc178: liftnoise(); break; - case 0xc17c: random(); break; - case 0xc180: steady(); break; - case 0xc184: constant(); break; - case 0xc188: doorway(); break; - case 0xc18c: widedoor(); break; - case 0xc190: dodoor(); break; - case 0xc194: lockeddoorway(); break; - case 0xc198: updatepeople(); break; - case 0xc19c: getreelframeax(); break; - case 0xc1a0: reelsonscreen(); break; - case 0xc1a4: plotreel(); break; - case 0xc1a8: soundonreels(); break; - case 0xc1ac: reconstruct(); break; - case 0xc1b0: dealwithspecial(); break; - case 0xc1b4: movemap(); break; - case 0xc1b8: getreelstart(); break; - case 0xc1bc: showreelframe(); break; - case 0xc1c0: deleverything(); break; - case 0xc1c4: dumpeverything(); break; - case 0xc1c8: allocatework(); break; - case 0xc1cc: showpcx(); break; - case 0xc1d8: loadpalfromiff(); break; - case 0xc1dc: setmode(); break; - case 0xc1ec: paneltomap(); break; - case 0xc1f0: maptopanel(); break; - case 0xc1f4: dumpmap(); break; - case 0xc1f8: pixelcheckset(); break; - case 0xc1fc: createpanel(); break; - case 0xc200: createpanel2(); break; - case 0xc204: clearwork(); break; - case 0xc208: vsync(); break; - case 0xc20c: doshake(); break; - case 0xc210: zoom(); break; - case 0xc214: delthisone(); break; - case 0xc228: doblocks(); break; - case 0xc22c: showframe(); break; - case 0xc238: frameoutbh(); break; - case 0xc23c: frameoutfx(); break; - case 0xc240: transferinv(); break; - case 0xc244: transfermap(); break; - case 0xc248: fadedos(); break; - case 0xc24c: dofade(); break; - case 0xc250: clearendpal(); break; - case 0xc254: clearpalette(); break; - case 0xc258: fadescreenup(); break; - case 0xc25c: fadetowhite(); break; - case 0xc260: fadefromwhite(); break; - case 0xc264: fadescreenups(); break; - case 0xc268: fadescreendownhalf(); break; - case 0xc26c: fadescreenuphalf(); break; - case 0xc270: fadescreendown(); break; - case 0xc274: fadescreendowns(); break; - case 0xc278: clearstartpal(); break; - case 0xc27c: showgun(); break; - case 0xc280: rollendcredits2(); break; - case 0xc284: rollem(); break; - case 0xc288: fadecalculation(); break; - case 0xc28c: greyscalesum(); break; - case 0xc290: showgroup(); break; - case 0xc294: paltostartpal(); break; - case 0xc298: endpaltostart(); break; - case 0xc29c: startpaltoend(); break; - case 0xc2a0: paltoendpal(); break; - case 0xc2a4: allpalette(); break; - case 0xc2a8: dumpcurrent(); break; - case 0xc2ac: fadedownmon(); break; - case 0xc2b0: fadeupmon(); break; - case 0xc2b4: fadeupmonfirst(); break; - case 0xc2b8: fadeupyellows(); break; - case 0xc2bc: initialmoncols(); break; - case 0xc2c0: titles(); break; - case 0xc2c4: endgame(); break; - case 0xc2c8: monkspeaking(); break; - case 0xc2cc: showmonk(); break; - case 0xc2d0: gettingshot(); break; - case 0xc2d4: credits(); break; - case 0xc2d8: biblequote(); break; - case 0xc2dc: hangone(); break; - case 0xc2e0: intro(); break; - case 0xc2e4: runintroseq(); break; - case 0xc2e8: runendseq(); break; - case 0xc2ec: loadintroroom(); break; - case 0xc2f0: mode640x480(); break; - case 0xc2f4: set16colpalette(); break; - case 0xc2f8: realcredits(); break; - case 0xc2fc: printchar(); break; - case 0xc300: kernchars(); break; - case 0xc304: printslow(); break; - case 0xc308: waitframes(); break; - case 0xc30c: printboth(); break; - case 0xc310: printdirect(); break; - case 0xc314: monprint(); break; - case 0xc318: getnumber(); break; - case 0xc31c: getnextword(); break; - case 0xc320: fillryan(); break; - case 0xc324: fillopen(); break; - case 0xc328: findallryan(); break; - case 0xc32c: findallopen(); break; - case 0xc330: obtoinv(); break; - case 0xc334: isitworn(); break; - case 0xc338: makeworn(); break; - case 0xc33c: examineob(); break; - case 0xc340: makemainscreen(); break; - case 0xc344: getbackfromob(); break; - case 0xc348: incryanpage(); break; - case 0xc34c: openinv(); break; - case 0xc350: showryanpage(); break; - case 0xc354: openob(); break; - case 0xc358: obicons(); break; - case 0xc35c: examicon(); break; - case 0xc360: obpicture(); break; - case 0xc364: describeob(); break; - case 0xc368: additionaltext(); break; - case 0xc36c: obsthatdothings(); break; - case 0xc370: getobtextstart(); break; - case 0xc374: searchforsame(); break; - case 0xc378: findnextcolon(); break; - case 0xc37c: inventory(); break; - case 0xc380: setpickup(); break; - case 0xc384: examinventory(); break; - case 0xc388: reexfrominv(); break; - case 0xc38c: reexfromopen(); break; - case 0xc390: swapwithinv(); break; - case 0xc394: swapwithopen(); break; - case 0xc398: intoinv(); break; - case 0xc39c: deletetaken(); break; - case 0xc3a0: outofinv(); break; - case 0xc3a4: getfreead(); break; - case 0xc3a8: getexad(); break; - case 0xc3ac: geteitherad(); break; - case 0xc3b0: getanyad(); break; - case 0xc3b4: getanyaddir(); break; - case 0xc3b8: getopenedsize(); break; - case 0xc3bc: getsetad(); break; - case 0xc3c0: findinvpos(); break; - case 0xc3c4: findopenpos(); break; - case 0xc3c8: dropobject(); break; - case 0xc3cc: droperror(); break; - case 0xc3d0: cantdrop(); break; - case 0xc3d4: wornerror(); break; - case 0xc3d8: removeobfrominv(); break; - case 0xc3dc: selectopenob(); break; - case 0xc3e0: useopened(); break; - case 0xc3e4: errormessage1(); break; - case 0xc3e8: errormessage2(); break; - case 0xc3ec: errormessage3(); break; - case 0xc3f0: checkobjectsize(); break; - case 0xc3f4: outofopen(); break; - case 0xc3f8: transfertoex(); break; - case 0xc3fc: pickupconts(); break; - case 0xc400: transfercontoex(); break; - case 0xc404: transfertext(); break; - case 0xc408: getexpos(); break; - case 0xc40c: purgealocation(); break; - case 0xc410: emergencypurge(); break; - case 0xc414: purgeanitem(); break; - case 0xc418: deleteexobject(); break; - case 0xc41c: deleteexframe(); break; - case 0xc420: deleteextext(); break; - case 0xc424: blockget(); break; - case 0xc428: drawfloor(); break; - case 0xc42c: calcmapad(); break; - case 0xc430: getdimension(); break; - case 0xc434: addalong(); break; - case 0xc438: addlength(); break; - case 0xc43c: drawflags(); break; - case 0xc440: eraseoldobs(); break; - case 0xc444: showallobs(); break; - case 0xc448: makebackob(); break; - case 0xc44c: showallfree(); break; - case 0xc450: showallex(); break; - case 0xc454: calcfrframe(); break; - case 0xc458: finalframe(); break; - case 0xc45c: adjustlen(); break; - case 0xc460: getmapad(); break; - case 0xc464: getxad(); break; - case 0xc468: getyad(); break; - case 0xc46c: autolook(); break; - case 0xc470: look(); break; - case 0xc474: dolook(); break; - case 0xc478: redrawmainscrn(); break; - case 0xc47c: getback1(); break; - case 0xc480: talk(); break; - case 0xc484: convicons(); break; - case 0xc488: getpersframe(); break; - case 0xc48c: starttalk(); break; - case 0xc490: getpersontext(); break; - case 0xc494: moretalk(); break; - case 0xc498: dosometalk(); break; - case 0xc49c: hangonpq(); break; - case 0xc4a0: redes(); break; - case 0xc4a4: newplace(); break; - case 0xc4a8: selectlocation(); break; - case 0xc4ac: showcity(); break; - case 0xc4b0: lookatplace(); break; - case 0xc4b4: getundercentre(); break; - case 0xc4b8: putundercentre(); break; - case 0xc4bc: locationpic(); break; - case 0xc4c0: getdestinfo(); break; - case 0xc4c4: showarrows(); break; - case 0xc4c8: nextdest(); break; - case 0xc4cc: lastdest(); break; - case 0xc4d0: destselect(); break; - case 0xc4d4: getlocation(); break; - case 0xc4d8: setlocation(); break; - case 0xc4dc: resetlocation(); break; - case 0xc4e0: readdesticon(); break; - case 0xc4e4: readcitypic(); break; - case 0xc4e8: usemon(); break; - case 0xc4ec: printoutermon(); break; - case 0xc4f0: loadpersonal(); break; - case 0xc4f4: loadnews(); break; - case 0xc4f8: loadcart(); break; - case 0xc4fc: lookininterface(); break; - case 0xc500: turnonpower(); break; - case 0xc504: randomaccess(); break; - case 0xc508: powerlighton(); break; - case 0xc50c: powerlightoff(); break; - case 0xc510: accesslighton(); break; - case 0xc514: accesslightoff(); break; - case 0xc518: locklighton(); break; - case 0xc51c: locklightoff(); break; - case 0xc520: input(); break; - case 0xc524: makecaps(); break; - case 0xc528: delchar(); break; - case 0xc52c: execcommand(); break; - case 0xc530: neterror(); break; - case 0xc534: dircom(); break; - case 0xc538: searchforfiles(); break; - case 0xc53c: signon(); break; - case 0xc540: showkeys(); break; - case 0xc544: read(); break; - case 0xc548: dirfile(); break; - case 0xc54c: getkeyandlogo(); break; - case 0xc550: searchforstring(); break; - case 0xc554: parser(); break; - case 0xc558: scrollmonitor(); break; - case 0xc560: monitorlogo(); break; - case 0xc564: printlogo(); break; - case 0xc568: showcurrentfile(); break; - case 0xc56c: monmessage(); break; - case 0xc570: processtrigger(); break; - case 0xc574: triggermessage(); break; - case 0xc578: printcurs(); break; - case 0xc57c: delcurs(); break; - case 0xc580: useobject(); break; - case 0xc584: useroutine(); break; - case 0xc588: wheelsound(); break; - case 0xc58c: runtap(); break; - case 0xc590: playguitar(); break; - case 0xc594: hotelcontrol(); break; - case 0xc598: hotelbell(); break; - case 0xc59c: opentomb(); break; - case 0xc5a0: usetrainer(); break; - case 0xc5a4: nothelderror(); break; - case 0xc5a8: usepipe(); break; - case 0xc5ac: usefullcart(); break; - case 0xc5b0: useplinth(); break; - case 0xc5b4: chewy(); break; - case 0xc5b8: useladder(); break; - case 0xc5bc: useladderb(); break; - case 0xc5c0: slabdoora(); break; - case 0xc5c4: slabdoorb(); break; - case 0xc5c8: slabdoord(); break; - case 0xc5cc: slabdoorc(); break; - case 0xc5d0: slabdoore(); break; - case 0xc5d4: slabdoorf(); break; - case 0xc5d8: useslab(); break; - case 0xc5dc: usecart(); break; - case 0xc5e0: useclearbox(); break; - case 0xc5e4: usecoveredbox(); break; - case 0xc5e8: userailing(); break; - case 0xc5ec: useopenbox(); break; - case 0xc5f0: wearwatch(); break; - case 0xc5f4: wearshades(); break; - case 0xc5f8: sitdowninbar(); break; - case 0xc5fc: usechurchhole(); break; - case 0xc600: usehole(); break; - case 0xc604: usealtar(); break; - case 0xc608: opentvdoor(); break; - case 0xc60c: usedryer(); break; - case 0xc610: openlouis(); break; - case 0xc614: nextcolon(); break; - case 0xc618: openyourneighbour(); break; - case 0xc61c: usewindow(); break; - case 0xc620: usebalcony(); break; - case 0xc624: openryan(); break; - case 0xc628: openpoolboss(); break; - case 0xc62c: openeden(); break; - case 0xc630: opensarters(); break; - case 0xc634: isitright(); break; - case 0xc638: drawitall(); break; - case 0xc63c: openhoteldoor(); break; - case 0xc640: openhoteldoor2(); break; - case 0xc644: grafittidoor(); break; - case 0xc648: trapdoor(); break; - case 0xc64c: callhotellift(); break; - case 0xc650: calledenslift(); break; - case 0xc654: calledensdlift(); break; - case 0xc658: usepoolreader(); break; - case 0xc65c: uselighter(); break; - case 0xc660: showseconduse(); break; - case 0xc664: usecardreader1(); break; - case 0xc668: usecardreader2(); break; - case 0xc66c: usecardreader3(); break; - case 0xc670: usecashcard(); break; - case 0xc674: lookatcard(); break; - case 0xc678: moneypoke(); break; - case 0xc67c: usecontrol(); break; - case 0xc680: usehatch(); break; - case 0xc684: usewire(); break; - case 0xc688: usehandle(); break; - case 0xc68c: useelevator1(); break; - case 0xc690: showfirstuse(); break; - case 0xc694: useelevator3(); break; - case 0xc698: useelevator4(); break; - case 0xc69c: useelevator2(); break; - case 0xc6a0: useelevator5(); break; - case 0xc6a4: usekey(); break; - case 0xc6a8: usestereo(); break; - case 0xc6ac: usecooker(); break; - case 0xc6b0: useaxe(); break; - case 0xc6b4: useelvdoor(); break; - case 0xc6b8: withwhat(); break; - case 0xc6bc: selectob(); break; - case 0xc6c0: compare(); break; - case 0xc6c4: findsetobject(); break; - case 0xc6c8: findexobject(); break; - case 0xc6cc: isryanholding(); break; - case 0xc6d0: checkinside(); break; - case 0xc6d4: usetext(); break; - case 0xc6d8: putbackobstuff(); break; - case 0xc6dc: showpuztext(); break; - case 0xc6e0: findpuztext(); break; - case 0xc6e4: placesetobject(); break; - case 0xc6e8: removesetobject(); break; - case 0xc6ec: issetobonmap(); break; - case 0xc6f0: placefreeobject(); break; - case 0xc6f4: removefreeobject(); break; - case 0xc6f8: findormake(); break; - case 0xc6fc: switchryanon(); break; - case 0xc700: switchryanoff(); break; - case 0xc704: setallchanges(); break; - case 0xc708: dochange(); break; - case 0xc70c: autoappear(); break; - case 0xc710: getundertimed(); break; - case 0xc714: putundertimed(); break; - case 0xc718: dumptimedtext(); break; - case 0xc71c: setuptimeduse(); break; - case 0xc720: setuptimedtemp(); break; - case 0xc724: usetimedtext(); break; - case 0xc728: edenscdplayer(); break; - case 0xc72c: usewall(); break; - case 0xc730: usechurchgate(); break; - case 0xc734: usegun(); break; - case 0xc738: useshield(); break; - case 0xc73c: usebuttona(); break; - case 0xc740: useplate(); break; - case 0xc744: usewinch(); break; - case 0xc748: entercode(); break; - case 0xc74c: loadkeypad(); break; - case 0xc750: quitkey(); break; - case 0xc754: addtopresslist(); break; - case 0xc758: buttonone(); break; - case 0xc75c: buttontwo(); break; - case 0xc760: buttonthree(); break; - case 0xc764: buttonfour(); break; - case 0xc768: buttonfive(); break; - case 0xc76c: buttonsix(); break; - case 0xc770: buttonseven(); break; - case 0xc774: buttoneight(); break; - case 0xc778: buttonnine(); break; - case 0xc77c: buttonnought(); break; - case 0xc780: buttonenter(); break; - case 0xc784: buttonpress(); break; - case 0xc788: showouterpad(); break; - case 0xc78c: showkeypad(); break; - case 0xc790: singlekey(); break; - case 0xc794: dumpkeypad(); break; - case 0xc798: usemenu(); break; - case 0xc79c: dumpmenu(); break; - case 0xc7a0: getundermenu(); break; - case 0xc7a4: putundermenu(); break; - case 0xc7a8: showoutermenu(); break; - case 0xc7ac: showmenu(); break; - case 0xc7b0: loadmenu(); break; - case 0xc7b4: viewfolder(); break; - case 0xc7b8: nextfolder(); break; - case 0xc7bc: folderhints(); break; - case 0xc7c0: lastfolder(); break; - case 0xc7c4: loadfolder(); break; - case 0xc7c8: showfolder(); break; - case 0xc7cc: folderexit(); break; - case 0xc7d0: showleftpage(); break; - case 0xc7d4: showrightpage(); break; - case 0xc7d8: entersymbol(); break; - case 0xc7dc: quitsymbol(); break; - case 0xc7e0: settopleft(); break; - case 0xc7e4: settopright(); break; - case 0xc7e8: setbotleft(); break; - case 0xc7ec: setbotright(); break; - case 0xc7f0: dumpsymbol(); break; - case 0xc7f4: showsymbol(); break; - case 0xc7f8: nextsymbol(); break; - case 0xc7fc: updatesymboltop(); break; - case 0xc800: updatesymbolbot(); break; - case 0xc804: dumpsymbox(); break; - case 0xc808: usediary(); break; - case 0xc80c: showdiary(); break; - case 0xc810: showdiarykeys(); break; - case 0xc814: dumpdiarykeys(); break; - case 0xc818: diarykeyp(); break; - case 0xc81c: diarykeyn(); break; - case 0xc820: showdiarypage(); break; - case 0xc824: findtext1(); break; - case 0xc828: zoomonoff(); break; - case 0xc82c: saveload(); break; - case 0xc830: dosaveload(); break; - case 0xc834: getbackfromops(); break; - case 0xc838: showmainops(); break; - case 0xc83c: showdiscops(); break; - case 0xc840: loadsavebox(); break; - case 0xc844: loadgame(); break; - case 0xc848: getbacktoops(); break; - case 0xc84c: discops(); break; - case 0xc850: savegame(); break; - case 0xc854: actualsave(); break; - case 0xc858: actualload(); break; - case 0xc85c: selectslot2(); break; - case 0xc860: checkinput(); break; - case 0xc864: getnamepos(); break; - case 0xc868: showopbox(); break; - case 0xc86c: showloadops(); break; - case 0xc870: showsaveops(); break; - case 0xc874: selectslot(); break; - case 0xc878: showslots(); break; - case 0xc87c: shownames(); break; - case 0xc880: dosreturn(); break; - case 0xc884: error(); break; - case 0xc888: namestoold(); break; - case 0xc88c: oldtonames(); break; - case 0xc890: savefilewrite(); break; - case 0xc894: savefileread(); break; - case 0xc898: saveposition(); break; - case 0xc89c: loadposition(); break; - case 0xc8a0: loadseg(); break; - case 0xc8a4: makeheader(); break; - case 0xc8a8: storeit(); break; - case 0xc8ac: saveseg(); break; - case 0xc8b0: findlen(); break; - case 0xc8b4: scanfornames(); break; - case 0xc8b8: decide(); break; - case 0xc8bc: showdecisions(); break; - case 0xc8c0: newgame(); break; - case 0xc8c4: loadold(); break; - case 0xc8c8: loadspeech(); break; - case 0xc8cc: createname(); break; - case 0xc8d0: loadsample(); break; - case 0xc8d4: loadsecondsample(); break; - case 0xc8d8: soundstartup(); break; - case 0xc8dc: trysoundalloc(); break; - case 0xc8e0: setsoundoff(); break; - case 0xc8e4: checksoundint(); break; - case 0xc8e8: enablesoundint(); break; - case 0xc8ec: disablesoundint(); break; - case 0xc8f0: interupttest(); break; - case 0xc8f4: soundend(); break; - case 0xc8f8: out22c(); break; - case 0xc8fc: playchannel0(); break; - case 0xc900: playchannel1(); break; - case 0xc904: makenextblock(); break; - case 0xc908: volumeadjust(); break; - case 0xc90c: loopchannel0(); break; - case 0xc910: cancelch0(); break; - case 0xc914: cancelch1(); break; - case 0xc918: channel0only(); break; - case 0xc91c: channel1only(); break; - case 0xc920: channel0tran(); break; - case 0xc924: bothchannels(); break; - case 0xc928: saveems(); break; - case 0xc92c: restoreems(); break; - case 0xc930: domix(); break; - case 0xc934: dmaend(); break; - case 0xc938: startdmablock(); break; - case 0xc93c: setuppit(); break; - case 0xc940: getridofpit(); break; - case 0xc944: pitinterupt(); break; - case 0xc948: dreamweb(); break; - case 0xc94c: entrytexts(); break; - case 0xc950: entryanims(); break; - case 0xc954: initialinv(); break; - case 0xc958: pickupob(); break; - case 0xc95c: setupemm(); break; - case 0xc960: removeemm(); break; - case 0xc964: checkforemm(); break; - case 0xc968: checkbasemem(); break; - case 0xc96c: allocatebuffers(); break; - case 0xc970: clearbuffers(); break; - case 0xc974: clearchanges(); break; - case 0xc978: clearbeforeload(); break; - case 0xc97c: clearreels(); break; - case 0xc980: clearrest(); break; - case 0xc984: deallocatemem(); break; - case 0xc988: allocatemem(); break; - case 0xc990: parseblaster(); break; - case 0xc994: startup(); break; - case 0xc998: startup1(); break; - case 0xc99c: screenupdate(); break; - case 0xc9a0: watchreel(); break; - case 0xc9a4: checkforshake(); break; - case 0xc9a8: watchcount(); break; - case 0xc9ac: showtime(); break; - case 0xc9b0: dumpwatch(); break; - case 0xc9b4: showbyte(); break; - case 0xc9b8: onedigit(); break; - case 0xc9bc: twodigitnum(); break; - case 0xc9c0: showword(); break; - case 0xc9c4: convnum(); break; - case 0xc9c8: mainscreen(); break; - case 0xc9cc: madmanrun(); break; - case 0xc9d0: checkcoords(); break; - case 0xc9d4: identifyob(); break; - case 0xc9d8: checkifperson(); break; - case 0xc9dc: checkifset(); break; - case 0xc9e0: checkifex(); break; - case 0xc9e4: checkiffree(); break; - case 0xc9e8: isitdescribed(); break; - case 0xc9ec: findpathofpoint(); break; - case 0xc9f0: findfirstpath(); break; - case 0xc9f4: turnpathon(); break; - case 0xc9f8: turnpathoff(); break; - case 0xc9fc: turnanypathon(); break; - case 0xca00: turnanypathoff(); break; - case 0xca04: checkifpathison(); break; - case 0xca08: afternewroom(); break; - case 0xca0c: atmospheres(); break; - case 0xca10: walkintoroom(); break; - case 0xca14: afterintroroom(); break; - case 0xca18: obname(); break; - case 0xca1c: finishedwalking(); break; - case 0xca20: examineobtext(); break; - case 0xca24: commandwithob(); break; - case 0xca28: commandonly(); break; - case 0xca2c: printmessage(); break; - case 0xca30: printmessage2(); break; - case 0xca34: blocknametext(); break; - case 0xca38: personnametext(); break; - case 0xca3c: walktotext(); break; - case 0xca40: getflagunderp(); break; - case 0xca44: setwalk(); break; - case 0xca48: autosetwalk(); break; - case 0xca4c: checkdest(); break; - case 0xca50: bresenhams(); break; - case 0xca54: workoutframes(); break; - case 0xca58: getroomspaths(); break; - case 0xca5c: copyname(); break; - case 0xca60: findobname(); break; - case 0xca64: showicon(); break; - case 0xca68: middlepanel(); break; - case 0xca6c: showman(); break; - case 0xca70: showpanel(); break; - case 0xca74: roomname(); break; - case 0xca78: usecharset1(); break; - case 0xca7c: usetempcharset(); break; - case 0xca80: showexit(); break; - case 0xca84: panelicons1(); break; - case 0xca88: showwatch(); break; - case 0xca8c: gettime(); break; - case 0xca90: zoomicon(); break; - case 0xca94: showblink(); break; - case 0xca98: dumpblink(); break; - case 0xca9c: worktoscreenm(); break; - case 0xcaa0: blank(); break; - case 0xcaa4: allpointer(); break; - case 0xcaa8: hangonp(); break; - case 0xcaac: hangonw(); break; - case 0xcab0: hangoncurs(); break; - case 0xcab4: getunderzoom(); break; - case 0xcab8: dumpzoom(); break; - case 0xcabc: putunderzoom(); break; - case 0xcac0: crosshair(); break; - case 0xcac4: showpointer(); break; - case 0xcac8: delpointer(); break; - case 0xcacc: dumppointer(); break; - case 0xcad0: undertextline(); break; - case 0xcad4: deltextline(); break; - case 0xcad8: dumptextline(); break; - case 0xcadc: animpointer(); break; - case 0xcae0: setmouse(); break; - case 0xcae4: readmouse(); break; - case 0xcae8: mousecall(); break; - case 0xcaec: readmouse1(); break; - case 0xcaf0: readmouse2(); break; - case 0xcaf4: readmouse3(); break; - case 0xcaf8: readmouse4(); break; - case 0xcafc: readkey(); break; - case 0xcb04: randomnum1(); break; - case 0xcb08: randomnum2(); break; - case 0xcb10: hangon(); break; - case 0xcb14: loadtraveltext(); break; - case 0xcb18: loadintotemp(); break; - case 0xcb1c: loadintotemp2(); break; - case 0xcb20: loadintotemp3(); break; - case 0xcb24: loadtempcharset(); break; - case 0xcb28: standardload(); break; - case 0xcb2c: loadtemptext(); break; - case 0xcb30: loadroom(); break; - case 0xcb34: loadroomssample(); break; - case 0xcb38: getridofreels(); break; - case 0xcb3c: getridofall(); break; - case 0xcb40: restorereels(); break; - case 0xcb44: restoreall(); break; - case 0xcb48: sortoutmap(); break; - case 0xcb4c: startloading(); break; - case 0xcb50: disablepath(); break; - case 0xcb54: findxyfrompath(); break; - case 0xcb58: findroominloc(); break; - case 0xcb5c: getroomdata(); break; - case 0xcb60: readheader(); break; - case 0xcb64: dontloadseg(); break; - case 0xcb68: allocateload(); break; - case 0xcb6c: fillspace(); break; - case 0xcb70: getridoftemp(); break; - case 0xcb74: getridoftemptext(); break; - case 0xcb78: getridoftemp2(); break; - case 0xcb7c: getridoftemp3(); break; - case 0xcb80: getridoftempcharset(); break; - case 0xcb84: getridoftempsp(); break; - case 0xcb88: readsetdata(); break; - case 0xcb8c: createfile(); break; - case 0xcb90: openfile(); break; - case 0xcb94: openfilefromc(); break; - case 0xcb98: makename(); break; - case 0xcb9c: openfilenocheck(); break; - case 0xcba0: openforsave(); break; - case 0xcba4: closefile(); break; - case 0xcba8: readfromfile(); break; - case 0xcbac: setkeyboardint(); break; - case 0xcbb0: resetkeyboard(); break; - case 0xcbb4: keyboardread(); break; - case 0xcbb8: walkandexamine(); break; - case 0xcbbc: doload(); break; - case 0xcbc0: generalerror(); break; + case addr_alleybarksound: alleybarksound(); break; + case addr_intromusic: intromusic(); break; + case addr_foghornsound: foghornsound(); break; + case addr_receptionist: receptionist(); break; + case addr_smokebloke: smokebloke(); break; + case addr_attendant: attendant(); break; + case addr_manasleep: manasleep(); break; + case addr_eden: eden(); break; + case addr_edeninbath: edeninbath(); break; + case addr_malefan: malefan(); break; + case addr_femalefan: femalefan(); break; + case addr_louis: louis(); break; + case addr_louischair: louischair(); break; + case addr_manasleep2: manasleep2(); break; + case addr_mansatstill: mansatstill(); break; + case addr_tattooman: tattooman(); break; + case addr_drinker: drinker(); break; + case addr_bartender: bartender(); break; + case addr_othersmoker: othersmoker(); break; + case addr_barwoman: barwoman(); break; + case addr_interviewer: interviewer(); break; + case addr_soldier1: soldier1(); break; + case addr_rockstar: rockstar(); break; + case addr_helicopter: helicopter(); break; + case addr_mugger: mugger(); break; + case addr_aide: aide(); break; + case addr_businessman: businessman(); break; + case addr_poolguard: poolguard(); break; + case addr_security: security(); break; + case addr_heavy: heavy(); break; + case addr_bossman: bossman(); break; + case addr_gamer: gamer(); break; + case addr_sparkydrip: sparkydrip(); break; + case addr_carparkdrip: carparkdrip(); break; + case addr_keeper: keeper(); break; + case addr_candles1: candles1(); break; + case addr_smallcandle: smallcandle(); break; + case addr_intromagic1: intromagic1(); break; + case addr_candles: candles(); break; + case addr_candles2: candles2(); break; + case addr_gates: gates(); break; + case addr_intromagic2: intromagic2(); break; + case addr_intromagic3: intromagic3(); break; + case addr_intromonks1: intromonks1(); break; + case addr_intromonks2: intromonks2(); break; + case addr_handclap: handclap(); break; + case addr_monks2text: monks2text(); break; + case addr_intro1text: intro1text(); break; + case addr_intro2text: intro2text(); break; + case addr_intro3text: intro3text(); break; + case addr_monkandryan: monkandryan(); break; + case addr_endgameseq: endgameseq(); break; + case addr_rollendcredits: rollendcredits(); break; + case addr_priest: priest(); break; + case addr_madmanstelly: madmanstelly(); break; + case addr_madman: madman(); break; + case addr_madmantext: madmantext(); break; + case addr_madmode: madmode(); break; + case addr_priesttext: priesttext(); break; + case addr_textforend: textforend(); break; + case addr_textformonk: textformonk(); break; + case addr_drunk: drunk(); break; + case addr_advisor: advisor(); break; + case addr_copper: copper(); break; + case addr_sparky: sparky(); break; + case addr_train: train(); break; + case addr_addtopeoplelist: addtopeoplelist(); break; + case addr_showgamereel: showgamereel(); break; + case addr_checkspeed: checkspeed(); break; + case addr_clearsprites: clearsprites(); break; + case addr_makesprite: makesprite(); break; + case addr_delsprite: delsprite(); break; + case addr_spriteupdate: spriteupdate(); break; + case addr_printsprites: printsprites(); break; + case addr_printasprite: printasprite(); break; + case addr_checkone: checkone(); break; + case addr_findsource: findsource(); break; + case addr_initman: initman(); break; + case addr_mainman: mainman(); break; + case addr_aboutturn: aboutturn(); break; + case addr_walking: walking(); break; + case addr_facerightway: facerightway(); break; + case addr_checkforexit: checkforexit(); break; + case addr_adjustdown: adjustdown(); break; + case addr_adjustup: adjustup(); break; + case addr_adjustleft: adjustleft(); break; + case addr_adjustright: adjustright(); break; + case addr_reminders: reminders(); break; + case addr_initrain: initrain(); break; + case addr_splitintolines: splitintolines(); break; + case addr_getblockofpixel: getblockofpixel(); break; + case addr_showrain: showrain(); break; + case addr_backobject: backobject(); break; + case addr_liftsprite: liftsprite(); break; + case addr_liftnoise: liftnoise(); break; + case addr_random: random(); break; + case addr_steady: steady(); break; + case addr_constant: constant(); break; + case addr_doorway: doorway(); break; + case addr_widedoor: widedoor(); break; + case addr_dodoor: dodoor(); break; + case addr_lockeddoorway: lockeddoorway(); break; + case addr_updatepeople: updatepeople(); break; + case addr_getreelframeax: getreelframeax(); break; + case addr_reelsonscreen: reelsonscreen(); break; + case addr_plotreel: plotreel(); break; + case addr_soundonreels: soundonreels(); break; + case addr_reconstruct: reconstruct(); break; + case addr_dealwithspecial: dealwithspecial(); break; + case addr_movemap: movemap(); break; + case addr_getreelstart: getreelstart(); break; + case addr_showreelframe: showreelframe(); break; + case addr_deleverything: deleverything(); break; + case addr_dumpeverything: dumpeverything(); break; + case addr_allocatework: allocatework(); break; + case addr_showpcx: showpcx(); break; + case addr_loadpalfromiff: loadpalfromiff(); break; + case addr_setmode: setmode(); break; + case addr_paneltomap: paneltomap(); break; + case addr_maptopanel: maptopanel(); break; + case addr_dumpmap: dumpmap(); break; + case addr_pixelcheckset: pixelcheckset(); break; + case addr_createpanel: createpanel(); break; + case addr_createpanel2: createpanel2(); break; + case addr_clearwork: clearwork(); break; + case addr_vsync: vsync(); break; + case addr_doshake: doshake(); break; + case addr_zoom: zoom(); break; + case addr_delthisone: delthisone(); break; + case addr_doblocks: doblocks(); break; + case addr_showframe: showframe(); break; + case addr_frameoutbh: frameoutbh(); break; + case addr_frameoutfx: frameoutfx(); break; + case addr_transferinv: transferinv(); break; + case addr_transfermap: transfermap(); break; + case addr_fadedos: fadedos(); break; + case addr_dofade: dofade(); break; + case addr_clearendpal: clearendpal(); break; + case addr_clearpalette: clearpalette(); break; + case addr_fadescreenup: fadescreenup(); break; + case addr_fadetowhite: fadetowhite(); break; + case addr_fadefromwhite: fadefromwhite(); break; + case addr_fadescreenups: fadescreenups(); break; + case addr_fadescreendownhalf: fadescreendownhalf(); break; + case addr_fadescreenuphalf: fadescreenuphalf(); break; + case addr_fadescreendown: fadescreendown(); break; + case addr_fadescreendowns: fadescreendowns(); break; + case addr_clearstartpal: clearstartpal(); break; + case addr_showgun: showgun(); break; + case addr_rollendcredits2: rollendcredits2(); break; + case addr_rollem: rollem(); break; + case addr_fadecalculation: fadecalculation(); break; + case addr_greyscalesum: greyscalesum(); break; + case addr_showgroup: showgroup(); break; + case addr_paltostartpal: paltostartpal(); break; + case addr_endpaltostart: endpaltostart(); break; + case addr_startpaltoend: startpaltoend(); break; + case addr_paltoendpal: paltoendpal(); break; + case addr_allpalette: allpalette(); break; + case addr_dumpcurrent: dumpcurrent(); break; + case addr_fadedownmon: fadedownmon(); break; + case addr_fadeupmon: fadeupmon(); break; + case addr_fadeupmonfirst: fadeupmonfirst(); break; + case addr_fadeupyellows: fadeupyellows(); break; + case addr_initialmoncols: initialmoncols(); break; + case addr_titles: titles(); break; + case addr_endgame: endgame(); break; + case addr_monkspeaking: monkspeaking(); break; + case addr_showmonk: showmonk(); break; + case addr_gettingshot: gettingshot(); break; + case addr_credits: credits(); break; + case addr_biblequote: biblequote(); break; + case addr_hangone: hangone(); break; + case addr_intro: intro(); break; + case addr_runintroseq: runintroseq(); break; + case addr_runendseq: runendseq(); break; + case addr_loadintroroom: loadintroroom(); break; + case addr_mode640x480: mode640x480(); break; + case addr_set16colpalette: set16colpalette(); break; + case addr_realcredits: realcredits(); break; + case addr_printchar: printchar(); break; + case addr_kernchars: kernchars(); break; + case addr_printslow: printslow(); break; + case addr_waitframes: waitframes(); break; + case addr_printboth: printboth(); break; + case addr_printdirect: printdirect(); break; + case addr_monprint: monprint(); break; + case addr_getnumber: getnumber(); break; + case addr_getnextword: getnextword(); break; + case addr_fillryan: fillryan(); break; + case addr_fillopen: fillopen(); break; + case addr_findallryan: findallryan(); break; + case addr_findallopen: findallopen(); break; + case addr_obtoinv: obtoinv(); break; + case addr_isitworn: isitworn(); break; + case addr_makeworn: makeworn(); break; + case addr_examineob: examineob(); break; + case addr_makemainscreen: makemainscreen(); break; + case addr_getbackfromob: getbackfromob(); break; + case addr_incryanpage: incryanpage(); break; + case addr_openinv: openinv(); break; + case addr_showryanpage: showryanpage(); break; + case addr_openob: openob(); break; + case addr_obicons: obicons(); break; + case addr_examicon: examicon(); break; + case addr_obpicture: obpicture(); break; + case addr_describeob: describeob(); break; + case addr_additionaltext: additionaltext(); break; + case addr_obsthatdothings: obsthatdothings(); break; + case addr_getobtextstart: getobtextstart(); break; + case addr_searchforsame: searchforsame(); break; + case addr_findnextcolon: findnextcolon(); break; + case addr_inventory: inventory(); break; + case addr_setpickup: setpickup(); break; + case addr_examinventory: examinventory(); break; + case addr_reexfrominv: reexfrominv(); break; + case addr_reexfromopen: reexfromopen(); break; + case addr_swapwithinv: swapwithinv(); break; + case addr_swapwithopen: swapwithopen(); break; + case addr_intoinv: intoinv(); break; + case addr_deletetaken: deletetaken(); break; + case addr_outofinv: outofinv(); break; + case addr_getfreead: getfreead(); break; + case addr_getexad: getexad(); break; + case addr_geteitherad: geteitherad(); break; + case addr_getanyad: getanyad(); break; + case addr_getanyaddir: getanyaddir(); break; + case addr_getopenedsize: getopenedsize(); break; + case addr_getsetad: getsetad(); break; + case addr_findinvpos: findinvpos(); break; + case addr_findopenpos: findopenpos(); break; + case addr_dropobject: dropobject(); break; + case addr_droperror: droperror(); break; + case addr_cantdrop: cantdrop(); break; + case addr_wornerror: wornerror(); break; + case addr_removeobfrominv: removeobfrominv(); break; + case addr_selectopenob: selectopenob(); break; + case addr_useopened: useopened(); break; + case addr_errormessage1: errormessage1(); break; + case addr_errormessage2: errormessage2(); break; + case addr_errormessage3: errormessage3(); break; + case addr_checkobjectsize: checkobjectsize(); break; + case addr_outofopen: outofopen(); break; + case addr_transfertoex: transfertoex(); break; + case addr_pickupconts: pickupconts(); break; + case addr_transfercontoex: transfercontoex(); break; + case addr_transfertext: transfertext(); break; + case addr_getexpos: getexpos(); break; + case addr_purgealocation: purgealocation(); break; + case addr_emergencypurge: emergencypurge(); break; + case addr_purgeanitem: purgeanitem(); break; + case addr_deleteexobject: deleteexobject(); break; + case addr_deleteexframe: deleteexframe(); break; + case addr_deleteextext: deleteextext(); break; + case addr_blockget: blockget(); break; + case addr_drawfloor: drawfloor(); break; + case addr_calcmapad: calcmapad(); break; + case addr_getdimension: getdimension(); break; + case addr_addalong: addalong(); break; + case addr_addlength: addlength(); break; + case addr_drawflags: drawflags(); break; + case addr_eraseoldobs: eraseoldobs(); break; + case addr_showallobs: showallobs(); break; + case addr_makebackob: makebackob(); break; + case addr_showallfree: showallfree(); break; + case addr_showallex: showallex(); break; + case addr_calcfrframe: calcfrframe(); break; + case addr_finalframe: finalframe(); break; + case addr_adjustlen: adjustlen(); break; + case addr_getmapad: getmapad(); break; + case addr_getxad: getxad(); break; + case addr_getyad: getyad(); break; + case addr_autolook: autolook(); break; + case addr_look: look(); break; + case addr_dolook: dolook(); break; + case addr_redrawmainscrn: redrawmainscrn(); break; + case addr_getback1: getback1(); break; + case addr_talk: talk(); break; + case addr_convicons: convicons(); break; + case addr_getpersframe: getpersframe(); break; + case addr_starttalk: starttalk(); break; + case addr_getpersontext: getpersontext(); break; + case addr_moretalk: moretalk(); break; + case addr_dosometalk: dosometalk(); break; + case addr_hangonpq: hangonpq(); break; + case addr_redes: redes(); break; + case addr_newplace: newplace(); break; + case addr_selectlocation: selectlocation(); break; + case addr_showcity: showcity(); break; + case addr_lookatplace: lookatplace(); break; + case addr_getundercentre: getundercentre(); break; + case addr_putundercentre: putundercentre(); break; + case addr_locationpic: locationpic(); break; + case addr_getdestinfo: getdestinfo(); break; + case addr_showarrows: showarrows(); break; + case addr_nextdest: nextdest(); break; + case addr_lastdest: lastdest(); break; + case addr_destselect: destselect(); break; + case addr_getlocation: getlocation(); break; + case addr_setlocation: setlocation(); break; + case addr_resetlocation: resetlocation(); break; + case addr_readdesticon: readdesticon(); break; + case addr_readcitypic: readcitypic(); break; + case addr_usemon: usemon(); break; + case addr_printoutermon: printoutermon(); break; + case addr_loadpersonal: loadpersonal(); break; + case addr_loadnews: loadnews(); break; + case addr_loadcart: loadcart(); break; + case addr_lookininterface: lookininterface(); break; + case addr_turnonpower: turnonpower(); break; + case addr_randomaccess: randomaccess(); break; + case addr_powerlighton: powerlighton(); break; + case addr_powerlightoff: powerlightoff(); break; + case addr_accesslighton: accesslighton(); break; + case addr_accesslightoff: accesslightoff(); break; + case addr_locklighton: locklighton(); break; + case addr_locklightoff: locklightoff(); break; + case addr_input: input(); break; + case addr_makecaps: makecaps(); break; + case addr_delchar: delchar(); break; + case addr_execcommand: execcommand(); break; + case addr_neterror: neterror(); break; + case addr_dircom: dircom(); break; + case addr_searchforfiles: searchforfiles(); break; + case addr_signon: signon(); break; + case addr_showkeys: showkeys(); break; + case addr_read: read(); break; + case addr_dirfile: dirfile(); break; + case addr_getkeyandlogo: getkeyandlogo(); break; + case addr_searchforstring: searchforstring(); break; + case addr_parser: parser(); break; + case addr_scrollmonitor: scrollmonitor(); break; + case addr_monitorlogo: monitorlogo(); break; + case addr_printlogo: printlogo(); break; + case addr_showcurrentfile: showcurrentfile(); break; + case addr_monmessage: monmessage(); break; + case addr_processtrigger: processtrigger(); break; + case addr_triggermessage: triggermessage(); break; + case addr_printcurs: printcurs(); break; + case addr_delcurs: delcurs(); break; + case addr_useobject: useobject(); break; + case addr_useroutine: useroutine(); break; + case addr_wheelsound: wheelsound(); break; + case addr_runtap: runtap(); break; + case addr_playguitar: playguitar(); break; + case addr_hotelcontrol: hotelcontrol(); break; + case addr_hotelbell: hotelbell(); break; + case addr_opentomb: opentomb(); break; + case addr_usetrainer: usetrainer(); break; + case addr_nothelderror: nothelderror(); break; + case addr_usepipe: usepipe(); break; + case addr_usefullcart: usefullcart(); break; + case addr_useplinth: useplinth(); break; + case addr_chewy: chewy(); break; + case addr_useladder: useladder(); break; + case addr_useladderb: useladderb(); break; + case addr_slabdoora: slabdoora(); break; + case addr_slabdoorb: slabdoorb(); break; + case addr_slabdoord: slabdoord(); break; + case addr_slabdoorc: slabdoorc(); break; + case addr_slabdoore: slabdoore(); break; + case addr_slabdoorf: slabdoorf(); break; + case addr_useslab: useslab(); break; + case addr_usecart: usecart(); break; + case addr_useclearbox: useclearbox(); break; + case addr_usecoveredbox: usecoveredbox(); break; + case addr_userailing: userailing(); break; + case addr_useopenbox: useopenbox(); break; + case addr_wearwatch: wearwatch(); break; + case addr_wearshades: wearshades(); break; + case addr_sitdowninbar: sitdowninbar(); break; + case addr_usechurchhole: usechurchhole(); break; + case addr_usehole: usehole(); break; + case addr_usealtar: usealtar(); break; + case addr_opentvdoor: opentvdoor(); break; + case addr_usedryer: usedryer(); break; + case addr_openlouis: openlouis(); break; + case addr_nextcolon: nextcolon(); break; + case addr_openyourneighbour: openyourneighbour(); break; + case addr_usewindow: usewindow(); break; + case addr_usebalcony: usebalcony(); break; + case addr_openryan: openryan(); break; + case addr_openpoolboss: openpoolboss(); break; + case addr_openeden: openeden(); break; + case addr_opensarters: opensarters(); break; + case addr_isitright: isitright(); break; + case addr_drawitall: drawitall(); break; + case addr_openhoteldoor: openhoteldoor(); break; + case addr_openhoteldoor2: openhoteldoor2(); break; + case addr_grafittidoor: grafittidoor(); break; + case addr_trapdoor: trapdoor(); break; + case addr_callhotellift: callhotellift(); break; + case addr_calledenslift: calledenslift(); break; + case addr_calledensdlift: calledensdlift(); break; + case addr_usepoolreader: usepoolreader(); break; + case addr_uselighter: uselighter(); break; + case addr_showseconduse: showseconduse(); break; + case addr_usecardreader1: usecardreader1(); break; + case addr_usecardreader2: usecardreader2(); break; + case addr_usecardreader3: usecardreader3(); break; + case addr_usecashcard: usecashcard(); break; + case addr_lookatcard: lookatcard(); break; + case addr_moneypoke: moneypoke(); break; + case addr_usecontrol: usecontrol(); break; + case addr_usehatch: usehatch(); break; + case addr_usewire: usewire(); break; + case addr_usehandle: usehandle(); break; + case addr_useelevator1: useelevator1(); break; + case addr_showfirstuse: showfirstuse(); break; + case addr_useelevator3: useelevator3(); break; + case addr_useelevator4: useelevator4(); break; + case addr_useelevator2: useelevator2(); break; + case addr_useelevator5: useelevator5(); break; + case addr_usekey: usekey(); break; + case addr_usestereo: usestereo(); break; + case addr_usecooker: usecooker(); break; + case addr_useaxe: useaxe(); break; + case addr_useelvdoor: useelvdoor(); break; + case addr_withwhat: withwhat(); break; + case addr_selectob: selectob(); break; + case addr_compare: compare(); break; + case addr_findsetobject: findsetobject(); break; + case addr_findexobject: findexobject(); break; + case addr_isryanholding: isryanholding(); break; + case addr_checkinside: checkinside(); break; + case addr_usetext: usetext(); break; + case addr_putbackobstuff: putbackobstuff(); break; + case addr_showpuztext: showpuztext(); break; + case addr_findpuztext: findpuztext(); break; + case addr_placesetobject: placesetobject(); break; + case addr_removesetobject: removesetobject(); break; + case addr_issetobonmap: issetobonmap(); break; + case addr_placefreeobject: placefreeobject(); break; + case addr_removefreeobject: removefreeobject(); break; + case addr_findormake: findormake(); break; + case addr_switchryanon: switchryanon(); break; + case addr_switchryanoff: switchryanoff(); break; + case addr_setallchanges: setallchanges(); break; + case addr_dochange: dochange(); break; + case addr_autoappear: autoappear(); break; + case addr_getundertimed: getundertimed(); break; + case addr_putundertimed: putundertimed(); break; + case addr_dumptimedtext: dumptimedtext(); break; + case addr_setuptimeduse: setuptimeduse(); break; + case addr_setuptimedtemp: setuptimedtemp(); break; + case addr_usetimedtext: usetimedtext(); break; + case addr_edenscdplayer: edenscdplayer(); break; + case addr_usewall: usewall(); break; + case addr_usechurchgate: usechurchgate(); break; + case addr_usegun: usegun(); break; + case addr_useshield: useshield(); break; + case addr_usebuttona: usebuttona(); break; + case addr_useplate: useplate(); break; + case addr_usewinch: usewinch(); break; + case addr_entercode: entercode(); break; + case addr_loadkeypad: loadkeypad(); break; + case addr_quitkey: quitkey(); break; + case addr_addtopresslist: addtopresslist(); break; + case addr_buttonone: buttonone(); break; + case addr_buttontwo: buttontwo(); break; + case addr_buttonthree: buttonthree(); break; + case addr_buttonfour: buttonfour(); break; + case addr_buttonfive: buttonfive(); break; + case addr_buttonsix: buttonsix(); break; + case addr_buttonseven: buttonseven(); break; + case addr_buttoneight: buttoneight(); break; + case addr_buttonnine: buttonnine(); break; + case addr_buttonnought: buttonnought(); break; + case addr_buttonenter: buttonenter(); break; + case addr_buttonpress: buttonpress(); break; + case addr_showouterpad: showouterpad(); break; + case addr_showkeypad: showkeypad(); break; + case addr_singlekey: singlekey(); break; + case addr_dumpkeypad: dumpkeypad(); break; + case addr_usemenu: usemenu(); break; + case addr_dumpmenu: dumpmenu(); break; + case addr_getundermenu: getundermenu(); break; + case addr_putundermenu: putundermenu(); break; + case addr_showoutermenu: showoutermenu(); break; + case addr_showmenu: showmenu(); break; + case addr_loadmenu: loadmenu(); break; + case addr_viewfolder: viewfolder(); break; + case addr_nextfolder: nextfolder(); break; + case addr_folderhints: folderhints(); break; + case addr_lastfolder: lastfolder(); break; + case addr_loadfolder: loadfolder(); break; + case addr_showfolder: showfolder(); break; + case addr_folderexit: folderexit(); break; + case addr_showleftpage: showleftpage(); break; + case addr_showrightpage: showrightpage(); break; + case addr_entersymbol: entersymbol(); break; + case addr_quitsymbol: quitsymbol(); break; + case addr_settopleft: settopleft(); break; + case addr_settopright: settopright(); break; + case addr_setbotleft: setbotleft(); break; + case addr_setbotright: setbotright(); break; + case addr_dumpsymbol: dumpsymbol(); break; + case addr_showsymbol: showsymbol(); break; + case addr_nextsymbol: nextsymbol(); break; + case addr_updatesymboltop: updatesymboltop(); break; + case addr_updatesymbolbot: updatesymbolbot(); break; + case addr_dumpsymbox: dumpsymbox(); break; + case addr_usediary: usediary(); break; + case addr_showdiary: showdiary(); break; + case addr_showdiarykeys: showdiarykeys(); break; + case addr_dumpdiarykeys: dumpdiarykeys(); break; + case addr_diarykeyp: diarykeyp(); break; + case addr_diarykeyn: diarykeyn(); break; + case addr_showdiarypage: showdiarypage(); break; + case addr_findtext1: findtext1(); break; + case addr_zoomonoff: zoomonoff(); break; + case addr_saveload: saveload(); break; + case addr_dosaveload: dosaveload(); break; + case addr_getbackfromops: getbackfromops(); break; + case addr_showmainops: showmainops(); break; + case addr_showdiscops: showdiscops(); break; + case addr_loadsavebox: loadsavebox(); break; + case addr_loadgame: loadgame(); break; + case addr_getbacktoops: getbacktoops(); break; + case addr_discops: discops(); break; + case addr_savegame: savegame(); break; + case addr_actualsave: actualsave(); break; + case addr_actualload: actualload(); break; + case addr_selectslot2: selectslot2(); break; + case addr_checkinput: checkinput(); break; + case addr_getnamepos: getnamepos(); break; + case addr_showopbox: showopbox(); break; + case addr_showloadops: showloadops(); break; + case addr_showsaveops: showsaveops(); break; + case addr_selectslot: selectslot(); break; + case addr_showslots: showslots(); break; + case addr_shownames: shownames(); break; + case addr_dosreturn: dosreturn(); break; + case addr_error: error(); break; + case addr_namestoold: namestoold(); break; + case addr_oldtonames: oldtonames(); break; + case addr_savefilewrite: savefilewrite(); break; + case addr_savefileread: savefileread(); break; + case addr_saveposition: saveposition(); break; + case addr_loadposition: loadposition(); break; + case addr_loadseg: loadseg(); break; + case addr_makeheader: makeheader(); break; + case addr_storeit: storeit(); break; + case addr_saveseg: saveseg(); break; + case addr_findlen: findlen(); break; + case addr_scanfornames: scanfornames(); break; + case addr_decide: decide(); break; + case addr_showdecisions: showdecisions(); break; + case addr_newgame: newgame(); break; + case addr_loadold: loadold(); break; + case addr_loadspeech: loadspeech(); break; + case addr_createname: createname(); break; + case addr_loadsample: loadsample(); break; + case addr_loadsecondsample: loadsecondsample(); break; + case addr_soundstartup: soundstartup(); break; + case addr_trysoundalloc: trysoundalloc(); break; + case addr_setsoundoff: setsoundoff(); break; + case addr_checksoundint: checksoundint(); break; + case addr_enablesoundint: enablesoundint(); break; + case addr_disablesoundint: disablesoundint(); break; + case addr_interupttest: interupttest(); break; + case addr_soundend: soundend(); break; + case addr_out22c: out22c(); break; + case addr_playchannel0: playchannel0(); break; + case addr_playchannel1: playchannel1(); break; + case addr_makenextblock: makenextblock(); break; + case addr_volumeadjust: volumeadjust(); break; + case addr_loopchannel0: loopchannel0(); break; + case addr_cancelch0: cancelch0(); break; + case addr_cancelch1: cancelch1(); break; + case addr_channel0only: channel0only(); break; + case addr_channel1only: channel1only(); break; + case addr_channel0tran: channel0tran(); break; + case addr_bothchannels: bothchannels(); break; + case addr_saveems: saveems(); break; + case addr_restoreems: restoreems(); break; + case addr_domix: domix(); break; + case addr_dmaend: dmaend(); break; + case addr_startdmablock: startdmablock(); break; + case addr_setuppit: setuppit(); break; + case addr_getridofpit: getridofpit(); break; + case addr_pitinterupt: pitinterupt(); break; + case addr_dreamweb: dreamweb(); break; + case addr_entrytexts: entrytexts(); break; + case addr_entryanims: entryanims(); break; + case addr_initialinv: initialinv(); break; + case addr_pickupob: pickupob(); break; + case addr_setupemm: setupemm(); break; + case addr_removeemm: removeemm(); break; + case addr_checkforemm: checkforemm(); break; + case addr_checkbasemem: checkbasemem(); break; + case addr_allocatebuffers: allocatebuffers(); break; + case addr_clearbuffers: clearbuffers(); break; + case addr_clearchanges: clearchanges(); break; + case addr_clearbeforeload: clearbeforeload(); break; + case addr_clearreels: clearreels(); break; + case addr_clearrest: clearrest(); break; + case addr_deallocatemem: deallocatemem(); break; + case addr_allocatemem: allocatemem(); break; + case addr_parseblaster: parseblaster(); break; + case addr_startup: startup(); break; + case addr_startup1: startup1(); break; + case addr_screenupdate: screenupdate(); break; + case addr_watchreel: watchreel(); break; + case addr_checkforshake: checkforshake(); break; + case addr_watchcount: watchcount(); break; + case addr_showtime: showtime(); break; + case addr_dumpwatch: dumpwatch(); break; + case addr_showbyte: showbyte(); break; + case addr_onedigit: onedigit(); break; + case addr_twodigitnum: twodigitnum(); break; + case addr_showword: showword(); break; + case addr_convnum: convnum(); break; + case addr_mainscreen: mainscreen(); break; + case addr_madmanrun: madmanrun(); break; + case addr_checkcoords: checkcoords(); break; + case addr_identifyob: identifyob(); break; + case addr_checkifperson: checkifperson(); break; + case addr_checkifset: checkifset(); break; + case addr_checkifex: checkifex(); break; + case addr_checkiffree: checkiffree(); break; + case addr_isitdescribed: isitdescribed(); break; + case addr_findpathofpoint: findpathofpoint(); break; + case addr_findfirstpath: findfirstpath(); break; + case addr_turnpathon: turnpathon(); break; + case addr_turnpathoff: turnpathoff(); break; + case addr_turnanypathon: turnanypathon(); break; + case addr_turnanypathoff: turnanypathoff(); break; + case addr_checkifpathison: checkifpathison(); break; + case addr_afternewroom: afternewroom(); break; + case addr_atmospheres: atmospheres(); break; + case addr_walkintoroom: walkintoroom(); break; + case addr_afterintroroom: afterintroroom(); break; + case addr_obname: obname(); break; + case addr_finishedwalking: finishedwalking(); break; + case addr_examineobtext: examineobtext(); break; + case addr_commandwithob: commandwithob(); break; + case addr_commandonly: commandonly(); break; + case addr_printmessage: printmessage(); break; + case addr_printmessage2: printmessage2(); break; + case addr_blocknametext: blocknametext(); break; + case addr_personnametext: personnametext(); break; + case addr_walktotext: walktotext(); break; + case addr_getflagunderp: getflagunderp(); break; + case addr_setwalk: setwalk(); break; + case addr_autosetwalk: autosetwalk(); break; + case addr_checkdest: checkdest(); break; + case addr_bresenhams: bresenhams(); break; + case addr_workoutframes: workoutframes(); break; + case addr_getroomspaths: getroomspaths(); break; + case addr_copyname: copyname(); break; + case addr_findobname: findobname(); break; + case addr_showicon: showicon(); break; + case addr_middlepanel: middlepanel(); break; + case addr_showman: showman(); break; + case addr_showpanel: showpanel(); break; + case addr_roomname: roomname(); break; + case addr_usecharset1: usecharset1(); break; + case addr_usetempcharset: usetempcharset(); break; + case addr_showexit: showexit(); break; + case addr_panelicons1: panelicons1(); break; + case addr_showwatch: showwatch(); break; + case addr_gettime: gettime(); break; + case addr_zoomicon: zoomicon(); break; + case addr_showblink: showblink(); break; + case addr_dumpblink: dumpblink(); break; + case addr_worktoscreenm: worktoscreenm(); break; + case addr_blank: blank(); break; + case addr_allpointer: allpointer(); break; + case addr_hangonp: hangonp(); break; + case addr_hangonw: hangonw(); break; + case addr_hangoncurs: hangoncurs(); break; + case addr_getunderzoom: getunderzoom(); break; + case addr_dumpzoom: dumpzoom(); break; + case addr_putunderzoom: putunderzoom(); break; + case addr_crosshair: crosshair(); break; + case addr_showpointer: showpointer(); break; + case addr_delpointer: delpointer(); break; + case addr_dumppointer: dumppointer(); break; + case addr_undertextline: undertextline(); break; + case addr_deltextline: deltextline(); break; + case addr_dumptextline: dumptextline(); break; + case addr_animpointer: animpointer(); break; + case addr_setmouse: setmouse(); break; + case addr_readmouse: readmouse(); break; + case addr_mousecall: mousecall(); break; + case addr_readmouse1: readmouse1(); break; + case addr_readmouse2: readmouse2(); break; + case addr_readmouse3: readmouse3(); break; + case addr_readmouse4: readmouse4(); break; + case addr_readkey: readkey(); break; + case addr_randomnum1: randomnum1(); break; + case addr_randomnum2: randomnum2(); break; + case addr_hangon: hangon(); break; + case addr_loadtraveltext: loadtraveltext(); break; + case addr_loadintotemp: loadintotemp(); break; + case addr_loadintotemp2: loadintotemp2(); break; + case addr_loadintotemp3: loadintotemp3(); break; + case addr_loadtempcharset: loadtempcharset(); break; + case addr_standardload: standardload(); break; + case addr_loadtemptext: loadtemptext(); break; + case addr_loadroom: loadroom(); break; + case addr_loadroomssample: loadroomssample(); break; + case addr_getridofreels: getridofreels(); break; + case addr_getridofall: getridofall(); break; + case addr_restorereels: restorereels(); break; + case addr_restoreall: restoreall(); break; + case addr_sortoutmap: sortoutmap(); break; + case addr_startloading: startloading(); break; + case addr_disablepath: disablepath(); break; + case addr_findxyfrompath: findxyfrompath(); break; + case addr_findroominloc: findroominloc(); break; + case addr_getroomdata: getroomdata(); break; + case addr_readheader: readheader(); break; + case addr_dontloadseg: dontloadseg(); break; + case addr_allocateload: allocateload(); break; + case addr_fillspace: fillspace(); break; + case addr_getridoftemp: getridoftemp(); break; + case addr_getridoftemptext: getridoftemptext(); break; + case addr_getridoftemp2: getridoftemp2(); break; + case addr_getridoftemp3: getridoftemp3(); break; + case addr_getridoftempcharset: getridoftempcharset(); break; + case addr_getridoftempsp: getridoftempsp(); break; + case addr_readsetdata: readsetdata(); break; + case addr_createfile: createfile(); break; + case addr_openfile: openfile(); break; + case addr_openfilefromc: openfilefromc(); break; + case addr_makename: makename(); break; + case addr_openfilenocheck: openfilenocheck(); break; + case addr_openforsave: openforsave(); break; + case addr_closefile: closefile(); break; + case addr_readfromfile: readfromfile(); break; + case addr_setkeyboardint: setkeyboardint(); break; + case addr_resetkeyboard: resetkeyboard(); break; + case addr_keyboardread: keyboardread(); break; + case addr_walkandexamine: walkandexamine(); break; + case addr_doload: doload(); break; + case addr_generalerror: generalerror(); break; default: ::error("invalid call to %04x dispatched", (uint16)ax); } } diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index 08053b6f546..857d912ad00 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -7,12 +7,751 @@ #include "dreamweb/runtime.h" namespace DreamGen { - +#include "structs.h" class DreamGenContext : public Context { public: void __start(); void __dispatch_call(uint16 addr); +#include "stubs.h" // Allow hand-reversed functions to have a signature different than void f() + static const uint16 addr_dreamweb = 0xc948; + static const uint16 addr_keyboardread = 0xcbb4; + static const uint16 addr_resetkeyboard = 0xcbb0; + static const uint16 addr_setkeyboardint = 0xcbac; + static const uint16 addr_readfromfile = 0xcba8; + static const uint16 addr_closefile = 0xcba4; + static const uint16 addr_openforsave = 0xcba0; + static const uint16 addr_openfilenocheck = 0xcb9c; + static const uint16 addr_makename = 0xcb98; + static const uint16 addr_openfilefromc = 0xcb94; + static const uint16 addr_openfile = 0xcb90; + static const uint16 addr_createfile = 0xcb8c; + static const uint16 addr_readsetdata = 0xcb88; + static const uint16 addr_getridoftempsp = 0xcb84; + static const uint16 addr_getridoftempcharset = 0xcb80; + static const uint16 addr_getridoftemp3 = 0xcb7c; + static const uint16 addr_getridoftemp2 = 0xcb78; + static const uint16 addr_getridoftemptext = 0xcb74; + static const uint16 addr_getridoftemp = 0xcb70; + static const uint16 addr_fillspace = 0xcb6c; + static const uint16 addr_allocateload = 0xcb68; + static const uint16 addr_dontloadseg = 0xcb64; + static const uint16 addr_readheader = 0xcb60; + static const uint16 addr_getroomdata = 0xcb5c; + static const uint16 addr_findroominloc = 0xcb58; + static const uint16 addr_findxyfrompath = 0xcb54; + static const uint16 addr_disablepath = 0xcb50; + static const uint16 addr_startloading = 0xcb4c; + static const uint16 addr_sortoutmap = 0xcb48; + static const uint16 addr_restoreall = 0xcb44; + static const uint16 addr_restorereels = 0xcb40; + static const uint16 addr_getridofall = 0xcb3c; + static const uint16 addr_getridofreels = 0xcb38; + static const uint16 addr_loadroomssample = 0xcb34; + static const uint16 addr_loadroom = 0xcb30; + static const uint16 addr_loadtemptext = 0xcb2c; + static const uint16 addr_standardload = 0xcb28; + static const uint16 addr_loadtempcharset = 0xcb24; + static const uint16 addr_loadintotemp3 = 0xcb20; + static const uint16 addr_loadintotemp2 = 0xcb1c; + static const uint16 addr_loadintotemp = 0xcb18; + static const uint16 addr_loadtraveltext = 0xcb14; + static const uint16 addr_hangon = 0xcb10; + static const uint16 addr_randomnum2 = 0xcb08; + static const uint16 addr_randomnum1 = 0xcb04; + static const uint16 addr_readkey = 0xcafc; + static const uint16 addr_readmouse4 = 0xcaf8; + static const uint16 addr_readmouse3 = 0xcaf4; + static const uint16 addr_readmouse2 = 0xcaf0; + static const uint16 addr_readmouse1 = 0xcaec; + static const uint16 addr_mousecall = 0xcae8; + static const uint16 addr_readmouse = 0xcae4; + static const uint16 addr_setmouse = 0xcae0; + static const uint16 addr_animpointer = 0xcadc; + static const uint16 addr_dumptextline = 0xcad8; + static const uint16 addr_deltextline = 0xcad4; + static const uint16 addr_undertextline = 0xcad0; + static const uint16 addr_dumppointer = 0xcacc; + static const uint16 addr_delpointer = 0xcac8; + static const uint16 addr_showpointer = 0xcac4; + static const uint16 addr_crosshair = 0xcac0; + static const uint16 addr_putunderzoom = 0xcabc; + static const uint16 addr_dumpzoom = 0xcab8; + static const uint16 addr_getunderzoom = 0xcab4; + static const uint16 addr_hangoncurs = 0xcab0; + static const uint16 addr_hangonw = 0xcaac; + static const uint16 addr_hangonp = 0xcaa8; + static const uint16 addr_allpointer = 0xcaa4; + static const uint16 addr_blank = 0xcaa0; + static const uint16 addr_worktoscreenm = 0xca9c; + static const uint16 addr_dumpblink = 0xca98; + static const uint16 addr_showblink = 0xca94; + static const uint16 addr_zoomicon = 0xca90; + static const uint16 addr_gettime = 0xca8c; + static const uint16 addr_showwatch = 0xca88; + static const uint16 addr_panelicons1 = 0xca84; + static const uint16 addr_showexit = 0xca80; + static const uint16 addr_usetempcharset = 0xca7c; + static const uint16 addr_usecharset1 = 0xca78; + static const uint16 addr_roomname = 0xca74; + static const uint16 addr_showpanel = 0xca70; + static const uint16 addr_showman = 0xca6c; + static const uint16 addr_middlepanel = 0xca68; + static const uint16 addr_showicon = 0xca64; + static const uint16 addr_findobname = 0xca60; + static const uint16 addr_copyname = 0xca5c; + static const uint16 addr_getroomspaths = 0xca58; + static const uint16 addr_workoutframes = 0xca54; + static const uint16 addr_bresenhams = 0xca50; + static const uint16 addr_checkdest = 0xca4c; + static const uint16 addr_autosetwalk = 0xca48; + static const uint16 addr_setwalk = 0xca44; + static const uint16 addr_getflagunderp = 0xca40; + static const uint16 addr_walktotext = 0xca3c; + static const uint16 addr_personnametext = 0xca38; + static const uint16 addr_blocknametext = 0xca34; + static const uint16 addr_printmessage2 = 0xca30; + static const uint16 addr_printmessage = 0xca2c; + static const uint16 addr_commandonly = 0xca28; + static const uint16 addr_commandwithob = 0xca24; + static const uint16 addr_examineobtext = 0xca20; + static const uint16 addr_finishedwalking = 0xca1c; + static const uint16 addr_obname = 0xca18; + static const uint16 addr_afterintroroom = 0xca14; + static const uint16 addr_walkintoroom = 0xca10; + static const uint16 addr_atmospheres = 0xca0c; + static const uint16 addr_afternewroom = 0xca08; + static const uint16 addr_checkifpathison = 0xca04; + static const uint16 addr_turnanypathoff = 0xca00; + static const uint16 addr_turnanypathon = 0xc9fc; + static const uint16 addr_turnpathoff = 0xc9f8; + static const uint16 addr_turnpathon = 0xc9f4; + static const uint16 addr_findfirstpath = 0xc9f0; + static const uint16 addr_findpathofpoint = 0xc9ec; + static const uint16 addr_isitdescribed = 0xc9e8; + static const uint16 addr_checkiffree = 0xc9e4; + static const uint16 addr_checkifex = 0xc9e0; + static const uint16 addr_checkifset = 0xc9dc; + static const uint16 addr_checkifperson = 0xc9d8; + static const uint16 addr_identifyob = 0xc9d4; + static const uint16 addr_checkcoords = 0xc9d0; + static const uint16 addr_madmanrun = 0xc9cc; + static const uint16 addr_mainscreen = 0xc9c8; + static const uint16 addr_walkandexamine = 0xcbb8; + static const uint16 addr_convnum = 0xc9c4; + static const uint16 addr_showword = 0xc9c0; + static const uint16 addr_twodigitnum = 0xc9bc; + static const uint16 addr_onedigit = 0xc9b8; + static const uint16 addr_showbyte = 0xc9b4; + static const uint16 addr_dumpwatch = 0xc9b0; + static const uint16 addr_showtime = 0xc9ac; + static const uint16 addr_watchcount = 0xc9a8; + static const uint16 addr_checkforshake = 0xc9a4; + static const uint16 addr_watchreel = 0xc9a0; + static const uint16 addr_screenupdate = 0xc99c; + static const uint16 addr_startup1 = 0xc998; + static const uint16 addr_startup = 0xc994; + static const uint16 addr_parseblaster = 0xc990; + static const uint16 addr_allocatemem = 0xc988; + static const uint16 addr_deallocatemem = 0xc984; + static const uint16 addr_clearrest = 0xc980; + static const uint16 addr_clearreels = 0xc97c; + static const uint16 addr_clearbeforeload = 0xc978; + static const uint16 addr_clearchanges = 0xc974; + static const uint16 addr_clearbuffers = 0xc970; + static const uint16 addr_allocatebuffers = 0xc96c; + static const uint16 addr_checkbasemem = 0xc968; + static const uint16 addr_checkforemm = 0xc964; + static const uint16 addr_removeemm = 0xc960; + static const uint16 addr_setupemm = 0xc95c; + static const uint16 addr_pickupob = 0xc958; + static const uint16 addr_initialinv = 0xc954; + static const uint16 addr_entryanims = 0xc950; + static const uint16 addr_entrytexts = 0xc94c; + static const uint16 addr_pitinterupt = 0xc944; + static const uint16 addr_getridofpit = 0xc940; + static const uint16 addr_setuppit = 0xc93c; + static const uint16 addr_startdmablock = 0xc938; + static const uint16 addr_dmaend = 0xc934; + static const uint16 addr_domix = 0xc930; + static const uint16 addr_restoreems = 0xc92c; + static const uint16 addr_saveems = 0xc928; + static const uint16 addr_bothchannels = 0xc924; + static const uint16 addr_channel0tran = 0xc920; + static const uint16 addr_channel1only = 0xc91c; + static const uint16 addr_channel0only = 0xc918; + static const uint16 addr_cancelch1 = 0xc914; + static const uint16 addr_cancelch0 = 0xc910; + static const uint16 addr_loopchannel0 = 0xc90c; + static const uint16 addr_volumeadjust = 0xc908; + static const uint16 addr_makenextblock = 0xc904; + static const uint16 addr_playchannel1 = 0xc900; + static const uint16 addr_playchannel0 = 0xc8fc; + static const uint16 addr_out22c = 0xc8f8; + static const uint16 addr_soundend = 0xc8f4; + static const uint16 addr_interupttest = 0xc8f0; + static const uint16 addr_disablesoundint = 0xc8ec; + static const uint16 addr_enablesoundint = 0xc8e8; + static const uint16 addr_checksoundint = 0xc8e4; + static const uint16 addr_setsoundoff = 0xc8e0; + static const uint16 addr_trysoundalloc = 0xc8dc; + static const uint16 addr_soundstartup = 0xc8d8; + static const uint16 addr_loadsecondsample = 0xc8d4; + static const uint16 addr_loadsample = 0xc8d0; + static const uint16 addr_createname = 0xc8cc; + static const uint16 addr_loadspeech = 0xc8c8; + static const uint16 addr_loadold = 0xc8c4; + static const uint16 addr_doload = 0xcbbc; + static const uint16 addr_newgame = 0xc8c0; + static const uint16 addr_showdecisions = 0xc8bc; + static const uint16 addr_decide = 0xc8b8; + static const uint16 addr_scanfornames = 0xc8b4; + static const uint16 addr_findlen = 0xc8b0; + static const uint16 addr_saveseg = 0xc8ac; + static const uint16 addr_storeit = 0xc8a8; + static const uint16 addr_makeheader = 0xc8a4; + static const uint16 addr_loadseg = 0xc8a0; + static const uint16 addr_loadposition = 0xc89c; + static const uint16 addr_saveposition = 0xc898; + static const uint16 addr_savefileread = 0xc894; + static const uint16 addr_savefilewrite = 0xc890; + static const uint16 addr_oldtonames = 0xc88c; + static const uint16 addr_namestoold = 0xc888; + static const uint16 addr_error = 0xc884; + static const uint16 addr_generalerror = 0xcbc0; + static const uint16 addr_dosreturn = 0xc880; + static const uint16 addr_shownames = 0xc87c; + static const uint16 addr_showslots = 0xc878; + static const uint16 addr_selectslot = 0xc874; + static const uint16 addr_showsaveops = 0xc870; + static const uint16 addr_showloadops = 0xc86c; + static const uint16 addr_showopbox = 0xc868; + static const uint16 addr_getnamepos = 0xc864; + static const uint16 addr_checkinput = 0xc860; + static const uint16 addr_selectslot2 = 0xc85c; + static const uint16 addr_actualload = 0xc858; + static const uint16 addr_actualsave = 0xc854; + static const uint16 addr_savegame = 0xc850; + static const uint16 addr_discops = 0xc84c; + static const uint16 addr_getbacktoops = 0xc848; + static const uint16 addr_loadgame = 0xc844; + static const uint16 addr_loadsavebox = 0xc840; + static const uint16 addr_showdiscops = 0xc83c; + static const uint16 addr_showmainops = 0xc838; + static const uint16 addr_getbackfromops = 0xc834; + static const uint16 addr_dosaveload = 0xc830; + static const uint16 addr_saveload = 0xc82c; + static const uint16 addr_zoomonoff = 0xc828; + static const uint16 addr_findtext1 = 0xc824; + static const uint16 addr_showdiarypage = 0xc820; + static const uint16 addr_diarykeyn = 0xc81c; + static const uint16 addr_diarykeyp = 0xc818; + static const uint16 addr_dumpdiarykeys = 0xc814; + static const uint16 addr_showdiarykeys = 0xc810; + static const uint16 addr_showdiary = 0xc80c; + static const uint16 addr_usediary = 0xc808; + static const uint16 addr_dumpsymbox = 0xc804; + static const uint16 addr_updatesymbolbot = 0xc800; + static const uint16 addr_updatesymboltop = 0xc7fc; + static const uint16 addr_nextsymbol = 0xc7f8; + static const uint16 addr_showsymbol = 0xc7f4; + static const uint16 addr_dumpsymbol = 0xc7f0; + static const uint16 addr_setbotright = 0xc7ec; + static const uint16 addr_setbotleft = 0xc7e8; + static const uint16 addr_settopright = 0xc7e4; + static const uint16 addr_settopleft = 0xc7e0; + static const uint16 addr_quitsymbol = 0xc7dc; + static const uint16 addr_entersymbol = 0xc7d8; + static const uint16 addr_showrightpage = 0xc7d4; + static const uint16 addr_showleftpage = 0xc7d0; + static const uint16 addr_folderexit = 0xc7cc; + static const uint16 addr_showfolder = 0xc7c8; + static const uint16 addr_loadfolder = 0xc7c4; + static const uint16 addr_lastfolder = 0xc7c0; + static const uint16 addr_folderhints = 0xc7bc; + static const uint16 addr_nextfolder = 0xc7b8; + static const uint16 addr_viewfolder = 0xc7b4; + static const uint16 addr_loadmenu = 0xc7b0; + static const uint16 addr_showmenu = 0xc7ac; + static const uint16 addr_showoutermenu = 0xc7a8; + static const uint16 addr_putundermenu = 0xc7a4; + static const uint16 addr_getundermenu = 0xc7a0; + static const uint16 addr_dumpmenu = 0xc79c; + static const uint16 addr_usemenu = 0xc798; + static const uint16 addr_dumpkeypad = 0xc794; + static const uint16 addr_singlekey = 0xc790; + static const uint16 addr_showkeypad = 0xc78c; + static const uint16 addr_showouterpad = 0xc788; + static const uint16 addr_buttonpress = 0xc784; + static const uint16 addr_buttonenter = 0xc780; + static const uint16 addr_buttonnought = 0xc77c; + static const uint16 addr_buttonnine = 0xc778; + static const uint16 addr_buttoneight = 0xc774; + static const uint16 addr_buttonseven = 0xc770; + static const uint16 addr_buttonsix = 0xc76c; + static const uint16 addr_buttonfive = 0xc768; + static const uint16 addr_buttonfour = 0xc764; + static const uint16 addr_buttonthree = 0xc760; + static const uint16 addr_buttontwo = 0xc75c; + static const uint16 addr_buttonone = 0xc758; + static const uint16 addr_addtopresslist = 0xc754; + static const uint16 addr_quitkey = 0xc750; + static const uint16 addr_loadkeypad = 0xc74c; + static const uint16 addr_entercode = 0xc748; + static const uint16 addr_usewinch = 0xc744; + static const uint16 addr_useplate = 0xc740; + static const uint16 addr_usebuttona = 0xc73c; + static const uint16 addr_useshield = 0xc738; + static const uint16 addr_usegun = 0xc734; + static const uint16 addr_usechurchgate = 0xc730; + static const uint16 addr_usewall = 0xc72c; + static const uint16 addr_edenscdplayer = 0xc728; + static const uint16 addr_usetimedtext = 0xc724; + static const uint16 addr_setuptimedtemp = 0xc720; + static const uint16 addr_setuptimeduse = 0xc71c; + static const uint16 addr_dumptimedtext = 0xc718; + static const uint16 addr_putundertimed = 0xc714; + static const uint16 addr_getundertimed = 0xc710; + static const uint16 addr_autoappear = 0xc70c; + static const uint16 addr_dochange = 0xc708; + static const uint16 addr_setallchanges = 0xc704; + static const uint16 addr_switchryanoff = 0xc700; + static const uint16 addr_switchryanon = 0xc6fc; + static const uint16 addr_findormake = 0xc6f8; + static const uint16 addr_removefreeobject = 0xc6f4; + static const uint16 addr_placefreeobject = 0xc6f0; + static const uint16 addr_issetobonmap = 0xc6ec; + static const uint16 addr_removesetobject = 0xc6e8; + static const uint16 addr_placesetobject = 0xc6e4; + static const uint16 addr_findpuztext = 0xc6e0; + static const uint16 addr_showpuztext = 0xc6dc; + static const uint16 addr_putbackobstuff = 0xc6d8; + static const uint16 addr_usetext = 0xc6d4; + static const uint16 addr_checkinside = 0xc6d0; + static const uint16 addr_isryanholding = 0xc6cc; + static const uint16 addr_findexobject = 0xc6c8; + static const uint16 addr_findsetobject = 0xc6c4; + static const uint16 addr_compare = 0xc6c0; + static const uint16 addr_selectob = 0xc6bc; + static const uint16 addr_withwhat = 0xc6b8; + static const uint16 addr_useelvdoor = 0xc6b4; + static const uint16 addr_useaxe = 0xc6b0; + static const uint16 addr_usecooker = 0xc6ac; + static const uint16 addr_usestereo = 0xc6a8; + static const uint16 addr_usekey = 0xc6a4; + static const uint16 addr_useelevator5 = 0xc6a0; + static const uint16 addr_useelevator2 = 0xc69c; + static const uint16 addr_useelevator4 = 0xc698; + static const uint16 addr_useelevator3 = 0xc694; + static const uint16 addr_showfirstuse = 0xc690; + static const uint16 addr_useelevator1 = 0xc68c; + static const uint16 addr_usehandle = 0xc688; + static const uint16 addr_usewire = 0xc684; + static const uint16 addr_usehatch = 0xc680; + static const uint16 addr_usecontrol = 0xc67c; + static const uint16 addr_moneypoke = 0xc678; + static const uint16 addr_lookatcard = 0xc674; + static const uint16 addr_usecashcard = 0xc670; + static const uint16 addr_usecardreader3 = 0xc66c; + static const uint16 addr_usecardreader2 = 0xc668; + static const uint16 addr_usecardreader1 = 0xc664; + static const uint16 addr_showseconduse = 0xc660; + static const uint16 addr_uselighter = 0xc65c; + static const uint16 addr_usepoolreader = 0xc658; + static const uint16 addr_calledensdlift = 0xc654; + static const uint16 addr_calledenslift = 0xc650; + static const uint16 addr_callhotellift = 0xc64c; + static const uint16 addr_trapdoor = 0xc648; + static const uint16 addr_grafittidoor = 0xc644; + static const uint16 addr_openhoteldoor2 = 0xc640; + static const uint16 addr_openhoteldoor = 0xc63c; + static const uint16 addr_drawitall = 0xc638; + static const uint16 addr_isitright = 0xc634; + static const uint16 addr_opensarters = 0xc630; + static const uint16 addr_openeden = 0xc62c; + static const uint16 addr_openpoolboss = 0xc628; + static const uint16 addr_openryan = 0xc624; + static const uint16 addr_usebalcony = 0xc620; + static const uint16 addr_usewindow = 0xc61c; + static const uint16 addr_openyourneighbour = 0xc618; + static const uint16 addr_nextcolon = 0xc614; + static const uint16 addr_openlouis = 0xc610; + static const uint16 addr_usedryer = 0xc60c; + static const uint16 addr_opentvdoor = 0xc608; + static const uint16 addr_usealtar = 0xc604; + static const uint16 addr_usehole = 0xc600; + static const uint16 addr_usechurchhole = 0xc5fc; + static const uint16 addr_sitdowninbar = 0xc5f8; + static const uint16 addr_wearshades = 0xc5f4; + static const uint16 addr_wearwatch = 0xc5f0; + static const uint16 addr_useopenbox = 0xc5ec; + static const uint16 addr_userailing = 0xc5e8; + static const uint16 addr_usecoveredbox = 0xc5e4; + static const uint16 addr_useclearbox = 0xc5e0; + static const uint16 addr_usecart = 0xc5dc; + static const uint16 addr_useslab = 0xc5d8; + static const uint16 addr_slabdoorf = 0xc5d4; + static const uint16 addr_slabdoore = 0xc5d0; + static const uint16 addr_slabdoorc = 0xc5cc; + static const uint16 addr_slabdoord = 0xc5c8; + static const uint16 addr_slabdoorb = 0xc5c4; + static const uint16 addr_slabdoora = 0xc5c0; + static const uint16 addr_useladderb = 0xc5bc; + static const uint16 addr_useladder = 0xc5b8; + static const uint16 addr_chewy = 0xc5b4; + static const uint16 addr_useplinth = 0xc5b0; + static const uint16 addr_usefullcart = 0xc5ac; + static const uint16 addr_usepipe = 0xc5a8; + static const uint16 addr_nothelderror = 0xc5a4; + static const uint16 addr_usetrainer = 0xc5a0; + static const uint16 addr_opentomb = 0xc59c; + static const uint16 addr_hotelbell = 0xc598; + static const uint16 addr_hotelcontrol = 0xc594; + static const uint16 addr_playguitar = 0xc590; + static const uint16 addr_runtap = 0xc58c; + static const uint16 addr_wheelsound = 0xc588; + static const uint16 addr_useroutine = 0xc584; + static const uint16 addr_useobject = 0xc580; + static const uint16 addr_delcurs = 0xc57c; + static const uint16 addr_printcurs = 0xc578; + static const uint16 addr_triggermessage = 0xc574; + static const uint16 addr_processtrigger = 0xc570; + static const uint16 addr_monmessage = 0xc56c; + static const uint16 addr_showcurrentfile = 0xc568; + static const uint16 addr_printlogo = 0xc564; + static const uint16 addr_monitorlogo = 0xc560; + static const uint16 addr_scrollmonitor = 0xc558; + static const uint16 addr_parser = 0xc554; + static const uint16 addr_searchforstring = 0xc550; + static const uint16 addr_getkeyandlogo = 0xc54c; + static const uint16 addr_dirfile = 0xc548; + static const uint16 addr_read = 0xc544; + static const uint16 addr_showkeys = 0xc540; + static const uint16 addr_signon = 0xc53c; + static const uint16 addr_searchforfiles = 0xc538; + static const uint16 addr_dircom = 0xc534; + static const uint16 addr_neterror = 0xc530; + static const uint16 addr_execcommand = 0xc52c; + static const uint16 addr_delchar = 0xc528; + static const uint16 addr_makecaps = 0xc524; + static const uint16 addr_input = 0xc520; + static const uint16 addr_locklightoff = 0xc51c; + static const uint16 addr_locklighton = 0xc518; + static const uint16 addr_accesslightoff = 0xc514; + static const uint16 addr_accesslighton = 0xc510; + static const uint16 addr_powerlightoff = 0xc50c; + static const uint16 addr_powerlighton = 0xc508; + static const uint16 addr_randomaccess = 0xc504; + static const uint16 addr_turnonpower = 0xc500; + static const uint16 addr_lookininterface = 0xc4fc; + static const uint16 addr_loadcart = 0xc4f8; + static const uint16 addr_loadnews = 0xc4f4; + static const uint16 addr_loadpersonal = 0xc4f0; + static const uint16 addr_printoutermon = 0xc4ec; + static const uint16 addr_usemon = 0xc4e8; + static const uint16 addr_readcitypic = 0xc4e4; + static const uint16 addr_readdesticon = 0xc4e0; + static const uint16 addr_resetlocation = 0xc4dc; + static const uint16 addr_setlocation = 0xc4d8; + static const uint16 addr_getlocation = 0xc4d4; + static const uint16 addr_destselect = 0xc4d0; + static const uint16 addr_lastdest = 0xc4cc; + static const uint16 addr_nextdest = 0xc4c8; + static const uint16 addr_showarrows = 0xc4c4; + static const uint16 addr_getdestinfo = 0xc4c0; + static const uint16 addr_locationpic = 0xc4bc; + static const uint16 addr_putundercentre = 0xc4b8; + static const uint16 addr_getundercentre = 0xc4b4; + static const uint16 addr_lookatplace = 0xc4b0; + static const uint16 addr_showcity = 0xc4ac; + static const uint16 addr_selectlocation = 0xc4a8; + static const uint16 addr_newplace = 0xc4a4; + static const uint16 addr_redes = 0xc4a0; + static const uint16 addr_hangonpq = 0xc49c; + static const uint16 addr_dosometalk = 0xc498; + static const uint16 addr_moretalk = 0xc494; + static const uint16 addr_getpersontext = 0xc490; + static const uint16 addr_starttalk = 0xc48c; + static const uint16 addr_getpersframe = 0xc488; + static const uint16 addr_convicons = 0xc484; + static const uint16 addr_talk = 0xc480; + static const uint16 addr_getback1 = 0xc47c; + static const uint16 addr_redrawmainscrn = 0xc478; + static const uint16 addr_dolook = 0xc474; + static const uint16 addr_look = 0xc470; + static const uint16 addr_autolook = 0xc46c; + static const uint16 addr_getyad = 0xc468; + static const uint16 addr_getxad = 0xc464; + static const uint16 addr_getmapad = 0xc460; + static const uint16 addr_adjustlen = 0xc45c; + static const uint16 addr_finalframe = 0xc458; + static const uint16 addr_calcfrframe = 0xc454; + static const uint16 addr_showallex = 0xc450; + static const uint16 addr_showallfree = 0xc44c; + static const uint16 addr_makebackob = 0xc448; + static const uint16 addr_showallobs = 0xc444; + static const uint16 addr_eraseoldobs = 0xc440; + static const uint16 addr_drawflags = 0xc43c; + static const uint16 addr_addlength = 0xc438; + static const uint16 addr_addalong = 0xc434; + static const uint16 addr_getdimension = 0xc430; + static const uint16 addr_calcmapad = 0xc42c; + static const uint16 addr_drawfloor = 0xc428; + static const uint16 addr_blockget = 0xc424; + static const uint16 addr_deleteextext = 0xc420; + static const uint16 addr_deleteexframe = 0xc41c; + static const uint16 addr_deleteexobject = 0xc418; + static const uint16 addr_purgeanitem = 0xc414; + static const uint16 addr_emergencypurge = 0xc410; + static const uint16 addr_purgealocation = 0xc40c; + static const uint16 addr_getexpos = 0xc408; + static const uint16 addr_transfertext = 0xc404; + static const uint16 addr_transfercontoex = 0xc400; + static const uint16 addr_pickupconts = 0xc3fc; + static const uint16 addr_transfertoex = 0xc3f8; + static const uint16 addr_outofopen = 0xc3f4; + static const uint16 addr_checkobjectsize = 0xc3f0; + static const uint16 addr_errormessage3 = 0xc3ec; + static const uint16 addr_errormessage2 = 0xc3e8; + static const uint16 addr_errormessage1 = 0xc3e4; + static const uint16 addr_useopened = 0xc3e0; + static const uint16 addr_selectopenob = 0xc3dc; + static const uint16 addr_removeobfrominv = 0xc3d8; + static const uint16 addr_wornerror = 0xc3d4; + static const uint16 addr_cantdrop = 0xc3d0; + static const uint16 addr_droperror = 0xc3cc; + static const uint16 addr_dropobject = 0xc3c8; + static const uint16 addr_findopenpos = 0xc3c4; + static const uint16 addr_findinvpos = 0xc3c0; + static const uint16 addr_getsetad = 0xc3bc; + static const uint16 addr_getopenedsize = 0xc3b8; + static const uint16 addr_getanyaddir = 0xc3b4; + static const uint16 addr_getanyad = 0xc3b0; + static const uint16 addr_geteitherad = 0xc3ac; + static const uint16 addr_getexad = 0xc3a8; + static const uint16 addr_getfreead = 0xc3a4; + static const uint16 addr_outofinv = 0xc3a0; + static const uint16 addr_deletetaken = 0xc39c; + static const uint16 addr_intoinv = 0xc398; + static const uint16 addr_swapwithopen = 0xc394; + static const uint16 addr_swapwithinv = 0xc390; + static const uint16 addr_reexfromopen = 0xc38c; + static const uint16 addr_reexfrominv = 0xc388; + static const uint16 addr_examinventory = 0xc384; + static const uint16 addr_setpickup = 0xc380; + static const uint16 addr_inventory = 0xc37c; + static const uint16 addr_findnextcolon = 0xc378; + static const uint16 addr_searchforsame = 0xc374; + static const uint16 addr_getobtextstart = 0xc370; + static const uint16 addr_obsthatdothings = 0xc36c; + static const uint16 addr_additionaltext = 0xc368; + static const uint16 addr_describeob = 0xc364; + static const uint16 addr_obpicture = 0xc360; + static const uint16 addr_examicon = 0xc35c; + static const uint16 addr_obicons = 0xc358; + static const uint16 addr_openob = 0xc354; + static const uint16 addr_showryanpage = 0xc350; + static const uint16 addr_openinv = 0xc34c; + static const uint16 addr_incryanpage = 0xc348; + static const uint16 addr_getbackfromob = 0xc344; + static const uint16 addr_makemainscreen = 0xc340; + static const uint16 addr_examineob = 0xc33c; + static const uint16 addr_makeworn = 0xc338; + static const uint16 addr_isitworn = 0xc334; + static const uint16 addr_obtoinv = 0xc330; + static const uint16 addr_findallopen = 0xc32c; + static const uint16 addr_findallryan = 0xc328; + static const uint16 addr_fillopen = 0xc324; + static const uint16 addr_fillryan = 0xc320; + static const uint16 addr_getnextword = 0xc31c; + static const uint16 addr_getnumber = 0xc318; + static const uint16 addr_monprint = 0xc314; + static const uint16 addr_printdirect = 0xc310; + static const uint16 addr_printboth = 0xc30c; + static const uint16 addr_waitframes = 0xc308; + static const uint16 addr_printslow = 0xc304; + static const uint16 addr_kernchars = 0xc300; + static const uint16 addr_printchar = 0xc2fc; + static const uint16 addr_realcredits = 0xc2f8; + static const uint16 addr_set16colpalette = 0xc2f4; + static const uint16 addr_mode640x480 = 0xc2f0; + static const uint16 addr_loadintroroom = 0xc2ec; + static const uint16 addr_runendseq = 0xc2e8; + static const uint16 addr_runintroseq = 0xc2e4; + static const uint16 addr_intro = 0xc2e0; + static const uint16 addr_hangone = 0xc2dc; + static const uint16 addr_biblequote = 0xc2d8; + static const uint16 addr_credits = 0xc2d4; + static const uint16 addr_gettingshot = 0xc2d0; + static const uint16 addr_showmonk = 0xc2cc; + static const uint16 addr_monkspeaking = 0xc2c8; + static const uint16 addr_endgame = 0xc2c4; + static const uint16 addr_titles = 0xc2c0; + static const uint16 addr_initialmoncols = 0xc2bc; + static const uint16 addr_fadeupyellows = 0xc2b8; + static const uint16 addr_fadeupmonfirst = 0xc2b4; + static const uint16 addr_fadeupmon = 0xc2b0; + static const uint16 addr_fadedownmon = 0xc2ac; + static const uint16 addr_dumpcurrent = 0xc2a8; + static const uint16 addr_allpalette = 0xc2a4; + static const uint16 addr_paltoendpal = 0xc2a0; + static const uint16 addr_startpaltoend = 0xc29c; + static const uint16 addr_endpaltostart = 0xc298; + static const uint16 addr_paltostartpal = 0xc294; + static const uint16 addr_showgroup = 0xc290; + static const uint16 addr_greyscalesum = 0xc28c; + static const uint16 addr_fadecalculation = 0xc288; + static const uint16 addr_rollem = 0xc284; + static const uint16 addr_rollendcredits2 = 0xc280; + static const uint16 addr_showgun = 0xc27c; + static const uint16 addr_clearstartpal = 0xc278; + static const uint16 addr_fadescreendowns = 0xc274; + static const uint16 addr_fadescreendown = 0xc270; + static const uint16 addr_fadescreenuphalf = 0xc26c; + static const uint16 addr_fadescreendownhalf = 0xc268; + static const uint16 addr_fadescreenups = 0xc264; + static const uint16 addr_fadefromwhite = 0xc260; + static const uint16 addr_fadetowhite = 0xc25c; + static const uint16 addr_fadescreenup = 0xc258; + static const uint16 addr_clearpalette = 0xc254; + static const uint16 addr_clearendpal = 0xc250; + static const uint16 addr_dofade = 0xc24c; + static const uint16 addr_fadedos = 0xc248; + static const uint16 addr_transfermap = 0xc244; + static const uint16 addr_transferinv = 0xc240; + static const uint16 addr_frameoutfx = 0xc23c; + static const uint16 addr_frameoutbh = 0xc238; + static const uint16 addr_showframe = 0xc22c; + static const uint16 addr_doblocks = 0xc228; + static const uint16 addr_delthisone = 0xc214; + static const uint16 addr_zoom = 0xc210; + static const uint16 addr_doshake = 0xc20c; + static const uint16 addr_vsync = 0xc208; + static const uint16 addr_clearwork = 0xc204; + static const uint16 addr_createpanel2 = 0xc200; + static const uint16 addr_createpanel = 0xc1fc; + static const uint16 addr_pixelcheckset = 0xc1f8; + static const uint16 addr_dumpmap = 0xc1f4; + static const uint16 addr_maptopanel = 0xc1f0; + static const uint16 addr_paneltomap = 0xc1ec; + static const uint16 addr_setmode = 0xc1dc; + static const uint16 addr_loadpalfromiff = 0xc1d8; + static const uint16 addr_showpcx = 0xc1cc; + static const uint16 addr_allocatework = 0xc1c8; + static const uint16 addr_dumpeverything = 0xc1c4; + static const uint16 addr_deleverything = 0xc1c0; + static const uint16 addr_showreelframe = 0xc1bc; + static const uint16 addr_getreelstart = 0xc1b8; + static const uint16 addr_movemap = 0xc1b4; + static const uint16 addr_dealwithspecial = 0xc1b0; + static const uint16 addr_reconstruct = 0xc1ac; + static const uint16 addr_soundonreels = 0xc1a8; + static const uint16 addr_plotreel = 0xc1a4; + static const uint16 addr_reelsonscreen = 0xc1a0; + static const uint16 addr_getreelframeax = 0xc19c; + static const uint16 addr_updatepeople = 0xc198; + static const uint16 addr_lockeddoorway = 0xc194; + static const uint16 addr_dodoor = 0xc190; + static const uint16 addr_widedoor = 0xc18c; + static const uint16 addr_doorway = 0xc188; + static const uint16 addr_constant = 0xc184; + static const uint16 addr_steady = 0xc180; + static const uint16 addr_random = 0xc17c; + static const uint16 addr_liftnoise = 0xc178; + static const uint16 addr_liftsprite = 0xc174; + static const uint16 addr_backobject = 0xc170; + static const uint16 addr_showrain = 0xc16c; + static const uint16 addr_getblockofpixel = 0xc168; + static const uint16 addr_splitintolines = 0xc164; + static const uint16 addr_initrain = 0xc160; + static const uint16 addr_reminders = 0xc15c; + static const uint16 addr_adjustright = 0xc158; + static const uint16 addr_adjustleft = 0xc154; + static const uint16 addr_adjustup = 0xc150; + static const uint16 addr_adjustdown = 0xc14c; + static const uint16 addr_checkforexit = 0xc148; + static const uint16 addr_facerightway = 0xc144; + static const uint16 addr_walking = 0xc140; + static const uint16 addr_aboutturn = 0xc13c; + static const uint16 addr_mainman = 0xc138; + static const uint16 addr_initman = 0xc134; + static const uint16 addr_findsource = 0xc130; + static const uint16 addr_checkone = 0xc12c; + static const uint16 addr_printasprite = 0xc128; + static const uint16 addr_printsprites = 0xc124; + static const uint16 addr_spriteupdate = 0xc120; + static const uint16 addr_delsprite = 0xc11c; + static const uint16 addr_makesprite = 0xc118; + static const uint16 addr_clearsprites = 0xc114; + static const uint16 addr_checkspeed = 0xc110; + static const uint16 addr_showgamereel = 0xc10c; + static const uint16 addr_addtopeoplelist = 0xc108; + static const uint16 addr_train = 0xc104; + static const uint16 addr_sparky = 0xc100; + static const uint16 addr_copper = 0xc0fc; + static const uint16 addr_advisor = 0xc0f8; + static const uint16 addr_drunk = 0xc0f4; + static const uint16 addr_textformonk = 0xc0f0; + static const uint16 addr_textforend = 0xc0ec; + static const uint16 addr_priesttext = 0xc0e8; + static const uint16 addr_madmode = 0xc0e4; + static const uint16 addr_madmantext = 0xc0e0; + static const uint16 addr_madman = 0xc0dc; + static const uint16 addr_madmanstelly = 0xc0d8; + static const uint16 addr_priest = 0xc0d4; + static const uint16 addr_rollendcredits = 0xc0d0; + static const uint16 addr_endgameseq = 0xc0cc; + static const uint16 addr_monkandryan = 0xc0c8; + static const uint16 addr_intro3text = 0xc0c4; + static const uint16 addr_intro2text = 0xc0c0; + static const uint16 addr_intro1text = 0xc0bc; + static const uint16 addr_monks2text = 0xc0b8; + static const uint16 addr_handclap = 0xc0b4; + static const uint16 addr_intromonks2 = 0xc0b0; + static const uint16 addr_intromonks1 = 0xc0ac; + static const uint16 addr_intromagic3 = 0xc0a8; + static const uint16 addr_intromagic2 = 0xc0a4; + static const uint16 addr_gates = 0xc0a0; + static const uint16 addr_candles2 = 0xc09c; + static const uint16 addr_candles = 0xc098; + static const uint16 addr_intromagic1 = 0xc094; + static const uint16 addr_smallcandle = 0xc090; + static const uint16 addr_candles1 = 0xc08c; + static const uint16 addr_keeper = 0xc088; + static const uint16 addr_carparkdrip = 0xc084; + static const uint16 addr_sparkydrip = 0xc080; + static const uint16 addr_gamer = 0xc07c; + static const uint16 addr_bossman = 0xc078; + static const uint16 addr_heavy = 0xc074; + static const uint16 addr_security = 0xc070; + static const uint16 addr_poolguard = 0xc06c; + static const uint16 addr_businessman = 0xc068; + static const uint16 addr_aide = 0xc064; + static const uint16 addr_mugger = 0xc060; + static const uint16 addr_helicopter = 0xc05c; + static const uint16 addr_rockstar = 0xc058; + static const uint16 addr_soldier1 = 0xc054; + static const uint16 addr_interviewer = 0xc050; + static const uint16 addr_barwoman = 0xc04c; + static const uint16 addr_othersmoker = 0xc048; + static const uint16 addr_bartender = 0xc044; + static const uint16 addr_drinker = 0xc040; + static const uint16 addr_tattooman = 0xc03c; + static const uint16 addr_mansatstill = 0xc038; + static const uint16 addr_manasleep2 = 0xc034; + static const uint16 addr_louischair = 0xc030; + static const uint16 addr_louis = 0xc02c; + static const uint16 addr_femalefan = 0xc028; + static const uint16 addr_malefan = 0xc024; + static const uint16 addr_edeninbath = 0xc020; + static const uint16 addr_eden = 0xc01c; + static const uint16 addr_manasleep = 0xc018; + static const uint16 addr_attendant = 0xc014; + static const uint16 addr_smokebloke = 0xc010; + static const uint16 addr_receptionist = 0xc00c; + static const uint16 addr_foghornsound = 0xc008; + static const uint16 addr_intromusic = 0xc004; + static const uint16 addr_alleybarksound = 0xc000; const static uint16 kStartvars = 0; const static uint16 kProgresspoints = 1; const static uint16 kWatchon = 2; @@ -602,10 +1341,11 @@ public: void clearbuffers(); void neterror(); void storeit(); + void lockeddoorway(); void isitworn(); void putundertimed(); void dumpmap(); - void multidump(); + //void multidump(); void channel0only(); void worktoscreenm(); void removeemm(); @@ -625,7 +1365,7 @@ public: void crosshair(); void bresenhams(); void getbackfromops(); - void frameoutv(); + //void frameoutv(); void restoreall(); void screenupdate(); void addlength(); @@ -643,10 +1383,10 @@ public: void gettime(); void clearwork(); void loadtraveltext(); - void worktoscreen(); + //void worktoscreen(); void getexpos(); void fadedos(); - void multiget(); + //void multiget(); void fadeupmonfirst(); void drawfloor(); void loadkeypad(); @@ -660,7 +1400,7 @@ public: void opentomb(); void buttonfour(); void animpointer(); - void lockmon(); + //void lockmon(); void dochange(); void getanyaddir(); void showsaveops(); @@ -718,10 +1458,10 @@ public: void addtopeoplelist(); void hangoncurs(); void sparkydrip(); - void modifychar(); + //void modifychar(); void compare(); void printcurs(); - void convertkey(); + //void convertkey(); void outofopen(); void dealwithspecial(); void dircom(); @@ -785,7 +1525,7 @@ public: void isitdescribed(); void hotelbell(); void loadspeech(); - void cls(); + //void cls(); void printsprites(); void dumptimedtext(); void showallobs(); @@ -893,7 +1633,7 @@ public: void accesslighton(); void dosreturn(); void titles(); - void quickquit(); + //void quickquit(); void showpointer(); void usecooker(); void loadmenu(); @@ -903,7 +1643,7 @@ public: void receptionist(); void selectslot(); void edenscdplayer(); - void readoneblock(); + //void readoneblock(); void fadeupmon(); void paltoendpal(); void fadetowhite(); @@ -944,7 +1684,7 @@ public: void viewfolder(); void walking(); void diarykeyp(); - void readabyte(); + //void readabyte(); void showframe(); void random(); void obicons(); @@ -957,8 +1697,9 @@ public: void showmonk(); void diarykeyn(); void set16colpalette(); - void sparky(); + void convicons(); void interviewer(); + void sparky(); void purgeanitem(); void madman(); void createpanel(); @@ -1033,7 +1774,7 @@ public: void handclap(); void smokebloke(); void showexit(); - void printundermon(); + //void printundermon(); void buttonnine(); void findallopen(); void loadintotemp3(); @@ -1049,13 +1790,13 @@ public: void settopright(); void findsetobject(); void singlekey(); - void seecommandtail(); + //void seecommandtail(); void getundertimed(); void hangone(); void carparkdrip(); void usediary(); void deleteexobject(); - void frameoutnm(); + //void frameoutnm(); void moneypoke(); void destselect(); void restoreems(); @@ -1065,7 +1806,7 @@ public: void openlouis(); void buttonthree(); void getundermenu(); - void randomnumber(); + //void randomnumber(); void lookatcard(); void helicopter(); void scrollmonitor(); @@ -1097,7 +1838,7 @@ public: void addtopresslist(); void walkandexamine(); void dmaend(); - void quickquit2(); + //void quickquit2(); void twodigitnum(); void madmantext(); void dumpcurrent(); @@ -1205,7 +1946,7 @@ public: void makenextblock(); void showpuztext(); void addalong(); - void width160(); + //void width160(); void incryanpage(); void dodoor(); void eraseoldobs(); @@ -1253,14 +1994,12 @@ public: void usechurchgate(); void monkandryan(); void allocatebuffers(); - void convicons(); void swapwithinv(); void usecontrol(); void buttonseven(); void redrawmainscrn(); void finishedwalking(); void findallryan(); - void lockeddoorway(); void channel0tran(); void buttonpress(); void parseblaster(); @@ -1322,7 +2061,7 @@ public: void randomnum2(); void loadsecondsample(); void transfercontoex(); - void multiput(); + //void multiput(); void isitright(); void businessman(); void switchryanoff(); diff --git a/engines/dreamweb/structs.h b/engines/dreamweb/structs.h new file mode 100644 index 00000000000..4a887ab9f36 --- /dev/null +++ b/engines/dreamweb/structs.h @@ -0,0 +1,24 @@ +struct Sprite { + uint16 updateCallback; + uint16 w2; + uint16 w4; + uint16 w6; + uint16 w8; + uint8 x; + uint8 y; + uint16 w12; + uint8 b14; + uint8 b15; + uint16 w16; + uint8 b18; + uint8 b19; + uint16 obj_data; + uint8 b22; + uint8 priority; + uint16 w24; + uint16 w26; + uint16 w28; + uint8 type; + uint8 hidden; +}; + diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h new file mode 100644 index 00000000000..8b46989a7fa --- /dev/null +++ b/engines/dreamweb/stubs.h @@ -0,0 +1,29 @@ + void multidump(); + void frameoutv(); + void frameoutv(uint8* dst, const uint8* src, uint16 pitch, uint16 width, uint16 height); + void worktoscreen(); + void multiget(); + void convertkey(); + void cls(); + //void printsprites(); + void quickquit(); + void readoneblock(); + void printundermon(); + void seecommandtail(); + void frameoutnm(); + void randomnumber(); + void quickquit2(); + Sprite* spritetable(); + void printasprite(const Sprite* sprite); + void width160(); + void multiput(); + //void eraseoldobs(); + //void clearsprites(); + //void makesprite(); + Sprite* makesprite(uint8 x, uint8 y, uint16 updateCallback, uint16 somethingInDx, uint16 somethingInDi); + //void spriteupdate(); + void mainmanCPP(Sprite* sprite); + void backobjectCPP(Sprite* sprite); + void modifychar(); + void lockmon(); + From 85df146ad42c79644d1916a9f2660603a8294d4a Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sun, 17 Jul 2011 15:10:58 +0200 Subject: [PATCH 118/731] COMPOSER: Don't use memcpy for overlapping copies (fixes gaps in some sprites). --- engines/composer/composer.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index 639b077ed7d..accbe7dda53 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -1389,8 +1389,10 @@ static void decompressSLWM(byte *buffer, Common::SeekableReadStream *stream) { count += 2; start++; - memcpy(buffer, buffer - start, count); - buffer += count; + for (uint i = 0; i < count; i++) { + *buffer = *(buffer - start); + buffer++; + } } } @@ -1441,8 +1443,11 @@ void ComposerEngine::decompressBitmap(uint16 type, Common::SeekableReadStream *s size -= 2; } count += 4; - memcpy(buffer, buffer - step - 1, count); - buffer += count; + // this is often overlapping (for repeating patterns) + for (uint i = 0; i < count; i++) { + *buffer = *(buffer - step - 1); + buffer++; + } } break; case kBitmapRLESLWM: From 5b2e90504c210dbffcdfc8eafbdc84635de79134 Mon Sep 17 00:00:00 2001 From: Marcus Comstedt Date: Sun, 17 Jul 2011 20:59:07 +0200 Subject: [PATCH 119/731] DC: Directory handling fixes * Include directory nodes in FSList sent to detectGames - This is required for correct detection of toon. * Don't add / at the end of directories found in getChildren - It looks like that behaviour was removed from posix-fs a long time ago, and now there's apparently code depending on directories _not_ having a / at the end of their name... * Treat games detected in subdirs as duplicates - This is a workaround for a detection bug in toon; it will incorrectly detect the game in the MISC subdirectory as well. * Don't avoid directories called "install" in the game selector - I don't know if the original reason for ignoring "install" is still valid, but the code for doing do so was broken anyway. --- backends/platform/dc/dc-fs.cpp | 2 +- backends/platform/dc/selector.cpp | 27 ++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/backends/platform/dc/dc-fs.cpp b/backends/platform/dc/dc-fs.cpp index ac709f62b97..c46f9df0935 100644 --- a/backends/platform/dc/dc-fs.cpp +++ b/backends/platform/dc/dc-fs.cpp @@ -124,7 +124,7 @@ bool RoninCDDirectoryNode::getChildren(AbstractFSList &myList, ListMode mode, bo if (mode == Common::FSNode::kListFilesOnly) continue; - myList.push_back(new RoninCDDirectoryNode(newPath+"/")); + myList.push_back(new RoninCDDirectoryNode(newPath)); } else { // Honor the chosen mode if (mode == Common::FSNode::kListDirectoriesOnly) diff --git a/backends/platform/dc/selector.cpp b/backends/platform/dc/selector.cpp index 859f2a40edb..339e5df62d5 100644 --- a/backends/platform/dc/selector.cpp +++ b/backends/platform/dc/selector.cpp @@ -185,12 +185,24 @@ static void makeDefIcon(Icon &icon) icon.load(scummvm_icon, sizeof(scummvm_icon)); } +static bool sameOrSubdir(const char *dir1, const char *dir2) +{ + int l1 = strlen(dir1), l2 = strlen(dir2); + if (l1<=l2) + return !strcmp(dir1, dir2); + else + return !memcmp(dir1, dir2, l2); +} + static bool uniqueGame(const char *base, const char *dir, Common::Language lang, Common::Platform plf, Game *games, int cnt) { while (cnt--) - if (!strcmp(dir, games->dir) && + if (/*Don't detect the same game in a subdir, + this is a workaround for the detector bug in toon... */ + sameOrSubdir(dir, games->dir) && + /*!strcmp(dir, games->dir) &&*/ !stricmp(base, games->filename_base) && lang == games->language && plf == games->platform) @@ -237,19 +249,24 @@ static int findGames(Game *games, int max, bool use_ini) } while ((curr_game < max || use_ini) && curr_dir < num_dirs) { - strncpy(dirs[curr_dir].name, dirs[curr_dir].node.getPath().c_str(), 252); - dirs[curr_dir].name[251] = '\0'; + strncpy(dirs[curr_dir].name, dirs[curr_dir].node.getPath().c_str(), 251); + dirs[curr_dir].name[250] = '\0'; + if (!dirs[curr_dir].name[0] || + dirs[curr_dir].name[strlen(dirs[curr_dir].name)-1] != '/') + strcat(dirs[curr_dir].name, "/"); dirs[curr_dir].deficon[0] = '\0'; Common::FSList files, fslist; dirs[curr_dir++].node.getChildren(fslist, Common::FSNode::kListAll); for (Common::FSList::const_iterator entry = fslist.begin(); entry != fslist.end(); ++entry) { if (entry->isDirectory()) { - if (!use_ini && num_dirs < MAX_DIR && - strcasecmp(entry->getDisplayName().c_str(), "install")) { + if (!use_ini && num_dirs < MAX_DIR) { dirs[num_dirs].node = *entry; num_dirs++; } + /* Toonstruck detector needs directories to be present too */ + if(!use_ini) + files.push_back(*entry); } else if (isIcon(*entry)) strcpy(dirs[curr_dir-1].deficon, entry->getDisplayName().c_str()); From 37669db8dc25dc067827a50ca7c91080856a930b Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 17 Jul 2011 21:44:13 +0200 Subject: [PATCH 120/731] DOCS: Remove executable flag on (translated ) doc files. --- doc/README-translation_template.txt | 0 doc/de/Liesmich.txt | 0 doc/fr/Lisezmoi.txt | 0 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 doc/README-translation_template.txt mode change 100755 => 100644 doc/de/Liesmich.txt mode change 100755 => 100644 doc/fr/Lisezmoi.txt diff --git a/doc/README-translation_template.txt b/doc/README-translation_template.txt old mode 100755 new mode 100644 diff --git a/doc/de/Liesmich.txt b/doc/de/Liesmich.txt old mode 100755 new mode 100644 diff --git a/doc/fr/Lisezmoi.txt b/doc/fr/Lisezmoi.txt old mode 100755 new mode 100644 From 1608d5a2afbb288a8c3a77b5b252eea402f8ad19 Mon Sep 17 00:00:00 2001 From: Alyssa Milburn Date: Sun, 17 Jul 2011 23:03:51 +0200 Subject: [PATCH 121/731] COMPOSER: Various additions/improvements to sprite/mouse code. --- engines/composer/composer.cpp | 359 +++++++++++++++++++++++++++++----- engines/composer/composer.h | 53 ++++- 2 files changed, 356 insertions(+), 56 deletions(-) diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp index accbe7dda53..a4ec9feb971 100644 --- a/engines/composer/composer.cpp +++ b/engines/composer/composer.cpp @@ -133,6 +133,17 @@ enum { kFuncGetSpriteSize = 35029 }; +bool Sprite::contains(const Common::Point &pos) const { + Common::Point adjustedPos = pos - _pos; + + if (adjustedPos.x < 0 || adjustedPos.x >= _surface.w) + return false; + if (adjustedPos.y < 0 || adjustedPos.y >= _surface.h) + return false; + byte *pixels = (byte *)_surface.pixels; + return (pixels[(_surface.h - adjustedPos.y - 1) * _surface.w + adjustedPos.x] == 0); +} + // TODO: params: x, y, event param for done Animation::Animation(Common::SeekableReadStream *stream, uint16 id, Common::Point basePos, uint32 eventParam) : _stream(stream), _id(id), _basePos(basePos), _eventParam(eventParam) { @@ -252,6 +263,68 @@ Common::SeekableReadStream *Pipe::getResource(uint32 tag, uint16 id, bool buffer return new Common::MemoryReadStream(buffer, size, DisposeAfterUse::YES); } +Button::Button(Common::SeekableReadStream *stream, uint16 id) { + _id = id; + + _type = stream->readUint16LE(); + _active = (_type & 0x8000) ? true : false; + _type &= 0xfff; + debug(9, "button: type %d, active %d", _type, _active); + + _zorder = stream->readUint16LE(); + _scriptId = stream->readUint16LE(); + _scriptIdRollOn = stream->readUint16LE(); + _scriptIdRollOff = stream->readUint16LE(); + + stream->skip(4); + + uint16 size = stream->readUint16LE(); + + switch (_type) { + case kButtonRect: + case kButtonEllipse: + if (size != 4) + error("button %d of type %d had %d points, not 4", id, _type, size); + _rect.left = stream->readSint16LE(); + _rect.top = stream->readSint16LE(); + _rect.right = stream->readSint16LE(); + _rect.bottom = stream->readSint16LE(); + debug(9, "button: (%d, %d, %d, %d)", _rect.left, _rect.top, _rect.right, _rect.bottom); + break; + case kButtonSprites: + for (uint i = 0; i < size; i++) { + _spriteIds.push_back(stream->readSint16LE()); + } + break; + default: + error("unknown button type %d", _type); + } + + delete stream; +} + +bool Button::contains(const Common::Point &pos) const { + switch (_type) { + case kButtonRect: + return _rect.contains(pos); + case kButtonEllipse: + if (!_rect.contains(pos)) + return false; + { + int16 a = _rect.height() / 2; + int16 b = _rect.width() / 2; + if (!a || !b) + return false; + Common::Point adjustedPos = pos - Common::Point(_rect.left + a, _rect.top + b); + return ((adjustedPos.x*adjustedPos.x)/a*2 + (adjustedPos.y*adjustedPos.y)/b*2 < 1); + } + case kButtonSprites: + return false; + default: + error("internal error (button type %d)", _type); + } +} + void ComposerEngine::playAnimation(uint16 animId, int16 x, int16 y, int16 eventParam) { // First, we check if this animation is already playing, // and if it is, we sabotage that running one first. @@ -493,22 +566,58 @@ void ComposerEngine::processAnimFrame() { } } -void ComposerEngine::addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos) { - // TODO: re-use old sprite - removeSprite(id, animId); +bool ComposerEngine::spriteVisible(uint16 id, uint16 animId) { + for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { + if (i->_id != id) + continue; + if (i->_animId && animId && (i->_animId != animId)) + continue; + return true; + } + return false; +} + +void ComposerEngine::addSprite(uint16 id, uint16 animId, uint16 zorder, const Common::Point &pos) { Sprite sprite; - sprite.id = id; - sprite.animId = animId; - sprite.zorder = zorder; - sprite.pos = pos; - if (!initSprite(sprite)) { - warning("ignoring addSprite on invalid sprite %d", id); - return; + bool foundSprite = false; + + // re-use old sprite, if any (the BMAP for this id might well have + // changed in the meantime, but the scripts depend on that!) + for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { + if (i->_id != id) + continue; + if (i->_animId && animId && (i->_animId != animId)) + continue; + + // if the zordering is identical, modify it in-place + if (i->_zorder == zorder) { + i->_animId = animId; + i->_pos = pos; + return; + } + + // otherwise, take a copy and remove it from the list + sprite = *i; + foundSprite = true; + _sprites.erase(i); + break; + } + + sprite._animId = animId; + sprite._zorder = zorder; + sprite._pos = pos; + + if (!foundSprite) { + sprite._id = id; + if (!initSprite(sprite)) { + warning("ignoring addSprite on invalid sprite %d", id); + return; + } } for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { - if (sprite.zorder <= i->zorder) + if (sprite._zorder <= i->_zorder) continue; // insert *before* this sprite _sprites.insert(i, sprite); @@ -519,15 +628,49 @@ void ComposerEngine::addSprite(uint16 id, uint16 animId, uint16 zorder, const Co void ComposerEngine::removeSprite(uint16 id, uint16 animId) { for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { - if (i->id != id) + if (id && i->_id != id) continue; - if (i->animId && animId && (i->animId != animId)) + if (i->_animId && animId && (i->_animId != animId)) continue; - i->surface.free(); + i->_surface.free(); i = _sprites.reverse_erase(i); + if (id) + break; } } +const Sprite *ComposerEngine::getSpriteAtPos(const Common::Point &pos) { + for (Common::List::iterator i = _sprites.begin(); i != _sprites.end(); i++) { + if (i->contains(pos)) + return &(*i); + } + + return NULL; +} + +const Button *ComposerEngine::getButtonFor(const Sprite *sprite, const Common::Point &pos) { + for (Common::List