From 803052b55222ea84dcd437f368c435eb1d959bdc Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Sun, 21 Nov 2021 23:55:28 +0100 Subject: [PATCH] Parse with base64 data Also added the necessary plumbing to load from RAM It's missing AIFF since the API is file-based for now. --- external/st_audiofile/src/st_audiofile.c | 105 +++ external/st_audiofile/src/st_audiofile.h | 2 + external/st_audiofile/src/st_audiofile.hpp | 8 + src/sfizz/AudioReader.cpp | 107 ++- src/sfizz/AudioReader.h | 8 +- src/sfizz/FileMetadata.cpp | 371 ++++++++--- src/sfizz/FileMetadata.h | 74 ++- src/sfizz/FilePool.cpp | 157 +++-- src/sfizz/FilePool.h | 14 +- src/sfizz/Synth.cpp | 45 ++ src/sfizz/SynthPrivate.h | 6 + src/sfizz/parser/Parser.cpp | 20 +- src/sfizz/utility/Base64.h | 86 +++ tests/FilesT.cpp | 107 ++- tests/HelpersT.cpp | 76 +++ tests/ParsingT.cpp | 72 ++ tests/TestFiles/kick.sfz | 1 + tests/TestFiles/kick_embedded.sfz | 3 + tests/TestFiles/sample_keycenter_embedded.sfz | 627 ++++++++++++++++++ tests/TestFiles/table_embedded.sfz | 38 ++ .../{channels_multi.sfz => wavetables.sfz} | 0 tests/TestFiles/wavetables_embedded.sfz | 169 +++++ tests/WavetablesT.cpp | 62 +- 23 files changed, 1910 insertions(+), 248 deletions(-) create mode 100644 src/sfizz/utility/Base64.h create mode 100644 tests/TestFiles/kick.sfz create mode 100644 tests/TestFiles/kick_embedded.sfz create mode 100644 tests/TestFiles/sample_keycenter_embedded.sfz create mode 100644 tests/TestFiles/table_embedded.sfz rename tests/TestFiles/{channels_multi.sfz => wavetables.sfz} (100%) create mode 100644 tests/TestFiles/wavetables_embedded.sfz diff --git a/external/st_audiofile/src/st_audiofile.c b/external/st_audiofile/src/st_audiofile.c index bbc2916e..0659c3e7 100644 --- a/external/st_audiofile/src/st_audiofile.c +++ b/external/st_audiofile/src/st_audiofile.c @@ -177,6 +177,111 @@ static st_audio_file* st_generic_open_file(const void* filename, int widepath) return NULL; } +st_audio_file* st_open_memory(const void* memory, size_t length) +{ + st_audio_file* af = (st_audio_file*)malloc(sizeof(st_audio_file)); + if (!af) + return NULL; + + // Try WAV + { + af->wav = (drwav*)malloc(sizeof(drwav)); + if (!af->wav) { + free(af); + return NULL; + } + drwav_bool32 ok = + drwav_init_memory(af->wav, memory, length, NULL); + if (!ok) + free(af->wav); + else { + af->type = st_audio_file_wav; + return af; + } + } + + // Try FLAC + { + af->flac = + drflac_open_memory(memory, length, NULL); + if (af->flac) { + af->type = st_audio_file_flac; + return af; + } + } + + // Try OGG + { + int err = 0; + char* alloc_buffer = NULL; + int alloc_size = 0; + const int alloc_max_size = 16 * 1024 * 1024; + + af->alloc.ogg.alloc_buffer = NULL; + af->alloc.ogg.alloc_buffer_length_in_bytes = 0; + + int try_again; + do { + af->ogg = + stb_vorbis_open_memory(memory, length, &err, &af->alloc.ogg); + try_again = 0; + if (!af->ogg && err == VORBIS_outofmem) { + int next_size = alloc_size ? (int)(alloc_size * 3L / 2) : (128 * 1024); + if (next_size <= alloc_max_size) { + free(alloc_buffer); + alloc_size = next_size; + alloc_buffer = (char*)malloc(alloc_size); + af->alloc.ogg.alloc_buffer = alloc_buffer; + af->alloc.ogg.alloc_buffer_length_in_bytes = alloc_size; + try_again = alloc_buffer != NULL; + } + } + } while (try_again); + + if (!af->ogg) + free(alloc_buffer); + else { + af->cache.ogg.frames = stb_vorbis_stream_length_in_samples(af->ogg); + if (af->cache.ogg.frames == 0) { + stb_vorbis_close(af->ogg); + free(alloc_buffer); + free(af); + return NULL; + } + stb_vorbis_info info = stb_vorbis_get_info(af->ogg); + af->cache.ogg.channels = info.channels; + af->cache.ogg.sample_rate = info.sample_rate; + af->type = st_audio_file_ogg; + return af; + } + } + + // Try MP3 + { + af->mp3 = (drmp3*)malloc(sizeof(drmp3)); + if (!af->mp3) { + free(af); + return NULL; + } + drmp3_bool32 ok = drmp3_init_memory(af->mp3, memory, length, NULL); + if (!ok) + free(af->mp3); + else { + af->cache.mp3.frames = drmp3_get_pcm_frame_count(af->mp3); + if (af->cache.mp3.frames == 0) { + free(af->mp3); + free(af); + return NULL; + } + af->type = st_audio_file_mp3; + return af; + } + } + + free(af); + return NULL; +} + st_audio_file* st_open_file(const char* filename) { return st_generic_open_file(filename, 0); diff --git a/external/st_audiofile/src/st_audiofile.h b/external/st_audiofile/src/st_audiofile.h index 64fd3230..f4f7d252 100644 --- a/external/st_audiofile/src/st_audiofile.h +++ b/external/st_audiofile/src/st_audiofile.h @@ -14,6 +14,7 @@ #endif #include #include +#include #if defined(_WIN32) #include #endif @@ -33,6 +34,7 @@ typedef enum st_audio_file_type { st_audio_file_other, } st_audio_file_type; +st_audio_file* st_open_memory(const void* memory, size_t length); st_audio_file* st_open_file(const char* filename); #if defined(_WIN32) st_audio_file* st_open_file_w(const wchar_t* filename); diff --git a/external/st_audiofile/src/st_audiofile.hpp b/external/st_audiofile/src/st_audiofile.hpp index c30da975..25169811 100644 --- a/external/st_audiofile/src/st_audiofile.hpp +++ b/external/st_audiofile/src/st_audiofile.hpp @@ -25,6 +25,7 @@ public: #if defined(_WIN32) bool open_file_w(const wchar_t* filename); #endif + bool open_memory(const void* memory, size_t length); int get_type() const noexcept; const char* get_type_string() const noexcept; @@ -96,6 +97,13 @@ bool ST_AudioFile::open_file(const char* filename) reset(new_af); return new_af != nullptr; } + +bool ST_AudioFile::open_memory(const void* memory, size_t length) +{ + st_audio_file* new_af = st_open_memory(memory, length); + reset(new_af); + return new_af != nullptr; +} #if defined(_WIN32) inline bool ST_AudioFile::open_file_w(const wchar_t* filename) { diff --git a/src/sfizz/AudioReader.cpp b/src/sfizz/AudioReader.cpp index 029428b1..eecf7d77 100644 --- a/src/sfizz/AudioReader.cpp +++ b/src/sfizz/AudioReader.cpp @@ -6,6 +6,7 @@ #include "AudioReader.h" #include "FileMetadata.h" +#include #include #if defined(SFIZZ_USE_SNDFILE) #include @@ -16,17 +17,19 @@ namespace sfz { class BasicSndfileReader : public AudioReader { public: - explicit BasicSndfileReader(ST_AudioFile handle) : handle_(std::move(handle)) {} + explicit BasicSndfileReader(ST_AudioFile handle, std::unique_ptr mdReader) + : handle_(std::move(handle)), mdReader_(std::move(mdReader)) {} virtual ~BasicSndfileReader() {} int format() const override; int64_t frames() const override; unsigned channels() const override; unsigned sampleRate() const override; - bool getInstrument(InstrumentInfo* instrument) override; - + bool getInstrumentInfo(InstrumentInfo& instrument) override; + bool getWavetableInfo(WavetableInfo& instrument) override; protected: ST_AudioFile handle_; + std::unique_ptr mdReader_; }; int BasicSndfileReader::format() const @@ -49,7 +52,21 @@ unsigned BasicSndfileReader::sampleRate() const return handle_.get_sample_rate(); } -bool BasicSndfileReader::getInstrument(InstrumentInfo* instrument) +bool BasicSndfileReader::getWavetableInfo(WavetableInfo& wt) +{ + if (!mdReader_) + return false; + + if (!mdReader_->isOpened()) + mdReader_->open(); + + if (mdReader_->isOpened()) + return mdReader_->extractWavetableInfo(wt); + + return false; +}; + +bool BasicSndfileReader::getInstrumentInfo(InstrumentInfo& instrument) { #if defined(SFIZZ_USE_SNDFILE) SNDFILE* sndfile = reinterpret_cast(handle_.get_sndfile_handle()); @@ -57,7 +74,14 @@ bool BasicSndfileReader::getInstrument(InstrumentInfo* instrument) if (sf_command(sndfile, SFC_GET_INSTRUMENT, sfins, sizeof(SF_INSTRUMENT)) == SF_TRUE) return true; #else - (void)instrument; + if (!mdReader_) + return false; + + if (!mdReader_->isOpened()) + mdReader_->open(); + + if (mdReader_->isOpened()) + return mdReader_->extractInstrument(instrument); #endif return false; } @@ -69,13 +93,13 @@ bool BasicSndfileReader::getInstrument(InstrumentInfo* instrument) */ class ForwardReader : public BasicSndfileReader { public: - explicit ForwardReader(ST_AudioFile handle); + explicit ForwardReader(ST_AudioFile handle, std::unique_ptr mdReader); AudioReaderType type() const override; size_t readNextBlock(float* buffer, size_t frames) override; }; -ForwardReader::ForwardReader(ST_AudioFile handle) - : BasicSndfileReader(std::move(handle)) +ForwardReader::ForwardReader(ST_AudioFile handle, std::unique_ptr mdReader) + : BasicSndfileReader(std::move(handle), std::move(mdReader)) { } @@ -138,7 +162,7 @@ static void reverse_frames(float* data, size_t frames, unsigned channels) */ class ReverseReader : public BasicSndfileReader { public: - explicit ReverseReader(ST_AudioFile handle); + explicit ReverseReader(ST_AudioFile handle, std::unique_ptr mdReader); AudioReaderType type() const override; size_t readNextBlock(float* buffer, size_t frames) override; @@ -146,8 +170,8 @@ private: uint64_t position_ {}; }; -ReverseReader::ReverseReader(ST_AudioFile handle) - : BasicSndfileReader(std::move(handle)) +ReverseReader::ReverseReader(ST_AudioFile handle, std::unique_ptr mdReader) + : BasicSndfileReader(std::move(handle), std::move(mdReader)) { position_ = handle_.get_frame_count(); } @@ -183,7 +207,7 @@ size_t ReverseReader::readNextBlock(float* buffer, size_t frames) */ class NoSeekReverseReader : public BasicSndfileReader { public: - explicit NoSeekReverseReader(ST_AudioFile handle); + explicit NoSeekReverseReader(ST_AudioFile handle, std::unique_ptr mdReader); AudioReaderType type() const override; size_t readNextBlock(float* buffer, size_t frames) override; @@ -195,8 +219,8 @@ private: uint64_t fileFramesLeft_ { 0 }; }; -NoSeekReverseReader::NoSeekReverseReader(ST_AudioFile handle) - : BasicSndfileReader(std::move(handle)) +NoSeekReverseReader::NoSeekReverseReader(ST_AudioFile handle, std::unique_ptr mdReader) + : BasicSndfileReader(std::move(handle), std::move(mdReader)) { } @@ -281,6 +305,7 @@ const std::error_category& undetailed_category() } //------------------------------------------------------------------------------ +static fs::path emptyPath_ {}; class DummyAudioReader : public AudioReader { public: @@ -291,8 +316,7 @@ public: unsigned channels() const override { return 1; } unsigned sampleRate() const override { return 44100; } size_t readNextBlock(float*, size_t) override { return 0; } - bool getInstrument(InstrumentInfo* ) override { return false; } - + bool getInstrumentInfo(InstrumentInfo& ) override { return false; } private: AudioReaderType type_ {}; }; @@ -334,7 +358,7 @@ static bool formatHasFastSeeking(int format) } #endif -static AudioReaderPtr createAudioReaderWithHandle(ST_AudioFile handle, bool reverse, std::error_code* ec) +static AudioReaderPtr createAudioReaderWithHandle(ST_AudioFile handle, std::unique_ptr mdReader, bool reverse, std::error_code* ec) { AudioReaderPtr reader; @@ -347,7 +371,7 @@ static AudioReaderPtr createAudioReaderWithHandle(ST_AudioFile handle, bool reve reader.reset(new DummyAudioReader(reverse ? AudioReaderType::Reverse : AudioReaderType::Forward)); } else if (!reverse) - reader.reset(new ForwardReader(std::move(handle))); + reader.reset(new ForwardReader(std::move(handle), std::move(mdReader))); else { #if defined(SFIZZ_USE_SNDFILE) bool hasFastSeeking = formatHasFastSeeking(handle.get_sndfile_format()); @@ -355,9 +379,9 @@ static AudioReaderPtr createAudioReaderWithHandle(ST_AudioFile handle, bool reve bool hasFastSeeking = true; #endif if (hasFastSeeking) - reader.reset(new ReverseReader(std::move(handle))); + reader.reset(new ReverseReader(std::move(handle), std::move(mdReader))); else - reader.reset(new NoSeekReverseReader(std::move(handle))); + reader.reset(new NoSeekReverseReader(std::move(handle), std::move(mdReader))); } return reader; @@ -371,47 +395,16 @@ AudioReaderPtr createAudioReader(const fs::path& path, bool reverse, std::error_ #else handle.open_file(path.c_str()); #endif - return createAudioReaderWithHandle(std::move(handle), reverse, ec); + return createAudioReaderWithHandle(std::move(handle), + absl::make_unique(path), reverse, ec); } -static AudioReaderPtr createExplicitAudioReaderWithHandle(ST_AudioFile handle, AudioReaderType type, std::error_code* ec) -{ - AudioReaderPtr reader; - - if (ec) - ec->clear(); - - if (!handle) { - if (ec) - *ec = std::error_code(1, undetailed_category()); - reader.reset(new DummyAudioReader(type)); - } - else { - switch (type) { - case AudioReaderType::Forward: - reader.reset(new ForwardReader(std::move(handle))); - break; - case AudioReaderType::Reverse: - reader.reset(new ReverseReader(std::move(handle))); - break; - case AudioReaderType::NoSeekReverse: - reader.reset(new NoSeekReverseReader(std::move(handle))); - break; - } - } - - return reader; -} - -AudioReaderPtr createExplicitAudioReader(const fs::path& path, AudioReaderType type, std::error_code* ec) +AudioReaderPtr createAudioReaderFromMemory(const void* memory, size_t length, bool reverse, std::error_code* ec) { ST_AudioFile handle; -#if defined(_WIN32) - handle.open_file_w(path.wstring().c_str()); -#else - handle.open_file(path.c_str()); -#endif - return createExplicitAudioReaderWithHandle(std::move(handle), type, ec); + handle.open_memory(memory, length); + return createAudioReaderWithHandle(std::move(handle), + absl::make_unique(memory, length), reverse, ec); } } // namespace sfz diff --git a/src/sfizz/AudioReader.h b/src/sfizz/AudioReader.h index 8e138c2e..7708898e 100644 --- a/src/sfizz/AudioReader.h +++ b/src/sfizz/AudioReader.h @@ -14,6 +14,7 @@ namespace sfz { struct InstrumentInfo; +struct WavetableInfo; /** * @brief Designation of a particular kind of audio reader @@ -39,7 +40,8 @@ public: virtual unsigned channels() const = 0; virtual unsigned sampleRate() const = 0; virtual size_t readNextBlock(float* buffer, size_t frames) = 0; - virtual bool getInstrument(InstrumentInfo* instrument) = 0; + virtual bool getInstrumentInfo(InstrumentInfo&) { return false; }; + virtual bool getWavetableInfo(WavetableInfo&) { return false; }; }; typedef std::unique_ptr AudioReaderPtr; @@ -50,8 +52,8 @@ typedef std::unique_ptr AudioReaderPtr; AudioReaderPtr createAudioReader(const fs::path& path, bool reverse, std::error_code* ec = nullptr); /** - * @brief Create a file reader of explicit type. (for testing purposes) + * @brief Create a memory reader of detected type. */ -AudioReaderPtr createExplicitAudioReader(const fs::path& path, AudioReaderType type, std::error_code* ec = nullptr); +AudioReaderPtr createAudioReaderFromMemory(const void* memory, size_t length, bool reverse, std::error_code* ec = nullptr); } // namespace sfz diff --git a/src/sfizz/FileMetadata.cpp b/src/sfizz/FileMetadata.cpp index 541734a9..6a014a35 100644 --- a/src/sfizz/FileMetadata.cpp +++ b/src/sfizz/FileMetadata.cpp @@ -52,50 +52,12 @@ static uint16_t u16be(const uint8_t *bytes) return (bytes[0] << 8) | bytes[1]; } -static bool fread_u32le(FILE* stream, uint32_t& value) -{ - uint8_t bytes[4]; - if (fread(bytes, 4, 1, stream) != 1) - return false; - value = u32le(bytes); - return true; -} - -static bool fread_u32be(FILE* stream, uint32_t& value) -{ - uint8_t bytes[4]; - if (fread(bytes, 4, 1, stream) != 1) - return false; - value = u32be(bytes); - return true; -} - -#if 0 -static bool fread_u16le(FILE* stream, uint16_t& value) -{ - uint8_t bytes[2]; - if (fread(bytes, 2, 1, stream) != 1) - return false; - value = u16le(bytes); - return true; -} -#endif - -static bool fread_u16be(FILE* stream, uint16_t& value) -{ - uint8_t bytes[2]; - if (fread(bytes, 2, 1, stream) != 1) - return false; - value = u16be(bytes); - return true; -} - //------------------------------------------------------------------------------ -struct FileMetadataReader::Impl { - FILE_u stream_; +struct MetadataReader::Impl { + MetadataReader* parent; std::vector riffChunks_; - + bool opened_ { false }; enum class ChunkType { None, Riff, Aiff }; ChunkType chunkType_ = ChunkType::None; @@ -110,35 +72,72 @@ struct FileMetadataReader::Impl { const RiffChunkInfo* riffChunk(size_t index) const; const RiffChunkInfo* riffChunkById(RiffChunkId id) const; size_t readRiffData(size_t index, void* buffer, size_t count); + bool read_u32le(uint32_t& value); + bool read_u32be(uint32_t& value); + bool read_u16le(uint16_t& value); + bool read_u16be(uint16_t& value); }; -FileMetadataReader::FileMetadataReader() +bool MetadataReader::Impl::read_u32le(uint32_t& value) +{ + uint8_t bytes[4]; + if (parent->doRead(bytes, 4, 1) != 1) + return false; + value = u32le(bytes); + return true; +} + +bool MetadataReader::Impl::read_u32be(uint32_t& value) +{ + uint8_t bytes[4]; + if (parent->doRead(bytes, 4, 1) != 1) + return false; + value = u32be(bytes); + return true; +} + +#if 0 +bool MetadataReader::Impl::read_u16le(uint16_t& value) +{ + uint8_t bytes[2]; + if (parent->do_read(bytes, 2, 1) != 1) + return false; + value = u16le(bytes); + return true; +} +#endif + +bool MetadataReader::Impl::read_u16be(uint16_t& value) +{ + uint8_t bytes[2]; + if (parent->doRead(bytes, 2, 1) != 1) + return false; + value = u16be(bytes); + return true; +} + +MetadataReader::MetadataReader() : impl_(new Impl) { + impl_->parent = this; impl_->riffChunks_.reserve(16); } -FileMetadataReader::~FileMetadataReader() +MetadataReader::~MetadataReader() { + } -bool FileMetadataReader::open(const fs::path& path) +bool MetadataReader::open() { close(); - -#if !defined(_WIN32) - FILE* stream = fopen(path.c_str(), "rb"); -#else - FILE* stream = _wfopen(path.wstring().c_str(), L"rb"); -#endif - - if (!stream) + if (!doOpen()) return false; - impl_->stream_.reset(stream); - + Impl& impl = *impl_; + impl.opened_ = true; char magic[4]; - size_t count = fread(magic, 1, sizeof(magic), stream); + size_t count = doRead(magic, 1, sizeof(magic)); if (count >= 4 && !memcmp(magic, "fLaC", 4)) { if (!impl_->openFlac()) { @@ -165,96 +164,99 @@ bool FileMetadataReader::open(const fs::path& path) return true; } -void FileMetadataReader::close() +bool MetadataReader::isOpened() { - impl_->stream_.reset(); - impl_->riffChunks_.clear(); + return impl_->opened_; } -bool FileMetadataReader::Impl::openFlac() +void MetadataReader::close() +{ + Impl& impl = *impl_; + impl.riffChunks_.clear(); + doClose(); + impl.opened_ = false; +} + +bool MetadataReader::Impl::openFlac() { - FILE* stream = stream_.get(); std::vector& riffChunks = riffChunks_; - if (fseek(stream, 4, SEEK_SET) != 0) + if (parent->doSeek(4, SEEK_SET) != 0) return false; uint32_t header = 0; while (((header >> 31) & 1) != 1) { - if (!fread_u32be(stream, header)) + if (!read_u32be(header)) return false; const uint32_t blockType = (header >> 24) & 0x7f; const uint32_t blockSize = header & ((1 << 24) - 1); - const off_t offStartBlock = ftell(stream); + const off_t offStartBlock = parent->doTell(); const off_t offNextBlock = offStartBlock + blockSize; if (blockType == 2) { // APPLICATION block char blockId[4]; char riffId[4]; uint32_t riffChunkSize; - if (fread(blockId, 4, 1, stream) == 1 && memcmp(blockId, "riff", 4) == 0 && - fread(riffId, 4, 1, stream) == 1 && - fread_u32le(stream, riffChunkSize) && riffChunkSize <= blockSize - 12) + if (parent->doRead(blockId, 4, 1) == 1 && memcmp(blockId, "riff", 4) == 0 && + parent->doRead(riffId, 4, 1) == 1 && + read_u32le(riffChunkSize) && riffChunkSize <= blockSize - 12) { RiffChunkInfo info; info.index = riffChunks.size(); - info.fileOffset = ftell(stream); + info.fileOffset = parent->doTell(); memcpy(info.id.data(), riffId, 4); info.length = riffChunkSize; riffChunks.push_back(info); } } - if (fseek(stream, offNextBlock, SEEK_SET) != 0) + if (parent->doSeek(offNextBlock, SEEK_SET) != 0) return false; } return true; } -bool FileMetadataReader::Impl::openRiff() +bool MetadataReader::Impl::openRiff() { - FILE* stream = stream_.get(); std::vector& riffChunks = riffChunks_; - if (fseek(stream, 12, SEEK_SET) != 0) + if (parent->doSeek(12, SEEK_SET) != 0) return false; char riffId[4]; uint32_t riffChunkSize; - while (fread(riffId, 4, 1, stream) == 1 && fread_u32le(stream, riffChunkSize)) { + while (parent->doRead(riffId, 4, 1) == 1 && read_u32le(riffChunkSize)) { RiffChunkInfo info; info.index = riffChunks.size(); - info.fileOffset = ftell(stream); + info.fileOffset = parent->doTell(); memcpy(info.id.data(), riffId, 4); info.length = riffChunkSize; riffChunks.push_back(info); - if (fseek(stream, riffChunkSize + (riffChunkSize & 1), SEEK_CUR) != 0) + if (parent->doSeek(riffChunkSize + (riffChunkSize & 1), SEEK_CUR) != 0) return false; } return true; } -bool FileMetadataReader::Impl::openAiff() +bool MetadataReader::Impl::openAiff() { - FILE* stream = stream_.get(); - - rewind(stream); + parent->doRewind(); char formId[4]; uint32_t formSize; - if (fread(formId, 4, 1, stream) != 1 || memcmp(formId, "FORM", 4) || - !fread_u32be(stream, formSize)) + if (parent->doRead(formId, 4, 1) != 1 || memcmp(formId, "FORM", 4) || + !read_u32be(formSize)) { return false; } char aiffId[4]; - if (fread(aiffId, 4, 1, stream) != 1 || + if (parent->doRead(aiffId, 4, 1) != 1 || (memcmp(aiffId, "AIFF", 4) && memcmp(aiffId, "AIFC", 4))) { return false; @@ -264,42 +266,42 @@ bool FileMetadataReader::Impl::openAiff() char riffId[4]; uint32_t riffChunkSize; - while (fread(riffId, 4, 1, stream) == 1 && fread_u32be(stream, riffChunkSize)) { + while (parent->doRead(riffId, 4, 1) == 1 && read_u32be(riffChunkSize)) { RiffChunkInfo info; info.index = riffChunks.size(); - info.fileOffset = ftell(stream); + info.fileOffset = parent->doTell(); memcpy(info.id.data(), riffId, 4); info.length = riffChunkSize; riffChunks.push_back(info); - if (fseek(stream, riffChunkSize + (riffChunkSize & 1), SEEK_CUR) != 0) + if (parent->doSeek(riffChunkSize + (riffChunkSize & 1), SEEK_CUR) != 0) return false; } return true; } -size_t FileMetadataReader::riffChunkCount() const +size_t MetadataReader::riffChunkCount() const { return impl_->riffChunks_.size(); } -const RiffChunkInfo* FileMetadataReader::riffChunk(size_t index) const +const RiffChunkInfo* MetadataReader::riffChunk(size_t index) const { return impl_->riffChunk(index); } -const RiffChunkInfo* FileMetadataReader::Impl::riffChunk(size_t index) const +const RiffChunkInfo* MetadataReader::Impl::riffChunk(size_t index) const { return (index < riffChunks_.size()) ? &riffChunks_[index] : nullptr; } -const RiffChunkInfo* FileMetadataReader::riffChunkById(RiffChunkId id) const +const RiffChunkInfo* MetadataReader::riffChunkById(RiffChunkId id) const { return impl_->riffChunkById(id); } -const RiffChunkInfo* FileMetadataReader::Impl::riffChunkById(RiffChunkId id) const +const RiffChunkInfo* MetadataReader::Impl::riffChunkById(RiffChunkId id) const { for (const RiffChunkInfo& riff : riffChunks_) { if (riff.id == id) @@ -308,12 +310,12 @@ const RiffChunkInfo* FileMetadataReader::Impl::riffChunkById(RiffChunkId id) con return nullptr; } -size_t FileMetadataReader::readRiffData(size_t index, void* buffer, size_t count) +size_t MetadataReader::readRiffData(size_t index, void* buffer, size_t count) { return impl_->readRiffData(index, buffer, count); } -size_t FileMetadataReader::Impl::readRiffData(size_t index, void* buffer, size_t count) +size_t MetadataReader::Impl::readRiffData(size_t index, void* buffer, size_t count) { const RiffChunkInfo* riff = riffChunk(index); if (!riff) @@ -321,14 +323,13 @@ size_t FileMetadataReader::Impl::readRiffData(size_t index, void* buffer, size_t count = (count < riff->length) ? count : riff->length; - FILE* stream = stream_.get(); - if (fseek(stream, riff->fileOffset, SEEK_SET) != 0) + if (parent->doSeek(riff->fileOffset, SEEK_SET) != 0) return 0; - return fread(buffer, 1, count, stream); + return parent->doRead(buffer, 1, count); } -bool FileMetadataReader::extractInstrument(InstrumentInfo& ins) +bool MetadataReader::extractInstrument(InstrumentInfo& ins) { if (extractRiffInstrument(ins)) return true; @@ -339,7 +340,7 @@ bool FileMetadataReader::extractInstrument(InstrumentInfo& ins) return false; } -bool FileMetadataReader::extractRiffInstrument(InstrumentInfo& ins) +bool MetadataReader::extractRiffInstrument(InstrumentInfo& ins) { if (impl_->chunkType_ != Impl::ChunkType::Riff) return false; @@ -399,9 +400,10 @@ bool FileMetadataReader::extractRiffInstrument(InstrumentInfo& ins) return true; } -bool FileMetadataReader::extractAiffInstrument(InstrumentInfo& ins) +bool MetadataReader::extractAiffInstrument(InstrumentInfo& ins) { - if (impl_->chunkType_ != Impl::ChunkType::Aiff) + Impl& impl = *impl_; + if (impl.chunkType_ != Impl::ChunkType::Aiff) return false; const RiffChunkInfo* instChunk = riffChunkById(RiffChunkId{'I', 'N', 'S', 'T'}); @@ -418,12 +420,11 @@ bool FileMetadataReader::extractAiffInstrument(InstrumentInfo& ins) // std::map markers; if (markChunk) { - FILE* stream = impl_->stream_.get(); - if (fseek(stream, markChunk->fileOffset, SEEK_SET) != 0) + if (doSeek(markChunk->fileOffset, SEEK_SET) != 0) return false; uint16_t numMarkers; - if (!fread_u16be(stream, numMarkers)) + if (!impl.read_u16be(numMarkers)) return false; for (uint32_t i = 0; i < numMarkers; ++i) { @@ -432,12 +433,12 @@ bool FileMetadataReader::extractAiffInstrument(InstrumentInfo& ins) uint8_t size; char name[256]; - if (!fread_u16be(stream, id) || !fread_u32be(stream, position) || fread(&size, 1, 1, stream) != 1 || fread(name, size, 1, stream) != 1) + if (!impl.read_u16be(id) || !impl.read_u32be(position) || doRead(&size, 1, 1) != 1 || doRead(name, size, 1) != 1) return false; name[size] = '\0'; if (i + 1 < numMarkers && ((~size) & 1)) { - if (fseek(stream, 1, SEEK_CUR) != 0) + if (doSeek(1, SEEK_CUR) != 0) return false; } @@ -502,7 +503,7 @@ bool FileMetadataReader::extractAiffInstrument(InstrumentInfo& ins) return true; } -bool FileMetadataReader::extractWavetableInfo(WavetableInfo& wt) +bool MetadataReader::extractWavetableInfo(WavetableInfo& wt) { if (impl_->extractClmWavetable(wt)) return true; @@ -520,7 +521,7 @@ bool FileMetadataReader::extractWavetableInfo(WavetableInfo& wt) return false; } -bool FileMetadataReader::Impl::extractClmWavetable(WavetableInfo &wt) +bool MetadataReader::Impl::extractClmWavetable(WavetableInfo &wt) { const RiffChunkInfo* clm = riffChunkById(RiffChunkId{'c', 'l', 'm', ' '}); if (!clm) @@ -551,7 +552,7 @@ bool FileMetadataReader::Impl::extractClmWavetable(WavetableInfo &wt) return true; } -bool FileMetadataReader::Impl::extractSurgeWavetable(WavetableInfo &wt) +bool MetadataReader::Impl::extractSurgeWavetable(WavetableInfo &wt) { const RiffChunkInfo* srge; @@ -574,7 +575,7 @@ bool FileMetadataReader::Impl::extractSurgeWavetable(WavetableInfo &wt) return true; } -bool FileMetadataReader::Impl::extractUheWavetable(WavetableInfo &wt) +bool MetadataReader::Impl::extractUheWavetable(WavetableInfo &wt) { const RiffChunkInfo* uhwt = riffChunkById(RiffChunkId{'u', 'h', 'W', 'T'}); if (!uhwt) @@ -596,4 +597,160 @@ bool FileMetadataReader::Impl::extractUheWavetable(WavetableInfo &wt) return true; } +struct FileMetadataReader::Impl { + fs::path path; + FILE_u stream_; +}; + +FileMetadataReader::FileMetadataReader(const fs::path& path) + : impl_(new Impl) +{ + impl_->path = path; +} + +FileMetadataReader::~FileMetadataReader() +{ +} + +void FileMetadataReader::doClose() +{ + impl_->stream_.reset(); +} + +bool FileMetadataReader::doOpen() +{ + Impl& impl = *impl_; +#if !defined(_WIN32) + FILE* stream = fopen(impl.path.c_str(), "rb"); +#else + FILE* stream = _wfopen(impl.path.wstring().c_str(), L"rb"); +#endif + + if (!stream) + return false; + + impl_->stream_.reset(stream); + return true; +} + +size_t FileMetadataReader::doRead(void* ptr, size_t size, size_t n) +{ + return fread(ptr, size, n, impl_->stream_.get()); +} + +int FileMetadataReader::doSeek(long off, int whence) +{ + return fseek(impl_->stream_.get(), off, whence); +} + +void FileMetadataReader::doRewind() +{ + rewind(impl_->stream_.get()); +} + +long FileMetadataReader::doTell() +{ + return ftell(impl_->stream_.get()); +} + +struct MemoryMetadataReader::Impl { + const char* memory; + size_t length; + size_t position { 0 }; +}; + +MemoryMetadataReader::MemoryMetadataReader(const void* memory, size_t length) + : impl_(new Impl) +{ + impl_->memory = reinterpret_cast(memory); + impl_->length = length; +} + +MemoryMetadataReader::~MemoryMetadataReader() +{ +} + +void MemoryMetadataReader::doClose() +{ +} + +bool MemoryMetadataReader::doOpen() +{ + Impl& impl = *impl_; + if (impl.length == 0) + return false; + + return true; +} + +size_t MemoryMetadataReader::doRead(void* ptr, size_t size, size_t n) +{ + Impl& impl = *impl_; + size_t actualCount = + (std::min(impl.position + n * size, impl.length) - impl.position) / size; + size_t totalBytes = actualCount * size; + memcpy(ptr, impl.memory + impl.position, totalBytes); + impl.position += totalBytes; + return actualCount; +} + +int MemoryMetadataReader::doSeek(long off, int whence) +{ + Impl& impl = *impl_; + + switch(whence) { + case SEEK_SET: + { + if (off < 0) + return -1; + + const size_t offset = static_cast(off); + if (offset > impl.length) + return -1; + impl.position = offset; + } + break; + case SEEK_CUR: + { + if (off < 0) { + const size_t minusOffset = static_cast(-off); + if (minusOffset > impl.position) + return -1; + + impl.position -= minusOffset; + } else { + const size_t offset = static_cast(off); + const size_t newPosition = impl.position + offset; + if (newPosition > impl.length) + return -1; + + impl.position = newPosition; + } + } + break; + case SEEK_END: + { + if (off > 0) + return -1; + + const size_t minusOffset = static_cast(-off); + if (minusOffset > impl.length) + return -1; + impl.position = impl.length - minusOffset; + } + break; + } + return 0; +} + +void MemoryMetadataReader::doRewind() +{ + impl_->position = 0; +} + +long MemoryMetadataReader::doTell() +{ + return static_cast(impl_->position); +} + } // namespace sfz diff --git a/src/sfizz/FileMetadata.h b/src/sfizz/FileMetadata.h index a6a152be..27ab3cc0 100644 --- a/src/sfizz/FileMetadata.h +++ b/src/sfizz/FileMetadata.h @@ -81,19 +81,10 @@ struct WavetableInfo { bool oneShot; }; -class FileMetadataReader { +class MetadataReader { public: - FileMetadataReader(); - ~FileMetadataReader(); - - /** - * @brief Open an audio file of supported format and read internal structures - */ - bool open(const fs::path& path); - /** - * @brief Close an audio file - */ - void close(); + MetadataReader(); + virtual ~MetadataReader(); /** * @brief Get the number of RIFF chunks in the file @@ -132,9 +123,68 @@ public: */ bool extractWavetableInfo(WavetableInfo& wt); + /** + * @brief Opens the metadata reader and perform initialization. + * If the reader is opened already it closes it and reopens. + * + * @return true + * @return false + */ + bool open(); + + /** + * @brief Check if the reader is already opened + * + * @return true + * @return false + */ + bool isOpened(); + + /** + * @brief Close the metadata reader + * + */ + void close(); +protected: + virtual bool doOpen() { return true; }; + virtual void doClose() {} + virtual size_t doRead(void* ptr, size_t size, size_t n) = 0; + virtual int doSeek(long off, int whence) = 0; + virtual void doRewind() = 0; + virtual long doTell() = 0; private: struct Impl; std::unique_ptr impl_; }; +class FileMetadataReader: public MetadataReader { +public: + FileMetadataReader(const fs::path& path); + ~FileMetadataReader(); +private: + bool doOpen() override; + void doClose() override; + size_t doRead(void* ptr, size_t size, size_t n) override; + int doSeek(long off, int whence) override; + void doRewind() override; + long doTell() override; + struct Impl; + std::unique_ptr impl_; +}; + +class MemoryMetadataReader: public MetadataReader { +public: + MemoryMetadataReader(const void* memory, size_t length); + ~MemoryMetadataReader(); +private: + bool doOpen() override; + void doClose() override; + size_t doRead(void* ptr, size_t size, size_t n) override; + int doSeek(long off, int whence) override; + void doRewind() override; + long doTell() override; + struct Impl; + std::unique_ptr impl_; +}; + } // namespace sfz diff --git a/src/sfizz/FilePool.cpp b/src/sfizz/FilePool.cpp index d9d5b024..e15be0f4 100644 --- a/src/sfizz/FilePool.cpp +++ b/src/sfizz/FilePool.cpp @@ -232,6 +232,9 @@ bool sfz::FilePool::checkSample(std::string& filename) const noexcept bool sfz::FilePool::checkSampleId(FileId& fileId) const noexcept { + if (loadedFiles.contains(fileId)) + return true; + std::string filename = fileId.filename(); bool result = checkSample(filename); if (result) @@ -239,64 +242,78 @@ bool sfz::FilePool::checkSampleId(FileId& fileId) const noexcept return result; } +absl::optional getReaderInformation(sfz::AudioReader* reader) noexcept +{ + const unsigned channels = reader->channels(); + if (channels != 1 && channels != 2) + return {}; + + sfz::FileInformation returnedValue; + returnedValue.end = static_cast(reader->frames()) - 1; + returnedValue.sampleRate = static_cast(reader->sampleRate()); + returnedValue.numChannels = static_cast(channels); + + // Check for instrument info + sfz::InstrumentInfo instrumentInfo {}; + if (reader->getInstrumentInfo(instrumentInfo)) { + returnedValue.rootKey = clamp(instrumentInfo.basenote, 0, 127); + if (reader->type() == sfz::AudioReaderType::Forward) { + if (instrumentInfo.loop_count > 0) { + returnedValue.hasLoop = true; + returnedValue.loopStart = instrumentInfo.loops[0].start; + returnedValue.loopEnd = + min(returnedValue.end, static_cast(instrumentInfo.loops[0].end - 1)); + } + } else { + // TODO loops ignored when reversed + // prehaps it can make use of SF_LOOP_BACKWARD? + } + } + + // Check for wavetable info + sfz::WavetableInfo wt {}; + if (reader->getWavetableInfo(wt)) + returnedValue.wavetable = wt; + + return returnedValue; +} + +absl::optional sfz::FilePool::checkExistingFileInformation(const FileId& fileId) noexcept +{ + const auto loadedFile = loadedFiles.find(fileId); + if (loadedFile != loadedFiles.end()) + return loadedFile->second.information; + + const auto preloadedFile = preloadedFiles.find(fileId); + if (preloadedFile != preloadedFiles.end()) + return preloadedFile->second.information; + + return {}; +} + absl::optional sfz::FilePool::getFileInformation(const FileId& fileId) noexcept { + auto existingInformation = checkExistingFileInformation(fileId); + if (existingInformation) + return existingInformation; + const fs::path file { rootDirectory / fileId.filename() }; if (!fs::exists(file)) return {}; AudioReaderPtr reader = createAudioReader(file, fileId.isReverse()); - const unsigned channels = reader->channels(); - - if (channels != 1 && channels != 2) { - DBG("[sfizz] Missing logic for " << reader->channels() << " channels, discarding sample " << fileId); - return {}; - } - - FileInformation returnedValue; - returnedValue.end = static_cast(reader->frames()) - 1; - returnedValue.sampleRate = static_cast(reader->sampleRate()); - returnedValue.numChannels = static_cast(reader->channels()); - - InstrumentInfo instrumentInfo {}; - bool haveInstrumentInfo = reader->getInstrument(&instrumentInfo); - - FileMetadataReader mdReader; - bool mdReaderOpened = mdReader.open(file); - - if (!haveInstrumentInfo) { - // if no instrument, then try extracting from embedded RIFF chunks (flac) - if (mdReaderOpened) - haveInstrumentInfo = mdReader.extractInstrument(instrumentInfo); - } - - if (mdReaderOpened) { - WavetableInfo wt; - if (mdReader.extractWavetableInfo(wt)) - returnedValue.wavetable = wt; - } - - if (!fileId.isReverse()) { - if (haveInstrumentInfo && instrumentInfo.loop_count > 0) { - returnedValue.hasLoop = true; - returnedValue.loopStart = instrumentInfo.loops[0].start; - returnedValue.loopEnd = - min(returnedValue.end, static_cast(instrumentInfo.loops[0].end - 1)); - } - } else { - // TODO loops ignored when reversed - // prehaps it can make use of SF_LOOP_BACKWARD? - } - - if (haveInstrumentInfo) - returnedValue.rootKey = clamp(instrumentInfo.basenote, 0, 127); - - return returnedValue; + return getReaderInformation(reader.get()); } bool sfz::FilePool::preloadFile(const FileId& fileId, uint32_t maxOffset) noexcept { + const auto loadedFile = loadedFiles.find(fileId); + if (loadedFile != loadedFiles.end()) { + loadedFile->second.preloadCallCount++; + return true; + } + auto fileInformation = getFileInformation(fileId); if (!fileInformation) return false; @@ -368,28 +385,50 @@ sfz::FileDataHolder sfz::FilePool::loadFile(const FileId& fileId) noexcept if (!fileInformation) return {}; - const fs::path file { rootDirectory / fileId.filename() }; - AudioReaderPtr reader = createAudioReader(file, fileId.isReverse()); - - const auto frames = static_cast(reader->frames()); const auto existingFile = loadedFiles.find(fileId); if (existingFile != loadedFiles.end()) { existingFile->second.preloadCallCount++; return { &existingFile->second }; - } else { - fileInformation->sampleRate = static_cast(reader->sampleRate()); - auto insertedPair = loadedFiles.insert_or_assign(fileId, { - readFromFile(*reader, frames), - *fileInformation - }); - insertedPair.first->second.status = FileData::Status::Preloaded; - insertedPair.first->second.preloadCallCount++; - return { &insertedPair.first->second }; } + + const fs::path file { rootDirectory / fileId.filename() }; + AudioReaderPtr reader = createAudioReader(file, fileId.isReverse()); + + const auto frames = static_cast(reader->frames()); + auto insertedPair = loadedFiles.insert_or_assign(fileId, { + readFromFile(*reader, frames), + *fileInformation + }); + insertedPair.first->second.status = FileData::Status::Preloaded; + insertedPair.first->second.preloadCallCount++; + return { &insertedPair.first->second }; +} + +sfz::FileDataHolder sfz::FilePool::loadFromRam(const FileId& fileId, const std::vector& data) noexcept +{ + const auto loaded = loadedFiles.find(fileId); + if (loaded != loadedFiles.end()) + return { &loaded->second }; + + auto reader = createAudioReaderFromMemory(data.data(), data.size(), fileId.isReverse()); + auto fileInformation = getReaderInformation(reader.get()); + const auto frames = static_cast(reader->frames()); + auto insertedPair = loadedFiles.insert_or_assign(fileId, { + readFromFile(*reader, frames), + *fileInformation + }); + insertedPair.first->second.status = FileData::Status::Preloaded; + insertedPair.first->second.preloadCallCount++; + DBG("Added a file " << fileId.filename()); + return { &insertedPair.first->second }; } sfz::FileDataHolder sfz::FilePool::getFilePromise(const std::shared_ptr& fileId) noexcept { + const auto loaded = loadedFiles.find(*fileId); + if (loaded != loadedFiles.end()) + return { &loaded->second }; + const auto preloaded = preloadedFiles.find(*fileId); if (preloaded == preloadedFiles.end()) { DBG("[sfizz] File not found in the preloaded files: " << fileId->filename()); diff --git a/src/sfizz/FilePool.h b/src/sfizz/FilePool.h index 03757c92..f76e2783 100644 --- a/src/sfizz/FilePool.h +++ b/src/sfizz/FilePool.h @@ -206,7 +206,7 @@ public: * * @return size_t */ - size_t getNumPreloadedSamples() const noexcept { return preloadedFiles.size(); } + size_t getNumPreloadedSamples() const noexcept { return preloadedFiles.size() + loadedFiles.size(); } /** * @brief Get metadata information about a file. @@ -236,6 +236,16 @@ public: */ FileDataHolder loadFile(const FileId& fileId) noexcept; + /** + * @brief Load a file from RAM and return its information. The file pool will store\ + * this data for future requests so use this function responsibly. + * + * @param fileId + * @param data + * @return A handle on the file data + */ + FileDataHolder loadFromRam(const FileId& fileId, const std::vector& data) noexcept; + /** * @brief Check that the sample exists. If not, try to find it in a case insensitive way. * @@ -325,6 +335,8 @@ public: */ void triggerGarbageCollection() noexcept; private: + + absl::optional checkExistingFileInformation(const FileId& fileId) noexcept; fs::path rootDirectory; bool loadInRam { config::loadInRam }; diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index 004d518f..6960375a 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -24,6 +24,7 @@ #include "Metronome.h" #include "SynthConfig.h" #include "ScopedFTZ.h" +#include "utility/Base64.h" #include "utility/StringViewHelpers.h" #include "utility/Timing.h" #include "utility/XmlHelpers.h" @@ -130,6 +131,9 @@ void Synth::Impl::onParseFullBlock(const std::string& header, const std::vector< case hash("effect"): handleEffectOpcodes(members); break; + case hash("sample"): + handleSampleOpcodes(members); + break; default: std::cerr << "Unknown header: " << header << '\n'; } @@ -549,6 +553,47 @@ void Synth::Impl::handleEffectOpcodes(const std::vector& rawMembers) getOrCreateBus(busIndex).addEffect(std::move(fx)); } +void Synth::Impl::handleSampleOpcodes(const std::vector& rawMembers) +{ + absl::string_view name { "" }; + bool hasData { false }; + absl::string_view sampleData; + + for (const Opcode& opcode : rawMembers) { + switch (opcode.lettersOnlyHash) { + case hash("name"): + name = opcode.value; + break; + case hash("base&data"): + if (opcode.parameters.front() == 64) + sampleData = opcode.value; + break; + case hash("data"): + hasData = true; + break; + } + } + + if (name.empty()) + return; + + if (hasData && sampleData.empty()) { + DBG("The sample data provided for sample " << name + << " doesn't use base64 encoding, which is the only one sfizz knows how to decode.\n " + << "If it does, please use base64data= instead of data=." + ); + return; + } + + if (sampleData.empty()) + return; + + auto data = decodeBase64(sampleData); + FilePool& filePool = resources_.getFilePool(); + FileId id { std::string(name) }; + filePool.loadFromRam(id, data); +} + void Synth::Impl::resetDefaultCCValues() noexcept { fill(absl::MakeSpan(defaultCCValues_), 0.0f); diff --git a/src/sfizz/SynthPrivate.h b/src/sfizz/SynthPrivate.h index e2f715d5..30e457f2 100644 --- a/src/sfizz/SynthPrivate.h +++ b/src/sfizz/SynthPrivate.h @@ -88,6 +88,12 @@ struct Synth::Impl final: public Parser::Listener { * @param members the opcodes of the block */ void handleEffectOpcodes(const std::vector& members); + /** + * @brief Helper function to dispatch opcodes + * + * @param members the opcodes of the block + */ + void handleSampleOpcodes(const std::vector& members); /** * @brief Helper function to merge all the currently active opcodes * as set by the successive callbacks and create a new region to store diff --git a/src/sfizz/parser/Parser.cpp b/src/sfizz/parser/Parser.cpp index 5ae4aef8..f8ffa933 100644 --- a/src/sfizz/parser/Parser.cpp +++ b/src/sfizz/parser/Parser.cpp @@ -288,8 +288,26 @@ void Parser::processOpcode() } reader.getChar(); - SourceLocation valueStart = reader.location(); + + // If we're parsing a base64 data field, ignore comments and process until the next header/directive + if (nameExpanded == "base64data") { + std::string valueRaw; + reader.extractWhile(&valueRaw, [&reader](char c) { + if (c == '<' || c == '#') + return false; + + return true; + }); + SourceLocation valueEnd = reader.location(); + _currentOpcodes.emplace_back(nameExpanded, valueRaw); + + if (_listener) + _listener->onParseOpcode({ opcodeStart, opcodeEnd }, { valueStart, valueEnd }, nameExpanded, valueRaw); + + return; + } + std::string valueRaw; extractToEol(reader, &valueRaw); diff --git a/src/sfizz/utility/Base64.h b/src/sfizz/utility/Base64.h new file mode 100644 index 00000000..2f27bba1 --- /dev/null +++ b/src/sfizz/utility/Base64.h @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: BSD-2-Clause + +// This code is part of the sfizz library and is licensed under a BSD 2-clause +// license. You should have receive a LICENSE.md file along with the code. +// If not, contact the sfizz maintainers at https://github.com/sfztools/sfizz + +// Inspired by the public domain implementation at https://en.wikibooks.org/wiki/Algorithm_Implementation/Miscellaneous/Base64 + +#pragma once + +#include "Debug.h" +#include +#include + +namespace sfz +{ + +inline std::vector decodeBase64(absl::string_view input) +{ + if (input.empty()) + return {}; + + std::size_t padding { 0 }; + auto length = input.length(); + + if (length >= 1 and input[length - 1] == '=') + padding++; + + if (length >= 2 and input[length - 2] == '=') + padding++; + + input.remove_suffix(padding); + + std::vector decoded; + decoded.reserve(length); + + auto cursor = input.begin(); + int32_t temp { 0 }; + size_t position { 0 }; + while (cursor != input.end()) { + char c = *cursor++; + if (c == ' ' || c == '\n' || c == '\t' || c == '\r') // Ignore whitespace + continue; + + if (c >= 0x41 && c <= 0x5A) // This area will need tweaking if + temp |= c - 0x41; // you are using an alternate alphabet + else if (c >= 0x61 && c <= 0x7A) + temp |= c - 0x47; + else if (c >= 0x30 && c <= 0x39) + temp |= c + 0x04; + else if (c == 0x2B) + temp |= 0x3E; //change to 0x2D for URL alphabet + else if (c == 0x2F) + temp |= 0x3F; //change to 0x5F for URL alphabet + else + return {}; + + if (++position == 4) { + decoded.push_back((temp >> 16) & 0x000000FF); + decoded.push_back((temp >> 8 ) & 0x000000FF); + decoded.push_back((temp ) & 0x000000FF); + position = 0; + temp = 0; + } else { + temp <<= 6; + } + } + + switch(position) { + case 3: + decoded.push_back((temp >> 16) & 0x000000FF); + decoded.push_back((temp >> 8 ) & 0x000000FF); + break; + case 2: + decoded.push_back((temp >> 10) & 0x000000FF); + break; + case 1: + return {}; + default: + break; + } + + return decoded; +} + +} diff --git a/tests/FilesT.cpp b/tests/FilesT.cpp index d66649f9..e0141dd7 100644 --- a/tests/FilesT.cpp +++ b/tests/FilesT.cpp @@ -270,10 +270,10 @@ TEST_CASE("[Files] Channels (channels.sfz)") REQUIRE(synth.getRegionView(1)->isStereo()); } -TEST_CASE("[Files] Channels (channels_multi.sfz)") +TEST_CASE("[Files] Generators and wavetables") { Synth synth; - synth.loadSfzFile(fs::current_path() / "tests/TestFiles/channels_multi.sfz"); + synth.loadSfzFile(fs::current_path() / "tests/TestFiles/wavetables.sfz"); REQUIRE(synth.getNumRegions() == 12); int regionNumber = 0; @@ -373,6 +373,69 @@ TEST_CASE("[Files] Channels (channels_multi.sfz)") REQUIRE(region->oscillatorEnabled == OscillatorEnabled::Auto); } +TEST_CASE("[Files] Embedded wavetables") +{ + Synth synth; + synth.loadSfzFile(fs::current_path() / "tests/TestFiles/wavetables_embedded.sfz"); + REQUIRE(synth.getNumRegions() == 7); + + int regionNumber = 0; + const Region* region = nullptr; + + // explicit wavetable + region = synth.getRegionView(regionNumber++); + REQUIRE(region->sampleId->filename() == "ramp_wave.wav"); + REQUIRE(!region->isStereo()); + REQUIRE(!region->isGenerator()); + REQUIRE(region->isOscillator()); + REQUIRE(region->oscillatorEnabled == OscillatorEnabled::On); + + // explicit wavetable with multi + region = synth.getRegionView(regionNumber++); + REQUIRE(region->sampleId->filename() == "ramp_wave.wav"); + REQUIRE(region->isStereo()); + REQUIRE(!region->isGenerator()); + REQUIRE(region->isOscillator()); + REQUIRE(region->oscillatorEnabled == OscillatorEnabled::On); + + // explicit disabled wavetable + region = synth.getRegionView(regionNumber++); + REQUIRE(region->sampleId->filename() == "ramp_wave.wav"); + REQUIRE(!region->isStereo()); + REQUIRE(!region->isGenerator()); + REQUIRE(!region->isOscillator()); + REQUIRE(region->oscillatorEnabled == OscillatorEnabled::Off); + + // explicit disabled wavetable with multi + region = synth.getRegionView(regionNumber++); + REQUIRE(region->sampleId->filename() == "ramp_wave.wav"); + REQUIRE(!region->isStereo()); + REQUIRE(!region->isGenerator()); + REQUIRE(!region->isOscillator()); + REQUIRE(region->oscillatorEnabled == OscillatorEnabled::Off); + + // implicit wavetable (sound file < 3000 frames and wavetable tags) + region = synth.getRegionView(regionNumber++); + REQUIRE(region->sampleId->filename() == "wavetables/surge.wav"); + REQUIRE(!region->isGenerator()); + REQUIRE(region->isOscillator()); + REQUIRE(region->oscillatorEnabled == OscillatorEnabled::Auto); + + // Parse oscillator=auto and same as above + region = synth.getRegionView(regionNumber++); + REQUIRE(region->sampleId->filename() == "wavetables/surge.wav"); + REQUIRE(!region->isGenerator()); + REQUIRE(region->isOscillator()); + REQUIRE(region->oscillatorEnabled == OscillatorEnabled::Auto); + + // implicit non wavetable (sound file < 3000 frames but no wavetable tags) + region = synth.getRegionView(regionNumber++); + REQUIRE(region->sampleId->filename() == "short_non_wavetable.wav"); + REQUIRE(!region->isGenerator()); + REQUIRE(!region->isOscillator()); + REQUIRE(region->oscillatorEnabled == OscillatorEnabled::Auto); +} + TEST_CASE("[Files] wrong (overlapping) replacement for defines") { Synth synth; @@ -715,3 +778,43 @@ TEST_CASE("[Files] Unused samples are cleared on reloading") )"); REQUIRE(synth.getNumPreloadedSamples() == 0); } + +TEST_CASE("[Files] Embedded sample data") +{ + sfz::Synth synth1; + sfz::Synth synth2; + synth1.loadSfzFile(fs::current_path() / "tests/TestFiles/kick.sfz"); + synth2.loadSfzFile(fs::current_path() / "tests/TestFiles/kick_embedded.sfz"); + REQUIRE(synth1.getNumPreloadedSamples() == 1); + REQUIRE(synth2.getNumPreloadedSamples() == 1); + + AudioBuffer buffer1 { 2, 1024 }; + AudioBuffer buffer2 { 2, 1024 }; + synth1.noteOn(0, 60, 100); + synth2.noteOn(0, 60, 100); + + for (unsigned i = 0; i < 100; ++i) { + synth1.renderBlock(buffer1); + synth2.renderBlock(buffer2); + bool equal = true; + for (unsigned j = 0; j < buffer1.getNumFrames(); ++j) { + equal &= (buffer1.getSample(0, j) == buffer2.getSample(0, j)); + equal &= (buffer1.getSample(1, j) == buffer2.getSample(1, j)); + } + REQUIRE(equal); + } +} + +TEST_CASE("[Files] Key center from audio file, with embedded sample data") +{ + sfz::Synth synth; + synth.loadSfzFile(fs::current_path() / "tests/TestFiles/sample_keycenter_embedded.sfz"); + + REQUIRE(synth.getNumRegions() == 6); + REQUIRE(synth.getRegionView(0)->pitchKeycenter == 38); + REQUIRE(synth.getRegionView(1)->pitchKeycenter == 62); + REQUIRE(synth.getRegionView(2)->pitchKeycenter == 38); + REQUIRE(synth.getRegionView(3)->pitchKeycenter == 62); + REQUIRE(synth.getRegionView(4)->pitchKeycenter == 10); + REQUIRE(synth.getRegionView(5)->pitchKeycenter == 62); +} diff --git a/tests/HelpersT.cpp b/tests/HelpersT.cpp index 4198f59e..4847fae7 100644 --- a/tests/HelpersT.cpp +++ b/tests/HelpersT.cpp @@ -5,6 +5,7 @@ // If not, contact the sfizz maintainers at https://github.com/sfztools/sfizz #include "sfizz/utility/StringViewHelpers.h" +#include "sfizz/utility/Base64.h" #include "catch2/catch.hpp" #include "absl/strings/string_view.h" using namespace Catch::literals; @@ -66,3 +67,78 @@ TEST_CASE("[Helpers] trim") REQUIRE(trim(input).empty()); } } + +TEST_CASE("[Parsing] Base64") +{ + { + auto result = sfz::decodeBase64(""); + absl::string_view view { result.data(), result.size() }; + REQUIRE( view == "" ); + } + + { + auto result = sfz::decodeBase64("Zg=="); + absl::string_view view { result.data(), result.size() }; + REQUIRE( view == "f" ); + } + + { + auto result = sfz::decodeBase64("Zg"); + absl::string_view view { result.data(), result.size() }; + REQUIRE( view == "f" ); + } + + { + auto result = sfz::decodeBase64("Zm8="); + absl::string_view view { result.data(), result.size() }; + REQUIRE( view == "fo" ); + } + + { + auto result = sfz::decodeBase64("Zm8"); + absl::string_view view { result.data(), result.size() }; + REQUIRE( view == "fo" ); + } + + { + auto result = sfz::decodeBase64("Zm9v"); + absl::string_view view { result.data(), result.size() }; + REQUIRE( view == "foo" ); + } + + { + auto result = sfz::decodeBase64("Zm9vYg=="); + absl::string_view view { result.data(), result.size() }; + REQUIRE( view == "foob" ); + } + + { + auto result = sfz::decodeBase64("Zm9vYg"); + absl::string_view view { result.data(), result.size() }; + REQUIRE( view == "foob" ); + } + + { + auto result = sfz::decodeBase64("Zm9vYmE="); + absl::string_view view { result.data(), result.size() }; + REQUIRE( view == "fooba" ); + } + + { + auto result = sfz::decodeBase64("Zm9vYmE"); + absl::string_view view { result.data(), result.size() }; + REQUIRE( view == "fooba" ); + } + + { + auto result = sfz::decodeBase64("Zm9vYmFy"); + absl::string_view view { result.data(), result.size() }; + REQUIRE( view == "foobar" ); + } + + { + auto result = sfz::decodeBase64("Zm9v\r\n Ym \tFy"); + absl::string_view view { result.data(), result.size() }; + REQUIRE( view == "foobar" ); + } +} diff --git a/tests/ParsingT.cpp b/tests/ParsingT.cpp index 3b6859cf..36f01dd4 100644 --- a/tests/ParsingT.cpp +++ b/tests/ParsingT.cpp @@ -673,3 +673,75 @@ TEST_CASE("[Parsing] Expanded value of #include") REQUIRE(mock.fullBlockHeaders == expectedHeaders); REQUIRE(mock.fullBlockMembers == expectedMembers); } + +TEST_CASE("[Parsing] Sample data") +{ + sfz::Parser parser; + ParsingMocker mock; + parser.setListener(&mock); + parser.parseString("/opcodeValueWithMultipleConsecutiveSpaces.sfz",R"( +#define $test 2 + base64data=fdsfeq==w=ew=/////we/* $test */dsafr +// fderwq==d= + sample=*sine + )"); + + std::vector> expectedMembers = { + {{"base64data", R"(fdsfeq==w=ew=/////we/* $test */dsafr +// fderwq==d=)"}}, + {{"sample", "*sine"}}, + }; + std::vector expectedHeaders = { + "sample", "region" + }; + std::vector expectedOpcodes; + + for (auto& members: expectedMembers) + for (auto& opcode: members) + expectedOpcodes.push_back(opcode); + + REQUIRE(mock.beginnings == 1); + REQUIRE(mock.endings == 1); + REQUIRE(mock.errors.empty()); + REQUIRE(mock.warnings.empty()); + REQUIRE(mock.opcodes == expectedOpcodes); + REQUIRE(mock.headers == expectedHeaders); + REQUIRE(mock.fullBlockHeaders == expectedHeaders); + REQUIRE(mock.fullBlockMembers == expectedMembers); +} + +TEST_CASE("[Parsing] Sample data 2") +{ + sfz::Parser parser; + ParsingMocker mock; + parser.setListener(&mock); + parser.parseString("/opcodeValueWithMultipleConsecutiveSpaces.sfz",R"( +#define $test 2 + sample=*sine + base64data=fdsfeq==w=ew=/////we/* $test */dsafr +// fderwq==d= + )"); + + std::vector> expectedMembers = { + {{"sample", "*sine"}}, + {{"base64data", R"(fdsfeq==w=ew=/////we/* $test */dsafr +// fderwq==d=)"}}, + }; + std::vector expectedHeaders = { + "region", "sample" + }; + std::vector expectedOpcodes; + + for (auto& members: expectedMembers) + for (auto& opcode: members) + expectedOpcodes.push_back(opcode); + + REQUIRE(mock.beginnings == 1); + REQUIRE(mock.endings == 1); + REQUIRE(mock.errors.empty()); + REQUIRE(mock.warnings.empty()); + REQUIRE(mock.opcodes == expectedOpcodes); + REQUIRE(mock.headers == expectedHeaders); + REQUIRE(mock.fullBlockHeaders == expectedHeaders); + REQUIRE(mock.fullBlockMembers == expectedMembers); +} diff --git a/tests/TestFiles/kick.sfz b/tests/TestFiles/kick.sfz new file mode 100644 index 00000000..c6700184 --- /dev/null +++ b/tests/TestFiles/kick.sfz @@ -0,0 +1 @@ + sample=kick.wav diff --git a/tests/TestFiles/kick_embedded.sfz b/tests/TestFiles/kick_embedded.sfz new file mode 100644 index 00000000..80da1183 --- /dev/null +++ b/tests/TestFiles/kick_embedded.sfz @@ -0,0 +1,3 @@ + sample=kick_embedded.wav + name=kick_embedded.wav + base64data=UklGRtBnAQBXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAUEFEIMwPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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EAEHAQcB/AAGAfMA/ADrAPQA4wDwAN0A4wDZANgA2QDNANQAxADJAL8AvgC9ALYAsgCxAKoApgClAJcAngCTAJUAigCKAIAAggB6AHgAcQBvAGkAbQBhAF4AXQBSAFoARQBTAEIAQwA+ADsAOgA0AC8ALwAiACoAHQAlABcAHgARABMAEAAJAAsABgAAAAAA/P/4//f/8//q//X/5f/t/+P/3v/i/9j/3P/Z/9H/2f/K/9T/zP/J/8v/wv/H/7z/xv+9/7z/vP+0/7z/rP+6/6r/tP+o/6j/rf+g/6//m/+q/6L/o/+l/53/oP+i/5n/nP+a/5X/nv+Y/5j/mf+X/5T/mf+U/5f/lf+U/5L/mP+V/5f/kv+c/5H/mP+W/5b/m/+U/5j/mv+Z/5z/n/+b/6H/nP+h/53/of+d/6L/nP+j/6L/o/+k/6L/qf+i/6n/p/+n/67/qv+v/6n/tP+r/7n/sv+0/7b/sv+7/7f/uf+7/7f/wv+9/77/yv+4/8z/wf/L/8r/xf/I/8z/xv/Y/8j/2v/N/9f/0v/W/9j/2P/U/9n/2//Y/9//2f/i/93/4P/e/+D/3v/k/9//6f/g/+j/4//u/+T/8f/h/+3/6f/p/+//6//s/+7/6v/u/+3/8f/r//L/7f/0/+//9P/r//D/8f/w//X/8f/y//D/8f/z//D/8//w//X/8P/z//D/8P/w//H/7f/w/+r/6//u/+v/7v/s/+r/6v/r/+T/7//f/+n/3f/k/+L/3P/k/9n/4v/b/9//2v/b/9j/1v/Z/9f/1f/V/9P/zv/S/8r/z//H/8z/yf/F/8r/wP/H/7//wP+9/73/tP+8/7D/t/+x/7T/qf+y/6T/r/+l/6r/of+m/6L/pP+k/5r/of+X/5//lv+W/5b/jf+U/4z/k/+J/4v/jP+J/4v/hf+H/3//g/+C/3//hv93/4H/ef99/3z/ef95/3j/df97/3L/eP91/3H/d/9x/3P/c/9v/2//c/9o/3X/ZP9y/2j/bf9v/2n/bv9p/3D/Zf9q/2v/Z/9u/2P/a/9s/2n/bf9q/2//bf9y/2v/df9w/3P/df9x/3T/dv90/3f/ef93/3//eP9//33/fP+G/33/hv9//4r/gf+N/4b/jP+L/5D/kP+a/4//oP+S/5//oP+e/6b/nP+s/6b/rv+s/63/tP+z/7v/t/+//7z/xP/D/8j/x//M/8z/0f/R/9j/1P/g/9v/5f/l/+T/7f/t//H/8//5//r/AAD//wEACAAHAA8ACQATABQAFwAiABgAKQAgAC0AKwAwADUANwA9AD8AQgBDAEkASQBQAFAAVwBYAFsAYgBfAGsAZwBuAGwAdwBzAHwAfAB9AIYAgwCLAIkAkACSAJQAlwCdAJsAqQCeAKoAqgCuALUArwC9AK8AxgCzAMoAvgDGAMgAywDMANEA1QDUANgA2QDaANsA3wDeAOMA4wDlAOYA6ADpAO4A7QDwAPQA8AD3APYA+gD4AP0A9AAEAfUABQH5AAMBAgEEAQIBBQECAQoBBQEIAQUBDAEHAQsBCwEHAQsBBgESAQUBDgEIAQgBDwEIAQsBCgEMAQcBDAEHAQcBCQEEAQQBBQECAQYBBgH9AAUB9wABAfcA/QD0APgA8wDvAPYA6wDyAOoA6ADsAOIA7QDdAOYA3gDeAN8A2ADdANEA2ADQANIA0wDGANAAvQDOALsAyQC0AL4AtgC1ALgArgCuAKoApACoAKAApACbAJ4AlACZAJIAjwCMAIcAhACCAIAAgABzAH8AbQB3AGwAawBkAGoAXQBlAFUAXABWAFAATwBNAEUARABCAD4ANwA5AC8ANAAtACoAJwAhACYAHQAZABkAEgAUAA4ACwAEAAQAAgACAPz/9//4//H/8v/u/+v/6P/j/+X/3f/g/9b/3P/P/9X/zf/Q/8j/yf/C/8L/vf/B/7j/v/+y/7f/sv+t/7H/q/+o/6f/nv+m/5r/of+Y/5n/mP+S/5T/kP+R/43/kP+F/5T/fv+N/4T/g/+F/33/gf98/3v/gP90/3//cv99/3L/ef9u/3b/bv9x/3D/b/9t/23/bf9r/23/Y/9u/2b/a/9n/2b/aP9j/2r/Xf9v/1r/av9f/2X/YP9l/2D/X/9l/1r/bP9Y/2n/Yf9n/17/Zv9c/2n/Xv9j/2f/X/9p/1v/af9d/2n/Xf9s/17/a/9h/2v/Zf9p/2r/Y/9w/2T/dv9j/3T/Zv90/2z/bf90/2n/d/9v/3T/cf91/3P/e/9v/3//c/97/3j/ff98/3v/fv93/4T/ef+E/3n/gf+A/37/h/98/4j/gf+K/4n/iv+L/4v/if+P/4//j/+U/5D/lf+T/5f/k/+c/5P/n/+X/53/mv+f/5r/n/+f/5//of+i/53/p/+b/6v/nf+t/6T/p/+x/6b/tP+n/7X/pf+5/6j/t/+t/7n/rv+2/7L/s/+1/7j/tv+5/7f/vP+7/77/vv+4/8P/v/++/8X/uP/K/7//w//H/8P/yf/F/8b/zP/J/9D/xv/U/8j/2P/O/9L/0f/O/9X/0v/X/9H/2v/P/9//0P/j/9H/3v/a/93/4f/c/97/3f/f/+L/4v/h/+T/3f/r/97/7f/h/+n/5v/q/+j/6//q/+3/6v/x/+z/8f/1/+//9f/w//T/+P/2//j/+//7//n//P/9/////v8BAAAABgAAAAUABAAGAAoACwAJAA4ADgAMABUADAARABMADgAbABQAEgAZABYAHgAYABsAHQAdACEAHwAiACAAKgAfAC0AIQArACgAKQArAC8AKwA3AC0AMwA1AC4AOQA2ADQAPgAzAEEANQBHADsARgBBAEQARgBKAEkATwBKAFAATwBSAFMAVwBSAFoAVwBZAFsAXABdAGIAWgBmAGIAYwBqAGEAbwBjAHEAaABvAG0AbwBxAHUAdQB2AHcAeQB9AHoAfgB9AIAAfQCGAH8AgwCCAIQAiACKAIQAiACLAIsAjwCLAJIAjACUAI0AkgCUAJEAlACUAJIAmgCTAJoAmACYAJoAngCcAJsAnwCcAKEAngChAJ4ApwCaAKgAngCnAKQApQCjAKMApwCmAKQArQCeAK4AnwCrAKMAqAClAKYApgCjAKgAowCrAKAArACgAKcApACgAKYAoQChAKEAnQChAJwAogCbAJ4AnACZAJ0AmgCYAKEAkQCbAJcAkQCXAJIAlACUAJAAjgCOAIwAjgCJAIoAiQCJAIMAhwCAAIIAfQB/AHoAgAB1AHwAcwBzAHIAdQBqAHIAZgBvAGQAaABiAF4AZgBUAGQAVQBfAFEAWgBOAFUASwBQAEYATQBFAEYAQQA/AD4AOwA5ADgAMAA0AC4ALgAoACgAIwAkAB8AHwAbABwAEgAYABAADgAOAAkACwAEAAUAAgABAPr/+v/3//b/+P/v/+7/7//o/+r/5//h/+X/4P/a/97/0//d/83/1//N/9D/y//L/8T/y/+9/8T/vf+7/73/tP+4/7X/t/+t/7T/pP+w/6P/qv+h/6T/n/+b/5//m/+V/5z/jP+a/4v/lf+M/4v/jv+F/4z/gf+G/4D/h/9+/4b/dP+C/3f/ev98/3P/ff9v/3f/cf9x/3P/a/9y/2f/bv9r/2f/av9j/2X/ZP9n/2L/Zf9j/2H/Y/9f/13/Y/9c/2H/X/9d/2D/W/9e/2D/XP9c/1v/XP9c/17/XP9f/1f/Yv9Z/2D/XP9c/1//Wv9h/1j/Zv9U/2v/WP9j/2T/Xv9o/1z/ZP9h/2X/Zf9k/2X/Zf9l/2f/Zf9o/2f/bv9q/3H/a/9x/2z/df9w/3X/d/9w/3//c/99/3n/ev98/3z/gv9+/4X/ff+J/4H/i/+G/4r/if+Q/4//j/+V/4//mP+P/53/k/+i/5T/of+X/6n/nf+m/6H/qf+l/6//pf+y/6n/sP+x/7L/tv+z/7j/s//E/7f/x/+6/8H/wv/D/8r/xv/H/8z/yf/L/8v/1P/N/9f/0P/a/9L/3P/Z/+D/2v/j/93/5//j/+r/5v/v/+b/9P/s//T/9P/y//f/9//7//f//v/9//z/AwD9/wIABQABAAoABAALAAsACQAOAAkADQAVAAgAFgANABYAFwAVABcAGAAWAB8AFQAfABwAGwAfACEAHgAlACEAIQAmACEAJQApACUALgAlAC8AJwAuAC0ALgArADMAJwA1AC0ANAAvADUAMAA3ADMANQA2ADkAMgA7ADIANwA+ADcAOwAzADsAOQA/ADUAPQA6ADgAPgA1AEAANgA8ADkAOwA7ADsAOQA5ADgAOAA+ADkAOAA5ADoANwBCADQAQQA1AD4AOwA9ADkAPAAzAEAANQA7ADYAOQA6ADgANgA5ADYAPAAzADYAOAA3ADcAOgAxAD0AMAA8ADYAOwA1ADoAMwA4ADIAPwAtAD4ALgA2ADgAMAA5ADAANwA0ADYAMgA1ADAANgAzADIALAA4ACwAOAAoADcAJAA4ACcANQAqAC8AKwAzACwAMwAoAC4ALgAuACwALQArAC8AMgAmADIAJgAzAC8ALgAvAC0ALwAuADEALgAwAC0ANAAqADIAKwAtAC8AMwAsADMAJwAzADAAMQAxADEALAAxADMALwA0ACoANwApADcALwAyADEAMQAyADIANAAyADcAMgA1ADUAMwA1ADkAMQA8ADMANgA4ADgANQA5ADEAOQA1ADcAPAA0ADsAOAA4ADwAOAA/ADgAPAA3AD8APAA7AD0AOwA/AD0APwA/AD4AQABAAEAAQABAAEYAPgBHAEAAQQBDAEIAQgBGAD4ARQA+AEUARgBEAEMARgBAAEkAQgBFAEUARQBCAEcAQABJAEMAQwBDAEIARgBDAEQARABGAD4ARgBBAEMARwA/AEQAQwA/AEcAOABKAD4AQwA/AEMAPABDAD4APABBADcAQgA7AD0APQA5ADsAOwA6ADgANwA4ADgANgA2ADYAMQA2ADAAMwA0ADIALgAzACsANAArACwALgAlACsAJgAqACoAJgAiACUAIQApAB0AJgAeAB8AIAAcAB0AGwAXABkAGAAaAA8AGQANABEAEwAIAA8ACgAFAAwAAgAFAAAABgD+////AAD7//3/+f/y//3/8P/0//P/6v/1/+f/8v/h//H/2//w/9z/6f/d/+D/3f/f/9r/2//Y/9L/2P/M/9P/zv/M/8z/yP/O/8L/zv+8/8X/wf+9/8H/uP+9/7b/uP+v/7z/qv+6/6T/tP+l/67/pP+q/6L/p/+e/6X/n/+e/5z/nP+T/5z/kv+Z/5L/j/+T/4//j/+N/43/h/+N/4T/if+E/4n/gP+B/4D/gf9//33/fv97/3r/e/9z/33/cP97/3D/ef9w/3f/bv93/27/b/9x/2r/c/9s/23/bf9r/2r/a/9q/2z/aP9n/2n/aP9m/2f/ZP9p/2T/Zf9l/1//af9i/2X/Yf9i/13/Z/9g/2X/X/9k/2H/Zv9h/2f/Xv9o/2D/Z/9k/2X/af9o/2T/bf9k/23/av9n/3L/Zf9z/2j/df9u/3L/bf9y/3P/c/92/3f/c/99/3P/gf94/3//f/98/4b/fv+F/4f/g/+G/4z/hv+R/4b/k/+J/5v/j/+Y/5H/nf+X/6P/mv+l/6D/pf+j/6j/qf+q/6v/r/+x/7b/rv+6/7X/vP+5/8P/vP/G/8T/wv/N/8f/zv/O/9H/0f/V/9j/2P/b/9v/5v/Z/+z/4P/u/+v/7//t//b/8f/5//r/+/8AAAEAAQACAAoABgANAAwADgAXABAAGAAXAB4AGQAjAB8AKAAkACcAKwArADEANAAuADoAMAA+ADgAQAA+AEUAQwBGAEgATABKAE8ATgBTAFMAVQBTAFwAWQBeAGIAXQBkAGQAaQBmAG0AawBxAG8AdAByAHoAcgB9AHwAdgCGAHUAiwB6AIkAgwCJAIMAkQCDAJAAigCPAJAAjQCVAJAAkwCVAJUAlQCXAJcAlwCdAJoAmwCdAJsAoQCeAJ0AnwCdAKEApACcAKUAoACgAKYAnQCnAKEApAChAKYAowCjAKMAowClAKAApQCgAKIAnwClAJwApwCYAKYAmwCnAJUAowCbAJsAnwCcAJwAnACaAJgAmwCbAJQAmwCYAJAAmwCOAJYAkgCOAJUAiwCUAIsAjACLAIgAigCLAIEAiACAAIIAgwB9AH0AfQB6AHoAeQBzAHcAcgB2AG0AcgBtAGsAbABlAGoAZgBjAGIAYABfAF8AWABbAFQAWgBQAFcAUABOAE4ATQBIAEsASgA+AEkAPABFADoAPwA3AD4AMgA4AC4ANAAtADEAKwAvACYAKQAkACYAIAAlABoAHQAeABcAGgATABkAEAARAAwADAAPAAgADQACAAUACAAAAAQA/v/6/wAA+v/5//v/8f/1//b/7f/3/+3/7v/s/+v/6//n/+n/4//n/+L/5P/g/+T/3P/g/97/2//a/9v/2f/Z/9X/1//V/9X/0f/P/9H/0P/S/87/0f/N/83/y//K/87/yP/P/8b/yf/H/8r/yv/G/8f/w//F/8L/xv/G/8D/xv+9/8j/vv/G/7//xP/B/8L/v//A/8b/v//E/77/v//C/8T/u//I/7j/yP+6/8b/vv/E/73/wv+//7//yP+9/8f/vP/H/8b/wv/H/8H/xP/H/8f/xf/J/8T/xf/I/8j/yP/J/8X/yP/L/8n/y//K/8j/0P/L/87/zP/R/87/0//L/9T/z//S/9P/0v/S/9b/0P/Z/8//2f/W/9f/1//Y/9f/3P/Z/9z/3P/c/9r/3f/a/+X/1f/n/9T/5P/e/93/5f/d/+T/4f/f/+j/2v/v/9r/6//j/+b/6P/k/+r/4v/r/+b/6v/o/+n/5P/v/+n/7//l//D/5v/1/+f/8v/p//D/6P/y/+r/8f/v/+n/7v/s//P/6f/0/+T/9v/l//X/6//t/+//7v/u//D/7P/u/+7/7P/y/+v/7P/s/+3/7//t/+n/7P/p//X/5f/w/+f/7v/s/+z/6//p/+v/6P/o/+7/4//v/9//7f/k/+r/4v/m/+X/5P/r/97/6v/e/+X/4v/m/+L/4v/j/+D/4v/f/+H/4//d/+D/2//k/9r/4f/b/9n/4//X/+X/0//g/9f/3v/b/9j/2P/W/9r/1f/e/9X/1v/W/9X/1//W/9P/0//X/9L/1f/T/9H/0f/V/87/1//O/8//0P/Q/9P/0P/O/83/zv/P/9H/0P/K/9H/yP/Q/83/zf/K/9D/yf/S/8n/z//O/8r/0//M/83/y//R/8z/0P/L/83/0f/Q/9H/0P/M/9L/0f/P/9L/0P/U/9D/0//S/9L/2f/O/9b/z//c/9T/3P/W/9f/3f/a/9z/2//d/93/3f/i/9v/4f/g/+L/5v/h/+b/5f/o/+X/6v/o/+r/6//r/+//7f/u//b/6//4//L/9f/8//P/9//6//z//P8AAPv/BAD9/wQAAQAEAAIACQAIAAsADQAKABAAEgAOABcADwAaABUAGAAcABsAHwAgAB4AJQAgACkAJgAqACUAMwAnADQALAA0AC8APAAvAD4AOAA5AEAAOwBCAEQARABFAEYASgBHAFEARQBYAEkAVABRAFQAWQBWAFkAWwBbAGEAWwBkAF8AZwBkAGUAaQBnAG0AawBrAHQAaQB3AG0AdwByAHsAcgB+AHkAegB+AH4AggCAAIAAhQCCAIkAhgCGAIoAhwCJAI4AigCMAJIAjQCSAIwAkgCSAJMAlACUAJMAlgCUAJYAlACWAJQAmgCRAJwAkQCeAJQAngCTAJoAlACfAJUAmwCWAJUAmgCXAJsAmgCWAJYAlQCZAJcAmgCSAJoAjwCbAJIAlACXAIoAmgCJAJcAjQCSAIsAkgCIAJEAigCMAIgAjACDAIkAigCEAIcAggB+AIMAfAB+AH4AewB+AHUAfABwAHgAcQBzAHAAbwBqAGwAZwBmAGoAYQBqAFgAaABZAGIAWQBaAFUAVwBRAFUAUABNAEwASABJAEYASgA9AEcAOABEADsAOgA2ADYANAAwADQAKQAsAC0AIQApAB4AIwAeABoAHAATABkAEQASAA0ACwAMAAgACAADAAMAAQD///v//f/1//r/8f/5/+7/8f/q/+j/6f/m/+b/4v/k/97/2v/d/9j/2v/T/9T/0f/R/8r/zf/G/87/v//J/77/xv+6/8P/t/+//7X/uP+1/7f/s/+x/6//rf+s/67/qf+m/6z/of+o/5//pP+f/6P/m/+g/5n/m/+d/5j/nf+S/5j/mP+O/5n/jf+X/47/kP+Q/47/jv+M/4r/jv+K/4z/jP+K/43/hv+J/4j/hP+L/4D/if+C/4X/hP+H/4L/iv+B/4v/f/+H/4T/gv+I/4D/h/+G/4T/h/+D/4r/hf+G/4j/hv+K/4j/h/+M/4X/kP+H/43/iv+L/4z/kf+M/47/kP+M/5T/jv+Q/5H/lf+Q/5j/j/+d/5X/l/+Z/5n/m/+d/5z/mP+j/5n/o/+g/6X/o/+m/6T/qf+k/63/pv+w/6v/rP+x/67/sf+1/7X/sv+7/7T/t/+7/7v/vf/A/7z/w/++/8X/wP/K/8P/xv/J/8j/zf/M/8//zv/Q/9D/1P/Q/9f/1v/Z/9n/2v/Y/9z/3v/g/97/4v/d/+r/3v/q/+X/6v/o/+n/6v/r/+//7//x//D/8P/0//P/+P/2//n/9//5//f//f/6//3////9/wAA/f8BAAAABQABAAIACAADAAoABQAIAAoABQAMAAsACwAOAAoADwAIABUACQAXAAwAFQAQABMADgAVABQAFgAUABUAFQAXABgAGQAVABoAFAAbAB4AFgAgABUAHAAfABwAHQAbAB8AHAAjABoAIAAfAB8AJQAcACAAIQAiACIAIQAdACUAHgAnAB4AJwAeACoAGwAqAB8AJwAkACMAJQAgACcAIwAkACgAIAAlACYAIQAsAB8AKwAhACkAIwAqACMAKAAkACgAJQAsACEALQAfAC0AHgAtACIALgAlACcAKgAjACwAJwAlACwAIQAuACUAJgAqACcAKgAnACUAKgAnACsAJQAtACcAKgApACoAKQAqAC0AKAAuACgAKgAqACsAKgAsACwALAAqADEAJwAzACcAMQAuADAALQAxAC0AMQAuAC8ALwAxAC8AMQAvADMAMQAxAC8AMgAvADUAMQA2AC8ANwA1ADIAPAAvAD0ALwA/ADEAOQA6ADQAOwA6ADgAPwA1AEAANwA6AD8AOQBAADsAQAA3AEMAOwBCADwAPwBAAEQAPQBHAD4AQQBDAEIARABHAD8ARABDAEUARwBDAEoAQQBOAD4ATABEAEoARwBKAEYASABIAEsASwBKAEgASwBJAEwASQBMAE4ASgBMAEwATgBMAFAASgBPAEoAUgBPAE4ATwBMAE4ATgBOAFIATgBLAE8ASwBWAEYAVQBJAFEATwBMAEoATABNAEwATwBFAFAASgBPAEQAUgBFAE0ATABGAE0ARgBKAEUASgBHAEUARwBDAEcAQgBHAD4ARwBBAEQAPwBGADkASQA2AEYANABEADUAPwA3ADwAOwA3ADoAMwA3ADQANAA4AC8AMwAyACsAMgAsAC8AKgArACgAKAApACcAIwApACAAJwAcACIAHwAhABcAIgAYABkAGwARABwAEgATABEADwAQABAACQAMAA0ACgAJAAMABQAAAAcA//8FAPv/AAD5//v//P/2//r/9P/0//T/8f/x/+//7v/s/+r/6f/r/+L/6v/e/+f/3//i/93/3P/f/9j/2//Y/9b/0v/S/83/1//L/9H/y//I/8//wv/O/8D/xv/C/8P/wv+8/8H/t//E/7b/vv+1/7b/t/+0/7L/tP+w/7L/qf+z/6j/sP+n/6j/qf+t/6L/rP+g/6X/pv+g/6T/pP+c/6f/l/+j/5n/nv+d/5b/mv+Y/5f/mf+X/5j/kf+a/5L/k/+X/4//lP+V/4v/l/+K/5b/iv+S/4v/kP+L/5D/jf+Q/4//jv+O/4z/kP+K/5L/iv+P/43/jP+R/4r/jf+R/4n/j/+P/43/kv+N/5H/iv+V/43/k/+T/4v/mv+M/5j/kf+S/5T/mP+S/5n/k/+Y/5f/m/+Z/5r/m/+a/5n/n/+a/6L/nf+a/6f/m/+l/6D/of+n/6P/p/+k/6r/pP+t/6j/q/+x/6f/s/+r/7X/sP+z/7H/uP+z/7r/tv+3/7v/uv/B/73/vv/B/77/wv/K/8L/zv/F/8v/zv/K/9H/z//P/9j/zf/X/9T/1v/d/9f/2v/c/97/4v/e/9//4//j/+f/4//t/93/8P/l/+7/7v/t//L/8v/u//X/9P/4//b/+f/5//v//f/9//7/AAABAAMAAgACAAgABAAIAAgABgAPAAQAEAAIABIACgAUAA0AEgAWABIAFgAVABgAGQAaABkAHwAVACIAHAAdACQAGwAiACQAIQAiACQAHwArACMAKAAmACkAKAAqACwAJgAvACgALQAuADAAKgAxAC4ALgA1ACoANAAwAC0ANwAuADkAMgA1ADMAMwA5ADYAMwA4ADAAQAAzADsANwA3ADsAOgA7ADcAOwA5ADoAQQA2AD4AOQA7AD4APgA6AD0AOgA8AD4AOgBBADgAQQA4AEEANwA+AEAAOQBBADkAPgA7AD0APwA9ADkAQgA2AEIAOAA/AD8ANQBCADYAOwA+ADgAPwA6ADsAOwA2AD4ANwA+ADsAOgA8ADoAPAA5ADYAPAA3ADkAOwA1AD4ANwA3AD4AMAA+ADAAPQA2ADcAOQAxADsAMgA5ADQANQA3ADYANgA2ADYANgAyADIANgAxADYALwA2ADMANAAzADIAMAA2ADMANAAwADQALwA0ADIAMQAxADIAMwAtADQALQAzADEAMQA0ACcANQAsADMAMwApADIAKwAxAC4AMQApADAALQAvAC8ALQApADEALAAsAC8AJgAxACwALAAtACcALQAoACwAKgAqACgALAAqACgAKgAqACoAKAAoACgAKAAnACoAIwAsACUAJgAmACoAHwAsACAAJgAnACMAJQAjACMAIwAkACIAJQAgACUAIAAjAB4AIQAgACIAIAAeAB8AHgAiAB0AHAAeAB0AGwAgABcAIAAZABwAGQAXABkAGgAYABUAFwAYABQAGgARABUAFAATABUAEQASAA0AEwAQAA4AFQAKABAADAAKABAABwAMAAoABwAKAAcABQALAAIACQD//wcAAQAEAAIA//8AAP7/AAD9//z/9//+//r/+f/7//X/9f/7/+///f/p//n/7P/0//D/7f/x/+n/7//o/+r/7P/l/+b/6v/g/+r/4v/h/+H/4v/e/+D/3v/c/9z/3f/X/9v/2P/W/9n/1P/W/9T/0P/S/8//zf/R/87/yf/N/8b/yv/M/8H/zf/D/8T/xv++/8f/uP/J/7n/wf+6/7r/vv+7/73/uP+0/7j/tP+6/7T/sf+2/6r/u/+q/7X/rP+u/67/qf+u/6f/rP+r/6f/qP+n/6X/p/+k/6X/o/+g/6H/pv+d/6P/nP+j/5v/oP+Z/6L/mf+c/5r/mP+e/5n/mv+Y/5j/l/+b/5H/nv+R/5z/lf+U/5z/j/+a/5P/lP+W/5X/kv+W/5T/lv+U/5X/kv+Z/5D/l/+S/5X/lP+V/5P/l/+P/5r/lP+W/5T/lP+W/5j/lf+b/5T/nP+W/5v/m/+X/5r/nP+b/6L/mv+f/5v/of+e/6P/n/+k/6D/pf+k/6X/pf+p/6P/qv+p/6r/rv+r/6v/sP+v/6//tP+u/7f/tP+z/7j/s//C/7X/u/+9/7v/v//B/73/w//C/8b/xP/M/8f/yP/M/8b/1P/L/9f/y//X/8//2P/X/9r/2//V/9//2//i/+L/3//m/+H/7P/l/+z/6v/t/+v/8f/v//b/8P/3//L//P/y/wAA+f/8/wIA+v8GAAAACwAEAAwAAQAPAAsADQAQAA8AFQANABwADgAfABMAHQAaAB0AHQAfAB8AIgAjACoAIwAqACYAKwAuACsAMQAwADAANAAwADsAMQA8ADIAQgA4AD4AQAA4AEUAPQBIAEQAQwBKAEIATgBIAEcAVABFAFcARwBTAFIATgBXAE4AVwBSAFkAVABZAFcAVQBhAFYAXwBZAF0AXQBfAFsAYABfAGMAWwBmAF4AZQBnAF0AaABdAGcAZgBmAGMAZABlAGQAagBkAGEAaQBkAGYAaABkAGgAZgBkAGoAYQBqAGcAYwBqAGQAZwBpAF4AbABjAGkAYgBlAGYAYwBqAF8AaABjAGEAaQBcAGcAYABeAGcAVwBnAFgAZABaAF8AXQBaAF8AVgBdAFcAXABVAFgAUQBbAFEAVQBUAEwAWABOAFUATQBNAE8ASgBOAEsASABMAEUARwBGAEgAQgBGAEQAQgBEADsAQgA+ADwAQAA6ADoAPgA3ADgAOQAzADsALgA3ACwANQAtADAALwArAC8AJAAzACEAKwAjACYAJwAfAB8AIQAcACQAGwAaABgAGQAcABIAGQAOABMAEwAPAA8AEgAGABYAAQAQAAEADwAAAA0AAAAHAAEAAQAAAAEA/f/+//v//f/4//v/+v/4//v/8P/5//X/8//0//H/8P/v/+//7v/x/+j/7P/q/+r/7P/m/+v/4v/n/+T/5f/k/+P/4P/g/+T/2v/o/9b/5f/a/9v/4//U/+D/2P/Z/9v/1P/d/9L/3//W/9X/2f/T/9b/1P/U/9X/1P/V/87/2v/N/9P/0//O/9X/yv/V/8z/1f/K/9T/yP/R/87/zv/P/8v/z//P/8r/z//L/83/z//J/87/y//P/8v/x//Q/8r/yf/M/8X/zv/K/8f/zP/J/8v/zv/J/87/yP/M/8z/yv/M/8z/zP/M/8r/yv/K/87/zv/I/9D/yf/N/9H/xv/U/8j/1P/L/87/zv/O/8//zv/Q/8r/0v/Q/83/0//S/8z/1f/M/9f/zP/W/8z/1v/Q/9X/1f/R/9b/0//W/9H/1P/R/9j/0v/a/8//1//W/9P/3P/R/93/0v/d/9b/3f/U/+L/0f/e/9r/2P/d/9X/4P/U/+L/1v/i/9b/3v/d/9n/4v/X/+T/1//i/93/2//i/9n/5v/Z/+P/2//g/+H/3//e/+D/3v/g/+L/3//i/97/5P/f/+T/4P/k/+D/5P/g/+T/4v/k/+L/5P/i/+L/5P/k/+D/5P/i/+T/5v/g/+v/3f/s/+H/6f/k/+P/6f/f/+3/3//r/+T/6f/k/+n/4v/r/+P/6f/k/+n/4v/v/+H/7v/k/+f/6//m/+n/5//m/+3/5v/t/+j/6v/t/+n/6//r/+n/6//t/+L/8v/f//b/4//y/+T/8f/k//L/6P/w/+n/7v/r/+3/7f/t/+v/8P/n//b/6P/w/+n/8v/s/+//8P/s//L/6//y/+v/9v/v//D/8f/y/+z/+P/p//3/6//4/+r/9f/y//L/+P/y//H/8//4//X/9//z//T/+f/y//3/8v/+//X/9v8AAPX//P/8//z//v/8//v/+v8CAPv/AAD9/wEA//8AAAAAAAADAAUAAAAIAPz/CwAAAAYABwAAAA0AAwANAAgACQAJAAsADgAIAA4ACQAUAAoAEgAOAA4AFgANABkADAAeAA0AHAASABoAFAAYAB0AFwAhABYAHQAfABwAIQAcACEAIQAfACcAHQAkACQAIQAoACUAJgArACQALwAoAC0AJwAuAC8AKQAyAC0AMAAyAC4ANAAyADYANAA5ADMANwA5ADcAPQA5ADYAQQA1AEcANABKADcARAA+AD8ARgBCAEEARgBDAEUASQBDAE4ARQBNAEEATwBHAEwASQBKAE4ATgBOAE8ASQBTAEwAVABOAFMAUQBTAE0AVQBUAFQAVQBVAFcAVwBVAFUAWQBXAFcAXABRAGEAVABeAFcAWABbAFsAWwBZAFgAXABYAFsAXQBZAF0AVwBbAF0AXABYAGAAUgBiAFMAXwBXAFoAXABXAF4AVwBaAFcAWQBZAFkAVQBaAFIAWQBUAFYAWABUAFYAUgBUAE8AVwBKAFgASQBWAEkAUQBNAEwATwBNAEcAUABEAE8ARQBHAEYARgBFAEUAQQBFAEAARQA9AD0AQAA/ADsAQAAyAEIAMQA/ADMAOwAzADYAMwAxADUALAAzACoAMAAtACcAMAAiACwAIQAlACUAIwAhACAAHwAZABwAIAAUAB8AEgAUABsADQAVAAwADgARABAABwAMAAYACgAFAAcAAAAEAAAAAAD9/wAA+v/7//r/9v/6//X/9f/1/+v/+//p//X/6P/v/+n/6//l/+f/5P/k/+T/5P/g/9z/4P/b/9//2P/b/9n/1P/Z/8//2P/P/9D/0//N/9H/zf/L/8v/yv/I/8r/xv/I/8L/yP+9/8j/vv/B/73/wf+8/8P/tP/E/7T/v/+2/7n/uP+4/7j/tP+1/7b/sv+2/67/s/+v/7T/q/+z/6v/sf+v/6z/rv+s/6z/rP+s/6z/rP+o/6j/qP+r/6v/qP+p/6b/q/+j/6//of+s/6j/o/+t/57/rv+k/6n/pf+m/6n/qf+j/6z/of+s/6P/rP+l/63/pv+r/63/pv+w/6f/rv+r/6z/sP+s/67/rf+v/7H/rv+y/63/sP+x/7P/sf+3/67/tf+0/7L/u/+2/7j/uv+2/7r/vP+8/7r/wP+7/77/v//B/8L/wP/B/8D/yf/C/8n/w//K/8n/zP/M/8v/zf/P/8//0//P/9L/1P/S/9n/yv/h/8//4P/X/9r/3P/e/+D/3P/j/9//4f/m/93/6//f/+3/4f/y/+P/8P/k//D/7v/v//D/7v/1//D/9//0//f/+P/z//z/+//5/wAA+P8CAPr/AgAAAAIAAAABAAAACQACAAsAAwAKAAUAEAAKABAACAAVAAwAEAAQABEAFAAUAA8AGgAQABgAFwAVABgAGgAXACIAFQAfABgAIAAfAB4AIwAYACYAGwAnAB8AKQAgACQAJwAiACsAJAAnACcAKQApACkALQAnACoAKwApAC8AKAAuACkALwAtAC0AKQAwACwAMQAuAC8ALwAtADEAMAAzAC8AMAAvADMAMgAyADEALwA1AC4ANwAwADMAMwAxADcALgA3AC4ANwAxADYANAAwADcAMgA2ADIAMgA0ADQANQAwADYALwAyADUALgA0AC0ANQAwADUAMQAxADEALwAsADQAMQAwAC8ALQAwADAALQAwACsAMgApADIAKwAwACsALgAtADMAKgA0ACcAMgAoADIAJgAyACYALgAqACcALwAmACsALQAkAC0AKAAoADAAJQArACYAKAAqACUALAAjACsAIwAsACMAKgAjACYAIwAnACQAJwAhACgAIAAmACQAJQAlAB8AJQAhACIAJQAgACEAJQAeACcAHgAnABwAJQAgACQAIwAdACAAJwAcACUAHwAfACUAIAAfACUAHAAmABoAKgAaACQAHQAfACUAHgAjAB8AJAAfAB8AJQAeACYAHQAiACEAIwAjAB8AIgAhACEAJQAdACAAIgAfACMAHQAkAB0AJAAdACIAIQAfACAAIwAbACIAHQAhACEA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2P/M/9v/zv/Z/9X/1v/W/9T/3P/T/93/1P/b/9f/2//W/93/2f/d/9v/3v/Z/+X/1f/n/9n/4f/g/+D/5f/i/+P/5P/l/+X/6v/j/+f/6P/o/+r/6P/r/+b/7//q/+//6//w/+3/9P/v//L/8v/z//T/8v/5//f/9//2//r/9//+//v//P/9//v/AAD6/wMA/P8FAPr/CAAAAAUABwADAAwAAwAKAAQADgAFAA8ABgAPAAwADwANAA8AFQALABgADQAYABEAFAAYABIAGwAWABcAHQAYABsAHQAVACYAFAApABYAJQAbACYAHAArABgAKgAhACYAJgAiACcAJAAqACQAKQAmAC0AKAAtACsAJwA2ACMANwAmAC4ALQAvADEALQAyACwANgAtADIAMgAxADYAMQA0ADEANAAxADUANQA1ADQANAA1ADUANwA3ADUANgAzADgANgAzADkAMQA7ADYANwA3ADUANQA2ADYAOAA0ADcANAA4ADgANgA2ADcAMAA7ADAAOAA3ADYANAA2ADMANgAzADUAMwAzADMANQAyADEANQAwADMAMAA0AC4AMAAsADAALwAxACsALgAtAC0AKAAxACYALwAmAC0AKAAqACgAJAAqACIAKwAiACUAIwAkACAAJgAdACIAHwAjAB8AHwAbAB4AHAAeABoAGwAcABgAHAAVABoAEwAcABIAFgATAA8AGwALABcADgARABIAEAAKAA4ADwALABEABwAKAA0ACAALAAQACQACAAgABQAAAAQAAgAFAAAABgD4/wkA+P8EAPv//v/+//3////5//z/9f////T/+//4//f/9//1//b/8P/4//H/9v/2/+7/8//w//P/8f/0/+z/7v/s/+//7v/x/+n/7v/p/+v/7P/s/+n/7P/j/+z/6P/o/+3/5f/q/+P/6f/m/+b/6f/i/+j/4v/n/+T/5f/l/+H/5f/l/+D/5//e/+f/4v/j/+P/3//j/97/5f/e/+X/3P/g/97/5P/g/9//4f/d/+P/4P/f/+P/3//h/+P/3//g/+H/3//h/+P/2//m/93/4v/g/9r/6f/W/+f/2//l/9v/5//Z/+f/2//l/9//4f/g/9z/5P/h/+D/5f/a/+j/3f/l/+D/4f/j/+H/3v/l/+D/4//n/9v/5v/f/+P/5f/g/+b/3f/o/97/6v/g/+b/6P/h/+z/4f/q/+b/5v/o/+j/6P/q/+f/6f/n/+v/6P/n/+v/7P/p/+v/6f/t/+v/6f/w/+X/8v/n//D/6//u/+v/7v/t/+7/7f/u/+z/6v/y/+n/8v/p//D/7f/w/+//8v/o//P/5f/4/+j/9f/p//H/8v/n//f/6v/0//D/6f/1/+r/+P/q//n/5//1/+//8f/z/+7/9//p//f/7f/w//T/7//2/+v/+f/t//X/8f/w//L/8v/z//D/8P/0//P/8P/0/+7/9v/x//L/7v/4/+v/+//o//v/6//4/+//8v/y//H/9P/x//T/7//0/+//9v/t//T/9f/t//j/7f/0//H/8//x//b/7//0//H/8P/4/+7/9v/v//T/7//3//H/9P/w//D/9v/u//T/8//x//b/6//5/+j/+v/s//b/9f/t//f/6//4/+z//P/o//n/7f/0//X/8f/2//D/8v/z//f/7//2/+//9v/x//T/8//2//H/+P/v//n/8f/4//b/8P/7/+//+f/1//T/9//0//n/8v/7//L/+//0//n/9v/3//n/+P/5//X/+f/5//3/9P/8//X/+//6//n/+f/6//v////1/wIA+f8BAPf/AgD9/wEA/P//////AQD8/wQA/v8CAAAABAD8/wsA/v8FAAYAAQAHAAMAAwAJAAYABwAFAAYACQAHAAkABgAKAAgADAAGAA8ABgARAAYADwAOAAoAEQAMAA8ADwAPAA8ADQATAA4AEQAVAA8AFgARABQAFAAUABIAGAAWABQAGQAUABsAGAAZABsAGwAZAB0AGQAdABsAHwAbACAAGwAgAB0AHgAgAB0AJAAdACQAIgAgACMAIgAiACcAHgArABwAKgAgACcAJgAlACcAJwApACUAKQAlACkAKQAmACkAJwArACgAKQArACcALwAoACwAKwApACsALQAqAC8AJwAuAC0AKwAtAC0AKwAvAC0AKwAwACsALwArAC0AMQAqADEALQApADEALAAsAC8ALAArAC8AKgAtAC4AKgAvACoAMAAoACwAKgAtACsAKQAoAC4AJAAwACIALgAoACkAKQAjACcAKAAnACgAJAAnACQAKgAlACAAJgAhACUAJQAfACQAIQAdACUAHQAjACAAHAAhABkAJAAYACAAGwAcABkAHAAWABsAGAAYABwAEAAZABYAEQAcAAwAGwAMABYAEAANABcACAAYAAgAEQAGABMACAAQAAcADQABABAAAAAQAAAABAAGAAIABgAEAP//AQAEAP3/AgD+//z/BAD3/wIA9f8CAPT//v/2//3/9P/7//b/9//4//X/9v/1//T/8v/2//D/8v/y/+//8P/t/+//7//t/+3/7P/t/+3/6P/u/+b/7//k/+z/4v/r/+j/5v/o/+D/6f/h/+j/3f/n/+T/3f/p/9v/4//f/9//3//d/+H/2//i/9v/3v/Z/9//3P/b/93/2f/b/9n/2f/a/9n/2//V/9z/1v/b/9n/1//c/9P/2P/d/9L/3v/Q/9z/1v/X/9n/1f/U/9r/1P/c/9P/2P/U/9r/0//e/9P/3f/R/93/1f/c/9T/2//U/9v/2P/X/9//1f/c/9P/4P/Q/+L/0v/e/93/1f/h/9X/3v/e/9n/3v/e/9b/5f/X/+H/3v/d/9//4f/f/+H/3f/k/9z/6P/e/+f/3//j/+T/4v/q/97/5//n/+b/5//n/+n/6f/l/+7/4v/1/+D/8f/n/+7/7v/s/+v/8f/o//X/7P/x//P/7f/y//P/7//6/+v//f/t//v/8f/5//b/9v/3//f/+P/9//j/+v/7//v////9//n/AgD7/wMA+/8AAAAAAQAAAAAABAD+/woA/P8LAAAABwAEAAYABgAGAAcABAAJAAYACwAGAAsACQAJAAsACQANAAcAFAAIABIACwAOAA8ADwATAA0AEwAOABIAFAAPABQAEAAUABEAFAAUABIAFwAOABcAEwAaABEAHQAOAB4AFQAXABkAFgAbABYAGwAWAB0AEgAkAA8AJAATACAAGAAbABoAHQAWACMAEwAiABcAHQAcAB0AGAAhABYAIQAZAB8AFgAhABUAIwAVACMAGQAbAB4AGgAeAB4AGgAfABcAIwAUACEAFgAiABgAHAAfABsAGwAeABYAIAAaABkAIQAZABsAHgAWABwAHAAZABkAGwAaAB0AHAAXABsAGwAWACEAFwAZABsAGgAcABQAGQAaABsAGAAYABcAGAAYABkAFgAYABQAGAAVABkAFQATABgAEgAZABQAFgARABgAEgAVABMAEwATABEAEQAVABYAEAATAAsAGQAMABMAEgAOABUADAATABAAEgAMABEADgASAA8AEAAQABAADAASAAkAEgAHABIACwAQAAsADwAJAAwADQAFABYAAgARAAcADAANAAcADAAHAA0ACwALAAwABQAOAAgABwANAAIAEgAGAAoABwAIAAkACQALAAMADgACAA4ABAALAAcACQALAAkACQAIAAkACwAJAAkACgAHAAgACwAFAAwAAwAQAAcABgAMAAUADAALAAcADQADAAsACQAHAAwABgAGAAwABQAMAAUACgAHAAYADAAFAAwACAAIAAgADAAFAAwABwASAAUACwAKAAgACgAMAAoACgAFAA0AAwARAAMACwAMAAQAEQADABMAAQASAAUADQAIAAsACAAPAAUAEgAFABIABAANAAoADAAMAAoACwAHAA8ACAAPAAoADQAJAA8ACgAPAAgADQAKAA4ADgAIAA4ACgAPAAgACwAMAAoAEAAKAA0ACwANAAgACwAOAAoADQALAAkACwAQAAkADQAGAA0ACQAOAAoADQAJAAkADAAIAAwACAAIAAoACgAJAAgACAAFAA4AAgAMAAMACgADAAwABAAIAAUACgACAAgABQAAAAsAAAAJAAIAAwADAAYAAgAHAPv/CgAAAAYAAAAAAAYAAAAGAP7/AwAAAP//BAD8/wYA/P/9/wAA/f/+//7//P8AAPv//P/6//3/+/////X/AAD5//v/9//+//L/AwDv////8P/6//X/+P/4//D/+//y//b/9P/y//T/9v/v//T/8v/x//b/7//0//D/7v/2/+j/9P/q//X/7P/x/+3/7f/x/+r/8f/s/+3/7f/r/+3/6P/t/+b/7//o/+j/7f/m/+r/6v/o/+r/4v/v/+P/6//i/+n/5f/s/+P/6f/g/+n/4//m/+P/5P/o/+H/6P/g/+b/5P/l/+L/6v/b/+n/3//m/+H/6v/f/+n/3v/l/+P/5v/h/+P/5P/k/+T/5v/g/+n/4v/n/+X/5f/h/+z/4P/u/+D/6//f/+z/4v/q/+P/5v/l/+r/5//q/+L/6f/p/+r/6//n/+v/5f/t/+j/7P/p/+v/6f/v/+T/9P/k//L/6//r/+z/8f/p//T/6f/y/+3/8v/t//T/7v/z/+z/9f/w//T/9P/x//P/8//0//f/9f/2//T/9P/5//f/+//2//v/9v/9//z/+v/7//3/+//9//3////9/////f///wAAAAAAAP7/BAAAAAcAAQAGAAYAAgAEAAgABQAMAAQACQAEAAsACQAOAAoACgAMAAUAFAAJAA4AEAAJABQACwAWAA0AEwASAA4AFgANABkAEQATABcADgAdABEAGQAWABUAGwAWABkAFwAdABQAIAASAB4AGgAdABkAHAAbABkAIQAYACAAGQAgABcAIgAcACIAGwAjABkAJAAcACIAIQAiABsAJQAaACgAIAAiACIAHgAmACEAIQAkABsAKgAeACIAIwAiAB8AJgAgACQAIwAhACMAIwAhACUAIAAqABwAKgAeACgAIAAkACMAIwAlAB8AJwAeACkAHgAnACAAIQAhACYAHwAjACAAIgAgACQAGwApAB8AJAAeAB4AIgAeACEAHwAeACAAHQAhABsAIQAdAB0AHQAfABoAHQAcABgAIQAVAB0AFgAcABkAGQAcABUAGgAVABUAGwAWABMAGAAUABcAFAAXABIAFwAOABUAEwASABIAEAAOABQACgAUAA8ADQAOAA0ACwAPAAoADQAIAA8ABQALAAgADAAFAAsAAwAKAAcABwAIAAEADAD//woAAAAFAAMAAQAFAP//BwD9/wgA/P8GAPn/AwAAAP3/AgD5/wMA/P8AAPv//f////j/AAD4/wAA+v/5//v/+P/+//j/+//7//T//f/x//3/9f/2//r/9P/y//b/9f/3//f/7v/3//P/8//1//H/8v/z/+//8//z/+3/9v/t//D/8//r//H/8f/u//L/7//t/+//7//s//P/6P/w/+v/6//x/+b/8v/q/+//8f/l//P/6P/v/+r/7//q/+7/6//r/+v/7//q/+7/6//q/+v/7//o/+7/6f/s/+3/6//u/+P/8//k//D/6f/s/+z/6P/s//D/5//x/+b/7f/u/+v/7v/w/+r/7//q/+7/8P/q//H/7P/v/+3/8f/v/+//8f/p//T/7P/x/+3/8P/v//P/7f/y//P/8f/w//D/8P/z//P/8v/w//P/8P/0//P/8v/2/+7/9//r//f/9f/v//n/8P/x//f/7//2//b/8P/9/+3//P/v//f/9v/0//b/9f/2//T/+//w//v/8v/7//D/AADt//7/9P/5//n/8//6//f/9//7//L/AAD0//z/9f/8//f/+//3//z/+f/6//f//P/7//v/+f/6//f/AAD2//7/+f/6//3/9/////n//f/5//7/9//8//3/+f/+//n//v/7//z/+f/8//n/+//7////+f8AAPX//v/6/wIA9v8AAPf/AAD6//3/+//9//v/+/////n//f/7//v//f/4//7/9v/9//z/+P////b////4//v/+//6//3/+P/5//v/+P/+//L/AADz////9//5//T/+//3//7/+P/1//n/+v/1/wAA8f/9//P/+P/5//n/+P/4//b/+P/3//n/9f/6//P//P/z//7/8f/5//X/+P/1//r/8f/9//H/+P/3//X/+f/2//X/+v/v//3/8v/4//f/9v/z//r/9f/0//r/8//4//b/9f/8//H//f/3//b/+v/y//z/+f/1//v/8v////H/AADz//r/+P/5//r/9//3//f//v/y////8v8AAPH//v/4//j//f/2//v/+v/5//3/9P8AAPL/AAD4//3/+//5//z/9//9//z/+//9//v//P/5/wAA+P/8/wEA+f8DAPn/AAD9//7/AAD8/wEA/P8BAAAAAAACAPz/AgD+/wMAAwABAP//BQD8/wgAAAACAAIA//8EAAMAAQALAPr/EAD4/xAA//8OAPz/CwABAAcACAAFAAUACAAAABAAAQAQAP//EQACAAwACAAKAAcACgAJAAsACwAIAAsACgALAAcAEAAHAAwADgAHABMACQANAAcAFQAGABMACQALABAABwASAAsAEAAMAA4ADAAPABAACQATAAcAEQANAAsAEgALAA4ADgANABAADwAMABAADQARAAsAEAALAA0AEwAOAA4ADAAOABEACgAWAAIAFwAIABQACgAOAA0ADQAOABEACAASAAwADwAMAA8ACgALABMACQARAAYADwAIABQABwANAAcADQANAAsADwACABAAAwAQAAQADwADAA0AAQAMAAgABwAJAAcABwAHAAcABQALAAIACAACAAcABAAGAAIAAwAGAAIABgAEAAQAAgACAP//BAAAAAAAAAD+/wAAAAABAP7/AAD6/wAA+/8AAP//+//+//r/+f8CAPT/AQD3//r/+//5//n//f/2//z/9P/5//T/+v/2//n/9P/3//T/9v/x//r/8f/3/+//9f/x//b/7//0//H/8v/z/+3/9P/t//P/7//v//L/6//y/+r/8P/w/+//7f/s/+v/6//w/+r/7f/p/+v/6//q/+3/6v/r/+f/7//n//H/4v/0/+H/8v/j/+7/5v/r/+b/7f/m/+//5P/s/+T/6//q/+j/5//p/+b/6f/q/+T/7v/i/+7/4P/w/9//7P/m/+n/4//u/+L/6v/l/+P/6//m/+f/5//n/+f/6f/n/+f/5//n/+X/6//k/+j/6//j/+7/4//q/+n/6f/o/+j/6v/q/+j/7P/k/+v/7v/l/+//6P/t/+r/6//r/+z/7f/r/+3/7f/t/+n/9P/o//T/5//z/+z/8P/v/+7/9P/v//D/8v/w//b/7f/1/+7/8//2/+v//v/p//7/8P/2//P/9f/z//f/8v/8/+7////w//r/9//z//7/9P/6//j/+v/6//z/+v/4//3/+f8AAPj/AAD4////+P////7/AAD7/wEA+P8DAPn/BwD7/wAA///9/wMAAQAAAP7//v8DAP7/CAD+/wQAAAADAAIABAAAAAUA//8FAAEAAgAIAAAABwD//wcABAAGAAIABwADAAcABAAJAAIADAAAAAoABAAFAAkABgAHAAsAAQAMAAYACwAEAAoAAgAPAAUADQAFAAoABQALAAQADwAAAA4AAgAOAAMADgACABAABAAKAAQADQAFAAsABgAHAAoACAAMAAYACQAHAAoABgAKAAwACAAFAAsAAQAOAAcAAwANAAMACQAJAAQADAADAAoABQAIAAcACAAEAAYABgADAAwAAgAKAAEACgAEAAcABwABAAYAAwAFAAkAAAAGAAMABQAEAAUAAQAAAAMABAAEAAIAAAADAAAABgAAAAUAAAADAAAAAgAAAAIAAAACAAAA/f8GAPr/BgAAAP3/BQD8/wQA/v8CAP7/AgD8/wQA+v8HAPf/BQD8////AQD/////AAD8/wAA/P8AAAAA/f/9/////v/+/wEA/P/7/wQA9f8FAPf/AQD6/////P/9//z/AgD5/wMA+P/7/wAA+f8EAPb/AAD7//z/AAD6/wAA+P8DAPb/AQD6/wIA+P8AAPr//f8BAPj/AwD2/wAA///8////+//9//3////6/wAA/f/7/wMA+v8DAPn/AAAAAPr/AwD4/wMA/v/9/wAAAAD7/wEA///9/wUA+f8BAP///f8DAP3/AQD+/wAA//8AAAIAAAABAPz/AgD//wEAAwAAAAAAAgD+/wUA/f8IAPv/BAAAAAMABQD+/wIAAQAHAAIAAgAAAAQAAAAFAAMAAQAEAAIAAQAGAAUA/P8LAAAABAAGAPz/BwABAAMABQADAAIABAADAAEABgABAAIACAD8/wYAAwABAAoA/v8FAAEABQADAAEABgADAAYAAwACAAYAAAAKAAIACAAAAAcAAAAIAAAABgAAAAYAAQAIAAAACAADAAEAAwAFAAQABwABAAIABAADAAIABwD//wYAAgADAAEAAwD//wcAAgABAAUA/v8DAAAACAD//wQA/v8DAAAAAgACAAAA/v8DAP7/AgAAAP3/AwD8/wUA/P8AAAIA+v8DAPz/AAD8/wQA+v8DAPj/AAD8/wEA/P/9////+v8AAPr//v/+//r//P/8//z/+P/8//z/9//+//P//v/3//v/+f/1//7/9P/4//v/9f/6//P//P/u/wEA6/8AAO3//P/y//n/8v/5//L/+f/2//H/+f/u//n/9P/0//P/8//y//j/8P/1//H/8//y//D/9//t//X/8P/z//D/8f/w//L/9P/w//H/8f/y//D/8P/y/+z/8//w//D/7v/v//L/7v/y/+z/8//u/+7/8P/u//L/6//3/+f/9v/p//H/7v/s//L/7P/y/+7/7P/1/+n/9f/u/+3/9f/s//H/8f/s//f/6P/2/+j/9v/s//P/7P/0/+r/+P/u//D/7//v//P/7v/z/+//7//0/+7/9v/s//f/7P/4/+7/9v/v//b/8//w//j/6f/5/+3/+v/v//f/7v/5//H/+v/y//P/9//0//r/9v/5//X/+v/7//f/+P/4//n//f/3//z/+f/8//n/+v/8//7/9/8CAPH/BQD2/wYA8/8DAPz/AAADAPz/AQD9/wYA/P8JAPr/BgD//wUAAgAHAAAABgADAAUAAwAHAAAADAD//wwAAgAKAAEACgACABAAAAALAAMACgAHAA4ABQARAAMADwAJAAgAEAAHAA8ABgATAAcAEwAFABMACwASAAoADQAPAA4AEAASAAoAEwAOABQADAAVAA4AEwAKABUAEAAWAA4AFgANABgAEAAVABEAFQATABUAEAAYAA4AGgAQABgAEwATABsAEwAXABQAFQAVABcAFQAZABMAFgAXABQAHgAOABsAEwAYABQAFQAZABQAGwARABoAEwAXAB0AEgAeABAAHAASABkAEgAbABQAFwAXABUAGQAUABkAFAAXABoAFgATABUAFgAXABgAFAATABcAFgATABsADwAbAA8AFgAVABMAGgAPABUAEAAXABAAGAANABQAEwATAA8AEwAPABMAEgAPABMADgATAA4AEwAKABcABwAYAAkAEwAQAAgAFwAJABIACAARAAkAEgAHAA8ADQALAAwACwANAAsACwAOAAcADAAJAAkACQALAAYADAAEAA0AAgALAAYACQAIAAEADgABAAsABAAHAAYACAACAAkABAAEAAkAAAAHAAAACAABAAYAAgAAAAQAAwAAAAYAAAACAAIAAgABAAIAAAAAAAEAAQABAAAA/v8CAP7/AQABAP7/AgD+/wQA/P8CAPz/AgD7/wAA/P/8/wAA/P8BAPz//f/8/wEA+f8EAPv//f////j/AAD9//z//P/+//j/AQD9//r////6//z//P/6//z//v/2/wAA+//6/wAA9f8CAPn//f/6////+P/9//7/+P////T/AAD3/////P/5//3//P/8//7/+P////r//f/8//v/AAD4////+//6/wIA9f8FAPL/BQD1/wEA+v////n/AQD4/wMA9v8AAPr/AAD6/wEA+f8AAP3/+/////v/BAD4/wYA9/8AAAAA+v8BAP3//v8AAPv/AQD9/wAA/f8AAP7///8BAPv/AgD9/wAA//8AAAAA/v8AAAEA//8DAP3/AgD//wEAAAD+/wMA/v8AAAEA//8DAP3/AgD//wUA/f8CAAAAAAABAAAAAAADAP3/BgD9/wIA/v8DAP//BQD9/wIA/f8DAAIAAAADAPz/BgD//wAABwD7/woA+f8EAP3/AwD//wEAAAD+/wMA//8DAP7/BQD9/wMA//8DAP//AAABAP//AwD//wEAAAD8/wEAAgAAAAAAAwD8/wMA//8CAAAAAAD8/wMA/P8DAP3/AQABAP//AQD9/wMA/P8FAP3/AQAAAP7/BQD7/wUA9/8FAP7/AAAAAAEA///+/wAAAAD//////////wAA/f///wMA/f8BAPv/AwD4/wUA+v8FAPr/AgD5/wEA/P8AAP7///8AAP3////9////AAD+//7/+////wAA/v8AAP3/AAD9//3////+////+/8AAP3////9//3/AgD8/wEA9/8AAPr/BAD6/wEA/f/+//3/AAD6/wUA+P8EAPj/BQD6/wAA////////AAD9/wAA/f8BAAAA/f8FAPn/BQD7/wUA+/8EAPv/AwD/////AwD5/wgA/P8EAP7/AAAAAAEA//8GAPv/BAAAAAAABwD9/wYA/v8CAAAAAwAAAAUAAQAAAAQAAQAFAAEAAgAEAAEABAAFAAQABAAAAAgAAQAGAAEABAAGAAUABgACAAUAAgAKAAUACQD//wwAAQAGAAgABgAEAA0AAQALAAgAAgANAAEADQABAAsABgAIAA0AAgAQAAYACQALAAkACQAJAAsABwAPAAgADQAPAAUAEAAIABAADQAJABAACQAQAA0ADwAKAA4ADwANABAACQARAA0AEAANABAAEgAHABUACwAUAA8AEAAOAA4AEAAPABIADgAOAA4AEAAPABMADgASABIADgASABAAEgAQABIAEAASAA4AFAARABIAEgASABAAFAAPABQADwAUABEAEgAWAA0AGwALABUADwAUABMADwAUABQAEgAWAA4AEwAPABYADgAaAAsAFQAPABYAEQASABAAFAAPABYADQASABUACwAYAAoAFAAPABEAEQARABEADwARAA8ADwAPAA0AEQAOABEACgAVAAoAFQAMABEACwARAAgADwAQAAoADwAKAA8ACwAOAAwAEAAKAAoADgAJAA4ACQAOAAgADAAFABAABgAOAAcACAALAAcABwALAAQADAAGAAcABwAFAAYABwAGAAUABwAAAAUABAABAAwAAAAKAP//BQACAAQAAwACAAIAAAABAAQA/v8GAPz/AwD6/wgA+/8GAPz/AAABAPz/AAD+//7//v/5/wIA+P8AAPn//v8AAPf/AQDz/wQA8v8BAPf/+v/5//v/9/8AAPT//v/z//r/9v/7//b/9//3//X/+//y//v/8v/3//b/9P/7//D/+P/u//v/7//7//D/9//1//P/8v/z//L/9P/0//T/8//z//L/8P/4/+3/8//y//D/9P/u//P/7v/0//D/8v/u//H/8P/w//T/7v/x//D/7v/0/+//8v/u//H/7P/0/+3/8f/u/+7/9f/u//H/8f/t//H/7v/0/+z/9f/o//T/7v/z/+z/8P/v//D/8v/w//P/6f/4/+z/+f/u//T/7//x//P/8//x//T/7v/0//H/8//1//H/9P/0//T/8v/0//D/9v/z//T/9v/0//f/9P/w//n/7//8/+//9//4//L////v//z/9v/z////8v/8//L/AADw/wAA9P8AAPT//v/z//z/+v/7//n//P/3//7////1/wIA9/8BAPn/AAD6//7/AAD6/////P/+//7/AAD8/wAA/P///wAAAAAAAP//AAD8/wQA/v8AAAQAAAAAAAAA//8EAAMAAAAAAAMAAAAGAAEAAgADAP//CwD5/w4A/P8LAAIAAQAHAAIABgAGAAIACQAAAAcABgAEAAkAAgAHAAcABAALAAIACQAEAAkABgAFAAcABQANAAIACgAHAAcABwAGAAkABAAPAP7/EAABAAsAAwAJAAYACQAKAAMADQAEAA0AAgANAAAADwADAAsABgAJAAgACAAKAAYACAAIAAoABgAGAAYADAADAAsAAQANAAEADQABAAsABQAMAAUACQAGAAgABQAGAAUACQADAAYABQAFAAkAAQAGAAMABwAFAAMABgAAAAgAAgALAAIAAgAEAAMABgAGAP//DAD//wUABwD5/xAA+P8MAP3/BQACAAAABAAAAAIAAgAAAAAAAgACAAIAAAAFAP3/BQD8/wUAAAAEAP3/AQD//wIAAQD/////AAABAAAAAgD7/wEA//8AAP7/AAD7/wIA/v/8/wAAAAD+/wIA/f/9/////v8AAPz/AAD4/wMA+f8CAPz//f/9////+v8GAPf/AQD4////+/8BAPr/+/8AAPr////+//r/AAD2/wIA+f8AAPT/BQD1/wAA+v/9//7//f/4/wAA+P8AAPz/+/8AAPb/AgD2/wIA+v/9//v//f/+/wAA+P8BAPj/AAD///v//v/9/////f/9/////f/7/wAA+P8DAPz//v/9/wAA+////wAA+/8DAPn/AAD//wAA/f8DAP3//v8BAPv/AAACAPf/BgD6/wUA+f8AAP//AQD9/wAAAAAAAPv/BQD4/wgA9v8IAPj/CAD6/wQA/f8CAP3/AwACAPr/BgD5/wMAAAD//wEAAAD+/wEA/f8BAAAA//8DAP//BQD5/woA+P8GAP3/AAADAP3/AwADAPv/BgD9/wMA//8FAP3/BAD9/wEA//8DAP3/AgD//wAAAQAAAP//AQACAP//BwD3/woA9P8MAPj/AwD///z/BwD6/wYA+f8EAPv/AwD+/wAAAAD9/wIA+/8CAP///f8AAPv/AAAAAP3/AAD9///////7/wIA+v8BAPj/AQD8//3////7/wAA9v8CAPf/AgD3////+v////j////4//3//v/4////9P/9//n//v/6//r/9//9//f//P/3//r/+v/4//b/+v/3//z/9f/4//j/+f/3//j/9//6//f/9v/6//H/+v/0//n/9//3//j/8//6//D/+P/2//X/+f/x//b/8//3//L/9f/v//P/9P/y//f/7v/0//L/9f/w//f/7P/2//L/8v/1/+z/9f/w//T/8v/s//X/7v/2//D/7//1/+z/8//u//D/9P/s//f/6P/4/+n/+P/r//P/7v/s//T/7//0/+//7//v//D/9P/u//P/6v/y//D/8P/w//P/7P/y/+r/9//t//P/7//t//P/8P/w/+//8f/v//X/7v/x//P/7v/1/+z/7//v//H/7v/1/+r/+f/o//j/7v/0/+3/9P/w//b/7v/3/+3/9f/1/+3/+v/r//b/9f/x//j/7//z//b/7f/8/+3/+//w//P/9v/z//T/+P/t//v/8//4//b/9f/5//T/+f/4//X//f/w//7/9P/9//b/+P/3//v/+f/7//n/+v/6//v//f/7//r/+v8AAPn//v/2/wAA9/8AAP3//P////r//v/+//7//P8AAP7//f8AAP7/AAAAAAAA/v8EAPr/AgABAP7/BgD6/wMAAQD+/wIAAwD+/wQABAAAAAMAAgACAAQAAAAGAAAABAAEAAIABgAGAP//BwACAAoAAQAFAAAABwADAAoAAgAFAAEABAAKAAEACQACAAcABAAGAAQABgAIAAQACQAGAAcABwAGAAQADQAAAA8AAQALAAgABAAJAAYAAgAPAAEACwAGAAUACAAKAAYACwAAABIAAAAOAAUABwAIAAIADAADAA4AAgAPAP7/EAAAAA0ABwACAA0AAQAPAAEACwAEAAoABQAIAAUACgAFAAgABQAGAAcABQADAAoABAAKAAEABwABAAwAAAAMAP7/CQAAAAkAAgAFAAUAAwAFAAEAAwAFAAQABQADAAMAAwADAAIAAQAFAAAAAwABAAAABQACAAEAAwAAAAIAAAACAAQA//8DAP//AQABAAAAAAD//wQA/P8EAP7/AgD/////AgD+/wAAAAD9/wIA/v///wAA/P8CAP7////9/////v/+//7//v/+////+v////z/+v8BAPn/BAD2//7//P/6//7/+v/8//7//P/4//3/+v/8//z/9v/5//j//f/3//r/+v/4//j//P/1//7/+f/8//b/+//1//r/+f/3//z/9//4//j/+f/1//7/8f////P/+//1//j/+//3//j/+P/0//j/+f/3//j/+v/y//v/8//6//X/+P/2//r/8//6//P/+P/3//j/9v/2//b/+v/3//b/+P/0//b/+v/x////8f/5//T/+P/5//X/+v/0//j/+v/z////8f/+//P/+f/2//T/+v/2//j/+f/4//X/9P/9//D/AADx//r/9P/7//f/+f/2//f/+P/6//X/+f/0//j/+P/2//j/9v/8//T////v//7/9f/6//z/8v/7//b/+P/4//z/9P/7//T/+//3//r/+P/z//3/8//8//T/+f/4//r/+P/2////9f/7//j/9//6//b/+P/6//b/+f/6//b//f/4//f/+//6//r/9v/7//r/9v/7//r/9P////T/+//8//T////0//v/+P/6//r/+P/5//j/+//y////9f/7//j/9v/7//j/+v/4//f/+f/2//7/+P/7//f/+f/8//j/+v/3//v/9v/5//b/+v/6//b/+//2//n/+v/y////9f/7//b/+//2//r/9P/7//f//P/w/wAA8f/9//H//f/5//r/9P/7//T//P/1//n/9P/3//j/9v/6//b/+P/4//j/9P/4//b/+v/0//n/8v/7//H//P/x//3/9f/4//b/+P/1//j/9//2//z/9v/7//T/9//6//r/9f/5//b//P/5//r/9v/7//b/+v/4//r/+P/1//v/9v/8//j/9f/7//r/9P8AAO//AAD4//n/+f/5//j/+//8//T//v/2//v//P/6//v/9//9//b////4//n////2//3/+f/9//n//f/3/wAA+v/9//3/9/8AAPr////5/wEA9f8CAPb/AAD7//3//f/+//v/AAD5/wAA///5/wMA9/8DAP3//P/+//7/AAD9/wEA+f8CAP//AAAAAP7/AgAAAAEAAAAAAAIA//8EAAEA/f8EAP7/AQAHAP3/BQAAAAIAAQAIAP7/CQAAAAMABAABAAgAAgACAAkA/v8LAAAABwAGAAIACQAEAAkAAgANAAAADQAAAA0ABgAJAAMACgAIAAkACQADAAwABAAPAAYACgAJAAcACwAIAAsACwALAAoACQAJAA0ACAAPAAcAEAAJAAcAEAAKAA8ACwAMAAoAEAAIABAADQANAAwAEAAJABIACwAMAA4ADQAPAA0ADgANAA0ADwANAA8ADwAOABAADQAOAA0AEQANAA8AEAALABIACQAUAAoAEgAPAA4AEAANABAADwATAAsAFgALABIADQANABMADgARABAADgAQAAsAFAAKABIADwANAA8ACwAVAAoAEgANABAADwARAAsAEgAMABEADAARAAwAEQAOAA0ADwAKABEACAARAAwADQANAAsADQAMAAgADwAJAA4ACgAMAAgADgAJAA4ABwANAAcADAAHAAoACQAMAAUADAAHAAkACwABABAABAAIAAkAAwAFAAkABgAFAAcA/v8MAAAACwAAAAgA//8HAAEABgADAAcAAAAHAP//BwABAAQAAAADAAQA/f8JAPr/CQD8/wIABAD8/wkA+v8DAP7/AgAAAAAA/P8CAPv/CAD7////AAD6/wEA/v/8/wIA+P8CAPf/BAD4/////P/+//n/AgD0/wQA9v8AAPf//f/7//z//f/4//r//P/7//f/AAD1//7/9//6//f/+//5//f/+v/5//f/+f/5//f/+f/5//X/+f/1//v/9f/5//j/9//2//f/8//9//T/+P/z//b/+f/2//n/8f/4//P/9//3//X/9v/4/+///P/y//z/8P/7/+///v/y//b/9f/0//f/9f/3//b/9v/2//T/9v/1//j/9f/2//r/8//4//T/+P/1//b/+P/z//r/9//2//j/9P/4//b/+P/4//b/9f/6//r/9v/5//T//f/3//3/9v/6//f/9//2//z/+P/9//X/+v/3//v/9v/9//b//P/2//3/+P/9//j/+//5//v/+//5//3/+f/3/wAA9v8AAPb/AAD2//7/9v/+//r//f/7//r//f////n/AAD1/wQA8/8CAPb/AAD///v//v/6////AAD7/wAA/P/+/wEA+/8DAPj/BgD7/wEA/P8BAP7/AAABAAAAAAAAAPz/AwD9/wUA/P8AAP//AQAAAAAABAD8/wQAAAABAAMAAAAAAAIAAQD+/wIAAQAAAAQA/v8CAAUA/v8GAAAABAABAAQAAwAAAAgA+/8LAPn/CwD7/wsA+/8LAP//BAADAAQABwAAAAQAAAAIAP//CgD+/wYABQABAAYABQABAAgAAQAGAAMACAAAAAYAAQAIAP//DAD8/wsAAQAEAAQABAAFAAQABAAEAAYABQAGAAYAAAAIAAEABQAFAAcABQAEAAYAAwAGAAEACAABAAgAAAAKAAEACgABAAYABgAHAAUABgAEAAQABgAFAAgABQACAAoAAAAKAAEADAABAAsAAQALAAEACgADAAgACQAGAAQABgAFAAoABQAGAAYAAgAKAAUABwAGAAgABAAKAAcABAAIAAUABgALAAMACwACAAgACAAHAAoABAAFAAgAAwAMAAMACgAEAAIADAAEAA4ABQADAA0AAQAKAAUABgAGAAgAAwAIAAUABgAMAAEACwADAAgACwAFAAoAAAANAP//EAAAAAsABwAIAAoABgAKAAYACgAIAAQACAAHAAgACwAGAAcABgAKAAcABgAMAAUACQAMAAEADwADAAwADAACAA4AAwALAAsABgANAAIADwAFAA0ABAARAPz/FAAAAA8ACQAJAAsABQANAAoACgAJAAkABgAOAAcADgAIAAkABwAOAAUADQAKAAgADQAKAAoACgALAAoACAANAAYADQAIAAoADQAIAA0ACAALAAoADAAIABEAAwASAAMAEQADABEABQANAAoACgAMAAYADwAHAAwACAAMAAoADAAKAAgADQAIAAgACgAIAAwADAAGAA8AAgAPAAUACgAMAAgACAALAAgACgAOAAYACwAKAAgADAAJAAgACgAMAAMAEQADAAsACgAIAAgACAAIAAwABwAIAA4AAwAPAAMACAAOAAIADwAHAAgACAAGAAUADAAGAAYADAADAAoABQAMAAUACgACAAwAAgAKAAUABwAHAAMABwAHAAUACQAFAAEACAACAAcABgADAAgA//8IAAIABgAHAAEABAABAAIABAACAAYAAgADAAEAAwACAAQAAgAAAAUAAAACAAQAAgD//wUA/P8EAAEAAgAAAAEA//8CAAAAAAAAAAIA/f8AAAQA/v8CAP////8EAPz///8CAP7/AAD///3/AAAAAAAA/f8AAPr////+//r/BAD4/wAA+P8AAPv//v/+////+v8AAPb/BAD3/wIA9v8AAPj/AAD3/wIA9/////7/+v/9//j//v/+//X/AgDx/wAA+f/4/wEA8f8DAO//AgD1//z/+v/4//z/+v/2//7/8/8AAPP//f/1//z/9//8//f/+P/6//j/+v/1//v/8//+//X/+P/8//H//f/x/wAA9f/7//T/+f/1//z/9//2//3/8v/7//j/9f/9//P//f/z//v/9f/4//j/+P/6//b/+//4//T/+//1//z/+f/4//n/+//4//n/+//2////8v////T//f/4//n/+f/3////9P/+//j/+//9//n//f/5//v//f/6////9//+//n//f/9//v//f/+////9/8CAPj/AAD7/wAA+/8AAPv/AAD///3//v/+//7/AAD+//z/AQD9/wAA/v/+/wAAAQD7/wYA+f8GAPv/AgD9/wYA+f8EAP3/AgAAAP7/AgAAAAMAAAACAAAAAgABAAUAAwACAAIAAAAGAAAAAgACAAQAAwAEAAIABgAAAAYABQACAAYAAgAAAAgAAQAGAAYAAAAHAAAACAAFAAIABwACAAgABgAGAAQABwAEAAgAAwALAAAADQAAAA0ABQAFAAkABAALAAQABwALAAIACwAEAAkACgAIAAsACQAJAAUADQAGAA0ACAAJAAkACQAIAA0ABAANAAYACwAIAAsACAALAAgACwAIAA0ABgALAAoADAAKAAcACwAKAAoADAAGAA0ABAALAAoACAALAAQADwADABEABQALAAgACgAOAAcACQAJAAgACgAMAAMADwAHAAoACAAKAAYADgAFAA8ABQAJAAYADAAHAAoABgAIAAoABwAKAAYACgADABAABAAMAAgAAgAPAAAAEAADAAoABgAIAAEADAAAAAwABwAGAAYABgAFAAkABAAKAAMACAAFAAMACQAEAAcABwAFAAYAAQAKAAIACQADAAQABQAFAAUABQADAAAACwD+/w0A+/8OAPv/CAAAAAUAAgADAAMAAQADAAAAAwAGAP//AwACAAAABAD//wAAAgD//wYA/v8FAP3/AQAAAP7/BgD6/wUA+v8CAAAAAgD//wMA+/8BAPz/AAABAP7///8AAPz/AgD8////////////AAD9////+/8AAPr/AgD4/wEA/P///wAA+P8CAPj/AAD+//3/+/////j/BAD3/wEA+v//////9v8AAPr/AAD8//v/+//7//7//P////n////6//3//v/6//v////6//v////2/wIA9/////z/+v////j////0/wIA9f8AAPb/AAD2////+P/7//r////2////+P/7/wAA+P////f/+f////f////4//n/+//+//f/AAD2/////P/4////+P////r/+//3////9f8AAPj/+/////b/AAD4//n/AAD2////+f/7//v//P/6/wAA9v8BAPL/AwD3////+//3/wAA9v8AAPb/AAD2////+P////j/AAD2/wAA+P/9//z/+//9//f/AAD2/////P/5////+f////v/+//9//n/+//9//r//f/7//v//f/7//n//f/6//v//f/6//3/+//5//3//P/6//3/+f/9//r//f/6//n////4/wAA9v/8//r//f8AAPb/+v/9//j////4//3/+f/5//3//P/8//n/+//4//7/+v/9//f//v/4//v/+v/8//r/+P/7//r/AAD4//v/+//7//j//f/2//3/+v/4//v/9v////X/AAD0//3/+v/6//r/+v/2////+f/5//v/+P/9//j/+//6//n/+P/6//r//P/6//f/+f/0/wEA9P8CAPL//P/6//b/AAD4//v/+f/3//v/+v/6//r/+//2//v/9P/8//n/+v/7//f/+f/7//P/AAD1//3/+P/5//z/+P/8//b/+//4//r/+P/6//b//P/8//j/+f/5//r/AAD0//7/9P////j/+v/9//T//f/6//j/+//4//3/+P/7//j//f/6//n//f/2////+P////r/+//9//f////6//v/+/8AAPb/AwD0/wEA+P////v/+//9/wEA9v8EAPL/BgD4/wMA+//9//n//v8BAPj/AQD5//7////9/wAA+/8AAPv/AQD9//7//P8AAP//AQD9/wIA/v8BAP3/AgD9/wMA/////wAA/v8DAAAA/v8CAPz/AgD//wMA/f8EAP3/BAAAAAIAAAACAPz/BAAAAAEAAQAAAAEAAwABAAAABgAAAAIAAgAAAAQAAAAEAAEAAAAEAP7/BAABAAUAAQAAAAQAAAAFAAAABAAFAAAABAD+/wcAAgAFAAAABgABAAgAAAAGAAMAAgAFAAUABQAEAP//BgADAAUABwAAAAkAAAAGAAEABwD//wgAAAAIAAAACAABAAQABQAHAAMACgADAAcABAAEAAMABgAFAAUAAgAEAAMACQABAAYABAAAAAoAAQAGAAIABgABAAoA//8KAAEABAAFAAMABQAFAAEABAAFAAUAAAAKAP//CgD//wQABwADAAUAAgABAAkA//8IAAEAAwAFAAEABwABAAUAAwABAAUAAgADAAMABQABAAMAAQABAAIABQAAAAUAAAADAAUAAAADAAEAAAADAP//BQD//wgA+f8IAP7/AwAAAP//BwD6/wkA+v8BAAIAAAAEAP//AQD//wIA//8CAP3/AwD9/wEA////////AAD8/wQA/P////3///8AAP///f/7/wAA+P8CAPf/BAD4/////v/6////+v8CAPf/AAD2////+//+//z////y/wEA9/8AAPn/+//8//r/+P/8//f//P/1//z/+//4//z/+v/4//r//P/3//r/+v/z//7/9v/6//n/9v/4//r/+f/4//b//P/x//z/9P/8//X/9v/4//X/+//1//r/9v/2//b/+f/1//z/8//2//j/9f/6//H/+f/x//j/+f/x//r/8//2//n/8//0//j/8f/8//P/9v/2//P/+P/1//f/9P/4//H/+v/z//T/9v/z//b/7//8//L/+P/x//j/8//1//f/8//2//b/9f/0//T/9f/3//X/+P/y//j/9P/2//X/+P/v//f/8//1//n/8f/4//T/9P/2//j/8f/7/+//+P/3//P/9v/0//T//P/x//n/8v/5//P/+P/2//b/9P/2//j/+P/4//L/+//z//r/8//2//r/9P/4//b/+P/2//z/9P/3//v/8P////P//f/4//n/9f/7//b/+//2//f/+f/6//b/+//5//n//f/1//z/9//1/wAA8//+//L//v/0//3/+P/1////9v/9//n/9//+//j/+f/9//j//f/5//n/+//9//n////1//z/+P/7//r/+//5//7/9//8//n/+//7////9/8BAPn//P////n//v/7//n/AAD4/wEA9P8AAPj////7//3/+f/8//v////9//n//v/9/wAA+//8//7/+f8AAPr//f////v////9//3//v/7//z////5/wAA+f////v/AgD5/wAA+/8BAP3/AAD5/wEA+///////+/8DAPn/AAD7/wEA/P8AAP///v/+//3/+/8BAP7///8AAPr/AAD9//3///////3//v8AAPn/AAD///n/AwD8//7//f////3///////3/AQD5/wEA/f///wIA+f8DAPv/AQD7/wAA/f///wAA///+//7/AAD9/////f//////AAD9/wEA/f8AAP///////wAA/f8AAPv/AAD9//////8AAP3//v///////f8BAP//+/8BAP3/AAAAAPv/AwD9/wEA//8AAPv/BwD4/wMA/f/8/wUA/f/+/wQA+f8GAPj/BgD4/wgA+P8CAP3/AAD//wEAAAABAAEA/v8DAAAAAQAFAPn/BwD5/wYAAAD+/wEAAAACAAUA/f8EAPz/BAAAAAEABQD+/wQAAQAFAAAAAgABAAMAAwADAP7/BgD9/woA/f8EAAEABQABAAMAAQADAAUAAwABAAIABAADAAUAAwAEAAYAAwAEAAIABAAHAAAACgAAAAgABQABAAYAAwAHAAUAAgAGAAAABgAFAAUACAAAAAUAAwAJAAMACAAEAAQABgAHAAUACAAEAAYABAABAAgAAwAKAAUAAwAJAAEACAADAAYABgAIAAAADQD+/w0AAgAGAAgAAAAMAAEABgAIAAEACgAFAAYABgAIAAMABgABAAoABgAGAAQABgAFAAUACQADAAgAAgAEAAgAAwAGAAUAAgAKAAEACAABAAgAAAAKAAAACAABAAYACQD+/w0A+/8PAPz/CAAFAAAACgD9/woAAAAHAP//CAD//wcAAgADAAAACQD+/wgA/f8EAAIAAwACAAAAAQADAAAAAQACAAAAAwAEAP3/BQD//wMA/v8AAAAAAAAAAP//AwD7/wMA/P8CAP7/AAD///3/AAAAAP3//f8CAPX/DQDy/wYA+P8BAPz//f8AAPr/AgD2/wQA9v8CAPr//f////j//f/6//j/AwD3/wAA+P/9//z/+P/8//r/+v/8//r//P8BAPf/+//6//r//f/5//r//P/2//z/+f/4//r/8//+//n/9//8//T/+v/7//f//P/0//j/+P/5//f/+P/2//j/+f/3//r/9f/6//P/+v/5//P//f/v////8v/8//f/+P/0//z/9f/6//X/+v/1//r/+f/0//v/8//8//X/+v/2//r/9v/6//T/+v/3//r/9v/5//b/+v/4//b/+//y//v/9v/6//j/9//0////8f8AAPX/+f/5//T//P/3//z/9v/7//b/+//6//j/+f/3//v/+v/7//f/+f/7//r/+v/5//n/+//9//b/AAD0/wEA8v8DAPb//P/9//X/AAD4//3/+//5/wEA9P8DAPj/+v8AAPj/AQD5/wAA/f/+//v/AwD5/wIA8/8GAPb/BQD6/wAA+v8BAP3/AAAAAPz/AQD+/wAA/v8AAP7/AwD//wAAAAD+/wMAAAABAP7/AgD9/wUA//8AAAMAAAACAAMAAAAEAPz/CAD9/woA+/8HAP7/AAADAAMABQACAAAAAAAFAAEABQAAAAIAAAAFAAEACAD8/wcAAwAFAAUAAgAGAAIACAAAAAkAAAAIAAEABgADAAQABgAEAAIABAAGAAEACgAAAAsA/v8LAAUABAAIAAIACAADAAQABgAHAAMACQD+/wsAAwAIAAgAAAALAAMABgAGAAMACgABAAoAAQAMAAMACgAGAAkABAALAAEADQAAAAsAAQALAAAACwADAAoABwAGAAgABAAOAAAACwAEAAYABgAGAAYACAAEAAgAAgAGAAcACwADAAsAAgAKAAUACAAHAAQACAAFAAYABQAIAAcABAAIAAYABQAEAAcABwAJAAgABAAJAAMABgALAAEADQAFAAQACwAAAAgACQABAA4AAQAHAAUABwAJAAEACgAHAAUABgAGAAcABQAKAAAACAAHAAEADAADAAYABgADAAgAAwAKAAAACwD//xAA//8LAAMACAAFAAgAAwAMAAEACAAHAAMACgABAAgAAwAHAAcAAQAMAP//CwD//wwAAAAKAAEACAAFAAEACgAAAAoAAAAMAAAACAAFAAMADAACAAYACAADAAoAAAAKAAMABwAFAAMABAAFAAMACwABAAQAAgALAAAADgAAAAUABgABAAcAAwAFAAcABQAEAAQAAwAHAAMABwABAAoAAAAIAAEAAwANAAAACAABAAYAAwAJAAMABAAEAAUABwADAAgAAQAEAAUABQAFAAcAAQAGAAEABwAHAAEABgABAAgAAgAFAAUAAwAHAAEACAADAAUAAwADAAkAAgAKAAAABgAHAAMABwADAAYABQAKAP7/CwAAAAwAAgAEAAQABQAFAAUAAwAIAAMAAgAGAAUABQAFAAQABAAJAAMABgAEAAMABwAAAAcAAwAJAAEABgAAAAYAAAAJAAQAAAAGAAAACQD//wkAAQAFAAMAAwADAAMABQADAAUAAwAFAAUAAQAHAAEAAwAFAAAABQADAAUAAQAEAP7/CAAAAAUAAwABAAUA//8HAAAABQD//wUAAAAFAP//BwD9/wgA+v8MAPj/DAD8/wgA//8BAAMAAgAEAAEAAAADAAAAAgACAAAAAAADAP//AQD//wEAAAAAAAAAAAAAAP//AAAAAAAA////////AAD+//3/AAABAPr/BwD0/wcA+v8AAP/////7/wQA+P8FAPr/AQD4/wMA+f8EAPj/AQD6/////v8AAPr//v/9//3//v8AAPr/AwD2/wAA+v8AAPn/AAD4/wAA+v////7//f/9//v////+//r/AAD4/wAA+v////r/+//8//7/AQD6//z//P/6/////P////3/+f////b/AAD6//3/9/////j/AAD4//3/+//7//3/+P8AAPr//f/7//v//f/+//z//f/9//f////4////9v8BAPT/AQD8//v/AAD3////+v/9//z//f////X/AAD2/wAA/P/5/wAA9f8FAPX/AwD2/wAA+v8CAPj/AwD3/wAA/f//////+/8BAPn/AAD7/wIA/f8DAPv///8BAPv/BQD3/wQAAAD9/wIA+/8DAAAA+/8IAPb/CwD4/wQA/f8EAP3/CAD//wMA/v8EAP3/CAD9/wQA/v8EAAMAAwADAAAAAgAGAAMABAACAAIACgD+/wYAAAAGAAUABgAEAAIABQAFAAMACgAAAAkAAAAHAAQABgAIAAQABwACAAYABwAGAAQABwACAAsAAwANAAEADAAEAAkABgAHAAYADQADAAsACAAEAA8AAQAPAAQABwALAAQACwAIAAkACQALAAYACwAIAAsACAANAAYACwAIAAoADgAGAA0ACQAJAA0ADAAHAA4ABAANAAoACgALAAcACwAKAAoADAALAAYADgAIAAsADAAIAA0ACgAMAAsACAARAAgADQAIAAcADwAJAAwACwAJAA8ACAANAAgADQAIAAoACgAOAAgADQAGAAsACgAKAAwACgALAAgADAAKAAgADgAGAAsADAAEAA8AAQATAAIADwAFAAgADAAFAA4AAwAPAAkABgANAAMADAAHAAcADgAHAAoABgAKAAcACQALAAMADQADAAoABwAFAAgABQAJAAkAAwAGAAUABQALAAIACgADAAYABwAFAAUACQABAAgABAAFAAMACQAAAAoAAgAFAAEABwD//wsAAgADAAMAAQAEAAYAAgADAAAACQAAAAUABgD7/woA/v8JAP//AQADAAAACAAAAAAABwD//wQAAAD//wcA/v8DAAIAAAADAP//AAACAAAAAgD//wMA/f8DAP7/AgAAAP3/AgD8/wkA9f8OAPP/CAD6/wIAAQD//wAAAQD9/wEA/P8DAAAAAAD9/wMA+v8HAPr/BQD7/wAAAAAAAP//AQD9/wAA//8AAP7/AAD9////AAD///v/AwD8/wEA/f/+/wAA//8AAPn/BQD4/wMA+v8BAP3////9//////8AAP///f8AAP3////6/wMA/P///////f///////f8AAP3/AQD5/wEA+v8DAPr/AAD9//v/BAD4/wMA+//+//3/AAD6/wMA+P8BAP3//f8AAP//+/8BAPv////7//v/AAD+/wIA+f8AAP3//f////r/AwD6/wEA/f/9/wEA/P8AAPv/AQD7/wAA/f8AAP3/+/8BAP7//f8AAPf/AQD8/wAA/f8BAPf/AwD6/////f/9//3////9//3/+////wAA/f/9//7/AAD5////+//9/wIA+P8DAPn//v/9//v///8CAPr/AAD7//3/AAD6/wIA+/8AAPn////9//7/+//9/////f/5////+v8AAPr////5/wAA+v////r/AAD2/////v/+//3//f/3/wAA+/////z//f/9//n//f/+//z//f/9//3/+//9//r/AAD8//v////7//3////4/wEA+v/9//n/AAD4/wEA9P8BAPb////8//n/BAD0/wMA+v/7////+v8CAPb/AQD6//v////4/wIA+P/9//v//f////j/AAD5//v/AAD2/wEA9v8DAPT/AwD0/wMA9v8AAPb/AQD4////+v/7//3/AAD6/wAA9//+//z//P////f/AAD5/wAA+P8FAPT/AAD5/////v/5//7/+/////r/AQD2/wEA+v////r/AQD2/wEA+v/7/wAA+v//////9/8DAPr//v////n/AAD///3/AAD9//7////9//3/AAD9/wAA/f/+/wAA/////wAA/f/+/wIA/f8AAPz/+v8HAPj/BAD7/wAA+/8DAAAA/f8CAPz/AAAAAP3//v8BAPv/BQD5/wIA//8DAP//AQD+/wEAAAABAAEAAAAAAAEA//8DAP//AQABAP7/AwAAAAEAAwADAPz/CAD5/wYA//8DAAEABAD+/wYAAAABAAMAAAAFAAEAAwAAAAIAAQAHAP//BgAAAAgA//8GAAAAAAADAP//CQD9/woAAAAEAAEABAABAAUAAwACAAQAAwABAAYAAAAGAAEAAAAIAAAABgADAAQABAADAAYAAAAIAAEABAAFAP7/CAACAAMABQABAAYAAQAGAAEABgABAA4A+/8JAAAABgAGAAAABgADAAUABwADAAIACAD+/wwA/f8KAAAADAD9/wUAAAAJAAIACAABAAMAAwAFAAYABQAEAAAAAgAJAP3/CgD//wgAAAAGAAAACAAEAAQAAwACAAMAAwAFAAMABQAEAAAACAD//wYAAgADAAMAAQAFAAAABwD//wYAAQABAAcA//8EAAAAAwACAAEAAQABAAIAAAADAP3/CwD6/woA/f8FAP//BQD8/wUAAAACAAMA+/8FAP//AgAEAP3/AQAAAP//AgD9/wUA+/8FAP3/AQAAAAAAAgD//wMA/f8DAPv/AwD+/wMA+/8DAPz/AQD+/wIA/f8BAP3//f8CAAAA//8AAPn/AwD8/wAA/f////3///8AAP3////7/////P/+/wAA+P8DAPb/AwD6/wAA+v8AAPj/AAD5/////P/7//3/+//+//3/+v8AAPb/AQD1/wAA+f/9//7/+v/9//3//v/4//3//P/4/wIA8/8AAPX/AAD5//n//f/2////+P/6//3/+P////b//f/4//z/+v/6//r/+v/4//3/9//9//P/AAD1////9f/+//f/+f/4//r/+//6//j/9//6//j/+f/8//P////z////8f/9//X/+P/8//b/+v/2//j/9v/3//j/9//4//j/9P/6//X/+P/2//r/9v/6//T//f/v/wAA7P8CAOz/AADx//v/9v/6//T/+f/4//j/+P/2//r/+P/2//r/9v/7//j/+P/5//T/+//1//z/9P////H//f/2//T//f/z//3/9P/5//T//f/1//3/9P/3//j/+P/7//b/9//1//j/+v/3//n/9P/7//f/+P/6//b/+//2//v/9v/3//z/9P/7//j/+P/4//j//P/2//v/+P/3//n/+P/+//L//P/0//v/+v/0//3/9P////P//f/0//3/9v/5//v/+P/5//3/+P/9//n/9//7//j//P/2//3/9v////b//f/5//f/+//6//z//f/5//n/+f/4/wAA+f/9//f/+v/7//r//P/9//X/AQD2//7/+P/9//j////6//n/+//7//r//f/4//v//f/4/wIA8P8CAPT/AAD6//v//f/5//v/+P////b////6//v////2//3//f/2/wEA9P/+//3/+v8AAPX/AQD0/wEA9v////r////6/wEA9v/8////+P8CAPv/+f/8//v//v/+//3/+//8//v/+///////+f8CAPf/AAD7//v////9////+//+//v/+/8AAPr/AQD5/wEA+/8AAP3//v/9//z///8AAPf/BgD0/wYA+P8DAPr/AAD///3/AAD7/wEA+/8BAPv/AQD7/wEA+/8AAP///f8AAP3/AAACAP3/AQD+/wAAAAD//wAAAAAAAAEA/v8BAAMA/f8EAPn/CAD+/wQAAAD//wIA/v8DAP3/AwAAAAEAAwAAAAQA/P8EAP3/CQAAAAAAAAD+/wkA/v8EAAAAAAAIAPv/CAD9/wQAAwADAAAACAD9/wYAAAAFAAEAAgABAAQAAAAEAAEABAADAAAABgD+/woAAQACAAQAAQAEAAcAAAAKAP7/BgABAAMACQAAAAsA/P8JAAAABgAAAAYABQAAAAwA+f8RAPv/CQABAAQABQADAAgAAQAGAP7/CAAAAAkAAwD//wkA+/8SAPr/CwABAAIACAAAAAgAAwAEAAQAAQAGAAEACAAAAAgAAQAGAAAACAACAAYABQAAAAgA//8JAAAABgABAAYAAwADAAUAAwAFAAEABQABAAcAAwADAAQAAQAFAAMABQADAAMAAQAFAP3/CwD+/wgA//8GAP3/CAAAAAEABwD//wcA//8BAAMAAAAAAAMA//8HAP3/AQABAAQA/f8FAP//AQAEAP//AwD//wAAAAAAAAQA/f8DAP3/AwAAAAQA//8AAAAA/f8EAPz/AQD7/wAA/v8CAP7///////3///8AAAAA///7/wEA9v8JAPX/AQD9//v////+//7////6/wMA9/8DAPr//f/9//r/AAD6////9v8AAPj/AAD6////+P////r//P/6//r//v/6//z//P/4//z/+v/6//7/9v/9//j//v/5//v/+P/2//7/9f8AAPX/+//6//b/AADx//3/8/8AAPX/AADz//r/+v/5//z/9v/5//j/+P/6//n/+P/8//b/+v/4//r/9v/6//b//P/z////8f////X/+f/2//r//P/z//3/9P/4//r/9//8//T//f/0//3/8/////P//f/1//n/+P/+//b/9f/7//b/+v/8//b/+//2//v/+f/6//r/+f/7//b//f/2//v//P/0//3/9v/7//7/9P/+//b/AAD0//3/9v////b////0//7/9v/7//z/+v/7//f//f/8//j////4//v//f/6//v////3/wAA9v8AAPj/AAD4//z////3////+//9/wAA+//6//7/+/8CAPb/AAD5//7/AAD5/wAA/f/+//v/AwD4/wAA///+//7/+v8AAP////8BAPz/AAD8//7/AAD//wEA/v8AAPz//v////3/AQD//wAAAAAAAAAAAAAAAP7/AwD9/wYA+/8CAAEA/f8DAAAAAAAAAAEAAAABAAAA/v8DAAIAAQABAP//AgD//wUA//8EAP7///8AAAEAAAABAAEAAAAIAPv/BgABAAAAAwADAAAABgD+/wIAAQABAAMA/v8EAAEAAAADAAAABwD//wAAAwAAAAcA/f8GAAAAAQAFAP//BgD//wQAAAABAAMA//8IAAAAAgACAAAACQD9/wIAAwABAAkA/v8EAAEAAQAFAAAAAwADAAAABQADAAEABAAAAAQAAQADAAMAAQAFAAMAAQAEAAAABgD//wYA//8EAAEAAQABAAUA//8EAP3/CAD//wUAAQABAAAABQD+/wUA//8DAAIAAwABAAEAAwAAAAUAAAAFAAAAAQAFAP//BQAAAAAABwD//wUAAAABAAEAAgAHAP//BAD+/wYA/P8HAP//AwABAAMA//8GAP3/AwAAAAEAAgADAAEA/v8FAP//AgACAAIAAAAFAP3/BwD9/wUAAAAFAAAAAQABAAEAAAADAP//AwAAAAEAAwADAP7/AgAAAAUA//8FAP7/AwAFAP3/CgD5/wYAAAABAAIAAAADAAAAAwD//wMAAwD//wYA+/8GAP//BwAAAAIAAAADAAIAAAABAAMAAQAFAP7/CAD9/woA/f8CAAUA+/8MAPz/CAD+/wYA//8KAP3/CAD+/wQAAwABAAUAAQABAAUAAAAFAAAAAwABAAEAAQABAAUA/f8KAP3/CAD9/wQABAADAAMAAgABAAUAAAAHAAIABgAAAAIACQD9/wgAAAAEAAUAAQADAAEAAwADAAAACgD7/wkA//8GAAQAAQADAAUABQADAAQAAAAIAAAABQADAAEABQADAAUAAAAGAAAABwADAAEABgD+/wQABAACAAUAAQADAAkA//8GAAEAAwAHAAAABgD8/wgAAAABAAMAAAAFAAMAAQAEAP7/BgD//wkAAAAEAAEAAQADAAQAAgABAAMAAQAFAP3/CAD5/wgA/v8DAAIAAwABAAAABwD//wcAAAAAAAkA+/8FAP//AwAGAP//BAAAAAMAAgADAAAAAwD//wcA+v8MAPj/CgD9/wEAAwD//wEAAwAAAAEAAQAAAAEABAD9/wYA+/8FAP3/AwD9/wcA/f8EAAAA/v8BAP//CAD6/wgA+f8DAAIA/v8HAPv/BAD9/wMA//8AAAAAAQD7/wcA+v8DAP////8EAP3/AwD5/wUA/P8CAAAA//8BAAAAAAACAP3/AwD5/wUAAAAAAAAA/v8DAPz/AwD6/wcA+v8FAPj/BAD4/wcA/P8AAAAA+/8CAAAA/f8BAP3/AQD9////AgD6/wUA+v8BAAIA/f8AAAAA+f8HAPr/AAAAAP3/AAACAP///v8AAP3/AAD+/wAA/f8DAPv/AQD7/wEAAAD//wAAAAD9/wMA/P8DAP3/AAABAP3/BQD7/wEA//8CAAIAAAAAAAEA+/8HAPz/CQD7/wQA+f8DAAAABgD9/wAAAAADAP//AQD+/wUA/f8DAP//BQD7/wYA+f8IAPr/BgD//wMAAQD+/wMA/f8HAPn/BAD7/wMA/f8FAP//AQD+/wEA//8HAP3/BAAAAAAAAwAEAAAAAgD+/wUAAgADAP7/BgAAAAUAAQD+/wgA/f8IAAAABAADAAIABQABAAMAAQADAAMAAwABAAQAAAAKAAAABAACAAAACQAAAAMABAADAAMAAwAFAAEACAD+/wgAAwABAAgAAAAGAAMAAQAKAP//CgAAAAYAAQAGAAAABgADAAMABgADAAYAAQAIAAAACAAFAAEABgAAAAYABQADAAQABgABAAgAAQAIAAAACAAFAAUABgAAAAgABQABAAoAAAAGAAUAAwAFAAUABwAFAAYAAgAEAAgAAwAEAAYAAwAGAAUAAwAKAAAABAADAAUABgAHAAEABwADAAgAAQAIAPz/DQAAABAA+/8OAPv/DQABAAYABQD//w4A//8KAAEABAAGAAMABQADAAQABQAFAAUAAQAIAAEACQAFAAQABAAGAAEAAwAHAAAACgD//wgAAAAKAAAACAABAAQABQADAAcAAQAEAAMABQAHAAMABAAEAAMAAwADAAMABQABAAMAAwAFAAUABQABAAQAAQADAAQAAQAFAAEAAwAFAAAABwACAAEACwD7/woA/f8IAP//CQAAAAQAAQADAAMAAgAFAAAAAwABAAIAAgAHAP3/BgD//wMABAAAAAMAAAAFAAAABwD//wQA/f8FAP7/BwD+/wIAAAAAAAQABAD//wgA/f8EAAIAAAADAP3/AAAEAAAAAwAAAP7/CQD6/wcAAAAAAAkA+/8EAP//AwAAAAMAAAAAAAMAAAAEAAAAAwAAAAEAAwD//wMA//8DAAAAAQABAAEA//8DAP//AQACAAAAAQABAP//BQD//wAAAwD//wAAAQD//wEABQD//wEAAAABAP//BQD7/woA+f8KAP3/BgD9/wQA//8FAAIAAAADAPz/BwAAAAMAAwD+/wIAAAAAAAUA/f8EAAEA/f8HAP3/AwADAPv/BgD//wMAAQAAAAMA//8DAAIAAwADAAAAAAAHAP3/DAD5/wcA//8BAAYA//8GAPz/CAD9/wgA//8GAAEAAQAFAAAABQAAAAMAAAAFAP//BwAAAAMAAwABAAEAAQAFAP3/BgD9/wUAAAADAAUA/v8KAP3/BgAAAAUAAwAAAAIAAAABAAQABAAAAAYA/v8GAP//BwADAAAACAD9/woA+/8KAPn/CgD9/wYAAAACAAUAAQADAAUA/v8IAAAABgABAAYAAAACAAMA//8HAAAABQABAAMAAQAFAAAABQD+/wYA//8FAAEAAQAHAP//AgAFAAIAAAAIAPv/CgD//wEAAwABAAIAAwD//wYA/f8FAAAAAwD9/wYA/v8FAAIA/v8HAP//BQD//wEAAwD9/wUA//8BAAMAAQAAAAMAAAAAAAIAAAAAAAMA//8DAAAAAAD//wUA/v8HAP3/AAABAP//BAD//wEAAwD//wAABQD7/wcA///+/wMA/f8DAAAAAQAAAAMA//8DAP3/AwD//wEA//8DAPv/AwAAAP//AQD///3/BQD6/wUA/f8AAAAAAAAAAP//AQD9/wEA+/8FAPz/AwD///3/BQD+/wEA/f/+/wAA//8AAAAA/f8BAAAA/f8BAP////8AAP////8AAPv/AQAAAAAA/v/+//v/BgD7/wUA9/8EAPz/AwD+//7//v////////8CAP3/AwD5/wAAAAD6/wUA/v/8/wEA+f8CAAAA+/8FAPj/BAD8/wAA/f8BAPr/AwD4/wUA+v8FAPb/BAD8/wMA+v8AAPv/AwD+/wMA+f8CAPz/AAABAP3//v8AAPv/AQD8/wMA+v8BAP3///8AAP3/AAAAAP3/AQD7//7/AAD9/wAA/////wEA+f8FAPz/AQD7/wMA+v8DAP7/AAD///7//f8AAAAAAQD7/wQA+/8FAPr/AgD9/wEA+/8FAPz/AAACAP3/AwD//wAAAwD9/wMAAAD+/wEA/v8BAAEAAAD+/wEA//8EAP3/BQD5/wYA+f8FAP3/AwD+/wEA/v8AAAUA/f8CAPz/AQAGAP//AwAAAAEAAQAAAAUA//8BAAEA/v8HAP3/BAD+/wIA//8AAAcA+/8IAP7/AAAFAP//BwD9/wYA//8FAP//CAD9/wQAAAABAAMA/f8IAPn/CgD5/wwA+v8IAAAAAwAAAAMABQAAAAQAAQABAAUAAAABAAUAAQABAAQAAAADAAEAAQAFAAAAAgADAAAAAwADAP//CAD7/wgA//8DAAEAAwAAAAUAAQAFAAAABAD9/wcA//8FAP//AgAAAAEAAgAAAAcA/f8IAPn/CgD+/wUAAAADAAEAAQADAAAAAQABAAAAAwAAAAAABQD9/wcA/f8FAP//AQAAAAEAAAAAAAEA//8BAAIA/f8JAPj/BAAAAP3/AwD//wAAAQAAAAEAAAD+/wMA//8CAP//AQD9/wMA/P8AAP3/AgD8/wMA+P8HAPj/AwD8/wEA/P8BAPr/BQD6/wUA+P8DAPj/BwD3/wMA+v8AAPr/AgD6/wMA+P8BAPr/AgD+//v/AwD4/wEA/P/9//3/AAD6/wAA+f////z/AAD8/////f/5/wAA+f8CAPz//v/7//z/+v8AAPn////8//n/AAD2/wAA/P/6////+P////7/+v8AAPn////6//3//P////b/AAD0/wIA9/8AAPj/+//9//j/AAD2/////f/4/wAA9P8BAPn//f/7//n//f/+//j/AAD4////+v/9//r//f/8//n//f/9//r////4//3/+v/8//r//f/6////9v8AAPj/+//+//v/+v8BAPj/AAD4/wAA9P8BAPX/AQD4//r////4/wAA+v/9//v//f/9//3//f/7//3//f/7//3/+//5/wAA/v/5//7/+f////7/+v8AAPn//P////j/AQD6/////f/5/wAA/P/7/wAA9/8BAPr////7//v/AgD0/wgA8/8GAPb/AwD4/wAA/f/9//3//f/7/wAAAAD7/wEA+/8AAP3//f////3//f8CAPn/AwD7//7////7/wIA///9/wAA+/8DAPj/BwDy/woA9P8EAPz//v////3///8CAPn/AAAAAP3/AAD9//7/AQD7/wEA/f/+//////8AAAEA+f8CAP3/AAACAPv/AQD+//3/AQD///z/AwD5/wAAAAD8/wUA+/8CAP3/AQD9/wMA+v8BAAIA9/8IAPr/AQAAAP///v////3/AgD9/wAA+/8AAP3/AAD9/wAA//8BAP3/AwD7/wEA/f///wAA/f8AAP3/AAD7/wMA+P8FAPr/BQD4/wYA+P8DAPz/AAD9/wMA/P8AAP3/AQD8/wMA+P8CAPr/AQD+////+//+//7///8CAPf/AgD3/wIAAAD6/wEA/f/9/////f/9/wAA/f/7/wMA9v8DAPj/AgD6///////9/wIA+f8AAPn///8AAP//AAD6/wAA+/////7////5/wAA+v8AAP7//f/7/wEA9v8DAPb/AAD8//3/+/8AAPz//f/9//v////8////+f8BAPj/AQD4/wAA/v/7/wAA+f8AAPr/AAD6/wAA/P/9//3////6/wAA/f/5//3//f8AAPr/AAD3/wEA+P////r////8//3/+//9//3/+/8AAPj//v/7//v//P8AAPT//v/8//r/AgD4//r//f/2/wQA+f/7/wAA+f////3/+P8DAPP/AwD2/////v/9//v//P/9//n////8/////f/7/wAA+P8BAPb/AQD4/wAA+v/+//v//f/7/wIA9v8BAPj/AAD4/wMA8f8GAPX/BQD2/wAA+//+////+f////3/AAD5/wAA9///////+v8AAP//+/8AAPn/AgD8/////f////3//f/7/////f/9/wEA+f8AAPv////8/wAA/P/+//3////7/wUA/P8AAPz//P////z/BAD2/wYA9v8BAP3//f8CAPv/AwD3/wEA+P8AAP7/AgD5////+/8AAAAA/f/7/wEA/P8CAP///P8AAP3/AgD7/wEA+//+/wIA/f/+//7//v///wIA/f8AAP7//P8CAP3/AwD9/wIA+/8BAPn/BQD6/wAAAQD7/wEA/f/9/wMA/P8BAP///v8BAP3/AAAAAAAA+/8GAPj/BgD7/wAAAAD//wIA//8AAPz/AwD6/wMA+//8/wMA+v8DAP3/AAD/////AwD9/wAA/P8BAPz/BQD8/wAA/v/9/wAA/P8DAPv/AAD/////AAD9/wEA/f8DAPf//v////7/AAD9//7/AAD///////8AAAAA/f/+//////8AAP//+/8AAP3//f///wAA/f8AAPv/AAD///3///////3///////3//f8AAPr/BQD4/wAA///7/wAA+v8CAPj/AwD6/wAA/f/9//3//f8CAPb/AwD8//v/AgD6/wAA///7/wAA/f/9//3////9//v/AgD4/wMA+P/+/////P8AAPn//v8EAPj/AwD5/wEA+v8FAPb/AgD6/wEA9v8HAPP/BgD4/wAA//////3//P8AAPn/AgD5//3/AAD+///////7/wAA+/8AAPv/AAD9///////9//v/BAD2/wcA9v8DAPn/BQD2/wQA+v8BAPv/AQD4/wUA+P8BAP//+f8DAPr/AwD7//7//v8AAP//+/8DAPn/AQD///3/AAD7/wEA//////7/AAD//wQA+f8CAPn/AAAAAP//AAD8/wAA//8AAP///v8AAP//AAD9/wEAAAD//wEA+/8FAPj/BQD6/wMA+f8BAPv/BQD8/wAAAAD9/wUA/P8DAPv/AwD9/wAAAAD9/wUA+f8DAP3/AwD//wAAAAD+/wMA+f8FAPn/AQD//wIAAAD+/wEA+/8DAP7/AwD9/wIA+/8BAAAA//8BAPz/AQD//wAAAgD9/wEA///7/wUA+v8DAP3/AAABAP///v8AAP///f8CAP3/AwD5/wIA+f8DAPr/AwD8/wAA////////AgACAPv/AgD5/wAAAQD6/wAA/f8AAAAA+//+//3//f8CAPr/AwD5/wAA/f/9/wAA/f8AAP3////9/wIA/v////7/+/8CAPr/AgD7/wEA/f/9/wAA+/8AAP3//f////3//f8CAPj/AQD4/wIA+v8CAP3//v/9/wAA/P8CAPz//v/9//3/////////+f8BAPj/AgD6/wMA+v/+//3////+/wAA+//8/wAA+v8AAPz/AAD7/wAA+/////j/AAD8/wAA+v8BAPj/AwD4/wEA+v8BAPz/AAD9/////f8AAP3////9////+/8DAPj/AwD5/wEA+v8AAPz/AQD6//7//f8AAPz/AQD7//7/BAD2/wgA9P8DAPv/AAD7/wEA/f8AAP3//v////////8AAP3/AQD5/wEA+/8EAPv/BQD5/wIA//8AAAAA/v8BAPv/CQD8/wIA/P8CAPv/BQD6/wQA/f8BAAAA/P8FAPv/BwD5/wYA+/8DAAIA+/8EAP//AQABAPz/AAACAAAAAAABAAAAAQD//wEAAQADAAAAAAABAAAAAwD//wMAAAABAAEAAAAAAAcA/f8CAAEAAAABAAEAAwABAAEAAQAAAAMA//8HAP3/CgD7/wYA//8AAAcA/f8GAP7/AAADAP3/AwAAAAEAAQABAAEAAAADAAAAAwAAAAUA+/8IAPz/BwAAAAAABQD//wkA+/8IAP//AAAFAP3/AwAFAP3/BgD9/wMAAAAHAP//BgD8/wgA+v8OAPr/BwD+/wAABwAAAAEAAgD+/wcA/f8DAAAAAAAFAP//BwD9/wYA//8FAAAAAwD+/wUA//8FAP//BgAAAAMA/v8BAAAABAACAAEAAAAEAP3/CQD9/wQA/v8DAAIAAgABAAEAAAAHAP//AwABAAEAAQABAAEAAQABAAAABQD9/wMAAQD9/wkA/P8EAPv/BgD8/wcA/f8AAAMA/f8FAPn/CAD7/wcA//8AAAMA/f8FAPz/BQD9/wcA+P8IAPj/CAD6/wQA+/8DAP7/AAAEAP//AwD6/wMA//8GAPv/AgD+/wEA/f8FAP3/AQAAAP//AQD//wMA//8DAP//AAACAAIA//8DAP//AQD//wMA//8BAAMAAAAAAAEA/f8DAP//AAABAP7/AQAAAAIA//8FAPv/BgD4/wgA/P8DAAMA/v8BAAMA//8DAAIA/v8GAP//AQABAP//AwD//wMAAQAAAAAAAAACAAIAAgAAAAEAAAABAAQAAAABAAMA/v8FAP3/BQAAAAEAAQADAAEAAwD+/wMAAgADAAAABgD8/woA/f8EAAEAAwADAAEA/v8GAP3/CQD9/wQAAQABAAEAAQABAAEABQD+/wQAAAAFAAUAAQACAAQAAAAHAP3/CgD//wYAAAAKAP3/BgADAAEABQADAAMABAABAAMABwD//wwA//8EAAUAAQAFAAcAAAAIAP7/CgAAAAgAAAAEAAMAAwAFAAMABAACAAQAAQAFAAMAAwADAAUAAQAIAAMAAgAEAAEACQACAAgAAQAGAAAACAAGAAMACAD+/wgAAgADAAcAAAAIAP7/CgD//wgAAQAEAAcAAwADAAQAAwADAAkAAAAKAAMAAgAIAAAADAACAAgAAQAIAAAACgD//wYAAwAFAAUABgAAAAgAAAAKAP//DQD9/wsA/f8KAAAACAAAAAYAAQAGAAAACAAEAAYABwD+/wYAAgAIAAQABQAAAAQAAwAEAAUAAwAAAAYA//8JAAIABwABAAQAAwADAAAABwD//wkA//8DAAEABQAAAAUA/f8GAAIABAAAAAEAAwAAAAUAAgABAAMA//8HAAAABQD9/wgA/P8HAAAABQD9/wgA/P8IAP7/AwACAAAAAgAAAAAABwD6/wgA+v8KAPj/CgD4/wYA/v8FAAAAAQACAAAAAAABAAAAAAAEAP//AAABAPz/BQD8/wEAAgD5/wcA/v8CAP//AAD/////AgD+/wMA/f8AAAAA//8EAP3//v8DAPz/BQD+/wEA/f8DAPz/AQAAAAAA//8AAAIA//8CAP//AAD9////AAAAAP//AQD7/wMA/f///wAA/f8CAP3/AwD7/wEA///7/wQA+P8DAPz/AAD///////8EAPj/BgD6/wEA/////wIA///+/wAA+/8BAPz/BQD8/wIA///6/wUA+v8FAPn/AgD7/wEA/////wMA+/8EAP3//v8FAPj/BgD7/wMAAAD+/wEA/////wEA//8AAP7/AQD7/wcA+v8GAP///v8FAPn/BwD8/wUA/f8EAPv/BgD7/wUA//8DAAEAAAAAAAMA/f8DAAIA/v8EAP3/AwD//wEAAgADAP7/BAD9/wYA/P8DAAAAAwABAAAAAgD+/wUA/f8DAAMAAAAEAPz/AgAAAAQAAgADAAEAAgADAAEAAwD+/wYA//8DAAMAAAAIAPn/CwD7/wYAAAABAAMAAQADAAEAAAAEAAAABwD//wQAAAAFAAQAAAAGAP7/BAABAAUA/v8IAP3/CAD9/wYAAgABAAYAAAAEAAMAAQABAAEABQAAAAoA/v8EAAMAAQADAAUAAAAEAAEAAwD9/woA+v8KAP//AAADAAEABAADAAAABAAAAAcA/f8EAAMAAAAFAP7/AwAFAP//BgD//wIAAgABAAIAAQABAAMA//8FAP//AwAEAAAAAwABAAAAAwACAAMAAAAEAAEA/v8DAAAABAACAAAAAgD9/wcAAAAFAPv/BgD9/wUAAAD6/woA+P8MAPz/BAD+/wUA//8AAAMA/f8DAAIA//8FAPv/BgD9/wEAAgAAAAAA/v8BAAQA/f8DAP7/AAAEAPr/CQD8/wUA/f8BAAIA//8BAP//AQAAAAAAAAAAAAEA/f8BAAAAAAABAP3/AQD//wIAAgD9/wQA+/8DAP//AgACAP7/AAD+/wIA//8AAP7/AwD9/wEAAgAAAAAAAAABAP//AwD9/wMA//8HAPv/BgD9/wEABAD9/wcA/f8DAAAAAAADAP//AQAAAAAABQD5/wgA+/8DAAMA//8AAAMA/f8HAP3/AQADAP3/BwD9/wMA//8DAAAAAwAAAAMAAAADAAEAAQAAAAMAAwAAAAMAAAABAAcA/f8GAAAAAQADAP//BwD7/wwA+f8JAP//AgADAP7/CQAAAAMAAQADAAEABQAAAAIAAAADAP//BwD//wQAAwADAAMAAQAHAP//CAD//wgAAAAGAAAABgAAAAYA//8GAAEABwABAAIAAwABAAkA//8IAAAABAAAAAkAAAAEAAMABgABAAQAAwAHAP7/CgD9/wwA/f8IAAEABAAFAAMABAADAAUAAAAIAAAABAADAAEACAAAAAgAAQACAAcA//8OAPn/CwD9/wQABwD//wgAAQACAAUABQAFAAUAAQAKAP3/DwD8/wkAAQAGAAEAAgAHAP7/CgAAAAMAAwABAAcAAgADAAMABQAFAAEAAwAHAAIAAwAHAAEABQABAAEABwAAAAcA/f8IAP3/CQAAAAEABQAAAAUAAAADAAEAAQAFAAAAAwAFAAAAAQADAAQAAgABAAcAAAADAP7/AwACAAIABQD+/wQA//8FAAAABQD//wIAAAAAAAYA/f8FAAAAAwD9/wMAAgACAAEA/v8BAP//AgAAAP//AwD//wEA/f8DAPz/BwD6/wMA/////wIA/f/9/wMA/P8AAP///////wAA/f8DAP///v//////AAAAAP////8AAP3/+/8CAPr/BAD8//7////9/wAAAAD+//7/AAD5/wQA/P8CAP3//f////7/AgD4/wMA+P8AAP7/+v8CAPj//f8AAPz//f/7//3//v8AAAAA+//+//3//v/+//3//f/7/////P//////9/8BAPr/+/8AAPr////9//3/+/8AAPb/AwD3/wEA/P/7////+/////v/+/8AAPj/AQD8//3/AAD3/wMA9v8BAPz/+/////v//f////j/AQD4/wAA///5/wEA+f8AAPj/AQD4/wMA+v/+//3//f8AAPr/AAD9//3////7/wAA+v8AAPr/AQD+//7//v/8/wAA+/8CAPn/AAD9//3////9/wEA9/8CAPj/AwD6/wAA/f/9/wIA+/8FAPf/AAD9/wQA+v8AAP7/////////AAABAP7//v/8/wUA+v8DAP//+v8FAPr/BQD//wAAAAAAAP//AAACAP3/AwD7/wUA+/8BAP//AAD//wEA//8DAP//AQAAAAAAAQD//wMA/v8AAAEA//8BAP//AAABAAAAAAABAAEAAAD+/wAA//8CAP//AQD8/wQA/f8DAPv/BAD7/wMAAAD7/wcA+/8BAAMA+f8GAPj/CAD+/wEA/P8BAP//AAD//wAAAAD+/wEA/f8AAAMA+/8AAAAA/f8CAP////8AAP////8EAPv/BQD5/wUA/P8DAPv/BQD4/wYA+v8DAP///f8FAPv//v8BAP//AAAAAPn/BQD8/wUA+f8AAP3/AAD+/wUA+P8CAP///f///wAA//8BAPv/AwD7/wAA/f8CAP///f8BAPv/AwD8/wEA///+/////////wAA+/8AAP3/AAD7////BAD4/wMA+/////3/BAD2/wYA9P8GAPn/AQD+//z/AgD7//////////3//f8BAPr/AQD9//3/AAD7/wAA+f8AAP3///////3//f8AAPr/AgD9////AQD5/wAA///6/wIA+v8AAP3//f//////+/8BAPr/AQD6/wMA+P8DAPb/BQD2/wMA9P8DAPr//f////v//f8AAPr/AQD9//7////7//3////+////+//8//3//f/+//v/AgD5//7/AgD2/wUA9v8BAPz/+/8AAPv//f////v//f8GAPT/BAD5////AAD///v/AwD1/wMA/v//////+v/+//3//v////3//v////v/BQD6//7/AAD9/////////////f8BAP3//f8BAPn/AQD6/wEA/f8AAPv/AAD7/wAA/v///////f///wAA+//+//3/AAACAPv/AAD6/wMA+P8DAPr/AwD5/wMA/f/+/wAA/f8AAP3/AwD5/wMA+//+/wQA+P8GAPj/BAD9/wAA//8AAAAAAAABAPv/AgD7/wMA/f8AAP7//v8AAAAA+/8FAPn/AwD9/wAA/f8BAP3/AwD7/wEA+/8BAP//AAD9/wAA/f8EAP7//v8AAPv/AwD+/////P/+////AgD9/wAAAAD7/wMA/P8AAAIA+/8BAPv/AgD9/wIA/f/+//7/AAD//////v/9/wEA/v////3//////wAA/f/+//7//f8AAP3///////3//f8AAPz/AAD9/wAA/f8AAPv/AwD6/wEA/f8AAP3/AAD7/wEA/P8BAPv//v////3/AgD7/wMA+f8FAPr/AwAAAP3/AQD5/wAAAAD8/wMA9/8GAPj/AQD4/wMA/P8AAP///P8BAP3/AAD9//3/AAD9/wAA+/8BAP3///8AAPn/BwD4/wMA/f/+/wAA/f///////f8CAPv/AwD3/wUA9v8FAPz///////v/AAAAAPz//v/9//3//P8IAPf/BgD3/wAAAAD+/////v/7/wEA/P///wAA+/8AAP///f8AAPv/AwD6/wEA+/8DAPr/AQD5/wMA+v8BAP3//P8AAPn/BwD2/wQA+f8BAP///////wAA/f8DAPv/AQD7/wAA//8AAP3//v/+////+/8AAP3///8AAPn/BQD8/wAA///7/wEA/P8CAPn/AQD9////AgD7//7/AQD4/wkA9f8GAPr/AwD8/wAAAAD9/////v///////f/+//v/AAD8/wAA+//+////+/8AAPv/AAAAAP3//v/9/wAA/P8AAPv//P////3///////3//v/9/wAA/P////3/+//9//3//v/9/wAA+//+//3////9//v//f////r/AAD9//n/AQD4/wEA+v///////f/9/wAA+v8AAPz//f////v////5/wAA+v////r////8////+P8BAPj/AAD6//3////8/////f////v//f/9//3////3/wAA+P///wAA+P8BAPT/AwD1/wMA+P8AAPv/+//9//r/AgDz/wYA8f8FAPP/AAD8/wAA9v/+//j/+/8DAPn/AQD5//r////7//7//P/7////+v////r/AAD8//v/+/////z/+//9//n//f/+//r/AgD2/wAA+P////z////9//z//v/3/wAA+v8AAPb/AwD4//3/AAD4/////f/9//v////5//3////6/wAA/f/7//7////7/wEA9/8BAP3//f////n/AAD9/wAA+f8BAPf/AwD4/wEA/f/8/wEA9//+//3//v8CAPn/AAD9///////9/wAA+//+//3///////3/AAD9/wEA/f8AAP3//v8AAP3/AwD5/wAA/f8CAP///v/8/wEA//8AAAEA/P/+//z/AgD+/wEA+/8CAP3/AAD///7/AAD//wEA//8AAAAA//8AAAAA//8BAPv/AwD7/wEAAgD5/wQA+/8BAAAAAAAAAAEA/v8DAP3/BQD9/wEAAwD//wAAAwD5/wYA/v8BAAAAAAABAAAAAwD+/wMA/v8BAAEAAgAAAAMA/v8BAAAAAAABAAAAAQAAAAAABQD9/wMAAAD+/wMA//8FAP3/AgAAAAAAAQAAAAMAAAADAPz/BQD7/wUA//8BAAEAAwAAAAUA/f8CAP//AQACAP//AwAAAAAAAAABAAAAAwABAAAAAQD+/wUA//8BAAAAAQACAP3/BQD7/wkA/f8BAAEAAQD//wAAAAAAAAAABQD7/wQAAAAAAAUA/f8EAP//AQAAAAAAAAABAP//BQD7/wYA+/8DAAAAAQABAP7/AwD9/wEAAAD//wMA/f8DAPn/BQAAAAIAAwD6/wYA+/8BAAAAAAD//wEA//8BAAIA//8AAP7///8CAAAA//8AAAEA//8AAAIA/f8BAAIA/f8FAPn/AwD9/wIAAAD9/wAAAAD9/wQA//8AAAAAAAD//wAA/f8BAPv/AwD6/wUA+P8DAPr/BQD2/wQA+v8AAAAA+/8AAPv/BAD4/wcA+P8FAPv//v/9////AAD///3/AQD7/wMA+v8BAPv///8AAP3/AQD7//7//f8AAAAAAAD7//z/AAAAAAAA///+//z/AgD8/wIA+f8AAPn/BAD6/wEA/f8BAPv//v/9//3/AAD7/wAA/f/7/////P8EAPj/BgD0/wQA/v/9/wQA+f8BAP3///////3/AQD5/wEA+////wIA/f8BAP7//P8BAPz/AwD9/wAA/P/8/wAA/v////7//f8AAAIA+f8DAPn/AwD8///////9/wIA/f8AAAAA+/8DAPr/AQD///v/BQD7/wAAAQD7/wMA/////wEA+f8HAPj/AwD7/wEA+/8BAP////8DAPf/BAD8/wIAAAD+/wEA/v8AAP////8AAP//AwD//wMA/v8BAAAAAAADAP//AQABAP7/BQD9//7/BQD7/wMAAgD7/wYA+/8HAPv/BAD//wMAAAABAAEAAQADAPz/BAD7/wkA/P8GAP3/AAAAAAIA//8HAPn/BgAAAP7/BQD//wcA/f8EAP3/BQAAAAMAAAACAP7/BQAAAAMAAwD+/wYA+/8GAP3/BQD//wQA//8EAP//AQABAAUAAAAEAPr/CgD+/wMAAwAAAAEABQD//wYA/f8GAP3/BgD//wYA//8EAP//AwACAAEAAAAEAAAAAQAAAAMA//8DAAAAAQADAAAAAwAAAAEABwD9/wQAAAD+/wUA//8AAAUAAAADAAAAAAABAAUAAAABAP7/AwAEAAQAAQAAAAAAAwAAAAQAAgD+/wYA//8FAP//AwABAAEAAAAAAAMABAD7/wYA/f8HAAAAAAAGAP3/AwACAP3/BwD6/wgA+v8IAP//AAADAP//BQD//wEA/v8FAP3/BwD5/wYA+/8HAAAAAwD+/wMA/f8FAAAAAQAAAAMAAAABAAIA//8DAAAAAAADAPv/BQD//wEAAAADAP//BQACAAAAAwABAAAAAwD//wMAAAD+/wMAAAACAAEAAQABAAMAAAABAAAAAQACAP//AwAAAAEAAwD7/wYAAAAAAAUA/f8GAP//AQABAAEAAAAFAP3/BAAAAP7/BwD9/wgA+f8IAP//BQACAP7/CAD7/woA/f8GAAAAAQAHAAIAAAAEAPv/DAD8/woA+/8HAP3/CgD+/wgA/v8AAAcA+/8MAPf/CwD//wMAAQAFAAAABgABAAQAAwADAAUAAQABAAcAAAAIAAAABAAAAAUAAgAFAAMAAgAAAAMAAwAEAAMABQABAAQAAQADAAUAAwADAAQAAAAGAAQAAAAGAAEABQAFAAEABgADAAUABQABAAIABwACAAgAAwACAAQAAQAHAAMABQAAAAgAAAAMAPn/DwD5/xEA/P8NAAAAAgAIAP//CQADAAMABgABAAgAAQAGAAUAAQAGAAMAAwADAAcAAAAKAAAABgADAAUAAQAIAAEABAAEAAEABgACAAcAAQAEAAMABQABAAUAAwABAAUABQADAAMABQAAAAkAAAAFAAMAAwADAAUAAAAIAP//BgADAAEABwABAAUABQAAAAQAAQAFAAIAAwABAAEABwAAAAcAAAAGAAAABQAAAAMAAwAFAP//BAADAAIACQD//wQAAQADAAQAAgAFAAAAAwABAAAABwD9/wYAAAABAAUA//8HAP3/BgD7/wcAAAABAAMAAQAAAAUA/f8JAPz/BgD9/wcAAAABAAEABQAAAAEAAAABAAIAAAADAAAAAwAAAAEAAQACAP//AwAAAAIA//8DAP//AwAAAAAAAwD//wMA/f8DAP//AQAAAAAAAQD//wEA//8CAP////8DAAAA//8DAPv/BwD+/wAAAQD//wEA/f8DAP////8DAP3/BQD9/wEA+/8DAAAAAgD//wAAAQD//wIAAAD//wUA9v8IAPr/AQAEAPv/AwD7/wMAAgD//wMA+v8EAPz/AwD6/wUA/v8BAP///v8AAAAA//8AAP//AAACAP//AQABAP3/BQD9/wUA///8/wcA+v8JAPr/BAD7/wMAAAACAAEA+v8EAAAAAAAFAPz/AgD+/wUA/f8HAPn/CAD7/wUA/f8BAAAAAAABAAEAAAAAAAEA//8FAP3/AQAAAAAAAgAAAAEA/v8BAAIAAgD//wMA/f8BAAAA//8FAP3/BgD7/wYA+/8KAPr/CgD5/wQAAAACAAIAAQAAAAQA//8DAAMA/v8EAP7/BwD//wQA/v8GAAAAAQADAP7/BQD//wcA//8AAAAAAwACAAEAAQACAP7/BQD9/wUA//8DAAAAAAADAPv/CQD9/wMAAAABAP//AwAAAAEAAwAAAAEAAwACAAEAAwAAAAUA//8FAAAAAwABAAUAAAAGAP3/CAD//wMAAwD+/wYA/f8IAP//BgD+/wIAAQAAAAkA+/8JAP3/BAAFAAAABQABAAAABwD9/wgAAAAEAAEAAAAFAAIAAwABAAEAAwABAAMAAAAFAAAAAQADAAMAAAADAAAAAwD//wkA/f8KAPv/BwD//wcAAAAEAAEAAAAFAP//AwAAAAMAAQABAAUA//8GAAAAAwABAAEAAwABAAcA+/8KAPn/CgD8/wgA+/8IAP//AQADAAEA//8HAP//AQAFAP3/BgD7/wgA//8DAAEAAwADAAAABQD7/wcAAAACAAUAAQADAAUA+/8EAAIAAAAHAP7/BAD8/wMABAAAAAUA/P8EAAIAAgADAAEAAAABAAQA//8HAAAAAgADAAAABQD9/wgA//8GAP7/AgAAAAUAAAADAAAAAwAAAAcA//8GAP7/AAADAAAAAwADAAEAAAAIAP//AQAFAP//BwD9/wYA+/8KAAAAAQAFAPz/CgD8/wgAAQADAAMAAAAHAP3/CAD//wYAAQACAAMAAAAFAP3/BwD//wcA/f8IAP//BQABAAUAAwABAAQA/v8IAPv/CgD7/wwA+/8IAP//BgAEAP7/CgD9/wYAAQADAAMAAwABAAgA//8GAAAABQACAAUAAQAGAAAAAgADAAAACQAAAAQAAgABAAMAAQAFAAUAAQAAAAQAAgAFAAMA/v8IAP//BwD9/woA+/8KAP3/BgAEAAMAAAACAAMAAAALAPn/CQD//wUAAgAAAAcA+/8KAPz/CgD7/wYAAAABAAIAAQACAAMAAQADAAMA/v8FAP3/BQAAAAAAAQADAP//AwACAAMAAAAFAP//AwACAAAAAQADAP//AwAAAAMAAAAAAAAAAgAEAP3/AwD7/wcA/P8BAP3/BQD+/wUA/f8BAP3/AgABAP3/AwD3/wUAAAAAAP///v8AAAAA/v8CAPv/AwD6/wMA+v8FAPz/AwD7/wEAAAD9/wAA+/8CAPr/BAD8////AwD6/wUA+v8AAP3/AAAAAP3//v8AAPz/AgD8/wEA+P8DAPr/AwD4/wEA/v////3///8AAP3//f////3///////v/AQD6//3//f8AAAAA+/8BAPv/AAD///v///8AAPj/AQD4/wAA+v8AAPz//f////v/AgD8//3//v/9/////v//////+/8AAPz///////3///////n/AQD6/////f/5/wMA+v8AAP//+f8BAPz///////3//f////3////9/wAA+f8AAPr/AgD8/wAA+f/8/wIA/P////7/+/8DAPz/AAD7/wMA9v8BAPz/AAD9//z//v8AAPz/AQD7/wMA+/8AAP3//f/9/wAA/v/+/////v/9/wAA/P8AAAIA9/8IAPr/AQD///3/AQD/////AwD7/wQA+P8GAPj/BQD7/wEA+/8FAPr/AwD5/wQA/v8BAAAA/v8DAPv/CAD4/wYA/f8AAP////8AAP//AQD9/wEA/f8DAPj/BgD6/wMA///8/wEA//8AAAAAAAAAAAEA//8BAP3/AwD6/wUA/////wEA+/8DAAIA/f8CAPv/AwD+/wIA/f8DAPn/BAD//wAAAQAAAAAAAQAAAP3/AwD9////AwD6/wQA/f8BAP///v///wAA//8DAP3/AAAAAP3/BAD8/wUA+f8GAPz/AwD9/wEA//8BAP//AwD9/wMA+/8GAPz/AwAAAAAAAAAAAP//AAD//wEA//8BAP//AAADAPv/BgD6/wQA+/8FAP///v8BAP//AAACAP//AAD+////AgD//wEA//8BAAAAAAAAAP////8DAP7/AQD///7/AwD8/wMA///+/wAAAAD//wEA/f8DAP3/AwD9//7/AwD8/wUA+P8EAPr/BQD+/wAAAAD//wAAAgD9/wMA+/8AAAAA/P8DAPz/BgD4/wYA+P8DAPz/AwD8/wEAAAD7/wgA9/8CAP////8DAPj/BgD2/wYA/P///wEA/f///wAA///9/wEA+/8DAPz/AwD6/wMA///9/wEA+/8BAP7/AQD9/wEA/f8AAP//AAAAAP//AAAAAAAA///9/wAA//////////////3/AAAAAPr/BgD2/wIAAAD9/wAA///9////AAD+/wAA/f8AAP3/AwD8/wEA///5/wUA+f8FAPr/AQD//wAA//8AAAAA+/8AAAAA/P8FAPj/BgD6/wEA/f8AAAAA/f8BAP//AQD9/wAAAAD9/wMA/P8BAP3/AQD+/wAAAAD7/wUA+P8GAPr/AAAAAP3/AAAAAPn/CAD3/wQA/P8AAP//AgD8/wIA+/8BAP//AAD//wEA+f8EAPr/AwD8/wAA/////wAAAAD9/wMA/f8BAPv/AwD//wAA//8AAAIA+/8FAPj/BgD8/wEA/////wAA/f8AAP////8BAAAA///+/wAA//8AAAAA//8AAAAA/////wMA+P8JAPP/CQD3/wIAAAD///3/AwD8//7/AwD4/wQA+v8BAP3/AQD8/wMA+v8EAPj/CAD3/wQA/P8AAP//AAD9/wAA+/8BAAAAAAD7/wAA/f8AAP7/AQD9//7//f///wAA/v/7/wAA///+/////f/////////9////////////+//9/wAA+v8CAPr////9//7////8//v///8AAP7////7/wAA+v8DAPf/AwD4/wAA/P/8/wAA+P8FAPX/AgD3/wAA/P/+//3/+//7//z//v/7////+P8AAPn//f/6////+/////j//f/6/wAA/f/9//v/+//+//7/+v8BAPf/AQD1/wAA9/////z/+v////j////8//z/+v////r//v/8//j/AAD2/wAA9/8AAPn//f/+//z////4/wEA9/8BAPf/AAD3/wEA9/8AAPr/+//9//7/+v////r//f/6/wAA9/8BAPX/AQD5/wAA9/8AAPr//f/8//v//f/9//z//f/9//3//P////r//f/+//z//f/7////9v8DAPf/AAD8//3//f/9//r//f/8/////P//////+P8BAPn////+//3////5////+v8CAPv/AAD4/wAA/v/+/////f/9//3/AAD8///////6/wEA/P///////f//////+v8AAP7//f8AAPv/AAD7/wAA+v8AAP7////9/////f8AAP3///8BAPv/AgD8/wEA/f8AAPv/AwD8/wQA+v8AAP3//f8CAPj/CAD4/wQA+/8AAAMA/v8CAP3/AgD//wMA+/8GAPr/BAD8/wIA/f8CAPv/AAAAAP//AAABAP//AQAAAP7/AAAAAAAAAQD9/wIA//8AAAMA/f8CAP////8DAAAAAQD9/wQA//8EAP3/AgAAAAEA//8CAAAA/v8DAP//AAADAP3/BAD8/wQA//8DAAAAAAABAAMA/f8EAP3/AQADAP3/AwD//wEAAQABAP3/BAD6/wkA+f8HAPz/AgD//wEA//8EAPz/BQD6/wQA/v8DAAIA/v8CAPv/BgD8/wMAAAD+/wMA/f8BAAAAAQD//wYA+v8FAPz/AAADAP//AAACAPv/BgD8/wQA/v8BAP//AQD//wMA/P8CAPz/AQD+/wUA+v8CAP3/AQAAAP////8BAPz/BAD7/wYA/P8AAAEA/P8BAP3///8AAAAA/P8EAPf/CQD4/wcA+f8AAAAA/P8DAPr/AQD+////AAAAAP///v////z/AwD9/wEA+/8AAPr/AwD4/wYA+f8CAPz/AAD///3/AAAAAPz/BAD6/wIA///7/wQA+v8BAPz/AAD+/wAA/f8AAP3/AAD9/wAA/f8BAPr/AQD8/wAA/P///////v8AAP3///8AAPz////////////9///////+/wAA+v8EAPn/AAD8/////P8CAPn/AAD///r/BQD5/wIA/P/7////AAD7/wMA+f8AAP///P///wAA+f8DAPv///8AAPz/AQD9//3/AAD8/wMA+v8BAPz/BAD5/wQA/P/+/wAA/P8BAPn/AAD8/wAA+v8AAPz/AAD+/wAA/f8AAP///f8AAP7///8AAP3/AQD///3//f///wQA/P8CAPj/AwAAAP7/AQD9/wAA/f//////AgD///7/AAD//wAAAAAAAP7/AAAAAP////8AAAAAAAAAAP3/AQAAAPz/AQD9/wMAAAD9/wAAAAD//wEA//8BAP//AQD//wAAAwD8/wIA/f8AAAEA/P8CAP3/AwD8/wIA//8BAAAA/f8GAPz/AgD//wAAAAADAP3/AgD9/wEAAQD9/wEA/f8DAP7/BAD6/wQA/P8GAPz/BAD///7/BAD5/wQA/P8EAPz/BQD4/wgA+f8FAP7/AQAAAAMAAAAAAAEAAQAAAAEA/f8BAAMA/v8EAPv/BAD+/wQA//8BAAAAAQABAP3/AQD9/wQA/P8EAP3/AAABAPz/BgD8/wQA/P8EAP7/AwAAAAAAAQAAAAAA//8DAP7/AQD9/wQA/P8CAPz/AgAAAP//AQD8/wMA/v8AAAAA/f8BAP7/AQD+/wEA//8BAPz/BAD8/wEAAQD6/wcA+/8CAP////8BAP///f8BAPr/BAD9/wEAAAD7/wIA/P8DAP7/AAD///z/AwD9/wEA/////wEA/v8BAP//AAABAPz/BAD8/wEA/v///wAA/v8BAP3/AQAAAAAA//8AAP//AwD8/wIA/f//////AAD/////AAD8/wEA/P8AAP7/AwD8/wEA/f8AAAAA/v8BAPz/AQAAAP////8AAP3/AQD//wEA/P8EAPz/AAABAPz/BgD6/wAA////////AQD+/wAAAAD9/wMA/P8CAPz/AgAAAP3/BAD6/wQA/v8AAAEA/P8EAPz/AgD8/wIA/v8DAPz/BAD6/wEA//8BAP//AAD//wIA//8BAAAAAAD//wQAAAAAAAAA/v8DAAAAAwD//wAAAQD+/wQA/v8EAAEA/f8CAP//AQADAAEA/v8AAAAAAgAFAPz/AwD//wQAAAAEAP//AwAAAAIAAQD+/wUA/f8HAP//AAAAAAMAAgAEAAEAAAAAAAIAAwD//wgA+P8MAPv/CAAAAAIAAgABAAQAAAAJAP//BQAAAAQABAD//wgAAAAHAAAAAwAAAAUAAgABAAIABAADAAAABQD//woA/v8IAP3/BgAAAAQAAwABAAUAAAAFAAEAAgAEAAEABAACAAEABAAGAAEAAwAEAP//CgD+/wcAAQADAAIABAAAAAcAAAAHAP//BQAAAAIABgAAAAUAAgACAAIABgAAAAIABAD//wcA//8EAAEABAADAAQAAQAFAAAABAABAAYAAAAFAAEAAgAAAAcAAAAHAP3/BAABAAMAAwABAAQAAAACAAEABAD//wUA//8EAAMAAQAFAP3/CAD8/woA/v8DAAEABAABAAIAAwABAAQAAwAAAAQAAAAGAP//AAADAAMAAwD9/wcA/P8JAP7/BQAAAAAAAwABAAEABAD//wIAAAABAAYA/v8IAPr/BgD+/wYA/P8FAP//BAD//wQA/P8HAP3/BAD//wQAAAACAAAAAQD//wMAAAADAAAAAAABAAAAAwD//wQA/P8HAPn/BQD+/wAAAQD//wAAAAD//wQA/v8FAPr/BQD+/wAAAQABAP//AQD//wEA//8BAP7/AgD//wAAAAAAAP7/AQD+/wMAAAAAAAAAAQAAAAAAAQD//wIA//8BAP3/AwD+/wQA/v8AAAEA//8DAP//AgD8/wUA/f8EAAIA/f8FAPr/BQD9/wEAAQD8/wQA/P8CAAMA/P8FAPz/AgD//wAAAwAAAAAAAAD//wMA/v8BAPz/BAAAAAEAAAD+/wQA/v8BAAEA/f8CAP//AwD//wEA//8EAPz/BwD7/wUA//8BAAEAAAAAAAAAAAABAAEAAQAAAAAABAD+/wUAAAAAAAIA//8EAAAAAgAAAAIA//8EAP//BAABAAAAAAAAAP//BgD9/wUA/f8CAAEAAAAGAPr/BgD//wMABAD9/wUA//8EAAAAAAACAP3/CQD+/wMA/v8HAP7/BwD//wMAAAABAAMAAQAEAAIAAAADAP//AgADAAAAAgABAAUAAAAAAAAAAQAGAP7/BgD8/wgA/P8KAPv/BAD//wUAAAACAAAABAADAAIAAAADAAAABQACAAIAAAAAAAMAAAAEAP3/BgD//wIABQD+/wgA/P8IAP7/BQABAAIAAgAAAAIAAQAEAP//BQAAAAIAAQACAAIAAQAAAAEAAgABAAAAAgABAAQAAAAEAAAAAgABAAEAAgABAAIAAAAEAP//BQD//wIAAQAAAAQAAAACAAEAAQACAAAABAABAAIA//8DAP//BgD+/wUA//8CAAAAAQADAAAAAgAAAAQA//8CAAMA//8EAPz/BQAAAAQAAAAAAAIAAAABAAAAAQADAAEAAQACAP//AgADAP7/BgD//wIAAQD//wMAAQAAAAEAAAACAAAAAQAEAP//AgAAAAAAAQAAAP//BAD//wIAAAABAAAA/v8EAP7/AQAAAP//AQD//wEAAAADAP//AgD+/wcA+v8FAP7/AQADAP7/AQABAAEAAAABAP3/BAD+/wAAAwD8/wUA/P8CAP7/AQAAAAEAAQD8/wMA/v8BAAAA//8BAP//AQD+/wIAAAABAP3/AAABAAAAAwD//wAAAgD//wEAAQD//wQA/v8CAP//AQAAAAEAAQABAAAAAAABAP//BgD8/wIA//8AAAQA/v8AAAAAAAAAAAYA+/8EAP//AAABAP//AgABAAAAAwD//wAABAD+/wQA//8CAAAAAQABAAAAAQABAAEAAgD//wIAAQADAAIAAQAAAAIAAgAAAAQAAQADAAEAAgABAAIAAgABAAMAAgAAAAIAAAAEAAEAAAAFAAAABQABAAUA//8FAAAAAQAFAAAABQACAAAAAwACAAEABAABAAAABQAAAAMAAQAAAAcAAAACAAUA//8FAAAABQABAAYAAAADAAEAAgAEAAIAAgADAAUAAAAGAAAABgAEAAAAAwAAAAIABgAAAAgAAAADAAMAAgACAAEAAgABAAQABAAAAAQAAAACAAEABgABAAIAAgAAAAQABgAAAAMAAgACAAQAAwABAAUAAQACAAIAAQACAAUA//8JAAAAAwAFAAAAAwAEAAEAAwAFAP//BQAEAAAACAD8/wcA/v8GAAAAAwABAAMA//8IAP3/BgD//wMAAQACAAEAAgABAAAABAD//wQAAQACAAAABgD8/wgA//8CAAUA//8FAP7/BQAAAAQAAQABAAIA//8BAAQAAAACAP//AgABAAAAAwD//wQA//8CAP//AQAAAAEAAQACAP3/AgD//wAAAQABAP//AgD7/wUA/P8HAPv/BgD7/wMA/v8BAAIA//8BAP////8AAAAAAwD+/wAAAQD+/wMA/v8AAAIA+/8FAP3/AAD/////AAABAP7/AAD/////AgAAAP//AAD//wAAAAABAP7/AgD+/wAAAAD8/wAA///+/wEA///9/wIA/f8BAP7/AQD//wAA/v8AAAAA/v8BAPz/AgAAAAAA//8AAP7/AAAAAPz/AQD+/wEA/P8CAP3/AAAAAPv/BQD9/wAAAAD+/wEAAAD8/wIA/f8AAP7//v8BAP3/AgD6/wIAAAD//wAA/P8CAPv/AAAAAP3/BAD4/wMAAAABAP7/AAD+/wMAAAD//wAA/f8AAP//AQD/////AgD8/wIA/f8CAP//AgD+/wIA//8BAAAAAAD9/wYA+f8HAPn/BgD8/wMAAAAAAAAAAQD+/wIAAQAAAAMA+v8DAP//AQABAAAAAAAAAAEAAQD//wIA//8AAAEAAAABAAEA/f8DAP//AQABAP//AAAAAAIAAQACAAAAAAABAAEAAwAAAAIAAAAAAAEAAAABAAAAAQACAP//AwD+/wUA//8CAP3/BQD+/wUA/v8CAAAABAD+/wMAAQAAAAMAAAAFAP//AwD//wIABQD//wEAAAAAAAQA/v8CAAAAAwD//wIAAgAAAAIAAgD//wYA+/8JAPr/BgD+/wIAAQABAAEAAgAAAAIAAQACAP//AwD//wIAAwAAAAMA//8CAAIA//8DAP//AAABAAEAAQAAAAIAAAABAAAAAQACAP//AAD//wQA/v8DAP//AgD//wMAAAABAAAA//8CAAAABAD7/wMA//8BAAEA/v8AAAEA/v8DAP3/AgD+/wEAAAAAAAAA//8BAAAAAAABAPz/AwD8/wQAAAD+/wAA/v8DAP//AAAAAP//AAAAAAAA//8AAP7/AAD+/wEA/f8CAPv/AgD9/wIA/f8BAP3/AQD8/wQA+v8CAP3/AAD+/////v8BAAAA//////7/AAAAAP3/AAD//////v////3/AwD6/wAA/f/+/wAAAAD9/wAA/v/+/wIA/P8BAPv///8AAP3/AAAAAPz/AQD5/wEA/f/+/wAA/v/8/wAA/f8AAPv/BAD5/wMA+f8FAPn/BQD5/wIA/f/+/wMA9/8DAPf/AQD///3/AAD7/wEA+v8CAPr/AQD9/wAA/v////3////+/wAA/f8BAPr/BQD4/wIA/f8BAPr/BAD2/wQA+f8CAPn/AgD6/wIA/P///////v8AAP//+/8CAPz/AQD6/wAA/f///wAA/P8BAP7//v////7///8AAP///v/9//7/AAD9/wEA/v///////v8AAP//AAD7/wIA+/8AAP///v/////////+/wEA+////wAAAAD///3//////wIA/v8AAAAA/P8DAPz/AQD+/wAA/v///wAA//8BAP7/AAD//wAA/v///wAA/f8BAAAA//8AAP7/AQD9/wIA/v8BAAAA//8AAP////8AAP//AAD///v/BQD5/wYA+v8DAPv/AwD8/wIA/v8BAP////8BAP//AQD+/wEA/P8CAP3/AgD9/wMA/f8CAPv/AQAAAAAAAAD+/wAA/v8CAP3/AgD+/wAAAAAAAP7/AQD9/wEA/v8BAP//////////AAAAAP7/////////AAABAPv/AwD8/wEA/v8AAP7/AQD9/wEA/f8BAP7/AAD7/wIA/P8BAPz/AgD8/wAAAAD9/wIA+v8DAP3/AQD////////+/wEA/f8AAP3/AAD8/wIA+f8CAPz/AwD7/wAA/v/+/wAAAAD+/wAA/v8BAPr/AwD5/wMA/P///////f8AAP3////+///////+/wAA+/8AAPz///8AAPr/AgD5/wQA/P////z////9/wEA+v8CAPv/AAAAAP3/AQD8/wEA/f/+/wAA/P8AAP3///////7////7/wEA//////3/AAD+/wAA/f8AAP7//v8AAPz/AAAAAPv/AAD+//7/AAD9/wEA+v8BAPv/AAD///////////7////9/wAA/f8BAPv/AgD8/wIA+v8CAP3/AQD+/wAA/f8AAAAAAAD+/wAA+/8CAP3///8AAP7/AAD///3/AgD9/wEA///7/wYA+P8EAP3///8AAP7///8BAP3/AQD+////AQD+/wEA/v8AAP7/AAAAAP7/AwD+/wAA/////wEA/v8AAAAA/v8CAP7/AQD//wAAAAAAAAIA+/8HAPr/BQD9/wIA//8AAAIA//8AAAAAAAABAAAAAAAAAAEAAAABAPz/BgD7/wQAAAAAAAEAAQD//wMA/v8CAP//AQABAP7/AwD+/wQA/////wMA/v8CAAAA//8DAP3/BgD8/wUA/f8CAAAAAQD//wQA+/8EAP7/AgABAAAAAgD//wMA/v8BAAAAAAACAP7/AwD//wMA/v8CAP//AwAAAAIA//8CAAEAAAABAAIAAAD//wIA/v8DAP7/BAD+/wMA//8AAAMA/v8DAP//AAABAP//AgD+/wIA/v8CAAAAAAAAAAEA//8CAP////8CAAAAAAACAPv/BAD//wEAAAAAAAAAAQD//wAAAAD+/wAAAAAEAPz/AwD9/wIA//8BAPz/AgAAAAAAAQD+////AgD//wEA/f8AAAAAAAAAAP3/AgD8/wUA+v8EAPv/AAAAAP7/AAD9/wEA/f///wAA/f8AAP7///8AAPz/AQD9////AQD7/wIA/f/+/wAA/P8AAP3/AAAAAPz////9//3/AQD7/wAA/f/9/wAA/v/+//7//f/9/wAA+v////3//v8AAP3//f8AAPz/AAD8/////f8AAP3//f/+//3//P8BAPj/AwD4/wAA/P8AAPz//v/+//r/AAD8//3////7/wAA+////wAA/P8AAPj/AgD5/wIA+//8////+/8AAP///f////3//v/6/wAA+v8BAPz/+/////z//f/9//7//f/9//3//v/9/wAA+f8AAPv/AAD8/wAA/P8AAPr/AQD8/wAA/f/+//7//P8AAP3//v8AAPr/AAD7/wEA/P8CAPr/AAD9/////f/+//3//v8AAPz/AAD8/wEA/P8BAPn/AAD9/wAA///9//z/AAD///7/AQD7/wAA/f///wAA/v/+/wAA/v/+/wAA/f8AAP///P8CAPv/AgD9//7//////wAAAgD8/wAAAAD9/wMA/P8BAP7///8AAP7/AAD9/wIA/f8AAP7/AAD/////AAD///7/AgD8/wMA/P8AAAAA/v8BAP////8CAP7/AAABAP7/AAAAAAAAAAD//wAA/v8BAP7/AQD//wAA/////wAA/v8BAP7/AgD9/wAAAQD8/wMA/P8AAAAA///+/wAAAAD+/wEA/v8AAAAAAAACAP3/AQD8/wMA/////wIA/P8AAP7/AAAAAP//AAD+/wAA/v8BAP7/AAAAAP3/AwD8/wMA/f8CAPz/AgD//wEA/v8AAP//AQD8/wIAAAD+/wIA/P8AAP7/AgD8/wMA/P8AAAAA/f8AAP7///8BAP3/AAD9/wIA/P8CAPv/AgD9////AAD9/wAA/v/9/wEA/////wAA/P8CAPz///8AAP3/AAD9/wAA/f8AAAAA///+/wAA/f8BAP3/AQD9/wAA/P8AAAAA/f8BAPz/AQD9/wAAAAAAAP3/AgD7/wMA///+/wMA+f8AAP//AAAAAP7/AAD9/wEA/f8AAAEA+/8DAP///v8CAPn/BAD7/wIA/f8AAP7///////7/AAAAAP//AAD+////AAAAAAAA///+/wAAAAAAAP////8AAP//AAAAAP7/AAAAAP7/AwD7/wMA/P8CAAAA/v8DAPz/BAD8/wIA/v8CAAAAAAACAP3/AwD9/wIA//8BAP//AAABAP//AgAAAAAAAAAAAAIAAAAAAAIA/v8EAP3/BAAAAAAAAAAAAP//AgD9/wQAAAAAAAIA//8CAAAAAwD+/wQA/v8BAAIAAQAAAAIA/v8EAP7/BAD//wEAAAD//wMAAAAEAP3/AwAAAAAABAD+/wUA//8DAAMA//8FAAAAAAACAAAABAD+/wUA/v8EAP//AwAAAAEAAwAAAAMA//8EAAAAAwAAAAMAAAADAAMA/v8IAPv/BwAAAAEAAgAAAAIAAwAAAAEAAgAAAAIAAAACAAQAAAAEAAAAAQAEAAAAAgABAP//BQAAAAMAAAADAAQA//8FAP//BAABAAEAAwD//wQAAAAAAAMA/v8EAAAAAQADAP//AwABAAEAAgAAAAAAAAADAAAAAAABAP7/AwACAAEA//8FAP3/BgD//wAAAAACAP//BAD//wQA/f8FAPz/BgD+/wIAAAAAAAAAAgAAAAMA/v8CAP7/AgAAAAEAAQD+/wMA/P8FAP7/AAABAAAAAAABAAAA//8BAAAA//8BAP7/AgD+/wIAAQD//wAA/v8AAAIA/P8FAPv/BAD9/wMA+/8DAP//AAAAAAAA//8BAAAAAgAAAP//AQAAAAAAAAAAAAAA/v8AAP//AQAAAAAA/f8BAP///v8CAPv/AwD//////////wAAAQD8/wIA+/8DAP7/AQD+/wAA/f8DAP3/AAAAAP3/AwD8/wIA/P8CAPz/AQD//wAA/f8BAP////8AAP3/AwD6/wQA/f8AAAAA////////AAD+/wEA/P8CAP////////3/AQD//wAA/v///wEA/f8AAAAA//////7/AAABAAAA//8AAP7/AwD9/wEA/f8BAAAAAAD/////AAAAAAEA/v8BAP////8CAAAAAAACAP7/AAABAAAAAAAAAP//AAAAAAAAAAAAAAAAAAACAP//AgD//wEA//8AAP//AAABAAEA//8AAAAAAAACAAAAAQAAAAAAAgABAAEAAwD//wMA//8DAAEAAgAAAAAABAACAAAAAAAAAAIAAQAEAP//BAD//wIAAQACAAAAAQAAAAQAAAAAAAQA//8EAAEAAAAFAAAAAQACAAAABQAAAAAAAwD//wUAAQAEAAEAAQACAAIAAwABAAEAAAADAAIAAAAGAAAABAABAAAABQD+/wgA//8DAAAAAQADAAEABQABAAIAAAADAAEABAAAAAIAAAAEAAEABQAAAAUA//8DAAEAAgADAAAAAQABAAMAAwAAAAMA//8DAAAAAgACAAAAAQABAAAABAD//wQAAgAAAAQA//8EAAEAAQABAAIAAQACAAIAAQAEAP7/BQD//wEAAgAAAAYA/v8CAAAABAAAAAIAAAAAAAQA/P8EAAAAAQABAAAAAgABAP//BAD9/wQAAAAAAAAAAQABAAAAAQD//wIAAAABAAAAAAABAAAAAAABAP//AQABAAAAAgD+/wMA/P8DAAAAAAADAP7/AQAAAAAAAAABAAAAAQABAP//AwD9/wMA//8AAAAA//8CAAAA//8AAP7/AwD+/wIA/v8AAP//AAABAP//AwD8/wIA/P8EAPz/AwD/////AgAAAAEAAQD/////AgD9/wIA//8BAP7/AAD//wEAAQD9/wEA/f8CAAAAAAAAAAAAAAABAP//AgAAAP7/AgD8/wQA/v8AAAAAAQD9/wIA//8CAAAAAAAAAAEA/f8EAP//BAD+/wIA/v8CAAAAAgABAAAAAgAAAAAAAAD//wEAAQD//wEAAAAAAAAAAQAAAAIAAAABAAAAAAAAAAAAAAACAAAAAgABAAAAAgAAAAEAAwD//wMA//8CAAIAAAACAAAAAAADAAAAAgAAAAEAAAADAAAAAQABAAAAAgAAAAAAAgACAAAAAgACAAAAAwD//wMABAAAAAMAAAAAAAUA/v8FAP7/AgACAAEAAwACAAAAAwABAAAABAD//wMAAAACAAAAAgAAAAIAAQAAAAMAAQABAAEAAQADAAIAAQABAAIAAwACAAIAAQABAAAABQD//wYA/f8FAAEAAQACAAAAAgADAAIAAgABAAIAAQADAAEAAgACAAIAAAACAP//BAAAAAIAAQABAAEAAAACAAMAAAAEAP//AQACAAEAAwAAAAEAAgADAP//AQAAAAIAAQACAAAAAQAAAAEAAgABAAIAAAACAAAAAAACAAEAAQABAP//AgAAAAMA/v8DAAAAAAABAAAABAD//wEA//8BAAIA//8DAP//AAACAAAAAwAAAP//AQD//wIAAAADAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQD+/wEA/v8DAP////8CAP7/BAD9/wAAAAABAP//AQD/////AQD//wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAABAPz/AgD8/wIAAAD//wIA/f8AAAAAAAD//wMA+/8DAP7/AAAAAAAAAAABAPz/AgD+/wMA//8BAP7/AAD//wAAAAACAP//AQD9/wIAAAD9/wIA/f8DAPz/AgD9/wQA//8AAAEA/f8CAP//AgAAAAAA/v8BAP//AAABAAAA/v8CAP7/AgAAAP//AQD//wIAAQACAP7/AgD8/wQAAAAAAAAAAAAAAAEAAQD//wAAAAAAAAYA+v8EAPz/BAAAAAAAAAAAAAEAAgAAAAMA//8DAP//AgAAAAAAAAABAAAAAQAAAAAAAgACAAAAAAACAAAAAgAAAAEAAQAAAAMAAAADAAEAAQABAAEAAQACAAAAAwD//wMAAQADAAAAAQAAAAEAAgACAAEAAQABAAIAAgAAAAIAAAADAAIAAAACAAAAAQADAAAAAgAAAAIAAQABAAEAAQACAAAAAgAAAAIAAQACAAEAAQABAAMAAQACAAEAAgAAAAMAAQADAAIAAgAAAAMA/v8GAAEAAgADAAAAAwABAAQAAgABAAMA//8EAAAABAAAAAMAAQAAAAQA/v8FAP//AwABAAQA//8EAP7/BQAAAAQAAAADAAAAAQABAAEAAgAAAAIAAAABAAMAAAACAAAAAgAAAAMA//8EAAAAAAABAAMAAAADAP7/AwAAAAIAAAACAAAAAgAAAAIA//8CAAAAAQAAAAAAAQAAAAEAAQAAAAAAAAAAAAEAAAAAAAAAAAACAAAAAAAEAP3/BAD+/wAAAQAAAAIAAAAAAAAAAAABAAAAAQAAAAEA/v8AAAEA/v8CAP3/AAAAAAAAAQD+/wEA/v8BAP7/AgD+/wIA/f8CAPz/AgD9/wEA//8AAAAAAAD+/wAA/v8BAP3/AAD9/wAAAAD//wAA/v8AAP7/AgD+/wAA/v8AAAAA/v8BAP7//v///wAAAAAAAAAA/f8AAP3/AQD9/wAAAAD//wAA///+/wAA//8AAP7/AAD//wIA+v8CAPv/AAD+////AAD+/wAA/f///wAA/f8AAP3/AAD9/wEA/f8AAPz/AQD8/wEA/P8CAP7/AAD+/wAA/v8AAP7/AAD+/wAA/v///wAA/f8AAP7/AAD//wAA/v8AAP7/AQD9/wAA/v8AAP7/AQD+////AAAAAP//AAD9/wAA//8BAP//AAD+/wAAAAAAAAAA/v8AAAAAAAAAAP//AAAAAAAA//8BAP7/AgD+/wAA//8BAP//AAD+/wIA/f8CAP//AQD//wAA//8CAP7/AgD9/wMA/v8CAP3/AwD8/wQA/f8BAAAAAAAAAAIA/v8CAP//AAAAAAAAAAAAAP//AgD+/wIAAAAAAAAAAAAAAAAAAAAAAP//AQAAAAAAAAAAAAEAAAABAP//AAAAAAAAAAAAAAAAAAAAAAAA//8AAAEA//8BAP7/AgD//wEAAAAAAAAAAAAAAAIA/v8CAP//AgAAAP//AQD+/wIAAAAAAAAAAAAAAAAAAAAAAP//AgD+/wIA/f8CAP//AQAAAAAA//8AAAAA/v8DAPv/BQD+/wAAAAD+/wEAAAAAAAAAAAAAAAIA/f8DAP//AQD//wAAAAAAAAAAAAD//wIA/P8EAP3/AQD+/wEA/f8CAP3/AAAAAAAAAAAAAP////8BAP7/AQD+/wAAAAD//wAA/v8AAP//AAD//wEA//8BAP7/AAAAAAAAAQD//wAAAAAAAAAAAAD+/wEA/v8AAP////8BAP3/AQD9/wAA/v8AAAAAAAAAAP//AAAAAP//AAD//wAA//8BAP3/AAD//wAA////////AAD//wEA/P8BAP7///8AAP//AAAAAP7/AAD//wAAAAD+/wAA/////wAA/P8AAP7/AQD//wAA/P8CAPz/AwD9/wEA/v///wAA/v8CAPz/AgD9/wAAAAAAAP////8AAAAA//8AAP//AAD//wAAAAD//wAA/v8AAP//AAAAAAAA//8AAP//AAAAAP//AAD//wAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AQAAAAAAAAAAAAAAAAAAAAEA//8AAAAAAAAAAAAAAAACAP//AAAAAAAAAQAAAAAA/v8AAAAA//8AAP7/AgAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAD//wEA//8AAAAAAAAAAAAA//8BAAAAAQD//wIA//8BAAEA//8BAP//AgD//wAAAAABAAAAAAABAP//AQAAAAAAAgD+/wEAAAAAAAIA/v8DAP//AQAAAAAAAgD//wIA//8AAAAA//8CAP//AwD+/wMAAAAAAAEA//8BAAAAAQD//wEAAAAAAAMA/P8EAPz/AgD//wAAAQD//wEA//8CAAAAAAAAAAAAAQD//wAAAAAAAAEA//8BAAAAAAACAP7/AgD+/wAAAAABAP7/AgD9/wEAAAAAAAAA/v8BAP3/AgD+/wEA//8AAAAAAQD//wEA//8AAAAA/v8AAAAA/v8BAP7/AAAAAP7/AgD7/wMA/v8AAP//AAAAAAAAAAD//wAA//8AAAAAAQD/////AAD//wEA/////wAAAAD//wAA/v8AAP7/AAD+/wAA/v8AAP////8AAAAA/f8AAP3/AAD+////AAD8/wIA+/8CAP7///8AAPz/AAD9/wAA/v/+/wAA/v8AAP7///8AAP///////wAA/f8AAPz/AAD+/wAA/f8AAAAA/P8BAPv/AwD7/wEA/P8AAP7/AAD+/wAA/f8AAP7/AAD9////AAD+/wAA/f8AAPz/AAD+/wAA/v/+/wAA/v8AAP3///8AAP3/AQD9////AAD+/wAAAAD9/wEA/P8AAP3/AAD///3/AAD9/wAA/v///wAAAAD9/wAA/P8AAP7/AAD8/wAA/f8AAP7/AAD+///////+/wAA//8AAP7/AAAAAPz/AgD9/wIA/f///wAAAAD+/wAA//8AAAAA/v8BAPz/AQD9/wAA//8AAAAAAAD///////8AAAAAAAAAAP7/AAD+/wAA//8AAP////8AAP3/AQD+/wAA/v8BAPz/AAD///7/AQD+/wAA//8AAP7/AAAAAAAAAAD+/wAA/v8AAAAAAAAAAP//AAAAAAAAAAAAAP7/AgD+/wAA/v8AAAAAAAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD+/wAAAAABAP3/AwD8/wEA/v8AAAAAAAD9/wIA/f8DAP7/AAD/////AAAAAP7/AAAAAAAAAAD//wAA//8BAP////8AAAAAAAD//wAA//8AAAAAAAAAAP//AAAAAP//AAD+/wMA/P8CAP3/AAABAP3/AgD+/wAAAAAAAAAAAAAAAP7/AAAAAAAA/f8BAP//AAAAAAAA//8BAP7/AAAAAP//AAAAAP3/AQD+/wAAAAAAAAAAAAD//wAA//8BAP//AAD+/wEA/v8AAAAAAAAAAAAAAAAAAP//AAAAAP//AQD9/wAAAAD//wAA/v8BAP3/AgD+/wAAAAD//wEA/v8AAP7/AQD//wAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAD+/wEA/f8BAP7/AAD/////AAAAAAAAAAD//wAAAAAAAAAA//8BAP3/AAAAAAAA//8AAAAAAAD//wAAAAD+/wAA//8AAAEA/////wAAAAD//wAA//8AAP//AAAAAAAA//8AAAAAAAD+/wAA//8AAP//AAAAAAAAAAD//wAAAAD//wIA/v8CAP7/AAAAAAAAAAD//wAA/v8AAP//AAAAAP//AAD//wAAAAAAAAEAAAAAAAAAAAACAP7/AgAAAP//AQD//wEAAAABAP//AQAAAAEAAAAAAAAAAAABAP//AQAAAAAAAAAAAAAAAQD//wEAAAAAAAAAAAABAAAAAAD//wMA/v8CAP7/AgD//wIA/v8BAAAAAQAAAAEAAAAAAAAAAAAAAAAAAQD+/wIA//8BAAAAAAAAAAAAAAACAP//AQAAAAAAAgD+/wIA/v8CAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAAAAAAAAABAP//AgAAAAAA//8CAP//AQD//wEA//8DAP3/AgD+/wAAAAAAAAAAAQAAAAAAAAAAAAEA/v8CAP3/AQD//wAAAAAAAAAAAAD//wIA/v8AAAAA//8BAP//AAD//wEA//8BAP7/AgD+/wAAAAAAAP//AAD//wAAAAAAAAAAAAD//wAA//8AAAAAAAD//wAA/v8AAAAAAAAAAP//AAD//wAA//8BAP3/AAAAAP//AAD9/wEA//8AAP//AAD//wAA//8AAAAA//8AAAAA//8AAAAA//8AAP7/AAD//wAA//8AAP7/AAD/////AAD+/wIA/v8AAP7/AAD//wAA//8AAP7/AAD+/wAA///+/wAA/////wEA/v8AAP7/AAD//wAA/////wAAAAAAAP//AAD9/wAA//8AAAAA/////wAA/v8BAP7/AAAAAP//AAD//wAAAAD//wAA//8AAAAAAAAAAP//AAD//wAAAAD//wEA/P8CAP3/AQAAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAAA//8AAP7/AAAAAAAA//8AAP//AAAAAP7/AAAAAP//AgD+/wAA//8AAP//AQD//wAA//8BAAAA//8AAP//AAABAP3/AwD//wAAAQD+/wIA//8BAAAA//8BAP7/AQD+/wEAAAAAAAAA//8CAP7/AgD//wAAAQD//wAA//8AAAAAAAAAAAAAAAD//wIA//8BAAAA//8AAAAAAQAAAAAA//8CAP//BAD//wAAAAAAAAEAAAAAAAAAAAAAAAAAAAD//wIA//8CAAAAAAABAP7/AQAAAAAAAAACAP//AgD//wEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAEA//8CAP//AgD+/wMA/v8CAP//AAAAAAEAAAAAAAEAAAAAAAAAAAACAP//AgD+/wEA//8BAAAAAAAAAAEAAAAAAAAAAAABAAAAAAABAAAAAAACAP//AgD//wEAAAABAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAA//8BAP//AgD//wIA//8CAP//AAAAAAAAAQD//wEAAAAAAAIA/v8DAP7/AQAAAAAAAQD//wIA//8CAAAAAAAAAAAAAQAAAAAAAAABAP//AAD//wIA//8CAP//AQAAAAEA//8CAP//AQAAAAAAAQD+/wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA//8BAAAAAAAAAAAAAAABAAAA//8BAP7/AgD//wEAAAAAAAEAAAAAAAAAAQD//wEA//8BAAAAAAAAAAAAAQD+/wMA//8BAAEA//8BAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAEA//8BAAAAAAABAAAAAAAAAAAAAAACAAAAAQAAAAEAAAABAAAAAQABAP//AgAAAAAAAQAAAAAAAQAAAAAAAAAAAAEAAAABAP//AwD//wIA//8BAP//AgAAAAEAAAAAAAIA//8BAAAAAQAAAAAAAQAAAAIAAAACAAAAAQABAAAAAgD//wIA//8CAAAAAQAAAAAAAQAAAAEAAgAAAAEAAAABAAAAAAABAAAAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAEA//8CAP//AQAAAAAAAQAAAAEAAQD//wIAAAAAAAAAAAAAAAAAAQD//wEAAAAAAAEAAQD+/wMA/v8BAAAAAAABAAAAAAAAAAAAAgD//wEAAAABAAAAAAAAAAAAAAAAAAAAAAACAP//AQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA//8BAP//AQD//wAAAAAAAAAAAAAAAAAAAAABAP//AAAAAP//AQD//wEA/v8CAP//AAAAAP//AAAAAAAA//8AAAAAAAACAP7/AAD//wAAAAAAAAAAAAD//wAAAAAAAAAAAAD+/wAAAAAAAAAAAAD//wEA/v8BAP7/AQAAAAAA//8AAP//AAD//wAAAAD//wEA/v8BAP//AAD//wAA//8AAAAAAAAAAAEA/f8CAP3/AQD//wEA/v8AAP//AAAAAAAAAAD//wAA//8AAAAA//8AAAAAAAD+/wEA/f8BAAAAAAAAAAAA//8BAP7/AgD+/wEA//8AAAAAAAD//wEA/////wEA/v8CAP//AQD//wEA//8BAP//AQD//wEA//8AAAAAAAAAAAAAAAAAAAAA//8BAP//AQD//wEA//8BAAAAAAABAP//AgD//wAAAAAAAAAAAAAAAAAAAAAAAAEA//8BAP7/AgD//wMA//8AAAAAAAAAAAAAAAABAAAAAAABAAAAAQAAAAEAAAABAAAAAAABAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQD//wIA/v8DAP//AgAAAAAAAAAAAAIAAAACAP//AQAAAAEAAQACAAAAAgD//wMAAAACAP7/AwD//wIAAAAAAAEAAAACAAAAAAAAAAEAAAACAAAAAAABAAEAAAACAAAAAQABAAAAAgAAAAIAAAABAAEAAAACAAAAAgAAAAAAAQAAAAIAAAABAAAAAAACAAAAAQAAAAAAAwD+/wQA//8CAAAAAAACAAAAAQAAAAAAAAABAP//AgD//wIAAAAAAAEAAAABAAEAAAAAAAAAAQACAP//AgD+/wIAAAABAAAAAQD//wIAAAABAAAAAAABAAAAAQAAAAAAAQAAAAAAAAABAAAAAgD//wAAAAAAAAAAAAAAAAMA/v8EAP3/AwD//wEAAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAEA//8BAAAAAAAAAAEAAAABAP//AQAAAAIA/v8BAP//AAAAAP//AQD//wAAAAAAAAAAAAAAAAAAAAABAP//AAAAAP//AQAAAAEA//8BAP7/AAAAAAAAAQAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AQD//wEAAAAAAAEA//8AAAEA/v8CAP7/AQAAAAAAAAAAAAEA//8AAP//AAABAAAAAgD+/wEA/v8CAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAAAAAABAAAAAAD//wAA//8AAAAA//8AAP//AAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA/v8BAP//AgAAAAAAAAD//wIA//8CAP//AAAAAAEA//8BAP//AAABAP//AAAAAAAAAQAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAP//AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAEAAAAAAAAA//8CAP//AgAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAACAP//AAABAP//AgD//wEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEA//8AAAAAAAABAAAAAAABAAAAAAACAP//AQD//wEAAAABAAAAAAAAAAAAAQAAAAAAAAD//wEAAAAAAAAA//8BAAAAAAAAAAAAAAABAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAD//wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8BAP//AQAAAAAAAAD//wAA//8BAP7/AAAAAAAAAAAAAAAA//8AAP//AAAAAAAAAAAAAAAA//8AAAAAAAAAAP7/AQD//wAAAAD+/wEA/v8BAP//AAAAAP//AQD//wAAAAAAAAAA//8AAP//AQAAAAAAAAD+/wAA//8AAAAAAAAAAAAA//8AAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAAAAAAAAAA//8AAAAAAAAAAAAAAAD//wIA/f8BAP7/AQD//wAAAAAAAAAAAAAAAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAEA/v8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD+/wEA//8BAP7/AAAAAAAAAAAAAAAAAAD//wAAAAD//wEAAAAAAP//AAD//wEA//8BAP//AAAAAAAAAAAAAP//AQD//wAAAAAAAAAA//8AAAAAAAAAAAAAAQAAAAEA//8BAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8CAP//AQAAAAAAAAAAAAAAAQAAAAAAAAAAAAEA//8BAP//AAD//wAAAAAAAAAAAAD//wEA//8BAP//AAAAAAAAAQD//wEAAAAAAAAAAAACAAAAAAAAAP//AAAAAAAAAAD//wAAAAAAAAEA//8AAAAAAQAAAAEA//8BAP//AQAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQD//wEA//8BAP//AQD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA//8AAAAAAAAAAP//AAAAAP//AAD//wAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAD//wAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA/v8AAP//AAAAAP//AAAAAAAAAAAAAAAAAAABAP//AAD//wAAAAAAAAAAAAD+/wAA//8AAAAA//8AAAAAAAAAAAAA//8BAP7/AQD+/wAAAAD//wEA/v8AAAAA//8AAP//AAAAAAAAAAD//wAA//8AAAAAAAAAAAAA//8AAAAAAAAAAAAAAAD//wAAAAAAAAAAAAD//wAAAAAAAP//AAD+/wAA//8AAAAA//8AAAAAAAD//wAA//8AAAAAAAAAAAAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAD//wAA//8AAP//AAD9/wEA/v8AAP//AAD//wAAAAAAAAAAAAD/////AAD//wAAAAD//wAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8BAP//AAAAAP//AAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/wEAAAAAAAAAAAAAAAAAAAAAAAAA//8BAP//AAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wEA//8AAP//AAAAAAAAAQD+/wEA//8AAAAA//8BAP//AAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAQD//wAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAD//wAA//8AAP//AAD//wEA//8BAP//AQD//wEA//8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AQD//wAAAAAAAAAA//8AAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAA//8AAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AQD//wEA//8AAP//AAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAD//wAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wEA//8AAAAAAAAAAP//AAAAAAAAAAD//wAA//8AAAAAAAAAAAAAAAAAAP//AQAAAAAAAAAAAAAA//8AAAAAAAAAAAAA//8BAP//AQAAAP//AAD//wAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAP//AQD//wAAAAAAAAAAAAD//wAA//8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AQAAAAAAAAD//wEAAAABAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAA//8AAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAA//8AAAAAAAABAP7/AAD//wAAAAAAAP//AAAAAP//AQD+/wEA//8AAAAAAAAAAAAA//8AAAAAAAAAAP//AAD//wAAAAD+/wAA//8AAP//AAAAAAAAAAAAAAAAAAAAAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAA//8AAAAAAAAAAP7/AAAAAAAAAAAAAP//AAD//wAA//8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AQD//wAA//8AAAAAAAAAAAAAAAAAAP//AAD//wAAAAD//wAA//8AAAAAAAAAAAAAAAD//wAAAAAAAAAAAAD//wAA//8BAP//AAD+/wAAAAAAAAAA//8AAAAAAAD//wAA//8AAAAAAAD//wAA//8AAAAAAAAAAP//AAD//wEA//8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AQD//wEA//8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wEAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AQD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD//wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wEA//8BAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAP//AQD//wEAAAAAAAEA//8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA diff --git a/tests/TestFiles/sample_keycenter_embedded.sfz b/tests/TestFiles/sample_keycenter_embedded.sfz new file mode 100644 index 00000000..831af703 --- /dev/null +++ b/tests/TestFiles/sample_keycenter_embedded.sfz @@ -0,0 +1,627 @@ + pitch_keycenter=sample oscillator=off + sample=root_key_38.wav + sample=root_key_62.wav + sample=root_key_38.flac + sample=root_key_62.flac + pitch_keycenter=10 sample=root_key_62.flac + key=10 sample=root_key_62.flac + name=root_key_38.wav base64data= +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 +NJ7z/s+wKr7M2azG + name=root_key_62.wav base64data= +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 +NJ7z/s+wKr7M2azG + name=root_key_38.flac base64data= +ZkxhQwAAACIQABAAABE3ABE3CsRA8AAACJa/iIn0E/di5nowFYEmMX5GAwAAEgAAAAAAAAAAAAAA +AAAAAAAIlgQAACggAAAAcmVmZXJlbmNlIGxpYkZMQUMgMS4zLjIgMjAxNzAxMDEAAAAAAgAAEHJp +ZmZSSUZG1BEAAFdBVkUCAAAccmlmZmZtdCAQAAAAAQABAESsAACIWAEAAgAQAAIAAFByaWZmTElT +VEQAAABJTkZPSVNGVCQAAABMb29wQXVkaXRpb25lZXIgKGxpYnNuZGZpbGUtMS4wLjI4KQBJQ1JE +DAAAADIwMjEtMDQtMTUAAAIAABByaWZmY3VlIAQAAAAAAAAAAgAAMHJpZmZzbXBsJAAAAAAAAAAA +AAAAk1gAACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAxyaWZmZGF0YSwRAACBACAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +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 + name=root_key_62.flac base64data= +ZkxhQwAAACIQABAAABE3ABE3CsRA8AAACJa/iIn0E/di5nowFYEmMX5GAwAAEgAAAAAAAAAAAAAA +AAAAAAAIlgQAACggAAAAcmVmZXJlbmNlIGxpYkZMQUMgMS4zLjIgMjAxNzAxMDEAAAAAAgAAEHJp +ZmZSSUZG1BEAAFdBVkUCAAAccmlmZmZtdCAQAAAAAQABAESsAACIWAEAAgAQAAIAAFByaWZmTElT +VEQAAABJTkZPSVNGVCQAAABMb29wQXVkaXRpb25lZXIgKGxpYnNuZGZpbGUtMS4wLjI4KQBJQ1JE +DAAAADIwMjEtMDQtMTUAAAIAABByaWZmY3VlIAQAAAAAAAAAAgAAMHJpZmZzbXBsJAAAAAAAAAAA +AAAAk1gAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAxyaWZmZGF0YSwRAACBACAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +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 diff --git a/tests/TestFiles/table_embedded.sfz b/tests/TestFiles/table_embedded.sfz new file mode 100644 index 00000000..a85f6c6c --- /dev/null +++ b/tests/TestFiles/table_embedded.sfz @@ -0,0 +1,38 @@ + oscillator=on sample=ramp_embedded.wav + name=ramp_embedded.wav encoding=base64 data=UklGRiQIAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAIAAABgEGAgYDBgAGBQYGB +gcGBAYJBgoGCwYIBg0GDgYPBgwGEQYSBhMGEAYVBhYGFwYUBhkGGgYbBhgGHQYeBh8GHAYhBiIGI +wYgBiUGJgYnBiQGKQYqBisGKAYtBi4GLwYsBjEGMgYzBjAGNQY2BjcGNAY5BjoGOwY4Bj0GPgY/B +jwGQQZCBkMGQAZFBkYGRwZEBkkGSgZLBkgGTQZOBk8GTAZRBlIGUwZQBlUGVgZXBlQGWQZaBlsGW +AZdBl4GXwZcBmEGYgZjBmAGZQZmBmcGZAZpBmoGawZoBm0GbgZvBmwGcQZyBnMGcAZ1BnYGdwZ0B +nkGegZ7BngGfQZ+Bn8GfAaBBoIGgwaABoUGhgaHBoQGiQaKBosGiAaNBo4GjwaMBpEGkgaTBpAGl +QaWBpcGlAaZBpoGmwaYBp0GngafBpwGoQaiBqMGoAalBqYGpwakBqkGqgarBqgGrQauBq8GrAaxB +rIGswawBrUGtga3BrQGuQa6BrsGuAa9Br4Gvwa8BsEGwgbDBsAGxQbGBscGxAbJBsoGywbIBs0Gz +gbPBswG0QbSBtMG0AbVBtYG1wbUBtkG2gbbBtgG3QbeBt8G3AbhBuIG4wbgBuUG5gbnBuQG6QbqB +usG6AbtBu4G7wbsBvEG8gbzBvAG9Qb2BvcG9Ab5BvoG+wb4Bv0G/gb/BvwDAQMCAwMDAAMFAwYDB +wMEAwkDCgMLAwgDDQMOAw8DDAMRAxIDEwMQAxUDFgMXAxQDGQMaAxsDGAMdAx4DHwMcAyEDIgMjA +yADJQMmAycDJAMpAyoDKwMoAy0DLgMvAywDMQMyAzMDMAM1AzYDNwM0AzkDOgM7AzgDPQM+Az8DP +ANBA0IDQwNAA0UDRgNHA0QDSQNKA0sDSANNA04DTwNMA1EDUgNTA1ADVQNWA1cDVANZA1oDWwNYA +10DXgNfA1wDYQNiA2MDYANlA2YDZwNkA2kDagNrA2gDbQNuA28DbANxA3IDcwNwA3UDdgN3A3QDe +QN6A3sDeAN9A34DfwN8A4EDggODA4ADhQOGA4cDhAOJA4oDiwOIA40DjgOPA4wDkQOSA5MDkAOVA +5YDlwOUA5kDmgObA5gDnQOeA58DnAOhA6IDowOgA6UDpgOnA6QDqQOqA6sDqAOtA64DrwOsA7EDs +gOzA7ADtQO2A7cDtAO5A7oDuwO4A70DvgO/A7wDwQPCA8MDwAPFA8YDxwPEA8kDygPLA8gDzQPOA +88DzAPRA9ID0wPQA9UD1gPXA9QD2QPaA9sD2APdA94D3wPcA+ED4gPjA+AD5QPmA+cD5APpA+oD6 +wPoA+0D7gPvA+wD8QPyA/MD8AP1A/YD9wP0A/kD+gP7A/gD/QP+A/8D/AABAAIAAwAAAAUABgAHA +AQACQAKAAsACAANAA4ADwAMABEAEgATABAAFQAWABcAFAAZABoAGwAYAB0AHgAfABwAIQAiACMAI +AAlACYAJwAkACkAKgArACgALQAuAC8ALAAxADIAMwAwADUANgA3ADQAOQA6ADsAOAA9AD4APwA8A +EEAQgBDAEAARQBGAEcARABJAEoASwBIAE0ATgBPAEwAUQBSAFMAUABVAFYAVwBUAFkAWgBbAFgAX +QBeAF8AXABhAGIAYwBgAGUAZgBnAGQAaQBqAGsAaABtAG4AbwBsAHEAcgBzAHAAdQB2AHcAdAB5A +HoAewB4AH0AfgB/AHwAgQCCAIMAgACFAIYAhwCEAIkAigCLAIgAjQCOAI8AjACRAJIAkwCQAJUAl +gCXAJQAmQCaAJsAmACdAJ4AnwCcAKEAogCjAKAApQCmAKcApACpAKoAqwCoAK0ArgCvAKwAsQCyA +LMAsAC1ALYAtwC0ALkAugC7ALgAvQC+AL8AvADBAMIAwwDAAMUAxgDHAMQAyQDKAMsAyADNAM4Az +wDMANEA0gDTANAA1QDWANcA1ADZANoA2wDYAN0A3gDfANwA4QDiAOMA4ADlAOYA5wDkAOkA6gDrA +OgA7QDuAO8A7ADxAPIA8wDwAPUA9gD3APQA+QD6APsA+AD9AP4A/wD8AQD9Af0C/QP9AP0F/Qb9B +/0E/Qn9Cv0L/Qj9Df0O/Q/9DP0R/RL9E/0Q/RX9Fv0X/RT9Gf0a/Rv9GP0d/R79H/0c/SH9Iv0j/ +SD9Jf0m/Sf9JP0p/Sr9K/0o/S39Lv0v/Sz9Mf0y/TP9MP01/Tb9N/00/Tn9Ov07/Tj9Pf0+/T/9P +P1B/UL9Q/1A/UX9Rv1H/UT9Sf1K/Uv9SP1N/U79T/1M/VH9Uv1T/VD9Vf1W/Vf9VP1Z/Vr9W/1Y/ +V39Xv1f/Vz9Yf1i/WP9YP1l/Wb9Z/1k/Wn9av1r/Wj9bf1u/W/9bP1x/XL9c/1w/XX9dv13/XT9e +f16/Xv9eP19/X79f/18/YH9gv2D/YD9hf2G/Yf9hP2J/Yr9i/2I/Y39jv2P/Yz9kf2S/ZP9kP2V/ +Zb9l/2U/Zn9mv2b/Zj9nf2e/Z/9nP2h/aL9o/2g/aX9pv2n/aT9qf2q/av9qP2t/a79r/2s/bH9s +v2z/bD9tf22/bf9tP25/br9u/24/b39vv2//bz9wf3C/cP9wP3F/cb9x/3E/cn9yv3L/cj9zf3O/ +c/9zP3R/dL90/3Q/dX91v3X/dT92f3a/dv92P3d/d793/3c/eH94v3j/eD95f3m/ef95P3p/er96 +/3o/e397v3v/ez98f3y/fP98P31/fb99/30/fn9+v37/fj9/f3+/fw== diff --git a/tests/TestFiles/channels_multi.sfz b/tests/TestFiles/wavetables.sfz similarity index 100% rename from tests/TestFiles/channels_multi.sfz rename to tests/TestFiles/wavetables.sfz diff --git a/tests/TestFiles/wavetables_embedded.sfz b/tests/TestFiles/wavetables_embedded.sfz new file mode 100644 index 00000000..ae986fc1 --- /dev/null +++ b/tests/TestFiles/wavetables_embedded.sfz @@ -0,0 +1,169 @@ + sample=ramp_wave.wav oscillator=on + sample=ramp_wave.wav oscillator=on oscillator_multi=3 + sample=ramp_wave.wav oscillator=off + sample=ramp_wave.wav oscillator=off oscillator_multi=3 + sample=wavetables/surge.wav + oscillator=auto sample=wavetables/surge.wav + sample=short_non_wavetable.wav + name=ramp_wave.wav base64data= +UklGRiQIAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAIAAABgEGAgYDBgAGBQYGB +gcGBAYJBgoGCwYIBg0GDgYPBgwGEQYSBhMGEAYVBhYGFwYUBhkGGgYbBhgGHQYeBh8GHAYhBiIGI +wYgBiUGJgYnBiQGKQYqBisGKAYtBi4GLwYsBjEGMgYzBjAGNQY2BjcGNAY5BjoGOwY4Bj0GPgY/B +jwGQQZCBkMGQAZFBkYGRwZEBkkGSgZLBkgGTQZOBk8GTAZRBlIGUwZQBlUGVgZXBlQGWQZaBlsGW +AZdBl4GXwZcBmEGYgZjBmAGZQZmBmcGZAZpBmoGawZoBm0GbgZvBmwGcQZyBnMGcAZ1BnYGdwZ0B +nkGegZ7BngGfQZ+Bn8GfAaBBoIGgwaABoUGhgaHBoQGiQaKBosGiAaNBo4GjwaMBpEGkgaTBpAGl +QaWBpcGlAaZBpoGmwaYBp0GngafBpwGoQaiBqMGoAalBqYGpwakBqkGqgarBqgGrQauBq8GrAaxB +rIGswawBrUGtga3BrQGuQa6BrsGuAa9Br4Gvwa8BsEGwgbDBsAGxQbGBscGxAbJBsoGywbIBs0Gz +gbPBswG0QbSBtMG0AbVBtYG1wbUBtkG2gbbBtgG3QbeBt8G3AbhBuIG4wbgBuUG5gbnBuQG6QbqB +usG6AbtBu4G7wbsBvEG8gbzBvAG9Qb2BvcG9Ab5BvoG+wb4Bv0G/gb/BvwDAQMCAwMDAAMFAwYDB +wMEAwkDCgMLAwgDDQMOAw8DDAMRAxIDEwMQAxUDFgMXAxQDGQMaAxsDGAMdAx4DHwMcAyEDIgMjA +yADJQMmAycDJAMpAyoDKwMoAy0DLgMvAywDMQMyAzMDMAM1AzYDNwM0AzkDOgM7AzgDPQM+Az8DP +ANBA0IDQwNAA0UDRgNHA0QDSQNKA0sDSANNA04DTwNMA1EDUgNTA1ADVQNWA1cDVANZA1oDWwNYA +10DXgNfA1wDYQNiA2MDYANlA2YDZwNkA2kDagNrA2gDbQNuA28DbANxA3IDcwNwA3UDdgN3A3QDe +QN6A3sDeAN9A34DfwN8A4EDggODA4ADhQOGA4cDhAOJA4oDiwOIA40DjgOPA4wDkQOSA5MDkAOVA +5YDlwOUA5kDmgObA5gDnQOeA58DnAOhA6IDowOgA6UDpgOnA6QDqQOqA6sDqAOtA64DrwOsA7EDs +gOzA7ADtQO2A7cDtAO5A7oDuwO4A70DvgO/A7wDwQPCA8MDwAPFA8YDxwPEA8kDygPLA8gDzQPOA +88DzAPRA9ID0wPQA9UD1gPXA9QD2QPaA9sD2APdA94D3wPcA+ED4gPjA+AD5QPmA+cD5APpA+oD6 +wPoA+0D7gPvA+wD8QPyA/MD8AP1A/YD9wP0A/kD+gP7A/gD/QP+A/8D/AABAAIAAwAAAAUABgAHA +AQACQAKAAsACAANAA4ADwAMABEAEgATABAAFQAWABcAFAAZABoAGwAYAB0AHgAfABwAIQAiACMAI +AAlACYAJwAkACkAKgArACgALQAuAC8ALAAxADIAMwAwADUANgA3ADQAOQA6ADsAOAA9AD4APwA8A +EEAQgBDAEAARQBGAEcARABJAEoASwBIAE0ATgBPAEwAUQBSAFMAUABVAFYAVwBUAFkAWgBbAFgAX +QBeAF8AXABhAGIAYwBgAGUAZgBnAGQAaQBqAGsAaABtAG4AbwBsAHEAcgBzAHAAdQB2AHcAdAB5A +HoAewB4AH0AfgB/AHwAgQCCAIMAgACFAIYAhwCEAIkAigCLAIgAjQCOAI8AjACRAJIAkwCQAJUAl +gCXAJQAmQCaAJsAmACdAJ4AnwCcAKEAogCjAKAApQCmAKcApACpAKoAqwCoAK0ArgCvAKwAsQCyA +LMAsAC1ALYAtwC0ALkAugC7ALgAvQC+AL8AvADBAMIAwwDAAMUAxgDHAMQAyQDKAMsAyADNAM4Az +wDMANEA0gDTANAA1QDWANcA1ADZANoA2wDYAN0A3gDfANwA4QDiAOMA4ADlAOYA5wDkAOkA6gDrA +OgA7QDuAO8A7ADxAPIA8wDwAPUA9gD3APQA+QD6APsA+AD9AP4A/wD8AQD9Af0C/QP9AP0F/Qb9B +/0E/Qn9Cv0L/Qj9Df0O/Q/9DP0R/RL9E/0Q/RX9Fv0X/RT9Gf0a/Rv9GP0d/R79H/0c/SH9Iv0j/ +SD9Jf0m/Sf9JP0p/Sr9K/0o/S39Lv0v/Sz9Mf0y/TP9MP01/Tb9N/00/Tn9Ov07/Tj9Pf0+/T/9P +P1B/UL9Q/1A/UX9Rv1H/UT9Sf1K/Uv9SP1N/U79T/1M/VH9Uv1T/VD9Vf1W/Vf9VP1Z/Vr9W/1Y/ +V39Xv1f/Vz9Yf1i/WP9YP1l/Wb9Z/1k/Wn9av1r/Wj9bf1u/W/9bP1x/XL9c/1w/XX9dv13/XT9e +f16/Xv9eP19/X79f/18/YH9gv2D/YD9hf2G/Yf9hP2J/Yr9i/2I/Y39jv2P/Yz9kf2S/ZP9kP2V/ +Zb9l/2U/Zn9mv2b/Zj9nf2e/Z/9nP2h/aL9o/2g/aX9pv2n/aT9qf2q/av9qP2t/a79r/2s/bH9s +v2z/bD9tf22/bf9tP25/br9u/24/b39vv2//bz9wf3C/cP9wP3F/cb9x/3E/cn9yv3L/cj9zf3O/ +c/9zP3R/dL90/3Q/dX91v3X/dT92f3a/dv92P3d/d793/3c/eH94v3j/eD95f3m/ef95P3p/er96 +/3o/e397v3v/ez98f3y/fP98P31/fb99/30/fn9+v37/fj9/f3+/fw== + name=wavetables/surge.wav base64data= +UklGRjgEAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAc3JnZQgAAAABAAAAAAEAAGRhdGH8 +AwAAAAAkA0gGagmMDKsPyBLiFfkYCxwaHyMiKCUmKB8rES77MN8zujaMOVY8Fz/OQXpEHEe0ST9M +v04zUZtT9VVCWIJas1zXXutg8WLoZM9mpmhtaiNsyW1eb+JwVHK1cwR1QXZrd4R4iXl8elx7KXzj +fIl9HX6cfgl/YX+mf9h/9X//f/V/2H+mf2F/CX+cfh1+iX3jfCl8XHt8eol5hHhrd0F2BHW1c1Ry +4nBeb8ltI2xtaqZoz2boZPFi62DXXrNcglpCWPVVm1MzUb9OP0y0SRxHekTOQRc/VjyMObo23zP7 +MBEuHysmKCglIyIaHwsc+RjiFcgSqw+MDGoJSAYkAwAA3Py4+Zb2dPNV8DjtHuoH5/Xj5uDd3dja +2tfh1O/RBc8hzEbJdMaqw+nAMr6Gu+S4TLbBs0Gxza5lrAuqvqd+pU2jKaEVnw+dGJsxmVqXk5Xd +kzeSopAej6yNS4z8ir+JlYh8h3eGhIWkhNeDHYN3guOBZIH3gJ+AWoAogAuAAYALgCiAWoCfgPeA +ZIHjgXeCHYPXg6SEhIV3hnyHlYi/ifyKS4ysjR6PopA3kt2Tk5ValzGZGJsPnRWfKaFNo36lvqcL +qmWsza5BscGzTLbkuIa7Mr7pwKrDdMZGySHMBc/v0eHU2tfY2t3d5uD14wfnHuo47VXwdPOW9rj5 +AAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsA +HAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4 +ADkAOgA7ADwAPQA+AD8AQP9A/0H/Qv9D/0T/Rf9G/0f/SP9J/0r/S/9M/03/Tv9P/1D/Uf9S/1P/ +VP9V/1b/V/9Y/1n/Wv9b/1z/Xf9e/1//YP9h/2L/Y/9k/2X/Zv9n/2j/af9q/2v/bP9t/27/b/9w +/3H/cv9z/3T/df92/3f/eP95/3r/e/98/33/fgGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0B +jgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGq +AasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AMAAwQDCAMMAxADFAMYA +xwDIAMkAygDLAMwAzQDOAM8A0ADRANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDj +AOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+ + name=short_non_wavetable.wav base64data= +UklGRtwWAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YbgWAAABAAIAAwAIAPn/DQD3 +/woA+/8FAAIA//8IAP3/BgAAAAQAAwADAAEABgD+/wcA/v8EAP//BgD+/wcA+/8GAP//AgACAAIA +BAABAAAAAgD//wQAAAACAAEAAwACAAIAAQAEAP//BAADAAMAAQAAAAIA/v8IAPr/CwD3/w4A9v8K +APr/BgABAAYA/v8AAP//AgACAAIAAAAAAAMA//8EAPz/CQD8/wUA+v8HAAEABAAAAAEAAQABAAIA +AAACAAAABAABAAEABAD9/wQA/v8AAAMA//8FAPz/CAD7/wUAAQAAAAEABQD//w8ACwAOAAgACAAJ +AA8ADgAVABUAIQAlACcAIgAgACkALQAyADQAOABEADoARwA9AFIATABUAE8AWABSAGAAVQBgAGEA +YgBkAGEAZABtAHsAeQB+AHsAhACHAJEAjACYAJcApQCyALYAwQC/AMsA3QDhAO8A6AD4AAUBDAEV +ARoBJgExAUABPwFXAVMBagFnAXcBhQGUAbIBwAHhAeAB+wH7ARYCFgIkAiwCPAJLAmECewKbAsQC +0QLsAt4C9wIBAyADMAM9A04DXwOBA5QDtAPDA9YD7gMHBBYEMgQ/BGYEgASbBLsEygTnBAIFJwU+ +BWAFdwWNBacFrAXKBd4FCwYoBk4GXgaBBp4GvwbeBvsGHQcwBzwHVQdlB5MHnQeuB7gHwgfZB/AH +DQgiCD4IWwiFCJcIrQi4CNYI/QgJCSYJIAlDCUUJYgltCYEJkQmYCasJrwnICdMJ5wnjCfYJ9QkI +CgYKDwoLChUKCQoICgQKGQoQChUKAQoJCgYKAQrwCfQJ5QnqCdQJ1gnYCc0JxgmrCaYJkAlzCVUJ +OgkjCQ4J7wjjCMgItwibCHYIWgg2CBYI6gfFB5EHfQdQBy0HBwfeBsEGkAZvBjoGJwbyBcQFjwVb +BS4F9wTIBIsEWgQhBN0DnQNPAx8D2QKNAksC/wHJAXUBPgHwALsAZAAUAMv/dv8q/8f+fP4i/tD9 +af0M/bn8XfwP/KH7Tfvj+p/6Qvrm+YT5JfnI+Fv4+/eM9zz30fZt9vP1kfUt9dP0ZvT985DzJ/PI +8mLy8vGL8QrxmPAf8LXvRe/a7mfu/u2H7SDtrOxW7OfrjesW67XqRur16YHpK+mf6Evowudp5+vm +kuYz5s3lbeUL5bDkWOT545rjQePi4pDiGuK+4VThEOG+4G/gGuC9323fIN/T3oreOt7s3abdXt0T +3c3ch9xK3Azc1tud22fbKdvx2q3ae9oy2gfaz9mo2XDZR9kU2e7Yydip2IrYcdhS2DnYJdgc2A7Y +BNj11/HX5Nfd197X5dfh1/LX6df31/XXA9gc2DDYUNhZ2IXYj9jD2NjYANkp2U3Zb9mm2dXZDto+ +2m3ap9rj2iPbXdua2+LbHdxr3K7c9Nw+3Ynd39063pPe7N5D36rfAeBx4MHgNeGL4fHhYuLX4kjj +wuM+5LzkPeWv5SDmouYq57bnPujO6F7p/OmT6jLryutj7Pfsku0t7szuZO8W8LLwWPEQ8svydfMG +9JH0PfX19aH2UPf597P4c/lQ+hz76/uq/GH9EP7Q/o//SAALAdkBpwJmAwwEwgSvBYgGSQfAB0UI +7gjaCdkKvguCDCsN4w21DoQPUhAbEd8RrhJcExkU1hS1FZMWaBcfGOsYnBldGgsbzxuMHEMdEB4N +H/wfpSAmIakhhyJRI/ojcCT1JLMliyZZJxIo1CiTKUcq0ipxKwMsliwzLectmC47L78vhTA4MdIx +ETJjMswyaTPxM240CzWlNTY2nDYRN5s3JziFOME4AzljObg5HTpoOrw6GTuHO/g7VDyEPLQ84Dwl +PW897D1EPnI+cj5+PrQ+7D4cPyg/VD+TP78/qj+DP30/iT+rP+Q/JUAcQNw/qz+oP4Q/Wj8ePxE/ +Bz8nP2Q/Uj+7Pvw9qD3KPeo9qT0APYA8Xzx0PGk8MDzbO087rDoSOsM5pTleOew4XzjfN0836jar +NkU2hTWINOMzjzNbM5UyszH9MLgwhzAWMDAvRC5ZLb4sRSzrK1krpyq/KRcpvih1KPkn3SZ1Jf8j +GiPaIqwi6yGwIEkffR4xHvAdRR1eHGobgRqcGe8YVRibF5gWlxXfFE0UgRNjEggRCBA1D9gOfg4W +DhQNmws6CksJzQhfCJYHawYnBTkEsQNIA3kCXAExAFn/hv6n/cT8DPxQ+4X6g/mb+PT3YPe59sj1 +s/Sz8/PyUfKB8b3w8O8o72Hudu1+7LrrNOvG6g3qO+lp6H7n1uY65v3liuXx5MjjkuKw4TPh8eCe +4EHgf9+u3gLerN043ZjcvNs12wLbwdoh2mHZythC2LfXLtcL1y7XG9dk1nzV8dSr1HnUHtS+01/T +BNOm0iTSndEv0RzRItH+0ITQKtD7z/LP5s/4z8fPI89szvbNzM3bzR/OTc4MzmPNrcyvzG/NCM7r +zXLNCs0PzTPNPM0KzcHMxczfzOfMn8ybzPDMXc1EzdvM2cxSzcHN0s30zfrN182czczNJM5nzn7O +mM7Wzg3PYM+1z/zPENDqz7vP1c810JXQ89BX0cHRHdJP0o3S1dLz0n/Tc9R71W3Vx9Sd1C/VtNXa +1ZzVpNXI1UfWLdfr12rYhdjI2GLZ99le2pXaz9ou21bbrNsB3GzcuNwK3Xrd/N2d3jXfz99a4OXg +UuHD4f/hUeLV4obj5OPu4yPksuQ25Xnlz+V55irns+cJ6IroNun86YDqy+r36hLrbOsO7KfsA+1b +7ejtiu4O75PvDfBm8KDwuPAP8YrxFvKp8iXzm/Pt8yL0jvQo9av1HvaS9gj3h/cZ+L/4IflD+TP5 +m/kd+qP61/oz+7L7YPy4/Oz8V/0J/qz+2f7H/u7+vf+RACABRAE8AU4BtwFSAtACZQPvA0MENQQt +BJ0EGQVqBXoFxwUnBmgGfQbUBoIHQgikCJ8IjgjHCFoJ+gk+CisKIgqMCk8L+wssDBwMAAxCDMQM +Tg2FDY4Ntg0mDpgOxg7YDtcOHw+fDx4QPBAiEC8QSxBWEGgQxRBJEaQRzBHzER0SMBI1EjwSohII +E1ETSxNkE5oTCRRIFHYUghTKFCEVeBVvFUsVFBVTFb8VLxYpFgsWORaTFtAW4hYQF1sXlhepF9AX +AxgUGO8X0BfXFwQYJxhPGDsYQhi3GKwZhBqjGjUa6BkgGm0amxpPGiMaAxo9Gqwa6hrKGn4ashpc +G80bqxtWG0UblhvLG84bxRvEG+cb7Rv5G+Qb8hsHHEocahyXHMkcAh0PHeQclBxlHI0cER2tHQAe +8x2YHXkdkB2wHYkdJR0sHasdFx4THvIdFB5PHmQeHB7nHdYdAh4yHlYeHB7vHcMd8x00HkweTR5X +HoYelR55HlAe/x3PHdcd/x3aHWcdCB1MHaEdth1fHSYdJB0THd0chxyGHIocqByfHL4cwRylHH4c +QBwxHDkcQBwKHK0bLBvRGqkauBrQGqcaURoLGhoaJhonGvYZyBmQGUcZ1BhJGMgXlRemF+QX/Beo +FyMXsxZ2FjwW8RWrFWwVIRXeFJgUcBQeFL4TZhMZE+ESfxIbEq4RXxEfEcYQbBDxD4EPSA8vDwkP +0A5VDgMOlw1UDdsMdgweDOALlAsiC6cKPAq8CR0JqwiXCLEIcAjLByMHqAZVBhcG3gWaBQEFMwSE +AzYDBQPcApYCTQLTAVcB+gC4AGUA3f9S/+7+jf5E/u39ev0B/WP8/fub+0/77Pp++h76zvl0+QP5 +l/g5+Mj3P/en9if20/WN9Vb13PRc9NfzhvNR8zjzHfP18qXyNPLS8WTx3/Bh8Pjvue9s7/3ule4v +7urtqu1+7T7tCu2q7FvsE+zz69TrnetB68XqXuoe6vTpxOl46TXp7ujK6J/odehE6Afo1+ew54nn +auc+5yrnB+e65m3mSOY45vPljeVR5W/lU+Ui5d3kCOU55Sfl0+SX5IrkiOSI5IzkluR65FTkIuQD +5OHjr+Nr41PjYeOb47vj5uPt4+LjvuOo46rju+PW4+bj5+PS47zj2eP84yHk/+P2497jBeQl5EXk +TuR65MHkAuUr5SrlQeVV5W7lZeV75X/lj+WG5b7l+uU35kvmduaL5sLm9eZI54jngudj53znzOcb +6D/oSeiE6Mno/Oga6UPpf+m/6eHpCOoq6lzqd+qR6p/q0+ot65jr1Ovv6wzsYuzB7PfsBu0i7Wft +ue3u7QvuLO517q7u9+4975/v7u808H7wr/C98MbwAfGD8eXxHvI88ory9PJC83bzi/PG8xf0cfSe +9L307vRt9dj1T/Z19qH2p/a19uX2OPek9w34UfiN+NX4Hvlz+ZH51PkC+mf6o/q7+tT6+/pF+4/7 +2Psx/Ij8xvzk/BD9bf3U/Rv+RP5q/qz+6P4Z/0f/fP+4/w8AUwC2APkARwGIAc4BEgJhApsC3wIF +AyMDRANkA7ED6QMgBFMElQTtBCAFbwWzBf0FLQZNBnoGqgbyBh0HVQdyB60H+wdHCIAIeAiZCL4I +EQlpCZQJwQnhCR0KWgqYCsgK6goCCxgLYgvAC/ELAAz/Cx0MUgyDDKQMxgzjDAsNPA1yDZMNqg24 +DeoNKg5wDoQOpg7LDv8OMA9ID2MPeg9/D2sPhA+5DxMQRBBsEIUQlBCPEI4QpxDFEPIQABElESUR +PRE+EVERVhFrEZURxhH0ERASGBItEkASZxJ7Eo4SgBJ+EnMScxJ9EoYSnBKyEtgS5RLqEsgSuhK8 +Er4S2xL1Eg8TCRPvEuIS4xLzEvQS7xLoEtES0RK4EroSlhKQEokSlRKnEqgSqhKwEoESaxJNElkS +dRJbEi4S6hHHEcIRzxHLEdIRvxHGEb8RthGpEZURYRE4EfoQ7RDfENoQyxDDELQQpRBvEFQQHRAV +EAIQ8Q/sD9UPuA93Dz4PEg/5DucOyA7DDrgOnw5vDjoOCQ7bDbYNlw1zDTcN4wy0DLQMmgxoDBMM +3AvPC6oLkQtlCzsLFAvtCsoKmgp0Cl8KUAozCgUK1AmoCX0JSwkZCfcIyQiOCEsIFwj3B/EH1Qe3 +B6EHZQcqB+MGvAakBoYGRQYKBs4FlQViBRwFDAXpBOMElQRPBAgE+gPsA+QDkgNgAyYDKwMdA/UC +tQJfAiYC7QHXAa0BdwE3AQIB7wDSAKEAYwAyABsA/v++/4r/Zv9G/x3/4P6o/mr+Qv4a/gr+3v3i +/cv9vP2A/UP9Ff36/OT8ufyM/E38LvwV/AP85/ut+3z7Tvsq+xD76PrI+oT6Zfo6+kD6LPoO+tv5 +tvmK+Wj5Kvka+fX46fi3+Jv4iPh9+FT4MfgE+Pv31Pem93n3V/dM90D3LvcD9+r23fbg9sX2nvZy +9mf2TfYu9gT23/W99aX1ffVy9Uj1T/U+9UD1LfUK9f/07PTh9Mz0ofR89GH0WvRR9Er0MPQb9Pzz +6vPb89bz1/PF88LzuPO084zzb/NT81bzTfM28xXzGPMl8zDzNPMk8yfzCPPy8sryr/Kw8r3y3fLn +8uzy2fK78p/yfPJj8nfyhvKV8n7yafJz8nDygvJp8nTydfJ98mvyX/Jq8nryb/JP8j/yQ/JP8kfy +PPI88kHySvJO8kbyP/I38lrybvKE8oTyh/Ku8sby0/LJ8r3yzfLc8u3y9fL88v/yBfP28v7y8fIQ +8yDzQPNc817zbfNw83zzfvOi87jz4vPS883z0/Pu8yL0OvRR9Ev0YPRp9Hz0gvSk9MD03PTr9Af1 +EPUn9Sz1RvVf9X/1lfWm9cb19/Uz9lD2XPZU9nT2i/a09sH25vb89hL3Jvc/92z3ivet97r34vcA ++Cj4UPiE+Lz47/gV+S/5P/lN+Vz5e/m2+eH5Ffoi+kL6XPqG+rv66foq+z37VPtV+5L7wPv6+wv8 +I/ws/D78YPyV/M/8+/wr/Uf9a/18/ZP9uP3z/SD+Rv5q/pP+vf7i/hD/Of9h/5H/w//n//n/HQBe +AJ4AsADIANwAJwFRAYcBnwG0AcwBAAJHAoMCsALGAv8CMQNkA4YDqwPNA/QDAgQkBEIEcwSZBMoE +8gQuBVAFfgV8BZcFrAXoBRIGSgZ8BrAG2AbrBgwHFgc7B2QHiwe5B9IHBAgUCEAISwhtCHYIiQif +CNIICAlCCVAJdAmRCdIJ/wkbCiEKMQpKCmAKgQqPCqAKqgrNCuoKFws4C1QLgQuOC60LyQvoCwkM +CgwWDB0MNQxNDGMMdQyHDJ4Mpgy0DMEM1gzzDPcMDQ0YDSsNQw1MDWQNZw2IDYUNkQ1+DZANnw24 +DbUNqQ2dDZsNuA3hDeUN5g3QDecN6Q33Dd0N6A3jDeIN6A3cDeYN5g3xDfEN8g3tDesN7Q3bDdcN +xg3DDbcNrg2gDZwNmA2NDZYNmw2SDYQNXQ1FDT0NPw1FDTMNGw0IDf8M3gzKDKUMnwyTDI0MeQx1 +DGAMRgwuDBQM/gvoC7oLqQuTC5ALdgtMCyoLIwsRCwALxgqLCnEKSwpHChwKCgrmCcYJqwl5CV8J +GAkECdUIzQilCIcIZwhECBcI7wfHB7MHiQdNBwsHygaxBocGgAZWBkgGDQbmBbMFjQVbBTcFCQXa +BLEEfARcBCgEBATeA58DdgMuAxMD4QLPAqICfgJQAigCBALSAaIBXAEyAfAA2gCOAFkACADt/9H/ +u/+F/1b/H/8P/9L+mf5T/hj++/3R/a79fP1Z/Sn9/fzF/Iz8Y/wt/Av82fu3+437b/s/+xf78Pq7 ++oz6WPoi+vn5xPmw+Y/5fflL+R/54/jJ+KX4kPhu+EL4Ifj+99b3sPd291j3RPc49yz3CPfk9sT2 +rfaX9nz2Q/YP9t/1w/W79an1mPV/9XX1ZvVX9TT1GPX29Nr0tfSa9HT0WfQ49Dn0NPQ99Dn0KfQl +9B30G/QQ9PDz1PPH87TzyvO887nzl/OR85Lzo/Oe85Xzm/OW85/zjPOT85bzpvOe867zpPO587Lz +wPPM89/z8vPx8+vz7PPu8wn0EvQe9CH0M/RQ9FX0Y/Re9Hj0ivSZ9K70s/TC9M703/T29AD1CvUk +9T/1a/WE9Z71q/XG9d/17vUM9ib2QvZW9mn2avaF9p/2zPb59h33PfdP93T3mPew98r30vfy9xv4 +R/hy+In4pfi0+N347PgU+Tf5WvmG+aj5y/ni+QT6HvpR+mz6lfqx+t36DPs3+1X7bPuF+577xPva ++wf8Gvwx/E78a/ym/Mn8/vwE/Sz9R/13/aL9zf3t/QH+Gv4c/jX+S/58/qr+zf7w/gT/Mv9J/2n/ +gf+j/8T/4f/9/xAAKQBAAFkAhQCqAM0A4AD2APwAEgEgAUABYQGHAZcBvwG7Ad8B9wEYAkACTQJu +AnUCiwKSArQCxgLcAuEC4AL4AgYDJAMzA08DagNyA3cDVgNsA2oDkwOsA8AD4QPoA/cD/wMFBAkE +FgQkBDsERQRLBEQEOwRABDwEPAQ0BDYEQARJBGIEbAR7BHAEagRnBGEEbARTBFYERgRHBFEEXARa +BFQESQRFBGcEZQR3BFwEUwRJBFAEWARVBEwERAQ/BEAELwQxBCEELAQnBCYEMAQiBAkE9gPeA+QD +1APCA7YDrQO+A7MDwQOrA64DpgOSA3wDYQNXA2cDbwNuA1UDPwMdAwoD8QLpAt8C3gLgAs8CzwK3 +ArgCsgK5Ap8ClAKBAmcCYAJIAlICWgJeAlsCRwIwAiYCIgInAiICHAIVAgIC8wHdAc0BxwHAAcwB +wgHMAbMBpwGjAaQBqQGfAYUBhAFzAXwBeAF1AXkBcAF+AYEBhgF4AXMBYgFjAQ== diff --git a/tests/WavetablesT.cpp b/tests/WavetablesT.cpp index 0c6fb88c..0f8ca5ee 100644 --- a/tests/WavetablesT.cpp +++ b/tests/WavetablesT.cpp @@ -8,6 +8,8 @@ #include "sfizz/FileMetadata.h" #include "sfizz/MathHelpers.h" #include "catch2/catch.hpp" +#include +#include #include #include @@ -51,10 +53,10 @@ TEST_CASE("[Wavetables] Frequency ranges") TEST_CASE("[Wavetables] Wavetable sound files: Surge") { - sfz::FileMetadataReader reader; + sfz::FileMetadataReader reader { "tests/TestFiles/wavetables/surge.wav" }; sfz::WavetableInfo wt; - REQUIRE(reader.open("tests/TestFiles/wavetables/surge.wav")); + REQUIRE(reader.open()); REQUIRE(reader.extractWavetableInfo(wt)); REQUIRE(wt.tableSize == 256); @@ -62,10 +64,10 @@ TEST_CASE("[Wavetables] Wavetable sound files: Surge") TEST_CASE("[Wavetables] Wavetable sound files: Clm") { - sfz::FileMetadataReader reader; + sfz::FileMetadataReader reader { "tests/TestFiles/wavetables/clm.wav" }; sfz::WavetableInfo wt; - REQUIRE(reader.open("tests/TestFiles/wavetables/clm.wav")); + REQUIRE(reader.open()); REQUIRE(reader.extractWavetableInfo(wt)); REQUIRE(wt.tableSize == 256); @@ -73,9 +75,57 @@ TEST_CASE("[Wavetables] Wavetable sound files: Clm") TEST_CASE("[Wavetables] Non-wavetable sound files") { - sfz::FileMetadataReader reader; + sfz::FileMetadataReader reader { "tests/TestFiles/snare.wav" }; sfz::WavetableInfo wt; - REQUIRE(reader.open("tests/TestFiles/snare.wav")); + REQUIRE(reader.open()); + REQUIRE(!reader.extractWavetableInfo(wt)); +} + +std::vector readWholeFile(const fs::path& path) +{ + std::ifstream file(path, std::ios::binary | std::ios::ate); + std::streamsize size = file.tellg(); + file.seekg(0, std::ios::beg); + + std::vector buffer(size); + if (!file.read(buffer.data(), size)) + buffer.clear(); + + return buffer; + +} + +TEST_CASE("[Wavetables] Wavetable sound files: Surge, from memory") +{ + auto file = readWholeFile("tests/TestFiles/wavetables/surge.wav"); + sfz::MemoryMetadataReader reader { file.data(), file.size() }; + sfz::WavetableInfo wt; + + REQUIRE(reader.open()); + REQUIRE(reader.extractWavetableInfo(wt)); + + REQUIRE(wt.tableSize == 256); +} + +TEST_CASE("[Wavetables] Wavetable sound files: Clm, from memory") +{ + auto file = readWholeFile("tests/TestFiles/wavetables/clm.wav"); + sfz::MemoryMetadataReader reader { file.data(), file.size() }; + sfz::WavetableInfo wt; + + REQUIRE(reader.open()); + REQUIRE(reader.extractWavetableInfo(wt)); + + REQUIRE(wt.tableSize == 256); +} + +TEST_CASE("[Wavetables] Non-wavetable sound files, from memory") +{ + auto file = readWholeFile("tests/TestFiles/snare.wav"); + sfz::MemoryMetadataReader reader { file.data(), file.size() }; + sfz::WavetableInfo wt; + + REQUIRE(reader.open()); REQUIRE(!reader.extractWavetableInfo(wt)); }