From e6b84280aa19a7bdc08f51ba07358fad122d22a4 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sat, 11 Mar 2023 18:55:32 +0900 Subject: [PATCH 001/126] Add Seta 2 Bankswitch support --- src/engine/platform/x1_010.cpp | 9 +++++++-- src/gui/sysConf.cpp | 10 ++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index 091da9f1a..4c6a45165 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -931,6 +931,10 @@ void DivPlatformX1_010::setFlags(const DivConfig& flags) { chipClock=50000000.0/3.0; break; // Other clock is used + case 2: // NTSC clock * 4 + // (see https://github.com/mamedev/mame/blob/master/src/mame/taito/champbwl.cpp#L620) + chipClock=COLOR_NTSC*4.0; + break; default: chipClock=16000000; break; @@ -938,6 +942,7 @@ void DivPlatformX1_010::setFlags(const DivConfig& flags) { CHECK_CUSTOM_CLOCK; rate=chipClock/512; stereo=flags.getBool("stereo",false); + isBanked=flags.getBool("isBanked",false); for (int i=0; i<16; i++) { oscBuf[i]->rate=rate; } @@ -970,7 +975,7 @@ bool DivPlatformX1_010::isSampleLoaded(int index, int sample) { } void DivPlatformX1_010::renderSamples(int sysID) { - memset(sampleMem,0,getSampleMemCapacity()); + memset(sampleMem,0,16777216); memset(sampleOffX1,0,256*sizeof(unsigned int)); memset(sampleLoaded,0,256*sizeof(bool)); @@ -1023,7 +1028,7 @@ int DivPlatformX1_010::init(DivEngine* p, int channels, int sugRate, const DivCo oscBuf[i]=new DivDispatchOscBuffer; } setFlags(flags); - sampleMem=new unsigned char[getSampleMemCapacity()]; + sampleMem=new unsigned char[16777216]; sampleMemLen=0; x1_010.reset(); reset(); diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index 7bdb61de8..6084ab1f3 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -845,6 +845,7 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo case DIV_SYSTEM_X1_010: { int clockSel=flags.getInt("clockSel",0); bool stereo=flags.getBool("stereo",false); + bool isBanked=flags.getBool("isBanked",false); ImGui::Text("Clock rate:"); if (ImGui::RadioButton("16MHz (Seta 1)",clockSel==0)) { @@ -855,15 +856,24 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo clockSel=1; altered=true; } + if (ImGui::RadioButton("14.32MHz (NTSC)",clockSel==2)) { + clockSel=2; + altered=true; + } if (ImGui::Checkbox("Stereo",&stereo)) { altered=true; } + if (ImGui::Checkbox("Bankswitched (Seta 2)",&isBanked)) { + altered=true; + } + if (altered) { e->lockSave([&]() { flags.set("clockSel",clockSel); flags.set("stereo",stereo); + flags.set("isBanked",isBanked); }); } break; From c8c2704a99c605c63b9db23368dbac50862500d2 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 12 Mar 2023 11:56:19 +0900 Subject: [PATCH 002/126] Revert unnecessary change --- src/engine/platform/x1_010.cpp | 4 ---- src/gui/sysConf.cpp | 4 ---- 2 files changed, 8 deletions(-) diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index 4c6a45165..8824271ed 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -931,10 +931,6 @@ void DivPlatformX1_010::setFlags(const DivConfig& flags) { chipClock=50000000.0/3.0; break; // Other clock is used - case 2: // NTSC clock * 4 - // (see https://github.com/mamedev/mame/blob/master/src/mame/taito/champbwl.cpp#L620) - chipClock=COLOR_NTSC*4.0; - break; default: chipClock=16000000; break; diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index 6084ab1f3..a2e927cbe 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -856,10 +856,6 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo clockSel=1; altered=true; } - if (ImGui::RadioButton("14.32MHz (NTSC)",clockSel==2)) { - clockSel=2; - altered=true; - } if (ImGui::Checkbox("Stereo",&stereo)) { altered=true; From 90fa977d2324bc54cf3bb1c431e60273ddfdb043 Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 27 Mar 2023 15:07:35 +0900 Subject: [PATCH 003/126] Fix seta2 preset --- src/gui/presets.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 3354914c1..1ab18819e 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -2019,7 +2019,10 @@ void FurnaceGUI::initSystemPresets() { ); ENTRY( "Seta 2", { - CH(DIV_SYSTEM_X1_010, 1.0f, 0, "clockSel=1") + CH(DIV_SYSTEM_X1_010, 1.0f, 0, + "clockSel=1\n" + "isBanked=true\n" + ) } ); ENTRY( From 2a43272c66c6dcabbf6bad80454720297ec3ec7d Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 27 Mar 2023 15:08:37 +0900 Subject: [PATCH 004/126] Spacing --- src/gui/presets.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 1ab18819e..7c2cfc50f 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -2020,8 +2020,8 @@ void FurnaceGUI::initSystemPresets() { ENTRY( "Seta 2", { CH(DIV_SYSTEM_X1_010, 1.0f, 0, - "clockSel=1\n" - "isBanked=true\n" + "clockSel=1\n" + "isBanked=true\n" ) } ); From 36f542972cfc76e7eed07d15293289e94447e9fa Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 20 Apr 2023 08:54:40 +0900 Subject: [PATCH 005/126] Fix possible issue when bank flag is changed --- src/engine/platform/x1_010.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index 4fce8d288..79f592cea 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -942,7 +942,11 @@ void DivPlatformX1_010::setFlags(const DivConfig& flags) { CHECK_CUSTOM_CLOCK; rate=chipClock/512; stereo=flags.getBool("stereo",false); + bool prevBanked=isBanked; isBanked=flags.getBool("isBanked",false); + if (prevBanked|=isBanked) { + parent->renderSamples(); + } for (int i=0; i<16; i++) { oscBuf[i]->rate=rate; } From 213d6135348f979c9e267c1d4f44f83bdde1db0c Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 20 Apr 2023 10:02:29 +0900 Subject: [PATCH 006/126] Fix regression --- src/engine/platform/x1_010.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index 79f592cea..deb294f65 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -944,7 +944,7 @@ void DivPlatformX1_010::setFlags(const DivConfig& flags) { stereo=flags.getBool("stereo",false); bool prevBanked=isBanked; isBanked=flags.getBool("isBanked",false); - if (prevBanked|=isBanked) { + if (prevBanked!=isBanked) { parent->renderSamples(); } for (int i=0; i<16; i++) { From e0dc22a6f1b1fbc040f0b5100d7cf0bcca946d34 Mon Sep 17 00:00:00 2001 From: cam900 Date: Wed, 26 Jul 2023 19:39:13 +0900 Subject: [PATCH 007/126] Remove unnecessary functions --- src/engine/platform/x1_010.cpp | 4 ---- src/engine/platform/x1_010.h | 1 - 2 files changed, 5 deletions(-) diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index a0512f062..ec0f5e898 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -1018,10 +1018,6 @@ void DivPlatformX1_010::renderSamples(int sysID) { sampleMemLen=memPos+256; } -void DivPlatformX1_010::setBanked(bool banked) { - isBanked=banked; -} - int DivPlatformX1_010::init(DivEngine* p, int channels, int sugRate, const DivConfig& flags) { parent=p; dumpWrites=false; diff --git a/src/engine/platform/x1_010.h b/src/engine/platform/x1_010.h index a3af7b291..25e3e6c14 100644 --- a/src/engine/platform/x1_010.h +++ b/src/engine/platform/x1_010.h @@ -152,7 +152,6 @@ class DivPlatformX1_010: public DivDispatch, public vgsound_emu_mem_intf { bool isSampleLoaded(int index, int sample); void renderSamples(int chipID); const char** getRegisterSheet(); - void setBanked(bool banked); int init(DivEngine* parent, int channels, int sugRate, const DivConfig& flags); void quit(); DivPlatformX1_010(): From 8ad7a5bf7d58ca5de6842c81d1d25124644b4bda Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 27 Jul 2023 21:10:45 +0900 Subject: [PATCH 008/126] Remove global rendersamples --- src/engine/platform/x1_010.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/engine/platform/x1_010.cpp b/src/engine/platform/x1_010.cpp index ec0f5e898..85aee3571 100644 --- a/src/engine/platform/x1_010.cpp +++ b/src/engine/platform/x1_010.cpp @@ -942,11 +942,7 @@ void DivPlatformX1_010::setFlags(const DivConfig& flags) { CHECK_CUSTOM_CLOCK; rate=chipClock/512; stereo=flags.getBool("stereo",false); - bool prevBanked=isBanked; isBanked=flags.getBool("isBanked",false); - if (prevBanked!=isBanked) { - parent->renderSamples(); - } for (int i=0; i<16; i++) { oscBuf[i]->rate=rate; } From cae3fa43b237631b22d3897d63894ef368db679b Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Tue, 22 Aug 2023 15:15:49 -0700 Subject: [PATCH 009/126] Move chanOsc "Center waveform" option to next line. --- src/gui/chanOsc.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index aa7c91b5b..623eb39fe 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -128,7 +128,7 @@ void FurnaceGUI::drawChanOsc() { bool centerSettingReset=false; ImDrawList* dl=ImGui::GetWindowDrawList(); if (chanOscOptions) { - if (ImGui::BeginTable("ChanOscSettings",3)) { + if (ImGui::BeginTable("ChanOscSettings",2)) { ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); @@ -149,11 +149,6 @@ void FurnaceGUI::drawChanOsc() { if (chanOscWindowSize>50.0f) chanOscWindowSize=50.0f; } - ImGui::TableNextColumn(); - if (ImGui::Checkbox("Center waveform",&chanOscWaveCorr)) { - centerSettingReset=true; - } - ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Automatic columns"); @@ -168,6 +163,11 @@ void FurnaceGUI::drawChanOsc() { } ImGui::EndCombo(); } + + ImGui::TableNextColumn(); + if (ImGui::Checkbox("Center waveform",&chanOscWaveCorr)) { + centerSettingReset=true; + } ImGui::EndTable(); } From 98a95e83c6494267851d08685761c29a06078b34 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Thu, 24 Aug 2023 23:14:06 -0700 Subject: [PATCH 010/126] Assorted documentation upkeep. --- doc/1-intro/concepts.md | 14 +++++++------- doc/2-interface/asset-list.md | 14 ++++++++++++-- doc/2-interface/menu-bar.md | 18 ++++++++++-------- doc/6-sample/README.md | 5 +++-- doc/8-advanced/comments.md | 2 +- 5 files changed, 33 insertions(+), 20 deletions(-) diff --git a/doc/1-intro/concepts.md b/doc/1-intro/concepts.md index 130e2ae83..b91797179 100644 --- a/doc/1-intro/concepts.md +++ b/doc/1-intro/concepts.md @@ -15,22 +15,22 @@ The **[pattern view](../3-pattern/README.md)** is like a spreadsheet that displa ## structure The **order list** is a smaller spreadsheet showing the overall song structure. -- A song is made up of a list of **orders**. -- An **order** is a set of numbered **patterns** used for each channel. +- A song is made up of a list of orders. +- An **order** is a set of numbered patterns used for each channel. - Each channel has its own unique list of patterns. -- Each pattern contains note and effect data for that channel only. +- Each **pattern** contains note and effect data for that channel only. - Patterns may be used multiple times in the order list. Changing a pattern's data in one order will affect the same pattern used in other orders. ## time -- Each pattern is made of the same number of **rows** as seen in the tracker view. -- During playback, Each row lasts a number of **ticks** determined by its **speed** value. -- A tick is the smallest measure of time to which all note, effect, and macro times are quantized. +- Each pattern is made of the same number of rows as seen in the tracker view. +- During playback, each **row** lasts a number of ticks determined by its **speed** value. +- A **tick** is the smallest measure of time to which all note, effect, and macro times are quantized. ## sound Different chips have different capabilities. Even within the same chip, each channel may have its own ways of making sound. - Some channels use one or more waveform **generators** (sine, square, noise...) to build up a sound. - Of special note are **[FM (frequency modulation)](../4-instrument/fm.md)** channels, which use a number of generators called **operators** that can interact to make very complex sounds. -- Some channels use **[samples](../6-sample/README.md)** - recordings of sounds, often with defined loop points to allow a note to sustain. +- Some channels use **[samples](../6-sample/README.md)** which are recordings of sounds, often with defined loop points to allow a note to sustain. - Some channels use **[wavetables](../5-wave/README.md)**, which are like very short samples of fixed length that automatically loop. \ No newline at end of file diff --git a/doc/2-interface/asset-list.md b/doc/2-interface/asset-list.md index 836d9b694..157c934d0 100644 --- a/doc/2-interface/asset-list.md +++ b/doc/2-interface/asset-list.md @@ -3,10 +3,20 @@ ![instruments window](instruments.png) Buttons from left to right: -- **Add**: Creates a new, default instrument. +- **Add**: pops up a menu to select which type of instrument to add. + - If the "Display instrument type menu when adding instrument" setting is disabled, this skips the menu and creates an instrument according to the chip under the cursor. + - Right-clicking always brings up the menu. - **Duplicate**: Duplicates the currently selected instrument. - **Open**: Brings up a file dialog to load a file as a new instrument at the end of the list. -- **Save**: Brings up a file dialog to save the currently selected instrument. +- **Save**: Brings up a file dialog to save the currently selected asset. + - Instruments are saved as Furnace instrument (.fui) files. + - Wavetables are saved as Furnace wavetable (.fuw) files. + - Samples are saved as standard wave (.wav) files. + - Right-clicking brings up a menu with the applicable items from this list: + - **save instrument as .dmp...**: saves the selected instrument in DefleMask format. + - **save wavetable as .dmw...**: saves the selected wavetable in DefleMask format. + - **save raw wavetable...**: saves the selected wavetable as raw data. + - **save raw sample...**: saves the selected sample as raw data. - **Toggle folders/standard view**: Enables (and disables) folder view, explained below. - **Move up**: Moves the currently selected instrument up in the list. Pattern data will automatically be adjusted to match. - **Move down**: Same, but downward. diff --git a/doc/2-interface/menu-bar.md b/doc/2-interface/menu-bar.md index fee8f7c57..1ef63fb96 100644 --- a/doc/2-interface/menu-bar.md +++ b/doc/2-interface/menu-bar.md @@ -6,10 +6,10 @@ items in _italics_ don't appear in basic mode and are only available in advanced # file -- **new...**: create a new song. +- **new...**: creates a new song. - **open...**: opens the file picker, allowing you to select a song to open. - **open recent**: contains a list of the songs you've opened before. - - **clear history**: this option erases the file history. + - **clear history**: erases the file history. - **save**: saves the current song. - opens the file picker if this is a new song, or a backup. @@ -33,9 +33,9 @@ items in _italics_ don't appear in basic mode and are only available in advanced - Neo Geo CD (DefleMask 1.0+) - only use this option if you really need it. there are features which DefleMask does not support, like some effects and FM macros, so these will be lost. -- **export audio...**: export your song to a .wav file. see next section for more details. -- **export VGM...**: export your song to a .vgm file. see next section for more details. -- **export ZSM...**: export your song to a .zsm file. see next section for more details. +- **export audio...**: opens the file picker, allowing you to export your song to a .wav file. see next section for more details. +- **export VGM...**: opens the file picker, allowing you to export your song to a .vgm file. see next section for more details. +- **export ZSM...**: opens the file picker, allowing you to export your song to a .zsm file. see next section for more details. - only available when there's a YM2151 and/or VERA. - **export command stream...**: export song data to a command stream file. see next section for more details. - this option is for developers. @@ -48,7 +48,7 @@ items in _italics_ don't appear in basic mode and are only available in advanced - _**remove chip...**_: remove a chip. - **Preserve channel positions**: same thing as above. -- **restore backup**: restore a previously saved backup. +- **restore backup**: restores a previously saved backup. - Furnace keeps up to 5 backups of a song. - the backup directory is located in: - Windows: `%USERPROFILE%\AppData\Roaming\furnace\backups` @@ -87,8 +87,8 @@ the following settings exist: - other versions may not support all chips. - use this option if you need to export for a quirky player or parser. - for example, RYMCast is picky with format versions. if you're going to use this player, select 1.60. -- **loop**: writes loop. if disabled, the resulting file won't loop. -- **loop trail**: this option allows you to set how much of the song is written after it loops. +- **loop**: includes loop information. if disabled, the resulting file won't loop. +- **loop trail**: sets how much of the song is written after it loops. - the reason this exists is to work around a VGM format limitation in where post-loop state isn't recorded at all. - this may change the song length as it appears on a player. - **auto-detect**: detect how much to write automatically. @@ -137,6 +137,8 @@ it's not really useful, unless you're a developer and want to use a command stre # edit +- **...**: does nothing except prevent accidental clicks on later menu items. + - **undo**: reverts the last action. - **redo**: repeats what you undid previously. diff --git a/doc/6-sample/README.md b/doc/6-sample/README.md index 9f5a6cf86..bd5767fcb 100644 --- a/doc/6-sample/README.md +++ b/doc/6-sample/README.md @@ -46,7 +46,7 @@ if you need to use more samples, you may change the sample bank using effect `EB due to limitations in some of those sound chips, some restrictions exist: -- Amiga: maximum frequency is 31,469Hz, but anything over 28,867 will sound glitchy on hardware. sample lengths and loop will be set to an even number, and your sample can't be longer than 131070. +- Amiga: maximum frequency is 31469Hz, but anything over 28867 will sound glitchy on hardware. sample lengths and loop will be set to an even number, and your sample can't be longer than 131070. - NES: if on DPCM mode, only a limited selection of frequencies is available, and loop position isn't supported (only entire sample). - SegaPCM: your sample can't be longer than 65535, and the maximum frequency is 31.25KHz. - QSound: your sample can't be longer than 65535, and the loop length shall not be greater than 32767. @@ -79,7 +79,8 @@ in there, you can modify certain data pertaining to your sample, such as the: - **Name**: name in sample list. - button to left of **Info**: collapses and expands the info bar. - **Type**: sample format. only 8-bit and 16-bit PCM samples are editable. selecting a format converts the sample data. -- **BRR emphasis**: boosts higher frequencies to compensate for the SNES low-pass filter. should not be enabled for BRR-type samples. +- **BRR emphasis**: boosts higher frequencies to compensate for the SNES low-pass filter. should not be enabled for BRR-type samples. only appears when applicable. +- **8-bit dither**: applies dithering to samples meant to play back at 8-bit resolution. only appears when applicable. - **Rate**: switches to normal rate values. - **Compat Rate**: switches to DefleMask-compatible rate values for sample mapping. diff --git a/doc/8-advanced/comments.md b/doc/8-advanced/comments.md index b36d65ab8..3fc14d590 100644 --- a/doc/8-advanced/comments.md +++ b/doc/8-advanced/comments.md @@ -2,7 +2,7 @@ ![comments dialog](comments.png) -Comments, credits, or any arbitrary text may be entered here. +Comments, credits, or any arbitrary text may be entered here.\ It has no effect on the song. There is no word wrap; long lines must be broken manually with the Enter key. \ No newline at end of file From f4c778d90ec857755fa145e579c21e6a716b0379 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Thu, 24 Aug 2023 23:33:32 -0700 Subject: [PATCH 011/126] A few more small edits. Right-clicking every widget to see what happens.... --- doc/5-wave/README.md | 7 +++++-- doc/6-sample/README.md | 4 ++++ doc/8-advanced/piano.md | 5 +++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/doc/5-wave/README.md b/doc/5-wave/README.md index 7c586ef78..8b0db521a 100644 --- a/doc/5-wave/README.md +++ b/doc/5-wave/README.md @@ -27,8 +27,11 @@ Amiga | ≤256 | 256 | controls across the top line: - waveform number. the `-` and `+` buttons step through the list. -- open. -- save. +- open. opens a file selector to choose the file to open. +- save. opens a file selector to choose the file to save to. + - right-clicking brings up a menu: + - **save as .dmw...**: saves the selected wavetable in DefleMask format. + - **save raw...**: saves the selected wavetable as raw data. - **Steps**: view waveform as discrete blocks. - **Lines**: view waveform as a continuous line. - **Width**: length of the waveform data. maximum is 256. diff --git a/doc/6-sample/README.md b/doc/6-sample/README.md index bd5767fcb..ccd663c1f 100644 --- a/doc/6-sample/README.md +++ b/doc/6-sample/README.md @@ -75,7 +75,11 @@ in there, you can modify certain data pertaining to your sample, such as the: - top-left drop-down box: sample slot. - **Open**: replaces current sample. + - Right-clicking brings up a menu: + - **import raw...**: brings up a file selector, then presents a dialog to choose the format of the selected file. - **Save**: saves current sample to disk. + - Right-clicking brings up a menu: + - **save raw...**: brings up a file selector, then saves the sample as raw data. - **Name**: name in sample list. - button to left of **Info**: collapses and expands the info bar. - **Type**: sample format. only 8-bit and 16-bit PCM samples are editable. selecting a format converts the sample data. diff --git a/doc/8-advanced/piano.md b/doc/8-advanced/piano.md index 6217f8473..8a135f6fd 100644 --- a/doc/8-advanced/piano.md +++ b/doc/8-advanced/piano.md @@ -29,10 +29,11 @@ Key layout: - **Standard**: Black keys are 2/3 length. - **Continuous**: Black keys are full length. -Value input pad: (document this) +Value input pad: applies to mobile UI only. - **Disabled** - **Replace piano** - **Split (automatic)** - **Split (always visible)** -**Share play/edit offset/range**: (document this) +**Share play/edit offset/range**: If disabled, the piano will keep different octave and range values for playback and non-playback states. +**Read-only (can't input notes): Prevents note entry. \ No newline at end of file From a832adeac5ac52eb08c58986bb154d5f84e3e091 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 13:35:26 +0400 Subject: [PATCH 012/126] chanosc gradient point remove is red --- src/gui/chanOsc.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 5ca97f479..58f15d1f5 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -282,10 +282,12 @@ void FurnaceGUI::drawChanOsc() { updateChanOscGradTex=true; } + pushDestColor(); if (ImGui::Button("Remove")) { removePoint=index; ImGui::CloseCurrentPopup(); } + popDestColor(); ImGui::EndPopup(); } From 89921b1ff3524d6449dd4647f82824e2dc03eefc Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 13:53:01 +0400 Subject: [PATCH 013/126] improve inital sys steeings --- src/gui/settings.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 4c70b5f26..60d1b4d92 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -576,7 +576,7 @@ void FurnaceGUI::drawSettings() { float vol=fabs(sysVol); ImGui::PushID(i); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize("Invert").x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize("Invert").x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x*2.0); if (ImGui::BeginCombo("##System",getSystemName(sysID))) { for (int j=0; availableSystems[j]; j++) { if (ImGui::Selectable(getSystemName((DivSystem)availableSystems[j]),sysID==availableSystems[j])) { @@ -595,11 +595,13 @@ void FurnaceGUI::drawSettings() { } ImGui::SameLine(); //ImGui::BeginDisabled(settings.initialSys.size()<=4); + pushDestColor(); if (ImGui::Button(ICON_FA_MINUS "##InitSysRemove")) { doRemove=i; } + popDestColor(); //ImGui::EndDisabled(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x*2.0); if (CWSliderFloat("Volume",&vol,0.0f,3.0f)) { if (doInvert) { if (vol<0.0001) vol=0.0001; @@ -609,13 +611,13 @@ void FurnaceGUI::drawSettings() { sysVol=doInvert?-vol:vol; settings.initialSys.set(fmt::sprintf("vol%d",i),(float)sysVol); } rightClickable - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x*2.0); if (CWSliderFloat("Panning",&sysPan,-1.0f,1.0f)) { if (sysPan<-1.0f) sysPan=-1.0f; if (sysPan>1.0f) sysPan=1.0f; settings.initialSys.set(fmt::sprintf("pan%d",i),(float)sysPan); } rightClickable - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x*2.0); if (CWSliderFloat("Front/Rear",&sysPanFR,-1.0f,1.0f)) { if (sysPanFR<-1.0f) sysPanFR=-1.0f; if (sysPanFR>1.0f) sysPanFR=1.0f; From b993d4b58dc42a4dcb510239adc5b1c879cea672 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 14:01:39 +0400 Subject: [PATCH 014/126] improve audio settings --- src/gui/settings.cpp | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 60d1b4d92..2b34596fb 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -720,10 +720,15 @@ void FurnaceGUI::drawSettings() { CONFIG_SECTION("Audio") { // SUBSECTION OUTPUT CONFIG_SUBSECTION("Output"); + if (ImGui::BeginTable("##Output",2)) { + ImGui::TableSetupColumn("##Label",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("##Combo",ImGuiTableColumnFlags_WidthStretch); #ifdef HAVE_JACK + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Backend"); - ImGui::SameLine(); + ImGui::TableNextColumn(); int prevAudioEngine=settings.audioEngine; if (ImGui::Combo("##Backend",&settings.audioEngine,audioBackends,2)) { if (settings.audioEngine!=prevAudioEngine) { @@ -732,10 +737,12 @@ void FurnaceGUI::drawSettings() { } #endif + ImGui::TableNextRow(); + ImGui::TableNextColumn(); if (settings.audioEngine==DIV_AUDIO_SDL) { ImGui::AlignTextToFramePadding(); ImGui::Text("Driver"); - ImGui::SameLine(); + ImGui::TableNextColumn(); if (ImGui::BeginCombo("##SDLADriver",settings.sdlAudioDriver.empty()?"Automatic":settings.sdlAudioDriver.c_str())) { if (ImGui::Selectable("Automatic",settings.sdlAudioDriver.empty())) { settings.sdlAudioDriver=""; @@ -752,9 +759,11 @@ void FurnaceGUI::drawSettings() { } } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Device"); - ImGui::SameLine(); + ImGui::TableNextColumn(); String audioDevName=settings.audioDevice.empty()?"":settings.audioDevice; if (ImGui::BeginCombo("##AudioDevice",audioDevName.c_str())) { if (ImGui::Selectable("",settings.audioDevice.empty())) { @@ -768,9 +777,11 @@ void FurnaceGUI::drawSettings() { ImGui::EndCombo(); } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Sample rate"); - ImGui::SameLine(); + ImGui::TableNextColumn(); String sr=fmt::sprintf("%d",settings.audioRate); if (ImGui::BeginCombo("##SampleRate",sr.c_str())) { SAMPLE_RATE_SELECTABLE(8000); @@ -785,9 +796,12 @@ void FurnaceGUI::drawSettings() { ImGui::EndCombo(); } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); if (isProAudio[settings.audioEngine]) { + ImGui::AlignTextToFramePadding(); ImGui::Text("Outputs"); - ImGui::SameLine(); + ImGui::TableNextColumn(); if (ImGui::InputInt("##AudioChansI",&settings.audioChans,1,1)) { if (settings.audioChans<1) settings.audioChans=1; if (settings.audioChans>16) settings.audioChans=16; @@ -795,7 +809,7 @@ void FurnaceGUI::drawSettings() { } else { ImGui::AlignTextToFramePadding(); ImGui::Text("Channels"); - ImGui::SameLine(); + ImGui::TableNextColumn(); String chStr=(settings.audioChans<1 || settings.audioChans>8)?"What?":nonProAudioOuts[settings.audioChans-1]; if (ImGui::BeginCombo("##AudioChans",chStr.c_str())) { CHANS_SELECTABLE(1); @@ -807,9 +821,11 @@ void FurnaceGUI::drawSettings() { } } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Buffer size"); - ImGui::SameLine(); + ImGui::TableNextColumn(); String bs=fmt::sprintf("%d (latency: ~%.1fms)",settings.audioBufSize,2000.0*(double)settings.audioBufSize/(double)MAX(1,settings.audioRate)); if (ImGui::BeginCombo("##BufferSize",bs.c_str())) { BUFFER_SIZE_SELECTABLE(64); @@ -820,6 +836,8 @@ void FurnaceGUI::drawSettings() { BUFFER_SIZE_SELECTABLE(2048); ImGui::EndCombo(); } + ImGui::EndTable(); + } bool lowLatencyB=settings.lowLatency; if (ImGui::Checkbox("Low-latency mode (experimental!)",&lowLatencyB)) { From eef3dacc78ce6c6cb39a9f0051944ad66a54ddf7 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 14:03:34 +0400 Subject: [PATCH 015/126] indent --- src/gui/settings.cpp | 198 +++++++++++++++++++++---------------------- 1 file changed, 99 insertions(+), 99 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 2b34596fb..7eb4d018c 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -724,119 +724,119 @@ void FurnaceGUI::drawSettings() { ImGui::TableSetupColumn("##Label",ImGuiTableColumnFlags_WidthFixed); ImGui::TableSetupColumn("##Combo",ImGuiTableColumnFlags_WidthStretch); #ifdef HAVE_JACK - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Backend"); - ImGui::TableNextColumn(); - int prevAudioEngine=settings.audioEngine; - if (ImGui::Combo("##Backend",&settings.audioEngine,audioBackends,2)) { - if (settings.audioEngine!=prevAudioEngine) { - if (!isProAudio[settings.audioEngine]) settings.audioChans=2; + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Backend"); + ImGui::TableNextColumn(); + int prevAudioEngine=settings.audioEngine; + if (ImGui::Combo("##Backend",&settings.audioEngine,audioBackends,2)) { + if (settings.audioEngine!=prevAudioEngine) { + if (!isProAudio[settings.audioEngine]) settings.audioChans=2; + } } - } #endif - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - if (settings.audioEngine==DIV_AUDIO_SDL) { - ImGui::AlignTextToFramePadding(); - ImGui::Text("Driver"); + ImGui::TableNextRow(); ImGui::TableNextColumn(); - if (ImGui::BeginCombo("##SDLADriver",settings.sdlAudioDriver.empty()?"Automatic":settings.sdlAudioDriver.c_str())) { - if (ImGui::Selectable("Automatic",settings.sdlAudioDriver.empty())) { - settings.sdlAudioDriver=""; + if (settings.audioEngine==DIV_AUDIO_SDL) { + ImGui::AlignTextToFramePadding(); + ImGui::Text("Driver"); + ImGui::TableNextColumn(); + if (ImGui::BeginCombo("##SDLADriver",settings.sdlAudioDriver.empty()?"Automatic":settings.sdlAudioDriver.c_str())) { + if (ImGui::Selectable("Automatic",settings.sdlAudioDriver.empty())) { + settings.sdlAudioDriver=""; + } + for (String& i: availAudioDrivers) { + if (ImGui::Selectable(i.c_str(),i==settings.sdlAudioDriver)) { + settings.sdlAudioDriver=i; + } + } + ImGui::EndCombo(); } - for (String& i: availAudioDrivers) { - if (ImGui::Selectable(i.c_str(),i==settings.sdlAudioDriver)) { - settings.sdlAudioDriver=i; + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("you may need to restart Furnace for this setting to take effect."); + } + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Device"); + ImGui::TableNextColumn(); + String audioDevName=settings.audioDevice.empty()?"":settings.audioDevice; + if (ImGui::BeginCombo("##AudioDevice",audioDevName.c_str())) { + if (ImGui::Selectable("",settings.audioDevice.empty())) { + settings.audioDevice=""; + } + for (String& i: e->getAudioDevices()) { + if (ImGui::Selectable(i.c_str(),i==settings.audioDevice)) { + settings.audioDevice=i; } } ImGui::EndCombo(); } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("you may need to restart Furnace for this setting to take effect."); - } - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Device"); - ImGui::TableNextColumn(); - String audioDevName=settings.audioDevice.empty()?"":settings.audioDevice; - if (ImGui::BeginCombo("##AudioDevice",audioDevName.c_str())) { - if (ImGui::Selectable("",settings.audioDevice.empty())) { - settings.audioDevice=""; - } - for (String& i: e->getAudioDevices()) { - if (ImGui::Selectable(i.c_str(),i==settings.audioDevice)) { - settings.audioDevice=i; - } - } - ImGui::EndCombo(); - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Sample rate"); - ImGui::TableNextColumn(); - String sr=fmt::sprintf("%d",settings.audioRate); - if (ImGui::BeginCombo("##SampleRate",sr.c_str())) { - SAMPLE_RATE_SELECTABLE(8000); - SAMPLE_RATE_SELECTABLE(16000); - SAMPLE_RATE_SELECTABLE(22050); - SAMPLE_RATE_SELECTABLE(32000); - SAMPLE_RATE_SELECTABLE(44100); - SAMPLE_RATE_SELECTABLE(48000); - SAMPLE_RATE_SELECTABLE(88200); - SAMPLE_RATE_SELECTABLE(96000); - SAMPLE_RATE_SELECTABLE(192000); - ImGui::EndCombo(); - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - if (isProAudio[settings.audioEngine]) { - ImGui::AlignTextToFramePadding(); - ImGui::Text("Outputs"); + + ImGui::TableNextRow(); ImGui::TableNextColumn(); - if (ImGui::InputInt("##AudioChansI",&settings.audioChans,1,1)) { - if (settings.audioChans<1) settings.audioChans=1; - if (settings.audioChans>16) settings.audioChans=16; - } - } else { ImGui::AlignTextToFramePadding(); - ImGui::Text("Channels"); + ImGui::Text("Sample rate"); ImGui::TableNextColumn(); - String chStr=(settings.audioChans<1 || settings.audioChans>8)?"What?":nonProAudioOuts[settings.audioChans-1]; - if (ImGui::BeginCombo("##AudioChans",chStr.c_str())) { - CHANS_SELECTABLE(1); - CHANS_SELECTABLE(2); - CHANS_SELECTABLE(4); - CHANS_SELECTABLE(6); - CHANS_SELECTABLE(8); + String sr=fmt::sprintf("%d",settings.audioRate); + if (ImGui::BeginCombo("##SampleRate",sr.c_str())) { + SAMPLE_RATE_SELECTABLE(8000); + SAMPLE_RATE_SELECTABLE(16000); + SAMPLE_RATE_SELECTABLE(22050); + SAMPLE_RATE_SELECTABLE(32000); + SAMPLE_RATE_SELECTABLE(44100); + SAMPLE_RATE_SELECTABLE(48000); + SAMPLE_RATE_SELECTABLE(88200); + SAMPLE_RATE_SELECTABLE(96000); + SAMPLE_RATE_SELECTABLE(192000); ImGui::EndCombo(); } - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Buffer size"); - ImGui::TableNextColumn(); - String bs=fmt::sprintf("%d (latency: ~%.1fms)",settings.audioBufSize,2000.0*(double)settings.audioBufSize/(double)MAX(1,settings.audioRate)); - if (ImGui::BeginCombo("##BufferSize",bs.c_str())) { - BUFFER_SIZE_SELECTABLE(64); - BUFFER_SIZE_SELECTABLE(128); - BUFFER_SIZE_SELECTABLE(256); - BUFFER_SIZE_SELECTABLE(512); - BUFFER_SIZE_SELECTABLE(1024); - BUFFER_SIZE_SELECTABLE(2048); - ImGui::EndCombo(); - } - ImGui::EndTable(); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (isProAudio[settings.audioEngine]) { + ImGui::AlignTextToFramePadding(); + ImGui::Text("Outputs"); + ImGui::TableNextColumn(); + if (ImGui::InputInt("##AudioChansI",&settings.audioChans,1,1)) { + if (settings.audioChans<1) settings.audioChans=1; + if (settings.audioChans>16) settings.audioChans=16; + } + } else { + ImGui::AlignTextToFramePadding(); + ImGui::Text("Channels"); + ImGui::TableNextColumn(); + String chStr=(settings.audioChans<1 || settings.audioChans>8)?"What?":nonProAudioOuts[settings.audioChans-1]; + if (ImGui::BeginCombo("##AudioChans",chStr.c_str())) { + CHANS_SELECTABLE(1); + CHANS_SELECTABLE(2); + CHANS_SELECTABLE(4); + CHANS_SELECTABLE(6); + CHANS_SELECTABLE(8); + ImGui::EndCombo(); + } + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Buffer size"); + ImGui::TableNextColumn(); + String bs=fmt::sprintf("%d (latency: ~%.1fms)",settings.audioBufSize,2000.0*(double)settings.audioBufSize/(double)MAX(1,settings.audioRate)); + if (ImGui::BeginCombo("##BufferSize",bs.c_str())) { + BUFFER_SIZE_SELECTABLE(64); + BUFFER_SIZE_SELECTABLE(128); + BUFFER_SIZE_SELECTABLE(256); + BUFFER_SIZE_SELECTABLE(512); + BUFFER_SIZE_SELECTABLE(1024); + BUFFER_SIZE_SELECTABLE(2048); + ImGui::EndCombo(); + } + ImGui::EndTable(); } bool lowLatencyB=settings.lowLatency; From 6250dd970f1378a80c80605571eef934ebc47de5 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 14:20:53 +0400 Subject: [PATCH 016/126] improve font settings --- src/gui/settings.cpp | 107 ++++++++++++++++++++++--------------------- 1 file changed, 56 insertions(+), 51 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 7eb4d018c..8b09ac96e 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -758,7 +758,7 @@ void FurnaceGUI::drawSettings() { ImGui::SetTooltip("you may need to restart Furnace for this setting to take effect."); } } - + ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); @@ -776,7 +776,7 @@ void FurnaceGUI::drawSettings() { } ImGui::EndCombo(); } - + ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); @@ -795,7 +795,7 @@ void FurnaceGUI::drawSettings() { SAMPLE_RATE_SELECTABLE(192000); ImGui::EndCombo(); } - + ImGui::TableNextRow(); ImGui::TableNextColumn(); if (isProAudio[settings.audioEngine]) { @@ -820,7 +820,7 @@ void FurnaceGUI::drawSettings() { ImGui::EndCombo(); } } - + ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); @@ -2034,57 +2034,62 @@ void FurnaceGUI::drawSettings() { // SUBSECTION TEXT CONFIG_SUBSECTION("Text"); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Main font"); - ImGui::SameLine(); - ImGui::Combo("##MainFont",&settings.mainFont,mainFonts,7); - ImGui::Indent(); - if (settings.mainFont==6) { - ImGui::InputText("##MainFontPath",&settings.mainFontPath); - ImGui::SameLine(); - if (ImGui::Button(ICON_FA_FOLDER "##MainFontLoad")) { - openFileDialog(GUI_FILE_LOAD_MAIN_FONT); + if (ImGui::BeginTable("##Text",2)) { + ImGui::TableSetupColumn("##Label",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("##Combos",ImGuiTableColumnFlags_WidthStretch); + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Main font"); + ImGui::TableNextColumn(); + ImGui::Combo("##MainFont",&settings.mainFont,mainFonts,7); + if (settings.mainFont==6) { + ImGui::InputText("##MainFontPath",&settings.mainFontPath); + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_FOLDER "##MainFontLoad")) { + openFileDialog(GUI_FILE_LOAD_MAIN_FONT); + } } - } - if (ImGui::InputInt("Size##MainFontSize",&settings.mainFontSize)) { - if (settings.mainFontSize<3) settings.mainFontSize=3; - if (settings.mainFontSize>96) settings.mainFontSize=96; - } - ImGui::Unindent(); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Header font"); - ImGui::SameLine(); - ImGui::Combo("##HeadFont",&settings.headFont,headFonts,7); - ImGui::Indent(); - if (settings.headFont==6) { - ImGui::InputText("##HeadFontPath",&settings.headFontPath); - ImGui::SameLine(); - if (ImGui::Button(ICON_FA_FOLDER "##HeadFontLoad")) { - openFileDialog(GUI_FILE_LOAD_HEAD_FONT); + if (ImGui::InputInt("Size##MainFontSize",&settings.mainFontSize)) { + if (settings.mainFontSize<3) settings.mainFontSize=3; + if (settings.mainFontSize>96) settings.mainFontSize=96; } - } - if (ImGui::InputInt("Size##HeadFontSize",&settings.headFontSize)) { - if (settings.headFontSize<3) settings.headFontSize=3; - if (settings.headFontSize>96) settings.headFontSize=96; - } - ImGui::Unindent(); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Pattern font"); - ImGui::SameLine(); - ImGui::Combo("##PatFont",&settings.patFont,patFonts,7); - ImGui::Indent(); - if (settings.patFont==6) { - ImGui::InputText("##PatFontPath",&settings.patFontPath); - ImGui::SameLine(); - if (ImGui::Button(ICON_FA_FOLDER "##PatFontLoad")) { - openFileDialog(GUI_FILE_LOAD_PAT_FONT); + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Header font"); + ImGui::TableNextColumn(); + ImGui::Combo("##HeadFont",&settings.headFont,headFonts,7); + if (settings.headFont==6) { + ImGui::InputText("##HeadFontPath",&settings.headFontPath); + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_FOLDER "##HeadFontLoad")) { + openFileDialog(GUI_FILE_LOAD_HEAD_FONT); + } } + if (ImGui::InputInt("Size##HeadFontSize",&settings.headFontSize)) { + if (settings.headFontSize<3) settings.headFontSize=3; + if (settings.headFontSize>96) settings.headFontSize=96; + } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Pattern font"); + ImGui::TableNextColumn(); + ImGui::Combo("##PatFont",&settings.patFont,patFonts,7); + if (settings.patFont==6) { + ImGui::InputText("##PatFontPath",&settings.patFontPath); + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_FOLDER "##PatFontLoad")) { + openFileDialog(GUI_FILE_LOAD_PAT_FONT); + } + } + if (ImGui::InputInt("Size##PatFontSize",&settings.patFontSize)) { + if (settings.patFontSize<3) settings.patFontSize=3; + if (settings.patFontSize>96) settings.patFontSize=96; + } + ImGui::EndTable(); } - if (ImGui::InputInt("Size##PatFontSize",&settings.patFontSize)) { - if (settings.patFontSize<3) settings.patFontSize=3; - if (settings.patFontSize>96) settings.patFontSize=96; - } - ImGui::Unindent(); bool loadJapaneseB=settings.loadJapanese; if (ImGui::Checkbox("Display Japanese characters",&loadJapaneseB)) { From ccdd5693c6ea6f35dbc5bb0208be05afc8d827ee Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 15:16:38 +0400 Subject: [PATCH 017/126] additive hint --- src/gui/gui.h | 1 + src/gui/guiConst.cpp | 1 + src/gui/settings.cpp | 1 + 3 files changed, 3 insertions(+) diff --git a/src/gui/gui.h b/src/gui/gui.h index 9f6b04b25..915c306de 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -130,6 +130,7 @@ enum FurnaceGUIColors { GUI_COLOR_TOGGLE_ON, GUI_COLOR_EDITING, GUI_COLOR_SONG_LOOP, + GUI_COLOR_ADDITIVE, GUI_COLOR_DESTRUCTIVE, GUI_COLOR_WARNING, GUI_COLOR_ERROR, diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index bc9f5ff77..30e03aab1 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -810,6 +810,7 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ D(GUI_COLOR_TOGGLE_ON,"",ImVec4(0.2f,0.6f,0.2f,1.0f)), D(GUI_COLOR_EDITING,"",ImVec4(0.2f,0.1f,0.1f,1.0f)), D(GUI_COLOR_SONG_LOOP,"",ImVec4(0.3f,0.5f,0.8f,0.4f)), + D(GUI_COLOR_ADDITIVE,"",ImVec4(0.12f,0.58f,1.0f,1.0f)), D(GUI_COLOR_DESTRUCTIVE,"",ImVec4(1.0f,0.2f,0.2f,1.0f)), D(GUI_COLOR_WARNING,"",ImVec4(0.98f,0.98f,0.06f,1.0f)), D(GUI_COLOR_ERROR,"",ImVec4(0.98f,0.06f,0.11f,1.0f)), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 8b09ac96e..8ed4dcf66 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -2673,6 +2673,7 @@ void FurnaceGUI::drawSettings() { UI_COLOR_CONFIG(GUI_COLOR_EDITING,"Editing"); UI_COLOR_CONFIG(GUI_COLOR_SONG_LOOP,"Song loop"); UI_COLOR_CONFIG(GUI_COLOR_PLAYBACK_STAT,"Playback status"); + UI_COLOR_CONFIG(GUI_COLOR_ADDITIVE,"Additive hint"); UI_COLOR_CONFIG(GUI_COLOR_DESTRUCTIVE,"Destructive hint"); UI_COLOR_CONFIG(GUI_COLOR_WARNING,"Warning hint"); UI_COLOR_CONFIG(GUI_COLOR_ERROR,"Error hint"); From f0bcb1c06a3004a133c44d4b761a4b4ada280283 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 15:24:32 +0400 Subject: [PATCH 018/126] add color push/pop --- src/gui/gui.h | 2 ++ src/gui/settings.cpp | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/src/gui/gui.h b/src/gui/gui.h index 915c306de..74f55a6db 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -2181,6 +2181,8 @@ class FurnaceGUI { void pushDestColor(); void popDestColor(); + void pushAddColor(); + void popAddColor(); void pushWarningColor(bool warnCond, bool errorCond=false); void popWarningColor(); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 8ed4dcf66..9adfe7b61 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -3992,6 +3992,14 @@ void FurnaceGUI::popDestColor() { popAccentColors(); } +void FurnaceGUI::pushAddColor() { + pushAccentColors(uiColors[GUI_COLOR_ADDITIVE],uiColors[GUI_COLOR_ADDITIVE],uiColors[GUI_COLOR_ADDITIVE],ImVec4(0.0f,0.0f,0.0f,0.0f)); +} + +void FurnaceGUI::popAddColor() { + popAccentColors(); +} + void FurnaceGUI::pushWarningColor(bool warnCond, bool errorCond) { if (warnColorPushed) { logE("warnColorPushed"); From 3c38a79801813b7d61c87e927f480dddfbf5d06b Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 15:37:28 +0400 Subject: [PATCH 019/126] more pushdestcolor --- src/gui/dataList.cpp | 6 +++--- src/gui/orders.cpp | 2 ++ src/gui/sysManager.cpp | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 1506c5ff3..86de5a037 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -504,7 +504,7 @@ void FurnaceGUI::drawInsList(bool asChild) { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_TIMES "##InsDelete")) { + if (ImGui::Button(ICON_FA_MINUS "##InsDelete")) { if (settings.unifiedDataView) { switch (lastAssetType) { case 0: @@ -749,7 +749,7 @@ void FurnaceGUI::drawWaveList(bool asChild) { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_TIMES "##WaveDelete")) { + if (ImGui::Button(ICON_FA_MINUS "##WaveDelete")) { doAction(GUI_ACTION_WAVE_LIST_DELETE); } popDestColor(); @@ -901,7 +901,7 @@ void FurnaceGUI::drawSampleList(bool asChild) { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_TIMES "##SampleDelete")) { + if (ImGui::Button(ICON_FA_MINUS "##SampleDelete")) { doAction(GUI_ACTION_SAMPLE_LIST_DELETE); } popDestColor(); diff --git a/src/gui/orders.cpp b/src/gui/orders.cpp index dad280d46..0bce014aa 100644 --- a/src/gui/orders.cpp +++ b/src/gui/orders.cpp @@ -115,10 +115,12 @@ void FurnaceGUI::drawOrderButtons() { } NEXT_BUTTON; + pushDestColor(); if (ImGui::Button(ICON_FA_MINUS)) { handleUnimportant // remove this order row doAction(GUI_ACTION_ORDERS_REMOVE); } + popDestColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Remove order"); } diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index 7a214beca..24dfdbfdd 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -102,10 +102,12 @@ void FurnaceGUI::drawSysManager() { } ImGui::SameLine(); ImGui::BeginDisabled(e->song.systemLen<=1); - if (ImGui::Button(ICON_FA_TIMES "##SysRemove")) { + pushDestColor(); + if (ImGui::Button(ICON_FA_MINUS "##SysRemove")) { sysToDelete=i; showWarning("Are you sure you want to remove this chip?",GUI_WARN_SYSTEM_DEL); } + popDestColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Remove"); } From 9e405e86fa781c27d79bd982eea3f7c2c31922cf Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 15:49:06 +0400 Subject: [PATCH 020/126] improve find/replace --- src/gui/findReplace.cpp | 15 ++++++++++++++- src/gui/guiConst.cpp | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 60976d31c..0e313d0ab 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -811,20 +811,29 @@ void FurnaceGUI::drawFindReplace() { } ImGui::TableNextRow(); ImGui::TableNextColumn(); - if (ImGui::Button(ICON_FA_MINUS "##DelQuery")) { + pushDestColor(); + if (ImGui::Button(ICON_FA_TRASH "##DelQuery")) { eraseIndex=index; } + popDestColor(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Delete query"); + } ImGui::TableNextColumn(); if (i.effectCount<8) { + pushAddColor(); if (ImGui::Button("Add effect")) { i.effectCount++; } + popAddColor(); } ImGui::TableNextColumn(); if (i.effectCount>0) { + pushDestColor(); if (ImGui::Button("Remove effect")) { i.effectCount--; } + popDestColor(); } ImGui::EndTable(); } @@ -1097,15 +1106,19 @@ void FurnaceGUI::drawFindReplace() { ImGui::TableNextColumn(); ImGui::TableNextColumn(); if (queryReplaceEffectCount<8) { + pushAddColor(); if (ImGui::Button("Add effect")) { queryReplaceEffectCount++; } + popAddColor(); } ImGui::TableNextColumn(); if (queryReplaceEffectCount>0) { + pushDestColor(); if (ImGui::Button("Remove effect")) { queryReplaceEffectCount--; } + popDestColor(); } ImGui::EndTable(); diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 30e03aab1..65966bb7f 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -810,7 +810,7 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ D(GUI_COLOR_TOGGLE_ON,"",ImVec4(0.2f,0.6f,0.2f,1.0f)), D(GUI_COLOR_EDITING,"",ImVec4(0.2f,0.1f,0.1f,1.0f)), D(GUI_COLOR_SONG_LOOP,"",ImVec4(0.3f,0.5f,0.8f,0.4f)), - D(GUI_COLOR_ADDITIVE,"",ImVec4(0.12f,0.58f,1.0f,1.0f)), + D(GUI_COLOR_ADDITIVE,"",ImVec4(0.2f,1.0f,0.2f,1.0f)), D(GUI_COLOR_DESTRUCTIVE,"",ImVec4(1.0f,0.2f,0.2f,1.0f)), D(GUI_COLOR_WARNING,"",ImVec4(0.98f,0.98f,0.06f,1.0f)), D(GUI_COLOR_ERROR,"",ImVec4(0.98f,0.06f,0.11f,1.0f)), From 0dbe1b401fc4dbb2788b7a606c4716a14d32a80d Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 16:01:56 +0400 Subject: [PATCH 021/126] some pushaddcolor's and improve grooves --- src/gui/dataList.cpp | 4 ++++ src/gui/grooves.cpp | 13 +++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 86de5a037..b7269fb28 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -253,6 +253,7 @@ void FurnaceGUI::drawInsList(bool asChild) { } if (began) { if (settings.unifiedDataView) settings.horizontalDataView=0; + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##InsAdd")) { if (settings.unifiedDataView) { switch (lastAssetType) { @@ -270,6 +271,7 @@ void FurnaceGUI::drawInsList(bool asChild) { doAction(GUI_ACTION_INS_LIST_ADD); } } + popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } @@ -657,9 +659,11 @@ void FurnaceGUI::drawWaveList(bool asChild) { began=ImGui::Begin("Wavetables",&waveListOpen,globalWinFlags); } if (began) { + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##WaveAdd")) { doAction(GUI_ACTION_WAVE_LIST_ADD); } + popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } diff --git a/src/gui/grooves.cpp b/src/gui/grooves.cpp index 560a09e68..65ab6d016 100644 --- a/src/gui/grooves.cpp +++ b/src/gui/grooves.cpp @@ -47,13 +47,14 @@ void FurnaceGUI::drawGrooves() { ImGui::TableNextColumn(); ImGui::Text("pattern"); ImGui::TableNextColumn(); - ImGui::Text("remove"); + // ImGui::Text("remove"); removed because the text clips from the fixed width int index=0; for (DivGroovePattern& i: e->song.grooves) { ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::PushFont(patFont); + ImGui::AlignTextToFramePadding(); ImGui::Text("%.2X",index); ImGui::PopFont(); @@ -79,6 +80,7 @@ void FurnaceGUI::drawGrooves() { ImGui::SetKeyboardFocusHere(); } ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::AlignTextToFramePadding(); if (ImGui::InputText(grooveStr.c_str(),&grooveListString)) { decodeMMLStr(grooveListString,intVersion,intVersionLen,ignoredLoop,1,255,ignoredRel); if (intVersionLen<1) { @@ -120,10 +122,15 @@ void FurnaceGUI::drawGrooves() { } ImGui::TableNextColumn(); - String grooveID=fmt::sprintf(ICON_FA_TIMES "##GRR%d",index); + pushDestColor(); + String grooveID=fmt::sprintf(ICON_FA_MINUS "##GRR%d",index); if (ImGui::Button(grooveID.c_str())) { delGroove=index; } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("remove"); + } + popDestColor(); index++; } @@ -138,12 +145,14 @@ void FurnaceGUI::drawGrooves() { MARK_MODIFIED; } + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##AddGroove")) { e->lockEngine([this]() { e->song.grooves.push_back(DivGroovePattern()); }); MARK_MODIFIED; } + popAddColor(); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) { curWindow=GUI_WINDOW_GROOVES; From 19f7376337a1108028a8eb855ad133a9de6a4c66 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 16:09:27 +0400 Subject: [PATCH 022/126] the rest of the add colors --- src/gui/insEdit.cpp | 6 +++++- src/gui/orders.cpp | 2 ++ src/gui/settings.cpp | 4 ++++ src/gui/subSongs.cpp | 2 ++ src/gui/sysManager.cpp | 2 ++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 98d02e3a2..e7b9690ac 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4333,18 +4333,21 @@ void FurnaceGUI::drawInsEdit() { MARK_MODIFIED; } ImGui::SameLine(); - if (ImGui::Button(ICON_FA_TIMES "##HWCmdDel")) { + pushDestColor(); + if (ImGui::Button(ICON_FA_MINUS "##HWCmdDel")) { for (int j=i; jgb.hwSeqLen-1; j++) { ins->gb.hwSeq[j].cmd=ins->gb.hwSeq[j+1].cmd; ins->gb.hwSeq[j].data=ins->gb.hwSeq[j+1].data; } ins->gb.hwSeqLen--; } + popDestColor(); ImGui::PopID(); } ImGui::EndTable(); } + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##HWCmdAdd")) { if (ins->gb.hwSeqLen<255) { ins->gb.hwSeq[ins->gb.hwSeqLen].cmd=0; @@ -4352,6 +4355,7 @@ void FurnaceGUI::drawInsEdit() { ins->gb.hwSeqLen++; } } + popAddColor(); } ImGui::EndChild(); ImGui::EndDisabled(); diff --git a/src/gui/orders.cpp b/src/gui/orders.cpp index 0bce014aa..4162b0229 100644 --- a/src/gui/orders.cpp +++ b/src/gui/orders.cpp @@ -106,10 +106,12 @@ void FurnaceGUI::drawOrderButtons() { buttonColumns++; } + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS)) { handleUnimportant // add order row (new) doAction(GUI_ACTION_ORDERS_ADD); } + popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add new order"); } diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 9adfe7b61..0b53f77e0 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -659,6 +659,7 @@ void FurnaceGUI::drawSettings() { settings.initialSys.remove(fmt::sprintf("flags%d",sysCount-1)); } + pushAddColor(); if (sysCount<32) if (ImGui::Button(ICON_FA_PLUS "##InitSysAdd")) { settings.initialSys.set(fmt::sprintf("id%d",sysCount),(int)e->systemToFileFur(DIV_SYSTEM_YM2612)); settings.initialSys.set(fmt::sprintf("vol%d",sysCount),1.0f); @@ -666,6 +667,7 @@ void FurnaceGUI::drawSettings() { settings.initialSys.set(fmt::sprintf("fr%d",sysCount),0.0f); settings.initialSys.set(fmt::sprintf("flags%d",sysCount),""); } + popAddColor(); ImGui::Text("When creating new song:"); ImGui::Indent(); @@ -978,9 +980,11 @@ void FurnaceGUI::drawSettings() { ImGui::AlignTextToFramePadding(); ImGui::Text("Actions:"); ImGui::SameLine(); + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##AddAction")) { midiMap.binds.push_back(MIDIBind()); } + popAddColor(); ImGui::SameLine(); if (ImGui::Button(ICON_FA_EXTERNAL_LINK "##AddLearnAction")) { midiMap.binds.push_back(MIDIBind()); diff --git a/src/gui/subSongs.cpp b/src/gui/subSongs.cpp index 15b107ed0..86c606b68 100644 --- a/src/gui/subSongs.cpp +++ b/src/gui/subSongs.cpp @@ -70,6 +70,7 @@ void FurnaceGUI::drawSubSongs(bool asChild) { ImGui::EndCombo(); } ImGui::SameLine(); + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##SubSongAdd")) { if (!e->addSubSong()) { showError("too many subsongs!"); @@ -88,6 +89,7 @@ void FurnaceGUI::drawSubSongs(bool asChild) { MARK_MODIFIED; } } + popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index 24dfdbfdd..6bbeea40d 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -118,6 +118,7 @@ void FurnaceGUI::drawSysManager() { ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::TableNextColumn(); + pushAddColor(); ImGui::Button(ICON_FA_PLUS "##SysAdd"); if (ImGui::BeginPopupContextItem("SysPickerA",ImGuiPopupFlags_MouseButtonLeft)) { DivSystem picked=systemPicker(); @@ -135,6 +136,7 @@ void FurnaceGUI::drawSysManager() { } ImGui::EndPopup(); } + popAddColor(); } ImGui::EndTable(); } From a7eb62a5d66a7af4cb02cd86f0af170dd649b715 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 16:15:40 +0400 Subject: [PATCH 023/126] add sample add add color --- src/gui/dataList.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index b7269fb28..e46070507 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -793,9 +793,11 @@ void FurnaceGUI::drawSampleList(bool asChild) { began=ImGui::Begin("Samples",&sampleListOpen,globalWinFlags); } if (began) { + pushAddColor(); if (ImGui::Button(ICON_FA_FILE "##SampleAdd")) { doAction(GUI_ACTION_SAMPLE_LIST_ADD); } + popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } From 6fa746f04d00f7b44d76ee0ad1019929e500f334 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 16:30:17 +0400 Subject: [PATCH 024/126] uncolor grooves remove tooltip --- src/gui/grooves.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/grooves.cpp b/src/gui/grooves.cpp index 65ab6d016..4c739785f 100644 --- a/src/gui/grooves.cpp +++ b/src/gui/grooves.cpp @@ -127,10 +127,10 @@ void FurnaceGUI::drawGrooves() { if (ImGui::Button(grooveID.c_str())) { delGroove=index; } + popDestColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("remove"); } - popDestColor(); index++; } From fdd9b598a722d04ebda731a60ba7882221704f38 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sun, 27 Aug 2023 10:15:28 +0400 Subject: [PATCH 025/126] revert additive hint --- src/gui/dataList.cpp | 6 ------ src/gui/findReplace.cpp | 4 ---- src/gui/grooves.cpp | 2 -- src/gui/gui.h | 3 --- src/gui/guiConst.cpp | 1 - src/gui/insEdit.cpp | 2 -- src/gui/orders.cpp | 2 -- src/gui/settings.cpp | 13 ------------- src/gui/subSongs.cpp | 2 -- src/gui/sysManager.cpp | 2 -- 10 files changed, 37 deletions(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index e46070507..86de5a037 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -253,7 +253,6 @@ void FurnaceGUI::drawInsList(bool asChild) { } if (began) { if (settings.unifiedDataView) settings.horizontalDataView=0; - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##InsAdd")) { if (settings.unifiedDataView) { switch (lastAssetType) { @@ -271,7 +270,6 @@ void FurnaceGUI::drawInsList(bool asChild) { doAction(GUI_ACTION_INS_LIST_ADD); } } - popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } @@ -659,11 +657,9 @@ void FurnaceGUI::drawWaveList(bool asChild) { began=ImGui::Begin("Wavetables",&waveListOpen,globalWinFlags); } if (began) { - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##WaveAdd")) { doAction(GUI_ACTION_WAVE_LIST_ADD); } - popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } @@ -793,11 +789,9 @@ void FurnaceGUI::drawSampleList(bool asChild) { began=ImGui::Begin("Samples",&sampleListOpen,globalWinFlags); } if (began) { - pushAddColor(); if (ImGui::Button(ICON_FA_FILE "##SampleAdd")) { doAction(GUI_ACTION_SAMPLE_LIST_ADD); } - popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 0e313d0ab..b2dcc0c11 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -821,11 +821,9 @@ void FurnaceGUI::drawFindReplace() { } ImGui::TableNextColumn(); if (i.effectCount<8) { - pushAddColor(); if (ImGui::Button("Add effect")) { i.effectCount++; } - popAddColor(); } ImGui::TableNextColumn(); if (i.effectCount>0) { @@ -1106,11 +1104,9 @@ void FurnaceGUI::drawFindReplace() { ImGui::TableNextColumn(); ImGui::TableNextColumn(); if (queryReplaceEffectCount<8) { - pushAddColor(); if (ImGui::Button("Add effect")) { queryReplaceEffectCount++; } - popAddColor(); } ImGui::TableNextColumn(); if (queryReplaceEffectCount>0) { diff --git a/src/gui/grooves.cpp b/src/gui/grooves.cpp index 4c739785f..db709ce09 100644 --- a/src/gui/grooves.cpp +++ b/src/gui/grooves.cpp @@ -145,14 +145,12 @@ void FurnaceGUI::drawGrooves() { MARK_MODIFIED; } - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##AddGroove")) { e->lockEngine([this]() { e->song.grooves.push_back(DivGroovePattern()); }); MARK_MODIFIED; } - popAddColor(); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) { curWindow=GUI_WINDOW_GROOVES; diff --git a/src/gui/gui.h b/src/gui/gui.h index 74f55a6db..9f6b04b25 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -130,7 +130,6 @@ enum FurnaceGUIColors { GUI_COLOR_TOGGLE_ON, GUI_COLOR_EDITING, GUI_COLOR_SONG_LOOP, - GUI_COLOR_ADDITIVE, GUI_COLOR_DESTRUCTIVE, GUI_COLOR_WARNING, GUI_COLOR_ERROR, @@ -2181,8 +2180,6 @@ class FurnaceGUI { void pushDestColor(); void popDestColor(); - void pushAddColor(); - void popAddColor(); void pushWarningColor(bool warnCond, bool errorCond=false); void popWarningColor(); diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 65966bb7f..bc9f5ff77 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -810,7 +810,6 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ D(GUI_COLOR_TOGGLE_ON,"",ImVec4(0.2f,0.6f,0.2f,1.0f)), D(GUI_COLOR_EDITING,"",ImVec4(0.2f,0.1f,0.1f,1.0f)), D(GUI_COLOR_SONG_LOOP,"",ImVec4(0.3f,0.5f,0.8f,0.4f)), - D(GUI_COLOR_ADDITIVE,"",ImVec4(0.2f,1.0f,0.2f,1.0f)), D(GUI_COLOR_DESTRUCTIVE,"",ImVec4(1.0f,0.2f,0.2f,1.0f)), D(GUI_COLOR_WARNING,"",ImVec4(0.98f,0.98f,0.06f,1.0f)), D(GUI_COLOR_ERROR,"",ImVec4(0.98f,0.06f,0.11f,1.0f)), diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index e7b9690ac..f6066d686 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4347,7 +4347,6 @@ void FurnaceGUI::drawInsEdit() { ImGui::EndTable(); } - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##HWCmdAdd")) { if (ins->gb.hwSeqLen<255) { ins->gb.hwSeq[ins->gb.hwSeqLen].cmd=0; @@ -4355,7 +4354,6 @@ void FurnaceGUI::drawInsEdit() { ins->gb.hwSeqLen++; } } - popAddColor(); } ImGui::EndChild(); ImGui::EndDisabled(); diff --git a/src/gui/orders.cpp b/src/gui/orders.cpp index 4162b0229..0bce014aa 100644 --- a/src/gui/orders.cpp +++ b/src/gui/orders.cpp @@ -106,12 +106,10 @@ void FurnaceGUI::drawOrderButtons() { buttonColumns++; } - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS)) { handleUnimportant // add order row (new) doAction(GUI_ACTION_ORDERS_ADD); } - popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add new order"); } diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 0b53f77e0..8b09ac96e 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -659,7 +659,6 @@ void FurnaceGUI::drawSettings() { settings.initialSys.remove(fmt::sprintf("flags%d",sysCount-1)); } - pushAddColor(); if (sysCount<32) if (ImGui::Button(ICON_FA_PLUS "##InitSysAdd")) { settings.initialSys.set(fmt::sprintf("id%d",sysCount),(int)e->systemToFileFur(DIV_SYSTEM_YM2612)); settings.initialSys.set(fmt::sprintf("vol%d",sysCount),1.0f); @@ -667,7 +666,6 @@ void FurnaceGUI::drawSettings() { settings.initialSys.set(fmt::sprintf("fr%d",sysCount),0.0f); settings.initialSys.set(fmt::sprintf("flags%d",sysCount),""); } - popAddColor(); ImGui::Text("When creating new song:"); ImGui::Indent(); @@ -980,11 +978,9 @@ void FurnaceGUI::drawSettings() { ImGui::AlignTextToFramePadding(); ImGui::Text("Actions:"); ImGui::SameLine(); - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##AddAction")) { midiMap.binds.push_back(MIDIBind()); } - popAddColor(); ImGui::SameLine(); if (ImGui::Button(ICON_FA_EXTERNAL_LINK "##AddLearnAction")) { midiMap.binds.push_back(MIDIBind()); @@ -2677,7 +2673,6 @@ void FurnaceGUI::drawSettings() { UI_COLOR_CONFIG(GUI_COLOR_EDITING,"Editing"); UI_COLOR_CONFIG(GUI_COLOR_SONG_LOOP,"Song loop"); UI_COLOR_CONFIG(GUI_COLOR_PLAYBACK_STAT,"Playback status"); - UI_COLOR_CONFIG(GUI_COLOR_ADDITIVE,"Additive hint"); UI_COLOR_CONFIG(GUI_COLOR_DESTRUCTIVE,"Destructive hint"); UI_COLOR_CONFIG(GUI_COLOR_WARNING,"Warning hint"); UI_COLOR_CONFIG(GUI_COLOR_ERROR,"Error hint"); @@ -3996,14 +3991,6 @@ void FurnaceGUI::popDestColor() { popAccentColors(); } -void FurnaceGUI::pushAddColor() { - pushAccentColors(uiColors[GUI_COLOR_ADDITIVE],uiColors[GUI_COLOR_ADDITIVE],uiColors[GUI_COLOR_ADDITIVE],ImVec4(0.0f,0.0f,0.0f,0.0f)); -} - -void FurnaceGUI::popAddColor() { - popAccentColors(); -} - void FurnaceGUI::pushWarningColor(bool warnCond, bool errorCond) { if (warnColorPushed) { logE("warnColorPushed"); diff --git a/src/gui/subSongs.cpp b/src/gui/subSongs.cpp index 86c606b68..15b107ed0 100644 --- a/src/gui/subSongs.cpp +++ b/src/gui/subSongs.cpp @@ -70,7 +70,6 @@ void FurnaceGUI::drawSubSongs(bool asChild) { ImGui::EndCombo(); } ImGui::SameLine(); - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##SubSongAdd")) { if (!e->addSubSong()) { showError("too many subsongs!"); @@ -89,7 +88,6 @@ void FurnaceGUI::drawSubSongs(bool asChild) { MARK_MODIFIED; } } - popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index 6bbeea40d..24dfdbfdd 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -118,7 +118,6 @@ void FurnaceGUI::drawSysManager() { ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::TableNextColumn(); - pushAddColor(); ImGui::Button(ICON_FA_PLUS "##SysAdd"); if (ImGui::BeginPopupContextItem("SysPickerA",ImGuiPopupFlags_MouseButtonLeft)) { DivSystem picked=systemPicker(); @@ -136,7 +135,6 @@ void FurnaceGUI::drawSysManager() { } ImGui::EndPopup(); } - popAddColor(); } ImGui::EndTable(); } From 4eda4aeb39ea3ab75f445f5c03bf7aa99319b54b Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sun, 27 Aug 2023 10:18:39 +0400 Subject: [PATCH 026/126] revert icon changes --- src/gui/dataList.cpp | 6 +++--- src/gui/findReplace.cpp | 2 +- src/gui/grooves.cpp | 2 +- src/gui/insEdit.cpp | 2 +- src/gui/sysManager.cpp | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 86de5a037..1506c5ff3 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -504,7 +504,7 @@ void FurnaceGUI::drawInsList(bool asChild) { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_MINUS "##InsDelete")) { + if (ImGui::Button(ICON_FA_TIMES "##InsDelete")) { if (settings.unifiedDataView) { switch (lastAssetType) { case 0: @@ -749,7 +749,7 @@ void FurnaceGUI::drawWaveList(bool asChild) { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_MINUS "##WaveDelete")) { + if (ImGui::Button(ICON_FA_TIMES "##WaveDelete")) { doAction(GUI_ACTION_WAVE_LIST_DELETE); } popDestColor(); @@ -901,7 +901,7 @@ void FurnaceGUI::drawSampleList(bool asChild) { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_MINUS "##SampleDelete")) { + if (ImGui::Button(ICON_FA_TIMES "##SampleDelete")) { doAction(GUI_ACTION_SAMPLE_LIST_DELETE); } popDestColor(); diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index b2dcc0c11..40e259eb3 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -812,7 +812,7 @@ void FurnaceGUI::drawFindReplace() { ImGui::TableNextRow(); ImGui::TableNextColumn(); pushDestColor(); - if (ImGui::Button(ICON_FA_TRASH "##DelQuery")) { + if (ImGui::Button(ICON_FA_MINUS "##DelQuery")) { eraseIndex=index; } popDestColor(); diff --git a/src/gui/grooves.cpp b/src/gui/grooves.cpp index db709ce09..eee8db56e 100644 --- a/src/gui/grooves.cpp +++ b/src/gui/grooves.cpp @@ -123,7 +123,7 @@ void FurnaceGUI::drawGrooves() { ImGui::TableNextColumn(); pushDestColor(); - String grooveID=fmt::sprintf(ICON_FA_MINUS "##GRR%d",index); + String grooveID=fmt::sprintf(ICON_FA_TIMES "##GRR%d",index); if (ImGui::Button(grooveID.c_str())) { delGroove=index; } diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index f6066d686..d00295895 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4334,7 +4334,7 @@ void FurnaceGUI::drawInsEdit() { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_MINUS "##HWCmdDel")) { + if (ImGui::Button(ICON_FA_TIMES "##HWCmdDel")) { for (int j=i; jgb.hwSeqLen-1; j++) { ins->gb.hwSeq[j].cmd=ins->gb.hwSeq[j+1].cmd; ins->gb.hwSeq[j].data=ins->gb.hwSeq[j+1].data; diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index 24dfdbfdd..ad71e0e86 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -103,7 +103,7 @@ void FurnaceGUI::drawSysManager() { ImGui::SameLine(); ImGui::BeginDisabled(e->song.systemLen<=1); pushDestColor(); - if (ImGui::Button(ICON_FA_MINUS "##SysRemove")) { + if (ImGui::Button(ICON_FA_TIMES "##SysRemove")) { sysToDelete=i; showWarning("Are you sure you want to remove this chip?",GUI_WARN_SYSTEM_DEL); } From 65fbdba831252cee183dc37ac76361051d50e739 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sun, 27 Aug 2023 12:49:53 +0400 Subject: [PATCH 027/126] wavetable list selectable sizing fix --- src/gui/dataList.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 1506c5ff3..22c080c1b 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -172,10 +172,12 @@ void FurnaceGUI::waveListItem(int i, float* wavePreview, int dir, int asset) { wavePreview[i]=wave->data[i]; } if (wave->len>0) wavePreview[wave->len]=wave->data[wave->len-1]; - if (ImGui::Selectable(fmt::sprintf("%d##_WAVE%d\n",i,i).c_str(),curWave==i)) { + ImGui::PushStyleVar(ImGuiStyleVar_SelectableTextAlign, ImVec2(0,0.5f)); + if (ImGui::Selectable(fmt::sprintf(" %d##_WAVE%d\n",i,i).c_str(),curWave==i, 0, ImVec2(0,23*dpiScale))) {//i didnt think that the 0 would work, but it does curWave=i; lastAssetType=1; } + ImGui::PopStyleVar(); if (wantScrollList && curWave==i) ImGui::SetScrollHereY(); if (ImGui::IsItemHovered()) { if (ImGui::IsMouseDoubleClicked(ImGuiMouseButton_Left)) { From ba25910d482d5b924bed26f946ab6e72a7c14865 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Sun, 27 Aug 2023 08:55:06 -0700 Subject: [PATCH 028/126] Requested fixes. --- doc/2-interface/asset-list.md | 2 +- doc/2-interface/menu-bar.md | 2 +- doc/8-advanced/piano.md | 6 ------ 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/doc/2-interface/asset-list.md b/doc/2-interface/asset-list.md index 157c934d0..7c8340f5e 100644 --- a/doc/2-interface/asset-list.md +++ b/doc/2-interface/asset-list.md @@ -3,7 +3,7 @@ ![instruments window](instruments.png) Buttons from left to right: -- **Add**: pops up a menu to select which type of instrument to add. +- **Add**: pops up a menu to select which type of instrument to add. if only one instrument type is available, the menu is skipped. - If the "Display instrument type menu when adding instrument" setting is disabled, this skips the menu and creates an instrument according to the chip under the cursor. - Right-clicking always brings up the menu. - **Duplicate**: Duplicates the currently selected instrument. diff --git a/doc/2-interface/menu-bar.md b/doc/2-interface/menu-bar.md index 1ef63fb96..9b4268cf4 100644 --- a/doc/2-interface/menu-bar.md +++ b/doc/2-interface/menu-bar.md @@ -137,7 +137,7 @@ it's not really useful, unless you're a developer and want to use a command stre # edit -- **...**: does nothing except prevent accidental clicks on later menu items. +- **...**: does nothing except prevent accidental clicks on later menu items if the menu is too tall to fit on the program window. - **undo**: reverts the last action. - **redo**: repeats what you undid previously. diff --git a/doc/8-advanced/piano.md b/doc/8-advanced/piano.md index 8a135f6fd..4218ef083 100644 --- a/doc/8-advanced/piano.md +++ b/doc/8-advanced/piano.md @@ -29,11 +29,5 @@ Key layout: - **Standard**: Black keys are 2/3 length. - **Continuous**: Black keys are full length. -Value input pad: applies to mobile UI only. -- **Disabled** -- **Replace piano** -- **Split (automatic)** -- **Split (always visible)** - **Share play/edit offset/range**: If disabled, the piano will keep different octave and range values for playback and non-playback states. **Read-only (can't input notes): Prevents note entry. \ No newline at end of file From 17a88fda703ef67c336426f109360ce9d9c32fe3 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 27 Aug 2023 15:52:54 -0500 Subject: [PATCH 029/126] C140: update emulator with the one from C219 branch --- CMakeLists.txt | 2 +- src/engine/platform/c140.h | 2 +- .../platform/sound/{c140.c => c140_c219.c} | 210 +++++++++++++++++- .../platform/sound/{c140.h => c140_c219.h} | 41 +++- src/gui/about.cpp | 2 +- src/main.cpp | 2 +- 6 files changed, 245 insertions(+), 14 deletions(-) rename src/engine/platform/sound/{c140.c => c140_c219.c} (53%) rename src/engine/platform/sound/{c140.h => c140_c219.h} (71%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 47d7b3f94..63053c787 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -507,7 +507,7 @@ src/engine/platform/sound/d65modified.c src/engine/platform/sound/ted-sound.c -src/engine/platform/sound/c140.c +src/engine/platform/sound/c140_c219.c src/engine/platform/oplAInterface.cpp src/engine/platform/ym2608Interface.cpp diff --git a/src/engine/platform/c140.h b/src/engine/platform/c140.h index 1c8ed9079..6239c8f50 100644 --- a/src/engine/platform/c140.h +++ b/src/engine/platform/c140.h @@ -21,7 +21,7 @@ #define _C140_H #include "../dispatch.h" -#include "sound/c140.h" +#include "sound/c140_c219.h" #include "../fixedQueue.h" class DivPlatformC140: public DivDispatch { diff --git a/src/engine/platform/sound/c140.c b/src/engine/platform/sound/c140_c219.c similarity index 53% rename from src/engine/platform/sound/c140.c rename to src/engine/platform/sound/c140_c219.c index 9cdc4ecb1..4855bd782 100644 --- a/src/engine/platform/sound/c140.c +++ b/src/engine/platform/sound/c140_c219.c @@ -2,7 +2,7 @@ ============================================================================ -MODIFIED Namco C140 sound emulator - MODIFIED VERSION +MODIFIED Namco C140/C219 sound emulator - MODIFIED VERSION by cam900 MODIFICATION by tildearrow - adds muting function and fixes overflow @@ -41,7 +41,7 @@ TODO: */ -#include "c140.h" +#include "c140_c219.h" static int c140_max(int a, int b) { return (a > b) ? a : b; } static int c140_min(int a, int b) { return (a < b) ? a : b; } @@ -61,6 +61,18 @@ void c140_tick(struct c140_t *c140, const int cycle) } } +void c219_tick(struct c219_t *c219, const int cycle) +{ + c219->lout = 0; + c219->rout = 0; + for (int i = 0; i < 16; i++) + { + c219_voice_tick(c219, i, cycle); + c219->lout += c219->voice[i].lout; + c219->rout += c219->voice[i].rout; + } +} + void c140_voice_tick(struct c140_t *c140, const unsigned char v, const int cycle) { struct c140_voice_t *voice = &c140->voice[v]; @@ -117,6 +129,84 @@ void c140_voice_tick(struct c140_t *c140, const unsigned char v, const int cycle } } +void c219_voice_tick(struct c219_t *c219, const unsigned char v, const int cycle) +{ + struct c140_voice_t *voice = &c219->voice[v]; + if (voice->busy && voice->keyon) + { + for (int c = 0; c < cycle; c++) + { + voice->frac += voice->freq; + if (voice->frac > 0xffff) + { + voice->addr += voice->frac >> 16; + if ((voice->addr >> 1) > voice->end_addr) + { + if (voice->loop) + { + voice->addr = (voice->addr + (voice->loop_addr << 1)) - (voice->end_addr << 1); + } + else + { + voice->keyon = false; + voice->lout = 0; + voice->rout = 0; + return; + } + } + if (voice->noise) + { + c219->lfsr = (c219->lfsr >> 1) ^ ((-(c219->lfsr & 1)) & 0xfff6); + } + voice->frac &= 0xffff; + } + } + if (!voice->muted) + { + signed int sample = 0; + if (voice->noise) + { + sample = (signed int)((signed short)(c219->lfsr)); + } + else + { + // fetch 8 bit sample + signed short s1 = c219->sample_mem[((unsigned int)(c219->bank[(v >> 2) & 3]) << 17) | voice->addr]; + signed short s2 = c219->sample_mem[((unsigned int)(c219->bank[(v >> 2) & 3]) << 17) | ((voice->addr + 1) & 0x1ffff)]; + if (voice->compressed) + { + s1 = c219->mulaw[s1]; + s2 = c219->mulaw[s2]; + } + else + { + s1 = (signed short)((signed char)(s1) << 8); + s2 = (signed short)((signed char)(s2) << 8); + } + if (voice->inv_sign) + { + s1 = -s1; + s2 = -s2; + } + // interpolate (originally was >>16, but I had to reduce it to 15 to prevent overflow) + sample = s1 + (((voice->frac >> 1) * (s2 - s1)) >> 15); + } + voice->lout = (voice->inv_lout ? (-sample) : sample) * voice->lvol; + voice->rout = sample * voice->rvol; + } + else + { + voice->lout = 0; + voice->rout = 0; + } + } + else + { + voice->lout = 0; + voice->rout = 0; + } +} + void c140_keyon(struct c140_voice_t *c140_voice) { c140_voice->busy = true; @@ -125,6 +215,14 @@ void c140_keyon(struct c140_voice_t *c140_voice) c140_voice->addr = c140_voice->start_addr; } +void c219_keyon(struct c140_voice_t *c140_voice) +{ + c140_voice->busy = true; + c140_voice->keyon = true; + c140_voice->frac = 0; + c140_voice->addr = c140_voice->start_addr << 1; +} + void c140_init(struct c140_t *c140) { // u-law table verified from Wii Virtual Console Arcade Starblade @@ -149,6 +247,41 @@ void c140_init(struct c140_t *c140) } } +void c219_init(struct c219_t *c219) +{ + // u-law table verified from Wii Virtual Console Arcade Knuckle Heads + for (int i = 0; i < 128; i++) + { + signed int compressed_sample = 0; + if (i < 16) + { + compressed_sample = 0x20 * i; + } + else if (i < 24) + { + compressed_sample = (0x200 + (0x40 * i)) - 0x400; + } + else if (i < 48) + { + compressed_sample = (0x400 + (0x80 * i)) - 0xc00; + } + else if (i < 100) + { + compressed_sample = (0x1000 + (0x100 * i)) - 0x3000; + } + else + { + compressed_sample = (0x4400 + (0x200 * i)) - 0xc800; + } + c219->mulaw[i] = compressed_sample; + c219->mulaw[i + 128] = (~compressed_sample) & 0xffe0; + } + for (int i = 0; i < 16; i++) + { + c219->voice[i].muted = false; + } +} + void c140_reset(struct c140_t *c140) { for (int i = 0; i < 24; i++) @@ -171,6 +304,35 @@ void c140_reset(struct c140_t *c140) } } +void c219_reset(struct c219_t *c219) +{ + for (int i = 0; i < 16; i++) + { + c219->voice[i].busy = false; + c219->voice[i].keyon = false; + c219->voice[i].freq = 0; + c219->voice[i].start_addr = 0; + c219->voice[i].loop_addr = 0; + c219->voice[i].end_addr = 0; + c219->voice[i].lvol = 0; + c219->voice[i].rvol = 0; + c219->voice[i].noise = false; + c219->voice[i].inv_lout = false; + c219->voice[i].inv_sign = false; + c219->voice[i].compressed = false; + c219->voice[i].loop = false; + c219->voice[i].addr = 0; + c219->voice[i].frac = 0; + c219->voice[i].lout = 0; + c219->voice[i].rout = 0; + } + c219->lfsr = 0x1234; + for (int i = 0; i < 4; i++) + { + c219->bank[i] = 0; + } +} + void c140_write(struct c140_t *c140, const unsigned short addr, const unsigned char data) { // voice register @@ -203,3 +365,47 @@ void c140_write(struct c140_t *c140, const unsigned short addr, const unsigned c } // Timer } + +void c219_write(struct c219_t *c219, const unsigned short addr, const unsigned char data) +{ + // voice register + if (addr < 0x180) + { + struct c140_voice_t *voice = &c219->voice[addr >> 4]; + switch (addr & 0xf) + { + case 0x0: voice->rvol = data; break; + case 0x1: voice->lvol = data; break; + case 0x2: voice->freq = (voice->freq & ~0xff00) | (unsigned int)(data << 8); break; + case 0x3: voice->freq = (voice->freq & ~0x00ff) | data; break; + //case 0x4: break; // Unknown + case 0x5: + voice->compressed = c140_bit(data, 0); + voice->noise = c140_bit(data, 2); + voice->inv_lout = c140_bit(data, 3); + voice->loop = c140_bit(data, 4); + voice->inv_sign = c140_bit(data, 6); + if (data & 0x80) + c219_keyon(voice); + else + voice->busy = false; + break; + case 0x6: voice->start_addr = (voice->start_addr & ~0xff00) | (unsigned int)(data << 8); break; + case 0x7: voice->start_addr = (voice->start_addr & ~0x00ff) | data; break; + case 0x8: voice->end_addr = (voice->end_addr & ~0xff00) | (unsigned int)(data << 8); break; + case 0x9: voice->end_addr = (voice->end_addr & ~0x00ff) | data; break; + case 0xa: voice->loop_addr = (voice->loop_addr & ~0xff00) | (unsigned int)(data << 8); break; + case 0xb: voice->loop_addr = (voice->loop_addr & ~0x00ff) | data; break; + default: break; + } + } + // bank + else if (addr >= 0x1f0) + { + if (addr & 1) + { + const unsigned short bankaddr = (addr >> 1) & 3; + c219->bank[(bankaddr + 1) & 3] = (data & 3); + } + } +} diff --git a/src/engine/platform/sound/c140.h b/src/engine/platform/sound/c140_c219.h similarity index 71% rename from src/engine/platform/sound/c140.h rename to src/engine/platform/sound/c140_c219.h index 21a8b8a47..fb19125a3 100644 --- a/src/engine/platform/sound/c140.h +++ b/src/engine/platform/sound/c140_c219.h @@ -2,7 +2,7 @@ ============================================================================ -MODIFIED Namco C140 sound emulator - MODIFIED VERSION +MODIFIED Namco C140/C219 sound emulator - MODIFIED VERSION by cam900 MODIFICATION by tildearrow - adds muting function @@ -41,8 +41,8 @@ TODO: */ -#ifndef _C140_EMU_H -#define _C140_EMU_H +#ifndef _C140_C219_EMU_H +#define _C140_C219_EMU_H #include @@ -58,13 +58,16 @@ struct c140_voice_t bool keyon; // key on flag unsigned short freq; // sample frequency unsigned char bank; // sample bank - unsigned short start_addr; // sample start address - unsigned short loop_addr; // sample loop address - unsigned short end_addr; // sample end address + unsigned int start_addr; // sample start address + unsigned int loop_addr; // sample loop address + unsigned int end_addr; // sample end address int lvol, rvol; // left/right volume + bool noise; // noise flag + bool inv_lout; // invert left output flag + bool inv_sign; // invert sign bit flag bool compressed; // compressed sample flag bool loop; // loop flag - unsigned short addr; // sample address + unsigned int addr; // sample address int frac; // frequency counter (.16 fixed point) int lout, rout; // left/right output }; @@ -77,20 +80,42 @@ struct c140_t signed short *sample_mem; }; +struct c219_t +{ + struct c140_voice_t voice[16]; + signed int lout, rout; + signed short mulaw[256]; + unsigned short lfsr; + unsigned char bank[4]; + signed char *sample_mem; +}; + void c140_tick(struct c140_t *c140, const int cycle); +void c219_tick(struct c219_t *c219, const int cycle); + void c140_voice_tick(struct c140_t *c140, const unsigned char v, const int cycle); +void c219_voice_tick(struct c219_t *c219, const unsigned char v, const int cycle); + void c140_keyon(struct c140_voice_t *c140_voice); +void c219_keyon(struct c140_voice_t *c140_voice); + void c140_write(struct c140_t *c140, const unsigned short addr, const unsigned char data); +void c219_write(struct c219_t *c219, const unsigned short addr, const unsigned char data); + void c140_init(struct c140_t *c140); +void c219_init(struct c219_t *c219); + void c140_reset(struct c140_t *c140); +void c219_reset(struct c219_t *c219); + #ifdef __cplusplus } // extern "C" #endif -#endif // _C140_EMU_H +#endif // _C140_C219_EMU_H diff --git a/src/gui/about.cpp b/src/gui/about.cpp index 2151f5c61..e1ce1b642 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -199,7 +199,7 @@ const char* aboutLine[]={ "vgsound_emu (second version, modified version) by cam900", "SM8521 emulator (modified version) by cam900", "D65010G031 emulator (modified version) by cam900", - "Namco C140 (modified version) emulator by cam900", + "Namco C140/C219 emulator (modified version) by cam900", "", "greetings to:", "NEOART Costa Rica", diff --git a/src/main.cpp b/src/main.cpp index 2c12678a9..dd0cc2bf2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -210,7 +210,7 @@ TAParamResult pVersion(String) { printf("- ASAP POKEY emulator by Piotr Fusik ported to C++ by laoo (GPLv2)\n"); printf("- SM8521 emulator (modified version) by cam900 (zlib license)\n"); printf("- D65010G031 emulator (modified version) by cam900 (zlib license)\n"); - printf("- C140 emulator (modified version) by cam900 (zlib license)\n"); + printf("- C140/C219 emulator (modified version) by cam900 (zlib license)\n"); return TA_PARAM_QUIT; } From 80961354f7670e8b09b008a0974726127087d72e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 27 Aug 2023 16:20:16 -0500 Subject: [PATCH 030/126] prepare for C219 --- src/engine/platform/c140.cpp | 5 +++++ src/engine/platform/c140.h | 3 +++ 2 files changed, 8 insertions(+) diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index ba80284a7..d95a3216b 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -483,6 +483,11 @@ void DivPlatformC140::renderSamples(int sysID) { sampleMemLen=memPos+256; } +void DivPlatformC219::set219(bool is_219) { + is219=is_219; + totalChans=is219?16:24; +} + void DivPlatformC140::setFlags(const DivConfig& flags) { chipClock=32000*256; // 8.192MHz and 12.288MHz input, verified from Assault Schematics CHECK_CUSTOM_CLOCK; diff --git a/src/engine/platform/c140.h b/src/engine/platform/c140.h index 6239c8f50..bb596ecf9 100644 --- a/src/engine/platform/c140.h +++ b/src/engine/platform/c140.h @@ -53,6 +53,8 @@ class DivPlatformC140: public DivDispatch { bool isMuted[24]; unsigned int sampleOff[256]; bool sampleLoaded[256]; + bool is219; + int totalChans; signed short* sampleMem; size_t sampleMemLen; @@ -95,6 +97,7 @@ class DivPlatformC140: public DivDispatch { size_t getSampleMemUsage(int index = 0); bool isSampleLoaded(int index, int sample); void renderSamples(int chipID); + void set219(bool is_219); void setFlags(const DivConfig& flags); int init(DivEngine* parent, int channels, int sugRate, const DivConfig& flags); void quit(); From 859182bb089a53b0f3e48bc2dfa72a70203e52ab Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 27 Aug 2023 18:46:10 -0500 Subject: [PATCH 031/126] C219: initial work --- papers/format.md | 2 +- papers/newIns.md | 1 + src/engine/dispatchContainer.cpp | 5 + src/engine/engine.h | 4 +- src/engine/instrument.cpp | 4 + src/engine/instrument.h | 1 + src/engine/platform/c140.cpp | 224 ++++++++++++++++++++++--------- src/engine/platform/c140.h | 6 +- src/engine/song.h | 3 +- src/engine/sysDef.cpp | 14 ++ src/gui/furIcons.h | 5 +- src/gui/gui.h | 1 + src/gui/guiConst.cpp | 6 +- 13 files changed, 207 insertions(+), 69 deletions(-) diff --git a/papers/format.md b/papers/format.md index a09579bd2..66bec724e 100644 --- a/papers/format.md +++ b/papers/format.md @@ -222,7 +222,7 @@ size | description | - 0xcc: K053260 - 4 channels | - 0xcd: TED - 2 channels | - 0xce: Namco C140 - 24 channels - | - 0xcf: Namco C219 - 16 channels (UNAVAILABLE) + | - 0xcf: Namco C219 - 16 channels | - 0xd0: Namco C352 - 32 channels (UNAVAILABLE) | - 0xde: YM2610B extended - 19 channels | - 0xe0: QSound - 19 channels diff --git a/papers/newIns.md b/papers/newIns.md index 4ef3be31d..27a505c13 100644 --- a/papers/newIns.md +++ b/papers/newIns.md @@ -120,6 +120,7 @@ the following instrument types are available: - 50: K053260 - 52: TED - 53: C140 +- 54: C219 the following feature codes are recognized: diff --git a/src/engine/dispatchContainer.cpp b/src/engine/dispatchContainer.cpp index 49222c390..8ff1a33c7 100644 --- a/src/engine/dispatchContainer.cpp +++ b/src/engine/dispatchContainer.cpp @@ -587,6 +587,11 @@ void DivDispatchContainer::init(DivSystem sys, DivEngine* eng, int chanCount, do break; case DIV_SYSTEM_C140: dispatch=new DivPlatformC140; + ((DivPlatformC140*)dispatch)->set219(false); + break; + case DIV_SYSTEM_C219: + dispatch=new DivPlatformC140; + ((DivPlatformC140*)dispatch)->set219(true); break; case DIV_SYSTEM_PCM_DAC: dispatch=new DivPlatformPCMDAC; diff --git a/src/engine/engine.h b/src/engine/engine.h index 7fb6b5116..8df2652d1 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -54,9 +54,9 @@ #define EXTERN_BUSY_BEGIN_SOFT e->softLocked=true; e->isBusy.lock(); #define EXTERN_BUSY_END e->isBusy.unlock(); e->softLocked=false; -//#define DIV_UNSTABLE +#define DIV_UNSTABLE -#define DIV_VERSION "0.6pre9" +#define DIV_VERSION "dev169" #define DIV_ENGINE_VERSION 169 // for imports #define DIV_VERSION_MOD 0xff01 diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 842b88fc2..28cb99bca 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -967,6 +967,10 @@ void DivInstrument::putInsData2(SafeWriter* w, bool fui, const DivSong* song) { featureSM=true; featureSL=true; break; + case DIV_INS_C219: + featureSM=true; + featureSL=true; + break; case DIV_INS_MAX: break; diff --git a/src/engine/instrument.h b/src/engine/instrument.h index cd8c56527..a019198f0 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -84,6 +84,7 @@ enum DivInstrumentType: unsigned short { // DIV_INS_YMF292=51, DIV_INS_TED=52, DIV_INS_C140=53, + DIV_INS_C219=54, DIV_INS_MAX, DIV_INS_NULL }; diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index d95a3216b..05aa963c2 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -49,11 +49,40 @@ const char** DivPlatformC140::getRegisterSheet() { return regCheatSheetC140; } -void DivPlatformC140::acquire(short** buf, size_t len) { +void DivPlatformC140::acquire_219(short** buf, size_t len) { for (size_t h=0; h>= 10; + c219.rout >>= 10; + + if (c219.lout<-32768) c219.lout=-32768; + if (c219.lout>32767) c219.lout=32767; + + if (c219.rout<-32768) c219.rout=-32768; + if (c219.rout>32767) c219.rout=32767; + + buf[0][h]=c219.lout; + buf[1][h]=c219.rout; + + for (int i=0; idata[oscBuf[i]->needle++]=(c219.voice[i].lout+c219.voice[i].rout)>>10; + } + } +} + +void DivPlatformC140::acquire_140(short** buf, size_t len) { + for (size_t h=0; hdata[oscBuf[i]->needle++]=(c140.voice[i].lout+c140.voice[i].rout)>>10; } } } +void DivPlatformC140::acquire(short** buf, size_t len) { + if (is219) { + acquire_219(buf,len); + } else { + acquire_140(buf,len); + } +} + void DivPlatformC140::tick(bool sysTick) { - for (int i=0; i<24; i++) { + for (int i=0; icalcFreq(chan[i].baseFreq,chan[i].pitch,chan[i].fixedArp?chan[i].baseNoteOverride:chan[i].arpOff,chan[i].fixedArp,false,2,chan[i].pitch2,chipClock,CHIP_FREQBASE)); if (chan[i].freq<0) chan[i].freq=0; if (chan[i].freq>65535) chan[i].freq=65535; - ctrl|=(chan[i].active?0x80:0)|((s->isLoopable())?0x10:0)|((s->depth==DIV_SAMPLE_DEPTH_MULAW)?0x08:0); + if (is219) { + ctrl|=(chan[i].active?0x80:0)|((s->isLoopable())?0x10:0)|((s->depth==DIV_SAMPLE_DEPTH_MULAW)?1:0); + } else { + ctrl|=(chan[i].active?0x80:0)|((s->isLoopable())?0x10:0)|((s->depth==DIV_SAMPLE_DEPTH_MULAW)?0x08:0); + } if (chan[i].keyOn) { unsigned int bank=0; unsigned int start=0; unsigned int loop=0; unsigned int end=0; if (chan[i].sample>=0 && chan[i].samplesong.sampleLen) { - bank=(sampleOff[chan[i].sample]>>16)&0xff; - start=sampleOff[chan[i].sample]&0xffff; - end=MIN(start+s->length8-1,65535); + if (is219) { + bank=(sampleOff[chan[i].sample]>>16)&0xff; + start=sampleOff[chan[i].sample]&0xffff; + end=MIN(start+(s->length8>>1)-1,65535); + logV("sampleOff[%d]=%d",chan[i].sample,sampleOff[chan[i].sample]); + } else { + bank=(sampleOff[chan[i].sample]>>16)&0xff; + start=sampleOff[chan[i].sample]&0xffff; + end=MIN(start+s->length8-1,65535); + } } if (chan[i].audPos>0) { - start=MIN(start+MIN(chan[i].audPos,s->length8),65535); + start=MIN(start+(MIN(chan[i].audPos,s->length8)>>1),65535); } if (s->isLoopable()) { - loop=MIN(start+s->loopStart,65535); - end=MIN(start+s->loopEnd-1,65535); + if (is219) { + loop=MIN(start+(s->loopStart>>1),65535); + end=MIN(start+(s->loopEnd>>1)-1,65535); + } else { + loop=MIN(start+s->loopStart,65535); + end=MIN(start+s->loopEnd-1,65535); + } } rWrite(0x05+(i<<4),0); // force keyoff first - rWrite(0x04+(i<<4),bank); + if (is219) { + // TODO; group banking + + } else { + rWrite(0x04+(i<<4),bank); + } rWrite(0x06+(i<<4),(start>>8)&0xff); rWrite(0x07+(i<<4),start&0xff); rWrite(0x08+(i<<4),(end>>8)&0xff); @@ -323,11 +381,15 @@ int DivPlatformC140::dispatch(DivCommand c) { void DivPlatformC140::muteChannel(int ch, bool mute) { isMuted[ch]=mute; - c140.voice[ch].muted=mute; + if (is219) { + c219.voice[ch].muted=mute; + } else { + c140.voice[ch].muted=mute; + } } void DivPlatformC140::forceIns() { - for (int i=0; i<24; i++) { + for (int i=0; ilength16; - // fit sample size to single bank size - if (length>(131072)) { - length=131072; - } - if ((memPos&0xfe0000)!=((memPos+length)&0xfe0000)) { - memPos=((memPos+0x1ffff)&0xfe0000); - } - if (memPos>=(getSampleMemCapacity())) { - logW("out of C140 memory for sample %d!",i); - break; - } - // why is C140 not G.711-compliant? this weird bit mangling had me puzzled for 3 hours... - if (memPos+length>=(getSampleMemCapacity())) { - if (s->depth==DIV_SAMPLE_DEPTH_MULAW) { - for (unsigned int i=0; i<(getSampleMemCapacity())-memPos; i++) { - if (i>=s->lengthMuLaw) break; - unsigned char x=s->dataMuLaw[i]^0xff; - if (x&0x80) x^=15; - unsigned char c140Mu=(x&0x80)|((x&15)<<3)|((x&0x70)>>4); - sampleMem[i+(memPos/sizeof(short))]=((c140Mu)<<8); - } - } else { - memcpy(sampleMem+(memPos/sizeof(short)),s->data16,(getSampleMemCapacity())-memPos); + if (is219) { // C219 (8-bit) + unsigned int length=s->length8; + // fit sample size to single bank size + if (length>131072) { + length=131072; + } + if (length&1) length++; + if ((memPos&0xfe0000)!=((memPos+length)&0xfe0000)) { + memPos=((memPos+0x1ffff)&0xfe0000); + } + if (memPos>=(getSampleMemCapacity())) { + logW("out of C219 memory for sample %d!",i); + break; + } + if (memPos+length>=(getSampleMemCapacity())) { + length=getSampleMemCapacity()-memPos; + logW("out of C219 memory for sample %d!",i); } - logW("out of C140 memory for sample %d!",i); - } else { if (s->depth==DIV_SAMPLE_DEPTH_MULAW) { for (unsigned int i=0; i=s->lengthMuLaw) break; - unsigned char x=s->dataMuLaw[i]^0xff; - if (x&0x80) x^=15; - unsigned char c140Mu=(x&0x80)|((x&15)<<3)|((x&0x70)>>4); - sampleMem[i+(memPos/sizeof(short))]=((c140Mu)<<8); + if (i>=s->lengthMuLaw) { + sampleMem[i+memPos]=0; + } else { + unsigned char x=s->dataMuLaw[i]^0xff; + sampleMem[i+memPos]=x; + } } } else { - memcpy(sampleMem+(memPos/sizeof(short)),s->data16,length); + for (unsigned int i=0; i=s->length8) { + sampleMem[memPos+i]=0; + } else { + sampleMem[memPos+i]=s->data8[i]; + } + } } + sampleOff[i]=memPos>>1; + sampleLoaded[i]=true; + memPos+=length; + } else { // C140 (16-bit) + unsigned int length=s->length16; + // fit sample size to single bank size + if (length>(131072)) { + length=131072; + } + if ((memPos&0xfe0000)!=((memPos+length)&0xfe0000)) { + memPos=((memPos+0x1ffff)&0xfe0000); + } + if (memPos>=(getSampleMemCapacity())) { + logW("out of C140 memory for sample %d!",i); + break; + } + // why is C140 not G.711-compliant? this weird bit mangling had me puzzled for 3 hours... + if (memPos+length>=(getSampleMemCapacity())) { + length=getSampleMemCapacity()-memPos; + logW("out of C140 memory for sample %d!",i); + } + if (s->depth==DIV_SAMPLE_DEPTH_MULAW) { + for (unsigned int i=0; i>1)>=s->lengthMuLaw) break; + unsigned char x=s->dataMuLaw[i>>1]^0xff; + if (x&0x80) x^=15; + unsigned char c140Mu=(x&0x80)|((x&15)<<3)|((x&0x70)>>4); + sampleMem[i+memPos]=0; + sampleMem[1+i+memPos]=c140Mu; + } + } else { + memcpy(sampleMem+memPos,s->data16,length); + } + sampleOff[i]=memPos>>1; + sampleLoaded[i]=true; + memPos+=length; } - sampleOff[i]=memPos>>1; - sampleLoaded[i]=true; - memPos+=length; } sampleMemLen=memPos+256; } -void DivPlatformC219::set219(bool is_219) { +void DivPlatformC140::set219(bool is_219) { is219=is_219; totalChans=is219?16:24; } @@ -492,7 +589,7 @@ void DivPlatformC140::setFlags(const DivConfig& flags) { chipClock=32000*256; // 8.192MHz and 12.288MHz input, verified from Assault Schematics CHECK_CUSTOM_CLOCK; rate=chipClock/192; - for (int i=0; i<24; i++) { + for (int i=0; irate=rate; } } @@ -502,23 +599,28 @@ int DivPlatformC140::init(DivEngine* p, int channels, int sugRate, const DivConf dumpWrites=false; skipRegisterWrites=false; - for (int i=0; i<24; i++) { + for (int i=0; i>1]; + sampleMem=new unsigned char[getSampleMemCapacity()]; sampleMemLen=0; - c140_init(&c140); - c140.sample_mem=sampleMem; + if (is219) { + c219_init(&c219); + c219.sample_mem=(signed char*)sampleMem; + } else { + c140_init(&c140); + c140.sample_mem=(short*)sampleMem; + } setFlags(flags); reset(); - return 24; + return totalChans; } void DivPlatformC140::quit() { delete[] sampleMem; - for (int i=0; i<24; i++) { + for (int i=0; i writes; struct c140_t c140; + struct c219_t c219; unsigned char regPool[512]; friend void putDispatchChip(void*,int); friend void putDispatchChan(void*,int,int); + void acquire_219(short** buf, size_t len); + void acquire_140(short** buf, size_t len); + public: void acquire(short** buf, size_t len); int dispatch(DivCommand c); diff --git a/src/engine/song.h b/src/engine/song.h index f05100798..78c49b4e1 100644 --- a/src/engine/song.h +++ b/src/engine/song.h @@ -130,7 +130,8 @@ enum DivSystem { DIV_SYSTEM_PV1000, DIV_SYSTEM_K053260, DIV_SYSTEM_TED, - DIV_SYSTEM_C140 + DIV_SYSTEM_C140, + DIV_SYSTEM_C219 }; enum DivEffectType: unsigned short { diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 9fc6ab9d1..f42731950 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1887,6 +1887,20 @@ void DivEngine::registerSystems() { {} ); + sysDefs[DIV_SYSTEM_C219]=new DivSysDef( + "Namco C219", NULL, 0xcf, 0, 16, false, true, 0x161, false, (1U< Date: Sun, 27 Aug 2023 20:05:08 -0500 Subject: [PATCH 032/126] C219: more updates to-do: - VGM export - presets - noise/invert toggles --- src/engine/platform/c140.cpp | 12 ++++++++---- src/engine/platform/c140.h | 1 + src/engine/sysDef.cpp | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index 05aa963c2..34457eee3 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -193,10 +193,9 @@ void DivPlatformC140::tick(bool sysTick) { unsigned int end=0; if (chan[i].sample>=0 && chan[i].samplesong.sampleLen) { if (is219) { - bank=(sampleOff[chan[i].sample]>>16)&0xff; + bank=(sampleOff[chan[i].sample]>>16)&3; start=sampleOff[chan[i].sample]&0xffff; end=MIN(start+(s->length8>>1)-1,65535); - logV("sampleOff[%d]=%d",chan[i].sample,sampleOff[chan[i].sample]); } else { bank=(sampleOff[chan[i].sample]>>16)&0xff; start=sampleOff[chan[i].sample]&0xffff; @@ -217,8 +216,10 @@ void DivPlatformC140::tick(bool sysTick) { } rWrite(0x05+(i<<4),0); // force keyoff first if (is219) { - // TODO; group banking - + if (groupBank[i>>2]!=bank) { + groupBank[i>>2]=bank; + } + rWrite(0x1f1+(((3+(i>>2))&3)<<1),groupBank[i>>2]); } else { rWrite(0x04+(i<<4),bank); } @@ -427,6 +428,9 @@ void DivPlatformC140::reset() { chan[i].std.setEngine(parent); rWrite(0x05+(i<<4),0); } + for (int i=0; i<4; i++) { + groupBank[i]=0; + } } int DivPlatformC140::getOutputCount() { diff --git a/src/engine/platform/c140.h b/src/engine/platform/c140.h index 3fcb881f8..d5c29fea3 100644 --- a/src/engine/platform/c140.h +++ b/src/engine/platform/c140.h @@ -55,6 +55,7 @@ class DivPlatformC140: public DivDispatch { bool sampleLoaded[256]; bool is219; int totalChans; + unsigned char groupBank[4]; unsigned char* sampleMem; size_t sampleMemLen; diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index f42731950..e06311770 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1891,7 +1891,7 @@ void DivEngine::registerSystems() { "Namco C219", NULL, 0xcf, 0, 16, false, true, 0x161, false, (1U< Date: Sun, 27 Aug 2023 23:04:32 -0500 Subject: [PATCH 033/126] C219: more updates --- src/engine/platform/c140.cpp | 25 ++++++++++++++++++++++--- src/engine/platform/c140.h | 5 ++++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index 34457eee3..ba2b5d33e 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -45,8 +45,27 @@ const char* regCheatSheetC140[]={ NULL }; +const char* regCheatSheetC219[]={ + "CHx_RVol", "00+x*10", + "CHx_LVol", "01+x*10", + "CHx_FreqH", "02+x*10", + "CHx_FreqL", "03+x*10", + "CHx_Ctrl", "05+x*10", + "CHx_StartH", "06+x*10", + "CHx_StartL", "07+x*10", + "CHx_EndH", "08+x*10", + "CHx_EndL", "09+x*10", + "CHx_LoopH", "0A+x*10", + "CHx_LoopL", "0B+x*10", + "BankA", "1F7", + "BankB", "1F1", + "BankC", "1F3", + "BankD", "1F5", + NULL +}; + const char** DivPlatformC140::getRegisterSheet() { - return regCheatSheetC140; + return is219?regCheatSheetC219:regCheatSheetC140; } void DivPlatformC140::acquire_219(short** buf, size_t len) { @@ -182,7 +201,7 @@ void DivPlatformC140::tick(bool sysTick) { if (chan[i].freq<0) chan[i].freq=0; if (chan[i].freq>65535) chan[i].freq=65535; if (is219) { - ctrl|=(chan[i].active?0x80:0)|((s->isLoopable())?0x10:0)|((s->depth==DIV_SAMPLE_DEPTH_MULAW)?1:0); + ctrl|=(chan[i].active?0x80:0)|((s->isLoopable())?0x10:0)|((s->depth==DIV_SAMPLE_DEPTH_MULAW)?1:0)|(chan[i].invert?0x40:0)|(chan[i].surround?8:0)|(chan[i].noise?4:0); } else { ctrl|=(chan[i].active?0x80:0)|((s->isLoopable())?0x10:0)|((s->depth==DIV_SAMPLE_DEPTH_MULAW)?0x08:0); } @@ -481,7 +500,7 @@ const void* DivPlatformC140::getSampleMem(int index) { } size_t DivPlatformC140::getSampleMemCapacity(int index) { - return index == 0 ? 16777216 : 0; + return index == 0 ? (is219?524288:16777216) : 0; } size_t DivPlatformC140::getSampleMemUsage(int index) { diff --git a/src/engine/platform/c140.h b/src/engine/platform/c140.h index d5c29fea3..01802de82 100644 --- a/src/engine/platform/c140.h +++ b/src/engine/platform/c140.h @@ -28,7 +28,7 @@ class DivPlatformC140: public DivDispatch { struct Channel: public SharedChannel { unsigned int audPos; int sample, wave; - bool setPos, volChangedL, volChangedR; + bool setPos, invert, surround, noise, volChangedL, volChangedR; int chPanL, chPanR; int chVolL, chVolR; int macroVolMul; @@ -39,6 +39,9 @@ class DivPlatformC140: public DivDispatch { sample(-1), wave(-1), setPos(false), + invert(false), + surround(false), + noise(false), volChangedL(false), volChangedR(false), chPanL(255), From 06f259586192a4e044d93c9469a42b11d14a85a6 Mon Sep 17 00:00:00 2001 From: Eknous <61464512+Eknous-P@users.noreply.github.com> Date: Mon, 28 Aug 2023 10:00:32 +0400 Subject: [PATCH 034/126] formatting --- src/gui/dataList.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 22c080c1b..de5f3515d 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -173,7 +173,7 @@ void FurnaceGUI::waveListItem(int i, float* wavePreview, int dir, int asset) { } if (wave->len>0) wavePreview[wave->len]=wave->data[wave->len-1]; ImGui::PushStyleVar(ImGuiStyleVar_SelectableTextAlign, ImVec2(0,0.5f)); - if (ImGui::Selectable(fmt::sprintf(" %d##_WAVE%d\n",i,i).c_str(),curWave==i, 0, ImVec2(0,23*dpiScale))) {//i didnt think that the 0 would work, but it does + if (ImGui::Selectable(fmt::sprintf(" %d##_WAVE%d\n",i,i).c_str(),curWave==i,0,ImVec2(0,23*dpiScale))) { // i didnt think that the 0 would work, but it does curWave=i; lastAssetType=1; } From 7a6cbcc00de84418b3b9a0188f88546ef2946416 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Sun, 27 Aug 2023 23:18:37 -0700 Subject: [PATCH 035/126] Adding C219 to letter icons. --- res/icons.sfd | 776 ++++- res/icons.sfd-01 | 6834 ++++++++++++++++++++++++++++++++++++++ res/icons.ttf | Bin 27516 -> 28308 bytes src/gui/font_furicon.cpp | 595 ++-- 4 files changed, 7791 insertions(+), 414 deletions(-) create mode 100644 res/icons.sfd-01 diff --git a/res/icons.sfd b/res/icons.sfd index dd258ba16..310090e28 100644 --- a/res/icons.sfd +++ b/res/icons.sfd @@ -21,7 +21,7 @@ OS2Version: 0 OS2_WeightWidthSlopeOnly: 0 OS2_UseTypoMetrics: 0 CreationTime: 1691897631 -ModificationTime: 1692237157 +ModificationTime: 1693202829 PfmFamily: 81 TTFWeight: 400 TTFWidth: 5 @@ -53,7 +53,7 @@ FitToEm: 0 WinInfo: 57568 16 10 BeginPrivate: 0 EndPrivate -BeginChars: 65536 72 +BeginChars: 65536 73 StartChar: space Encoding: 32 32 0 @@ -5828,63 +5828,18 @@ SplineSet NamedP: "cap heights and baselines for scaled letter icons" EndSplineSet EndUndoOperation -UndoOperation -Index: 1 -Type: 1 -WasModified: 1 -WasOrder2: 0 -Layer: 1 -Width: 1792 -VWidth: 1792 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 -SplineSet -0 1488.28125 m 1053 -0 15.5 m 1 -NamedP: "1-char" - 1792 15.5 l 1025 -0 1020.6171875 m 1 -NamedP: "1-char" - 1792 1020.6171875 l 1025 -0 99.2001953125 m 1 -NamedP: "2-char" - 1792 99.2001953125 l 1025 -0 936.797851562 m 1 -NamedP: "2-char" - 1792 936.797851562 l 1025 -0 183 m 1 -NamedP: "3-char" - 1792 183 l 1025 -0 853.078125 m 1 -NamedP: "3-char" - 1792 853.078125 l 1025 -0 1294.24804688 m 1 -NamedP: "2-line" - 1792 1294.24804688 l 1025 --0 -241.845703125 m 1 -NamedP: "2-line" - 1792 -241.845703125 l 1025 --0 428.232421875 m 1 -NamedP: "2-line" - 1792 428.232421875 l 1025 -0 624.169921875 m 1 -NamedP: "2-line" - 1792 624.169921875 l 1025 -EndSplineSet -EndUndoOperation EndUndoes Redoes EndRedoes EndUndoRedoHistory Fore SplineSet --717.389648438 -10.8251953125 m 8 +-717.389648438 -10.8251953125 m 12 NamedP: "baseline 2" - 717.249023438 -10.8251953125 l 1024 --896 0 m 8 + 717.249023438 -10.8251953125 l 1028 +-896 0 m 12 NamedP: "baseline 1" - 896 0 l 1024 + 896 0 l 1028 EndSplineSet Comment: "O" Colour: ff00ff @@ -5903,12 +5858,15 @@ Layer: 0 Undoes UndoOperation Index: 0 -Type: 12 +Type: 1 WasModified: 0 WasOrder2: 0 -Layer: 0 -HStem: 15.5 139.688<684.242 1061.86> 460.461 135.352<684.242 1028.79> 880.93 139.688<684.242 1028.79> -VStem: 521.586 162.656<155.188 460.461 595.812 880.93> 1062.99 171.328<627.723 849.019> 1098.97 171.445<189.391 426.257> +Layer: 1 +Width: 1792 +VWidth: 1687 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 EndUndoOperation EndUndoes Redoes @@ -5928,15 +5886,12 @@ Layer: 1 Undoes UndoOperation Index: 0 -Type: 1 +Type: 12 WasModified: 0 WasOrder2: 0 -Layer: 1 -Width: 1792 -VWidth: 1687 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 +Layer: 0 +HStem: 15.5 139.688<684.242 1061.86> 460.461 135.352<684.242 1028.79> 880.93 139.688<684.242 1028.79> +VStem: 521.586 162.656<155.188 460.461 595.812 880.93> 1062.99 171.328<627.723 849.019> 1098.97 171.445<189.391 426.257> EndUndoOperation EndUndoes Redoes @@ -5998,13 +5953,15 @@ Layer: 0 Undoes UndoOperation Index: 0 -Type: 12 +Type: 1 WasModified: 0 WasOrder2: 0 -Layer: 0 -HStem: 325.958 116.406<389.164 636.43> 811.993 124.805<499.082 527.573> -VStem: 145.609 137.891<99.2002 237.091> 745.609 141.602<99.2002 240.802> 1220.41 135.547<99.2002 492.633> -DStem2: 145.609 99.2002 283.5 99.2002 0.303392 0.952866<41.8349 280.126 400.882 789.887> 601.664 936.798 516.312 811.993 0.306233 -0.951957<92.6712 481.326 602.427 841.437> 1087.21 936.798 932.328 936.798 0.479431 -0.877579<0 425.309> 1294.83 563.556 1355.96 431.622 0.477305 0.878738<0 424.748> +Layer: 1 +Width: 1792 +VWidth: 1687 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 EndUndoOperation EndUndoes Redoes @@ -6024,15 +5981,13 @@ Layer: 1 Undoes UndoOperation Index: 0 -Type: 1 +Type: 12 WasModified: 0 WasOrder2: 0 -Layer: 1 -Width: 1792 -VWidth: 1687 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 +Layer: 0 +HStem: 325.958 116.406<389.164 636.43> 811.993 124.805<499.082 527.573> +VStem: 145.609 137.891<99.2002 237.091> 745.609 141.602<99.2002 240.802> 1220.41 135.547<99.2002 492.633> +DStem2: 145.609 99.2002 283.5 99.2002 0.303392 0.952866<41.8349 280.126 400.882 789.887> 601.664 936.798 516.312 811.993 0.306233 -0.951957<92.6712 481.326 602.427 841.437> 1087.21 936.798 932.328 936.798 0.479431 -0.877579<0 425.309> 1294.83 563.556 1355.96 431.622 0.477305 0.878738<0 424.748> EndUndoOperation EndUndoes Redoes @@ -6082,13 +6037,15 @@ Layer: 0 Undoes UndoOperation Index: 0 -Type: 12 +Type: 1 WasModified: 0 WasOrder2: 0 -Layer: 0 -HStem: 171.516 89.2188<906.667 1116.84 1445.69 1645.37> 183 108.516<198.32 221.367 546.758 569.805> 449.875 87.3438<1569.19 1693.09> 750.344 102.734<371.133 393.242> 775.344 89.2188<935.851 1133.42 1446.32 1654.53> -VStem: 0 103.75<749.328 853.078> 321.719 123.75<751.086 853.078> 664.375 99.8438<753.234 853.078> 812.781 101.719<608.533 755.771> 1137.31 101.719<281.429 444.709> 1288.88 109.531<309.707 726.324> 1701.69 90.3125<183 281.906 305.738 449.875> -DStem2: 103.75 853.078 0 853.078 0.190374 -0.981712<0 567.853> 216.094 291.516 355.312 595.812 0.136058 0.990701<4.46299 473.288> 530.938 445.109 387.969 750.344 0.136058 -0.990701<-318.35 155.035> 585.625 446.984 617.344 183 0.190374 0.981712<-154.194 413.659> 1006.69 581.438 988.406 485.422 0.978371 -0.206857<-75.1218 135.909> +Layer: 1 +Width: 1792 +VWidth: 1687 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 EndUndoOperation EndUndoes Redoes @@ -6108,15 +6065,13 @@ Layer: 1 Undoes UndoOperation Index: 0 -Type: 1 +Type: 12 WasModified: 0 WasOrder2: 0 -Layer: 1 -Width: 1792 -VWidth: 1687 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 +Layer: 0 +HStem: 171.516 89.2188<906.667 1116.84 1445.69 1645.37> 183 108.516<198.32 221.367 546.758 569.805> 449.875 87.3438<1569.19 1693.09> 750.344 102.734<371.133 393.242> 775.344 89.2188<935.851 1133.42 1446.32 1654.53> +VStem: 0 103.75<749.328 853.078> 321.719 123.75<751.086 853.078> 664.375 99.8438<753.234 853.078> 812.781 101.719<608.533 755.771> 1137.31 101.719<281.429 444.709> 1288.88 109.531<309.707 726.324> 1701.69 90.3125<183 281.906 305.738 449.875> +DStem2: 103.75 853.078 0 853.078 0.190374 -0.981712<0 567.853> 216.094 291.516 355.312 595.812 0.136058 0.990701<4.46299 473.288> 530.938 445.109 387.969 750.344 0.136058 -0.990701<-318.35 155.035> 585.625 446.984 617.344 183 0.190374 0.981712<-154.194 413.659> 1006.69 581.438 988.406 485.422 0.978371 -0.206857<-75.1218 135.909> EndUndoOperation EndUndoes Redoes @@ -6227,6 +6182,40 @@ Undoes UndoOperation Index: 0 Type: 1 +WasModified: 0 +WasOrder2: 0 +Layer: 1 +Width: 1792 +VWidth: 1792 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Back +SplineSet +0 1294.24804688 m 5 +NamedP: "2-line" + 1792 1294.24804688 l 1029 +-0 -241.845703125 m 5 +NamedP: "2-line" + 1792 -241.845703125 l 1029 +-0 428.232421875 m 5 +NamedP: "2-line" + 1792 428.232421875 l 1029 +0 624.169921875 m 5 +NamedP: "2-line" + 1792 624.169921875 l 1029 +EndSplineSet +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 1 WasModified: 1 WasOrder2: 0 Layer: 2 @@ -6334,40 +6323,6 @@ EndUndoes Redoes EndRedoes EndUndoRedoHistory -Back -SplineSet -0 1294.24804688 m 5 -NamedP: "2-line" - 1792 1294.24804688 l 1029 --0 -241.845703125 m 5 -NamedP: "2-line" - 1792 -241.845703125 l 1029 --0 428.232421875 m 5 -NamedP: "2-line" - 1792 428.232421875 l 1029 -0 624.169921875 m 5 -NamedP: "2-line" - 1792 624.169921875 l 1029 -EndSplineSet -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 1 -WasModified: 0 -WasOrder2: 0 -Layer: 1 -Width: 1792 -VWidth: 1792 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory Fore SplineSet 418.234375 -253.330078125 m 0xe3dc @@ -6830,5 +6785,586 @@ SplineSet 92 677 l 25 EndSplineSet EndChar + +StartChar: uniE142 +Encoding: 57666 57666 72 +Width: 1792 +Flags: HW +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 1 +WasModified: 1 +WasOrder2: 0 +Layer: 2 +Width: 1792 +VWidth: 1792 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +SplineSet +-6.0488281255 -10.8251953125 m 5 + -6.0488281255 -10.44921875 -6.0488281255 -10.0732421875 -6.0488281255 -9.697265625 c 5 + -5.264648438 -9.697265625 -4.4804687505 -9.697265625 -3.696289063 -9.697265625 c 5 + -3.696289063 -7.609375 -3.696289063 -5.521484375 -3.696289063 -3.43359375 c 5 + -3.7285156255 -3.43359375 -3.760742188 -3.43359375 -3.7929687505 -3.43359375 c 5 + -4.44075520883 -4.12532552083 -5.08854166717 -4.81705729167 -5.7363281255 -5.5087890625 c 5 + -6.01236979217 -5.26106770833 -6.28841145883 -5.01334635417 -6.5644531255 -4.765625 c 5 + -5.852539063 -3.99348958333 -5.1406250005 -3.22135416667 -4.428710938 -2.44921875 c 5 + -3.74055989633 -2.44921875 -3.05240885467 -2.44921875 -2.364257813 -2.44921875 c 5 + -2.364257813 -4.865234375 -2.364257813 -7.28125 -2.364257813 -9.697265625 c 5 + -1.68424479217 -9.697265625 -1.00423177133 -9.697265625 -0.3242187505 -9.697265625 c 5 + -0.3242187505 -10.0732421875 -0.3242187505 -10.44921875 -0.3242187505 -10.8251953125 c 5 + -2.2324218755 -10.8251953125 -4.1406250005 -10.8251953125 -6.0488281255 -10.8251953125 c 5 +6.4238281245 -5.5693359375 m 4 + 6.4238281245 -6.1767578125 6.331054687 -6.7490234375 6.147460937 -7.28515625 c 132 + 5.963867187 -7.8212890625 5.727539062 -8.3134765625 5.4394531245 -8.7607421875 c 132 + 5.151367187 -9.208984375 4.829101562 -9.609375 4.473632812 -9.9609375 c 132 + 4.1171874995 -10.3134765625 3.7675781245 -10.6015625 3.4238281245 -10.8251953125 c 5 + 2.82356770783 -10.8251953125 2.22330729117 -10.8251953125 1.6230468745 -10.8251953125 c 5 + 2.0957031245 -10.4814453125 2.5195312495 -10.1494140625 2.895507812 -9.8291015625 c 132 + 3.2714843745 -9.5087890625 3.5996093745 -9.181640625 3.879882812 -8.8447265625 c 132 + 4.159179687 -8.5087890625 4.393554687 -8.1533203125 4.581054687 -7.77734375 c 132 + 4.7695312495 -7.4013671875 4.915039062 -6.9892578125 5.0195312495 -6.541015625 c 5 + 4.99153645783 -6.533203125 4.96354166617 -6.525390625 4.9355468745 -6.517578125 c 5 + 4.8476562495 -6.685546875 4.745117187 -6.8427734375 4.629882812 -6.9912109375 c 132 + 4.5136718745 -7.1396484375 4.377929687 -7.26953125 4.221679687 -7.380859375 c 132 + 4.065429687 -7.4931640625 3.887695312 -7.5810546875 3.6874999995 -7.6455078125 c 132 + 3.487304687 -7.708984375 3.2558593745 -7.7412109375 2.991210937 -7.7412109375 c 4 + 2.639648437 -7.7412109375 2.313476562 -7.681640625 2.0136718745 -7.5615234375 c 132 + 1.713867187 -7.44140625 1.4531249995 -7.267578125 1.233398437 -7.0390625 c 132 + 1.0136718745 -6.8115234375 0.8417968745 -6.5390625 0.717773437 -6.2236328125 c 132 + 0.5937499995 -5.9072265625 0.5312499995 -5.548828125 0.5312499995 -5.1494140625 c 4 + 0.5312499995 -4.7333984375 0.6015624995 -4.349609375 0.741210937 -3.9970703125 c 132 + 0.881835937 -3.6455078125 1.079101562 -3.3447265625 1.3359374995 -3.09765625 c 132 + 1.5917968745 -2.849609375 1.899414062 -2.6552734375 2.2597656245 -2.515625 c 132 + 2.6191406245 -2.375 3.0234374995 -2.3056640625 3.471679687 -2.3056640625 c 4 + 3.9355468745 -2.3056640625 4.3496093745 -2.380859375 4.713867187 -2.533203125 c 132 + 5.077148437 -2.685546875 5.385742187 -2.9033203125 5.637695312 -3.1875 c 132 + 5.889648437 -3.4716796875 6.0839843745 -3.8134765625 6.219726562 -4.212890625 c 132 + 6.3554687495 -4.61328125 6.4238281245 -5.0654296875 6.4238281245 -5.5693359375 c 4 +3.471679687 -6.6494140625 m 260 + 3.959960937 -6.6494140625 4.3398437495 -6.51953125 4.6113281245 -6.2587890625 c 132 + 4.883789062 -5.9990234375 5.0195312495 -5.6171875 5.0195312495 -5.11328125 c 5 + 5.0195312495 -5.05729166667 5.0195312495 -5.00130208333 5.0195312495 -4.9453125 c 5 + 5.0195312495 -4.44140625 4.883789062 -4.0595703125 4.6113281245 -3.798828125 c 132 + 4.3398437495 -3.5390625 3.959960937 -3.4091796875 3.471679687 -3.4091796875 c 260 + 2.983398437 -3.4091796875 2.6035156245 -3.5390625 2.331054687 -3.798828125 c 132 + 2.059570312 -4.0595703125 1.9238281245 -4.44140625 1.9238281245 -4.9453125 c 5 + 1.9238281245 -5.00130208333 1.9238281245 -5.05729166667 1.9238281245 -5.11328125 c 5 + 1.9238281245 -5.6171875 2.059570312 -5.9990234375 2.331054687 -6.2587890625 c 132 + 2.6035156245 -6.51953125 2.983398437 -6.6494140625 3.471679687 -6.6494140625 c 260 +-3.400390625 -0.1435546875 m 4 + -4.49609375 -0.1435546875 -5.3564453125 0.2255859375 -5.98046875 0.9658203125 c 132 + -6.6044921875 1.7060546875 -6.916015625 2.7802734375 -6.916015625 4.1884765625 c 4 + -6.916015625 4.8916015625 -6.8359375 5.51171875 -6.67578125 6.0478515625 c 132 + -6.5166015625 6.583984375 -6.2841796875 7.0361328125 -5.98046875 7.404296875 c 132 + -5.67578125 7.7724609375 -5.306640625 8.0498046875 -4.8701171875 8.23828125 c 132 + -4.4345703125 8.42578125 -3.9443359375 8.51953125 -3.400390625 8.51953125 c 4 + -2.671875 8.51953125 -2.0625 8.3603515625 -1.5703125 8.0400390625 c 132 + -1.078125 7.7197265625 -0.6923828125 7.248046875 -0.412109375 6.6240234375 c 5 + -0.7919921875 6.416015625 -1.171875 6.2080078125 -1.5517578125 6 c 5 + -1.6962890625 6.400390625 -1.91796875 6.7177734375 -2.2177734375 6.9541015625 c 132 + -2.5185546875 7.1904296875 -2.912109375 7.3076171875 -3.400390625 7.3076171875 c 4 + -4.0478515625 7.3076171875 -4.556640625 7.087890625 -4.923828125 6.6484375 c 132 + -5.2919921875 6.2080078125 -5.4765625 5.599609375 -5.4765625 4.82421875 c 5 + -5.4765625 4.40006510417 -5.4765625 3.97591145833 -5.4765625 3.5517578125 c 5 + -5.4765625 2.7763671875 -5.2919921875 2.16796875 -4.923828125 1.7275390625 c 132 + -4.556640625 1.2880859375 -4.0478515625 1.068359375 -3.400390625 1.068359375 c 4 + -2.896484375 1.068359375 -2.486328125 1.1982421875 -2.169921875 1.4580078125 c 132 + -1.8544921875 1.7177734375 -1.6201171875 2.0517578125 -1.4677734375 2.4599609375 c 5 + -1.10384114583 2.23990885417 -0.739908854167 2.01985677083 -0.3759765625 1.7998046875 c 5 + -0.65625 1.1923828125 -1.0478515625 0.7158203125 -1.5517578125 0.3720703125 c 132 + -2.056640625 0.0283203125 -2.671875 -0.1435546875 -3.400390625 -0.1435546875 c 4 +6.916015625 0 m 5 + 5.01985677083 -0 3.12369791667 0 1.2275390625 0 c 5 + 1.2275390625 0.431966145833 1.2275390625 0.863932291667 1.2275390625 1.2958984375 c 5 + 2.11979166667 2.091796875 3.01204427083 2.8876953125 3.904296875 3.68359375 c 5 + 4.328125 4.068359375 4.654296875 4.43359375 4.8818359375 4.7822265625 c 132 + 5.109375 5.1298828125 5.2236328125 5.49609375 5.2236328125 5.8798828125 c 5 + 5.2236328125 5.93196614583 5.2236328125 5.98404947917 5.2236328125 6.0361328125 c 5 + 5.2236328125 6.4443359375 5.1015625 6.763671875 4.857421875 6.99609375 c 132 + 4.6142578125 7.2275390625 4.2841796875 7.34375 3.8681640625 7.34375 c 4 + 3.6357421875 7.34375 3.43359375 7.3095703125 3.26171875 7.2421875 c 132 + 3.08984375 7.173828125 2.939453125 7.080078125 2.8115234375 6.9599609375 c 132 + 2.68359375 6.83984375 2.578125 6.7001953125 2.494140625 6.5400390625 c 132 + 2.41015625 6.3798828125 2.34375 6.2080078125 2.2958984375 6.0244140625 c 5 + 1.89973958333 6.17643229167 1.50358072917 6.32845052083 1.107421875 6.48046875 c 5 + 1.1962890625 6.744140625 1.3154296875 6.998046875 1.4677734375 7.2421875 c 132 + 1.6201171875 7.486328125 1.8115234375 7.7041015625 2.0439453125 7.896484375 c 132 + 2.275390625 8.087890625 2.5498046875 8.240234375 2.8662109375 8.3515625 c 132 + 3.181640625 8.4638671875 3.5517578125 8.51953125 3.9755859375 8.51953125 c 260 + 4.3994140625 8.51953125 4.7802734375 8.4580078125 5.1162109375 8.333984375 c 132 + 5.4521484375 8.2099609375 5.7333984375 8.0380859375 5.9619140625 7.818359375 c 132 + 6.189453125 7.59765625 6.3642578125 7.3359375 6.4833984375 7.0322265625 c 132 + 6.603515625 6.7275390625 6.6640625 6.396484375 6.6640625 6.0361328125 c 4 + 6.6640625 5.7001953125 6.6123046875 5.3876953125 6.5078125 5.099609375 c 132 + 6.404296875 4.8115234375 6.259765625 4.5400390625 6.076171875 4.2841796875 c 132 + 5.8916015625 4.0283203125 5.677734375 3.7841796875 5.43359375 3.5517578125 c 132 + 5.189453125 3.3203125 4.931640625 3.083984375 4.66015625 2.84375 c 5 + 4.00390625 2.27994791667 3.34765625 1.71614583333 2.69140625 1.15234375 c 5 + 4.099609375 1.15234375 5.5078125 1.15234375 6.916015625 1.15234375 c 5 + 6.916015625 0.768229166667 6.916015625 0.384114583333 6.916015625 0 c 5 +EndSplineSet +EndUndoOperation +UndoOperation +Index: 1 +Type: 3 +WasModified: 1 +WasOrder2: 0 +Layer: 2 +EndUndoOperation +UndoOperation +Index: 2 +Type: 1 +WasModified: 1 +WasOrder2: 0 +Layer: 2 +Width: 1792 +VWidth: 1792 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +SplineSet +-6.0488281255 -10.8251953125 m 1 + -6.0488281255 -10.44921875 -6.0488281255 -10.0732421875 -6.0488281255 -9.697265625 c 1 + -5.264648438 -9.697265625 -4.4804687505 -9.697265625 -3.696289063 -9.697265625 c 1 + -3.696289063 -7.609375 -3.696289063 -5.521484375 -3.696289063 -3.43359375 c 1 + -3.7285156255 -3.43359375 -3.760742188 -3.43359375 -3.7929687505 -3.43359375 c 1 + -4.44075520883 -4.12532552083 -5.08854166717 -4.81705729167 -5.7363281255 -5.5087890625 c 1 + -6.01236979217 -5.26106770833 -6.28841145883 -5.01334635417 -6.5644531255 -4.765625 c 1 + -5.852539063 -3.99348958333 -5.1406250005 -3.22135416667 -4.428710938 -2.44921875 c 1 + -3.74055989633 -2.44921875 -3.05240885467 -2.44921875 -2.364257813 -2.44921875 c 1 + -2.364257813 -4.865234375 -2.364257813 -7.28125 -2.364257813 -9.697265625 c 1 + -1.68424479217 -9.697265625 -1.00423177133 -9.697265625 -0.3242187505 -9.697265625 c 1 + -0.3242187505 -10.0732421875 -0.3242187505 -10.44921875 -0.3242187505 -10.8251953125 c 1 + -2.2324218755 -10.8251953125 -4.1406250005 -10.8251953125 -6.0488281255 -10.8251953125 c 1 +6.4238281245 -5.5693359375 m 0 + 6.4238281245 -6.1767578125 6.331054687 -6.7490234375 6.147460937 -7.28515625 c 128 + 5.963867187 -7.8212890625 5.727539062 -8.3134765625 5.4394531245 -8.7607421875 c 128 + 5.151367187 -9.208984375 4.829101562 -9.609375 4.473632812 -9.9609375 c 128 + 4.1171874995 -10.3134765625 3.7675781245 -10.6015625 3.4238281245 -10.8251953125 c 1 + 2.82356770783 -10.8251953125 2.22330729117 -10.8251953125 1.6230468745 -10.8251953125 c 1 + 2.0957031245 -10.4814453125 2.5195312495 -10.1494140625 2.895507812 -9.8291015625 c 128 + 3.2714843745 -9.5087890625 3.5996093745 -9.181640625 3.879882812 -8.8447265625 c 128 + 4.159179687 -8.5087890625 4.393554687 -8.1533203125 4.581054687 -7.77734375 c 128 + 4.7695312495 -7.4013671875 4.915039062 -6.9892578125 5.0195312495 -6.541015625 c 1 + 4.99153645783 -6.533203125 4.96354166617 -6.525390625 4.9355468745 -6.517578125 c 1 + 4.8476562495 -6.685546875 4.745117187 -6.8427734375 4.629882812 -6.9912109375 c 128 + 4.5136718745 -7.1396484375 4.377929687 -7.26953125 4.221679687 -7.380859375 c 128 + 4.065429687 -7.4931640625 3.887695312 -7.5810546875 3.6874999995 -7.6455078125 c 128 + 3.487304687 -7.708984375 3.2558593745 -7.7412109375 2.991210937 -7.7412109375 c 0 + 2.639648437 -7.7412109375 2.313476562 -7.681640625 2.0136718745 -7.5615234375 c 128 + 1.713867187 -7.44140625 1.4531249995 -7.267578125 1.233398437 -7.0390625 c 128 + 1.0136718745 -6.8115234375 0.8417968745 -6.5390625 0.717773437 -6.2236328125 c 128 + 0.5937499995 -5.9072265625 0.5312499995 -5.548828125 0.5312499995 -5.1494140625 c 0 + 0.5312499995 -4.7333984375 0.6015624995 -4.349609375 0.741210937 -3.9970703125 c 128 + 0.881835937 -3.6455078125 1.079101562 -3.3447265625 1.3359374995 -3.09765625 c 128 + 1.5917968745 -2.849609375 1.899414062 -2.6552734375 2.2597656245 -2.515625 c 128 + 2.6191406245 -2.375 3.0234374995 -2.3056640625 3.471679687 -2.3056640625 c 0 + 3.9355468745 -2.3056640625 4.3496093745 -2.380859375 4.713867187 -2.533203125 c 128 + 5.077148437 -2.685546875 5.385742187 -2.9033203125 5.637695312 -3.1875 c 128 + 5.889648437 -3.4716796875 6.0839843745 -3.8134765625 6.219726562 -4.212890625 c 128 + 6.3554687495 -4.61328125 6.4238281245 -5.0654296875 6.4238281245 -5.5693359375 c 0 +3.471679687 -6.6494140625 m 256 + 3.959960937 -6.6494140625 4.3398437495 -6.51953125 4.6113281245 -6.2587890625 c 128 + 4.883789062 -5.9990234375 5.0195312495 -5.6171875 5.0195312495 -5.11328125 c 1 + 5.0195312495 -5.05729166667 5.0195312495 -5.00130208333 5.0195312495 -4.9453125 c 1 + 5.0195312495 -4.44140625 4.883789062 -4.0595703125 4.6113281245 -3.798828125 c 128 + 4.3398437495 -3.5390625 3.959960937 -3.4091796875 3.471679687 -3.4091796875 c 256 + 2.983398437 -3.4091796875 2.6035156245 -3.5390625 2.331054687 -3.798828125 c 128 + 2.059570312 -4.0595703125 1.9238281245 -4.44140625 1.9238281245 -4.9453125 c 1 + 1.9238281245 -5.00130208333 1.9238281245 -5.05729166667 1.9238281245 -5.11328125 c 1 + 1.9238281245 -5.6171875 2.059570312 -5.9990234375 2.331054687 -6.2587890625 c 128 + 2.6035156245 -6.51953125 2.983398437 -6.6494140625 3.471679687 -6.6494140625 c 256 +-3.400390625 -0.1435546875 m 0 + -4.49609375 -0.1435546875 -5.3564453125 0.2255859375 -5.98046875 0.9658203125 c 128 + -6.6044921875 1.7060546875 -6.916015625 2.7802734375 -6.916015625 4.1884765625 c 0 + -6.916015625 4.8916015625 -6.8359375 5.51171875 -6.67578125 6.0478515625 c 128 + -6.5166015625 6.583984375 -6.2841796875 7.0361328125 -5.98046875 7.404296875 c 128 + -5.67578125 7.7724609375 -5.306640625 8.0498046875 -4.8701171875 8.23828125 c 128 + -4.4345703125 8.42578125 -3.9443359375 8.51953125 -3.400390625 8.51953125 c 0 + -2.671875 8.51953125 -2.0625 8.3603515625 -1.5703125 8.0400390625 c 128 + -1.078125 7.7197265625 -0.6923828125 7.248046875 -0.412109375 6.6240234375 c 1 + -0.7919921875 6.416015625 -1.171875 6.2080078125 -1.5517578125 6 c 1 + -1.6962890625 6.400390625 -1.91796875 6.7177734375 -2.2177734375 6.9541015625 c 128 + -2.5185546875 7.1904296875 -2.912109375 7.3076171875 -3.400390625 7.3076171875 c 0 + -4.0478515625 7.3076171875 -4.556640625 7.087890625 -4.923828125 6.6484375 c 128 + -5.2919921875 6.2080078125 -5.4765625 5.599609375 -5.4765625 4.82421875 c 1 + -5.4765625 4.40006510417 -5.4765625 3.97591145833 -5.4765625 3.5517578125 c 1 + -5.4765625 2.7763671875 -5.2919921875 2.16796875 -4.923828125 1.7275390625 c 128 + -4.556640625 1.2880859375 -4.0478515625 1.068359375 -3.400390625 1.068359375 c 0 + -2.896484375 1.068359375 -2.486328125 1.1982421875 -2.169921875 1.4580078125 c 128 + -1.8544921875 1.7177734375 -1.6201171875 2.0517578125 -1.4677734375 2.4599609375 c 1 + -1.10384114583 2.23990885417 -0.739908854167 2.01985677083 -0.3759765625 1.7998046875 c 1 + -0.65625 1.1923828125 -1.0478515625 0.7158203125 -1.5517578125 0.3720703125 c 128 + -2.056640625 0.0283203125 -2.671875 -0.1435546875 -3.400390625 -0.1435546875 c 0 +6.916015625 0 m 1 + 5.01985677083 -0 3.12369791667 0 1.2275390625 0 c 1 + 1.2275390625 0.431966145833 1.2275390625 0.863932291667 1.2275390625 1.2958984375 c 1 + 2.11979166667 2.091796875 3.01204427083 2.8876953125 3.904296875 3.68359375 c 1 + 4.328125 4.068359375 4.654296875 4.43359375 4.8818359375 4.7822265625 c 128 + 5.109375 5.1298828125 5.2236328125 5.49609375 5.2236328125 5.8798828125 c 1 + 5.2236328125 5.93196614583 5.2236328125 5.98404947917 5.2236328125 6.0361328125 c 1 + 5.2236328125 6.4443359375 5.1015625 6.763671875 4.857421875 6.99609375 c 128 + 4.6142578125 7.2275390625 4.2841796875 7.34375 3.8681640625 7.34375 c 0 + 3.6357421875 7.34375 3.43359375 7.3095703125 3.26171875 7.2421875 c 128 + 3.08984375 7.173828125 2.939453125 7.080078125 2.8115234375 6.9599609375 c 128 + 2.68359375 6.83984375 2.578125 6.7001953125 2.494140625 6.5400390625 c 128 + 2.41015625 6.3798828125 2.34375 6.2080078125 2.2958984375 6.0244140625 c 1 + 1.89973958333 6.17643229167 1.50358072917 6.32845052083 1.107421875 6.48046875 c 1 + 1.1962890625 6.744140625 1.3154296875 6.998046875 1.4677734375 7.2421875 c 128 + 1.6201171875 7.486328125 1.8115234375 7.7041015625 2.0439453125 7.896484375 c 128 + 2.275390625 8.087890625 2.5498046875 8.240234375 2.8662109375 8.3515625 c 128 + 3.181640625 8.4638671875 3.5517578125 8.51953125 3.9755859375 8.51953125 c 256 + 4.3994140625 8.51953125 4.7802734375 8.4580078125 5.1162109375 8.333984375 c 128 + 5.4521484375 8.2099609375 5.7333984375 8.0380859375 5.9619140625 7.818359375 c 128 + 6.189453125 7.59765625 6.3642578125 7.3359375 6.4833984375 7.0322265625 c 128 + 6.603515625 6.7275390625 6.6640625 6.396484375 6.6640625 6.0361328125 c 0 + 6.6640625 5.7001953125 6.6123046875 5.3876953125 6.5078125 5.099609375 c 128 + 6.404296875 4.8115234375 6.259765625 4.5400390625 6.076171875 4.2841796875 c 128 + 5.8916015625 4.0283203125 5.677734375 3.7841796875 5.43359375 3.5517578125 c 128 + 5.189453125 3.3203125 4.931640625 3.083984375 4.66015625 2.84375 c 1 + 4.00390625 2.27994791667 3.34765625 1.71614583333 2.69140625 1.15234375 c 1 + 4.099609375 1.15234375 5.5078125 1.15234375 6.916015625 1.15234375 c 1 + 6.916015625 0.768229166667 6.916015625 0.384114583333 6.916015625 0 c 1 +-896 0 m 12 +NamedP: "baseline 1" + 896 0 l 1028 +EndSplineSet +EndUndoOperation +UndoOperation +Index: 3 +Type: 1 +WasModified: 1 +WasOrder2: 0 +Layer: 2 +Width: 1792 +VWidth: 1792 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +SplineSet +-6.0488281255 -10.8251953125 m 1 + -6.0488281255 -10.44921875 -6.0488281255 -10.0732421875 -6.0488281255 -9.697265625 c 1 + -5.264648438 -9.697265625 -4.4804687505 -9.697265625 -3.696289063 -9.697265625 c 1 + -3.696289063 -7.609375 -3.696289063 -5.521484375 -3.696289063 -3.43359375 c 1 + -3.7285156255 -3.43359375 -3.760742188 -3.43359375 -3.7929687505 -3.43359375 c 1 + -4.44075520883 -4.12532552083 -5.08854166717 -4.81705729167 -5.7363281255 -5.5087890625 c 1 + -6.01236979217 -5.26106770833 -6.28841145883 -5.01334635417 -6.5644531255 -4.765625 c 1 + -5.852539063 -3.99348958333 -5.1406250005 -3.22135416667 -4.428710938 -2.44921875 c 1 + -3.74055989633 -2.44921875 -3.05240885467 -2.44921875 -2.364257813 -2.44921875 c 1 + -2.364257813 -4.865234375 -2.364257813 -7.28125 -2.364257813 -9.697265625 c 1 + -1.68424479217 -9.697265625 -1.00423177133 -9.697265625 -0.3242187505 -9.697265625 c 1 + -0.3242187505 -10.0732421875 -0.3242187505 -10.44921875 -0.3242187505 -10.8251953125 c 1 + -2.2324218755 -10.8251953125 -4.1406250005 -10.8251953125 -6.0488281255 -10.8251953125 c 1 +6.4238281245 -5.5693359375 m 0 + 6.4238281245 -6.1767578125 6.331054687 -6.7490234375 6.147460937 -7.28515625 c 128 + 5.963867187 -7.8212890625 5.727539062 -8.3134765625 5.4394531245 -8.7607421875 c 128 + 5.151367187 -9.208984375 4.829101562 -9.609375 4.473632812 -9.9609375 c 128 + 4.1171874995 -10.3134765625 3.7675781245 -10.6015625 3.4238281245 -10.8251953125 c 1 + 2.82356770783 -10.8251953125 2.22330729117 -10.8251953125 1.6230468745 -10.8251953125 c 1 + 2.0957031245 -10.4814453125 2.5195312495 -10.1494140625 2.895507812 -9.8291015625 c 128 + 3.2714843745 -9.5087890625 3.5996093745 -9.181640625 3.879882812 -8.8447265625 c 128 + 4.159179687 -8.5087890625 4.393554687 -8.1533203125 4.581054687 -7.77734375 c 128 + 4.7695312495 -7.4013671875 4.915039062 -6.9892578125 5.0195312495 -6.541015625 c 1 + 4.99153645783 -6.533203125 4.96354166617 -6.525390625 4.9355468745 -6.517578125 c 1 + 4.8476562495 -6.685546875 4.745117187 -6.8427734375 4.629882812 -6.9912109375 c 128 + 4.5136718745 -7.1396484375 4.377929687 -7.26953125 4.221679687 -7.380859375 c 128 + 4.065429687 -7.4931640625 3.887695312 -7.5810546875 3.6874999995 -7.6455078125 c 128 + 3.487304687 -7.708984375 3.2558593745 -7.7412109375 2.991210937 -7.7412109375 c 0 + 2.639648437 -7.7412109375 2.313476562 -7.681640625 2.0136718745 -7.5615234375 c 128 + 1.713867187 -7.44140625 1.4531249995 -7.267578125 1.233398437 -7.0390625 c 128 + 1.0136718745 -6.8115234375 0.8417968745 -6.5390625 0.717773437 -6.2236328125 c 128 + 0.5937499995 -5.9072265625 0.5312499995 -5.548828125 0.5312499995 -5.1494140625 c 0 + 0.5312499995 -4.7333984375 0.6015624995 -4.349609375 0.741210937 -3.9970703125 c 128 + 0.881835937 -3.6455078125 1.079101562 -3.3447265625 1.3359374995 -3.09765625 c 128 + 1.5917968745 -2.849609375 1.899414062 -2.6552734375 2.2597656245 -2.515625 c 128 + 2.6191406245 -2.375 3.0234374995 -2.3056640625 3.471679687 -2.3056640625 c 0 + 3.9355468745 -2.3056640625 4.3496093745 -2.380859375 4.713867187 -2.533203125 c 128 + 5.077148437 -2.685546875 5.385742187 -2.9033203125 5.637695312 -3.1875 c 128 + 5.889648437 -3.4716796875 6.0839843745 -3.8134765625 6.219726562 -4.212890625 c 128 + 6.3554687495 -4.61328125 6.4238281245 -5.0654296875 6.4238281245 -5.5693359375 c 0 +3.471679687 -6.6494140625 m 256 + 3.959960937 -6.6494140625 4.3398437495 -6.51953125 4.6113281245 -6.2587890625 c 128 + 4.883789062 -5.9990234375 5.0195312495 -5.6171875 5.0195312495 -5.11328125 c 1 + 5.0195312495 -5.05729166667 5.0195312495 -5.00130208333 5.0195312495 -4.9453125 c 1 + 5.0195312495 -4.44140625 4.883789062 -4.0595703125 4.6113281245 -3.798828125 c 128 + 4.3398437495 -3.5390625 3.959960937 -3.4091796875 3.471679687 -3.4091796875 c 256 + 2.983398437 -3.4091796875 2.6035156245 -3.5390625 2.331054687 -3.798828125 c 128 + 2.059570312 -4.0595703125 1.9238281245 -4.44140625 1.9238281245 -4.9453125 c 1 + 1.9238281245 -5.00130208333 1.9238281245 -5.05729166667 1.9238281245 -5.11328125 c 1 + 1.9238281245 -5.6171875 2.059570312 -5.9990234375 2.331054687 -6.2587890625 c 128 + 2.6035156245 -6.51953125 2.983398437 -6.6494140625 3.471679687 -6.6494140625 c 256 +-3.400390625 -0.1435546875 m 0 + -4.49609375 -0.1435546875 -5.3564453125 0.2255859375 -5.98046875 0.9658203125 c 128 + -6.6044921875 1.7060546875 -6.916015625 2.7802734375 -6.916015625 4.1884765625 c 0 + -6.916015625 4.8916015625 -6.8359375 5.51171875 -6.67578125 6.0478515625 c 128 + -6.5166015625 6.583984375 -6.2841796875 7.0361328125 -5.98046875 7.404296875 c 128 + -5.67578125 7.7724609375 -5.306640625 8.0498046875 -4.8701171875 8.23828125 c 128 + -4.4345703125 8.42578125 -3.9443359375 8.51953125 -3.400390625 8.51953125 c 0 + -2.671875 8.51953125 -2.0625 8.3603515625 -1.5703125 8.0400390625 c 128 + -1.078125 7.7197265625 -0.6923828125 7.248046875 -0.412109375 6.6240234375 c 1 + -0.7919921875 6.416015625 -1.171875 6.2080078125 -1.5517578125 6 c 1 + -1.6962890625 6.400390625 -1.91796875 6.7177734375 -2.2177734375 6.9541015625 c 128 + -2.5185546875 7.1904296875 -2.912109375 7.3076171875 -3.400390625 7.3076171875 c 0 + -4.0478515625 7.3076171875 -4.556640625 7.087890625 -4.923828125 6.6484375 c 128 + -5.2919921875 6.2080078125 -5.4765625 5.599609375 -5.4765625 4.82421875 c 1 + -5.4765625 4.40006510417 -5.4765625 3.97591145833 -5.4765625 3.5517578125 c 1 + -5.4765625 2.7763671875 -5.2919921875 2.16796875 -4.923828125 1.7275390625 c 128 + -4.556640625 1.2880859375 -4.0478515625 1.068359375 -3.400390625 1.068359375 c 0 + -2.896484375 1.068359375 -2.486328125 1.1982421875 -2.169921875 1.4580078125 c 128 + -1.8544921875 1.7177734375 -1.6201171875 2.0517578125 -1.4677734375 2.4599609375 c 1 + -1.10384114583 2.23990885417 -0.739908854167 2.01985677083 -0.3759765625 1.7998046875 c 1 + -0.65625 1.1923828125 -1.0478515625 0.7158203125 -1.5517578125 0.3720703125 c 128 + -2.056640625 0.0283203125 -2.671875 -0.1435546875 -3.400390625 -0.1435546875 c 0 +6.916015625 0 m 1 + 5.01985677083 -0 3.12369791667 0 1.2275390625 0 c 1 + 1.2275390625 0.431966145833 1.2275390625 0.863932291667 1.2275390625 1.2958984375 c 1 + 2.11979166667 2.091796875 3.01204427083 2.8876953125 3.904296875 3.68359375 c 1 + 4.328125 4.068359375 4.654296875 4.43359375 4.8818359375 4.7822265625 c 128 + 5.109375 5.1298828125 5.2236328125 5.49609375 5.2236328125 5.8798828125 c 1 + 5.2236328125 5.93196614583 5.2236328125 5.98404947917 5.2236328125 6.0361328125 c 1 + 5.2236328125 6.4443359375 5.1015625 6.763671875 4.857421875 6.99609375 c 128 + 4.6142578125 7.2275390625 4.2841796875 7.34375 3.8681640625 7.34375 c 0 + 3.6357421875 7.34375 3.43359375 7.3095703125 3.26171875 7.2421875 c 128 + 3.08984375 7.173828125 2.939453125 7.080078125 2.8115234375 6.9599609375 c 128 + 2.68359375 6.83984375 2.578125 6.7001953125 2.494140625 6.5400390625 c 128 + 2.41015625 6.3798828125 2.34375 6.2080078125 2.2958984375 6.0244140625 c 1 + 1.89973958333 6.17643229167 1.50358072917 6.32845052083 1.107421875 6.48046875 c 1 + 1.1962890625 6.744140625 1.3154296875 6.998046875 1.4677734375 7.2421875 c 128 + 1.6201171875 7.486328125 1.8115234375 7.7041015625 2.0439453125 7.896484375 c 128 + 2.275390625 8.087890625 2.5498046875 8.240234375 2.8662109375 8.3515625 c 128 + 3.181640625 8.4638671875 3.5517578125 8.51953125 3.9755859375 8.51953125 c 256 + 4.3994140625 8.51953125 4.7802734375 8.4580078125 5.1162109375 8.333984375 c 128 + 5.4521484375 8.2099609375 5.7333984375 8.0380859375 5.9619140625 7.818359375 c 128 + 6.189453125 7.59765625 6.3642578125 7.3359375 6.4833984375 7.0322265625 c 128 + 6.603515625 6.7275390625 6.6640625 6.396484375 6.6640625 6.0361328125 c 0 + 6.6640625 5.7001953125 6.6123046875 5.3876953125 6.5078125 5.099609375 c 128 + 6.404296875 4.8115234375 6.259765625 4.5400390625 6.076171875 4.2841796875 c 128 + 5.8916015625 4.0283203125 5.677734375 3.7841796875 5.43359375 3.5517578125 c 128 + 5.189453125 3.3203125 4.931640625 3.083984375 4.66015625 2.84375 c 1 + 4.00390625 2.27994791667 3.34765625 1.71614583333 2.69140625 1.15234375 c 1 + 4.099609375 1.15234375 5.5078125 1.15234375 6.916015625 1.15234375 c 1 + 6.916015625 0.768229166667 6.916015625 0.384114583333 6.916015625 0 c 1 +-717.389648438 -10.8251953125 m 12 +NamedP: "baseline 2" + 717.249023438 -10.8251953125 l 1028 +-896 0 m 8 +NamedP: "baseline 1" + 896 0 l 1024 +EndSplineSet +EndUndoOperation +UndoOperation +Index: 4 +Type: 1 +WasModified: 1 +WasOrder2: 0 +Layer: 2 +Width: 1792 +VWidth: 1792 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +SplineSet +-3.400390625 -0.1435546875 m 0 + -4.49609375 -0.1435546875 -5.3564453125 0.2255859375 -5.98046875 0.9658203125 c 128 + -6.6044921875 1.7060546875 -6.916015625 2.7802734375 -6.916015625 4.1884765625 c 0 + -6.916015625 4.8916015625 -6.8359375 5.51171875 -6.67578125 6.0478515625 c 128 + -6.5166015625 6.583984375 -6.2841796875 7.0361328125 -5.98046875 7.404296875 c 128 + -5.67578125 7.7724609375 -5.306640625 8.0498046875 -4.8701171875 8.23828125 c 128 + -4.4345703125 8.42578125 -3.9443359375 8.51953125 -3.400390625 8.51953125 c 0 + -2.671875 8.51953125 -2.0625 8.3603515625 -1.5703125 8.0400390625 c 128 + -1.078125 7.7197265625 -0.6923828125 7.248046875 -0.412109375 6.6240234375 c 1 + -0.7919921875 6.416015625 -1.171875 6.2080078125 -1.5517578125 6 c 1 + -1.6962890625 6.400390625 -1.91796875 6.7177734375 -2.2177734375 6.9541015625 c 128 + -2.5185546875 7.1904296875 -2.912109375 7.3076171875 -3.400390625 7.3076171875 c 0 + -4.0478515625 7.3076171875 -4.556640625 7.087890625 -4.923828125 6.6484375 c 128 + -5.2919921875 6.2080078125 -5.4765625 5.599609375 -5.4765625 4.82421875 c 1 + -5.4765625 4.40006510417 -5.4765625 3.97591145833 -5.4765625 3.5517578125 c 1 + -5.4765625 2.7763671875 -5.2919921875 2.16796875 -4.923828125 1.7275390625 c 128 + -4.556640625 1.2880859375 -4.0478515625 1.068359375 -3.400390625 1.068359375 c 0 + -2.896484375 1.068359375 -2.486328125 1.1982421875 -2.169921875 1.4580078125 c 128 + -1.8544921875 1.7177734375 -1.6201171875 2.0517578125 -1.4677734375 2.4599609375 c 1 + -1.10384114583 2.23990885417 -0.739908854167 2.01985677083 -0.3759765625 1.7998046875 c 1 + -0.65625 1.1923828125 -1.0478515625 0.7158203125 -1.5517578125 0.3720703125 c 128 + -2.056640625 0.0283203125 -2.671875 -0.1435546875 -3.400390625 -0.1435546875 c 0 +6.916015625 0 m 1 + 5.01985677083 -0 3.12369791667 0 1.2275390625 0 c 1 + 1.2275390625 0.431966145833 1.2275390625 0.863932291667 1.2275390625 1.2958984375 c 1 + 2.11979166667 2.091796875 3.01204427083 2.8876953125 3.904296875 3.68359375 c 1 + 4.328125 4.068359375 4.654296875 4.43359375 4.8818359375 4.7822265625 c 128 + 5.109375 5.1298828125 5.2236328125 5.49609375 5.2236328125 5.8798828125 c 1 + 5.2236328125 5.93196614583 5.2236328125 5.98404947917 5.2236328125 6.0361328125 c 1 + 5.2236328125 6.4443359375 5.1015625 6.763671875 4.857421875 6.99609375 c 128 + 4.6142578125 7.2275390625 4.2841796875 7.34375 3.8681640625 7.34375 c 0 + 3.6357421875 7.34375 3.43359375 7.3095703125 3.26171875 7.2421875 c 128 + 3.08984375 7.173828125 2.939453125 7.080078125 2.8115234375 6.9599609375 c 128 + 2.68359375 6.83984375 2.578125 6.7001953125 2.494140625 6.5400390625 c 128 + 2.41015625 6.3798828125 2.34375 6.2080078125 2.2958984375 6.0244140625 c 1 + 1.89973958333 6.17643229167 1.50358072917 6.32845052083 1.107421875 6.48046875 c 1 + 1.1962890625 6.744140625 1.3154296875 6.998046875 1.4677734375 7.2421875 c 128 + 1.6201171875 7.486328125 1.8115234375 7.7041015625 2.0439453125 7.896484375 c 128 + 2.275390625 8.087890625 2.5498046875 8.240234375 2.8662109375 8.3515625 c 128 + 3.181640625 8.4638671875 3.5517578125 8.51953125 3.9755859375 8.51953125 c 256 + 4.3994140625 8.51953125 4.7802734375 8.4580078125 5.1162109375 8.333984375 c 128 + 5.4521484375 8.2099609375 5.7333984375 8.0380859375 5.9619140625 7.818359375 c 128 + 6.189453125 7.59765625 6.3642578125 7.3359375 6.4833984375 7.0322265625 c 128 + 6.603515625 6.7275390625 6.6640625 6.396484375 6.6640625 6.0361328125 c 0 + 6.6640625 5.7001953125 6.6123046875 5.3876953125 6.5078125 5.099609375 c 128 + 6.404296875 4.8115234375 6.259765625 4.5400390625 6.076171875 4.2841796875 c 128 + 5.8916015625 4.0283203125 5.677734375 3.7841796875 5.43359375 3.5517578125 c 128 + 5.189453125 3.3203125 4.931640625 3.083984375 4.66015625 2.84375 c 1 + 4.00390625 2.27994791667 3.34765625 1.71614583333 2.69140625 1.15234375 c 1 + 4.099609375 1.15234375 5.5078125 1.15234375 6.916015625 1.15234375 c 1 + 6.916015625 0.768229166667 6.916015625 0.384114583333 6.916015625 0 c 1 +-717.389648438 -10.8251953125 m 12 +NamedP: "baseline 2" + 717.249023438 -10.8251953125 l 1028 +-896 0 m 8 +NamedP: "baseline 1" + 896 0 l 1024 +EndSplineSet +EndUndoOperation +UndoOperation +Index: 5 +Type: 1 +WasModified: 1 +WasOrder2: 0 +Layer: 2 +Width: 1792 +VWidth: 1792 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +SplineSet +-717.389648438 -10.8251953125 m 8 +NamedP: "baseline 2" + 717.249023438 -10.8251953125 l 1024 +-896 0 m 12 +NamedP: "baseline 1" + 896 0 l 1028 +EndSplineSet +EndUndoOperation +UndoOperation +Index: 6 +Type: 3 +WasModified: 0 +WasOrder2: 0 +Layer: 2 +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +412.09375 -247.515625 m 1 + 412.09375 -217.4375 412.09375 -187.359375 412.09375 -157.28125 c 1 + 474.828125 -157.28125 537.5625 -157.28125 600.296875 -157.28125 c 1 + 600.296875 9.75 600.296875 176.78125 600.296875 343.8125 c 1 + 597.71875 343.8125 595.140625 343.8125 592.5625 343.8125 c 1 + 540.739257812 288.473632812 488.916992188 233.135742188 437.09375 177.796875 c 1 + 415.010742188 197.614257812 392.926757812 217.432617188 370.84375 237.25 c 1 + 427.796875 299.020507812 484.75 360.791992188 541.703125 422.5625 c 1 + 596.754882812 422.5625 651.807617188 422.5625 706.859375 422.5625 c 1 + 706.859375 229.28125 706.859375 36 706.859375 -157.28125 c 1 + 761.260742188 -157.28125 815.661132812 -157.28125 870.0625 -157.28125 c 1 + 870.0625 -187.359375 870.0625 -217.4375 870.0625 -247.515625 c 1 + 717.40625 -247.515625 564.75 -247.515625 412.09375 -247.515625 c 1 +1409.90625 172.953125 m 0 + 1409.90625 124.359375 1402.484375 78.578125 1387.796875 35.6875 c 128 + 1373.109375 -7.203125 1354.203125 -46.578125 1331.15625 -82.359375 c 128 + 1308.109375 -118.21875 1282.328125 -150.25 1253.890625 -178.375 c 128 + 1225.375 -206.578125 1197.40625 -229.625 1169.90625 -247.515625 c 1 + 1121.88574219 -247.515625 1073.86425781 -247.515625 1025.84375 -247.515625 c 1 + 1063.65625 -220.015625 1097.5625 -193.453125 1127.640625 -167.828125 c 128 + 1157.71875 -142.203125 1183.96875 -116.03125 1206.390625 -89.078125 c 128 + 1228.734375 -62.203125 1247.484375 -33.765625 1262.484375 -3.6875 c 128 + 1277.5625 26.390625 1289.203125 59.359375 1297.5625 95.21875 c 1 + 1295.32324219 95.84375 1293.08300781 96.46875 1290.84375 97.09375 c 1 + 1283.8125 83.65625 1275.609375 71.078125 1266.390625 59.203125 c 128 + 1257.09375 47.328125 1246.234375 36.9375 1233.734375 28.03125 c 128 + 1221.234375 19.046875 1207.015625 12.015625 1191 6.859375 c 128 + 1174.984375 1.78125 1156.46875 -0.796875 1135.296875 -0.796875 c 0 + 1107.171875 -0.796875 1081.078125 3.96875 1057.09375 13.578125 c 128 + 1033.109375 23.1875 1012.25 37.09375 994.671875 55.375 c 128 + 977.09375 73.578125 963.34375 95.375 953.421875 120.609375 c 128 + 943.5 145.921875 938.5 174.59375 938.5 206.546875 c 0 + 938.5 239.828125 944.125 270.53125 955.296875 298.734375 c 128 + 966.546875 326.859375 982.328125 350.921875 1002.875 370.6875 c 128 + 1023.34375 390.53125 1047.953125 406.078125 1076.78125 417.25 c 128 + 1105.53125 428.5 1137.875 434.046875 1173.734375 434.046875 c 0 + 1210.84375 434.046875 1243.96875 428.03125 1273.109375 415.84375 c 128 + 1302.171875 403.65625 1326.859375 386.234375 1347.015625 363.5 c 128 + 1367.171875 340.765625 1382.71875 313.421875 1393.578125 281.46875 c 128 + 1404.4375 249.4375 1409.90625 213.265625 1409.90625 172.953125 c 0 +1173.734375 86.546875 m 256 + 1212.796875 86.546875 1243.1875 96.9375 1264.90625 117.796875 c 128 + 1286.703125 138.578125 1297.5625 169.125 1297.5625 209.4375 c 1 + 1297.5625 213.916992188 1297.5625 218.395507812 1297.5625 222.875 c 1 + 1297.5625 263.1875 1286.703125 293.734375 1264.90625 314.59375 c 128 + 1243.1875 335.375 1212.796875 345.765625 1173.734375 345.765625 c 256 + 1134.671875 345.765625 1104.28125 335.375 1082.484375 314.59375 c 128 + 1060.765625 293.734375 1049.90625 263.1875 1049.90625 222.875 c 1 + 1049.90625 218.395507812 1049.90625 213.916992188 1049.90625 209.4375 c 1 + 1049.90625 169.125 1060.765625 138.578125 1082.484375 117.796875 c 128 + 1104.28125 96.9375 1134.671875 86.546875 1173.734375 86.546875 c 256 +623.96875 607.015625 m 0 + 536.3125 607.015625 467.484375 636.546875 417.5625 695.765625 c 128 + 367.640625 754.984375 342.71875 840.921875 342.71875 953.578125 c 0 + 342.71875 1009.828125 349.125 1059.4375 361.9375 1102.328125 c 128 + 374.671875 1145.21875 393.265625 1181.390625 417.5625 1210.84375 c 128 + 441.9375 1240.296875 471.46875 1262.484375 506.390625 1277.5625 c 128 + 541.234375 1292.5625 580.453125 1300.0625 623.96875 1300.0625 c 0 + 682.25 1300.0625 731 1287.328125 770.375 1261.703125 c 128 + 809.75 1236.078125 840.609375 1198.34375 863.03125 1148.421875 c 1 + 832.640625 1131.78125 802.25 1115.140625 771.859375 1098.5 c 1 + 760.296875 1130.53125 742.5625 1155.921875 718.578125 1174.828125 c 128 + 694.515625 1193.734375 663.03125 1203.109375 623.96875 1203.109375 c 0 + 572.171875 1203.109375 531.46875 1185.53125 502.09375 1150.375 c 128 + 472.640625 1115.140625 457.875 1066.46875 457.875 1004.4375 c 1 + 457.875 970.504882812 457.875 936.573242188 457.875 902.640625 c 1 + 457.875 840.609375 472.640625 791.9375 502.09375 756.703125 c 128 + 531.46875 721.546875 572.171875 703.96875 623.96875 703.96875 c 0 + 664.28125 703.96875 697.09375 714.359375 722.40625 735.140625 c 128 + 747.640625 755.921875 766.390625 782.640625 778.578125 815.296875 c 1 + 807.692382812 797.692382812 836.807617188 780.088867188 865.921875 762.484375 c 1 + 843.5 713.890625 812.171875 675.765625 771.859375 648.265625 c 128 + 731.46875 620.765625 682.25 607.015625 623.96875 607.015625 c 0 +1449.28125 618.5 m 1 + 1297.58886719 618.5 1145.89550781 618.5 994.203125 618.5 c 1 + 994.203125 653.057617188 994.203125 687.614257812 994.203125 722.171875 c 1 + 1065.58300781 785.84375 1136.96386719 849.515625 1208.34375 913.1875 c 1 + 1242.25 943.96875 1268.34375 973.1875 1286.546875 1001.078125 c 128 + 1304.75 1028.890625 1313.890625 1058.1875 1313.890625 1088.890625 c 1 + 1313.890625 1093.05761719 1313.890625 1097.22363281 1313.890625 1101.390625 c 1 + 1313.890625 1134.046875 1304.125 1159.59375 1284.59375 1178.1875 c 128 + 1265.140625 1196.703125 1238.734375 1206 1205.453125 1206 c 0 + 1186.859375 1206 1170.6875 1203.265625 1156.9375 1197.875 c 128 + 1143.1875 1192.40625 1131.15625 1184.90625 1120.921875 1175.296875 c 128 + 1110.6875 1165.6875 1102.25 1154.515625 1095.53125 1141.703125 c 128 + 1088.8125 1128.890625 1083.5 1115.140625 1079.671875 1100.453125 c 1 + 1047.97949219 1112.61425781 1016.28613281 1124.77636719 984.59375 1136.9375 c 1 + 991.703125 1158.03125 1001.234375 1178.34375 1013.421875 1197.875 c 128 + 1025.609375 1217.40625 1040.921875 1234.828125 1059.515625 1250.21875 c 128 + 1078.03125 1265.53125 1099.984375 1277.71875 1125.296875 1286.625 c 128 + 1150.53125 1295.609375 1180.140625 1300.0625 1214.046875 1300.0625 c 256 + 1247.953125 1300.0625 1278.421875 1295.140625 1305.296875 1285.21875 c 128 + 1332.171875 1275.296875 1354.671875 1261.546875 1372.953125 1243.96875 c 128 + 1391.15625 1226.3125 1405.140625 1205.375 1414.671875 1181.078125 c 128 + 1424.28125 1156.703125 1429.125 1130.21875 1429.125 1101.390625 c 0 + 1429.125 1074.515625 1424.984375 1049.515625 1416.625 1026.46875 c 128 + 1408.34375 1003.421875 1396.78125 981.703125 1382.09375 961.234375 c 128 + 1367.328125 940.765625 1350.21875 921.234375 1330.6875 902.640625 c 128 + 1311.15625 884.125 1290.53125 865.21875 1268.8125 846 c 1 + 1216.3125 800.895507812 1163.8125 755.791992188 1111.3125 710.6875 c 1 + 1223.96875 710.6875 1336.625 710.6875 1449.28125 710.6875 c 1 + 1449.28125 679.958007812 1449.28125 649.229492188 1449.28125 618.5 c 1 +EndSplineSet +EndChar EndChars EndSplineFont diff --git a/res/icons.sfd-01 b/res/icons.sfd-01 new file mode 100644 index 000000000..dd258ba16 --- /dev/null +++ b/res/icons.sfd-01 @@ -0,0 +1,6834 @@ +SplineFontDB: 3.2 +FontName: FurnaceIcons +FullName: Furnace Icons +FamilyName: Furnace Icons +Weight: Regular +Copyright: +UComments: "To generate a new letter icon:+AAoACgAA-- Open `icons.sfd` in FontForge.+AAoA-- Open +ACIA-IBM Plex Sans Medium+ACIA to the side. Return to the icons font.+AAoA-- Copy the two baselines from `E0F0` to the new codepoint.+AAoA-- Open the new codepoint.+AAoA-- Select the upper baseline.+AAoA-- Use `Element | Insert Text Outlines...` to place text:+AAoA - Turn off +ACIA-Scale so text width matches path length+ACIA.+AAoA - Align +ACIA-centered+ACIA.+AAoA - Type first line of text into the box.+AAoA - Click the +ACIA-Insert+ACIA button (might need window resize to be visible).+AAoA-- Delete the baseline.+AAoA-- If there's a line 2, repeat for the lower baseline, including deletion.+AAoA-- Select all.+AAoA-- Use `Element | Transformations | Transform...` to Scale Uniformly (from glyph origin) and Move as needed:+AAoA - One letter: 12000%, X 896, Y 15.5.+AAoA - Two letters: 10000%, X 896, Y 99.2.+AAoA - Three letters: 8000%, X 896, Y 183.+AAoA - Two lines: 8000%, X 896, Y 618.5.+AAoA-- If resulting glyph is too wide, repeat all steps starting with +ACIA-IBM Plex Sans Condensed Medium+ACIA instead.+AAoA - Remember to close the other IBM Plex font or select the proper one in the text dialog.+AAoACgAA-Notes:+AAoACgAA-- Codepoints `E0F0` to `E0F4` are for reference only.+AAoA-- The back layer of each of `E0F1` to `E0F4` has lines that show the expected tops and bottoms of text. Round letters and numerals will reach slightly above or below.+AAoA-- The WSG icon (`E11F`) has been slightly kerned to fit.+AAoA" +Version: 001.000 +ItalicAngle: 0 +UnderlinePosition: 0 +UnderlineWidth: 0 +Ascent: 1536 +Descent: 256 +InvalidEm: 0 +LayerCount: 2 +Layer: 0 0 "Back" 1 +Layer: 1 0 "Fore" 0 +XUID: [1021 230 235539655 14169] +FSType: 0 +OS2Version: 0 +OS2_WeightWidthSlopeOnly: 0 +OS2_UseTypoMetrics: 0 +CreationTime: 1691897631 +ModificationTime: 1692237157 +PfmFamily: 81 +TTFWeight: 400 +TTFWidth: 5 +LineGap: 0 +VLineGap: 0 +OS2TypoAscent: 1536 +OS2TypoAOffset: 0 +OS2TypoDescent: -256 +OS2TypoDOffset: 0 +OS2TypoLinegap: 0 +OS2WinAscent: 1536 +OS2WinAOffset: 0 +OS2WinDescent: 256 +OS2WinDOffset: 0 +HheadAscent: 1536 +HheadAOffset: 0 +HheadDescent: -256 +HheadDOffset: 0 +OS2Vendor: 'FurT' +MarkAttachClasses: 1 +DEI: 91125 +LangName: 1033 +Encoding: UnicodeBmp +UnicodeInterp: none +NameList: AGL For New Fonts +DisplaySize: -48 +AntiAlias: 1 +FitToEm: 0 +WinInfo: 57568 16 10 +BeginPrivate: 0 +EndPrivate +BeginChars: 65536 72 + +StartChar: space +Encoding: 32 32 0 +Width: 1792 +Flags: W +LayerCount: 2 +EndChar + +StartChar: uniE100 +Encoding: 57600 57600 1 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 171.516 95.9375<754.864 980.648 1382.09 1612.77> 449.875 95.0781<141.391 377.778 1516.16 1654.36> 768.625 95.9375<141.391 377.778 780.433 998.844 1381.56 1608.87> +VStem: 32.9531 108.438<183 449.875 544.953 758.078> 401.547 114.297<567.194 735.759> 648.969 107.5<611.387 747.68> 1008.97 107.5<294.565 441.758> 1203.19 116.172<330.958 704.848> 1663.97 95.0781<183 284.797 316.503 446.984> +DStem2: 863.031 584.25 844.75 481.594 0.978916 -0.204262<-84.378 149.631> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 171.516 95.9375<754.864 980.648 1382.09 1612.77> 449.875 95.0781<141.391 377.778 1516.16 1654.36> 768.625 95.9375<141.391 377.778 780.433 998.844 1381.56 1608.87> +VStem: 32.9531 108.438<183 449.875 544.953 758.078> 401.547 114.297<567.194 735.759> 648.969 107.5<611.387 747.68> 1008.97 107.5<294.565 441.758> 1203.19 116.172<330.958 704.848> 1663.97 95.0781<183 284.797 316.503 446.984> +DStem2: 863.031 584.25 844.75 481.594 0.978916 -0.204262<-84.378 149.631> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +32.953125 183 m 1 + 32.953125 406.359375 32.953125 629.71875 32.953125 853.078125 c 1 + 128.942382812 853.078125 224.932617188 853.078125 320.921875 853.078125 c 1 + 383.03125 853.078125 431 834.875 464.90625 798.390625 c 0 + 498.890625 761.90625 515.84375 712.921875 515.84375 651.515625 c 256 + 515.84375 590.03125 498.890625 541.046875 464.90625 504.5625 c 0 + 431 468.15625 383.03125 449.875 320.921875 449.875 c 1 + 261.078125 449.875 201.234375 449.875 141.390625 449.875 c 1 + 141.390625 360.916992188 141.390625 271.958007812 141.390625 183 c 1 + 105.245117188 183 69.0986328125 183 32.953125 183 c 1 +141.390625 544.953125 m 1 + 198.995117188 544.953125 256.598632812 544.953125 314.203125 544.953125 c 1 + 341.703125 544.953125 363.1875 552.140625 378.5 566.515625 c 0 + 393.890625 580.890625 401.546875 601.59375 401.546875 628.46875 c 1 + 401.546875 643.807617188 401.546875 659.145507812 401.546875 674.484375 c 1 + 401.546875 701.4375 393.890625 722.0625 378.5 736.4375 c 0 + 363.1875 750.8125 341.703125 758.078125 314.203125 758.078125 c 1 + 256.598632812 758.078125 198.995117188 758.078125 141.390625 758.078125 c 1 + 141.390625 687.036132812 141.390625 615.995117188 141.390625 544.953125 c 1 +873.578125 171.515625 m 0 + 817.25 171.515625 769.4375 181.75 730.0625 202.21875 c 0 + 690.6875 222.6875 656.9375 250.1875 628.8125 284.796875 c 1 + 653.760742188 308.15625 678.708007812 331.515625 703.65625 354.875 c 1 + 727.328125 326.046875 753.421875 304.25 781.859375 289.5625 c 0 + 810.375 274.875 842.875 267.453125 879.359375 267.453125 c 0 + 922.25 267.453125 954.515625 277.0625 976.3125 296.28125 c 0 + 998.03125 315.5 1008.96875 341.4375 1008.96875 374.015625 c 0 + 1008.96875 400.265625 1001.234375 421.046875 985.921875 436.4375 c 0 + 970.53125 451.828125 943.34375 463.3125 904.28125 470.96875 c 1 + 884.4375 474.510742188 864.59375 478.051757812 844.75 481.59375 c 1 + 779.515625 493.703125 730.53125 515.1875 697.875 545.890625 c 0 + 665.21875 576.59375 648.96875 618.859375 648.96875 672.609375 c 0 + 648.96875 702.0625 654.515625 728.78125 665.765625 752.765625 c 0 + 676.9375 776.75 692.640625 796.90625 712.796875 813.234375 c 0 + 732.953125 829.5625 757.40625 842.21875 786.234375 851.125 c 0 + 814.984375 860.109375 847.328125 864.5625 883.1875 864.5625 c 0 + 933.734375 864.5625 977.5625 855.8125 1014.671875 838.234375 c 0 + 1051.78125 820.578125 1083.5 795.1875 1109.75 761.90625 c 1 + 1084.46386719 739.510742188 1059.17675781 717.114257812 1033.890625 694.71875 c 1 + 1016.625 717.0625 995.53125 735.03125 970.53125 748.46875 c 0 + 945.609375 761.90625 914.515625 768.625 877.40625 768.625 c 0 + 839.046875 768.625 809.28125 760.890625 788.109375 745.578125 c 0 + 767.015625 730.1875 756.46875 707.765625 756.46875 678.390625 c 0 + 756.46875 650.1875 765.0625 629.25 782.40625 615.5 c 0 + 799.671875 601.75 826.546875 591.28125 863.03125 584.25 c 1 + 882.875 580.109375 902.71875 575.96875 922.5625 571.828125 c 1 + 989.75 559.015625 1038.890625 537.21875 1069.90625 506.515625 c 0 + 1100.921875 475.8125 1116.46875 433.546875 1116.46875 379.796875 c 0 + 1116.46875 348.46875 1111 319.953125 1100.140625 294.328125 c 0 + 1089.28125 268.78125 1073.421875 246.828125 1052.640625 228.625 c 0 + 1031.78125 210.34375 1006.390625 196.28125 976.3125 186.359375 c 0 + 946.234375 176.4375 911.9375 171.515625 873.578125 171.515625 c 0 +1663.96875 284.796875 m 1 + 1662.69238281 284.796875 1661.41699219 284.796875 1660.140625 284.796875 c 1 + 1653.109375 252.140625 1634.046875 225.109375 1603.03125 203.625 c 0 + 1571.9375 182.21875 1530.84375 171.515625 1479.671875 171.515625 c 0 + 1439.984375 171.515625 1403.1875 179.015625 1369.28125 194.015625 c 0 + 1335.296875 209.09375 1306.078125 231.125 1281.390625 260.265625 c 0 + 1256.78125 289.40625 1237.5625 325.578125 1223.8125 368.78125 c 0 + 1210.0625 411.984375 1203.1875 461.75 1203.1875 518.078125 c 0 + 1203.1875 573.703125 1210.21875 623.15625 1224.28125 666.359375 c 0 + 1238.34375 709.5625 1258.1875 745.890625 1283.8125 775.34375 c 0 + 1309.4375 804.796875 1340.140625 826.984375 1376 842.0625 c 0 + 1411.78125 857.0625 1451.78125 864.5625 1496 864.5625 c 0 + 1556.15625 864.5625 1607.015625 851.28125 1648.578125 824.796875 c 0 + 1690.21875 798.234375 1722.5625 761.203125 1745.609375 713.859375 c 1 + 1716.15625 696.59375 1686.703125 679.328125 1657.25 662.0625 c 1 + 1644.4375 693.390625 1624.59375 718.859375 1597.71875 738.390625 c 0 + 1570.84375 757.84375 1536.9375 767.609375 1496 767.609375 c 0 + 1442.875 767.609375 1400.140625 750.65625 1367.796875 716.75 c 0 + 1335.53125 682.84375 1319.359375 634.875 1319.359375 572.765625 c 1 + 1319.359375 536.28125 1319.359375 499.796875 1319.359375 463.3125 c 1 + 1319.359375 401.203125 1335.53125 353.234375 1367.796875 319.328125 c 0 + 1400.140625 285.421875 1442.875 268.46875 1496 268.46875 c 0 + 1517.09375 268.46875 1537.25 271.125 1556.46875 276.59375 c 0 + 1575.6875 282.0625 1592.484375 290.03125 1606.859375 300.578125 c 0 + 1621.234375 311.125 1632.796875 324.25 1641.390625 339.953125 c 0 + 1650.0625 355.65625 1654.359375 374.015625 1654.359375 395.1875 c 1 + 1654.359375 412.453125 1654.359375 429.71875 1654.359375 446.984375 c 1 + 1608.29199219 446.984375 1562.22363281 446.984375 1516.15625 446.984375 c 1 + 1516.15625 478.026367188 1516.15625 509.067382812 1516.15625 540.109375 c 1 + 1597.12011719 540.109375 1678.08300781 540.109375 1759.046875 540.109375 c 1 + 1759.046875 421.073242188 1759.046875 302.036132812 1759.046875 183 c 1 + 1727.35449219 183 1695.66113281 183 1663.96875 183 c 1 + 1663.96875 216.932617188 1663.96875 250.864257812 1663.96875 284.796875 c 1 +EndSplineSet +EndChar + +StartChar: uniE101 +Encoding: 57601 57601 2 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 171.516 90.2344<203.228 410.876> 453.703 90.2344<815.531 1024.71> 762.844 90.2344<194.777 419.326 815.531 1024.71> +VStem: 46.8594 109.453<309.775 726.303> 457.719 109.453<309.775 726.303> 713.734 101.797<183 453.703 543.938 762.844> 1043.97 108.516<563.279 743.506> 1273.73 117.109<777.653 853.078> 1273.73 97.9688<183 708.051> 1627.02 118.125<183 258.425> 1647.17 97.9688<328.027 853.078> +DStem2: 1590.53 450.812 1376.47 710.031 0.377481 -0.926017<-320.846 135.117> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 171.516 90.2344<203.228 410.876> 453.703 90.2344<815.531 1024.71> 762.844 90.2344<194.777 419.326 815.531 1024.71> +VStem: 46.8594 109.453<309.775 726.303> 457.719 109.453<309.775 726.303> 713.734 101.797<183 453.703 543.938 762.844> 1043.97 108.516<563.279 743.506> 1273.73 117.109<777.653 853.078> 1273.73 97.9688<183 708.051> 1627.02 118.125<183 258.425> 1647.17 97.9688<328.027 853.078> +DStem2: 1590.53 450.812 1376.47 710.031 0.377481 -0.926017<-320.846 135.117> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +307.015625 171.515625 m 256xfe + 266.703125 171.515625 230.53125 178.078125 198.578125 191.125 c 0 + 166.546875 204.25 139.203125 224.953125 116.46875 253.078125 c 0 + 93.734375 281.203125 76.46875 317.21875 64.59375 361.046875 c 0 + 52.796875 404.953125 46.859375 457.21875 46.859375 518.078125 c 256 + 46.859375 578.859375 52.796875 631.125 64.59375 675.03125 c 0 + 76.46875 718.859375 93.734375 754.875 116.46875 783 c 0 + 139.203125 811.125 166.546875 831.828125 198.578125 844.953125 c 0 + 230.53125 858.078125 266.703125 864.5625 307.015625 864.5625 c 256 + 347.328125 864.5625 383.5 858.078125 415.53125 844.953125 c 0 + 447.484375 831.828125 474.90625 811.125 497.5625 783 c 0 + 520.296875 754.875 537.5625 718.859375 549.4375 675.03125 c 0 + 561.234375 631.125 567.171875 578.859375 567.171875 518.078125 c 256 + 567.171875 457.21875 561.234375 404.953125 549.4375 361.046875 c 0 + 537.5625 317.21875 520.296875 281.203125 497.5625 253.078125 c 0 + 474.90625 224.953125 447.484375 204.25 415.53125 191.125 c 0 + 383.5 178.078125 347.328125 171.515625 307.015625 171.515625 c 256xfe +307.015625 261.75 m 256 + 355.0625 261.75 392.171875 277.21875 418.421875 308.3125 c 0 + 444.59375 339.328125 457.71875 382.375 457.71875 437.375 c 1 + 457.71875 491.151367188 457.71875 544.926757812 457.71875 598.703125 c 1 + 457.71875 653.703125 444.59375 696.75 418.421875 727.765625 c 0 + 392.171875 758.859375 355.0625 774.328125 307.015625 774.328125 c 256 + 259.046875 774.328125 221.9375 758.859375 195.6875 727.765625 c 0 + 169.4375 696.75 156.3125 653.703125 156.3125 598.703125 c 1 + 156.3125 544.926757812 156.3125 491.151367188 156.3125 437.375 c 1 + 156.3125 382.375 169.4375 339.328125 195.6875 308.3125 c 0 + 221.9375 277.21875 259.046875 261.75 307.015625 261.75 c 256 +713.734375 183 m 1 + 713.734375 406.359375 713.734375 629.71875 713.734375 853.078125 c 1 + 802.067382812 853.078125 890.401367188 853.078125 978.734375 853.078125 c 1 + 1036.3125 853.078125 1079.671875 835.96875 1108.8125 801.75 c 0 + 1137.875 767.453125 1152.484375 718.078125 1152.484375 653.390625 c 256 + 1152.484375 588.78125 1137.875 539.328125 1108.8125 505.109375 c 0 + 1079.671875 470.8125 1036.3125 453.703125 978.734375 453.703125 c 1 + 924.333007812 453.703125 869.932617188 453.703125 815.53125 453.703125 c 1 + 815.53125 363.46875 815.53125 273.234375 815.53125 183 c 1 + 781.598632812 183 747.666992188 183 713.734375 183 c 1 +815.53125 543.9375 m 1 + 867.041992188 543.9375 918.551757812 543.9375 970.0625 543.9375 c 1 + 994.359375 543.9375 1012.796875 550.1875 1025.296875 562.6875 c 0 + 1037.71875 575.1875 1043.96875 595.1875 1043.96875 622.6875 c 1 + 1043.96875 643.15625 1043.96875 663.625 1043.96875 684.09375 c 1 + 1043.96875 711.671875 1037.71875 731.671875 1025.296875 744.09375 c 0 + 1012.796875 756.59375 994.359375 762.84375 970.0625 762.84375 c 1 + 918.551757812 762.84375 867.041992188 762.84375 815.53125 762.84375 c 1 + 815.53125 689.875 815.53125 616.90625 815.53125 543.9375 c 1 +1427.328125 585.265625 m 1 + 1410.375 626.854492188 1393.421875 668.442382812 1376.46875 710.03125 c 1 + 1372.30175781 710.03125 1368.13574219 710.03125 1363.96875 710.03125 c 1 + 1366.546875 667.791992188 1369.125 625.551757812 1371.703125 583.3125 c 1 + 1371.703125 449.875 1371.703125 316.4375 1371.703125 183 c 1 + 1339.046875 183 1306.390625 183 1273.734375 183 c 1xfec0 + 1273.734375 406.359375 1273.734375 629.71875 1273.734375 853.078125 c 1 + 1312.77050781 853.078125 1351.80761719 853.078125 1390.84375 853.078125 c 1 + 1457.40625 718.989257812 1523.96875 584.901367188 1590.53125 450.8125 c 1 + 1607.82324219 409.223632812 1625.11425781 367.635742188 1642.40625 326.046875 c 1 + 1646.57324219 326.046875 1650.73925781 326.046875 1654.90625 326.046875 c 1 + 1652.328125 368.286132812 1649.75 410.526367188 1647.171875 452.765625 c 1 + 1647.171875 586.203125 1647.171875 719.640625 1647.171875 853.078125 c 1 + 1679.828125 853.078125 1712.484375 853.078125 1745.140625 853.078125 c 1xff20 + 1745.140625 629.71875 1745.140625 406.359375 1745.140625 183 c 1 + 1705.765625 183 1666.390625 183 1627.015625 183 c 1xfe40 + 1560.453125 317.088867188 1493.890625 451.176757812 1427.328125 585.265625 c 1 +EndSplineSet +EndChar + +StartChar: uniE102 +Encoding: 57602 57602 3 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 84.8447 121.191<399.409 663.663> 99.2002 116.406<1138.19 1452.86> 429.181 116.406<556.547 729.398> 470.001 112.793<1138.19 1425.21> 820.392 116.406<1138.19 1425.21> 829.962 121.191<400.057 661.626> +VStem: 165.336 145.312<297.614 737.606> 741.312 118.945<99.2002 226.446 277.934 429.181> 1002.64 135.547<215.606 470.001 582.794 820.392> 1453.81 142.773<609.386 793.799> 1483.7 142.969<244.11 441.498> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 84.8447 121.191<399.409 663.663> 99.2002 116.406<1138.19 1452.86> 429.181 116.406<556.547 729.398> 470.001 112.793<1138.19 1425.21> 820.392 116.406<1138.19 1425.21> 829.962 121.191<400.057 661.626> +VStem: 165.336 145.312<297.614 737.606> 741.312 118.945<99.2002 226.446 277.934 429.181> 1002.64 135.547<215.606 470.001 582.794 820.392> 1453.81 142.773<609.386 793.799> 1483.7 142.969<244.11 441.498> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +741.3125 226.446289062 m 1x6380 + 739.75 226.446289062 738.1875 226.446289062 736.625 226.446289062 c 1 + 727.8359375 185.625976562 704.0078125 151.836914062 665.140625 124.981445312 c 0 + 626.2734375 98.2236328125 574.90625 84.8447265625 511.0390625 84.8447265625 c 0 + 461.4296875 84.8447265625 415.3359375 94.2197265625 372.953125 112.969726562 c 0 + 330.5703125 131.817382812 294.046875 159.356445312 263.1875 195.782226562 c 0 + 232.328125 232.208007812 208.3046875 277.422851562 191.1171875 331.426757812 c 0 + 173.9296875 385.430664062 165.3359375 447.637695312 165.3359375 518.047851562 c 0 + 165.3359375 587.579101562 174.125 649.395507812 191.703125 703.399414062 c 0 + 209.28125 757.403320312 234.0859375 802.813476562 266.1171875 839.629882812 c 0 + 298.1484375 876.446289062 336.625 904.180664062 381.3515625 923.028320312 c 0 + 426.078125 941.778320312 476.078125 951.153320312 531.3515625 951.153320312 c 0 + 606.546875 951.153320312 670.21875 934.551757812 722.171875 901.446289062 c 0 + 774.125 868.243164062 814.5546875 821.954101562 843.4609375 762.774414062 c 1 + 806.612304688 741.192382812 769.762695312 719.610351562 732.9140625 698.028320312 c 1 + 716.8984375 737.188476562 692.09375 769.024414062 658.5 793.438476562 c 0 + 624.90625 817.754882812 582.5234375 829.961914062 531.3515625 829.961914062 c 0 + 464.9453125 829.961914062 411.625 808.770507812 371.1953125 766.387695312 c 0 + 330.765625 724.004882812 310.6484375 664.043945312 310.6484375 586.407226562 c 1 + 310.6484375 540.801757812 310.6484375 495.196289062 310.6484375 449.590820312 c 1 + 310.6484375 371.954101562 330.765625 311.993164062 371.1953125 269.610351562 c 0 + 411.625 227.227539062 464.9453125 206.036132812 531.3515625 206.036132812 c 0x8780 + 557.71875 206.036132812 582.9140625 209.356445312 606.9375 216.192382812 c 0 + 630.9609375 223.028320312 652.0546875 232.989257812 670.0234375 246.172851562 c 0 + 687.9921875 259.356445312 702.4453125 275.762695312 713.1875 295.391601562 c 0 + 723.9296875 315.020507812 729.3984375 337.969726562 729.3984375 364.434570312 c 1 + 729.3984375 386.016601562 729.3984375 407.598632812 729.3984375 429.180664062 c 1 + 671.78125 429.180664062 614.1640625 429.180664062 556.546875 429.180664062 c 1 + 556.546875 467.982421875 556.546875 506.784179688 556.546875 545.586914062 c 1 + 657.784179688 545.586914062 759.020507812 545.586914062 860.2578125 545.586914062 c 1 + 860.2578125 396.791015625 860.2578125 247.995117188 860.2578125 99.2001953125 c 1 + 820.609375 99.2001953125 780.9609375 99.2001953125 741.3125 99.2001953125 c 1 + 741.3125 141.615234375 741.3125 184.030273438 741.3125 226.446289062 c 1x6380 +1002.640625 936.797851562 m 1x4ba0 + 1126.20800781 936.797851562 1249.77636719 936.797851562 1373.34375 936.797851562 c 1 + 1442.875 936.797851562 1497.5625 917.168945312 1537.2109375 878.008789062 c 0 + 1576.859375 838.848632812 1596.5859375 786.407226562 1596.5859375 720.782226562 c 0x4bc0 + 1596.5859375 689.629882812 1592.09375 662.969726562 1583.3046875 640.997070312 c 0 + 1574.515625 619.024414062 1563.3828125 600.958007812 1549.7109375 586.993164062 c 0 + 1536.234375 573.028320312 1520.609375 562.579101562 1503.03125 555.840820312 c 0 + 1485.453125 549.004882812 1468.265625 544.805664062 1451.2734375 543.243164062 c 1 + 1451.2734375 540.833984375 1451.2734375 538.424804688 1451.2734375 536.016601562 c 1 + 1468.265625 535.235351562 1486.8203125 531.231445312 1507.1328125 524.004882812 c 0 + 1527.640625 516.778320312 1546.5859375 505.352539062 1564.1640625 489.825195312 c 0 + 1581.7421875 474.200195312 1596.5859375 454.180664062 1608.5 429.766601562 c 0 + 1620.609375 405.352539062 1626.6640625 375.567382812 1626.6640625 340.411132812 c 0 + 1626.6640625 306.817382812 1621.1953125 275.176757812 1610.453125 245.586914062 c 0 + 1599.515625 215.997070312 1584.4765625 190.411132812 1565.3359375 168.829101562 c 0 + 1546.1953125 147.247070312 1523.34375 130.157226562 1496.9765625 117.754882812 c 0 + 1470.609375 105.352539062 1441.703125 99.2001953125 1410.6484375 99.2001953125 c 1 + 1274.64550781 99.2001953125 1138.64355469 99.2001953125 1002.640625 99.2001953125 c 1 + 1002.640625 378.399414062 1002.640625 657.598632812 1002.640625 936.797851562 c 1x4ba0 +1138.1875 215.606445312 m 1 + 1215.79199219 215.606445312 1293.39550781 215.606445312 1371 215.606445312 c 1 + 1406.15625 215.606445312 1433.6953125 224.786132812 1453.8125 243.243164062 c 0x53c0 + 1473.734375 261.602539062 1483.6953125 287.969726562 1483.6953125 322.442382812 c 1 + 1483.6953125 336.016601562 1483.6953125 349.590820312 1483.6953125 363.165039062 c 1x53a0 + 1483.6953125 397.637695312 1473.734375 424.004882812 1453.8125 442.364257812 c 0 + 1433.6953125 460.821289062 1406.15625 470.000976562 1371 470.000976562 c 1 + 1293.39550781 470.000976562 1215.79199219 470.000976562 1138.1875 470.000976562 c 1x53c0 + 1138.1875 385.202148438 1138.1875 300.404296875 1138.1875 215.606445312 c 1 +1138.1875 582.793945312 m 1 + 1208.17480469 582.793945312 1278.16113281 582.793945312 1348.1484375 582.793945312 c 1 + 1381.7421875 582.793945312 1407.71875 591.387695312 1426.078125 608.575195312 c 0 + 1444.6328125 625.762695312 1453.8125 650.372070312 1453.8125 682.403320312 c 1 + 1453.8125 695.196289062 1453.8125 707.989257812 1453.8125 720.782226562 c 1 + 1453.8125 752.813476562 1444.6328125 777.422851562 1426.078125 794.610351562 c 0 + 1407.71875 811.797851562 1381.7421875 820.391601562 1348.1484375 820.391601562 c 1 + 1278.16113281 820.391601562 1208.17480469 820.391601562 1138.1875 820.391601562 c 1x1bc0 + 1138.1875 741.192382812 1138.1875 661.993164062 1138.1875 582.793945312 c 1 +EndSplineSet +EndChar + +StartChar: uniE103 +Encoding: 57603 57603 4 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 171.516 96.9531<226.177 441.873 832.752 1027.57> 313.547 85.4688<1326.08 1544.91 1647.64 1738.89> 519.016 87.3438<857.168 1024.42> 754.172 98.9062<1514.99 1544.91> 767.609 96.9531<226.122 440.941> +VStem: 53.1094 115.156<330.807 708.111> 694.047 112.344<291.954 486.784> 1054.05 111.406<291.954 486.784> 1544.91 102.734<183 313.547 399.016 754.172> +DStem2: 1233.89 406.672 1326.08 399.016 0.512745 0.858541<40.6955 454.37> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 171.516 96.9531<226.177 441.873 832.752 1027.57> 313.547 85.4688<1326.08 1544.91 1647.64 1738.89> 519.016 87.3438<857.168 1024.42> 754.172 98.9062<1514.99 1544.91> 767.609 96.9531<226.122 440.941> +VStem: 53.1094 115.156<330.807 708.111> 694.047 112.344<291.954 486.784> 1054.05 111.406<291.954 486.784> 1544.91 102.734<183 313.547 399.016 754.172> +DStem2: 1233.89 406.672 1326.08 399.016 0.512745 0.858541<40.6955 454.37> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +334.359375 171.515625 m 0xef80 + 246.703125 171.515625 177.875 201.046875 127.953125 260.265625 c 0 + 78.03125 319.484375 53.109375 405.421875 53.109375 518.078125 c 0 + 53.109375 574.328125 59.515625 623.9375 72.328125 666.828125 c 0 + 85.0625 709.71875 103.65625 745.890625 127.953125 775.34375 c 0 + 152.328125 804.796875 181.859375 826.984375 216.78125 842.0625 c 0 + 251.625 857.0625 290.84375 864.5625 334.359375 864.5625 c 0 + 392.640625 864.5625 441.390625 851.828125 480.765625 826.203125 c 0 + 520.140625 800.578125 551 762.84375 573.421875 712.921875 c 1 + 543.03125 696.28125 512.640625 679.640625 482.25 663 c 1 + 470.6875 695.03125 452.953125 720.421875 428.96875 739.328125 c 0 + 404.90625 758.234375 373.421875 767.609375 334.359375 767.609375 c 0 + 282.5625 767.609375 241.859375 750.03125 212.484375 714.875 c 0 + 183.03125 679.640625 168.265625 630.96875 168.265625 568.9375 c 1 + 168.265625 535.004882812 168.265625 501.073242188 168.265625 467.140625 c 1 + 168.265625 405.109375 183.03125 356.4375 212.484375 321.203125 c 0 + 241.859375 286.046875 282.5625 268.46875 334.359375 268.46875 c 0 + 374.671875 268.46875 407.484375 278.859375 432.796875 299.640625 c 0 + 458.03125 320.421875 476.78125 347.140625 488.96875 379.796875 c 1 + 518.083007812 362.192382812 547.198242188 344.588867188 576.3125 326.984375 c 1 + 553.890625 278.390625 522.5625 240.265625 482.25 212.765625 c 0 + 441.859375 185.265625 392.640625 171.515625 334.359375 171.515625 c 0xef80 +930.21875 171.515625 m 0 + 893.109375 171.515625 859.984375 177.53125 830.84375 189.71875 c 0 + 801.703125 201.90625 777.09375 219.328125 756.9375 242.0625 c 0 + 736.78125 264.796875 721.234375 292.140625 710.375 324.09375 c 0 + 699.515625 356.125 694.046875 392.296875 694.046875 432.609375 c 0 + 694.046875 481.203125 701.390625 526.984375 716.15625 569.875 c 0 + 730.84375 612.765625 749.75 652.140625 772.796875 687.921875 c 0 + 795.84375 723.78125 821.546875 755.65625 850.0625 783.46875 c 0 + 878.5 811.28125 906.546875 834.484375 934.046875 853.078125 c 1 + 982.041992188 853.078125 1030.03613281 853.078125 1078.03125 853.078125 c 1xf780 + 1040.296875 825.578125 1006.390625 799.015625 976.3125 773.390625 c 0 + 946.234375 747.765625 919.984375 721.59375 897.5625 694.71875 c 0 + 875.140625 667.765625 856.46875 639.328125 841.390625 609.25 c 0 + 826.390625 579.171875 814.671875 546.203125 806.390625 510.34375 c 1 + 808.629882812 509.71875 810.870117188 509.09375 813.109375 508.46875 c 1 + 820.140625 521.90625 828.265625 534.484375 837.5625 546.359375 c 0 + 846.859375 558.234375 857.71875 568.625 870.21875 577.53125 c 0 + 882.71875 586.515625 896.9375 593.546875 912.953125 598.703125 c 0 + 928.96875 603.78125 947.484375 606.359375 968.578125 606.359375 c 0 + 996.78125 606.359375 1022.875 601.59375 1046.859375 591.984375 c 0 + 1070.84375 582.375 1091.625 568.46875 1109.28125 550.1875 c 0 + 1126.859375 531.984375 1140.609375 510.03125 1150.53125 484.40625 c 0 + 1160.453125 458.859375 1165.453125 430.34375 1165.453125 399.015625 c 0 + 1165.453125 365.109375 1159.828125 334.171875 1148.578125 306.359375 c 0 + 1137.40625 278.546875 1121.546875 254.71875 1101.078125 234.875 c 0 + 1080.609375 215.03125 1055.84375 199.484375 1026.703125 188.3125 c 0 + 997.5625 177.0625 965.453125 171.515625 930.21875 171.515625 c 0 +930.21875 259.796875 m 256 + 969.28125 259.796875 999.671875 270.1875 1021.390625 290.96875 c 0 + 1043.1875 311.828125 1054.046875 342.375 1054.046875 382.6875 c 1 + 1054.046875 387.166992188 1054.046875 391.645507812 1054.046875 396.125 c 1 + 1054.046875 436.4375 1043.1875 466.984375 1021.390625 487.765625 c 0 + 999.671875 508.625 969.28125 519.015625 930.21875 519.015625 c 256 + 891.15625 519.015625 860.765625 508.625 839.046875 487.765625 c 0 + 817.25 466.984375 806.390625 436.4375 806.390625 396.125 c 1 + 806.390625 391.645507812 806.390625 387.166992188 806.390625 382.6875 c 1 + 806.390625 342.375 817.25 311.828125 839.046875 290.96875 c 0 + 860.765625 270.1875 891.15625 259.796875 930.21875 259.796875 c 256 +1544.90625 183 m 1 + 1544.90625 226.515625 1544.90625 270.03125 1544.90625 313.546875 c 1 + 1441.234375 313.546875 1337.5625 313.546875 1233.890625 313.546875 c 1 + 1233.890625 344.588867188 1233.890625 375.629882812 1233.890625 406.671875 c 1 + 1324.46386719 555.473632812 1415.03613281 704.276367188 1505.609375 853.078125 c 1 + 1552.953125 853.078125 1600.296875 853.078125 1647.640625 853.078125 c 1 + 1647.640625 701.723632812 1647.640625 550.370117188 1647.640625 399.015625 c 1 + 1678.05761719 399.015625 1708.47363281 399.015625 1738.890625 399.015625 c 1 + 1738.890625 370.526367188 1738.890625 342.036132812 1738.890625 313.546875 c 1 + 1708.47363281 313.546875 1678.05761719 313.546875 1647.640625 313.546875 c 1 + 1647.640625 270.03125 1647.640625 226.515625 1647.640625 183 c 1 + 1613.39550781 183 1579.15136719 183 1544.90625 183 c 1 +1326.078125 399.015625 m 1 + 1399.02050781 399.015625 1471.96386719 399.015625 1544.90625 399.015625 c 1 + 1544.90625 517.401367188 1544.90625 635.786132812 1544.90625 754.171875 c 1 + 1542.66699219 754.171875 1540.42675781 754.171875 1538.1875 754.171875 c 1 + 1467.484375 635.786132812 1396.78125 517.401367188 1326.078125 399.015625 c 1 +EndSplineSet +EndChar + +StartChar: uniE104 +Encoding: 57604 57604 5 +Width: 1792 +Flags: W +HStem: -247.516 89.2969<837.797 1081.62 1317.8 1604.83> 23.1875 90.2344<277.797 486.972> 49.125 88.2812<1317.8 1576.94> 333.266 89.2969<277.797 486.972 1317.8 1604.83> 607.016 89.2188<189.574 399.743> 803.812 83.5156<721.625 898.188> 1143.66 144.922<1249.91 1277.31 1597.41 1625.22> 1196.39 92.1875<794.01 822.99> 1210.84 89.2188<218.757 416.322> +VStem: 95.6875 101.719<1044.03 1191.27> 176 101.797<-247.516 23.1875 113.422 332.328> 420.219 101.719<716.929 880.209> 506.234 108.516<132.763 312.99> 544.906 99.8438<618.5 718.344> 736 101.797<-158.219 422.562> 974.125 102.656<618.5 721.156> 1158.66 97.9688<618.5 1141.9> 1216 101.797<-158.219 49.125 137.406 333.266> 1618.5 97.9688<618.5 1143.75> +DStem2: 289.594 1016.94 271.312 920.922 0.978371 -0.206857<-75.1218 135.909> 544.906 618.5 644.75 618.5 0.286825 0.957983<28.6377 221.043 308.22 625.862> 875.219 1288.58 835.844 1098.5 0.288055 -0.957614<72.4214 390.859 477.766 670.167> 1278.66 1288.58 1261.47 1143.66 0.416776 -0.909009<124.572 396.023> 1442.88 921.859 1613.81 1145.53 0.379583 0.925158<0 271.817> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +176 -247.515625 m 1xdc2b20 + 176 -24.15625 176 199.203125 176 422.5625 c 1 + 264.333007812 422.5625 352.666992188 422.5625 441 422.5625 c 1 + 498.578125 422.5625 541.9375 405.453125 571.078125 371.234375 c 0 + 600.140625 336.9375 614.75 287.5625 614.75 222.875 c 256 + 614.75 158.265625 600.140625 108.8125 571.078125 74.59375 c 0 + 541.9375 40.296875 498.578125 23.1875 441 23.1875 c 1 + 386.598632812 23.1875 332.198242188 23.1875 277.796875 23.1875 c 1 + 277.796875 -67.046875 277.796875 -157.28125 277.796875 -247.515625 c 1 + 243.864257812 -247.515625 209.932617188 -247.515625 176 -247.515625 c 1xdc2b20 +277.796875 113.421875 m 1 + 329.307617188 113.421875 380.817382812 113.421875 432.328125 113.421875 c 1 + 456.625 113.421875 475.0625 119.671875 487.5625 132.171875 c 0 + 499.984375 144.671875 506.234375 164.671875 506.234375 192.171875 c 1 + 506.234375 212.640625 506.234375 233.109375 506.234375 253.578125 c 1 + 506.234375 281.15625 499.984375 301.15625 487.5625 313.578125 c 0 + 475.0625 326.078125 456.625 332.328125 432.328125 332.328125 c 1 + 380.817382812 332.328125 329.307617188 332.328125 277.796875 332.328125 c 1 + 277.796875 259.359375 277.796875 186.390625 277.796875 113.421875 c 1 +736 -247.515625 m 1 + 736 -24.15625 736 199.203125 736 422.5625 c 1 + 769.932617188 422.5625 803.864257812 422.5625 837.796875 422.5625 c 1 + 837.796875 228.96875 837.796875 35.375 837.796875 -158.21875 c 1 + 919.073242188 -158.21875 1000.34863281 -158.21875 1081.625 -158.21875 c 1 + 1081.625 -187.984375 1081.625 -217.75 1081.625 -247.515625 c 1 + 966.416992188 -247.515625 851.208007812 -247.515625 736 -247.515625 c 1 +1216 -247.515625 m 1xbc0360 + 1216 -24.15625 1216 199.203125 1216 422.5625 c 1 + 1345.609375 422.5625 1475.21875 422.5625 1604.828125 422.5625 c 1 + 1604.828125 392.796875 1604.828125 363.03125 1604.828125 333.265625 c 1 + 1509.15136719 333.265625 1413.47363281 333.265625 1317.796875 333.265625 c 1 + 1317.796875 267.979492188 1317.796875 202.692382812 1317.796875 137.40625 c 1 + 1404.17675781 137.40625 1490.55761719 137.40625 1576.9375 137.40625 c 1 + 1576.9375 107.979492188 1576.9375 78.5517578125 1576.9375 49.125 c 1 + 1490.55761719 49.125 1404.17675781 49.125 1317.796875 49.125 c 1 + 1317.796875 -19.9892578125 1317.796875 -89.1044921875 1317.796875 -158.21875 c 1 + 1413.47363281 -158.21875 1509.15136719 -158.21875 1604.828125 -158.21875 c 1 + 1604.828125 -187.984375 1604.828125 -217.75 1604.828125 -247.515625 c 1 + 1475.21875 -247.515625 1345.609375 -247.515625 1216 -247.515625 c 1xbc0360 +300.21875 607.015625 m 0 + 250.21875 607.015625 206.9375 616.390625 170.0625 635.296875 c 0 + 133.34375 654.203125 101.78125 681.546875 75.53125 717.40625 c 1 + 98.8642578125 738.838867188 122.198242188 760.270507812 145.53125 781.703125 c 1 + 165.375 754.203125 188.1875 733.03125 213.8125 718.34375 c 0 + 239.28125 703.65625 268.5 696.234375 301.15625 696.234375 c 0 + 380.53125 696.234375 420.21875 732.71875 420.21875 805.6875 c 0 + 420.21875 835.140625 413.03125 857.71875 398.96875 873.34375 c 0 + 384.90625 889.046875 360.6875 901.078125 326 909.359375 c 1 + 307.770507812 913.213867188 289.541992188 917.067382812 271.3125 920.921875 c 1 + 211.15625 934.359375 166.9375 955.921875 138.34375 985.6875 c 0 + 109.90625 1015.453125 95.6875 1057.25 95.6875 1111 c 0 + 95.6875 1173.03125 114.4375 1220.0625 151.78125 1252.09375 c 0 + 189.28125 1284.125 241.625 1300.0625 308.8125 1300.0625 c 0 + 356.78125 1300.0625 397.25 1291.9375 430.21875 1275.609375 c 0 + 463.1875 1259.28125 491.78125 1233.890625 516.15625 1199.28125 c 1 + 492.770507812 1178.8125 469.385742188 1158.34375 446 1137.875 c 1 + 428.8125 1162.171875 409.4375 1180.453125 388.03125 1192.5625 c 0 + 366.625 1204.75 339.4375 1210.84375 306.9375 1210.84375 c 0 + 270.375 1210.84375 243.03125 1203.265625 224.75 1188.265625 c 0 + 206.625 1173.1875 197.40625 1148.421875 197.40625 1113.890625 c 0 + 197.40625 1085.6875 204.59375 1064.4375 218.96875 1049.984375 c 0 + 233.5 1035.609375 256.9375 1024.59375 289.59375 1016.9375 c 1 + 307.823242188 1012.77050781 326.051757812 1008.60449219 344.28125 1004.4375 c 1 + 376.3125 997.40625 403.5 988.578125 425.84375 978.03125 c 0 + 448.34375 967.484375 466.78125 954.515625 481.15625 939.125 c 0 + 495.53125 923.8125 505.84375 905.6875 512.25 884.90625 c 0 + 518.65625 864.125 521.9375 839.90625 521.9375 812.40625 c 0x9cd320 + 521.9375 745.21875 502.5625 694.203125 463.8125 659.28125 c 0 + 425.0625 624.4375 370.53125 607.015625 300.21875 607.015625 c 0 +974.125 618.5 m 1 + 956.833007812 680.270507812 939.541992188 742.041992188 922.25 803.8125 c 1 + 847.041992188 803.8125 771.833007812 803.8125 696.625 803.8125 c 1 + 679.333007812 742.041992188 662.041992188 680.270507812 644.75 618.5 c 1 + 611.46875 618.5 578.1875 618.5 544.90625 618.5 c 1 + 611.78125 841.859375 678.65625 1065.21875 745.53125 1288.578125 c 1 + 788.760742188 1288.578125 831.989257812 1288.578125 875.21875 1288.578125 c 1x9d0720 + 942.40625 1065.21875 1009.59375 841.859375 1076.78125 618.5 c 1 + 1042.5625 618.5 1008.34375 618.5 974.125 618.5 c 1 +835.84375 1098.5 m 1 + 828.8125 1131.12988281 821.78125 1163.76074219 814.75 1196.390625 c 1 + 810.583007812 1196.390625 806.416992188 1196.390625 802.25 1196.390625 c 1 + 795.21875 1163.76074219 788.1875 1131.12988281 781.15625 1098.5 c 1 + 761.3125 1028.109375 741.46875 957.71875 721.625 887.328125 c 1 + 780.479492188 887.328125 839.333007812 887.328125 898.1875 887.328125 c 1 + 877.40625 957.71875 856.625 1028.109375 835.84375 1098.5 c 1 +1618.5 1031.3125 m 1 + 1620.73925781 1069.38574219 1622.97949219 1107.45800781 1625.21875 1145.53125 c 1 + 1621.41699219 1145.53125 1617.61425781 1145.53125 1613.8125 1145.53125 c 1 + 1598.44824219 1108.08300781 1583.08300781 1070.63574219 1567.71875 1033.1875 c 1 + 1524.17675781 942.328125 1480.63574219 851.46875 1437.09375 760.609375 c 1 + 1393.91699219 851.46875 1350.73925781 942.328125 1307.5625 1033.1875 c 1 + 1292.19824219 1070.01074219 1276.83300781 1106.83300781 1261.46875 1143.65625 c 1 + 1257.61425781 1143.65625 1253.76074219 1143.65625 1249.90625 1143.65625 c 1x9e03a0 + 1252.14550781 1106.20800781 1254.38574219 1068.76074219 1256.625 1031.3125 c 1 + 1256.625 893.708007812 1256.625 756.104492188 1256.625 618.5 c 1 + 1223.96875 618.5 1191.3125 618.5 1158.65625 618.5 c 1 + 1158.65625 841.859375 1158.65625 1065.21875 1158.65625 1288.578125 c 1 + 1198.65625 1288.578125 1238.65625 1288.578125 1278.65625 1288.578125 c 1x9d03a0 + 1314.85449219 1210.50488281 1351.05175781 1132.43261719 1387.25 1054.359375 c 1 + 1402.92675781 1010.19238281 1418.60449219 966.026367188 1434.28125 921.859375 c 1 + 1437.14550781 921.859375 1440.01074219 921.859375 1442.875 921.859375 c 1 + 1458.55175781 966.026367188 1474.22949219 1010.19238281 1489.90625 1054.359375 c 1 + 1525.73925781 1132.43261719 1561.57324219 1210.50488281 1597.40625 1288.578125 c 1x9e03a0 + 1637.09375 1288.578125 1676.78125 1288.578125 1716.46875 1288.578125 c 1 + 1716.46875 1065.21875 1716.46875 841.859375 1716.46875 618.5 c 1 + 1683.8125 618.5 1651.15625 618.5 1618.5 618.5 c 1 + 1618.5 756.104492188 1618.5 893.708007812 1618.5 1031.3125 c 1 +EndSplineSet +EndChar + +StartChar: uniE105 +Encoding: 57605 57605 6 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 183 96.0156<814.669 1050.52 1429.91 1750.53> 449.875 95.0781<149.906 386.215> 474.875 95.9375<1429.91 1720.84> 757.062 96.0156<149.906 386.215 813.763 1048.56 1429.91 1750.53> +VStem: 41.4688 108.438<183 449.875 544.953 758.078> 410.062 114.219<567.194 735.759> 651.625 115.156<330.807 708.111> 1321.47 108.438<279.016 474.875 570.812 757.062> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 183 96.0156<814.669 1050.52 1429.91 1750.53> 449.875 95.0781<149.906 386.215> 474.875 95.9375<1429.91 1720.84> 757.062 96.0156<149.906 386.215 813.763 1048.56 1429.91 1750.53> +VStem: 41.4688 108.438<183 449.875 544.953 758.078> 410.062 114.219<567.194 735.759> 651.625 115.156<330.807 708.111> 1321.47 108.438<279.016 474.875 570.812 757.062> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +41.46875 183 m 1xdf + 41.46875 406.359375 41.46875 629.71875 41.46875 853.078125 c 1 + 137.458007812 853.078125 233.448242188 853.078125 329.4375 853.078125 c 1 + 391.46875 853.078125 439.4375 834.875 473.34375 798.390625 c 0 + 507.40625 761.90625 524.28125 712.921875 524.28125 651.515625 c 256 + 524.28125 590.03125 507.40625 541.046875 473.34375 504.5625 c 0 + 439.4375 468.15625 391.46875 449.875 329.4375 449.875 c 1 + 269.59375 449.875 209.75 449.875 149.90625 449.875 c 1 + 149.90625 360.916992188 149.90625 271.958007812 149.90625 183 c 1 + 113.760742188 183 77.6142578125 183 41.46875 183 c 1xdf +149.90625 544.953125 m 1 + 207.510742188 544.953125 265.114257812 544.953125 322.71875 544.953125 c 1 + 350.21875 544.953125 371.625 552.140625 386.9375 566.515625 c 0 + 402.40625 580.890625 410.0625 601.59375 410.0625 628.46875 c 1 + 410.0625 643.807617188 410.0625 659.145507812 410.0625 674.484375 c 1 + 410.0625 701.4375 402.40625 722.0625 386.9375 736.4375 c 0 + 371.625 750.8125 350.21875 758.078125 322.71875 758.078125 c 1 + 265.114257812 758.078125 207.510742188 758.078125 149.90625 758.078125 c 1 + 149.90625 687.036132812 149.90625 615.995117188 149.90625 544.953125 c 1 +932.875 171.515625 m 0 + 845.21875 171.515625 776.46875 201.046875 726.46875 260.265625 c 0 + 676.625 319.484375 651.625 405.421875 651.625 518.078125 c 0 + 651.625 574.328125 658.03125 623.9375 670.84375 666.828125 c 0 + 683.65625 709.71875 702.25 745.890625 726.46875 775.34375 c 0 + 750.84375 804.796875 780.375 826.984375 815.375 842.0625 c 0 + 850.21875 857.0625 889.4375 864.5625 932.875 864.5625 c 0 + 991.15625 864.5625 1039.90625 851.828125 1079.28125 826.203125 c 0 + 1118.65625 800.578125 1149.59375 762.84375 1171.9375 712.921875 c 1 + 1141.57324219 696.28125 1111.20800781 679.640625 1080.84375 663 c 1 + 1069.28125 695.03125 1051.46875 720.421875 1027.5625 739.328125 c 0 + 1003.5 758.234375 971.9375 767.609375 932.875 767.609375 c 0 + 881.15625 767.609375 840.375 750.03125 811 714.875 c 0 + 781.625 679.640625 766.78125 630.96875 766.78125 568.9375 c 1 + 766.78125 535.004882812 766.78125 501.073242188 766.78125 467.140625 c 1 + 766.78125 405.109375 781.625 356.4375 811 321.203125 c 0 + 840.375 286.046875 881.15625 268.46875 932.875 268.46875 c 0 + 973.1875 268.46875 1006 278.859375 1031.3125 299.640625 c 0 + 1056.625 320.421875 1075.375 347.140625 1087.5625 379.796875 c 1 + 1116.67675781 362.192382812 1145.79199219 344.588867188 1174.90625 326.984375 c 1 + 1152.40625 278.390625 1121.15625 240.265625 1080.84375 212.765625 c 0 + 1040.375 185.265625 991.15625 171.515625 932.875 171.515625 c 0 +1321.46875 183 m 1 + 1321.46875 406.359375 1321.46875 629.71875 1321.46875 853.078125 c 1 + 1464.48925781 853.078125 1607.51074219 853.078125 1750.53125 853.078125 c 1 + 1750.53125 821.073242188 1750.53125 789.067382812 1750.53125 757.0625 c 1 + 1643.65625 757.0625 1536.78125 757.0625 1429.90625 757.0625 c 1 + 1429.90625 694.979492188 1429.90625 632.895507812 1429.90625 570.8125 c 1 + 1526.88574219 570.8125 1623.86425781 570.8125 1720.84375 570.8125 c 1 + 1720.84375 538.833007812 1720.84375 506.854492188 1720.84375 474.875 c 1 + 1623.86425781 474.875 1526.88574219 474.875 1429.90625 474.875 c 1xbf + 1429.90625 409.588867188 1429.90625 344.301757812 1429.90625 279.015625 c 1 + 1536.78125 279.015625 1643.65625 279.015625 1750.53125 279.015625 c 1 + 1750.53125 247.010742188 1750.53125 215.004882812 1750.53125 183 c 1 + 1607.51074219 183 1464.48925781 183 1321.46875 183 c 1 +EndSplineSet +EndChar + +StartChar: uniE106 +Encoding: 57606 57606 7 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 325.958 116.406<389.164 636.43> 811.993 124.805<499.082 527.573> +VStem: 145.609 137.891<99.2002 237.091> 745.609 141.602<99.2002 240.802> 1220.41 135.547<99.2002 492.633> +DStem2: 145.609 99.2002 283.5 99.2002 0.303392 0.952866<41.8349 280.126 400.882 789.887> 601.664 936.798 516.312 811.993 0.306233 -0.951957<92.6712 481.326 602.427 841.437> 1087.21 936.798 932.328 936.798 0.479431 -0.877579<0 425.309> 1294.83 563.556 1355.96 431.622 0.477305 0.878738<0 424.748> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 325.958 116.406<389.164 636.43> 811.993 124.805<499.082 527.573> +VStem: 145.609 137.891<99.2002 237.091> 745.609 141.602<99.2002 240.802> 1220.41 135.547<99.2002 492.633> +DStem2: 145.609 99.2002 283.5 99.2002 0.303392 0.952866<41.8349 280.126 400.882 789.887> 601.664 936.798 516.312 811.993 0.306233 -0.951957<92.6712 481.326 602.427 841.437> 1087.21 936.798 932.328 936.798 0.479431 -0.877579<0 425.309> 1294.83 563.556 1355.96 431.622 0.477305 0.878738<0 424.748> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +745.609375 99.2001953125 m 1 + 720.4140625 174.786132812 695.21875 250.372070312 670.0234375 325.958007812 c 1 + 565.596679688 325.958007812 461.168945312 325.958007812 356.7421875 325.958007812 c 1 + 332.328125 250.372070312 307.9140625 174.786132812 283.5 99.2001953125 c 1 + 237.536132812 99.2001953125 191.573242188 99.2001953125 145.609375 99.2001953125 c 1 + 240.791992188 378.399414062 335.973632812 657.598632812 431.15625 936.797851562 c 1 + 487.9921875 936.797851562 544.828125 936.797851562 601.6640625 936.797851562 c 1 + 696.846679688 657.598632812 792.028320312 378.399414062 887.2109375 99.2001953125 c 1 + 840.010742188 99.2001953125 792.809570312 99.2001953125 745.609375 99.2001953125 c 1 +516.3125 811.993164062 m 1 + 514.359375 811.993164062 512.40625 811.993164062 510.453125 811.993164062 c 1 + 470.0234375 688.783203125 429.59375 565.573242188 389.1640625 442.364257812 c 1 + 471.5859375 442.364257812 554.0078125 442.364257812 636.4296875 442.364257812 c 1 + 596.390625 565.573242188 556.3515625 688.783203125 516.3125 811.993164062 c 1 +1220.4140625 99.2001953125 m 1 + 1220.4140625 209.193359375 1220.4140625 319.186523438 1220.4140625 429.180664062 c 1 + 1124.38574219 598.385742188 1028.35644531 767.591796875 932.328125 936.797851562 c 1 + 983.956054688 936.797851562 1035.58300781 936.797851562 1087.2109375 936.797851562 c 1 + 1155.1796875 812.383789062 1223.1484375 687.969726562 1291.1171875 563.555664062 c 1 + 1292.35449219 563.555664062 1293.59082031 563.555664062 1294.828125 563.555664062 c 1 + 1362.40625 687.969726562 1429.984375 812.383789062 1497.5625 936.797851562 c 1 + 1547.171875 936.797851562 1596.78125 936.797851562 1646.390625 936.797851562 c 1 + 1549.58105469 768.405273438 1452.77050781 600.013671875 1355.9609375 431.622070312 c 1 + 1355.9609375 320.814453125 1355.9609375 210.006835938 1355.9609375 99.2001953125 c 1 + 1310.77832031 99.2001953125 1265.59667969 99.2001953125 1220.4140625 99.2001953125 c 1 +EndSplineSet +EndChar + +StartChar: uniE107 +Encoding: 57607 57607 8 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -253.33 91.1719<486.344 688.342 1095.48 1270.78> 60.5762 92.1094<518.508 677.882> 348.545 91.1719<497.902 685.553 1095.48 1270.78> 612.686 87.3438<530.171 727.317> 870.889 87.3438<1092.63 1259.92> 930.42 83.5156<544.742 712.82> 1218.39 87.3438<537.628 719.903 1093.28 1280.94> +VStem: 388.742 113.281<728.719 901.73> 408.898 105.625<1038.68 1193.65> 708.586 114.219<179.923 323.321> 722.023 112.344<-131.94 32.8528> 743.039 105.547<1038.68 1193.65> 755.461 113.281<728.719 901.73> 940.305 115.156<-121.3 307.598 991.115 1184.56> 1310.85 115.156<-122.103 308.491 990.464 1185.29> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -253.33 91.1719<486.344 688.342 1095.48 1270.78> 60.5762 92.1094<518.508 677.882> 348.545 91.1719<497.902 685.553 1095.48 1270.78> 612.686 87.3438<530.171 727.317> 870.889 87.3438<1092.63 1259.92> 930.42 83.5156<544.742 712.82> 1218.39 87.3438<537.628 719.903 1093.28 1280.94> +VStem: 388.742 113.281<728.719 901.73> 408.898 105.625<1038.68 1193.65> 708.586 114.219<179.923 323.321> 722.023 112.344<-131.94 32.8528> 743.039 105.547<1038.68 1193.65> 755.461 113.281<728.719 901.73> 940.305 115.156<-121.3 307.598 991.115 1184.56> 1310.85 115.156<-122.103 308.491 990.464 1185.29> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +586.6328125 152.685546875 m 1xf226 + 628.2734375 152.685546875 658.9765625 161.513671875 678.8203125 179.091796875 c 0 + 698.6640625 196.748046875 708.5859375 219.248046875 708.5859375 246.826171875 c 1 + 708.5859375 249.065429688 708.5859375 251.305664062 708.5859375 253.544921875 c 1 + 708.5859375 284.248046875 698.9765625 307.763671875 679.7578125 324.091796875 c 0 + 660.6171875 340.419921875 634.6796875 348.544921875 602.0234375 348.544921875 c 0 + 569.9921875 348.544921875 542.8046875 341.357421875 520.4609375 326.982421875 c 0 + 498.0390625 312.529296875 479.1328125 292.529296875 463.8203125 266.982421875 c 1 + 439.809570312 287.763671875 415.799804688 308.544921875 391.7890625 329.326171875 c 1 + 402.0234375 344.091796875 413.5859375 358.154296875 426.3203125 371.591796875 c 0 + 439.1328125 385.029296875 454.2109375 396.748046875 471.4765625 406.669921875 c 0 + 488.7421875 416.591796875 508.2734375 424.560546875 529.9921875 430.654296875 c 0 + 551.7890625 436.748046875 576.7109375 439.716796875 604.9140625 439.716796875 c 0 + 636.2421875 439.716796875 665.3828125 435.888671875 692.2578125 428.232421875 c 0 + 719.1328125 420.576171875 742.1796875 409.169921875 761.3984375 394.169921875 c 0 + 780.6171875 379.091796875 795.6171875 360.888671875 806.4765625 339.404296875 c 0 + 817.4140625 317.998046875 822.8046875 293.857421875 822.8046875 266.982421875 c 0xf246 + 822.8046875 245.810546875 819.4453125 226.669921875 812.7265625 209.326171875 c 0 + 806.0078125 192.060546875 796.7109375 176.904296875 784.9140625 163.779296875 c 0 + 773.0390625 150.654296875 759.2890625 139.951171875 743.6640625 131.591796875 c 0 + 727.9609375 123.310546875 711.4765625 117.216796875 694.2109375 113.388671875 c 1 + 694.2109375 111.774414062 694.2109375 110.159179688 694.2109375 108.544921875 c 1 + 713.3515625 104.716796875 731.4765625 98.466796875 748.4296875 89.873046875 c 0 + 765.3828125 81.201171875 780.3046875 70.029296875 793.0390625 56.201171875 c 0 + 805.8515625 42.451171875 815.9296875 26.123046875 823.2734375 7.294921875 c 0 + 830.6953125 -11.611328125 834.3671875 -33.173828125 834.3671875 -57.548828125 c 0 + 834.3671875 -87.001953125 828.5859375 -113.720703125 817.1015625 -137.705078125 c 0 + 805.5390625 -161.689453125 789.3671875 -182.314453125 768.5859375 -199.580078125 c 0 + 747.8046875 -216.923828125 722.6484375 -230.126953125 693.1953125 -239.423828125 c 0 + 663.8203125 -248.720703125 631.1640625 -253.330078125 595.3046875 -253.330078125 c 0 + 563.9765625 -253.330078125 536.3984375 -249.970703125 512.7265625 -243.251953125 c 0 + 489.0546875 -236.533203125 468.1171875 -227.626953125 449.8359375 -216.376953125 c 0 + 431.6328125 -205.205078125 415.6171875 -192.392578125 401.8671875 -178.017578125 c 0 + 388.1171875 -163.642578125 376.0859375 -148.720703125 365.8515625 -133.330078125 c 1 + 392.4140625 -112.548828125 418.9765625 -91.767578125 445.5390625 -70.986328125 c 1 + 453.8984375 -84.423828125 462.6484375 -96.689453125 471.9453125 -107.939453125 c 0 + 481.2421875 -119.111328125 491.7890625 -128.720703125 503.6640625 -136.689453125 c 0 + 515.4609375 -144.736328125 528.8984375 -150.986328125 543.9765625 -155.439453125 c 0 + 558.9765625 -159.892578125 576.0859375 -162.158203125 595.3046875 -162.158203125 c 0 + 636.2421875 -162.158203125 667.6484375 -152.392578125 689.3671875 -132.861328125 c 0 + 711.1640625 -113.330078125 722.0234375 -86.298828125 722.0234375 -51.767578125 c 1 + 722.0234375 -49.5283203125 722.0234375 -47.2880859375 722.0234375 -45.048828125 c 1 + 722.0234375 -10.517578125 710.5390625 15.732421875 687.4921875 33.701171875 c 0 + 664.4453125 51.591796875 631.7890625 60.576171875 589.5234375 60.576171875 c 1 + 565.8515625 60.576171875 542.1796875 60.576171875 518.5078125 60.576171875 c 1 + 518.5078125 91.279296875 518.5078125 121.982421875 518.5078125 152.685546875 c 1 + 541.215820312 152.685546875 563.924804688 152.685546875 586.6328125 152.685546875 c 1xf226 +1183.1171875 -253.330078125 m 0 + 1141.5546875 -253.330078125 1105.3828125 -245.517578125 1074.6796875 -229.814453125 c 0 + 1043.9765625 -214.189453125 1018.6640625 -191.611328125 998.8203125 -162.158203125 c 0 + 978.9765625 -132.705078125 964.2890625 -96.533203125 954.6796875 -53.720703125 c 0 + 945.0703125 -10.830078125 940.3046875 38.154296875 940.3046875 93.232421875 c 0 + 940.3046875 147.607421875 945.0703125 196.357421875 954.6796875 239.560546875 c 0 + 964.2890625 282.763671875 978.9765625 319.091796875 998.8203125 348.544921875 c 0 + 1018.6640625 377.998046875 1043.9765625 400.576171875 1074.6796875 416.201171875 c 0 + 1105.3828125 431.904296875 1141.5546875 439.716796875 1183.1171875 439.716796875 c 0 + 1266.3203125 439.716796875 1327.6484375 409.326171875 1367.0234375 348.544921875 c 0 + 1406.3203125 287.763671875 1426.0078125 202.607421875 1426.0078125 93.232421875 c 256 + 1426.0078125 -16.220703125 1406.3203125 -101.376953125 1367.0234375 -162.158203125 c 0 + 1327.6484375 -222.939453125 1266.3203125 -253.330078125 1183.1171875 -253.330078125 c 0 +1183.1171875 -161.220703125 m 256 + 1206.1640625 -161.220703125 1225.8515625 -156.533203125 1242.1796875 -147.314453125 c 0 + 1258.5078125 -138.017578125 1271.7890625 -124.736328125 1282.0234375 -107.470703125 c 0 + 1292.2578125 -90.126953125 1299.6015625 -69.501953125 1304.1328125 -45.517578125 c 0 + 1308.5859375 -21.533203125 1310.8515625 5.185546875 1310.8515625 34.638671875 c 1 + 1310.8515625 73.6748046875 1310.8515625 112.711914062 1310.8515625 151.748046875 c 1 + 1310.8515625 181.201171875 1308.5859375 207.919921875 1304.1328125 231.904296875 c 0 + 1299.6015625 255.888671875 1292.2578125 276.591796875 1282.0234375 293.857421875 c 0 + 1271.7890625 311.123046875 1258.5078125 324.404296875 1242.1796875 333.701171875 c 0 + 1225.8515625 342.919921875 1206.1640625 347.607421875 1183.1171875 347.607421875 c 256 + 1160.0703125 347.607421875 1140.4609375 342.919921875 1124.1328125 333.701171875 c 0 + 1107.8046875 324.404296875 1094.5234375 311.123046875 1084.2890625 293.857421875 c 0 + 1074.0546875 276.591796875 1066.6328125 255.888671875 1062.1796875 231.904296875 c 0 + 1057.7265625 207.919921875 1055.4609375 181.201171875 1055.4609375 151.748046875 c 1 + 1055.4609375 112.711914062 1055.4609375 73.6748046875 1055.4609375 34.638671875 c 1 + 1055.4609375 5.185546875 1057.7265625 -21.533203125 1062.1796875 -45.517578125 c 0 + 1066.6328125 -69.501953125 1074.0546875 -90.126953125 1084.2890625 -107.470703125 c 0 + 1094.5234375 -124.736328125 1107.8046875 -138.017578125 1124.1328125 -147.314453125 c 0 + 1140.4609375 -156.533203125 1160.0703125 -161.220703125 1183.1171875 -161.220703125 c 256 +628.7421875 612.685546875 m 256 + 589.7578125 612.685546875 555.3046875 617.607421875 525.5390625 627.529296875 c 0 + 495.8515625 637.451171875 470.8515625 651.044921875 450.6953125 668.310546875 c 0 + 430.5390625 685.576171875 415.1484375 706.123046875 404.6015625 729.794921875 c 0 + 394.0546875 753.466796875 388.7421875 779.013671875 388.7421875 806.591796875 c 0xf30e + 388.7421875 851.357421875 401.0859375 887.373046875 425.6953125 914.560546875 c 0 + 450.3828125 941.748046875 482.8828125 960.810546875 523.1953125 971.669921875 c 1 + 523.1953125 974.248046875 523.1953125 976.826171875 523.1953125 979.404296875 c 1 + 488.5859375 991.513671875 460.9296875 1010.73242188 440.1484375 1036.98242188 c 0 + 419.3671875 1063.23242188 408.8984375 1095.49804688 408.8984375 1133.93554688 c 0 + 408.8984375 1159.56054688 413.8984375 1182.91992188 423.8203125 1204.01367188 c 0 + 433.7421875 1225.10742188 447.9609375 1243.23242188 466.5546875 1258.23242188 c 0 + 485.0703125 1273.31054688 508.1171875 1284.95117188 535.6171875 1293.31054688 c 0 + 563.1953125 1301.59179688 594.2109375 1305.73242188 628.7421875 1305.73242188 c 256 + 663.3515625 1305.73242188 694.3671875 1301.59179688 721.8671875 1293.31054688 c 0 + 749.4453125 1284.95117188 772.4921875 1273.31054688 791.0078125 1258.23242188 c 0 + 809.6015625 1243.23242188 823.8203125 1225.10742188 833.7421875 1204.01367188 c 0 + 843.6640625 1182.91992188 848.5859375 1159.56054688 848.5859375 1133.93554688 c 0xf296 + 848.5859375 1095.49804688 838.1953125 1063.23242188 817.4140625 1036.98242188 c 0 + 796.6328125 1010.73242188 768.8984375 991.513671875 734.3671875 979.404296875 c 1 + 734.3671875 976.826171875 734.3671875 974.248046875 734.3671875 971.669921875 c 1 + 774.6796875 960.810546875 807.1796875 941.748046875 831.7890625 914.560546875 c 0 + 856.4765625 887.373046875 868.7421875 851.357421875 868.7421875 806.591796875 c 0xf20e + 868.7421875 779.013671875 863.5078125 753.466796875 852.9609375 729.794921875 c 0 + 842.3359375 706.123046875 827.0234375 685.576171875 806.8671875 668.310546875 c 0 + 786.7109375 651.044921875 761.7109375 637.451171875 731.9453125 627.529296875 c 0 + 702.1796875 617.607421875 667.8046875 612.685546875 628.7421875 612.685546875 c 256 +628.7421875 700.029296875 m 256 + 669.0546875 700.029296875 700.3046875 709.326171875 722.3359375 727.841796875 c 0 + 744.4453125 746.435546875 755.4609375 772.294921875 755.4609375 805.576171875 c 1 + 755.4609375 811.982421875 755.4609375 818.388671875 755.4609375 824.794921875 c 1 + 755.4609375 858.076171875 744.4453125 884.013671875 722.3359375 902.607421875 c 0 + 700.3046875 921.123046875 669.0546875 930.419921875 628.7421875 930.419921875 c 256xf70e + 588.4296875 930.419921875 557.2578125 921.123046875 535.1484375 902.607421875 c 0 + 513.1171875 884.013671875 502.0234375 858.076171875 502.0234375 824.794921875 c 1 + 502.0234375 818.388671875 502.0234375 811.982421875 502.0234375 805.576171875 c 1 + 502.0234375 772.294921875 513.1171875 746.435546875 535.1484375 727.841796875 c 0 + 557.2578125 709.326171875 588.4296875 700.029296875 628.7421875 700.029296875 c 256 +628.7421875 1013.93554688 m 256 + 665.9296875 1013.93554688 694.2109375 1021.90429688 713.7421875 1037.91992188 c 0 + 733.2734375 1053.93554688 743.0390625 1077.29492188 743.0390625 1107.99804688 c 1 + 743.0390625 1113.44042969 743.0390625 1118.88378906 743.0390625 1124.32617188 c 1 + 743.0390625 1155.02929688 733.2734375 1178.38867188 713.7421875 1194.40429688 c 0 + 694.2109375 1210.41992188 665.9296875 1218.38867188 628.7421875 1218.38867188 c 256 + 591.6328125 1218.38867188 563.3515625 1210.41992188 543.8203125 1194.40429688 c 0 + 524.2890625 1178.38867188 514.5234375 1155.02929688 514.5234375 1124.32617188 c 1 + 514.5234375 1118.88378906 514.5234375 1113.44042969 514.5234375 1107.99804688 c 1xf696 + 514.5234375 1077.29492188 524.2890625 1053.93554688 543.8203125 1037.91992188 c 0 + 563.3515625 1021.90429688 591.6328125 1013.93554688 628.7421875 1013.93554688 c 256 +1423.0390625 1044.63867188 m 0 + 1423.0390625 996.044921875 1415.6171875 950.263671875 1400.9296875 907.373046875 c 0 + 1386.2421875 864.482421875 1367.3359375 825.107421875 1344.2890625 789.326171875 c 0 + 1321.2421875 753.466796875 1295.4609375 721.435546875 1267.0234375 693.310546875 c 0 + 1238.5078125 665.107421875 1210.5390625 642.060546875 1183.0390625 624.169921875 c 1 + 1135.01855469 624.169921875 1086.99707031 624.169921875 1038.9765625 624.169921875 c 1 + 1076.7890625 651.669921875 1110.6953125 678.232421875 1140.7734375 703.857421875 c 0 + 1170.8515625 729.482421875 1197.1015625 755.654296875 1219.5234375 782.607421875 c 0 + 1241.8671875 809.482421875 1260.6171875 837.919921875 1275.6171875 867.998046875 c 0 + 1290.6953125 898.076171875 1302.3359375 931.044921875 1310.6953125 966.904296875 c 1 + 1308.45605469 967.529296875 1306.21582031 968.154296875 1303.9765625 968.779296875 c 1 + 1296.9453125 955.341796875 1288.7421875 942.763671875 1279.5234375 930.888671875 c 0 + 1270.2265625 919.013671875 1259.3671875 908.623046875 1246.8671875 899.716796875 c 0 + 1234.3671875 890.732421875 1220.1484375 883.701171875 1204.1328125 878.544921875 c 0 + 1188.1171875 873.466796875 1169.6015625 870.888671875 1148.4296875 870.888671875 c 0xfa06 + 1120.3046875 870.888671875 1094.2109375 875.654296875 1070.2265625 885.263671875 c 0 + 1046.2421875 894.873046875 1025.3828125 908.779296875 1007.8046875 927.060546875 c 0 + 990.2265625 945.263671875 976.4765625 967.060546875 966.5546875 992.294921875 c 0 + 956.6328125 1017.60742188 951.6328125 1046.27929688 951.6328125 1078.23242188 c 0 + 951.6328125 1111.51367188 957.2578125 1142.21679688 968.4296875 1170.41992188 c 0 + 979.6796875 1198.54492188 995.4609375 1222.60742188 1016.0078125 1242.37304688 c 0 + 1036.4765625 1262.21679688 1061.0859375 1277.76367188 1089.9140625 1288.93554688 c 0 + 1118.6640625 1300.18554688 1151.0078125 1305.73242188 1186.8671875 1305.73242188 c 0 + 1223.9765625 1305.73242188 1257.1015625 1299.71679688 1286.2421875 1287.52929688 c 0 + 1315.3046875 1275.34179688 1339.9921875 1257.91992188 1360.1484375 1235.18554688 c 0 + 1380.3046875 1212.45117188 1395.8515625 1185.10742188 1406.7109375 1153.15429688 c 0 + 1417.5703125 1121.12304688 1423.0390625 1084.95117188 1423.0390625 1044.63867188 c 0 +1186.8671875 958.232421875 m 256 + 1225.9296875 958.232421875 1256.3203125 968.623046875 1278.0390625 989.482421875 c 0 + 1299.8359375 1010.26367188 1310.6953125 1040.81054688 1310.6953125 1081.12304688 c 1 + 1310.6953125 1085.60253906 1310.6953125 1090.08105469 1310.6953125 1094.56054688 c 1 + 1310.6953125 1134.87304688 1299.8359375 1165.41992188 1278.0390625 1186.27929688 c 0 + 1256.3203125 1207.06054688 1225.9296875 1217.45117188 1186.8671875 1217.45117188 c 256 + 1147.8046875 1217.45117188 1117.4140625 1207.06054688 1095.6171875 1186.27929688 c 0 + 1073.8984375 1165.41992188 1063.0390625 1134.87304688 1063.0390625 1094.56054688 c 1 + 1063.0390625 1090.08105469 1063.0390625 1085.60253906 1063.0390625 1081.12304688 c 1 + 1063.0390625 1040.81054688 1073.8984375 1010.26367188 1095.6171875 989.482421875 c 0 + 1117.4140625 968.623046875 1147.8046875 958.232421875 1186.8671875 958.232421875 c 256 +EndSplineSet +EndChar + +StartChar: uniE108 +Encoding: 57608 57608 9 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 183 88.2812<711 802.25 910.688 1002.88> 364.406 93.125<1273.34 1471> 757.062 96.0156<120.375 320.062 428.5 628.188 711 802.25 910.688 1002.88 1359.62 1385.56> +VStem: 320.062 108.438<183 757.062> 711 291.875<183 271.281 764.797 853.078> 1078.34 110.469<183 293.469> 1558.34 113.281<183 296.281> +DStem2: 1078.34 183 1188.81 183 0.303155 0.952941<33.4892 224.122 320.727 631.883> 1443.19 853.078 1375.06 753.234 0.305997 -0.952033<74.2085 385.084> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 183 88.2812<711 802.25 910.688 1002.88> 364.406 93.125<1273.34 1471> 757.062 96.0156<120.375 320.062 428.5 628.188 711 802.25 910.688 1002.88 1359.62 1385.56> +VStem: 320.062 108.438<183 757.062> 711 291.875<183 271.281 764.797 853.078> 1078.34 110.469<183 293.469> 1558.34 113.281<183 296.281> +DStem2: 1078.34 183 1188.81 183 0.303155 0.952941<33.4892 224.122 320.727 631.883> 1443.19 853.078 1375.06 753.234 0.305997 -0.952033<74.2085 385.084> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +428.5 757.0625 m 1 + 428.5 565.708007812 428.5 374.354492188 428.5 183 c 1 + 392.354492188 183 356.208007812 183 320.0625 183 c 1 + 320.0625 374.354492188 320.0625 565.708007812 320.0625 757.0625 c 1 + 253.5 757.0625 186.9375 757.0625 120.375 757.0625 c 1 + 120.375 789.067382812 120.375 821.073242188 120.375 853.078125 c 1 + 289.645507812 853.078125 458.916992188 853.078125 628.1875 853.078125 c 1 + 628.1875 821.073242188 628.1875 789.067382812 628.1875 757.0625 c 1 + 561.625 757.0625 495.0625 757.0625 428.5 757.0625 c 1 +711 183 m 1 + 711 212.426757812 711 241.854492188 711 271.28125 c 1 + 741.416992188 271.28125 771.833007812 271.28125 802.25 271.28125 c 1 + 802.25 435.786132812 802.25 600.291992188 802.25 764.796875 c 1 + 771.833007812 764.796875 741.416992188 764.796875 711 764.796875 c 1 + 711 794.223632812 711 823.651367188 711 853.078125 c 1 + 808.291992188 853.078125 905.583007812 853.078125 1002.875 853.078125 c 1 + 1002.875 823.651367188 1002.875 794.223632812 1002.875 764.796875 c 1 + 972.145507812 764.796875 941.416992188 764.796875 910.6875 764.796875 c 1 + 910.6875 600.291992188 910.6875 435.786132812 910.6875 271.28125 c 1 + 941.416992188 271.28125 972.145507812 271.28125 1002.875 271.28125 c 1 + 1002.875 241.854492188 1002.875 212.426757812 1002.875 183 c 1 + 905.583007812 183 808.291992188 183 711 183 c 1 +1558.34375 183 m 1 + 1538.1875 243.46875 1518.03125 303.9375 1497.875 364.40625 c 1 + 1414.38574219 364.40625 1330.89550781 364.40625 1247.40625 364.40625 c 1 + 1227.875 303.9375 1208.34375 243.46875 1188.8125 183 c 1 + 1151.98925781 183 1115.16699219 183 1078.34375 183 c 1 + 1154.54199219 406.359375 1230.73925781 629.71875 1306.9375 853.078125 c 1 + 1352.35449219 853.078125 1397.77050781 853.078125 1443.1875 853.078125 c 1 + 1519.33300781 629.71875 1595.47949219 406.359375 1671.625 183 c 1 + 1633.86425781 183 1596.10449219 183 1558.34375 183 c 1 +1375.0625 753.234375 m 1 + 1373.44824219 753.234375 1371.83300781 753.234375 1370.21875 753.234375 c 1 + 1337.92675781 654.666992188 1305.63574219 556.098632812 1273.34375 457.53125 c 1 + 1339.22949219 457.53125 1405.11425781 457.53125 1471 457.53125 c 1 + 1439.02050781 556.098632812 1407.04199219 654.666992188 1375.0625 753.234375 c 1 +EndSplineSet +EndChar + +StartChar: uniE109 +Encoding: 57609 57609 10 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 171.516 95.9375<134.083 359.867> 364.406 93.125<745.609 943.344 1385.61 1583.34> 753.234 99.8438<830.443 859.33 1470.44 1499.33> 768.625 95.9375<159.651 378.063> +VStem: 28.1875 107.5<611.387 747.68> 388.188 107.5<294.565 441.758> 550.688 110.391<183 293.391> 1030.69 113.281<183 296.281> 1190.69 110.391<183 293.391> 1670.69 113.281<183 296.281> +DStem2: 242.25 584.25 223.969 481.594 0.978916 -0.204262<-84.378 149.631> 550.688 183 661.078 183 0.322775 0.946476<35.6313 226.241 322.753 322.753> 915.531 853.078 847.328 753.234 0.306115 -0.951995<74.1727 385.072 481.954 673.162> 1190.69 183 1301.08 183 0.322775 0.946476<35.6313 226.241 322.753 322.753> 1555.53 853.078 1487.33 753.234 0.306115 -0.951995<74.1727 385.072 481.954 673.162> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 171.516 95.9375<134.083 359.867> 364.406 93.125<745.609 943.344 1385.61 1583.34> 753.234 99.8438<830.443 859.33 1470.44 1499.33> 768.625 95.9375<159.651 378.063> +VStem: 28.1875 107.5<611.387 747.68> 388.188 107.5<294.565 441.758> 550.688 110.391<183 293.391> 1030.69 113.281<183 296.281> 1190.69 110.391<183 293.391> 1670.69 113.281<183 296.281> +DStem2: 242.25 584.25 223.969 481.594 0.978916 -0.204262<-84.378 149.631> 550.688 183 661.078 183 0.322775 0.946476<35.6313 226.241 322.753 322.753> 915.531 853.078 847.328 753.234 0.306115 -0.951995<74.1727 385.072 481.954 673.162> 1190.69 183 1301.08 183 0.322775 0.946476<35.6313 226.241 322.753 322.753> 1555.53 853.078 1487.33 753.234 0.306115 -0.951995<74.1727 385.072 481.954 673.162> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +252.796875 171.515625 m 0xdfc0 + 196.46875 171.515625 148.65625 181.75 109.28125 202.21875 c 0 + 69.90625 222.6875 36.15625 250.1875 8.03125 284.796875 c 1 + 32.9794921875 308.15625 57.9267578125 331.515625 82.875 354.875 c 1 + 106.546875 326.046875 132.640625 304.25 161.078125 289.5625 c 0 + 189.59375 274.875 222.09375 267.453125 258.578125 267.453125 c 0 + 301.46875 267.453125 333.734375 277.0625 355.53125 296.28125 c 0 + 377.25 315.5 388.1875 341.4375 388.1875 374.015625 c 0 + 388.1875 400.265625 380.453125 421.046875 365.140625 436.4375 c 0 + 349.75 451.828125 322.5625 463.3125 283.5 470.96875 c 1 + 263.65625 474.510742188 243.8125 478.051757812 223.96875 481.59375 c 1 + 158.734375 493.703125 109.75 515.1875 77.09375 545.890625 c 0 + 44.4375 576.59375 28.1875 618.859375 28.1875 672.609375 c 0 + 28.1875 702.0625 33.734375 728.78125 44.984375 752.765625 c 0 + 56.15625 776.75 71.859375 796.90625 92.015625 813.234375 c 0 + 112.171875 829.5625 136.625 842.21875 165.453125 851.125 c 0 + 194.203125 860.109375 226.546875 864.5625 262.40625 864.5625 c 0 + 312.953125 864.5625 356.78125 855.8125 393.890625 838.234375 c 0 + 431 820.578125 462.71875 795.1875 488.96875 761.90625 c 1 + 463.682617188 739.510742188 438.395507812 717.114257812 413.109375 694.71875 c 1 + 395.84375 717.0625 374.75 735.03125 349.75 748.46875 c 0 + 324.828125 761.90625 293.734375 768.625 256.625 768.625 c 0 + 218.265625 768.625 188.5 760.890625 167.328125 745.578125 c 0 + 146.234375 730.1875 135.6875 707.765625 135.6875 678.390625 c 0 + 135.6875 650.1875 144.28125 629.25 161.625 615.5 c 0 + 178.890625 601.75 205.765625 591.28125 242.25 584.25 c 1 + 262.09375 580.109375 281.9375 575.96875 301.78125 571.828125 c 1 + 368.96875 559.015625 418.109375 537.21875 449.125 506.515625 c 0 + 480.140625 475.8125 495.6875 433.546875 495.6875 379.796875 c 0 + 495.6875 348.46875 490.21875 319.953125 479.359375 294.328125 c 0 + 468.5 268.78125 452.640625 246.828125 431.859375 228.625 c 0 + 411 210.34375 385.609375 196.28125 355.53125 186.359375 c 0 + 325.453125 176.4375 291.15625 171.515625 252.796875 171.515625 c 0xdfc0 +1030.6875 183 m 1 + 1010.53125 243.46875 990.375 303.9375 970.21875 364.40625 c 1 + 886.703125 364.40625 803.1875 364.40625 719.671875 364.40625 c 1 + 700.140625 303.9375 680.609375 243.46875 661.078125 183 c 1 + 624.28125 183 587.484375 183 550.6875 183 c 1 + 626.859375 406.359375 703.03125 629.71875 779.203125 853.078125 c 1 + 824.645507812 853.078125 870.088867188 853.078125 915.53125 853.078125 c 1xefc0 + 991.676757812 629.71875 1067.82324219 406.359375 1143.96875 183 c 1 + 1106.20800781 183 1068.44824219 183 1030.6875 183 c 1 +847.328125 753.234375 m 1 + 845.739257812 753.234375 844.151367188 753.234375 842.5625 753.234375 c 1 + 810.245117188 654.666992188 777.926757812 556.098632812 745.609375 457.53125 c 1 + 811.520507812 457.53125 877.432617188 457.53125 943.34375 457.53125 c 1 + 911.338867188 556.098632812 879.333007812 654.666992188 847.328125 753.234375 c 1 +1670.6875 183 m 5 + 1650.53125 243.46875 1630.375 303.9375 1610.21875 364.40625 c 1 + 1526.703125 364.40625 1443.1875 364.40625 1359.671875 364.40625 c 1 + 1340.140625 303.9375 1320.609375 243.46875 1301.078125 183 c 1 + 1264.28125 183 1227.484375 183 1190.6875 183 c 1 + 1266.859375 406.359375 1343.03125 629.71875 1419.203125 853.078125 c 1 + 1464.64550781 853.078125 1510.08886719 853.078125 1555.53125 853.078125 c 5 + 1631.67675781 629.71875 1707.82324219 406.359375 1783.96875 183 c 1 + 1746.20800781 183 1708.44824219 183 1670.6875 183 c 5 +1487.328125 753.234375 m 1 + 1485.73925781 753.234375 1484.15136719 753.234375 1482.5625 753.234375 c 1 + 1450.24511719 654.666992188 1417.92675781 556.098632812 1385.609375 457.53125 c 1 + 1451.52050781 457.53125 1517.43261719 457.53125 1583.34375 457.53125 c 1 + 1551.33886719 556.098632812 1519.33300781 654.666992188 1487.328125 753.234375 c 1 +EndSplineSet +EndChar + +StartChar: uniE10A +Encoding: 57610 57610 11 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 183 88.2812<773.109 864.281 972.797 1064.98 1342.08 1563.11> 764.797 88.2812<773.109 864.281 972.797 1064.98 1342.01 1562.58> +VStem: 96.625 112.344<740.734 853.078> 555.531 109.453<743.625 853.078> 773.109 291.875<183 271.281 764.797 853.078> 1172.17 115.156<330.807 708.111> +DStem2: 208.969 853.078 96.625 853.078 0.311738 -0.950168<0 589.589> 383.656 288.625 442.25 183 0.291293 0.956634<0 590.041> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 183 88.2812<773.109 864.281 972.797 1064.98 1342.08 1563.11> 764.797 88.2812<773.109 864.281 972.797 1064.98 1342.01 1562.58> +VStem: 96.625 112.344<740.734 853.078> 555.531 109.453<743.625 853.078> 773.109 291.875<183 271.281 764.797 853.078> 1172.17 115.156<330.807 708.111> +DStem2: 208.969 853.078 96.625 853.078 0.311738 -0.950168<0 589.589> 383.656 288.625 442.25 183 0.291293 0.956634<0 590.041> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +316.46875 183 m 1 + 243.1875 406.359375 169.90625 629.71875 96.625 853.078125 c 1 + 134.073242188 853.078125 171.520507812 853.078125 208.96875 853.078125 c 1 + 244.489257812 742.6875 280.010742188 632.296875 315.53125 521.90625 c 1 + 336.963867188 444.145507812 358.395507812 366.385742188 379.828125 288.625 c 1 + 381.104492188 288.625 382.379882812 288.625 383.65625 288.625 c 1 + 405.426757812 366.385742188 427.198242188 444.145507812 448.96875 521.90625 c 1 + 484.489257812 632.296875 520.010742188 742.6875 555.53125 853.078125 c 1 + 592.015625 853.078125 628.5 853.078125 664.984375 853.078125 c 1 + 590.739257812 629.71875 516.495117188 406.359375 442.25 183 c 1 + 400.323242188 183 358.395507812 183 316.46875 183 c 1 +773.109375 183 m 1 + 773.109375 212.426757812 773.109375 241.854492188 773.109375 271.28125 c 1 + 803.5 271.28125 833.890625 271.28125 864.28125 271.28125 c 1 + 864.28125 435.786132812 864.28125 600.291992188 864.28125 764.796875 c 1 + 833.890625 764.796875 803.5 764.796875 773.109375 764.796875 c 1 + 773.109375 794.223632812 773.109375 823.651367188 773.109375 853.078125 c 1 + 870.401367188 853.078125 967.692382812 853.078125 1064.984375 853.078125 c 1 + 1064.984375 823.651367188 1064.984375 794.223632812 1064.984375 764.796875 c 1 + 1034.25488281 764.796875 1003.52636719 764.796875 972.796875 764.796875 c 1 + 972.796875 600.291992188 972.796875 435.786132812 972.796875 271.28125 c 1 + 1003.52636719 271.28125 1034.25488281 271.28125 1064.984375 271.28125 c 1 + 1064.984375 241.854492188 1064.984375 212.426757812 1064.984375 183 c 1 + 967.692382812 183 870.401367188 183 773.109375 183 c 1 +1453.421875 171.515625 m 0 + 1365.765625 171.515625 1296.9375 201.046875 1247.015625 260.265625 c 0 + 1197.09375 319.484375 1172.171875 405.421875 1172.171875 518.078125 c 0 + 1172.171875 574.328125 1178.578125 623.9375 1191.390625 666.828125 c 0 + 1204.125 709.71875 1222.71875 745.890625 1247.015625 775.34375 c 0 + 1271.390625 804.796875 1300.921875 826.984375 1335.84375 842.0625 c 0 + 1370.6875 857.0625 1409.90625 864.5625 1453.421875 864.5625 c 0 + 1511.703125 864.5625 1560.453125 851.828125 1599.828125 826.203125 c 0 + 1639.203125 800.578125 1670.0625 762.84375 1692.484375 712.921875 c 1 + 1662.09375 696.28125 1631.703125 679.640625 1601.3125 663 c 1 + 1589.75 695.03125 1572.015625 720.421875 1548.03125 739.328125 c 0 + 1523.96875 758.234375 1492.484375 767.609375 1453.421875 767.609375 c 0 + 1401.625 767.609375 1360.921875 750.03125 1331.546875 714.875 c 0 + 1302.09375 679.640625 1287.328125 630.96875 1287.328125 568.9375 c 1 + 1287.328125 535.004882812 1287.328125 501.073242188 1287.328125 467.140625 c 1 + 1287.328125 405.109375 1302.09375 356.4375 1331.546875 321.203125 c 0 + 1360.921875 286.046875 1401.625 268.46875 1453.421875 268.46875 c 0 + 1493.734375 268.46875 1526.546875 278.859375 1551.859375 299.640625 c 0 + 1577.09375 320.421875 1595.84375 347.140625 1608.03125 379.796875 c 1 + 1637.14550781 362.192382812 1666.26074219 344.588867188 1695.375 326.984375 c 1 + 1672.953125 278.390625 1641.625 240.265625 1601.3125 212.765625 c 0 + 1560.921875 185.265625 1511.703125 171.515625 1453.421875 171.515625 c 0 +EndSplineSet +EndChar + +StartChar: uniE10B +Encoding: 57611 57611 12 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 183 96.0156<820.297 1141> 449.875 95.0781<180.297 416.684> 474.875 95.9375<820.297 1111.23> 757.062 96.0156<180.297 416.684 820.297 1141 1212.33 1412.02 1520.45 1720.14> +VStem: 71.8594 108.438<183 449.875 544.953 758.078> 440.453 114.297<567.194 735.759> 711.859 108.438<279.016 474.875 570.812 757.062> 1412.02 108.438<183 757.062> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 183 96.0156<820.297 1141> 449.875 95.0781<180.297 416.684> 474.875 95.9375<820.297 1111.23> 757.062 96.0156<180.297 416.684 820.297 1141 1212.33 1412.02 1520.45 1720.14> +VStem: 71.8594 108.438<183 449.875 544.953 758.078> 440.453 114.297<567.194 735.759> 711.859 108.438<279.016 474.875 570.812 757.062> 1412.02 108.438<183 757.062> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +71.859375 183 m 1xdf + 71.859375 406.359375 71.859375 629.71875 71.859375 853.078125 c 1 + 167.848632812 853.078125 263.838867188 853.078125 359.828125 853.078125 c 1 + 421.9375 853.078125 469.90625 834.875 503.8125 798.390625 c 0 + 537.796875 761.90625 554.75 712.921875 554.75 651.515625 c 256 + 554.75 590.03125 537.796875 541.046875 503.8125 504.5625 c 0 + 469.90625 468.15625 421.9375 449.875 359.828125 449.875 c 1 + 299.984375 449.875 240.140625 449.875 180.296875 449.875 c 1 + 180.296875 360.916992188 180.296875 271.958007812 180.296875 183 c 1 + 144.151367188 183 108.004882812 183 71.859375 183 c 1xdf +180.296875 544.953125 m 1 + 237.901367188 544.953125 295.504882812 544.953125 353.109375 544.953125 c 1 + 380.609375 544.953125 402.09375 552.140625 417.40625 566.515625 c 0 + 432.796875 580.890625 440.453125 601.59375 440.453125 628.46875 c 1 + 440.453125 643.807617188 440.453125 659.145507812 440.453125 674.484375 c 1 + 440.453125 701.4375 432.796875 722.0625 417.40625 736.4375 c 0 + 402.09375 750.8125 380.609375 758.078125 353.109375 758.078125 c 1 + 295.504882812 758.078125 237.901367188 758.078125 180.296875 758.078125 c 1 + 180.296875 687.036132812 180.296875 615.995117188 180.296875 544.953125 c 1 +711.859375 183 m 1 + 711.859375 406.359375 711.859375 629.71875 711.859375 853.078125 c 1 + 854.90625 853.078125 997.953125 853.078125 1141 853.078125 c 1 + 1141 821.073242188 1141 789.067382812 1141 757.0625 c 1 + 1034.09863281 757.0625 927.198242188 757.0625 820.296875 757.0625 c 1 + 820.296875 694.979492188 820.296875 632.895507812 820.296875 570.8125 c 1 + 917.276367188 570.8125 1014.25488281 570.8125 1111.234375 570.8125 c 1 + 1111.234375 538.833007812 1111.234375 506.854492188 1111.234375 474.875 c 1 + 1014.25488281 474.875 917.276367188 474.875 820.296875 474.875 c 1xbf + 820.296875 409.588867188 820.296875 344.301757812 820.296875 279.015625 c 1 + 927.198242188 279.015625 1034.09863281 279.015625 1141 279.015625 c 1 + 1141 247.010742188 1141 215.004882812 1141 183 c 1 + 997.953125 183 854.90625 183 711.859375 183 c 1 +1520.453125 757.0625 m 1 + 1520.453125 565.708007812 1520.453125 374.354492188 1520.453125 183 c 1 + 1484.30761719 183 1448.16113281 183 1412.015625 183 c 1 + 1412.015625 374.354492188 1412.015625 565.708007812 1412.015625 757.0625 c 1 + 1345.453125 757.0625 1278.890625 757.0625 1212.328125 757.0625 c 1 + 1212.328125 789.067382812 1212.328125 821.073242188 1212.328125 853.078125 c 1 + 1381.59863281 853.078125 1550.87011719 853.078125 1720.140625 853.078125 c 1 + 1720.140625 821.073242188 1720.140625 789.067382812 1720.140625 757.0625 c 1 + 1653.578125 757.0625 1587.015625 757.0625 1520.453125 757.0625 c 1 +EndSplineSet +EndChar + +StartChar: uniE10C +Encoding: 57612 57612 13 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -253.33 85.3906<803.27 978.187> 95.1074 85.4688<828.18 977.718> 612.686 89.2188<1388.21 1579.14> 624.17 92.1875<328.559 354.926> 897.764 85.4688<802.406 938.743> 1204.95 89.2969<802.406 1011.58 1380.73 1582.23> +VStem: 82.0938 106.562<1187.69 1294.25> 493.891 104.688<1189.56 1294.25> 674.359 107.5<-147.67 75.4575> 700.609 101.797<624.17 897.764 983.232 1204.95> 998.891 107.5<-147.386 74.3151> 1030.84 108.516<1002.5 1185.69> 1233.73 109.453<750.416 1168> +DStem2: 188.656 1294.25 82.0938 1294.25 0.271727 -0.962374<0 593.586> 375.844 872.842 402.719 624.17 0.269742 0.962933<-155.735 437.628> 1024.12 905.42 922.406 897.764 0.413517 -0.910496<0 262.054> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -253.33 85.3906<803.27 978.187> 95.1074 85.4688<828.18 977.718> 612.686 89.2188<1388.21 1579.14> 624.17 92.1875<328.559 354.926> 897.764 85.4688<802.406 938.743> 1204.95 89.2969<802.406 1011.58 1380.73 1582.23> +VStem: 82.0938 106.562<1187.69 1294.25> 493.891 104.688<1189.56 1294.25> 674.359 107.5<-147.67 75.4575> 700.609 101.797<624.17 897.764 983.232 1204.95> 998.891 107.5<-147.386 74.3151> 1030.84 108.516<1002.5 1185.69> 1233.73 109.453<750.416 1168> +DStem2: 188.656 1294.25 82.0938 1294.25 0.271727 -0.962374<0 593.586> 375.844 872.842 402.719 624.17 0.269742 0.962933<-155.735 437.628> 1024.12 905.42 922.406 897.764 0.413517 -0.910496<0 262.054> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +890.296875 -253.330078125 m 0xcfa8 + 818.734375 -253.330078125 764.828125 -231.298828125 728.578125 -187.158203125 c 0 + 692.484375 -142.939453125 674.359375 -78.642578125 674.359375 5.810546875 c 0 + 674.359375 46.123046875 679.515625 86.435546875 689.671875 126.826171875 c 0 + 699.984375 167.138671875 714.671875 205.654296875 733.890625 242.451171875 c 0 + 753.109375 279.248046875 775.921875 313.701171875 802.484375 345.654296875 c 0 + 829.046875 377.685546875 858.734375 405.185546875 891.390625 428.232421875 c 1 + 937.120117188 428.232421875 982.848632812 428.232421875 1028.578125 428.232421875 c 1 + 989.515625 398.154296875 955.921875 369.482421875 927.796875 342.294921875 c 0 + 899.671875 315.107421875 875.765625 288.076171875 856.234375 261.201171875 c 0 + 836.703125 234.326171875 820.921875 206.669921875 808.734375 178.154296875 c 0 + 796.546875 149.638671875 787.328125 118.779296875 780.921875 85.498046875 c 1 + 785.088867188 85.498046875 789.254882812 85.498046875 793.421875 85.498046875 c 1 + 804.359375 116.201171875 821.546875 139.716796875 845.296875 156.044921875 c 0 + 868.890625 172.373046875 897.015625 180.576171875 929.671875 180.576171875 c 0 + 984.046875 180.576171875 1027.171875 162.919921875 1058.890625 127.763671875 c 0 + 1090.453125 92.529296875 1106.390625 40.732421875 1106.390625 -27.783203125 c 0 + 1106.390625 -98.798828125 1087.953125 -154.189453125 1051.234375 -193.876953125 c 0 + 1014.359375 -233.564453125 960.765625 -253.330078125 890.296875 -253.330078125 c 0xcfa8 +890.296875 -167.939453125 m 256 + 962.640625 -167.939453125 998.890625 -128.251953125 998.890625 -48.876953125 c 1 + 998.890625 -40.5693359375 998.890625 -32.2626953125 998.890625 -23.955078125 c 1 + 998.890625 55.419921875 962.640625 95.107421875 890.296875 95.107421875 c 256 + 818.109375 95.107421875 781.859375 55.419921875 781.859375 -23.955078125 c 1 + 781.859375 -32.2626953125 781.859375 -40.5693359375 781.859375 -48.876953125 c 1 + 781.859375 -128.251953125 818.109375 -167.939453125 890.296875 -167.939453125 c 256 +278.890625 624.169921875 m 1xdf08 + 213.291992188 847.529296875 147.692382812 1070.88867188 82.09375 1294.24804688 c 1 + 117.614257812 1294.24804688 153.135742188 1294.24804688 188.65625 1294.24804688 c 1 + 228.317382812 1153.77929688 267.979492188 1013.31054688 307.640625 872.841796875 c 1 + 316.9375 820.680664062 326.234375 768.518554688 335.53125 716.357421875 c 1 + 339.671875 716.357421875 343.8125 716.357421875 347.953125 716.357421875 c 1 + 357.25 768.518554688 366.546875 820.680664062 375.84375 872.841796875 c 1 + 415.192382812 1013.31054688 454.541992188 1153.77929688 493.890625 1294.24804688 c 1 + 528.786132812 1294.24804688 563.682617188 1294.24804688 598.578125 1294.24804688 c 1 + 533.291992188 1070.88867188 468.004882812 847.529296875 402.71875 624.169921875 c 1 + 361.442382812 624.169921875 320.166992188 624.169921875 278.890625 624.169921875 c 1xdf08 +802.40625 624.169921875 m 1xdf58 + 768.473632812 624.169921875 734.541992188 624.169921875 700.609375 624.169921875 c 1 + 700.609375 847.529296875 700.609375 1070.88867188 700.609375 1294.24804688 c 1 + 788.942382812 1294.24804688 877.276367188 1294.24804688 965.609375 1294.24804688 c 1 + 1023.1875 1294.24804688 1066.546875 1277.13867188 1095.6875 1242.91992188 c 0 + 1124.75 1208.62304688 1139.359375 1159.56054688 1139.359375 1095.49804688 c 0 + 1139.359375 1043.70117188 1129.75 1001.74804688 1110.53125 969.794921875 c 0 + 1091.3125 937.763671875 1062.5625 916.357421875 1024.125 905.419921875 c 1 + 1066.703125 811.669921875 1109.28125 717.919921875 1151.859375 624.169921875 c 1 + 1114.09863281 624.169921875 1076.33886719 624.169921875 1038.578125 624.169921875 c 1 + 999.854492188 715.368164062 961.129882812 806.565429688 922.40625 897.763671875 c 1 + 882.40625 897.763671875 842.40625 897.763671875 802.40625 897.763671875 c 1 + 802.40625 806.565429688 802.40625 715.368164062 802.40625 624.169921875 c 1xdf58 +956.9375 983.232421875 m 1 + 981.234375 983.232421875 999.671875 989.482421875 1012.171875 1001.90429688 c 0 + 1024.59375 1014.40429688 1030.84375 1034.71679688 1030.84375 1062.91992188 c 1 + 1030.84375 1083.70117188 1030.84375 1104.48242188 1030.84375 1125.26367188 c 1 + 1030.84375 1153.46679688 1024.59375 1173.77929688 1012.171875 1186.27929688 c 0 + 999.671875 1198.70117188 981.234375 1204.95117188 956.9375 1204.95117188 c 1 + 905.426757812 1204.95117188 853.916992188 1204.95117188 802.40625 1204.95117188 c 1 + 802.40625 1131.04492188 802.40625 1057.13867188 802.40625 983.232421875 c 1 + 853.916992188 983.232421875 905.426757812 983.232421875 956.9375 983.232421875 c 1 +1487.171875 612.685546875 m 0xef08 + 1448.109375 612.685546875 1413.109375 619.248046875 1382.09375 632.294921875 c 0 + 1351 645.419921875 1324.4375 666.123046875 1302.40625 694.248046875 c 0 + 1280.296875 722.373046875 1263.34375 758.388671875 1251.46875 802.216796875 c 0 + 1239.671875 846.123046875 1233.734375 898.388671875 1233.734375 959.248046875 c 256 + 1233.734375 1020.02929688 1239.671875 1072.29492188 1251.46875 1116.20117188 c 0 + 1263.34375 1160.02929688 1280.296875 1196.04492188 1302.40625 1224.16992188 c 0 + 1324.4375 1252.29492188 1351 1272.99804688 1382.09375 1286.12304688 c 0 + 1413.109375 1299.24804688 1448.109375 1305.73242188 1487.171875 1305.73242188 c 0 + 1544.125 1305.73242188 1589.75 1293.46679688 1623.96875 1268.77929688 c 0 + 1658.1875 1244.16992188 1685.609375 1207.21679688 1706.078125 1157.91992188 c 1 + 1677.27636719 1141.93066406 1648.47363281 1125.94042969 1619.671875 1109.95117188 c 1 + 1608.109375 1147.68554688 1592.015625 1174.87304688 1571.15625 1191.51367188 c 0 + 1550.375 1208.15429688 1522.40625 1216.51367188 1487.171875 1216.51367188 c 0 + 1441.78125 1216.51367188 1406.390625 1200.81054688 1381.078125 1169.48242188 c 0 + 1355.84375 1138.07617188 1343.1875 1094.87304688 1343.1875 1039.87304688 c 1 + 1343.1875 986.096679688 1343.1875 932.321289062 1343.1875 878.544921875 c 1 + 1343.1875 823.544921875 1355.84375 780.341796875 1381.078125 748.935546875 c 0 + 1406.390625 717.607421875 1441.78125 701.904296875 1487.171875 701.904296875 c 0 + 1523.03125 701.904296875 1552.015625 710.888671875 1574.046875 728.779296875 c 0 + 1596.15625 746.748046875 1613.265625 775.498046875 1625.453125 815.185546875 c 1 + 1653.60449219 798.544921875 1681.75488281 781.904296875 1709.90625 765.263671875 c 1 + 1688.8125 716.044921875 1660.609375 678.232421875 1625.453125 651.982421875 c 0 + 1590.21875 625.732421875 1544.125 612.685546875 1487.171875 612.685546875 c 0xef08 +EndSplineSet +EndChar + +StartChar: uniE10D +Encoding: 57613 57613 14 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -247.516 96.0156<568.266 840.922 1048.27 1320.92> 607.016 96.9531<456.756 680.46> 885.375 95.0781<1137.88 1374.26> 1203.11 96.9531<456.756 680.46 1137.88 1374.26> +VStem: 279.672 116.172<767.663 1139.42> 459.828 108.438<-151.5 422.562> 741.391 116.172<767.663 1139.42> 939.828 108.438<-151.5 422.562> 1029.44 108.438<618.5 885.375 980.453 1193.58> 1398.03 114.297<1002.69 1171.26> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -247.516 96.0156<568.266 840.922 1048.27 1320.92> 607.016 96.9531<456.756 680.46> 885.375 95.0781<1137.88 1374.26> 1203.11 96.9531<456.756 680.46 1137.88 1374.26> +VStem: 279.672 116.172<767.663 1139.42> 459.828 108.438<-151.5 422.562> 741.391 116.172<767.663 1139.42> 939.828 108.438<-151.5 422.562> 1029.44 108.438<618.5 885.375 980.453 1193.58> 1398.03 114.297<1002.69 1171.26> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +459.828125 -247.515625 m 1xfe40 + 459.828125 -24.15625 459.828125 199.203125 459.828125 422.5625 c 1 + 495.973632812 422.5625 532.120117188 422.5625 568.265625 422.5625 c 1 + 568.265625 231.208007812 568.265625 39.853515625 568.265625 -151.5 c 1 + 659.151367188 -151.5 750.036132812 -151.5 840.921875 -151.5 c 1 + 840.921875 -183.505859375 840.921875 -215.510742188 840.921875 -247.515625 c 1 + 713.890625 -247.515625 586.859375 -247.515625 459.828125 -247.515625 c 1xfe40 +939.828125 -247.515625 m 1xff40 + 939.828125 -24.15625 939.828125 199.203125 939.828125 422.5625 c 1 + 975.973632812 422.5625 1012.12011719 422.5625 1048.265625 422.5625 c 1 + 1048.265625 231.208007812 1048.265625 39.853515625 1048.265625 -151.5 c 1 + 1139.15136719 -151.5 1230.03613281 -151.5 1320.921875 -151.5 c 1 + 1320.921875 -183.505859375 1320.921875 -215.510742188 1320.921875 -247.515625 c 1 + 1193.890625 -247.515625 1066.859375 -247.515625 939.828125 -247.515625 c 1xff40 +568.65625 607.015625 m 256 + 525.0625 607.015625 485.609375 614.515625 450.0625 629.515625 c 0 + 414.515625 644.59375 384.125 666.625 358.890625 695.765625 c 0 + 333.578125 724.90625 314.046875 761.078125 300.296875 804.28125 c 0 + 286.546875 847.484375 279.671875 897.25 279.671875 953.578125 c 256 + 279.671875 1009.828125 286.546875 1059.59375 300.296875 1102.796875 c 0 + 314.046875 1146 333.578125 1182.171875 358.890625 1211.3125 c 0 + 384.125 1240.453125 414.515625 1262.484375 450.0625 1277.5625 c 0 + 485.609375 1292.5625 525.0625 1300.0625 568.65625 1300.0625 c 256 + 612.171875 1300.0625 651.625 1292.5625 687.171875 1277.5625 c 0 + 722.71875 1262.484375 753.109375 1240.453125 778.34375 1211.3125 c 0 + 803.65625 1182.171875 823.1875 1146 836.9375 1102.796875 c 0 + 850.6875 1059.59375 857.5625 1009.828125 857.5625 953.578125 c 256 + 857.5625 897.25 850.6875 847.484375 836.9375 804.28125 c 0 + 823.1875 761.078125 803.65625 724.90625 778.34375 695.765625 c 0 + 753.109375 666.625 722.71875 644.59375 687.171875 629.515625 c 0 + 651.625 614.515625 612.171875 607.015625 568.65625 607.015625 c 256 +568.65625 703.96875 m 0 + 594.203125 703.96875 617.71875 708.421875 639.203125 717.40625 c 0 + 660.609375 726.3125 678.890625 739.28125 693.890625 756.234375 c 0 + 708.96875 773.1875 720.609375 793.890625 728.96875 818.1875 c 0 + 737.25 842.484375 741.390625 869.984375 741.390625 900.765625 c 1 + 741.390625 935.947265625 741.390625 971.129882812 741.390625 1006.3125 c 1 + 741.390625 1037.09375 737.25 1064.59375 728.96875 1088.890625 c 0 + 720.609375 1113.1875 708.96875 1133.890625 693.890625 1150.84375 c 0 + 678.890625 1167.796875 660.609375 1180.765625 639.203125 1189.671875 c 0 + 617.71875 1198.65625 594.203125 1203.109375 568.65625 1203.109375 c 0 + 542.40625 1203.109375 518.734375 1198.65625 497.5625 1189.671875 c 0 + 476.46875 1180.765625 458.34375 1167.796875 443.34375 1150.84375 c 0 + 428.265625 1133.890625 416.625 1113.1875 408.265625 1088.890625 c 0 + 399.984375 1064.59375 395.84375 1037.09375 395.84375 1006.3125 c 1 + 395.84375 971.129882812 395.84375 935.947265625 395.84375 900.765625 c 1 + 395.84375 869.984375 399.984375 842.484375 408.265625 818.1875 c 0 + 416.625 793.890625 428.265625 773.1875 443.34375 756.234375 c 0 + 458.34375 739.28125 476.46875 726.3125 497.5625 717.40625 c 0 + 518.734375 708.421875 542.40625 703.96875 568.65625 703.96875 c 0 +1029.4375 618.5 m 1xfec0 + 1029.4375 841.859375 1029.4375 1065.21875 1029.4375 1288.578125 c 1 + 1125.42675781 1288.578125 1221.41699219 1288.578125 1317.40625 1288.578125 c 1 + 1379.515625 1288.578125 1427.484375 1270.37402344 1461.390625 1233.890625 c 0 + 1495.375 1197.40527344 1512.328125 1148.421875 1512.328125 1087.015625 c 256 + 1512.328125 1025.53027344 1495.375 976.546875 1461.390625 940.0625 c 0 + 1427.484375 903.65625 1379.515625 885.375 1317.40625 885.375 c 1 + 1257.5625 885.375 1197.71875 885.375 1137.875 885.375 c 1 + 1137.875 796.416015625 1137.875 707.458007812 1137.875 618.5 c 1 + 1101.72949219 618.5 1065.58300781 618.5 1029.4375 618.5 c 1xfec0 +1137.875 980.453125 m 1 + 1195.47949219 980.453125 1253.08300781 980.453125 1310.6875 980.453125 c 1 + 1338.1875 980.453125 1359.671875 987.640625 1374.984375 1002.015625 c 0 + 1390.375 1016.390625 1398.03125 1037.09277344 1398.03125 1063.96875 c 1 + 1398.03125 1079.30664062 1398.03125 1094.64550781 1398.03125 1109.984375 c 1 + 1398.03125 1136.9375 1390.375 1157.56152344 1374.984375 1171.9375 c 0 + 1359.671875 1186.31152344 1338.1875 1193.578125 1310.6875 1193.578125 c 1 + 1253.08300781 1193.578125 1195.47949219 1193.578125 1137.875 1193.578125 c 1 + 1137.875 1122.53613281 1137.875 1051.49414062 1137.875 980.453125 c 1 +EndSplineSet +EndChar + +StartChar: uniE10E +Encoding: 57614 57614 15 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 183 96.0156<177.043 421.987 1508.81 1781.47> 449.875 95.0781<868.812 1105.12> 758.078 95<177.765 421.265 868.812 1105.12> +VStem: 10.5312 116.25<332.163 703.916> 472.25 116.25<332.163 703.916> 760.375 108.438<183 449.875 544.953 758.078> 1128.97 114.219<567.194 735.759> 1400.38 108.438<279.016 853.078> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 183 96.0156<177.043 421.987 1508.81 1781.47> 449.875 95.0781<868.812 1105.12> 758.078 95<177.765 421.265 868.812 1105.12> +VStem: 10.5312 116.25<332.163 703.916> 472.25 116.25<332.163 703.916> 760.375 108.438<183 449.875 544.953 758.078> 1128.97 114.219<567.194 735.759> 1400.38 108.438<279.016 853.078> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +299.59375 171.515625 m 256 + 256 171.515625 216.46875 179.015625 181 194.015625 c 0 + 145.375 209.09375 115.0625 231.125 89.75 260.265625 c 0 + 64.4375 289.40625 44.90625 325.578125 31.15625 368.78125 c 0 + 17.40625 411.984375 10.53125 461.75 10.53125 518.078125 c 256 + 10.53125 574.328125 17.40625 624.09375 31.15625 667.296875 c 0 + 44.90625 710.5 64.4375 746.671875 89.75 775.8125 c 0 + 115.0625 804.953125 145.375 826.984375 181 842.0625 c 0 + 216.46875 857.0625 256 864.5625 299.59375 864.5625 c 256 + 343.03125 864.5625 382.5625 857.0625 418.03125 842.0625 c 0 + 453.65625 826.984375 483.96875 804.953125 509.28125 775.8125 c 0 + 534.59375 746.671875 554.125 710.5 567.875 667.296875 c 0 + 581.625 624.09375 588.5 574.328125 588.5 518.078125 c 256 + 588.5 461.75 581.625 411.984375 567.875 368.78125 c 0 + 554.125 325.578125 534.59375 289.40625 509.28125 260.265625 c 0 + 483.96875 231.125 453.65625 209.09375 418.03125 194.015625 c 0 + 382.5625 179.015625 343.03125 171.515625 299.59375 171.515625 c 256 +299.59375 268.46875 m 0 + 325.0625 268.46875 348.65625 272.921875 370.0625 281.90625 c 0 + 391.46875 290.8125 409.75 303.78125 424.75 320.734375 c 0 + 439.90625 337.6875 451.46875 358.390625 459.90625 382.6875 c 0 + 468.1875 406.984375 472.25 434.484375 472.25 465.265625 c 1 + 472.25 500.448242188 472.25 535.629882812 472.25 570.8125 c 1 + 472.25 601.59375 468.1875 629.09375 459.90625 653.390625 c 0 + 451.46875 677.6875 439.90625 698.390625 424.75 715.34375 c 0 + 409.75 732.296875 391.46875 745.265625 370.0625 754.171875 c 0 + 348.65625 763.15625 325.0625 767.609375 299.59375 767.609375 c 0 + 273.34375 767.609375 249.59375 763.15625 228.5 754.171875 c 0 + 207.40625 745.265625 189.28125 732.296875 174.28125 715.34375 c 0 + 159.125 698.390625 147.5625 677.6875 139.125 653.390625 c 0 + 130.84375 629.09375 126.78125 601.59375 126.78125 570.8125 c 1 + 126.78125 535.629882812 126.78125 500.448242188 126.78125 465.265625 c 1 + 126.78125 434.484375 130.84375 406.984375 139.125 382.6875 c 0 + 147.5625 358.390625 159.125 337.6875 174.28125 320.734375 c 0 + 189.28125 303.78125 207.40625 290.8125 228.5 281.90625 c 0 + 249.59375 272.921875 273.34375 268.46875 299.59375 268.46875 c 0 +760.375 183 m 1 + 760.375 406.359375 760.375 629.71875 760.375 853.078125 c 1 + 856.364257812 853.078125 952.354492188 853.078125 1048.34375 853.078125 c 1 + 1110.375 853.078125 1158.34375 834.875 1192.25 798.390625 c 0 + 1226.3125 761.90625 1243.1875 712.921875 1243.1875 651.515625 c 256 + 1243.1875 590.03125 1226.3125 541.046875 1192.25 504.5625 c 0 + 1158.34375 468.15625 1110.375 449.875 1048.34375 449.875 c 1 + 988.5 449.875 928.65625 449.875 868.8125 449.875 c 1 + 868.8125 360.916992188 868.8125 271.958007812 868.8125 183 c 1 + 832.666992188 183 796.520507812 183 760.375 183 c 1 +868.8125 544.953125 m 1 + 926.416992188 544.953125 984.020507812 544.953125 1041.625 544.953125 c 1 + 1069.125 544.953125 1090.53125 552.140625 1105.84375 566.515625 c 0 + 1121.3125 580.890625 1128.96875 601.59375 1128.96875 628.46875 c 1 + 1128.96875 643.807617188 1128.96875 659.145507812 1128.96875 674.484375 c 1 + 1128.96875 701.4375 1121.3125 722.0625 1105.84375 736.4375 c 0 + 1090.53125 750.8125 1069.125 758.078125 1041.625 758.078125 c 1 + 984.020507812 758.078125 926.416992188 758.078125 868.8125 758.078125 c 1 + 868.8125 687.036132812 868.8125 615.995117188 868.8125 544.953125 c 1 +1400.375 183 m 1 + 1400.375 406.359375 1400.375 629.71875 1400.375 853.078125 c 1 + 1436.52050781 853.078125 1472.66699219 853.078125 1508.8125 853.078125 c 1 + 1508.8125 661.723632812 1508.8125 470.370117188 1508.8125 279.015625 c 1 + 1599.69824219 279.015625 1690.58300781 279.015625 1781.46875 279.015625 c 1 + 1781.46875 247.010742188 1781.46875 215.004882812 1781.46875 183 c 1 + 1654.4375 183 1527.40625 183 1400.375 183 c 1 +EndSplineSet +EndChar + +StartChar: uniE10F +Encoding: 57615 57615 16 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 183 96.0156<742.719 983.085 1340.88 1585.94> 474.875 95.9375<182.719 458.188 1468.24 1586.52> 757.062 96.0156<182.719 492.719 742.719 983.085 1378.58 1614.18> +VStem: 74.2812 108.438<183 474.875 570.812 757.062> 634.281 108.438<279.016 757.062> 1038.34 116.25<334.419 701.659> 1250.22 107.5<611.387 747.68> 1610.22 107.5<294.565 441.758> +DStem2: 1464.28 584.25 1446 481.594 0.978916 -0.204262<-84.3745 149.704> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 183 96.0156<742.719 983.085 1340.88 1585.94> 474.875 95.9375<182.719 458.188 1468.24 1586.52> 757.062 96.0156<182.719 492.719 742.719 983.085 1378.58 1614.18> +VStem: 74.2812 108.438<183 474.875 570.812 757.062> 634.281 108.438<279.016 757.062> 1038.34 116.25<334.419 701.659> 1250.22 107.5<611.387 747.68> 1610.22 107.5<294.565 441.758> +DStem2: 1464.28 584.25 1446 481.594 0.978916 -0.204262<-84.3745 149.704> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +74.28125 183 m 1 + 74.28125 406.359375 74.28125 629.71875 74.28125 853.078125 c 1 + 213.760742188 853.078125 353.239257812 853.078125 492.71875 853.078125 c 1 + 492.71875 821.073242188 492.71875 789.067382812 492.71875 757.0625 c 1 + 389.385742188 757.0625 286.051757812 757.0625 182.71875 757.0625 c 1 + 182.71875 694.979492188 182.71875 632.895507812 182.71875 570.8125 c 1 + 274.541992188 570.8125 366.364257812 570.8125 458.1875 570.8125 c 1 + 458.1875 538.833007812 458.1875 506.854492188 458.1875 474.875 c 1 + 366.364257812 474.875 274.541992188 474.875 182.71875 474.875 c 1 + 182.71875 377.583007812 182.71875 280.291992188 182.71875 183 c 1 + 146.573242188 183 110.426757812 183 74.28125 183 c 1 +634.28125 853.078125 m 1 + 713.291992188 853.078125 792.301757812 853.078125 871.3125 853.078125 c 1 + 914.28125 853.078125 953.03125 846.046875 988.03125 831.984375 c 0 + 1022.875 817.84375 1052.5625 796.90625 1077.25 769.09375 c 0 + 1101.9375 741.203125 1121 706.359375 1134.4375 664.40625 c 0 + 1147.875 622.53125 1154.59375 573.703125 1154.59375 518.078125 c 256 + 1154.59375 462.375 1147.875 413.546875 1134.4375 371.671875 c 0 + 1121 329.71875 1101.9375 294.875 1077.25 266.984375 c 0 + 1052.5625 239.171875 1022.875 218.234375 988.03125 204.09375 c 0 + 953.03125 190.03125 914.28125 183 871.3125 183 c 1 + 792.301757812 183 713.291992188 183 634.28125 183 c 1 + 634.28125 406.359375 634.28125 629.71875 634.28125 853.078125 c 1 +871.3125 279.015625 m 1 + 921.3125 279.015625 961.625 294.71875 992.25 326.046875 c 0 + 1023.03125 357.375 1038.34375 403.46875 1038.34375 464.25 c 1 + 1038.34375 500.109375 1038.34375 535.96875 1038.34375 571.828125 c 1 + 1038.34375 632.609375 1023.03125 678.703125 992.25 710.03125 c 0 + 961.625 741.4375 921.3125 757.0625 871.3125 757.0625 c 1 + 828.448242188 757.0625 785.583007812 757.0625 742.71875 757.0625 c 1 + 742.71875 597.713867188 742.71875 438.364257812 742.71875 279.015625 c 1 + 785.583007812 279.015625 828.448242188 279.015625 871.3125 279.015625 c 1 +1474.90625 171.515625 m 0 + 1418.5 171.515625 1370.6875 181.75 1331.3125 202.21875 c 0 + 1291.9375 222.6875 1258.1875 250.1875 1230.0625 284.796875 c 1 + 1255.01074219 308.15625 1279.95800781 331.515625 1304.90625 354.875 c 1 + 1328.65625 326.046875 1354.75 304.25 1383.1875 289.5625 c 0 + 1411.625 274.875 1444.125 267.453125 1480.6875 267.453125 c 0 + 1523.5 267.453125 1555.84375 277.0625 1577.5625 296.28125 c 0 + 1599.28125 315.5 1610.21875 341.4375 1610.21875 374.015625 c 0 + 1610.21875 400.265625 1602.5625 421.046875 1587.25 436.4375 c 0 + 1571.78125 451.828125 1544.59375 463.3125 1505.53125 470.96875 c 1 + 1485.6875 474.510742188 1465.84375 478.051757812 1446 481.59375 c 1 + 1380.84375 493.703125 1331.78125 515.1875 1299.125 545.890625 c 0 + 1266.46875 576.59375 1250.21875 618.859375 1250.21875 672.609375 c 0 + 1250.21875 702.0625 1255.84375 728.78125 1267.09375 752.765625 c 0 + 1278.1875 776.75 1293.96875 796.90625 1314.125 813.234375 c 0 + 1334.28125 829.5625 1358.65625 842.21875 1387.5625 851.125 c 0 + 1416.3125 860.109375 1448.65625 864.5625 1484.4375 864.5625 c 0 + 1535.0625 864.5625 1578.8125 855.8125 1616 838.234375 c 0 + 1653.03125 820.578125 1684.75 795.1875 1711 761.90625 c 1 + 1685.73925781 739.510742188 1660.47949219 717.114257812 1635.21875 694.71875 c 1 + 1617.875 717.0625 1596.78125 735.03125 1571.78125 748.46875 c 0 + 1546.9375 761.90625 1515.84375 768.625 1478.65625 768.625 c 0 + 1440.375 768.625 1410.53125 760.890625 1389.4375 745.578125 c 0 + 1368.34375 730.1875 1357.71875 707.765625 1357.71875 678.390625 c 0 + 1357.71875 650.1875 1366.3125 629.25 1383.65625 615.5 c 0 + 1401 601.75 1427.875 591.28125 1464.28125 584.25 c 1 + 1484.125 580.109375 1503.96875 575.96875 1523.8125 571.828125 c 1 + 1591 559.015625 1640.21875 537.21875 1671.15625 506.515625 c 0 + 1702.25 475.8125 1717.71875 433.546875 1717.71875 379.796875 c 0 + 1717.71875 348.46875 1712.25 319.953125 1701.46875 294.328125 c 0 + 1690.53125 268.78125 1674.75 246.828125 1653.96875 228.625 c 0 + 1633.03125 210.34375 1607.71875 196.28125 1577.5625 186.359375 c 0 + 1547.5625 176.4375 1513.1875 171.515625 1474.90625 171.515625 c 0 +EndSplineSet +EndChar + +StartChar: uniE110 +Encoding: 57616 57616 17 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 99.2002 116.406<1160.36 1475.04> 470.001 112.793<1160.36 1447.48> 820.392 116.406<1160.36 1447.48> +VStem: 143.168 140.43<796.368 936.798> 716.801 136.816<799.981 936.798> 1024.81 135.547<215.606 470.001 582.794 820.392> 1475.98 142.773<609.386 793.799> 1505.96 142.871<244.11 441.498> +DStem2: 283.598 936.798 143.168 936.798 0.311738 -0.950168<0 736.986> 501.957 231.231 575.199 99.2002 0.291293 0.956634<0 737.551> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 99.2002 116.406<1160.36 1475.04> 470.001 112.793<1160.36 1447.48> 820.392 116.406<1160.36 1447.48> +VStem: 143.168 140.43<796.368 936.798> 716.801 136.816<799.981 936.798> 1024.81 135.547<215.606 470.001 582.794 820.392> 1475.98 142.773<609.386 793.799> 1505.96 142.871<244.11 441.498> +DStem2: 283.598 936.798 143.168 936.798 0.311738 -0.950168<0 736.986> 501.957 231.231 575.199 99.2002 0.291293 0.956634<0 737.551> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +417.97265625 99.2001953125 m 1xfc + 326.37109375 378.399414062 234.76953125 657.598632812 143.16796875 936.797851562 c 1 + 189.977539062 936.797851562 236.788085938 936.797851562 283.59765625 936.797851562 c 1 + 327.999023438 798.809570312 372.399414062 660.821289062 416.80078125 522.833007812 c 1 + 443.590820312 425.631835938 470.381835938 328.431640625 497.171875 231.231445312 c 1 + 498.766601562 231.231445312 500.362304688 231.231445312 501.95703125 231.231445312 c 1 + 529.170898438 328.431640625 556.383789062 425.631835938 583.59765625 522.833007812 c 1 + 627.999023438 660.821289062 672.399414062 798.809570312 716.80078125 936.797851562 c 1 + 762.40625 936.797851562 808.01171875 936.797851562 853.6171875 936.797851562 c 1 + 760.811523438 657.598632812 668.004882812 378.399414062 575.19921875 99.2001953125 c 1 + 522.790039062 99.2001953125 470.381835938 99.2001953125 417.97265625 99.2001953125 c 1xfc +1024.80859375 936.797851562 m 1 + 1148.40917969 936.797851562 1272.00878906 936.797851562 1395.609375 936.797851562 c 1 + 1465.140625 936.797851562 1519.828125 917.168945312 1559.37890625 878.008789062 c 0 + 1599.02734375 838.848632812 1618.75390625 786.407226562 1618.75390625 720.782226562 c 0xfe + 1618.75390625 689.629882812 1614.359375 662.969726562 1605.5703125 640.997070312 c 0 + 1596.78125 619.024414062 1585.55078125 600.958007812 1571.9765625 586.993164062 c 0 + 1558.40234375 573.028320312 1542.77734375 562.579101562 1525.19921875 555.840820312 c 0 + 1507.62109375 549.004882812 1490.43359375 544.805664062 1473.5390625 543.243164062 c 1 + 1473.5390625 540.833984375 1473.5390625 538.424804688 1473.5390625 536.016601562 c 1 + 1490.43359375 535.235351562 1508.98828125 531.231445312 1529.3984375 524.004882812 c 0 + 1549.80859375 516.778320312 1568.75390625 505.352539062 1586.4296875 489.825195312 c 0 + 1604.0078125 474.200195312 1618.75390625 454.180664062 1630.765625 429.766601562 c 0 + 1642.77734375 405.352539062 1648.83203125 375.567382812 1648.83203125 340.411132812 c 0xfd + 1648.83203125 306.817382812 1643.36328125 275.176757812 1632.62109375 245.586914062 c 0 + 1621.78125 215.997070312 1606.7421875 190.411132812 1587.6015625 168.829101562 c 0 + 1568.36328125 147.247070312 1545.609375 130.157226562 1519.14453125 117.754882812 c 0 + 1492.77734375 105.352539062 1463.96875 99.2001953125 1432.81640625 99.2001953125 c 1 + 1296.81347656 99.2001953125 1160.81152344 99.2001953125 1024.80859375 99.2001953125 c 1 + 1024.80859375 378.399414062 1024.80859375 657.598632812 1024.80859375 936.797851562 c 1 +1160.35546875 215.606445312 m 1 + 1237.95996094 215.606445312 1315.56347656 215.606445312 1393.16796875 215.606445312 c 1 + 1428.421875 215.606445312 1455.9609375 224.786132812 1475.98046875 243.243164062 c 0xfe + 1496 261.602539062 1505.9609375 287.969726562 1505.9609375 322.442382812 c 1 + 1505.9609375 336.016601562 1505.9609375 349.590820312 1505.9609375 363.165039062 c 1xfd + 1505.9609375 397.637695312 1496 424.004882812 1475.98046875 442.364257812 c 0 + 1455.9609375 460.821289062 1428.421875 470.000976562 1393.16796875 470.000976562 c 1 + 1315.56347656 470.000976562 1237.95996094 470.000976562 1160.35546875 470.000976562 c 1 + 1160.35546875 385.202148438 1160.35546875 300.404296875 1160.35546875 215.606445312 c 1 +1160.35546875 582.793945312 m 1 + 1230.375 582.793945312 1300.39453125 582.793945312 1370.4140625 582.793945312 c 1 + 1404.0078125 582.793945312 1429.984375 591.387695312 1448.34375 608.575195312 c 0 + 1466.80078125 625.762695312 1475.98046875 650.372070312 1475.98046875 682.403320312 c 1 + 1475.98046875 695.196289062 1475.98046875 707.989257812 1475.98046875 720.782226562 c 1 + 1475.98046875 752.813476562 1466.80078125 777.422851562 1448.34375 794.610351562 c 0 + 1429.984375 811.797851562 1404.0078125 820.391601562 1370.4140625 820.391601562 c 1 + 1300.39453125 820.391601562 1230.375 820.391601562 1160.35546875 820.391601562 c 1 + 1160.35546875 741.192382812 1160.35546875 661.993164062 1160.35546875 582.793945312 c 1 +EndSplineSet +EndChar + +StartChar: uniE111 +Encoding: 57617 57617 18 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -247.66 88.2812<529.736 717.81 1048.08 1247.08> 66.2461 92.1094<1077.25 1236.62> 99.8398 87.3438<550.762 718.015> 354.215 91.1719<1056.64 1244.29> 629.84 90.2344<1027.95 1216.16 1322.72 1485.92> 1221.17 78.75<1171.98 1216.16> +VStem: 306.078 103.672<629.84 1142.5> 387.641 112.344<-127.222 67.6086> 722.719 103.672<787.262 1299.92> 747.641 111.406<-127.222 67.6086> 1216.16 106.562<720.074 1221.17> 1267.33 114.219<185.593 328.991> 1280.77 112.344<-126.27 38.5227> +DStem2: 645.922 929.371 486.547 1000.39 0.508638 -0.860981<-299.653 157.446> 986.703 1114.61 1052.95 1055.15 0.683543 0.72991<1.41729 229.335> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -247.66 88.2812<529.736 717.81 1048.08 1247.08> 66.2461 92.1094<1077.25 1236.62> 99.8398 87.3438<550.762 718.015> 354.215 91.1719<1056.64 1244.29> 629.84 90.2344<1027.95 1216.16 1322.72 1485.92> 1221.17 78.75<1171.98 1216.16> +VStem: 306.078 103.672<629.84 1142.5> 387.641 112.344<-127.222 67.6086> 722.719 103.672<787.262 1299.92> 747.641 111.406<-127.222 67.6086> 1216.16 106.562<720.074 1221.17> 1267.33 114.219<185.593 328.991> 1280.77 112.344<-126.27 38.5227> +DStem2: 645.922 929.371 486.547 1000.39 0.508638 -0.860981<-299.653 157.446> 986.703 1114.61 1052.95 1055.15 0.683543 0.72991<1.41729 229.335> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +623.8125 -247.66015625 m 0xbd40 + 586.703125 -247.66015625 553.578125 -241.64453125 524.4375 -229.45703125 c 0 + 495.296875 -217.26953125 470.6875 -199.84765625 450.53125 -177.11328125 c 0 + 430.375 -154.37890625 414.828125 -127.03515625 403.96875 -95.08203125 c 0 + 393.109375 -63.05078125 387.640625 -26.87890625 387.640625 13.43359375 c 0xbd40 + 387.640625 62.02734375 394.984375 107.80859375 409.75 150.69921875 c 0xbe + 424.4375 193.58984375 443.34375 232.96484375 466.390625 268.74609375 c 0 + 489.4375 304.60546875 515.140625 336.48046875 543.65625 364.29296875 c 0 + 572.09375 392.10546875 600.140625 415.30859375 627.640625 433.90234375 c 1 + 675.635742188 433.90234375 723.629882812 433.90234375 771.625 433.90234375 c 1 + 733.890625 406.40234375 699.984375 379.83984375 669.90625 354.21484375 c 0 + 639.828125 328.58984375 613.578125 302.41796875 591.15625 275.54296875 c 0 + 568.734375 248.58984375 550.0625 220.15234375 534.984375 190.07421875 c 0 + 519.984375 159.99609375 508.265625 127.02734375 499.984375 91.16796875 c 1 + 502.223632812 90.54296875 504.463867188 89.91796875 506.703125 89.29296875 c 1 + 513.734375 102.73046875 521.859375 115.30859375 531.15625 127.18359375 c 0 + 540.453125 139.05859375 551.3125 149.44921875 563.8125 158.35546875 c 0xdd + 576.3125 167.33984375 590.53125 174.37109375 606.546875 179.52734375 c 0 + 622.5625 184.60546875 641.078125 187.18359375 662.171875 187.18359375 c 0 + 690.375 187.18359375 716.46875 182.41796875 740.453125 172.80859375 c 0 + 764.4375 163.19921875 785.21875 149.29296875 802.875 131.01171875 c 0 + 820.453125 112.80859375 834.203125 90.85546875 844.125 65.23046875 c 0 + 854.046875 39.68359375 859.046875 11.16796875 859.046875 -20.16015625 c 0 + 859.046875 -54.06640625 853.421875 -85.00390625 842.171875 -112.81640625 c 0 + 831 -140.62890625 815.140625 -164.45703125 794.671875 -184.30078125 c 0 + 774.203125 -204.14453125 749.4375 -219.69140625 720.296875 -230.86328125 c 0 + 691.15625 -242.11328125 659.046875 -247.66015625 623.8125 -247.66015625 c 0xbd40 +623.8125 -159.37890625 m 256 + 662.875 -159.37890625 693.265625 -148.98828125 714.984375 -128.20703125 c 0 + 736.78125 -107.34765625 747.640625 -76.80078125 747.640625 -36.48828125 c 1 + 747.640625 -32.0087890625 747.640625 -27.529296875 747.640625 -23.05078125 c 1 + 747.640625 17.26171875 736.78125 47.80859375 714.984375 68.58984375 c 0 + 693.265625 89.44921875 662.875 99.83984375 623.8125 99.83984375 c 256 + 584.75 99.83984375 554.359375 89.44921875 532.640625 68.58984375 c 0 + 510.84375 47.80859375 499.984375 17.26171875 499.984375 -23.05078125 c 1 + 499.984375 -27.529296875 499.984375 -32.0087890625 499.984375 -36.48828125 c 1 + 499.984375 -76.80078125 510.84375 -107.34765625 532.640625 -128.20703125 c 0 + 554.359375 -148.98828125 584.75 -159.37890625 623.8125 -159.37890625 c 256 +1145.375 158.35546875 m 1xdc08 + 1187.015625 158.35546875 1217.71875 167.18359375 1237.5625 184.76171875 c 0 + 1257.40625 202.41796875 1267.328125 224.918945312 1267.328125 252.49609375 c 1 + 1267.328125 254.736328125 1267.328125 256.975585938 1267.328125 259.21484375 c 1 + 1267.328125 289.918945312 1257.71875 313.43359375 1238.5 329.76171875 c 0 + 1219.359375 346.08984375 1193.421875 354.21484375 1160.765625 354.21484375 c 0 + 1128.734375 354.21484375 1101.546875 347.02734375 1079.203125 332.65234375 c 0 + 1056.78125 318.19921875 1037.875 298.19921875 1022.5625 272.65234375 c 1 + 998.551757812 293.43359375 974.541992188 314.21484375 950.53125 334.99609375 c 1 + 960.765625 349.76171875 972.328125 363.82421875 985.0625 377.26171875 c 0 + 997.875 390.69921875 1012.953125 402.41796875 1030.21875 412.33984375 c 0 + 1047.484375 422.26171875 1067.015625 430.23046875 1088.734375 436.32421875 c 0 + 1110.53125 442.41796875 1135.453125 445.38671875 1163.65625 445.38671875 c 0 + 1194.984375 445.38671875 1224.125 441.55859375 1251 433.90234375 c 0 + 1277.875 426.24609375 1300.921875 414.83984375 1320.140625 399.83984375 c 0 + 1339.359375 384.76171875 1354.359375 366.55859375 1365.21875 345.07421875 c 0 + 1376.15625 323.66796875 1381.546875 299.528320312 1381.546875 272.65234375 c 0xdc10 + 1381.546875 251.48046875 1378.1875 232.33984375 1371.46875 214.99609375 c 0 + 1364.75 197.73046875 1355.453125 182.575195312 1343.65625 169.44921875 c 0 + 1331.78125 156.325195312 1318.03125 145.622070312 1302.40625 137.26171875 c 0 + 1286.703125 128.981445312 1270.21875 122.88671875 1252.953125 119.05859375 c 1 + 1252.953125 117.444335938 1252.953125 115.830078125 1252.953125 114.21484375 c 1 + 1272.09375 110.387695312 1290.21875 104.137695312 1307.171875 95.54296875 c 0 + 1324.125 86.87109375 1339.046875 75.69921875 1351.78125 61.87109375 c 0 + 1364.59375 48.12109375 1374.671875 31.79296875 1382.015625 12.96484375 c 0 + 1389.4375 -5.94140625 1393.109375 -27.5029296875 1393.109375 -51.87890625 c 0 + 1393.109375 -81.33203125 1387.328125 -108.049804688 1375.84375 -132.03515625 c 0 + 1364.28125 -156.018554688 1348.109375 -176.643554688 1327.328125 -193.91015625 c 0 + 1306.546875 -211.252929688 1281.390625 -224.456054688 1251.9375 -233.75390625 c 0 + 1222.5625 -243.049804688 1189.90625 -247.66015625 1154.046875 -247.66015625 c 0 + 1122.71875 -247.66015625 1095.140625 -244.299804688 1071.46875 -237.58203125 c 0 + 1047.796875 -230.862304688 1026.859375 -221.95703125 1008.578125 -210.70703125 c 0 + 990.375 -199.53515625 974.359375 -186.72265625 960.609375 -172.34765625 c 0 + 946.859375 -157.97265625 934.828125 -143.05078125 924.59375 -127.66015625 c 1 + 951.15625 -106.87890625 977.71875 -86.09765625 1004.28125 -65.31640625 c 1 + 1012.640625 -78.75390625 1021.390625 -91.01953125 1030.6875 -102.26953125 c 0 + 1039.984375 -113.44140625 1050.53125 -123.05078125 1062.40625 -131.01953125 c 0 + 1074.203125 -139.065429688 1087.640625 -145.315429688 1102.71875 -149.76953125 c 0 + 1117.71875 -154.22265625 1134.828125 -156.48828125 1154.046875 -156.48828125 c 0 + 1194.984375 -156.48828125 1226.390625 -146.72265625 1248.109375 -127.19140625 c 0 + 1269.90625 -107.66015625 1280.765625 -80.62890625 1280.765625 -46.09765625 c 1 + 1280.765625 -43.857421875 1280.765625 -41.6181640625 1280.765625 -39.37890625 c 1 + 1280.765625 -4.8466796875 1269.28125 21.40234375 1246.234375 39.37109375 c 0 + 1223.1875 57.26171875 1190.53125 66.24609375 1148.265625 66.24609375 c 1 + 1124.59375 66.24609375 1100.921875 66.24609375 1077.25 66.24609375 c 1 + 1077.25 96.94921875 1077.25 127.65234375 1077.25 158.35546875 c 1 + 1099.95800781 158.35546875 1122.66699219 158.35546875 1145.375 158.35546875 c 1xdc08 +486.546875 1000.38671875 m 1 + 461.911132812 1047.75683594 437.276367188 1095.12695312 412.640625 1142.49609375 c 1 + 411.676757812 1142.49609375 410.713867188 1142.49609375 409.75 1142.49609375 c 1 + 409.75 971.611328125 409.75 800.725585938 409.75 629.83984375 c 1 + 375.192382812 629.83984375 340.635742188 629.83984375 306.078125 629.83984375 c 1 + 306.078125 853.19921875 306.078125 1076.55859375 306.078125 1299.91796875 c 1 + 346.390625 1299.91796875 386.703125 1299.91796875 427.015625 1299.91796875 c 1 + 499.984375 1176.40234375 572.953125 1052.88671875 645.921875 929.37109375 c 1 + 670.557617188 882.001953125 695.192382812 834.631835938 719.828125 787.26171875 c 1 + 720.791992188 787.26171875 721.754882812 787.26171875 722.71875 787.26171875 c 1 + 722.71875 958.147460938 722.71875 1129.03320312 722.71875 1299.91796875 c 1 + 757.276367188 1299.91796875 791.833007812 1299.91796875 826.390625 1299.91796875 c 1 + 826.390625 1076.55859375 826.390625 853.19921875 826.390625 629.83984375 c 1x9e80 + 786.078125 629.83984375 745.765625 629.83984375 705.453125 629.83984375 c 1 + 632.484375 753.35546875 559.515625 876.87109375 486.546875 1000.38671875 c 1 +1027.953125 629.83984375 m 1 + 1027.953125 659.91796875 1027.953125 689.99609375 1027.953125 720.07421875 c 1 + 1090.6875 720.07421875 1153.421875 720.07421875 1216.15625 720.07421875 c 1 + 1216.15625 887.10546875 1216.15625 1054.13671875 1216.15625 1221.16796875 c 1 + 1213.578125 1221.16796875 1211 1221.16796875 1208.421875 1221.16796875 c 1 + 1156.59863281 1165.83007812 1104.77636719 1110.49121094 1052.953125 1055.15234375 c 1 + 1030.87011719 1074.97070312 1008.78613281 1094.78808594 986.703125 1114.60546875 c 1 + 1043.65625 1176.37695312 1100.609375 1238.14746094 1157.5625 1299.91796875 c 1 + 1212.61425781 1299.91796875 1267.66699219 1299.91796875 1322.71875 1299.91796875 c 1 + 1322.71875 1106.63671875 1322.71875 913.35546875 1322.71875 720.07421875 c 1x9c20 + 1377.12011719 720.07421875 1431.52050781 720.07421875 1485.921875 720.07421875 c 1 + 1485.921875 689.99609375 1485.921875 659.91796875 1485.921875 629.83984375 c 1 + 1333.265625 629.83984375 1180.609375 629.83984375 1027.953125 629.83984375 c 1 +EndSplineSet +EndChar + +StartChar: uniE112 +Encoding: 57618 57618 19 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 171.516 96.9531<151.634 379.752 774.678 990.363 1414.68 1630.36> 767.609 96.9531<178.808 399.181 774.597 989.432 1414.6 1629.43> +VStem: 47.4062 107.5<611.387 747.68> 407.406 107.5<294.565 441.758> 601.625 115.156<330.807 708.111> 1241.62 115.156<330.807 708.111> +DStem2: 261.469 584.25 243.188 481.594 0.978916 -0.204262<-84.3815 149.558> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 171.516 96.9531<151.634 379.752 774.678 990.363 1414.68 1630.36> 767.609 96.9531<178.808 399.181 774.597 989.432 1414.6 1629.43> +VStem: 47.4062 107.5<611.387 747.68> 407.406 107.5<294.565 441.758> 601.625 115.156<330.807 708.111> 1241.62 115.156<330.807 708.111> +DStem2: 261.469 584.25 243.188 481.594 0.978916 -0.204262<-84.3815 149.558> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +271.9375 171.515625 m 0 + 215.6875 171.515625 167.875 181.75 128.5 202.21875 c 0 + 89.125 222.6875 55.375 250.1875 27.25 284.796875 c 1 + 52.1982421875 308.15625 77.1455078125 331.515625 102.09375 354.875 c 1 + 125.6875 326.046875 151.78125 304.25 180.21875 289.5625 c 0 + 208.8125 274.875 241.3125 267.453125 277.71875 267.453125 c 0 + 320.6875 267.453125 352.875 277.0625 374.75 296.28125 c 0 + 396.46875 315.5 407.40625 341.4375 407.40625 374.015625 c 0 + 407.40625 400.265625 399.59375 421.046875 384.28125 436.4375 c 0 + 368.96875 451.828125 341.78125 463.3125 302.71875 470.96875 c 1 + 282.875 474.510742188 263.03125 478.051757812 243.1875 481.59375 c 1 + 177.875 493.703125 128.96875 515.1875 96.3125 545.890625 c 0 + 63.65625 576.59375 47.40625 618.859375 47.40625 672.609375 c 0 + 47.40625 702.0625 52.875 728.78125 64.125 752.765625 c 0 + 75.375 776.75 91 796.90625 111.15625 813.234375 c 0 + 131.3125 829.5625 155.84375 842.21875 184.59375 851.125 c 0 + 213.34375 860.109375 245.6875 864.5625 281.625 864.5625 c 0 + 332.09375 864.5625 376 855.8125 413.03125 838.234375 c 0 + 450.21875 820.578125 481.9375 795.1875 508.1875 761.90625 c 1 + 482.875 739.510742188 457.5625 717.114257812 432.25 694.71875 c 1 + 415.0625 717.0625 393.96875 735.03125 368.96875 748.46875 c 0 + 343.96875 761.90625 312.875 768.625 275.84375 768.625 c 0 + 237.40625 768.625 207.71875 760.890625 186.46875 745.578125 c 0 + 165.375 730.1875 154.90625 707.765625 154.90625 678.390625 c 0 + 154.90625 650.1875 163.5 629.25 180.84375 615.5 c 0 + 198.03125 601.75 224.90625 591.28125 261.46875 584.25 c 1 + 281.3125 580.109375 301.15625 575.96875 321 571.828125 c 1 + 388.1875 559.015625 437.25 537.21875 468.34375 506.515625 c 0 + 499.28125 475.8125 514.90625 433.546875 514.90625 379.796875 c 0 + 514.90625 348.46875 509.4375 319.953125 498.5 294.328125 c 0 + 487.71875 268.78125 471.78125 246.828125 451 228.625 c 0 + 430.21875 210.34375 404.75 196.28125 374.75 186.359375 c 0 + 344.59375 176.4375 310.375 171.515625 271.9375 171.515625 c 0 +882.875 171.515625 m 0 + 795.21875 171.515625 726.3125 201.046875 676.46875 260.265625 c 0 + 626.46875 319.484375 601.625 405.421875 601.625 518.078125 c 0 + 601.625 574.328125 608.03125 623.9375 620.84375 666.828125 c 0 + 633.5 709.71875 652.09375 745.890625 676.46875 775.34375 c 0 + 700.84375 804.796875 730.375 826.984375 765.21875 842.0625 c 0 + 800.0625 857.0625 839.28125 864.5625 882.875 864.5625 c 0 + 941.15625 864.5625 989.90625 851.828125 1029.28125 826.203125 c 0 + 1068.65625 800.578125 1099.4375 762.84375 1121.9375 712.921875 c 1 + 1091.52050781 696.28125 1061.10449219 679.640625 1030.6875 663 c 1 + 1019.125 695.03125 1001.46875 720.421875 977.40625 739.328125 c 0 + 953.34375 758.234375 921.9375 767.609375 882.875 767.609375 c 0 + 831 767.609375 790.375 750.03125 761 714.875 c 0 + 731.46875 679.640625 716.78125 630.96875 716.78125 568.9375 c 1 + 716.78125 535.004882812 716.78125 501.073242188 716.78125 467.140625 c 1 + 716.78125 405.109375 731.46875 356.4375 761 321.203125 c 0 + 790.375 286.046875 831 268.46875 882.875 268.46875 c 0 + 923.1875 268.46875 956 278.859375 981.3125 299.640625 c 0 + 1006.46875 320.421875 1025.21875 347.140625 1037.40625 379.796875 c 1 + 1066.52050781 362.192382812 1095.63574219 344.588867188 1124.75 326.984375 c 1 + 1102.40625 278.390625 1071 240.265625 1030.6875 212.765625 c 0 + 990.375 185.265625 941.15625 171.515625 882.875 171.515625 c 0 +1522.875 171.515625 m 0 + 1435.21875 171.515625 1366.3125 201.046875 1316.46875 260.265625 c 0 + 1266.46875 319.484375 1241.625 405.421875 1241.625 518.078125 c 0 + 1241.625 574.328125 1248.03125 623.9375 1260.84375 666.828125 c 0 + 1273.5 709.71875 1292.09375 745.890625 1316.46875 775.34375 c 0 + 1340.84375 804.796875 1370.375 826.984375 1405.21875 842.0625 c 0 + 1440.0625 857.0625 1479.28125 864.5625 1522.875 864.5625 c 0 + 1581.15625 864.5625 1629.90625 851.828125 1669.28125 826.203125 c 0 + 1708.65625 800.578125 1739.4375 762.84375 1761.9375 712.921875 c 1 + 1731.52050781 696.28125 1701.10449219 679.640625 1670.6875 663 c 1 + 1659.125 695.03125 1641.46875 720.421875 1617.40625 739.328125 c 0 + 1593.34375 758.234375 1561.9375 767.609375 1522.875 767.609375 c 0 + 1471 767.609375 1430.375 750.03125 1401 714.875 c 0 + 1371.46875 679.640625 1356.78125 630.96875 1356.78125 568.9375 c 1 + 1356.78125 535.004882812 1356.78125 501.073242188 1356.78125 467.140625 c 1 + 1356.78125 405.109375 1371.46875 356.4375 1401 321.203125 c 0 + 1430.375 286.046875 1471 268.46875 1522.875 268.46875 c 0 + 1563.1875 268.46875 1596 278.859375 1621.3125 299.640625 c 0 + 1646.46875 320.421875 1665.21875 347.140625 1677.40625 379.796875 c 1 + 1706.52050781 362.192382812 1735.63574219 344.588867188 1764.75 326.984375 c 1 + 1742.40625 278.390625 1711 240.265625 1670.6875 212.765625 c 0 + 1630.375 185.265625 1581.15625 171.515625 1522.875 171.515625 c 0 +EndSplineSet +EndChar + +StartChar: uniE113 +Encoding: 57619 57619 20 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 183 89.2969<228.172 451.245 1380.3 1712.48> 453.703 90.2344<848.188 1057.36> 763.781 89.2969<228.172 451.245 848.188 1057.36 1280.45 1586.7> +VStem: 79.5156 109.453<309.775 726.303> 490.375 109.453<309.775 726.303> 746.391 101.797<183 453.703 543.938 762.844> 1076.62 108.516<563.279 743.506> +DStem2: 1265.14 274.172 1380.3 272.297 0.548962 0.835847<61.6492 585.764> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 183 89.2969<228.172 451.245 1380.3 1712.48> 453.703 90.2344<848.188 1057.36> 763.781 89.2969<228.172 451.245 848.188 1057.36 1280.45 1586.7> +VStem: 79.5156 109.453<309.775 726.303> 490.375 109.453<309.775 726.303> 746.391 101.797<183 453.703 543.938 762.844> 1076.62 108.516<563.279 743.506> +DStem2: 1265.14 274.172 1380.3 272.297 0.548962 0.835847<61.6492 585.764> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +339.671875 171.515625 m 256 + 299.359375 171.515625 263.1875 178.078125 231.234375 191.125 c 0 + 199.203125 204.25 171.859375 224.953125 149.125 253.078125 c 0 + 126.390625 281.203125 109.125 317.21875 97.25 361.046875 c 0 + 85.453125 404.953125 79.515625 457.21875 79.515625 518.078125 c 256 + 79.515625 578.859375 85.453125 631.125 97.25 675.03125 c 0 + 109.125 718.859375 126.390625 754.875 149.125 783 c 0 + 171.859375 811.125 199.203125 831.828125 231.234375 844.953125 c 0 + 263.1875 858.078125 299.359375 864.5625 339.671875 864.5625 c 256 + 379.984375 864.5625 416.15625 858.078125 448.1875 844.953125 c 0 + 480.140625 831.828125 507.5625 811.125 530.21875 783 c 0 + 552.953125 754.875 570.21875 718.859375 582.09375 675.03125 c 0 + 593.890625 631.125 599.828125 578.859375 599.828125 518.078125 c 256 + 599.828125 457.21875 593.890625 404.953125 582.09375 361.046875 c 0 + 570.21875 317.21875 552.953125 281.203125 530.21875 253.078125 c 0 + 507.5625 224.953125 480.140625 204.25 448.1875 191.125 c 0 + 416.15625 178.078125 379.984375 171.515625 339.671875 171.515625 c 256 +339.671875 261.75 m 256 + 387.71875 261.75 424.828125 277.21875 451.078125 308.3125 c 0 + 477.25 339.328125 490.375 382.375 490.375 437.375 c 1 + 490.375 491.151367188 490.375 544.926757812 490.375 598.703125 c 1 + 490.375 653.703125 477.25 696.75 451.078125 727.765625 c 0 + 424.828125 758.859375 387.71875 774.328125 339.671875 774.328125 c 256 + 291.703125 774.328125 254.59375 758.859375 228.34375 727.765625 c 0 + 202.09375 696.75 188.96875 653.703125 188.96875 598.703125 c 1 + 188.96875 544.926757812 188.96875 491.151367188 188.96875 437.375 c 1 + 188.96875 382.375 202.09375 339.328125 228.34375 308.3125 c 0 + 254.59375 277.21875 291.703125 261.75 339.671875 261.75 c 256 +746.390625 183 m 1 + 746.390625 406.359375 746.390625 629.71875 746.390625 853.078125 c 1 + 834.723632812 853.078125 923.057617188 853.078125 1011.390625 853.078125 c 1 + 1068.96875 853.078125 1112.328125 835.96875 1141.46875 801.75 c 0 + 1170.53125 767.453125 1185.140625 718.078125 1185.140625 653.390625 c 256 + 1185.140625 588.78125 1170.53125 539.328125 1141.46875 505.109375 c 0 + 1112.328125 470.8125 1068.96875 453.703125 1011.390625 453.703125 c 1 + 956.989257812 453.703125 902.588867188 453.703125 848.1875 453.703125 c 1 + 848.1875 363.46875 848.1875 273.234375 848.1875 183 c 1 + 814.254882812 183 780.323242188 183 746.390625 183 c 1 +848.1875 543.9375 m 1 + 899.698242188 543.9375 951.208007812 543.9375 1002.71875 543.9375 c 1 + 1027.015625 543.9375 1045.453125 550.1875 1057.953125 562.6875 c 0 + 1070.375 575.1875 1076.625 595.1875 1076.625 622.6875 c 1 + 1076.625 643.15625 1076.625 663.625 1076.625 684.09375 c 1 + 1076.625 711.671875 1070.375 731.671875 1057.953125 744.09375 c 0 + 1045.453125 756.59375 1027.015625 762.84375 1002.71875 762.84375 c 1 + 951.208007812 762.84375 899.698242188 762.84375 848.1875 762.84375 c 1 + 848.1875 689.875 848.1875 616.90625 848.1875 543.9375 c 1 +1712.484375 183 m 1 + 1563.37011719 183 1414.25488281 183 1265.140625 183 c 1 + 1265.140625 213.390625 1265.140625 243.78125 1265.140625 274.171875 c 1 + 1372.328125 437.375 1479.515625 600.578125 1586.703125 763.78125 c 1 + 1484.62011719 763.78125 1382.53613281 763.78125 1280.453125 763.78125 c 1 + 1280.453125 793.546875 1280.453125 823.3125 1280.453125 853.078125 c 1 + 1420.94824219 853.078125 1561.44238281 853.078125 1701.9375 853.078125 c 1 + 1701.9375 822.6875 1701.9375 792.296875 1701.9375 761.90625 c 1 + 1594.72363281 598.703125 1487.51074219 435.5 1380.296875 272.296875 c 1 + 1491.02636719 272.296875 1601.75488281 272.296875 1712.484375 272.296875 c 1 + 1712.484375 242.53125 1712.484375 212.765625 1712.484375 183 c 1 +EndSplineSet +EndChar + +StartChar: uniE114 +Encoding: 57620 57620 21 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -247.516 96.0156<794.758 1115.46> 44.3594 95.9375<794.758 1085.7> 326.547 96.0156<794.758 1115.46> 607.016 96.9531<1094.81 1318.51> 885.375 95.0781<415.93 652.317> 1193.58 95<415.93 652.317 1084.89 1328.46> +VStem: 46.3203 108.438<-247.516 4.38833 82.7188 422.562> 307.492 108.438<618.5 885.375 980.453 1193.58> 435.07 126.719<295.844 422.562> 450.461 130.547<-247.516 -116.969> 686.32 108.438<-151.5 44.3594 140.297 326.547 1002.69 1171.26> 917.727 116.172<767.663 1139.42> 1379.45 116.172<767.662 1139.42> 1404.68 108.516<-247.516 79.9207> +DStem2: 158.586 82.7188 246.945 65.4531 0.660468 0.750854<0 45.3946 144.153 437.782> 322.805 140.297 246.945 65.4531 0.545149 -0.838339<21.3897 394.71> 1298.12 422.562 1174.29 422.562 0.479608 -0.877483<0 340.284> 1464.21 123.969 1513.2 18.4219 0.477483 0.878641<0 339.836> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -247.516 96.0156<794.758 1115.46> 44.3594 95.9375<794.758 1085.7> 326.547 96.0156<794.758 1115.46> 607.016 96.9531<1094.81 1318.51> 885.375 95.0781<415.93 652.317> 1193.58 95<415.93 652.317 1084.89 1328.46> +VStem: 46.3203 108.438<-247.516 4.38833 82.7188 422.562> 307.492 108.438<618.5 885.375 980.453 1193.58> 435.07 126.719<295.844 422.562> 450.461 130.547<-247.516 -116.969> 686.32 108.438<-151.5 44.3594 140.297 326.547 1002.69 1171.26> 917.727 116.172<767.663 1139.42> 1379.45 116.172<767.662 1139.42> 1404.68 108.516<-247.516 79.9207> +DStem2: 158.586 82.7188 246.945 65.4531 0.660468 0.750854<0 45.3946 144.153 437.782> 322.805 140.297 246.945 65.4531 0.545149 -0.838339<21.3897 394.71> 1298.12 422.562 1174.29 422.562 0.479608 -0.877483<0 340.284> 1464.21 123.969 1513.2 18.4219 0.477483 0.878641<0 339.836> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +246.9453125 65.453125 m 1xff70 + 216.215820312 30.244140625 185.487304688 -4.9638671875 154.7578125 -40.171875 c 1 + 154.7578125 -109.287109375 154.7578125 -178.401367188 154.7578125 -247.515625 c 1 + 118.612304688 -247.515625 82.4658203125 -247.515625 46.3203125 -247.515625 c 5 + 46.3203125 -24.15625 46.3203125 199.203125 46.3203125 422.5625 c 1 + 82.4658203125 422.5625 118.612304688 422.5625 154.7578125 422.5625 c 1 + 154.7578125 309.28125 154.7578125 196 154.7578125 82.71875 c 1 + 156.034179688 82.71875 157.309570312 82.71875 158.5859375 82.71875 c 1 + 190.590820312 123.369140625 222.596679688 164.020507812 254.6015625 204.671875 c 1 + 314.7578125 277.301757812 374.9140625 349.931640625 435.0703125 422.5625 c 1 + 477.309570312 422.5625 519.549804688 422.5625 561.7890625 422.5625 c 1xffb0 + 482.127929688 328.473632812 402.465820312 234.384765625 322.8046875 140.296875 c 1 + 408.872070312 11.025390625 494.940429688 -118.245117188 581.0078125 -247.515625 c 1 + 537.4921875 -247.515625 493.9765625 -247.515625 450.4609375 -247.515625 c 1 + 382.622070312 -143.193359375 314.784179688 -38.8701171875 246.9453125 65.453125 c 1xff70 +686.3203125 -247.515625 m 1 + 686.3203125 -24.15625 686.3203125 199.203125 686.3203125 422.5625 c 1 + 829.3671875 422.5625 972.4140625 422.5625 1115.4609375 422.5625 c 1 + 1115.4609375 390.556640625 1115.4609375 358.551757812 1115.4609375 326.546875 c 1 + 1008.55957031 326.546875 901.659179688 326.546875 794.7578125 326.546875 c 1 + 794.7578125 264.462890625 794.7578125 202.379882812 794.7578125 140.296875 c 1 + 891.737304688 140.296875 988.715820312 140.296875 1085.6953125 140.296875 c 1 + 1085.6953125 108.317382812 1085.6953125 76.337890625 1085.6953125 44.359375 c 1 + 988.715820312 44.359375 891.737304688 44.359375 794.7578125 44.359375 c 1 + 794.7578125 -20.927734375 794.7578125 -86.2138671875 794.7578125 -151.5 c 1 + 901.659179688 -151.5 1008.55957031 -151.5 1115.4609375 -151.5 c 1 + 1115.4609375 -183.505859375 1115.4609375 -215.510742188 1115.4609375 -247.515625 c 1 + 972.4140625 -247.515625 829.3671875 -247.515625 686.3203125 -247.515625 c 1 +1404.6796875 -247.515625 m 1xff34 + 1404.6796875 -159.521484375 1404.6796875 -71.5263671875 1404.6796875 16.46875 c 1 + 1327.8828125 151.833007812 1251.0859375 287.197265625 1174.2890625 422.5625 c 1 + 1215.56542969 422.5625 1256.84082031 422.5625 1298.1171875 422.5625 c 1 + 1352.51855469 323.03125 1406.91894531 223.5 1461.3203125 123.96875 c 1 + 1462.28417969 123.96875 1463.24707031 123.96875 1464.2109375 123.96875 c 1 + 1518.29980469 223.5 1572.38769531 323.03125 1626.4765625 422.5625 c 1 + 1666.1640625 422.5625 1705.8515625 422.5625 1745.5390625 422.5625 c 1 + 1668.09082031 287.848632812 1590.64355469 153.134765625 1513.1953125 18.421875 c 1 + 1513.1953125 -70.224609375 1513.1953125 -158.870117188 1513.1953125 -247.515625 c 1 + 1477.0234375 -247.515625 1440.8515625 -247.515625 1404.6796875 -247.515625 c 1xff34 +307.4921875 618.5 m 1 + 307.4921875 841.859375 307.4921875 1065.21875 307.4921875 1288.578125 c 1 + 403.481445312 1288.578125 499.471679688 1288.578125 595.4609375 1288.578125 c 1 + 657.5703125 1288.578125 705.5390625 1270.375 739.4453125 1233.890625 c 0 + 773.4296875 1197.40625 790.3828125 1148.421875 790.3828125 1087.015625 c 256 + 790.3828125 1025.53125 773.4296875 976.546875 739.4453125 940.0625 c 0 + 705.5390625 903.65625 657.5703125 885.375 595.4609375 885.375 c 1 + 535.6171875 885.375 475.7734375 885.375 415.9296875 885.375 c 1 + 415.9296875 796.416015625 415.9296875 707.458007812 415.9296875 618.5 c 1 + 379.784179688 618.5 343.637695312 618.5 307.4921875 618.5 c 1 +415.9296875 980.453125 m 1 + 473.534179688 980.453125 531.137695312 980.453125 588.7421875 980.453125 c 1 + 616.2421875 980.453125 637.7265625 987.640625 653.0390625 1002.015625 c 0 + 668.4296875 1016.390625 676.0859375 1037.09375 676.0859375 1063.96875 c 1 + 676.0859375 1079.30664062 676.0859375 1094.64550781 676.0859375 1109.984375 c 1 + 676.0859375 1136.9375 668.4296875 1157.5625 653.0390625 1171.9375 c 0 + 637.7265625 1186.3125 616.2421875 1193.578125 588.7421875 1193.578125 c 1 + 531.137695312 1193.578125 473.534179688 1193.578125 415.9296875 1193.578125 c 1 + 415.9296875 1122.53613281 415.9296875 1051.49414062 415.9296875 980.453125 c 1 +1206.7109375 607.015625 m 256 + 1163.1171875 607.015625 1123.6640625 614.515625 1088.1171875 629.515625 c 0 + 1052.5703125 644.59375 1022.1796875 666.624023438 996.9453125 695.765625 c 0 + 971.6328125 724.90625 952.1015625 761.078125 938.3515625 804.28125 c 0 + 924.6015625 847.484375 917.7265625 897.25 917.7265625 953.578125 c 256 + 917.7265625 1009.828125 924.6015625 1059.59375 938.3515625 1102.796875 c 0 + 952.1015625 1146 971.6328125 1182.171875 996.9453125 1211.3125 c 0 + 1022.1796875 1240.453125 1052.5703125 1262.48339844 1088.1171875 1277.5625 c 0 + 1123.6640625 1292.56152344 1163.1171875 1300.0625 1206.7109375 1300.0625 c 256 + 1250.2265625 1300.0625 1289.6796875 1292.5625 1325.2265625 1277.5625 c 0 + 1360.7734375 1262.48339844 1391.1640625 1240.45214844 1416.3984375 1211.3125 c 0 + 1441.7109375 1182.171875 1461.2421875 1146 1474.9921875 1102.796875 c 0 + 1488.7421875 1059.59375 1495.6171875 1009.82714844 1495.6171875 953.578125 c 256xff38 + 1495.6171875 897.25 1488.7421875 847.483398438 1474.9921875 804.28125 c 0 + 1461.2421875 761.077148438 1441.7109375 724.905273438 1416.3984375 695.765625 c 0 + 1391.1640625 666.625 1360.7734375 644.59375 1325.2265625 629.515625 c 0 + 1289.6796875 614.515625 1250.2265625 607.015625 1206.7109375 607.015625 c 256 +1206.7109375 703.96875 m 0 + 1232.2578125 703.96875 1255.7734375 708.421875 1277.2578125 717.40625 c 0 + 1298.6640625 726.3125 1316.9453125 739.28125 1331.9453125 756.234375 c 0 + 1347.0234375 773.186523438 1358.6640625 793.890625 1367.0234375 818.1875 c 0 + 1375.3046875 842.484375 1379.4453125 869.983398438 1379.4453125 900.765625 c 1 + 1379.4453125 935.947265625 1379.4453125 971.129882812 1379.4453125 1006.3125 c 1 + 1379.4453125 1037.09375 1375.3046875 1064.59277344 1367.0234375 1088.890625 c 0 + 1358.6640625 1113.18652344 1347.0234375 1133.890625 1331.9453125 1150.84375 c 0 + 1316.9453125 1167.79589844 1298.6640625 1180.76464844 1277.2578125 1189.671875 c 0 + 1255.7734375 1198.65625 1232.2578125 1203.109375 1206.7109375 1203.109375 c 0 + 1180.4609375 1203.109375 1156.7890625 1198.65625 1135.6171875 1189.671875 c 0 + 1114.5234375 1180.765625 1096.3984375 1167.796875 1081.3984375 1150.84375 c 0 + 1066.3203125 1133.890625 1054.6796875 1113.18652344 1046.3203125 1088.890625 c 0 + 1038.0390625 1064.59277344 1033.8984375 1037.09375 1033.8984375 1006.3125 c 1 + 1033.8984375 971.129882812 1033.8984375 935.947265625 1033.8984375 900.765625 c 1 + 1033.8984375 869.983398438 1038.0390625 842.484375 1046.3203125 818.1875 c 0 + 1054.6796875 793.890625 1066.3203125 773.186523438 1081.3984375 756.234375 c 0 + 1096.3984375 739.280273438 1114.5234375 726.311523438 1135.6171875 717.40625 c 0 + 1156.7890625 708.420898438 1180.4609375 703.96875 1206.7109375 703.96875 c 0 +EndSplineSet +EndChar + +StartChar: uniE115 +Encoding: 57621 57621 22 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 15.5 139.688<684.242 1061.86> 460.461 135.352<684.242 1028.79> 880.93 139.688<684.242 1028.79> +VStem: 521.586 162.656<155.188 460.461 595.812 880.93> 1062.99 171.328<627.723 849.019> 1098.97 171.445<189.391 426.257> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 1 +WasModified: 1 +WasOrder2: 0 +Layer: 1 +Width: 1792 +VWidth: 1687 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +SplineSet +0 15.5 m 5 +NamedP: "1-char" + 1792 15.5 l 1029 +0 1020.6171875 m 5 +NamedP: "1-char" + 1792 1020.6171875 l 1029 +EndSplineSet +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +521.5859375 1020.6171875 m 5xf4 + 669.90625 1020.6171875 818.2265625 1020.6171875 966.546875 1020.6171875 c 1 + 1049.984375 1020.6171875 1115.609375 997.0625 1163.0703125 950.0703125 c 0 + 1210.6484375 903.078125 1234.3203125 840.1484375 1234.3203125 761.3984375 c 0xf8 + 1234.3203125 724.015625 1229.046875 692.0234375 1218.5 665.65625 c 0 + 1207.953125 639.2890625 1194.4765625 617.609375 1178.1875 600.8515625 c 0 + 1161.8984375 584.09375 1143.1484375 571.5546875 1122.0546875 563.46875 c 0 + 1100.9609375 555.265625 1080.3359375 550.2265625 1060.0625 548.3515625 c 1 + 1060.0625 545.4609375 1060.0625 542.5703125 1060.0625 539.6796875 c 1 + 1080.3359375 538.7421875 1102.6015625 533.9375 1127.09375 525.265625 c 0 + 1151.5859375 516.59375 1174.3203125 502.8828125 1195.53125 484.25 c 0 + 1216.625 465.5 1234.3203125 441.4765625 1248.734375 412.1796875 c 0 + 1263.1484375 382.8828125 1270.4140625 347.140625 1270.4140625 304.953125 c 0 + 1270.4140625 264.640625 1263.8515625 226.671875 1250.9609375 191.1640625 c 0 + 1237.953125 155.65625 1219.90625 124.953125 1196.9375 99.0546875 c 0 + 1173.8515625 73.15625 1146.546875 52.6484375 1114.7890625 37.765625 c 0 + 1083.1484375 22.8828125 1048.578125 15.5 1011.1953125 15.5 c 5 + 847.9921875 15.5 684.7890625 15.5 521.5859375 15.5 c 1 + 521.5859375 350.5390625 521.5859375 685.578125 521.5859375 1020.6171875 c 5xf4 +684.2421875 155.1875 m 1 + 777.3671875 155.1875 870.4921875 155.1875 963.6171875 155.1875 c 1 + 1005.921875 155.1875 1038.96875 166.203125 1062.9921875 188.3515625 c 0xf8 + 1087.015625 210.3828125 1098.96875 242.0234375 1098.96875 283.390625 c 1 + 1098.96875 299.6796875 1098.96875 315.96875 1098.96875 332.2578125 c 1xf4 + 1098.96875 373.625 1087.015625 405.265625 1062.9921875 427.296875 c 0 + 1038.96875 449.4453125 1005.921875 460.4609375 963.6171875 460.4609375 c 1 + 870.4921875 460.4609375 777.3671875 460.4609375 684.2421875 460.4609375 c 1 + 684.2421875 358.703125 684.2421875 256.9453125 684.2421875 155.1875 c 1 +684.2421875 595.8125 m 1 + 768.265625 595.8125 852.2890625 595.8125 936.3125 595.8125 c 1 + 976.625 595.8125 1007.796875 606.125 1029.828125 626.75 c 0 + 1051.9765625 647.375 1062.9921875 676.90625 1062.9921875 715.34375 c 1 + 1062.9921875 730.6953125 1062.9921875 746.046875 1062.9921875 761.3984375 c 1 + 1062.9921875 799.8359375 1051.9765625 829.3671875 1029.828125 849.9921875 c 0 + 1007.796875 870.6171875 976.625 880.9296875 936.3125 880.9296875 c 1 + 852.2890625 880.9296875 768.265625 880.9296875 684.2421875 880.9296875 c 1 + 684.2421875 785.890625 684.2421875 690.8515625 684.2421875 595.8125 c 1 +EndSplineSet +EndChar + +StartChar: uniE116 +Encoding: 57622 57622 23 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -66.1094 93.125<474.359 672.172> 322.719 99.8438<559.262 588.09> 607.016 95.9375<328.301 554.086> 618.5 124.766<964.387 984.548 1352.16 1364.12> 1204.12 95.9375<353.87 572.282> +VStem: 222.406 107.5<1046.89 1183.18> 279.516 110.312<-247.516 -137.203> 582.406 107.5<730.065 877.258> 746.859 110.391<1178.19 1288.58> 759.516 113.281<-247.516 -134.234> 980.922 103.75<-247.516 265.141> 1397.64 103.594<-90.0938 422.562> 1483.19 106.562<1182.02 1288.58> +DStem2: 279.516 -247.516 389.828 -247.516 0.303392 0.952866<33.468 224.101 320.706 631.909> 436.469 1019.75 418.188 917.094 0.978916 -0.204262<-84.378 149.631> 644.359 422.562 576.078 322.719 0.306233 -0.951957<74.137 385.061 481.942 673.15> 857.25 1288.58 746.859 1288.58 0.206752 -0.978393<0 557.355> 975.297 743.266 1027.17 618.5 0.24367 0.969858<0 458.809> 1320.77 52.0156 1161.39 123.031 0.508638 -0.860981<-299.653 157.446> 1229.75 1288.58 1167.33 1168.58 0.238997 -0.97102<101.604 559.948> 1364.12 744.281 1424.59 618.5 0.213693 0.976901<0 557.167> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -66.1094 93.125<474.359 672.172> 322.719 99.8438<559.262 588.09> 607.016 95.9375<328.301 554.086> 618.5 124.766<964.387 984.548 1352.16 1364.12> 1204.12 95.9375<353.87 572.282> +VStem: 222.406 107.5<1046.89 1183.18> 279.516 110.312<-247.516 -137.203> 582.406 107.5<730.065 877.258> 746.859 110.391<1178.19 1288.58> 759.516 113.281<-247.516 -134.234> 980.922 103.75<-247.516 265.141> 1397.64 103.594<-90.0938 422.562> 1483.19 106.562<1182.02 1288.58> +DStem2: 279.516 -247.516 389.828 -247.516 0.303392 0.952866<33.468 224.101 320.706 631.909> 436.469 1019.75 418.188 917.094 0.978916 -0.204262<-84.378 149.631> 644.359 422.562 576.078 322.719 0.306233 -0.951957<74.137 385.061 481.942 673.15> 857.25 1288.58 746.859 1288.58 0.206752 -0.978393<0 557.355> 975.297 743.266 1027.17 618.5 0.24367 0.969858<0 458.809> 1320.77 52.0156 1161.39 123.031 0.508638 -0.860981<-299.653 157.446> 1229.75 1288.58 1167.33 1168.58 0.238997 -0.97102<101.604 559.948> 1364.12 744.281 1424.59 618.5 0.213693 0.976901<0 557.167> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +759.515625 -247.515625 m 1xcb60 + 739.359375 -187.046875 719.203125 -126.578125 699.046875 -66.109375 c 1 + 615.504882812 -66.109375 531.963867188 -66.109375 448.421875 -66.109375 c 1 + 428.890625 -126.578125 409.359375 -187.046875 389.828125 -247.515625 c 1 + 353.057617188 -247.515625 316.286132812 -247.515625 279.515625 -247.515625 c 1 + 355.661132812 -24.15625 431.807617188 199.203125 507.953125 422.5625 c 1 + 553.421875 422.5625 598.890625 422.5625 644.359375 422.5625 c 1 + 720.504882812 199.203125 796.651367188 -24.15625 872.796875 -247.515625 c 1 + 835.036132812 -247.515625 797.276367188 -247.515625 759.515625 -247.515625 c 1xcb60 +576.078125 322.71875 m 1 + 574.515625 322.71875 572.953125 322.71875 571.390625 322.71875 c 1 + 539.046875 224.150390625 506.703125 125.583007812 474.359375 27.015625 c 1 + 540.296875 27.015625 606.234375 27.015625 672.171875 27.015625 c 1 + 640.140625 125.583007812 608.109375 224.150390625 576.078125 322.71875 c 1 +1161.390625 123.03125 m 1 + 1136.75488281 170.400390625 1112.12011719 217.770507812 1087.484375 265.140625 c 1 + 1086.546875 265.140625 1085.609375 265.140625 1084.671875 265.140625 c 1 + 1084.671875 94.2548828125 1084.671875 -76.630859375 1084.671875 -247.515625 c 1 + 1050.08886719 -247.515625 1015.50488281 -247.515625 980.921875 -247.515625 c 1 + 980.921875 -24.15625 980.921875 199.203125 980.921875 422.5625 c 1 + 1021.234375 422.5625 1061.546875 422.5625 1101.859375 422.5625 c 1 + 1174.828125 299.046875 1247.796875 175.53125 1320.765625 52.015625 c 1 + 1345.40136719 4.6455078125 1370.03613281 -42.724609375 1394.671875 -90.09375 c 1 + 1395.66113281 -90.09375 1396.65136719 -90.09375 1397.640625 -90.09375 c 1 + 1397.640625 80.791015625 1397.640625 251.676757812 1397.640625 422.5625 c 1 + 1432.171875 422.5625 1466.703125 422.5625 1501.234375 422.5625 c 1 + 1501.234375 199.203125 1501.234375 -24.15625 1501.234375 -247.515625 c 1xc930 + 1460.921875 -247.515625 1420.609375 -247.515625 1380.296875 -247.515625 c 1 + 1307.328125 -124 1234.359375 -0.484375 1161.390625 123.03125 c 1 +447.015625 607.015625 m 0xed20 + 390.6875 607.015625 342.875 617.249023438 303.5 637.71875 c 0 + 264.125 658.1875 230.375 685.6875 202.25 720.296875 c 1 + 227.198242188 743.65625 252.145507812 767.015625 277.09375 790.375 c 1 + 300.765625 761.546875 326.859375 739.75 355.296875 725.0625 c 0 + 383.8125 710.375 416.3125 702.953125 452.796875 702.953125 c 0 + 495.6875 702.953125 527.953125 712.5625 549.75 731.78125 c 0 + 571.46875 751 582.40625 776.9375 582.40625 809.515625 c 0 + 582.40625 835.765625 574.671875 856.546875 559.359375 871.9375 c 0 + 543.96875 887.328125 516.78125 898.8125 477.71875 906.46875 c 1 + 457.875 910.009765625 438.03125 913.551757812 418.1875 917.09375 c 1 + 352.953125 929.203125 303.96875 950.6875 271.3125 981.390625 c 0 + 238.65625 1012.09375 222.40625 1054.359375 222.40625 1108.109375 c 0 + 222.40625 1137.5625 227.953125 1164.28125 239.203125 1188.265625 c 0 + 250.375 1212.25 266.078125 1232.40625 286.234375 1248.734375 c 0 + 306.390625 1265.0625 330.84375 1277.71875 359.671875 1286.625 c 0 + 388.421875 1295.609375 420.765625 1300.0625 456.625 1300.0625 c 0 + 507.171875 1300.0625 551 1291.3125 588.109375 1273.734375 c 0 + 625.21875 1256.078125 656.9375 1230.6875 683.1875 1197.40625 c 1 + 657.901367188 1175.00976562 632.614257812 1152.61425781 607.328125 1130.21875 c 1 + 590.0625 1152.5625 568.96875 1170.53125 543.96875 1183.96875 c 0 + 519.046875 1197.40625 487.953125 1204.125 450.84375 1204.125 c 0 + 412.484375 1204.125 382.71875 1196.390625 361.546875 1181.078125 c 0 + 340.453125 1165.6875 329.90625 1143.265625 329.90625 1113.890625 c 0 + 329.90625 1085.6875 338.5 1064.75 355.84375 1051 c 0 + 373.109375 1037.25 399.984375 1026.78125 436.46875 1019.75 c 1 + 456.3125 1015.609375 476.15625 1011.46875 496 1007.328125 c 1 + 563.1875 994.515625 612.328125 972.71875 643.34375 942.015625 c 0 + 674.359375 911.3125 689.90625 869.046875 689.90625 815.296875 c 0 + 689.90625 783.96875 684.4375 755.453125 673.578125 729.828125 c 0 + 662.71875 704.28125 646.859375 682.328125 626.078125 664.125 c 0 + 605.21875 645.84375 579.828125 631.78125 549.75 621.859375 c 0 + 519.671875 611.936523438 485.375 607.015625 447.015625 607.015625 c 0xed20 +905.21875 618.5 m 1xd9a8 + 852.432617188 841.859375 799.645507812 1065.21875 746.859375 1288.578125 c 1 + 783.65625 1288.578125 820.453125 1288.578125 857.25 1288.578125 c 1 + 879.958007812 1181.05175781 902.666992188 1073.52539062 925.375 966 c 1 + 941.078125 891.754882812 956.78125 817.509765625 972.484375 743.265625 c 1 + 973.421875 743.265625 974.359375 743.265625 975.296875 743.265625 c 1 + 993.239257812 817.509765625 1011.18261719 891.754882812 1029.125 966 c 1 + 1055.66113281 1073.52539062 1082.19824219 1181.05175781 1108.734375 1288.578125 c 1 + 1149.07324219 1288.578125 1189.41113281 1288.578125 1229.75 1288.578125 c 1 + 1255.97363281 1181.05175781 1282.19824219 1073.52539062 1308.421875 966 c 1 + 1326.02636719 892.09375 1343.62988281 818.1875 1361.234375 744.28125 c 1 + 1362.19824219 744.28125 1363.16113281 744.28125 1364.125 744.28125 c 1 + 1380.453125 818.1875 1396.78125 892.09375 1413.109375 966 c 1 + 1436.46875 1073.52539062 1459.828125 1181.05175781 1483.1875 1288.578125 c 1 + 1518.70800781 1288.578125 1554.22949219 1288.578125 1589.75 1288.578125 c 1 + 1534.69824219 1065.21875 1479.64550781 841.859375 1424.59375 618.5 c 1 + 1383.96875 618.5 1343.34375 618.5 1302.71875 618.5 c 1 + 1274.22949219 734.020507812 1245.73925781 849.541015625 1217.25 965.0625 c 1 + 1200.609375 1032.90039062 1183.96875 1100.73925781 1167.328125 1168.578125 c 1 + 1166.67675781 1168.578125 1166.02636719 1168.578125 1165.375 1168.578125 c 1 + 1148.421875 1100.73925781 1131.46875 1032.90039062 1114.515625 965.0625 c 1 + 1085.40136719 849.541015625 1056.28613281 734.020507812 1027.171875 618.5 c 1 + 986.520507812 618.5 945.870117188 618.5 905.21875 618.5 c 1xd9a8 +EndSplineSet +EndChar + +StartChar: uniE117 +Encoding: 57623 57623 24 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 624.17 96.0156<520.383 793.039> +VStem: 280.539 103.75<-241.846 270.811> 411.945 108.438<720.186 1294.25> 697.258 103.594<-84.4238 428.232> 938.195 120<-241.846 -121.846> 945.852 127.656<300.576 428.232> 1050.3 108.516<624.17 951.606> 1383.66 127.656<-241.846 -114.189 300.576 428.232> +DStem2: 620.383 57.6855 461.008 128.701 0.508638 -0.860981<-299.653 157.446> 943.742 1294.25 819.914 1294.25 0.479608 -0.877483<0 340.284> 938.195 -241.846 1058.2 -241.846 0.552681 0.833393<66.3217 372.475 510.607 804.036> 1073.51 428.232 945.852 428.232 0.546973 -0.83715<0 292.459 418.391 730.603> 1109.84 995.654 1158.82 890.107 0.477483 0.878641<0 339.836> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 624.17 96.0156<520.383 793.039> +VStem: 280.539 103.75<-241.846 270.811> 411.945 108.438<720.186 1294.25> 697.258 103.594<-84.4238 428.232> 938.195 120<-241.846 -121.846> 945.852 127.656<300.576 428.232> 1050.3 108.516<624.17 951.606> 1383.66 127.656<-241.846 -114.189 300.576 428.232> +DStem2: 620.383 57.6855 461.008 128.701 0.508638 -0.860981<-299.653 157.446> 943.742 1294.25 819.914 1294.25 0.479608 -0.877483<0 340.284> 938.195 -241.846 1058.2 -241.846 0.552681 0.833393<66.3217 372.475 510.607 804.036> 1073.51 428.232 945.852 428.232 0.546973 -0.83715<0 292.459 418.391 730.603> 1109.84 995.654 1158.82 890.107 0.477483 0.878641<0 339.836> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +461.0078125 128.701171875 m 1xf1 + 436.372070312 176.071289062 411.737304688 223.440429688 387.1015625 270.810546875 c 1 + 386.1640625 270.810546875 385.2265625 270.810546875 384.2890625 270.810546875 c 1 + 384.2890625 99.9248046875 384.2890625 -70.9599609375 384.2890625 -241.845703125 c 1 + 349.706054688 -241.845703125 315.122070312 -241.845703125 280.5390625 -241.845703125 c 1 + 280.5390625 -18.486328125 280.5390625 204.873046875 280.5390625 428.232421875 c 1 + 320.8515625 428.232421875 361.1640625 428.232421875 401.4765625 428.232421875 c 1 + 474.4453125 304.716796875 547.4140625 181.201171875 620.3828125 57.685546875 c 1 + 645.018554688 10.3154296875 669.653320312 -37.0537109375 694.2890625 -84.423828125 c 1 + 695.278320312 -84.423828125 696.268554688 -84.423828125 697.2578125 -84.423828125 c 1 + 697.2578125 86.4619140625 697.2578125 257.346679688 697.2578125 428.232421875 c 1 + 731.7890625 428.232421875 766.3203125 428.232421875 800.8515625 428.232421875 c 1 + 800.8515625 204.873046875 800.8515625 -18.486328125 800.8515625 -241.845703125 c 1 + 760.5390625 -241.845703125 720.2265625 -241.845703125 679.9140625 -241.845703125 c 1 + 606.9453125 -118.330078125 533.9765625 5.185546875 461.0078125 128.701171875 c 1xf1 +1511.3203125 -241.845703125 m 1 + 1468.76855469 -241.845703125 1426.21582031 -241.845703125 1383.6640625 -241.845703125 c 1 + 1329.54980469 -152.887695312 1275.43457031 -63.9287109375 1221.3203125 25.029296875 c 1 + 1220.3828125 25.029296875 1219.4453125 25.029296875 1218.5078125 25.029296875 c 1 + 1165.0703125 -63.9287109375 1111.6328125 -152.887695312 1058.1953125 -241.845703125 c 1 + 1018.1953125 -241.845703125 978.1953125 -241.845703125 938.1953125 -241.845703125 c 1xf9 + 1010.48730469 -127.600585938 1082.77832031 -13.3564453125 1155.0703125 100.888671875 c 1 + 1085.33105469 210.002929688 1015.59082031 319.118164062 945.8515625 428.232421875 c 1 + 988.403320312 428.232421875 1030.95605469 428.232421875 1073.5078125 428.232421875 c 1xf5 + 1124.39355469 345.029296875 1175.27832031 261.826171875 1226.1640625 178.623046875 c 1 + 1226.7890625 178.623046875 1227.4140625 178.623046875 1228.0390625 178.623046875 c 1 + 1279.54980469 261.826171875 1331.05957031 345.029296875 1382.5703125 428.232421875 c 1 + 1422.5703125 428.232421875 1462.5703125 428.232421875 1502.5703125 428.232421875 c 1 + 1432.20605469 319.430664062 1361.84082031 210.627929688 1291.4765625 101.826171875 c 1 + 1364.7578125 -12.7314453125 1438.0390625 -127.288085938 1511.3203125 -241.845703125 c 1 +411.9453125 624.169921875 m 1 + 411.9453125 847.529296875 411.9453125 1070.88867188 411.9453125 1294.24804688 c 1 + 448.090820312 1294.24804688 484.237304688 1294.24804688 520.3828125 1294.24804688 c 1 + 520.3828125 1102.89355469 520.3828125 911.540039062 520.3828125 720.185546875 c 1 + 611.268554688 720.185546875 702.153320312 720.185546875 793.0390625 720.185546875 c 1 + 793.0390625 688.180664062 793.0390625 656.174804688 793.0390625 624.169921875 c 1 + 666.0078125 624.169921875 538.9765625 624.169921875 411.9453125 624.169921875 c 1 +1050.3046875 624.169921875 m 1xf3 + 1050.3046875 712.165039062 1050.3046875 800.159179688 1050.3046875 888.154296875 c 1 + 973.5078125 1023.51855469 896.7109375 1158.88378906 819.9140625 1294.24804688 c 1 + 861.190429688 1294.24804688 902.465820312 1294.24804688 943.7421875 1294.24804688 c 1 + 998.143554688 1194.71679688 1052.54394531 1095.18554688 1106.9453125 995.654296875 c 1 + 1107.90917969 995.654296875 1108.87207031 995.654296875 1109.8359375 995.654296875 c 1 + 1163.92480469 1095.18554688 1218.01269531 1194.71679688 1272.1015625 1294.24804688 c 1 + 1311.7890625 1294.24804688 1351.4765625 1294.24804688 1391.1640625 1294.24804688 c 1 + 1313.71582031 1159.53417969 1236.26855469 1024.82128906 1158.8203125 890.107421875 c 1 + 1158.8203125 801.461914062 1158.8203125 712.815429688 1158.8203125 624.169921875 c 1 + 1122.6484375 624.169921875 1086.4765625 624.169921875 1050.3046875 624.169921875 c 1xf3 +EndSplineSet +EndChar + +StartChar: uniE118 +Encoding: 57624 57624 25 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -60.4395 93.125<1083.51 1281.16> 28.8574 91.25<418.508 570.842> 333.232 95<418.508 654.817 1169.79 1195.72> 624.17 96.0156<609.465 629.562 1148.12 1468.74> 916.045 95.9375<1148.12 1439.05> 1198.23 96.0156<1148.12 1468.74> +VStem: 310.07 108.438<-241.846 28.8574 120.107 333.232> 334.367 112.344<1181.9 1294.25> 678.664 114.219<142.348 310.913> 793.273 109.375<1184.87 1294.25> 888.508 110.469<-241.846 -131.377> 1039.68 108.438<720.186 916.045 1011.98 1198.23> 1368.51 113.281<-241.846 -128.564> +DStem2: 446.711 1294.25 334.367 1294.25 0.289596 -0.957149<0 589.723> 662.258 40.4199 551.945 28.8574 0.456936 -0.8895<0 262.07> 621.398 729.795 679.992 624.17 0.291293 0.956634<0 590.041> 888.508 -241.846 998.977 -241.846 0.303155 0.952941<33.4892 224.122 320.727 631.883> 1253.35 428.232 1185.23 328.389 0.305997 -0.952033<74.2085 385.084> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -60.4395 93.125<1083.51 1281.16> 28.8574 91.25<418.508 570.842> 333.232 95<418.508 654.817 1169.79 1195.72> 624.17 96.0156<609.465 629.562 1148.12 1468.74> 916.045 95.9375<1148.12 1439.05> 1198.23 96.0156<1148.12 1468.74> +VStem: 310.07 108.438<-241.846 28.8574 120.107 333.232> 334.367 112.344<1181.9 1294.25> 678.664 114.219<142.348 310.913> 793.273 109.375<1184.87 1294.25> 888.508 110.469<-241.846 -131.377> 1039.68 108.438<720.186 916.045 1011.98 1198.23> 1368.51 113.281<-241.846 -128.564> +DStem2: 446.711 1294.25 334.367 1294.25 0.289596 -0.957149<0 589.723> 662.258 40.4199 551.945 28.8574 0.456936 -0.8895<0 262.07> 621.398 729.795 679.992 624.17 0.291293 0.956634<0 590.041> 888.508 -241.846 998.977 -241.846 0.303155 0.952941<33.4892 224.122 320.727 631.883> 1253.35 428.232 1185.23 328.389 0.305997 -0.952033<74.2085 385.084> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +418.5078125 -241.845703125 m 1x7e98 + 382.362304688 -241.845703125 346.215820312 -241.845703125 310.0703125 -241.845703125 c 1 + 310.0703125 -18.486328125 310.0703125 204.873046875 310.0703125 428.232421875 c 1 + 406.372070312 428.232421875 502.674804688 428.232421875 598.9765625 428.232421875 c 1 + 659.1328125 428.232421875 706.4765625 410.185546875 741.0078125 374.013671875 c 0 + 775.5390625 337.841796875 792.8828125 288.701171875 792.8828125 226.669921875 c 0 + 792.8828125 178.623046875 781.7890625 138.779296875 759.7578125 107.138671875 c 0 + 737.7265625 75.419921875 705.2265625 53.232421875 662.2578125 40.419921875 c 1 + 710.590820312 -53.6689453125 758.924804688 -147.756835938 807.2578125 -241.845703125 c 1 + 766.9453125 -241.845703125 726.6328125 -241.845703125 686.3203125 -241.845703125 c 1 + 641.528320312 -151.611328125 596.737304688 -61.376953125 551.9453125 28.857421875 c 1 + 507.465820312 28.857421875 462.987304688 28.857421875 418.5078125 28.857421875 c 1 + 418.5078125 -61.376953125 418.5078125 -151.611328125 418.5078125 -241.845703125 c 1x7e98 +591.3203125 120.107421875 m 1 + 618.8203125 120.107421875 640.2265625 127.294921875 655.5390625 141.669921875 c 0 + 671.0078125 156.044921875 678.6640625 176.748046875 678.6640625 203.623046875 c 1 + 678.6640625 218.961914062 678.6640625 234.299804688 678.6640625 249.638671875 c 1 + 678.6640625 276.591796875 671.0078125 297.216796875 655.5390625 311.591796875 c 0 + 640.2265625 325.966796875 618.8203125 333.232421875 591.3203125 333.232421875 c 1 + 533.715820312 333.232421875 476.112304688 333.232421875 418.5078125 333.232421875 c 1 + 418.5078125 262.190429688 418.5078125 191.149414062 418.5078125 120.107421875 c 1 + 476.112304688 120.107421875 533.715820312 120.107421875 591.3203125 120.107421875 c 1 +1368.5078125 -241.845703125 m 1 + 1348.3515625 -181.376953125 1328.1953125 -120.908203125 1308.0390625 -60.439453125 c 1 + 1224.54980469 -60.439453125 1141.05957031 -60.439453125 1057.5703125 -60.439453125 c 1 + 1038.0390625 -120.908203125 1018.5078125 -181.376953125 998.9765625 -241.845703125 c 5 + 962.153320312 -241.845703125 925.331054688 -241.845703125 888.5078125 -241.845703125 c 1xbcb8 + 964.706054688 -18.486328125 1040.90332031 204.873046875 1117.1015625 428.232421875 c 5 + 1162.51855469 428.232421875 1207.93457031 428.232421875 1253.3515625 428.232421875 c 1 + 1329.49707031 204.873046875 1405.64355469 -18.486328125 1481.7890625 -241.845703125 c 1 + 1444.02832031 -241.845703125 1406.26855469 -241.845703125 1368.5078125 -241.845703125 c 1 +1185.2265625 328.388671875 m 1 + 1183.61230469 328.388671875 1181.99707031 328.388671875 1180.3828125 328.388671875 c 1 + 1148.09082031 229.821289062 1115.79980469 131.252929688 1083.5078125 32.685546875 c 1 + 1149.39355469 32.685546875 1215.27832031 32.685546875 1281.1640625 32.685546875 c 1 + 1249.18457031 131.252929688 1217.20605469 229.821289062 1185.2265625 328.388671875 c 1 +554.2109375 624.169921875 m 1 + 480.9296875 847.529296875 407.6484375 1070.88867188 334.3671875 1294.24804688 c 1 + 371.815429688 1294.24804688 409.262695312 1294.24804688 446.7109375 1294.24804688 c 1 + 482.231445312 1183.85742188 517.752929688 1073.46679688 553.2734375 963.076171875 c 1 + 574.6796875 885.315429688 596.0859375 807.555664062 617.4921875 729.794921875 c 1 + 618.793945312 729.794921875 620.096679688 729.794921875 621.3984375 729.794921875 c 1 + 643.168945312 807.555664062 664.940429688 885.315429688 686.7109375 963.076171875 c 1 + 722.231445312 1073.46679688 757.752929688 1183.85742188 793.2734375 1294.24804688 c 1 + 829.731445312 1294.24804688 866.190429688 1294.24804688 902.6484375 1294.24804688 c 1x3dd8 + 828.4296875 1070.88867188 754.2109375 847.529296875 679.9921875 624.169921875 c 1 + 638.065429688 624.169921875 596.137695312 624.169921875 554.2109375 624.169921875 c 1 +1039.6796875 624.169921875 m 5 + 1039.6796875 847.529296875 1039.6796875 1070.88867188 1039.6796875 1294.24804688 c 1 + 1182.70019531 1294.24804688 1325.72167969 1294.24804688 1468.7421875 1294.24804688 c 1 + 1468.7421875 1262.24316406 1468.7421875 1230.23730469 1468.7421875 1198.23242188 c 1 + 1361.8671875 1198.23242188 1254.9921875 1198.23242188 1148.1171875 1198.23242188 c 1 + 1148.1171875 1136.14941406 1148.1171875 1074.06542969 1148.1171875 1011.98242188 c 1 + 1245.09667969 1011.98242188 1342.07519531 1011.98242188 1439.0546875 1011.98242188 c 1 + 1439.0546875 980.002929688 1439.0546875 948.024414062 1439.0546875 916.044921875 c 1 + 1342.07519531 916.044921875 1245.09667969 916.044921875 1148.1171875 916.044921875 c 1 + 1148.1171875 850.758789062 1148.1171875 785.471679688 1148.1171875 720.185546875 c 1 + 1254.9921875 720.185546875 1361.8671875 720.185546875 1468.7421875 720.185546875 c 1 + 1468.7421875 688.180664062 1468.7421875 656.174804688 1468.7421875 624.169921875 c 1 + 1325.72167969 624.169921875 1182.70019531 624.169921875 1039.6796875 624.169921875 c 5 +EndSplineSet +EndChar + +StartChar: uniE119 +Encoding: 57625 57625 26 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 99.2002 112.793<1049.91 1285.26 1418.46 1622.37> 838.36 98.4375<1239.05 1285.26> +VStem: 169.633 150<99.2002 249.2> 179.203 159.57<777.228 936.798> 726.469 159.57<99.2002 258.771 777.228 936.798> 1285.26 133.203<211.993 838.36> +DStem2: 169.633 99.2002 319.633 99.2002 0.552681 0.833393<82.9021 411.831 638.258 1005.04> 338.773 936.798 179.203 936.798 0.546973 -0.83715<0 365.574 522.989 913.254> 998.344 705.157 1081.16 630.841 0.683539 0.729914<1.88118 286.669> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 99.2002 112.793<1049.91 1285.26 1418.46 1622.37> 838.36 98.4375<1239.05 1285.26> +VStem: 169.633 150<99.2002 249.2> 179.203 159.57<777.228 936.798> 726.469 159.57<99.2002 258.771 777.228 936.798> 1285.26 133.203<211.993 838.36> +DStem2: 169.633 99.2002 319.633 99.2002 0.552681 0.833393<82.9021 411.831 638.258 1005.04> 338.773 936.798 179.203 936.798 0.546973 -0.83715<0 365.574 522.989 913.254> 998.344 705.157 1081.16 630.841 0.683539 0.729914<1.88118 286.669> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +886.0390625 99.2001953125 m 1xdc + 832.848632812 99.2001953125 779.659179688 99.2001953125 726.46875 99.2001953125 c 1 + 658.825195312 210.397460938 591.182617188 321.595703125 523.5390625 432.793945312 c 1 + 522.3671875 432.793945312 521.1953125 432.793945312 520.0234375 432.793945312 c 1 + 453.2265625 321.595703125 386.4296875 210.397460938 319.6328125 99.2001953125 c 1 + 269.6328125 99.2001953125 219.6328125 99.2001953125 169.6328125 99.2001953125 c 1xec + 259.997070312 242.005859375 350.362304688 384.811523438 440.7265625 527.618164062 c 1 + 353.551757812 664.010742188 266.377929688 800.404296875 179.203125 936.797851562 c 1 + 232.393554688 936.797851562 285.583007812 936.797851562 338.7734375 936.797851562 c 1 + 402.379882812 832.793945312 465.987304688 728.790039062 529.59375 624.786132812 c 1 + 530.375 624.786132812 531.15625 624.786132812 531.9375 624.786132812 c 1 + 596.325195312 728.790039062 660.713867188 832.793945312 725.1015625 936.797851562 c 1 + 775.1015625 936.797851562 825.1015625 936.797851562 875.1015625 936.797851562 c 1 + 787.145507812 800.794921875 699.190429688 664.791992188 611.234375 528.790039062 c 1 + 702.8359375 385.592773438 794.4375 242.396484375 886.0390625 99.2001953125 c 1xdc +1049.90625 99.2001953125 m 1 + 1049.90625 136.797851562 1049.90625 174.395507812 1049.90625 211.993164062 c 1 + 1128.35644531 211.993164062 1206.80761719 211.993164062 1285.2578125 211.993164062 c 1 + 1285.2578125 420.782226562 1285.2578125 629.571289062 1285.2578125 838.360351562 c 1 + 1282.00292969 838.360351562 1278.74707031 838.360351562 1275.4921875 838.360351562 c 1 + 1210.71386719 769.186523438 1145.93457031 700.013671875 1081.15625 630.840820312 c 1 + 1053.55175781 655.612304688 1025.94824219 680.384765625 998.34375 705.157226562 c 1 + 1069.56738281 782.370117188 1140.79199219 859.583984375 1212.015625 936.797851562 c 1 + 1280.83105469 936.797851562 1349.64550781 936.797851562 1418.4609375 936.797851562 c 1 + 1418.4609375 695.196289062 1418.4609375 453.594726562 1418.4609375 211.993164062 c 1 + 1486.4296875 211.993164062 1554.3984375 211.993164062 1622.3671875 211.993164062 c 1 + 1622.3671875 174.395507812 1622.3671875 136.797851562 1622.3671875 99.2001953125 c 1 + 1431.546875 99.2001953125 1240.7265625 99.2001953125 1049.90625 99.2001953125 c 1 +EndSplineSet +EndChar + +StartChar: uniE11A +Encoding: 57626 57626 27 +Width: 1792 +Flags: W +HStem: -253.3 85.3906<331.166 506.082> -61.0391 130.176<891.389 1021.56> 95.1377 85.4687<356.078 505.623> 117.311 130.176<1455.12 1585.3> 612.716 89.2188<1388.21 1579.14> 624.2 92.1875<328.559 354.926> 897.794 85.4688<802.406 938.743> 1204.98 89.2969<802.406 1011.58 1380.73 1582.23> +VStem: 82.0938 106.562<1187.72 1294.28> 202.297 107.5<-147.64 75.4877> 493.891 104.688<1189.59 1294.28> 526.75 107.5<-147.355 74.3454> 700.609 101.797<624.2 897.794 983.263 1204.98> 1030.84 108.516<1002.53 1185.72> 1187.45 101.78<-25.0879 211.535> 1233.73 109.453<750.447 1168.03> +DStem2: 188.656 1294.28 82.0938 1294.28 0.271727 -0.962374<0 593.586> 891.389 69.1366 891.389 -61.0391 0.717299 0.696766<0 311.586> 1024.12 905.45 922.406 897.794 0.413517 -0.910496<0 262.054> 1289.23 -25.0879 1187.45 -248.968 0.735691 0.677318<0 314.262> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 3 +WasModified: 0 +WasOrder2: 0 +Layer: 2 +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +418.234375 -253.330078125 m 0xe3dc + 346.59375 -253.330078125 292.6875 -231.298828125 256.515625 -187.158203125 c 0 + 220.34375 -142.939453125 202.296875 -78.642578125 202.296875 5.810546875 c 0 + 202.296875 46.123046875 207.375 86.435546875 217.609375 126.826171875 c 0 + 227.84375 167.138671875 242.609375 205.654296875 261.75 242.451171875 c 0 + 280.96875 279.248046875 303.859375 313.701171875 330.421875 345.654296875 c 0 + 356.984375 377.685546875 386.59375 405.185546875 419.25 428.232421875 c 1 + 465.004882812 428.232421875 510.760742188 428.232421875 556.515625 428.232421875 c 1 + 517.453125 398.154296875 483.859375 369.482421875 455.734375 342.294921875 c 0 + 427.53125 315.107421875 403.703125 288.076171875 384.171875 261.201171875 c 0 + 364.640625 234.326171875 348.859375 206.669921875 336.671875 178.154296875 c 0 + 324.484375 149.638671875 315.1875 118.779296875 308.859375 85.498046875 c 1 + 313 85.498046875 317.140625 85.498046875 321.28125 85.498046875 c 1 + 332.21875 116.201171875 349.484375 139.716796875 373.15625 156.044921875 c 0 + 396.828125 172.373046875 424.953125 180.576171875 457.609375 180.576171875 c 0 + 511.984375 180.576171875 555.03125 162.919921875 586.75 127.763671875 c 0 + 618.390625 92.529296875 634.25 40.732421875 634.25 -27.783203125 c 0 + 634.25 -98.798828125 615.890625 -154.189453125 579.09375 -193.876953125 c 0 + 542.296875 -233.564453125 488.625 -253.330078125 418.234375 -253.330078125 c 0xe3dc +418.234375 -167.939453125 m 256 + 490.578125 -167.939453125 526.75 -128.251953125 526.75 -48.876953125 c 1 + 526.75 -40.5703125 526.75 -32.2626953125 526.75 -23.955078125 c 1 + 526.75 55.419921875 490.578125 95.107421875 418.234375 95.107421875 c 256 + 345.96875 95.107421875 309.796875 55.419921875 309.796875 -23.955078125 c 1 + 309.796875 -32.2626953125 309.796875 -40.5703125 309.796875 -48.876953125 c 1 + 309.796875 -128.251953125 345.96875 -167.939453125 418.234375 -167.939453125 c 256 +278.890625 624.169921875 m 1xc7ec + 213.291992188 847.529296875 147.692382812 1070.88867188 82.09375 1294.24804688 c 1 + 117.614257812 1294.24804688 153.135742188 1294.24804688 188.65625 1294.24804688 c 1 + 228.317382812 1153.77929688 267.979492188 1013.31054688 307.640625 872.841796875 c 1 + 316.9375 820.6796875 326.234375 768.518554688 335.53125 716.357421875 c 1 + 339.671875 716.357421875 343.8125 716.357421875 347.953125 716.357421875 c 1 + 357.25 768.518554688 366.546875 820.6796875 375.84375 872.841796875 c 1 + 415.192382812 1013.31054688 454.541992188 1153.77929688 493.890625 1294.24804688 c 1 + 528.786132812 1294.24804688 563.682617188 1294.24804688 598.578125 1294.24804688 c 1 + 533.291992188 1070.88867188 468.004882812 847.529296875 402.71875 624.169921875 c 1 + 361.442382812 624.169921875 320.166992188 624.169921875 278.890625 624.169921875 c 1xc7ec +802.40625 624.169921875 m 1 + 768.473632812 624.169921875 734.541992188 624.169921875 700.609375 624.169921875 c 1 + 700.609375 847.529296875 700.609375 1070.88867188 700.609375 1294.24804688 c 1 + 788.942382812 1294.24804688 877.276367188 1294.24804688 965.609375 1294.24804688 c 1 + 1023.1875 1294.24804688 1066.546875 1277.13867188 1095.6875 1242.91992188 c 0 + 1124.75 1208.62304688 1139.359375 1159.56054688 1139.359375 1095.49804688 c 0 + 1139.359375 1043.70117188 1129.75 1001.74804688 1110.53125 969.794921875 c 0 + 1091.3125 937.763671875 1062.5625 916.357421875 1024.125 905.419921875 c 1 + 1066.703125 811.669921875 1109.28125 717.919921875 1151.859375 624.169921875 c 1 + 1114.09863281 624.169921875 1076.33886719 624.169921875 1038.578125 624.169921875 c 1 + 999.854492188 715.3671875 961.129882812 806.565429688 922.40625 897.763671875 c 1 + 882.40625 897.763671875 842.40625 897.763671875 802.40625 897.763671875 c 1 + 802.40625 806.565429688 802.40625 715.3671875 802.40625 624.169921875 c 1 +956.9375 983.232421875 m 1 + 981.234375 983.232421875 999.671875 989.482421875 1012.171875 1001.90429688 c 0 + 1024.59375 1014.40429688 1030.84375 1034.71679688 1030.84375 1062.91992188 c 1 + 1030.84375 1083.70117188 1030.84375 1104.48242188 1030.84375 1125.26367188 c 1 + 1030.84375 1153.46679688 1024.59375 1173.77929688 1012.171875 1186.27929688 c 0 + 999.671875 1198.70117188 981.234375 1204.95117188 956.9375 1204.95117188 c 1 + 905.426757812 1204.95117188 853.916992188 1204.95117188 802.40625 1204.95117188 c 1 + 802.40625 1131.04492188 802.40625 1057.13867188 802.40625 983.232421875 c 1 + 853.916992188 983.232421875 905.426757812 983.232421875 956.9375 983.232421875 c 1 +1487.171875 612.685546875 m 0xcbcd + 1448.109375 612.685546875 1413.109375 619.248046875 1382.09375 632.294921875 c 0 + 1351 645.419921875 1324.4375 666.123046875 1302.40625 694.248046875 c 0 + 1280.296875 722.373046875 1263.34375 758.388671875 1251.46875 802.216796875 c 0 + 1239.671875 846.123046875 1233.734375 898.388671875 1233.734375 959.248046875 c 256 + 1233.734375 1020.02929688 1239.671875 1072.29492188 1251.46875 1116.20117188 c 0 + 1263.34375 1160.02929688 1280.296875 1196.04492188 1302.40625 1224.16992188 c 0 + 1324.4375 1252.29492188 1351 1272.99804688 1382.09375 1286.12304688 c 0 + 1413.109375 1299.24804688 1448.109375 1305.73242188 1487.171875 1305.73242188 c 0 + 1544.125 1305.73242188 1589.75 1293.46679688 1623.96875 1268.77929688 c 0 + 1658.1875 1244.16992188 1685.609375 1207.21679688 1706.078125 1157.91992188 c 1 + 1677.27636719 1141.9296875 1648.47363281 1125.94042969 1619.671875 1109.95117188 c 1 + 1608.109375 1147.68554688 1592.015625 1174.87304688 1571.15625 1191.51367188 c 0 + 1550.375 1208.15429688 1522.40625 1216.51367188 1487.171875 1216.51367188 c 0 + 1441.78125 1216.51367188 1406.390625 1200.81054688 1381.078125 1169.48242188 c 0 + 1355.84375 1138.07617188 1343.1875 1094.87304688 1343.1875 1039.87304688 c 1 + 1343.1875 986.096679688 1343.1875 932.3203125 1343.1875 878.544921875 c 1 + 1343.1875 823.544921875 1355.84375 780.341796875 1381.078125 748.935546875 c 0 + 1406.390625 717.607421875 1441.78125 701.904296875 1487.171875 701.904296875 c 0 + 1523.03125 701.904296875 1552.015625 710.888671875 1574.046875 728.779296875 c 0 + 1596.15625 746.748046875 1613.265625 775.498046875 1625.453125 815.185546875 c 1 + 1653.60449219 798.544921875 1681.75488281 781.904296875 1709.90625 765.263671875 c 1 + 1688.8125 716.044921875 1660.609375 678.232421875 1625.453125 651.982421875 c 0 + 1590.21875 625.732421875 1544.125 612.685546875 1487.171875 612.685546875 c 0xcbcd +1289.23339844 435.383789062 m 1 + 1289.23339844 -25.1181640625 l 1 + 1585.29882812 247.456054688 l 1 + 1585.29882812 117.280273438 l 1 + 1187.45410156 -248.998046875 l 1xd3ce + 1187.45410156 211.504882812 l 1 + 891.388671875 -61.0693359375 l 1 + 891.388671875 69.1064453125 l 1 + 1289.23339844 435.383789062 l 1 +EndSplineSet +EndChar + +StartChar: uniE11B +Encoding: 57627 57627 28 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -253.33 96.9531<1073.4 1297.1> 332.217 96.0156<306.547 506.234 614.672 814.359 1062.75 1307.77> 612.686 96.9531<474.093 697.732> 1198.23 96.0156<463.45 708.394 987.25 1186.94 1295.38 1495.06> +VStem: 296.938 116.25<773.332 1145.09> 506.234 108.438<-241.846 332.217> 758.656 116.25<773.332 1145.09> 896.312 116.172<-92.6831 279.07> 1186.94 108.438<624.17 1198.23> 1358.03 116.172<-92.6831 279.07> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -253.33 96.9531<1073.4 1297.1> 332.217 96.0156<306.547 506.234 614.672 814.359 1062.75 1307.77> 612.686 96.9531<474.093 697.732> 1198.23 96.0156<463.45 708.394 987.25 1186.94 1295.38 1495.06> +VStem: 296.938 116.25<773.332 1145.09> 506.234 108.438<-241.846 332.217> 758.656 116.25<773.332 1145.09> 896.312 116.172<-92.6831 279.07> 1186.94 108.438<624.17 1198.23> 1358.03 116.172<-92.6831 279.07> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +614.671875 332.216796875 m 1 + 614.671875 140.862304688 614.671875 -50.4912109375 614.671875 -241.845703125 c 1 + 578.526367188 -241.845703125 542.379882812 -241.845703125 506.234375 -241.845703125 c 1 + 506.234375 -50.4912109375 506.234375 140.862304688 506.234375 332.216796875 c 1 + 439.671875 332.216796875 373.109375 332.216796875 306.546875 332.216796875 c 1 + 306.546875 364.221679688 306.546875 396.227539062 306.546875 428.232421875 c 1 + 475.817382812 428.232421875 645.088867188 428.232421875 814.359375 428.232421875 c 1 + 814.359375 396.227539062 814.359375 364.221679688 814.359375 332.216796875 c 1 + 747.796875 332.216796875 681.234375 332.216796875 614.671875 332.216796875 c 1 +1185.296875 -253.330078125 m 256 + 1141.703125 -253.330078125 1102.25 -245.830078125 1066.703125 -230.830078125 c 0 + 1031.15625 -215.751953125 1000.765625 -193.720703125 975.53125 -164.580078125 c 0 + 950.21875 -135.439453125 930.6875 -99.267578125 916.9375 -56.064453125 c 0 + 903.1875 -12.861328125 896.3125 36.904296875 896.3125 93.232421875 c 256 + 896.3125 149.482421875 903.1875 199.248046875 916.9375 242.451171875 c 0 + 930.6875 285.654296875 950.21875 321.826171875 975.53125 350.966796875 c 0 + 1000.765625 380.107421875 1031.15625 402.138671875 1066.703125 417.216796875 c 0 + 1102.25 432.216796875 1141.703125 439.716796875 1185.296875 439.716796875 c 256 + 1228.8125 439.716796875 1268.265625 432.216796875 1303.8125 417.216796875 c 0 + 1339.359375 402.138671875 1369.75 380.107421875 1394.984375 350.966796875 c 0 + 1420.296875 321.826171875 1439.828125 285.654296875 1453.578125 242.451171875 c 0 + 1467.328125 199.248046875 1474.203125 149.482421875 1474.203125 93.232421875 c 256 + 1474.203125 36.904296875 1467.328125 -12.861328125 1453.578125 -56.064453125 c 0 + 1439.828125 -99.267578125 1420.296875 -135.439453125 1394.984375 -164.580078125 c 0 + 1369.75 -193.720703125 1339.359375 -215.751953125 1303.8125 -230.830078125 c 0 + 1268.265625 -245.830078125 1228.8125 -253.330078125 1185.296875 -253.330078125 c 256 +1185.296875 -156.376953125 m 0 + 1210.84375 -156.376953125 1234.359375 -151.923828125 1255.84375 -142.939453125 c 0 + 1277.25 -134.033203125 1295.53125 -121.064453125 1310.53125 -104.111328125 c 0 + 1325.609375 -87.158203125 1337.25 -66.455078125 1345.609375 -42.158203125 c 0 + 1353.890625 -17.861328125 1358.03125 9.638671875 1358.03125 40.419921875 c 1 + 1358.03125 75.6025390625 1358.03125 110.784179688 1358.03125 145.966796875 c 1 + 1358.03125 176.748046875 1353.890625 204.248046875 1345.609375 228.544921875 c 0 + 1337.25 252.841796875 1325.609375 273.544921875 1310.53125 290.498046875 c 0 + 1295.53125 307.451171875 1277.25 320.419921875 1255.84375 329.326171875 c 0 + 1234.359375 338.310546875 1210.84375 342.763671875 1185.296875 342.763671875 c 0 + 1159.046875 342.763671875 1135.375 338.310546875 1114.203125 329.326171875 c 0 + 1093.109375 320.419921875 1074.984375 307.451171875 1059.984375 290.498046875 c 0 + 1044.90625 273.544921875 1033.265625 252.841796875 1024.90625 228.544921875 c 0 + 1016.625 204.248046875 1012.484375 176.748046875 1012.484375 145.966796875 c 1 + 1012.484375 110.784179688 1012.484375 75.6025390625 1012.484375 40.419921875 c 1 + 1012.484375 9.638671875 1016.625 -17.861328125 1024.90625 -42.158203125 c 0 + 1033.265625 -66.455078125 1044.90625 -87.158203125 1059.984375 -104.111328125 c 0 + 1074.984375 -121.064453125 1093.109375 -134.033203125 1114.203125 -142.939453125 c 0 + 1135.375 -151.923828125 1159.046875 -156.376953125 1185.296875 -156.376953125 c 0 +586 612.685546875 m 256 + 542.40625 612.685546875 502.875 620.185546875 467.40625 635.185546875 c 0 + 431.78125 650.263671875 401.46875 672.294921875 376.15625 701.435546875 c 0 + 350.84375 730.576171875 331.3125 766.748046875 317.5625 809.951171875 c 0 + 303.8125 853.154296875 296.9375 902.919921875 296.9375 959.248046875 c 256 + 296.9375 1015.49804688 303.8125 1065.26367188 317.5625 1108.46679688 c 0 + 331.3125 1151.66992188 350.84375 1187.84179688 376.15625 1216.98242188 c 0 + 401.46875 1246.12304688 431.78125 1268.15429688 467.40625 1283.23242188 c 0 + 502.875 1298.23242188 542.40625 1305.73242188 586 1305.73242188 c 256 + 629.4375 1305.73242188 668.96875 1298.23242188 704.4375 1283.23242188 c 0 + 740.0625 1268.15429688 770.375 1246.12304688 795.6875 1216.98242188 c 0 + 821 1187.84179688 840.53125 1151.66992188 854.28125 1108.46679688 c 0 + 868.03125 1065.26367188 874.90625 1015.49804688 874.90625 959.248046875 c 256 + 874.90625 902.919921875 868.03125 853.154296875 854.28125 809.951171875 c 0 + 840.53125 766.748046875 821 730.576171875 795.6875 701.435546875 c 0 + 770.375 672.294921875 740.0625 650.263671875 704.4375 635.185546875 c 0 + 668.96875 620.185546875 629.4375 612.685546875 586 612.685546875 c 256 +586 709.638671875 m 0 + 611.46875 709.638671875 635.0625 714.091796875 656.46875 723.076171875 c 0 + 677.875 731.982421875 696.15625 744.951171875 711.15625 761.904296875 c 0 + 726.3125 778.857421875 737.875 799.560546875 746.3125 823.857421875 c 0 + 754.59375 848.154296875 758.65625 875.654296875 758.65625 906.435546875 c 1 + 758.65625 941.618164062 758.65625 976.799804688 758.65625 1011.98242188 c 1 + 758.65625 1042.76367188 754.59375 1070.26367188 746.3125 1094.56054688 c 0 + 737.875 1118.85742188 726.3125 1139.56054688 711.15625 1156.51367188 c 0 + 696.15625 1173.46679688 677.875 1186.43554688 656.46875 1195.34179688 c 0 + 635.0625 1204.32617188 611.46875 1208.77929688 586 1208.77929688 c 0 + 559.75 1208.77929688 536 1204.32617188 514.90625 1195.34179688 c 0 + 493.8125 1186.43554688 475.6875 1173.46679688 460.6875 1156.51367188 c 0 + 445.53125 1139.56054688 433.96875 1118.85742188 425.53125 1094.56054688 c 0 + 417.25 1070.26367188 413.1875 1042.76367188 413.1875 1011.98242188 c 1 + 413.1875 976.799804688 413.1875 941.618164062 413.1875 906.435546875 c 1 + 413.1875 875.654296875 417.25 848.154296875 425.53125 823.857421875 c 0 + 433.96875 799.560546875 445.53125 778.857421875 460.6875 761.904296875 c 0 + 475.6875 744.951171875 493.8125 731.982421875 514.90625 723.076171875 c 0 + 536 714.091796875 559.75 709.638671875 586 709.638671875 c 0 +1295.375 1198.23242188 m 1 + 1295.375 1006.87792969 1295.375 815.524414062 1295.375 624.169921875 c 1 + 1259.22949219 624.169921875 1223.08300781 624.169921875 1186.9375 624.169921875 c 1 + 1186.9375 815.524414062 1186.9375 1006.87792969 1186.9375 1198.23242188 c 1 + 1120.375 1198.23242188 1053.8125 1198.23242188 987.25 1198.23242188 c 1 + 987.25 1230.23730469 987.25 1262.24316406 987.25 1294.24804688 c 1 + 1156.52050781 1294.24804688 1325.79199219 1294.24804688 1495.0625 1294.24804688 c 1 + 1495.0625 1262.24316406 1495.0625 1230.23730469 1495.0625 1198.23242188 c 1 + 1428.5 1198.23242188 1361.9375 1198.23242188 1295.375 1198.23242188 c 1 +EndSplineSet +EndChar + +StartChar: uniE11C +Encoding: 57628 57628 29 +Width: 1792 +Flags: W +HStem: -259 89.2188<739.069 929.998> 23.1875 90.2344<153.266 362.441> 277.641 144.922<1262.72 1290.05 1610.22 1638.03> 332.328 90.2344<153.266 362.441 730.871 933.092> 618.5 89.2969<924.08 1127.76 1464.98 1708.81> 1143.66 144.922<174.438 201.767 521.938 549.75> +VStem: 51.4688 101.797<-247.516 23.1875 113.422 332.328> 83.1875 97.9688<618.5 1141.9> 381.703 108.516<132.763 312.99> 543.031 97.9688<618.5 1143.75> 584.594 109.453<-121.269 296.316> 797.406 101.797<736.821 1288.58> 1152.64 101.797<736.821 1288.58> 1171.47 97.9688<-247.516 275.885> 1363.19 101.797<707.797 1288.58> 1631.31 97.9688<-247.516 277.731> +DStem2: 203.188 1288.58 185.922 1143.66 0.416929 -0.908939<124.527 395.989> 1291.47 422.562 1274.2 277.641 0.416929 -0.908939<124.527 395.989> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +51.46875 -247.515625 m 1xde93 + 51.46875 -24.15625 51.46875 199.203125 51.46875 422.5625 c 1 + 139.801757812 422.5625 228.135742188 422.5625 316.46875 422.5625 c 1 + 374.046875 422.5625 417.40625 405.453125 446.546875 371.234375 c 0 + 475.609375 336.9375 490.21875 287.5625 490.21875 222.875 c 256 + 490.21875 158.265625 475.609375 108.8125 446.546875 74.59375 c 0 + 417.40625 40.296875 374.046875 23.1875 316.46875 23.1875 c 1 + 262.067382812 23.1875 207.666992188 23.1875 153.265625 23.1875 c 1 + 153.265625 -67.046875 153.265625 -157.28125 153.265625 -247.515625 c 1 + 119.333007812 -247.515625 85.4013671875 -247.515625 51.46875 -247.515625 c 1xde93 +153.265625 113.421875 m 1 + 204.776367188 113.421875 256.286132812 113.421875 307.796875 113.421875 c 1 + 332.09375 113.421875 350.53125 119.671875 363.03125 132.171875 c 0 + 375.453125 144.671875 381.703125 164.671875 381.703125 192.171875 c 1 + 381.703125 212.640625 381.703125 233.109375 381.703125 253.578125 c 1 + 381.703125 281.15625 375.453125 301.15625 363.03125 313.578125 c 0 + 350.53125 326.078125 332.09375 332.328125 307.796875 332.328125 c 1 + 256.286132812 332.328125 204.776367188 332.328125 153.265625 332.328125 c 1 + 153.265625 259.359375 153.265625 186.390625 153.265625 113.421875 c 1 +838.03125 -259 m 0 + 798.96875 -259 763.96875 -252.4375 732.953125 -239.390625 c 0 + 701.859375 -226.265625 675.296875 -205.5625 653.265625 -177.4375 c 0 + 631.15625 -149.3125 614.203125 -113.296875 602.328125 -69.46875 c 0 + 590.53125 -25.5625 584.59375 26.703125 584.59375 87.5625 c 256 + 584.59375 148.34375 590.53125 200.609375 602.328125 244.515625 c 0 + 614.203125 288.34375 631.15625 324.359375 653.265625 352.484375 c 0 + 675.296875 380.609375 701.859375 401.3125 732.953125 414.4375 c 0 + 763.96875 427.5625 798.96875 434.046875 838.03125 434.046875 c 0 + 894.984375 434.046875 940.609375 421.78125 974.828125 397.09375 c 0 + 1009.046875 372.484375 1036.46875 335.53125 1056.9375 286.234375 c 1 + 1028.13574219 270.245117188 999.333007812 254.254882812 970.53125 238.265625 c 1 + 958.96875 276 942.875 303.1875 922.015625 319.828125 c 0 + 901.234375 336.46875 873.265625 344.828125 838.03125 344.828125 c 0 + 792.640625 344.828125 757.25 329.125 731.9375 297.796875 c 0 + 706.703125 266.390625 694.046875 223.1875 694.046875 168.1875 c 1 + 694.046875 114.411132812 694.046875 60.6357421875 694.046875 6.859375 c 1xccb3 + 694.046875 -48.140625 706.703125 -91.34375 731.9375 -122.75 c 0 + 757.25 -154.078125 792.640625 -169.78125 838.03125 -169.78125 c 0 + 873.890625 -169.78125 902.875 -160.796875 924.90625 -142.90625 c 0 + 947.015625 -124.9375 964.125 -96.1875 976.3125 -56.5 c 1 + 1004.46386719 -73.140625 1032.61425781 -89.78125 1060.765625 -106.421875 c 1 + 1039.671875 -155.640625 1011.46875 -193.453125 976.3125 -219.703125 c 0 + 941.078125 -245.953125 894.984375 -259 838.03125 -259 c 0 +1631.3125 165.296875 m 1 + 1633.55175781 203.370117188 1635.79199219 241.442382812 1638.03125 279.515625 c 1 + 1634.203125 279.515625 1630.375 279.515625 1626.546875 279.515625 c 1 + 1611.18261719 242.067382812 1595.81738281 204.620117188 1580.453125 167.171875 c 1 + 1536.9375 76.3125 1493.421875 -14.546875 1449.90625 -105.40625 c 1 + 1406.703125 -14.546875 1363.5 76.3125 1320.296875 167.171875 c 1 + 1304.93261719 203.995117188 1289.56738281 240.817382812 1274.203125 277.640625 c 1 + 1270.375 277.640625 1266.546875 277.640625 1262.71875 277.640625 c 1xec97 + 1264.95800781 240.192382812 1267.19824219 202.745117188 1269.4375 165.296875 c 1 + 1269.4375 27.6923828125 1269.4375 -109.911132812 1269.4375 -247.515625 c 1 + 1236.78125 -247.515625 1204.125 -247.515625 1171.46875 -247.515625 c 1 + 1171.46875 -24.15625 1171.46875 199.203125 1171.46875 422.5625 c 1 + 1211.46875 422.5625 1251.46875 422.5625 1291.46875 422.5625 c 1xdc97 + 1327.640625 344.489257812 1363.8125 266.416992188 1399.984375 188.34375 c 1 + 1415.66113281 144.176757812 1431.33886719 100.010742188 1447.015625 55.84375 c 1 + 1449.87988281 55.84375 1452.74511719 55.84375 1455.609375 55.84375 c 1 + 1471.3125 100.010742188 1487.015625 144.176757812 1502.71875 188.34375 c 1 + 1538.55175781 266.416992188 1574.38574219 344.489257812 1610.21875 422.5625 c 1xec97 + 1649.90625 422.5625 1689.59375 422.5625 1729.28125 422.5625 c 1xdc97 + 1729.28125 199.203125 1729.28125 -24.15625 1729.28125 -247.515625 c 1 + 1696.625 -247.515625 1663.96875 -247.515625 1631.3125 -247.515625 c 1 + 1631.3125 -109.911132812 1631.3125 27.6923828125 1631.3125 165.296875 c 1 +543.03125 1031.3125 m 1xcdd3 + 545.270507812 1069.38574219 547.510742188 1107.45800781 549.75 1145.53125 c 1 + 545.921875 1145.53125 542.09375 1145.53125 538.265625 1145.53125 c 1 + 522.901367188 1108.08300781 507.536132812 1070.63574219 492.171875 1033.1875 c 1 + 448.65625 942.328125 405.140625 851.46875 361.625 760.609375 c 1 + 318.421875 851.46875 275.21875 942.328125 232.015625 1033.1875 c 1 + 216.651367188 1070.01074219 201.286132812 1106.83300781 185.921875 1143.65625 c 1 + 182.09375 1143.65625 178.265625 1143.65625 174.4375 1143.65625 c 1 + 176.676757812 1106.20800781 178.916992188 1068.76074219 181.15625 1031.3125 c 1 + 181.15625 893.708007812 181.15625 756.104492188 181.15625 618.5 c 1 + 148.5 618.5 115.84375 618.5 83.1875 618.5 c 1 + 83.1875 841.859375 83.1875 1065.21875 83.1875 1288.578125 c 1 + 123.1875 1288.578125 163.1875 1288.578125 203.1875 1288.578125 c 1 + 239.359375 1210.50488281 275.53125 1132.43261719 311.703125 1054.359375 c 1 + 327.379882812 1010.19238281 343.057617188 966.026367188 358.734375 921.859375 c 1 + 361.598632812 921.859375 364.463867188 921.859375 367.328125 921.859375 c 1 + 383.03125 966.026367188 398.734375 1010.19238281 414.4375 1054.359375 c 1 + 450.270507812 1132.43261719 486.104492188 1210.50488281 521.9375 1288.578125 c 1 + 561.625 1288.578125 601.3125 1288.578125 641 1288.578125 c 1 + 641 1065.21875 641 841.859375 641 618.5 c 1 + 608.34375 618.5 575.6875 618.5 543.03125 618.5 c 1 + 543.03125 756.104492188 543.03125 893.708007812 543.03125 1031.3125 c 1xcdd3 +899.203125 1288.578125 m 1 + 899.203125 1143.94238281 899.203125 999.307617188 899.203125 854.671875 c 1 + 899.203125 800.921875 908.5 761.234375 927.015625 735.609375 c 0 + 945.609375 709.984375 978.578125 697.25 1025.921875 697.25 c 256 + 1073.265625 697.25 1106.234375 709.984375 1124.828125 735.609375 c 0 + 1143.34375 761.234375 1152.640625 800.921875 1152.640625 854.671875 c 1 + 1152.640625 999.307617188 1152.640625 1143.94238281 1152.640625 1288.578125 c 1 + 1186.57324219 1288.578125 1220.50488281 1288.578125 1254.4375 1288.578125 c 1 + 1254.4375 1149.38574219 1254.4375 1010.19238281 1254.4375 871 c 1xcc9b + 1254.4375 825.53125 1250.375 786.15625 1242.40625 752.875 c 0 + 1234.4375 719.59375 1221.46875 692.09375 1203.5 670.375 c 0 + 1185.609375 648.578125 1162.09375 632.5625 1132.953125 622.328125 c 0 + 1103.8125 612.09375 1068.1875 607.015625 1025.921875 607.015625 c 256 + 983.65625 607.015625 948.03125 612.09375 918.890625 622.328125 c 0 + 889.75 632.5625 866.234375 648.578125 848.34375 670.375 c 0 + 830.375 692.09375 817.40625 719.59375 809.4375 752.875 c 0 + 801.46875 786.15625 797.40625 825.53125 797.40625 871 c 1 + 797.40625 1010.19238281 797.40625 1149.38574219 797.40625 1288.578125 c 1 + 831.338867188 1288.578125 865.270507812 1288.578125 899.203125 1288.578125 c 1 +1363.1875 618.5 m 1 + 1363.1875 841.859375 1363.1875 1065.21875 1363.1875 1288.578125 c 1 + 1397.12011719 1288.578125 1431.05175781 1288.578125 1464.984375 1288.578125 c 1 + 1464.984375 1094.984375 1464.984375 901.390625 1464.984375 707.796875 c 1 + 1546.26074219 707.796875 1627.53613281 707.796875 1708.8125 707.796875 c 1 + 1708.8125 678.03125 1708.8125 648.265625 1708.8125 618.5 c 1 + 1593.60449219 618.5 1478.39550781 618.5 1363.1875 618.5 c 1 +EndSplineSet +EndChar + +StartChar: uniE11D +Encoding: 57629 57629 30 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -241.846 96.0156<497.016 817.797 1015.27 1260.36> 50.0293 95.9375<497.016 787.953 1142.69 1260.82> 332.217 96.0156<497.016 817.797 1052.91 1288.54> 612.686 95.9375<459.826 685.636> 1209.79 95.9375<485.37 703.815> +VStem: 353.969 107.5<1052.56 1188.85> 388.578 108.438<-145.83 50.0293 145.967 332.217> 713.969 107.5<735.735 882.928> 924.672 107.5<186.541 322.835> 937.875 103.75<624.17 1136.83> 1284.67 107.5<-130.28 16.9126> 1354.59 103.594<781.592 1294.25> +DStem2: 568.031 1025.42 549.75 922.764 0.978916 -0.204262<-84.3815 149.558> 1277.72 923.701 1118.34 994.717 0.508638 -0.860981<-299.653 157.446> 1138.73 159.404 1120.45 56.748 0.978916 -0.204262<-84.3815 149.558> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -241.846 96.0156<497.016 817.797 1015.27 1260.36> 50.0293 95.9375<497.016 787.953 1142.69 1260.82> 332.217 96.0156<497.016 817.797 1052.91 1288.54> 612.686 95.9375<459.826 685.636> 1209.79 95.9375<485.37 703.815> +VStem: 353.969 107.5<1052.56 1188.85> 388.578 108.438<-145.83 50.0293 145.967 332.217> 713.969 107.5<735.735 882.928> 924.672 107.5<186.541 322.835> 937.875 103.75<624.17 1136.83> 1284.67 107.5<-130.28 16.9126> 1354.59 103.594<781.592 1294.25> +DStem2: 568.031 1025.42 549.75 922.764 0.978916 -0.204262<-84.3815 149.558> 1277.72 923.701 1118.34 994.717 0.508638 -0.860981<-299.653 157.446> 1138.73 159.404 1120.45 56.748 0.978916 -0.204262<-84.3815 149.558> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +388.578125 -241.845703125 m 1xfb + 388.578125 -18.486328125 388.578125 204.873046875 388.578125 428.232421875 c 1 + 531.651367188 428.232421875 674.723632812 428.232421875 817.796875 428.232421875 c 1 + 817.796875 396.227539062 817.796875 364.221679688 817.796875 332.216796875 c 1 + 710.870117188 332.216796875 603.942382812 332.216796875 497.015625 332.216796875 c 1 + 497.015625 270.133789062 497.015625 208.049804688 497.015625 145.966796875 c 1 + 593.995117188 145.966796875 690.973632812 145.966796875 787.953125 145.966796875 c 1 + 787.953125 113.987304688 787.953125 82.0087890625 787.953125 50.029296875 c 1 + 690.973632812 50.029296875 593.995117188 50.029296875 497.015625 50.029296875 c 1 + 497.015625 -15.2568359375 497.015625 -80.5439453125 497.015625 -145.830078125 c 1 + 603.942382812 -145.830078125 710.870117188 -145.830078125 817.796875 -145.830078125 c 1 + 817.796875 -177.834960938 817.796875 -209.840820312 817.796875 -241.845703125 c 1 + 674.723632812 -241.845703125 531.651367188 -241.845703125 388.578125 -241.845703125 c 1xfb +1149.203125 -253.330078125 m 0 + 1092.953125 -253.330078125 1045.140625 -243.095703125 1005.765625 -222.626953125 c 0 + 966.390625 -202.158203125 932.640625 -174.658203125 904.515625 -140.048828125 c 1 + 929.463867188 -116.689453125 954.411132812 -93.330078125 979.359375 -69.970703125 c 1 + 1002.953125 -98.798828125 1029.046875 -120.595703125 1057.484375 -135.283203125 c 0 + 1086.078125 -149.970703125 1118.578125 -157.392578125 1154.984375 -157.392578125 c 0 + 1197.953125 -157.392578125 1230.140625 -147.783203125 1252.015625 -128.564453125 c 0 + 1273.734375 -109.345703125 1284.671875 -83.408203125 1284.671875 -50.830078125 c 0 + 1284.671875 -24.580078125 1276.859375 -3.798828125 1261.546875 11.591796875 c 0 + 1246.234375 26.982421875 1219.046875 38.466796875 1179.984375 46.123046875 c 1 + 1160.140625 49.6650390625 1140.296875 53.2060546875 1120.453125 56.748046875 c 1 + 1055.140625 68.857421875 1006.234375 90.341796875 973.578125 121.044921875 c 0 + 940.921875 151.748046875 924.671875 194.013671875 924.671875 247.763671875 c 0 + 924.671875 277.216796875 930.140625 303.935546875 941.390625 327.919921875 c 0 + 952.640625 351.904296875 968.265625 372.060546875 988.421875 388.388671875 c 0 + 1008.578125 404.716796875 1033.109375 417.373046875 1061.859375 426.279296875 c 0 + 1090.609375 435.263671875 1122.953125 439.716796875 1158.890625 439.716796875 c 0 + 1209.359375 439.716796875 1253.265625 430.966796875 1290.296875 413.388671875 c 0 + 1327.484375 395.732421875 1359.203125 370.341796875 1385.453125 337.060546875 c 1 + 1360.140625 314.665039062 1334.828125 292.268554688 1309.515625 269.873046875 c 1 + 1292.328125 292.216796875 1271.234375 310.185546875 1246.234375 323.623046875 c 0 + 1221.234375 337.060546875 1190.140625 343.779296875 1153.109375 343.779296875 c 0 + 1114.671875 343.779296875 1084.984375 336.044921875 1063.734375 320.732421875 c 0 + 1042.640625 305.341796875 1032.171875 282.919921875 1032.171875 253.544921875 c 0 + 1032.171875 225.341796875 1040.765625 204.404296875 1058.109375 190.654296875 c 0 + 1075.296875 176.904296875 1102.171875 166.435546875 1138.734375 159.404296875 c 1 + 1158.578125 155.263671875 1178.421875 151.123046875 1198.265625 146.982421875 c 1 + 1265.453125 134.169921875 1314.515625 112.373046875 1345.609375 81.669921875 c 0 + 1376.546875 50.966796875 1392.171875 8.701171875 1392.171875 -45.048828125 c 0xf9a0 + 1392.171875 -76.376953125 1386.703125 -104.892578125 1375.765625 -130.517578125 c 0 + 1364.984375 -156.064453125 1349.046875 -178.017578125 1328.265625 -196.220703125 c 0 + 1307.484375 -214.501953125 1282.015625 -228.564453125 1252.015625 -238.486328125 c 0 + 1221.859375 -248.408203125 1187.640625 -253.330078125 1149.203125 -253.330078125 c 0 +578.5 612.685546875 m 0 + 522.25 612.685546875 474.4375 622.919921875 435.0625 643.388671875 c 0 + 395.6875 663.857421875 361.9375 691.357421875 333.8125 725.966796875 c 1 + 358.760742188 749.326171875 383.708007812 772.685546875 408.65625 796.044921875 c 1 + 432.25 767.216796875 458.34375 745.419921875 486.78125 730.732421875 c 0 + 515.375 716.044921875 547.875 708.623046875 584.28125 708.623046875 c 0 + 627.25 708.623046875 659.4375 718.232421875 681.3125 737.451171875 c 0 + 703.03125 756.669921875 713.96875 782.607421875 713.96875 815.185546875 c 0 + 713.96875 841.435546875 706.15625 862.216796875 690.84375 877.607421875 c 0 + 675.53125 892.998046875 648.34375 904.482421875 609.28125 912.138671875 c 1 + 589.4375 915.680664062 569.59375 919.221679688 549.75 922.763671875 c 1 + 484.4375 934.873046875 435.53125 956.357421875 402.875 987.060546875 c 0 + 370.21875 1017.76367188 353.96875 1060.02929688 353.96875 1113.77929688 c 0 + 353.96875 1143.23242188 359.4375 1169.95117188 370.6875 1193.93554688 c 0 + 381.9375 1217.91992188 397.5625 1238.07617188 417.71875 1254.40429688 c 0 + 437.875 1270.73242188 462.40625 1283.38867188 491.15625 1292.29492188 c 0 + 519.90625 1301.27929688 552.25 1305.73242188 588.1875 1305.73242188 c 0 + 638.65625 1305.73242188 682.5625 1296.98242188 719.59375 1279.40429688 c 0 + 756.78125 1261.74804688 788.5 1236.35742188 814.75 1203.07617188 c 1 + 789.4375 1180.68066406 764.125 1158.28417969 738.8125 1135.88867188 c 1 + 721.625 1158.23242188 700.53125 1176.20117188 675.53125 1189.63867188 c 0 + 650.53125 1203.07617188 619.4375 1209.79492188 582.40625 1209.79492188 c 0 + 543.96875 1209.79492188 514.28125 1202.06054688 493.03125 1186.74804688 c 0 + 471.9375 1171.35742188 461.46875 1148.93554688 461.46875 1119.56054688 c 0xfd + 461.46875 1091.35742188 470.0625 1070.41992188 487.40625 1056.66992188 c 0 + 504.59375 1042.91992188 531.46875 1032.45117188 568.03125 1025.41992188 c 1 + 587.875 1021.27929688 607.71875 1017.13867188 627.5625 1012.99804688 c 1 + 694.75 1000.18554688 743.8125 978.388671875 774.90625 947.685546875 c 0 + 805.84375 916.982421875 821.46875 874.716796875 821.46875 820.966796875 c 0 + 821.46875 789.638671875 816 761.123046875 805.0625 735.498046875 c 0 + 794.28125 709.951171875 778.34375 687.998046875 757.5625 669.794921875 c 0 + 736.78125 651.513671875 711.3125 637.451171875 681.3125 627.529296875 c 0 + 651.15625 617.607421875 616.9375 612.685546875 578.5 612.685546875 c 0 +1118.34375 994.716796875 m 1 + 1093.70800781 1042.08691406 1069.07324219 1089.45605469 1044.4375 1136.82617188 c 1 + 1043.5 1136.82617188 1042.5625 1136.82617188 1041.625 1136.82617188 c 1 + 1041.625 965.940429688 1041.625 795.055664062 1041.625 624.169921875 c 1 + 1007.04199219 624.169921875 972.458007812 624.169921875 937.875 624.169921875 c 1 + 937.875 847.529296875 937.875 1070.88867188 937.875 1294.24804688 c 1 + 978.1875 1294.24804688 1018.5 1294.24804688 1058.8125 1294.24804688 c 1 + 1131.78125 1170.73242188 1204.75 1047.21679688 1277.71875 923.701171875 c 1 + 1302.35449219 876.331054688 1326.98925781 828.961914062 1351.625 781.591796875 c 1 + 1352.61425781 781.591796875 1353.60449219 781.591796875 1354.59375 781.591796875 c 1 + 1354.59375 952.477539062 1354.59375 1123.36230469 1354.59375 1294.24804688 c 1 + 1389.125 1294.24804688 1423.65625 1294.24804688 1458.1875 1294.24804688 c 1 + 1458.1875 1070.88867188 1458.1875 847.529296875 1458.1875 624.169921875 c 1xf950 + 1417.875 624.169921875 1377.5625 624.169921875 1337.25 624.169921875 c 1 + 1264.28125 747.685546875 1191.3125 871.201171875 1118.34375 994.716796875 c 1 +EndSplineSet +EndChar + +StartChar: uniE11E +Encoding: 57630 57630 31 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 84.8447 119.922<380.027 643.107 1147.14 1395.21> 831.231 119.922<401.199 656.619> +VStem: 232.816 134.375<638.539 801.481> 682.816 134.375<242.984 418.824> 958.012 133.203<263.461 936.798> 1451.18 133.203<263.461 936.798> +DStem2: 500.395 600.763 477.543 472.442 0.978916 -0.204262<-105.472 187.038> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 84.8447 119.922<380.027 643.107 1147.14 1395.21> 831.231 119.922<401.199 656.619> +VStem: 232.816 134.375<638.539 801.481> 682.816 134.375<242.984 418.824> 958.012 133.203<263.461 936.798> 1451.18 133.203<263.461 936.798> +DStem2: 500.395 600.763 477.543 472.442 0.978916 -0.204262<-105.472 187.038> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +513.578125 84.8447265625 m 0 + 443.16796875 84.8447265625 383.40234375 97.6376953125 334.18359375 123.223632812 c 0 + 284.96484375 148.809570312 242.77734375 183.184570312 207.62109375 226.446289062 c 1 + 238.805664062 255.645507812 269.991210938 284.844726562 301.17578125 314.043945312 c 1 + 330.765625 278.008789062 363.3828125 250.762695312 398.9296875 232.403320312 c 0 + 434.57421875 214.043945312 475.19921875 204.766601562 520.8046875 204.766601562 c 0 + 574.41796875 204.766601562 614.75 216.778320312 641.99609375 240.801757812 c 0 + 669.14453125 264.825195312 682.81640625 297.247070312 682.81640625 337.969726562 c 0 + 682.81640625 370.782226562 673.1484375 396.758789062 654.0078125 415.997070312 c 0 + 634.76953125 435.235351562 600.78515625 449.590820312 551.95703125 459.161132812 c 1 + 527.15234375 463.587890625 502.34765625 468.014648438 477.54296875 472.442382812 c 1 + 396 487.579101562 334.76953125 514.434570312 293.94921875 552.813476562 c 0 + 253.12890625 591.192382812 232.81640625 644.024414062 232.81640625 711.211914062 c 0 + 232.81640625 748.028320312 239.75 781.426757812 253.8125 811.407226562 c 0 + 267.77734375 841.387695312 287.40625 866.583007812 312.6015625 886.993164062 c 0 + 337.796875 907.403320312 368.36328125 923.223632812 404.3984375 934.356445312 c 0 + 440.3359375 945.586914062 480.765625 951.153320312 525.58984375 951.153320312 c 0 + 588.7734375 951.153320312 643.55859375 940.215820312 689.9453125 918.243164062 c 0 + 736.33203125 896.172851562 775.98046875 864.434570312 808.79296875 822.833007812 c 1 + 777.184570312 794.837890625 745.577148438 766.842773438 713.96875 738.848632812 c 1 + 692.38671875 766.778320312 666.01953125 789.239257812 634.76953125 806.036132812 c 0 + 603.6171875 822.833007812 564.75 831.231445312 518.36328125 831.231445312 c 0 + 470.4140625 831.231445312 433.20703125 821.563476562 406.7421875 802.422851562 c 0 + 380.375 783.184570312 367.19140625 755.157226562 367.19140625 718.438476562 c 0 + 367.19140625 683.184570312 377.93359375 657.012695312 399.61328125 639.825195312 c 0 + 421.1953125 622.637695312 454.7890625 609.551757812 500.39453125 600.762695312 c 1 + 525.19921875 595.586914062 550.00390625 590.411132812 574.80859375 585.235351562 c 1 + 658.79296875 569.219726562 720.21875 541.973632812 758.98828125 503.594726562 c 0 + 797.7578125 465.215820312 817.19140625 412.383789062 817.19140625 345.196289062 c 0 + 817.19140625 306.036132812 810.35546875 270.391601562 796.78125 238.360351562 c 0 + 783.20703125 206.426757812 763.3828125 178.985351562 737.40625 156.231445312 c 0 + 711.33203125 133.379882812 679.59375 115.801757812 641.99609375 103.399414062 c 0 + 604.3984375 90.9970703125 561.52734375 84.8447265625 513.578125 84.8447265625 c 0 +1091.21484375 936.797851562 m 1 + 1091.21484375 764.791992188 1091.21484375 592.787109375 1091.21484375 420.782226562 c 1 + 1091.21484375 349.590820312 1104.7890625 295.977539062 1131.9375 260.040039062 c 0 + 1159.18359375 224.004882812 1205.5703125 206.036132812 1271.1953125 206.036132812 c 256 + 1336.8203125 206.036132812 1383.20703125 224.004882812 1410.35546875 260.040039062 c 0 + 1437.6015625 295.977539062 1451.17578125 349.590820312 1451.17578125 420.782226562 c 1 + 1451.17578125 592.787109375 1451.17578125 764.791992188 1451.17578125 936.797851562 c 1 + 1495.57714844 936.797851562 1539.97753906 936.797851562 1584.37890625 936.797851562 c 1 + 1584.37890625 771.986328125 1584.37890625 607.174804688 1584.37890625 442.364257812 c 1 + 1584.37890625 380.840820312 1578.8125 327.618164062 1567.58203125 282.793945312 c 0 + 1556.3515625 237.969726562 1538.3828125 200.958007812 1513.578125 171.758789062 c 0 + 1488.7734375 142.559570312 1456.546875 120.782226562 1416.99609375 106.426757812 c 0 + 1377.34765625 91.9736328125 1328.8125 84.8447265625 1271.1953125 84.8447265625 c 256 + 1213.578125 84.8447265625 1164.9453125 91.9736328125 1125.39453125 106.426757812 c 0 + 1085.74609375 120.782226562 1053.6171875 142.559570312 1028.8125 171.758789062 c 0 + 1004.0078125 200.958007812 985.94140625 237.969726562 974.80859375 282.793945312 c 0 + 963.578125 327.618164062 958.01171875 380.840820312 958.01171875 442.364257812 c 1 + 958.01171875 607.174804688 958.01171875 771.986328125 958.01171875 936.797851562 c 1 + 1002.41308594 936.797851562 1046.81347656 936.797851562 1091.21484375 936.797851562 c 1 +EndSplineSet +EndChar + +StartChar: uniE11F +Encoding: 57631 57631 32 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 171.516 89.2188<906.667 1116.84 1445.69 1645.37> 183 108.516<198.32 221.367 546.758 569.805> 449.875 87.3438<1569.19 1693.09> 750.344 102.734<371.133 393.242> 775.344 89.2188<935.851 1133.42 1446.32 1654.53> +VStem: 0 103.75<749.328 853.078> 321.719 123.75<751.086 853.078> 664.375 99.8438<753.234 853.078> 812.781 101.719<608.533 755.771> 1137.31 101.719<281.429 444.709> 1288.88 109.531<309.707 726.324> 1701.69 90.3125<183 281.906 305.738 449.875> +DStem2: 103.75 853.078 0 853.078 0.190374 -0.981712<0 567.853> 216.094 291.516 355.312 595.812 0.136058 0.990701<4.46299 473.288> 530.938 445.109 387.969 750.344 0.136058 -0.990701<-318.35 155.035> 585.625 446.984 617.344 183 0.190374 0.981712<-154.194 413.659> 1006.69 581.438 988.406 485.422 0.978371 -0.206857<-75.1218 135.909> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 171.516 89.2188<906.667 1116.84 1445.69 1645.37> 183 108.516<198.32 221.367 546.758 569.805> 449.875 87.3438<1569.19 1693.09> 750.344 102.734<371.133 393.242> 775.344 89.2188<935.851 1133.42 1446.32 1654.53> +VStem: 0 103.75<749.328 853.078> 321.719 123.75<751.086 853.078> 664.375 99.8438<753.234 853.078> 812.781 101.719<608.533 755.771> 1137.31 101.719<281.429 444.709> 1288.88 109.531<309.707 726.324> 1701.69 90.3125<183 281.906 305.738 449.875> +DStem2: 103.75 853.078 0 853.078 0.190374 -0.981712<0 567.853> 216.094 291.516 355.312 595.812 0.136058 0.990701<4.46299 473.288> 530.938 445.109 387.969 750.344 0.136058 -0.990701<-318.35 155.035> 585.625 446.984 617.344 183 0.190374 0.981712<-154.194 413.659> 1006.69 581.438 988.406 485.422 0.978371 -0.206857<-75.1218 135.909> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +142.1875 183 m 1x77f0 + 94.7919921875 406.359375 47.3955078125 629.71875 0 853.078125 c 1 + 34.5830078125 853.078125 69.1669921875 853.078125 103.75 853.078125 c 1 + 130 717.713867188 156.25 582.348632812 182.5 446.984375 c 1 + 189.53125 395.161132812 196.5625 343.338867188 203.59375 291.515625 c 1 + 207.760742188 291.515625 211.926757812 291.515625 216.09375 291.515625 c 1 + 223.125 342.713867188 230.15625 393.911132812 237.1875 445.109375 c 1 + 265.364257812 581.098632812 293.541992188 717.088867188 321.71875 853.078125 c 1 + 362.96875 853.078125 404.21875 853.078125 445.46875 853.078125 c 1 + 473.958007812 717.088867188 502.448242188 581.098632812 530.9375 445.109375 c 1 + 537.96875 393.911132812 545 342.713867188 552.03125 291.515625 c 1 + 556.198242188 291.515625 560.364257812 291.515625 564.53125 291.515625 c 1 + 571.5625 343.338867188 578.59375 395.161132812 585.625 446.984375 c 1 + 611.875 582.348632812 638.125 717.713867188 664.375 853.078125 c 1 + 697.65625 853.078125 730.9375 853.078125 764.21875 853.078125 c 1 + 715.260742188 629.71875 666.301757812 406.359375 617.34375 183 c 1 + 576.71875 183 536.09375 183 495.46875 183 c 1 + 466.666992188 320.604492188 437.864257812 458.208007812 409.0625 595.8125 c 1 + 402.03125 647.323242188 395 698.833007812 387.96875 750.34375 c 1 + 384.114257812 750.34375 380.260742188 750.34375 376.40625 750.34375 c 1 + 369.375 698.833007812 362.34375 647.323242188 355.3125 595.8125 c 1 + 325.208007812 458.208007812 295.104492188 320.604492188 265 183 c 1 + 224.0625 183 183.125 183 142.1875 183 c 1x77f0 +1017.3125 171.515625 m 4xaff0 + 967.3125 171.515625 924.03125 180.890625 887.15625 199.796875 c 4 + 850.4375 218.703125 818.875 246.046875 792.625 281.90625 c 5 + 815.958007812 303.338867188 839.291992188 324.770507812 862.625 346.203125 c 5 + 882.46875 318.703125 905.28125 297.53125 930.90625 282.84375 c 4 + 956.375 268.15625 985.59375 260.734375 1018.25 260.734375 c 4 + 1097.625 260.734375 1137.3125 297.21875 1137.3125 370.1875 c 4 + 1137.3125 399.640625 1130.125 422.21875 1116.0625 437.84375 c 4 + 1102 453.546875 1077.78125 465.578125 1043.09375 473.859375 c 5 + 1024.86425781 477.713867188 1006.63574219 481.567382812 988.40625 485.421875 c 5 + 928.25 498.859375 884.03125 520.421875 855.4375 550.1875 c 4 + 827 579.953125 812.78125 621.75 812.78125 675.5 c 4 + 812.78125 737.53125 831.53125 784.5625 868.875 816.59375 c 4 + 906.375 848.625 958.71875 864.5625 1025.90625 864.5625 c 4 + 1073.875 864.5625 1114.34375 856.4375 1147.3125 840.109375 c 4 + 1180.28125 823.78125 1208.875 798.390625 1233.25 763.78125 c 5 + 1209.86425781 743.3125 1186.47949219 722.84375 1163.09375 702.375 c 5 + 1145.90625 726.671875 1126.53125 744.953125 1105.125 757.0625 c 4 + 1083.71875 769.25 1056.53125 775.34375 1024.03125 775.34375 c 4 + 987.46875 775.34375 960.125 767.765625 941.84375 752.765625 c 4 + 923.71875 737.6875 914.5 712.921875 914.5 678.390625 c 4 + 914.5 650.1875 921.6875 628.9375 936.0625 614.484375 c 4 + 950.59375 600.109375 974.03125 589.09375 1006.6875 581.4375 c 5 + 1024.91699219 577.270507812 1043.14550781 573.104492188 1061.375 568.9375 c 5 + 1093.40625 561.90625 1120.59375 553.078125 1142.9375 542.53125 c 4 + 1165.4375 531.984375 1183.875 519.015625 1198.25 503.625 c 4 + 1212.625 488.3125 1222.9375 470.1875 1229.34375 449.40625 c 4 + 1235.75 428.625 1239.03125 404.40625 1239.03125 376.90625 c 4 + 1239.03125 309.71875 1219.65625 258.703125 1180.90625 223.78125 c 4 + 1142.15625 188.9375 1087.625 171.515625 1017.3125 171.515625 c 4xaff0 +1701.6875 281.90625 m 5 + 1697.83300781 281.90625 1693.97949219 281.90625 1690.125 281.90625 c 5 + 1683.875 249.875 1667.46875 223.46875 1641.21875 202.6875 c 4 + 1614.96875 181.90625 1577.9375 171.515625 1529.8125 171.515625 c 4xa7f0 + 1495.28125 171.515625 1463.40625 177.84375 1434.34375 190.65625 c 4 + 1405.28125 203.46875 1379.8125 223.78125 1358.09375 251.671875 c 4 + 1336.21875 279.484375 1319.34375 315.34375 1307.15625 359.171875 c 4 + 1294.96875 403 1288.875 455.65625 1288.875 517.0625 c 260 + 1288.875 578.546875 1294.8125 631.125 1306.6875 675.03125 c 4 + 1318.5625 718.859375 1335.75 754.875 1358.5625 783 c 4 + 1381.21875 811.125 1408.5625 831.828125 1440.59375 844.953125 c 4 + 1472.625 858.078125 1508.71875 864.5625 1549.03125 864.5625 c 4 + 1608.5625 864.5625 1657 851.828125 1694.03125 826.203125 c 4 + 1731.21875 800.578125 1759.96875 764.09375 1780.4375 716.75 c 5 + 1752.625 700.421875 1724.8125 684.09375 1697 667.765625 c 5 + 1685.4375 700.421875 1667.9375 726.359375 1644.65625 745.578125 c 4 + 1621.21875 764.796875 1589.65625 774.328125 1549.96875 774.328125 c 4 + 1502 774.328125 1464.8125 759.015625 1438.25 728.3125 c 4 + 1411.6875 697.53125 1398.40625 654.71875 1398.40625 599.640625 c 5 + 1398.40625 545.239257812 1398.40625 490.838867188 1398.40625 436.4375 c 5 + 1398.40625 381.4375 1411.6875 338.546875 1438.25 307.765625 c 4 + 1464.8125 277.0625 1502 261.75 1549.96875 261.75 c 4 + 1569.8125 261.75 1588.40625 264.5625 1605.75 270.34375 c 4 + 1622.9375 276.125 1638.25 284.40625 1651.375 295.34375 c 4 + 1664.5 306.203125 1674.65625 319.796875 1682 336.125 c 4 + 1689.34375 352.453125 1693.09375 370.8125 1693.09375 391.28125 c 5 + 1693.09375 410.8125 1693.09375 430.34375 1693.09375 449.875 c 5 + 1651.79199219 449.875 1610.48925781 449.875 1569.1875 449.875 c 5 + 1569.1875 478.989257812 1569.1875 508.104492188 1569.1875 537.21875 c 5 + 1643.45800781 537.21875 1717.72949219 537.21875 1792 537.21875 c 5 + 1792 419.145507812 1792 301.073242188 1792 183 c 5 + 1761.89550781 183 1731.79199219 183 1701.6875 183 c 5x6ff0 + 1701.6875 215.96875 1701.6875 248.9375 1701.6875 281.90625 c 5 +EndSplineSet +EndChar + +StartChar: uniE120 +Encoding: 57632 57632 33 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -247.516 96.0156<738.656 979.032> 326.547 96.0156<738.656 979.032> 618.5 96.0156<177.043 421.987 1508.81 1781.47> 885.375 95.0781<868.812 1105.12> 1193.58 95<177.765 421.265 868.812 1105.12> +VStem: 10.5312 116.25<767.663 1139.42> 472.25 116.25<767.663 1139.42> 630.219 108.438<-151.5 326.547> 760.375 108.438<618.5 885.375 980.453 1193.58> 1034.36 116.172<-96.0967 271.144> 1128.97 114.219<1002.69 1171.26> 1400.38 108.438<714.516 1288.58> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -247.516 96.0156<738.656 979.032> 326.547 96.0156<738.656 979.032> 618.5 96.0156<177.043 421.987 1508.81 1781.47> 885.375 95.0781<868.812 1105.12> 1193.58 95<177.765 421.265 868.812 1105.12> +VStem: 10.5312 116.25<767.663 1139.42> 472.25 116.25<767.663 1139.42> 630.219 108.438<-151.5 326.547> 760.375 108.438<618.5 885.375 980.453 1193.58> 1034.36 116.172<-96.0967 271.144> 1128.97 114.219<1002.69 1171.26> 1400.38 108.438<714.516 1288.58> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +630.21875 422.5625 m 5xffd0 + 709.254882812 422.5625 788.291992188 422.5625 867.328125 422.5625 c 5 + 910.21875 422.5625 949.046875 415.53125 983.96875 401.46875 c 4 + 1018.8125 387.328125 1048.578125 366.390625 1073.265625 338.578125 c 4 + 1097.875 310.6875 1116.9375 275.84375 1130.375 233.890625 c 4 + 1143.8125 192.015625 1150.53125 143.1875 1150.53125 87.5625 c 260 + 1150.53125 31.859375 1143.8125 -16.96875 1130.375 -58.84375 c 4 + 1116.9375 -100.796875 1097.875 -135.640625 1073.265625 -163.53125 c 4 + 1048.578125 -191.34375 1018.8125 -212.28125 983.96875 -226.421875 c 4 + 949.046875 -240.484375 910.21875 -247.515625 867.328125 -247.515625 c 5 + 788.291992188 -247.515625 709.254882812 -247.515625 630.21875 -247.515625 c 5 + 630.21875 -24.15625 630.21875 199.203125 630.21875 422.5625 c 5xffd0 +867.328125 -151.5 m 5 + 917.25 -151.5 957.5625 -135.796875 988.265625 -104.46875 c 4 + 1018.96875 -73.140625 1034.359375 -27.046875 1034.359375 33.734375 c 5 + 1034.359375 69.59375 1034.359375 105.453125 1034.359375 141.3125 c 5 + 1034.359375 202.09375 1018.96875 248.1875 988.265625 279.515625 c 4 + 957.5625 310.921875 917.25 326.546875 867.328125 326.546875 c 5 + 824.4375 326.546875 781.546875 326.546875 738.65625 326.546875 c 5 + 738.65625 167.198242188 738.65625 7.8486328125 738.65625 -151.5 c 5 + 781.546875 -151.5 824.4375 -151.5 867.328125 -151.5 c 5 +299.59375 607.015625 m 260 + 256 607.015625 216.46875 614.515625 181 629.515625 c 4 + 145.375 644.59375 115.0625 666.625 89.75 695.765625 c 4 + 64.4375 724.90625 44.90625 761.078125 31.15625 804.28125 c 4 + 17.40625 847.484375 10.53125 897.25 10.53125 953.578125 c 260 + 10.53125 1009.828125 17.40625 1059.59375 31.15625 1102.796875 c 4 + 44.90625 1146 64.4375 1182.171875 89.75 1211.3125 c 4 + 115.0625 1240.453125 145.375 1262.484375 181 1277.5625 c 4 + 216.46875 1292.5625 256 1300.0625 299.59375 1300.0625 c 260 + 343.03125 1300.0625 382.5625 1292.5625 418.03125 1277.5625 c 4 + 453.65625 1262.484375 483.96875 1240.453125 509.28125 1211.3125 c 4 + 534.59375 1182.171875 554.125 1146 567.875 1102.796875 c 4 + 581.625 1059.59375 588.5 1009.828125 588.5 953.578125 c 260 + 588.5 897.25 581.625 847.484375 567.875 804.28125 c 4 + 554.125 761.078125 534.59375 724.90625 509.28125 695.765625 c 4 + 483.96875 666.625 453.65625 644.59375 418.03125 629.515625 c 4 + 382.5625 614.515625 343.03125 607.015625 299.59375 607.015625 c 260 +299.59375 703.96875 m 4 + 325.0625 703.96875 348.65625 708.421875 370.0625 717.40625 c 4 + 391.46875 726.3125 409.75 739.28125 424.75 756.234375 c 4 + 439.90625 773.1875 451.46875 793.890625 459.90625 818.1875 c 4 + 468.1875 842.484375 472.25 869.984375 472.25 900.765625 c 5 + 472.25 935.948242188 472.25 971.129882812 472.25 1006.3125 c 5 + 472.25 1037.09375 468.1875 1064.59375 459.90625 1088.890625 c 4 + 451.46875 1113.1875 439.90625 1133.890625 424.75 1150.84375 c 4 + 409.75 1167.796875 391.46875 1180.765625 370.0625 1189.671875 c 4 + 348.65625 1198.65625 325.0625 1203.109375 299.59375 1203.109375 c 4 + 273.34375 1203.109375 249.59375 1198.65625 228.5 1189.671875 c 4 + 207.40625 1180.765625 189.28125 1167.796875 174.28125 1150.84375 c 4 + 159.125 1133.890625 147.5625 1113.1875 139.125 1088.890625 c 4 + 130.84375 1064.59375 126.78125 1037.09375 126.78125 1006.3125 c 5 + 126.78125 971.129882812 126.78125 935.948242188 126.78125 900.765625 c 5 + 126.78125 869.984375 130.84375 842.484375 139.125 818.1875 c 4 + 147.5625 793.890625 159.125 773.1875 174.28125 756.234375 c 4 + 189.28125 739.28125 207.40625 726.3125 228.5 717.40625 c 4 + 249.59375 708.421875 273.34375 703.96875 299.59375 703.96875 c 4 +760.375 618.5 m 5 + 760.375 841.859375 760.375 1065.21875 760.375 1288.578125 c 5 + 856.364257812 1288.578125 952.354492188 1288.578125 1048.34375 1288.578125 c 5 + 1110.375 1288.578125 1158.34375 1270.375 1192.25 1233.890625 c 4 + 1226.3125 1197.40625 1243.1875 1148.421875 1243.1875 1087.015625 c 260xffb0 + 1243.1875 1025.53125 1226.3125 976.546875 1192.25 940.0625 c 4 + 1158.34375 903.65625 1110.375 885.375 1048.34375 885.375 c 5 + 988.5 885.375 928.65625 885.375 868.8125 885.375 c 5 + 868.8125 796.416992188 868.8125 707.458007812 868.8125 618.5 c 5 + 832.666992188 618.5 796.520507812 618.5 760.375 618.5 c 5 +868.8125 980.453125 m 5 + 926.416992188 980.453125 984.020507812 980.453125 1041.625 980.453125 c 5 + 1069.125 980.453125 1090.53125 987.640625 1105.84375 1002.015625 c 4 + 1121.3125 1016.390625 1128.96875 1037.09375 1128.96875 1063.96875 c 5 + 1128.96875 1079.30761719 1128.96875 1094.64550781 1128.96875 1109.984375 c 5 + 1128.96875 1136.9375 1121.3125 1157.5625 1105.84375 1171.9375 c 4 + 1090.53125 1186.3125 1069.125 1193.578125 1041.625 1193.578125 c 5 + 984.020507812 1193.578125 926.416992188 1193.578125 868.8125 1193.578125 c 5 + 868.8125 1122.53613281 868.8125 1051.49511719 868.8125 980.453125 c 5 +1400.375 618.5 m 5 + 1400.375 841.859375 1400.375 1065.21875 1400.375 1288.578125 c 5 + 1436.52050781 1288.578125 1472.66699219 1288.578125 1508.8125 1288.578125 c 5 + 1508.8125 1097.22363281 1508.8125 905.870117188 1508.8125 714.515625 c 5 + 1599.69824219 714.515625 1690.58300781 714.515625 1781.46875 714.515625 c 5 + 1781.46875 682.510742188 1781.46875 650.504882812 1781.46875 618.5 c 5 + 1654.4375 618.5 1527.40625 618.5 1400.375 618.5 c 5 +EndSplineSet +EndChar + +StartChar: uniE121 +Encoding: 57633 57633 34 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 171.516 90.2344<160.025 367.673> 453.703 90.2344<772.328 981.503> 708.156 144.922<1321.78 1349.11 1669.28 1697.09> 762.844 90.2344<151.573 376.123 772.328 981.503> +VStem: 3.65625 109.453<309.775 726.303> 414.516 109.453<309.775 726.303> 670.531 101.797<183 453.703 543.938 762.844> 1000.77 108.516<563.279 743.506> 1230.53 97.9688<183 706.401> 1690.38 97.9688<183 708.247> +DStem2: 1350.53 853.078 1333.27 708.156 0.416929 -0.908939<124.527 395.989> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 171.516 90.2344<160.025 367.673> 453.703 90.2344<772.328 981.503> 708.156 144.922<1321.78 1349.11 1669.28 1697.09> 762.844 90.2344<151.573 376.123 772.328 981.503> +VStem: 3.65625 109.453<309.775 726.303> 414.516 109.453<309.775 726.303> 670.531 101.797<183 453.703 543.938 762.844> 1000.77 108.516<563.279 743.506> 1230.53 97.9688<183 706.401> 1690.38 97.9688<183 708.247> +DStem2: 1350.53 853.078 1333.27 708.156 0.416929 -0.908939<124.527 395.989> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +263.8125 171.515625 m 256xcfc0 + 223.5 171.515625 187.328125 178.078125 155.375 191.125 c 0 + 123.34375 204.25 96 224.953125 73.265625 253.078125 c 0 + 50.53125 281.203125 33.265625 317.21875 21.390625 361.046875 c 0 + 9.59375 404.953125 3.65625 457.21875 3.65625 518.078125 c 256 + 3.65625 578.859375 9.59375 631.125 21.390625 675.03125 c 0 + 33.265625 718.859375 50.53125 754.875 73.265625 783 c 0 + 96 811.125 123.34375 831.828125 155.375 844.953125 c 0 + 187.328125 858.078125 223.5 864.5625 263.8125 864.5625 c 256 + 304.125 864.5625 340.296875 858.078125 372.328125 844.953125 c 0 + 404.28125 831.828125 431.703125 811.125 454.359375 783 c 0 + 477.09375 754.875 494.359375 718.859375 506.234375 675.03125 c 0 + 518.03125 631.125 523.96875 578.859375 523.96875 518.078125 c 256 + 523.96875 457.21875 518.03125 404.953125 506.234375 361.046875 c 0 + 494.359375 317.21875 477.09375 281.203125 454.359375 253.078125 c 0 + 431.703125 224.953125 404.28125 204.25 372.328125 191.125 c 0 + 340.296875 178.078125 304.125 171.515625 263.8125 171.515625 c 256xcfc0 +263.8125 261.75 m 256 + 311.859375 261.75 348.96875 277.21875 375.21875 308.3125 c 0 + 401.390625 339.328125 414.515625 382.375 414.515625 437.375 c 1 + 414.515625 491.151367188 414.515625 544.926757812 414.515625 598.703125 c 1 + 414.515625 653.703125 401.390625 696.75 375.21875 727.765625 c 0 + 348.96875 758.859375 311.859375 774.328125 263.8125 774.328125 c 256 + 215.84375 774.328125 178.734375 758.859375 152.484375 727.765625 c 0 + 126.234375 696.75 113.109375 653.703125 113.109375 598.703125 c 1 + 113.109375 544.926757812 113.109375 491.151367188 113.109375 437.375 c 1 + 113.109375 382.375 126.234375 339.328125 152.484375 308.3125 c 0 + 178.734375 277.21875 215.84375 261.75 263.8125 261.75 c 256 +670.53125 183 m 1 + 670.53125 406.359375 670.53125 629.71875 670.53125 853.078125 c 1 + 758.864257812 853.078125 847.198242188 853.078125 935.53125 853.078125 c 1xdfc0 + 993.109375 853.078125 1036.46875 835.96875 1065.609375 801.75 c 0 + 1094.671875 767.453125 1109.28125 718.078125 1109.28125 653.390625 c 256 + 1109.28125 588.78125 1094.671875 539.328125 1065.609375 505.109375 c 0 + 1036.46875 470.8125 993.109375 453.703125 935.53125 453.703125 c 1 + 881.129882812 453.703125 826.729492188 453.703125 772.328125 453.703125 c 1 + 772.328125 363.46875 772.328125 273.234375 772.328125 183 c 1 + 738.395507812 183 704.463867188 183 670.53125 183 c 1 +772.328125 543.9375 m 1 + 823.838867188 543.9375 875.348632812 543.9375 926.859375 543.9375 c 1 + 951.15625 543.9375 969.59375 550.1875 982.09375 562.6875 c 0 + 994.515625 575.1875 1000.765625 595.1875 1000.765625 622.6875 c 1 + 1000.765625 643.15625 1000.765625 663.625 1000.765625 684.09375 c 1 + 1000.765625 711.671875 994.515625 731.671875 982.09375 744.09375 c 0 + 969.59375 756.59375 951.15625 762.84375 926.859375 762.84375 c 1 + 875.348632812 762.84375 823.838867188 762.84375 772.328125 762.84375 c 1 + 772.328125 689.875 772.328125 616.90625 772.328125 543.9375 c 1 +1690.375 595.8125 m 1 + 1692.61425781 633.885742188 1694.85449219 671.958007812 1697.09375 710.03125 c 1 + 1693.265625 710.03125 1689.4375 710.03125 1685.609375 710.03125 c 1 + 1670.24511719 672.583007812 1654.87988281 635.135742188 1639.515625 597.6875 c 1 + 1596 506.828125 1552.484375 415.96875 1508.96875 325.109375 c 1 + 1465.765625 415.96875 1422.5625 506.828125 1379.359375 597.6875 c 1 + 1363.99511719 634.510742188 1348.62988281 671.333007812 1333.265625 708.15625 c 1 + 1329.4375 708.15625 1325.609375 708.15625 1321.78125 708.15625 c 1xefc0 + 1324.02050781 670.708007812 1326.26074219 633.260742188 1328.5 595.8125 c 1 + 1328.5 458.208007812 1328.5 320.604492188 1328.5 183 c 1 + 1295.84375 183 1263.1875 183 1230.53125 183 c 1 + 1230.53125 406.359375 1230.53125 629.71875 1230.53125 853.078125 c 1 + 1270.53125 853.078125 1310.53125 853.078125 1350.53125 853.078125 c 1xdfc0 + 1386.703125 775.004882812 1422.875 696.932617188 1459.046875 618.859375 c 1 + 1474.72363281 574.692382812 1490.40136719 530.526367188 1506.078125 486.359375 c 1 + 1508.94238281 486.359375 1511.80761719 486.359375 1514.671875 486.359375 c 1 + 1530.375 530.526367188 1546.078125 574.692382812 1561.78125 618.859375 c 1 + 1597.61425781 696.932617188 1633.44824219 775.004882812 1669.28125 853.078125 c 1xefc0 + 1708.96875 853.078125 1748.65625 853.078125 1788.34375 853.078125 c 1 + 1788.34375 629.71875 1788.34375 406.359375 1788.34375 183 c 1 + 1755.6875 183 1723.03125 183 1690.375 183 c 1 + 1690.375 320.604492188 1690.375 458.208007812 1690.375 595.8125 c 1 +EndSplineSet +EndChar + +StartChar: uniE122 +Encoding: 57634 57634 35 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 183 96.0156<862.719 1183.34 1380.88 1625.94> 474.875 95.9375<862.719 1153.66 1508.24 1626.52> 757.062 96.0156<862.719 1183.34 1418.58 1654.18> +VStem: 34.2812 103.594<183 695.656> 450.844 103.75<340.422 853.078> 754.281 108.438<279.016 474.875 570.812 757.062> 1290.22 107.5<611.387 747.68> 1650.22 107.5<294.565 441.758> +DStem2: 374.125 482.531 214.75 553.547 0.508638 -0.860981<-299.653 157.446> 1504.28 584.25 1486 481.594 0.978916 -0.204262<-84.3745 149.704> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 183 96.0156<862.719 1183.34 1380.88 1625.94> 474.875 95.9375<862.719 1153.66 1508.24 1626.52> 757.062 96.0156<862.719 1183.34 1418.58 1654.18> +VStem: 34.2812 103.594<183 695.656> 450.844 103.75<340.422 853.078> 754.281 108.438<279.016 474.875 570.812 757.062> 1290.22 107.5<611.387 747.68> 1650.22 107.5<294.565 441.758> +DStem2: 374.125 482.531 214.75 553.547 0.508638 -0.860981<-299.653 157.446> 1504.28 584.25 1486 481.594 0.978916 -0.204262<-84.3745 149.704> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +214.75 553.546875 m 1 + 190.114257812 600.916992188 165.479492188 648.286132812 140.84375 695.65625 c 1 + 139.854492188 695.65625 138.864257812 695.65625 137.875 695.65625 c 1 + 137.875 524.770507812 137.875 353.885742188 137.875 183 c 1 + 103.34375 183 68.8125 183 34.28125 183 c 1 + 34.28125 406.359375 34.28125 629.71875 34.28125 853.078125 c 1 + 74.59375 853.078125 114.90625 853.078125 155.21875 853.078125 c 1 + 228.1875 729.5625 301.15625 606.046875 374.125 482.53125 c 1 + 398.760742188 435.161132812 423.395507812 387.791992188 448.03125 340.421875 c 1 + 448.96875 340.421875 449.90625 340.421875 450.84375 340.421875 c 1 + 450.84375 511.307617188 450.84375 682.192382812 450.84375 853.078125 c 1 + 485.426757812 853.078125 520.010742188 853.078125 554.59375 853.078125 c 1 + 554.59375 629.71875 554.59375 406.359375 554.59375 183 c 1 + 514.28125 183 473.96875 183 433.65625 183 c 1 + 360.6875 306.515625 287.71875 430.03125 214.75 553.546875 c 1 +754.28125 183 m 1 + 754.28125 406.359375 754.28125 629.71875 754.28125 853.078125 c 1 + 897.301757812 853.078125 1040.32324219 853.078125 1183.34375 853.078125 c 1 + 1183.34375 821.073242188 1183.34375 789.067382812 1183.34375 757.0625 c 1 + 1076.46875 757.0625 969.59375 757.0625 862.71875 757.0625 c 1 + 862.71875 694.979492188 862.71875 632.895507812 862.71875 570.8125 c 1 + 959.698242188 570.8125 1056.67675781 570.8125 1153.65625 570.8125 c 1 + 1153.65625 538.833007812 1153.65625 506.854492188 1153.65625 474.875 c 1 + 1056.67675781 474.875 959.698242188 474.875 862.71875 474.875 c 1 + 862.71875 409.588867188 862.71875 344.301757812 862.71875 279.015625 c 1 + 969.59375 279.015625 1076.46875 279.015625 1183.34375 279.015625 c 1 + 1183.34375 247.010742188 1183.34375 215.004882812 1183.34375 183 c 1 + 1040.32324219 183 897.301757812 183 754.28125 183 c 1 +1514.90625 171.515625 m 0 + 1458.5 171.515625 1410.6875 181.75 1371.3125 202.21875 c 0 + 1331.9375 222.6875 1298.1875 250.1875 1270.0625 284.796875 c 1 + 1295.01074219 308.15625 1319.95800781 331.515625 1344.90625 354.875 c 1 + 1368.65625 326.046875 1394.75 304.25 1423.1875 289.5625 c 0 + 1451.625 274.875 1484.125 267.453125 1520.6875 267.453125 c 0 + 1563.5 267.453125 1595.84375 277.0625 1617.5625 296.28125 c 0 + 1639.28125 315.5 1650.21875 341.4375 1650.21875 374.015625 c 0 + 1650.21875 400.265625 1642.5625 421.046875 1627.25 436.4375 c 0 + 1611.78125 451.828125 1584.59375 463.3125 1545.53125 470.96875 c 1 + 1525.6875 474.510742188 1505.84375 478.051757812 1486 481.59375 c 1 + 1420.84375 493.703125 1371.78125 515.1875 1339.125 545.890625 c 0 + 1306.46875 576.59375 1290.21875 618.859375 1290.21875 672.609375 c 0 + 1290.21875 702.0625 1295.84375 728.78125 1307.09375 752.765625 c 0 + 1318.1875 776.75 1333.96875 796.90625 1354.125 813.234375 c 0 + 1374.28125 829.5625 1398.65625 842.21875 1427.5625 851.125 c 0 + 1456.3125 860.109375 1488.65625 864.5625 1524.4375 864.5625 c 0 + 1575.0625 864.5625 1618.8125 855.8125 1656 838.234375 c 0 + 1693.03125 820.578125 1724.75 795.1875 1751 761.90625 c 1 + 1725.73925781 739.510742188 1700.47949219 717.114257812 1675.21875 694.71875 c 1 + 1657.875 717.0625 1636.78125 735.03125 1611.78125 748.46875 c 0 + 1586.9375 761.90625 1555.84375 768.625 1518.65625 768.625 c 0 + 1480.375 768.625 1450.53125 760.890625 1429.4375 745.578125 c 0 + 1408.34375 730.1875 1397.71875 707.765625 1397.71875 678.390625 c 0 + 1397.71875 650.1875 1406.3125 629.25 1423.65625 615.5 c 0 + 1441 601.75 1467.875 591.28125 1504.28125 584.25 c 1 + 1524.125 580.109375 1543.96875 575.96875 1563.8125 571.828125 c 1 + 1631 559.015625 1680.21875 537.21875 1711.15625 506.515625 c 0 + 1742.25 475.8125 1757.71875 433.546875 1757.71875 379.796875 c 0 + 1757.71875 348.46875 1752.25 319.953125 1741.46875 294.328125 c 0 + 1730.53125 268.78125 1714.75 246.828125 1693.96875 228.625 c 0 + 1673.03125 210.34375 1647.71875 196.28125 1617.5625 186.359375 c 0 + 1587.5625 176.4375 1553.1875 171.515625 1514.90625 171.515625 c 0 +EndSplineSet +EndChar + +StartChar: uniE123 +Encoding: 57635 57635 36 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -253.33 91.1719<499.414 694.483 1066.72 1266.62> 64.4043 83.5156<1082.67 1250.74> 95.1074 89.2969<533.048 697.686> 334.17 94.0625<506.077 806.353> 352.373 87.3438<1075.55 1257.83> 612.686 88.2812<528.291 716.365> 624.17 92.1875<1073.85 1411.82> 960.186 87.3438<549.317 716.57> 1211.67 94.0625<1075.17 1251.25> +VStem: 386.196 112.344<733.124 927.954> 727.681 113.281<-128.478 61.427> 746.196 111.406<733.124 927.954> 926.665 113.281<-137.297 35.7148> 946.821 105.625<172.66 327.633> 1280.96 105.547<172.66 327.633 996.52 1182.98> 1293.38 113.281<-137.297 35.7148> +DStem2: 401.274 54.7949 491.509 97.0605 0.0726244 0.997359<48.7072 286.444> 956.743 727.842 1073.85 716.357 0.752577 0.658505<80.5713 451.637> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -253.33 91.1719<499.414 694.483 1066.72 1266.62> 64.4043 83.5156<1082.67 1250.74> 95.1074 89.2969<533.048 697.686> 334.17 94.0625<506.077 806.353> 352.373 87.3438<1075.55 1257.83> 612.686 88.2812<528.291 716.365> 624.17 92.1875<1073.85 1411.82> 960.186 87.3438<549.317 716.57> 1211.67 94.0625<1075.17 1251.25> +VStem: 386.196 112.344<733.124 927.954> 727.681 113.281<-128.478 61.427> 746.196 111.406<733.124 927.954> 926.665 113.281<-137.297 35.7148> 946.821 105.625<172.66 327.633> 1280.96 105.547<172.66 327.633 996.52 1182.98> 1293.38 113.281<-137.297 35.7148> +DStem2: 401.274 54.7949 491.509 97.0605 0.0726244 0.997359<48.7072 286.444> 956.743 727.842 1073.85 716.357 0.752577 0.658505<80.5713 451.637> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +806.352539062 334.169921875 m 1xb1e0 + 707.16015625 334.169921875 607.966796875 334.169921875 508.774414062 334.169921875 c 1 + 503.01953125 255.133789062 497.263671875 176.096679688 491.508789062 97.060546875 c 1 + 493.748046875 97.060546875 495.98828125 97.060546875 498.227539062 97.060546875 c 1 + 505.883789062 110.498046875 513.930664062 122.451171875 522.211914062 132.998046875 c 0 + 530.571289062 143.623046875 540.102539062 152.685546875 551.040039062 160.419921875 c 0 + 561.899414062 168.076171875 574.399414062 174.013671875 588.461914062 178.154296875 c 0 + 602.524414062 182.294921875 619.165039062 184.404296875 638.383789062 184.404296875 c 0 + 667.211914062 184.404296875 693.930664062 179.560546875 718.540039062 170.029296875 c 0 + 743.149414062 160.419921875 764.633789062 146.669921875 782.836914062 128.701171875 c 0 + 801.118164062 110.810546875 815.336914062 88.857421875 825.571289062 62.919921875 c 0 + 835.805664062 37.060546875 840.961914062 7.763671875 840.961914062 -24.892578125 c 0 + 840.961914062 -58.173828125 835.649414062 -88.876953125 825.102539062 -117.080078125 c 0 + 814.555664062 -145.205078125 799.008789062 -169.345703125 778.540039062 -189.501953125 c 0 + 758.071289062 -209.658203125 732.915039062 -225.361328125 703.149414062 -236.533203125 c 0 + 673.383789062 -247.783203125 639.633789062 -253.330078125 601.899414062 -253.330078125 c 0 + 571.821289062 -253.330078125 545.258789062 -249.970703125 522.211914062 -243.251953125 c 0 + 499.165039062 -236.533203125 478.852539062 -227.626953125 461.274414062 -216.376953125 c 0 + 443.618164062 -205.205078125 428.305664062 -192.392578125 415.180664062 -178.017578125 c 0 + 402.055664062 -163.642578125 390.415039062 -148.720703125 380.102539062 -133.330078125 c 1 + 406.352539062 -112.548828125 432.602539062 -91.767578125 458.852539062 -70.986328125 c 1 + 467.211914062 -84.423828125 475.805664062 -96.533203125 484.790039062 -107.470703125 c 0 + 493.774414062 -118.330078125 504.008789062 -127.939453125 515.493164062 -136.220703125 c 0 + 526.977539062 -144.580078125 539.946289062 -150.986328125 554.399414062 -155.439453125 c 0 + 568.774414062 -159.892578125 585.258789062 -162.158203125 603.852539062 -162.158203125 c 0 + 643.461914062 -162.158203125 674.086914062 -151.298828125 695.493164062 -129.501953125 c 0 + 716.899414062 -107.783203125 727.680664062 -77.705078125 727.680664062 -39.267578125 c 1 + 727.680664062 -35.439453125 727.680664062 -31.611328125 727.680664062 -27.783203125 c 1 + 727.680664062 10.654296875 716.899414062 40.732421875 695.493164062 62.451171875 c 0 + 674.086914062 84.248046875 643.461914062 95.107421875 603.852539062 95.107421875 c 0 + 575.024414062 95.107421875 551.977539062 89.638671875 534.711914062 78.779296875 c 0 + 517.446289062 67.919921875 502.680664062 55.732421875 490.571289062 42.294921875 c 1 + 460.805664062 46.4619140625 431.040039062 50.6279296875 401.274414062 54.794921875 c 1 + 409.58203125 179.274414062 417.888671875 303.752929688 426.196289062 428.232421875 c 1 + 552.915039062 428.232421875 679.633789062 428.232421875 806.352539062 428.232421875 c 1 + 806.352539062 396.877929688 806.352539062 365.524414062 806.352539062 334.169921875 c 1xb1e0 +1166.66503906 -253.330078125 m 256 + 1127.68066406 -253.330078125 1093.22753906 -248.408203125 1063.46191406 -238.486328125 c 0 + 1033.77441406 -228.564453125 1008.77441406 -214.970703125 988.618164062 -197.705078125 c 0 + 968.461914062 -180.439453125 953.071289062 -159.892578125 942.524414062 -136.220703125 c 0 + 931.977539062 -112.548828125 926.665039062 -87.001953125 926.665039062 -59.423828125 c 0x89c9 + 926.665039062 -14.658203125 939.008789062 21.357421875 963.618164062 48.544921875 c 0 + 988.305664062 75.732421875 1020.80566406 94.794921875 1061.11816406 105.654296875 c 1 + 1061.11816406 108.232421875 1061.11816406 110.810546875 1061.11816406 113.388671875 c 1 + 1026.50878906 125.498046875 998.852539062 144.716796875 978.071289062 170.966796875 c 0 + 957.290039062 197.216796875 946.821289062 229.482421875 946.821289062 267.919921875 c 0 + 946.821289062 293.544921875 951.821289062 316.904296875 961.743164062 337.998046875 c 0 + 971.665039062 359.091796875 985.883789062 377.216796875 1004.47753906 392.216796875 c 0 + 1022.99316406 407.294921875 1046.04003906 418.935546875 1073.54003906 427.294921875 c 0 + 1101.11816406 435.576171875 1132.13378906 439.716796875 1166.66503906 439.716796875 c 256 + 1201.27441406 439.716796875 1232.29003906 435.576171875 1259.79003906 427.294921875 c 0 + 1287.36816406 418.935546875 1310.41503906 407.294921875 1328.93066406 392.216796875 c 0 + 1347.52441406 377.216796875 1361.74316406 359.091796875 1371.66503906 337.998046875 c 0 + 1381.58691406 316.904296875 1386.50878906 293.544921875 1386.50878906 267.919921875 c 0x89c6 + 1386.50878906 229.482421875 1376.11816406 197.216796875 1355.33691406 170.966796875 c 0 + 1334.55566406 144.716796875 1306.82128906 125.498046875 1272.29003906 113.388671875 c 1 + 1272.29003906 110.810546875 1272.29003906 108.232421875 1272.29003906 105.654296875 c 1 + 1312.60253906 94.794921875 1345.10253906 75.732421875 1369.71191406 48.544921875 c 0 + 1394.39941406 21.357421875 1406.66503906 -14.658203125 1406.66503906 -59.423828125 c 0x89c1 + 1406.66503906 -87.001953125 1401.43066406 -112.548828125 1390.88378906 -136.220703125 c 0 + 1380.25878906 -159.892578125 1364.94628906 -180.439453125 1344.79003906 -197.705078125 c 0 + 1324.63378906 -214.970703125 1299.63378906 -228.564453125 1269.86816406 -238.486328125 c 0 + 1240.10253906 -248.408203125 1205.72753906 -253.330078125 1166.66503906 -253.330078125 c 256 +1166.66503906 -165.986328125 m 256 + 1206.97753906 -165.986328125 1238.22753906 -156.689453125 1260.25878906 -138.173828125 c 0 + 1282.36816406 -119.580078125 1293.38378906 -93.720703125 1293.38378906 -60.439453125 c 1 + 1293.38378906 -54.033203125 1293.38378906 -47.626953125 1293.38378906 -41.220703125 c 1 + 1293.38378906 -7.939453125 1282.36816406 17.998046875 1260.25878906 36.591796875 c 0 + 1238.22753906 55.107421875 1206.97753906 64.404296875 1166.66503906 64.404296875 c 256xc1c9 + 1126.35253906 64.404296875 1095.18066406 55.107421875 1073.07128906 36.591796875 c 0 + 1051.04003906 17.998046875 1039.94628906 -7.939453125 1039.94628906 -41.220703125 c 1 + 1039.94628906 -47.626953125 1039.94628906 -54.033203125 1039.94628906 -60.439453125 c 1 + 1039.94628906 -93.720703125 1051.04003906 -119.580078125 1073.07128906 -138.173828125 c 0 + 1095.18066406 -156.689453125 1126.35253906 -165.986328125 1166.66503906 -165.986328125 c 256 +1166.66503906 147.919921875 m 256 + 1203.85253906 147.919921875 1232.13378906 155.888671875 1251.66503906 171.904296875 c 0 + 1271.19628906 187.919921875 1280.96191406 211.279296875 1280.96191406 241.982421875 c 1 + 1280.96191406 247.424804688 1280.96191406 252.868164062 1280.96191406 258.310546875 c 1 + 1280.96191406 289.013671875 1271.19628906 312.373046875 1251.66503906 328.388671875 c 0 + 1232.13378906 344.404296875 1203.85253906 352.373046875 1166.66503906 352.373046875 c 256 + 1129.55566406 352.373046875 1101.27441406 344.404296875 1081.74316406 328.388671875 c 0 + 1062.21191406 312.373046875 1052.44628906 289.013671875 1052.44628906 258.310546875 c 1 + 1052.44628906 252.868164062 1052.44628906 247.424804688 1052.44628906 241.982421875 c 1xc9c6 + 1052.44628906 211.279296875 1062.21191406 187.919921875 1081.74316406 171.904296875 c 0 + 1101.27441406 155.888671875 1129.55566406 147.919921875 1166.66503906 147.919921875 c 256 +622.368164062 612.685546875 m 0x85d0 + 585.258789062 612.685546875 552.133789062 618.701171875 522.993164062 630.888671875 c 0 + 493.852539062 643.076171875 469.243164062 660.498046875 449.086914062 683.232421875 c 0 + 428.930664062 705.966796875 413.383789062 733.310546875 402.524414062 765.263671875 c 0 + 391.665039062 797.294921875 386.196289062 833.466796875 386.196289062 873.779296875 c 0 + 386.196289062 922.373046875 393.540039062 968.154296875 408.305664062 1011.04492188 c 0 + 422.993164062 1053.93554688 441.899414062 1093.31054688 464.946289062 1129.09179688 c 0 + 487.993164062 1164.95117188 513.696289062 1196.82617188 542.211914062 1224.63867188 c 0 + 570.649414062 1252.45117188 598.696289062 1275.65429688 626.196289062 1294.24804688 c 1 + 674.19140625 1294.24804688 722.185546875 1294.24804688 770.180664062 1294.24804688 c 1 + 732.446289062 1266.74804688 698.540039062 1240.18554688 668.461914062 1214.56054688 c 0 + 638.383789062 1188.93554688 612.133789062 1162.76367188 589.711914062 1135.88867188 c 0 + 567.290039062 1108.93554688 548.618164062 1080.49804688 533.540039062 1050.41992188 c 0 + 518.540039062 1020.34179688 506.821289062 987.373046875 498.540039062 951.513671875 c 1 + 500.779296875 950.888671875 503.01953125 950.263671875 505.258789062 949.638671875 c 1 + 512.290039062 963.076171875 520.415039062 975.654296875 529.711914062 987.529296875 c 0 + 539.008789062 999.404296875 549.868164062 1009.79492188 562.368164062 1018.70117188 c 0 + 574.868164062 1027.68554688 589.086914062 1034.71679688 605.102539062 1039.87304688 c 0 + 621.118164062 1044.95117188 639.633789062 1047.52929688 660.727539062 1047.52929688 c 0 + 688.930664062 1047.52929688 715.024414062 1042.76367188 739.008789062 1033.15429688 c 0 + 762.993164062 1023.54492188 783.774414062 1009.63867188 801.430664062 991.357421875 c 0 + 819.008789062 973.154296875 832.758789062 951.201171875 842.680664062 925.576171875 c 0 + 852.602539062 900.029296875 857.602539062 871.513671875 857.602539062 840.185546875 c 0 + 857.602539062 806.279296875 851.977539062 775.341796875 840.727539062 747.529296875 c 0 + 829.555664062 719.716796875 813.696289062 695.888671875 793.227539062 676.044921875 c 0 + 772.758789062 656.201171875 747.993164062 640.654296875 718.852539062 629.482421875 c 0 + 689.711914062 618.232421875 657.602539062 612.685546875 622.368164062 612.685546875 c 0x85d0 +622.368164062 700.966796875 m 256 + 661.430664062 700.966796875 691.821289062 711.357421875 713.540039062 732.138671875 c 0 + 735.336914062 752.998046875 746.196289062 783.544921875 746.196289062 823.857421875 c 1 + 746.196289062 828.336914062 746.196289062 832.815429688 746.196289062 837.294921875 c 1 + 746.196289062 877.607421875 735.336914062 908.154296875 713.540039062 928.935546875 c 0 + 691.821289062 949.794921875 661.430664062 960.185546875 622.368164062 960.185546875 c 256 + 583.305664062 960.185546875 552.915039062 949.794921875 531.196289062 928.935546875 c 0 + 509.399414062 908.154296875 498.540039062 877.607421875 498.540039062 837.294921875 c 1 + 498.540039062 832.815429688 498.540039062 828.336914062 498.540039062 823.857421875 c 1 + 498.540039062 783.544921875 509.399414062 752.998046875 531.196289062 732.138671875 c 0 + 552.915039062 711.357421875 583.305664062 700.966796875 622.368164062 700.966796875 c 256 +1411.82128906 624.169921875 m 1x83c0 + 1260.12890625 624.169921875 1108.43554688 624.169921875 956.743164062 624.169921875 c 1 + 956.743164062 658.727539062 956.743164062 693.284179688 956.743164062 727.841796875 c 1 + 1028.12304688 791.513671875 1099.50390625 855.185546875 1170.88378906 918.857421875 c 1 + 1204.79003906 949.638671875 1230.88378906 978.857421875 1249.08691406 1006.74804688 c 0 + 1267.29003906 1034.56054688 1276.43066406 1063.85742188 1276.43066406 1094.56054688 c 1 + 1276.43066406 1098.72753906 1276.43066406 1102.89355469 1276.43066406 1107.06054688 c 1 + 1276.43066406 1139.71679688 1266.66503906 1165.26367188 1247.13378906 1183.85742188 c 0 + 1227.68066406 1202.37304688 1201.27441406 1211.66992188 1167.99316406 1211.66992188 c 0 + 1149.39941406 1211.66992188 1133.22753906 1208.93554688 1119.47753906 1203.54492188 c 0 + 1105.72753906 1198.07617188 1093.69628906 1190.57617188 1083.46191406 1180.96679688 c 0 + 1073.22753906 1171.35742188 1064.79003906 1160.18554688 1058.07128906 1147.37304688 c 0 + 1051.35253906 1134.56054688 1046.04003906 1120.81054688 1042.21191406 1106.12304688 c 1 + 1010.51953125 1118.28417969 978.826171875 1130.44628906 947.133789062 1142.60742188 c 1 + 954.243164062 1163.70117188 963.774414062 1184.01367188 975.961914062 1203.54492188 c 0 + 988.149414062 1223.07617188 1003.46191406 1240.49804688 1022.05566406 1255.88867188 c 0 + 1040.57128906 1271.20117188 1062.52441406 1283.38867188 1087.83691406 1292.29492188 c 0 + 1113.07128906 1301.27929688 1142.68066406 1305.73242188 1176.58691406 1305.73242188 c 256 + 1210.49316406 1305.73242188 1240.96191406 1300.81054688 1267.83691406 1290.88867188 c 0 + 1294.71191406 1280.96679688 1317.21191406 1267.21679688 1335.49316406 1249.63867188 c 0 + 1353.69628906 1231.98242188 1367.68066406 1211.04492188 1377.21191406 1186.74804688 c 0 + 1386.82128906 1162.37304688 1391.66503906 1135.88867188 1391.66503906 1107.06054688 c 0 + 1391.66503906 1080.18554688 1387.52441406 1055.18554688 1379.16503906 1032.13867188 c 0 + 1370.88378906 1009.09179688 1359.32128906 987.373046875 1344.63378906 966.904296875 c 0 + 1329.86816406 946.435546875 1312.75878906 926.904296875 1293.22753906 908.310546875 c 0 + 1273.69628906 889.794921875 1253.07128906 870.888671875 1231.35253906 851.669921875 c 1 + 1178.85253906 806.565429688 1126.35253906 761.461914062 1073.85253906 716.357421875 c 1 + 1186.50878906 716.357421875 1299.16503906 716.357421875 1411.82128906 716.357421875 c 1 + 1411.82128906 685.627929688 1411.82128906 654.899414062 1411.82128906 624.169921875 c 1x83c0 +EndSplineSet +EndChar + +StartChar: uniE124 +Encoding: 57636 57636 37 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -253.33 91.1719<1068.73 1263.8> 4.87305 87.3438<519.871 687.162> 95.1074 89.2969<1102.37 1267.01> 334.17 94.0625<1075.4 1375.67> 351.436 88.2812<519.85 708.188> 612.686 88.2812<529.488 717.562> 624.17 92.1875<1075.05 1413.02> 960.186 87.3438<550.514 717.767> 1211.67 94.0625<1076.36 1252.45> +VStem: 378.877 111.406<124.448 319.279 735.299 925.949> 737.939 112.344<124.448 319.279 733.124 927.954> 1277.63 115.233<990.463 1182.98> 1297 113.281<-128.478 61.427> +DStem2: 957.939 727.842 1075.05 716.357 0.752575 0.658506<80.5711 451.636> 970.596 54.7949 1060.83 97.0605 0.0726286 0.997359<48.7076 286.445> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -253.33 91.1719<1068.73 1263.8> 4.87305 87.3438<519.871 687.162> 95.1074 89.2969<1102.37 1267.01> 334.17 94.0625<1075.4 1375.67> 351.436 88.2812<519.85 708.188> 612.686 88.2812<529.488 717.562> 624.17 92.1875<1075.05 1413.02> 960.186 87.3438<550.514 717.767> 1211.67 94.0625<1076.36 1252.45> +VStem: 378.877 111.406<124.448 319.279 735.299 925.949> 737.939 112.344<124.448 319.279 733.124 927.954> 1277.63 115.233<990.463 1182.98> 1297 113.281<-128.478 61.427> +DStem2: 957.939 727.842 1075.05 716.357 0.752575 0.658506<80.5711 451.636> 970.596 54.7949 1060.83 97.0605 0.0726286 0.997359<48.7076 286.445> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +850.283203125 178.623046875 m 0xe9e0 + 850.283203125 130.029296875 842.861328125 84.248046875 828.173828125 41.357421875 c 0 + 813.486328125 -1.533203125 794.580078125 -40.908203125 771.533203125 -76.689453125 c 0 + 748.486328125 -112.548828125 722.705078125 -144.580078125 694.267578125 -172.705078125 c 0 + 665.751953125 -200.908203125 637.783203125 -223.955078125 610.283203125 -241.845703125 c 1 + 562.26171875 -241.845703125 514.241210938 -241.845703125 466.220703125 -241.845703125 c 1 + 504.033203125 -214.345703125 537.939453125 -187.783203125 568.017578125 -162.158203125 c 0 + 598.095703125 -136.533203125 624.345703125 -110.361328125 646.767578125 -83.408203125 c 0 + 669.111328125 -56.533203125 687.861328125 -28.095703125 702.861328125 1.982421875 c 0 + 717.939453125 32.060546875 729.580078125 65.029296875 737.939453125 100.888671875 c 1 + 735.69921875 101.513671875 733.459960938 102.138671875 731.220703125 102.763671875 c 1 + 724.189453125 89.326171875 715.986328125 76.748046875 706.767578125 64.873046875 c 0 + 697.470703125 52.998046875 686.611328125 42.607421875 674.111328125 33.701171875 c 0 + 661.611328125 24.716796875 647.392578125 17.685546875 631.376953125 12.529296875 c 0 + 615.361328125 7.451171875 596.845703125 4.873046875 575.673828125 4.873046875 c 0 + 547.548828125 4.873046875 521.455078125 9.638671875 497.470703125 19.248046875 c 0 + 473.486328125 28.857421875 452.626953125 42.763671875 435.048828125 61.044921875 c 0 + 417.470703125 79.248046875 403.720703125 101.044921875 393.798828125 126.279296875 c 0 + 383.876953125 151.591796875 378.876953125 180.263671875 378.876953125 212.216796875 c 0 + 378.876953125 245.498046875 384.501953125 276.201171875 395.673828125 304.404296875 c 0 + 406.923828125 332.529296875 422.705078125 356.591796875 443.251953125 376.357421875 c 0 + 463.720703125 396.201171875 488.330078125 411.748046875 517.158203125 422.919921875 c 0 + 545.908203125 434.169921875 578.251953125 439.716796875 614.111328125 439.716796875 c 0 + 651.220703125 439.716796875 684.345703125 433.701171875 713.486328125 421.513671875 c 0 + 742.548828125 409.326171875 767.236328125 391.904296875 787.392578125 369.169921875 c 0 + 807.548828125 346.435546875 823.095703125 319.091796875 833.955078125 287.138671875 c 0 + 844.814453125 255.107421875 850.283203125 218.935546875 850.283203125 178.623046875 c 0xe9e0 +614.111328125 92.216796875 m 256 + 653.173828125 92.216796875 683.564453125 102.607421875 705.283203125 123.466796875 c 0 + 727.080078125 144.248046875 737.939453125 174.794921875 737.939453125 215.107421875 c 1 + 737.939453125 219.586914062 737.939453125 224.065429688 737.939453125 228.544921875 c 1 + 737.939453125 268.857421875 727.080078125 299.404296875 705.283203125 320.263671875 c 0 + 683.564453125 341.044921875 653.173828125 351.435546875 614.111328125 351.435546875 c 256 + 575.048828125 351.435546875 544.658203125 341.044921875 522.861328125 320.263671875 c 0 + 501.142578125 299.404296875 490.283203125 268.857421875 490.283203125 228.544921875 c 1 + 490.283203125 224.065429688 490.283203125 219.586914062 490.283203125 215.107421875 c 1 + 490.283203125 174.794921875 501.142578125 144.248046875 522.861328125 123.466796875 c 0 + 544.658203125 102.607421875 575.048828125 92.216796875 614.111328125 92.216796875 c 256 +1375.67382812 334.169921875 m 1xf1e8 + 1276.48046875 334.169921875 1177.28808594 334.169921875 1078.09570312 334.169921875 c 1 + 1072.33984375 255.133789062 1066.58496094 176.096679688 1060.83007812 97.060546875 c 1 + 1063.06933594 97.060546875 1065.30859375 97.060546875 1067.54882812 97.060546875 c 1 + 1075.20507812 110.498046875 1083.25195312 122.451171875 1091.53320312 132.998046875 c 0 + 1099.89257812 143.623046875 1109.42285156 152.685546875 1120.36132812 160.419921875 c 0 + 1131.21972656 168.076171875 1143.72070312 174.013671875 1157.78320312 178.154296875 c 0 + 1171.84472656 182.294921875 1188.48632812 184.404296875 1207.70507812 184.404296875 c 0 + 1236.53222656 184.404296875 1263.25195312 179.560546875 1287.86132812 170.029296875 c 0 + 1312.46972656 160.419921875 1333.95410156 146.669921875 1352.15820312 128.701171875 c 0 + 1370.43945312 110.810546875 1384.65820312 88.857421875 1394.89257812 62.919921875 c 0 + 1405.12597656 37.060546875 1410.28320312 7.763671875 1410.28320312 -24.892578125 c 0 + 1410.28320312 -58.173828125 1404.97070312 -88.876953125 1394.42382812 -117.080078125 c 0 + 1383.87597656 -145.205078125 1368.33007812 -169.345703125 1347.86035156 -189.501953125 c 0 + 1327.39257812 -209.658203125 1302.23535156 -225.361328125 1272.47070312 -236.533203125 c 0 + 1242.70410156 -247.783203125 1208.95410156 -253.330078125 1171.22070312 -253.330078125 c 0 + 1141.14257812 -253.330078125 1114.58007812 -249.970703125 1091.53320312 -243.251953125 c 0 + 1068.48535156 -236.533203125 1048.17382812 -227.626953125 1030.59570312 -216.376953125 c 0 + 1012.93945312 -205.205078125 997.625976562 -192.392578125 984.501953125 -178.017578125 c 0 + 971.375976562 -163.642578125 959.736328125 -148.720703125 949.423828125 -133.330078125 c 1 + 975.673828125 -112.548828125 1001.92285156 -91.767578125 1028.17285156 -70.986328125 c 1 + 1036.53222656 -84.423828125 1045.12695312 -96.533203125 1054.11132812 -107.470703125 c 0 + 1063.09472656 -118.330078125 1073.32910156 -127.939453125 1084.81445312 -136.220703125 c 0 + 1096.29882812 -144.580078125 1109.26757812 -150.986328125 1123.72070312 -155.439453125 c 0 + 1138.09570312 -159.892578125 1154.57910156 -162.158203125 1173.17382812 -162.158203125 c 0 + 1212.78222656 -162.158203125 1243.40820312 -151.298828125 1264.81445312 -129.501953125 c 0 + 1286.21972656 -107.783203125 1297.00195312 -77.705078125 1297.00195312 -39.267578125 c 1 + 1297.00195312 -35.439453125 1297.00195312 -31.611328125 1297.00195312 -27.783203125 c 1 + 1297.00195312 10.654296875 1286.21972656 40.732421875 1264.81445312 62.451171875 c 0 + 1243.40820312 84.248046875 1212.78222656 95.107421875 1173.17382812 95.107421875 c 0 + 1144.34570312 95.107421875 1121.29785156 89.638671875 1104.03320312 78.779296875 c 0 + 1086.76757812 67.919921875 1072.00097656 55.732421875 1059.89257812 42.294921875 c 1 + 1030.12695312 46.4619140625 1000.36035156 50.6279296875 970.595703125 54.794921875 c 1 + 978.90234375 179.274414062 987.209960938 303.752929688 995.517578125 428.232421875 c 1 + 1122.23535156 428.232421875 1248.95507812 428.232421875 1375.67382812 428.232421875 c 1 + 1375.67382812 396.877929688 1375.67382812 365.524414062 1375.67382812 334.169921875 c 1xf1e8 +623.564453125 612.685546875 m 0xe5e0 + 586.455078125 612.685546875 553.330078125 618.701171875 524.189453125 630.888671875 c 0 + 495.048828125 643.076171875 470.439453125 660.498046875 450.283203125 683.232421875 c 0 + 430.126953125 705.966796875 414.580078125 733.310546875 403.720703125 765.263671875 c 0 + 392.861328125 797.294921875 387.392578125 833.466796875 387.392578125 873.779296875 c 0 + 387.392578125 922.373046875 394.736328125 968.154296875 409.501953125 1011.04492188 c 0 + 424.189453125 1053.93554688 443.095703125 1093.31054688 466.142578125 1129.09179688 c 0 + 489.189453125 1164.95117188 514.892578125 1196.82617188 543.408203125 1224.63867188 c 0 + 571.845703125 1252.45117188 599.892578125 1275.65429688 627.392578125 1294.24804688 c 1 + 675.38671875 1294.24804688 723.381835938 1294.24804688 771.376953125 1294.24804688 c 1 + 733.642578125 1266.74804688 699.736328125 1240.18554688 669.658203125 1214.56054688 c 0 + 639.580078125 1188.93554688 613.330078125 1162.76367188 590.908203125 1135.88867188 c 0 + 568.486328125 1108.93554688 549.814453125 1080.49804688 534.736328125 1050.41992188 c 0 + 519.736328125 1020.34179688 508.017578125 987.373046875 499.736328125 951.513671875 c 1 + 501.975585938 950.888671875 504.21484375 950.263671875 506.455078125 949.638671875 c 1 + 513.486328125 963.076171875 521.611328125 975.654296875 530.908203125 987.529296875 c 0 + 540.205078125 999.404296875 551.064453125 1009.79492188 563.564453125 1018.70117188 c 0 + 576.064453125 1027.68554688 590.283203125 1034.71679688 606.298828125 1039.87304688 c 0 + 622.314453125 1044.95117188 640.830078125 1047.52929688 661.923828125 1047.52929688 c 0 + 690.126953125 1047.52929688 716.220703125 1042.76367188 740.205078125 1033.15429688 c 0 + 764.189453125 1023.54492188 784.970703125 1009.63867188 802.626953125 991.357421875 c 0 + 820.205078125 973.154296875 833.955078125 951.201171875 843.876953125 925.576171875 c 0 + 853.798828125 900.029296875 858.798828125 871.513671875 858.798828125 840.185546875 c 0 + 858.798828125 806.279296875 853.173828125 775.341796875 841.923828125 747.529296875 c 0 + 830.751953125 719.716796875 814.892578125 695.888671875 794.423828125 676.044921875 c 0 + 773.955078125 656.201171875 749.189453125 640.654296875 720.048828125 629.482421875 c 0 + 690.908203125 618.232421875 658.798828125 612.685546875 623.564453125 612.685546875 c 0xe5e0 +623.564453125 700.966796875 m 256 + 662.626953125 700.966796875 693.017578125 711.357421875 714.736328125 732.138671875 c 0 + 736.533203125 752.998046875 747.392578125 783.544921875 747.392578125 823.857421875 c 1 + 747.392578125 828.336914062 747.392578125 832.815429688 747.392578125 837.294921875 c 1 + 747.392578125 877.607421875 736.533203125 908.154296875 714.736328125 928.935546875 c 0 + 693.017578125 949.794921875 662.626953125 960.185546875 623.564453125 960.185546875 c 256 + 584.501953125 960.185546875 554.111328125 949.794921875 532.392578125 928.935546875 c 0 + 510.595703125 908.154296875 499.736328125 877.607421875 499.736328125 837.294921875 c 1 + 499.736328125 832.815429688 499.736328125 828.336914062 499.736328125 823.857421875 c 1 + 499.736328125 783.544921875 510.595703125 752.998046875 532.392578125 732.138671875 c 0 + 554.111328125 711.357421875 584.501953125 700.966796875 623.564453125 700.966796875 c 256 +1413.01757812 624.169921875 m 1xe3f0 + 1261.32421875 624.169921875 1109.63183594 624.169921875 957.939453125 624.169921875 c 1 + 957.939453125 658.727539062 957.939453125 693.284179688 957.939453125 727.841796875 c 1 + 1029.31933594 791.513671875 1100.69921875 855.185546875 1172.08007812 918.857421875 c 1 + 1205.98535156 949.638671875 1232.08007812 978.857421875 1250.28320312 1006.74804688 c 0 + 1268.48535156 1034.56054688 1277.62695312 1063.85742188 1277.62695312 1094.56054688 c 1 + 1277.62695312 1098.72753906 1277.62695312 1102.89355469 1277.62695312 1107.06054688 c 1 + 1277.62695312 1139.71679688 1267.86035156 1165.26367188 1248.33007812 1183.85742188 c 0 + 1228.87597656 1202.37304688 1202.47070312 1211.66992188 1169.18847656 1211.66992188 c 0 + 1150.59570312 1211.66992188 1134.42382812 1208.93554688 1120.67382812 1203.54492188 c 0 + 1106.92382812 1198.07617188 1094.89160156 1190.57617188 1084.65820312 1180.96679688 c 0 + 1074.42382812 1171.35742188 1065.98535156 1160.18554688 1059.26660156 1147.37304688 c 0 + 1052.54882812 1134.56054688 1047.23535156 1120.81054688 1043.40722656 1106.12304688 c 1 + 1011.71484375 1118.28417969 980.022460938 1130.44628906 948.330078125 1142.60742188 c 1 + 955.439453125 1163.70117188 964.969726562 1184.01367188 977.158203125 1203.54492188 c 0 + 989.345703125 1223.07617188 1004.65820312 1240.49804688 1023.25195312 1255.88867188 c 0 + 1041.76660156 1271.20117188 1063.71972656 1283.38867188 1089.03320312 1292.29492188 c 0 + 1114.26660156 1301.27929688 1143.87597656 1305.73242188 1177.78320312 1305.73242188 c 256 + 1211.68847656 1305.73242188 1242.15820312 1300.81054688 1269.03320312 1290.88867188 c 0 + 1295.90722656 1280.96679688 1318.40820312 1267.21679688 1336.68945312 1249.63867188 c 0 + 1354.89160156 1231.98242188 1368.87695312 1211.04492188 1378.40820312 1186.74804688 c 0 + 1388.01757812 1162.37304688 1392.86035156 1135.88867188 1392.86035156 1107.06054688 c 0 + 1392.86035156 1080.18554688 1388.72070312 1055.18554688 1380.36132812 1032.13867188 c 0 + 1372.07910156 1009.09179688 1360.51757812 987.373046875 1345.82910156 966.904296875 c 0 + 1331.06347656 946.435546875 1313.95507812 926.904296875 1294.42285156 908.310546875 c 0 + 1274.89257812 889.794921875 1254.26660156 870.888671875 1232.54882812 851.669921875 c 1 + 1180.04882812 806.565429688 1127.54882812 761.461914062 1075.04882812 716.357421875 c 1 + 1187.70507812 716.357421875 1300.36132812 716.357421875 1413.01757812 716.357421875 c 1 + 1413.01757812 685.627929688 1413.01757812 654.899414062 1413.01757812 624.169921875 c 1xe3f0 +EndSplineSet +EndChar + +StartChar: uniE125 +Encoding: 57637 57637 38 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -62.2031 83.5156<801.078 977.719> 330.375 92.1875<873.463 902.443> 607.016 89.2188<744.694 935.623> 889.203 90.2344<158.891 368.066> 1143.66 144.922<1268.34 1295.67 1615.84 1643.66> 1198.34 90.2344<158.891 368.066 736.496 938.717> +VStem: 57.0938 101.797<618.5 889.203 979.438 1198.34> 387.328 108.516<998.779 1179.01> 590.219 109.453<744.746 1162.33> 624.438 99.8438<-247.516 -147.672> 1053.58 102.734<-247.516 -144.781> 1177.09 97.9688<618.5 1141.9> 1636.94 97.9688<618.5 1143.75> +DStem2: 624.438 -247.516 724.281 -247.516 0.286825 0.957983<28.6377 221.043 308.198 625.84> 954.672 422.562 915.297 232.484 0.276827 -0.96092<73.4064 391.949 478.84 671.271> 1297.09 1288.58 1279.83 1143.66 0.416929 -0.908939<124.527 395.989> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -62.2031 83.5156<801.078 977.719> 330.375 92.1875<873.463 902.443> 607.016 89.2188<744.694 935.623> 889.203 90.2344<158.891 368.066> 1143.66 144.922<1268.34 1295.67 1615.84 1643.66> 1198.34 90.2344<158.891 368.066 736.496 938.717> +VStem: 57.0938 101.797<618.5 889.203 979.438 1198.34> 387.328 108.516<998.779 1179.01> 590.219 109.453<744.746 1162.33> 624.438 99.8438<-247.516 -147.672> 1053.58 102.734<-247.516 -144.781> 1177.09 97.9688<618.5 1141.9> 1636.94 97.9688<618.5 1143.75> +DStem2: 624.438 -247.516 724.281 -247.516 0.286825 0.957983<28.6377 221.043 308.198 625.84> 954.672 422.562 915.297 232.484 0.276827 -0.96092<73.4064 391.949 478.84 671.271> 1297.09 1288.58 1279.83 1143.66 0.416929 -0.908939<124.527 395.989> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +1053.578125 -247.515625 m 1xf378 + 1036.28613281 -185.745117188 1018.99511719 -123.974609375 1001.703125 -62.203125 c 1 + 926.520507812 -62.203125 851.338867188 -62.203125 776.15625 -62.203125 c 1 + 758.864257812 -123.974609375 741.573242188 -185.745117188 724.28125 -247.515625 c 1 + 691 -247.515625 657.71875 -247.515625 624.4375 -247.515625 c 1 + 691.3125 -24.15625 758.1875 199.203125 825.0625 422.5625 c 1 + 868.265625 422.5625 911.46875 422.5625 954.671875 422.5625 c 1 + 1021.88574219 199.203125 1089.09863281 -24.15625 1156.3125 -247.515625 c 1 + 1122.06738281 -247.515625 1087.82324219 -247.515625 1053.578125 -247.515625 c 1xf378 +915.296875 232.484375 m 1 + 908.265625 265.114257812 901.234375 297.744140625 894.203125 330.375 c 1 + 890.036132812 330.375 885.870117188 330.375 881.703125 330.375 c 1 + 874.671875 297.744140625 867.640625 265.114257812 860.609375 232.484375 c 1 + 840.765625 162.09375 820.921875 91.703125 801.078125 21.3125 c 1 + 859.958007812 21.3125 918.838867188 21.3125 977.71875 21.3125 c 1 + 956.911132812 91.703125 936.104492188 162.09375 915.296875 232.484375 c 1 +57.09375 618.5 m 1 + 57.09375 841.859375 57.09375 1065.21875 57.09375 1288.578125 c 1 + 145.426757812 1288.578125 233.760742188 1288.578125 322.09375 1288.578125 c 1xf738 + 379.671875 1288.578125 423.03125 1271.46875 452.171875 1237.25 c 0 + 481.234375 1202.953125 495.84375 1153.578125 495.84375 1088.890625 c 256 + 495.84375 1024.28125 481.234375 974.828125 452.171875 940.609375 c 0 + 423.03125 906.3125 379.671875 889.203125 322.09375 889.203125 c 1 + 267.692382812 889.203125 213.291992188 889.203125 158.890625 889.203125 c 1 + 158.890625 798.96875 158.890625 708.734375 158.890625 618.5 c 1 + 124.958007812 618.5 91.0263671875 618.5 57.09375 618.5 c 1 +158.890625 979.4375 m 1 + 210.401367188 979.4375 261.911132812 979.4375 313.421875 979.4375 c 1 + 337.71875 979.4375 356.15625 985.6875 368.65625 998.1875 c 0 + 381.078125 1010.6875 387.328125 1030.6875 387.328125 1058.1875 c 1 + 387.328125 1078.65625 387.328125 1099.125 387.328125 1119.59375 c 1 + 387.328125 1147.171875 381.078125 1167.171875 368.65625 1179.59375 c 0 + 356.15625 1192.09375 337.71875 1198.34375 313.421875 1198.34375 c 1 + 261.911132812 1198.34375 210.401367188 1198.34375 158.890625 1198.34375 c 1 + 158.890625 1125.375 158.890625 1052.40625 158.890625 979.4375 c 1 +843.65625 607.015625 m 0 + 804.59375 607.015625 769.59375 613.578125 738.578125 626.625 c 0 + 707.484375 639.75 680.921875 660.453125 658.890625 688.578125 c 0 + 636.78125 716.703125 619.828125 752.71875 607.953125 796.546875 c 0 + 596.15625 840.453125 590.21875 892.71875 590.21875 953.578125 c 256 + 590.21875 1014.359375 596.15625 1066.625 607.953125 1110.53125 c 0 + 619.828125 1154.359375 636.78125 1190.375 658.890625 1218.5 c 0 + 680.921875 1246.625 707.484375 1267.328125 738.578125 1280.453125 c 0 + 769.59375 1293.578125 804.59375 1300.0625 843.65625 1300.0625 c 0 + 900.609375 1300.0625 946.234375 1287.796875 980.453125 1263.109375 c 0 + 1014.671875 1238.5 1042.09375 1201.546875 1062.5625 1152.25 c 1 + 1033.76074219 1136.25976562 1004.95800781 1120.27050781 976.15625 1104.28125 c 1 + 964.59375 1142.015625 948.5 1169.20214844 927.640625 1185.84375 c 0 + 906.859375 1202.48339844 878.890625 1210.84375 843.65625 1210.84375 c 0 + 798.265625 1210.84375 762.875 1195.140625 737.5625 1163.8125 c 0 + 712.328125 1132.40625 699.671875 1089.203125 699.671875 1034.203125 c 1 + 699.671875 980.426757812 699.671875 926.650390625 699.671875 872.875 c 1xf3b8 + 699.671875 817.875 712.328125 774.671875 737.5625 743.265625 c 0 + 762.875 711.9375 798.265625 696.234375 843.65625 696.234375 c 0 + 879.515625 696.234375 908.5 705.217773438 930.53125 723.109375 c 0 + 952.640625 741.077148438 969.75 769.828125 981.9375 809.515625 c 1 + 1010.08886719 792.875 1038.23925781 776.234375 1066.390625 759.59375 c 1 + 1045.296875 710.375 1017.09375 672.561523438 981.9375 646.3125 c 0 + 946.703125 620.061523438 900.609375 607.015625 843.65625 607.015625 c 0 +1636.9375 1031.3125 m 1 + 1639.17675781 1069.38476562 1641.41699219 1107.45800781 1643.65625 1145.53125 c 1 + 1639.828125 1145.53125 1636 1145.53125 1632.171875 1145.53125 c 1 + 1616.80761719 1108.08300781 1601.44238281 1070.63476562 1586.078125 1033.1875 c 1 + 1542.5625 942.328125 1499.046875 851.46875 1455.53125 760.609375 c 1 + 1412.328125 851.46875 1369.125 942.328125 1325.921875 1033.1875 c 1 + 1310.55761719 1070.00976562 1295.19238281 1106.83300781 1279.828125 1143.65625 c 1 + 1276 1143.65625 1272.171875 1143.65625 1268.34375 1143.65625 c 1xfb38 + 1270.58300781 1106.20800781 1272.82324219 1068.75976562 1275.0625 1031.3125 c 1 + 1275.0625 893.708007812 1275.0625 756.103515625 1275.0625 618.5 c 1 + 1242.40625 618.5 1209.75 618.5 1177.09375 618.5 c 1 + 1177.09375 841.859375 1177.09375 1065.21875 1177.09375 1288.578125 c 1 + 1217.09375 1288.578125 1257.09375 1288.578125 1297.09375 1288.578125 c 1xf738 + 1333.265625 1210.50488281 1369.4375 1132.43164062 1405.609375 1054.359375 c 1 + 1421.28613281 1010.19238281 1436.96386719 966.025390625 1452.640625 921.859375 c 1 + 1455.50488281 921.859375 1458.37011719 921.859375 1461.234375 921.859375 c 1 + 1476.9375 966.025390625 1492.640625 1010.19238281 1508.34375 1054.359375 c 1 + 1544.17675781 1132.43164062 1580.01074219 1210.50488281 1615.84375 1288.578125 c 1xfb38 + 1655.53125 1288.578125 1695.21875 1288.578125 1734.90625 1288.578125 c 1xf738 + 1734.90625 1065.21875 1734.90625 841.859375 1734.90625 618.5 c 1 + 1702.25 618.5 1669.59375 618.5 1636.9375 618.5 c 1 + 1636.9375 756.103515625 1636.9375 893.708007812 1636.9375 1031.3125 c 1 +EndSplineSet +EndChar + +StartChar: uniE126 +Encoding: 57638 57638 39 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -247.516 89.2969<766.078 988.208> 51.0781 87.3438<766.078 968.007> 333.266 89.2969<766.078 968.007> 607.016 89.2188<744.694 935.623> 889.203 90.2344<158.891 368.066> 1143.66 144.922<1268.34 1295.67 1615.84 1643.66> 1198.34 90.2344<158.891 368.066 736.496 938.717> +VStem: 57.0938 101.797<618.5 889.203 979.438 1198.34> 387.328 108.516<998.779 1179.01> 590.219 109.453<744.746 1162.33> 664.281 101.797<-158.219 51.0781 138.422 333.266> 986.859 107.5<156.718 314.969> 1007.95 108.516<-137.91 30.7696> 1177.09 97.9688<618.5 1141.9> 1636.94 97.9688<618.5 1143.75> +DStem2: 1297.09 1288.58 1279.83 1143.66 0.416929 -0.908939<124.527 395.989> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -247.516 89.2969<766.078 988.208> 51.0781 87.3438<766.078 968.007> 333.266 89.2969<766.078 968.007> 607.016 89.2188<744.694 935.623> 889.203 90.2344<158.891 368.066> 1143.66 144.922<1268.34 1295.67 1615.84 1643.66> 1198.34 90.2344<158.891 368.066 736.496 938.717> +VStem: 57.0938 101.797<618.5 889.203 979.438 1198.34> 387.328 108.516<998.779 1179.01> 590.219 109.453<744.746 1162.33> 664.281 101.797<-158.219 51.0781 138.422 333.266> 986.859 107.5<156.718 314.969> 1007.95 108.516<-137.91 30.7696> 1177.09 97.9688<618.5 1141.9> 1636.94 97.9688<618.5 1143.75> +DStem2: 1297.09 1288.58 1279.83 1143.66 0.416929 -0.908939<124.527 395.989> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +664.28125 422.5625 m 1xf9ae + 754.854492188 422.5625 845.426757812 422.5625 936 422.5625 c 1 + 987.796875 422.5625 1027.171875 407.874023438 1054.046875 378.421875 c 0 + 1080.921875 348.967773438 1094.359375 306.078125 1094.359375 249.75 c 0 + 1094.359375 206.859375 1085.0625 173.265625 1066.546875 148.96875 c 0 + 1047.953125 124.670898438 1021.390625 110.920898438 986.859375 107.71875 c 1 + 986.859375 103.864257812 986.859375 100.009765625 986.859375 96.15625 c 1xf9b6 + 1006.078125 96.15625 1023.5 92.4833984375 1039.203125 85.140625 c 0 + 1054.828125 77.796875 1068.421875 67.3271484375 1079.984375 53.890625 c 0 + 1091.46875 40.453125 1100.453125 24.515625 1106.859375 5.921875 c 0 + 1113.265625 -12.6728515625 1116.46875 -32.828125 1116.46875 -54.546875 c 0 + 1116.46875 -83.375 1112.796875 -109.625976562 1105.453125 -133.296875 c 0 + 1098.03125 -156.96875 1087.640625 -177.282226562 1074.203125 -194.234375 c 0 + 1060.765625 -211.1875 1044.59375 -224.313476562 1025.765625 -233.609375 c 0 + 1006.859375 -242.90625 985.921875 -247.515625 962.875 -247.515625 c 1 + 863.34375 -247.515625 763.8125 -247.515625 664.28125 -247.515625 c 1 + 664.28125 -24.15625 664.28125 199.203125 664.28125 422.5625 c 1xf9ae +766.078125 -158.21875 m 1 + 821.754882812 -158.21875 877.432617188 -158.21875 933.109375 -158.21875 c 1 + 957.40625 -158.21875 976 -151.65625 988.8125 -138.53125 c 0 + 1001.546875 -125.40625 1007.953125 -104.46875 1007.953125 -75.640625 c 1 + 1007.953125 -60.927734375 1007.953125 -46.2138671875 1007.953125 -31.5 c 1xf9ae + 1007.953125 -2.75 1001.546875 18.265625 988.8125 31.390625 c 0 + 976 44.515625 957.40625 51.078125 933.109375 51.078125 c 1 + 877.432617188 51.078125 821.754882812 51.078125 766.078125 51.078125 c 1 + 766.078125 -18.6875 766.078125 -88.453125 766.078125 -158.21875 c 1 +766.078125 138.421875 m 1 + 816.3125 138.421875 866.546875 138.421875 916.78125 138.421875 c 1 + 939.203125 138.421875 956.46875 144.359375 968.578125 156.15625 c 0 + 980.765625 168.03125 986.859375 187.327148438 986.859375 214.28125 c 1 + 986.859375 228.65625 986.859375 243.03125 986.859375 257.40625 c 1xf9b6 + 986.859375 284.359375 980.765625 303.655273438 968.578125 315.53125 c 0 + 956.46875 327.327148438 939.203125 333.265625 916.78125 333.265625 c 1 + 866.546875 333.265625 816.3125 333.265625 766.078125 333.265625 c 1 + 766.078125 268.317382812 766.078125 203.369140625 766.078125 138.421875 c 1 +57.09375 618.5 m 1 + 57.09375 841.859375 57.09375 1065.21875 57.09375 1288.578125 c 1 + 145.426757812 1288.578125 233.760742188 1288.578125 322.09375 1288.578125 c 1xfb86 + 379.671875 1288.578125 423.03125 1271.46875 452.171875 1237.25 c 0 + 481.234375 1202.953125 495.84375 1153.578125 495.84375 1088.890625 c 256 + 495.84375 1024.28125 481.234375 974.828125 452.171875 940.609375 c 0 + 423.03125 906.3125 379.671875 889.203125 322.09375 889.203125 c 1 + 267.692382812 889.203125 213.291992188 889.203125 158.890625 889.203125 c 1 + 158.890625 798.96875 158.890625 708.734375 158.890625 618.5 c 1 + 124.958007812 618.5 91.0263671875 618.5 57.09375 618.5 c 1 +158.890625 979.4375 m 1 + 210.401367188 979.4375 261.911132812 979.4375 313.421875 979.4375 c 1 + 337.71875 979.4375 356.15625 985.6875 368.65625 998.1875 c 0 + 381.078125 1010.6875 387.328125 1030.6875 387.328125 1058.1875 c 1 + 387.328125 1078.65625 387.328125 1099.125 387.328125 1119.59375 c 1 + 387.328125 1147.171875 381.078125 1167.171875 368.65625 1179.59375 c 0 + 356.15625 1192.09375 337.71875 1198.34375 313.421875 1198.34375 c 1 + 261.911132812 1198.34375 210.401367188 1198.34375 158.890625 1198.34375 c 1 + 158.890625 1125.375 158.890625 1052.40625 158.890625 979.4375 c 1 +843.65625 607.015625 m 0 + 804.59375 607.015625 769.59375 613.578125 738.578125 626.625 c 0 + 707.484375 639.75 680.921875 660.453125 658.890625 688.578125 c 0 + 636.78125 716.703125 619.828125 752.71875 607.953125 796.546875 c 0 + 596.15625 840.453125 590.21875 892.71875 590.21875 953.578125 c 256 + 590.21875 1014.359375 596.15625 1066.625 607.953125 1110.53125 c 0 + 619.828125 1154.359375 636.78125 1190.375 658.890625 1218.5 c 0 + 680.921875 1246.625 707.484375 1267.328125 738.578125 1280.453125 c 0 + 769.59375 1293.578125 804.59375 1300.0625 843.65625 1300.0625 c 0 + 900.609375 1300.0625 946.234375 1287.796875 980.453125 1263.109375 c 0 + 1014.671875 1238.5 1042.09375 1201.546875 1062.5625 1152.25 c 1 + 1033.76074219 1136.25976562 1004.95800781 1120.27050781 976.15625 1104.28125 c 1 + 964.59375 1142.015625 948.5 1169.20214844 927.640625 1185.84375 c 0 + 906.859375 1202.48339844 878.890625 1210.84375 843.65625 1210.84375 c 0 + 798.265625 1210.84375 762.875 1195.140625 737.5625 1163.8125 c 0 + 712.328125 1132.40625 699.671875 1089.203125 699.671875 1034.203125 c 1 + 699.671875 980.426757812 699.671875 926.650390625 699.671875 872.875 c 1xf9c6 + 699.671875 817.875 712.328125 774.671875 737.5625 743.265625 c 0 + 762.875 711.9375 798.265625 696.234375 843.65625 696.234375 c 0 + 879.515625 696.234375 908.5 705.217773438 930.53125 723.109375 c 0 + 952.640625 741.077148438 969.75 769.828125 981.9375 809.515625 c 1 + 1010.08886719 792.875 1038.23925781 776.234375 1066.390625 759.59375 c 1 + 1045.296875 710.375 1017.09375 672.561523438 981.9375 646.3125 c 0 + 946.703125 620.061523438 900.609375 607.015625 843.65625 607.015625 c 0 +1636.9375 1031.3125 m 1 + 1639.17675781 1069.38476562 1641.41699219 1107.45800781 1643.65625 1145.53125 c 1 + 1639.828125 1145.53125 1636 1145.53125 1632.171875 1145.53125 c 1 + 1616.80761719 1108.08300781 1601.44238281 1070.63476562 1586.078125 1033.1875 c 1 + 1542.5625 942.328125 1499.046875 851.46875 1455.53125 760.609375 c 1 + 1412.328125 851.46875 1369.125 942.328125 1325.921875 1033.1875 c 1 + 1310.55761719 1070.00976562 1295.19238281 1106.83300781 1279.828125 1143.65625 c 1 + 1276 1143.65625 1272.171875 1143.65625 1268.34375 1143.65625 c 1xfd86 + 1270.58300781 1106.20800781 1272.82324219 1068.75976562 1275.0625 1031.3125 c 1 + 1275.0625 893.708007812 1275.0625 756.103515625 1275.0625 618.5 c 1 + 1242.40625 618.5 1209.75 618.5 1177.09375 618.5 c 1 + 1177.09375 841.859375 1177.09375 1065.21875 1177.09375 1288.578125 c 1 + 1217.09375 1288.578125 1257.09375 1288.578125 1297.09375 1288.578125 c 1xfb86 + 1333.265625 1210.50488281 1369.4375 1132.43164062 1405.609375 1054.359375 c 1 + 1421.28613281 1010.19238281 1436.96386719 966.025390625 1452.640625 921.859375 c 1 + 1455.50488281 921.859375 1458.37011719 921.859375 1461.234375 921.859375 c 1 + 1476.9375 966.025390625 1492.640625 1010.19238281 1508.34375 1054.359375 c 1 + 1544.17675781 1132.43164062 1580.01074219 1210.50488281 1615.84375 1288.578125 c 1xfd86 + 1655.53125 1288.578125 1695.21875 1288.578125 1734.90625 1288.578125 c 1xfb86 + 1734.90625 1065.21875 1734.90625 841.859375 1734.90625 618.5 c 1 + 1702.25 618.5 1669.59375 618.5 1636.9375 618.5 c 1 + 1636.9375 756.103515625 1636.9375 893.708007812 1636.9375 1031.3125 c 1 +EndSplineSet +EndChar + +StartChar: uniE127 +Encoding: 57639 57639 40 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -253.33 96.9531<472.423 704.729> -60.4395 93.125<1098.35 1296.09> 22.1387 93.125<608.117 746.32> 328.389 99.8438<1183.19 1212.07> 342.764 96.9531<472.697 701.413> 612.686 95.9375<510.965 736.75 1097.49 1418.2> 916.045 95.9375<1097.49 1388.43> 1209.79 95.9375<536.534 754.946 1097.49 1418.2> +VStem: 295.148 116.172<-93.8873 280.002> 405.07 107.5<1052.56 1188.85> 755.93 95.0781<-241.846 -140.049 -108.342 22.1387> 765.07 107.5<735.735 882.928> 903.43 110.391<-241.846 -131.455> 989.055 108.438<720.186 916.045 1011.98 1198.23> 1383.43 113.281<-241.846 -128.564> +DStem2: 619.133 1025.42 600.852 922.764 0.978916 -0.204262<-84.378 149.631> 903.43 -241.846 1013.82 -241.846 0.322775 0.946476<35.6313 226.241 322.753 322.753> 1268.27 428.232 1200.07 328.389 0.306115 -0.951995<74.1727 385.072 481.954 673.162> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -253.33 96.9531<472.423 704.729> -60.4395 93.125<1098.35 1296.09> 22.1387 93.125<608.117 746.32> 328.389 99.8438<1183.19 1212.07> 342.764 96.9531<472.697 701.413> 612.686 95.9375<510.965 736.75 1097.49 1418.2> 916.045 95.9375<1097.49 1388.43> 1209.79 95.9375<536.534 754.946 1097.49 1418.2> +VStem: 295.148 116.172<-93.8873 280.002> 405.07 107.5<1052.56 1188.85> 755.93 95.0781<-241.846 -140.049 -108.342 22.1387> 765.07 107.5<735.735 882.928> 903.43 110.391<-241.846 -131.455> 989.055 108.438<720.186 916.045 1011.98 1198.23> 1383.43 113.281<-241.846 -128.564> +DStem2: 619.133 1025.42 600.852 922.764 0.978916 -0.204262<-84.378 149.631> 903.43 -241.846 1013.82 -241.846 0.322775 0.946476<35.6313 226.241 322.753 322.753> 1268.27 428.232 1200.07 328.389 0.306115 -0.951995<74.1727 385.072 481.954 673.162> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +755.9296875 -140.048828125 m 1xafa2 + 754.653320312 -140.048828125 753.377929688 -140.048828125 752.1015625 -140.048828125 c 1 + 745.0703125 -172.705078125 726.0078125 -199.736328125 694.9921875 -221.220703125 c 0 + 663.8984375 -242.626953125 622.8046875 -253.330078125 571.6328125 -253.330078125 c 0 + 531.9453125 -253.330078125 495.1484375 -245.830078125 461.2421875 -230.830078125 c 0 + 427.2578125 -215.751953125 398.0390625 -193.720703125 373.3515625 -164.580078125 c 0 + 348.7421875 -135.439453125 329.5234375 -99.267578125 315.7734375 -56.064453125 c 0 + 302.0234375 -12.861328125 295.1484375 36.904296875 295.1484375 93.232421875 c 0 + 295.1484375 148.857421875 302.1796875 198.310546875 316.2421875 241.513671875 c 0 + 330.3046875 284.716796875 350.1484375 321.044921875 375.7734375 350.498046875 c 0 + 401.3984375 379.951171875 432.1015625 402.138671875 467.9609375 417.216796875 c 0 + 503.7421875 432.216796875 543.7421875 439.716796875 587.9609375 439.716796875 c 0 + 648.1171875 439.716796875 698.9765625 426.435546875 740.5390625 399.951171875 c 0 + 782.1796875 373.388671875 814.5234375 336.357421875 837.5703125 289.013671875 c 1 + 808.1171875 271.748046875 778.6640625 254.482421875 749.2109375 237.216796875 c 1 + 736.3984375 268.544921875 716.5546875 294.013671875 689.6796875 313.544921875 c 0 + 662.8046875 332.998046875 628.8984375 342.763671875 587.9609375 342.763671875 c 0 + 534.8359375 342.763671875 492.1015625 325.810546875 459.7578125 291.904296875 c 0 + 427.4921875 257.998046875 411.3203125 210.029296875 411.3203125 147.919921875 c 1 + 411.3203125 111.435546875 411.3203125 74.951171875 411.3203125 38.466796875 c 1 + 411.3203125 -23.642578125 427.4921875 -71.611328125 459.7578125 -105.517578125 c 0 + 492.1015625 -139.423828125 534.8359375 -156.376953125 587.9609375 -156.376953125 c 0 + 609.0546875 -156.376953125 629.2109375 -153.720703125 648.4296875 -148.251953125 c 0 + 667.6484375 -142.783203125 684.4453125 -134.814453125 698.8203125 -124.267578125 c 0 + 713.1953125 -113.720703125 724.7578125 -100.595703125 733.3515625 -84.892578125 c 0 + 742.0234375 -69.189453125 746.3203125 -50.830078125 746.3203125 -29.658203125 c 1 + 746.3203125 -12.392578125 746.3203125 4.873046875 746.3203125 22.138671875 c 1 + 700.252929688 22.138671875 654.184570312 22.138671875 608.1171875 22.138671875 c 1 + 608.1171875 53.1806640625 608.1171875 84.2216796875 608.1171875 115.263671875 c 1 + 689.081054688 115.263671875 770.043945312 115.263671875 851.0078125 115.263671875 c 1 + 851.0078125 -3.7724609375 851.0078125 -122.809570312 851.0078125 -241.845703125 c 1 + 819.315429688 -241.845703125 787.622070312 -241.845703125 755.9296875 -241.845703125 c 1 + 755.9296875 -207.913085938 755.9296875 -173.981445312 755.9296875 -140.048828125 c 1xafa2 +1383.4296875 -241.845703125 m 1 + 1363.2734375 -181.376953125 1343.1171875 -120.908203125 1322.9609375 -60.439453125 c 1 + 1239.4453125 -60.439453125 1155.9296875 -60.439453125 1072.4140625 -60.439453125 c 1 + 1052.8828125 -120.908203125 1033.3515625 -181.376953125 1013.8203125 -241.845703125 c 1 + 977.0234375 -241.845703125 940.2265625 -241.845703125 903.4296875 -241.845703125 c 1 + 979.6015625 -18.486328125 1055.7734375 204.873046875 1131.9453125 428.232421875 c 1 + 1177.38769531 428.232421875 1222.83105469 428.232421875 1268.2734375 428.232421875 c 1xd70a + 1344.41894531 204.873046875 1420.56542969 -18.486328125 1496.7109375 -241.845703125 c 1 + 1458.95019531 -241.845703125 1421.19042969 -241.845703125 1383.4296875 -241.845703125 c 1 +1200.0703125 328.388671875 m 1 + 1198.48144531 328.388671875 1196.89355469 328.388671875 1195.3046875 328.388671875 c 1 + 1162.98730469 229.821289062 1130.66894531 131.252929688 1098.3515625 32.685546875 c 1 + 1164.26269531 32.685546875 1230.17480469 32.685546875 1296.0859375 32.685546875 c 1 + 1264.08105469 131.252929688 1232.07519531 229.821289062 1200.0703125 328.388671875 c 1 +629.6796875 612.685546875 m 0 + 573.3515625 612.685546875 525.5390625 622.919921875 486.1640625 643.388671875 c 0 + 446.7890625 663.857421875 413.0390625 691.357421875 384.9140625 725.966796875 c 1 + 409.862304688 749.326171875 434.809570312 772.685546875 459.7578125 796.044921875 c 1 + 483.4296875 767.216796875 509.5234375 745.419921875 537.9609375 730.732421875 c 0 + 566.4765625 716.044921875 598.9765625 708.623046875 635.4609375 708.623046875 c 0 + 678.3515625 708.623046875 710.6171875 718.232421875 732.4140625 737.451171875 c 0 + 754.1328125 756.669921875 765.0703125 782.607421875 765.0703125 815.185546875 c 0 + 765.0703125 841.435546875 757.3359375 862.216796875 742.0234375 877.607421875 c 0 + 726.6328125 892.998046875 699.4453125 904.482421875 660.3828125 912.138671875 c 1 + 640.5390625 915.680664062 620.6953125 919.221679688 600.8515625 922.763671875 c 1 + 535.6171875 934.873046875 486.6328125 956.357421875 453.9765625 987.060546875 c 0 + 421.3203125 1017.76367188 405.0703125 1060.02929688 405.0703125 1113.77929688 c 0 + 405.0703125 1143.23242188 410.6171875 1169.95117188 421.8671875 1193.93554688 c 0 + 433.0390625 1217.91992188 448.7421875 1238.07617188 468.8984375 1254.40429688 c 0 + 489.0546875 1270.73242188 513.5078125 1283.38867188 542.3359375 1292.29492188 c 0 + 571.0859375 1301.27929688 603.4296875 1305.73242188 639.2890625 1305.73242188 c 0 + 689.8359375 1305.73242188 733.6640625 1296.98242188 770.7734375 1279.40429688 c 0 + 807.8828125 1261.74804688 839.6015625 1236.35742188 865.8515625 1203.07617188 c 1 + 840.565429688 1180.68066406 815.278320312 1158.28417969 789.9921875 1135.88867188 c 1 + 772.7265625 1158.23242188 751.6328125 1176.20117188 726.6328125 1189.63867188 c 0 + 701.7109375 1203.07617188 670.6171875 1209.79492188 633.5078125 1209.79492188 c 0 + 595.1484375 1209.79492188 565.3828125 1202.06054688 544.2109375 1186.74804688 c 0 + 523.1171875 1171.35742188 512.5703125 1148.93554688 512.5703125 1119.56054688 c 0 + 512.5703125 1091.35742188 521.1640625 1070.41992188 538.5078125 1056.66992188 c 0 + 555.7734375 1042.91992188 582.6484375 1032.45117188 619.1328125 1025.41992188 c 1 + 638.9765625 1021.27929688 658.8203125 1017.13867188 678.6640625 1012.99804688 c 1 + 745.8515625 1000.18554688 794.9921875 978.388671875 826.0078125 947.685546875 c 0 + 857.0234375 916.982421875 872.5703125 874.716796875 872.5703125 820.966796875 c 0x8752 + 872.5703125 789.638671875 867.1015625 761.123046875 856.2421875 735.498046875 c 0 + 845.3828125 709.951171875 829.5234375 687.998046875 808.7421875 669.794921875 c 0 + 787.8828125 651.513671875 762.4921875 637.451171875 732.4140625 627.529296875 c 0 + 702.3359375 617.607421875 668.0390625 612.685546875 629.6796875 612.685546875 c 0 +989.0546875 624.169921875 m 1x8706 + 989.0546875 847.529296875 989.0546875 1070.88867188 989.0546875 1294.24804688 c 1 + 1132.1015625 1294.24804688 1275.1484375 1294.24804688 1418.1953125 1294.24804688 c 1 + 1418.1953125 1262.24316406 1418.1953125 1230.23730469 1418.1953125 1198.23242188 c 1 + 1311.29394531 1198.23242188 1204.39355469 1198.23242188 1097.4921875 1198.23242188 c 1 + 1097.4921875 1136.14941406 1097.4921875 1074.06542969 1097.4921875 1011.98242188 c 1 + 1194.47167969 1011.98242188 1291.45019531 1011.98242188 1388.4296875 1011.98242188 c 1 + 1388.4296875 980.002929688 1388.4296875 948.024414062 1388.4296875 916.044921875 c 1 + 1291.45019531 916.044921875 1194.47167969 916.044921875 1097.4921875 916.044921875 c 1 + 1097.4921875 850.758789062 1097.4921875 785.471679688 1097.4921875 720.185546875 c 1 + 1204.39355469 720.185546875 1311.29394531 720.185546875 1418.1953125 720.185546875 c 1 + 1418.1953125 688.180664062 1418.1953125 656.174804688 1418.1953125 624.169921875 c 1 + 1275.1484375 624.169921875 1132.1015625 624.169921875 989.0546875 624.169921875 c 1x8706 +EndSplineSet +EndChar + +StartChar: uniE128 +Encoding: 57640 57640 41 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -233.641 135.352<983.512 1136.47> 892.414 145.43<754.163 1037.71> +VStem: 462.641 174.141<270.312 765.753> 829.672 152.812<-98.1521 8.21826> 1155.22 174.141<268.985 765.753> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -233.641 135.352<983.512 1136.47> 892.414 145.43<754.163 1037.71> +VStem: 462.641 174.141<270.312 765.753> 829.672 152.812<-98.1521 8.21826> 1155.22 174.141<268.985 765.753> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +1136.46875 -233.640625 m 5 + 1088.96875 -233.640625 1041.46875 -233.640625 993.96875 -233.640625 c 5 + 937.25 -233.640625 895.765625 -219.2265625 869.28125 -190.3984375 c 4 + 843.03125 -161.5703125 829.671875 -122.78125 829.671875 -73.796875 c 5 + 829.671875 -48.3671875 829.671875 -22.9375 829.671875 2.4921875 c 5 + 773.1875 9.2890625 722.328125 25.578125 677.09375 51.4765625 c 4 + 632.09375 77.375 593.65625 111.9453125 562.015625 155.1875 c 4 + 530.140625 198.4296875 505.765625 250.4609375 488.421875 311.3984375 c 4 + 471.3125 372.3359375 462.640625 441.2421875 462.640625 518.1171875 c 4 + 462.640625 602.4921875 472.953125 677.140625 493.578125 741.9453125 c 4 + 514.203125 806.75 543.5 861.0078125 581.46875 904.71875 c 4 + 619.203125 948.4296875 664.90625 981.4765625 718.109375 1004.09375 c 4 + 771.546875 1026.59375 830.609375 1037.84375 896 1037.84375 c 260 + 961.390625 1037.84375 1020.453125 1026.59375 1073.890625 1004.09375 c 4 + 1127.09375 981.4765625 1172.796875 948.4296875 1210.53125 904.71875 c 4 + 1248.5 861.0078125 1277.796875 806.75 1298.421875 741.9453125 c 4 + 1319.046875 677.140625 1329.359375 602.4921875 1329.359375 518.1171875 c 4 + 1329.359375 368.3515625 1298.1875 249.9921875 1235.84375 163.15625 c 4 + 1173.5 76.203125 1088.890625 23.703125 982.484375 5.421875 c 5 + 982.484375 -29.1484375 982.484375 -63.71875 982.484375 -98.2890625 c 5 + 1033.8125 -98.2890625 1085.140625 -98.2890625 1136.46875 -98.2890625 c 5 + 1136.46875 -143.40625 1136.46875 -188.5234375 1136.46875 -233.640625 c 5 +896 143.703125 m 4 + 934.4375 143.703125 969.59375 150.3828125 1001.9375 163.859375 c 4 + 1034.046875 177.21875 1061.46875 196.671875 1083.96875 222.1015625 c 4 + 1106.46875 247.53125 1124.046875 278.5859375 1136.46875 315.03125 c 4 + 1148.890625 351.4765625 1155.21875 392.7265625 1155.21875 438.8984375 c 5 + 1155.21875 491.671875 1155.21875 544.4453125 1155.21875 597.21875 c 5 + 1155.21875 643.390625 1148.890625 684.640625 1136.46875 721.0859375 c 4 + 1124.046875 757.53125 1106.46875 788.5859375 1083.96875 814.015625 c 4 + 1061.46875 839.4453125 1034.046875 858.8984375 1001.9375 872.2578125 c 4 + 969.59375 885.734375 934.4375 892.4140625 896 892.4140625 c 4 + 856.625 892.4140625 821.234375 885.734375 789.359375 872.2578125 c 4 + 757.71875 858.8984375 730.53125 839.4453125 708.03125 814.015625 c 4 + 685.53125 788.5859375 667.953125 757.53125 655.53125 721.0859375 c 4 + 643.109375 684.640625 636.78125 643.390625 636.78125 597.21875 c 5 + 636.78125 544.4453125 636.78125 491.671875 636.78125 438.8984375 c 5 + 636.78125 392.7265625 643.109375 351.4765625 655.53125 315.03125 c 4 + 667.953125 278.5859375 685.53125 247.53125 708.03125 222.1015625 c 4 + 730.53125 196.671875 757.71875 177.21875 789.359375 163.859375 c 4 + 821.234375 150.3828125 856.625 143.703125 896 143.703125 c 4 +EndSplineSet +EndChar + +StartChar: uniE129 +Encoding: 57641 57641 42 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 183 89.2969<1439.98 1772.17> 708.156 144.922<737.328 764.657 1084.83 1112.64> 763.781 89.2969<1340.14 1646.39> +VStem: 227.25 101.719<183 442.219> 646.078 97.9688<183 706.401> 1105.92 97.9688<183 708.247> +DStem2: 134.125 853.078 19.8281 853.078 0.450673 -0.892689<0 330.095> 285.766 553.547 328.969 442.219 0.416605 0.909087<0 329.486> 766.078 853.078 748.812 708.156 0.416929 -0.908939<124.527 395.989> 1324.83 274.172 1439.98 272.297 0.548962 0.835847<61.6492 585.764> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 183 89.2969<1439.98 1772.17> 708.156 144.922<737.328 764.657 1084.83 1112.64> 763.781 89.2969<1340.14 1646.39> +VStem: 227.25 101.719<183 442.219> 646.078 97.9688<183 706.401> 1105.92 97.9688<183 708.247> +DStem2: 134.125 853.078 19.8281 853.078 0.450673 -0.892689<0 330.095> 285.766 553.547 328.969 442.219 0.416605 0.909087<0 329.486> 766.078 853.078 748.812 708.156 0.416929 -0.908939<124.527 395.989> 1324.83 274.172 1439.98 272.297 0.548962 0.835847<61.6492 585.764> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +227.25 183 m 1xbc + 227.25 269.40625 227.25 355.8125 227.25 442.21875 c 1 + 158.109375 579.171875 88.96875 716.125 19.828125 853.078125 c 1 + 57.9267578125 853.078125 96.0263671875 853.078125 134.125 853.078125 c 1 + 180.504882812 753.234375 226.885742188 653.390625 273.265625 553.546875 c 1 + 277.432617188 553.546875 281.598632812 553.546875 285.765625 553.546875 c 1 + 331.520507812 653.390625 377.276367188 753.234375 423.03125 853.078125 c 1 + 460.479492188 853.078125 497.926757812 853.078125 535.375 853.078125 c 1 + 466.573242188 716.125 397.770507812 579.171875 328.96875 442.21875 c 1 + 328.96875 355.8125 328.96875 269.40625 328.96875 183 c 1 + 295.0625 183 261.15625 183 227.25 183 c 1xbc +1105.921875 595.8125 m 1 + 1108.16113281 633.885742188 1110.40136719 671.958007812 1112.640625 710.03125 c 1 + 1108.8125 710.03125 1104.984375 710.03125 1101.15625 710.03125 c 1 + 1085.79199219 672.583007812 1070.42675781 635.135742188 1055.0625 597.6875 c 1 + 1011.546875 506.828125 968.03125 415.96875 924.515625 325.109375 c 1 + 881.3125 415.96875 838.109375 506.828125 794.90625 597.6875 c 1 + 779.541992188 634.510742188 764.176757812 671.333007812 748.8125 708.15625 c 1 + 744.984375 708.15625 741.15625 708.15625 737.328125 708.15625 c 1xdc + 739.567382812 670.708007812 741.807617188 633.260742188 744.046875 595.8125 c 1 + 744.046875 458.208007812 744.046875 320.604492188 744.046875 183 c 1 + 711.390625 183 678.734375 183 646.078125 183 c 1 + 646.078125 406.359375 646.078125 629.71875 646.078125 853.078125 c 1 + 686.078125 853.078125 726.078125 853.078125 766.078125 853.078125 c 1xbc + 802.25 775.004882812 838.421875 696.932617188 874.59375 618.859375 c 1 + 890.270507812 574.692382812 905.948242188 530.526367188 921.625 486.359375 c 1 + 924.489257812 486.359375 927.354492188 486.359375 930.21875 486.359375 c 1 + 945.921875 530.526367188 961.625 574.692382812 977.328125 618.859375 c 1 + 1013.16113281 696.932617188 1048.99511719 775.004882812 1084.828125 853.078125 c 1xdc + 1124.515625 853.078125 1164.203125 853.078125 1203.890625 853.078125 c 1 + 1203.890625 629.71875 1203.890625 406.359375 1203.890625 183 c 1 + 1171.234375 183 1138.578125 183 1105.921875 183 c 1 + 1105.921875 320.604492188 1105.921875 458.208007812 1105.921875 595.8125 c 1 +1772.171875 183 m 1 + 1623.05761719 183 1473.94238281 183 1324.828125 183 c 1 + 1324.828125 213.390625 1324.828125 243.78125 1324.828125 274.171875 c 1 + 1432.015625 437.375 1539.203125 600.578125 1646.390625 763.78125 c 1 + 1544.30761719 763.78125 1442.22363281 763.78125 1340.140625 763.78125 c 1 + 1340.140625 793.546875 1340.140625 823.3125 1340.140625 853.078125 c 1 + 1480.63574219 853.078125 1621.12988281 853.078125 1761.625 853.078125 c 1xbc + 1761.625 822.6875 1761.625 792.296875 1761.625 761.90625 c 1 + 1654.41113281 598.703125 1547.19824219 435.5 1439.984375 272.296875 c 1 + 1550.71386719 272.296875 1661.44238281 272.296875 1772.171875 272.296875 c 1 + 1772.171875 242.53125 1772.171875 212.765625 1772.171875 183 c 1 +EndSplineSet +EndChar + +StartChar: uniE12A +Encoding: 57642 57642 43 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 171.516 91.1719<1374.3 1569.36> 453.703 91.25<184.594 336.939> 474.875 95.9375<824.594 1100.14> 519.953 89.2969<1407.93 1572.57> 757.062 96.0156<184.594 420.981 824.594 1134.67 1380.69 1681.23> +VStem: 76.1562 108.438<183 453.703 544.953 758.078> 444.75 114.297<567.194 735.759> 716.156 108.438<183 474.875 570.812 757.062> 1602.56 113.281<296.368 486.273> +DStem2: 428.422 465.266 318.031 453.703 0.456936 -0.8895<0 262.07> 1276.16 479.641 1366.39 521.906 0.0726244 0.997359<48.7072 286.444> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 171.516 91.1719<1374.3 1569.36> 453.703 91.25<184.594 336.939> 474.875 95.9375<824.594 1100.14> 519.953 89.2969<1407.93 1572.57> 757.062 96.0156<184.594 420.981 824.594 1134.67 1380.69 1681.23> +VStem: 76.1562 108.438<183 453.703 544.953 758.078> 444.75 114.297<567.194 735.759> 716.156 108.438<183 474.875 570.812 757.062> 1602.56 113.281<296.368 486.273> +DStem2: 428.422 465.266 318.031 453.703 0.456936 -0.8895<0 262.07> 1276.16 479.641 1366.39 521.906 0.0726244 0.997359<48.7072 286.444> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +184.59375 183 m 1xcf80 + 148.448242188 183 112.301757812 183 76.15625 183 c 1 + 76.15625 406.359375 76.15625 629.71875 76.15625 853.078125 c 1 + 172.458007812 853.078125 268.760742188 853.078125 365.0625 853.078125 c 1 + 425.296875 853.078125 472.640625 835.03125 507.171875 798.859375 c 0 + 541.703125 762.6875 559.046875 713.546875 559.046875 651.515625 c 0 + 559.046875 603.46875 547.953125 563.625 525.921875 531.984375 c 0 + 503.8125 500.265625 471.3125 478.078125 428.421875 465.265625 c 1 + 476.754882812 371.176757812 525.088867188 277.088867188 573.421875 183 c 1 + 533.109375 183 492.796875 183 452.484375 183 c 1 + 407.666992188 273.234375 362.848632812 363.46875 318.03125 453.703125 c 1 + 273.551757812 453.703125 229.073242188 453.703125 184.59375 453.703125 c 1 + 184.59375 363.46875 184.59375 273.234375 184.59375 183 c 1xcf80 +357.40625 544.953125 m 1 + 384.90625 544.953125 406.390625 552.140625 421.703125 566.515625 c 0 + 437.09375 580.890625 444.75 601.59375 444.75 628.46875 c 1 + 444.75 643.807617188 444.75 659.145507812 444.75 674.484375 c 1 + 444.75 701.4375 437.09375 722.0625 421.703125 736.4375 c 0 + 406.390625 750.8125 384.90625 758.078125 357.40625 758.078125 c 1 + 299.801757812 758.078125 242.198242188 758.078125 184.59375 758.078125 c 1 + 184.59375 687.036132812 184.59375 615.995117188 184.59375 544.953125 c 1 + 242.198242188 544.953125 299.801757812 544.953125 357.40625 544.953125 c 1 +716.15625 183 m 1 + 716.15625 406.359375 716.15625 629.71875 716.15625 853.078125 c 1 + 855.661132812 853.078125 995.166992188 853.078125 1134.671875 853.078125 c 1 + 1134.671875 821.073242188 1134.671875 789.067382812 1134.671875 757.0625 c 1 + 1031.3125 757.0625 927.953125 757.0625 824.59375 757.0625 c 1 + 824.59375 694.979492188 824.59375 632.895507812 824.59375 570.8125 c 1 + 916.442382812 570.8125 1008.29199219 570.8125 1100.140625 570.8125 c 1 + 1100.140625 538.833007812 1100.140625 506.854492188 1100.140625 474.875 c 1 + 1008.29199219 474.875 916.442382812 474.875 824.59375 474.875 c 1xaf80 + 824.59375 377.583007812 824.59375 280.291992188 824.59375 183 c 1 + 788.448242188 183 752.301757812 183 716.15625 183 c 1 +1681.234375 759.015625 m 1 + 1582.04199219 759.015625 1482.84863281 759.015625 1383.65625 759.015625 c 1 + 1377.90136719 679.979492188 1372.14550781 600.942382812 1366.390625 521.90625 c 1 + 1368.62988281 521.90625 1370.87011719 521.90625 1373.109375 521.90625 c 1 + 1380.765625 535.34375 1388.8125 547.296875 1397.09375 557.84375 c 0 + 1405.453125 568.46875 1414.984375 577.53125 1425.921875 585.265625 c 0 + 1436.78125 592.921875 1449.28125 598.859375 1463.34375 603 c 0 + 1477.40625 607.140625 1494.046875 609.25 1513.265625 609.25 c 0 + 1542.09375 609.25 1568.8125 604.40625 1593.421875 594.875 c 0 + 1618.03125 585.265625 1639.515625 571.515625 1657.71875 553.546875 c 0 + 1676 535.65625 1690.21875 513.703125 1700.453125 487.765625 c 0 + 1710.6875 461.90625 1715.84375 432.609375 1715.84375 399.953125 c 0 + 1715.84375 366.671875 1710.53125 335.96875 1699.984375 307.765625 c 0 + 1689.4375 279.640625 1673.890625 255.5 1653.421875 235.34375 c 0 + 1632.953125 215.1875 1607.796875 199.484375 1578.03125 188.3125 c 0 + 1548.265625 177.0625 1514.515625 171.515625 1476.78125 171.515625 c 0 + 1446.703125 171.515625 1420.140625 174.875 1397.09375 181.59375 c 0 + 1374.046875 188.3125 1353.734375 197.21875 1336.15625 208.46875 c 0 + 1318.5 219.640625 1303.1875 232.453125 1290.0625 246.828125 c 0 + 1276.9375 261.203125 1265.296875 276.125 1254.984375 291.515625 c 1 + 1281.234375 312.296875 1307.484375 333.078125 1333.734375 353.859375 c 1 + 1342.09375 340.421875 1350.6875 328.3125 1359.671875 317.375 c 0 + 1368.65625 306.515625 1378.890625 296.90625 1390.375 288.625 c 0 + 1401.859375 280.265625 1414.828125 273.859375 1429.28125 269.40625 c 0 + 1443.65625 264.953125 1460.140625 262.6875 1478.734375 262.6875 c 0 + 1518.34375 262.6875 1548.96875 273.546875 1570.375 295.34375 c 0 + 1591.78125 317.0625 1602.5625 347.140625 1602.5625 385.578125 c 1 + 1602.5625 389.40625 1602.5625 393.234375 1602.5625 397.0625 c 1 + 1602.5625 435.5 1591.78125 465.578125 1570.375 487.296875 c 0 + 1548.96875 509.09375 1518.34375 519.953125 1478.734375 519.953125 c 0x9f80 + 1449.90625 519.953125 1426.859375 514.484375 1409.59375 503.625 c 0 + 1392.328125 492.765625 1377.5625 480.578125 1365.453125 467.140625 c 1 + 1335.6875 471.307617188 1305.921875 475.473632812 1276.15625 479.640625 c 1 + 1284.46386719 604.120117188 1292.77050781 728.598632812 1301.078125 853.078125 c 1 + 1427.796875 853.078125 1554.515625 853.078125 1681.234375 853.078125 c 1 + 1681.234375 821.723632812 1681.234375 790.370117188 1681.234375 759.015625 c 1 +EndSplineSet +EndChar + +StartChar: uniE12B +Encoding: 57643 57643 44 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -253.33 91.1719<492.095 694.045 1082.26 1420.23> 60.5762 92.1094<524.289 683.663> 348.545 91.1719<503.64 691.332 1086.66 1259.04> 612.686 91.1719<511.882 706.951 1072.57 1410.54> 961.123 89.2969<545.516 710.154> 1200.19 94.0625<518.545 818.82 1064.99 1253.84> +VStem: 714.289 114.219<179.923 323.321> 727.727 112.344<-131.94 32.8528> 740.148 113.281<737.538 927.443> 965.227 455<-241.846 -149.658 624.17 716.357> 1284.91 115.156<124.902 316.965 1004.13 1182.98> +DStem2: 471.32 795.029 392.57 732.686 0.582707 -0.812682<4.77747 136.754> 413.742 920.811 503.977 963.076 0.0726244 0.997359<48.7072 286.444> 955.461 727.842 1072.57 716.357 0.752577 0.658505<80.5713 451.637> 965.227 -138.174 1082.26 -149.658 0.752577 0.658505<80.5125 451.578> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -253.33 91.1719<492.095 694.045 1082.26 1420.23> 60.5762 92.1094<524.289 683.663> 348.545 91.1719<503.64 691.332 1086.66 1259.04> 612.686 91.1719<511.882 706.951 1072.57 1410.54> 961.123 89.2969<545.516 710.154> 1200.19 94.0625<518.545 818.82 1064.99 1253.84> +VStem: 714.289 114.219<179.923 323.321> 727.727 112.344<-131.94 32.8528> 740.148 113.281<737.538 927.443> 965.227 455<-241.846 -149.658 624.17 716.357> 1284.91 115.156<124.902 316.965 1004.13 1182.98> +DStem2: 471.32 795.029 392.57 732.686 0.582707 -0.812682<4.77747 136.754> 413.742 920.811 503.977 963.076 0.0726244 0.997359<48.7072 286.444> 955.461 727.842 1072.57 716.357 0.752577 0.658505<80.5713 451.637> 965.227 -138.174 1082.26 -149.658 0.752577 0.658505<80.5125 451.578> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +592.4140625 152.685546875 m 1xfd + 633.9765625 152.685546875 664.7578125 161.513671875 684.6015625 179.091796875 c 0 + 704.4453125 196.748046875 714.2890625 219.248046875 714.2890625 246.826171875 c 1 + 714.2890625 249.065429688 714.2890625 251.305664062 714.2890625 253.544921875 c 1 + 714.2890625 284.248046875 704.7578125 307.763671875 685.5390625 324.091796875 c 0 + 666.3203125 340.419921875 640.3828125 348.544921875 607.7265625 348.544921875 c 0 + 575.6953125 348.544921875 548.5078125 341.357421875 526.1640625 326.982421875 c 0 + 503.8203125 312.529296875 484.9140625 292.529296875 469.6015625 266.982421875 c 1 + 445.590820312 287.763671875 421.581054688 308.544921875 397.5703125 329.326171875 c 1 + 407.7265625 344.091796875 419.2890625 358.154296875 432.1015625 371.591796875 c 0 + 444.9140625 385.029296875 459.9140625 396.748046875 477.2578125 406.669921875 c 0 + 494.4453125 416.591796875 513.9765625 424.560546875 535.6953125 430.654296875 c 0 + 557.5703125 436.748046875 582.4140625 439.716796875 610.6953125 439.716796875 c 0 + 641.9453125 439.716796875 671.1640625 435.888671875 698.0390625 428.232421875 c 0 + 724.9140625 420.576171875 747.8828125 409.169921875 767.1015625 394.169921875 c 0 + 786.3203125 379.091796875 801.3203125 360.888671875 812.2578125 339.404296875 c 0 + 823.1953125 317.998046875 828.5078125 293.857421875 828.5078125 266.982421875 c 0xfe + 828.5078125 245.810546875 825.2265625 226.669921875 818.5078125 209.326171875 c 0 + 811.7890625 192.060546875 802.4140625 176.904296875 790.6953125 163.779296875 c 0 + 778.8203125 150.654296875 765.0703125 139.951171875 749.4453125 131.591796875 c 0 + 733.6640625 123.310546875 717.2578125 117.216796875 699.9140625 113.388671875 c 1 + 699.9140625 111.774414062 699.9140625 110.159179688 699.9140625 108.544921875 c 1 + 719.1328125 104.716796875 737.2578125 98.466796875 754.1328125 89.873046875 c 0 + 771.1640625 81.201171875 786.0078125 70.029296875 798.8203125 56.201171875 c 0 + 811.6328125 42.451171875 821.6328125 26.123046875 828.9765625 7.294921875 c 0 + 836.4765625 -11.611328125 840.0703125 -33.173828125 840.0703125 -57.548828125 c 0 + 840.0703125 -87.001953125 834.2890625 -113.720703125 822.8828125 -137.705078125 c 0 + 811.3203125 -161.689453125 795.0703125 -182.314453125 774.2890625 -199.580078125 c 0 + 753.5078125 -216.923828125 728.3515625 -230.126953125 698.9765625 -239.423828125 c 0 + 669.6015625 -248.720703125 636.9453125 -253.330078125 601.0078125 -253.330078125 c 0 + 569.7578125 -253.330078125 542.1015625 -249.970703125 518.5078125 -243.251953125 c 0 + 494.7578125 -236.533203125 473.8203125 -227.626953125 455.5390625 -216.376953125 c 0 + 437.4140625 -205.205078125 421.3203125 -192.392578125 407.5703125 -178.017578125 c 0 + 393.8203125 -163.642578125 381.7890625 -148.720703125 371.6328125 -133.330078125 c 1 + 398.1953125 -112.548828125 424.7578125 -91.767578125 451.3203125 -70.986328125 c 1 + 459.6015625 -84.423828125 468.3515625 -96.689453125 477.7265625 -107.939453125 c 0 + 486.9453125 -119.111328125 497.5703125 -128.720703125 509.4453125 -136.689453125 c 0 + 521.1640625 -144.736328125 534.6015625 -150.986328125 549.7578125 -155.439453125 c 0 + 564.7578125 -159.892578125 581.7890625 -162.158203125 601.0078125 -162.158203125 c 0 + 641.9453125 -162.158203125 673.3515625 -152.392578125 695.0703125 -132.861328125 c 0 + 716.9453125 -113.330078125 727.7265625 -86.298828125 727.7265625 -51.767578125 c 1 + 727.7265625 -49.5283203125 727.7265625 -47.2880859375 727.7265625 -45.048828125 c 1 + 727.7265625 -10.517578125 716.3203125 15.732421875 693.1953125 33.701171875 c 0 + 670.2265625 51.591796875 637.5703125 60.576171875 595.2265625 60.576171875 c 1 + 571.581054688 60.576171875 547.934570312 60.576171875 524.2890625 60.576171875 c 1 + 524.2890625 91.279296875 524.2890625 121.982421875 524.2890625 152.685546875 c 1 + 546.997070312 152.685546875 569.706054688 152.685546875 592.4140625 152.685546875 c 1xfd +1420.2265625 -241.845703125 m 1xfc40 + 1268.55957031 -241.845703125 1116.89355469 -241.845703125 965.2265625 -241.845703125 c 1 + 965.2265625 -207.288085938 965.2265625 -172.731445312 965.2265625 -138.173828125 c 1xfc40 + 1036.58105469 -74.501953125 1107.93457031 -10.830078125 1179.2890625 52.841796875 c 1 + 1213.1953125 83.623046875 1239.2890625 112.841796875 1257.5703125 140.732421875 c 0 + 1275.6953125 168.544921875 1284.9140625 197.841796875 1284.9140625 228.544921875 c 1 + 1284.9140625 232.711914062 1284.9140625 236.877929688 1284.9140625 241.044921875 c 1 + 1284.9140625 273.701171875 1275.0703125 299.248046875 1255.5390625 317.841796875 c 0 + 1236.1640625 336.357421875 1209.7578125 345.654296875 1176.4765625 345.654296875 c 0 + 1157.8828125 345.654296875 1141.6328125 342.919921875 1127.8828125 337.529296875 c 0 + 1114.1328125 332.060546875 1102.1015625 324.560546875 1091.9453125 314.951171875 c 0 + 1081.6328125 305.341796875 1073.1953125 294.169921875 1066.4765625 281.357421875 c 0 + 1059.7578125 268.544921875 1054.4453125 254.794921875 1050.6953125 240.107421875 c 1 + 1018.9765625 252.268554688 987.2578125 264.430664062 955.5390625 276.591796875 c 1 + 962.7265625 297.685546875 972.2578125 317.998046875 984.4453125 337.529296875 c 0 + 996.6328125 357.060546875 1011.9453125 374.482421875 1030.5390625 389.873046875 c 0 + 1048.9765625 405.185546875 1071.0078125 417.373046875 1096.3203125 426.279296875 c 0 + 1121.4765625 435.263671875 1151.1640625 439.716796875 1185.0703125 439.716796875 c 256 + 1218.9765625 439.716796875 1249.4453125 434.794921875 1276.3203125 424.873046875 c 0 + 1303.1953125 414.951171875 1325.6953125 401.201171875 1343.9765625 383.623046875 c 0 + 1362.1015625 365.966796875 1376.1640625 345.029296875 1385.6953125 320.732421875 c 0 + 1395.2265625 296.357421875 1400.0703125 269.873046875 1400.0703125 241.044921875 c 0xfc20 + 1400.0703125 214.169921875 1396.0078125 189.169921875 1387.5703125 166.123046875 c 0 + 1379.2890625 143.076171875 1367.7265625 121.357421875 1353.0390625 100.888671875 c 0 + 1338.3515625 80.419921875 1321.1640625 60.888671875 1301.6328125 42.294921875 c 0 + 1282.1015625 23.779296875 1261.4765625 4.873046875 1239.7578125 -14.345703125 c 1 + 1187.2578125 -59.4501953125 1134.7578125 -104.553710938 1082.2578125 -149.658203125 c 1 + 1194.9140625 -149.658203125 1307.5703125 -149.658203125 1420.2265625 -149.658203125 c 1 + 1420.2265625 -180.387695312 1420.2265625 -211.116210938 1420.2265625 -241.845703125 c 1xfc40 +818.8203125 1200.18554688 m 1 + 719.627929688 1200.18554688 620.434570312 1200.18554688 521.2421875 1200.18554688 c 1 + 515.487304688 1121.14941406 509.731445312 1042.11230469 503.9765625 963.076171875 c 1 + 506.215820312 963.076171875 508.456054688 963.076171875 510.6953125 963.076171875 c 1 + 518.3515625 976.513671875 526.3984375 988.466796875 534.6796875 999.013671875 c 0 + 543.0390625 1009.63867188 552.5703125 1018.70117188 563.5078125 1026.43554688 c 0 + 574.3671875 1034.09179688 586.8671875 1040.02929688 600.9296875 1044.16992188 c 0 + 614.9921875 1048.31054688 631.6328125 1050.41992188 650.8515625 1050.41992188 c 0 + 679.6796875 1050.41992188 706.3984375 1045.57617188 731.0078125 1036.04492188 c 0 + 755.6171875 1026.43554688 777.1015625 1012.68554688 795.3046875 994.716796875 c 0 + 813.5859375 976.826171875 827.8046875 954.873046875 838.0390625 928.935546875 c 0 + 848.2734375 903.076171875 853.4296875 873.779296875 853.4296875 841.123046875 c 0 + 853.4296875 807.841796875 848.1171875 777.138671875 837.5703125 748.935546875 c 0 + 827.0234375 720.810546875 811.4765625 696.669921875 791.0078125 676.513671875 c 0 + 770.5390625 656.357421875 745.3828125 640.654296875 715.6171875 629.482421875 c 0 + 685.8515625 618.232421875 652.1015625 612.685546875 614.3671875 612.685546875 c 0 + 584.2890625 612.685546875 557.7265625 616.044921875 534.6796875 622.763671875 c 0 + 511.6328125 629.482421875 491.3203125 638.388671875 473.7421875 649.638671875 c 0 + 456.0859375 660.810546875 440.7734375 673.623046875 427.6484375 687.998046875 c 0 + 414.5234375 702.373046875 402.8828125 717.294921875 392.5703125 732.685546875 c 1 + 418.8203125 753.466796875 445.0703125 774.248046875 471.3203125 795.029296875 c 1 + 479.6796875 781.591796875 488.2734375 769.482421875 497.2578125 758.544921875 c 0 + 506.2421875 747.685546875 516.4765625 738.076171875 527.9609375 729.794921875 c 0 + 539.4453125 721.435546875 552.4140625 715.029296875 566.8671875 710.576171875 c 0 + 581.2421875 706.123046875 597.7265625 703.857421875 616.3203125 703.857421875 c 0 + 655.9296875 703.857421875 686.5546875 714.716796875 707.9609375 736.513671875 c 0 + 729.3671875 758.232421875 740.1484375 788.310546875 740.1484375 826.748046875 c 1 + 740.1484375 830.576171875 740.1484375 834.404296875 740.1484375 838.232421875 c 1xfc80 + 740.1484375 876.669921875 729.3671875 906.748046875 707.9609375 928.466796875 c 0 + 686.5546875 950.263671875 655.9296875 961.123046875 616.3203125 961.123046875 c 0 + 587.4921875 961.123046875 564.4453125 955.654296875 547.1796875 944.794921875 c 0 + 529.9140625 933.935546875 515.1484375 921.748046875 503.0390625 908.310546875 c 1 + 473.2734375 912.477539062 443.5078125 916.643554688 413.7421875 920.810546875 c 1 + 422.049804688 1045.29003906 430.356445312 1169.76855469 438.6640625 1294.24804688 c 1 + 565.3828125 1294.24804688 692.1015625 1294.24804688 818.8203125 1294.24804688 c 1 + 818.8203125 1262.89355469 818.8203125 1231.54003906 818.8203125 1200.18554688 c 1 +1410.5390625 624.169921875 m 1 + 1258.84667969 624.169921875 1107.15332031 624.169921875 955.4609375 624.169921875 c 1 + 955.4609375 658.727539062 955.4609375 693.284179688 955.4609375 727.841796875 c 1 + 1026.84082031 791.513671875 1098.22167969 855.185546875 1169.6015625 918.857421875 c 1 + 1203.5078125 949.638671875 1229.6015625 978.857421875 1247.8046875 1006.74804688 c 0 + 1266.0078125 1034.56054688 1275.1484375 1063.85742188 1275.1484375 1094.56054688 c 1 + 1275.1484375 1098.72753906 1275.1484375 1102.89355469 1275.1484375 1107.06054688 c 1 + 1275.1484375 1139.71679688 1265.3828125 1165.26367188 1245.8515625 1183.85742188 c 0 + 1226.3984375 1202.37304688 1199.9921875 1211.66992188 1166.7109375 1211.66992188 c 0 + 1148.1171875 1211.66992188 1131.9453125 1208.93554688 1118.1953125 1203.54492188 c 0 + 1104.4453125 1198.07617188 1092.4140625 1190.57617188 1082.1796875 1180.96679688 c 0 + 1071.9453125 1171.35742188 1063.5078125 1160.18554688 1056.7890625 1147.37304688 c 0 + 1050.0703125 1134.56054688 1044.7578125 1120.81054688 1040.9296875 1106.12304688 c 1 + 1009.23730469 1118.28417969 977.543945312 1130.44628906 945.8515625 1142.60742188 c 1 + 952.9609375 1163.70117188 962.4921875 1184.01367188 974.6796875 1203.54492188 c 0 + 986.8671875 1223.07617188 1002.1796875 1240.49804688 1020.7734375 1255.88867188 c 0 + 1039.2890625 1271.20117188 1061.2421875 1283.38867188 1086.5546875 1292.29492188 c 0 + 1111.7890625 1301.27929688 1141.3984375 1305.73242188 1175.3046875 1305.73242188 c 256 + 1209.2109375 1305.73242188 1239.6796875 1300.81054688 1266.5546875 1290.88867188 c 0 + 1293.4296875 1280.96679688 1315.9296875 1267.21679688 1334.2109375 1249.63867188 c 0 + 1352.4140625 1231.98242188 1366.3984375 1211.04492188 1375.9296875 1186.74804688 c 0 + 1385.5390625 1162.37304688 1390.3828125 1135.88867188 1390.3828125 1107.06054688 c 0 + 1390.3828125 1080.18554688 1386.2421875 1055.18554688 1377.8828125 1032.13867188 c 0 + 1369.6015625 1009.09179688 1358.0390625 987.373046875 1343.3515625 966.904296875 c 0 + 1328.5859375 946.435546875 1311.4765625 926.904296875 1291.9453125 908.310546875 c 0 + 1272.4140625 889.794921875 1251.7890625 870.888671875 1230.0703125 851.669921875 c 1 + 1177.5703125 806.565429688 1125.0703125 761.461914062 1072.5703125 716.357421875 c 1 + 1185.2265625 716.357421875 1297.8828125 716.357421875 1410.5390625 716.357421875 c 1 + 1410.5390625 685.627929688 1410.5390625 654.899414062 1410.5390625 624.169921875 c 1 +EndSplineSet +EndChar + +StartChar: uniE12C +Encoding: 57644 57644 45 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 171.516 85.3906<666.317 841.234> 183 108.516<1191.66 1214.71 1540.1 1563.15> 519.953 85.4688<691.227 840.765> 750.344 102.734<1364.48 1386.59> 763.781 89.2969<34.4375 211.938 313.656 491.312> +VStem: 211.938 101.719<183 763.781> 537.406 107.5<277.176 500.303> 861.938 107.5<277.46 499.161> 993.344 103.75<749.328 853.078> 1315.06 123.75<751.086 853.078> 1657.72 99.8438<753.234 853.078> +DStem2: 1097.09 853.078 993.344 853.078 0.190374 -0.981712<0 567.853> 1209.44 291.516 1348.66 595.812 0.136058 0.990701<4.46299 473.288> 1524.28 445.109 1381.31 750.344 0.136058 -0.990701<-318.35 155.035> 1578.97 446.984 1610.69 183 0.190374 0.981712<-154.194 413.659> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 171.516 85.3906<666.317 841.234> 183 108.516<1191.66 1214.71 1540.1 1563.15> 519.953 85.4688<691.227 840.765> 750.344 102.734<1364.48 1386.59> 763.781 89.2969<34.4375 211.938 313.656 491.312> +VStem: 211.938 101.719<183 763.781> 537.406 107.5<277.176 500.303> 861.938 107.5<277.46 499.161> 993.344 103.75<749.328 853.078> 1315.06 123.75<751.086 853.078> 1657.72 99.8438<753.234 853.078> +DStem2: 1097.09 853.078 993.344 853.078 0.190374 -0.981712<0 567.853> 1209.44 291.516 1348.66 595.812 0.136058 0.990701<4.46299 473.288> 1524.28 445.109 1381.31 750.344 0.136058 -0.990701<-318.35 155.035> 1578.97 446.984 1610.69 183 0.190374 0.981712<-154.194 413.659> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +313.65625 763.78125 m 1x6fe0 + 313.65625 570.1875 313.65625 376.59375 313.65625 183 c 1 + 279.75 183 245.84375 183 211.9375 183 c 1 + 211.9375 376.59375 211.9375 570.1875 211.9375 763.78125 c 1 + 152.770507812 763.78125 93.6044921875 763.78125 34.4375 763.78125 c 1 + 34.4375 793.546875 34.4375 823.3125 34.4375 853.078125 c 1 + 186.729492188 853.078125 339.020507812 853.078125 491.3125 853.078125 c 1 + 491.3125 823.3125 491.3125 793.546875 491.3125 763.78125 c 1 + 432.09375 763.78125 372.875 763.78125 313.65625 763.78125 c 1x6fe0 +753.34375 171.515625 m 0xafe0 + 681.78125 171.515625 627.875 193.546875 591.625 237.6875 c 0 + 555.53125 281.90625 537.40625 346.203125 537.40625 430.65625 c 0 + 537.40625 470.96875 542.5625 511.28125 552.71875 551.671875 c 0 + 563.03125 591.984375 577.71875 630.5 596.9375 667.296875 c 0 + 616.15625 704.09375 638.96875 738.546875 665.53125 770.5 c 0 + 692.09375 802.53125 721.78125 830.03125 754.4375 853.078125 c 1 + 800.166992188 853.078125 845.895507812 853.078125 891.625 853.078125 c 1 + 852.5625 823 818.96875 794.328125 790.84375 767.140625 c 0 + 762.71875 739.953125 738.8125 712.921875 719.28125 686.046875 c 0 + 699.75 659.171875 683.96875 631.515625 671.78125 603 c 0 + 659.59375 574.484375 650.375 543.625 643.96875 510.34375 c 1 + 648.135742188 510.34375 652.301757812 510.34375 656.46875 510.34375 c 1 + 667.40625 541.046875 684.59375 564.5625 708.34375 580.890625 c 0 + 731.9375 597.21875 760.0625 605.421875 792.71875 605.421875 c 0 + 847.09375 605.421875 890.21875 587.765625 921.9375 552.609375 c 0 + 953.5 517.375 969.4375 465.578125 969.4375 397.0625 c 0 + 969.4375 326.046875 951 270.65625 914.28125 230.96875 c 0 + 877.40625 191.28125 823.8125 171.515625 753.34375 171.515625 c 0xafe0 +753.34375 256.90625 m 256 + 825.6875 256.90625 861.9375 296.59375 861.9375 375.96875 c 1 + 861.9375 384.276367188 861.9375 392.583007812 861.9375 400.890625 c 1 + 861.9375 480.265625 825.6875 519.953125 753.34375 519.953125 c 256 + 681.15625 519.953125 644.90625 480.265625 644.90625 400.890625 c 1 + 644.90625 392.583007812 644.90625 384.276367188 644.90625 375.96875 c 1 + 644.90625 296.59375 681.15625 256.90625 753.34375 256.90625 c 256 +1135.53125 183 m 1x77e0 + 1088.13574219 406.359375 1040.73925781 629.71875 993.34375 853.078125 c 1 + 1027.92675781 853.078125 1062.51074219 853.078125 1097.09375 853.078125 c 1 + 1123.34375 717.713867188 1149.59375 582.348632812 1175.84375 446.984375 c 1 + 1182.875 395.161132812 1189.90625 343.338867188 1196.9375 291.515625 c 1 + 1201.10449219 291.515625 1205.27050781 291.515625 1209.4375 291.515625 c 1 + 1216.46875 342.713867188 1223.5 393.911132812 1230.53125 445.109375 c 1 + 1258.70800781 581.098632812 1286.88574219 717.088867188 1315.0625 853.078125 c 1 + 1356.3125 853.078125 1397.5625 853.078125 1438.8125 853.078125 c 1 + 1467.30175781 717.088867188 1495.79199219 581.098632812 1524.28125 445.109375 c 1 + 1531.3125 393.911132812 1538.34375 342.713867188 1545.375 291.515625 c 1 + 1549.54199219 291.515625 1553.70800781 291.515625 1557.875 291.515625 c 1 + 1564.90625 343.338867188 1571.9375 395.161132812 1578.96875 446.984375 c 1 + 1605.21875 582.348632812 1631.46875 717.713867188 1657.71875 853.078125 c 1 + 1691 853.078125 1724.28125 853.078125 1757.5625 853.078125 c 1x6fe0 + 1708.60449219 629.71875 1659.64550781 406.359375 1610.6875 183 c 1 + 1570.0625 183 1529.4375 183 1488.8125 183 c 1 + 1460.01074219 320.604492188 1431.20800781 458.208007812 1402.40625 595.8125 c 1 + 1395.375 647.323242188 1388.34375 698.833007812 1381.3125 750.34375 c 1 + 1377.45800781 750.34375 1373.60449219 750.34375 1369.75 750.34375 c 1 + 1362.71875 698.833007812 1355.6875 647.323242188 1348.65625 595.8125 c 1 + 1318.55175781 458.208007812 1288.44824219 320.604492188 1258.34375 183 c 1 + 1217.40625 183 1176.46875 183 1135.53125 183 c 1x77e0 +EndSplineSet +EndChar + +StartChar: uniE12D +Encoding: 57645 57645 46 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 171.516 92.1094<829.327 1005.2 1389.33 1565.2> 772.453 92.1094<829.327 1005.2 1389.33 1565.2> +VStem: 71.8594 108.438<183 434.904 513.234 853.078> 460.609 126.719<726.359 853.078> 476 130.547<183 313.547> 674.438 115.156<303.546 732.443> 1044.98 115.156<302.743 733.336> 1234.44 115.156<303.546 732.443> 1604.98 115.156<302.743 733.336> +DStem2: 348.344 570.812 272.484 495.969 0.54515 -0.838338<21.3896 394.71> 280.141 635.188 348.344 570.812 0.660468 0.750854<-154.984 -109.59 -12.7165 282.798> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 171.516 92.1094<829.327 1005.2 1389.33 1565.2> 772.453 92.1094<829.327 1005.2 1389.33 1565.2> +VStem: 71.8594 108.438<183 434.904 513.234 853.078> 460.609 126.719<726.359 853.078> 476 130.547<183 313.547> 674.438 115.156<303.546 732.443> 1044.98 115.156<302.743 733.336> 1234.44 115.156<303.546 732.443> 1604.98 115.156<302.743 733.336> +DStem2: 348.344 570.812 272.484 495.969 0.54515 -0.838338<21.3896 394.71> 280.141 635.188 348.344 570.812 0.660468 0.750854<-154.984 -109.59 -12.7165 282.798> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +272.484375 495.96875 m 1xef80 + 241.754882812 460.760742188 211.026367188 425.551757812 180.296875 390.34375 c 1 + 180.296875 321.229492188 180.296875 252.114257812 180.296875 183 c 1 + 144.151367188 183 108.004882812 183 71.859375 183 c 1 + 71.859375 406.359375 71.859375 629.71875 71.859375 853.078125 c 1 + 108.004882812 853.078125 144.151367188 853.078125 180.296875 853.078125 c 1 + 180.296875 739.796875 180.296875 626.515625 180.296875 513.234375 c 1 + 181.573242188 513.234375 182.848632812 513.234375 184.125 513.234375 c 1 + 216.129882812 553.885742188 248.135742188 594.536132812 280.140625 635.1875 c 1 + 340.296875 707.817382812 400.453125 780.448242188 460.609375 853.078125 c 1 + 502.848632812 853.078125 545.088867188 853.078125 587.328125 853.078125 c 1xf780 + 507.666992188 758.989257812 428.004882812 664.901367188 348.34375 570.8125 c 1 + 434.411132812 441.541992188 520.479492188 312.270507812 606.546875 183 c 1 + 563.03125 183 519.515625 183 476 183 c 1 + 408.161132812 287.323242188 340.323242188 391.645507812 272.484375 495.96875 c 1xef80 +917.25 171.515625 m 0 + 875.6875 171.515625 839.515625 179.328125 808.8125 195.03125 c 0 + 778.109375 210.65625 752.796875 233.234375 732.953125 262.6875 c 0 + 713.109375 292.140625 698.421875 328.3125 688.8125 371.125 c 0 + 679.203125 414.015625 674.4375 463 674.4375 518.078125 c 0 + 674.4375 572.453125 679.203125 621.203125 688.8125 664.40625 c 0 + 698.421875 707.609375 713.109375 743.9375 732.953125 773.390625 c 0 + 752.796875 802.84375 778.109375 825.421875 808.8125 841.046875 c 0 + 839.515625 856.75 875.6875 864.5625 917.25 864.5625 c 0 + 1000.453125 864.5625 1061.78125 834.171875 1101.15625 773.390625 c 0 + 1140.453125 712.609375 1160.140625 627.453125 1160.140625 518.078125 c 256 + 1160.140625 408.625 1140.453125 323.46875 1101.15625 262.6875 c 0 + 1061.78125 201.90625 1000.453125 171.515625 917.25 171.515625 c 0 +917.25 263.625 m 256 + 940.296875 263.625 959.984375 268.3125 976.3125 277.53125 c 0 + 992.640625 286.828125 1005.921875 300.109375 1016.15625 317.375 c 0 + 1026.390625 334.71875 1033.734375 355.34375 1038.265625 379.328125 c 0 + 1042.71875 403.3125 1044.984375 430.03125 1044.984375 459.484375 c 1 + 1044.984375 498.520507812 1044.984375 537.557617188 1044.984375 576.59375 c 1 + 1044.984375 606.046875 1042.71875 632.765625 1038.265625 656.75 c 0 + 1033.734375 680.734375 1026.390625 701.4375 1016.15625 718.703125 c 0 + 1005.921875 735.96875 992.640625 749.25 976.3125 758.546875 c 0 + 959.984375 767.765625 940.296875 772.453125 917.25 772.453125 c 256 + 894.203125 772.453125 874.59375 767.765625 858.265625 758.546875 c 0 + 841.9375 749.25 828.65625 735.96875 818.421875 718.703125 c 0 + 808.1875 701.4375 800.765625 680.734375 796.3125 656.75 c 0 + 791.859375 632.765625 789.59375 606.046875 789.59375 576.59375 c 1 + 789.59375 537.557617188 789.59375 498.520507812 789.59375 459.484375 c 1 + 789.59375 430.03125 791.859375 403.3125 796.3125 379.328125 c 0 + 800.765625 355.34375 808.1875 334.71875 818.421875 317.375 c 0 + 828.65625 300.109375 841.9375 286.828125 858.265625 277.53125 c 0 + 874.59375 268.3125 894.203125 263.625 917.25 263.625 c 256 +1477.25 171.515625 m 0 + 1435.6875 171.515625 1399.515625 179.328125 1368.8125 195.03125 c 0 + 1338.109375 210.65625 1312.796875 233.234375 1292.953125 262.6875 c 0 + 1273.109375 292.140625 1258.421875 328.3125 1248.8125 371.125 c 0 + 1239.203125 414.015625 1234.4375 463 1234.4375 518.078125 c 0 + 1234.4375 572.453125 1239.203125 621.203125 1248.8125 664.40625 c 0 + 1258.421875 707.609375 1273.109375 743.9375 1292.953125 773.390625 c 0 + 1312.796875 802.84375 1338.109375 825.421875 1368.8125 841.046875 c 0 + 1399.515625 856.75 1435.6875 864.5625 1477.25 864.5625 c 0 + 1560.453125 864.5625 1621.78125 834.171875 1661.15625 773.390625 c 0 + 1700.453125 712.609375 1720.140625 627.453125 1720.140625 518.078125 c 256 + 1720.140625 408.625 1700.453125 323.46875 1661.15625 262.6875 c 0 + 1621.78125 201.90625 1560.453125 171.515625 1477.25 171.515625 c 0 +1477.25 263.625 m 256 + 1500.296875 263.625 1519.984375 268.3125 1536.3125 277.53125 c 0 + 1552.640625 286.828125 1565.921875 300.109375 1576.15625 317.375 c 0 + 1586.390625 334.71875 1593.734375 355.34375 1598.265625 379.328125 c 0 + 1602.71875 403.3125 1604.984375 430.03125 1604.984375 459.484375 c 1 + 1604.984375 498.520507812 1604.984375 537.557617188 1604.984375 576.59375 c 1 + 1604.984375 606.046875 1602.71875 632.765625 1598.265625 656.75 c 0 + 1593.734375 680.734375 1586.390625 701.4375 1576.15625 718.703125 c 0 + 1565.921875 735.96875 1552.640625 749.25 1536.3125 758.546875 c 0 + 1519.984375 767.765625 1500.296875 772.453125 1477.25 772.453125 c 256 + 1454.203125 772.453125 1434.59375 767.765625 1418.265625 758.546875 c 0 + 1401.9375 749.25 1388.65625 735.96875 1378.421875 718.703125 c 0 + 1368.1875 701.4375 1360.765625 680.734375 1356.3125 656.75 c 0 + 1351.859375 632.765625 1349.59375 606.046875 1349.59375 576.59375 c 1 + 1349.59375 537.557617188 1349.59375 498.520507812 1349.59375 459.484375 c 1 + 1349.59375 430.03125 1351.859375 403.3125 1356.3125 379.328125 c 0 + 1360.765625 355.34375 1368.1875 334.71875 1378.421875 317.375 c 0 + 1388.65625 300.109375 1401.9375 286.828125 1418.265625 277.53125 c 0 + 1434.59375 268.3125 1454.203125 263.625 1477.25 263.625 c 256 +EndSplineSet +EndChar + +StartChar: uniE12E +Encoding: 57646 57646 47 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -241.846 92.1875<499.047 837.016 1068.8 1262.38> 345.654 94.0625<500.878 676.405 1076.04 1254.37> 612.686 96.9531<472.493 704.799> 805.576 93.125<1098.42 1296.16> 888.154 93.125<608.188 746.391> 1194.4 99.8438<1183.26 1212.14> 1208.78 96.9531<472.767 701.484> +VStem: 295.219 116.172<772.128 1146.02> 701.547 115.312<124.447 316.965> 756 95.0781<624.17 725.967 757.673 888.154> 903.5 110.391<624.17 734.561> 922.797 115.156<-121.3 307.598> 1293.27 115.156<-122.103 308.491> 1383.5 113.281<624.17 737.451> +DStem2: 381.859 -138.174 499.047 -149.658 0.752577 0.658505<80.6301 451.695> 903.5 624.17 1013.89 624.17 0.303274 0.952903<33.4786 224.111 320.716 631.896> 1268.34 1294.25 1200.14 1194.4 0.306115 -0.951995<74.1727 385.072> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -241.846 92.1875<499.047 837.016 1068.8 1262.38> 345.654 94.0625<500.878 676.405 1076.04 1254.37> 612.686 96.9531<472.493 704.799> 805.576 93.125<1098.42 1296.16> 888.154 93.125<608.188 746.391> 1194.4 99.8438<1183.26 1212.14> 1208.78 96.9531<472.767 701.484> +VStem: 295.219 116.172<772.128 1146.02> 701.547 115.312<124.447 316.965> 756 95.0781<624.17 725.967 757.673 888.154> 903.5 110.391<624.17 734.561> 922.797 115.156<-121.3 307.598> 1293.27 115.156<-122.103 308.491> 1383.5 113.281<624.17 737.451> +DStem2: 381.859 -138.174 499.047 -149.658 0.752577 0.658505<80.6301 451.695> 903.5 624.17 1013.89 624.17 0.303274 0.952903<33.4786 224.111 320.716 631.896> 1268.34 1294.25 1200.14 1194.4 0.306115 -0.951995<74.1727 385.072> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +837.015625 -241.845703125 m 1xe180 + 685.296875 -241.845703125 533.578125 -241.845703125 381.859375 -241.845703125 c 1 + 381.859375 -207.288085938 381.859375 -172.731445312 381.859375 -138.173828125 c 1 + 453.265625 -74.501953125 524.671875 -10.830078125 596.078125 52.841796875 c 1 + 629.984375 83.623046875 656.078125 112.841796875 674.203125 140.732421875 c 0 + 692.484375 168.544921875 701.546875 197.841796875 701.546875 228.544921875 c 1 + 701.546875 232.711914062 701.546875 236.877929688 701.546875 241.044921875 c 1 + 701.546875 273.701171875 691.859375 299.248046875 672.328125 317.841796875 c 0 + 652.796875 336.357421875 626.390625 345.654296875 593.109375 345.654296875 c 0 + 574.515625 345.654296875 558.421875 342.919921875 544.671875 337.529296875 c 0 + 530.921875 332.060546875 518.890625 324.560546875 508.578125 314.951171875 c 0 + 498.421875 305.341796875 489.984375 294.169921875 483.265625 281.357421875 c 0 + 476.546875 268.544921875 471.234375 254.794921875 467.328125 240.107421875 c 1 + 435.661132812 252.268554688 403.995117188 264.430664062 372.328125 276.591796875 c 1 + 379.359375 297.685546875 388.890625 317.998046875 401.078125 337.529296875 c 0 + 413.265625 357.060546875 428.578125 374.482421875 447.171875 389.873046875 c 0 + 465.765625 405.185546875 487.640625 417.373046875 512.953125 426.279296875 c 0 + 538.265625 435.263671875 567.796875 439.716796875 601.703125 439.716796875 c 256 + 635.609375 439.716796875 666.078125 434.794921875 692.953125 424.873046875 c 0 + 719.828125 414.951171875 742.328125 401.201171875 760.609375 383.623046875 c 0 + 778.890625 365.966796875 792.796875 345.029296875 802.328125 320.732421875 c 0 + 812.015625 296.357421875 816.859375 269.873046875 816.859375 241.044921875 c 0 + 816.859375 214.169921875 812.640625 189.169921875 804.359375 166.123046875 c 0 + 796.078125 143.076171875 784.515625 121.357421875 769.828125 100.888671875 c 0 + 754.984375 80.419921875 737.953125 60.888671875 718.421875 42.294921875 c 0 + 698.890625 23.779296875 678.265625 4.873046875 656.546875 -14.345703125 c 1 + 604.046875 -59.4501953125 551.546875 -104.553710938 499.046875 -149.658203125 c 1 + 611.703125 -149.658203125 724.359375 -149.658203125 837.015625 -149.658203125 c 1 + 837.015625 -180.387695312 837.015625 -211.116210938 837.015625 -241.845703125 c 1xe180 +1165.609375 -253.330078125 m 0 + 1124.046875 -253.330078125 1087.796875 -245.517578125 1057.171875 -229.814453125 c 0 + 1026.390625 -214.189453125 1001.078125 -191.611328125 981.234375 -162.158203125 c 0 + 961.390625 -132.705078125 946.703125 -96.533203125 937.171875 -53.720703125 c 0 + 927.484375 -10.830078125 922.796875 38.154296875 922.796875 93.232421875 c 0 + 922.796875 147.607421875 927.484375 196.357421875 937.171875 239.560546875 c 0 + 946.703125 282.763671875 961.390625 319.091796875 981.234375 348.544921875 c 0 + 1001.078125 377.998046875 1026.390625 400.576171875 1057.171875 416.201171875 c 0 + 1087.796875 431.904296875 1124.046875 439.716796875 1165.609375 439.716796875 c 0 + 1248.734375 439.716796875 1310.140625 409.326171875 1349.515625 348.544921875 c 0 + 1388.734375 287.763671875 1408.421875 202.607421875 1408.421875 93.232421875 c 256xe118 + 1408.421875 -16.220703125 1388.734375 -101.376953125 1349.515625 -162.158203125 c 0 + 1310.140625 -222.939453125 1248.734375 -253.330078125 1165.609375 -253.330078125 c 0 +1165.609375 -161.220703125 m 256 + 1188.578125 -161.220703125 1208.265625 -156.533203125 1224.671875 -147.314453125 c 0 + 1240.921875 -138.017578125 1254.203125 -124.736328125 1264.515625 -107.470703125 c 0 + 1274.671875 -90.126953125 1282.015625 -69.501953125 1286.546875 -45.517578125 c 0 + 1291.078125 -21.533203125 1293.265625 5.185546875 1293.265625 34.638671875 c 1 + 1293.265625 73.6748046875 1293.265625 112.711914062 1293.265625 151.748046875 c 1 + 1293.265625 181.201171875 1291.078125 207.919921875 1286.546875 231.904296875 c 0 + 1282.015625 255.888671875 1274.671875 276.591796875 1264.515625 293.857421875 c 0 + 1254.203125 311.123046875 1240.921875 324.404296875 1224.671875 333.701171875 c 0 + 1208.265625 342.919921875 1188.578125 347.607421875 1165.609375 347.607421875 c 256 + 1142.484375 347.607421875 1122.953125 342.919921875 1106.546875 333.701171875 c 0 + 1090.296875 324.404296875 1077.015625 311.123046875 1066.703125 293.857421875 c 0 + 1056.546875 276.591796875 1049.046875 255.888671875 1044.671875 231.904296875 c 0 + 1040.140625 207.919921875 1037.953125 181.201171875 1037.953125 151.748046875 c 1 + 1037.953125 112.711914062 1037.953125 73.6748046875 1037.953125 34.638671875 c 1 + 1037.953125 5.185546875 1040.140625 -21.533203125 1044.671875 -45.517578125 c 0 + 1049.046875 -69.501953125 1056.546875 -90.126953125 1066.703125 -107.470703125 c 0 + 1077.015625 -124.736328125 1090.296875 -138.017578125 1106.546875 -147.314453125 c 0 + 1122.953125 -156.533203125 1142.484375 -161.220703125 1165.609375 -161.220703125 c 256 +756 725.966796875 m 1xeb40 + 754.723632812 725.966796875 753.448242188 725.966796875 752.171875 725.966796875 c 1 + 745.140625 693.310546875 726.078125 666.279296875 695.0625 644.794921875 c 0 + 663.96875 623.388671875 622.875 612.685546875 571.703125 612.685546875 c 0 + 532.015625 612.685546875 495.21875 620.185546875 461.3125 635.185546875 c 0 + 427.328125 650.263671875 398.109375 672.294921875 373.421875 701.435546875 c 0 + 348.8125 730.576171875 329.59375 766.748046875 315.84375 809.951171875 c 0 + 302.09375 853.154296875 295.21875 902.919921875 295.21875 959.248046875 c 0 + 295.21875 1014.87304688 302.25 1064.32617188 316.3125 1107.52929688 c 0 + 330.375 1150.73242188 350.21875 1187.06054688 375.84375 1216.51367188 c 0 + 401.46875 1245.96679688 432.171875 1268.15429688 468.03125 1283.23242188 c 0 + 503.8125 1298.23242188 543.8125 1305.73242188 588.03125 1305.73242188 c 0 + 648.1875 1305.73242188 699.046875 1292.45117188 740.609375 1265.96679688 c 0 + 782.25 1239.40429688 814.59375 1202.37304688 837.640625 1155.02929688 c 1 + 808.1875 1137.76367188 778.734375 1120.49804688 749.28125 1103.23242188 c 1 + 736.46875 1134.56054688 716.625 1160.02929688 689.75 1179.56054688 c 0 + 662.875 1199.01367188 628.96875 1208.77929688 588.03125 1208.77929688 c 0 + 534.90625 1208.77929688 492.171875 1191.82617188 459.828125 1157.91992188 c 0 + 427.5625 1124.01367188 411.390625 1076.04492188 411.390625 1013.93554688 c 1 + 411.390625 977.451171875 411.390625 940.966796875 411.390625 904.482421875 c 1 + 411.390625 842.373046875 427.5625 794.404296875 459.828125 760.498046875 c 0 + 492.171875 726.591796875 534.90625 709.638671875 588.03125 709.638671875 c 0 + 609.125 709.638671875 629.28125 712.294921875 648.5 717.763671875 c 0 + 667.71875 723.232421875 684.515625 731.201171875 698.890625 741.748046875 c 0 + 713.265625 752.294921875 724.828125 765.419921875 733.421875 781.123046875 c 0 + 742.09375 796.826171875 746.390625 815.185546875 746.390625 836.357421875 c 1 + 746.390625 853.623046875 746.390625 870.888671875 746.390625 888.154296875 c 1 + 700.323242188 888.154296875 654.254882812 888.154296875 608.1875 888.154296875 c 1 + 608.1875 919.196289062 608.1875 950.237304688 608.1875 981.279296875 c 1 + 689.151367188 981.279296875 770.114257812 981.279296875 851.078125 981.279296875 c 1 + 851.078125 862.243164062 851.078125 743.206054688 851.078125 624.169921875 c 1 + 819.385742188 624.169921875 787.692382812 624.169921875 756 624.169921875 c 1 + 756 658.102539062 756 692.034179688 756 725.966796875 c 1xeb40 +1383.5 624.169921875 m 1xf524 + 1363.34375 684.638671875 1343.1875 745.107421875 1323.03125 805.576171875 c 1 + 1239.515625 805.576171875 1156 805.576171875 1072.484375 805.576171875 c 1 + 1052.953125 745.107421875 1033.421875 684.638671875 1013.890625 624.169921875 c 1 + 977.09375 624.169921875 940.296875 624.169921875 903.5 624.169921875 c 1 + 979.671875 847.529296875 1055.84375 1070.88867188 1132.015625 1294.24804688 c 1 + 1177.45800781 1294.24804688 1222.90136719 1294.24804688 1268.34375 1294.24804688 c 1 + 1344.48925781 1070.88867188 1420.63574219 847.529296875 1496.78125 624.169921875 c 1 + 1459.02050781 624.169921875 1421.26074219 624.169921875 1383.5 624.169921875 c 1xf524 +1200.140625 1194.40429688 m 1 + 1198.55175781 1194.40429688 1196.96386719 1194.40429688 1195.375 1194.40429688 c 1 + 1163.05761719 1095.83691406 1130.73925781 997.268554688 1098.421875 898.701171875 c 1 + 1164.33300781 898.701171875 1230.24511719 898.701171875 1296.15625 898.701171875 c 1 + 1264.15136719 997.268554688 1232.14550781 1095.83691406 1200.140625 1194.40429688 c 1 +EndSplineSet +EndChar + +StartChar: uniE12F +Encoding: 57647 57647 48 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -407.939 90.2344<638.639 740.609> 332.217 96.0156<457.753 702.84 981.547 1181.23 1289.67 1489.36> 891.045 95.0781<376.312 612.622> 1199.25 95<376.312 612.622> +VStem: 267.875 108.438<624.17 891.045 986.123 1199.25> 291.391 116.094<-92.8317 279.07> 536.078 101.875<-317.614 -243.747> 636.469 114.219<1008.36 1176.93> 753.109 116.094<-92.8297 279.07> 907.875 103.594<624.17 1136.83> 1181.23 108.438<-241.846 332.217> 1420.53 103.594<624.17 1136.83> +DStem2: 1036.47 1294.25 1016.31 1136.83 0.468722 -0.883346<129.61 385.178> 1221.78 953.467 1362.88 1028.31 0.468722 0.883346<0 252.858> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -407.939 90.2344<638.639 740.609> 332.217 96.0156<457.753 702.84 981.547 1181.23 1289.67 1489.36> 891.045 95.0781<376.312 612.622> 1199.25 95<376.312 612.622> +VStem: 267.875 108.438<624.17 891.045 986.123 1199.25> 291.391 116.094<-92.8317 279.07> 536.078 101.875<-317.614 -243.747> 636.469 114.219<1008.36 1176.93> 753.109 116.094<-92.8297 279.07> 907.875 103.594<624.17 1136.83> 1181.23 108.438<-241.846 332.217> 1420.53 103.594<624.17 1136.83> +DStem2: 1036.47 1294.25 1016.31 1136.83 0.468722 -0.883346<129.61 385.178> 1221.78 953.467 1362.88 1028.31 0.468722 0.883346<0 252.858> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +740.609375 -407.939453125 m 1xf6f0 + 708.942382812 -407.939453125 677.276367188 -407.939453125 645.609375 -407.939453125 c 1 + 607.796875 -407.939453125 580.140625 -398.330078125 562.484375 -379.111328125 c 0 + 544.984375 -359.892578125 536.078125 -334.033203125 536.078125 -301.376953125 c 1 + 536.078125 -284.423828125 536.078125 -267.470703125 536.078125 -250.517578125 c 1 + 498.421875 -245.986328125 464.515625 -235.126953125 434.359375 -217.861328125 c 0 + 404.359375 -200.595703125 378.734375 -177.548828125 357.640625 -148.720703125 c 0 + 336.390625 -119.892578125 320.140625 -85.205078125 308.578125 -44.580078125 c 0 + 297.171875 -3.955078125 291.390625 41.982421875 291.390625 93.232421875 c 0 + 291.390625 149.482421875 298.265625 199.248046875 312.015625 242.451171875 c 0 + 325.765625 285.654296875 345.296875 321.826171875 370.609375 350.966796875 c 0 + 395.765625 380.107421875 426.234375 402.138671875 461.703125 417.216796875 c 0 + 497.328125 432.216796875 536.703125 439.716796875 580.296875 439.716796875 c 256 + 623.890625 439.716796875 663.265625 432.216796875 698.890625 417.216796875 c 0 + 734.359375 402.138671875 764.828125 380.107421875 789.984375 350.966796875 c 0 + 815.296875 321.826171875 834.828125 285.654296875 848.578125 242.451171875 c 0 + 862.328125 199.248046875 869.203125 149.482421875 869.203125 93.232421875 c 0 + 869.203125 -6.611328125 848.421875 -85.517578125 806.859375 -143.408203125 c 0 + 765.296875 -201.376953125 708.890625 -236.376953125 637.953125 -248.564453125 c 1 + 637.953125 -271.611328125 637.953125 -294.658203125 637.953125 -317.705078125 c 1 + 672.171875 -317.705078125 706.390625 -317.705078125 740.609375 -317.705078125 c 1 + 740.609375 -347.783203125 740.609375 -377.861328125 740.609375 -407.939453125 c 1xf6f0 +580.296875 -156.376953125 m 0 + 605.921875 -156.376953125 629.359375 -151.923828125 650.921875 -142.939453125 c 0 + 672.328125 -134.033203125 690.609375 -121.064453125 705.609375 -104.111328125 c 0 + 720.609375 -87.158203125 732.328125 -66.455078125 740.609375 -42.158203125 c 0 + 748.890625 -17.861328125 753.109375 9.638671875 753.109375 40.419921875 c 1 + 753.109375 75.6025390625 753.109375 110.784179688 753.109375 145.966796875 c 1 + 753.109375 176.748046875 748.890625 204.248046875 740.609375 228.544921875 c 0 + 732.328125 252.841796875 720.609375 273.544921875 705.609375 290.498046875 c 0 + 690.609375 307.451171875 672.328125 320.419921875 650.921875 329.326171875 c 0 + 629.359375 338.310546875 605.921875 342.763671875 580.296875 342.763671875 c 0 + 554.046875 342.763671875 530.453125 338.310546875 509.203125 329.326171875 c 0 + 488.109375 320.419921875 469.984375 307.451171875 454.984375 290.498046875 c 0 + 439.984375 273.544921875 428.265625 252.841796875 419.984375 228.544921875 c 0 + 411.703125 204.248046875 407.484375 176.748046875 407.484375 145.966796875 c 1 + 407.484375 110.784179688 407.484375 75.6025390625 407.484375 40.419921875 c 1 + 407.484375 9.638671875 411.703125 -17.861328125 419.984375 -42.158203125 c 0 + 428.265625 -66.455078125 439.984375 -87.158203125 454.984375 -104.111328125 c 0 + 469.984375 -121.064453125 488.109375 -134.033203125 509.203125 -142.939453125 c 0 + 530.453125 -151.923828125 554.046875 -156.376953125 580.296875 -156.376953125 c 0 +1289.671875 332.216796875 m 1 + 1289.671875 140.862304688 1289.671875 -50.4912109375 1289.671875 -241.845703125 c 1 + 1253.52636719 -241.845703125 1217.37988281 -241.845703125 1181.234375 -241.845703125 c 1 + 1181.234375 -50.4912109375 1181.234375 140.862304688 1181.234375 332.216796875 c 1 + 1114.671875 332.216796875 1048.109375 332.216796875 981.546875 332.216796875 c 1 + 981.546875 364.221679688 981.546875 396.227539062 981.546875 428.232421875 c 1 + 1150.81738281 428.232421875 1320.08886719 428.232421875 1489.359375 428.232421875 c 1 + 1489.359375 396.227539062 1489.359375 364.221679688 1489.359375 332.216796875 c 1 + 1422.796875 332.216796875 1356.234375 332.216796875 1289.671875 332.216796875 c 1 +267.875 624.169921875 m 1xf9f0 + 267.875 847.529296875 267.875 1070.88867188 267.875 1294.24804688 c 1 + 363.864257812 1294.24804688 459.854492188 1294.24804688 555.84375 1294.24804688 c 1 + 617.875 1294.24804688 665.84375 1276.04492188 699.75 1239.56054688 c 0 + 733.8125 1203.07617188 750.6875 1154.09179688 750.6875 1092.68554688 c 256 + 750.6875 1031.20117188 733.8125 982.216796875 699.75 945.732421875 c 0 + 665.84375 909.326171875 617.875 891.044921875 555.84375 891.044921875 c 1 + 496 891.044921875 436.15625 891.044921875 376.3125 891.044921875 c 1 + 376.3125 802.086914062 376.3125 713.127929688 376.3125 624.169921875 c 1 + 340.166992188 624.169921875 304.020507812 624.169921875 267.875 624.169921875 c 1xf9f0 +376.3125 986.123046875 m 1 + 433.916992188 986.123046875 491.520507812 986.123046875 549.125 986.123046875 c 1 + 576.625 986.123046875 598.03125 993.310546875 613.34375 1007.68554688 c 0 + 628.8125 1022.06054688 636.46875 1042.76367188 636.46875 1069.63867188 c 1 + 636.46875 1084.97753906 636.46875 1100.31542969 636.46875 1115.65429688 c 1 + 636.46875 1142.60742188 628.8125 1163.23242188 613.34375 1177.60742188 c 0 + 598.03125 1191.98242188 576.625 1199.24804688 549.125 1199.24804688 c 1 + 491.520507812 1199.24804688 433.916992188 1199.24804688 376.3125 1199.24804688 c 1 + 376.3125 1128.20605469 376.3125 1057.16503906 376.3125 986.123046875 c 1 +1420.53125 1136.82617188 m 1 + 1418.91699219 1136.82617188 1417.30175781 1136.82617188 1415.6875 1136.82617188 c 1 + 1398.08300781 1100.65429688 1380.47949219 1064.48242188 1362.875 1028.31054688 c 1 + 1313.91699219 939.040039062 1264.95800781 849.768554688 1216 760.498046875 c 1 + 1167.04199219 849.768554688 1118.08300781 939.040039062 1069.125 1028.31054688 c 1 + 1051.52050781 1064.48242188 1033.91699219 1100.65429688 1016.3125 1136.82617188 c 1 + 1014.69824219 1136.82617188 1013.08300781 1136.82617188 1011.46875 1136.82617188 c 1 + 1011.46875 965.940429688 1011.46875 795.055664062 1011.46875 624.169921875 c 1 + 976.9375 624.169921875 942.40625 624.169921875 907.875 624.169921875 c 1 + 907.875 847.529296875 907.875 1070.88867188 907.875 1294.24804688 c 1 + 950.739257812 1294.24804688 993.604492188 1294.24804688 1036.46875 1294.24804688 c 1 + 1096.3125 1180.65429688 1156.15625 1067.06054688 1216 953.466796875 c 1 + 1217.92675781 953.466796875 1219.85449219 953.466796875 1221.78125 953.466796875 c 1 + 1281.625 1067.06054688 1341.46875 1180.65429688 1401.3125 1294.24804688 c 1 + 1442.25 1294.24804688 1483.1875 1294.24804688 1524.125 1294.24804688 c 1 + 1524.125 1070.88867188 1524.125 847.529296875 1524.125 624.169921875 c 1 + 1489.59375 624.169921875 1455.0625 624.169921875 1420.53125 624.169921875 c 1 + 1420.53125 795.055664062 1420.53125 965.940429688 1420.53125 1136.82617188 c 1 +EndSplineSet +EndChar + +StartChar: uniE130 +Encoding: 57648 57648 49 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 84.8447 119.922<305.613 568.692> 831.231 119.922<326.785 582.205> +VStem: 158.402 134.375<638.539 801.481> 608.402 134.375<242.984 418.824> 888.383 129.59<99.2002 740.021> 1529.2 129.59<99.2002 740.021> +DStem2: 425.98 600.763 403.129 472.442 0.978916 -0.204262<-105.472 187.038> 1049.12 936.798 1023.93 740.021 0.468722 -0.883346<162.013 481.472> 1280.77 510.821 1457.13 604.376 0.468722 0.883346<0 316.072> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 84.8447 119.922<305.613 568.692> 831.231 119.922<326.785 582.205> +VStem: 158.402 134.375<638.539 801.481> 608.402 134.375<242.984 418.824> 888.383 129.59<99.2002 740.021> 1529.2 129.59<99.2002 740.021> +DStem2: 425.98 600.763 403.129 472.442 0.978916 -0.204262<-105.472 187.038> 1049.12 936.798 1023.93 740.021 0.468722 -0.883346<162.013 481.472> 1280.77 510.821 1457.13 604.376 0.468722 0.883346<0 316.072> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +439.1640625 84.8447265625 m 0 + 368.75390625 84.8447265625 308.98828125 97.6376953125 259.76953125 123.223632812 c 0 + 210.55078125 148.809570312 168.36328125 183.184570312 133.20703125 226.446289062 c 1 + 164.391601562 255.645507812 195.577148438 284.844726562 226.76171875 314.043945312 c 1 + 256.3515625 278.008789062 288.96875 250.762695312 324.515625 232.403320312 c 0 + 360.16015625 214.043945312 400.78515625 204.766601562 446.390625 204.766601562 c 0 + 500.00390625 204.766601562 540.3359375 216.778320312 567.58203125 240.801757812 c 0 + 594.73046875 264.825195312 608.40234375 297.247070312 608.40234375 337.969726562 c 0 + 608.40234375 370.782226562 598.734375 396.758789062 579.59375 415.997070312 c 0 + 560.35546875 435.235351562 526.37109375 449.590820312 477.54296875 459.161132812 c 1 + 452.73828125 463.587890625 427.93359375 468.014648438 403.12890625 472.442382812 c 1 + 321.5859375 487.579101562 260.35546875 514.434570312 219.53515625 552.813476562 c 0 + 178.71484375 591.192382812 158.40234375 644.024414062 158.40234375 711.211914062 c 0 + 158.40234375 748.028320312 165.3359375 781.426757812 179.3984375 811.407226562 c 0 + 193.36328125 841.387695312 212.9921875 866.583007812 238.1875 886.993164062 c 0 + 263.3828125 907.403320312 293.94921875 923.223632812 329.984375 934.356445312 c 0 + 365.921875 945.586914062 406.3515625 951.153320312 451.17578125 951.153320312 c 0 + 514.359375 951.153320312 569.14453125 940.215820312 615.53125 918.243164062 c 0 + 661.91796875 896.172851562 701.56640625 864.434570312 734.37890625 822.833007812 c 1 + 702.770507812 794.837890625 671.163085938 766.842773438 639.5546875 738.848632812 c 1 + 617.97265625 766.778320312 591.60546875 789.239257812 560.35546875 806.036132812 c 0 + 529.203125 822.833007812 490.3359375 831.231445312 443.94921875 831.231445312 c 0 + 396 831.231445312 358.79296875 821.563476562 332.328125 802.422851562 c 0 + 305.9609375 783.184570312 292.77734375 755.157226562 292.77734375 718.438476562 c 0 + 292.77734375 683.184570312 303.51953125 657.012695312 325.19921875 639.825195312 c 0 + 346.78125 622.637695312 380.375 609.551757812 425.98046875 600.762695312 c 1 + 450.78515625 595.586914062 475.58984375 590.411132812 500.39453125 585.235351562 c 1 + 584.37890625 569.219726562 645.8046875 541.973632812 684.57421875 503.594726562 c 0 + 723.34375 465.215820312 742.77734375 412.383789062 742.77734375 345.196289062 c 0 + 742.77734375 306.036132812 735.94140625 270.391601562 722.3671875 238.360351562 c 0 + 708.79296875 206.426757812 688.96875 178.985351562 662.9921875 156.231445312 c 0 + 636.91796875 133.379882812 605.1796875 115.801757812 567.58203125 103.399414062 c 0 + 529.984375 90.9970703125 487.11328125 84.8447265625 439.1640625 84.8447265625 c 0 +1529.203125 740.020507812 m 1 + 1527.18457031 740.020507812 1525.16699219 740.020507812 1523.1484375 740.020507812 c 1 + 1501.14355469 694.805664062 1479.13769531 649.590820312 1457.1328125 604.375976562 c 1 + 1395.93457031 492.787109375 1334.73730469 381.198242188 1273.5390625 269.610351562 c 1 + 1212.34082031 381.198242188 1151.14355469 492.787109375 1089.9453125 604.375976562 c 1 + 1067.94042969 649.590820312 1045.93457031 694.805664062 1023.9296875 740.020507812 c 1 + 1021.94433594 740.020507812 1019.95800781 740.020507812 1017.97265625 740.020507812 c 1 + 1017.97265625 526.413085938 1017.97265625 312.806640625 1017.97265625 99.2001953125 c 1 + 974.776367188 99.2001953125 931.579101562 99.2001953125 888.3828125 99.2001953125 c 1 + 888.3828125 378.399414062 888.3828125 657.598632812 888.3828125 936.797851562 c 1 + 941.963867188 936.797851562 995.543945312 936.797851562 1049.125 936.797851562 c 1 + 1123.9296875 794.805664062 1198.734375 652.813476562 1273.5390625 510.821289062 c 1 + 1275.94824219 510.821289062 1278.35644531 510.821289062 1280.765625 510.821289062 c 1 + 1355.5703125 652.813476562 1430.375 794.805664062 1505.1796875 936.797851562 c 1 + 1556.38378906 936.797851562 1607.58886719 936.797851562 1658.79296875 936.797851562 c 1 + 1658.79296875 657.598632812 1658.79296875 378.399414062 1658.79296875 99.2001953125 c 1 + 1615.59667969 99.2001953125 1572.39941406 99.2001953125 1529.203125 99.2001953125 c 1 + 1529.203125 312.806640625 1529.203125 526.413085938 1529.203125 740.020507812 c 1 +EndSplineSet +EndChar + +StartChar: uniE131 +Encoding: 57649 57649 50 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 432.794 118.848<317.094 612.675> 818.048 118.75<317.094 612.675> +VStem: 181.547 135.547<99.2002 432.794 551.642 818.048> 642.289 142.969<579.443 790.149> 899.906 140.43<796.368 936.798> 1473.54 136.914<799.884 936.798> +DStem2: 1040.34 936.798 899.906 936.798 0.311738 -0.950168<0 737.016> 1258.7 231.231 1331.94 99.2002 0.291293 0.956634<0 737.551> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 432.794 118.848<317.094 612.675> 818.048 118.75<317.094 612.675> +VStem: 181.547 135.547<99.2002 432.794 551.642 818.048> 642.289 142.969<579.443 790.149> 899.906 140.43<796.368 936.798> 1473.54 136.914<799.884 936.798> +DStem2: 1040.34 936.798 899.906 936.798 0.311738 -0.950168<0 737.016> 1258.7 231.231 1331.94 99.2002 0.291293 0.956634<0 737.551> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +181.546875 99.2001953125 m 1 + 181.546875 378.399414062 181.546875 657.598632812 181.546875 936.797851562 c 1 + 301.534179688 936.797851562 421.520507812 936.797851562 541.5078125 936.797851562 c 1 + 619.2421875 936.797851562 679.203125 914.043945312 721.5859375 868.438476562 c 0 + 763.96875 822.833007812 785.2578125 761.602539062 785.2578125 684.844726562 c 256 + 785.2578125 607.989257812 763.96875 546.758789062 721.5859375 501.153320312 c 0 + 679.203125 455.645507812 619.2421875 432.793945312 541.5078125 432.793945312 c 1 + 466.703125 432.793945312 391.8984375 432.793945312 317.09375 432.793945312 c 1 + 317.09375 321.595703125 317.09375 210.397460938 317.09375 99.2001953125 c 1 + 271.911132812 99.2001953125 226.729492188 99.2001953125 181.546875 99.2001953125 c 1 +317.09375 551.641601562 m 1 + 389.098632812 551.641601562 461.104492188 551.641601562 533.109375 551.641601562 c 1 + 567.484375 551.641601562 594.4375 560.625976562 613.578125 578.594726562 c 0 + 632.71875 596.563476562 642.2890625 622.442382812 642.2890625 656.036132812 c 1 + 642.2890625 675.208984375 642.2890625 694.381835938 642.2890625 713.555664062 c 1 + 642.2890625 747.247070312 632.71875 773.028320312 613.578125 790.997070312 c 0 + 594.4375 808.965820312 567.484375 818.047851562 533.109375 818.047851562 c 1 + 461.104492188 818.047851562 389.098632812 818.047851562 317.09375 818.047851562 c 1 + 317.09375 729.245117188 317.09375 640.443359375 317.09375 551.641601562 c 1 +1174.7109375 99.2001953125 m 1 + 1083.109375 378.399414062 991.5078125 657.598632812 899.90625 936.797851562 c 1 + 946.715820312 936.797851562 993.526367188 936.797851562 1040.3359375 936.797851562 c 1 + 1084.73730469 798.809570312 1129.13769531 660.821289062 1173.5390625 522.833007812 c 1 + 1200.36230469 425.631835938 1227.18457031 328.431640625 1254.0078125 231.231445312 c 1 + 1255.5703125 231.231445312 1257.1328125 231.231445312 1258.6953125 231.231445312 c 1 + 1285.90917969 328.431640625 1313.12207031 425.631835938 1340.3359375 522.833007812 c 1 + 1384.73730469 660.821289062 1429.13769531 798.809570312 1473.5390625 936.797851562 c 1 + 1519.17675781 936.797851562 1564.81542969 936.797851562 1610.453125 936.797851562 c 1 + 1517.61425781 657.598632812 1424.77636719 378.399414062 1331.9375 99.2001953125 c 1 + 1279.52832031 99.2001953125 1227.12011719 99.2001953125 1174.7109375 99.2001953125 c 1 +EndSplineSet +EndChar + +StartChar: uniE132 +Encoding: 57650 57650 51 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 171.516 92.1094<833.624 1009.5 1373.31 1569.36> 519.953 89.2969<1407.93 1572.57> 759.016 94.0625<1380.96 1681.23> 772.453 92.1094<833.624 1009.5> +VStem: 76.1562 108.438<183 434.904 513.234 853.078> 464.906 126.719<726.359 853.078> 480.297 130.547<183 313.547> 678.734 115.156<303.546 732.443> 1049.28 115.156<302.743 733.336> 1602.56 113.281<296.368 486.273> +DStem2: 352.641 570.812 276.781 495.969 0.54515 -0.838338<21.3896 394.71> 284.438 635.188 352.641 570.812 0.660468 0.750854<-154.984 -109.59 -12.7165 282.798> 1276.16 479.641 1366.39 521.906 0.0726244 0.997359<48.7072 286.444> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 171.516 92.1094<833.624 1009.5 1373.31 1569.36> 519.953 89.2969<1407.93 1572.57> 759.016 94.0625<1380.96 1681.23> 772.453 92.1094<833.624 1009.5> +VStem: 76.1562 108.438<183 434.904 513.234 853.078> 464.906 126.719<726.359 853.078> 480.297 130.547<183 313.547> 678.734 115.156<303.546 732.443> 1049.28 115.156<302.743 733.336> 1602.56 113.281<296.368 486.273> +DStem2: 352.641 570.812 276.781 495.969 0.54515 -0.838338<21.3896 394.71> 284.438 635.188 352.641 570.812 0.660468 0.750854<-154.984 -109.59 -12.7165 282.798> 1276.16 479.641 1366.39 521.906 0.0726244 0.997359<48.7072 286.444> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +276.78125 495.96875 m 1xebc0 + 246.051757812 460.760742188 215.323242188 425.551757812 184.59375 390.34375 c 1 + 184.59375 321.229492188 184.59375 252.114257812 184.59375 183 c 1 + 148.448242188 183 112.301757812 183 76.15625 183 c 1 + 76.15625 406.359375 76.15625 629.71875 76.15625 853.078125 c 1 + 112.301757812 853.078125 148.448242188 853.078125 184.59375 853.078125 c 1 + 184.59375 739.796875 184.59375 626.515625 184.59375 513.234375 c 1 + 185.870117188 513.234375 187.145507812 513.234375 188.421875 513.234375 c 1 + 220.426757812 553.885742188 252.432617188 594.536132812 284.4375 635.1875 c 1 + 344.59375 707.817382812 404.75 780.448242188 464.90625 853.078125 c 1 + 507.145507812 853.078125 549.385742188 853.078125 591.625 853.078125 c 1xedc0 + 511.963867188 758.989257812 432.301757812 664.901367188 352.640625 570.8125 c 1 + 438.708007812 441.541992188 524.776367188 312.270507812 610.84375 183 c 1 + 567.328125 183 523.8125 183 480.296875 183 c 1 + 412.458007812 287.323242188 344.620117188 391.645507812 276.78125 495.96875 c 1xebc0 +921.546875 171.515625 m 0 + 879.984375 171.515625 843.8125 179.328125 813.109375 195.03125 c 0 + 782.40625 210.65625 757.09375 233.234375 737.25 262.6875 c 0 + 717.40625 292.140625 702.71875 328.3125 693.109375 371.125 c 0 + 683.5 414.015625 678.734375 463 678.734375 518.078125 c 0 + 678.734375 572.453125 683.5 621.203125 693.109375 664.40625 c 0 + 702.71875 707.609375 717.40625 743.9375 737.25 773.390625 c 0 + 757.09375 802.84375 782.40625 825.421875 813.109375 841.046875 c 0 + 843.8125 856.75 879.984375 864.5625 921.546875 864.5625 c 0xd9c0 + 1004.75 864.5625 1066.078125 834.171875 1105.453125 773.390625 c 0 + 1144.75 712.609375 1164.4375 627.453125 1164.4375 518.078125 c 256 + 1164.4375 408.625 1144.75 323.46875 1105.453125 262.6875 c 0 + 1066.078125 201.90625 1004.75 171.515625 921.546875 171.515625 c 0 +921.546875 263.625 m 256 + 944.59375 263.625 964.28125 268.3125 980.609375 277.53125 c 0 + 996.9375 286.828125 1010.21875 300.109375 1020.453125 317.375 c 0 + 1030.6875 334.71875 1038.03125 355.34375 1042.5625 379.328125 c 0 + 1047.015625 403.3125 1049.28125 430.03125 1049.28125 459.484375 c 1 + 1049.28125 498.520507812 1049.28125 537.557617188 1049.28125 576.59375 c 1 + 1049.28125 606.046875 1047.015625 632.765625 1042.5625 656.75 c 0 + 1038.03125 680.734375 1030.6875 701.4375 1020.453125 718.703125 c 0 + 1010.21875 735.96875 996.9375 749.25 980.609375 758.546875 c 0 + 964.28125 767.765625 944.59375 772.453125 921.546875 772.453125 c 256 + 898.5 772.453125 878.890625 767.765625 862.5625 758.546875 c 0 + 846.234375 749.25 832.953125 735.96875 822.71875 718.703125 c 0 + 812.484375 701.4375 805.0625 680.734375 800.609375 656.75 c 0 + 796.15625 632.765625 793.890625 606.046875 793.890625 576.59375 c 1 + 793.890625 537.557617188 793.890625 498.520507812 793.890625 459.484375 c 1 + 793.890625 430.03125 796.15625 403.3125 800.609375 379.328125 c 0 + 805.0625 355.34375 812.484375 334.71875 822.71875 317.375 c 0 + 832.953125 300.109375 846.234375 286.828125 862.5625 277.53125 c 0 + 878.890625 268.3125 898.5 263.625 921.546875 263.625 c 256 +1681.234375 759.015625 m 1xe9c0 + 1582.04199219 759.015625 1482.84863281 759.015625 1383.65625 759.015625 c 1 + 1377.90136719 679.979492188 1372.14550781 600.942382812 1366.390625 521.90625 c 1 + 1368.62988281 521.90625 1370.87011719 521.90625 1373.109375 521.90625 c 1 + 1380.765625 535.34375 1388.8125 547.296875 1397.09375 557.84375 c 0 + 1405.453125 568.46875 1414.984375 577.53125 1425.921875 585.265625 c 0 + 1436.78125 592.921875 1449.28125 598.859375 1463.34375 603 c 0 + 1477.40625 607.140625 1494.046875 609.25 1513.265625 609.25 c 0 + 1542.09375 609.25 1568.8125 604.40625 1593.421875 594.875 c 0 + 1618.03125 585.265625 1639.515625 571.515625 1657.71875 553.546875 c 0 + 1676 535.65625 1690.21875 513.703125 1700.453125 487.765625 c 0 + 1710.6875 461.90625 1715.84375 432.609375 1715.84375 399.953125 c 0 + 1715.84375 366.671875 1710.53125 335.96875 1699.984375 307.765625 c 0 + 1689.4375 279.640625 1673.890625 255.5 1653.421875 235.34375 c 0 + 1632.953125 215.1875 1607.796875 199.484375 1578.03125 188.3125 c 0 + 1548.265625 177.0625 1514.515625 171.515625 1476.78125 171.515625 c 0 + 1446.703125 171.515625 1420.140625 174.875 1397.09375 181.59375 c 0 + 1374.046875 188.3125 1353.734375 197.21875 1336.15625 208.46875 c 0 + 1318.5 219.640625 1303.1875 232.453125 1290.0625 246.828125 c 0 + 1276.9375 261.203125 1265.296875 276.125 1254.984375 291.515625 c 1 + 1281.234375 312.296875 1307.484375 333.078125 1333.734375 353.859375 c 1 + 1342.09375 340.421875 1350.6875 328.3125 1359.671875 317.375 c 0 + 1368.65625 306.515625 1378.890625 296.90625 1390.375 288.625 c 0 + 1401.859375 280.265625 1414.828125 273.859375 1429.28125 269.40625 c 0 + 1443.65625 264.953125 1460.140625 262.6875 1478.734375 262.6875 c 0 + 1518.34375 262.6875 1548.96875 273.546875 1570.375 295.34375 c 0 + 1591.78125 317.0625 1602.5625 347.140625 1602.5625 385.578125 c 1 + 1602.5625 389.40625 1602.5625 393.234375 1602.5625 397.0625 c 1 + 1602.5625 435.5 1591.78125 465.578125 1570.375 487.296875 c 0 + 1548.96875 509.09375 1518.34375 519.953125 1478.734375 519.953125 c 0 + 1449.90625 519.953125 1426.859375 514.484375 1409.59375 503.625 c 0 + 1392.328125 492.765625 1377.5625 480.578125 1365.453125 467.140625 c 1 + 1335.6875 471.307617188 1305.921875 475.473632812 1276.15625 479.640625 c 1 + 1284.46386719 604.120117188 1292.77050781 728.598632812 1301.078125 853.078125 c 1 + 1427.796875 853.078125 1554.515625 853.078125 1681.234375 853.078125 c 1 + 1681.234375 821.723632812 1681.234375 790.370117188 1681.234375 759.015625 c 1xe9c0 +EndSplineSet +EndChar + +StartChar: uniE133 +Encoding: 57651 57651 52 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -253.33 95.9375<473.104 698.889> 25.0293 95.0781<1059.63 1296.02> 343.779 95.9375<498.673 717.085 1059.63 1296.02> 612.686 95.9375<473.457 699.267 1095.64 1308.92> 1209.79 95.9375<499.001 717.446 1095.56 1308.05> +VStem: 367.209 107.5<186.541 322.835 1053.58 1188.28> 727.209 107.5<-130.28 16.9126 735.143 882.928> 921.817 115.157<771.976 1149.28> 951.193 108.438<-241.846 25.0293 120.107 333.232> 1319.79 114.296<142.348 310.913> +DStem2: 581.271 159.404 562.99 56.748 0.978916 -0.204262<-84.378 149.631> 581.662 1025.42 563.381 922.764 0.978916 -0.204262<-84.3815 149.558> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -253.33 95.9375<473.104 698.889> 25.0293 95.0781<1059.63 1296.02> 343.779 95.9375<498.673 717.085 1059.63 1296.02> 612.686 95.9375<473.457 699.267 1095.64 1308.92> 1209.79 95.9375<499.001 717.446 1095.56 1308.05> +VStem: 367.209 107.5<186.541 322.835 1053.58 1188.28> 727.209 107.5<-130.28 16.9126 735.143 882.928> 921.817 115.157<771.976 1149.28> 951.193 108.438<-241.846 25.0293 120.107 333.232> 1319.79 114.296<142.348 310.913> +DStem2: 581.271 159.404 562.99 56.748 0.978916 -0.204262<-84.378 149.631> 581.662 1025.42 563.381 922.764 0.978916 -0.204262<-84.3815 149.558> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +591.818359375 -253.330078125 m 0xfe40 + 535.490234375 -253.330078125 487.677734375 -243.095703125 448.302734375 -222.626953125 c 0 + 408.927734375 -202.158203125 375.177734375 -174.658203125 347.052734375 -140.048828125 c 1 + 372 -116.689453125 396.948242188 -93.330078125 421.896484375 -69.970703125 c 1 + 445.568359375 -98.798828125 471.662109375 -120.595703125 500.099609375 -135.283203125 c 0 + 528.615234375 -149.970703125 561.115234375 -157.392578125 597.599609375 -157.392578125 c 0 + 640.490234375 -157.392578125 672.755859375 -147.783203125 694.552734375 -128.564453125 c 0 + 716.271484375 -109.345703125 727.208984375 -83.408203125 727.208984375 -50.830078125 c 0 + 727.208984375 -24.580078125 719.474609375 -3.798828125 704.162109375 11.591796875 c 0 + 688.771484375 26.982421875 661.583984375 38.466796875 622.521484375 46.123046875 c 1 + 602.677734375 49.6650390625 582.833984375 53.2060546875 562.990234375 56.748046875 c 1 + 497.755859375 68.857421875 448.771484375 90.341796875 416.115234375 121.044921875 c 0 + 383.458984375 151.748046875 367.208984375 194.013671875 367.208984375 247.763671875 c 0 + 367.208984375 277.216796875 372.755859375 303.935546875 384.005859375 327.919921875 c 0 + 395.177734375 351.904296875 410.880859375 372.060546875 431.037109375 388.388671875 c 0 + 451.193359375 404.716796875 475.646484375 417.373046875 504.474609375 426.279296875 c 0 + 533.224609375 435.263671875 565.568359375 439.716796875 601.427734375 439.716796875 c 0 + 651.974609375 439.716796875 695.802734375 430.966796875 732.912109375 413.388671875 c 0 + 770.021484375 395.732421875 801.740234375 370.341796875 827.990234375 337.060546875 c 1 + 802.703125 314.665039062 777.416992188 292.268554688 752.130859375 269.873046875 c 1 + 734.865234375 292.216796875 713.771484375 310.185546875 688.771484375 323.623046875 c 0 + 663.849609375 337.060546875 632.755859375 343.779296875 595.646484375 343.779296875 c 0 + 557.287109375 343.779296875 527.521484375 336.044921875 506.349609375 320.732421875 c 0 + 485.255859375 305.341796875 474.708984375 282.919921875 474.708984375 253.544921875 c 0 + 474.708984375 225.341796875 483.302734375 204.404296875 500.646484375 190.654296875 c 0 + 517.912109375 176.904296875 544.787109375 166.435546875 581.271484375 159.404296875 c 1 + 601.115234375 155.263671875 620.958984375 151.123046875 640.802734375 146.982421875 c 1 + 707.990234375 134.169921875 757.130859375 112.373046875 788.146484375 81.669921875 c 0 + 819.162109375 50.966796875 834.708984375 8.701171875 834.708984375 -45.048828125 c 0 + 834.708984375 -76.376953125 829.240234375 -104.892578125 818.380859375 -130.517578125 c 0 + 807.521484375 -156.064453125 791.662109375 -178.017578125 770.880859375 -196.220703125 c 0 + 750.021484375 -214.501953125 724.630859375 -228.564453125 694.552734375 -238.486328125 c 0 + 664.474609375 -248.408203125 630.177734375 -253.330078125 591.818359375 -253.330078125 c 0xfe40 +951.193359375 -241.845703125 m 1xfec0 + 951.193359375 -18.486328125 951.193359375 204.873046875 951.193359375 428.232421875 c 1 + 1047.18261719 428.232421875 1143.171875 428.232421875 1239.16210938 428.232421875 c 1 + 1301.27148438 428.232421875 1349.23925781 410.029296875 1383.14648438 373.544921875 c 0 + 1417.12988281 337.060546875 1434.08300781 288.076171875 1434.08300781 226.669921875 c 256 + 1434.08300781 165.185546875 1417.12988281 116.201171875 1383.14648438 79.716796875 c 0 + 1349.23925781 43.310546875 1301.27148438 25.029296875 1239.16210938 25.029296875 c 1 + 1179.31738281 25.029296875 1119.47460938 25.029296875 1059.63085938 25.029296875 c 1 + 1059.63085938 -63.9287109375 1059.63085938 -152.887695312 1059.63085938 -241.845703125 c 1 + 1023.484375 -241.845703125 987.338867188 -241.845703125 951.193359375 -241.845703125 c 1xfec0 +1059.63085938 120.107421875 m 1 + 1117.234375 120.107421875 1174.83886719 120.107421875 1232.44335938 120.107421875 c 1 + 1259.94238281 120.107421875 1281.42773438 127.294921875 1296.74023438 141.669921875 c 0 + 1312.13085938 156.044921875 1319.78710938 176.748046875 1319.78710938 203.623046875 c 1 + 1319.78710938 218.961914062 1319.78710938 234.299804688 1319.78710938 249.638671875 c 1 + 1319.78710938 276.591796875 1312.13085938 297.216796875 1296.74023438 311.591796875 c 0 + 1281.42773438 325.966796875 1259.94238281 333.232421875 1232.44335938 333.232421875 c 1 + 1174.83886719 333.232421875 1117.234375 333.232421875 1059.63085938 333.232421875 c 1 + 1059.63085938 262.190429688 1059.63085938 191.149414062 1059.63085938 120.107421875 c 1 +592.130859375 612.685546875 m 0 + 535.880859375 612.685546875 488.068359375 622.919921875 448.693359375 643.388671875 c 0 + 409.318359375 663.857421875 375.568359375 691.357421875 347.443359375 725.966796875 c 1 + 372.390625 749.326171875 397.338867188 772.685546875 422.287109375 796.044921875 c 1 + 445.880859375 767.216796875 471.974609375 745.419921875 500.412109375 730.732421875 c 0 + 529.005859375 716.044921875 561.505859375 708.623046875 597.912109375 708.623046875 c 0 + 640.880859375 708.623046875 673.068359375 718.232421875 694.943359375 737.451171875 c 0 + 716.662109375 756.669921875 727.599609375 782.607421875 727.599609375 815.185546875 c 0 + 727.599609375 841.435546875 719.787109375 862.216796875 704.474609375 877.607421875 c 0 + 689.162109375 892.998046875 661.974609375 904.482421875 622.912109375 912.138671875 c 1 + 603.068359375 915.680664062 583.224609375 919.221679688 563.380859375 922.763671875 c 1 + 498.068359375 934.873046875 449.162109375 956.357421875 416.505859375 987.060546875 c 0 + 383.849609375 1017.76367188 367.599609375 1060.02929688 367.599609375 1113.77929688 c 0 + 367.599609375 1143.23242188 373.068359375 1169.95117188 384.318359375 1193.93554688 c 0 + 395.568359375 1217.91992188 411.193359375 1238.07617188 431.349609375 1254.40429688 c 0 + 451.505859375 1270.73242188 476.037109375 1283.38867188 504.787109375 1292.29492188 c 0 + 533.537109375 1301.27929688 565.880859375 1305.73242188 601.818359375 1305.73242188 c 0 + 652.287109375 1305.73242188 696.193359375 1296.98242188 733.224609375 1279.40429688 c 0 + 770.412109375 1261.74804688 802.130859375 1236.35742188 828.380859375 1203.07617188 c 1 + 803.068359375 1180.68066406 777.755859375 1158.28417969 752.443359375 1135.88867188 c 1 + 735.255859375 1158.23242188 714.162109375 1176.20117188 689.162109375 1189.63867188 c 0 + 664.162109375 1203.07617188 633.068359375 1209.79492188 596.037109375 1209.79492188 c 0 + 557.599609375 1209.79492188 527.912109375 1202.06054688 506.662109375 1186.74804688 c 0 + 485.568359375 1171.35742188 475.099609375 1148.93554688 475.099609375 1119.56054688 c 0 + 475.099609375 1091.35742188 483.693359375 1070.41992188 501.037109375 1056.66992188 c 0 + 518.224609375 1042.91992188 545.099609375 1032.45117188 581.662109375 1025.41992188 c 1 + 601.505859375 1021.27929688 621.349609375 1017.13867188 641.193359375 1012.99804688 c 1 + 708.380859375 1000.18554688 757.443359375 978.388671875 788.537109375 947.685546875 c 0 + 819.474609375 916.982421875 835.099609375 874.716796875 835.099609375 820.966796875 c 0 + 835.099609375 789.638671875 829.630859375 761.123046875 818.693359375 735.498046875 c 0 + 807.912109375 709.951171875 791.974609375 687.998046875 771.193359375 669.794921875 c 0 + 750.412109375 651.513671875 724.943359375 637.451171875 694.943359375 627.529296875 c 0 + 664.787109375 617.607421875 630.568359375 612.685546875 592.130859375 612.685546875 c 0 +1203.06835938 612.685546875 m 0 + 1115.41113281 612.685546875 1046.50585938 642.216796875 996.662109375 701.435546875 c 0 + 946.662109375 760.654296875 921.817382812 846.591796875 921.817382812 959.248046875 c 0 + 921.817382812 1015.49804688 928.224609375 1065.10742188 941.037109375 1107.99804688 c 0 + 953.692382812 1150.88867188 972.286132812 1187.06054688 996.662109375 1216.51367188 c 0 + 1021.03710938 1245.96679688 1050.56835938 1268.15429688 1085.41210938 1283.23242188 c 0 + 1120.25585938 1298.23242188 1159.47363281 1305.73242188 1203.06835938 1305.73242188 c 0 + 1261.34863281 1305.73242188 1310.09863281 1292.99804688 1349.47363281 1267.37304688 c 0 + 1388.84960938 1241.74804688 1419.63085938 1204.01367188 1442.13085938 1154.09179688 c 1 + 1411.71386719 1137.45117188 1381.296875 1120.81054688 1350.88085938 1104.16992188 c 1 + 1339.31835938 1136.20117188 1321.66210938 1161.59179688 1297.59960938 1180.49804688 c 0 + 1273.53613281 1199.40429688 1242.12988281 1208.77929688 1203.06835938 1208.77929688 c 0 + 1151.19238281 1208.77929688 1110.56835938 1191.20117188 1081.19335938 1156.04492188 c 0 + 1051.66113281 1120.81054688 1036.97460938 1072.13867188 1036.97460938 1010.10742188 c 1 + 1036.97460938 976.174804688 1036.97460938 942.243164062 1036.97460938 908.310546875 c 1xff40 + 1036.97460938 846.279296875 1051.66113281 797.607421875 1081.19335938 762.373046875 c 0 + 1110.56835938 727.216796875 1151.19238281 709.638671875 1203.06835938 709.638671875 c 0 + 1243.37988281 709.638671875 1276.19335938 720.029296875 1301.50585938 740.810546875 c 0 + 1326.66113281 761.591796875 1345.41210938 788.310546875 1357.59960938 820.966796875 c 1 + 1386.71386719 803.362304688 1415.828125 785.758789062 1444.94335938 768.154296875 c 1 + 1422.59960938 719.560546875 1391.19335938 681.435546875 1350.88085938 653.935546875 c 0 + 1310.56738281 626.435546875 1261.34863281 612.685546875 1203.06835938 612.685546875 c 0 +EndSplineSet +EndChar + +StartChar: uniE134 +Encoding: 57652 57652 53 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 183 96.0156<774.047 1094.75 1334.05 1574.42> 474.875 95.9375<774.047 1064.98> 757.062 96.0156<46.0781 245.766 354.203 553.891 774.047 1094.75 1334.05 1574.42> +VStem: 245.766 108.438<183 757.062> 665.609 108.438<279.016 474.875 570.812 757.062> 1225.61 108.438<279.016 757.062> 1629.75 116.172<334.419 701.659> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 183 96.0156<774.047 1094.75 1334.05 1574.42> 474.875 95.9375<774.047 1064.98> 757.062 96.0156<46.0781 245.766 354.203 553.891 774.047 1094.75 1334.05 1574.42> +VStem: 245.766 108.438<183 757.062> 665.609 108.438<279.016 474.875 570.812 757.062> 1225.61 108.438<279.016 757.062> 1629.75 116.172<334.419 701.659> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +354.203125 757.0625 m 1 + 354.203125 565.708007812 354.203125 374.354492188 354.203125 183 c 1 + 318.057617188 183 281.911132812 183 245.765625 183 c 1 + 245.765625 374.354492188 245.765625 565.708007812 245.765625 757.0625 c 1 + 179.203125 757.0625 112.640625 757.0625 46.078125 757.0625 c 1 + 46.078125 789.067382812 46.078125 821.073242188 46.078125 853.078125 c 1 + 215.348632812 853.078125 384.620117188 853.078125 553.890625 853.078125 c 1 + 553.890625 821.073242188 553.890625 789.067382812 553.890625 757.0625 c 1 + 487.328125 757.0625 420.765625 757.0625 354.203125 757.0625 c 1 +665.609375 183 m 1 + 665.609375 406.359375 665.609375 629.71875 665.609375 853.078125 c 1 + 808.65625 853.078125 951.703125 853.078125 1094.75 853.078125 c 1 + 1094.75 821.073242188 1094.75 789.067382812 1094.75 757.0625 c 1 + 987.848632812 757.0625 880.948242188 757.0625 774.046875 757.0625 c 1 + 774.046875 694.979492188 774.046875 632.895507812 774.046875 570.8125 c 1 + 871.026367188 570.8125 968.004882812 570.8125 1064.984375 570.8125 c 1 + 1064.984375 538.833007812 1064.984375 506.854492188 1064.984375 474.875 c 1 + 968.004882812 474.875 871.026367188 474.875 774.046875 474.875 c 1 + 774.046875 409.588867188 774.046875 344.301757812 774.046875 279.015625 c 1 + 880.948242188 279.015625 987.848632812 279.015625 1094.75 279.015625 c 1 + 1094.75 247.010742188 1094.75 215.004882812 1094.75 183 c 1 + 951.703125 183 808.65625 183 665.609375 183 c 1 +1225.609375 853.078125 m 1 + 1304.64550781 853.078125 1383.68261719 853.078125 1462.71875 853.078125 c 1 + 1505.609375 853.078125 1544.4375 846.046875 1579.359375 831.984375 c 0 + 1614.203125 817.84375 1643.96875 796.90625 1668.65625 769.09375 c 0 + 1693.265625 741.203125 1712.328125 706.359375 1725.765625 664.40625 c 0 + 1739.203125 622.53125 1745.921875 573.703125 1745.921875 518.078125 c 256 + 1745.921875 462.375 1739.203125 413.546875 1725.765625 371.671875 c 0 + 1712.328125 329.71875 1693.265625 294.875 1668.65625 266.984375 c 0 + 1643.96875 239.171875 1614.203125 218.234375 1579.359375 204.09375 c 0 + 1544.4375 190.03125 1505.609375 183 1462.71875 183 c 1 + 1383.68261719 183 1304.64550781 183 1225.609375 183 c 1 + 1225.609375 406.359375 1225.609375 629.71875 1225.609375 853.078125 c 1 +1462.71875 279.015625 m 1 + 1512.640625 279.015625 1552.953125 294.71875 1583.65625 326.046875 c 0 + 1614.359375 357.375 1629.75 403.46875 1629.75 464.25 c 1 + 1629.75 500.109375 1629.75 535.96875 1629.75 571.828125 c 1 + 1629.75 632.609375 1614.359375 678.703125 1583.65625 710.03125 c 0 + 1552.953125 741.4375 1512.640625 757.0625 1462.71875 757.0625 c 1 + 1419.828125 757.0625 1376.9375 757.0625 1334.046875 757.0625 c 1 + 1334.046875 597.713867188 1334.046875 438.364257812 1334.046875 279.015625 c 1 + 1376.9375 279.015625 1419.828125 279.015625 1462.71875 279.015625 c 1 +EndSplineSet +EndChar + +StartChar: uniE135 +Encoding: 57653 57653 54 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: -253.33 92.1094<1088.19 1264.07> -111.299 85.4688<453.891 672.797 775.453 866.703> 329.326 98.9062<642.87 672.797> 347.607 92.1094<1088.19 1264.07> 624.17 90.2344<498.707 724.268 1002.88 1191 1297.56 1460.84> 1208.78 96.9531<503.376 719.013 1142.05 1191> +VStem: 331.156 115.156<771.976 1149.28> 672.797 102.656<-241.846 -111.299 -25.8301 329.326> 933.266 115.156<-121.3 307.598> 1191 106.562<714.404 1215.5> 1303.89 115.156<-122.103 308.491> +DStem2: 361.703 -18.1738 453.891 -25.8301 0.512884 0.858458<40.7089 454.423> 961.625 1108.94 1027.88 1049.48 0.683541 0.729912<1.41678 229.335> +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: -253.33 92.1094<1088.19 1264.07> -111.299 85.4688<453.891 672.797 775.453 866.703> 329.326 98.9062<642.87 672.797> 347.607 92.1094<1088.19 1264.07> 624.17 90.2344<498.707 724.268 1002.88 1191 1297.56 1460.84> 1208.78 96.9531<503.376 719.013 1142.05 1191> +VStem: 331.156 115.156<771.976 1149.28> 672.797 102.656<-241.846 -111.299 -25.8301 329.326> 933.266 115.156<-121.3 307.598> 1191 106.562<714.404 1215.5> 1303.89 115.156<-122.103 308.491> +DStem2: 361.703 -18.1738 453.891 -25.8301 0.512884 0.858458<40.7089 454.423> 961.625 1108.94 1027.88 1049.48 0.683541 0.729912<1.41678 229.335> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +672.796875 -241.845703125 m 1xefe0 + 672.796875 -198.330078125 672.796875 -154.814453125 672.796875 -111.298828125 c 1 + 569.098632812 -111.298828125 465.401367188 -111.298828125 361.703125 -111.298828125 c 1 + 361.703125 -80.2568359375 361.703125 -49.2158203125 361.703125 -18.173828125 c 1 + 452.276367188 130.627929688 542.848632812 279.430664062 633.421875 428.232421875 c 1 + 680.765625 428.232421875 728.109375 428.232421875 775.453125 428.232421875 c 1 + 775.453125 276.877929688 775.453125 125.524414062 775.453125 -25.830078125 c 1 + 805.870117188 -25.830078125 836.286132812 -25.830078125 866.703125 -25.830078125 c 1 + 866.703125 -54.3193359375 866.703125 -82.8095703125 866.703125 -111.298828125 c 1 + 836.286132812 -111.298828125 805.870117188 -111.298828125 775.453125 -111.298828125 c 1 + 775.453125 -154.814453125 775.453125 -198.330078125 775.453125 -241.845703125 c 1 + 741.234375 -241.845703125 707.015625 -241.845703125 672.796875 -241.845703125 c 1xefe0 +453.890625 -25.830078125 m 1 + 526.859375 -25.830078125 599.828125 -25.830078125 672.796875 -25.830078125 c 1 + 672.796875 92.5556640625 672.796875 210.940429688 672.796875 329.326171875 c 1 + 670.557617188 329.326171875 668.317382812 329.326171875 666.078125 329.326171875 c 1 + 595.348632812 210.940429688 524.620117188 92.5556640625 453.890625 -25.830078125 c 1 +1176.078125 -253.330078125 m 0 + 1134.515625 -253.330078125 1098.421875 -245.517578125 1067.640625 -229.814453125 c 0 + 1037.015625 -214.189453125 1011.703125 -191.611328125 991.859375 -162.158203125 c 0 + 972.015625 -132.705078125 957.328125 -96.533203125 947.640625 -53.720703125 c 0 + 938.109375 -10.830078125 933.265625 38.154296875 933.265625 93.232421875 c 0 + 933.265625 147.607421875 938.109375 196.357421875 947.640625 239.560546875 c 0 + 957.328125 282.763671875 972.015625 319.091796875 991.859375 348.544921875 c 0 + 1011.703125 377.998046875 1037.015625 400.576171875 1067.640625 416.201171875 c 0 + 1098.421875 431.904296875 1134.515625 439.716796875 1176.078125 439.716796875 c 0xdfe0 + 1259.359375 439.716796875 1320.609375 409.326171875 1359.984375 348.544921875 c 0 + 1399.359375 287.763671875 1419.046875 202.607421875 1419.046875 93.232421875 c 256 + 1419.046875 -16.220703125 1399.359375 -101.376953125 1359.984375 -162.158203125 c 0 + 1320.609375 -222.939453125 1259.359375 -253.330078125 1176.078125 -253.330078125 c 0 +1176.078125 -161.220703125 m 256 + 1199.203125 -161.220703125 1218.890625 -156.533203125 1235.140625 -147.314453125 c 0 + 1251.546875 -138.017578125 1264.828125 -124.736328125 1274.984375 -107.470703125 c 0 + 1285.296875 -90.126953125 1292.640625 -69.501953125 1297.171875 -45.517578125 c 0 + 1301.546875 -21.533203125 1303.890625 5.185546875 1303.890625 34.638671875 c 1 + 1303.890625 73.6748046875 1303.890625 112.711914062 1303.890625 151.748046875 c 1 + 1303.890625 181.201171875 1301.546875 207.919921875 1297.171875 231.904296875 c 0 + 1292.640625 255.888671875 1285.296875 276.591796875 1274.984375 293.857421875 c 0 + 1264.828125 311.123046875 1251.546875 324.404296875 1235.140625 333.701171875 c 0 + 1218.890625 342.919921875 1199.203125 347.607421875 1176.078125 347.607421875 c 256 + 1153.109375 347.607421875 1133.421875 342.919921875 1117.171875 333.701171875 c 0 + 1100.765625 324.404296875 1087.484375 311.123046875 1077.328125 293.857421875 c 0 + 1067.015625 276.591796875 1059.671875 255.888671875 1055.140625 231.904296875 c 0 + 1050.765625 207.919921875 1048.421875 181.201171875 1048.421875 151.748046875 c 1 + 1048.421875 112.711914062 1048.421875 73.6748046875 1048.421875 34.638671875 c 1 + 1048.421875 5.185546875 1050.765625 -21.533203125 1055.140625 -45.517578125 c 0 + 1059.671875 -69.501953125 1067.015625 -90.126953125 1077.328125 -107.470703125 c 0 + 1087.484375 -124.736328125 1100.765625 -138.017578125 1117.171875 -147.314453125 c 0 + 1133.421875 -156.533203125 1153.109375 -161.220703125 1176.078125 -161.220703125 c 256 +612.40625 612.685546875 m 0 + 524.75 612.685546875 456 642.216796875 406 701.435546875 c 0 + 356.15625 760.654296875 331.15625 846.591796875 331.15625 959.248046875 c 0 + 331.15625 1015.49804688 337.5625 1065.10742188 350.375 1107.99804688 c 0 + 363.1875 1150.88867188 381.78125 1187.06054688 406 1216.51367188 c 0 + 430.375 1245.96679688 459.90625 1268.15429688 494.90625 1283.23242188 c 0 + 529.75 1298.23242188 568.96875 1305.73242188 612.40625 1305.73242188 c 0 + 670.6875 1305.73242188 719.4375 1292.99804688 758.8125 1267.37304688 c 0 + 798.1875 1241.74804688 829.125 1204.01367188 851.46875 1154.09179688 c 1 + 821.104492188 1137.45117188 790.739257812 1120.81054688 760.375 1104.16992188 c 1 + 748.8125 1136.20117188 731 1161.59179688 707.09375 1180.49804688 c 0 + 683.03125 1199.40429688 651.46875 1208.77929688 612.40625 1208.77929688 c 0 + 560.6875 1208.77929688 519.90625 1191.20117188 490.53125 1156.04492188 c 0 + 461.15625 1120.81054688 446.3125 1072.13867188 446.3125 1010.10742188 c 1 + 446.3125 976.174804688 446.3125 942.243164062 446.3125 908.310546875 c 1 + 446.3125 846.279296875 461.15625 797.607421875 490.53125 762.373046875 c 0 + 519.90625 727.216796875 560.6875 709.638671875 612.40625 709.638671875 c 0 + 652.71875 709.638671875 685.53125 720.029296875 710.84375 740.810546875 c 0 + 736.15625 761.591796875 754.90625 788.310546875 767.09375 820.966796875 c 1 + 796.208007812 803.362304688 825.323242188 785.758789062 854.4375 768.154296875 c 1 + 831.9375 719.560546875 800.6875 681.435546875 760.375 653.935546875 c 0 + 719.90625 626.435546875 670.6875 612.685546875 612.40625 612.685546875 c 0 +1002.875 624.169921875 m 1 + 1002.875 654.248046875 1002.875 684.326171875 1002.875 714.404296875 c 1 + 1065.58300781 714.404296875 1128.29199219 714.404296875 1191 714.404296875 c 1 + 1191 881.435546875 1191 1048.46679688 1191 1215.49804688 c 1 + 1188.44824219 1215.49804688 1185.89550781 1215.49804688 1183.34375 1215.49804688 c 1 + 1131.52050781 1160.15917969 1079.69824219 1104.82128906 1027.875 1049.48242188 c 1 + 1005.79199219 1069.29980469 983.708007812 1089.11816406 961.625 1108.93554688 c 1 + 1018.55175781 1170.70605469 1075.47949219 1232.47753906 1132.40625 1294.24804688 c 1 + 1187.45800781 1294.24804688 1242.51074219 1294.24804688 1297.5625 1294.24804688 c 1 + 1297.5625 1100.96679688 1297.5625 907.685546875 1297.5625 714.404296875 c 1 + 1351.98925781 714.404296875 1406.41699219 714.404296875 1460.84375 714.404296875 c 1 + 1460.84375 684.326171875 1460.84375 654.248046875 1460.84375 624.169921875 c 1 + 1308.1875 624.169921875 1155.53125 624.169921875 1002.875 624.169921875 c 1 +EndSplineSet +EndChar + +StartChar: uniE0F0 +Encoding: 57584 57584 55 +Width: 1792 +Flags: HW +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 1 +WasModified: 1 +WasOrder2: 0 +Layer: 1 +Width: 1792 +VWidth: 1792 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +SplineSet +0 1497.28125 m 1053 +NamedP: "cap heights and baselines for scaled letter icons" +EndSplineSet +EndUndoOperation +UndoOperation +Index: 1 +Type: 1 +WasModified: 1 +WasOrder2: 0 +Layer: 1 +Width: 1792 +VWidth: 1792 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +SplineSet +0 1488.28125 m 1053 +0 15.5 m 1 +NamedP: "1-char" + 1792 15.5 l 1025 +0 1020.6171875 m 1 +NamedP: "1-char" + 1792 1020.6171875 l 1025 +0 99.2001953125 m 1 +NamedP: "2-char" + 1792 99.2001953125 l 1025 +0 936.797851562 m 1 +NamedP: "2-char" + 1792 936.797851562 l 1025 +0 183 m 1 +NamedP: "3-char" + 1792 183 l 1025 +0 853.078125 m 1 +NamedP: "3-char" + 1792 853.078125 l 1025 +0 1294.24804688 m 1 +NamedP: "2-line" + 1792 1294.24804688 l 1025 +-0 -241.845703125 m 1 +NamedP: "2-line" + 1792 -241.845703125 l 1025 +-0 428.232421875 m 1 +NamedP: "2-line" + 1792 428.232421875 l 1025 +0 624.169921875 m 1 +NamedP: "2-line" + 1792 624.169921875 l 1025 +EndSplineSet +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +-717.389648438 -10.8251953125 m 8 +NamedP: "baseline 2" + 717.249023438 -10.8251953125 l 1024 +-896 0 m 8 +NamedP: "baseline 1" + 896 0 l 1024 +EndSplineSet +Comment: "O" +Colour: ff00ff +EndChar + +StartChar: uniE0F1 +Encoding: 57585 57585 56 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 15.5 139.688<684.242 1061.86> 460.461 135.352<684.242 1028.79> 880.93 139.688<684.242 1028.79> +VStem: 521.586 162.656<155.188 460.461 595.812 880.93> 1062.99 171.328<627.723 849.019> 1098.97 171.445<189.391 426.257> +LayerCount: 2 +UndoRedoHistory +Layer: 0 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 15.5 139.688<684.242 1061.86> 460.461 135.352<684.242 1028.79> 880.93 139.688<684.242 1028.79> +VStem: 521.586 162.656<155.188 460.461 595.812 880.93> 1062.99 171.328<627.723 849.019> 1098.97 171.445<189.391 426.257> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Back +SplineSet +0 15.5 m 5 +NamedP: "1-char" + 1792 15.5 l 1029 +0 1020.6171875 m 5 +NamedP: "1-char" + 1792 1020.6171875 l 1029 +EndSplineSet +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 1 +WasModified: 0 +WasOrder2: 0 +Layer: 1 +Width: 1792 +VWidth: 1687 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +521.5859375 1020.6171875 m 1xf4 + 669.90625 1020.6171875 818.2265625 1020.6171875 966.546875 1020.6171875 c 1 + 1049.984375 1020.6171875 1115.609375 997.0625 1163.0703125 950.0703125 c 0 + 1210.6484375 903.078125 1234.3203125 840.1484375 1234.3203125 761.3984375 c 0xf8 + 1234.3203125 724.015625 1229.046875 692.0234375 1218.5 665.65625 c 0 + 1207.953125 639.2890625 1194.4765625 617.609375 1178.1875 600.8515625 c 0 + 1161.8984375 584.09375 1143.1484375 571.5546875 1122.0546875 563.46875 c 0 + 1100.9609375 555.265625 1080.3359375 550.2265625 1060.0625 548.3515625 c 1 + 1060.0625 545.4609375 1060.0625 542.5703125 1060.0625 539.6796875 c 1 + 1080.3359375 538.7421875 1102.6015625 533.9375 1127.09375 525.265625 c 0 + 1151.5859375 516.59375 1174.3203125 502.8828125 1195.53125 484.25 c 0 + 1216.625 465.5 1234.3203125 441.4765625 1248.734375 412.1796875 c 0 + 1263.1484375 382.8828125 1270.4140625 347.140625 1270.4140625 304.953125 c 0 + 1270.4140625 264.640625 1263.8515625 226.671875 1250.9609375 191.1640625 c 0 + 1237.953125 155.65625 1219.90625 124.953125 1196.9375 99.0546875 c 0 + 1173.8515625 73.15625 1146.546875 52.6484375 1114.7890625 37.765625 c 0 + 1083.1484375 22.8828125 1048.578125 15.5 1011.1953125 15.5 c 1 + 847.9921875 15.5 684.7890625 15.5 521.5859375 15.5 c 1 + 521.5859375 350.5390625 521.5859375 685.578125 521.5859375 1020.6171875 c 1xf4 +684.2421875 155.1875 m 1 + 777.3671875 155.1875 870.4921875 155.1875 963.6171875 155.1875 c 1 + 1005.921875 155.1875 1038.96875 166.203125 1062.9921875 188.3515625 c 0xf8 + 1087.015625 210.3828125 1098.96875 242.0234375 1098.96875 283.390625 c 1 + 1098.96875 299.6796875 1098.96875 315.96875 1098.96875 332.2578125 c 1xf4 + 1098.96875 373.625 1087.015625 405.265625 1062.9921875 427.296875 c 0 + 1038.96875 449.4453125 1005.921875 460.4609375 963.6171875 460.4609375 c 1 + 870.4921875 460.4609375 777.3671875 460.4609375 684.2421875 460.4609375 c 1 + 684.2421875 358.703125 684.2421875 256.9453125 684.2421875 155.1875 c 1 +684.2421875 595.8125 m 1 + 768.265625 595.8125 852.2890625 595.8125 936.3125 595.8125 c 1 + 976.625 595.8125 1007.796875 606.125 1029.828125 626.75 c 0 + 1051.9765625 647.375 1062.9921875 676.90625 1062.9921875 715.34375 c 1 + 1062.9921875 730.6953125 1062.9921875 746.046875 1062.9921875 761.3984375 c 1 + 1062.9921875 799.8359375 1051.9765625 829.3671875 1029.828125 849.9921875 c 0 + 1007.796875 870.6171875 976.625 880.9296875 936.3125 880.9296875 c 1 + 852.2890625 880.9296875 768.265625 880.9296875 684.2421875 880.9296875 c 1 + 684.2421875 785.890625 684.2421875 690.8515625 684.2421875 595.8125 c 1 +EndSplineSet +EndChar + +StartChar: uniE0F2 +Encoding: 57586 57586 57 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 325.958 116.406<389.164 636.43> 811.993 124.805<499.082 527.573> +VStem: 145.609 137.891<99.2002 237.091> 745.609 141.602<99.2002 240.802> 1220.41 135.547<99.2002 492.633> +DStem2: 145.609 99.2002 283.5 99.2002 0.303392 0.952866<41.8349 280.126 400.882 789.887> 601.664 936.798 516.312 811.993 0.306233 -0.951957<92.6712 481.326 602.427 841.437> 1087.21 936.798 932.328 936.798 0.479431 -0.877579<0 425.309> 1294.83 563.556 1355.96 431.622 0.477305 0.878738<0 424.748> +LayerCount: 2 +UndoRedoHistory +Layer: 0 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 325.958 116.406<389.164 636.43> 811.993 124.805<499.082 527.573> +VStem: 145.609 137.891<99.2002 237.091> 745.609 141.602<99.2002 240.802> 1220.41 135.547<99.2002 492.633> +DStem2: 145.609 99.2002 283.5 99.2002 0.303392 0.952866<41.8349 280.126 400.882 789.887> 601.664 936.798 516.312 811.993 0.306233 -0.951957<92.6712 481.326 602.427 841.437> 1087.21 936.798 932.328 936.798 0.479431 -0.877579<0 425.309> 1294.83 563.556 1355.96 431.622 0.477305 0.878738<0 424.748> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Back +SplineSet +0 99.2001953125 m 5 +NamedP: "2-char" + 1792 99.2001953125 l 1029 +0 936.797851562 m 5 +NamedP: "2-char" + 1792 936.797851562 l 1029 +EndSplineSet +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 1 +WasModified: 0 +WasOrder2: 0 +Layer: 1 +Width: 1792 +VWidth: 1687 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +745.609375 99.2001953125 m 1 + 720.4140625 174.786132812 695.21875 250.372070312 670.0234375 325.958007812 c 1 + 565.596679688 325.958007812 461.168945312 325.958007812 356.7421875 325.958007812 c 1 + 332.328125 250.372070312 307.9140625 174.786132812 283.5 99.2001953125 c 1 + 237.536132812 99.2001953125 191.573242188 99.2001953125 145.609375 99.2001953125 c 1 + 240.791992188 378.399414062 335.973632812 657.598632812 431.15625 936.797851562 c 1 + 487.9921875 936.797851562 544.828125 936.797851562 601.6640625 936.797851562 c 1 + 696.846679688 657.598632812 792.028320312 378.399414062 887.2109375 99.2001953125 c 1 + 840.010742188 99.2001953125 792.809570312 99.2001953125 745.609375 99.2001953125 c 1 +516.3125 811.993164062 m 1 + 514.359375 811.993164062 512.40625 811.993164062 510.453125 811.993164062 c 1 + 470.0234375 688.783203125 429.59375 565.573242188 389.1640625 442.364257812 c 1 + 471.5859375 442.364257812 554.0078125 442.364257812 636.4296875 442.364257812 c 1 + 596.390625 565.573242188 556.3515625 688.783203125 516.3125 811.993164062 c 1 +1220.4140625 99.2001953125 m 1 + 1220.4140625 209.193359375 1220.4140625 319.186523438 1220.4140625 429.180664062 c 1 + 1124.38574219 598.385742188 1028.35644531 767.591796875 932.328125 936.797851562 c 1 + 983.956054688 936.797851562 1035.58300781 936.797851562 1087.2109375 936.797851562 c 1 + 1155.1796875 812.383789062 1223.1484375 687.969726562 1291.1171875 563.555664062 c 1 + 1292.35449219 563.555664062 1293.59082031 563.555664062 1294.828125 563.555664062 c 1 + 1362.40625 687.969726562 1429.984375 812.383789062 1497.5625 936.797851562 c 1 + 1547.171875 936.797851562 1596.78125 936.797851562 1646.390625 936.797851562 c 5 + 1549.58105469 768.405273438 1452.77050781 600.013671875 1355.9609375 431.622070312 c 1 + 1355.9609375 320.814453125 1355.9609375 210.006835938 1355.9609375 99.2001953125 c 5 + 1310.77832031 99.2001953125 1265.59667969 99.2001953125 1220.4140625 99.2001953125 c 1 +EndSplineSet +EndChar + +StartChar: uniE0F3 +Encoding: 57587 57587 58 +Width: 1792 +VWidth: 1687 +Flags: W +HStem: 171.516 89.2188<906.667 1116.84 1445.69 1645.37> 183 108.516<198.32 221.367 546.758 569.805> 449.875 87.3438<1569.19 1693.09> 750.344 102.734<371.133 393.242> 775.344 89.2188<935.851 1133.42 1446.32 1654.53> +VStem: 0 103.75<749.328 853.078> 321.719 123.75<751.086 853.078> 664.375 99.8438<753.234 853.078> 812.781 101.719<608.533 755.771> 1137.31 101.719<281.429 444.709> 1288.88 109.531<309.707 726.324> 1701.69 90.3125<183 281.906 305.738 449.875> +DStem2: 103.75 853.078 0 853.078 0.190374 -0.981712<0 567.853> 216.094 291.516 355.312 595.812 0.136058 0.990701<4.46299 473.288> 530.938 445.109 387.969 750.344 0.136058 -0.990701<-318.35 155.035> 585.625 446.984 617.344 183 0.190374 0.981712<-154.194 413.659> 1006.69 581.438 988.406 485.422 0.978371 -0.206857<-75.1218 135.909> +LayerCount: 2 +UndoRedoHistory +Layer: 0 +Undoes +UndoOperation +Index: 0 +Type: 12 +WasModified: 0 +WasOrder2: 0 +Layer: 0 +HStem: 171.516 89.2188<906.667 1116.84 1445.69 1645.37> 183 108.516<198.32 221.367 546.758 569.805> 449.875 87.3438<1569.19 1693.09> 750.344 102.734<371.133 393.242> 775.344 89.2188<935.851 1133.42 1446.32 1654.53> +VStem: 0 103.75<749.328 853.078> 321.719 123.75<751.086 853.078> 664.375 99.8438<753.234 853.078> 812.781 101.719<608.533 755.771> 1137.31 101.719<281.429 444.709> 1288.88 109.531<309.707 726.324> 1701.69 90.3125<183 281.906 305.738 449.875> +DStem2: 103.75 853.078 0 853.078 0.190374 -0.981712<0 567.853> 216.094 291.516 355.312 595.812 0.136058 0.990701<4.46299 473.288> 530.938 445.109 387.969 750.344 0.136058 -0.990701<-318.35 155.035> 585.625 446.984 617.344 183 0.190374 0.981712<-154.194 413.659> 1006.69 581.438 988.406 485.422 0.978371 -0.206857<-75.1218 135.909> +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Back +SplineSet +0 183 m 5 +NamedP: "3-char" + 1792 183 l 1029 +0 853.078125 m 5 +NamedP: "3-char" + 1792 853.078125 l 1029 +EndSplineSet +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 1 +WasModified: 0 +WasOrder2: 0 +Layer: 1 +Width: 1792 +VWidth: 1687 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +142.1875 183 m 5x77f0 + 94.7919921875 406.359375 47.3955078125 629.71875 0 853.078125 c 5 + 34.5830078125 853.078125 69.1669921875 853.078125 103.75 853.078125 c 5 + 130 717.713867188 156.25 582.348632812 182.5 446.984375 c 5 + 189.53125 395.161132812 196.5625 343.338867188 203.59375 291.515625 c 5 + 207.760742188 291.515625 211.926757812 291.515625 216.09375 291.515625 c 5 + 223.125 342.713867188 230.15625 393.911132812 237.1875 445.109375 c 5 + 265.364257812 581.098632812 293.541992188 717.088867188 321.71875 853.078125 c 5 + 362.96875 853.078125 404.21875 853.078125 445.46875 853.078125 c 5 + 473.958007812 717.088867188 502.448242188 581.098632812 530.9375 445.109375 c 5 + 537.96875 393.911132812 545 342.713867188 552.03125 291.515625 c 5 + 556.198242188 291.515625 560.364257812 291.515625 564.53125 291.515625 c 5 + 571.5625 343.338867188 578.59375 395.161132812 585.625 446.984375 c 5 + 611.875 582.348632812 638.125 717.713867188 664.375 853.078125 c 5 + 697.65625 853.078125 730.9375 853.078125 764.21875 853.078125 c 5 + 715.260742188 629.71875 666.301757812 406.359375 617.34375 183 c 5 + 576.71875 183 536.09375 183 495.46875 183 c 5 + 466.666992188 320.604492188 437.864257812 458.208007812 409.0625 595.8125 c 5 + 402.03125 647.323242188 395 698.833007812 387.96875 750.34375 c 5 + 384.114257812 750.34375 380.260742188 750.34375 376.40625 750.34375 c 5 + 369.375 698.833007812 362.34375 647.323242188 355.3125 595.8125 c 5 + 325.208007812 458.208007812 295.104492188 320.604492188 265 183 c 5 + 224.0625 183 183.125 183 142.1875 183 c 5x77f0 +1017.3125 171.515625 m 4xaff0 + 967.3125 171.515625 924.03125 180.890625 887.15625 199.796875 c 4 + 850.4375 218.703125 818.875 246.046875 792.625 281.90625 c 5 + 815.958007812 303.338867188 839.291992188 324.770507812 862.625 346.203125 c 5 + 882.46875 318.703125 905.28125 297.53125 930.90625 282.84375 c 4 + 956.375 268.15625 985.59375 260.734375 1018.25 260.734375 c 4 + 1097.625 260.734375 1137.3125 297.21875 1137.3125 370.1875 c 4 + 1137.3125 399.640625 1130.125 422.21875 1116.0625 437.84375 c 4 + 1102 453.546875 1077.78125 465.578125 1043.09375 473.859375 c 5 + 1024.86425781 477.713867188 1006.63574219 481.567382812 988.40625 485.421875 c 5 + 928.25 498.859375 884.03125 520.421875 855.4375 550.1875 c 4 + 827 579.953125 812.78125 621.75 812.78125 675.5 c 4 + 812.78125 737.53125 831.53125 784.5625 868.875 816.59375 c 4 + 906.375 848.625 958.71875 864.5625 1025.90625 864.5625 c 4 + 1073.875 864.5625 1114.34375 856.4375 1147.3125 840.109375 c 4 + 1180.28125 823.78125 1208.875 798.390625 1233.25 763.78125 c 5 + 1209.86425781 743.3125 1186.47949219 722.84375 1163.09375 702.375 c 5 + 1145.90625 726.671875 1126.53125 744.953125 1105.125 757.0625 c 4 + 1083.71875 769.25 1056.53125 775.34375 1024.03125 775.34375 c 4 + 987.46875 775.34375 960.125 767.765625 941.84375 752.765625 c 4 + 923.71875 737.6875 914.5 712.921875 914.5 678.390625 c 4 + 914.5 650.1875 921.6875 628.9375 936.0625 614.484375 c 4 + 950.59375 600.109375 974.03125 589.09375 1006.6875 581.4375 c 5 + 1024.91699219 577.270507812 1043.14550781 573.104492188 1061.375 568.9375 c 5 + 1093.40625 561.90625 1120.59375 553.078125 1142.9375 542.53125 c 4 + 1165.4375 531.984375 1183.875 519.015625 1198.25 503.625 c 4 + 1212.625 488.3125 1222.9375 470.1875 1229.34375 449.40625 c 4 + 1235.75 428.625 1239.03125 404.40625 1239.03125 376.90625 c 4 + 1239.03125 309.71875 1219.65625 258.703125 1180.90625 223.78125 c 4 + 1142.15625 188.9375 1087.625 171.515625 1017.3125 171.515625 c 4xaff0 +1701.6875 281.90625 m 5 + 1697.83300781 281.90625 1693.97949219 281.90625 1690.125 281.90625 c 5 + 1683.875 249.875 1667.46875 223.46875 1641.21875 202.6875 c 4 + 1614.96875 181.90625 1577.9375 171.515625 1529.8125 171.515625 c 4xa7f0 + 1495.28125 171.515625 1463.40625 177.84375 1434.34375 190.65625 c 4 + 1405.28125 203.46875 1379.8125 223.78125 1358.09375 251.671875 c 4 + 1336.21875 279.484375 1319.34375 315.34375 1307.15625 359.171875 c 4 + 1294.96875 403 1288.875 455.65625 1288.875 517.0625 c 260 + 1288.875 578.546875 1294.8125 631.125 1306.6875 675.03125 c 4 + 1318.5625 718.859375 1335.75 754.875 1358.5625 783 c 4 + 1381.21875 811.125 1408.5625 831.828125 1440.59375 844.953125 c 4 + 1472.625 858.078125 1508.71875 864.5625 1549.03125 864.5625 c 4 + 1608.5625 864.5625 1657 851.828125 1694.03125 826.203125 c 4 + 1731.21875 800.578125 1759.96875 764.09375 1780.4375 716.75 c 5 + 1752.625 700.421875 1724.8125 684.09375 1697 667.765625 c 5 + 1685.4375 700.421875 1667.9375 726.359375 1644.65625 745.578125 c 4 + 1621.21875 764.796875 1589.65625 774.328125 1549.96875 774.328125 c 4 + 1502 774.328125 1464.8125 759.015625 1438.25 728.3125 c 4 + 1411.6875 697.53125 1398.40625 654.71875 1398.40625 599.640625 c 5 + 1398.40625 545.239257812 1398.40625 490.838867188 1398.40625 436.4375 c 5 + 1398.40625 381.4375 1411.6875 338.546875 1438.25 307.765625 c 4 + 1464.8125 277.0625 1502 261.75 1549.96875 261.75 c 4 + 1569.8125 261.75 1588.40625 264.5625 1605.75 270.34375 c 4 + 1622.9375 276.125 1638.25 284.40625 1651.375 295.34375 c 4 + 1664.5 306.203125 1674.65625 319.796875 1682 336.125 c 4 + 1689.34375 352.453125 1693.09375 370.8125 1693.09375 391.28125 c 5 + 1693.09375 410.8125 1693.09375 430.34375 1693.09375 449.875 c 5 + 1651.79199219 449.875 1610.48925781 449.875 1569.1875 449.875 c 5 + 1569.1875 478.989257812 1569.1875 508.104492188 1569.1875 537.21875 c 5 + 1643.45800781 537.21875 1717.72949219 537.21875 1792 537.21875 c 5 + 1792 419.145507812 1792 301.073242188 1792 183 c 5 + 1761.89550781 183 1731.79199219 183 1701.6875 183 c 5x6ff0 + 1701.6875 215.96875 1701.6875 248.9375 1701.6875 281.90625 c 5 +EndSplineSet +EndChar + +StartChar: uniE0F4 +Encoding: 57588 57588 59 +Width: 1792 +Flags: HW +HStem: -253.3 85.3906<331.166 506.082> -61.0391 130.176<891.389 1021.56> 95.1377 85.4687<356.078 505.623> 117.311 130.176<1455.12 1585.3> 612.716 89.2188<1388.21 1579.14> 624.2 92.1875<328.559 354.926> 897.794 85.4688<802.406 938.743> 1204.98 89.2969<802.406 1011.58 1380.73 1582.23> +VStem: 82.0938 106.562<1187.72 1294.28> 202.297 107.5<-147.64 75.4877> 493.891 104.688<1189.59 1294.28> 526.75 107.5<-147.355 74.3454> 700.609 101.797<624.2 897.794 983.263 1204.98> 1030.84 108.516<1002.53 1185.72> 1187.45 101.78<-25.0879 211.535> 1233.73 109.453<750.447 1168.03> +DStem2: 188.656 1294.28 82.0938 1294.28 0.271727 -0.962374<0 593.586> 891.389 69.1366 891.389 -61.0391 0.717299 0.696766<0 311.586> 1024.12 905.45 922.406 897.794 0.413517 -0.910496<0 262.054> 1289.23 -25.0879 1187.45 -248.968 0.735691 0.677318<0 314.262> +LayerCount: 2 +UndoRedoHistory +Layer: 0 +Undoes +UndoOperation +Index: 0 +Type: 1 +WasModified: 1 +WasOrder2: 0 +Layer: 2 +Width: 1792 +VWidth: 1792 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +SplineSet +418.234375 -251.3046875 m 4xe3dc + 346.59375 -251.3046875 292.6875 -229.2734375 256.515625 -185.1328125 c 4 + 220.34375 -140.9140625 202.296875 -76.6171875 202.296875 7.8359375 c 4 + 202.296875 48.1484375 207.375 88.4609375 217.609375 128.8515625 c 4 + 227.84375 169.1640625 242.609375 207.6796875 261.75 244.4765625 c 4 + 280.96875 281.2734375 303.859375 315.7265625 330.421875 347.6796875 c 4 + 356.984375 379.7109375 386.59375 407.2109375 419.25 430.2578125 c 5 + 465.004882812 430.2578125 510.760742188 430.2578125 556.515625 430.2578125 c 5 + 517.453125 400.1796875 483.859375 371.5078125 455.734375 344.3203125 c 4 + 427.53125 317.1328125 403.703125 290.1015625 384.171875 263.2265625 c 4 + 364.640625 236.3515625 348.859375 208.6953125 336.671875 180.1796875 c 4 + 324.484375 151.6640625 315.1875 120.8046875 308.859375 87.5234375 c 5 + 313 87.5234375 317.140625 87.5234375 321.28125 87.5234375 c 5 + 332.21875 118.2265625 349.484375 141.7421875 373.15625 158.0703125 c 4 + 396.828125 174.3984375 424.953125 182.6015625 457.609375 182.6015625 c 4 + 511.984375 182.6015625 555.03125 164.9453125 586.75 129.7890625 c 4 + 618.390625 94.5546875 634.25 42.7578125 634.25 -25.7578125 c 4 + 634.25 -96.7734375 615.890625 -152.1640625 579.09375 -191.8515625 c 4 + 542.296875 -231.5390625 488.625 -251.3046875 418.234375 -251.3046875 c 4xe3dc +418.234375 -165.9140625 m 260 + 490.578125 -165.9140625 526.75 -126.2265625 526.75 -46.8515625 c 5 + 526.75 -38.544921875 526.75 -30.2373046875 526.75 -21.9296875 c 5 + 526.75 57.4453125 490.578125 97.1328125 418.234375 97.1328125 c 260 + 345.96875 97.1328125 309.796875 57.4453125 309.796875 -21.9296875 c 5 + 309.796875 -30.2373046875 309.796875 -38.544921875 309.796875 -46.8515625 c 5 + 309.796875 -126.2265625 345.96875 -165.9140625 418.234375 -165.9140625 c 260 +278.890625 626.1953125 m 5xc7ec + 213.291992188 849.5546875 147.692382812 1072.9140625 82.09375 1296.2734375 c 5 + 117.614257812 1296.2734375 153.135742188 1296.2734375 188.65625 1296.2734375 c 5 + 228.317382812 1155.8046875 267.979492188 1015.3359375 307.640625 874.8671875 c 5 + 316.9375 822.705078125 326.234375 770.543945312 335.53125 718.3828125 c 5 + 339.671875 718.3828125 343.8125 718.3828125 347.953125 718.3828125 c 5 + 357.25 770.543945312 366.546875 822.705078125 375.84375 874.8671875 c 5 + 415.192382812 1015.3359375 454.541992188 1155.8046875 493.890625 1296.2734375 c 5 + 528.786132812 1296.2734375 563.682617188 1296.2734375 598.578125 1296.2734375 c 5 + 533.291992188 1072.9140625 468.004882812 849.5546875 402.71875 626.1953125 c 5 + 361.442382812 626.1953125 320.166992188 626.1953125 278.890625 626.1953125 c 5xc7ec +802.40625 626.1953125 m 5 + 768.473632812 626.1953125 734.541992188 626.1953125 700.609375 626.1953125 c 5 + 700.609375 849.5546875 700.609375 1072.9140625 700.609375 1296.2734375 c 5 + 788.942382812 1296.2734375 877.276367188 1296.2734375 965.609375 1296.2734375 c 5 + 1023.1875 1296.2734375 1066.546875 1279.1640625 1095.6875 1244.9453125 c 4 + 1124.75 1210.6484375 1139.359375 1161.5859375 1139.359375 1097.5234375 c 4 + 1139.359375 1045.7265625 1129.75 1003.7734375 1110.53125 971.8203125 c 4 + 1091.3125 939.7890625 1062.5625 918.3828125 1024.125 907.4453125 c 5 + 1066.703125 813.6953125 1109.28125 719.9453125 1151.859375 626.1953125 c 5 + 1114.09863281 626.1953125 1076.33886719 626.1953125 1038.578125 626.1953125 c 5 + 999.854492188 717.392578125 961.129882812 808.590820312 922.40625 899.7890625 c 5 + 882.40625 899.7890625 842.40625 899.7890625 802.40625 899.7890625 c 5 + 802.40625 808.590820312 802.40625 717.392578125 802.40625 626.1953125 c 5 +956.9375 985.2578125 m 5 + 981.234375 985.2578125 999.671875 991.5078125 1012.171875 1003.9296875 c 4 + 1024.59375 1016.4296875 1030.84375 1036.7421875 1030.84375 1064.9453125 c 5 + 1030.84375 1085.7265625 1030.84375 1106.5078125 1030.84375 1127.2890625 c 5 + 1030.84375 1155.4921875 1024.59375 1175.8046875 1012.171875 1188.3046875 c 4 + 999.671875 1200.7265625 981.234375 1206.9765625 956.9375 1206.9765625 c 5 + 905.426757812 1206.9765625 853.916992188 1206.9765625 802.40625 1206.9765625 c 5 + 802.40625 1133.0703125 802.40625 1059.1640625 802.40625 985.2578125 c 5 + 853.916992188 985.2578125 905.426757812 985.2578125 956.9375 985.2578125 c 5 +1487.171875 614.7109375 m 4xcbcd + 1448.109375 614.7109375 1413.109375 621.2734375 1382.09375 634.3203125 c 4 + 1351 647.4453125 1324.4375 668.1484375 1302.40625 696.2734375 c 4 + 1280.296875 724.3984375 1263.34375 760.4140625 1251.46875 804.2421875 c 4 + 1239.671875 848.1484375 1233.734375 900.4140625 1233.734375 961.2734375 c 260 + 1233.734375 1022.0546875 1239.671875 1074.3203125 1251.46875 1118.2265625 c 4 + 1263.34375 1162.0546875 1280.296875 1198.0703125 1302.40625 1226.1953125 c 4 + 1324.4375 1254.3203125 1351 1275.0234375 1382.09375 1288.1484375 c 4 + 1413.109375 1301.2734375 1448.109375 1307.7578125 1487.171875 1307.7578125 c 4 + 1544.125 1307.7578125 1589.75 1295.4921875 1623.96875 1270.8046875 c 4 + 1658.1875 1246.1953125 1685.609375 1209.2421875 1706.078125 1159.9453125 c 5 + 1677.27636719 1143.95507812 1648.47363281 1127.96582031 1619.671875 1111.9765625 c 5 + 1608.109375 1149.7109375 1592.015625 1176.8984375 1571.15625 1193.5390625 c 4 + 1550.375 1210.1796875 1522.40625 1218.5390625 1487.171875 1218.5390625 c 4 + 1441.78125 1218.5390625 1406.390625 1202.8359375 1381.078125 1171.5078125 c 4 + 1355.84375 1140.1015625 1343.1875 1096.8984375 1343.1875 1041.8984375 c 5 + 1343.1875 988.122070312 1343.1875 934.345703125 1343.1875 880.5703125 c 5 + 1343.1875 825.5703125 1355.84375 782.3671875 1381.078125 750.9609375 c 4 + 1406.390625 719.6328125 1441.78125 703.9296875 1487.171875 703.9296875 c 4 + 1523.03125 703.9296875 1552.015625 712.9140625 1574.046875 730.8046875 c 4 + 1596.15625 748.7734375 1613.265625 777.5234375 1625.453125 817.2109375 c 5 + 1653.60449219 800.5703125 1681.75488281 783.9296875 1709.90625 767.2890625 c 5 + 1688.8125 718.0703125 1660.609375 680.2578125 1625.453125 654.0078125 c 4 + 1590.21875 627.7578125 1544.125 614.7109375 1487.171875 614.7109375 c 4xcbcd +1289.23339844 437.409179688 m 5 + 1289.23339844 -23.0927734375 l 5 + 1585.29882812 249.481445312 l 5 + 1585.29882812 119.305664062 l 5 + 1187.45410156 -246.97265625 l 5xd3ce + 1187.45410156 213.530273438 l 5 + 891.388671875 -59.0439453125 l 5 + 891.388671875 71.1318359375 l 5 + 1289.23339844 437.409179688 l 5 +EndSplineSet +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Back +SplineSet +0 1294.24804688 m 5 +NamedP: "2-line" + 1792 1294.24804688 l 1029 +-0 -241.845703125 m 5 +NamedP: "2-line" + 1792 -241.845703125 l 1029 +-0 428.232421875 m 5 +NamedP: "2-line" + 1792 428.232421875 l 1029 +0 624.169921875 m 5 +NamedP: "2-line" + 1792 624.169921875 l 1029 +EndSplineSet +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 1 +WasModified: 0 +WasOrder2: 0 +Layer: 1 +Width: 1792 +VWidth: 1792 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +418.234375 -253.330078125 m 0xe3dc + 346.59375 -253.330078125 292.6875 -231.298828125 256.515625 -187.158203125 c 0 + 220.34375 -142.939453125 202.296875 -78.642578125 202.296875 5.810546875 c 0 + 202.296875 46.123046875 207.375 86.435546875 217.609375 126.826171875 c 0 + 227.84375 167.138671875 242.609375 205.654296875 261.75 242.451171875 c 0 + 280.96875 279.248046875 303.859375 313.701171875 330.421875 345.654296875 c 0 + 356.984375 377.685546875 386.59375 405.185546875 419.25 428.232421875 c 1 + 465.004882812 428.232421875 510.760742188 428.232421875 556.515625 428.232421875 c 1 + 517.453125 398.154296875 483.859375 369.482421875 455.734375 342.294921875 c 0 + 427.53125 315.107421875 403.703125 288.076171875 384.171875 261.201171875 c 0 + 364.640625 234.326171875 348.859375 206.669921875 336.671875 178.154296875 c 0 + 324.484375 149.638671875 315.1875 118.779296875 308.859375 85.498046875 c 1 + 313 85.498046875 317.140625 85.498046875 321.28125 85.498046875 c 1 + 332.21875 116.201171875 349.484375 139.716796875 373.15625 156.044921875 c 0 + 396.828125 172.373046875 424.953125 180.576171875 457.609375 180.576171875 c 0 + 511.984375 180.576171875 555.03125 162.919921875 586.75 127.763671875 c 0 + 618.390625 92.529296875 634.25 40.732421875 634.25 -27.783203125 c 0 + 634.25 -98.798828125 615.890625 -154.189453125 579.09375 -193.876953125 c 0 + 542.296875 -233.564453125 488.625 -253.330078125 418.234375 -253.330078125 c 0xe3dc +418.234375 -167.939453125 m 256 + 490.578125 -167.939453125 526.75 -128.251953125 526.75 -48.876953125 c 1 + 526.75 -40.5703125 526.75 -32.2626953125 526.75 -23.955078125 c 1 + 526.75 55.419921875 490.578125 95.107421875 418.234375 95.107421875 c 256 + 345.96875 95.107421875 309.796875 55.419921875 309.796875 -23.955078125 c 1 + 309.796875 -32.2626953125 309.796875 -40.5703125 309.796875 -48.876953125 c 1 + 309.796875 -128.251953125 345.96875 -167.939453125 418.234375 -167.939453125 c 256 +278.890625 624.169921875 m 1xc7ec + 213.291992188 847.529296875 147.692382812 1070.88867188 82.09375 1294.24804688 c 1 + 117.614257812 1294.24804688 153.135742188 1294.24804688 188.65625 1294.24804688 c 1 + 228.317382812 1153.77929688 267.979492188 1013.31054688 307.640625 872.841796875 c 1 + 316.9375 820.6796875 326.234375 768.518554688 335.53125 716.357421875 c 1 + 339.671875 716.357421875 343.8125 716.357421875 347.953125 716.357421875 c 1 + 357.25 768.518554688 366.546875 820.6796875 375.84375 872.841796875 c 1 + 415.192382812 1013.31054688 454.541992188 1153.77929688 493.890625 1294.24804688 c 1 + 528.786132812 1294.24804688 563.682617188 1294.24804688 598.578125 1294.24804688 c 1 + 533.291992188 1070.88867188 468.004882812 847.529296875 402.71875 624.169921875 c 1 + 361.442382812 624.169921875 320.166992188 624.169921875 278.890625 624.169921875 c 1xc7ec +802.40625 624.169921875 m 1 + 768.473632812 624.169921875 734.541992188 624.169921875 700.609375 624.169921875 c 1 + 700.609375 847.529296875 700.609375 1070.88867188 700.609375 1294.24804688 c 1 + 788.942382812 1294.24804688 877.276367188 1294.24804688 965.609375 1294.24804688 c 1 + 1023.1875 1294.24804688 1066.546875 1277.13867188 1095.6875 1242.91992188 c 0 + 1124.75 1208.62304688 1139.359375 1159.56054688 1139.359375 1095.49804688 c 0 + 1139.359375 1043.70117188 1129.75 1001.74804688 1110.53125 969.794921875 c 0 + 1091.3125 937.763671875 1062.5625 916.357421875 1024.125 905.419921875 c 1 + 1066.703125 811.669921875 1109.28125 717.919921875 1151.859375 624.169921875 c 1 + 1114.09863281 624.169921875 1076.33886719 624.169921875 1038.578125 624.169921875 c 1 + 999.854492188 715.3671875 961.129882812 806.565429688 922.40625 897.763671875 c 1 + 882.40625 897.763671875 842.40625 897.763671875 802.40625 897.763671875 c 1 + 802.40625 806.565429688 802.40625 715.3671875 802.40625 624.169921875 c 1 +956.9375 983.232421875 m 1 + 981.234375 983.232421875 999.671875 989.482421875 1012.171875 1001.90429688 c 0 + 1024.59375 1014.40429688 1030.84375 1034.71679688 1030.84375 1062.91992188 c 1 + 1030.84375 1083.70117188 1030.84375 1104.48242188 1030.84375 1125.26367188 c 1 + 1030.84375 1153.46679688 1024.59375 1173.77929688 1012.171875 1186.27929688 c 0 + 999.671875 1198.70117188 981.234375 1204.95117188 956.9375 1204.95117188 c 1 + 905.426757812 1204.95117188 853.916992188 1204.95117188 802.40625 1204.95117188 c 1 + 802.40625 1131.04492188 802.40625 1057.13867188 802.40625 983.232421875 c 1 + 853.916992188 983.232421875 905.426757812 983.232421875 956.9375 983.232421875 c 1 +1487.171875 612.685546875 m 0xcbcd + 1448.109375 612.685546875 1413.109375 619.248046875 1382.09375 632.294921875 c 0 + 1351 645.419921875 1324.4375 666.123046875 1302.40625 694.248046875 c 0 + 1280.296875 722.373046875 1263.34375 758.388671875 1251.46875 802.216796875 c 0 + 1239.671875 846.123046875 1233.734375 898.388671875 1233.734375 959.248046875 c 256 + 1233.734375 1020.02929688 1239.671875 1072.29492188 1251.46875 1116.20117188 c 0 + 1263.34375 1160.02929688 1280.296875 1196.04492188 1302.40625 1224.16992188 c 0 + 1324.4375 1252.29492188 1351 1272.99804688 1382.09375 1286.12304688 c 0 + 1413.109375 1299.24804688 1448.109375 1305.73242188 1487.171875 1305.73242188 c 0 + 1544.125 1305.73242188 1589.75 1293.46679688 1623.96875 1268.77929688 c 0 + 1658.1875 1244.16992188 1685.609375 1207.21679688 1706.078125 1157.91992188 c 1 + 1677.27636719 1141.9296875 1648.47363281 1125.94042969 1619.671875 1109.95117188 c 1 + 1608.109375 1147.68554688 1592.015625 1174.87304688 1571.15625 1191.51367188 c 0 + 1550.375 1208.15429688 1522.40625 1216.51367188 1487.171875 1216.51367188 c 0 + 1441.78125 1216.51367188 1406.390625 1200.81054688 1381.078125 1169.48242188 c 0 + 1355.84375 1138.07617188 1343.1875 1094.87304688 1343.1875 1039.87304688 c 1 + 1343.1875 986.096679688 1343.1875 932.3203125 1343.1875 878.544921875 c 1 + 1343.1875 823.544921875 1355.84375 780.341796875 1381.078125 748.935546875 c 0 + 1406.390625 717.607421875 1441.78125 701.904296875 1487.171875 701.904296875 c 0 + 1523.03125 701.904296875 1552.015625 710.888671875 1574.046875 728.779296875 c 0 + 1596.15625 746.748046875 1613.265625 775.498046875 1625.453125 815.185546875 c 1 + 1653.60449219 798.544921875 1681.75488281 781.904296875 1709.90625 765.263671875 c 1 + 1688.8125 716.044921875 1660.609375 678.232421875 1625.453125 651.982421875 c 0 + 1590.21875 625.732421875 1544.125 612.685546875 1487.171875 612.685546875 c 0xcbcd +1289.23339844 435.383789062 m 1 + 1289.23339844 -25.1181640625 l 1 + 1585.29882812 247.456054688 l 1 + 1585.29882812 117.280273438 l 1 + 1187.45410156 -248.998046875 l 1xd3ce + 1187.45410156 211.504882812 l 1 + 891.388671875 -61.0693359375 l 1 + 891.388671875 69.1064453125 l 1 + 1289.23339844 435.383789062 l 1 +EndSplineSet +EndChar + +StartChar: uniE136 +Encoding: 57654 57654 60 +Width: 1792 +Flags: HW +LayerCount: 2 +Fore +SplineSet +92 677 m 25 + 1700 677 l 25 + 1700 607 l 1 + 92 607 l 25 + 92 677 l 25 +EndSplineSet +EndChar + +StartChar: uniE139 +Encoding: 57657 57657 61 +Width: 1792 +Flags: HW +LayerCount: 2 +Fore +SplineSet +92 697 m 17 + 227.833184128 697 447.833007812 697 576 697 c 9 + 506 587 l 1 + 92 587 l 25 + 92 697 l 17 +1298 400.009804473 m 0 + 1149.99557198 400.009804473 978.301939614 182.978627264 937.502759621 122.102053897 c 0 + 932.819590546 115.146853107 807.713428283 -69.2653328143 650.703185768 -155.298342412 c 0 + 603.151061335 -181.354301005 550.315684332 -199.990195527 494 -199.990195527 c 0 + 385.93393271 -199.990195527 277.823349205 -130.541577574 180.364460714 -33.0826890824 c 0 + 102.345482194 44.9362894375 51.571041257 120.507300119 50.4972403793 122.102053897 c 0 + 44.8389497751 130.50545578 42.009804473 140.25272789 42.009804473 150 c 0 + 42.009804473 177.625937316 64.3743280499 199.990195527 92 199.990195527 c 0 + 98.5132748071 199.990195527 119.741348857 198.335684851 133.502759621 177.897946103 c 0 + 174.208972624 117.160089048 345.939397819 -100.009804473 494 -100.009804473 c 0 + 642.004426081 -100.009804473 813.698055818 117.021366792 854.497240379 177.897946103 c 0 + 859.180361743 184.853076837 984.286541968 369.265316513 1141.29681423 455.298342412 c 0 + 1188.84893867 481.354301005 1241.68431567 499.990195527 1298 499.990195527 c 0 + 1406.06606729 499.990195527 1514.1766508 430.541577574 1611.63553929 333.082689082 c 0 + 1689.65451676 255.063711608 1740.42896045 179.492697162 1741.50275813 177.897948311 c 0 + 1747.16104973 169.494545927 1749.99019553 159.747272963 1749.99019553 150 c 0 + 1749.99019553 122.374062684 1727.62567195 100.009804473 1700 100.009804473 c 0 + 1693.4867253 100.009804473 1672.25865286 101.664314962 1658.49724187 122.102051689 c 0 + 1617.79101811 182.839923905 1446.06059764 400.009804473 1298 400.009804473 c 0 +1216 697 m 25 + 1700 697 l 25 + 1700 587 l 1 + 1286 587 l 25 + 1216 697 l 25 +790 880 m 29 + 790 630 l 5 + 640 630 l 5 + 896 390 l 5 + 1152 630 l 5 + 1002 630 l 5 + 1002 880 l 5 + 790 880 l 29 +99.5087890625 1039.79980469 m 0 + 99.5087890625 1062.69042969 104.517578125 1149.43945312 180.448242188 1149.43945312 c 0 + 204.2109375 1149.43945312 221.102539062 1139.33984375 237.377929688 1100.60253906 c 1 + 243.907226562 1104.19824219 253.744140625 1107.96289062 266.291992188 1107.96289062 c 0 + 321.188476562 1107.96289062 325.920898438 1049.36523438 328.561523438 1016.66113281 c 1 + 334.37109375 1024.6640625 348.95703125 1040.48339844 373.474609375 1040.48339844 c 0 + 419.530273438 1040.48339844 373.942418531 963.223860309 379.06572425 933.299664616 c 1 + 381.327793283 933.894620869 385.938268172 934.990195527 392 934.990195527 c 0 + 411.827714938 934.990195527 488.111328125 963.079101562 505.390625 934.30078125 c 1 + 510.904296875 936.8203125 521.263671875 941.403320312 536.791015625 941.403320312 c 0 + 546.374023438 941.403320312 555 939.602539062 563.022460938 936.067382812 c 1 + 571.788085938 960.19921875 575.23828125 985.63671875 588.708984375 1011.61816406 c 0 + 595.147460938 1028.38769531 606.12890625 1056.99023438 640.709960938 1056.99023438 c 0 + 644.639648438 1056.99023438 652.493164062 1056.53417969 660.255859375 1053.40625 c 1 + 665.560546875 1059.63671875 670.994140625 1066.29980469 676.616210938 1073.24804688 c 0 + 716.349609375 1122.35546875 770.275390625 1175.79199219 816.799804688 1175.79199219 c 0 + 823.483398438 1175.79199219 837.6015625 1174.34082031 849.3359375 1163.43359375 c 1 + 871.3828125 1189.38476562 914.88671875 1270.59179688 954.5 1270.59179688 c 0 + 979.115234375 1270.59179688 1007.45019531 1202.10742188 1020.44824219 1180.60546875 c 1 + 1070.74316406 1223.50097656 1109.04394531 1284.6953125 1131.8984375 1331.69726562 c 0 + 1133.33789062 1334.65722656 1144.61523438 1355.79199219 1173.20019531 1355.79199219 c 0 + 1179.78808594 1355.79199219 1195.2109375 1354.33398438 1207.27148438 1341.93261719 c 1 + 1212.80566406 1351.27929688 1251.60449219 1413.39257812 1305.5 1413.39257812 c 0 + 1314.7578125 1413.39257812 1339.18847656 1411.47851562 1357.54785156 1389.74609375 c 1 + 1376.390625 1408.06738281 1403.87597656 1427.79199219 1427 1427.79199219 c 0 + 1461.81835938 1427.79199219 1477.15917969 1399.11425781 1494.55371094 1366.59570312 c 1 + 1500.68164062 1367.84082031 1506.94824219 1368.48046875 1513.140625 1368.48046875 c 0 + 1582.69140625 1368.48046875 1630.35546875 1292.50292969 1666.21972656 1218.80859375 c 1 + 1684.43457031 1217.25878906 1710.13574219 1206.66503906 1710.13574219 1159.22558594 c 0 + 1710.13574219 1150.05371094 1709.23242188 1141.41796875 1709.23242188 1132.12304688 c 0 + 1709.23242188 1126.859375 1728.49121094 1084.65136719 1728.49121094 1071 c 0 + 1728.49121094 1048.89941406 1708.36328125 1031.0078125 1683.5 1031.0078125 c 0 + 1663.57324219 1031.0078125 1646.45800781 1042.546875 1640.63085938 1058.82617188 c 0 + 1619.16308594 1118.80175781 1619.16308594 1118.80175781 1619.16308594 1132.79003906 c 0 + 1619.16308594 1135.296875 1619.22851562 1137.69335938 1619.32128906 1139.984375 c 0 + 1581.66796875 1159.54785156 1561.13476562 1260.28125 1513.80664062 1287.44921875 c 1 + 1505.60253906 1283.50683594 1495.08496094 1280.22558594 1482.78222656 1280.22558594 c 0 + 1441.12597656 1280.22558594 1422.16796875 1315.4296875 1415.76855469 1327.31347656 c 1 + 1381.70898438 1291.15332031 1371.77539062 1280.60742188 1348.70019531 1280.60742188 c 0 + 1341.39257812 1280.60742188 1312.05957031 1282.828125 1295.11816406 1317.14453125 c 1 + 1275.80371094 1291.15527344 1264.27246094 1251.75878906 1239.70996094 1220.78222656 c 0 + 1236.23046875 1216.39355469 1224.37792969 1203.80761719 1202.90039062 1203.80761719 c 0 + 1192.05175781 1203.80761719 1176.265625 1207.43945312 1161.0546875 1224.14453125 c 1 + 1136.83105469 1197.91308594 1109.80566406 1174.46875 1075.62011719 1145.31933594 c 0 + 1020.37011719 1098.20800781 1030.37011719 1078.20800781 1013.09960938 1078.20800781 c 0 + 1001.24023438 1078.20800781 966.395507812 1133.32226562 943.672851562 1170.82617188 c 1 + 923.020507812 1148.97265625 905.580078125 1094.11523438 880.40625 1071.73828125 c 0 + 857.72265625 1051.57519531 846.610351562 1047.80761719 833 1047.80761719 c 0 + 823.0625 1047.80761719 804.573242188 1050.96679688 789.580078125 1071.55078125 c 1 + 752.1640625 1036.72070312 701.99609375 953.989257812 659.7109375 947.580078125 c 1 + 646.875 902.78515625 635.311523438 862.428710938 587.28515625 839.092773438 c 0 + 580.58203125 835.8359375 573.141601562 834.208007812 565.700195312 834.208007812 c 0 + 559.9765625 834.208007812 544.49609375 834.208007812 528.258789062 851.236328125 c 1 + 520.1875 845.29296875 511.651367188 839.0078125 495.5 839.0078125 c 0 + 487.866210938 839.0078125 466.161132812 841.375 445.301757812 865.78515625 c 1 + 435.313476562 852.72265625 422.349609375 846.208007812 406.400390625 846.208007812 c 0 + 372.296875 846.208007812 362.993164062 873.900390625 359.765625 883.509765625 c 1 + 343.77734375 863.122070312 324.138671875 850.01953125 300.072265625 850.01953125 c 0 + 283.0859375 850.01953125 240.138671875 856.994140625 240.138671875 927.532226562 c 0 + 240.138671875 937.625 243.504799533 948.656539087 242.41015625 961.173828125 c 0 + 241.9140625 966.846679688 197.275390625 934.881835938 196.833007812 942 c 1 + 191.255859375 939.947265625 153.922015972 933.808561782 149 937.009804473 c 0 + 84.8836733809 978.710587881 152.290039062 944.85546875 142.833007812 963 c 1 + 134.045898438 955.189453125 156.018554688 999.80859375 144.49609375 999.80859375 c 0 + 119.635742188 999.80859375 99.5087890625 1017.70019531 99.5087890625 1039.79980469 c 0 +EndSplineSet +EndChar + +StartChar: uniE137 +Encoding: 57655 57655 62 +Width: 1792 +Flags: HW +LayerCount: 2 +Fore +SplineSet +92 677 m 1 + 1064.83334229 677 1700 1412.66674805 1700 1494 c 1 + 1700 872 1700 360 1700 -219 c 1 + 1700 -111.333190918 1052.83334265 607 92 607 c 1 + 92 627 92 645.666666667 92 677 c 1 +EndSplineSet +EndChar + +StartChar: uniE138 +Encoding: 57656 57656 63 +Width: 1792 +Flags: HW +LayerCount: 2 +Fore +SplineSet +1700 677 m 1 + 727.166992188 677 92 1412.66699219 92 1494 c 1 + 92 872 92 360 92 -219 c 1 + 92 -111.333007812 739.166992188 607 1700 607 c 1 + 1700 627 1700 645.666992188 1700 677 c 1 +EndSplineSet +EndChar + +StartChar: uniE13A +Encoding: 57658 57658 64 +Width: 1792 +Flags: HW +LayerCount: 2 +Fore +SplineSet +92 677 m 25 + 1700 677 l 25 + 1700 607 l 1 + 92 607 l 25 + 92 677 l 25 +EndSplineSet +EndChar + +StartChar: uniE13B +Encoding: 57659 57659 65 +Width: 1792 +Flags: HW +LayerCount: 2 +Fore +SplineSet +92 677 m 25 + 1700 677 l 25 + 1700 607 l 1 + 92 607 l 25 + 92 677 l 25 +EndSplineSet +EndChar + +StartChar: uniE13C +Encoding: 57660 57660 66 +Width: 1792 +Flags: HW +LayerCount: 2 +Fore +SplineSet +820 349 m 25 + 820 89 l 1 + 620 89 l 1 + 896 -201 l 1 + 1172 89 l 1 + 972 89 l 1 + 972 349 l 1 + 820 349 l 25 +820 953.591796875 m 25 + 820 1213.59179688 l 1 + 620 1213.59179688 l 1 + 896 1503.59179688 l 1 + 1172 1213.59179688 l 1 + 972 1213.59179688 l 1 + 972 953.591796875 l 1 + 820 953.591796875 l 25 +1700 642.479492188 m 1 + 1644 668.879882812 l 1 + 1530 725.040039062 l 1 + 1452 720.720703125 l 1 + 1356 786.959960938 l 1 + 1281 742.3203125 l 1 + 1209 822.959960938 l 1 + 1113 733.6796875 l 1 + 1023 835.919921875 l 1 + 933 802.799804688 l 1 + 849 857.520507812 l 1 + 810 815.759765625 l 1 + 735 903.599609375 l 1 + 711 831.599609375 l 1 + 627 964.080078125 l 1 + 558 851.759765625 l 1 + 483 762.479492188 l 1 + 426 861.83984375 l 1 + 351 936.720703125 l 1 + 297 877.6796875 l 25 + 207 959.759765625 l 1 + 186 817.200195312 l 1 + 129 749.520507812 l 1 + 92 641.520507812 l 1 + 129 541.200195312 l 1 + 186 466.799804688 l 1 + 207 324.240234375 l 1 + 297 406.3203125 l 25 + 351 347.279296875 l 1 + 426 422.16015625 l 1 + 483 521.520507812 l 1 + 558 432.240234375 l 1 + 627 319.919921875 l 1 + 711 452.400390625 l 1 + 735 380.400390625 l 1 + 810 468.240234375 l 1 + 849 426.479492188 l 1 + 933 481.200195312 l 1 + 1023 448.080078125 l 1 + 1113 550.3203125 l 1 + 1209 461.040039062 l 1 + 1281 541.6796875 l 1 + 1356 497.040039062 l 1 + 1452 563.279296875 l 1 + 1530 558.959960938 l 1 + 1644 615.120117188 l 1 + 1700 642.479492188 l 1 +EndSplineSet +EndChar + +StartChar: uniE13D +Encoding: 57661 57661 67 +Width: 1792 +Flags: HW +LayerCount: 2 +Fore +SplineSet +92 677 m 25 + 1700 677 l 25 + 1700 607 l 1 + 92 607 l 25 + 92 677 l 25 +EndSplineSet +EndChar + +StartChar: uniE13E +Encoding: 57662 57662 68 +Width: 1792 +Flags: HW +LayerCount: 2 +Fore +SplineSet +92 677 m 25 + 1700 677 l 25 + 1700 607 l 1 + 92 607 l 25 + 92 677 l 25 +EndSplineSet +EndChar + +StartChar: uniE13F +Encoding: 57663 57663 69 +Width: 1792 +Flags: HW +LayerCount: 2 +Fore +SplineSet +92 677 m 25 + 1700 677 l 25 + 1700 607 l 1 + 92 607 l 25 + 92 677 l 25 +EndSplineSet +EndChar + +StartChar: uniE140 +Encoding: 57664 57664 70 +Width: 1792 +Flags: HW +LayerCount: 2 +Fore +SplineSet +1132 160 m 1 + 1132 260 l 1 + 1592 260 l 1 + 1592 160 l 1 + 1132 160 l 1 +1412 1340 m 9 + 1412 1160 l 1 + 1592 1160 l 1 + 1592 1060 l 1 + 1412 1060 l 1 + 1412 880 l 25 + 1312 880 l 25 + 1312 1060 l 1 + 1132 1060 l 1 + 1132 1160 l 1 + 1312 1160 l 1 + 1312 1340 l 17 + 1412 1340 l 9 +480 920 m 9 + 480 740 l 1 + 660 740 l 1 + 660 640 l 1 + 480 640 l 1 + 480 460 l 25 + 380 460 l 25 + 380 640 l 1 + 200 640 l 1 + 200 740 l 1 + 380 740 l 1 + 380 920 l 17 + 480 920 l 9 +941 1446 m 25 + 941 -162 l 25 + 851 -162 l 1 + 851 1446 l 25 + 941 1446 l 25 +EndSplineSet +EndChar + +StartChar: uniE141 +Encoding: 57665 57665 71 +Width: 1792 +Flags: HW +LayerCount: 2 +Fore +SplineSet +92 677 m 25 + 1700 677 l 25 + 1700 607 l 1 + 92 607 l 25 + 92 677 l 25 +EndSplineSet +EndChar +EndChars +EndSplineFont diff --git a/res/icons.ttf b/res/icons.ttf index dad2b2ef7d84b983f888ebcd1611b497f1c01350..2f22c8675aa8c16c3d507a8a723cc236d42d6f31 100644 GIT binary patch delta 796 zcmYk4Ur5tY6vxl`?Kd|!{q2v=%>DL9H`7g>+f1E0=O5HG{}g7+Qq$qT%|BDp#H^S_ zP*9-wD}yjh!UszdROrPAdn)Lmmk0tAm52ymih_{Tjy^=(d+xcPbGTpbx##}*fcHOP z2oL}`7zGiul$F(0&wN>42M7*Rls{2YS_T@3CT=|7Q)kkh_jYQB0MJkDZSD2-zn*ya z6@Y1>*jDS%pb_%eJ^;3a@@%JXpnrd#lp$D0EbZ*M(jo6jEvM9HfVNS8yD!vcUT}P; zPDZCyNg@uzA7N=Gu0?MXB@>Ds0NjLkH;bUS-y_RuTLwrJ7 zB*UUi!6n*_RVuz&2yn7 zncd4!HcDf9X1p>!6l4!+8L)yc-1*i-3|ID8LU`h11?4;xf~3XI*vO51b277 Hh`zvIpyszL delta 405 zcmbPom+{Xv#(D-u1_lN`h6V;^h6Fda5Z{H@Uu!ZjWG4VcW!zm{-55j}M1Xu35Z^yo z->BzTP$>fgV+N2PmYkbdaCYv=UIqpxpnAp!$z>%94Aw093=Av|KzWw*#NvYg|A8hm zWZMAw9O*fgY2||F<^rYeFfb(6WTYn6r>HE*07Vj zijX9be*nmzmy@5IICJKvDxd)%2hGS$tSDfZ$_&)Y=mF#_fg!^O=*SOX&jLNXTY%+3JipCX25upCpgsnM2Y>(12hk6i6(S}JFxoPD zPxfPsWptdphH;Y-NCM;uFqQ$E!N70}$O8qP3}i{Yax9o8hveBZ1MLO? DWRhjL diff --git a/src/gui/font_furicon.cpp b/src/gui/font_furicon.cpp index 108d1916d..2e089477e 100644 --- a/src/gui/font_furicon.cpp +++ b/src/gui/font_furicon.cpp @@ -1,301 +1,308 @@ #include "fonts.h" -// File: 'icons.ttf' (27516 bytes) +// File: 'icons.ttf' (28308 bytes) // Exported using binary_to_compressed_c.cpp -const unsigned int furIcons_compressed_size = 14052; -const unsigned int furIcons_compressed_data[14052/4] = +const unsigned int furIcons_compressed_size = 14369; +const unsigned int furIcons_compressed_data[14372/4] = { - 0x0000bc57, 0x00000000, 0x7c6b0000, 0x00000400, 0x00010037, 0x000e0000, 0x00030080, 0x54464660, 0xebd7a14d, 0x6b000029, 0x28158260, 0x4544471c, - 0x00150046, 0x200f8214, 0x2b0f8344, 0x322f534f, 0x7552fa8c, 0x68010000, 0x562b0f82, 0x70616d63, 0x8dc99dcd, 0x82020000, 0xe0012d2f, 0x20747663, - 0x6f043b00, 0x40040000, 0x04261f82, 0x70736167, 0x5982ffff, 0x3c6b0022, 0x08280f82, 0x66796c67, 0x9dce1177, 0xdc2b1f82, 0x7c610000, 0x64616568, - 0x8368a024, 0x82ec201b, 0x6836211f, 0x09231082, 0x82050682, 0x8224205f, 0x6824280f, 0x2878746d, 0x821912d4, 0x82c0200f, 0x6c9e280f, 0x9961636f, - 0x827ab299, 0x278f833f, 0x78616d98, 0x03950070, 0x01213b82, 0x2c1f8248, 0x6d616e20, 0xbb877965, 0x66000087, 0x2c338258, 0x736f70f2, 0xfe916a74, - 0x68000039, 0x20a3824c, 0x2deb84f0, 0xbb000001, 0x5fe00410, 0x00f53c0f, 0x3682070b, 0xe0000025, 0x839ffffd, 0x03e12b08, 0x80fc5820, 0x000768fe, - 0x0f82e005, 0x02000822, 0x02830582, 0x06223382, 0x0982ff00, 0xfc000729, 0x07000080, 0x82010000, 0x20028b0c, 0x25118404, 0x00bb034b, 0x00830008, - 0x83000221, 0x22258323, 0x822e0040, 0x2b0d820b, 0x90010007, 0x00000500, 0xe6048c04, 0xfa201182, 0x032b0785, 0x0159005c, 0x020000cf, 0x82090500, - 0x21028515, 0x07851001, 0x46290584, 0x00547275, 0xe1200040, 0x20838541, 0x856a8406, 0x208b8404, 0x2026833b, 0x83048207, 0x80fc2503, 0x91000902, - 0x52220c82, 0x79822000, 0x3500a52c, 0x29004b00, 0x6d019100, 0x9b827800, 0x47006034, 0x17015200, 0x4a000a00, 0x32018f00, 0x4f001b00, 0x31822e00, - 0x1801ca26, 0xa9003601, 0x28251b82, 0x4d013300, 0x82918200, 0x00033823, 0x017c0122, 0x0039007a, 0x01270139, 0x001300ce, 0x0073014c, 0x82470022, - 0x000b240d, 0x82b50085, 0x005b260f, 0x004b012e, 0x2201825c, 0x842a005b, 0x830b8307, 0x82c82003, 0x2188820d, 0x04820300, 0x1c200383, 0xda22b386, - 0x09840300, 0x04001c24, 0x1b82be00, 0x0800082e, 0x00000200, 0xf4e02000, 0xffff41e1, 0xf0260984, 0xffff00e1, 0x0b82e3ff, 0x2b840020, 0x0e000622, + 0x0000bc57, 0x00000000, 0x946e0000, 0x00000400, 0x00010037, 0x000e0000, 0x00030080, 0x54464660, 0xb4e6a14d, 0x6e0000de, 0x28158278, 0x4544471c, + 0x00150046, 0x200f8214, 0x2b0f835c, 0x322f534f, 0x7652fa8c, 0x68010000, 0x562c0f82, 0x70616d63, 0xe8cf92c7, 0x60020000, 0xe22c1382, 0x20747663, + 0x6f043b00, 0x44040000, 0x04261f82, 0x70736167, 0x5982ffff, 0x546e0022, 0x08280f82, 0x66796c67, 0x482c6c0b, 0xe42c1f82, 0x80640000, 0x64616568, + 0xf131af24, 0xec201b82, 0x36210382, 0x23108268, 0x05068209, 0x24204b82, 0x24270f82, 0x78746d68, 0x8213d428, 0xc001214f, 0xa0280f82, 0x61636f6c, + 0x7ab2d9cb, 0x43823f82, 0x6d9a0028, 0x00707861, 0x3b820396, 0x0f830120, 0x616e202c, 0x877b656d, 0x000088bc, 0x43826469, 0x6f70f22c, 0x5ca17473, + 0x0000e2b7, 0xa382586b, 0xeb84fa20, 0x0000012d, 0x7a8b1ec8, 0xf53c0f5f, 0x82070b00, 0x00002556, 0x9ffffde0, 0xe12b0883, 0xfc0dea11, 0x0768fe80, + 0x82e00500, 0x0008220f, 0x83058202, 0x22338202, 0x82ff0006, 0x00072909, 0x000080fc, 0x01000007, 0x028b0c82, 0x11840420, 0xbb034c25, 0x83000800, + 0x00022100, 0x25832383, 0x2e004022, 0x0d820b82, 0x0100072b, 0x00050090, 0x048c0400, 0x201182e6, 0x2b0785fa, 0x59005c03, 0x0000cf01, 0x09050002, + 0x02851582, 0x85100121, 0x29058407, 0x54727546, 0x20004000, 0x838542e1, 0x6a840620, 0x8b840485, 0x26833b20, 0x04820720, 0xfc250383, 0x00090280, + 0x220c8291, 0x82200052, 0x00a52c79, 0x004b0035, 0x01910029, 0x8278006d, 0x0060349b, 0x01520047, 0x000a0017, 0x018f004a, 0x001b0032, 0x822e004f, + 0x01ca2631, 0x00360118, 0x251b82a9, 0x01330028, 0x9182004d, 0x03382382, 0x7c012200, 0x39007a01, 0x27013900, 0x1300ce01, 0x73014c00, 0x47002200, + 0x0b240d82, 0xb5008500, 0x5b260f82, 0x4b012e00, 0x01825c00, 0x2a005b22, 0x0b830784, 0xc8240383, 0x56015c00, 0x03208982, 0x1c200386, 0xdc22b386, + 0x09840300, 0x04001c24, 0x1b82c000, 0x0800082e, 0x00000200, 0xf4e02000, 0xffff42e1, 0xf0260984, 0xffff00e1, 0x0b82e3ff, 0x2b840020, 0x0e000622, 0x04260b82, 0x06000500, 0x2f820700, 0x9d820920, 0x0c000b24, 0x17820d00, 0x10000f26, 0x12001100, 0x142c9d82, 0x16001500, 0x18001700, 0x1a001900, 0x1c3adb82, 0x1e001d00, 0x20001f00, 0x22002100, 0x24002300, 0x26002500, 0x28002700, 0xab822900, 0x2c002b3a, 0x2e002d00, 0x30002f00, 0x32003100, - 0x34003300, 0x36003500, 0x38003700, 0x2008f182, 0x003b003a, 0x003d003c, 0x003f003e, 0x00410040, 0x00430042, 0x00450044, 0x00470046, 0x00490048, - 0x2098824a, 0x829c8506, 0x01002299, 0x21058202, 0x008d0002, 0x84000121, 0x40148dfc, 0x3b22ce0d, 0xd1826f04, 0x85002c21, 0x3caf0801, 0xc6008400, - 0x24056404, 0xd406c405, 0xea075807, 0x3409ce08, 0xb00a7609, 0x880bfe0a, 0x2e0cee0b, 0x6a0de60c, 0x640ed80d, 0xa40fca0e, 0xbc105a10, 0xc6117e11, - 0x0c139212, 0xd8138c13, 0x48159814, 0x12173816, 0x1e1b8017, 0x341cae1b, 0xea1dc01c, 0xbc1f081f, 0x34218020, 0xfc218a21, 0xc8238622, 0xca272a27, - 0x5229b028, 0x0a2ac629, 0xa42bbe2a, 0x162ef42b, 0x482e242e, 0xd02f6e2e, 0xec2fde2f, 0x62305430, 0x7e307030, 0xbe30b030, 0x3b000200, 0x15020000, - 0x0300aa04, 0x2e000700, 0x2f0001b1, 0x0407b23c, 0xb132ed00, 0x3cdc0506, 0x820203b2, 0xb100220a, 0x20168303, 0x27168305, 0x010607b2, 0x01b23cfc, - 0x33371783, 0x25112111, 0x3b211121, 0x61feda01, 0x9cfe6401, 0x56fbaa04, 0x8234043b, 0xfc0226ed, 0x03f5ff80, 0x20098280, 0x2e598201, 0x25210500, - 0x0533fd21, 0x07b3f99a, 0x820b0b00, 0x03250815, 0x0f000902, 0xfd03f704, 0x25001b00, 0x00002f00, 0x32213001, 0x0e141516, 0x07060701, 0x16171615, - 0x15011e17, 0x2f0b8214, 0x2123010e, 0x36322137, 0x2634013d, 0x33352123, 0x4d080985, 0x0a02012b, 0x8e7dbd01, 0x2020311f, 0x25251e1e, 0x132b1f20, - 0x5f232214, 0xa217fe38, 0x483f1801, 0xe8fe3f48, 0x42423dfc, 0xfd03fc3d, 0x4f38778d, 0x030c0d32, 0x0d0d0208, 0x3f581c1c, 0x2735363c, 0x428b2c27, - 0x423e313e, 0x2e393e88, 0x8f833e3a, 0x91003008, 0x6f066300, 0x0f00a903, 0x2b001700, 0x30250000, 0x30213027, 0x36233007, 0x16333712, 0x30011712, - 0x30070623, 0x30012633, 0x30270011, 0x85133033, 0x02062f03, 0x02301107, 0xc7fe4cea, 0xbf2f8a49, 0x0382ab2f, 0x8dfe3408, 0xf73d3c06, 0xfe84023c, - 0xcc9b17f7, 0x3794cb04, 0xe3631dce, 0x2e028ce3, 0xd2fd8c8c, 0xb9c9028c, 0xf0fdb9b9, 0xd4014a01, 0x018bfe28, 0x9afe6175, 0x82b3fe32, 0x03002182, - 0xab3a0482, 0x61030007, 0x8c035803, 0x0000ba03, 0x27022637, 0x021d3033, 0x17041d17, 0x0290031d, 0x11a31491, 0x26f14782, 0x86957191, 0x17011e26, - 0x37013e33, 0x86067341, 0x033d220d, 0x20028937, 0x850b8a04, 0x8211a317, 0x9126f129, 0x2e86a171, 0x07020633, 0x27022623, 0x2327012e, 0x8207010e, - 0x22052d0d, 0x013e2726, 0x33011e37, 0x26343532, 0x26291883, 0x34352627, 0x16323336, 0x2b218217, 0x2223012e, 0x17141506, 0x011e1716, 0x15230285, - 0x82250614, 0x2223223b, 0x26288227, 0x37342627, 0x823e3736, 0x2021823c, 0x352c8407, 0x1614011d, 0x3e373233, 0x23013d02, 0x23113335, 0x185e188e, - 0x00cc0168, 0x040e0434, 0x030e040c, 0x7b0e390e, 0x030e390f, 0x030d030f, 0x61cc040e, 0x18640127, 0x0e7a1962, 0x205c833a, 0x3b5c820c, 0x020f3c0f, - 0x276e4bf0, 0x1d0c2f0b, 0x2a77314d, 0x0a240934, 0x702a2b5a, 0x24634865, 0x3c081382, 0x3731401a, 0x31161637, 0x30092409, 0x13161544, 0x0c430274, - 0x34484f09, 0x20212b2c, 0x12121213, 0x3d5f2222, 0x1e38375a, 0x3c461153, 0x48505048, 0x271a1a1e, 0x5adf7c16, 0xbe0170b7, 0x10b8cd70, 0x47014d00, - 0x19681a2d, 0x44196719, 0x44441001, 0x8244f0fe, 0x6819220a, 0x5b01101a, 0x47414701, 0x70af084d, 0x457042fe, 0x1a451301, 0x67191967, 0xedfe451a, - 0x36380b45, 0x290b2a0b, 0x2f2c6d2c, 0x0207020d, 0x512d2c15, 0x3431615c, 0x250b290a, 0x2a342d24, 0x020c1516, 0x1f0b0208, 0x293f1717, 0x306e6865, - 0x2a13133e, 0xb8424229, 0x2a2a4242, 0x47262728, 0x5c393131, 0x5c52a452, 0x31210908, 0xfe573b1e, 0x0700009e, 0x02ff5200, 0x1a05ae06, 0x24001a00, - 0x49003800, 0x78005300, 0x00008000, 0x35262205, 0x023e3734, 0x07063337, 0x010e0706, 0x013e3307, 0x15163233, 0x32270614, 0x2334013d, 0x14011d22, - 0x27022603, 0x17121633, 0x36331716, 0x82123637, 0x0702272a, 0x21112321, 0x27831732, 0x23130727, 0x2327012e, 0x07794837, 0x22011527, 0x012e2726, - 0x222a8234, 0x82333637, 0x06172123, 0x080b5845, 0x1e373698, 0x010e1701, 0x15011105, 0x35011101, 0x6d6ba201, 0x4f3a0f10, 0x2a3b8a31, 0x251d1e2a, - 0x47110c09, 0x6e5f5131, 0x6c6d6d6a, 0x2183211f, 0x1450136b, 0x0e0c0e0e, 0x144e140e, 0x20832169, 0x01658f01, 0x2b2c5609, 0x71803a39, 0x78175608, - 0x2626249b, 0xad029b24, 0x21225d3a, 0x22212323, 0x563b2e2e, 0x0d1f3333, 0x353e1249, 0x444c4c44, 0x0f124236, 0x69200e38, 0x2801e4fe, 0xd8fe72fe, - 0x3c7f84fd, 0x606f3c3d, 0x28292d22, 0x32562829, 0x676a312f, 0x7755776a, 0x02827719, 0x18035608, 0x6fbf0170, 0x46e7fe46, 0x4e4f4f4e, 0x46190146, - 0x7041fe6f, 0x34339e02, 0x11604d60, 0xc913e7fe, 0x2a265536, 0xde262a3e, 0x2a278efe, 0x84b6842a, 0x14142a2a, 0x074a2525, 0x5f323929, 0x5e53a152, - 0x21083b36, 0xb24e4a09, 0x100134fe, 0x0192fe82, 0x82effecd, 0x3f008200, 0x00200004, 0x03e006ab, 0x000b0061, 0x004a0015, 0x37000074, 0x21301130, - 0x06141632, 0x0119012b, 0x2008b749, 0x05ce4601, 0x16171622, 0xd0461282, 0x012e2806, 0x023e3435, 0x46173233, 0x072c08d1, 0x16141506, 0x011e011f, - 0x020e1415, 0x2105cd46, 0x2485022e, 0x46171621, 0x36230cc6, 0x46013e37, 0xd10806c8, 0x5d200121, 0xb45d6666, 0x2f2e2aad, 0xdd02ad29, 0x0c2a7655, - 0x2b230d32, 0x4141362b, 0x270a3b2e, 0x2162620a, 0x4c36563d, 0x0d283738, 0x4b1a0d32, 0x20203938, 0x643c3734, 0x5a3f205d, 0x0a04dd02, 0x663c4c5e, - 0x4d2a294a, 0x7d5a426c, 0x51135923, 0x6161503d, 0x1d1c2050, 0x8a191616, 0x02b75ff3, 0x6db96d9e, 0x6a01f5fe, 0x292e282b, 0x3db6fd2b, 0x0c2f0b34, - 0x3a17162b, 0x0c2e2731, 0x12020702, 0x482c515c, 0x1a1b1b31, 0x0b2d0b32, 0x18172921, 0x0b292a2c, 0x505d130c, 0x1d374d2f, 0x2d403171, 0x54548257, - 0x502e5881, 0x3b2f3447, 0x5d6e5d66, 0x10080966, 0x34202f0f, 0x009bfe5d, 0x002e0005, 0x03d206ab, 0x00120061, 0x002a001f, 0x00460134, 0x68422500, - 0x013e2807, 0x14021e32, 0x4227020e, 0x222a0583, 0x14011d06, 0x21110516, 0x5e411732, 0x2e052c0f, 0x1d232701, 0x0f1d1707, 0x870e1d17, 0x820b8502, - 0x11013305, 0x16331123, 0x011e1712, 0x053d3317, 0x270f3d27, 0x02870e3d, 0x042d0b88, 0x23113311, 0x33010226, 0x2223603c, 0x3a028223, 0x44607a5f, - 0x61442323, 0x4f4f483c, 0x014f4f90, 0x560901df, 0x56572b2c, 0x82259aa3, 0x029a2600, 0x09220863, 0x0732440c, 0x21756228, 0x23082285, 0x10880d08, - 0x85217623, 0x074c42ac, 0x5428282d, 0x5484b684, 0x525d5a27, 0x845d52a2, 0x024f3304, 0xc134339e, 0x01f1fe67, 0x3d2a2569, 0x15b22629, 0x7f441553, - 0x284dae4d, 0x0270fe02, 0xf4fe439e, 0x80884043, 0xfd900126, 0x0c014362, 0x3a055f43, 0x065400a5, 0x00b8035b, 0x0048002f, 0x005e0054, 0x23302500, - 0x2223010e, 0x4435022e, 0x3e43078a, 0x49062008, 0x362106e3, 0x35018237, 0x3523013d, 0x01231121, 0x15163221, 0x0e070614, 0x1e150701, 0x0b821702, - 0x020e0730, 0x33372123, 0x3d363732, 0x26273401, 0x5d4d012b, 0xe541080a, 0x60740e04, 0x345c804a, 0x43303035, 0x9c715343, 0x124a122b, 0x634d6518, - 0x28637979, 0x1b1b2424, 0x01ac1010, 0x0601772f, 0x77697201, 0x3415141b, 0x353d1a1a, 0x10111311, 0xfe2f4f39, 0x35e98768, 0x0800821e, 0xd2e9356a, - 0x33373733, 0x503de2d2, 0x6aa26d38, 0x3738a268, 0x59631c1c, 0x3b0b2b0b, 0x88757f49, 0x0b0a7f75, 0x1e1d1413, 0xfe754127, 0x76460341, 0x15422f62, - 0x07031415, 0x242f1601, 0x2c323525, 0x7525412d, 0x29331c1b, 0x711c1b34, 0x30273033, 0x00000033, 0x00350005, 0x03cb06ab, 0x001f0061, 0x00530046, - 0x00660060, 0x26222500, 0x2c131b44, 0x011e3736, 0x06070617, 0x012e2221, 0x23218227, 0x013e3736, 0x82050646, 0x32072a14, 0x033e1716, 0x021e3233, - 0x10584315, 0x2135a808, 0x37123635, 0x15331133, 0x33251523, 0x010e2311, 0x96834e01, 0x41694926, 0x5b217658, 0x4d3b4811, 0x3d4d5959, 0x3a0f124c, - 0x3c3d210e, 0x5738fc01, 0x2c10113c, 0x29552323, 0x2d2d3990, 0x16172221, 0x0104020d, 0x30251c0b, 0x35482a20, 0x573e211d, 0x41413b35, 0x02424275, - 0x2dc9fea1, 0x5b8e2eb5, 0xdbbefe5b, 0xac8e2307, 0x8154a9b1, 0x4b4d2e58, 0x6a393032, 0x6a5d665d, 0x2309313f, 0x29294909, 0x30304424, 0x3680493d, - 0x291c5336, 0x29282627, 0x01362d2d, 0x1b231501, 0x4d371c0f, 0x3c53332f, 0x3d3e5821, 0x843e3d0d, 0x4d2f0804, 0x014a5d83, 0x3afe4a2a, 0x01d88355, - 0x00ed3b63, 0xff4b0008, 0x05b50608, 0x000c0015, 0x001c0016, 0x005c0028, 0x00720068, 0x1700009b, 0x44301130, 0x01211235, 0x23ec8311, 0x15211133, - 0xa6450187, 0x2d754c06, 0x2406b44c, 0x13331323, 0x2a0b8503, 0x2533010f, 0x2337013e, 0x8207010e, 0x82138202, 0x1e232702, 0x23111701, 0xaf4c3311, - 0x82332005, 0x2902821e, 0xb0231133, 0x2c560901, 0x5644582c, 0xca013007, 0x0186f466, 0x01e1fe85, 0x01fdfe03, 0x4be7fa1f, 0x25210cdd, 0x07dd4b09, - 0x0c2e0c22, 0x0811dd4b, 0x22093830, 0x2309e109, 0x81c96408, 0x0e04f1ca, 0x0e030d03, 0x02b03b04, 0x010402d0, 0x071f080b, 0x15165716, 0x1f081557, - 0x05010b08, 0x12786201, 0x0b821248, 0x03820920, 0x47125408, 0xf8627712, 0x33349f02, 0xf1fe67c2, 0x29266901, 0xfd25293e, 0xfd9f02bc, 0x9f025abb, - 0xcf58c45a, 0x3957035a, 0x0b2b0b35, 0x2c6e2c2a, 0x08020c2f, 0x2c2d1402, 0x31605d51, 0x0a290a34, 0x342d2524, 0x0b16162a, 0x0a030802, 0x3f171720, - 0x0b696429, 0x821f7c1f, 0x33408202, 0x11e00161, 0x41101041, 0x1390d311, 0x4b13144c, 0x2db62d13, 0x13220282, 0x0b821349, 0x0263fe29, 0x279d279f, - 0x82165816, 0x2c088202, 0x000061fd, 0x29000400, 0xd706ab00, 0x05534703, 0x46003a22, 0x471a5347, 0x1d261140, 0x16171401, 0x04433233, 0x41252007, - 0x21080adc, 0x5e200129, 0xb35d6665, 0x2e2e29ad, 0x0f03ad29, 0x49269584, 0x3b574169, 0x3d0f223b, 0x3b48110f, 0x00822c4e, 0x4c3c4e35, 0x0f3a0e13, - 0x013d3c22, 0xfeae012d, 0xfe2301bf, 0x474101dd, 0xb1341005, 0x598154a9, 0x4b26272d, 0x30082208, 0x5d353539, 0x35355d66, 0x2a07c642, 0x609e020b, - 0x60c460ba, 0x51030000, 0x082e825f, 0x02ff6d01, 0x1a059305, 0x55004400, 0x91826d00, 0xab009e29, 0xe300d500, 0x47250000, 0x232c0558, 0x2e070622, - 0x37362701, 0x3637013e, 0x22051b44, 0x52020e07, 0x0621098f, 0x2a018207, 0x022e2223, 0x17163727, 0x481e1716, 0x352109d6, 0x06644401, 0x023e3737, - 0x10163233, 0x3e322706, 0x34013d02, 0x0e22022e, 0x1d060701, 0x05a14f01, 0x02252582, 0x37363435, 0x05f24835, 0x42823220, 0x2405634a, 0x15011e15, - 0x476b8214, 0x13200ce1, 0x200bee47, 0x211e8325, 0x99822307, 0x22230282, 0x82062726, 0x2223232d, 0x4f822e27, 0xb0833720, 0x4c853320, 0xc9880720, - 0x55087382, 0x3e4b0216, 0x30313a3c, 0x300c1743, 0x14130f0c, 0x2b202133, 0x213a502f, 0x2f240a0a, 0x1a191d1a, 0x22161313, 0x2c2d1f1f, 0x36472f36, - 0x0c500f2a, 0x11120e0e, 0x413e1c2e, 0x02473f45, 0x3c5c3e98, 0x0e0f0f0e, 0x7d3e5c3c, 0x237d7676, 0x0e0e1e31, 0x3145311e, 0x0082071f, 0x100fb308, - 0x3bf8fd31, 0x4a1f3d59, 0x1e3e343c, 0x29685337, 0x0f0f3829, 0x4a3d343f, 0x5a3c1010, 0x42423c3a, 0x3d424279, 0x6f3b3b37, 0x52033a3a, 0x56451616, - 0x5b389029, 0x0d2d2122, 0x0a010501, 0x30260e0e, 0x24242a20, 0x11101d35, 0x36561f1f, 0x3c2c2b38, 0x3bec1011, 0x3b3a4241, 0x35994141, 0x312e0729, - 0x2a0a262c, 0x1415160a, 0x17090a1d, 0x2028412d, 0x1928191a, 0x0d060406, 0x3914150d, 0x1a482c25, 0x140e0e19, 0x3e172c21, 0x0c111114, 0x343a0d0c, - 0x5c363407, 0x582f6afe, 0x52534040, 0x2f594041, 0xb6b8feb7, 0x49331c5c, 0x482c752c, 0x341c1c34, 0x09822424, 0x23252e08, 0x031c1a1a, 0x47341d06, - 0x1151432a, 0x3a4e1307, 0x192d4026, 0x202d0c0d, 0x4e3a2620, 0x51110713, 0x24232a43, 0x38571d34, 0x37321332, 0x27048237, 0x303a0138, 0x302e102e, - 0x2a080484, 0x4041491f, 0x291b556b, 0x5a28284e, 0x14010136, 0x0f1b1212, 0x4c360f0e, 0x2b2a3230, 0x12221e1d, 0x30304413, 0x0e3c3f93, 0x823e3e3c, - 0x003f2104, 0x04370082, 0xb7007800, 0x56038806, 0x27000f00, 0x40003700, 0x30010000, 0x84233011, 0x30352a03, 0x30153021, 0x30353013, 0x830f8a33, - 0x8233201b, 0x30212217, 0x54278227, 0x0e3c0c81, 0x2e330701, 0x6cac0101, 0x53fc01c8, 0x24015b5b, 0x2b025c5c, 0x6f3afb3c, 0x88269926, 0x43080382, - 0x1005d7fe, 0x10c61041, 0xfdf50240, 0x603e02c2, 0x58c2fd60, 0x5858ee01, 0xb55812fe, 0xbe0170b5, 0x42fe7070, 0x313a0270, 0xc53131c5, 0x00050000, - 0x06ab0008, 0x006103f8, 0x003e0034, 0x00500046, 0x37000058, 0x2a329f4b, 0x23072327, 0x12163313, 0x86230117, 0x081190a1, 0x7655fd42, 0x0d310d2a, - 0x372b2b23, 0x3a2e4140, 0x620a280a, 0x563c2262, 0x38384c36, 0x0d320d27, 0x3a374b1a, 0x36341f20, 0x215d653c, 0xd0025a3e, 0x6e3bfa3d, 0x982689e4, - 0x04d7fe26, 0xc5104011, 0x28034010, 0xac201391, 0x242c824b, 0x02b5b50b, 0x0a00419e, 0x8ef7fd21, 0x82002010, 0x00033400, 0x06ab0060, 0x006103a0, - 0x002b0015, 0x2500004b, 0x46300330, 0x06240eaa, 0x35210702, 0x2013b141, 0x1d874805, 0xdb3c012d, 0x12471270, 0x040b2b0a, 0x820b2b0b, 0x256d2509, - 0x4b012595, 0x2605c741, 0x96838401, 0x48684a26, 0xb7281461, 0xdd379e02, 0x279b2737, 0x08820282, 0xd641c383, 0x480b2007, 0xcb821741, 0x4700042a, - 0xb906b700, 0x0b005603, 0x2122cd82, 0x3f462900, 0x0a1b4618, 0x23110128, 0x21352311, 0x4c4d4815, 0x2e292807, 0x02ad292e, 0x46ad0114, 0x01250702, - 0x01c86c7b, 0x0f0846fc, 0xea45c120, 0x3e022106, 0x82057942, 0x4f06207f, 0x1e340893, 0x3d002700, 0x58004e00, 0x00007e00, 0x26272205, 0x36373435, - 0x30250184, 0x07020e33, 0x05944f06, 0x954f1720, 0x1d222408, 0x4f011401, 0x12560694, 0x4f06200a, 0x0e212d96, 0x12974f01, 0x6b7a033f, 0x0f103736, - 0x28271d1d, 0x553b8a31, 0x0a12123a, 0x3147110c, 0x6e2f3051, 0xfed96d6a, 0x06924f09, 0x05130426, 0x0512050c, 0x2212944f, 0x4f144d14, 0x0e221794, - 0x954f0e3a, 0x42fd350e, 0x3d3c7f42, 0x3038363d, 0x522d232f, 0x332a2b50, 0x3535312f, 0x2213904f, 0x821a691a, 0x11924f02, 0x2eb62e22, 0x2215924f, - 0x4f082008, 0x003c0d93, 0xff170106, 0x05e90508, 0x000b0015, 0x002d0017, 0x0055004b, 0x0500005f, 0x33301130, 0x21220382, 0x07841530, 0xc6500b87, - 0x34353305, 0x013e3736, 0x1e171632, 0x07061401, 0x3227010e, 0x01823736, 0x34013d2b, 0x2e272627, 0x06222301, 0x46018207, 0x052107bf, 0x12d14f11, - 0x016ccc24, 0x03826311, 0x10fd2208, 0x26266a42, 0x26262929, 0x256b836a, 0x262a2a26, 0x26416b25, 0x0d161740, 0x160d0c0c, 0x28264017, 0x220b873f, - 0x48f4013f, 0xf8250c83, 0xc1fd9f02, 0x2b048460, 0x2c2d5703, 0x5455822b, 0x2d2c2b82, 0xa9200983, 0x612d0883, 0x2519191b, 0x2e692e25, 0x19192525, - 0x2f0c8c1b, 0x6e9f0256, 0xf5fe6eb8, 0x282c6a01, 0x002c282e, 0x0036f082, 0x06ab000a, 0x006103f6, 0x00300012, 0x0044003a, 0x2500004a, 0x40502e22, - 0x07494f06, 0x112fe6af, 0x15211133, 0x6a422c01, 0x4c29294c, 0x8541426a, 0x21e09b07, 0x6449665d, 0x02220808, 0x10016d13, 0x82572dac, 0x58825454, - 0x82582d2d, 0x2d5782a8, 0x191a1b60, 0x6a2e2425, 0x1925242e, 0x0c8c1b1a, 0x6d505520, 0x02c1280e, 0x60c2fd9e, 0x82040000, 0x06ab2ccb, 0x006103b6, - 0x00220013, 0x4366002d, 0x302306d3, 0x88213015, 0x30112603, 0x32333001, 0x24e88317, 0x2b060701, 0x05ba5201, 0x2b262724, 0x4d581101, 0x077e5106, - 0x27262724, 0x0282012e, 0x37343522, 0x230d8051, 0x17141506, 0x08068051, 0x07060724, 0x014a010e, 0x01cafea3, 0x01edfe13, 0x3441edc3, 0x29294a34, - 0x4134344a, 0x5c4beded, 0x804b2e2e, 0xde45dc02, 0x2a242705, 0x4140372b, 0xdf451717, 0x11112405, 0x4535563d, 0x2b0807e0, 0x3f3a384a, 0x3c361a1a, - 0x10115d65, 0xb759201f, 0xba609e02, 0x02dcfe60, 0x5415159e, 0x547da87d, 0x5e601515, 0x2f5b6c5b, 0x6b22fe2f, 0x210ad645, 0x5a511717, 0x24242107, - 0x08095b51, 0x2a2c2f29, 0x0c0b1514, 0x2f515c13, 0x1c1b2627, 0x0400001d, 0x63008f00, 0xa9037106, 0x2f001500, 0x43003900, 0x30250000, 0x50333001, - 0x535a06ec, 0x02062806, 0x32210107, 0x49141516, 0xdf840bd4, 0x37212322, 0x4f08a252, 0x012e0906, 0x8dedfea2, 0x0f165916, 0x0f050b36, 0x09820b38, - 0xb92f8937, 0x01c2012f, 0x1b776873, 0x19193429, 0x1b1a1f1e, 0x1c111024, 0x06f54e1d, 0x4e3c3c21, 0x633407f3, 0xfe454603, 0xc53645ec, 0x25c83729, - 0x45140145, 0x8cd2fd8c, 0x3605e44e, 0x0703142a, 0x170b0b01, 0x32354918, 0x21202d2c, 0x33377525, 0x4e373429, 0x013409e3, 0x0508ff32, 0x001405ce, - 0x00330026, 0x008a0078, 0x0500009b, 0x202ec44e, 0x41d14a01, 0x27012e32, 0x11231123, 0x011e1333, 0x33113317, 0x35212311, 0x0e260482, 0x27260702, - 0x10823736, 0x02153008, 0x3d573870, 0x222c1010, 0x902a5523, 0x222d2d39, 0x0c171721, 0x0a010501, 0x1f31251c, 0x1e35472b, 0x35573d22, 0x7542423a, - 0x44024141, 0x4a393b3f, 0x13210888, 0x06884a34, 0x230a0b22, 0x0807884a, 0x1f1f233c, 0x2f362c2c, 0x0f293747, 0x0e0e0d4f, 0x1d2d1211, 0x4045413e, - 0x08b2fd47, 0x68030e34, 0x340edb79, 0x79670308, 0x08bc4301, 0x123e3417, 0x56554002, 0x25f8a3a5, 0x3c303044, 0x284f8149, 0x1447080d, 0x1d0f1b24, - 0x332f4d36, 0x59223c53, 0x3c0d3d3e, 0x0d3c3f3f, 0x3d013e3d, 0x2e072935, 0x0a262b31, 0x14160a2a, 0x09091e14, 0x28402d17, 0x271a1a20, 0x06050619, - 0x15140e0c, 0x482c2538, 0x0e0e1a1a, 0x172b2115, 0x4a10153f, 0x35080659, 0x035c3633, 0x1b63104a, 0x9e0200fe, 0x631b8dfe, 0xfd010210, 0xf5015a62, - 0x13433818, 0x5d5c3a02, 0x005abcfd, 0x001b0003, 0x03e506ab, 0x00390061, 0x007f005c, 0x47492500, 0x0568430d, 0x26272622, 0x54106943, 0x07260aea, - 0x010e0706, 0x1d472221, 0x013e2305, 0xd0513233, 0x5636200f, 0x22a2055b, 0x54100127, 0x320d2a77, 0x0570490c, 0x2c069143, 0x11113131, 0x4c36573c, - 0x0c273837, 0x0b734933, 0x10112308, 0x025a1f1f, 0x13958429, 0x68252413, 0x22765742, 0x120f3d0f, 0x584e3a48, 0x4c3c4e58, 0x0f3a0f12, 0x1e9e7922, - 0x430b8b49, 0x2e2306b4, 0x432c512e, 0x17230bb5, 0x552a2d17, 0x272d0611, 0x1d1c1b26, 0x4154a9b1, 0x2e2c2c40, 0x053b4e4d, 0x200a0051, 0x281a9a52, - 0x00050000, 0x06ab004f, 0x092b55b1, 0x55400021, 0x0122342b, 0x02823521, 0x15212808, 0x21070206, 0x603d5401, 0x23232222, 0x79602222, 0x24244460, - 0x483c6044, 0x4f904e4e, 0x01de014f, 0x2c2b5709, 0x57a35757, 0x032e0589, 0x0141fe60, 0x01cdfe42, 0x36d636a6, 0xd9544c01, 0xfd2a082b, 0xea015bbc, - 0xfe525b59, 0x070052ba, 0x08ff2e00, 0x1505d206, 0x33001c00, 0x53004700, 0x73005d00, 0x00009100, 0x30070637, 0x034c3015, 0x30113205, 0x36373633, - 0x06333037, 0x17121607, 0x01012e23, 0x0ae54511, 0x230cf145, 0x33302726, 0x20062949, 0x22cf8233, 0x57013011, 0x2e21187d, 0x2df34701, 0x42f73608, - 0x046d6d1a, 0x5a5a1848, 0x32ae417f, 0x278316ba, 0x01a50192, 0x01c0fead, 0x01ddfe23, 0x74220140, 0x6d1b7c73, 0x6c1b031b, 0xa418781b, 0x014afb2d, - 0x65655e20, 0x075d505e, 0x14481720, 0x41230829, 0x02d01e4b, 0x5cacfe9f, 0x4d6d6d1e, 0xe8fe4bce, 0xfee13d21, 0x609f02e2, 0x60c460bb, 0xcbcc0801, - 0x8232c732, 0xfe292702, 0xf6fe4ee2, 0xf8476203, 0xb5fd210d, 0x212d3748, 0x83620000, 0x0005358f, 0x0608ffca, 0x00150536, 0x0017000f, 0x00660033, - 0x05000092, 0x2a11054e, 0x33300706, 0x012e0526, 0x4e302327, 0x33260549, 0x011e1330, 0xe7493317, 0x30232106, 0x21106359, 0x62592726, 0x05ad5a0a, - 0x230d6159, 0x33270226, 0x16214282, 0x078e5317, 0x27069c53, 0x33373637, 0x23070206, 0x262f6c82, 0x07062327, 0x0207010e, 0x3afb3df8, 0x4e98266e, - 0x30340770, 0x0230c631, 0x08340e19, 0xdb796802, 0x030e3408, 0x5bfc7967, 0x48057c44, 0x2e35050e, 0x621e1e3a, 0x563d2262, 0x38374c36, 0x1a490327, - 0x1f3a384a, 0x07eb4d20, 0x90015e08, 0x6e1a6a1a, 0x18092e0d, 0x24080317, 0x0f360b0a, 0x0a360e79, 0x03092309, 0x6b232331, 0x7a1b6e1c, 0x1910390d, - 0x19190219, 0xf80d3b10, 0x0170b6b6, 0xfe7070bf, 0x3b027041, 0x34949494, 0xfd0f641b, 0xfe9f02ff, 0x1b640f8d, 0x61fd0102, 0x343d5703, 0x2b0b2f0c, - 0x313a1616, 0x060b2e27, 0x06945905, 0x321b1a35, 0x28224102, 0x2a2c1717, 0x130d0a2a, 0x4d2f515c, 0x830b1e36, 0xdb3b334b, 0x1e706f2d, 0xdc2b2998, - 0x2bdc3c3c, 0xde259425, 0x5f83a2a1, 0x3fea3223, 0x37008266, 0x0032ea3f, 0xff180104, 0x05e8050e, 0x001b000f, 0x0043003a, 0x25000057, 0x221a7d41, - 0x54233021, 0x072405fc, 0x37013e23, 0x98430a82, 0x010e2708, 0x01011e07, 0xc5433311, 0x41112007, 0x33200676, 0xb5432782, 0xcd360806, 0x030c320c, - 0x0ddb7867, 0x68030c31, 0x7f3f0379, 0x021b6d1b, 0x781b6b1b, 0x23249124, 0x1980238b, 0x1a021966, 0x24781a67, 0x9325248c, 0x016cd9fb, 0x26010111, - 0x8043269a, 0x77230807, 0x81279a27, 0xfd185f17, 0xfe9e02ff, 0x175f188e, 0x62fd0002, 0x2c2cb22d, 0xe5392db2, 0x36db3639, 0x8229a729, 0xda363e02, - 0x03e63936, 0xfd9e0229, 0x080160c2, 0x430f0144, 0x3131c732, 0xfe4332c7, 0xf6fe43f2, 0x22008200, 0x82360106, 0x82ca20f3, 0x00142ff3, 0x002a001e, - 0x00460032, 0x05000052, 0x57442330, 0x14152205, 0x20cb8206, 0x0f195d17, 0x07232722, 0x50083065, 0x0221070b, 0x0e3f4f03, 0x21030222, 0x3a0b704e, - 0x21016da3, 0x4142685a, 0x79186118, 0x85165a16, 0x2f2e2aac, 0xb603ac29, 0x423bfa3d, 0x10340a66, 0x10c51040, 0x6e79fd40, 0x4811716e, 0x0a2b0b11, - 0x0b2c0b04, 0x6e240982, 0x68016f70, 0x08099c4e, 0x9e02f220, 0x5f485d6c, 0x2fbc2f14, 0x5b2db52d, 0x282e292b, 0x96fed52b, 0x0170b6b6, 0xfe6f6fbf, - 0xfd507041, 0x59012506, 0x4f014f01, 0x240b554f, 0xb1feb1fe, 0x07ae5402, 0x00020030, 0x066300a9, 0x00a90357, 0x0033001d, 0xd3412500, 0x51062005, - 0xb641058d, 0x0516210e, 0x49050d50, 0x40080819, 0x15303330, 0xa0760330, 0x04139027, 0x18966464, 0xbc3335c2, 0x7f20a017, 0x81200220, 0xbe179620, - 0x2d018a33, 0x411c0aeb, 0x5003164f, 0xccce4195, 0x20ed4163, 0x0127a7a7, 0x014f5333, 0xd0342426, 0x34028234, 0x4fdbfe24, 0x0271d7d7, 0x54461e72, - 0xa1480217, 0x712bfd47, 0xe71e1000, 0x06348101, 0x02ff2801, 0x1a05d805, 0x25000f00, 0x56004300, 0x7c007400, 0x4f11d353, 0x0120335b, 0x512ba14e, - 0x022807a6, 0x01c76d67, 0x417301fb, 0x2107704f, 0x824f6b82, 0x416b2205, 0x09794f27, 0x40272725, 0x820d1616, 0x16162c00, 0x41d0fd40, 0x29294c6b, - 0x87416b4c, 0x41262107, 0x41341c87, 0x163f2826, 0x0d0d0c17, 0x3f16170c, 0xc86ced02, 0x4c01fc01, 0x3605cf51, 0x2b2db7fd, 0x5554822c, 0x2d2c2c81, - 0x812c2c2d, 0x2b2c82a9, 0x4e1a612d, 0x252106c0, 0x05c04e24, 0x4e252421, 0x1a2406cd, 0x572d0103, 0x58232e83, 0x82582d2d, 0x8a57202c, 0x09c24f2b, - 0x2205f94e, 0x52e8011a, 0x07360833, 0xfdfe3300, 0x0905c206, 0x16000c00, 0x61003c00, 0x9c008600, 0xb95aa200, 0x0f8b6119, 0x2014f451, 0x06835a01, - 0x5a010b21, 0x24a51a7f, 0x1614112c, 0x11353632, 0x07141133, 0x934d020e, 0x5b112005, 0x0124063e, 0x2b2c5709, 0x2a08284a, 0x5e3aad02, 0x23232121, - 0x612f2121, 0x1d5205b2, 0x390e390c, 0x0269200e, 0x010501c3, 0x081f080b, 0x1f078282, 0x04010b08, 0x13786201, 0x29058b5a, 0x12082007, 0x62771247, - 0x2282c0fb, 0x1d820c20, 0x08828226, 0x020c081e, 0x12222283, 0x33821249, 0x20080825, 0x82481207, 0x64013322, 0x65388e38, 0x58350c0c, 0x0c36577f, - 0x6636020c, 0xc15af8f4, 0xb120080f, 0x842a2b27, 0x2b2a83b6, 0x25251413, 0x0820084a, 0x535e3239, 0x365e53a1, 0x0821093c, 0xa8014f4a, 0x2305925a, - 0x1001f0fe, 0x2117905a, 0x23a1ff04, 0x9f023208, 0x4d514efe, 0xb201514d, 0x32445efe, 0x1f1f4132, 0x44323241, 0x61fda201, 0xbbfd9f02, 0x0000005a, - 0xff4d0104, 0x05b30502, 0x0017001a, 0x008b0051, 0x059f529d, 0x4a09bb50, 0xaa5009d5, 0x23414d14, 0x4d0efe48, 0x0120297a, 0x2110f14e, 0x5a468501, - 0x4b013809, 0x0c2a7654, 0x2a240c32, 0x4240362c, 0x0a3b1717, 0x31610a28, 0x48111031, 0x0c2306d9, 0x621a0c33, 0x3b290653, 0x10105d65, 0xfd5a1f20, - 0x2332848b, 0x2b2b230d, 0x272e3286, 0x3131620a, 0x563c1111, 0x37384c36, 0x32890d28, 0x82643c21, 0x1f1f2b32, 0x0ce2015b, 0x68020d31, 0x0682db79, - 0x79670323, 0x069246f2, 0x343d0b32, 0x2b0c2e0c, 0x31391616, 0x0b171827, 0x12020702, 0x250d5e4d, 0x17172822, 0x5e4d2b2c, 0x6203210b, 0x012133b1, - 0x0f3c487e, 0x0000002f, 0x00cf0002, 0x03310654, 0x003400b8, 0x10d94e4a, 0x666a2620, 0x08805c05, 0x52095e4a, 0x0e220740, 0x35430102, 0x2787080d, - 0x1135022e, 0x946a0202, 0x0f3f0f34, 0x4436352d, 0x493a5250, 0x3d7b2525, 0x6b4c2a3d, 0x46465e44, 0x21045b31, 0x2847465d, 0x44202128, 0x29747e4b, - 0xf901704e, 0x8551c552, 0x764b1110, 0x4b3b3bae, 0x404d5521, 0x360f3a0f, 0x3d481b1c, 0x070e3a31, 0x393a1706, 0x3e593865, 0x3e212121, 0x322a0351, - 0x34381c1d, 0x100d1a1a, 0x3a657318, 0x03254461, 0x6bfcfd54, 0x026b6c6c, 0x5c11fe04, 0x2b574443, 0x86581615, 0x82ef015c, 0x732d10db, 0x0a393d07, - 0xf60608ff, 0x0e001505, 0x2b001800, 0x53004900, 0x63005d00, 0x30010000, 0x09505c33, 0x7e5a2b20, 0x2b262306, 0xe24c1101, 0x146b5c2c, 0x1133113a, - 0x76021521, 0x256841ed, 0x25292925, 0xed416825, 0x5c5c4bed, 0x49fe804b, 0x3c3a985b, 0x292ba701, 0x7ea77e2a, 0x602b292a, 0x5b6b5b5f, 0x0221fe5f, - 0x82572df7, 0x57825455, 0x2007822d, 0x290682a9, 0x19191b61, 0x692f2425, 0xbf4c242f, 0x5c0c8807, 0xfd2e0e82, 0xfd9f02c0, 0x050061c2, 0xab000300, - 0xa756fd06, 0x5659200a, 0x052034a7, 0x2024bd4c, 0x11c05608, 0x200dae6b, 0x06c056a4, 0x744c9620, 0x83072105, 0x2007744c, 0x0f006761, 0x3a2bd456, - 0x134c13a7, 0xfe124b13, 0x121101ef, 0x4a13124a, 0x0263fe13, 0x279c279e, 0x82165916, 0x22088202, 0x820062fd, 0x00033100, 0x06ab0022, 0x006103de, - 0x0033001b, 0x1300006c, 0x561c4153, 0x114c15e7, 0x012e2114, 0x5c105259, 0xd7200fbc, 0x28054d53, 0x0c320cdb, 0x01796803, 0x0abc5640, 0xb85c4c20, - 0x2a02212f, 0x240a214b, 0xfd010218, 0x09a14b62, 0x5c080f6e, 0x250827b5, 0x01070000, 0x0502ff7c, 0x001a0584, 0x005b0037, 0x00750068, 0x00a9009c, - 0x010000d5, 0x010e2130, 0x37363307, 0x8866023e, 0x07012e07, 0x27222306, 0x2627012e, 0x17163727, 0x7917821e, 0x22220515, 0x14820706, 0x37013e23, - 0x3a5e6621, 0x6b07bf66, 0x1e220d24, 0x246b3301, 0x35212117, 0x29607182, 0x23262405, 0x83020e22, 0x233c8283, 0x17163202, 0xc9790182, 0x08c28206, - 0x26032137, 0x0c03d7fe, 0x0d0b0602, 0x1c2b200d, 0x1f364b2b, 0x2d3d1010, 0x232d392c, 0x13143423, 0x0e0c4f10, 0x1c2b230d, 0x3b41413b, 0x0f12342b, - 0x11040f3c, 0x017c0104, 0x245d6669, 0xfe3b3b37, 0x3c583717, 0x232c1110, 0x90295523, 0x212d2e38, 0x0c171622, 0x097d6b01, 0x6b221e21, 0x5908067d, - 0x50034141, 0x8f2339fe, 0x1b1b3324, 0x291c323a, 0x1006141f, 0x120b103f, 0x664c3812, 0x0e1c1b50, 0x1d2d190f, 0x691a201e, 0x0152011a, 0x289e274e, - 0x17101014, 0x4e361c0c, 0x2a2a3231, 0x0a10113d, 0x1516210a, 0x10143e18, 0x410d1911, 0x413a0b3a, 0x09021421, 0x3ef93e02, 0x4e6657fd, 0xd1012137, - 0x2d0be66b, 0x28282726, 0x01352d2e, 0x1b231401, 0xe66b1d10, 0x683f0812, 0x2e207f20, 0x0c2e2a2a, 0x1c113831, 0x19061627, 0x1d1d2006, 0x1a1e1b2e, - 0x2b25241b, 0x1c3e4528, 0x5a171c1c, 0x00000017, 0xff7a0106, 0x05860502, 0x0028001a, 0x006c0036, 0x009f0092, 0x680000ca, 0x3f680c40, 0x21252226, - 0x18834206, 0x37013e24, 0x345f031e, 0x07386906, 0x25211322, 0x6d14a75e, 0x2122196b, 0x88613635, 0x1e454206, 0x45685220, 0x5a393505, 0x0d2c2222, - 0x0e0a0403, 0x1f30260e, 0x3424242b, 0x1e11111e, 0x08054468, 0x10103d45, 0x41413bec, 0x42423a3b, 0xd6fe3403, 0x0b070c05, 0x2a210c0d, 0x364a2b1d, - 0x3e0f101f, 0x2d392c2d, 0x13352322, 0x340e1014, 0x221b0d0d, 0x403c1c2b, 0x342b3c40, 0x0f3c0e12, 0x7c011207, 0x583810fd, 0x8211103c, 0x29552c23, - 0x2e2d3890, 0x17162221, 0x6d03030c, 0xcd5e07c7, 0x41412205, 0x05494275, 0x336b6b25, 0x423b1c1b, 0x0f210548, 0x07484240, 0x0e1b1c2e, 0x1e2c190f, - 0x691b201d, 0xb352011a, 0x222d3068, 0x42a449f2, 0x0a241475, 0x21140a2a, 0x230b7642, 0xb9010174, 0x212d3b42, 0x3a42605f, 0x06003824, 0x08ff3900, - 0x1505c706, 0x1c000f00, 0x32002800, 0x7a005700, 0x58050000, 0x303407d1, 0x16333013, 0x26031712, 0x06233027, 0x30073007, 0x01012e33, 0x5315536e, - 0x25750f99, 0x14735313, 0x1e171625, 0x44331701, 0x113c0588, 0x0a1e0423, 0x06e20624, 0xc9640a24, 0x21872182, 0x0c0b0af1, 0xb13c0a0b, 0x9bfc290b, - 0x080d306e, 0x3bad0230, 0x2421215d, 0x2f212124, 0x33553b2e, 0x4a0d1f34, 0x44343f11, 0x35444c4c, 0x380e1243, 0x026a1f0e, 0x010501c4, 0x0421090c, - 0x22038282, 0x0c820c09, 0x3678623e, 0x05210937, 0x05171808, 0x62771552, 0x187f23f8, 0x02237f18, 0x41fe709f, 0x31e00170, 0xd3240082, 0xa5018c24, - 0x211d4e53, 0x4d532907, 0x52163f12, 0x01f0fe09, 0x16510810, 0xfe124b14, 0x769f0263, 0x0e5d1975, 0xb10b4242, 0x0061fd2f, 0x67410700, 0x00162c08, - 0x002a0020, 0x003f0035, 0x7f870064, 0x06230807, 0x6c321507, 0x0e20061c, 0x2305a571, 0x34013d36, 0x200ca371, 0x13ff7301, 0x76057856, 0x75411e9b, - 0x02220822, 0x4e100198, 0x1d343750, 0x0a221817, 0x39281609, 0x66d5fe22, 0x262625a7, 0x2197a725, 0x97212525, 0x7d413bfd, 0xa7013f50, 0x48415459, - 0x0b0b0c05, 0x211c1c28, 0x1c33472b, 0x2c2b275a, 0x2457272c, 0x23292b28, 0x85411d01, 0x00003451, 0xff270105, 0x05d90502, 0x002a001a, 0x003c0034, - 0x827d0071, 0x09597314, 0x33023e24, 0x71761632, 0x10e76a19, 0x650e7b54, 0x5d65085e, 0x0d7c5d0d, 0x210a0c5b, 0x8676f402, 0x7302261f, 0x6f3afb3c, - 0x07ed6be5, 0xc6114026, 0xb6fd4010, 0x6b12ea76, 0x6426135d, 0x5a3f215e, 0xd3542e01, 0x768c2009, 0x59210796, 0x0896762d, 0x0808652e, 0x1f2f1010, - 0x9bfe5d34, 0x9e02b6b6, 0x200b345b, 0x0a51544e, 0x020b2f22, 0x540ef376, 0x5c250982, 0x374d2f51, 0x09fd6f1d, 0x0200003d, 0x16ffce01, 0x0e043205, - 0x3b002100, 0x30050000, 0x26272223, 0x2e353035, 0x82262701, 0x05b04208, 0x1617322f, 0x15011e17, 0x15070214, 0x3e322733, 0x05987401, 0x23022e22, - 0x0808436f, 0x04021e28, 0x28558e70, 0x2f885527, 0x3e191b2f, 0x50503938, 0x395050c4, 0xa0bb3e38, 0x603af09a, 0x13131244, 0x3a604412, 0x09855f3b, - 0x2cea5f31, 0x0b4c492b, 0x5b41414d, 0xc27f735c, 0x82224142, 0x42413400, 0xfee17fc2, 0xf2671cfc, 0x37374c28, 0x37459e45, 0x8a284c37, 0x0300290a, - 0xb7001300, 0x5603ed06, 0x3d220782, 0x61675100, 0x61032005, 0x944b0f5f, 0x30032206, 0x07535803, 0x30233023, 0x0f2b6c11, 0x30231123, 0x22018221, - 0x84013035, 0x21230805, 0x02061530, 0xe3302107, 0x5d1772cf, 0x5b170d17, 0x8a227017, 0x01090322, 0x080c0105, 0x8282081e, 0x44071f08, 0x12360597, - 0x20071249, 0x1f080808, 0x12481208, 0x9a026277, 0x410141fe, 0x7662cefe, 0x01b73206, 0x329b0103, 0xc83131c8, 0xeefe4432, 0x01fdfe45, 0x21874b9d, - 0x28097d62, 0x00040000, 0x06ab004c, 0x26e382b4, 0x001e0014, 0x835f0028, 0x1ddb5de5, 0x2107a642, 0x994a0111, 0x5db92032, 0x192106e4, 0x08e45d60, - 0xac2a2e24, 0x56681302, 0x58032707, 0x0c03d7fe, 0x244a0703, 0x0e132123, 0x2006244a, 0x0eec5db7, 0x292e2827, 0x96fed52b, 0x065a6802, 0x9e28402a, - 0x10101427, 0x351d0c17, 0x210fc549, 0xc5491011, 0x8200200e, 0x01043000, 0x0502ff73, 0x001a058d, 0x007d004c, 0x72e000b4, 0x17201717, 0x2106e24a, - 0x01840607, 0x011e1522, 0x8405f24a, 0x2306220d, 0x05115722, 0x82372721, 0x0c227217, 0x210a324b, 0x596b2627, 0x06364b06, 0x36370123, 0x85558632, - 0x010e2354, 0x68412107, 0x8a012033, 0x1d514964, 0x67500221, 0x62081192, 0x1d1d2828, 0x0a0a1110, 0x17181212, 0x13331d1a, 0x110b0b13, 0x2c1f2011, - 0x232f362c, 0x141c1b24, 0x0d4f0f15, 0x2d12111c, 0x45423d1d, 0x80034740, 0x8f2439fe, 0x1b1c3323, 0x1b321e1d, 0x0b0f0f2a, 0x4010050a, 0x13110b0f, - 0x66262637, 0x0e1c1b51, 0x1616190e, 0x1a201e1d, 0x52011b69, 0xd6fea7fd, 0x49030b03, 0x37350893, 0x3e100f1e, 0x2d392d2c, 0x14342322, 0x0d4e0f14, - 0x2c220e0d, 0x0692491b, 0x4c3b0f21, 0x02240507, 0x2438fe50, 0x2107b34b, 0xb34b1e2a, 0x854b2008, 0x4b18205e, 0x357208b3, 0x0c270810, 0x2116170b, - 0x1a20291f, 0x0c141419, 0x0604060d, 0x1d14151a, 0x242c251c, 0x0e191a24, 0x110a0a0e, 0x17161511, 0x7222143e, 0x7520093d, 0x2609614b, 0x0e111c1c, - 0x4b13140e, 0x0d210764, 0x05654b0e, 0x1f442923, 0x05664b1f, 0x4c460521, 0x62202b22, 0x2028bb4b, 0x06274f04, 0x0f005628, 0x37002e00, 0x5b5e8f03, - 0x243f6f13, 0x02260526, 0x011d3327, 0x22354618, 0x158a4518, 0x5fa638c9, 0x461826a6, 0x1520194a, 0x153d4618, 0x3d370122, 0x14774518, 0x45181494, - 0x119111b3, 0x26a638a6, 0x35215fcc, 0x3f461833, 0x3a012810, 0xc901b266, 0x706b0601, 0x282105f6, 0x12f67027, 0x18eb0123, 0x0346185f, 0x03012d4f, - 0x040c040e, 0x380e040e, 0x390e7c0e, 0x46180782, 0x01285204, 0x18621964, 0x0f390f7a, 0x0b3a6b82, 0x0f030e04, 0xfc020f3d, 0x4502bbfd, 0xb0fd5959, - 0x3c7f4242, 0x38373c3d, 0x7a71302f, 0x34302107, 0x200a7a71, 0xda45104a, 0x002f5503, 0x00050000, 0x06ab0047, 0x006103b9, 0x822f001e, 0x0058280b, - 0x01000070, 0x6c07010e, 0xc67a0ad7, 0x82332005, 0x06d96c14, 0x20243e7b, 0x3925a405, 0x3d0f1001, 0x046c6c10, 0x1e104010, 0x287e1e79, 0xad2b289f, - 0x8822832b, 0xd27a6302, 0x06062718, 0x31100f07, 0x209e5202, 0xf0012208, 0xcf124612, 0xacfe9e02, 0x25145115, 0xbc2f2491, 0xfefe412f, 0xfed13441, - 0x40592ef0, 0x40525340, 0x06797a41, 0x49341b35, 0x482c762b, 0x341b1b34, 0x762c2424, 0x1b23252b, 0xa35c1b1a, 0x00002224, 0x08934e06, 0x42002f3a, - 0x8d006300, 0xa0009800, 0x30050000, 0x30353021, 0x36373637, 0x34353035, 0x2a0adb49, 0x013e3736, 0x17011e32, 0x4a141516, 0x07250581, 0x2107010e, - 0x052a5605, 0x82343521, 0x3637211d, 0x8306937c, 0x05554d3d, 0x82272621, 0x85222001, 0x05dd752f, 0x16171623, 0x51421801, 0x22f74e08, 0xf2791220, - 0x4503240c, 0x53d639fe, 0x5a550911, 0x1c1c2c05, 0x3750664c, 0x0c0d0f0e, 0x531d1716, 0x01260613, 0x2e2e3f49, 0x00820e3c, 0x2e3c2308, 0x767c3f2e, - 0x19227c76, 0x070f1018, 0x0f070606, 0x45191810, 0x100f1918, 0x06070706, 0x18190f10, 0x0e4f89fe, 0x3d742620, 0x726e3afb, 0x0c0f4f72, 0xbf68f22c, - 0x2f292a2e, 0x1138310c, 0xc349261d, 0x17172a06, 0x24351e1b, 0x23282b25, 0x07c34922, 0x18176722, 0x33072e7c, 0xfeb71817, 0x0e5cb6b8, 0x231a1a0e, - 0x2c752d24, 0x1a1a2424, 0x0e29a182, 0x24231b1a, 0x242d752c, 0x210e8323, 0x2d4f7703, 0x4f01231f, 0x2f4f4f01, 0x0020080a, 0x01060000, 0x0568fe0b, - 0x000f05f5, 0x0039001f, 0x004b0041, 0x006f0055, 0x23300100, 0x013d2622, 0x2014fd4e, 0x1afd4e06, 0x2007f667, 0x12877701, 0x41180520, 0x2e080d65, - 0x33112311, 0x37363313, 0x02231133, 0x35395fe5, 0x201f5b38, 0x262a1211, 0x82353625, 0x26263536, 0x676b7c29, 0x2d4027a1, 0x0d0c0c0d, 0x8227402d, - 0x0d0c2d09, 0x402d0c0d, 0xc76ded02, 0x3bfbfb01, 0x2b0cff79, 0x09051504, 0x62190923, 0x19621818, 0x05390882, 0x06b48067, 0x677b595a, 0x313a68fe, - 0x2b340732, 0x4c3e3d2b, 0x2b2c8155, 0x3d008217, 0x55812c2b, 0x4513ad96, 0x25331aa2, 0x2e6a2d25, 0x1b332425, 0x2524331b, 0x252d6a2e, 0xec673325, - 0x24012108, 0x2d09e276, 0x2b282e29, 0x1249123e, 0x2d2db32c, 0x08822cb3, 0x02fffd39, 0xababfe9e, 0x0062fdaa, 0x00020000, 0x06540085, 0x00b8037b, - 0x644d0034, 0x1a41357f, 0x133d0813, 0x01231133, 0x359469b7, 0x2c103e10, 0x51443536, 0x26493951, 0x3e3d7a25, 0x436c4c2a, 0x3145465f, 0x5d21035b, - 0x27284846, 0x4a442120, 0x4e29757e, 0x06fa0371, 0x130b2c0b, 0x81242381, 0x27088213, 0xe1a18206, 0x829ae007, 0x2a2d8c64, 0x5a178f02, 0x40ec2217, - 0x8222ec40, 0x7ffd3808, 0x56fe4603, 0xbafcaa01, 0x00030000, 0x066300b5, 0x00a9034b, 0x7b15000b, 0x092119ad, 0x11d57601, 0x6801b63c, 0x747f7f74, - 0x3934d8e1, 0x03d83439, 0x8cedfe5a, 0x0a175817, 0x0f050f37, 0x09820a38, 0xba2e8834, 0x4603632e, 0xfe89e689, 0x36c501b2, 0x36323a32, 0xa17631fd, - 0xc8252205, 0x0aa17637, 0x00820020, 0x20071b50, 0x06bf4561, 0xbd457e20, 0x34ce4e46, 0x10152108, 0x6d6d0f3d, 0x10401003, 0x7f1e781f, 0x2b27a028, - 0x22832bac, 0x3f630287, 0x0e0f3b5c, 0x5c3b0f0e, 0x28054344, 0x0d0d1f31, 0x3145311f, 0x053b441f, 0x1a033122, 0x45325050, 0x01213edf, 0x2c7150ef, - 0x5b01053a, 0xa50502ff, 0x34001a05, 0x48003e00, 0xa2008100, 0x22050000, 0x37362726, 0x54079f79, 0x0225103f, 0x23012e07, 0x0f3f5422, 0x14654b18, - 0x01694589, 0x0d597629, 0x2a0eb157, 0x010e1716, 0x76555002, 0x7f26252a, 0x0b2314c7, 0x7f091e1a, 0x01210dc8, 0x0545442d, 0x2aacb335, 0xac2a2e2e, - 0x76542cfe, 0x2425262b, 0x40372b2a, 0x69161842, 0x0d211140, 0x0e406919, 0x08057476, 0x69242521, 0x22755841, 0x48112e2d, 0x58584e3b, 0x134b3d4e, - 0x79224d0a, 0x23343dfd, 0x16162b23, 0x54273139, 0x0a230e8c, 0x54081b16, 0x4b18128d, 0x292507bf, 0x012b282e, 0x693d8918, 0x2a082650, 0x4055a9b1, - 0x2d2c2d40, 0x19194b4d, 0x5d6a3930, 0x3e695d66, 0x492f0631, 0x00000052, 0x002e0004, 0x03d206b7, 0x000f0056, 0x18360027, 0x5e15e741, 0x132015d5, - 0x25182d61, 0x01c86c62, 0xad5570fc, 0xed832b09, 0x25256940, 0x25252828, 0xf6604069, 0x18812005, 0x2009e841, 0x05bb7002, 0x2a9e0227, 0xa87d2a2a, - 0x2705827d, 0x6c5b5e60, 0x22fe5e5b, 0x002d9e82, 0xff4b0106, 0x05b50502, 0x0015001a, 0x30ab821e, 0x016e0049, 0x050000d8, 0x21303530, 0x12363530, - 0x053d7437, 0x2330152e, 0x25301530, 0x11303330, 0x010e2330, 0x2007145e, 0xd344183e, 0x48012008, 0x2e23073d, 0x7e062201, 0x1e240719, 0x26220102, - 0x6d08006a, 0x07220681, 0x46181d06, 0x352b0e81, 0x0f231133, 0x0e0f1501, 0x840d0f15, 0x91088205, 0x2e05270b, 0x35372701, 0x02840b3f, 0x05840a20, - 0x06200b88, 0x073c1793, 0x15331133, 0xc9fea102, 0x8e2db52d, 0xbffe5c5c, 0x8e2307db, 0x5c3eaf02, 0x1d0f0e3c, 0x09bd4418, 0x00820720, 0x310f0f26, - 0x0f103145, 0x07390982, 0xeefd311f, 0x49279683, 0x3b584168, 0x3c0f213b, 0x3b481110, 0x2d2d2c4d, 0xd849182c, 0xbc2f220a, 0x3b4c1808, 0x222eeb2e, - 0xd20b2c0b, 0xd202206e, 0x01012453, 0x18f2a3a6, 0x290ea54a, 0x582fe2fe, 0x51524140, 0x45185883, 0x243b07aa, 0x2b752c25, 0x1a1a2425, 0x1a1a1c1c, - 0x752b2524, 0x3324252c, 0xb106031c, 0x188055a9, 0x2c0f6148, 0x09313e34, 0x29490923, 0x015a0b29, 0xd0b1d4f5, 0x280a2254, 0x8953d00a, 0x55b64150, - 0xfd235f86, 0x82005abc, 0x00013800, 0x065f025c, 0x00a502a4, 0x13000003, 0x5c211521, 0xb8f94806, 0x8546a502, 0x25ff271b, 0xd605a406, 0x1b821400, - 0x2c323c08, 0x35053e01, 0x032e3411, 0x5c23022c, 0x0134019d, 0xadc7f605, 0x3c2e5b7f, 0xfeccaa6f, 0xfee5fef8, 0xa502ada9, 0x7e725633, 0x47667a83, - 0x154ff90e, 0x91907d5b, 0x003e6886, 0x895b0001, 0x22012447, 0x832e012c, 0x823e2047, 0x06332747, 0xccfe9da4, 0x4889fbfe, 0x01080125, 0x9657011b, - 0x32938248, 0xff2a0005, 0x05d60638, 0x00040094, 0x00440040, 0x8208014b, 0x21302b9b, 0x22042107, 0x0e07030e, 0xab570704, 0x34352e06, 0x17323336, - 0x3e32041e, 0x043e3703, 0x240c8337, 0x15161716, 0x221e8314, 0x8203032e, 0x150133e9, 0x23250523, 0x3e342535, 0x16323302, 0x1e323617, 0x26821703, - 0x83061421, 0x32362105, 0x17250583, 0x3e37013e, 0x20478203, 0x83408436, 0x011e2228, 0x840c8631, 0x32332317, 0x2983021e, 0x15215b85, 0x29618514, - 0x012e2726, 0x2e353435, 0x6e832702, 0x23010e2e, 0x010e2722, 0x27220607, 0x030e0706, 0x06830c86, 0x0e820220, 0x2683b084, 0x2e210386, 0x08ba8202, - 0x0e34273b, 0x010e3501, 0x26272627, 0x34351617, 0x34370627, 0x22233637, 0xe4015c26, 0x0462fe46, 0x506154e0, 0x070f2f4f, 0x5b403c15, 0x934b522c, - 0x08354da7, 0x0f1b151d, 0x504f2f0f, 0x081b9a61, 0xe401ddd4, 0x10fe62fe, 0x01000196, 0x7afc9600, 0x1a240e04, 0x0e0b1b13, 0x080c171f, 0x1b110202, - 0x06021115, 0x2e380407, 0x0e101007, 0x0810020c, 0x130c0603, 0x06090a0c, 0x1339530b, 0x282c040d, 0x1e180c11, 0x1d0c2f41, 0x0e040d15, 0x2013241a, - 0x0c1e2714, 0x090a1114, 0x492f0909, 0x13012c21, 0x180f121a, 0x0f061004, 0x0f142521, 0x1c192a10, 0x12241017, 0x0e0d2109, 0x3b1a132e, 0x07071813, - 0x09380d06, 0x141b0e29, 0x340d111a, 0x0807122f, 0x0a111910, 0x1010160b, 0x0f171c10, 0x1a0c2218, 0x16110822, 0x1601030d, 0x03270617, 0x0801021a, - 0x01030110, 0x12070802, 0x6eb9021a, 0x52422fbb, 0x1d09173c, 0x184b424a, 0x4d4ea72d, 0x1d150f0d, 0x523c1716, 0x18972f42, 0x58019008, 0xfa25016e, - 0xa0faf0f0, 0x1a291d0d, 0x0e071b15, 0x0e111d11, 0x0b3a2617, 0x070d0c02, 0x10370505, 0x09100b09, 0x670c0804, 0x2741040d, 0x60373b1f, 0x11070e18, - 0x2617121d, 0x100f1509, 0x04435201, 0x05120438, 0x11083401, 0x2d0c1017, 0x04030b12, 0x0b423e08, 0x111d2f07, 0x10450b24, 0x331c1411, 0x090e1d0f, - 0x0c4d0a5d, 0x410c1818, 0x1617022d, 0x05081721, 0x141b0c11, 0x0e052226, 0x17031922, 0x0c0c0207, 0x02050203, 0x02020411, 0x82010402, 0x07022403, - 0x4300171a, 0x8f431e73, 0x00033818, 0x0637ff5c, 0x00e005a4, 0x000d0006, 0x0100003b, 0x01092311, 0x85031123, 0x2f012406, 0x89270701, 0x840f2001, - 0x020f2b0f, 0x1737021f, 0x011f013f, 0x018a1737, 0xc8340328, 0x14011401, 0x068598c8, 0x38d8023d, 0x4b604e72, 0x5a5a6048, 0x184b2754, 0x394b4554, - 0x155a364b, 0x39252539, 0x82365a15, 0x54453f0c, 0x54274b18, 0x48605a5a, 0x724e604b, 0xfcfe5d01, 0x2201defe, 0x5d020401, 0x22010401, 0x0f82defe, - 0x1bc82e08, 0x2d420438, 0x21665951, 0x48582a37, 0x645a7084, 0x8f523b4b, 0x4a656c43, 0x4b3b528f, 0x84705a64, 0x372a5848, 0x51596621, 0x3804422d, - 0x217b4400, 0x41180741, 0x23081b3f, 0xffc80004, 0x0538065e, 0x000300a6, 0x001b000f, 0x2500001f, 0x03152135, 0x23153315, 0x23352315, 0x01353335, - 0x112e0b8b, 0x6c041123, 0xb4b4cc01, 0xb4b464b4, 0x0684c0fc, 0x5a310227, 0x046464a0, 0x2312839c, 0x5cfeb464, 0x02250785, 0x06b8f90e, 0x26b79f48, - 0x000e0000, 0x830100ae, 0x20038426, 0x220b8602, 0x820d0001, 0x2417858b, 0x00070002, 0x2417863d, 0x00290003, 0x200b8699, 0x20238204, 0x240b86df, - 0x010f0005, 0x240b860d, 0x010c0006, 0x22cf8237, 0x84090401, 0x86002053, 0x0001220b, 0x2109821a, 0x17830003, 0x77820220, 0x17862d20, 0x52000324, - 0x0b864500, 0x23820420, 0x0b86c320, 0x1e000524, 0x0b86ed00, 0x18000624, 0x4d831d01, 0x75004630, 0x6e007200, 0x63006100, 0x20006500, 0x07824900, - 0x0f826f20, 0x0000732e, 0x6e727546, 0x20656361, 0x6e6f6349, 0x52200e82, 0x67201f82, 0x6c202d82, 0x72282b82, 0x65520000, 0x616c7567, 0x45220882, - 0x19826c00, 0x74006322, 0x69204782, 0x20223d82, 0x0f824b00, 0x0f826520, 0x3a002022, 0x61995182, 0x31261f85, 0x2d003700, 0x03823800, 0x30003238, - 0x33003200, 0x6c450000, 0x72746365, 0x4b206369, 0x20746565, 0x898c203a, 0x31270f82, 0x2d382d37, 0x82323032, 0x8f5d992a, 0x825620bf, 0x00722695, - 0x00690073, 0x20df826f, 0x246b8220, 0x00310030, 0x3007842e, 0x56000030, 0x69737265, 0x30206e6f, 0x302e3130, 0x8d108230, 0x11174159, 0x23061641, - 0x00020000, 0x0120008b, 0x0b840c8b, 0x05824b20, 0x00019a08, 0x01030002, 0x01030102, 0x01050104, 0x01070106, 0x01090108, 0x010b010a, 0x010d010c, - 0x010f010e, 0x01110110, 0x01130112, 0x01150114, 0x01170116, 0x01190118, 0x011b011a, 0x011d011c, 0x011f011e, 0x01210120, 0x01230122, 0x01250124, - 0x01270126, 0x01290128, 0x012b012a, 0x012d012c, 0x012f012e, 0x01310130, 0x01330132, 0x01350134, 0x01370136, 0x01390138, 0x013b013a, 0x013d013c, - 0x013f013e, 0x01410140, 0x01430142, 0x01450144, 0x01470146, 0x6e750748, 0x46304569, 0x20078630, 0x20078631, 0x20078632, 0x20078633, 0x21078434, - 0x27853031, 0x85303121, 0x30312127, 0x31212785, 0x21278530, 0x27873031, 0x2f863520, 0x07863620, 0x07863720, 0x07863820, 0x07863920, 0x07864120, - 0x07864220, 0x07864320, 0x07864420, 0x07864520, 0x07854620, 0x86303121, 0x86312007, 0x207f8607, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, - 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x217f8631, 0x77853032, 0x86313221, 0x207f8607, - 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, - 0x217f8632, 0x77853033, 0x86313321, 0x207f8607, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, - 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x217f8633, 0x77853034, 0x00313428, 0xff010000, 0xd94400ff, 0x00002607, 0x0014000c, 0x24158204, - 0x00000002, 0x85038601, 0xdf002309, 0x2f83cbd6, 0xfde0002c, 0x00009fff, 0x03e10000, 0xfa055820, 0x2be93641, + 0x34003300, 0x36003500, 0x38003700, 0x2208f182, 0x003b003a, 0x003d003c, 0x003f003e, 0x00410040, 0x00430042, 0x00450044, 0x00470046, 0x00490048, + 0x824b004a, 0x8506209a, 0x229b829e, 0x82020100, 0x00022105, 0x0121008d, 0x8dec8200, 0xd20d4012, 0x6f043b22, 0x2c21d582, 0x08018500, 0x84003c8e, + 0x6404c600, 0xc4052405, 0x5807d406, 0xce08ea07, 0x76093409, 0xfe0ab00a, 0xee0b880b, 0xe60c2e0c, 0xd80d6a0d, 0xca0e640e, 0x5a10a40f, 0x7e11bc10, + 0x9212c611, 0x8c130c13, 0x9814d813, 0x38164815, 0x80171217, 0xae1b1e1b, 0xc01c341c, 0x081fea1d, 0x8020bc1f, 0x8a213421, 0x8622fc21, 0x2a27c823, + 0xb028ca27, 0xc6295229, 0xbe2a0a2a, 0xf42ba42b, 0x242e162e, 0x6e2e482e, 0xde2fd02f, 0x5430ec2f, 0x70306230, 0xb0307e30, 0x4032be30, 0x21089982, + 0x003b0002, 0x04150200, 0x000300aa, 0xb12e0007, 0x3c2f0001, 0x000407b2, 0x06b132ed, 0xb23cdc05, 0x0a820203, 0x03b10022, 0x05201683, 0xb2271683, + 0xfc010607, 0x8301b23c, 0x11333717, 0x21251121, 0x013b2111, 0x0161feda, 0x049cfe64, 0x3b56fbaa, 0x57833404, 0xff80fc25, 0x828003f5, 0x82012009, + 0x05002e59, 0xfd212521, 0xf99a0533, 0x0b0007b3, 0x0815820b, 0x09020325, 0xf7040f00, 0x1b00fd03, 0x2f002500, 0x30010000, 0x15163221, 0x07010e14, + 0x16150706, 0x1e171617, 0x82141501, 0x010e2f0b, 0x21372123, 0x013d3632, 0x21232634, 0x09853335, 0x012b4d08, 0xbd010a02, 0x311f8e7d, 0x1e1e2020, + 0x1f202525, 0x2214132b, 0xfe385f23, 0x1801a217, 0x3f48483f, 0x3dfce8fe, 0xfc3d4242, 0x778dfd03, 0x0d324f38, 0x0208030c, 0x1c1c0d0d, 0x363c3f58, + 0x2c272735, 0x313e428b, 0x3e88423e, 0x3e3a2e39, 0x30088f83, 0x63009100, 0xa9036f06, 0x17000f00, 0x00002b00, 0x30273025, 0x30073021, 0x37123623, + 0x17121633, 0x06233001, 0x26333007, 0x00113001, 0x30333027, 0x2f038513, 0x11070206, 0x4cea0230, 0x8a49c7fe, 0xab2fbf2f, 0x34080382, 0x3c068dfe, + 0x023cf73d, 0x17f7fe84, 0xcb04cc9b, 0x1dce3794, 0x8ce3e363, 0x8c8c2e02, 0x028cd2fd, 0xb9b9b9c9, 0x4a01f0fd, 0xfe28d401, 0x6175018b, 0xfe329afe, + 0x218282b3, 0x04820300, 0x0007ab3a, 0x58036103, 0xba038c03, 0x26370000, 0x30332702, 0x1d17021d, 0x031d1704, 0x14910290, 0x478211a3, 0x719126f1, + 0x1e268695, 0x3e331701, 0x73413701, 0x220d8606, 0x8937033d, 0x8a042002, 0xa317850b, 0xf1298211, 0xa1719126, 0x06332e86, 0x26230702, 0x012e2702, + 0x010e2327, 0x2d0d8207, 0x27262205, 0x1e37013e, 0x35323301, 0x18832634, 0x26272629, 0x33363435, 0x82171632, 0x012e2b21, 0x15062223, 0x17161714, + 0x0285011e, 0x06141523, 0x223b8225, 0x82272223, 0x26272628, 0x37363734, 0x823c823e, 0x84072021, 0x011d352c, 0x32331614, 0x3d023e37, 0x33352301, + 0x188e2311, 0x0168185e, 0x043400cc, 0x040c040e, 0x390e030e, 0x390f7b0e, 0x030f030e, 0x040e030d, 0x012761cc, 0x19621864, 0x833a0e7a, 0x820c205c, + 0x3c0f3b5c, 0x4bf0020f, 0x2f0b276e, 0x314d1d0c, 0x09342a77, 0x2b5a0a24, 0x4865702a, 0x13822463, 0x401a3c08, 0x16373731, 0x24093116, 0x15443009, + 0x02741316, 0x4f090c43, 0x2b2c3448, 0x12132021, 0x22221212, 0x375a3d5f, 0x11531e38, 0x50483c46, 0x1a1e4850, 0x7c16271a, 0x70b75adf, 0xcd70be01, + 0x4d0010b8, 0x1a2d4701, 0x67191968, 0x10014419, 0xf0fe4444, 0x220a8244, 0x101a6819, 0x47015b01, 0x084d4741, 0x42fe70af, 0x13014570, 0x19671a45, + 0x451a6719, 0x0b45edfe, 0x2a0b3638, 0x6d2c290b, 0x020d2f2c, 0x2c150207, 0x615c512d, 0x290a3431, 0x2d24250b, 0x15162a34, 0x0208020c, 0x17171f0b, + 0x6865293f, 0x133e306e, 0x42292a13, 0x4242b842, 0x27282a2a, 0x31314726, 0xa4525c39, 0x09085c52, 0x3b1e3121, 0x009efe57, 0x52000700, 0xae0602ff, + 0x1a001a05, 0x38002400, 0x53004900, 0x80007800, 0x22050000, 0x37343526, 0x3337023e, 0x07060706, 0x3307010e, 0x3233013e, 0x06141516, 0x013d3227, + 0x1d222334, 0x26031401, 0x16332702, 0x17161712, 0x36373633, 0x272a8212, 0x23210702, 0x17322111, 0x07272783, 0x012e2313, 0x48372327, 0x15270779, + 0x27262201, 0x8234012e, 0x3637222a, 0x21238233, 0x58450617, 0x3698080b, 0x17011e37, 0x1105010e, 0x11011501, 0xa2013501, 0x0f106d6b, 0x8a314f3a, + 0x1e2a2a3b, 0x0c09251d, 0x51314711, 0x6d6a6e5f, 0x211f6c6d, 0x136b2183, 0x0e0e1450, 0x140e0e0c, 0x2169144e, 0x8f012083, 0x56090165, 0x3a392b2c, + 0x56087180, 0x249b7817, 0x9b242626, 0x5d3aad02, 0x23232122, 0x2e2e2221, 0x3333563b, 0x12490d1f, 0x4c44353e, 0x4236444c, 0x0e380f12, 0xe4fe6920, + 0x72fe2801, 0x84fdd8fe, 0x3c3d3c7f, 0x2d22606f, 0x28292829, 0x312f3256, 0x776a676a, 0x77197755, 0x56080282, 0x01701803, 0xfe466fbf, 0x4f4e46e7, + 0x01464e4f, 0xfe6f4619, 0x9e027041, 0x4d603433, 0xe7fe1160, 0x5536c913, 0x2a3e2a26, 0x8efede26, 0x842a2a27, 0x2a2a84b6, 0x25251414, 0x3929074a, + 0xa1525f32, 0x3b365e53, 0x4a092108, 0x34feb24e, 0xfe821001, 0xfecd0192, 0x820082ef, 0x00043f00, 0x06ab0020, 0x006103e0, 0x0015000b, 0x0074004a, + 0x11303700, 0x16322130, 0x012b0614, 0xb7490119, 0x46012008, 0x162205ce, 0x12821617, 0x2806d046, 0x3435012e, 0x3233023e, 0x08d14617, 0x1506072c, + 0x011f1614, 0x1415011e, 0xcd46020e, 0x022e2105, 0x16212485, 0x0cc64617, 0x3e373623, 0x06c84601, 0x0121d108, 0x66665d20, 0x2aadb45d, 0xad292f2e, + 0x7655dd02, 0x0d320c2a, 0x362b2b23, 0x3b2e4141, 0x620a270a, 0x563d2162, 0x37384c36, 0x0d320d28, 0x39384b1a, 0x37342020, 0x205d643c, 0xdd025a3f, + 0x4c5e0a04, 0x294a663c, 0x426c4d2a, 0x59237d5a, 0x503d5113, 0x20506161, 0x16161d1c, 0x5ff38a19, 0x6d9e02b7, 0xf5fe6db9, 0x282b6a01, 0xfd2b292e, + 0x0b343db6, 0x162b0c2f, 0x27313a17, 0x07020c2e, 0x515c1202, 0x1b31482c, 0x0b321a1b, 0x29210b2d, 0x2a2c1817, 0x130c0b29, 0x4d2f505d, 0x31711d37, + 0x82572d40, 0x58815454, 0x3447502e, 0x5d663b2f, 0x09665d6e, 0x2f0f1008, 0xfe5d3420, 0x0005009b, 0x06ab002e, 0x006103d2, 0x001f0012, 0x0134002a, + 0x25000046, 0x28076842, 0x1e32013e, 0x020e1402, 0x05834227, 0x1d06222a, 0x05161401, 0x17322111, 0x2c0f5e41, 0x27012e05, 0x17071d23, 0x1d170f1d, + 0x8502870e, 0x3305820b, 0x11231101, 0x17121633, 0x3317011e, 0x3d27053d, 0x0e3d270f, 0x0b880287, 0x3311042d, 0x02262311, 0x603c3301, 0x82232223, + 0x7a5f3a02, 0x23234460, 0x483c6144, 0x4f904f4f, 0x01df014f, 0x2b2c5609, 0x9aa35657, 0x26008225, 0x0863029a, 0x440c0922, 0x62280732, 0x22852175, + 0x0d082308, 0x76231088, 0x42ac8521, 0x282d074c, 0xb6845428, 0x5a275484, 0x52a2525d, 0x3304845d, 0x339e024f, 0xfe67c134, 0x256901f1, 0x26293d2a, + 0x155315b2, 0xae4d7f44, 0xfe02284d, 0x439e0270, 0x4043f4fe, 0x01268088, 0x4362fd90, 0x5f430c01, 0x00a53a05, 0x035b0654, 0x002f00b8, 0x00540048, + 0x2500005e, 0x010e2330, 0x022e2223, 0x078a4435, 0x20083e43, 0x06e34906, 0x82373621, 0x013d3501, 0x11213523, 0x32210123, 0x06141516, 0x07010e07, + 0x17021e15, 0x07300b82, 0x2123020e, 0x37323337, 0x34013d36, 0x012b2627, 0x080a5d4d, 0x0e04e541, 0x804a6074, 0x3035345c, 0x53434330, 0x122b9c71, + 0x6518124a, 0x7979634d, 0x24242863, 0x10101b1b, 0x772f01ac, 0x72010601, 0x141b7769, 0x1a1a3415, 0x1311353d, 0x4f391011, 0x8768fe2f, 0x821e35e9, + 0x356a0800, 0x3733d2e9, 0xe2d23337, 0x6d38503d, 0xa2686aa2, 0x1c1c3738, 0x2b0b5963, 0x7f493b0b, 0x7f758875, 0x14130b0a, 0x41271e1d, 0x0341fe75, + 0x2f627646, 0x14151542, 0x16010703, 0x3525242f, 0x412d2c32, 0x1c1b7525, 0x1b342933, 0x3033711c, 0x00333027, 0x00050000, 0x06ab0035, 0x006103cb, + 0x0046001f, 0x00600053, 0x25000066, 0x1b442622, 0x37362c13, 0x0617011e, 0x22210607, 0x8227012e, 0x37362321, 0x0646013e, 0x2a148205, 0x17163207, + 0x3233033e, 0x4315021e, 0xa8081058, 0x36352135, 0x11333712, 0x15231533, 0x23113325, 0x4e01010e, 0x49269683, 0x76584169, 0x48115b21, 0x59594d3b, + 0x124c3d4d, 0x210e3a0f, 0xfc013c3d, 0x113c5738, 0x23232c10, 0x39902955, 0x22212d2d, 0x020d1617, 0x1c0b0104, 0x2a203025, 0x211d3548, 0x3b35573e, + 0x42754141, 0xfea10242, 0x2eb52dc9, 0xfe5b5b8e, 0x2307dbbe, 0xa9b1ac8e, 0x2e588154, 0x30324b4d, 0x665d6a39, 0x313f6a5d, 0x49092309, 0x44242929, + 0x493d3030, 0x53363680, 0x2627291c, 0x2d2d2928, 0x15010136, 0x1c0f1b23, 0x332f4d37, 0x58213c53, 0x3d0d3d3e, 0x0804843e, 0x5d834d2f, 0x4a2a014a, + 0x83553afe, 0x3b6301d8, 0x000800ed, 0x0608ff4b, 0x001505b5, 0x0016000c, 0x0028001c, 0x0068005c, 0x009b0072, 0x11301700, 0x12354430, 0x83110121, + 0x113323ec, 0x01871521, 0x4c06a645, 0xb44c2d75, 0x13232406, 0x85031333, 0x010f2a0b, 0x013e2533, 0x010e2337, 0x82028207, 0x27028213, 0x17011e23, + 0x33112311, 0x2005af4c, 0x821e8233, 0x11332902, 0x0901b023, 0x582c2c56, 0x30075644, 0xf466ca01, 0xfe850186, 0xfe0301e1, 0xfa1f01fd, 0x0cdd4be7, + 0x4b092521, 0x0c2207dd, 0xdd4b0c2e, 0x38300811, 0xe1092209, 0x64082309, 0xf1ca81c9, 0x0d030e04, 0x3b040e03, 0x02d002b0, 0x080b0104, 0x5716071f, + 0x15571516, 0x0b081f08, 0x62010501, 0x12481278, 0x09200b82, 0x54080382, 0x77124712, 0x9f02f862, 0x67c23334, 0x6901f1fe, 0x293e2926, 0x02bcfd25, + 0x5abbfd9f, 0xc45a9f02, 0x035acf58, 0x0b353957, 0x2c2a0b2b, 0x0c2f2c6e, 0x14020802, 0x5d512c2d, 0x0a343160, 0x25240a29, 0x162a342d, 0x08020b16, + 0x17200a03, 0x64293f17, 0x7c1f0b69, 0x8202821f, 0x01613340, 0x104111e0, 0xd3114110, 0x144c1390, 0x2d134b13, 0x02822db6, 0x13491322, 0xfe290b82, + 0x279f0263, 0x5816279d, 0x82028216, 0x61fd2c08, 0x04000000, 0xab002900, 0x4703d706, 0x3a220553, 0x53474600, 0x1140471a, 0x14011d26, 0x32331617, + 0x20070443, 0x0adc4125, 0x01292108, 0x66655e20, 0x29adb35d, 0xad292e2e, 0x95840f03, 0x41694926, 0x223b3b57, 0x110f3d0f, 0x2c4e3b48, 0x4e350082, + 0x0e134c3c, 0x3c220f3a, 0x012d013d, 0x01bffeae, 0x01ddfe23, 0x10054741, 0x54a9b134, 0x272d5981, 0x22084b26, 0x35393008, 0x5d665d35, 0xc6423535, + 0x020b2a07, 0x60ba609e, 0x000060c4, 0x825f5103, 0x6d01082e, 0x930502ff, 0x44001a05, 0x6d005500, 0x9e299182, 0xd500ab00, 0x0000e300, 0x05584725, + 0x0622232c, 0x27012e07, 0x013e3736, 0x1b443637, 0x0e072205, 0x098f5202, 0x82070621, 0x22232a01, 0x3727022e, 0x17161716, 0x09d6481e, 0x44013521, + 0x37370664, 0x3233023e, 0x27061016, 0x3d023e32, 0x022e3401, 0x07010e22, 0x4f011d06, 0x258205a1, 0x34350225, 0x48353736, 0x322005f2, 0x634a4282, + 0x1e152405, 0x82141501, 0x0ce1476b, 0xee471320, 0x8325200b, 0x2307211e, 0x02829982, 0x27262223, 0x232d8206, 0x2e272223, 0x37204f82, 0x3320b083, + 0x07204c85, 0x7382c988, 0x02165508, 0x3a3c3e4b, 0x17433031, 0x0f0c300c, 0x21331413, 0x502f2b20, 0x0a0a213a, 0x1d1a2f24, 0x13131a19, 0x1f1f2216, + 0x2f362c2d, 0x0f2a3647, 0x0e0e0c50, 0x1c2e1112, 0x3f45413e, 0x3e980247, 0x0f0e3c5c, 0x5c3c0e0f, 0x76767d3e, 0x1e31237d, 0x311e0e0e, 0x071f3145, + 0xb3080082, 0xfd31100f, 0x3d593bf8, 0x343c4a1f, 0x53371e3e, 0x38292968, 0x343f0f0f, 0x10104a3d, 0x3c3a5a3c, 0x42794242, 0x3b373d42, 0x3a3a6f3b, + 0x16165203, 0x90295645, 0x21225b38, 0x05010d2d, 0x0e0e0a01, 0x2a203026, 0x1d352424, 0x1f1f1110, 0x2b383656, 0x10113c2c, 0x42413bec, 0x41413b3a, + 0x07293599, 0x262c312e, 0x160a2a0a, 0x0a1d1415, 0x412d1709, 0x191a2028, 0x04061928, 0x150d0d06, 0x2c253914, 0x0e191a48, 0x2c21140e, 0x11143e17, + 0x0d0c0c11, 0x3407343a, 0x6afe5c36, 0x4040582f, 0x40415253, 0xfeb72f59, 0x1c5cb6b8, 0x752c4933, 0x1c34482c, 0x2424341c, 0x2e080982, 0x1a1a2325, + 0x1d06031c, 0x432a4734, 0x13071151, 0x40263a4e, 0x0c0d192d, 0x2620202d, 0x07134e3a, 0x2a435111, 0x1d342423, 0x13323857, 0x82373732, 0x01382704, + 0x102e303a, 0x0484302e, 0x491f2a08, 0x556b4041, 0x284e291b, 0x01365a28, 0x12121401, 0x0f0e0f1b, 0x32304c36, 0x1e1d2b2a, 0x44131222, 0x3f933030, + 0x3e3c0e3c, 0x2104823e, 0x0082003f, 0x78000437, 0x8806b700, 0x0f005603, 0x37002700, 0x00004000, 0x30113001, 0x2a038423, 0x30213035, 0x30133015, + 0x8a333035, 0x201b830f, 0x22178233, 0x82273021, 0x0c815427, 0x07010e3c, 0x01012e33, 0x01c86cac, 0x5b5b53fc, 0x5c5c2401, 0xfb3c2b02, 0x99266f3a, + 0x03828826, 0xd7fe4308, 0x10411005, 0x024010c6, 0x02c2fdf5, 0xfd60603e, 0xee0158c2, 0x12fe5858, 0x70b5b558, 0x7070be01, 0x027042fe, 0x31c5313a, + 0x0000c531, 0x00080005, 0x03f806ab, 0x00340061, 0x0046003e, 0x00580050, 0x9f4b3700, 0x23272a32, 0x33132307, 0x01171216, 0x90a18623, 0xfd420811, + 0x0d2a7655, 0x2b230d31, 0x4140372b, 0x280a3a2e, 0x2262620a, 0x4c36563c, 0x0d273838, 0x4b1a0d32, 0x1f203a37, 0x653c3634, 0x5a3e215d, 0xfa3dd002, + 0x89e46e3b, 0xfe269826, 0x401104d7, 0x4010c510, 0x13912803, 0x824bac20, 0xb50b242c, 0x419e02b5, 0xfd210a00, 0x20108ef7, 0x34008200, 0x00600003, + 0x03a006ab, 0x00150061, 0x004b002b, 0x03302500, 0x0eaa4630, 0x07020624, 0xb1413521, 0x48052013, 0x012d1d87, 0x1270db3c, 0x2b0a1247, 0x2b0b040b, + 0x2509820b, 0x2595256d, 0xc7414b01, 0x84012605, 0x4a269683, 0x14614868, 0x9e02b728, 0x2737dd37, 0x0282279b, 0xc3830882, 0x2007d641, 0x1741480b, + 0x042acb82, 0xb7004700, 0x5603b906, 0xcd820b00, 0x29002122, 0x46183f46, 0x01280a1b, 0x23112311, 0x48152135, 0x28074c4d, 0x292e2e29, 0x011402ad, + 0x070246ad, 0x6c7b0125, 0x46fc01c8, 0xc1200f08, 0x2106ea45, 0x79423e02, 0x207f8205, 0x08934f06, 0x27001e34, 0x4e003d00, 0x7e005800, 0x22050000, + 0x34352627, 0x01843637, 0x0e333025, 0x4f060702, 0x17200594, 0x2408954f, 0x14011d22, 0x06944f01, 0x200a1256, 0x2d964f06, 0x4f010e21, 0x033f1297, + 0x37366b7a, 0x1d1d0f10, 0x8a312827, 0x123a553b, 0x110c0a12, 0x30513147, 0x6d6a6e2f, 0x4f09fed9, 0x04260692, 0x050c0513, 0x944f0512, 0x4d142212, + 0x17944f14, 0x0e3a0e22, 0x350e954f, 0x7f4242fd, 0x363d3d3c, 0x232f3038, 0x2b50522d, 0x312f332a, 0x904f3535, 0x691a2213, 0x4f02821a, 0x2e221192, + 0x924f2eb6, 0x20082215, 0x0d934f08, 0x0106003c, 0x0508ff17, 0x001505e9, 0x0017000b, 0x004b002d, 0x005f0055, 0x11300500, 0x03823330, 0x15302122, + 0x0b870784, 0x3305c650, 0x37363435, 0x1632013e, 0x14011e17, 0x010e0706, 0x37363227, 0x3d2b0182, 0x26273401, 0x23012e27, 0x82070622, 0x07bf4601, + 0x4f110521, 0xcc2412d1, 0x6311016c, 0x22080382, 0x6a4210fd, 0x29292626, 0x836a2626, 0x2a26256b, 0x6b25262a, 0x17402641, 0x0c0c0d16, 0x4017160d, + 0x873f2826, 0x013f220b, 0x0c8348f4, 0x9f02f825, 0x8460c1fd, 0x57032b04, 0x822b2c2d, 0x2b825455, 0x09832d2c, 0x0883a920, 0x191b612d, 0x2e252519, + 0x25252e69, 0x8c1b1919, 0x02562f0c, 0x6eb86e9f, 0x6a01f5fe, 0x282e282c, 0xf082002c, 0x000a0036, 0x03f606ab, 0x00120061, 0x003a0030, 0x004a0044, + 0x2e222500, 0x4f064050, 0xe6af0749, 0x1133112f, 0x2c011521, 0x294c6a42, 0x426a4c29, 0x9b078541, 0x665d21e0, 0x08086449, 0x6d130222, 0x2dac1001, + 0x54548257, 0x2d2d5882, 0x82a88258, 0x1b602d57, 0x2425191a, 0x242e6a2e, 0x1b1a1925, 0x55200c8c, 0x280e6d50, 0xfd9e02c1, 0x000060c2, 0x2ccb8204, + 0x03b606ab, 0x00130061, 0x002d0022, 0x06d34366, 0x30153023, 0x26038821, 0x30013011, 0x83173233, 0x070124e8, 0x52012b06, 0x272405ba, 0x11012b26, + 0x51064d58, 0x2724077e, 0x012e2726, 0x35220282, 0x80513734, 0x1506230d, 0x80511714, 0x07240806, 0x010e0706, 0xfea3014a, 0xfe1301ca, 0xedc301ed, + 0x4a343441, 0x344a2929, 0xeded4134, 0x2e2e5c4b, 0xdc02804b, 0x2705de45, 0x372b2a24, 0x17174140, 0x2405df45, 0x563d1111, 0x07e04535, 0x384a2b08, + 0x1a1a3f3a, 0x5d653c36, 0x201f1011, 0x9e02b759, 0xfe60ba60, 0x159e02dc, 0xa87d5415, 0x1515547d, 0x6c5b5e60, 0xfe2f2f5b, 0xd6456b22, 0x1717210a, + 0x21075a51, 0x5b512424, 0x2f290809, 0x15142a2c, 0x5c130c0b, 0x26272f51, 0x001d1c1b, 0x8f000400, 0x71066300, 0x1500a903, 0x39002f00, 0x00004300, + 0x30013025, 0x06ec5033, 0x2806535a, 0x01070206, 0x15163221, 0x0bd44914, 0x2322df84, 0xa2523721, 0x09064f08, 0xfea2012e, 0x59168ded, 0x0b360f16, + 0x0b380f05, 0x89370982, 0x012fb92f, 0x687301c2, 0x34291b77, 0x1f1e1919, 0x10241b1a, 0x4e1d1c11, 0x3c2106f5, 0x07f34e3c, 0x46036334, 0x45ecfe45, + 0x3729c536, 0x014525c8, 0xfd8c4514, 0xe44e8cd2, 0x142a3605, 0x0b010703, 0x4918170b, 0x2d2c3235, 0x75252120, 0x34293337, 0x09e34e37, 0xff320134, + 0x05ce0508, 0x00260014, 0x00780033, 0x009b008a, 0xc44e0500, 0x4a01202e, 0x2e3241d1, 0x11232701, 0x13331123, 0x3317011e, 0x23113311, 0x04823521, + 0x07020e26, 0x37362726, 0x30081082, 0x38700215, 0x10103d57, 0x5523222c, 0x2d39902a, 0x1721222d, 0x05010c17, 0x251c0a01, 0x472b1f31, 0x3d221e35, + 0x423a3557, 0x41417542, 0x3b3f4402, 0x08884a39, 0x4a341321, 0x0b220688, 0x884a230a, 0x233c0807, 0x2c2c1f1f, 0x37472f36, 0x0d4f0f29, 0x12110e0e, + 0x413e1d2d, 0xfd474045, 0x0e3408b2, 0xdb796803, 0x0308340e, 0x43017967, 0x341708bc, 0x4002123e, 0xa3a55655, 0x304425f8, 0x81493c30, 0x080d284f, + 0x1b241447, 0x4d361d0f, 0x3c53332f, 0x3d3e5922, 0x3f3f3c0d, 0x3e3d0d3c, 0x29353d01, 0x2b312e07, 0x0a2a0a26, 0x1e141416, 0x2d170909, 0x1a202840, + 0x0619271a, 0x0e0c0605, 0x25381514, 0x1a1a482c, 0x21150e0e, 0x153f172b, 0x06594a10, 0x36333508, 0x104a035c, 0x00fe1b63, 0x8dfe9e02, 0x0210631b, + 0x5a62fd01, 0x3818f501, 0x3a021343, 0xbcfd5d5c, 0x0003005a, 0x06ab001b, 0x006103e5, 0x005c0039, 0x2500007f, 0x430d4749, 0x26220568, 0x69432627, + 0x0aea5410, 0x07060726, 0x2221010e, 0x23051d47, 0x3233013e, 0x200fd051, 0x055b5636, 0x012722a2, 0x2a775410, 0x490c320d, 0x91430570, 0x31312c06, + 0x573c1111, 0x38374c36, 0x49330c27, 0x23080b73, 0x1f1f1011, 0x8429025a, 0x24131395, 0x57426825, 0x3d0f2276, 0x3a48120f, 0x4e58584e, 0x0f124c3c, + 0x79220f3a, 0x8b491e9e, 0x06b4430b, 0x512e2e23, 0x0bb5432c, 0x2d171723, 0x0611552a, 0x1b26272d, 0xa9b11d1c, 0x2c404154, 0x4e4d2e2c, 0x0051053b, + 0x9a52200a, 0x0000281a, 0x004f0005, 0x55b106ab, 0x0021092b, 0x342b5540, 0x35210122, 0x28080282, 0x02061521, 0x54012107, 0x2222603d, 0x22222323, + 0x44607960, 0x60442424, 0x4e4e483c, 0x014f4f90, 0x570901de, 0x57572c2b, 0x058957a3, 0xfe60032e, 0xfe420141, 0x36a601cd, 0x4c0136d6, 0x082bd954, + 0x5bbcfd2a, 0x5b59ea01, 0x52bafe52, 0x2e000700, 0xd20608ff, 0x1c001505, 0x47003300, 0x5d005300, 0x91007300, 0x06370000, 0x30153007, 0x3205034c, + 0x36333011, 0x30373637, 0x16070633, 0x2e231712, 0x45110101, 0xf1450ae5, 0x2726230c, 0x29493330, 0x82332006, 0x301122cf, 0x187d5701, 0x47012e21, + 0x36082df3, 0x6d1a42f7, 0x1848046d, 0x417f5a5a, 0x16ba32ae, 0x01922783, 0xfead01a5, 0xfe2301c0, 0x014001dd, 0x7c737422, 0x031b6d1b, 0x781b6c1b, + 0xfb2da418, 0x5e20014a, 0x505e6565, 0x1720075d, 0x08291448, 0x1e4b4123, 0xfe9f02d0, 0x6d1e5cac, 0x4bce4d6d, 0x3d21e8fe, 0x02e2fee1, 0x60bb609f, + 0x080160c4, 0xc732cbcc, 0x27028232, 0x4ee2fe29, 0x6203f6fe, 0x210df847, 0x3748b5fd, 0x0000212d, 0x358f8362, 0xffca0005, 0x05360608, 0x000f0015, + 0x00330017, 0x00920066, 0x054e0500, 0x07062a11, 0x05263330, 0x2327012e, 0x05494e30, 0x13303326, 0x3317011e, 0x2106e749, 0x63593023, 0x27262110, + 0x5a0a6259, 0x615905ad, 0x0226230d, 0x42823327, 0x53171621, 0x9c53078e, 0x36372706, 0x02063337, 0x6c822307, 0x2327262f, 0x010e0706, 0x3df80207, + 0x266e3afb, 0x07704e98, 0xc6313034, 0x0e190230, 0x68020834, 0x3408db79, 0x7967030e, 0x7c445bfc, 0x050e4805, 0x1e3a2e35, 0x2262621e, 0x4c36563d, + 0x03273837, 0x384a1a49, 0x4d201f3a, 0x5e0807eb, 0x6a1a9001, 0x2e0d6e1a, 0x03171809, 0x0b0a2408, 0x0e790f36, 0x23090a36, 0x23310309, 0x6e1c6b23, + 0x390d7a1b, 0x02191910, 0x3b101919, 0xb6b6f80d, 0x70bf0170, 0x7041fe70, 0x94943b02, 0x641b3494, 0x02fffd0f, 0x0f8dfe9f, 0x01021b64, 0x570361fd, + 0x2f0c343d, 0x16162b0b, 0x2e27313a, 0x5905060b, 0x1a350694, 0x4102321b, 0x17172822, 0x0a2a2a2c, 0x515c130d, 0x1e364d2f, 0x334b830b, 0x6f2ddb3b, + 0x29981e70, 0x3c3cdc2b, 0x94252bdc, 0xa2a1de25, 0x32235f83, 0x82663fea, 0xea3f3700, 0x01040032, 0x050eff18, 0x000f05e8, 0x003a001b, 0x00570043, + 0x7d412500, 0x3021221a, 0x05fc5423, 0x3e230724, 0x0a823701, 0x27089843, 0x1e07010e, 0x33110101, 0x2007c543, 0x06764111, 0x27823320, 0x0806b543, + 0x320ccd36, 0x7867030c, 0x0c310ddb, 0x03796803, 0x6d1b7f3f, 0x6b1b021b, 0x9124781b, 0x238b2324, 0x19661980, 0x1a671a02, 0x248c2478, 0xd9fb9325, + 0x0111016c, 0x269a2601, 0x08078043, 0x9a277723, 0x5f178127, 0x02fffd18, 0x188efe9e, 0x0002175f, 0xb22d62fd, 0x2db22c2c, 0x3639e539, 0xa72936db, + 0x3e028229, 0x3936da36, 0x022903e6, 0x60c2fd9e, 0x01440801, 0xc732430f, 0x32c73131, 0x43f2fe43, 0x8200f6fe, 0x01062200, 0x20f38236, 0x2ff382ca, + 0x001e0014, 0x0032002a, 0x00520046, 0x23300500, 0x22055744, 0x82061415, 0x5d1720cb, 0x27220f19, 0x30650723, 0x070b5008, 0x4f030221, 0x02220e3f, + 0x704e2103, 0x6da33a0b, 0x685a2101, 0x61184142, 0x5a167918, 0x2aac8516, 0xac292f2e, 0xfa3db603, 0x0a66423b, 0x10401034, 0xfd4010c5, 0x716e6e79, + 0x0b114811, 0x0b040a2b, 0x09820b2c, 0x6f706e24, 0x9c4e6801, 0xf2200809, 0x5d6c9e02, 0x2f145f48, 0xb52d2fbc, 0x292b5b2d, 0xd52b282e, 0xb6b696fe, + 0x6fbf0170, 0x7041fe6f, 0x2506fd50, 0x4f015901, 0x554f4f01, 0xb1fe240b, 0x5402b1fe, 0x003007ae, 0x00a90002, 0x03570663, 0x001d00a9, 0x25000033, + 0x2005d341, 0x058d5106, 0x210eb641, 0x0d500516, 0x08194905, 0x33304008, 0x03301530, 0x9027a076, 0x64640413, 0x35c21896, 0xa017bc33, 0x02207f20, + 0x96208120, 0x8a33be17, 0x0aeb2d01, 0x164f411c, 0x41955003, 0x4163ccce, 0xa7a720ed, 0x53330127, 0x2426014f, 0x8234d034, 0xfe243402, 0xd7d74fdb, + 0x1e720271, 0x02175446, 0xfd47a148, 0x1000712b, 0x8101e71e, 0x28010634, 0xd80502ff, 0x0f001a05, 0x43002500, 0x74005600, 0xd3537c00, 0x335b4f11, + 0xa14e0120, 0x07a6512b, 0x6d670228, 0x01fb01c7, 0x704f4173, 0x6b822107, 0x2205824f, 0x4f27416b, 0x27250979, 0x16164027, 0x2c00820d, 0xfd401616, + 0x4c6b41d0, 0x6b4c2929, 0x21078741, 0x1c874126, 0x28264134, 0x0c17163f, 0x170c0d0d, 0xed023f16, 0xfc01c86c, 0xcf514c01, 0xb7fd3605, 0x822c2b2d, + 0x2c815554, 0x2c2d2d2c, 0x82a9812c, 0x612d2b2c, 0x06c04e1a, 0x4e242521, 0x242105c0, 0x06cd4e25, 0x01031a24, 0x2e83572d, 0x2d2d5823, 0x202c8258, + 0x4f2b8a57, 0xf94e09c2, 0x011a2205, 0x083352e8, 0x33000736, 0xc206fdfe, 0x0c000905, 0x3c001600, 0x86006100, 0xa2009c00, 0x6119b95a, 0xf4510f8b, + 0x5a012014, 0x0b210683, 0x1a7f5a01, 0x112c24a5, 0x36321614, 0x11331135, 0x020e0714, 0x2005934d, 0x063e5b11, 0x57090124, 0x284a2b2c, 0xad022a08, + 0x21215e3a, 0x21212323, 0x05b2612f, 0x390c1d52, 0x200e390e, 0x01c30269, 0x080b0105, 0x8282081f, 0x0b081f07, 0x62010401, 0x8b5a1378, 0x20072905, + 0x12471208, 0xc0fb6277, 0x0c202282, 0x82261d82, 0x081e0882, 0x2283020c, 0x12491222, 0x08253382, 0x12072008, 0x33228248, 0x8e386401, 0x0c0c6538, + 0x577f5835, 0x020c0c36, 0xf8f46636, 0x080fc15a, 0x2b27b120, 0x83b6842a, 0x14132b2a, 0x084a2525, 0x32390820, 0x53a1535e, 0x093c365e, 0x4f4a0821, + 0x925aa801, 0xf0fe2305, 0x905a1001, 0xff042117, 0x320823a1, 0x4efe9f02, 0x514d4d51, 0x5efeb201, 0x41323244, 0x32411f1f, 0xa2014432, 0x9f0261fd, + 0x005abbfd, 0x01040000, 0x0502ff4d, 0x001a05b3, 0x00510017, 0x529d008b, 0xbb50059f, 0x09d54a09, 0x4d14aa50, 0xfe482341, 0x297a4d0e, 0xf14e0120, + 0x85012110, 0x38095a46, 0x76544b01, 0x0c320c2a, 0x362c2a24, 0x17174240, 0x0a280a3b, 0x10313161, 0x06d94811, 0x0c330c23, 0x0653621a, 0x5d653b29, + 0x1f201010, 0x848bfd5a, 0x230d2332, 0x32862b2b, 0x620a272e, 0x11113131, 0x4c36563c, 0x0d283738, 0x3c213289, 0x2b328264, 0x015b1f1f, 0x0d310ce2, + 0xdb796802, 0x03230682, 0x46f27967, 0x0b320692, 0x2e0c343d, 0x16162b0c, 0x18273139, 0x07020b17, 0x5e4d1202, 0x2822250d, 0x2b2c1717, 0x210b5e4d, + 0x33b16203, 0x487e0121, 0x002f0f3c, 0x00020000, 0x065400cf, 0x00b80331, 0x4e4a0034, 0x262010d9, 0x5c05666a, 0x5e4a0880, 0x07405209, 0x01020e22, + 0x080d3543, 0x022e2787, 0x02021135, 0x0f34946a, 0x352d0f3f, 0x52504436, 0x2525493a, 0x2a3d3d7b, 0x5e446b4c, 0x5b314646, 0x465d2104, 0x21282847, + 0x7e4b4420, 0x704e2974, 0xc552f901, 0x11108551, 0x3bae764b, 0x55214b3b, 0x3a0f404d, 0x1b1c360f, 0x3a313d48, 0x1706070e, 0x3865393a, 0x21213e59, + 0x03513e21, 0x1c1d322a, 0x1a1a3438, 0x7318100d, 0x44613a65, 0xfd540325, 0x6c6c6bfc, 0xfe04026b, 0x44435c11, 0x16152b57, 0x015c8658, 0x10db82ef, + 0x3d07732d, 0x08ff0a39, 0x1505f606, 0x18000e00, 0x49002b00, 0x5d005300, 0x00006300, 0x5c333001, 0x2b200950, 0x23067e5a, 0x11012b26, 0x5c2ce24c, + 0x113a146b, 0x15211133, 0x41ed7602, 0x29252568, 0x68252529, 0x4beded41, 0x804b5c5c, 0x985b49fe, 0xa7013c3a, 0x7e2a292b, 0x292a7ea7, 0x5b5f602b, + 0xfe5f5b6b, 0x2df70221, 0x54558257, 0x822d5782, 0x82a92007, 0x1b612906, 0x24251919, 0x242f692f, 0x8807bf4c, 0x0e825c0c, 0x02c0fd2e, 0x61c2fd9f, + 0x03000500, 0xfd06ab00, 0x200aa756, 0x34a75659, 0xbd4c0520, 0x56082024, 0xae6b11c0, 0x56a4200d, 0x962006c0, 0x2105744c, 0x744c8307, 0x67612007, + 0xd4560f00, 0x13a73a2b, 0x4b13134c, 0x01effe12, 0x124a1211, 0xfe134a13, 0x279e0263, 0x5916279c, 0x82028216, 0x62fd2208, 0x31008200, 0x00220003, + 0x03de06ab, 0x001b0061, 0x006c0033, 0x41531300, 0x15e7561c, 0x2114114c, 0x5259012e, 0x0fbc5c10, 0x4d53d720, 0x0cdb2805, 0x68030c32, 0x56400179, + 0x4c200abc, 0x212fb85c, 0x214b2a02, 0x0218240a, 0x4b62fd01, 0x0f6e09a1, 0x27b55c08, 0x00002508, 0xff7c0107, 0x05840502, 0x0037001a, 0x0068005b, + 0x009c0075, 0x00d500a9, 0x21300100, 0x3307010e, 0x023e3736, 0x2e078866, 0x23060701, 0x012e2722, 0x37272627, 0x821e1716, 0x05157917, 0x07062222, + 0x3e231482, 0x66213701, 0xbf663a5e, 0x0d246b07, 0x33011e22, 0x2117246b, 0x71823521, 0x24052960, 0x0e222326, 0x82838302, 0x3202233c, 0x01821716, + 0x8206c979, 0x213708c2, 0xd7fe2603, 0x06020c03, 0x200d0d0b, 0x4b2b1c2b, 0x10101f36, 0x392c2d3d, 0x3423232d, 0x4f101314, 0x230d0e0c, 0x413b1c2b, + 0x342b3b41, 0x0f3c0f12, 0x01041104, 0x6669017c, 0x3b37245d, 0x3717fe3b, 0x11103c58, 0x5523232c, 0x2e389029, 0x1622212d, 0x6b010c17, 0x1e21097d, + 0x067d6b22, 0x41415908, 0x39fe5003, 0x33248f23, 0x323a1b1b, 0x141f291c, 0x103f1006, 0x3812120b, 0x1b50664c, 0x190f0e1c, 0x201e1d2d, 0x011a691a, + 0x274e0152, 0x1014289e, 0x1c0c1710, 0x32314e36, 0x113d2a2a, 0x210a0a10, 0x3e181516, 0x19111014, 0x0b3a410d, 0x1421413a, 0x3e020902, 0x57fd3ef9, + 0x21374e66, 0xe66bd101, 0x27262d0b, 0x2d2e2828, 0x14010135, 0x1d101b23, 0x0812e66b, 0x7f20683f, 0x2a2a2e20, 0x38310c2e, 0x16271c11, 0x20061906, + 0x1b2e1d1d, 0x241b1a1e, 0x45282b25, 0x1c1c1c3e, 0x00175a17, 0x01060000, 0x0502ff7a, 0x001a0586, 0x00360028, 0x0092006c, 0x00ca009f, 0x0c406800, + 0x22263f68, 0x42062125, 0x3e241883, 0x031e3701, 0x6906345f, 0x13220738, 0xa75e2521, 0x196b6d14, 0x36352122, 0x42068861, 0x52201e45, 0x35054568, + 0x22225a39, 0x04030d2c, 0x260e0e0a, 0x242b1f30, 0x111e3424, 0x44681e11, 0x3d450805, 0x3bec1010, 0x3a3b4141, 0x34034242, 0x0c05d6fe, 0x0c0d0b07, + 0x2b1d2a21, 0x101f364a, 0x2c2d3e0f, 0x23222d39, 0x10141335, 0x0d0d340e, 0x1c2b221b, 0x3c40403c, 0x0e12342b, 0x12070f3c, 0x10fd7c01, 0x103c5838, + 0x2c238211, 0x38902955, 0x22212e2d, 0x030c1716, 0x07c76d03, 0x2205cd5e, 0x42754141, 0x6b250549, 0x1c1b336b, 0x0548423b, 0x42400f21, 0x1c2e0748, + 0x190f0e1b, 0x201d1e2c, 0x011a691b, 0x3068b352, 0x49f2222d, 0x147542a4, 0x0a2a0a24, 0x76422114, 0x0174230b, 0x3b42b901, 0x605f212d, 0x38243a42, + 0x39000600, 0xc70608ff, 0x0f001505, 0x28001c00, 0x57003200, 0x00007a00, 0x07d15805, 0x30133034, 0x17121633, 0x30272603, 0x30070623, 0x2e333007, + 0x536e0101, 0x0f995315, 0x53132575, 0x16251473, 0x17011e17, 0x05884433, 0x0423113c, 0x06240a1e, 0x0a2406e2, 0x2182c964, 0x0af12187, 0x0a0b0c0b, + 0x290bb13c, 0x306e9bfc, 0x0230080d, 0x215d3bad, 0x21242421, 0x3b2e2f21, 0x1f343355, 0x3f114a0d, 0x4c4c4434, 0x12433544, 0x1f0e380e, 0x01c4026a, + 0x090c0105, 0x82820421, 0x0c092203, 0x623e0c82, 0x09373678, 0x18080521, 0x15520517, 0x23f86277, 0x7f18187f, 0x709f0223, 0x017041fe, 0x008231e0, + 0x8c24d324, 0x4e53a501, 0x2907211d, 0x3f124d53, 0xfe095216, 0x081001f0, 0x4b141651, 0x0263fe12, 0x1975769f, 0x42420e5d, 0xfd2fb10b, 0x07000061, + 0x2c086741, 0x00200016, 0x0035002a, 0x0064003f, 0x08077f87, 0x15070623, 0x061c6c32, 0xa5710e20, 0x3d362305, 0xa3713401, 0x7301200c, 0x785613ff, + 0x1e9b7605, 0x08227541, 0x01980222, 0x37504e10, 0x18171d34, 0x16090a22, 0xfe223928, 0x25a766d5, 0xa7252626, 0x25252197, 0x3bfd9721, 0x3f507d41, + 0x5459a701, 0x0c054841, 0x1c280b0b, 0x472b211c, 0x275a1c33, 0x272c2c2b, 0x2b282457, 0x1d012329, 0x34518541, 0x01050000, 0x0502ff27, 0x001a05d9, + 0x0034002a, 0x0071003c, 0x7314827d, 0x3e240959, 0x16323302, 0x6a197176, 0x7b5410e7, 0x085e650e, 0x5d0d5d65, 0x0c5b0d7c, 0xf402210a, 0x261f8676, + 0xfb3c7302, 0x6be56f3a, 0x402607ed, 0x4010c611, 0xea76b6fd, 0x135d6b12, 0x215e6426, 0x2e015a3f, 0x2009d354, 0x0796768c, 0x762d5921, 0x652e0896, + 0x10100808, 0x5d341f2f, 0xb6b69bfe, 0x345b9e02, 0x544e200b, 0x2f220a51, 0xf376020b, 0x0982540e, 0x2f515c25, 0x6f1d374d, 0x003d09fd, 0xce010200, + 0x320516ff, 0x21000e04, 0x00003b00, 0x22233005, 0x30352627, 0x27012e35, 0x42088226, 0x322f05b0, 0x1e171617, 0x02141501, 0x27331507, 0x74013e32, + 0x2e220598, 0x436f2302, 0x1e280808, 0x8e700402, 0x55272855, 0x1b2f2f88, 0x39383e19, 0x50c45050, 0x3e383950, 0xf09aa0bb, 0x1244603a, 0x44121313, + 0x5f3b3a60, 0x5f310985, 0x492b2cea, 0x414d0b4c, 0x735c5b41, 0x4142c27f, 0x34008222, 0x7fc24241, 0x1cfcfee1, 0x4c28f267, 0x9e453737, 0x4c373745, + 0x290a8a28, 0x13000300, 0xed06b700, 0x07825603, 0x51003d22, 0x20056167, 0x0f5f6103, 0x2206944b, 0x58033003, 0x30230753, 0x6c113023, 0x11230f2b, + 0x82213023, 0x30352201, 0x08058401, 0x15302123, 0x21070206, 0x72cfe330, 0x0d175d17, 0x70175b17, 0x03228a22, 0x01050109, 0x081e080c, 0x1f088282, + 0x05974407, 0x12491236, 0x08082007, 0x12081f08, 0x62771248, 0x41fe9a02, 0xcefe4101, 0x32067662, 0x010301b7, 0x31c8329b, 0x4432c831, 0xfe45eefe, + 0x4b9d01fd, 0x7d622187, 0x00002809, 0x004c0004, 0x82b406ab, 0x001426e3, 0x0028001e, 0x5de5835f, 0xa6421ddb, 0x01112107, 0x2032994a, 0x06e45db9, + 0x5d601921, 0x2e2408e4, 0x1302ac2a, 0x27075668, 0xd7fe5803, 0x07030c03, 0x2123244a, 0x244a0e13, 0x5db72006, 0x28270eec, 0xd52b292e, 0x680296fe, + 0x402a065a, 0x14279e28, 0x0c171010, 0xc549351d, 0x1011210f, 0x200ec549, 0x30008200, 0xff730104, 0x058d0502, 0x004c001a, 0x00b4007d, 0x171772e0, + 0xe24a1720, 0x06072106, 0x15220184, 0xf24a011e, 0x220d8405, 0x57222306, 0x27210511, 0x72178237, 0x324b0c22, 0x2627210a, 0x4b06596b, 0x01230636, + 0x86323637, 0x23548555, 0x2107010e, 0x20336841, 0x49648a01, 0x02211d51, 0x11926750, 0x28286208, 0x11101d1d, 0x12120a0a, 0x1d1a1718, 0x0b131333, + 0x2011110b, 0x362c2c1f, 0x1b24232f, 0x0f15141c, 0x111c0d4f, 0x3d1d2d12, 0x47404542, 0x39fe8003, 0x33238f24, 0x1e1d1b1c, 0x0f2a1b32, 0x050a0b0f, + 0x0b0f4010, 0x26371311, 0x1b516626, 0x190e0e1c, 0x1e1d1616, 0x1b691a20, 0xa7fd5201, 0x0b03d6fe, 0x08934903, 0x0f1e3735, 0x2d2c3e10, 0x23222d39, + 0x0f141434, 0x0e0d0d4e, 0x491b2c22, 0x0f210692, 0x05074c3b, 0xfe500224, 0xb34b2438, 0x1e2a2107, 0x2008b34b, 0x205e854b, 0x08b34b18, 0x08103572, + 0x170b0c27, 0x291f2116, 0x14191a20, 0x060d0c14, 0x151a0604, 0x251c1d14, 0x1a24242c, 0x0a0e0e19, 0x1511110a, 0x143e1716, 0x093d7222, 0x614b7520, + 0x1c1c2609, 0x140e0e11, 0x07644b13, 0x4b0e0d21, 0x29230565, 0x4b1f1f44, 0x05210566, 0x2b224c46, 0xbb4b6220, 0x4f042028, 0x56280627, 0x2e000f00, + 0x8f033700, 0x6f135b5e, 0x0526243f, 0x33270226, 0x4618011d, 0x45182235, 0x38c9158a, 0x26a65fa6, 0x194a4618, 0x46181520, 0x0122153d, 0x45183d37, + 0x14941477, 0x11b34518, 0x38a61191, 0x5fcc26a6, 0x18333521, 0x28103f46, 0xb2663a01, 0x0601c901, 0x05f6706b, 0x70272821, 0x012312f6, 0x185f18eb, + 0x2d4f0346, 0x040e0301, 0x040e040c, 0x7c0e380e, 0x0782390e, 0x52044618, 0x19640128, 0x0f7a1862, 0x6b820f39, 0x0e040b3a, 0x0f3d0f03, 0xbbfdfc02, + 0x59594502, 0x4242b0fd, 0x3c3d3c7f, 0x302f3837, 0x21077a71, 0x7a713430, 0x104a200a, 0x5503da45, 0x0000002f, 0x00470005, 0x03b906ab, 0x001e0061, + 0x280b822f, 0x00700058, 0x010e0100, 0x0ad76c07, 0x2005c67a, 0x6c148233, 0x3e7b06d9, 0xa4052024, 0x10013925, 0x6c103d0f, 0x4010046c, 0x1e791e10, + 0x289f287e, 0x832bad2b, 0x63028822, 0x2718d27a, 0x0f070606, 0x52023110, 0x2208209e, 0x4612f001, 0x9e02cf12, 0x5115acfe, 0x24912514, 0x412fbc2f, + 0x3441fefe, 0x2ef0fed1, 0x53404059, 0x7a414052, 0x1b350679, 0x762b4934, 0x1b34482c, 0x2424341b, 0x252b762c, 0x1b1a1b23, 0x2224a35c, 0x4e060000, + 0x2f3a0893, 0x63004200, 0x98008d00, 0x0000a000, 0x30213005, 0x36373035, 0x30353637, 0xdb493435, 0x37362a0a, 0x1e32013e, 0x15161701, 0x05814a14, + 0x010e0725, 0x56052107, 0x3521052a, 0x211d8234, 0x937c3637, 0x4d3d8306, 0x26210555, 0x20018227, 0x752f8522, 0x162305dd, 0x18011617, 0x4e085142, + 0x122022f7, 0x240cf279, 0x39fe4503, 0x091153d6, 0x2c055a55, 0x664c1c1c, 0x0f0e3750, 0x17160c0d, 0x0613531d, 0x3f490126, 0x0e3c2e2e, 0x23080082, + 0x3f2e2e3c, 0x7c76767c, 0x10181922, 0x0606070f, 0x18100f07, 0x19184519, 0x0706100f, 0x0f100607, 0x89fe1819, 0x26200e4f, 0x3afb3d74, 0x4f72726e, + 0xf22c0c0f, 0x2a2ebf68, 0x310c2f29, 0x261d1138, 0x2a06c349, 0x1e1b1717, 0x2b252435, 0x49222328, 0x672207c3, 0x2e7c1817, 0x18173307, 0xb6b8feb7, + 0x1a0e0e5c, 0x2d24231a, 0x24242c75, 0xa1821a1a, 0x1b1a0e29, 0x752c2423, 0x8323242d, 0x7703210e, 0x231f2d4f, 0x4f014f01, 0x080a2f4f, 0x00000020, + 0xfe0b0106, 0x05f50568, 0x001f000f, 0x00410039, 0x0055004b, 0x0100006f, 0x26222330, 0xfd4e013d, 0x4e062014, 0xf6671afd, 0x77012007, 0x05201287, + 0x0d654118, 0x23112e08, 0x33133311, 0x11333736, 0x5fe50223, 0x5b383539, 0x1211201f, 0x3625262a, 0x35368235, 0x7c292626, 0x27a1676b, 0x0c0d2d40, + 0x402d0d0c, 0x2d098227, 0x0c0d0d0c, 0xed02402d, 0xfb01c76d, 0xff793bfb, 0x15042b0c, 0x09230905, 0x18186219, 0x08821962, 0x80670539, 0x595a06b4, + 0x68fe677b, 0x0732313a, 0x3d2b2b34, 0x81554c3e, 0x82172b2c, 0x2c2b3d00, 0xad965581, 0x1aa24513, 0x2d252533, 0x24252e6a, 0x331b1b33, 0x6a2e2524, + 0x3325252d, 0x2108ec67, 0xe2762401, 0x2e292d09, 0x123e2b28, 0xb32c1249, 0x2cb32d2d, 0xfd390882, 0xfe9e02ff, 0xfdaaabab, 0x00000062, 0x00850002, + 0x037b0654, 0x003400b8, 0x357f644d, 0x08131a41, 0x1133133d, 0x69b70123, 0x3e103594, 0x35362c10, 0x39515144, 0x7a252649, 0x4c2a3e3d, 0x465f436c, + 0x035b3145, 0x48465d21, 0x21202728, 0x757e4a44, 0x03714e29, 0x2c0b06fa, 0x2381130b, 0x82138124, 0x82062708, 0xe007e1a1, 0x8c64829a, 0x8f022a2d, + 0x22175a17, 0xec4040ec, 0x38088222, 0x46037ffd, 0xaa0156fe, 0x0000bafc, 0x00b50003, 0x034b0663, 0x000b00a9, 0x19ad7b15, 0x76010921, 0xb63c11d5, + 0x7f746801, 0xd8e1747f, 0x34393934, 0xfe5a03d8, 0x58178ced, 0x0f370a17, 0x0a380f05, 0x88340982, 0x632eba2e, 0xe6894603, 0x01b2fe89, 0x3a3236c5, + 0x31fd3632, 0x2205a176, 0x7637c825, 0x00200aa1, 0x1b500082, 0x45612007, 0x7e2006bf, 0x4e46bd45, 0x210834ce, 0x0f3d1015, 0x10036d6d, 0x781f1040, + 0xa0287f1e, 0x2bac2b27, 0x02872283, 0x3b5c3f63, 0x0f0e0e0f, 0x43445c3b, 0x1f312805, 0x311f0d0d, 0x441f3145, 0x3122053b, 0x50501a03, 0x3edf4532, + 0x50ef0121, 0x053a2c71, 0x02ff5b01, 0x1a05a505, 0x3e003400, 0x81004800, 0x0000a200, 0x27262205, 0x9f793736, 0x103f5407, 0x2e070225, 0x54222301, + 0x4b180f3f, 0x45891465, 0x76290169, 0xb1570d59, 0x17162a0e, 0x5002010e, 0x252a7655, 0x14c77f26, 0x1e1a0b23, 0x0dc87f09, 0x442d0121, 0xb3350545, + 0x2e2e2aac, 0x2cfeac2a, 0x262b7654, 0x2b2a2425, 0x18424037, 0x11406916, 0x69190d21, 0x74760e40, 0x25210805, 0x58416924, 0x2e2d2275, 0x4e3b4811, + 0x3d4e5858, 0x4d0a134b, 0x3dfd7922, 0x2b232334, 0x31391616, 0x0e8c5427, 0x1b160a23, 0x128d5408, 0x07bf4b18, 0x282e2925, 0x8918012b, 0x2650693d, + 0xa9b12a08, 0x2d404055, 0x4b4d2d2c, 0x39301919, 0x5d665d6a, 0x06313e69, 0x0052492f, 0x00040000, 0x06b7002e, 0x005603d2, 0x0027000f, 0xe7411836, + 0x15d55e15, 0x2d611320, 0x6c622518, 0x70fc01c8, 0x2b09ad55, 0x6940ed83, 0x28282525, 0x40692525, 0x2005f660, 0xe8411881, 0x70022009, 0x022705bb, + 0x2a2a2a9e, 0x827da87d, 0x5e602705, 0x5e5b6c5b, 0x9e8222fe, 0x0106002d, 0x0502ff4b, 0x001a05b5, 0x821e0015, 0x004930ab, 0x00d8016e, 0x35300500, + 0x35302130, 0x74371236, 0x152e053d, 0x15302330, 0x33302530, 0x23301130, 0x145e010e, 0x183e2007, 0x2008d344, 0x073d4801, 0x22012e23, 0x07197e06, + 0x01021e24, 0x006a2622, 0x06816d08, 0x1d060722, 0x0e814618, 0x1133352b, 0x15010f23, 0x0f150e0f, 0x8205840d, 0x270b9108, 0x27012e05, 0x0b3f3537, + 0x0a200284, 0x0b880584, 0x17930620, 0x1133073c, 0xa1021533, 0xb52dc9fe, 0x5c5c8e2d, 0x07dbbffe, 0xaf028e23, 0x0e3c5c3e, 0x44181d0f, 0x072009bd, + 0x0f260082, 0x3145310f, 0x09820f10, 0x311f0739, 0x9683eefd, 0x41684927, 0x213b3b58, 0x11103c0f, 0x2c4d3b48, 0x182c2d2d, 0x220ad849, 0x1808bc2f, + 0xeb2e3b4c, 0x2c0b222e, 0x206ed20b, 0x2453d202, 0xa3a60101, 0xa54a18f2, 0xe2fe290e, 0x4140582f, 0x58835152, 0x07aa4518, 0x2c25243b, 0x24252b75, + 0x1c1c1a1a, 0x25241a1a, 0x252c752b, 0x031c3324, 0x55a9b106, 0x61481880, 0x3e342c0f, 0x09230931, 0x0b292949, 0xd4f5015a, 0x2254d0b1, 0xd00a280a, + 0x41508953, 0x5f8655b6, 0x5abcfd23, 0x38008200, 0x025c0001, 0x02a4065f, 0x000300a5, 0x15211300, 0x48065c21, 0xa502b8f9, 0x271b8546, 0xa40625ff, + 0x1400d605, 0x3c081b82, 0x3e012c32, 0x34113505, 0x022c032e, 0x019d5c23, 0xf6050134, 0x5b7fadc7, 0xaa6f3c2e, 0xfef8fecc, 0xada9fee5, 0x5633a502, + 0x7a837e72, 0xf90e4766, 0x7d5b154f, 0x68869190, 0x0001003e, 0x2447895b, 0x012c2201, 0x2047832e, 0x2747823e, 0x9da40633, 0xfbfeccfe, 0x01254889, + 0x011b0108, 0x82489657, 0x00053293, 0x0638ff2a, 0x009405d6, 0x00400004, 0x014b0044, 0x2b9b8208, 0x21072130, 0x030e2204, 0x07040e07, 0x2e06ab57, + 0x33363435, 0x041e1732, 0x37033e32, 0x8337043e, 0x1716240c, 0x83141516, 0x032e221e, 0x33e98203, 0x05231501, 0x25352325, 0x33023e34, 0x36171632, + 0x17031e32, 0x14212682, 0x21058306, 0x05833236, 0x013e1725, 0x82033e37, 0x84362047, 0x22288340, 0x8631011e, 0x2317840c, 0x021e3233, 0x5b852983, + 0x85141521, 0x27262961, 0x3435012e, 0x27022e35, 0x0e2e6e83, 0x27222301, 0x0607010e, 0x07062722, 0x0c86030e, 0x02200683, 0xb0840e82, 0x03862683, + 0x82022e21, 0x273b08ba, 0x35010e34, 0x2627010e, 0x16172627, 0x06273435, 0x36373437, 0x5c262223, 0xfe46e401, 0x54e00462, 0x2f4f5061, 0x3c15070f, + 0x522c5b40, 0x4da7934b, 0x151d0835, 0x2f0f0f1b, 0x9a61504f, 0xddd4081b, 0x62fee401, 0x019610fe, 0x96000100, 0x0e047afc, 0x1b131a24, 0x171f0e0b, + 0x0202080c, 0x11151b11, 0x04070602, 0x10072e38, 0x020c0e10, 0x06030810, 0x0a0c130c, 0x530b0609, 0x040d1339, 0x0c11282c, 0x2f411e18, 0x0d151d0c, + 0x241a0e04, 0x27142013, 0x11140c1e, 0x0909090a, 0x2c21492f, 0x121a1301, 0x1004180f, 0x25210f06, 0x2a100f14, 0x10171c19, 0x21091224, 0x132e0e0d, + 0x18133b1a, 0x0d060707, 0x0e290938, 0x111a141b, 0x122f340d, 0x19100807, 0x160b0a11, 0x1c101010, 0x22180f17, 0x08221a0c, 0x030d1611, 0x06171601, + 0x021a0327, 0x01100801, 0x08020103, 0x021a1207, 0x2fbb6eb9, 0x173c5242, 0x424a1d09, 0xa72d184b, 0x0f0d4d4e, 0x17161d15, 0x2f42523c, 0x90081897, + 0x016e5801, 0xf0f0fa25, 0x1d0da0fa, 0x1b151a29, 0x1d110e07, 0x26170e11, 0x0c020b3a, 0x0505070d, 0x0b091037, 0x08040910, 0x040d670c, 0x3b1f2741, + 0x0e186037, 0x121d1107, 0x15092617, 0x5201100f, 0x04380443, 0x34010512, 0x10171108, 0x0b122d0c, 0x3e080403, 0x2f070b42, 0x0b24111d, 0x14111045, + 0x1d0f331c, 0x0a5d090e, 0x18180c4d, 0x022d410c, 0x17211617, 0x0c110508, 0x2226141b, 0x19220e05, 0x02071703, 0x02030c0c, 0x04110205, 0x04020202, + 0x24038201, 0x171a0702, 0x1e734300, 0x38188f43, 0xff5c0003, 0x05a40637, 0x000600e0, 0x003b000d, 0x23110100, 0x11230109, 0x24068503, 0x07012f01, + 0x20018927, 0x2b0f840f, 0x021f020f, 0x013f1737, 0x1737011f, 0x0328018a, 0x1401c834, 0x98c81401, 0x023d0685, 0x4e7238d8, 0x60484b60, 0x27545a5a, + 0x4554184b, 0x364b394b, 0x2539155a, 0x5a153925, 0x3f0c8236, 0x4b185445, 0x5a5a5427, 0x604b4860, 0x5d01724e, 0xdefefcfe, 0x04012201, 0x04015d02, + 0xdefe2201, 0x2e080f82, 0x04381bc8, 0x59512d42, 0x2a372166, 0x70844858, 0x3b4b645a, 0x6c438f52, 0x528f4a65, 0x5a644b3b, 0x58488470, 0x6621372a, + 0x422d5159, 0x44003804, 0x0741217b, 0x1b3f4118, 0x00042308, 0x065effc8, 0x00a60538, 0x000f0003, 0x001f001b, 0x21352500, 0x33150315, 0x23152315, + 0x33352335, 0x0b8b0135, 0x1123112e, 0xcc016c04, 0x64b4b4b4, 0xc0fcb4b4, 0x02270684, 0x64a05a31, 0x839c0464, 0xb4642312, 0x07855cfe, 0xf90e0225, + 0x9f4806b8, 0x010531b7, 0x0508ff56, 0x001505aa, 0x00de00b4, 0x010c01ec, 0x0524ea82, 0x23113335, 0x49091f49, 0x2b490b28, 0x67082008, 0x332a05ee, + 0x01153311, 0x020e0714, 0x4e532307, 0x012e2305, 0x0e820623, 0x20154e18, 0x6008ad49, 0x36280dd9, 0x17011e37, 0x25060706, 0x2328425c, 0x07bc9c01, + 0xc05ad446, 0x2c0b295a, 0x1d721c0b, 0x1c02a3a5, 0x35053c66, 0x22215b38, 0x04020d2d, 0x0e0f0a01, 0x2a203025, 0x1e352424, 0x4e181111, 0x3a320a82, + 0x3b3a4242, 0x15fe4141, 0x49269584, 0x76574169, 0x734c5b22, 0x0d511806, 0xe2022108, 0x3607f45c, 0x2a1b323b, 0x1005151e, 0x120a0f40, 0x664c3713, + 0x0f1b1c50, 0x5c2c190e, 0xf82107ef, 0xa89a485b, 0x0a273308, 0xfd1f7c1f, 0xa5015bbc, 0x6b414049, 0x4d2a1b55, 0x36592928, 0x12140101, 0x0f101a12, + 0x304c370e, 0x1e2a2b31, 0x1312211e, 0x92303044, 0x3c0e3c3e, 0x04823f3f, 0x08023e32, 0x8154a9b2, 0x4b4d2d58, 0x6a393032, 0x6a5d655d, 0x30089749, + 0x207f2068, 0x2e2a292f, 0x1038310c, 0x0716271d, 0x0ead6818, 0x1c1d1b2d, 0x00165a17, 0x000e0000, 0x820100ae, 0x20028507, 0x240b8602, 0x000d0001, + 0x240b861f, 0x00070002, 0x240b863d, 0x00290003, 0x200b8699, 0x20238204, 0x240b86df, 0x010f0005, 0x2a0b860d, 0x010c0006, 0x00030037, 0x85090401, + 0x220b8654, 0x821a0001, 0x20178509, 0x20778202, 0x2417862d, 0x00520003, 0x200b8645, 0x20238204, 0x240b86c3, 0x001e0005, 0x240b86ed, 0x01180006, + 0x304d831d, 0x00750046, 0x006e0072, 0x00630061, 0x00200065, 0x20078249, 0x2e0f826f, 0x46000073, 0x616e7275, 0x49206563, 0x826e6f63, 0x8252200e, + 0x8267201f, 0x826c202d, 0x0072282b, 0x67655200, 0x82616c75, 0x00452208, 0x2219826c, 0x82740063, 0x82692047, 0x0020223d, 0x200f824b, 0x220f8265, + 0x823a0020, 0x85619951, 0x0032241f, 0x842d0038, 0x00323803, 0x00320030, 0x45000033, 0x7463656c, 0x20636972, 0x7465654b, 0x8c203a20, 0x270f8289, + 0x382d3832, 0x3230322d, 0x5d992a82, 0x5620bf8f, 0x72269582, 0x69007300, 0xdf826f00, 0x6b822020, 0x31003024, 0x07842e00, 0x00003030, 0x73726556, + 0x206e6f69, 0x2e313030, 0x10823030, 0x1741598d, 0x06164111, 0x02000023, 0x20008b00, 0x840c8b01, 0x824c200b, 0x019c0805, 0x03000200, 0x03010201, + 0x05010401, 0x07010601, 0x09010801, 0x0b010a01, 0x0d010c01, 0x0f010e01, 0x11011001, 0x13011201, 0x15011401, 0x17011601, 0x19011801, 0x1b011a01, + 0x1d011c01, 0x1f011e01, 0x21012001, 0x23012201, 0x25012401, 0x27012601, 0x29012801, 0x2b012a01, 0x2d012c01, 0x2f012e01, 0x31013001, 0x33013201, + 0x35013401, 0x37013601, 0x39013801, 0x3b013a01, 0x3d013c01, 0x3f013e01, 0x41014001, 0x43014201, 0x45014401, 0x47014601, 0x49014801, 0x696e7507, + 0x30463045, 0x31200786, 0x32200786, 0x33200786, 0x34200786, 0x31210784, 0x21278530, 0x27853031, 0x85303121, 0x30312127, 0x31212785, 0x20278730, + 0x202f8635, 0x20078636, 0x20078637, 0x20078638, 0x20078639, 0x20078641, 0x20078642, 0x20078643, 0x20078644, 0x20078645, 0x21078546, 0x07863031, + 0x07863120, 0x31207f86, 0x31207f86, 0x31207f86, 0x31207f86, 0x31207f86, 0x31207f86, 0x31207f86, 0x31207f86, 0x31207f86, 0x31207f86, 0x31207f86, + 0x31207f86, 0x31207f86, 0x32217f86, 0x21778530, 0x07863132, 0x32207f86, 0x32207f86, 0x32207f86, 0x32207f86, 0x32207f86, 0x32207f86, 0x32207f86, + 0x32207f86, 0x32207f86, 0x32207f86, 0x32207f86, 0x32207f86, 0x32207f86, 0x33217f86, 0x21778530, 0x07863133, 0x33207f86, 0x33207f86, 0x33207f86, + 0x33207f86, 0x33207f86, 0x33207f86, 0x33207f86, 0x33207f86, 0x33207f86, 0x33207f86, 0x33207f86, 0x33207f86, 0x33207f86, 0x34217f86, 0x21778530, + 0x07863134, 0x83003221, 0xff012300, 0xe54400ff, 0x00002607, 0x0014000c, 0x24168204, 0x00000002, 0x85038601, 0xdf002409, 0x8231cbd6, 0xe0002c11, + 0x009ffffd, 0xe1000000, 0x050dea11, 0x401501fa, 0x00000011, }; From cd2d60ac5823203075eb77f31541d8852e7340b2 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Mon, 28 Aug 2023 10:37:51 +0400 Subject: [PATCH 036/126] table stuff into if --- src/gui/settings.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 109526adb..753abc3bb 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -738,9 +738,9 @@ void FurnaceGUI::drawSettings() { } #endif - ImGui::TableNextRow(); - ImGui::TableNextColumn(); if (settings.audioEngine==DIV_AUDIO_SDL) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Driver"); ImGui::TableNextColumn(); From d65df2facdd3d2a4e4c76d0abffc38c41cd0f7f7 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Mon, 28 Aug 2023 00:38:52 -0700 Subject: [PATCH 037/126] Adding C219 to letter icons. This time for real. --- res/icons.sfd | 148 +- res/icons.sfd-01 | 6834 -------------------------------------- res/icons.ttf | Bin 28108 -> 28552 bytes src/gui/font_furicon.cpp | 619 ++-- 4 files changed, 458 insertions(+), 7143 deletions(-) delete mode 100644 res/icons.sfd-01 diff --git a/res/icons.sfd b/res/icons.sfd index c1e45f2b0..f8e0f1efb 100644 --- a/res/icons.sfd +++ b/res/icons.sfd @@ -21,7 +21,7 @@ OS2Version: 0 OS2_WeightWidthSlopeOnly: 0 OS2_UseTypoMetrics: 0 CreationTime: 1691897631 -ModificationTime: 1692347465 +ModificationTime: 1693208149 PfmFamily: 81 TTFWeight: 400 TTFWidth: 5 @@ -53,7 +53,7 @@ FitToEm: 0 WinInfo: 57568 16 10 BeginPrivate: 0 EndPrivate -BeginChars: 65536 72 +BeginChars: 65536 73 StartChar: space Encoding: 32 32 0 @@ -5812,7 +5812,7 @@ EndChar StartChar: uniE141 Encoding: 57665 57665 71 Width: 1792 -Flags: HWO +Flags: HW LayerCount: 2 Fore SplineSet @@ -5823,5 +5823,147 @@ SplineSet 92 677 l 25 EndSplineSet EndChar + +StartChar: uniE142 +Encoding: 57666 57666 72 +Width: 1792 +Flags: H +LayerCount: 2 +UndoRedoHistory +Layer: 1 +Undoes +UndoOperation +Index: 0 +Type: 1 +WasModified: 0 +WasOrder2: 0 +Layer: 2 +Width: 1792 +VWidth: 1792 +LBearingChange: 0 +UnicodeEnc: 0 +InstructionsLength: 0 +EndUndoOperation +UndoOperation +Index: 1 +Type: 3 +WasModified: 0 +WasOrder2: 0 +Layer: 2 +EndUndoOperation +EndUndoes +Redoes +EndRedoes +EndUndoRedoHistory +Fore +SplineSet +412.09375 -247.51953125 m 1 + 412.09375 -157.28515625 l 1 + 600.296875 -157.28515625 l 1 + 600.296875 343.80859375 l 1 + 592.5625 343.80859375 l 1 + 540.739257812 288.469726562 488.916992188 233.131835938 437.09375 177.791992188 c 1 + 415.010742188 197.609375 392.926757812 217.427734375 370.84375 237.245117188 c 1 + 427.796875 299.015625 484.75 360.787109375 541.702148438 422.557617188 c 1 + 706.858398438 422.557617188 l 1 + 706.858398438 -157.286132812 l 1 + 870.061523438 -157.286132812 l 1 + 870.061523438 -247.520507812 l 1 + 412.092773438 -247.520507812 l 1 + 412.09375 -247.51953125 l 1 +1409.91015625 172.950195312 m 1 + 1409.91015625 124.356445312 1402.48828125 78.5751953125 1387.80078125 35.68359375 c 0 + 1373.11328125 -7.20703125 1354.20703125 -46.58203125 1331.16015625 -82.36328125 c 0 + 1308.11328125 -118.22265625 1282.33203125 -150.25390625 1253.89453125 -178.37890625 c 0 + 1225.37890625 -206.58203125 1197.41015625 -229.62890625 1169.91015625 -247.51953125 c 1 + 1025.84765625 -247.51953125 l 1 + 1063.66015625 -220.01953125 1097.56640625 -193.45703125 1127.64453125 -167.83203125 c 0 + 1157.72363281 -142.20703125 1183.97265625 -116.03515625 1206.39453125 -89.08203125 c 0 + 1228.73925781 -62.20703125 1247.48925781 -33.76953125 1262.48925781 -3.69140625 c 0 + 1277.56738281 26.38671875 1289.20800781 59.35546875 1297.56738281 95.21484375 c 0 + 1295.328125 95.83984375 1293.08789062 96.46484375 1290.84863281 97.08984375 c 0 + 1283.81738281 83.65234375 1275.61328125 71.07421875 1266.39550781 59.19921875 c 0 + 1257.09863281 47.32421875 1246.23925781 36.93359375 1233.73925781 28.02734375 c 0 + 1221.23925781 19.04296875 1207.02050781 12.01171875 1191.00488281 6.85546875 c 0 + 1174.98925781 1.77734375 1156.47363281 -0.80078125 1135.30175781 -0.80078125 c 0 + 1107.17675781 -0.80078125 1081.08300781 3.96484375 1057.09863281 13.57421875 c 0 + 1033.11425781 23.18359375 1012.25488281 37.08984375 994.676757812 55.37109375 c 0 + 977.098632812 73.57421875 963.348632812 95.37109375 953.426757812 120.60546875 c 0 + 943.504882812 145.91796875 938.504882812 174.58984375 938.504882812 206.54296875 c 0 + 938.504882812 239.82421875 944.129882812 270.52734375 955.301757812 298.73046875 c 0 + 966.551757812 326.85546875 982.333007812 350.91796875 1002.87988281 370.68359375 c 0 + 1023.34863281 390.52734375 1047.95800781 406.07421875 1076.78613281 417.24609375 c 0 + 1105.53613281 428.49609375 1137.87988281 434.04296875 1173.73828125 434.04296875 c 0 + 1210.84863281 434.04296875 1243.97363281 428.02734375 1273.11328125 415.83984375 c 0 + 1302.17578125 403.65234375 1326.86328125 386.23046875 1347.01953125 363.49609375 c 0 + 1367.17578125 340.76171875 1382.72265625 313.41796875 1393.58203125 281.46484375 c 0 + 1404.44140625 249.43359375 1409.91015625 213.26171875 1409.91015625 172.94921875 c 1 + 1409.91015625 172.950195312 l 1 +1173.73046875 86.5498046875 m 0 + 1212.79296875 86.5498046875 1243.18261719 96.9404296875 1264.90234375 117.799804688 c 0 + 1286.69921875 138.581054688 1297.55761719 169.127929688 1297.55761719 209.440429688 c 2 + 1297.55761719 222.877929688 l 2 + 1297.55761719 263.190429688 1286.69824219 293.737304688 1264.90234375 314.596679688 c 0 + 1243.18261719 335.377929688 1212.79296875 345.768554688 1173.73046875 345.768554688 c 0 + 1134.66796875 345.768554688 1104.27734375 335.377929688 1082.48046875 314.596679688 c 0 + 1060.76074219 293.737304688 1049.90234375 263.190429688 1049.90234375 222.877929688 c 2 + 1049.90234375 209.440429688 l 2 + 1049.90234375 169.127929688 1060.76171875 138.581054688 1082.48046875 117.799804688 c 0 + 1104.27734375 96.9404296875 1134.66796875 86.5498046875 1173.73046875 86.5498046875 c 0 +623.96875 607.015625 m 1 + 536.3125 607.015625 467.485351562 636.546875 417.563476562 695.765625 c 0 + 367.640625 754.984375 342.71875 840.921875 342.71875 953.578125 c 0 + 342.71875 1009.828125 349.125 1059.43652344 361.938476562 1102.328125 c 0 + 374.672851562 1145.21875 393.265625 1181.390625 417.563476562 1210.84375 c 0 + 441.938476562 1240.296875 471.46875 1262.484375 506.390625 1277.5625 c 0 + 541.235351562 1292.5625 580.453125 1300.0625 623.96875 1300.0625 c 0 + 682.25 1300.0625 731 1287.328125 770.375 1261.703125 c 0 + 809.75 1236.078125 840.609375 1198.34375 863.03125 1148.42285156 c 1 + 771.859375 1098.50097656 l 1 + 760.296875 1130.53125 742.5625 1155.92285156 718.578125 1174.828125 c 0 + 694.515625 1193.734375 663.03125 1203.109375 623.96875 1203.109375 c 0 + 572.171875 1203.109375 531.46875 1185.53125 502.09375 1150.375 c 0 + 472.640625 1115.140625 457.875 1066.46875 457.875 1004.4375 c 2 + 457.875 902.640625 l 2 + 457.875 840.609375 472.640625 791.9375 502.09375 756.702148438 c 0 + 531.46875 721.545898438 572.171875 703.967773438 623.96875 703.967773438 c 0 + 664.28125 703.967773438 697.09375 714.358398438 722.40625 735.139648438 c 0 + 747.640625 755.920898438 766.390625 782.639648438 778.578125 815.295898438 c 1 + 807.692382812 797.69140625 836.807617188 780.087890625 865.921875 762.483398438 c 1 + 843.5 713.889648438 812.171875 675.764648438 771.859375 648.264648438 c 0 + 731.46875 620.764648438 682.25 607.014648438 623.96875 607.014648438 c 1 + 623.96875 607.015625 l 1 +1449.28027344 618.5 m 1 + 994.202148438 618.5 l 1 + 994.202148438 722.171875 l 1 + 1065.58203125 785.84375 1136.96289062 849.515625 1208.34277344 913.188476562 c 0 + 1242.24902344 943.96875 1268.34277344 973.188476562 1286.54589844 1001.078125 c 0 + 1304.74902344 1028.890625 1313.88964844 1058.18847656 1313.88964844 1088.890625 c 2 + 1313.88964844 1101.390625 l 2 + 1313.88964844 1134.046875 1304.12402344 1159.59375 1284.59277344 1178.18847656 c 0 + 1265.13964844 1196.703125 1238.73339844 1206.00097656 1205.45214844 1206.00097656 c 0 + 1186.85839844 1206.00097656 1170.68652344 1203.26660156 1156.93652344 1197.87597656 c 0 + 1143.18652344 1192.40722656 1131.15527344 1184.90625 1120.92089844 1175.29785156 c 0 + 1110.68652344 1165.68847656 1102.24902344 1154.51660156 1095.53027344 1141.703125 c 0 + 1088.81152344 1128.890625 1083.49902344 1115.140625 1079.67089844 1100.453125 c 1 + 1047.97851562 1112.61425781 1016.28515625 1124.77636719 984.592773438 1136.93847656 c 1 + 991.702148438 1158.03222656 1001.23339844 1178.34375 1013.42089844 1197.87597656 c 0 + 1025.60839844 1217.40722656 1040.92089844 1234.828125 1059.51464844 1250.21972656 c 0 + 1078.03027344 1265.53222656 1099.98339844 1277.71972656 1125.29589844 1286.62597656 c 0 + 1150.53027344 1295.61035156 1180.13964844 1300.06347656 1214.04589844 1300.06347656 c 0 + 1247.95214844 1300.06347656 1278.42089844 1295.14160156 1305.29589844 1285.21875 c 0 + 1332.17089844 1275.296875 1354.67089844 1261.546875 1372.95214844 1243.96875 c 0 + 1391.15527344 1226.31347656 1405.13964844 1205.375 1414.67089844 1181.078125 c 0 + 1424.28027344 1156.703125 1429.12402344 1130.21875 1429.12402344 1101.390625 c 0 + 1429.12402344 1074.515625 1424.98339844 1049.515625 1416.62402344 1026.46875 c 0 + 1408.34277344 1003.421875 1396.78027344 981.703125 1382.09277344 961.234375 c 0 + 1367.32714844 940.765625 1350.21777344 921.234375 1330.68652344 902.640625 c 0 + 1311.15527344 884.125 1290.53027344 865.21875 1268.81152344 846 c 0 + 1216.31152344 800.895507812 1163.81152344 755.791992188 1111.31152344 710.688476562 c 1 + 1449.28125 710.688476562 l 1 + 1449.28125 618.500976562 l 1 + 1449.28027344 618.5 l 1 +EndSplineSet +EndChar EndChars EndSplineFont diff --git a/res/icons.sfd-01 b/res/icons.sfd-01 deleted file mode 100644 index dd258ba16..000000000 --- a/res/icons.sfd-01 +++ /dev/null @@ -1,6834 +0,0 @@ -SplineFontDB: 3.2 -FontName: FurnaceIcons -FullName: Furnace Icons -FamilyName: Furnace Icons -Weight: Regular -Copyright: -UComments: "To generate a new letter icon:+AAoACgAA-- Open `icons.sfd` in FontForge.+AAoA-- Open +ACIA-IBM Plex Sans Medium+ACIA to the side. Return to the icons font.+AAoA-- Copy the two baselines from `E0F0` to the new codepoint.+AAoA-- Open the new codepoint.+AAoA-- Select the upper baseline.+AAoA-- Use `Element | Insert Text Outlines...` to place text:+AAoA - Turn off +ACIA-Scale so text width matches path length+ACIA.+AAoA - Align +ACIA-centered+ACIA.+AAoA - Type first line of text into the box.+AAoA - Click the +ACIA-Insert+ACIA button (might need window resize to be visible).+AAoA-- Delete the baseline.+AAoA-- If there's a line 2, repeat for the lower baseline, including deletion.+AAoA-- Select all.+AAoA-- Use `Element | Transformations | Transform...` to Scale Uniformly (from glyph origin) and Move as needed:+AAoA - One letter: 12000%, X 896, Y 15.5.+AAoA - Two letters: 10000%, X 896, Y 99.2.+AAoA - Three letters: 8000%, X 896, Y 183.+AAoA - Two lines: 8000%, X 896, Y 618.5.+AAoA-- If resulting glyph is too wide, repeat all steps starting with +ACIA-IBM Plex Sans Condensed Medium+ACIA instead.+AAoA - Remember to close the other IBM Plex font or select the proper one in the text dialog.+AAoACgAA-Notes:+AAoACgAA-- Codepoints `E0F0` to `E0F4` are for reference only.+AAoA-- The back layer of each of `E0F1` to `E0F4` has lines that show the expected tops and bottoms of text. Round letters and numerals will reach slightly above or below.+AAoA-- The WSG icon (`E11F`) has been slightly kerned to fit.+AAoA" -Version: 001.000 -ItalicAngle: 0 -UnderlinePosition: 0 -UnderlineWidth: 0 -Ascent: 1536 -Descent: 256 -InvalidEm: 0 -LayerCount: 2 -Layer: 0 0 "Back" 1 -Layer: 1 0 "Fore" 0 -XUID: [1021 230 235539655 14169] -FSType: 0 -OS2Version: 0 -OS2_WeightWidthSlopeOnly: 0 -OS2_UseTypoMetrics: 0 -CreationTime: 1691897631 -ModificationTime: 1692237157 -PfmFamily: 81 -TTFWeight: 400 -TTFWidth: 5 -LineGap: 0 -VLineGap: 0 -OS2TypoAscent: 1536 -OS2TypoAOffset: 0 -OS2TypoDescent: -256 -OS2TypoDOffset: 0 -OS2TypoLinegap: 0 -OS2WinAscent: 1536 -OS2WinAOffset: 0 -OS2WinDescent: 256 -OS2WinDOffset: 0 -HheadAscent: 1536 -HheadAOffset: 0 -HheadDescent: -256 -HheadDOffset: 0 -OS2Vendor: 'FurT' -MarkAttachClasses: 1 -DEI: 91125 -LangName: 1033 -Encoding: UnicodeBmp -UnicodeInterp: none -NameList: AGL For New Fonts -DisplaySize: -48 -AntiAlias: 1 -FitToEm: 0 -WinInfo: 57568 16 10 -BeginPrivate: 0 -EndPrivate -BeginChars: 65536 72 - -StartChar: space -Encoding: 32 32 0 -Width: 1792 -Flags: W -LayerCount: 2 -EndChar - -StartChar: uniE100 -Encoding: 57600 57600 1 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 171.516 95.9375<754.864 980.648 1382.09 1612.77> 449.875 95.0781<141.391 377.778 1516.16 1654.36> 768.625 95.9375<141.391 377.778 780.433 998.844 1381.56 1608.87> -VStem: 32.9531 108.438<183 449.875 544.953 758.078> 401.547 114.297<567.194 735.759> 648.969 107.5<611.387 747.68> 1008.97 107.5<294.565 441.758> 1203.19 116.172<330.958 704.848> 1663.97 95.0781<183 284.797 316.503 446.984> -DStem2: 863.031 584.25 844.75 481.594 0.978916 -0.204262<-84.378 149.631> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 171.516 95.9375<754.864 980.648 1382.09 1612.77> 449.875 95.0781<141.391 377.778 1516.16 1654.36> 768.625 95.9375<141.391 377.778 780.433 998.844 1381.56 1608.87> -VStem: 32.9531 108.438<183 449.875 544.953 758.078> 401.547 114.297<567.194 735.759> 648.969 107.5<611.387 747.68> 1008.97 107.5<294.565 441.758> 1203.19 116.172<330.958 704.848> 1663.97 95.0781<183 284.797 316.503 446.984> -DStem2: 863.031 584.25 844.75 481.594 0.978916 -0.204262<-84.378 149.631> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -32.953125 183 m 1 - 32.953125 406.359375 32.953125 629.71875 32.953125 853.078125 c 1 - 128.942382812 853.078125 224.932617188 853.078125 320.921875 853.078125 c 1 - 383.03125 853.078125 431 834.875 464.90625 798.390625 c 0 - 498.890625 761.90625 515.84375 712.921875 515.84375 651.515625 c 256 - 515.84375 590.03125 498.890625 541.046875 464.90625 504.5625 c 0 - 431 468.15625 383.03125 449.875 320.921875 449.875 c 1 - 261.078125 449.875 201.234375 449.875 141.390625 449.875 c 1 - 141.390625 360.916992188 141.390625 271.958007812 141.390625 183 c 1 - 105.245117188 183 69.0986328125 183 32.953125 183 c 1 -141.390625 544.953125 m 1 - 198.995117188 544.953125 256.598632812 544.953125 314.203125 544.953125 c 1 - 341.703125 544.953125 363.1875 552.140625 378.5 566.515625 c 0 - 393.890625 580.890625 401.546875 601.59375 401.546875 628.46875 c 1 - 401.546875 643.807617188 401.546875 659.145507812 401.546875 674.484375 c 1 - 401.546875 701.4375 393.890625 722.0625 378.5 736.4375 c 0 - 363.1875 750.8125 341.703125 758.078125 314.203125 758.078125 c 1 - 256.598632812 758.078125 198.995117188 758.078125 141.390625 758.078125 c 1 - 141.390625 687.036132812 141.390625 615.995117188 141.390625 544.953125 c 1 -873.578125 171.515625 m 0 - 817.25 171.515625 769.4375 181.75 730.0625 202.21875 c 0 - 690.6875 222.6875 656.9375 250.1875 628.8125 284.796875 c 1 - 653.760742188 308.15625 678.708007812 331.515625 703.65625 354.875 c 1 - 727.328125 326.046875 753.421875 304.25 781.859375 289.5625 c 0 - 810.375 274.875 842.875 267.453125 879.359375 267.453125 c 0 - 922.25 267.453125 954.515625 277.0625 976.3125 296.28125 c 0 - 998.03125 315.5 1008.96875 341.4375 1008.96875 374.015625 c 0 - 1008.96875 400.265625 1001.234375 421.046875 985.921875 436.4375 c 0 - 970.53125 451.828125 943.34375 463.3125 904.28125 470.96875 c 1 - 884.4375 474.510742188 864.59375 478.051757812 844.75 481.59375 c 1 - 779.515625 493.703125 730.53125 515.1875 697.875 545.890625 c 0 - 665.21875 576.59375 648.96875 618.859375 648.96875 672.609375 c 0 - 648.96875 702.0625 654.515625 728.78125 665.765625 752.765625 c 0 - 676.9375 776.75 692.640625 796.90625 712.796875 813.234375 c 0 - 732.953125 829.5625 757.40625 842.21875 786.234375 851.125 c 0 - 814.984375 860.109375 847.328125 864.5625 883.1875 864.5625 c 0 - 933.734375 864.5625 977.5625 855.8125 1014.671875 838.234375 c 0 - 1051.78125 820.578125 1083.5 795.1875 1109.75 761.90625 c 1 - 1084.46386719 739.510742188 1059.17675781 717.114257812 1033.890625 694.71875 c 1 - 1016.625 717.0625 995.53125 735.03125 970.53125 748.46875 c 0 - 945.609375 761.90625 914.515625 768.625 877.40625 768.625 c 0 - 839.046875 768.625 809.28125 760.890625 788.109375 745.578125 c 0 - 767.015625 730.1875 756.46875 707.765625 756.46875 678.390625 c 0 - 756.46875 650.1875 765.0625 629.25 782.40625 615.5 c 0 - 799.671875 601.75 826.546875 591.28125 863.03125 584.25 c 1 - 882.875 580.109375 902.71875 575.96875 922.5625 571.828125 c 1 - 989.75 559.015625 1038.890625 537.21875 1069.90625 506.515625 c 0 - 1100.921875 475.8125 1116.46875 433.546875 1116.46875 379.796875 c 0 - 1116.46875 348.46875 1111 319.953125 1100.140625 294.328125 c 0 - 1089.28125 268.78125 1073.421875 246.828125 1052.640625 228.625 c 0 - 1031.78125 210.34375 1006.390625 196.28125 976.3125 186.359375 c 0 - 946.234375 176.4375 911.9375 171.515625 873.578125 171.515625 c 0 -1663.96875 284.796875 m 1 - 1662.69238281 284.796875 1661.41699219 284.796875 1660.140625 284.796875 c 1 - 1653.109375 252.140625 1634.046875 225.109375 1603.03125 203.625 c 0 - 1571.9375 182.21875 1530.84375 171.515625 1479.671875 171.515625 c 0 - 1439.984375 171.515625 1403.1875 179.015625 1369.28125 194.015625 c 0 - 1335.296875 209.09375 1306.078125 231.125 1281.390625 260.265625 c 0 - 1256.78125 289.40625 1237.5625 325.578125 1223.8125 368.78125 c 0 - 1210.0625 411.984375 1203.1875 461.75 1203.1875 518.078125 c 0 - 1203.1875 573.703125 1210.21875 623.15625 1224.28125 666.359375 c 0 - 1238.34375 709.5625 1258.1875 745.890625 1283.8125 775.34375 c 0 - 1309.4375 804.796875 1340.140625 826.984375 1376 842.0625 c 0 - 1411.78125 857.0625 1451.78125 864.5625 1496 864.5625 c 0 - 1556.15625 864.5625 1607.015625 851.28125 1648.578125 824.796875 c 0 - 1690.21875 798.234375 1722.5625 761.203125 1745.609375 713.859375 c 1 - 1716.15625 696.59375 1686.703125 679.328125 1657.25 662.0625 c 1 - 1644.4375 693.390625 1624.59375 718.859375 1597.71875 738.390625 c 0 - 1570.84375 757.84375 1536.9375 767.609375 1496 767.609375 c 0 - 1442.875 767.609375 1400.140625 750.65625 1367.796875 716.75 c 0 - 1335.53125 682.84375 1319.359375 634.875 1319.359375 572.765625 c 1 - 1319.359375 536.28125 1319.359375 499.796875 1319.359375 463.3125 c 1 - 1319.359375 401.203125 1335.53125 353.234375 1367.796875 319.328125 c 0 - 1400.140625 285.421875 1442.875 268.46875 1496 268.46875 c 0 - 1517.09375 268.46875 1537.25 271.125 1556.46875 276.59375 c 0 - 1575.6875 282.0625 1592.484375 290.03125 1606.859375 300.578125 c 0 - 1621.234375 311.125 1632.796875 324.25 1641.390625 339.953125 c 0 - 1650.0625 355.65625 1654.359375 374.015625 1654.359375 395.1875 c 1 - 1654.359375 412.453125 1654.359375 429.71875 1654.359375 446.984375 c 1 - 1608.29199219 446.984375 1562.22363281 446.984375 1516.15625 446.984375 c 1 - 1516.15625 478.026367188 1516.15625 509.067382812 1516.15625 540.109375 c 1 - 1597.12011719 540.109375 1678.08300781 540.109375 1759.046875 540.109375 c 1 - 1759.046875 421.073242188 1759.046875 302.036132812 1759.046875 183 c 1 - 1727.35449219 183 1695.66113281 183 1663.96875 183 c 1 - 1663.96875 216.932617188 1663.96875 250.864257812 1663.96875 284.796875 c 1 -EndSplineSet -EndChar - -StartChar: uniE101 -Encoding: 57601 57601 2 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 171.516 90.2344<203.228 410.876> 453.703 90.2344<815.531 1024.71> 762.844 90.2344<194.777 419.326 815.531 1024.71> -VStem: 46.8594 109.453<309.775 726.303> 457.719 109.453<309.775 726.303> 713.734 101.797<183 453.703 543.938 762.844> 1043.97 108.516<563.279 743.506> 1273.73 117.109<777.653 853.078> 1273.73 97.9688<183 708.051> 1627.02 118.125<183 258.425> 1647.17 97.9688<328.027 853.078> -DStem2: 1590.53 450.812 1376.47 710.031 0.377481 -0.926017<-320.846 135.117> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 171.516 90.2344<203.228 410.876> 453.703 90.2344<815.531 1024.71> 762.844 90.2344<194.777 419.326 815.531 1024.71> -VStem: 46.8594 109.453<309.775 726.303> 457.719 109.453<309.775 726.303> 713.734 101.797<183 453.703 543.938 762.844> 1043.97 108.516<563.279 743.506> 1273.73 117.109<777.653 853.078> 1273.73 97.9688<183 708.051> 1627.02 118.125<183 258.425> 1647.17 97.9688<328.027 853.078> -DStem2: 1590.53 450.812 1376.47 710.031 0.377481 -0.926017<-320.846 135.117> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -307.015625 171.515625 m 256xfe - 266.703125 171.515625 230.53125 178.078125 198.578125 191.125 c 0 - 166.546875 204.25 139.203125 224.953125 116.46875 253.078125 c 0 - 93.734375 281.203125 76.46875 317.21875 64.59375 361.046875 c 0 - 52.796875 404.953125 46.859375 457.21875 46.859375 518.078125 c 256 - 46.859375 578.859375 52.796875 631.125 64.59375 675.03125 c 0 - 76.46875 718.859375 93.734375 754.875 116.46875 783 c 0 - 139.203125 811.125 166.546875 831.828125 198.578125 844.953125 c 0 - 230.53125 858.078125 266.703125 864.5625 307.015625 864.5625 c 256 - 347.328125 864.5625 383.5 858.078125 415.53125 844.953125 c 0 - 447.484375 831.828125 474.90625 811.125 497.5625 783 c 0 - 520.296875 754.875 537.5625 718.859375 549.4375 675.03125 c 0 - 561.234375 631.125 567.171875 578.859375 567.171875 518.078125 c 256 - 567.171875 457.21875 561.234375 404.953125 549.4375 361.046875 c 0 - 537.5625 317.21875 520.296875 281.203125 497.5625 253.078125 c 0 - 474.90625 224.953125 447.484375 204.25 415.53125 191.125 c 0 - 383.5 178.078125 347.328125 171.515625 307.015625 171.515625 c 256xfe -307.015625 261.75 m 256 - 355.0625 261.75 392.171875 277.21875 418.421875 308.3125 c 0 - 444.59375 339.328125 457.71875 382.375 457.71875 437.375 c 1 - 457.71875 491.151367188 457.71875 544.926757812 457.71875 598.703125 c 1 - 457.71875 653.703125 444.59375 696.75 418.421875 727.765625 c 0 - 392.171875 758.859375 355.0625 774.328125 307.015625 774.328125 c 256 - 259.046875 774.328125 221.9375 758.859375 195.6875 727.765625 c 0 - 169.4375 696.75 156.3125 653.703125 156.3125 598.703125 c 1 - 156.3125 544.926757812 156.3125 491.151367188 156.3125 437.375 c 1 - 156.3125 382.375 169.4375 339.328125 195.6875 308.3125 c 0 - 221.9375 277.21875 259.046875 261.75 307.015625 261.75 c 256 -713.734375 183 m 1 - 713.734375 406.359375 713.734375 629.71875 713.734375 853.078125 c 1 - 802.067382812 853.078125 890.401367188 853.078125 978.734375 853.078125 c 1 - 1036.3125 853.078125 1079.671875 835.96875 1108.8125 801.75 c 0 - 1137.875 767.453125 1152.484375 718.078125 1152.484375 653.390625 c 256 - 1152.484375 588.78125 1137.875 539.328125 1108.8125 505.109375 c 0 - 1079.671875 470.8125 1036.3125 453.703125 978.734375 453.703125 c 1 - 924.333007812 453.703125 869.932617188 453.703125 815.53125 453.703125 c 1 - 815.53125 363.46875 815.53125 273.234375 815.53125 183 c 1 - 781.598632812 183 747.666992188 183 713.734375 183 c 1 -815.53125 543.9375 m 1 - 867.041992188 543.9375 918.551757812 543.9375 970.0625 543.9375 c 1 - 994.359375 543.9375 1012.796875 550.1875 1025.296875 562.6875 c 0 - 1037.71875 575.1875 1043.96875 595.1875 1043.96875 622.6875 c 1 - 1043.96875 643.15625 1043.96875 663.625 1043.96875 684.09375 c 1 - 1043.96875 711.671875 1037.71875 731.671875 1025.296875 744.09375 c 0 - 1012.796875 756.59375 994.359375 762.84375 970.0625 762.84375 c 1 - 918.551757812 762.84375 867.041992188 762.84375 815.53125 762.84375 c 1 - 815.53125 689.875 815.53125 616.90625 815.53125 543.9375 c 1 -1427.328125 585.265625 m 1 - 1410.375 626.854492188 1393.421875 668.442382812 1376.46875 710.03125 c 1 - 1372.30175781 710.03125 1368.13574219 710.03125 1363.96875 710.03125 c 1 - 1366.546875 667.791992188 1369.125 625.551757812 1371.703125 583.3125 c 1 - 1371.703125 449.875 1371.703125 316.4375 1371.703125 183 c 1 - 1339.046875 183 1306.390625 183 1273.734375 183 c 1xfec0 - 1273.734375 406.359375 1273.734375 629.71875 1273.734375 853.078125 c 1 - 1312.77050781 853.078125 1351.80761719 853.078125 1390.84375 853.078125 c 1 - 1457.40625 718.989257812 1523.96875 584.901367188 1590.53125 450.8125 c 1 - 1607.82324219 409.223632812 1625.11425781 367.635742188 1642.40625 326.046875 c 1 - 1646.57324219 326.046875 1650.73925781 326.046875 1654.90625 326.046875 c 1 - 1652.328125 368.286132812 1649.75 410.526367188 1647.171875 452.765625 c 1 - 1647.171875 586.203125 1647.171875 719.640625 1647.171875 853.078125 c 1 - 1679.828125 853.078125 1712.484375 853.078125 1745.140625 853.078125 c 1xff20 - 1745.140625 629.71875 1745.140625 406.359375 1745.140625 183 c 1 - 1705.765625 183 1666.390625 183 1627.015625 183 c 1xfe40 - 1560.453125 317.088867188 1493.890625 451.176757812 1427.328125 585.265625 c 1 -EndSplineSet -EndChar - -StartChar: uniE102 -Encoding: 57602 57602 3 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 84.8447 121.191<399.409 663.663> 99.2002 116.406<1138.19 1452.86> 429.181 116.406<556.547 729.398> 470.001 112.793<1138.19 1425.21> 820.392 116.406<1138.19 1425.21> 829.962 121.191<400.057 661.626> -VStem: 165.336 145.312<297.614 737.606> 741.312 118.945<99.2002 226.446 277.934 429.181> 1002.64 135.547<215.606 470.001 582.794 820.392> 1453.81 142.773<609.386 793.799> 1483.7 142.969<244.11 441.498> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 84.8447 121.191<399.409 663.663> 99.2002 116.406<1138.19 1452.86> 429.181 116.406<556.547 729.398> 470.001 112.793<1138.19 1425.21> 820.392 116.406<1138.19 1425.21> 829.962 121.191<400.057 661.626> -VStem: 165.336 145.312<297.614 737.606> 741.312 118.945<99.2002 226.446 277.934 429.181> 1002.64 135.547<215.606 470.001 582.794 820.392> 1453.81 142.773<609.386 793.799> 1483.7 142.969<244.11 441.498> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -741.3125 226.446289062 m 1x6380 - 739.75 226.446289062 738.1875 226.446289062 736.625 226.446289062 c 1 - 727.8359375 185.625976562 704.0078125 151.836914062 665.140625 124.981445312 c 0 - 626.2734375 98.2236328125 574.90625 84.8447265625 511.0390625 84.8447265625 c 0 - 461.4296875 84.8447265625 415.3359375 94.2197265625 372.953125 112.969726562 c 0 - 330.5703125 131.817382812 294.046875 159.356445312 263.1875 195.782226562 c 0 - 232.328125 232.208007812 208.3046875 277.422851562 191.1171875 331.426757812 c 0 - 173.9296875 385.430664062 165.3359375 447.637695312 165.3359375 518.047851562 c 0 - 165.3359375 587.579101562 174.125 649.395507812 191.703125 703.399414062 c 0 - 209.28125 757.403320312 234.0859375 802.813476562 266.1171875 839.629882812 c 0 - 298.1484375 876.446289062 336.625 904.180664062 381.3515625 923.028320312 c 0 - 426.078125 941.778320312 476.078125 951.153320312 531.3515625 951.153320312 c 0 - 606.546875 951.153320312 670.21875 934.551757812 722.171875 901.446289062 c 0 - 774.125 868.243164062 814.5546875 821.954101562 843.4609375 762.774414062 c 1 - 806.612304688 741.192382812 769.762695312 719.610351562 732.9140625 698.028320312 c 1 - 716.8984375 737.188476562 692.09375 769.024414062 658.5 793.438476562 c 0 - 624.90625 817.754882812 582.5234375 829.961914062 531.3515625 829.961914062 c 0 - 464.9453125 829.961914062 411.625 808.770507812 371.1953125 766.387695312 c 0 - 330.765625 724.004882812 310.6484375 664.043945312 310.6484375 586.407226562 c 1 - 310.6484375 540.801757812 310.6484375 495.196289062 310.6484375 449.590820312 c 1 - 310.6484375 371.954101562 330.765625 311.993164062 371.1953125 269.610351562 c 0 - 411.625 227.227539062 464.9453125 206.036132812 531.3515625 206.036132812 c 0x8780 - 557.71875 206.036132812 582.9140625 209.356445312 606.9375 216.192382812 c 0 - 630.9609375 223.028320312 652.0546875 232.989257812 670.0234375 246.172851562 c 0 - 687.9921875 259.356445312 702.4453125 275.762695312 713.1875 295.391601562 c 0 - 723.9296875 315.020507812 729.3984375 337.969726562 729.3984375 364.434570312 c 1 - 729.3984375 386.016601562 729.3984375 407.598632812 729.3984375 429.180664062 c 1 - 671.78125 429.180664062 614.1640625 429.180664062 556.546875 429.180664062 c 1 - 556.546875 467.982421875 556.546875 506.784179688 556.546875 545.586914062 c 1 - 657.784179688 545.586914062 759.020507812 545.586914062 860.2578125 545.586914062 c 1 - 860.2578125 396.791015625 860.2578125 247.995117188 860.2578125 99.2001953125 c 1 - 820.609375 99.2001953125 780.9609375 99.2001953125 741.3125 99.2001953125 c 1 - 741.3125 141.615234375 741.3125 184.030273438 741.3125 226.446289062 c 1x6380 -1002.640625 936.797851562 m 1x4ba0 - 1126.20800781 936.797851562 1249.77636719 936.797851562 1373.34375 936.797851562 c 1 - 1442.875 936.797851562 1497.5625 917.168945312 1537.2109375 878.008789062 c 0 - 1576.859375 838.848632812 1596.5859375 786.407226562 1596.5859375 720.782226562 c 0x4bc0 - 1596.5859375 689.629882812 1592.09375 662.969726562 1583.3046875 640.997070312 c 0 - 1574.515625 619.024414062 1563.3828125 600.958007812 1549.7109375 586.993164062 c 0 - 1536.234375 573.028320312 1520.609375 562.579101562 1503.03125 555.840820312 c 0 - 1485.453125 549.004882812 1468.265625 544.805664062 1451.2734375 543.243164062 c 1 - 1451.2734375 540.833984375 1451.2734375 538.424804688 1451.2734375 536.016601562 c 1 - 1468.265625 535.235351562 1486.8203125 531.231445312 1507.1328125 524.004882812 c 0 - 1527.640625 516.778320312 1546.5859375 505.352539062 1564.1640625 489.825195312 c 0 - 1581.7421875 474.200195312 1596.5859375 454.180664062 1608.5 429.766601562 c 0 - 1620.609375 405.352539062 1626.6640625 375.567382812 1626.6640625 340.411132812 c 0 - 1626.6640625 306.817382812 1621.1953125 275.176757812 1610.453125 245.586914062 c 0 - 1599.515625 215.997070312 1584.4765625 190.411132812 1565.3359375 168.829101562 c 0 - 1546.1953125 147.247070312 1523.34375 130.157226562 1496.9765625 117.754882812 c 0 - 1470.609375 105.352539062 1441.703125 99.2001953125 1410.6484375 99.2001953125 c 1 - 1274.64550781 99.2001953125 1138.64355469 99.2001953125 1002.640625 99.2001953125 c 1 - 1002.640625 378.399414062 1002.640625 657.598632812 1002.640625 936.797851562 c 1x4ba0 -1138.1875 215.606445312 m 1 - 1215.79199219 215.606445312 1293.39550781 215.606445312 1371 215.606445312 c 1 - 1406.15625 215.606445312 1433.6953125 224.786132812 1453.8125 243.243164062 c 0x53c0 - 1473.734375 261.602539062 1483.6953125 287.969726562 1483.6953125 322.442382812 c 1 - 1483.6953125 336.016601562 1483.6953125 349.590820312 1483.6953125 363.165039062 c 1x53a0 - 1483.6953125 397.637695312 1473.734375 424.004882812 1453.8125 442.364257812 c 0 - 1433.6953125 460.821289062 1406.15625 470.000976562 1371 470.000976562 c 1 - 1293.39550781 470.000976562 1215.79199219 470.000976562 1138.1875 470.000976562 c 1x53c0 - 1138.1875 385.202148438 1138.1875 300.404296875 1138.1875 215.606445312 c 1 -1138.1875 582.793945312 m 1 - 1208.17480469 582.793945312 1278.16113281 582.793945312 1348.1484375 582.793945312 c 1 - 1381.7421875 582.793945312 1407.71875 591.387695312 1426.078125 608.575195312 c 0 - 1444.6328125 625.762695312 1453.8125 650.372070312 1453.8125 682.403320312 c 1 - 1453.8125 695.196289062 1453.8125 707.989257812 1453.8125 720.782226562 c 1 - 1453.8125 752.813476562 1444.6328125 777.422851562 1426.078125 794.610351562 c 0 - 1407.71875 811.797851562 1381.7421875 820.391601562 1348.1484375 820.391601562 c 1 - 1278.16113281 820.391601562 1208.17480469 820.391601562 1138.1875 820.391601562 c 1x1bc0 - 1138.1875 741.192382812 1138.1875 661.993164062 1138.1875 582.793945312 c 1 -EndSplineSet -EndChar - -StartChar: uniE103 -Encoding: 57603 57603 4 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 171.516 96.9531<226.177 441.873 832.752 1027.57> 313.547 85.4688<1326.08 1544.91 1647.64 1738.89> 519.016 87.3438<857.168 1024.42> 754.172 98.9062<1514.99 1544.91> 767.609 96.9531<226.122 440.941> -VStem: 53.1094 115.156<330.807 708.111> 694.047 112.344<291.954 486.784> 1054.05 111.406<291.954 486.784> 1544.91 102.734<183 313.547 399.016 754.172> -DStem2: 1233.89 406.672 1326.08 399.016 0.512745 0.858541<40.6955 454.37> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 171.516 96.9531<226.177 441.873 832.752 1027.57> 313.547 85.4688<1326.08 1544.91 1647.64 1738.89> 519.016 87.3438<857.168 1024.42> 754.172 98.9062<1514.99 1544.91> 767.609 96.9531<226.122 440.941> -VStem: 53.1094 115.156<330.807 708.111> 694.047 112.344<291.954 486.784> 1054.05 111.406<291.954 486.784> 1544.91 102.734<183 313.547 399.016 754.172> -DStem2: 1233.89 406.672 1326.08 399.016 0.512745 0.858541<40.6955 454.37> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -334.359375 171.515625 m 0xef80 - 246.703125 171.515625 177.875 201.046875 127.953125 260.265625 c 0 - 78.03125 319.484375 53.109375 405.421875 53.109375 518.078125 c 0 - 53.109375 574.328125 59.515625 623.9375 72.328125 666.828125 c 0 - 85.0625 709.71875 103.65625 745.890625 127.953125 775.34375 c 0 - 152.328125 804.796875 181.859375 826.984375 216.78125 842.0625 c 0 - 251.625 857.0625 290.84375 864.5625 334.359375 864.5625 c 0 - 392.640625 864.5625 441.390625 851.828125 480.765625 826.203125 c 0 - 520.140625 800.578125 551 762.84375 573.421875 712.921875 c 1 - 543.03125 696.28125 512.640625 679.640625 482.25 663 c 1 - 470.6875 695.03125 452.953125 720.421875 428.96875 739.328125 c 0 - 404.90625 758.234375 373.421875 767.609375 334.359375 767.609375 c 0 - 282.5625 767.609375 241.859375 750.03125 212.484375 714.875 c 0 - 183.03125 679.640625 168.265625 630.96875 168.265625 568.9375 c 1 - 168.265625 535.004882812 168.265625 501.073242188 168.265625 467.140625 c 1 - 168.265625 405.109375 183.03125 356.4375 212.484375 321.203125 c 0 - 241.859375 286.046875 282.5625 268.46875 334.359375 268.46875 c 0 - 374.671875 268.46875 407.484375 278.859375 432.796875 299.640625 c 0 - 458.03125 320.421875 476.78125 347.140625 488.96875 379.796875 c 1 - 518.083007812 362.192382812 547.198242188 344.588867188 576.3125 326.984375 c 1 - 553.890625 278.390625 522.5625 240.265625 482.25 212.765625 c 0 - 441.859375 185.265625 392.640625 171.515625 334.359375 171.515625 c 0xef80 -930.21875 171.515625 m 0 - 893.109375 171.515625 859.984375 177.53125 830.84375 189.71875 c 0 - 801.703125 201.90625 777.09375 219.328125 756.9375 242.0625 c 0 - 736.78125 264.796875 721.234375 292.140625 710.375 324.09375 c 0 - 699.515625 356.125 694.046875 392.296875 694.046875 432.609375 c 0 - 694.046875 481.203125 701.390625 526.984375 716.15625 569.875 c 0 - 730.84375 612.765625 749.75 652.140625 772.796875 687.921875 c 0 - 795.84375 723.78125 821.546875 755.65625 850.0625 783.46875 c 0 - 878.5 811.28125 906.546875 834.484375 934.046875 853.078125 c 1 - 982.041992188 853.078125 1030.03613281 853.078125 1078.03125 853.078125 c 1xf780 - 1040.296875 825.578125 1006.390625 799.015625 976.3125 773.390625 c 0 - 946.234375 747.765625 919.984375 721.59375 897.5625 694.71875 c 0 - 875.140625 667.765625 856.46875 639.328125 841.390625 609.25 c 0 - 826.390625 579.171875 814.671875 546.203125 806.390625 510.34375 c 1 - 808.629882812 509.71875 810.870117188 509.09375 813.109375 508.46875 c 1 - 820.140625 521.90625 828.265625 534.484375 837.5625 546.359375 c 0 - 846.859375 558.234375 857.71875 568.625 870.21875 577.53125 c 0 - 882.71875 586.515625 896.9375 593.546875 912.953125 598.703125 c 0 - 928.96875 603.78125 947.484375 606.359375 968.578125 606.359375 c 0 - 996.78125 606.359375 1022.875 601.59375 1046.859375 591.984375 c 0 - 1070.84375 582.375 1091.625 568.46875 1109.28125 550.1875 c 0 - 1126.859375 531.984375 1140.609375 510.03125 1150.53125 484.40625 c 0 - 1160.453125 458.859375 1165.453125 430.34375 1165.453125 399.015625 c 0 - 1165.453125 365.109375 1159.828125 334.171875 1148.578125 306.359375 c 0 - 1137.40625 278.546875 1121.546875 254.71875 1101.078125 234.875 c 0 - 1080.609375 215.03125 1055.84375 199.484375 1026.703125 188.3125 c 0 - 997.5625 177.0625 965.453125 171.515625 930.21875 171.515625 c 0 -930.21875 259.796875 m 256 - 969.28125 259.796875 999.671875 270.1875 1021.390625 290.96875 c 0 - 1043.1875 311.828125 1054.046875 342.375 1054.046875 382.6875 c 1 - 1054.046875 387.166992188 1054.046875 391.645507812 1054.046875 396.125 c 1 - 1054.046875 436.4375 1043.1875 466.984375 1021.390625 487.765625 c 0 - 999.671875 508.625 969.28125 519.015625 930.21875 519.015625 c 256 - 891.15625 519.015625 860.765625 508.625 839.046875 487.765625 c 0 - 817.25 466.984375 806.390625 436.4375 806.390625 396.125 c 1 - 806.390625 391.645507812 806.390625 387.166992188 806.390625 382.6875 c 1 - 806.390625 342.375 817.25 311.828125 839.046875 290.96875 c 0 - 860.765625 270.1875 891.15625 259.796875 930.21875 259.796875 c 256 -1544.90625 183 m 1 - 1544.90625 226.515625 1544.90625 270.03125 1544.90625 313.546875 c 1 - 1441.234375 313.546875 1337.5625 313.546875 1233.890625 313.546875 c 1 - 1233.890625 344.588867188 1233.890625 375.629882812 1233.890625 406.671875 c 1 - 1324.46386719 555.473632812 1415.03613281 704.276367188 1505.609375 853.078125 c 1 - 1552.953125 853.078125 1600.296875 853.078125 1647.640625 853.078125 c 1 - 1647.640625 701.723632812 1647.640625 550.370117188 1647.640625 399.015625 c 1 - 1678.05761719 399.015625 1708.47363281 399.015625 1738.890625 399.015625 c 1 - 1738.890625 370.526367188 1738.890625 342.036132812 1738.890625 313.546875 c 1 - 1708.47363281 313.546875 1678.05761719 313.546875 1647.640625 313.546875 c 1 - 1647.640625 270.03125 1647.640625 226.515625 1647.640625 183 c 1 - 1613.39550781 183 1579.15136719 183 1544.90625 183 c 1 -1326.078125 399.015625 m 1 - 1399.02050781 399.015625 1471.96386719 399.015625 1544.90625 399.015625 c 1 - 1544.90625 517.401367188 1544.90625 635.786132812 1544.90625 754.171875 c 1 - 1542.66699219 754.171875 1540.42675781 754.171875 1538.1875 754.171875 c 1 - 1467.484375 635.786132812 1396.78125 517.401367188 1326.078125 399.015625 c 1 -EndSplineSet -EndChar - -StartChar: uniE104 -Encoding: 57604 57604 5 -Width: 1792 -Flags: W -HStem: -247.516 89.2969<837.797 1081.62 1317.8 1604.83> 23.1875 90.2344<277.797 486.972> 49.125 88.2812<1317.8 1576.94> 333.266 89.2969<277.797 486.972 1317.8 1604.83> 607.016 89.2188<189.574 399.743> 803.812 83.5156<721.625 898.188> 1143.66 144.922<1249.91 1277.31 1597.41 1625.22> 1196.39 92.1875<794.01 822.99> 1210.84 89.2188<218.757 416.322> -VStem: 95.6875 101.719<1044.03 1191.27> 176 101.797<-247.516 23.1875 113.422 332.328> 420.219 101.719<716.929 880.209> 506.234 108.516<132.763 312.99> 544.906 99.8438<618.5 718.344> 736 101.797<-158.219 422.562> 974.125 102.656<618.5 721.156> 1158.66 97.9688<618.5 1141.9> 1216 101.797<-158.219 49.125 137.406 333.266> 1618.5 97.9688<618.5 1143.75> -DStem2: 289.594 1016.94 271.312 920.922 0.978371 -0.206857<-75.1218 135.909> 544.906 618.5 644.75 618.5 0.286825 0.957983<28.6377 221.043 308.22 625.862> 875.219 1288.58 835.844 1098.5 0.288055 -0.957614<72.4214 390.859 477.766 670.167> 1278.66 1288.58 1261.47 1143.66 0.416776 -0.909009<124.572 396.023> 1442.88 921.859 1613.81 1145.53 0.379583 0.925158<0 271.817> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -176 -247.515625 m 1xdc2b20 - 176 -24.15625 176 199.203125 176 422.5625 c 1 - 264.333007812 422.5625 352.666992188 422.5625 441 422.5625 c 1 - 498.578125 422.5625 541.9375 405.453125 571.078125 371.234375 c 0 - 600.140625 336.9375 614.75 287.5625 614.75 222.875 c 256 - 614.75 158.265625 600.140625 108.8125 571.078125 74.59375 c 0 - 541.9375 40.296875 498.578125 23.1875 441 23.1875 c 1 - 386.598632812 23.1875 332.198242188 23.1875 277.796875 23.1875 c 1 - 277.796875 -67.046875 277.796875 -157.28125 277.796875 -247.515625 c 1 - 243.864257812 -247.515625 209.932617188 -247.515625 176 -247.515625 c 1xdc2b20 -277.796875 113.421875 m 1 - 329.307617188 113.421875 380.817382812 113.421875 432.328125 113.421875 c 1 - 456.625 113.421875 475.0625 119.671875 487.5625 132.171875 c 0 - 499.984375 144.671875 506.234375 164.671875 506.234375 192.171875 c 1 - 506.234375 212.640625 506.234375 233.109375 506.234375 253.578125 c 1 - 506.234375 281.15625 499.984375 301.15625 487.5625 313.578125 c 0 - 475.0625 326.078125 456.625 332.328125 432.328125 332.328125 c 1 - 380.817382812 332.328125 329.307617188 332.328125 277.796875 332.328125 c 1 - 277.796875 259.359375 277.796875 186.390625 277.796875 113.421875 c 1 -736 -247.515625 m 1 - 736 -24.15625 736 199.203125 736 422.5625 c 1 - 769.932617188 422.5625 803.864257812 422.5625 837.796875 422.5625 c 1 - 837.796875 228.96875 837.796875 35.375 837.796875 -158.21875 c 1 - 919.073242188 -158.21875 1000.34863281 -158.21875 1081.625 -158.21875 c 1 - 1081.625 -187.984375 1081.625 -217.75 1081.625 -247.515625 c 1 - 966.416992188 -247.515625 851.208007812 -247.515625 736 -247.515625 c 1 -1216 -247.515625 m 1xbc0360 - 1216 -24.15625 1216 199.203125 1216 422.5625 c 1 - 1345.609375 422.5625 1475.21875 422.5625 1604.828125 422.5625 c 1 - 1604.828125 392.796875 1604.828125 363.03125 1604.828125 333.265625 c 1 - 1509.15136719 333.265625 1413.47363281 333.265625 1317.796875 333.265625 c 1 - 1317.796875 267.979492188 1317.796875 202.692382812 1317.796875 137.40625 c 1 - 1404.17675781 137.40625 1490.55761719 137.40625 1576.9375 137.40625 c 1 - 1576.9375 107.979492188 1576.9375 78.5517578125 1576.9375 49.125 c 1 - 1490.55761719 49.125 1404.17675781 49.125 1317.796875 49.125 c 1 - 1317.796875 -19.9892578125 1317.796875 -89.1044921875 1317.796875 -158.21875 c 1 - 1413.47363281 -158.21875 1509.15136719 -158.21875 1604.828125 -158.21875 c 1 - 1604.828125 -187.984375 1604.828125 -217.75 1604.828125 -247.515625 c 1 - 1475.21875 -247.515625 1345.609375 -247.515625 1216 -247.515625 c 1xbc0360 -300.21875 607.015625 m 0 - 250.21875 607.015625 206.9375 616.390625 170.0625 635.296875 c 0 - 133.34375 654.203125 101.78125 681.546875 75.53125 717.40625 c 1 - 98.8642578125 738.838867188 122.198242188 760.270507812 145.53125 781.703125 c 1 - 165.375 754.203125 188.1875 733.03125 213.8125 718.34375 c 0 - 239.28125 703.65625 268.5 696.234375 301.15625 696.234375 c 0 - 380.53125 696.234375 420.21875 732.71875 420.21875 805.6875 c 0 - 420.21875 835.140625 413.03125 857.71875 398.96875 873.34375 c 0 - 384.90625 889.046875 360.6875 901.078125 326 909.359375 c 1 - 307.770507812 913.213867188 289.541992188 917.067382812 271.3125 920.921875 c 1 - 211.15625 934.359375 166.9375 955.921875 138.34375 985.6875 c 0 - 109.90625 1015.453125 95.6875 1057.25 95.6875 1111 c 0 - 95.6875 1173.03125 114.4375 1220.0625 151.78125 1252.09375 c 0 - 189.28125 1284.125 241.625 1300.0625 308.8125 1300.0625 c 0 - 356.78125 1300.0625 397.25 1291.9375 430.21875 1275.609375 c 0 - 463.1875 1259.28125 491.78125 1233.890625 516.15625 1199.28125 c 1 - 492.770507812 1178.8125 469.385742188 1158.34375 446 1137.875 c 1 - 428.8125 1162.171875 409.4375 1180.453125 388.03125 1192.5625 c 0 - 366.625 1204.75 339.4375 1210.84375 306.9375 1210.84375 c 0 - 270.375 1210.84375 243.03125 1203.265625 224.75 1188.265625 c 0 - 206.625 1173.1875 197.40625 1148.421875 197.40625 1113.890625 c 0 - 197.40625 1085.6875 204.59375 1064.4375 218.96875 1049.984375 c 0 - 233.5 1035.609375 256.9375 1024.59375 289.59375 1016.9375 c 1 - 307.823242188 1012.77050781 326.051757812 1008.60449219 344.28125 1004.4375 c 1 - 376.3125 997.40625 403.5 988.578125 425.84375 978.03125 c 0 - 448.34375 967.484375 466.78125 954.515625 481.15625 939.125 c 0 - 495.53125 923.8125 505.84375 905.6875 512.25 884.90625 c 0 - 518.65625 864.125 521.9375 839.90625 521.9375 812.40625 c 0x9cd320 - 521.9375 745.21875 502.5625 694.203125 463.8125 659.28125 c 0 - 425.0625 624.4375 370.53125 607.015625 300.21875 607.015625 c 0 -974.125 618.5 m 1 - 956.833007812 680.270507812 939.541992188 742.041992188 922.25 803.8125 c 1 - 847.041992188 803.8125 771.833007812 803.8125 696.625 803.8125 c 1 - 679.333007812 742.041992188 662.041992188 680.270507812 644.75 618.5 c 1 - 611.46875 618.5 578.1875 618.5 544.90625 618.5 c 1 - 611.78125 841.859375 678.65625 1065.21875 745.53125 1288.578125 c 1 - 788.760742188 1288.578125 831.989257812 1288.578125 875.21875 1288.578125 c 1x9d0720 - 942.40625 1065.21875 1009.59375 841.859375 1076.78125 618.5 c 1 - 1042.5625 618.5 1008.34375 618.5 974.125 618.5 c 1 -835.84375 1098.5 m 1 - 828.8125 1131.12988281 821.78125 1163.76074219 814.75 1196.390625 c 1 - 810.583007812 1196.390625 806.416992188 1196.390625 802.25 1196.390625 c 1 - 795.21875 1163.76074219 788.1875 1131.12988281 781.15625 1098.5 c 1 - 761.3125 1028.109375 741.46875 957.71875 721.625 887.328125 c 1 - 780.479492188 887.328125 839.333007812 887.328125 898.1875 887.328125 c 1 - 877.40625 957.71875 856.625 1028.109375 835.84375 1098.5 c 1 -1618.5 1031.3125 m 1 - 1620.73925781 1069.38574219 1622.97949219 1107.45800781 1625.21875 1145.53125 c 1 - 1621.41699219 1145.53125 1617.61425781 1145.53125 1613.8125 1145.53125 c 1 - 1598.44824219 1108.08300781 1583.08300781 1070.63574219 1567.71875 1033.1875 c 1 - 1524.17675781 942.328125 1480.63574219 851.46875 1437.09375 760.609375 c 1 - 1393.91699219 851.46875 1350.73925781 942.328125 1307.5625 1033.1875 c 1 - 1292.19824219 1070.01074219 1276.83300781 1106.83300781 1261.46875 1143.65625 c 1 - 1257.61425781 1143.65625 1253.76074219 1143.65625 1249.90625 1143.65625 c 1x9e03a0 - 1252.14550781 1106.20800781 1254.38574219 1068.76074219 1256.625 1031.3125 c 1 - 1256.625 893.708007812 1256.625 756.104492188 1256.625 618.5 c 1 - 1223.96875 618.5 1191.3125 618.5 1158.65625 618.5 c 1 - 1158.65625 841.859375 1158.65625 1065.21875 1158.65625 1288.578125 c 1 - 1198.65625 1288.578125 1238.65625 1288.578125 1278.65625 1288.578125 c 1x9d03a0 - 1314.85449219 1210.50488281 1351.05175781 1132.43261719 1387.25 1054.359375 c 1 - 1402.92675781 1010.19238281 1418.60449219 966.026367188 1434.28125 921.859375 c 1 - 1437.14550781 921.859375 1440.01074219 921.859375 1442.875 921.859375 c 1 - 1458.55175781 966.026367188 1474.22949219 1010.19238281 1489.90625 1054.359375 c 1 - 1525.73925781 1132.43261719 1561.57324219 1210.50488281 1597.40625 1288.578125 c 1x9e03a0 - 1637.09375 1288.578125 1676.78125 1288.578125 1716.46875 1288.578125 c 1 - 1716.46875 1065.21875 1716.46875 841.859375 1716.46875 618.5 c 1 - 1683.8125 618.5 1651.15625 618.5 1618.5 618.5 c 1 - 1618.5 756.104492188 1618.5 893.708007812 1618.5 1031.3125 c 1 -EndSplineSet -EndChar - -StartChar: uniE105 -Encoding: 57605 57605 6 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 183 96.0156<814.669 1050.52 1429.91 1750.53> 449.875 95.0781<149.906 386.215> 474.875 95.9375<1429.91 1720.84> 757.062 96.0156<149.906 386.215 813.763 1048.56 1429.91 1750.53> -VStem: 41.4688 108.438<183 449.875 544.953 758.078> 410.062 114.219<567.194 735.759> 651.625 115.156<330.807 708.111> 1321.47 108.438<279.016 474.875 570.812 757.062> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 183 96.0156<814.669 1050.52 1429.91 1750.53> 449.875 95.0781<149.906 386.215> 474.875 95.9375<1429.91 1720.84> 757.062 96.0156<149.906 386.215 813.763 1048.56 1429.91 1750.53> -VStem: 41.4688 108.438<183 449.875 544.953 758.078> 410.062 114.219<567.194 735.759> 651.625 115.156<330.807 708.111> 1321.47 108.438<279.016 474.875 570.812 757.062> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -41.46875 183 m 1xdf - 41.46875 406.359375 41.46875 629.71875 41.46875 853.078125 c 1 - 137.458007812 853.078125 233.448242188 853.078125 329.4375 853.078125 c 1 - 391.46875 853.078125 439.4375 834.875 473.34375 798.390625 c 0 - 507.40625 761.90625 524.28125 712.921875 524.28125 651.515625 c 256 - 524.28125 590.03125 507.40625 541.046875 473.34375 504.5625 c 0 - 439.4375 468.15625 391.46875 449.875 329.4375 449.875 c 1 - 269.59375 449.875 209.75 449.875 149.90625 449.875 c 1 - 149.90625 360.916992188 149.90625 271.958007812 149.90625 183 c 1 - 113.760742188 183 77.6142578125 183 41.46875 183 c 1xdf -149.90625 544.953125 m 1 - 207.510742188 544.953125 265.114257812 544.953125 322.71875 544.953125 c 1 - 350.21875 544.953125 371.625 552.140625 386.9375 566.515625 c 0 - 402.40625 580.890625 410.0625 601.59375 410.0625 628.46875 c 1 - 410.0625 643.807617188 410.0625 659.145507812 410.0625 674.484375 c 1 - 410.0625 701.4375 402.40625 722.0625 386.9375 736.4375 c 0 - 371.625 750.8125 350.21875 758.078125 322.71875 758.078125 c 1 - 265.114257812 758.078125 207.510742188 758.078125 149.90625 758.078125 c 1 - 149.90625 687.036132812 149.90625 615.995117188 149.90625 544.953125 c 1 -932.875 171.515625 m 0 - 845.21875 171.515625 776.46875 201.046875 726.46875 260.265625 c 0 - 676.625 319.484375 651.625 405.421875 651.625 518.078125 c 0 - 651.625 574.328125 658.03125 623.9375 670.84375 666.828125 c 0 - 683.65625 709.71875 702.25 745.890625 726.46875 775.34375 c 0 - 750.84375 804.796875 780.375 826.984375 815.375 842.0625 c 0 - 850.21875 857.0625 889.4375 864.5625 932.875 864.5625 c 0 - 991.15625 864.5625 1039.90625 851.828125 1079.28125 826.203125 c 0 - 1118.65625 800.578125 1149.59375 762.84375 1171.9375 712.921875 c 1 - 1141.57324219 696.28125 1111.20800781 679.640625 1080.84375 663 c 1 - 1069.28125 695.03125 1051.46875 720.421875 1027.5625 739.328125 c 0 - 1003.5 758.234375 971.9375 767.609375 932.875 767.609375 c 0 - 881.15625 767.609375 840.375 750.03125 811 714.875 c 0 - 781.625 679.640625 766.78125 630.96875 766.78125 568.9375 c 1 - 766.78125 535.004882812 766.78125 501.073242188 766.78125 467.140625 c 1 - 766.78125 405.109375 781.625 356.4375 811 321.203125 c 0 - 840.375 286.046875 881.15625 268.46875 932.875 268.46875 c 0 - 973.1875 268.46875 1006 278.859375 1031.3125 299.640625 c 0 - 1056.625 320.421875 1075.375 347.140625 1087.5625 379.796875 c 1 - 1116.67675781 362.192382812 1145.79199219 344.588867188 1174.90625 326.984375 c 1 - 1152.40625 278.390625 1121.15625 240.265625 1080.84375 212.765625 c 0 - 1040.375 185.265625 991.15625 171.515625 932.875 171.515625 c 0 -1321.46875 183 m 1 - 1321.46875 406.359375 1321.46875 629.71875 1321.46875 853.078125 c 1 - 1464.48925781 853.078125 1607.51074219 853.078125 1750.53125 853.078125 c 1 - 1750.53125 821.073242188 1750.53125 789.067382812 1750.53125 757.0625 c 1 - 1643.65625 757.0625 1536.78125 757.0625 1429.90625 757.0625 c 1 - 1429.90625 694.979492188 1429.90625 632.895507812 1429.90625 570.8125 c 1 - 1526.88574219 570.8125 1623.86425781 570.8125 1720.84375 570.8125 c 1 - 1720.84375 538.833007812 1720.84375 506.854492188 1720.84375 474.875 c 1 - 1623.86425781 474.875 1526.88574219 474.875 1429.90625 474.875 c 1xbf - 1429.90625 409.588867188 1429.90625 344.301757812 1429.90625 279.015625 c 1 - 1536.78125 279.015625 1643.65625 279.015625 1750.53125 279.015625 c 1 - 1750.53125 247.010742188 1750.53125 215.004882812 1750.53125 183 c 1 - 1607.51074219 183 1464.48925781 183 1321.46875 183 c 1 -EndSplineSet -EndChar - -StartChar: uniE106 -Encoding: 57606 57606 7 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 325.958 116.406<389.164 636.43> 811.993 124.805<499.082 527.573> -VStem: 145.609 137.891<99.2002 237.091> 745.609 141.602<99.2002 240.802> 1220.41 135.547<99.2002 492.633> -DStem2: 145.609 99.2002 283.5 99.2002 0.303392 0.952866<41.8349 280.126 400.882 789.887> 601.664 936.798 516.312 811.993 0.306233 -0.951957<92.6712 481.326 602.427 841.437> 1087.21 936.798 932.328 936.798 0.479431 -0.877579<0 425.309> 1294.83 563.556 1355.96 431.622 0.477305 0.878738<0 424.748> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 325.958 116.406<389.164 636.43> 811.993 124.805<499.082 527.573> -VStem: 145.609 137.891<99.2002 237.091> 745.609 141.602<99.2002 240.802> 1220.41 135.547<99.2002 492.633> -DStem2: 145.609 99.2002 283.5 99.2002 0.303392 0.952866<41.8349 280.126 400.882 789.887> 601.664 936.798 516.312 811.993 0.306233 -0.951957<92.6712 481.326 602.427 841.437> 1087.21 936.798 932.328 936.798 0.479431 -0.877579<0 425.309> 1294.83 563.556 1355.96 431.622 0.477305 0.878738<0 424.748> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -745.609375 99.2001953125 m 1 - 720.4140625 174.786132812 695.21875 250.372070312 670.0234375 325.958007812 c 1 - 565.596679688 325.958007812 461.168945312 325.958007812 356.7421875 325.958007812 c 1 - 332.328125 250.372070312 307.9140625 174.786132812 283.5 99.2001953125 c 1 - 237.536132812 99.2001953125 191.573242188 99.2001953125 145.609375 99.2001953125 c 1 - 240.791992188 378.399414062 335.973632812 657.598632812 431.15625 936.797851562 c 1 - 487.9921875 936.797851562 544.828125 936.797851562 601.6640625 936.797851562 c 1 - 696.846679688 657.598632812 792.028320312 378.399414062 887.2109375 99.2001953125 c 1 - 840.010742188 99.2001953125 792.809570312 99.2001953125 745.609375 99.2001953125 c 1 -516.3125 811.993164062 m 1 - 514.359375 811.993164062 512.40625 811.993164062 510.453125 811.993164062 c 1 - 470.0234375 688.783203125 429.59375 565.573242188 389.1640625 442.364257812 c 1 - 471.5859375 442.364257812 554.0078125 442.364257812 636.4296875 442.364257812 c 1 - 596.390625 565.573242188 556.3515625 688.783203125 516.3125 811.993164062 c 1 -1220.4140625 99.2001953125 m 1 - 1220.4140625 209.193359375 1220.4140625 319.186523438 1220.4140625 429.180664062 c 1 - 1124.38574219 598.385742188 1028.35644531 767.591796875 932.328125 936.797851562 c 1 - 983.956054688 936.797851562 1035.58300781 936.797851562 1087.2109375 936.797851562 c 1 - 1155.1796875 812.383789062 1223.1484375 687.969726562 1291.1171875 563.555664062 c 1 - 1292.35449219 563.555664062 1293.59082031 563.555664062 1294.828125 563.555664062 c 1 - 1362.40625 687.969726562 1429.984375 812.383789062 1497.5625 936.797851562 c 1 - 1547.171875 936.797851562 1596.78125 936.797851562 1646.390625 936.797851562 c 1 - 1549.58105469 768.405273438 1452.77050781 600.013671875 1355.9609375 431.622070312 c 1 - 1355.9609375 320.814453125 1355.9609375 210.006835938 1355.9609375 99.2001953125 c 1 - 1310.77832031 99.2001953125 1265.59667969 99.2001953125 1220.4140625 99.2001953125 c 1 -EndSplineSet -EndChar - -StartChar: uniE107 -Encoding: 57607 57607 8 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -253.33 91.1719<486.344 688.342 1095.48 1270.78> 60.5762 92.1094<518.508 677.882> 348.545 91.1719<497.902 685.553 1095.48 1270.78> 612.686 87.3438<530.171 727.317> 870.889 87.3438<1092.63 1259.92> 930.42 83.5156<544.742 712.82> 1218.39 87.3438<537.628 719.903 1093.28 1280.94> -VStem: 388.742 113.281<728.719 901.73> 408.898 105.625<1038.68 1193.65> 708.586 114.219<179.923 323.321> 722.023 112.344<-131.94 32.8528> 743.039 105.547<1038.68 1193.65> 755.461 113.281<728.719 901.73> 940.305 115.156<-121.3 307.598 991.115 1184.56> 1310.85 115.156<-122.103 308.491 990.464 1185.29> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -253.33 91.1719<486.344 688.342 1095.48 1270.78> 60.5762 92.1094<518.508 677.882> 348.545 91.1719<497.902 685.553 1095.48 1270.78> 612.686 87.3438<530.171 727.317> 870.889 87.3438<1092.63 1259.92> 930.42 83.5156<544.742 712.82> 1218.39 87.3438<537.628 719.903 1093.28 1280.94> -VStem: 388.742 113.281<728.719 901.73> 408.898 105.625<1038.68 1193.65> 708.586 114.219<179.923 323.321> 722.023 112.344<-131.94 32.8528> 743.039 105.547<1038.68 1193.65> 755.461 113.281<728.719 901.73> 940.305 115.156<-121.3 307.598 991.115 1184.56> 1310.85 115.156<-122.103 308.491 990.464 1185.29> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -586.6328125 152.685546875 m 1xf226 - 628.2734375 152.685546875 658.9765625 161.513671875 678.8203125 179.091796875 c 0 - 698.6640625 196.748046875 708.5859375 219.248046875 708.5859375 246.826171875 c 1 - 708.5859375 249.065429688 708.5859375 251.305664062 708.5859375 253.544921875 c 1 - 708.5859375 284.248046875 698.9765625 307.763671875 679.7578125 324.091796875 c 0 - 660.6171875 340.419921875 634.6796875 348.544921875 602.0234375 348.544921875 c 0 - 569.9921875 348.544921875 542.8046875 341.357421875 520.4609375 326.982421875 c 0 - 498.0390625 312.529296875 479.1328125 292.529296875 463.8203125 266.982421875 c 1 - 439.809570312 287.763671875 415.799804688 308.544921875 391.7890625 329.326171875 c 1 - 402.0234375 344.091796875 413.5859375 358.154296875 426.3203125 371.591796875 c 0 - 439.1328125 385.029296875 454.2109375 396.748046875 471.4765625 406.669921875 c 0 - 488.7421875 416.591796875 508.2734375 424.560546875 529.9921875 430.654296875 c 0 - 551.7890625 436.748046875 576.7109375 439.716796875 604.9140625 439.716796875 c 0 - 636.2421875 439.716796875 665.3828125 435.888671875 692.2578125 428.232421875 c 0 - 719.1328125 420.576171875 742.1796875 409.169921875 761.3984375 394.169921875 c 0 - 780.6171875 379.091796875 795.6171875 360.888671875 806.4765625 339.404296875 c 0 - 817.4140625 317.998046875 822.8046875 293.857421875 822.8046875 266.982421875 c 0xf246 - 822.8046875 245.810546875 819.4453125 226.669921875 812.7265625 209.326171875 c 0 - 806.0078125 192.060546875 796.7109375 176.904296875 784.9140625 163.779296875 c 0 - 773.0390625 150.654296875 759.2890625 139.951171875 743.6640625 131.591796875 c 0 - 727.9609375 123.310546875 711.4765625 117.216796875 694.2109375 113.388671875 c 1 - 694.2109375 111.774414062 694.2109375 110.159179688 694.2109375 108.544921875 c 1 - 713.3515625 104.716796875 731.4765625 98.466796875 748.4296875 89.873046875 c 0 - 765.3828125 81.201171875 780.3046875 70.029296875 793.0390625 56.201171875 c 0 - 805.8515625 42.451171875 815.9296875 26.123046875 823.2734375 7.294921875 c 0 - 830.6953125 -11.611328125 834.3671875 -33.173828125 834.3671875 -57.548828125 c 0 - 834.3671875 -87.001953125 828.5859375 -113.720703125 817.1015625 -137.705078125 c 0 - 805.5390625 -161.689453125 789.3671875 -182.314453125 768.5859375 -199.580078125 c 0 - 747.8046875 -216.923828125 722.6484375 -230.126953125 693.1953125 -239.423828125 c 0 - 663.8203125 -248.720703125 631.1640625 -253.330078125 595.3046875 -253.330078125 c 0 - 563.9765625 -253.330078125 536.3984375 -249.970703125 512.7265625 -243.251953125 c 0 - 489.0546875 -236.533203125 468.1171875 -227.626953125 449.8359375 -216.376953125 c 0 - 431.6328125 -205.205078125 415.6171875 -192.392578125 401.8671875 -178.017578125 c 0 - 388.1171875 -163.642578125 376.0859375 -148.720703125 365.8515625 -133.330078125 c 1 - 392.4140625 -112.548828125 418.9765625 -91.767578125 445.5390625 -70.986328125 c 1 - 453.8984375 -84.423828125 462.6484375 -96.689453125 471.9453125 -107.939453125 c 0 - 481.2421875 -119.111328125 491.7890625 -128.720703125 503.6640625 -136.689453125 c 0 - 515.4609375 -144.736328125 528.8984375 -150.986328125 543.9765625 -155.439453125 c 0 - 558.9765625 -159.892578125 576.0859375 -162.158203125 595.3046875 -162.158203125 c 0 - 636.2421875 -162.158203125 667.6484375 -152.392578125 689.3671875 -132.861328125 c 0 - 711.1640625 -113.330078125 722.0234375 -86.298828125 722.0234375 -51.767578125 c 1 - 722.0234375 -49.5283203125 722.0234375 -47.2880859375 722.0234375 -45.048828125 c 1 - 722.0234375 -10.517578125 710.5390625 15.732421875 687.4921875 33.701171875 c 0 - 664.4453125 51.591796875 631.7890625 60.576171875 589.5234375 60.576171875 c 1 - 565.8515625 60.576171875 542.1796875 60.576171875 518.5078125 60.576171875 c 1 - 518.5078125 91.279296875 518.5078125 121.982421875 518.5078125 152.685546875 c 1 - 541.215820312 152.685546875 563.924804688 152.685546875 586.6328125 152.685546875 c 1xf226 -1183.1171875 -253.330078125 m 0 - 1141.5546875 -253.330078125 1105.3828125 -245.517578125 1074.6796875 -229.814453125 c 0 - 1043.9765625 -214.189453125 1018.6640625 -191.611328125 998.8203125 -162.158203125 c 0 - 978.9765625 -132.705078125 964.2890625 -96.533203125 954.6796875 -53.720703125 c 0 - 945.0703125 -10.830078125 940.3046875 38.154296875 940.3046875 93.232421875 c 0 - 940.3046875 147.607421875 945.0703125 196.357421875 954.6796875 239.560546875 c 0 - 964.2890625 282.763671875 978.9765625 319.091796875 998.8203125 348.544921875 c 0 - 1018.6640625 377.998046875 1043.9765625 400.576171875 1074.6796875 416.201171875 c 0 - 1105.3828125 431.904296875 1141.5546875 439.716796875 1183.1171875 439.716796875 c 0 - 1266.3203125 439.716796875 1327.6484375 409.326171875 1367.0234375 348.544921875 c 0 - 1406.3203125 287.763671875 1426.0078125 202.607421875 1426.0078125 93.232421875 c 256 - 1426.0078125 -16.220703125 1406.3203125 -101.376953125 1367.0234375 -162.158203125 c 0 - 1327.6484375 -222.939453125 1266.3203125 -253.330078125 1183.1171875 -253.330078125 c 0 -1183.1171875 -161.220703125 m 256 - 1206.1640625 -161.220703125 1225.8515625 -156.533203125 1242.1796875 -147.314453125 c 0 - 1258.5078125 -138.017578125 1271.7890625 -124.736328125 1282.0234375 -107.470703125 c 0 - 1292.2578125 -90.126953125 1299.6015625 -69.501953125 1304.1328125 -45.517578125 c 0 - 1308.5859375 -21.533203125 1310.8515625 5.185546875 1310.8515625 34.638671875 c 1 - 1310.8515625 73.6748046875 1310.8515625 112.711914062 1310.8515625 151.748046875 c 1 - 1310.8515625 181.201171875 1308.5859375 207.919921875 1304.1328125 231.904296875 c 0 - 1299.6015625 255.888671875 1292.2578125 276.591796875 1282.0234375 293.857421875 c 0 - 1271.7890625 311.123046875 1258.5078125 324.404296875 1242.1796875 333.701171875 c 0 - 1225.8515625 342.919921875 1206.1640625 347.607421875 1183.1171875 347.607421875 c 256 - 1160.0703125 347.607421875 1140.4609375 342.919921875 1124.1328125 333.701171875 c 0 - 1107.8046875 324.404296875 1094.5234375 311.123046875 1084.2890625 293.857421875 c 0 - 1074.0546875 276.591796875 1066.6328125 255.888671875 1062.1796875 231.904296875 c 0 - 1057.7265625 207.919921875 1055.4609375 181.201171875 1055.4609375 151.748046875 c 1 - 1055.4609375 112.711914062 1055.4609375 73.6748046875 1055.4609375 34.638671875 c 1 - 1055.4609375 5.185546875 1057.7265625 -21.533203125 1062.1796875 -45.517578125 c 0 - 1066.6328125 -69.501953125 1074.0546875 -90.126953125 1084.2890625 -107.470703125 c 0 - 1094.5234375 -124.736328125 1107.8046875 -138.017578125 1124.1328125 -147.314453125 c 0 - 1140.4609375 -156.533203125 1160.0703125 -161.220703125 1183.1171875 -161.220703125 c 256 -628.7421875 612.685546875 m 256 - 589.7578125 612.685546875 555.3046875 617.607421875 525.5390625 627.529296875 c 0 - 495.8515625 637.451171875 470.8515625 651.044921875 450.6953125 668.310546875 c 0 - 430.5390625 685.576171875 415.1484375 706.123046875 404.6015625 729.794921875 c 0 - 394.0546875 753.466796875 388.7421875 779.013671875 388.7421875 806.591796875 c 0xf30e - 388.7421875 851.357421875 401.0859375 887.373046875 425.6953125 914.560546875 c 0 - 450.3828125 941.748046875 482.8828125 960.810546875 523.1953125 971.669921875 c 1 - 523.1953125 974.248046875 523.1953125 976.826171875 523.1953125 979.404296875 c 1 - 488.5859375 991.513671875 460.9296875 1010.73242188 440.1484375 1036.98242188 c 0 - 419.3671875 1063.23242188 408.8984375 1095.49804688 408.8984375 1133.93554688 c 0 - 408.8984375 1159.56054688 413.8984375 1182.91992188 423.8203125 1204.01367188 c 0 - 433.7421875 1225.10742188 447.9609375 1243.23242188 466.5546875 1258.23242188 c 0 - 485.0703125 1273.31054688 508.1171875 1284.95117188 535.6171875 1293.31054688 c 0 - 563.1953125 1301.59179688 594.2109375 1305.73242188 628.7421875 1305.73242188 c 256 - 663.3515625 1305.73242188 694.3671875 1301.59179688 721.8671875 1293.31054688 c 0 - 749.4453125 1284.95117188 772.4921875 1273.31054688 791.0078125 1258.23242188 c 0 - 809.6015625 1243.23242188 823.8203125 1225.10742188 833.7421875 1204.01367188 c 0 - 843.6640625 1182.91992188 848.5859375 1159.56054688 848.5859375 1133.93554688 c 0xf296 - 848.5859375 1095.49804688 838.1953125 1063.23242188 817.4140625 1036.98242188 c 0 - 796.6328125 1010.73242188 768.8984375 991.513671875 734.3671875 979.404296875 c 1 - 734.3671875 976.826171875 734.3671875 974.248046875 734.3671875 971.669921875 c 1 - 774.6796875 960.810546875 807.1796875 941.748046875 831.7890625 914.560546875 c 0 - 856.4765625 887.373046875 868.7421875 851.357421875 868.7421875 806.591796875 c 0xf20e - 868.7421875 779.013671875 863.5078125 753.466796875 852.9609375 729.794921875 c 0 - 842.3359375 706.123046875 827.0234375 685.576171875 806.8671875 668.310546875 c 0 - 786.7109375 651.044921875 761.7109375 637.451171875 731.9453125 627.529296875 c 0 - 702.1796875 617.607421875 667.8046875 612.685546875 628.7421875 612.685546875 c 256 -628.7421875 700.029296875 m 256 - 669.0546875 700.029296875 700.3046875 709.326171875 722.3359375 727.841796875 c 0 - 744.4453125 746.435546875 755.4609375 772.294921875 755.4609375 805.576171875 c 1 - 755.4609375 811.982421875 755.4609375 818.388671875 755.4609375 824.794921875 c 1 - 755.4609375 858.076171875 744.4453125 884.013671875 722.3359375 902.607421875 c 0 - 700.3046875 921.123046875 669.0546875 930.419921875 628.7421875 930.419921875 c 256xf70e - 588.4296875 930.419921875 557.2578125 921.123046875 535.1484375 902.607421875 c 0 - 513.1171875 884.013671875 502.0234375 858.076171875 502.0234375 824.794921875 c 1 - 502.0234375 818.388671875 502.0234375 811.982421875 502.0234375 805.576171875 c 1 - 502.0234375 772.294921875 513.1171875 746.435546875 535.1484375 727.841796875 c 0 - 557.2578125 709.326171875 588.4296875 700.029296875 628.7421875 700.029296875 c 256 -628.7421875 1013.93554688 m 256 - 665.9296875 1013.93554688 694.2109375 1021.90429688 713.7421875 1037.91992188 c 0 - 733.2734375 1053.93554688 743.0390625 1077.29492188 743.0390625 1107.99804688 c 1 - 743.0390625 1113.44042969 743.0390625 1118.88378906 743.0390625 1124.32617188 c 1 - 743.0390625 1155.02929688 733.2734375 1178.38867188 713.7421875 1194.40429688 c 0 - 694.2109375 1210.41992188 665.9296875 1218.38867188 628.7421875 1218.38867188 c 256 - 591.6328125 1218.38867188 563.3515625 1210.41992188 543.8203125 1194.40429688 c 0 - 524.2890625 1178.38867188 514.5234375 1155.02929688 514.5234375 1124.32617188 c 1 - 514.5234375 1118.88378906 514.5234375 1113.44042969 514.5234375 1107.99804688 c 1xf696 - 514.5234375 1077.29492188 524.2890625 1053.93554688 543.8203125 1037.91992188 c 0 - 563.3515625 1021.90429688 591.6328125 1013.93554688 628.7421875 1013.93554688 c 256 -1423.0390625 1044.63867188 m 0 - 1423.0390625 996.044921875 1415.6171875 950.263671875 1400.9296875 907.373046875 c 0 - 1386.2421875 864.482421875 1367.3359375 825.107421875 1344.2890625 789.326171875 c 0 - 1321.2421875 753.466796875 1295.4609375 721.435546875 1267.0234375 693.310546875 c 0 - 1238.5078125 665.107421875 1210.5390625 642.060546875 1183.0390625 624.169921875 c 1 - 1135.01855469 624.169921875 1086.99707031 624.169921875 1038.9765625 624.169921875 c 1 - 1076.7890625 651.669921875 1110.6953125 678.232421875 1140.7734375 703.857421875 c 0 - 1170.8515625 729.482421875 1197.1015625 755.654296875 1219.5234375 782.607421875 c 0 - 1241.8671875 809.482421875 1260.6171875 837.919921875 1275.6171875 867.998046875 c 0 - 1290.6953125 898.076171875 1302.3359375 931.044921875 1310.6953125 966.904296875 c 1 - 1308.45605469 967.529296875 1306.21582031 968.154296875 1303.9765625 968.779296875 c 1 - 1296.9453125 955.341796875 1288.7421875 942.763671875 1279.5234375 930.888671875 c 0 - 1270.2265625 919.013671875 1259.3671875 908.623046875 1246.8671875 899.716796875 c 0 - 1234.3671875 890.732421875 1220.1484375 883.701171875 1204.1328125 878.544921875 c 0 - 1188.1171875 873.466796875 1169.6015625 870.888671875 1148.4296875 870.888671875 c 0xfa06 - 1120.3046875 870.888671875 1094.2109375 875.654296875 1070.2265625 885.263671875 c 0 - 1046.2421875 894.873046875 1025.3828125 908.779296875 1007.8046875 927.060546875 c 0 - 990.2265625 945.263671875 976.4765625 967.060546875 966.5546875 992.294921875 c 0 - 956.6328125 1017.60742188 951.6328125 1046.27929688 951.6328125 1078.23242188 c 0 - 951.6328125 1111.51367188 957.2578125 1142.21679688 968.4296875 1170.41992188 c 0 - 979.6796875 1198.54492188 995.4609375 1222.60742188 1016.0078125 1242.37304688 c 0 - 1036.4765625 1262.21679688 1061.0859375 1277.76367188 1089.9140625 1288.93554688 c 0 - 1118.6640625 1300.18554688 1151.0078125 1305.73242188 1186.8671875 1305.73242188 c 0 - 1223.9765625 1305.73242188 1257.1015625 1299.71679688 1286.2421875 1287.52929688 c 0 - 1315.3046875 1275.34179688 1339.9921875 1257.91992188 1360.1484375 1235.18554688 c 0 - 1380.3046875 1212.45117188 1395.8515625 1185.10742188 1406.7109375 1153.15429688 c 0 - 1417.5703125 1121.12304688 1423.0390625 1084.95117188 1423.0390625 1044.63867188 c 0 -1186.8671875 958.232421875 m 256 - 1225.9296875 958.232421875 1256.3203125 968.623046875 1278.0390625 989.482421875 c 0 - 1299.8359375 1010.26367188 1310.6953125 1040.81054688 1310.6953125 1081.12304688 c 1 - 1310.6953125 1085.60253906 1310.6953125 1090.08105469 1310.6953125 1094.56054688 c 1 - 1310.6953125 1134.87304688 1299.8359375 1165.41992188 1278.0390625 1186.27929688 c 0 - 1256.3203125 1207.06054688 1225.9296875 1217.45117188 1186.8671875 1217.45117188 c 256 - 1147.8046875 1217.45117188 1117.4140625 1207.06054688 1095.6171875 1186.27929688 c 0 - 1073.8984375 1165.41992188 1063.0390625 1134.87304688 1063.0390625 1094.56054688 c 1 - 1063.0390625 1090.08105469 1063.0390625 1085.60253906 1063.0390625 1081.12304688 c 1 - 1063.0390625 1040.81054688 1073.8984375 1010.26367188 1095.6171875 989.482421875 c 0 - 1117.4140625 968.623046875 1147.8046875 958.232421875 1186.8671875 958.232421875 c 256 -EndSplineSet -EndChar - -StartChar: uniE108 -Encoding: 57608 57608 9 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 183 88.2812<711 802.25 910.688 1002.88> 364.406 93.125<1273.34 1471> 757.062 96.0156<120.375 320.062 428.5 628.188 711 802.25 910.688 1002.88 1359.62 1385.56> -VStem: 320.062 108.438<183 757.062> 711 291.875<183 271.281 764.797 853.078> 1078.34 110.469<183 293.469> 1558.34 113.281<183 296.281> -DStem2: 1078.34 183 1188.81 183 0.303155 0.952941<33.4892 224.122 320.727 631.883> 1443.19 853.078 1375.06 753.234 0.305997 -0.952033<74.2085 385.084> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 183 88.2812<711 802.25 910.688 1002.88> 364.406 93.125<1273.34 1471> 757.062 96.0156<120.375 320.062 428.5 628.188 711 802.25 910.688 1002.88 1359.62 1385.56> -VStem: 320.062 108.438<183 757.062> 711 291.875<183 271.281 764.797 853.078> 1078.34 110.469<183 293.469> 1558.34 113.281<183 296.281> -DStem2: 1078.34 183 1188.81 183 0.303155 0.952941<33.4892 224.122 320.727 631.883> 1443.19 853.078 1375.06 753.234 0.305997 -0.952033<74.2085 385.084> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -428.5 757.0625 m 1 - 428.5 565.708007812 428.5 374.354492188 428.5 183 c 1 - 392.354492188 183 356.208007812 183 320.0625 183 c 1 - 320.0625 374.354492188 320.0625 565.708007812 320.0625 757.0625 c 1 - 253.5 757.0625 186.9375 757.0625 120.375 757.0625 c 1 - 120.375 789.067382812 120.375 821.073242188 120.375 853.078125 c 1 - 289.645507812 853.078125 458.916992188 853.078125 628.1875 853.078125 c 1 - 628.1875 821.073242188 628.1875 789.067382812 628.1875 757.0625 c 1 - 561.625 757.0625 495.0625 757.0625 428.5 757.0625 c 1 -711 183 m 1 - 711 212.426757812 711 241.854492188 711 271.28125 c 1 - 741.416992188 271.28125 771.833007812 271.28125 802.25 271.28125 c 1 - 802.25 435.786132812 802.25 600.291992188 802.25 764.796875 c 1 - 771.833007812 764.796875 741.416992188 764.796875 711 764.796875 c 1 - 711 794.223632812 711 823.651367188 711 853.078125 c 1 - 808.291992188 853.078125 905.583007812 853.078125 1002.875 853.078125 c 1 - 1002.875 823.651367188 1002.875 794.223632812 1002.875 764.796875 c 1 - 972.145507812 764.796875 941.416992188 764.796875 910.6875 764.796875 c 1 - 910.6875 600.291992188 910.6875 435.786132812 910.6875 271.28125 c 1 - 941.416992188 271.28125 972.145507812 271.28125 1002.875 271.28125 c 1 - 1002.875 241.854492188 1002.875 212.426757812 1002.875 183 c 1 - 905.583007812 183 808.291992188 183 711 183 c 1 -1558.34375 183 m 1 - 1538.1875 243.46875 1518.03125 303.9375 1497.875 364.40625 c 1 - 1414.38574219 364.40625 1330.89550781 364.40625 1247.40625 364.40625 c 1 - 1227.875 303.9375 1208.34375 243.46875 1188.8125 183 c 1 - 1151.98925781 183 1115.16699219 183 1078.34375 183 c 1 - 1154.54199219 406.359375 1230.73925781 629.71875 1306.9375 853.078125 c 1 - 1352.35449219 853.078125 1397.77050781 853.078125 1443.1875 853.078125 c 1 - 1519.33300781 629.71875 1595.47949219 406.359375 1671.625 183 c 1 - 1633.86425781 183 1596.10449219 183 1558.34375 183 c 1 -1375.0625 753.234375 m 1 - 1373.44824219 753.234375 1371.83300781 753.234375 1370.21875 753.234375 c 1 - 1337.92675781 654.666992188 1305.63574219 556.098632812 1273.34375 457.53125 c 1 - 1339.22949219 457.53125 1405.11425781 457.53125 1471 457.53125 c 1 - 1439.02050781 556.098632812 1407.04199219 654.666992188 1375.0625 753.234375 c 1 -EndSplineSet -EndChar - -StartChar: uniE109 -Encoding: 57609 57609 10 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 171.516 95.9375<134.083 359.867> 364.406 93.125<745.609 943.344 1385.61 1583.34> 753.234 99.8438<830.443 859.33 1470.44 1499.33> 768.625 95.9375<159.651 378.063> -VStem: 28.1875 107.5<611.387 747.68> 388.188 107.5<294.565 441.758> 550.688 110.391<183 293.391> 1030.69 113.281<183 296.281> 1190.69 110.391<183 293.391> 1670.69 113.281<183 296.281> -DStem2: 242.25 584.25 223.969 481.594 0.978916 -0.204262<-84.378 149.631> 550.688 183 661.078 183 0.322775 0.946476<35.6313 226.241 322.753 322.753> 915.531 853.078 847.328 753.234 0.306115 -0.951995<74.1727 385.072 481.954 673.162> 1190.69 183 1301.08 183 0.322775 0.946476<35.6313 226.241 322.753 322.753> 1555.53 853.078 1487.33 753.234 0.306115 -0.951995<74.1727 385.072 481.954 673.162> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 171.516 95.9375<134.083 359.867> 364.406 93.125<745.609 943.344 1385.61 1583.34> 753.234 99.8438<830.443 859.33 1470.44 1499.33> 768.625 95.9375<159.651 378.063> -VStem: 28.1875 107.5<611.387 747.68> 388.188 107.5<294.565 441.758> 550.688 110.391<183 293.391> 1030.69 113.281<183 296.281> 1190.69 110.391<183 293.391> 1670.69 113.281<183 296.281> -DStem2: 242.25 584.25 223.969 481.594 0.978916 -0.204262<-84.378 149.631> 550.688 183 661.078 183 0.322775 0.946476<35.6313 226.241 322.753 322.753> 915.531 853.078 847.328 753.234 0.306115 -0.951995<74.1727 385.072 481.954 673.162> 1190.69 183 1301.08 183 0.322775 0.946476<35.6313 226.241 322.753 322.753> 1555.53 853.078 1487.33 753.234 0.306115 -0.951995<74.1727 385.072 481.954 673.162> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -252.796875 171.515625 m 0xdfc0 - 196.46875 171.515625 148.65625 181.75 109.28125 202.21875 c 0 - 69.90625 222.6875 36.15625 250.1875 8.03125 284.796875 c 1 - 32.9794921875 308.15625 57.9267578125 331.515625 82.875 354.875 c 1 - 106.546875 326.046875 132.640625 304.25 161.078125 289.5625 c 0 - 189.59375 274.875 222.09375 267.453125 258.578125 267.453125 c 0 - 301.46875 267.453125 333.734375 277.0625 355.53125 296.28125 c 0 - 377.25 315.5 388.1875 341.4375 388.1875 374.015625 c 0 - 388.1875 400.265625 380.453125 421.046875 365.140625 436.4375 c 0 - 349.75 451.828125 322.5625 463.3125 283.5 470.96875 c 1 - 263.65625 474.510742188 243.8125 478.051757812 223.96875 481.59375 c 1 - 158.734375 493.703125 109.75 515.1875 77.09375 545.890625 c 0 - 44.4375 576.59375 28.1875 618.859375 28.1875 672.609375 c 0 - 28.1875 702.0625 33.734375 728.78125 44.984375 752.765625 c 0 - 56.15625 776.75 71.859375 796.90625 92.015625 813.234375 c 0 - 112.171875 829.5625 136.625 842.21875 165.453125 851.125 c 0 - 194.203125 860.109375 226.546875 864.5625 262.40625 864.5625 c 0 - 312.953125 864.5625 356.78125 855.8125 393.890625 838.234375 c 0 - 431 820.578125 462.71875 795.1875 488.96875 761.90625 c 1 - 463.682617188 739.510742188 438.395507812 717.114257812 413.109375 694.71875 c 1 - 395.84375 717.0625 374.75 735.03125 349.75 748.46875 c 0 - 324.828125 761.90625 293.734375 768.625 256.625 768.625 c 0 - 218.265625 768.625 188.5 760.890625 167.328125 745.578125 c 0 - 146.234375 730.1875 135.6875 707.765625 135.6875 678.390625 c 0 - 135.6875 650.1875 144.28125 629.25 161.625 615.5 c 0 - 178.890625 601.75 205.765625 591.28125 242.25 584.25 c 1 - 262.09375 580.109375 281.9375 575.96875 301.78125 571.828125 c 1 - 368.96875 559.015625 418.109375 537.21875 449.125 506.515625 c 0 - 480.140625 475.8125 495.6875 433.546875 495.6875 379.796875 c 0 - 495.6875 348.46875 490.21875 319.953125 479.359375 294.328125 c 0 - 468.5 268.78125 452.640625 246.828125 431.859375 228.625 c 0 - 411 210.34375 385.609375 196.28125 355.53125 186.359375 c 0 - 325.453125 176.4375 291.15625 171.515625 252.796875 171.515625 c 0xdfc0 -1030.6875 183 m 1 - 1010.53125 243.46875 990.375 303.9375 970.21875 364.40625 c 1 - 886.703125 364.40625 803.1875 364.40625 719.671875 364.40625 c 1 - 700.140625 303.9375 680.609375 243.46875 661.078125 183 c 1 - 624.28125 183 587.484375 183 550.6875 183 c 1 - 626.859375 406.359375 703.03125 629.71875 779.203125 853.078125 c 1 - 824.645507812 853.078125 870.088867188 853.078125 915.53125 853.078125 c 1xefc0 - 991.676757812 629.71875 1067.82324219 406.359375 1143.96875 183 c 1 - 1106.20800781 183 1068.44824219 183 1030.6875 183 c 1 -847.328125 753.234375 m 1 - 845.739257812 753.234375 844.151367188 753.234375 842.5625 753.234375 c 1 - 810.245117188 654.666992188 777.926757812 556.098632812 745.609375 457.53125 c 1 - 811.520507812 457.53125 877.432617188 457.53125 943.34375 457.53125 c 1 - 911.338867188 556.098632812 879.333007812 654.666992188 847.328125 753.234375 c 1 -1670.6875 183 m 5 - 1650.53125 243.46875 1630.375 303.9375 1610.21875 364.40625 c 1 - 1526.703125 364.40625 1443.1875 364.40625 1359.671875 364.40625 c 1 - 1340.140625 303.9375 1320.609375 243.46875 1301.078125 183 c 1 - 1264.28125 183 1227.484375 183 1190.6875 183 c 1 - 1266.859375 406.359375 1343.03125 629.71875 1419.203125 853.078125 c 1 - 1464.64550781 853.078125 1510.08886719 853.078125 1555.53125 853.078125 c 5 - 1631.67675781 629.71875 1707.82324219 406.359375 1783.96875 183 c 1 - 1746.20800781 183 1708.44824219 183 1670.6875 183 c 5 -1487.328125 753.234375 m 1 - 1485.73925781 753.234375 1484.15136719 753.234375 1482.5625 753.234375 c 1 - 1450.24511719 654.666992188 1417.92675781 556.098632812 1385.609375 457.53125 c 1 - 1451.52050781 457.53125 1517.43261719 457.53125 1583.34375 457.53125 c 1 - 1551.33886719 556.098632812 1519.33300781 654.666992188 1487.328125 753.234375 c 1 -EndSplineSet -EndChar - -StartChar: uniE10A -Encoding: 57610 57610 11 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 183 88.2812<773.109 864.281 972.797 1064.98 1342.08 1563.11> 764.797 88.2812<773.109 864.281 972.797 1064.98 1342.01 1562.58> -VStem: 96.625 112.344<740.734 853.078> 555.531 109.453<743.625 853.078> 773.109 291.875<183 271.281 764.797 853.078> 1172.17 115.156<330.807 708.111> -DStem2: 208.969 853.078 96.625 853.078 0.311738 -0.950168<0 589.589> 383.656 288.625 442.25 183 0.291293 0.956634<0 590.041> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 183 88.2812<773.109 864.281 972.797 1064.98 1342.08 1563.11> 764.797 88.2812<773.109 864.281 972.797 1064.98 1342.01 1562.58> -VStem: 96.625 112.344<740.734 853.078> 555.531 109.453<743.625 853.078> 773.109 291.875<183 271.281 764.797 853.078> 1172.17 115.156<330.807 708.111> -DStem2: 208.969 853.078 96.625 853.078 0.311738 -0.950168<0 589.589> 383.656 288.625 442.25 183 0.291293 0.956634<0 590.041> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -316.46875 183 m 1 - 243.1875 406.359375 169.90625 629.71875 96.625 853.078125 c 1 - 134.073242188 853.078125 171.520507812 853.078125 208.96875 853.078125 c 1 - 244.489257812 742.6875 280.010742188 632.296875 315.53125 521.90625 c 1 - 336.963867188 444.145507812 358.395507812 366.385742188 379.828125 288.625 c 1 - 381.104492188 288.625 382.379882812 288.625 383.65625 288.625 c 1 - 405.426757812 366.385742188 427.198242188 444.145507812 448.96875 521.90625 c 1 - 484.489257812 632.296875 520.010742188 742.6875 555.53125 853.078125 c 1 - 592.015625 853.078125 628.5 853.078125 664.984375 853.078125 c 1 - 590.739257812 629.71875 516.495117188 406.359375 442.25 183 c 1 - 400.323242188 183 358.395507812 183 316.46875 183 c 1 -773.109375 183 m 1 - 773.109375 212.426757812 773.109375 241.854492188 773.109375 271.28125 c 1 - 803.5 271.28125 833.890625 271.28125 864.28125 271.28125 c 1 - 864.28125 435.786132812 864.28125 600.291992188 864.28125 764.796875 c 1 - 833.890625 764.796875 803.5 764.796875 773.109375 764.796875 c 1 - 773.109375 794.223632812 773.109375 823.651367188 773.109375 853.078125 c 1 - 870.401367188 853.078125 967.692382812 853.078125 1064.984375 853.078125 c 1 - 1064.984375 823.651367188 1064.984375 794.223632812 1064.984375 764.796875 c 1 - 1034.25488281 764.796875 1003.52636719 764.796875 972.796875 764.796875 c 1 - 972.796875 600.291992188 972.796875 435.786132812 972.796875 271.28125 c 1 - 1003.52636719 271.28125 1034.25488281 271.28125 1064.984375 271.28125 c 1 - 1064.984375 241.854492188 1064.984375 212.426757812 1064.984375 183 c 1 - 967.692382812 183 870.401367188 183 773.109375 183 c 1 -1453.421875 171.515625 m 0 - 1365.765625 171.515625 1296.9375 201.046875 1247.015625 260.265625 c 0 - 1197.09375 319.484375 1172.171875 405.421875 1172.171875 518.078125 c 0 - 1172.171875 574.328125 1178.578125 623.9375 1191.390625 666.828125 c 0 - 1204.125 709.71875 1222.71875 745.890625 1247.015625 775.34375 c 0 - 1271.390625 804.796875 1300.921875 826.984375 1335.84375 842.0625 c 0 - 1370.6875 857.0625 1409.90625 864.5625 1453.421875 864.5625 c 0 - 1511.703125 864.5625 1560.453125 851.828125 1599.828125 826.203125 c 0 - 1639.203125 800.578125 1670.0625 762.84375 1692.484375 712.921875 c 1 - 1662.09375 696.28125 1631.703125 679.640625 1601.3125 663 c 1 - 1589.75 695.03125 1572.015625 720.421875 1548.03125 739.328125 c 0 - 1523.96875 758.234375 1492.484375 767.609375 1453.421875 767.609375 c 0 - 1401.625 767.609375 1360.921875 750.03125 1331.546875 714.875 c 0 - 1302.09375 679.640625 1287.328125 630.96875 1287.328125 568.9375 c 1 - 1287.328125 535.004882812 1287.328125 501.073242188 1287.328125 467.140625 c 1 - 1287.328125 405.109375 1302.09375 356.4375 1331.546875 321.203125 c 0 - 1360.921875 286.046875 1401.625 268.46875 1453.421875 268.46875 c 0 - 1493.734375 268.46875 1526.546875 278.859375 1551.859375 299.640625 c 0 - 1577.09375 320.421875 1595.84375 347.140625 1608.03125 379.796875 c 1 - 1637.14550781 362.192382812 1666.26074219 344.588867188 1695.375 326.984375 c 1 - 1672.953125 278.390625 1641.625 240.265625 1601.3125 212.765625 c 0 - 1560.921875 185.265625 1511.703125 171.515625 1453.421875 171.515625 c 0 -EndSplineSet -EndChar - -StartChar: uniE10B -Encoding: 57611 57611 12 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 183 96.0156<820.297 1141> 449.875 95.0781<180.297 416.684> 474.875 95.9375<820.297 1111.23> 757.062 96.0156<180.297 416.684 820.297 1141 1212.33 1412.02 1520.45 1720.14> -VStem: 71.8594 108.438<183 449.875 544.953 758.078> 440.453 114.297<567.194 735.759> 711.859 108.438<279.016 474.875 570.812 757.062> 1412.02 108.438<183 757.062> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 183 96.0156<820.297 1141> 449.875 95.0781<180.297 416.684> 474.875 95.9375<820.297 1111.23> 757.062 96.0156<180.297 416.684 820.297 1141 1212.33 1412.02 1520.45 1720.14> -VStem: 71.8594 108.438<183 449.875 544.953 758.078> 440.453 114.297<567.194 735.759> 711.859 108.438<279.016 474.875 570.812 757.062> 1412.02 108.438<183 757.062> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -71.859375 183 m 1xdf - 71.859375 406.359375 71.859375 629.71875 71.859375 853.078125 c 1 - 167.848632812 853.078125 263.838867188 853.078125 359.828125 853.078125 c 1 - 421.9375 853.078125 469.90625 834.875 503.8125 798.390625 c 0 - 537.796875 761.90625 554.75 712.921875 554.75 651.515625 c 256 - 554.75 590.03125 537.796875 541.046875 503.8125 504.5625 c 0 - 469.90625 468.15625 421.9375 449.875 359.828125 449.875 c 1 - 299.984375 449.875 240.140625 449.875 180.296875 449.875 c 1 - 180.296875 360.916992188 180.296875 271.958007812 180.296875 183 c 1 - 144.151367188 183 108.004882812 183 71.859375 183 c 1xdf -180.296875 544.953125 m 1 - 237.901367188 544.953125 295.504882812 544.953125 353.109375 544.953125 c 1 - 380.609375 544.953125 402.09375 552.140625 417.40625 566.515625 c 0 - 432.796875 580.890625 440.453125 601.59375 440.453125 628.46875 c 1 - 440.453125 643.807617188 440.453125 659.145507812 440.453125 674.484375 c 1 - 440.453125 701.4375 432.796875 722.0625 417.40625 736.4375 c 0 - 402.09375 750.8125 380.609375 758.078125 353.109375 758.078125 c 1 - 295.504882812 758.078125 237.901367188 758.078125 180.296875 758.078125 c 1 - 180.296875 687.036132812 180.296875 615.995117188 180.296875 544.953125 c 1 -711.859375 183 m 1 - 711.859375 406.359375 711.859375 629.71875 711.859375 853.078125 c 1 - 854.90625 853.078125 997.953125 853.078125 1141 853.078125 c 1 - 1141 821.073242188 1141 789.067382812 1141 757.0625 c 1 - 1034.09863281 757.0625 927.198242188 757.0625 820.296875 757.0625 c 1 - 820.296875 694.979492188 820.296875 632.895507812 820.296875 570.8125 c 1 - 917.276367188 570.8125 1014.25488281 570.8125 1111.234375 570.8125 c 1 - 1111.234375 538.833007812 1111.234375 506.854492188 1111.234375 474.875 c 1 - 1014.25488281 474.875 917.276367188 474.875 820.296875 474.875 c 1xbf - 820.296875 409.588867188 820.296875 344.301757812 820.296875 279.015625 c 1 - 927.198242188 279.015625 1034.09863281 279.015625 1141 279.015625 c 1 - 1141 247.010742188 1141 215.004882812 1141 183 c 1 - 997.953125 183 854.90625 183 711.859375 183 c 1 -1520.453125 757.0625 m 1 - 1520.453125 565.708007812 1520.453125 374.354492188 1520.453125 183 c 1 - 1484.30761719 183 1448.16113281 183 1412.015625 183 c 1 - 1412.015625 374.354492188 1412.015625 565.708007812 1412.015625 757.0625 c 1 - 1345.453125 757.0625 1278.890625 757.0625 1212.328125 757.0625 c 1 - 1212.328125 789.067382812 1212.328125 821.073242188 1212.328125 853.078125 c 1 - 1381.59863281 853.078125 1550.87011719 853.078125 1720.140625 853.078125 c 1 - 1720.140625 821.073242188 1720.140625 789.067382812 1720.140625 757.0625 c 1 - 1653.578125 757.0625 1587.015625 757.0625 1520.453125 757.0625 c 1 -EndSplineSet -EndChar - -StartChar: uniE10C -Encoding: 57612 57612 13 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -253.33 85.3906<803.27 978.187> 95.1074 85.4688<828.18 977.718> 612.686 89.2188<1388.21 1579.14> 624.17 92.1875<328.559 354.926> 897.764 85.4688<802.406 938.743> 1204.95 89.2969<802.406 1011.58 1380.73 1582.23> -VStem: 82.0938 106.562<1187.69 1294.25> 493.891 104.688<1189.56 1294.25> 674.359 107.5<-147.67 75.4575> 700.609 101.797<624.17 897.764 983.232 1204.95> 998.891 107.5<-147.386 74.3151> 1030.84 108.516<1002.5 1185.69> 1233.73 109.453<750.416 1168> -DStem2: 188.656 1294.25 82.0938 1294.25 0.271727 -0.962374<0 593.586> 375.844 872.842 402.719 624.17 0.269742 0.962933<-155.735 437.628> 1024.12 905.42 922.406 897.764 0.413517 -0.910496<0 262.054> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -253.33 85.3906<803.27 978.187> 95.1074 85.4688<828.18 977.718> 612.686 89.2188<1388.21 1579.14> 624.17 92.1875<328.559 354.926> 897.764 85.4688<802.406 938.743> 1204.95 89.2969<802.406 1011.58 1380.73 1582.23> -VStem: 82.0938 106.562<1187.69 1294.25> 493.891 104.688<1189.56 1294.25> 674.359 107.5<-147.67 75.4575> 700.609 101.797<624.17 897.764 983.232 1204.95> 998.891 107.5<-147.386 74.3151> 1030.84 108.516<1002.5 1185.69> 1233.73 109.453<750.416 1168> -DStem2: 188.656 1294.25 82.0938 1294.25 0.271727 -0.962374<0 593.586> 375.844 872.842 402.719 624.17 0.269742 0.962933<-155.735 437.628> 1024.12 905.42 922.406 897.764 0.413517 -0.910496<0 262.054> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -890.296875 -253.330078125 m 0xcfa8 - 818.734375 -253.330078125 764.828125 -231.298828125 728.578125 -187.158203125 c 0 - 692.484375 -142.939453125 674.359375 -78.642578125 674.359375 5.810546875 c 0 - 674.359375 46.123046875 679.515625 86.435546875 689.671875 126.826171875 c 0 - 699.984375 167.138671875 714.671875 205.654296875 733.890625 242.451171875 c 0 - 753.109375 279.248046875 775.921875 313.701171875 802.484375 345.654296875 c 0 - 829.046875 377.685546875 858.734375 405.185546875 891.390625 428.232421875 c 1 - 937.120117188 428.232421875 982.848632812 428.232421875 1028.578125 428.232421875 c 1 - 989.515625 398.154296875 955.921875 369.482421875 927.796875 342.294921875 c 0 - 899.671875 315.107421875 875.765625 288.076171875 856.234375 261.201171875 c 0 - 836.703125 234.326171875 820.921875 206.669921875 808.734375 178.154296875 c 0 - 796.546875 149.638671875 787.328125 118.779296875 780.921875 85.498046875 c 1 - 785.088867188 85.498046875 789.254882812 85.498046875 793.421875 85.498046875 c 1 - 804.359375 116.201171875 821.546875 139.716796875 845.296875 156.044921875 c 0 - 868.890625 172.373046875 897.015625 180.576171875 929.671875 180.576171875 c 0 - 984.046875 180.576171875 1027.171875 162.919921875 1058.890625 127.763671875 c 0 - 1090.453125 92.529296875 1106.390625 40.732421875 1106.390625 -27.783203125 c 0 - 1106.390625 -98.798828125 1087.953125 -154.189453125 1051.234375 -193.876953125 c 0 - 1014.359375 -233.564453125 960.765625 -253.330078125 890.296875 -253.330078125 c 0xcfa8 -890.296875 -167.939453125 m 256 - 962.640625 -167.939453125 998.890625 -128.251953125 998.890625 -48.876953125 c 1 - 998.890625 -40.5693359375 998.890625 -32.2626953125 998.890625 -23.955078125 c 1 - 998.890625 55.419921875 962.640625 95.107421875 890.296875 95.107421875 c 256 - 818.109375 95.107421875 781.859375 55.419921875 781.859375 -23.955078125 c 1 - 781.859375 -32.2626953125 781.859375 -40.5693359375 781.859375 -48.876953125 c 1 - 781.859375 -128.251953125 818.109375 -167.939453125 890.296875 -167.939453125 c 256 -278.890625 624.169921875 m 1xdf08 - 213.291992188 847.529296875 147.692382812 1070.88867188 82.09375 1294.24804688 c 1 - 117.614257812 1294.24804688 153.135742188 1294.24804688 188.65625 1294.24804688 c 1 - 228.317382812 1153.77929688 267.979492188 1013.31054688 307.640625 872.841796875 c 1 - 316.9375 820.680664062 326.234375 768.518554688 335.53125 716.357421875 c 1 - 339.671875 716.357421875 343.8125 716.357421875 347.953125 716.357421875 c 1 - 357.25 768.518554688 366.546875 820.680664062 375.84375 872.841796875 c 1 - 415.192382812 1013.31054688 454.541992188 1153.77929688 493.890625 1294.24804688 c 1 - 528.786132812 1294.24804688 563.682617188 1294.24804688 598.578125 1294.24804688 c 1 - 533.291992188 1070.88867188 468.004882812 847.529296875 402.71875 624.169921875 c 1 - 361.442382812 624.169921875 320.166992188 624.169921875 278.890625 624.169921875 c 1xdf08 -802.40625 624.169921875 m 1xdf58 - 768.473632812 624.169921875 734.541992188 624.169921875 700.609375 624.169921875 c 1 - 700.609375 847.529296875 700.609375 1070.88867188 700.609375 1294.24804688 c 1 - 788.942382812 1294.24804688 877.276367188 1294.24804688 965.609375 1294.24804688 c 1 - 1023.1875 1294.24804688 1066.546875 1277.13867188 1095.6875 1242.91992188 c 0 - 1124.75 1208.62304688 1139.359375 1159.56054688 1139.359375 1095.49804688 c 0 - 1139.359375 1043.70117188 1129.75 1001.74804688 1110.53125 969.794921875 c 0 - 1091.3125 937.763671875 1062.5625 916.357421875 1024.125 905.419921875 c 1 - 1066.703125 811.669921875 1109.28125 717.919921875 1151.859375 624.169921875 c 1 - 1114.09863281 624.169921875 1076.33886719 624.169921875 1038.578125 624.169921875 c 1 - 999.854492188 715.368164062 961.129882812 806.565429688 922.40625 897.763671875 c 1 - 882.40625 897.763671875 842.40625 897.763671875 802.40625 897.763671875 c 1 - 802.40625 806.565429688 802.40625 715.368164062 802.40625 624.169921875 c 1xdf58 -956.9375 983.232421875 m 1 - 981.234375 983.232421875 999.671875 989.482421875 1012.171875 1001.90429688 c 0 - 1024.59375 1014.40429688 1030.84375 1034.71679688 1030.84375 1062.91992188 c 1 - 1030.84375 1083.70117188 1030.84375 1104.48242188 1030.84375 1125.26367188 c 1 - 1030.84375 1153.46679688 1024.59375 1173.77929688 1012.171875 1186.27929688 c 0 - 999.671875 1198.70117188 981.234375 1204.95117188 956.9375 1204.95117188 c 1 - 905.426757812 1204.95117188 853.916992188 1204.95117188 802.40625 1204.95117188 c 1 - 802.40625 1131.04492188 802.40625 1057.13867188 802.40625 983.232421875 c 1 - 853.916992188 983.232421875 905.426757812 983.232421875 956.9375 983.232421875 c 1 -1487.171875 612.685546875 m 0xef08 - 1448.109375 612.685546875 1413.109375 619.248046875 1382.09375 632.294921875 c 0 - 1351 645.419921875 1324.4375 666.123046875 1302.40625 694.248046875 c 0 - 1280.296875 722.373046875 1263.34375 758.388671875 1251.46875 802.216796875 c 0 - 1239.671875 846.123046875 1233.734375 898.388671875 1233.734375 959.248046875 c 256 - 1233.734375 1020.02929688 1239.671875 1072.29492188 1251.46875 1116.20117188 c 0 - 1263.34375 1160.02929688 1280.296875 1196.04492188 1302.40625 1224.16992188 c 0 - 1324.4375 1252.29492188 1351 1272.99804688 1382.09375 1286.12304688 c 0 - 1413.109375 1299.24804688 1448.109375 1305.73242188 1487.171875 1305.73242188 c 0 - 1544.125 1305.73242188 1589.75 1293.46679688 1623.96875 1268.77929688 c 0 - 1658.1875 1244.16992188 1685.609375 1207.21679688 1706.078125 1157.91992188 c 1 - 1677.27636719 1141.93066406 1648.47363281 1125.94042969 1619.671875 1109.95117188 c 1 - 1608.109375 1147.68554688 1592.015625 1174.87304688 1571.15625 1191.51367188 c 0 - 1550.375 1208.15429688 1522.40625 1216.51367188 1487.171875 1216.51367188 c 0 - 1441.78125 1216.51367188 1406.390625 1200.81054688 1381.078125 1169.48242188 c 0 - 1355.84375 1138.07617188 1343.1875 1094.87304688 1343.1875 1039.87304688 c 1 - 1343.1875 986.096679688 1343.1875 932.321289062 1343.1875 878.544921875 c 1 - 1343.1875 823.544921875 1355.84375 780.341796875 1381.078125 748.935546875 c 0 - 1406.390625 717.607421875 1441.78125 701.904296875 1487.171875 701.904296875 c 0 - 1523.03125 701.904296875 1552.015625 710.888671875 1574.046875 728.779296875 c 0 - 1596.15625 746.748046875 1613.265625 775.498046875 1625.453125 815.185546875 c 1 - 1653.60449219 798.544921875 1681.75488281 781.904296875 1709.90625 765.263671875 c 1 - 1688.8125 716.044921875 1660.609375 678.232421875 1625.453125 651.982421875 c 0 - 1590.21875 625.732421875 1544.125 612.685546875 1487.171875 612.685546875 c 0xef08 -EndSplineSet -EndChar - -StartChar: uniE10D -Encoding: 57613 57613 14 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -247.516 96.0156<568.266 840.922 1048.27 1320.92> 607.016 96.9531<456.756 680.46> 885.375 95.0781<1137.88 1374.26> 1203.11 96.9531<456.756 680.46 1137.88 1374.26> -VStem: 279.672 116.172<767.663 1139.42> 459.828 108.438<-151.5 422.562> 741.391 116.172<767.663 1139.42> 939.828 108.438<-151.5 422.562> 1029.44 108.438<618.5 885.375 980.453 1193.58> 1398.03 114.297<1002.69 1171.26> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -247.516 96.0156<568.266 840.922 1048.27 1320.92> 607.016 96.9531<456.756 680.46> 885.375 95.0781<1137.88 1374.26> 1203.11 96.9531<456.756 680.46 1137.88 1374.26> -VStem: 279.672 116.172<767.663 1139.42> 459.828 108.438<-151.5 422.562> 741.391 116.172<767.663 1139.42> 939.828 108.438<-151.5 422.562> 1029.44 108.438<618.5 885.375 980.453 1193.58> 1398.03 114.297<1002.69 1171.26> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -459.828125 -247.515625 m 1xfe40 - 459.828125 -24.15625 459.828125 199.203125 459.828125 422.5625 c 1 - 495.973632812 422.5625 532.120117188 422.5625 568.265625 422.5625 c 1 - 568.265625 231.208007812 568.265625 39.853515625 568.265625 -151.5 c 1 - 659.151367188 -151.5 750.036132812 -151.5 840.921875 -151.5 c 1 - 840.921875 -183.505859375 840.921875 -215.510742188 840.921875 -247.515625 c 1 - 713.890625 -247.515625 586.859375 -247.515625 459.828125 -247.515625 c 1xfe40 -939.828125 -247.515625 m 1xff40 - 939.828125 -24.15625 939.828125 199.203125 939.828125 422.5625 c 1 - 975.973632812 422.5625 1012.12011719 422.5625 1048.265625 422.5625 c 1 - 1048.265625 231.208007812 1048.265625 39.853515625 1048.265625 -151.5 c 1 - 1139.15136719 -151.5 1230.03613281 -151.5 1320.921875 -151.5 c 1 - 1320.921875 -183.505859375 1320.921875 -215.510742188 1320.921875 -247.515625 c 1 - 1193.890625 -247.515625 1066.859375 -247.515625 939.828125 -247.515625 c 1xff40 -568.65625 607.015625 m 256 - 525.0625 607.015625 485.609375 614.515625 450.0625 629.515625 c 0 - 414.515625 644.59375 384.125 666.625 358.890625 695.765625 c 0 - 333.578125 724.90625 314.046875 761.078125 300.296875 804.28125 c 0 - 286.546875 847.484375 279.671875 897.25 279.671875 953.578125 c 256 - 279.671875 1009.828125 286.546875 1059.59375 300.296875 1102.796875 c 0 - 314.046875 1146 333.578125 1182.171875 358.890625 1211.3125 c 0 - 384.125 1240.453125 414.515625 1262.484375 450.0625 1277.5625 c 0 - 485.609375 1292.5625 525.0625 1300.0625 568.65625 1300.0625 c 256 - 612.171875 1300.0625 651.625 1292.5625 687.171875 1277.5625 c 0 - 722.71875 1262.484375 753.109375 1240.453125 778.34375 1211.3125 c 0 - 803.65625 1182.171875 823.1875 1146 836.9375 1102.796875 c 0 - 850.6875 1059.59375 857.5625 1009.828125 857.5625 953.578125 c 256 - 857.5625 897.25 850.6875 847.484375 836.9375 804.28125 c 0 - 823.1875 761.078125 803.65625 724.90625 778.34375 695.765625 c 0 - 753.109375 666.625 722.71875 644.59375 687.171875 629.515625 c 0 - 651.625 614.515625 612.171875 607.015625 568.65625 607.015625 c 256 -568.65625 703.96875 m 0 - 594.203125 703.96875 617.71875 708.421875 639.203125 717.40625 c 0 - 660.609375 726.3125 678.890625 739.28125 693.890625 756.234375 c 0 - 708.96875 773.1875 720.609375 793.890625 728.96875 818.1875 c 0 - 737.25 842.484375 741.390625 869.984375 741.390625 900.765625 c 1 - 741.390625 935.947265625 741.390625 971.129882812 741.390625 1006.3125 c 1 - 741.390625 1037.09375 737.25 1064.59375 728.96875 1088.890625 c 0 - 720.609375 1113.1875 708.96875 1133.890625 693.890625 1150.84375 c 0 - 678.890625 1167.796875 660.609375 1180.765625 639.203125 1189.671875 c 0 - 617.71875 1198.65625 594.203125 1203.109375 568.65625 1203.109375 c 0 - 542.40625 1203.109375 518.734375 1198.65625 497.5625 1189.671875 c 0 - 476.46875 1180.765625 458.34375 1167.796875 443.34375 1150.84375 c 0 - 428.265625 1133.890625 416.625 1113.1875 408.265625 1088.890625 c 0 - 399.984375 1064.59375 395.84375 1037.09375 395.84375 1006.3125 c 1 - 395.84375 971.129882812 395.84375 935.947265625 395.84375 900.765625 c 1 - 395.84375 869.984375 399.984375 842.484375 408.265625 818.1875 c 0 - 416.625 793.890625 428.265625 773.1875 443.34375 756.234375 c 0 - 458.34375 739.28125 476.46875 726.3125 497.5625 717.40625 c 0 - 518.734375 708.421875 542.40625 703.96875 568.65625 703.96875 c 0 -1029.4375 618.5 m 1xfec0 - 1029.4375 841.859375 1029.4375 1065.21875 1029.4375 1288.578125 c 1 - 1125.42675781 1288.578125 1221.41699219 1288.578125 1317.40625 1288.578125 c 1 - 1379.515625 1288.578125 1427.484375 1270.37402344 1461.390625 1233.890625 c 0 - 1495.375 1197.40527344 1512.328125 1148.421875 1512.328125 1087.015625 c 256 - 1512.328125 1025.53027344 1495.375 976.546875 1461.390625 940.0625 c 0 - 1427.484375 903.65625 1379.515625 885.375 1317.40625 885.375 c 1 - 1257.5625 885.375 1197.71875 885.375 1137.875 885.375 c 1 - 1137.875 796.416015625 1137.875 707.458007812 1137.875 618.5 c 1 - 1101.72949219 618.5 1065.58300781 618.5 1029.4375 618.5 c 1xfec0 -1137.875 980.453125 m 1 - 1195.47949219 980.453125 1253.08300781 980.453125 1310.6875 980.453125 c 1 - 1338.1875 980.453125 1359.671875 987.640625 1374.984375 1002.015625 c 0 - 1390.375 1016.390625 1398.03125 1037.09277344 1398.03125 1063.96875 c 1 - 1398.03125 1079.30664062 1398.03125 1094.64550781 1398.03125 1109.984375 c 1 - 1398.03125 1136.9375 1390.375 1157.56152344 1374.984375 1171.9375 c 0 - 1359.671875 1186.31152344 1338.1875 1193.578125 1310.6875 1193.578125 c 1 - 1253.08300781 1193.578125 1195.47949219 1193.578125 1137.875 1193.578125 c 1 - 1137.875 1122.53613281 1137.875 1051.49414062 1137.875 980.453125 c 1 -EndSplineSet -EndChar - -StartChar: uniE10E -Encoding: 57614 57614 15 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 183 96.0156<177.043 421.987 1508.81 1781.47> 449.875 95.0781<868.812 1105.12> 758.078 95<177.765 421.265 868.812 1105.12> -VStem: 10.5312 116.25<332.163 703.916> 472.25 116.25<332.163 703.916> 760.375 108.438<183 449.875 544.953 758.078> 1128.97 114.219<567.194 735.759> 1400.38 108.438<279.016 853.078> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 183 96.0156<177.043 421.987 1508.81 1781.47> 449.875 95.0781<868.812 1105.12> 758.078 95<177.765 421.265 868.812 1105.12> -VStem: 10.5312 116.25<332.163 703.916> 472.25 116.25<332.163 703.916> 760.375 108.438<183 449.875 544.953 758.078> 1128.97 114.219<567.194 735.759> 1400.38 108.438<279.016 853.078> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -299.59375 171.515625 m 256 - 256 171.515625 216.46875 179.015625 181 194.015625 c 0 - 145.375 209.09375 115.0625 231.125 89.75 260.265625 c 0 - 64.4375 289.40625 44.90625 325.578125 31.15625 368.78125 c 0 - 17.40625 411.984375 10.53125 461.75 10.53125 518.078125 c 256 - 10.53125 574.328125 17.40625 624.09375 31.15625 667.296875 c 0 - 44.90625 710.5 64.4375 746.671875 89.75 775.8125 c 0 - 115.0625 804.953125 145.375 826.984375 181 842.0625 c 0 - 216.46875 857.0625 256 864.5625 299.59375 864.5625 c 256 - 343.03125 864.5625 382.5625 857.0625 418.03125 842.0625 c 0 - 453.65625 826.984375 483.96875 804.953125 509.28125 775.8125 c 0 - 534.59375 746.671875 554.125 710.5 567.875 667.296875 c 0 - 581.625 624.09375 588.5 574.328125 588.5 518.078125 c 256 - 588.5 461.75 581.625 411.984375 567.875 368.78125 c 0 - 554.125 325.578125 534.59375 289.40625 509.28125 260.265625 c 0 - 483.96875 231.125 453.65625 209.09375 418.03125 194.015625 c 0 - 382.5625 179.015625 343.03125 171.515625 299.59375 171.515625 c 256 -299.59375 268.46875 m 0 - 325.0625 268.46875 348.65625 272.921875 370.0625 281.90625 c 0 - 391.46875 290.8125 409.75 303.78125 424.75 320.734375 c 0 - 439.90625 337.6875 451.46875 358.390625 459.90625 382.6875 c 0 - 468.1875 406.984375 472.25 434.484375 472.25 465.265625 c 1 - 472.25 500.448242188 472.25 535.629882812 472.25 570.8125 c 1 - 472.25 601.59375 468.1875 629.09375 459.90625 653.390625 c 0 - 451.46875 677.6875 439.90625 698.390625 424.75 715.34375 c 0 - 409.75 732.296875 391.46875 745.265625 370.0625 754.171875 c 0 - 348.65625 763.15625 325.0625 767.609375 299.59375 767.609375 c 0 - 273.34375 767.609375 249.59375 763.15625 228.5 754.171875 c 0 - 207.40625 745.265625 189.28125 732.296875 174.28125 715.34375 c 0 - 159.125 698.390625 147.5625 677.6875 139.125 653.390625 c 0 - 130.84375 629.09375 126.78125 601.59375 126.78125 570.8125 c 1 - 126.78125 535.629882812 126.78125 500.448242188 126.78125 465.265625 c 1 - 126.78125 434.484375 130.84375 406.984375 139.125 382.6875 c 0 - 147.5625 358.390625 159.125 337.6875 174.28125 320.734375 c 0 - 189.28125 303.78125 207.40625 290.8125 228.5 281.90625 c 0 - 249.59375 272.921875 273.34375 268.46875 299.59375 268.46875 c 0 -760.375 183 m 1 - 760.375 406.359375 760.375 629.71875 760.375 853.078125 c 1 - 856.364257812 853.078125 952.354492188 853.078125 1048.34375 853.078125 c 1 - 1110.375 853.078125 1158.34375 834.875 1192.25 798.390625 c 0 - 1226.3125 761.90625 1243.1875 712.921875 1243.1875 651.515625 c 256 - 1243.1875 590.03125 1226.3125 541.046875 1192.25 504.5625 c 0 - 1158.34375 468.15625 1110.375 449.875 1048.34375 449.875 c 1 - 988.5 449.875 928.65625 449.875 868.8125 449.875 c 1 - 868.8125 360.916992188 868.8125 271.958007812 868.8125 183 c 1 - 832.666992188 183 796.520507812 183 760.375 183 c 1 -868.8125 544.953125 m 1 - 926.416992188 544.953125 984.020507812 544.953125 1041.625 544.953125 c 1 - 1069.125 544.953125 1090.53125 552.140625 1105.84375 566.515625 c 0 - 1121.3125 580.890625 1128.96875 601.59375 1128.96875 628.46875 c 1 - 1128.96875 643.807617188 1128.96875 659.145507812 1128.96875 674.484375 c 1 - 1128.96875 701.4375 1121.3125 722.0625 1105.84375 736.4375 c 0 - 1090.53125 750.8125 1069.125 758.078125 1041.625 758.078125 c 1 - 984.020507812 758.078125 926.416992188 758.078125 868.8125 758.078125 c 1 - 868.8125 687.036132812 868.8125 615.995117188 868.8125 544.953125 c 1 -1400.375 183 m 1 - 1400.375 406.359375 1400.375 629.71875 1400.375 853.078125 c 1 - 1436.52050781 853.078125 1472.66699219 853.078125 1508.8125 853.078125 c 1 - 1508.8125 661.723632812 1508.8125 470.370117188 1508.8125 279.015625 c 1 - 1599.69824219 279.015625 1690.58300781 279.015625 1781.46875 279.015625 c 1 - 1781.46875 247.010742188 1781.46875 215.004882812 1781.46875 183 c 1 - 1654.4375 183 1527.40625 183 1400.375 183 c 1 -EndSplineSet -EndChar - -StartChar: uniE10F -Encoding: 57615 57615 16 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 183 96.0156<742.719 983.085 1340.88 1585.94> 474.875 95.9375<182.719 458.188 1468.24 1586.52> 757.062 96.0156<182.719 492.719 742.719 983.085 1378.58 1614.18> -VStem: 74.2812 108.438<183 474.875 570.812 757.062> 634.281 108.438<279.016 757.062> 1038.34 116.25<334.419 701.659> 1250.22 107.5<611.387 747.68> 1610.22 107.5<294.565 441.758> -DStem2: 1464.28 584.25 1446 481.594 0.978916 -0.204262<-84.3745 149.704> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 183 96.0156<742.719 983.085 1340.88 1585.94> 474.875 95.9375<182.719 458.188 1468.24 1586.52> 757.062 96.0156<182.719 492.719 742.719 983.085 1378.58 1614.18> -VStem: 74.2812 108.438<183 474.875 570.812 757.062> 634.281 108.438<279.016 757.062> 1038.34 116.25<334.419 701.659> 1250.22 107.5<611.387 747.68> 1610.22 107.5<294.565 441.758> -DStem2: 1464.28 584.25 1446 481.594 0.978916 -0.204262<-84.3745 149.704> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -74.28125 183 m 1 - 74.28125 406.359375 74.28125 629.71875 74.28125 853.078125 c 1 - 213.760742188 853.078125 353.239257812 853.078125 492.71875 853.078125 c 1 - 492.71875 821.073242188 492.71875 789.067382812 492.71875 757.0625 c 1 - 389.385742188 757.0625 286.051757812 757.0625 182.71875 757.0625 c 1 - 182.71875 694.979492188 182.71875 632.895507812 182.71875 570.8125 c 1 - 274.541992188 570.8125 366.364257812 570.8125 458.1875 570.8125 c 1 - 458.1875 538.833007812 458.1875 506.854492188 458.1875 474.875 c 1 - 366.364257812 474.875 274.541992188 474.875 182.71875 474.875 c 1 - 182.71875 377.583007812 182.71875 280.291992188 182.71875 183 c 1 - 146.573242188 183 110.426757812 183 74.28125 183 c 1 -634.28125 853.078125 m 1 - 713.291992188 853.078125 792.301757812 853.078125 871.3125 853.078125 c 1 - 914.28125 853.078125 953.03125 846.046875 988.03125 831.984375 c 0 - 1022.875 817.84375 1052.5625 796.90625 1077.25 769.09375 c 0 - 1101.9375 741.203125 1121 706.359375 1134.4375 664.40625 c 0 - 1147.875 622.53125 1154.59375 573.703125 1154.59375 518.078125 c 256 - 1154.59375 462.375 1147.875 413.546875 1134.4375 371.671875 c 0 - 1121 329.71875 1101.9375 294.875 1077.25 266.984375 c 0 - 1052.5625 239.171875 1022.875 218.234375 988.03125 204.09375 c 0 - 953.03125 190.03125 914.28125 183 871.3125 183 c 1 - 792.301757812 183 713.291992188 183 634.28125 183 c 1 - 634.28125 406.359375 634.28125 629.71875 634.28125 853.078125 c 1 -871.3125 279.015625 m 1 - 921.3125 279.015625 961.625 294.71875 992.25 326.046875 c 0 - 1023.03125 357.375 1038.34375 403.46875 1038.34375 464.25 c 1 - 1038.34375 500.109375 1038.34375 535.96875 1038.34375 571.828125 c 1 - 1038.34375 632.609375 1023.03125 678.703125 992.25 710.03125 c 0 - 961.625 741.4375 921.3125 757.0625 871.3125 757.0625 c 1 - 828.448242188 757.0625 785.583007812 757.0625 742.71875 757.0625 c 1 - 742.71875 597.713867188 742.71875 438.364257812 742.71875 279.015625 c 1 - 785.583007812 279.015625 828.448242188 279.015625 871.3125 279.015625 c 1 -1474.90625 171.515625 m 0 - 1418.5 171.515625 1370.6875 181.75 1331.3125 202.21875 c 0 - 1291.9375 222.6875 1258.1875 250.1875 1230.0625 284.796875 c 1 - 1255.01074219 308.15625 1279.95800781 331.515625 1304.90625 354.875 c 1 - 1328.65625 326.046875 1354.75 304.25 1383.1875 289.5625 c 0 - 1411.625 274.875 1444.125 267.453125 1480.6875 267.453125 c 0 - 1523.5 267.453125 1555.84375 277.0625 1577.5625 296.28125 c 0 - 1599.28125 315.5 1610.21875 341.4375 1610.21875 374.015625 c 0 - 1610.21875 400.265625 1602.5625 421.046875 1587.25 436.4375 c 0 - 1571.78125 451.828125 1544.59375 463.3125 1505.53125 470.96875 c 1 - 1485.6875 474.510742188 1465.84375 478.051757812 1446 481.59375 c 1 - 1380.84375 493.703125 1331.78125 515.1875 1299.125 545.890625 c 0 - 1266.46875 576.59375 1250.21875 618.859375 1250.21875 672.609375 c 0 - 1250.21875 702.0625 1255.84375 728.78125 1267.09375 752.765625 c 0 - 1278.1875 776.75 1293.96875 796.90625 1314.125 813.234375 c 0 - 1334.28125 829.5625 1358.65625 842.21875 1387.5625 851.125 c 0 - 1416.3125 860.109375 1448.65625 864.5625 1484.4375 864.5625 c 0 - 1535.0625 864.5625 1578.8125 855.8125 1616 838.234375 c 0 - 1653.03125 820.578125 1684.75 795.1875 1711 761.90625 c 1 - 1685.73925781 739.510742188 1660.47949219 717.114257812 1635.21875 694.71875 c 1 - 1617.875 717.0625 1596.78125 735.03125 1571.78125 748.46875 c 0 - 1546.9375 761.90625 1515.84375 768.625 1478.65625 768.625 c 0 - 1440.375 768.625 1410.53125 760.890625 1389.4375 745.578125 c 0 - 1368.34375 730.1875 1357.71875 707.765625 1357.71875 678.390625 c 0 - 1357.71875 650.1875 1366.3125 629.25 1383.65625 615.5 c 0 - 1401 601.75 1427.875 591.28125 1464.28125 584.25 c 1 - 1484.125 580.109375 1503.96875 575.96875 1523.8125 571.828125 c 1 - 1591 559.015625 1640.21875 537.21875 1671.15625 506.515625 c 0 - 1702.25 475.8125 1717.71875 433.546875 1717.71875 379.796875 c 0 - 1717.71875 348.46875 1712.25 319.953125 1701.46875 294.328125 c 0 - 1690.53125 268.78125 1674.75 246.828125 1653.96875 228.625 c 0 - 1633.03125 210.34375 1607.71875 196.28125 1577.5625 186.359375 c 0 - 1547.5625 176.4375 1513.1875 171.515625 1474.90625 171.515625 c 0 -EndSplineSet -EndChar - -StartChar: uniE110 -Encoding: 57616 57616 17 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 99.2002 116.406<1160.36 1475.04> 470.001 112.793<1160.36 1447.48> 820.392 116.406<1160.36 1447.48> -VStem: 143.168 140.43<796.368 936.798> 716.801 136.816<799.981 936.798> 1024.81 135.547<215.606 470.001 582.794 820.392> 1475.98 142.773<609.386 793.799> 1505.96 142.871<244.11 441.498> -DStem2: 283.598 936.798 143.168 936.798 0.311738 -0.950168<0 736.986> 501.957 231.231 575.199 99.2002 0.291293 0.956634<0 737.551> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 99.2002 116.406<1160.36 1475.04> 470.001 112.793<1160.36 1447.48> 820.392 116.406<1160.36 1447.48> -VStem: 143.168 140.43<796.368 936.798> 716.801 136.816<799.981 936.798> 1024.81 135.547<215.606 470.001 582.794 820.392> 1475.98 142.773<609.386 793.799> 1505.96 142.871<244.11 441.498> -DStem2: 283.598 936.798 143.168 936.798 0.311738 -0.950168<0 736.986> 501.957 231.231 575.199 99.2002 0.291293 0.956634<0 737.551> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -417.97265625 99.2001953125 m 1xfc - 326.37109375 378.399414062 234.76953125 657.598632812 143.16796875 936.797851562 c 1 - 189.977539062 936.797851562 236.788085938 936.797851562 283.59765625 936.797851562 c 1 - 327.999023438 798.809570312 372.399414062 660.821289062 416.80078125 522.833007812 c 1 - 443.590820312 425.631835938 470.381835938 328.431640625 497.171875 231.231445312 c 1 - 498.766601562 231.231445312 500.362304688 231.231445312 501.95703125 231.231445312 c 1 - 529.170898438 328.431640625 556.383789062 425.631835938 583.59765625 522.833007812 c 1 - 627.999023438 660.821289062 672.399414062 798.809570312 716.80078125 936.797851562 c 1 - 762.40625 936.797851562 808.01171875 936.797851562 853.6171875 936.797851562 c 1 - 760.811523438 657.598632812 668.004882812 378.399414062 575.19921875 99.2001953125 c 1 - 522.790039062 99.2001953125 470.381835938 99.2001953125 417.97265625 99.2001953125 c 1xfc -1024.80859375 936.797851562 m 1 - 1148.40917969 936.797851562 1272.00878906 936.797851562 1395.609375 936.797851562 c 1 - 1465.140625 936.797851562 1519.828125 917.168945312 1559.37890625 878.008789062 c 0 - 1599.02734375 838.848632812 1618.75390625 786.407226562 1618.75390625 720.782226562 c 0xfe - 1618.75390625 689.629882812 1614.359375 662.969726562 1605.5703125 640.997070312 c 0 - 1596.78125 619.024414062 1585.55078125 600.958007812 1571.9765625 586.993164062 c 0 - 1558.40234375 573.028320312 1542.77734375 562.579101562 1525.19921875 555.840820312 c 0 - 1507.62109375 549.004882812 1490.43359375 544.805664062 1473.5390625 543.243164062 c 1 - 1473.5390625 540.833984375 1473.5390625 538.424804688 1473.5390625 536.016601562 c 1 - 1490.43359375 535.235351562 1508.98828125 531.231445312 1529.3984375 524.004882812 c 0 - 1549.80859375 516.778320312 1568.75390625 505.352539062 1586.4296875 489.825195312 c 0 - 1604.0078125 474.200195312 1618.75390625 454.180664062 1630.765625 429.766601562 c 0 - 1642.77734375 405.352539062 1648.83203125 375.567382812 1648.83203125 340.411132812 c 0xfd - 1648.83203125 306.817382812 1643.36328125 275.176757812 1632.62109375 245.586914062 c 0 - 1621.78125 215.997070312 1606.7421875 190.411132812 1587.6015625 168.829101562 c 0 - 1568.36328125 147.247070312 1545.609375 130.157226562 1519.14453125 117.754882812 c 0 - 1492.77734375 105.352539062 1463.96875 99.2001953125 1432.81640625 99.2001953125 c 1 - 1296.81347656 99.2001953125 1160.81152344 99.2001953125 1024.80859375 99.2001953125 c 1 - 1024.80859375 378.399414062 1024.80859375 657.598632812 1024.80859375 936.797851562 c 1 -1160.35546875 215.606445312 m 1 - 1237.95996094 215.606445312 1315.56347656 215.606445312 1393.16796875 215.606445312 c 1 - 1428.421875 215.606445312 1455.9609375 224.786132812 1475.98046875 243.243164062 c 0xfe - 1496 261.602539062 1505.9609375 287.969726562 1505.9609375 322.442382812 c 1 - 1505.9609375 336.016601562 1505.9609375 349.590820312 1505.9609375 363.165039062 c 1xfd - 1505.9609375 397.637695312 1496 424.004882812 1475.98046875 442.364257812 c 0 - 1455.9609375 460.821289062 1428.421875 470.000976562 1393.16796875 470.000976562 c 1 - 1315.56347656 470.000976562 1237.95996094 470.000976562 1160.35546875 470.000976562 c 1 - 1160.35546875 385.202148438 1160.35546875 300.404296875 1160.35546875 215.606445312 c 1 -1160.35546875 582.793945312 m 1 - 1230.375 582.793945312 1300.39453125 582.793945312 1370.4140625 582.793945312 c 1 - 1404.0078125 582.793945312 1429.984375 591.387695312 1448.34375 608.575195312 c 0 - 1466.80078125 625.762695312 1475.98046875 650.372070312 1475.98046875 682.403320312 c 1 - 1475.98046875 695.196289062 1475.98046875 707.989257812 1475.98046875 720.782226562 c 1 - 1475.98046875 752.813476562 1466.80078125 777.422851562 1448.34375 794.610351562 c 0 - 1429.984375 811.797851562 1404.0078125 820.391601562 1370.4140625 820.391601562 c 1 - 1300.39453125 820.391601562 1230.375 820.391601562 1160.35546875 820.391601562 c 1 - 1160.35546875 741.192382812 1160.35546875 661.993164062 1160.35546875 582.793945312 c 1 -EndSplineSet -EndChar - -StartChar: uniE111 -Encoding: 57617 57617 18 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -247.66 88.2812<529.736 717.81 1048.08 1247.08> 66.2461 92.1094<1077.25 1236.62> 99.8398 87.3438<550.762 718.015> 354.215 91.1719<1056.64 1244.29> 629.84 90.2344<1027.95 1216.16 1322.72 1485.92> 1221.17 78.75<1171.98 1216.16> -VStem: 306.078 103.672<629.84 1142.5> 387.641 112.344<-127.222 67.6086> 722.719 103.672<787.262 1299.92> 747.641 111.406<-127.222 67.6086> 1216.16 106.562<720.074 1221.17> 1267.33 114.219<185.593 328.991> 1280.77 112.344<-126.27 38.5227> -DStem2: 645.922 929.371 486.547 1000.39 0.508638 -0.860981<-299.653 157.446> 986.703 1114.61 1052.95 1055.15 0.683543 0.72991<1.41729 229.335> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -247.66 88.2812<529.736 717.81 1048.08 1247.08> 66.2461 92.1094<1077.25 1236.62> 99.8398 87.3438<550.762 718.015> 354.215 91.1719<1056.64 1244.29> 629.84 90.2344<1027.95 1216.16 1322.72 1485.92> 1221.17 78.75<1171.98 1216.16> -VStem: 306.078 103.672<629.84 1142.5> 387.641 112.344<-127.222 67.6086> 722.719 103.672<787.262 1299.92> 747.641 111.406<-127.222 67.6086> 1216.16 106.562<720.074 1221.17> 1267.33 114.219<185.593 328.991> 1280.77 112.344<-126.27 38.5227> -DStem2: 645.922 929.371 486.547 1000.39 0.508638 -0.860981<-299.653 157.446> 986.703 1114.61 1052.95 1055.15 0.683543 0.72991<1.41729 229.335> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -623.8125 -247.66015625 m 0xbd40 - 586.703125 -247.66015625 553.578125 -241.64453125 524.4375 -229.45703125 c 0 - 495.296875 -217.26953125 470.6875 -199.84765625 450.53125 -177.11328125 c 0 - 430.375 -154.37890625 414.828125 -127.03515625 403.96875 -95.08203125 c 0 - 393.109375 -63.05078125 387.640625 -26.87890625 387.640625 13.43359375 c 0xbd40 - 387.640625 62.02734375 394.984375 107.80859375 409.75 150.69921875 c 0xbe - 424.4375 193.58984375 443.34375 232.96484375 466.390625 268.74609375 c 0 - 489.4375 304.60546875 515.140625 336.48046875 543.65625 364.29296875 c 0 - 572.09375 392.10546875 600.140625 415.30859375 627.640625 433.90234375 c 1 - 675.635742188 433.90234375 723.629882812 433.90234375 771.625 433.90234375 c 1 - 733.890625 406.40234375 699.984375 379.83984375 669.90625 354.21484375 c 0 - 639.828125 328.58984375 613.578125 302.41796875 591.15625 275.54296875 c 0 - 568.734375 248.58984375 550.0625 220.15234375 534.984375 190.07421875 c 0 - 519.984375 159.99609375 508.265625 127.02734375 499.984375 91.16796875 c 1 - 502.223632812 90.54296875 504.463867188 89.91796875 506.703125 89.29296875 c 1 - 513.734375 102.73046875 521.859375 115.30859375 531.15625 127.18359375 c 0 - 540.453125 139.05859375 551.3125 149.44921875 563.8125 158.35546875 c 0xdd - 576.3125 167.33984375 590.53125 174.37109375 606.546875 179.52734375 c 0 - 622.5625 184.60546875 641.078125 187.18359375 662.171875 187.18359375 c 0 - 690.375 187.18359375 716.46875 182.41796875 740.453125 172.80859375 c 0 - 764.4375 163.19921875 785.21875 149.29296875 802.875 131.01171875 c 0 - 820.453125 112.80859375 834.203125 90.85546875 844.125 65.23046875 c 0 - 854.046875 39.68359375 859.046875 11.16796875 859.046875 -20.16015625 c 0 - 859.046875 -54.06640625 853.421875 -85.00390625 842.171875 -112.81640625 c 0 - 831 -140.62890625 815.140625 -164.45703125 794.671875 -184.30078125 c 0 - 774.203125 -204.14453125 749.4375 -219.69140625 720.296875 -230.86328125 c 0 - 691.15625 -242.11328125 659.046875 -247.66015625 623.8125 -247.66015625 c 0xbd40 -623.8125 -159.37890625 m 256 - 662.875 -159.37890625 693.265625 -148.98828125 714.984375 -128.20703125 c 0 - 736.78125 -107.34765625 747.640625 -76.80078125 747.640625 -36.48828125 c 1 - 747.640625 -32.0087890625 747.640625 -27.529296875 747.640625 -23.05078125 c 1 - 747.640625 17.26171875 736.78125 47.80859375 714.984375 68.58984375 c 0 - 693.265625 89.44921875 662.875 99.83984375 623.8125 99.83984375 c 256 - 584.75 99.83984375 554.359375 89.44921875 532.640625 68.58984375 c 0 - 510.84375 47.80859375 499.984375 17.26171875 499.984375 -23.05078125 c 1 - 499.984375 -27.529296875 499.984375 -32.0087890625 499.984375 -36.48828125 c 1 - 499.984375 -76.80078125 510.84375 -107.34765625 532.640625 -128.20703125 c 0 - 554.359375 -148.98828125 584.75 -159.37890625 623.8125 -159.37890625 c 256 -1145.375 158.35546875 m 1xdc08 - 1187.015625 158.35546875 1217.71875 167.18359375 1237.5625 184.76171875 c 0 - 1257.40625 202.41796875 1267.328125 224.918945312 1267.328125 252.49609375 c 1 - 1267.328125 254.736328125 1267.328125 256.975585938 1267.328125 259.21484375 c 1 - 1267.328125 289.918945312 1257.71875 313.43359375 1238.5 329.76171875 c 0 - 1219.359375 346.08984375 1193.421875 354.21484375 1160.765625 354.21484375 c 0 - 1128.734375 354.21484375 1101.546875 347.02734375 1079.203125 332.65234375 c 0 - 1056.78125 318.19921875 1037.875 298.19921875 1022.5625 272.65234375 c 1 - 998.551757812 293.43359375 974.541992188 314.21484375 950.53125 334.99609375 c 1 - 960.765625 349.76171875 972.328125 363.82421875 985.0625 377.26171875 c 0 - 997.875 390.69921875 1012.953125 402.41796875 1030.21875 412.33984375 c 0 - 1047.484375 422.26171875 1067.015625 430.23046875 1088.734375 436.32421875 c 0 - 1110.53125 442.41796875 1135.453125 445.38671875 1163.65625 445.38671875 c 0 - 1194.984375 445.38671875 1224.125 441.55859375 1251 433.90234375 c 0 - 1277.875 426.24609375 1300.921875 414.83984375 1320.140625 399.83984375 c 0 - 1339.359375 384.76171875 1354.359375 366.55859375 1365.21875 345.07421875 c 0 - 1376.15625 323.66796875 1381.546875 299.528320312 1381.546875 272.65234375 c 0xdc10 - 1381.546875 251.48046875 1378.1875 232.33984375 1371.46875 214.99609375 c 0 - 1364.75 197.73046875 1355.453125 182.575195312 1343.65625 169.44921875 c 0 - 1331.78125 156.325195312 1318.03125 145.622070312 1302.40625 137.26171875 c 0 - 1286.703125 128.981445312 1270.21875 122.88671875 1252.953125 119.05859375 c 1 - 1252.953125 117.444335938 1252.953125 115.830078125 1252.953125 114.21484375 c 1 - 1272.09375 110.387695312 1290.21875 104.137695312 1307.171875 95.54296875 c 0 - 1324.125 86.87109375 1339.046875 75.69921875 1351.78125 61.87109375 c 0 - 1364.59375 48.12109375 1374.671875 31.79296875 1382.015625 12.96484375 c 0 - 1389.4375 -5.94140625 1393.109375 -27.5029296875 1393.109375 -51.87890625 c 0 - 1393.109375 -81.33203125 1387.328125 -108.049804688 1375.84375 -132.03515625 c 0 - 1364.28125 -156.018554688 1348.109375 -176.643554688 1327.328125 -193.91015625 c 0 - 1306.546875 -211.252929688 1281.390625 -224.456054688 1251.9375 -233.75390625 c 0 - 1222.5625 -243.049804688 1189.90625 -247.66015625 1154.046875 -247.66015625 c 0 - 1122.71875 -247.66015625 1095.140625 -244.299804688 1071.46875 -237.58203125 c 0 - 1047.796875 -230.862304688 1026.859375 -221.95703125 1008.578125 -210.70703125 c 0 - 990.375 -199.53515625 974.359375 -186.72265625 960.609375 -172.34765625 c 0 - 946.859375 -157.97265625 934.828125 -143.05078125 924.59375 -127.66015625 c 1 - 951.15625 -106.87890625 977.71875 -86.09765625 1004.28125 -65.31640625 c 1 - 1012.640625 -78.75390625 1021.390625 -91.01953125 1030.6875 -102.26953125 c 0 - 1039.984375 -113.44140625 1050.53125 -123.05078125 1062.40625 -131.01953125 c 0 - 1074.203125 -139.065429688 1087.640625 -145.315429688 1102.71875 -149.76953125 c 0 - 1117.71875 -154.22265625 1134.828125 -156.48828125 1154.046875 -156.48828125 c 0 - 1194.984375 -156.48828125 1226.390625 -146.72265625 1248.109375 -127.19140625 c 0 - 1269.90625 -107.66015625 1280.765625 -80.62890625 1280.765625 -46.09765625 c 1 - 1280.765625 -43.857421875 1280.765625 -41.6181640625 1280.765625 -39.37890625 c 1 - 1280.765625 -4.8466796875 1269.28125 21.40234375 1246.234375 39.37109375 c 0 - 1223.1875 57.26171875 1190.53125 66.24609375 1148.265625 66.24609375 c 1 - 1124.59375 66.24609375 1100.921875 66.24609375 1077.25 66.24609375 c 1 - 1077.25 96.94921875 1077.25 127.65234375 1077.25 158.35546875 c 1 - 1099.95800781 158.35546875 1122.66699219 158.35546875 1145.375 158.35546875 c 1xdc08 -486.546875 1000.38671875 m 1 - 461.911132812 1047.75683594 437.276367188 1095.12695312 412.640625 1142.49609375 c 1 - 411.676757812 1142.49609375 410.713867188 1142.49609375 409.75 1142.49609375 c 1 - 409.75 971.611328125 409.75 800.725585938 409.75 629.83984375 c 1 - 375.192382812 629.83984375 340.635742188 629.83984375 306.078125 629.83984375 c 1 - 306.078125 853.19921875 306.078125 1076.55859375 306.078125 1299.91796875 c 1 - 346.390625 1299.91796875 386.703125 1299.91796875 427.015625 1299.91796875 c 1 - 499.984375 1176.40234375 572.953125 1052.88671875 645.921875 929.37109375 c 1 - 670.557617188 882.001953125 695.192382812 834.631835938 719.828125 787.26171875 c 1 - 720.791992188 787.26171875 721.754882812 787.26171875 722.71875 787.26171875 c 1 - 722.71875 958.147460938 722.71875 1129.03320312 722.71875 1299.91796875 c 1 - 757.276367188 1299.91796875 791.833007812 1299.91796875 826.390625 1299.91796875 c 1 - 826.390625 1076.55859375 826.390625 853.19921875 826.390625 629.83984375 c 1x9e80 - 786.078125 629.83984375 745.765625 629.83984375 705.453125 629.83984375 c 1 - 632.484375 753.35546875 559.515625 876.87109375 486.546875 1000.38671875 c 1 -1027.953125 629.83984375 m 1 - 1027.953125 659.91796875 1027.953125 689.99609375 1027.953125 720.07421875 c 1 - 1090.6875 720.07421875 1153.421875 720.07421875 1216.15625 720.07421875 c 1 - 1216.15625 887.10546875 1216.15625 1054.13671875 1216.15625 1221.16796875 c 1 - 1213.578125 1221.16796875 1211 1221.16796875 1208.421875 1221.16796875 c 1 - 1156.59863281 1165.83007812 1104.77636719 1110.49121094 1052.953125 1055.15234375 c 1 - 1030.87011719 1074.97070312 1008.78613281 1094.78808594 986.703125 1114.60546875 c 1 - 1043.65625 1176.37695312 1100.609375 1238.14746094 1157.5625 1299.91796875 c 1 - 1212.61425781 1299.91796875 1267.66699219 1299.91796875 1322.71875 1299.91796875 c 1 - 1322.71875 1106.63671875 1322.71875 913.35546875 1322.71875 720.07421875 c 1x9c20 - 1377.12011719 720.07421875 1431.52050781 720.07421875 1485.921875 720.07421875 c 1 - 1485.921875 689.99609375 1485.921875 659.91796875 1485.921875 629.83984375 c 1 - 1333.265625 629.83984375 1180.609375 629.83984375 1027.953125 629.83984375 c 1 -EndSplineSet -EndChar - -StartChar: uniE112 -Encoding: 57618 57618 19 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 171.516 96.9531<151.634 379.752 774.678 990.363 1414.68 1630.36> 767.609 96.9531<178.808 399.181 774.597 989.432 1414.6 1629.43> -VStem: 47.4062 107.5<611.387 747.68> 407.406 107.5<294.565 441.758> 601.625 115.156<330.807 708.111> 1241.62 115.156<330.807 708.111> -DStem2: 261.469 584.25 243.188 481.594 0.978916 -0.204262<-84.3815 149.558> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 171.516 96.9531<151.634 379.752 774.678 990.363 1414.68 1630.36> 767.609 96.9531<178.808 399.181 774.597 989.432 1414.6 1629.43> -VStem: 47.4062 107.5<611.387 747.68> 407.406 107.5<294.565 441.758> 601.625 115.156<330.807 708.111> 1241.62 115.156<330.807 708.111> -DStem2: 261.469 584.25 243.188 481.594 0.978916 -0.204262<-84.3815 149.558> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -271.9375 171.515625 m 0 - 215.6875 171.515625 167.875 181.75 128.5 202.21875 c 0 - 89.125 222.6875 55.375 250.1875 27.25 284.796875 c 1 - 52.1982421875 308.15625 77.1455078125 331.515625 102.09375 354.875 c 1 - 125.6875 326.046875 151.78125 304.25 180.21875 289.5625 c 0 - 208.8125 274.875 241.3125 267.453125 277.71875 267.453125 c 0 - 320.6875 267.453125 352.875 277.0625 374.75 296.28125 c 0 - 396.46875 315.5 407.40625 341.4375 407.40625 374.015625 c 0 - 407.40625 400.265625 399.59375 421.046875 384.28125 436.4375 c 0 - 368.96875 451.828125 341.78125 463.3125 302.71875 470.96875 c 1 - 282.875 474.510742188 263.03125 478.051757812 243.1875 481.59375 c 1 - 177.875 493.703125 128.96875 515.1875 96.3125 545.890625 c 0 - 63.65625 576.59375 47.40625 618.859375 47.40625 672.609375 c 0 - 47.40625 702.0625 52.875 728.78125 64.125 752.765625 c 0 - 75.375 776.75 91 796.90625 111.15625 813.234375 c 0 - 131.3125 829.5625 155.84375 842.21875 184.59375 851.125 c 0 - 213.34375 860.109375 245.6875 864.5625 281.625 864.5625 c 0 - 332.09375 864.5625 376 855.8125 413.03125 838.234375 c 0 - 450.21875 820.578125 481.9375 795.1875 508.1875 761.90625 c 1 - 482.875 739.510742188 457.5625 717.114257812 432.25 694.71875 c 1 - 415.0625 717.0625 393.96875 735.03125 368.96875 748.46875 c 0 - 343.96875 761.90625 312.875 768.625 275.84375 768.625 c 0 - 237.40625 768.625 207.71875 760.890625 186.46875 745.578125 c 0 - 165.375 730.1875 154.90625 707.765625 154.90625 678.390625 c 0 - 154.90625 650.1875 163.5 629.25 180.84375 615.5 c 0 - 198.03125 601.75 224.90625 591.28125 261.46875 584.25 c 1 - 281.3125 580.109375 301.15625 575.96875 321 571.828125 c 1 - 388.1875 559.015625 437.25 537.21875 468.34375 506.515625 c 0 - 499.28125 475.8125 514.90625 433.546875 514.90625 379.796875 c 0 - 514.90625 348.46875 509.4375 319.953125 498.5 294.328125 c 0 - 487.71875 268.78125 471.78125 246.828125 451 228.625 c 0 - 430.21875 210.34375 404.75 196.28125 374.75 186.359375 c 0 - 344.59375 176.4375 310.375 171.515625 271.9375 171.515625 c 0 -882.875 171.515625 m 0 - 795.21875 171.515625 726.3125 201.046875 676.46875 260.265625 c 0 - 626.46875 319.484375 601.625 405.421875 601.625 518.078125 c 0 - 601.625 574.328125 608.03125 623.9375 620.84375 666.828125 c 0 - 633.5 709.71875 652.09375 745.890625 676.46875 775.34375 c 0 - 700.84375 804.796875 730.375 826.984375 765.21875 842.0625 c 0 - 800.0625 857.0625 839.28125 864.5625 882.875 864.5625 c 0 - 941.15625 864.5625 989.90625 851.828125 1029.28125 826.203125 c 0 - 1068.65625 800.578125 1099.4375 762.84375 1121.9375 712.921875 c 1 - 1091.52050781 696.28125 1061.10449219 679.640625 1030.6875 663 c 1 - 1019.125 695.03125 1001.46875 720.421875 977.40625 739.328125 c 0 - 953.34375 758.234375 921.9375 767.609375 882.875 767.609375 c 0 - 831 767.609375 790.375 750.03125 761 714.875 c 0 - 731.46875 679.640625 716.78125 630.96875 716.78125 568.9375 c 1 - 716.78125 535.004882812 716.78125 501.073242188 716.78125 467.140625 c 1 - 716.78125 405.109375 731.46875 356.4375 761 321.203125 c 0 - 790.375 286.046875 831 268.46875 882.875 268.46875 c 0 - 923.1875 268.46875 956 278.859375 981.3125 299.640625 c 0 - 1006.46875 320.421875 1025.21875 347.140625 1037.40625 379.796875 c 1 - 1066.52050781 362.192382812 1095.63574219 344.588867188 1124.75 326.984375 c 1 - 1102.40625 278.390625 1071 240.265625 1030.6875 212.765625 c 0 - 990.375 185.265625 941.15625 171.515625 882.875 171.515625 c 0 -1522.875 171.515625 m 0 - 1435.21875 171.515625 1366.3125 201.046875 1316.46875 260.265625 c 0 - 1266.46875 319.484375 1241.625 405.421875 1241.625 518.078125 c 0 - 1241.625 574.328125 1248.03125 623.9375 1260.84375 666.828125 c 0 - 1273.5 709.71875 1292.09375 745.890625 1316.46875 775.34375 c 0 - 1340.84375 804.796875 1370.375 826.984375 1405.21875 842.0625 c 0 - 1440.0625 857.0625 1479.28125 864.5625 1522.875 864.5625 c 0 - 1581.15625 864.5625 1629.90625 851.828125 1669.28125 826.203125 c 0 - 1708.65625 800.578125 1739.4375 762.84375 1761.9375 712.921875 c 1 - 1731.52050781 696.28125 1701.10449219 679.640625 1670.6875 663 c 1 - 1659.125 695.03125 1641.46875 720.421875 1617.40625 739.328125 c 0 - 1593.34375 758.234375 1561.9375 767.609375 1522.875 767.609375 c 0 - 1471 767.609375 1430.375 750.03125 1401 714.875 c 0 - 1371.46875 679.640625 1356.78125 630.96875 1356.78125 568.9375 c 1 - 1356.78125 535.004882812 1356.78125 501.073242188 1356.78125 467.140625 c 1 - 1356.78125 405.109375 1371.46875 356.4375 1401 321.203125 c 0 - 1430.375 286.046875 1471 268.46875 1522.875 268.46875 c 0 - 1563.1875 268.46875 1596 278.859375 1621.3125 299.640625 c 0 - 1646.46875 320.421875 1665.21875 347.140625 1677.40625 379.796875 c 1 - 1706.52050781 362.192382812 1735.63574219 344.588867188 1764.75 326.984375 c 1 - 1742.40625 278.390625 1711 240.265625 1670.6875 212.765625 c 0 - 1630.375 185.265625 1581.15625 171.515625 1522.875 171.515625 c 0 -EndSplineSet -EndChar - -StartChar: uniE113 -Encoding: 57619 57619 20 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 183 89.2969<228.172 451.245 1380.3 1712.48> 453.703 90.2344<848.188 1057.36> 763.781 89.2969<228.172 451.245 848.188 1057.36 1280.45 1586.7> -VStem: 79.5156 109.453<309.775 726.303> 490.375 109.453<309.775 726.303> 746.391 101.797<183 453.703 543.938 762.844> 1076.62 108.516<563.279 743.506> -DStem2: 1265.14 274.172 1380.3 272.297 0.548962 0.835847<61.6492 585.764> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 183 89.2969<228.172 451.245 1380.3 1712.48> 453.703 90.2344<848.188 1057.36> 763.781 89.2969<228.172 451.245 848.188 1057.36 1280.45 1586.7> -VStem: 79.5156 109.453<309.775 726.303> 490.375 109.453<309.775 726.303> 746.391 101.797<183 453.703 543.938 762.844> 1076.62 108.516<563.279 743.506> -DStem2: 1265.14 274.172 1380.3 272.297 0.548962 0.835847<61.6492 585.764> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -339.671875 171.515625 m 256 - 299.359375 171.515625 263.1875 178.078125 231.234375 191.125 c 0 - 199.203125 204.25 171.859375 224.953125 149.125 253.078125 c 0 - 126.390625 281.203125 109.125 317.21875 97.25 361.046875 c 0 - 85.453125 404.953125 79.515625 457.21875 79.515625 518.078125 c 256 - 79.515625 578.859375 85.453125 631.125 97.25 675.03125 c 0 - 109.125 718.859375 126.390625 754.875 149.125 783 c 0 - 171.859375 811.125 199.203125 831.828125 231.234375 844.953125 c 0 - 263.1875 858.078125 299.359375 864.5625 339.671875 864.5625 c 256 - 379.984375 864.5625 416.15625 858.078125 448.1875 844.953125 c 0 - 480.140625 831.828125 507.5625 811.125 530.21875 783 c 0 - 552.953125 754.875 570.21875 718.859375 582.09375 675.03125 c 0 - 593.890625 631.125 599.828125 578.859375 599.828125 518.078125 c 256 - 599.828125 457.21875 593.890625 404.953125 582.09375 361.046875 c 0 - 570.21875 317.21875 552.953125 281.203125 530.21875 253.078125 c 0 - 507.5625 224.953125 480.140625 204.25 448.1875 191.125 c 0 - 416.15625 178.078125 379.984375 171.515625 339.671875 171.515625 c 256 -339.671875 261.75 m 256 - 387.71875 261.75 424.828125 277.21875 451.078125 308.3125 c 0 - 477.25 339.328125 490.375 382.375 490.375 437.375 c 1 - 490.375 491.151367188 490.375 544.926757812 490.375 598.703125 c 1 - 490.375 653.703125 477.25 696.75 451.078125 727.765625 c 0 - 424.828125 758.859375 387.71875 774.328125 339.671875 774.328125 c 256 - 291.703125 774.328125 254.59375 758.859375 228.34375 727.765625 c 0 - 202.09375 696.75 188.96875 653.703125 188.96875 598.703125 c 1 - 188.96875 544.926757812 188.96875 491.151367188 188.96875 437.375 c 1 - 188.96875 382.375 202.09375 339.328125 228.34375 308.3125 c 0 - 254.59375 277.21875 291.703125 261.75 339.671875 261.75 c 256 -746.390625 183 m 1 - 746.390625 406.359375 746.390625 629.71875 746.390625 853.078125 c 1 - 834.723632812 853.078125 923.057617188 853.078125 1011.390625 853.078125 c 1 - 1068.96875 853.078125 1112.328125 835.96875 1141.46875 801.75 c 0 - 1170.53125 767.453125 1185.140625 718.078125 1185.140625 653.390625 c 256 - 1185.140625 588.78125 1170.53125 539.328125 1141.46875 505.109375 c 0 - 1112.328125 470.8125 1068.96875 453.703125 1011.390625 453.703125 c 1 - 956.989257812 453.703125 902.588867188 453.703125 848.1875 453.703125 c 1 - 848.1875 363.46875 848.1875 273.234375 848.1875 183 c 1 - 814.254882812 183 780.323242188 183 746.390625 183 c 1 -848.1875 543.9375 m 1 - 899.698242188 543.9375 951.208007812 543.9375 1002.71875 543.9375 c 1 - 1027.015625 543.9375 1045.453125 550.1875 1057.953125 562.6875 c 0 - 1070.375 575.1875 1076.625 595.1875 1076.625 622.6875 c 1 - 1076.625 643.15625 1076.625 663.625 1076.625 684.09375 c 1 - 1076.625 711.671875 1070.375 731.671875 1057.953125 744.09375 c 0 - 1045.453125 756.59375 1027.015625 762.84375 1002.71875 762.84375 c 1 - 951.208007812 762.84375 899.698242188 762.84375 848.1875 762.84375 c 1 - 848.1875 689.875 848.1875 616.90625 848.1875 543.9375 c 1 -1712.484375 183 m 1 - 1563.37011719 183 1414.25488281 183 1265.140625 183 c 1 - 1265.140625 213.390625 1265.140625 243.78125 1265.140625 274.171875 c 1 - 1372.328125 437.375 1479.515625 600.578125 1586.703125 763.78125 c 1 - 1484.62011719 763.78125 1382.53613281 763.78125 1280.453125 763.78125 c 1 - 1280.453125 793.546875 1280.453125 823.3125 1280.453125 853.078125 c 1 - 1420.94824219 853.078125 1561.44238281 853.078125 1701.9375 853.078125 c 1 - 1701.9375 822.6875 1701.9375 792.296875 1701.9375 761.90625 c 1 - 1594.72363281 598.703125 1487.51074219 435.5 1380.296875 272.296875 c 1 - 1491.02636719 272.296875 1601.75488281 272.296875 1712.484375 272.296875 c 1 - 1712.484375 242.53125 1712.484375 212.765625 1712.484375 183 c 1 -EndSplineSet -EndChar - -StartChar: uniE114 -Encoding: 57620 57620 21 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -247.516 96.0156<794.758 1115.46> 44.3594 95.9375<794.758 1085.7> 326.547 96.0156<794.758 1115.46> 607.016 96.9531<1094.81 1318.51> 885.375 95.0781<415.93 652.317> 1193.58 95<415.93 652.317 1084.89 1328.46> -VStem: 46.3203 108.438<-247.516 4.38833 82.7188 422.562> 307.492 108.438<618.5 885.375 980.453 1193.58> 435.07 126.719<295.844 422.562> 450.461 130.547<-247.516 -116.969> 686.32 108.438<-151.5 44.3594 140.297 326.547 1002.69 1171.26> 917.727 116.172<767.663 1139.42> 1379.45 116.172<767.662 1139.42> 1404.68 108.516<-247.516 79.9207> -DStem2: 158.586 82.7188 246.945 65.4531 0.660468 0.750854<0 45.3946 144.153 437.782> 322.805 140.297 246.945 65.4531 0.545149 -0.838339<21.3897 394.71> 1298.12 422.562 1174.29 422.562 0.479608 -0.877483<0 340.284> 1464.21 123.969 1513.2 18.4219 0.477483 0.878641<0 339.836> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -247.516 96.0156<794.758 1115.46> 44.3594 95.9375<794.758 1085.7> 326.547 96.0156<794.758 1115.46> 607.016 96.9531<1094.81 1318.51> 885.375 95.0781<415.93 652.317> 1193.58 95<415.93 652.317 1084.89 1328.46> -VStem: 46.3203 108.438<-247.516 4.38833 82.7188 422.562> 307.492 108.438<618.5 885.375 980.453 1193.58> 435.07 126.719<295.844 422.562> 450.461 130.547<-247.516 -116.969> 686.32 108.438<-151.5 44.3594 140.297 326.547 1002.69 1171.26> 917.727 116.172<767.663 1139.42> 1379.45 116.172<767.662 1139.42> 1404.68 108.516<-247.516 79.9207> -DStem2: 158.586 82.7188 246.945 65.4531 0.660468 0.750854<0 45.3946 144.153 437.782> 322.805 140.297 246.945 65.4531 0.545149 -0.838339<21.3897 394.71> 1298.12 422.562 1174.29 422.562 0.479608 -0.877483<0 340.284> 1464.21 123.969 1513.2 18.4219 0.477483 0.878641<0 339.836> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -246.9453125 65.453125 m 1xff70 - 216.215820312 30.244140625 185.487304688 -4.9638671875 154.7578125 -40.171875 c 1 - 154.7578125 -109.287109375 154.7578125 -178.401367188 154.7578125 -247.515625 c 1 - 118.612304688 -247.515625 82.4658203125 -247.515625 46.3203125 -247.515625 c 5 - 46.3203125 -24.15625 46.3203125 199.203125 46.3203125 422.5625 c 1 - 82.4658203125 422.5625 118.612304688 422.5625 154.7578125 422.5625 c 1 - 154.7578125 309.28125 154.7578125 196 154.7578125 82.71875 c 1 - 156.034179688 82.71875 157.309570312 82.71875 158.5859375 82.71875 c 1 - 190.590820312 123.369140625 222.596679688 164.020507812 254.6015625 204.671875 c 1 - 314.7578125 277.301757812 374.9140625 349.931640625 435.0703125 422.5625 c 1 - 477.309570312 422.5625 519.549804688 422.5625 561.7890625 422.5625 c 1xffb0 - 482.127929688 328.473632812 402.465820312 234.384765625 322.8046875 140.296875 c 1 - 408.872070312 11.025390625 494.940429688 -118.245117188 581.0078125 -247.515625 c 1 - 537.4921875 -247.515625 493.9765625 -247.515625 450.4609375 -247.515625 c 1 - 382.622070312 -143.193359375 314.784179688 -38.8701171875 246.9453125 65.453125 c 1xff70 -686.3203125 -247.515625 m 1 - 686.3203125 -24.15625 686.3203125 199.203125 686.3203125 422.5625 c 1 - 829.3671875 422.5625 972.4140625 422.5625 1115.4609375 422.5625 c 1 - 1115.4609375 390.556640625 1115.4609375 358.551757812 1115.4609375 326.546875 c 1 - 1008.55957031 326.546875 901.659179688 326.546875 794.7578125 326.546875 c 1 - 794.7578125 264.462890625 794.7578125 202.379882812 794.7578125 140.296875 c 1 - 891.737304688 140.296875 988.715820312 140.296875 1085.6953125 140.296875 c 1 - 1085.6953125 108.317382812 1085.6953125 76.337890625 1085.6953125 44.359375 c 1 - 988.715820312 44.359375 891.737304688 44.359375 794.7578125 44.359375 c 1 - 794.7578125 -20.927734375 794.7578125 -86.2138671875 794.7578125 -151.5 c 1 - 901.659179688 -151.5 1008.55957031 -151.5 1115.4609375 -151.5 c 1 - 1115.4609375 -183.505859375 1115.4609375 -215.510742188 1115.4609375 -247.515625 c 1 - 972.4140625 -247.515625 829.3671875 -247.515625 686.3203125 -247.515625 c 1 -1404.6796875 -247.515625 m 1xff34 - 1404.6796875 -159.521484375 1404.6796875 -71.5263671875 1404.6796875 16.46875 c 1 - 1327.8828125 151.833007812 1251.0859375 287.197265625 1174.2890625 422.5625 c 1 - 1215.56542969 422.5625 1256.84082031 422.5625 1298.1171875 422.5625 c 1 - 1352.51855469 323.03125 1406.91894531 223.5 1461.3203125 123.96875 c 1 - 1462.28417969 123.96875 1463.24707031 123.96875 1464.2109375 123.96875 c 1 - 1518.29980469 223.5 1572.38769531 323.03125 1626.4765625 422.5625 c 1 - 1666.1640625 422.5625 1705.8515625 422.5625 1745.5390625 422.5625 c 1 - 1668.09082031 287.848632812 1590.64355469 153.134765625 1513.1953125 18.421875 c 1 - 1513.1953125 -70.224609375 1513.1953125 -158.870117188 1513.1953125 -247.515625 c 1 - 1477.0234375 -247.515625 1440.8515625 -247.515625 1404.6796875 -247.515625 c 1xff34 -307.4921875 618.5 m 1 - 307.4921875 841.859375 307.4921875 1065.21875 307.4921875 1288.578125 c 1 - 403.481445312 1288.578125 499.471679688 1288.578125 595.4609375 1288.578125 c 1 - 657.5703125 1288.578125 705.5390625 1270.375 739.4453125 1233.890625 c 0 - 773.4296875 1197.40625 790.3828125 1148.421875 790.3828125 1087.015625 c 256 - 790.3828125 1025.53125 773.4296875 976.546875 739.4453125 940.0625 c 0 - 705.5390625 903.65625 657.5703125 885.375 595.4609375 885.375 c 1 - 535.6171875 885.375 475.7734375 885.375 415.9296875 885.375 c 1 - 415.9296875 796.416015625 415.9296875 707.458007812 415.9296875 618.5 c 1 - 379.784179688 618.5 343.637695312 618.5 307.4921875 618.5 c 1 -415.9296875 980.453125 m 1 - 473.534179688 980.453125 531.137695312 980.453125 588.7421875 980.453125 c 1 - 616.2421875 980.453125 637.7265625 987.640625 653.0390625 1002.015625 c 0 - 668.4296875 1016.390625 676.0859375 1037.09375 676.0859375 1063.96875 c 1 - 676.0859375 1079.30664062 676.0859375 1094.64550781 676.0859375 1109.984375 c 1 - 676.0859375 1136.9375 668.4296875 1157.5625 653.0390625 1171.9375 c 0 - 637.7265625 1186.3125 616.2421875 1193.578125 588.7421875 1193.578125 c 1 - 531.137695312 1193.578125 473.534179688 1193.578125 415.9296875 1193.578125 c 1 - 415.9296875 1122.53613281 415.9296875 1051.49414062 415.9296875 980.453125 c 1 -1206.7109375 607.015625 m 256 - 1163.1171875 607.015625 1123.6640625 614.515625 1088.1171875 629.515625 c 0 - 1052.5703125 644.59375 1022.1796875 666.624023438 996.9453125 695.765625 c 0 - 971.6328125 724.90625 952.1015625 761.078125 938.3515625 804.28125 c 0 - 924.6015625 847.484375 917.7265625 897.25 917.7265625 953.578125 c 256 - 917.7265625 1009.828125 924.6015625 1059.59375 938.3515625 1102.796875 c 0 - 952.1015625 1146 971.6328125 1182.171875 996.9453125 1211.3125 c 0 - 1022.1796875 1240.453125 1052.5703125 1262.48339844 1088.1171875 1277.5625 c 0 - 1123.6640625 1292.56152344 1163.1171875 1300.0625 1206.7109375 1300.0625 c 256 - 1250.2265625 1300.0625 1289.6796875 1292.5625 1325.2265625 1277.5625 c 0 - 1360.7734375 1262.48339844 1391.1640625 1240.45214844 1416.3984375 1211.3125 c 0 - 1441.7109375 1182.171875 1461.2421875 1146 1474.9921875 1102.796875 c 0 - 1488.7421875 1059.59375 1495.6171875 1009.82714844 1495.6171875 953.578125 c 256xff38 - 1495.6171875 897.25 1488.7421875 847.483398438 1474.9921875 804.28125 c 0 - 1461.2421875 761.077148438 1441.7109375 724.905273438 1416.3984375 695.765625 c 0 - 1391.1640625 666.625 1360.7734375 644.59375 1325.2265625 629.515625 c 0 - 1289.6796875 614.515625 1250.2265625 607.015625 1206.7109375 607.015625 c 256 -1206.7109375 703.96875 m 0 - 1232.2578125 703.96875 1255.7734375 708.421875 1277.2578125 717.40625 c 0 - 1298.6640625 726.3125 1316.9453125 739.28125 1331.9453125 756.234375 c 0 - 1347.0234375 773.186523438 1358.6640625 793.890625 1367.0234375 818.1875 c 0 - 1375.3046875 842.484375 1379.4453125 869.983398438 1379.4453125 900.765625 c 1 - 1379.4453125 935.947265625 1379.4453125 971.129882812 1379.4453125 1006.3125 c 1 - 1379.4453125 1037.09375 1375.3046875 1064.59277344 1367.0234375 1088.890625 c 0 - 1358.6640625 1113.18652344 1347.0234375 1133.890625 1331.9453125 1150.84375 c 0 - 1316.9453125 1167.79589844 1298.6640625 1180.76464844 1277.2578125 1189.671875 c 0 - 1255.7734375 1198.65625 1232.2578125 1203.109375 1206.7109375 1203.109375 c 0 - 1180.4609375 1203.109375 1156.7890625 1198.65625 1135.6171875 1189.671875 c 0 - 1114.5234375 1180.765625 1096.3984375 1167.796875 1081.3984375 1150.84375 c 0 - 1066.3203125 1133.890625 1054.6796875 1113.18652344 1046.3203125 1088.890625 c 0 - 1038.0390625 1064.59277344 1033.8984375 1037.09375 1033.8984375 1006.3125 c 1 - 1033.8984375 971.129882812 1033.8984375 935.947265625 1033.8984375 900.765625 c 1 - 1033.8984375 869.983398438 1038.0390625 842.484375 1046.3203125 818.1875 c 0 - 1054.6796875 793.890625 1066.3203125 773.186523438 1081.3984375 756.234375 c 0 - 1096.3984375 739.280273438 1114.5234375 726.311523438 1135.6171875 717.40625 c 0 - 1156.7890625 708.420898438 1180.4609375 703.96875 1206.7109375 703.96875 c 0 -EndSplineSet -EndChar - -StartChar: uniE115 -Encoding: 57621 57621 22 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 15.5 139.688<684.242 1061.86> 460.461 135.352<684.242 1028.79> 880.93 139.688<684.242 1028.79> -VStem: 521.586 162.656<155.188 460.461 595.812 880.93> 1062.99 171.328<627.723 849.019> 1098.97 171.445<189.391 426.257> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 1 -WasModified: 1 -WasOrder2: 0 -Layer: 1 -Width: 1792 -VWidth: 1687 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 -SplineSet -0 15.5 m 5 -NamedP: "1-char" - 1792 15.5 l 1029 -0 1020.6171875 m 5 -NamedP: "1-char" - 1792 1020.6171875 l 1029 -EndSplineSet -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -521.5859375 1020.6171875 m 5xf4 - 669.90625 1020.6171875 818.2265625 1020.6171875 966.546875 1020.6171875 c 1 - 1049.984375 1020.6171875 1115.609375 997.0625 1163.0703125 950.0703125 c 0 - 1210.6484375 903.078125 1234.3203125 840.1484375 1234.3203125 761.3984375 c 0xf8 - 1234.3203125 724.015625 1229.046875 692.0234375 1218.5 665.65625 c 0 - 1207.953125 639.2890625 1194.4765625 617.609375 1178.1875 600.8515625 c 0 - 1161.8984375 584.09375 1143.1484375 571.5546875 1122.0546875 563.46875 c 0 - 1100.9609375 555.265625 1080.3359375 550.2265625 1060.0625 548.3515625 c 1 - 1060.0625 545.4609375 1060.0625 542.5703125 1060.0625 539.6796875 c 1 - 1080.3359375 538.7421875 1102.6015625 533.9375 1127.09375 525.265625 c 0 - 1151.5859375 516.59375 1174.3203125 502.8828125 1195.53125 484.25 c 0 - 1216.625 465.5 1234.3203125 441.4765625 1248.734375 412.1796875 c 0 - 1263.1484375 382.8828125 1270.4140625 347.140625 1270.4140625 304.953125 c 0 - 1270.4140625 264.640625 1263.8515625 226.671875 1250.9609375 191.1640625 c 0 - 1237.953125 155.65625 1219.90625 124.953125 1196.9375 99.0546875 c 0 - 1173.8515625 73.15625 1146.546875 52.6484375 1114.7890625 37.765625 c 0 - 1083.1484375 22.8828125 1048.578125 15.5 1011.1953125 15.5 c 5 - 847.9921875 15.5 684.7890625 15.5 521.5859375 15.5 c 1 - 521.5859375 350.5390625 521.5859375 685.578125 521.5859375 1020.6171875 c 5xf4 -684.2421875 155.1875 m 1 - 777.3671875 155.1875 870.4921875 155.1875 963.6171875 155.1875 c 1 - 1005.921875 155.1875 1038.96875 166.203125 1062.9921875 188.3515625 c 0xf8 - 1087.015625 210.3828125 1098.96875 242.0234375 1098.96875 283.390625 c 1 - 1098.96875 299.6796875 1098.96875 315.96875 1098.96875 332.2578125 c 1xf4 - 1098.96875 373.625 1087.015625 405.265625 1062.9921875 427.296875 c 0 - 1038.96875 449.4453125 1005.921875 460.4609375 963.6171875 460.4609375 c 1 - 870.4921875 460.4609375 777.3671875 460.4609375 684.2421875 460.4609375 c 1 - 684.2421875 358.703125 684.2421875 256.9453125 684.2421875 155.1875 c 1 -684.2421875 595.8125 m 1 - 768.265625 595.8125 852.2890625 595.8125 936.3125 595.8125 c 1 - 976.625 595.8125 1007.796875 606.125 1029.828125 626.75 c 0 - 1051.9765625 647.375 1062.9921875 676.90625 1062.9921875 715.34375 c 1 - 1062.9921875 730.6953125 1062.9921875 746.046875 1062.9921875 761.3984375 c 1 - 1062.9921875 799.8359375 1051.9765625 829.3671875 1029.828125 849.9921875 c 0 - 1007.796875 870.6171875 976.625 880.9296875 936.3125 880.9296875 c 1 - 852.2890625 880.9296875 768.265625 880.9296875 684.2421875 880.9296875 c 1 - 684.2421875 785.890625 684.2421875 690.8515625 684.2421875 595.8125 c 1 -EndSplineSet -EndChar - -StartChar: uniE116 -Encoding: 57622 57622 23 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -66.1094 93.125<474.359 672.172> 322.719 99.8438<559.262 588.09> 607.016 95.9375<328.301 554.086> 618.5 124.766<964.387 984.548 1352.16 1364.12> 1204.12 95.9375<353.87 572.282> -VStem: 222.406 107.5<1046.89 1183.18> 279.516 110.312<-247.516 -137.203> 582.406 107.5<730.065 877.258> 746.859 110.391<1178.19 1288.58> 759.516 113.281<-247.516 -134.234> 980.922 103.75<-247.516 265.141> 1397.64 103.594<-90.0938 422.562> 1483.19 106.562<1182.02 1288.58> -DStem2: 279.516 -247.516 389.828 -247.516 0.303392 0.952866<33.468 224.101 320.706 631.909> 436.469 1019.75 418.188 917.094 0.978916 -0.204262<-84.378 149.631> 644.359 422.562 576.078 322.719 0.306233 -0.951957<74.137 385.061 481.942 673.15> 857.25 1288.58 746.859 1288.58 0.206752 -0.978393<0 557.355> 975.297 743.266 1027.17 618.5 0.24367 0.969858<0 458.809> 1320.77 52.0156 1161.39 123.031 0.508638 -0.860981<-299.653 157.446> 1229.75 1288.58 1167.33 1168.58 0.238997 -0.97102<101.604 559.948> 1364.12 744.281 1424.59 618.5 0.213693 0.976901<0 557.167> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -66.1094 93.125<474.359 672.172> 322.719 99.8438<559.262 588.09> 607.016 95.9375<328.301 554.086> 618.5 124.766<964.387 984.548 1352.16 1364.12> 1204.12 95.9375<353.87 572.282> -VStem: 222.406 107.5<1046.89 1183.18> 279.516 110.312<-247.516 -137.203> 582.406 107.5<730.065 877.258> 746.859 110.391<1178.19 1288.58> 759.516 113.281<-247.516 -134.234> 980.922 103.75<-247.516 265.141> 1397.64 103.594<-90.0938 422.562> 1483.19 106.562<1182.02 1288.58> -DStem2: 279.516 -247.516 389.828 -247.516 0.303392 0.952866<33.468 224.101 320.706 631.909> 436.469 1019.75 418.188 917.094 0.978916 -0.204262<-84.378 149.631> 644.359 422.562 576.078 322.719 0.306233 -0.951957<74.137 385.061 481.942 673.15> 857.25 1288.58 746.859 1288.58 0.206752 -0.978393<0 557.355> 975.297 743.266 1027.17 618.5 0.24367 0.969858<0 458.809> 1320.77 52.0156 1161.39 123.031 0.508638 -0.860981<-299.653 157.446> 1229.75 1288.58 1167.33 1168.58 0.238997 -0.97102<101.604 559.948> 1364.12 744.281 1424.59 618.5 0.213693 0.976901<0 557.167> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -759.515625 -247.515625 m 1xcb60 - 739.359375 -187.046875 719.203125 -126.578125 699.046875 -66.109375 c 1 - 615.504882812 -66.109375 531.963867188 -66.109375 448.421875 -66.109375 c 1 - 428.890625 -126.578125 409.359375 -187.046875 389.828125 -247.515625 c 1 - 353.057617188 -247.515625 316.286132812 -247.515625 279.515625 -247.515625 c 1 - 355.661132812 -24.15625 431.807617188 199.203125 507.953125 422.5625 c 1 - 553.421875 422.5625 598.890625 422.5625 644.359375 422.5625 c 1 - 720.504882812 199.203125 796.651367188 -24.15625 872.796875 -247.515625 c 1 - 835.036132812 -247.515625 797.276367188 -247.515625 759.515625 -247.515625 c 1xcb60 -576.078125 322.71875 m 1 - 574.515625 322.71875 572.953125 322.71875 571.390625 322.71875 c 1 - 539.046875 224.150390625 506.703125 125.583007812 474.359375 27.015625 c 1 - 540.296875 27.015625 606.234375 27.015625 672.171875 27.015625 c 1 - 640.140625 125.583007812 608.109375 224.150390625 576.078125 322.71875 c 1 -1161.390625 123.03125 m 1 - 1136.75488281 170.400390625 1112.12011719 217.770507812 1087.484375 265.140625 c 1 - 1086.546875 265.140625 1085.609375 265.140625 1084.671875 265.140625 c 1 - 1084.671875 94.2548828125 1084.671875 -76.630859375 1084.671875 -247.515625 c 1 - 1050.08886719 -247.515625 1015.50488281 -247.515625 980.921875 -247.515625 c 1 - 980.921875 -24.15625 980.921875 199.203125 980.921875 422.5625 c 1 - 1021.234375 422.5625 1061.546875 422.5625 1101.859375 422.5625 c 1 - 1174.828125 299.046875 1247.796875 175.53125 1320.765625 52.015625 c 1 - 1345.40136719 4.6455078125 1370.03613281 -42.724609375 1394.671875 -90.09375 c 1 - 1395.66113281 -90.09375 1396.65136719 -90.09375 1397.640625 -90.09375 c 1 - 1397.640625 80.791015625 1397.640625 251.676757812 1397.640625 422.5625 c 1 - 1432.171875 422.5625 1466.703125 422.5625 1501.234375 422.5625 c 1 - 1501.234375 199.203125 1501.234375 -24.15625 1501.234375 -247.515625 c 1xc930 - 1460.921875 -247.515625 1420.609375 -247.515625 1380.296875 -247.515625 c 1 - 1307.328125 -124 1234.359375 -0.484375 1161.390625 123.03125 c 1 -447.015625 607.015625 m 0xed20 - 390.6875 607.015625 342.875 617.249023438 303.5 637.71875 c 0 - 264.125 658.1875 230.375 685.6875 202.25 720.296875 c 1 - 227.198242188 743.65625 252.145507812 767.015625 277.09375 790.375 c 1 - 300.765625 761.546875 326.859375 739.75 355.296875 725.0625 c 0 - 383.8125 710.375 416.3125 702.953125 452.796875 702.953125 c 0 - 495.6875 702.953125 527.953125 712.5625 549.75 731.78125 c 0 - 571.46875 751 582.40625 776.9375 582.40625 809.515625 c 0 - 582.40625 835.765625 574.671875 856.546875 559.359375 871.9375 c 0 - 543.96875 887.328125 516.78125 898.8125 477.71875 906.46875 c 1 - 457.875 910.009765625 438.03125 913.551757812 418.1875 917.09375 c 1 - 352.953125 929.203125 303.96875 950.6875 271.3125 981.390625 c 0 - 238.65625 1012.09375 222.40625 1054.359375 222.40625 1108.109375 c 0 - 222.40625 1137.5625 227.953125 1164.28125 239.203125 1188.265625 c 0 - 250.375 1212.25 266.078125 1232.40625 286.234375 1248.734375 c 0 - 306.390625 1265.0625 330.84375 1277.71875 359.671875 1286.625 c 0 - 388.421875 1295.609375 420.765625 1300.0625 456.625 1300.0625 c 0 - 507.171875 1300.0625 551 1291.3125 588.109375 1273.734375 c 0 - 625.21875 1256.078125 656.9375 1230.6875 683.1875 1197.40625 c 1 - 657.901367188 1175.00976562 632.614257812 1152.61425781 607.328125 1130.21875 c 1 - 590.0625 1152.5625 568.96875 1170.53125 543.96875 1183.96875 c 0 - 519.046875 1197.40625 487.953125 1204.125 450.84375 1204.125 c 0 - 412.484375 1204.125 382.71875 1196.390625 361.546875 1181.078125 c 0 - 340.453125 1165.6875 329.90625 1143.265625 329.90625 1113.890625 c 0 - 329.90625 1085.6875 338.5 1064.75 355.84375 1051 c 0 - 373.109375 1037.25 399.984375 1026.78125 436.46875 1019.75 c 1 - 456.3125 1015.609375 476.15625 1011.46875 496 1007.328125 c 1 - 563.1875 994.515625 612.328125 972.71875 643.34375 942.015625 c 0 - 674.359375 911.3125 689.90625 869.046875 689.90625 815.296875 c 0 - 689.90625 783.96875 684.4375 755.453125 673.578125 729.828125 c 0 - 662.71875 704.28125 646.859375 682.328125 626.078125 664.125 c 0 - 605.21875 645.84375 579.828125 631.78125 549.75 621.859375 c 0 - 519.671875 611.936523438 485.375 607.015625 447.015625 607.015625 c 0xed20 -905.21875 618.5 m 1xd9a8 - 852.432617188 841.859375 799.645507812 1065.21875 746.859375 1288.578125 c 1 - 783.65625 1288.578125 820.453125 1288.578125 857.25 1288.578125 c 1 - 879.958007812 1181.05175781 902.666992188 1073.52539062 925.375 966 c 1 - 941.078125 891.754882812 956.78125 817.509765625 972.484375 743.265625 c 1 - 973.421875 743.265625 974.359375 743.265625 975.296875 743.265625 c 1 - 993.239257812 817.509765625 1011.18261719 891.754882812 1029.125 966 c 1 - 1055.66113281 1073.52539062 1082.19824219 1181.05175781 1108.734375 1288.578125 c 1 - 1149.07324219 1288.578125 1189.41113281 1288.578125 1229.75 1288.578125 c 1 - 1255.97363281 1181.05175781 1282.19824219 1073.52539062 1308.421875 966 c 1 - 1326.02636719 892.09375 1343.62988281 818.1875 1361.234375 744.28125 c 1 - 1362.19824219 744.28125 1363.16113281 744.28125 1364.125 744.28125 c 1 - 1380.453125 818.1875 1396.78125 892.09375 1413.109375 966 c 1 - 1436.46875 1073.52539062 1459.828125 1181.05175781 1483.1875 1288.578125 c 1 - 1518.70800781 1288.578125 1554.22949219 1288.578125 1589.75 1288.578125 c 1 - 1534.69824219 1065.21875 1479.64550781 841.859375 1424.59375 618.5 c 1 - 1383.96875 618.5 1343.34375 618.5 1302.71875 618.5 c 1 - 1274.22949219 734.020507812 1245.73925781 849.541015625 1217.25 965.0625 c 1 - 1200.609375 1032.90039062 1183.96875 1100.73925781 1167.328125 1168.578125 c 1 - 1166.67675781 1168.578125 1166.02636719 1168.578125 1165.375 1168.578125 c 1 - 1148.421875 1100.73925781 1131.46875 1032.90039062 1114.515625 965.0625 c 1 - 1085.40136719 849.541015625 1056.28613281 734.020507812 1027.171875 618.5 c 1 - 986.520507812 618.5 945.870117188 618.5 905.21875 618.5 c 1xd9a8 -EndSplineSet -EndChar - -StartChar: uniE117 -Encoding: 57623 57623 24 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 624.17 96.0156<520.383 793.039> -VStem: 280.539 103.75<-241.846 270.811> 411.945 108.438<720.186 1294.25> 697.258 103.594<-84.4238 428.232> 938.195 120<-241.846 -121.846> 945.852 127.656<300.576 428.232> 1050.3 108.516<624.17 951.606> 1383.66 127.656<-241.846 -114.189 300.576 428.232> -DStem2: 620.383 57.6855 461.008 128.701 0.508638 -0.860981<-299.653 157.446> 943.742 1294.25 819.914 1294.25 0.479608 -0.877483<0 340.284> 938.195 -241.846 1058.2 -241.846 0.552681 0.833393<66.3217 372.475 510.607 804.036> 1073.51 428.232 945.852 428.232 0.546973 -0.83715<0 292.459 418.391 730.603> 1109.84 995.654 1158.82 890.107 0.477483 0.878641<0 339.836> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 624.17 96.0156<520.383 793.039> -VStem: 280.539 103.75<-241.846 270.811> 411.945 108.438<720.186 1294.25> 697.258 103.594<-84.4238 428.232> 938.195 120<-241.846 -121.846> 945.852 127.656<300.576 428.232> 1050.3 108.516<624.17 951.606> 1383.66 127.656<-241.846 -114.189 300.576 428.232> -DStem2: 620.383 57.6855 461.008 128.701 0.508638 -0.860981<-299.653 157.446> 943.742 1294.25 819.914 1294.25 0.479608 -0.877483<0 340.284> 938.195 -241.846 1058.2 -241.846 0.552681 0.833393<66.3217 372.475 510.607 804.036> 1073.51 428.232 945.852 428.232 0.546973 -0.83715<0 292.459 418.391 730.603> 1109.84 995.654 1158.82 890.107 0.477483 0.878641<0 339.836> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -461.0078125 128.701171875 m 1xf1 - 436.372070312 176.071289062 411.737304688 223.440429688 387.1015625 270.810546875 c 1 - 386.1640625 270.810546875 385.2265625 270.810546875 384.2890625 270.810546875 c 1 - 384.2890625 99.9248046875 384.2890625 -70.9599609375 384.2890625 -241.845703125 c 1 - 349.706054688 -241.845703125 315.122070312 -241.845703125 280.5390625 -241.845703125 c 1 - 280.5390625 -18.486328125 280.5390625 204.873046875 280.5390625 428.232421875 c 1 - 320.8515625 428.232421875 361.1640625 428.232421875 401.4765625 428.232421875 c 1 - 474.4453125 304.716796875 547.4140625 181.201171875 620.3828125 57.685546875 c 1 - 645.018554688 10.3154296875 669.653320312 -37.0537109375 694.2890625 -84.423828125 c 1 - 695.278320312 -84.423828125 696.268554688 -84.423828125 697.2578125 -84.423828125 c 1 - 697.2578125 86.4619140625 697.2578125 257.346679688 697.2578125 428.232421875 c 1 - 731.7890625 428.232421875 766.3203125 428.232421875 800.8515625 428.232421875 c 1 - 800.8515625 204.873046875 800.8515625 -18.486328125 800.8515625 -241.845703125 c 1 - 760.5390625 -241.845703125 720.2265625 -241.845703125 679.9140625 -241.845703125 c 1 - 606.9453125 -118.330078125 533.9765625 5.185546875 461.0078125 128.701171875 c 1xf1 -1511.3203125 -241.845703125 m 1 - 1468.76855469 -241.845703125 1426.21582031 -241.845703125 1383.6640625 -241.845703125 c 1 - 1329.54980469 -152.887695312 1275.43457031 -63.9287109375 1221.3203125 25.029296875 c 1 - 1220.3828125 25.029296875 1219.4453125 25.029296875 1218.5078125 25.029296875 c 1 - 1165.0703125 -63.9287109375 1111.6328125 -152.887695312 1058.1953125 -241.845703125 c 1 - 1018.1953125 -241.845703125 978.1953125 -241.845703125 938.1953125 -241.845703125 c 1xf9 - 1010.48730469 -127.600585938 1082.77832031 -13.3564453125 1155.0703125 100.888671875 c 1 - 1085.33105469 210.002929688 1015.59082031 319.118164062 945.8515625 428.232421875 c 1 - 988.403320312 428.232421875 1030.95605469 428.232421875 1073.5078125 428.232421875 c 1xf5 - 1124.39355469 345.029296875 1175.27832031 261.826171875 1226.1640625 178.623046875 c 1 - 1226.7890625 178.623046875 1227.4140625 178.623046875 1228.0390625 178.623046875 c 1 - 1279.54980469 261.826171875 1331.05957031 345.029296875 1382.5703125 428.232421875 c 1 - 1422.5703125 428.232421875 1462.5703125 428.232421875 1502.5703125 428.232421875 c 1 - 1432.20605469 319.430664062 1361.84082031 210.627929688 1291.4765625 101.826171875 c 1 - 1364.7578125 -12.7314453125 1438.0390625 -127.288085938 1511.3203125 -241.845703125 c 1 -411.9453125 624.169921875 m 1 - 411.9453125 847.529296875 411.9453125 1070.88867188 411.9453125 1294.24804688 c 1 - 448.090820312 1294.24804688 484.237304688 1294.24804688 520.3828125 1294.24804688 c 1 - 520.3828125 1102.89355469 520.3828125 911.540039062 520.3828125 720.185546875 c 1 - 611.268554688 720.185546875 702.153320312 720.185546875 793.0390625 720.185546875 c 1 - 793.0390625 688.180664062 793.0390625 656.174804688 793.0390625 624.169921875 c 1 - 666.0078125 624.169921875 538.9765625 624.169921875 411.9453125 624.169921875 c 1 -1050.3046875 624.169921875 m 1xf3 - 1050.3046875 712.165039062 1050.3046875 800.159179688 1050.3046875 888.154296875 c 1 - 973.5078125 1023.51855469 896.7109375 1158.88378906 819.9140625 1294.24804688 c 1 - 861.190429688 1294.24804688 902.465820312 1294.24804688 943.7421875 1294.24804688 c 1 - 998.143554688 1194.71679688 1052.54394531 1095.18554688 1106.9453125 995.654296875 c 1 - 1107.90917969 995.654296875 1108.87207031 995.654296875 1109.8359375 995.654296875 c 1 - 1163.92480469 1095.18554688 1218.01269531 1194.71679688 1272.1015625 1294.24804688 c 1 - 1311.7890625 1294.24804688 1351.4765625 1294.24804688 1391.1640625 1294.24804688 c 1 - 1313.71582031 1159.53417969 1236.26855469 1024.82128906 1158.8203125 890.107421875 c 1 - 1158.8203125 801.461914062 1158.8203125 712.815429688 1158.8203125 624.169921875 c 1 - 1122.6484375 624.169921875 1086.4765625 624.169921875 1050.3046875 624.169921875 c 1xf3 -EndSplineSet -EndChar - -StartChar: uniE118 -Encoding: 57624 57624 25 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -60.4395 93.125<1083.51 1281.16> 28.8574 91.25<418.508 570.842> 333.232 95<418.508 654.817 1169.79 1195.72> 624.17 96.0156<609.465 629.562 1148.12 1468.74> 916.045 95.9375<1148.12 1439.05> 1198.23 96.0156<1148.12 1468.74> -VStem: 310.07 108.438<-241.846 28.8574 120.107 333.232> 334.367 112.344<1181.9 1294.25> 678.664 114.219<142.348 310.913> 793.273 109.375<1184.87 1294.25> 888.508 110.469<-241.846 -131.377> 1039.68 108.438<720.186 916.045 1011.98 1198.23> 1368.51 113.281<-241.846 -128.564> -DStem2: 446.711 1294.25 334.367 1294.25 0.289596 -0.957149<0 589.723> 662.258 40.4199 551.945 28.8574 0.456936 -0.8895<0 262.07> 621.398 729.795 679.992 624.17 0.291293 0.956634<0 590.041> 888.508 -241.846 998.977 -241.846 0.303155 0.952941<33.4892 224.122 320.727 631.883> 1253.35 428.232 1185.23 328.389 0.305997 -0.952033<74.2085 385.084> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -60.4395 93.125<1083.51 1281.16> 28.8574 91.25<418.508 570.842> 333.232 95<418.508 654.817 1169.79 1195.72> 624.17 96.0156<609.465 629.562 1148.12 1468.74> 916.045 95.9375<1148.12 1439.05> 1198.23 96.0156<1148.12 1468.74> -VStem: 310.07 108.438<-241.846 28.8574 120.107 333.232> 334.367 112.344<1181.9 1294.25> 678.664 114.219<142.348 310.913> 793.273 109.375<1184.87 1294.25> 888.508 110.469<-241.846 -131.377> 1039.68 108.438<720.186 916.045 1011.98 1198.23> 1368.51 113.281<-241.846 -128.564> -DStem2: 446.711 1294.25 334.367 1294.25 0.289596 -0.957149<0 589.723> 662.258 40.4199 551.945 28.8574 0.456936 -0.8895<0 262.07> 621.398 729.795 679.992 624.17 0.291293 0.956634<0 590.041> 888.508 -241.846 998.977 -241.846 0.303155 0.952941<33.4892 224.122 320.727 631.883> 1253.35 428.232 1185.23 328.389 0.305997 -0.952033<74.2085 385.084> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -418.5078125 -241.845703125 m 1x7e98 - 382.362304688 -241.845703125 346.215820312 -241.845703125 310.0703125 -241.845703125 c 1 - 310.0703125 -18.486328125 310.0703125 204.873046875 310.0703125 428.232421875 c 1 - 406.372070312 428.232421875 502.674804688 428.232421875 598.9765625 428.232421875 c 1 - 659.1328125 428.232421875 706.4765625 410.185546875 741.0078125 374.013671875 c 0 - 775.5390625 337.841796875 792.8828125 288.701171875 792.8828125 226.669921875 c 0 - 792.8828125 178.623046875 781.7890625 138.779296875 759.7578125 107.138671875 c 0 - 737.7265625 75.419921875 705.2265625 53.232421875 662.2578125 40.419921875 c 1 - 710.590820312 -53.6689453125 758.924804688 -147.756835938 807.2578125 -241.845703125 c 1 - 766.9453125 -241.845703125 726.6328125 -241.845703125 686.3203125 -241.845703125 c 1 - 641.528320312 -151.611328125 596.737304688 -61.376953125 551.9453125 28.857421875 c 1 - 507.465820312 28.857421875 462.987304688 28.857421875 418.5078125 28.857421875 c 1 - 418.5078125 -61.376953125 418.5078125 -151.611328125 418.5078125 -241.845703125 c 1x7e98 -591.3203125 120.107421875 m 1 - 618.8203125 120.107421875 640.2265625 127.294921875 655.5390625 141.669921875 c 0 - 671.0078125 156.044921875 678.6640625 176.748046875 678.6640625 203.623046875 c 1 - 678.6640625 218.961914062 678.6640625 234.299804688 678.6640625 249.638671875 c 1 - 678.6640625 276.591796875 671.0078125 297.216796875 655.5390625 311.591796875 c 0 - 640.2265625 325.966796875 618.8203125 333.232421875 591.3203125 333.232421875 c 1 - 533.715820312 333.232421875 476.112304688 333.232421875 418.5078125 333.232421875 c 1 - 418.5078125 262.190429688 418.5078125 191.149414062 418.5078125 120.107421875 c 1 - 476.112304688 120.107421875 533.715820312 120.107421875 591.3203125 120.107421875 c 1 -1368.5078125 -241.845703125 m 1 - 1348.3515625 -181.376953125 1328.1953125 -120.908203125 1308.0390625 -60.439453125 c 1 - 1224.54980469 -60.439453125 1141.05957031 -60.439453125 1057.5703125 -60.439453125 c 1 - 1038.0390625 -120.908203125 1018.5078125 -181.376953125 998.9765625 -241.845703125 c 5 - 962.153320312 -241.845703125 925.331054688 -241.845703125 888.5078125 -241.845703125 c 1xbcb8 - 964.706054688 -18.486328125 1040.90332031 204.873046875 1117.1015625 428.232421875 c 5 - 1162.51855469 428.232421875 1207.93457031 428.232421875 1253.3515625 428.232421875 c 1 - 1329.49707031 204.873046875 1405.64355469 -18.486328125 1481.7890625 -241.845703125 c 1 - 1444.02832031 -241.845703125 1406.26855469 -241.845703125 1368.5078125 -241.845703125 c 1 -1185.2265625 328.388671875 m 1 - 1183.61230469 328.388671875 1181.99707031 328.388671875 1180.3828125 328.388671875 c 1 - 1148.09082031 229.821289062 1115.79980469 131.252929688 1083.5078125 32.685546875 c 1 - 1149.39355469 32.685546875 1215.27832031 32.685546875 1281.1640625 32.685546875 c 1 - 1249.18457031 131.252929688 1217.20605469 229.821289062 1185.2265625 328.388671875 c 1 -554.2109375 624.169921875 m 1 - 480.9296875 847.529296875 407.6484375 1070.88867188 334.3671875 1294.24804688 c 1 - 371.815429688 1294.24804688 409.262695312 1294.24804688 446.7109375 1294.24804688 c 1 - 482.231445312 1183.85742188 517.752929688 1073.46679688 553.2734375 963.076171875 c 1 - 574.6796875 885.315429688 596.0859375 807.555664062 617.4921875 729.794921875 c 1 - 618.793945312 729.794921875 620.096679688 729.794921875 621.3984375 729.794921875 c 1 - 643.168945312 807.555664062 664.940429688 885.315429688 686.7109375 963.076171875 c 1 - 722.231445312 1073.46679688 757.752929688 1183.85742188 793.2734375 1294.24804688 c 1 - 829.731445312 1294.24804688 866.190429688 1294.24804688 902.6484375 1294.24804688 c 1x3dd8 - 828.4296875 1070.88867188 754.2109375 847.529296875 679.9921875 624.169921875 c 1 - 638.065429688 624.169921875 596.137695312 624.169921875 554.2109375 624.169921875 c 1 -1039.6796875 624.169921875 m 5 - 1039.6796875 847.529296875 1039.6796875 1070.88867188 1039.6796875 1294.24804688 c 1 - 1182.70019531 1294.24804688 1325.72167969 1294.24804688 1468.7421875 1294.24804688 c 1 - 1468.7421875 1262.24316406 1468.7421875 1230.23730469 1468.7421875 1198.23242188 c 1 - 1361.8671875 1198.23242188 1254.9921875 1198.23242188 1148.1171875 1198.23242188 c 1 - 1148.1171875 1136.14941406 1148.1171875 1074.06542969 1148.1171875 1011.98242188 c 1 - 1245.09667969 1011.98242188 1342.07519531 1011.98242188 1439.0546875 1011.98242188 c 1 - 1439.0546875 980.002929688 1439.0546875 948.024414062 1439.0546875 916.044921875 c 1 - 1342.07519531 916.044921875 1245.09667969 916.044921875 1148.1171875 916.044921875 c 1 - 1148.1171875 850.758789062 1148.1171875 785.471679688 1148.1171875 720.185546875 c 1 - 1254.9921875 720.185546875 1361.8671875 720.185546875 1468.7421875 720.185546875 c 1 - 1468.7421875 688.180664062 1468.7421875 656.174804688 1468.7421875 624.169921875 c 1 - 1325.72167969 624.169921875 1182.70019531 624.169921875 1039.6796875 624.169921875 c 5 -EndSplineSet -EndChar - -StartChar: uniE119 -Encoding: 57625 57625 26 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 99.2002 112.793<1049.91 1285.26 1418.46 1622.37> 838.36 98.4375<1239.05 1285.26> -VStem: 169.633 150<99.2002 249.2> 179.203 159.57<777.228 936.798> 726.469 159.57<99.2002 258.771 777.228 936.798> 1285.26 133.203<211.993 838.36> -DStem2: 169.633 99.2002 319.633 99.2002 0.552681 0.833393<82.9021 411.831 638.258 1005.04> 338.773 936.798 179.203 936.798 0.546973 -0.83715<0 365.574 522.989 913.254> 998.344 705.157 1081.16 630.841 0.683539 0.729914<1.88118 286.669> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 99.2002 112.793<1049.91 1285.26 1418.46 1622.37> 838.36 98.4375<1239.05 1285.26> -VStem: 169.633 150<99.2002 249.2> 179.203 159.57<777.228 936.798> 726.469 159.57<99.2002 258.771 777.228 936.798> 1285.26 133.203<211.993 838.36> -DStem2: 169.633 99.2002 319.633 99.2002 0.552681 0.833393<82.9021 411.831 638.258 1005.04> 338.773 936.798 179.203 936.798 0.546973 -0.83715<0 365.574 522.989 913.254> 998.344 705.157 1081.16 630.841 0.683539 0.729914<1.88118 286.669> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -886.0390625 99.2001953125 m 1xdc - 832.848632812 99.2001953125 779.659179688 99.2001953125 726.46875 99.2001953125 c 1 - 658.825195312 210.397460938 591.182617188 321.595703125 523.5390625 432.793945312 c 1 - 522.3671875 432.793945312 521.1953125 432.793945312 520.0234375 432.793945312 c 1 - 453.2265625 321.595703125 386.4296875 210.397460938 319.6328125 99.2001953125 c 1 - 269.6328125 99.2001953125 219.6328125 99.2001953125 169.6328125 99.2001953125 c 1xec - 259.997070312 242.005859375 350.362304688 384.811523438 440.7265625 527.618164062 c 1 - 353.551757812 664.010742188 266.377929688 800.404296875 179.203125 936.797851562 c 1 - 232.393554688 936.797851562 285.583007812 936.797851562 338.7734375 936.797851562 c 1 - 402.379882812 832.793945312 465.987304688 728.790039062 529.59375 624.786132812 c 1 - 530.375 624.786132812 531.15625 624.786132812 531.9375 624.786132812 c 1 - 596.325195312 728.790039062 660.713867188 832.793945312 725.1015625 936.797851562 c 1 - 775.1015625 936.797851562 825.1015625 936.797851562 875.1015625 936.797851562 c 1 - 787.145507812 800.794921875 699.190429688 664.791992188 611.234375 528.790039062 c 1 - 702.8359375 385.592773438 794.4375 242.396484375 886.0390625 99.2001953125 c 1xdc -1049.90625 99.2001953125 m 1 - 1049.90625 136.797851562 1049.90625 174.395507812 1049.90625 211.993164062 c 1 - 1128.35644531 211.993164062 1206.80761719 211.993164062 1285.2578125 211.993164062 c 1 - 1285.2578125 420.782226562 1285.2578125 629.571289062 1285.2578125 838.360351562 c 1 - 1282.00292969 838.360351562 1278.74707031 838.360351562 1275.4921875 838.360351562 c 1 - 1210.71386719 769.186523438 1145.93457031 700.013671875 1081.15625 630.840820312 c 1 - 1053.55175781 655.612304688 1025.94824219 680.384765625 998.34375 705.157226562 c 1 - 1069.56738281 782.370117188 1140.79199219 859.583984375 1212.015625 936.797851562 c 1 - 1280.83105469 936.797851562 1349.64550781 936.797851562 1418.4609375 936.797851562 c 1 - 1418.4609375 695.196289062 1418.4609375 453.594726562 1418.4609375 211.993164062 c 1 - 1486.4296875 211.993164062 1554.3984375 211.993164062 1622.3671875 211.993164062 c 1 - 1622.3671875 174.395507812 1622.3671875 136.797851562 1622.3671875 99.2001953125 c 1 - 1431.546875 99.2001953125 1240.7265625 99.2001953125 1049.90625 99.2001953125 c 1 -EndSplineSet -EndChar - -StartChar: uniE11A -Encoding: 57626 57626 27 -Width: 1792 -Flags: W -HStem: -253.3 85.3906<331.166 506.082> -61.0391 130.176<891.389 1021.56> 95.1377 85.4687<356.078 505.623> 117.311 130.176<1455.12 1585.3> 612.716 89.2188<1388.21 1579.14> 624.2 92.1875<328.559 354.926> 897.794 85.4688<802.406 938.743> 1204.98 89.2969<802.406 1011.58 1380.73 1582.23> -VStem: 82.0938 106.562<1187.72 1294.28> 202.297 107.5<-147.64 75.4877> 493.891 104.688<1189.59 1294.28> 526.75 107.5<-147.355 74.3454> 700.609 101.797<624.2 897.794 983.263 1204.98> 1030.84 108.516<1002.53 1185.72> 1187.45 101.78<-25.0879 211.535> 1233.73 109.453<750.447 1168.03> -DStem2: 188.656 1294.28 82.0938 1294.28 0.271727 -0.962374<0 593.586> 891.389 69.1366 891.389 -61.0391 0.717299 0.696766<0 311.586> 1024.12 905.45 922.406 897.794 0.413517 -0.910496<0 262.054> 1289.23 -25.0879 1187.45 -248.968 0.735691 0.677318<0 314.262> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 3 -WasModified: 0 -WasOrder2: 0 -Layer: 2 -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -418.234375 -253.330078125 m 0xe3dc - 346.59375 -253.330078125 292.6875 -231.298828125 256.515625 -187.158203125 c 0 - 220.34375 -142.939453125 202.296875 -78.642578125 202.296875 5.810546875 c 0 - 202.296875 46.123046875 207.375 86.435546875 217.609375 126.826171875 c 0 - 227.84375 167.138671875 242.609375 205.654296875 261.75 242.451171875 c 0 - 280.96875 279.248046875 303.859375 313.701171875 330.421875 345.654296875 c 0 - 356.984375 377.685546875 386.59375 405.185546875 419.25 428.232421875 c 1 - 465.004882812 428.232421875 510.760742188 428.232421875 556.515625 428.232421875 c 1 - 517.453125 398.154296875 483.859375 369.482421875 455.734375 342.294921875 c 0 - 427.53125 315.107421875 403.703125 288.076171875 384.171875 261.201171875 c 0 - 364.640625 234.326171875 348.859375 206.669921875 336.671875 178.154296875 c 0 - 324.484375 149.638671875 315.1875 118.779296875 308.859375 85.498046875 c 1 - 313 85.498046875 317.140625 85.498046875 321.28125 85.498046875 c 1 - 332.21875 116.201171875 349.484375 139.716796875 373.15625 156.044921875 c 0 - 396.828125 172.373046875 424.953125 180.576171875 457.609375 180.576171875 c 0 - 511.984375 180.576171875 555.03125 162.919921875 586.75 127.763671875 c 0 - 618.390625 92.529296875 634.25 40.732421875 634.25 -27.783203125 c 0 - 634.25 -98.798828125 615.890625 -154.189453125 579.09375 -193.876953125 c 0 - 542.296875 -233.564453125 488.625 -253.330078125 418.234375 -253.330078125 c 0xe3dc -418.234375 -167.939453125 m 256 - 490.578125 -167.939453125 526.75 -128.251953125 526.75 -48.876953125 c 1 - 526.75 -40.5703125 526.75 -32.2626953125 526.75 -23.955078125 c 1 - 526.75 55.419921875 490.578125 95.107421875 418.234375 95.107421875 c 256 - 345.96875 95.107421875 309.796875 55.419921875 309.796875 -23.955078125 c 1 - 309.796875 -32.2626953125 309.796875 -40.5703125 309.796875 -48.876953125 c 1 - 309.796875 -128.251953125 345.96875 -167.939453125 418.234375 -167.939453125 c 256 -278.890625 624.169921875 m 1xc7ec - 213.291992188 847.529296875 147.692382812 1070.88867188 82.09375 1294.24804688 c 1 - 117.614257812 1294.24804688 153.135742188 1294.24804688 188.65625 1294.24804688 c 1 - 228.317382812 1153.77929688 267.979492188 1013.31054688 307.640625 872.841796875 c 1 - 316.9375 820.6796875 326.234375 768.518554688 335.53125 716.357421875 c 1 - 339.671875 716.357421875 343.8125 716.357421875 347.953125 716.357421875 c 1 - 357.25 768.518554688 366.546875 820.6796875 375.84375 872.841796875 c 1 - 415.192382812 1013.31054688 454.541992188 1153.77929688 493.890625 1294.24804688 c 1 - 528.786132812 1294.24804688 563.682617188 1294.24804688 598.578125 1294.24804688 c 1 - 533.291992188 1070.88867188 468.004882812 847.529296875 402.71875 624.169921875 c 1 - 361.442382812 624.169921875 320.166992188 624.169921875 278.890625 624.169921875 c 1xc7ec -802.40625 624.169921875 m 1 - 768.473632812 624.169921875 734.541992188 624.169921875 700.609375 624.169921875 c 1 - 700.609375 847.529296875 700.609375 1070.88867188 700.609375 1294.24804688 c 1 - 788.942382812 1294.24804688 877.276367188 1294.24804688 965.609375 1294.24804688 c 1 - 1023.1875 1294.24804688 1066.546875 1277.13867188 1095.6875 1242.91992188 c 0 - 1124.75 1208.62304688 1139.359375 1159.56054688 1139.359375 1095.49804688 c 0 - 1139.359375 1043.70117188 1129.75 1001.74804688 1110.53125 969.794921875 c 0 - 1091.3125 937.763671875 1062.5625 916.357421875 1024.125 905.419921875 c 1 - 1066.703125 811.669921875 1109.28125 717.919921875 1151.859375 624.169921875 c 1 - 1114.09863281 624.169921875 1076.33886719 624.169921875 1038.578125 624.169921875 c 1 - 999.854492188 715.3671875 961.129882812 806.565429688 922.40625 897.763671875 c 1 - 882.40625 897.763671875 842.40625 897.763671875 802.40625 897.763671875 c 1 - 802.40625 806.565429688 802.40625 715.3671875 802.40625 624.169921875 c 1 -956.9375 983.232421875 m 1 - 981.234375 983.232421875 999.671875 989.482421875 1012.171875 1001.90429688 c 0 - 1024.59375 1014.40429688 1030.84375 1034.71679688 1030.84375 1062.91992188 c 1 - 1030.84375 1083.70117188 1030.84375 1104.48242188 1030.84375 1125.26367188 c 1 - 1030.84375 1153.46679688 1024.59375 1173.77929688 1012.171875 1186.27929688 c 0 - 999.671875 1198.70117188 981.234375 1204.95117188 956.9375 1204.95117188 c 1 - 905.426757812 1204.95117188 853.916992188 1204.95117188 802.40625 1204.95117188 c 1 - 802.40625 1131.04492188 802.40625 1057.13867188 802.40625 983.232421875 c 1 - 853.916992188 983.232421875 905.426757812 983.232421875 956.9375 983.232421875 c 1 -1487.171875 612.685546875 m 0xcbcd - 1448.109375 612.685546875 1413.109375 619.248046875 1382.09375 632.294921875 c 0 - 1351 645.419921875 1324.4375 666.123046875 1302.40625 694.248046875 c 0 - 1280.296875 722.373046875 1263.34375 758.388671875 1251.46875 802.216796875 c 0 - 1239.671875 846.123046875 1233.734375 898.388671875 1233.734375 959.248046875 c 256 - 1233.734375 1020.02929688 1239.671875 1072.29492188 1251.46875 1116.20117188 c 0 - 1263.34375 1160.02929688 1280.296875 1196.04492188 1302.40625 1224.16992188 c 0 - 1324.4375 1252.29492188 1351 1272.99804688 1382.09375 1286.12304688 c 0 - 1413.109375 1299.24804688 1448.109375 1305.73242188 1487.171875 1305.73242188 c 0 - 1544.125 1305.73242188 1589.75 1293.46679688 1623.96875 1268.77929688 c 0 - 1658.1875 1244.16992188 1685.609375 1207.21679688 1706.078125 1157.91992188 c 1 - 1677.27636719 1141.9296875 1648.47363281 1125.94042969 1619.671875 1109.95117188 c 1 - 1608.109375 1147.68554688 1592.015625 1174.87304688 1571.15625 1191.51367188 c 0 - 1550.375 1208.15429688 1522.40625 1216.51367188 1487.171875 1216.51367188 c 0 - 1441.78125 1216.51367188 1406.390625 1200.81054688 1381.078125 1169.48242188 c 0 - 1355.84375 1138.07617188 1343.1875 1094.87304688 1343.1875 1039.87304688 c 1 - 1343.1875 986.096679688 1343.1875 932.3203125 1343.1875 878.544921875 c 1 - 1343.1875 823.544921875 1355.84375 780.341796875 1381.078125 748.935546875 c 0 - 1406.390625 717.607421875 1441.78125 701.904296875 1487.171875 701.904296875 c 0 - 1523.03125 701.904296875 1552.015625 710.888671875 1574.046875 728.779296875 c 0 - 1596.15625 746.748046875 1613.265625 775.498046875 1625.453125 815.185546875 c 1 - 1653.60449219 798.544921875 1681.75488281 781.904296875 1709.90625 765.263671875 c 1 - 1688.8125 716.044921875 1660.609375 678.232421875 1625.453125 651.982421875 c 0 - 1590.21875 625.732421875 1544.125 612.685546875 1487.171875 612.685546875 c 0xcbcd -1289.23339844 435.383789062 m 1 - 1289.23339844 -25.1181640625 l 1 - 1585.29882812 247.456054688 l 1 - 1585.29882812 117.280273438 l 1 - 1187.45410156 -248.998046875 l 1xd3ce - 1187.45410156 211.504882812 l 1 - 891.388671875 -61.0693359375 l 1 - 891.388671875 69.1064453125 l 1 - 1289.23339844 435.383789062 l 1 -EndSplineSet -EndChar - -StartChar: uniE11B -Encoding: 57627 57627 28 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -253.33 96.9531<1073.4 1297.1> 332.217 96.0156<306.547 506.234 614.672 814.359 1062.75 1307.77> 612.686 96.9531<474.093 697.732> 1198.23 96.0156<463.45 708.394 987.25 1186.94 1295.38 1495.06> -VStem: 296.938 116.25<773.332 1145.09> 506.234 108.438<-241.846 332.217> 758.656 116.25<773.332 1145.09> 896.312 116.172<-92.6831 279.07> 1186.94 108.438<624.17 1198.23> 1358.03 116.172<-92.6831 279.07> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -253.33 96.9531<1073.4 1297.1> 332.217 96.0156<306.547 506.234 614.672 814.359 1062.75 1307.77> 612.686 96.9531<474.093 697.732> 1198.23 96.0156<463.45 708.394 987.25 1186.94 1295.38 1495.06> -VStem: 296.938 116.25<773.332 1145.09> 506.234 108.438<-241.846 332.217> 758.656 116.25<773.332 1145.09> 896.312 116.172<-92.6831 279.07> 1186.94 108.438<624.17 1198.23> 1358.03 116.172<-92.6831 279.07> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -614.671875 332.216796875 m 1 - 614.671875 140.862304688 614.671875 -50.4912109375 614.671875 -241.845703125 c 1 - 578.526367188 -241.845703125 542.379882812 -241.845703125 506.234375 -241.845703125 c 1 - 506.234375 -50.4912109375 506.234375 140.862304688 506.234375 332.216796875 c 1 - 439.671875 332.216796875 373.109375 332.216796875 306.546875 332.216796875 c 1 - 306.546875 364.221679688 306.546875 396.227539062 306.546875 428.232421875 c 1 - 475.817382812 428.232421875 645.088867188 428.232421875 814.359375 428.232421875 c 1 - 814.359375 396.227539062 814.359375 364.221679688 814.359375 332.216796875 c 1 - 747.796875 332.216796875 681.234375 332.216796875 614.671875 332.216796875 c 1 -1185.296875 -253.330078125 m 256 - 1141.703125 -253.330078125 1102.25 -245.830078125 1066.703125 -230.830078125 c 0 - 1031.15625 -215.751953125 1000.765625 -193.720703125 975.53125 -164.580078125 c 0 - 950.21875 -135.439453125 930.6875 -99.267578125 916.9375 -56.064453125 c 0 - 903.1875 -12.861328125 896.3125 36.904296875 896.3125 93.232421875 c 256 - 896.3125 149.482421875 903.1875 199.248046875 916.9375 242.451171875 c 0 - 930.6875 285.654296875 950.21875 321.826171875 975.53125 350.966796875 c 0 - 1000.765625 380.107421875 1031.15625 402.138671875 1066.703125 417.216796875 c 0 - 1102.25 432.216796875 1141.703125 439.716796875 1185.296875 439.716796875 c 256 - 1228.8125 439.716796875 1268.265625 432.216796875 1303.8125 417.216796875 c 0 - 1339.359375 402.138671875 1369.75 380.107421875 1394.984375 350.966796875 c 0 - 1420.296875 321.826171875 1439.828125 285.654296875 1453.578125 242.451171875 c 0 - 1467.328125 199.248046875 1474.203125 149.482421875 1474.203125 93.232421875 c 256 - 1474.203125 36.904296875 1467.328125 -12.861328125 1453.578125 -56.064453125 c 0 - 1439.828125 -99.267578125 1420.296875 -135.439453125 1394.984375 -164.580078125 c 0 - 1369.75 -193.720703125 1339.359375 -215.751953125 1303.8125 -230.830078125 c 0 - 1268.265625 -245.830078125 1228.8125 -253.330078125 1185.296875 -253.330078125 c 256 -1185.296875 -156.376953125 m 0 - 1210.84375 -156.376953125 1234.359375 -151.923828125 1255.84375 -142.939453125 c 0 - 1277.25 -134.033203125 1295.53125 -121.064453125 1310.53125 -104.111328125 c 0 - 1325.609375 -87.158203125 1337.25 -66.455078125 1345.609375 -42.158203125 c 0 - 1353.890625 -17.861328125 1358.03125 9.638671875 1358.03125 40.419921875 c 1 - 1358.03125 75.6025390625 1358.03125 110.784179688 1358.03125 145.966796875 c 1 - 1358.03125 176.748046875 1353.890625 204.248046875 1345.609375 228.544921875 c 0 - 1337.25 252.841796875 1325.609375 273.544921875 1310.53125 290.498046875 c 0 - 1295.53125 307.451171875 1277.25 320.419921875 1255.84375 329.326171875 c 0 - 1234.359375 338.310546875 1210.84375 342.763671875 1185.296875 342.763671875 c 0 - 1159.046875 342.763671875 1135.375 338.310546875 1114.203125 329.326171875 c 0 - 1093.109375 320.419921875 1074.984375 307.451171875 1059.984375 290.498046875 c 0 - 1044.90625 273.544921875 1033.265625 252.841796875 1024.90625 228.544921875 c 0 - 1016.625 204.248046875 1012.484375 176.748046875 1012.484375 145.966796875 c 1 - 1012.484375 110.784179688 1012.484375 75.6025390625 1012.484375 40.419921875 c 1 - 1012.484375 9.638671875 1016.625 -17.861328125 1024.90625 -42.158203125 c 0 - 1033.265625 -66.455078125 1044.90625 -87.158203125 1059.984375 -104.111328125 c 0 - 1074.984375 -121.064453125 1093.109375 -134.033203125 1114.203125 -142.939453125 c 0 - 1135.375 -151.923828125 1159.046875 -156.376953125 1185.296875 -156.376953125 c 0 -586 612.685546875 m 256 - 542.40625 612.685546875 502.875 620.185546875 467.40625 635.185546875 c 0 - 431.78125 650.263671875 401.46875 672.294921875 376.15625 701.435546875 c 0 - 350.84375 730.576171875 331.3125 766.748046875 317.5625 809.951171875 c 0 - 303.8125 853.154296875 296.9375 902.919921875 296.9375 959.248046875 c 256 - 296.9375 1015.49804688 303.8125 1065.26367188 317.5625 1108.46679688 c 0 - 331.3125 1151.66992188 350.84375 1187.84179688 376.15625 1216.98242188 c 0 - 401.46875 1246.12304688 431.78125 1268.15429688 467.40625 1283.23242188 c 0 - 502.875 1298.23242188 542.40625 1305.73242188 586 1305.73242188 c 256 - 629.4375 1305.73242188 668.96875 1298.23242188 704.4375 1283.23242188 c 0 - 740.0625 1268.15429688 770.375 1246.12304688 795.6875 1216.98242188 c 0 - 821 1187.84179688 840.53125 1151.66992188 854.28125 1108.46679688 c 0 - 868.03125 1065.26367188 874.90625 1015.49804688 874.90625 959.248046875 c 256 - 874.90625 902.919921875 868.03125 853.154296875 854.28125 809.951171875 c 0 - 840.53125 766.748046875 821 730.576171875 795.6875 701.435546875 c 0 - 770.375 672.294921875 740.0625 650.263671875 704.4375 635.185546875 c 0 - 668.96875 620.185546875 629.4375 612.685546875 586 612.685546875 c 256 -586 709.638671875 m 0 - 611.46875 709.638671875 635.0625 714.091796875 656.46875 723.076171875 c 0 - 677.875 731.982421875 696.15625 744.951171875 711.15625 761.904296875 c 0 - 726.3125 778.857421875 737.875 799.560546875 746.3125 823.857421875 c 0 - 754.59375 848.154296875 758.65625 875.654296875 758.65625 906.435546875 c 1 - 758.65625 941.618164062 758.65625 976.799804688 758.65625 1011.98242188 c 1 - 758.65625 1042.76367188 754.59375 1070.26367188 746.3125 1094.56054688 c 0 - 737.875 1118.85742188 726.3125 1139.56054688 711.15625 1156.51367188 c 0 - 696.15625 1173.46679688 677.875 1186.43554688 656.46875 1195.34179688 c 0 - 635.0625 1204.32617188 611.46875 1208.77929688 586 1208.77929688 c 0 - 559.75 1208.77929688 536 1204.32617188 514.90625 1195.34179688 c 0 - 493.8125 1186.43554688 475.6875 1173.46679688 460.6875 1156.51367188 c 0 - 445.53125 1139.56054688 433.96875 1118.85742188 425.53125 1094.56054688 c 0 - 417.25 1070.26367188 413.1875 1042.76367188 413.1875 1011.98242188 c 1 - 413.1875 976.799804688 413.1875 941.618164062 413.1875 906.435546875 c 1 - 413.1875 875.654296875 417.25 848.154296875 425.53125 823.857421875 c 0 - 433.96875 799.560546875 445.53125 778.857421875 460.6875 761.904296875 c 0 - 475.6875 744.951171875 493.8125 731.982421875 514.90625 723.076171875 c 0 - 536 714.091796875 559.75 709.638671875 586 709.638671875 c 0 -1295.375 1198.23242188 m 1 - 1295.375 1006.87792969 1295.375 815.524414062 1295.375 624.169921875 c 1 - 1259.22949219 624.169921875 1223.08300781 624.169921875 1186.9375 624.169921875 c 1 - 1186.9375 815.524414062 1186.9375 1006.87792969 1186.9375 1198.23242188 c 1 - 1120.375 1198.23242188 1053.8125 1198.23242188 987.25 1198.23242188 c 1 - 987.25 1230.23730469 987.25 1262.24316406 987.25 1294.24804688 c 1 - 1156.52050781 1294.24804688 1325.79199219 1294.24804688 1495.0625 1294.24804688 c 1 - 1495.0625 1262.24316406 1495.0625 1230.23730469 1495.0625 1198.23242188 c 1 - 1428.5 1198.23242188 1361.9375 1198.23242188 1295.375 1198.23242188 c 1 -EndSplineSet -EndChar - -StartChar: uniE11C -Encoding: 57628 57628 29 -Width: 1792 -Flags: W -HStem: -259 89.2188<739.069 929.998> 23.1875 90.2344<153.266 362.441> 277.641 144.922<1262.72 1290.05 1610.22 1638.03> 332.328 90.2344<153.266 362.441 730.871 933.092> 618.5 89.2969<924.08 1127.76 1464.98 1708.81> 1143.66 144.922<174.438 201.767 521.938 549.75> -VStem: 51.4688 101.797<-247.516 23.1875 113.422 332.328> 83.1875 97.9688<618.5 1141.9> 381.703 108.516<132.763 312.99> 543.031 97.9688<618.5 1143.75> 584.594 109.453<-121.269 296.316> 797.406 101.797<736.821 1288.58> 1152.64 101.797<736.821 1288.58> 1171.47 97.9688<-247.516 275.885> 1363.19 101.797<707.797 1288.58> 1631.31 97.9688<-247.516 277.731> -DStem2: 203.188 1288.58 185.922 1143.66 0.416929 -0.908939<124.527 395.989> 1291.47 422.562 1274.2 277.641 0.416929 -0.908939<124.527 395.989> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -51.46875 -247.515625 m 1xde93 - 51.46875 -24.15625 51.46875 199.203125 51.46875 422.5625 c 1 - 139.801757812 422.5625 228.135742188 422.5625 316.46875 422.5625 c 1 - 374.046875 422.5625 417.40625 405.453125 446.546875 371.234375 c 0 - 475.609375 336.9375 490.21875 287.5625 490.21875 222.875 c 256 - 490.21875 158.265625 475.609375 108.8125 446.546875 74.59375 c 0 - 417.40625 40.296875 374.046875 23.1875 316.46875 23.1875 c 1 - 262.067382812 23.1875 207.666992188 23.1875 153.265625 23.1875 c 1 - 153.265625 -67.046875 153.265625 -157.28125 153.265625 -247.515625 c 1 - 119.333007812 -247.515625 85.4013671875 -247.515625 51.46875 -247.515625 c 1xde93 -153.265625 113.421875 m 1 - 204.776367188 113.421875 256.286132812 113.421875 307.796875 113.421875 c 1 - 332.09375 113.421875 350.53125 119.671875 363.03125 132.171875 c 0 - 375.453125 144.671875 381.703125 164.671875 381.703125 192.171875 c 1 - 381.703125 212.640625 381.703125 233.109375 381.703125 253.578125 c 1 - 381.703125 281.15625 375.453125 301.15625 363.03125 313.578125 c 0 - 350.53125 326.078125 332.09375 332.328125 307.796875 332.328125 c 1 - 256.286132812 332.328125 204.776367188 332.328125 153.265625 332.328125 c 1 - 153.265625 259.359375 153.265625 186.390625 153.265625 113.421875 c 1 -838.03125 -259 m 0 - 798.96875 -259 763.96875 -252.4375 732.953125 -239.390625 c 0 - 701.859375 -226.265625 675.296875 -205.5625 653.265625 -177.4375 c 0 - 631.15625 -149.3125 614.203125 -113.296875 602.328125 -69.46875 c 0 - 590.53125 -25.5625 584.59375 26.703125 584.59375 87.5625 c 256 - 584.59375 148.34375 590.53125 200.609375 602.328125 244.515625 c 0 - 614.203125 288.34375 631.15625 324.359375 653.265625 352.484375 c 0 - 675.296875 380.609375 701.859375 401.3125 732.953125 414.4375 c 0 - 763.96875 427.5625 798.96875 434.046875 838.03125 434.046875 c 0 - 894.984375 434.046875 940.609375 421.78125 974.828125 397.09375 c 0 - 1009.046875 372.484375 1036.46875 335.53125 1056.9375 286.234375 c 1 - 1028.13574219 270.245117188 999.333007812 254.254882812 970.53125 238.265625 c 1 - 958.96875 276 942.875 303.1875 922.015625 319.828125 c 0 - 901.234375 336.46875 873.265625 344.828125 838.03125 344.828125 c 0 - 792.640625 344.828125 757.25 329.125 731.9375 297.796875 c 0 - 706.703125 266.390625 694.046875 223.1875 694.046875 168.1875 c 1 - 694.046875 114.411132812 694.046875 60.6357421875 694.046875 6.859375 c 1xccb3 - 694.046875 -48.140625 706.703125 -91.34375 731.9375 -122.75 c 0 - 757.25 -154.078125 792.640625 -169.78125 838.03125 -169.78125 c 0 - 873.890625 -169.78125 902.875 -160.796875 924.90625 -142.90625 c 0 - 947.015625 -124.9375 964.125 -96.1875 976.3125 -56.5 c 1 - 1004.46386719 -73.140625 1032.61425781 -89.78125 1060.765625 -106.421875 c 1 - 1039.671875 -155.640625 1011.46875 -193.453125 976.3125 -219.703125 c 0 - 941.078125 -245.953125 894.984375 -259 838.03125 -259 c 0 -1631.3125 165.296875 m 1 - 1633.55175781 203.370117188 1635.79199219 241.442382812 1638.03125 279.515625 c 1 - 1634.203125 279.515625 1630.375 279.515625 1626.546875 279.515625 c 1 - 1611.18261719 242.067382812 1595.81738281 204.620117188 1580.453125 167.171875 c 1 - 1536.9375 76.3125 1493.421875 -14.546875 1449.90625 -105.40625 c 1 - 1406.703125 -14.546875 1363.5 76.3125 1320.296875 167.171875 c 1 - 1304.93261719 203.995117188 1289.56738281 240.817382812 1274.203125 277.640625 c 1 - 1270.375 277.640625 1266.546875 277.640625 1262.71875 277.640625 c 1xec97 - 1264.95800781 240.192382812 1267.19824219 202.745117188 1269.4375 165.296875 c 1 - 1269.4375 27.6923828125 1269.4375 -109.911132812 1269.4375 -247.515625 c 1 - 1236.78125 -247.515625 1204.125 -247.515625 1171.46875 -247.515625 c 1 - 1171.46875 -24.15625 1171.46875 199.203125 1171.46875 422.5625 c 1 - 1211.46875 422.5625 1251.46875 422.5625 1291.46875 422.5625 c 1xdc97 - 1327.640625 344.489257812 1363.8125 266.416992188 1399.984375 188.34375 c 1 - 1415.66113281 144.176757812 1431.33886719 100.010742188 1447.015625 55.84375 c 1 - 1449.87988281 55.84375 1452.74511719 55.84375 1455.609375 55.84375 c 1 - 1471.3125 100.010742188 1487.015625 144.176757812 1502.71875 188.34375 c 1 - 1538.55175781 266.416992188 1574.38574219 344.489257812 1610.21875 422.5625 c 1xec97 - 1649.90625 422.5625 1689.59375 422.5625 1729.28125 422.5625 c 1xdc97 - 1729.28125 199.203125 1729.28125 -24.15625 1729.28125 -247.515625 c 1 - 1696.625 -247.515625 1663.96875 -247.515625 1631.3125 -247.515625 c 1 - 1631.3125 -109.911132812 1631.3125 27.6923828125 1631.3125 165.296875 c 1 -543.03125 1031.3125 m 1xcdd3 - 545.270507812 1069.38574219 547.510742188 1107.45800781 549.75 1145.53125 c 1 - 545.921875 1145.53125 542.09375 1145.53125 538.265625 1145.53125 c 1 - 522.901367188 1108.08300781 507.536132812 1070.63574219 492.171875 1033.1875 c 1 - 448.65625 942.328125 405.140625 851.46875 361.625 760.609375 c 1 - 318.421875 851.46875 275.21875 942.328125 232.015625 1033.1875 c 1 - 216.651367188 1070.01074219 201.286132812 1106.83300781 185.921875 1143.65625 c 1 - 182.09375 1143.65625 178.265625 1143.65625 174.4375 1143.65625 c 1 - 176.676757812 1106.20800781 178.916992188 1068.76074219 181.15625 1031.3125 c 1 - 181.15625 893.708007812 181.15625 756.104492188 181.15625 618.5 c 1 - 148.5 618.5 115.84375 618.5 83.1875 618.5 c 1 - 83.1875 841.859375 83.1875 1065.21875 83.1875 1288.578125 c 1 - 123.1875 1288.578125 163.1875 1288.578125 203.1875 1288.578125 c 1 - 239.359375 1210.50488281 275.53125 1132.43261719 311.703125 1054.359375 c 1 - 327.379882812 1010.19238281 343.057617188 966.026367188 358.734375 921.859375 c 1 - 361.598632812 921.859375 364.463867188 921.859375 367.328125 921.859375 c 1 - 383.03125 966.026367188 398.734375 1010.19238281 414.4375 1054.359375 c 1 - 450.270507812 1132.43261719 486.104492188 1210.50488281 521.9375 1288.578125 c 1 - 561.625 1288.578125 601.3125 1288.578125 641 1288.578125 c 1 - 641 1065.21875 641 841.859375 641 618.5 c 1 - 608.34375 618.5 575.6875 618.5 543.03125 618.5 c 1 - 543.03125 756.104492188 543.03125 893.708007812 543.03125 1031.3125 c 1xcdd3 -899.203125 1288.578125 m 1 - 899.203125 1143.94238281 899.203125 999.307617188 899.203125 854.671875 c 1 - 899.203125 800.921875 908.5 761.234375 927.015625 735.609375 c 0 - 945.609375 709.984375 978.578125 697.25 1025.921875 697.25 c 256 - 1073.265625 697.25 1106.234375 709.984375 1124.828125 735.609375 c 0 - 1143.34375 761.234375 1152.640625 800.921875 1152.640625 854.671875 c 1 - 1152.640625 999.307617188 1152.640625 1143.94238281 1152.640625 1288.578125 c 1 - 1186.57324219 1288.578125 1220.50488281 1288.578125 1254.4375 1288.578125 c 1 - 1254.4375 1149.38574219 1254.4375 1010.19238281 1254.4375 871 c 1xcc9b - 1254.4375 825.53125 1250.375 786.15625 1242.40625 752.875 c 0 - 1234.4375 719.59375 1221.46875 692.09375 1203.5 670.375 c 0 - 1185.609375 648.578125 1162.09375 632.5625 1132.953125 622.328125 c 0 - 1103.8125 612.09375 1068.1875 607.015625 1025.921875 607.015625 c 256 - 983.65625 607.015625 948.03125 612.09375 918.890625 622.328125 c 0 - 889.75 632.5625 866.234375 648.578125 848.34375 670.375 c 0 - 830.375 692.09375 817.40625 719.59375 809.4375 752.875 c 0 - 801.46875 786.15625 797.40625 825.53125 797.40625 871 c 1 - 797.40625 1010.19238281 797.40625 1149.38574219 797.40625 1288.578125 c 1 - 831.338867188 1288.578125 865.270507812 1288.578125 899.203125 1288.578125 c 1 -1363.1875 618.5 m 1 - 1363.1875 841.859375 1363.1875 1065.21875 1363.1875 1288.578125 c 1 - 1397.12011719 1288.578125 1431.05175781 1288.578125 1464.984375 1288.578125 c 1 - 1464.984375 1094.984375 1464.984375 901.390625 1464.984375 707.796875 c 1 - 1546.26074219 707.796875 1627.53613281 707.796875 1708.8125 707.796875 c 1 - 1708.8125 678.03125 1708.8125 648.265625 1708.8125 618.5 c 1 - 1593.60449219 618.5 1478.39550781 618.5 1363.1875 618.5 c 1 -EndSplineSet -EndChar - -StartChar: uniE11D -Encoding: 57629 57629 30 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -241.846 96.0156<497.016 817.797 1015.27 1260.36> 50.0293 95.9375<497.016 787.953 1142.69 1260.82> 332.217 96.0156<497.016 817.797 1052.91 1288.54> 612.686 95.9375<459.826 685.636> 1209.79 95.9375<485.37 703.815> -VStem: 353.969 107.5<1052.56 1188.85> 388.578 108.438<-145.83 50.0293 145.967 332.217> 713.969 107.5<735.735 882.928> 924.672 107.5<186.541 322.835> 937.875 103.75<624.17 1136.83> 1284.67 107.5<-130.28 16.9126> 1354.59 103.594<781.592 1294.25> -DStem2: 568.031 1025.42 549.75 922.764 0.978916 -0.204262<-84.3815 149.558> 1277.72 923.701 1118.34 994.717 0.508638 -0.860981<-299.653 157.446> 1138.73 159.404 1120.45 56.748 0.978916 -0.204262<-84.3815 149.558> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -241.846 96.0156<497.016 817.797 1015.27 1260.36> 50.0293 95.9375<497.016 787.953 1142.69 1260.82> 332.217 96.0156<497.016 817.797 1052.91 1288.54> 612.686 95.9375<459.826 685.636> 1209.79 95.9375<485.37 703.815> -VStem: 353.969 107.5<1052.56 1188.85> 388.578 108.438<-145.83 50.0293 145.967 332.217> 713.969 107.5<735.735 882.928> 924.672 107.5<186.541 322.835> 937.875 103.75<624.17 1136.83> 1284.67 107.5<-130.28 16.9126> 1354.59 103.594<781.592 1294.25> -DStem2: 568.031 1025.42 549.75 922.764 0.978916 -0.204262<-84.3815 149.558> 1277.72 923.701 1118.34 994.717 0.508638 -0.860981<-299.653 157.446> 1138.73 159.404 1120.45 56.748 0.978916 -0.204262<-84.3815 149.558> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -388.578125 -241.845703125 m 1xfb - 388.578125 -18.486328125 388.578125 204.873046875 388.578125 428.232421875 c 1 - 531.651367188 428.232421875 674.723632812 428.232421875 817.796875 428.232421875 c 1 - 817.796875 396.227539062 817.796875 364.221679688 817.796875 332.216796875 c 1 - 710.870117188 332.216796875 603.942382812 332.216796875 497.015625 332.216796875 c 1 - 497.015625 270.133789062 497.015625 208.049804688 497.015625 145.966796875 c 1 - 593.995117188 145.966796875 690.973632812 145.966796875 787.953125 145.966796875 c 1 - 787.953125 113.987304688 787.953125 82.0087890625 787.953125 50.029296875 c 1 - 690.973632812 50.029296875 593.995117188 50.029296875 497.015625 50.029296875 c 1 - 497.015625 -15.2568359375 497.015625 -80.5439453125 497.015625 -145.830078125 c 1 - 603.942382812 -145.830078125 710.870117188 -145.830078125 817.796875 -145.830078125 c 1 - 817.796875 -177.834960938 817.796875 -209.840820312 817.796875 -241.845703125 c 1 - 674.723632812 -241.845703125 531.651367188 -241.845703125 388.578125 -241.845703125 c 1xfb -1149.203125 -253.330078125 m 0 - 1092.953125 -253.330078125 1045.140625 -243.095703125 1005.765625 -222.626953125 c 0 - 966.390625 -202.158203125 932.640625 -174.658203125 904.515625 -140.048828125 c 1 - 929.463867188 -116.689453125 954.411132812 -93.330078125 979.359375 -69.970703125 c 1 - 1002.953125 -98.798828125 1029.046875 -120.595703125 1057.484375 -135.283203125 c 0 - 1086.078125 -149.970703125 1118.578125 -157.392578125 1154.984375 -157.392578125 c 0 - 1197.953125 -157.392578125 1230.140625 -147.783203125 1252.015625 -128.564453125 c 0 - 1273.734375 -109.345703125 1284.671875 -83.408203125 1284.671875 -50.830078125 c 0 - 1284.671875 -24.580078125 1276.859375 -3.798828125 1261.546875 11.591796875 c 0 - 1246.234375 26.982421875 1219.046875 38.466796875 1179.984375 46.123046875 c 1 - 1160.140625 49.6650390625 1140.296875 53.2060546875 1120.453125 56.748046875 c 1 - 1055.140625 68.857421875 1006.234375 90.341796875 973.578125 121.044921875 c 0 - 940.921875 151.748046875 924.671875 194.013671875 924.671875 247.763671875 c 0 - 924.671875 277.216796875 930.140625 303.935546875 941.390625 327.919921875 c 0 - 952.640625 351.904296875 968.265625 372.060546875 988.421875 388.388671875 c 0 - 1008.578125 404.716796875 1033.109375 417.373046875 1061.859375 426.279296875 c 0 - 1090.609375 435.263671875 1122.953125 439.716796875 1158.890625 439.716796875 c 0 - 1209.359375 439.716796875 1253.265625 430.966796875 1290.296875 413.388671875 c 0 - 1327.484375 395.732421875 1359.203125 370.341796875 1385.453125 337.060546875 c 1 - 1360.140625 314.665039062 1334.828125 292.268554688 1309.515625 269.873046875 c 1 - 1292.328125 292.216796875 1271.234375 310.185546875 1246.234375 323.623046875 c 0 - 1221.234375 337.060546875 1190.140625 343.779296875 1153.109375 343.779296875 c 0 - 1114.671875 343.779296875 1084.984375 336.044921875 1063.734375 320.732421875 c 0 - 1042.640625 305.341796875 1032.171875 282.919921875 1032.171875 253.544921875 c 0 - 1032.171875 225.341796875 1040.765625 204.404296875 1058.109375 190.654296875 c 0 - 1075.296875 176.904296875 1102.171875 166.435546875 1138.734375 159.404296875 c 1 - 1158.578125 155.263671875 1178.421875 151.123046875 1198.265625 146.982421875 c 1 - 1265.453125 134.169921875 1314.515625 112.373046875 1345.609375 81.669921875 c 0 - 1376.546875 50.966796875 1392.171875 8.701171875 1392.171875 -45.048828125 c 0xf9a0 - 1392.171875 -76.376953125 1386.703125 -104.892578125 1375.765625 -130.517578125 c 0 - 1364.984375 -156.064453125 1349.046875 -178.017578125 1328.265625 -196.220703125 c 0 - 1307.484375 -214.501953125 1282.015625 -228.564453125 1252.015625 -238.486328125 c 0 - 1221.859375 -248.408203125 1187.640625 -253.330078125 1149.203125 -253.330078125 c 0 -578.5 612.685546875 m 0 - 522.25 612.685546875 474.4375 622.919921875 435.0625 643.388671875 c 0 - 395.6875 663.857421875 361.9375 691.357421875 333.8125 725.966796875 c 1 - 358.760742188 749.326171875 383.708007812 772.685546875 408.65625 796.044921875 c 1 - 432.25 767.216796875 458.34375 745.419921875 486.78125 730.732421875 c 0 - 515.375 716.044921875 547.875 708.623046875 584.28125 708.623046875 c 0 - 627.25 708.623046875 659.4375 718.232421875 681.3125 737.451171875 c 0 - 703.03125 756.669921875 713.96875 782.607421875 713.96875 815.185546875 c 0 - 713.96875 841.435546875 706.15625 862.216796875 690.84375 877.607421875 c 0 - 675.53125 892.998046875 648.34375 904.482421875 609.28125 912.138671875 c 1 - 589.4375 915.680664062 569.59375 919.221679688 549.75 922.763671875 c 1 - 484.4375 934.873046875 435.53125 956.357421875 402.875 987.060546875 c 0 - 370.21875 1017.76367188 353.96875 1060.02929688 353.96875 1113.77929688 c 0 - 353.96875 1143.23242188 359.4375 1169.95117188 370.6875 1193.93554688 c 0 - 381.9375 1217.91992188 397.5625 1238.07617188 417.71875 1254.40429688 c 0 - 437.875 1270.73242188 462.40625 1283.38867188 491.15625 1292.29492188 c 0 - 519.90625 1301.27929688 552.25 1305.73242188 588.1875 1305.73242188 c 0 - 638.65625 1305.73242188 682.5625 1296.98242188 719.59375 1279.40429688 c 0 - 756.78125 1261.74804688 788.5 1236.35742188 814.75 1203.07617188 c 1 - 789.4375 1180.68066406 764.125 1158.28417969 738.8125 1135.88867188 c 1 - 721.625 1158.23242188 700.53125 1176.20117188 675.53125 1189.63867188 c 0 - 650.53125 1203.07617188 619.4375 1209.79492188 582.40625 1209.79492188 c 0 - 543.96875 1209.79492188 514.28125 1202.06054688 493.03125 1186.74804688 c 0 - 471.9375 1171.35742188 461.46875 1148.93554688 461.46875 1119.56054688 c 0xfd - 461.46875 1091.35742188 470.0625 1070.41992188 487.40625 1056.66992188 c 0 - 504.59375 1042.91992188 531.46875 1032.45117188 568.03125 1025.41992188 c 1 - 587.875 1021.27929688 607.71875 1017.13867188 627.5625 1012.99804688 c 1 - 694.75 1000.18554688 743.8125 978.388671875 774.90625 947.685546875 c 0 - 805.84375 916.982421875 821.46875 874.716796875 821.46875 820.966796875 c 0 - 821.46875 789.638671875 816 761.123046875 805.0625 735.498046875 c 0 - 794.28125 709.951171875 778.34375 687.998046875 757.5625 669.794921875 c 0 - 736.78125 651.513671875 711.3125 637.451171875 681.3125 627.529296875 c 0 - 651.15625 617.607421875 616.9375 612.685546875 578.5 612.685546875 c 0 -1118.34375 994.716796875 m 1 - 1093.70800781 1042.08691406 1069.07324219 1089.45605469 1044.4375 1136.82617188 c 1 - 1043.5 1136.82617188 1042.5625 1136.82617188 1041.625 1136.82617188 c 1 - 1041.625 965.940429688 1041.625 795.055664062 1041.625 624.169921875 c 1 - 1007.04199219 624.169921875 972.458007812 624.169921875 937.875 624.169921875 c 1 - 937.875 847.529296875 937.875 1070.88867188 937.875 1294.24804688 c 1 - 978.1875 1294.24804688 1018.5 1294.24804688 1058.8125 1294.24804688 c 1 - 1131.78125 1170.73242188 1204.75 1047.21679688 1277.71875 923.701171875 c 1 - 1302.35449219 876.331054688 1326.98925781 828.961914062 1351.625 781.591796875 c 1 - 1352.61425781 781.591796875 1353.60449219 781.591796875 1354.59375 781.591796875 c 1 - 1354.59375 952.477539062 1354.59375 1123.36230469 1354.59375 1294.24804688 c 1 - 1389.125 1294.24804688 1423.65625 1294.24804688 1458.1875 1294.24804688 c 1 - 1458.1875 1070.88867188 1458.1875 847.529296875 1458.1875 624.169921875 c 1xf950 - 1417.875 624.169921875 1377.5625 624.169921875 1337.25 624.169921875 c 1 - 1264.28125 747.685546875 1191.3125 871.201171875 1118.34375 994.716796875 c 1 -EndSplineSet -EndChar - -StartChar: uniE11E -Encoding: 57630 57630 31 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 84.8447 119.922<380.027 643.107 1147.14 1395.21> 831.231 119.922<401.199 656.619> -VStem: 232.816 134.375<638.539 801.481> 682.816 134.375<242.984 418.824> 958.012 133.203<263.461 936.798> 1451.18 133.203<263.461 936.798> -DStem2: 500.395 600.763 477.543 472.442 0.978916 -0.204262<-105.472 187.038> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 84.8447 119.922<380.027 643.107 1147.14 1395.21> 831.231 119.922<401.199 656.619> -VStem: 232.816 134.375<638.539 801.481> 682.816 134.375<242.984 418.824> 958.012 133.203<263.461 936.798> 1451.18 133.203<263.461 936.798> -DStem2: 500.395 600.763 477.543 472.442 0.978916 -0.204262<-105.472 187.038> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -513.578125 84.8447265625 m 0 - 443.16796875 84.8447265625 383.40234375 97.6376953125 334.18359375 123.223632812 c 0 - 284.96484375 148.809570312 242.77734375 183.184570312 207.62109375 226.446289062 c 1 - 238.805664062 255.645507812 269.991210938 284.844726562 301.17578125 314.043945312 c 1 - 330.765625 278.008789062 363.3828125 250.762695312 398.9296875 232.403320312 c 0 - 434.57421875 214.043945312 475.19921875 204.766601562 520.8046875 204.766601562 c 0 - 574.41796875 204.766601562 614.75 216.778320312 641.99609375 240.801757812 c 0 - 669.14453125 264.825195312 682.81640625 297.247070312 682.81640625 337.969726562 c 0 - 682.81640625 370.782226562 673.1484375 396.758789062 654.0078125 415.997070312 c 0 - 634.76953125 435.235351562 600.78515625 449.590820312 551.95703125 459.161132812 c 1 - 527.15234375 463.587890625 502.34765625 468.014648438 477.54296875 472.442382812 c 1 - 396 487.579101562 334.76953125 514.434570312 293.94921875 552.813476562 c 0 - 253.12890625 591.192382812 232.81640625 644.024414062 232.81640625 711.211914062 c 0 - 232.81640625 748.028320312 239.75 781.426757812 253.8125 811.407226562 c 0 - 267.77734375 841.387695312 287.40625 866.583007812 312.6015625 886.993164062 c 0 - 337.796875 907.403320312 368.36328125 923.223632812 404.3984375 934.356445312 c 0 - 440.3359375 945.586914062 480.765625 951.153320312 525.58984375 951.153320312 c 0 - 588.7734375 951.153320312 643.55859375 940.215820312 689.9453125 918.243164062 c 0 - 736.33203125 896.172851562 775.98046875 864.434570312 808.79296875 822.833007812 c 1 - 777.184570312 794.837890625 745.577148438 766.842773438 713.96875 738.848632812 c 1 - 692.38671875 766.778320312 666.01953125 789.239257812 634.76953125 806.036132812 c 0 - 603.6171875 822.833007812 564.75 831.231445312 518.36328125 831.231445312 c 0 - 470.4140625 831.231445312 433.20703125 821.563476562 406.7421875 802.422851562 c 0 - 380.375 783.184570312 367.19140625 755.157226562 367.19140625 718.438476562 c 0 - 367.19140625 683.184570312 377.93359375 657.012695312 399.61328125 639.825195312 c 0 - 421.1953125 622.637695312 454.7890625 609.551757812 500.39453125 600.762695312 c 1 - 525.19921875 595.586914062 550.00390625 590.411132812 574.80859375 585.235351562 c 1 - 658.79296875 569.219726562 720.21875 541.973632812 758.98828125 503.594726562 c 0 - 797.7578125 465.215820312 817.19140625 412.383789062 817.19140625 345.196289062 c 0 - 817.19140625 306.036132812 810.35546875 270.391601562 796.78125 238.360351562 c 0 - 783.20703125 206.426757812 763.3828125 178.985351562 737.40625 156.231445312 c 0 - 711.33203125 133.379882812 679.59375 115.801757812 641.99609375 103.399414062 c 0 - 604.3984375 90.9970703125 561.52734375 84.8447265625 513.578125 84.8447265625 c 0 -1091.21484375 936.797851562 m 1 - 1091.21484375 764.791992188 1091.21484375 592.787109375 1091.21484375 420.782226562 c 1 - 1091.21484375 349.590820312 1104.7890625 295.977539062 1131.9375 260.040039062 c 0 - 1159.18359375 224.004882812 1205.5703125 206.036132812 1271.1953125 206.036132812 c 256 - 1336.8203125 206.036132812 1383.20703125 224.004882812 1410.35546875 260.040039062 c 0 - 1437.6015625 295.977539062 1451.17578125 349.590820312 1451.17578125 420.782226562 c 1 - 1451.17578125 592.787109375 1451.17578125 764.791992188 1451.17578125 936.797851562 c 1 - 1495.57714844 936.797851562 1539.97753906 936.797851562 1584.37890625 936.797851562 c 1 - 1584.37890625 771.986328125 1584.37890625 607.174804688 1584.37890625 442.364257812 c 1 - 1584.37890625 380.840820312 1578.8125 327.618164062 1567.58203125 282.793945312 c 0 - 1556.3515625 237.969726562 1538.3828125 200.958007812 1513.578125 171.758789062 c 0 - 1488.7734375 142.559570312 1456.546875 120.782226562 1416.99609375 106.426757812 c 0 - 1377.34765625 91.9736328125 1328.8125 84.8447265625 1271.1953125 84.8447265625 c 256 - 1213.578125 84.8447265625 1164.9453125 91.9736328125 1125.39453125 106.426757812 c 0 - 1085.74609375 120.782226562 1053.6171875 142.559570312 1028.8125 171.758789062 c 0 - 1004.0078125 200.958007812 985.94140625 237.969726562 974.80859375 282.793945312 c 0 - 963.578125 327.618164062 958.01171875 380.840820312 958.01171875 442.364257812 c 1 - 958.01171875 607.174804688 958.01171875 771.986328125 958.01171875 936.797851562 c 1 - 1002.41308594 936.797851562 1046.81347656 936.797851562 1091.21484375 936.797851562 c 1 -EndSplineSet -EndChar - -StartChar: uniE11F -Encoding: 57631 57631 32 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 171.516 89.2188<906.667 1116.84 1445.69 1645.37> 183 108.516<198.32 221.367 546.758 569.805> 449.875 87.3438<1569.19 1693.09> 750.344 102.734<371.133 393.242> 775.344 89.2188<935.851 1133.42 1446.32 1654.53> -VStem: 0 103.75<749.328 853.078> 321.719 123.75<751.086 853.078> 664.375 99.8438<753.234 853.078> 812.781 101.719<608.533 755.771> 1137.31 101.719<281.429 444.709> 1288.88 109.531<309.707 726.324> 1701.69 90.3125<183 281.906 305.738 449.875> -DStem2: 103.75 853.078 0 853.078 0.190374 -0.981712<0 567.853> 216.094 291.516 355.312 595.812 0.136058 0.990701<4.46299 473.288> 530.938 445.109 387.969 750.344 0.136058 -0.990701<-318.35 155.035> 585.625 446.984 617.344 183 0.190374 0.981712<-154.194 413.659> 1006.69 581.438 988.406 485.422 0.978371 -0.206857<-75.1218 135.909> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 171.516 89.2188<906.667 1116.84 1445.69 1645.37> 183 108.516<198.32 221.367 546.758 569.805> 449.875 87.3438<1569.19 1693.09> 750.344 102.734<371.133 393.242> 775.344 89.2188<935.851 1133.42 1446.32 1654.53> -VStem: 0 103.75<749.328 853.078> 321.719 123.75<751.086 853.078> 664.375 99.8438<753.234 853.078> 812.781 101.719<608.533 755.771> 1137.31 101.719<281.429 444.709> 1288.88 109.531<309.707 726.324> 1701.69 90.3125<183 281.906 305.738 449.875> -DStem2: 103.75 853.078 0 853.078 0.190374 -0.981712<0 567.853> 216.094 291.516 355.312 595.812 0.136058 0.990701<4.46299 473.288> 530.938 445.109 387.969 750.344 0.136058 -0.990701<-318.35 155.035> 585.625 446.984 617.344 183 0.190374 0.981712<-154.194 413.659> 1006.69 581.438 988.406 485.422 0.978371 -0.206857<-75.1218 135.909> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -142.1875 183 m 1x77f0 - 94.7919921875 406.359375 47.3955078125 629.71875 0 853.078125 c 1 - 34.5830078125 853.078125 69.1669921875 853.078125 103.75 853.078125 c 1 - 130 717.713867188 156.25 582.348632812 182.5 446.984375 c 1 - 189.53125 395.161132812 196.5625 343.338867188 203.59375 291.515625 c 1 - 207.760742188 291.515625 211.926757812 291.515625 216.09375 291.515625 c 1 - 223.125 342.713867188 230.15625 393.911132812 237.1875 445.109375 c 1 - 265.364257812 581.098632812 293.541992188 717.088867188 321.71875 853.078125 c 1 - 362.96875 853.078125 404.21875 853.078125 445.46875 853.078125 c 1 - 473.958007812 717.088867188 502.448242188 581.098632812 530.9375 445.109375 c 1 - 537.96875 393.911132812 545 342.713867188 552.03125 291.515625 c 1 - 556.198242188 291.515625 560.364257812 291.515625 564.53125 291.515625 c 1 - 571.5625 343.338867188 578.59375 395.161132812 585.625 446.984375 c 1 - 611.875 582.348632812 638.125 717.713867188 664.375 853.078125 c 1 - 697.65625 853.078125 730.9375 853.078125 764.21875 853.078125 c 1 - 715.260742188 629.71875 666.301757812 406.359375 617.34375 183 c 1 - 576.71875 183 536.09375 183 495.46875 183 c 1 - 466.666992188 320.604492188 437.864257812 458.208007812 409.0625 595.8125 c 1 - 402.03125 647.323242188 395 698.833007812 387.96875 750.34375 c 1 - 384.114257812 750.34375 380.260742188 750.34375 376.40625 750.34375 c 1 - 369.375 698.833007812 362.34375 647.323242188 355.3125 595.8125 c 1 - 325.208007812 458.208007812 295.104492188 320.604492188 265 183 c 1 - 224.0625 183 183.125 183 142.1875 183 c 1x77f0 -1017.3125 171.515625 m 4xaff0 - 967.3125 171.515625 924.03125 180.890625 887.15625 199.796875 c 4 - 850.4375 218.703125 818.875 246.046875 792.625 281.90625 c 5 - 815.958007812 303.338867188 839.291992188 324.770507812 862.625 346.203125 c 5 - 882.46875 318.703125 905.28125 297.53125 930.90625 282.84375 c 4 - 956.375 268.15625 985.59375 260.734375 1018.25 260.734375 c 4 - 1097.625 260.734375 1137.3125 297.21875 1137.3125 370.1875 c 4 - 1137.3125 399.640625 1130.125 422.21875 1116.0625 437.84375 c 4 - 1102 453.546875 1077.78125 465.578125 1043.09375 473.859375 c 5 - 1024.86425781 477.713867188 1006.63574219 481.567382812 988.40625 485.421875 c 5 - 928.25 498.859375 884.03125 520.421875 855.4375 550.1875 c 4 - 827 579.953125 812.78125 621.75 812.78125 675.5 c 4 - 812.78125 737.53125 831.53125 784.5625 868.875 816.59375 c 4 - 906.375 848.625 958.71875 864.5625 1025.90625 864.5625 c 4 - 1073.875 864.5625 1114.34375 856.4375 1147.3125 840.109375 c 4 - 1180.28125 823.78125 1208.875 798.390625 1233.25 763.78125 c 5 - 1209.86425781 743.3125 1186.47949219 722.84375 1163.09375 702.375 c 5 - 1145.90625 726.671875 1126.53125 744.953125 1105.125 757.0625 c 4 - 1083.71875 769.25 1056.53125 775.34375 1024.03125 775.34375 c 4 - 987.46875 775.34375 960.125 767.765625 941.84375 752.765625 c 4 - 923.71875 737.6875 914.5 712.921875 914.5 678.390625 c 4 - 914.5 650.1875 921.6875 628.9375 936.0625 614.484375 c 4 - 950.59375 600.109375 974.03125 589.09375 1006.6875 581.4375 c 5 - 1024.91699219 577.270507812 1043.14550781 573.104492188 1061.375 568.9375 c 5 - 1093.40625 561.90625 1120.59375 553.078125 1142.9375 542.53125 c 4 - 1165.4375 531.984375 1183.875 519.015625 1198.25 503.625 c 4 - 1212.625 488.3125 1222.9375 470.1875 1229.34375 449.40625 c 4 - 1235.75 428.625 1239.03125 404.40625 1239.03125 376.90625 c 4 - 1239.03125 309.71875 1219.65625 258.703125 1180.90625 223.78125 c 4 - 1142.15625 188.9375 1087.625 171.515625 1017.3125 171.515625 c 4xaff0 -1701.6875 281.90625 m 5 - 1697.83300781 281.90625 1693.97949219 281.90625 1690.125 281.90625 c 5 - 1683.875 249.875 1667.46875 223.46875 1641.21875 202.6875 c 4 - 1614.96875 181.90625 1577.9375 171.515625 1529.8125 171.515625 c 4xa7f0 - 1495.28125 171.515625 1463.40625 177.84375 1434.34375 190.65625 c 4 - 1405.28125 203.46875 1379.8125 223.78125 1358.09375 251.671875 c 4 - 1336.21875 279.484375 1319.34375 315.34375 1307.15625 359.171875 c 4 - 1294.96875 403 1288.875 455.65625 1288.875 517.0625 c 260 - 1288.875 578.546875 1294.8125 631.125 1306.6875 675.03125 c 4 - 1318.5625 718.859375 1335.75 754.875 1358.5625 783 c 4 - 1381.21875 811.125 1408.5625 831.828125 1440.59375 844.953125 c 4 - 1472.625 858.078125 1508.71875 864.5625 1549.03125 864.5625 c 4 - 1608.5625 864.5625 1657 851.828125 1694.03125 826.203125 c 4 - 1731.21875 800.578125 1759.96875 764.09375 1780.4375 716.75 c 5 - 1752.625 700.421875 1724.8125 684.09375 1697 667.765625 c 5 - 1685.4375 700.421875 1667.9375 726.359375 1644.65625 745.578125 c 4 - 1621.21875 764.796875 1589.65625 774.328125 1549.96875 774.328125 c 4 - 1502 774.328125 1464.8125 759.015625 1438.25 728.3125 c 4 - 1411.6875 697.53125 1398.40625 654.71875 1398.40625 599.640625 c 5 - 1398.40625 545.239257812 1398.40625 490.838867188 1398.40625 436.4375 c 5 - 1398.40625 381.4375 1411.6875 338.546875 1438.25 307.765625 c 4 - 1464.8125 277.0625 1502 261.75 1549.96875 261.75 c 4 - 1569.8125 261.75 1588.40625 264.5625 1605.75 270.34375 c 4 - 1622.9375 276.125 1638.25 284.40625 1651.375 295.34375 c 4 - 1664.5 306.203125 1674.65625 319.796875 1682 336.125 c 4 - 1689.34375 352.453125 1693.09375 370.8125 1693.09375 391.28125 c 5 - 1693.09375 410.8125 1693.09375 430.34375 1693.09375 449.875 c 5 - 1651.79199219 449.875 1610.48925781 449.875 1569.1875 449.875 c 5 - 1569.1875 478.989257812 1569.1875 508.104492188 1569.1875 537.21875 c 5 - 1643.45800781 537.21875 1717.72949219 537.21875 1792 537.21875 c 5 - 1792 419.145507812 1792 301.073242188 1792 183 c 5 - 1761.89550781 183 1731.79199219 183 1701.6875 183 c 5x6ff0 - 1701.6875 215.96875 1701.6875 248.9375 1701.6875 281.90625 c 5 -EndSplineSet -EndChar - -StartChar: uniE120 -Encoding: 57632 57632 33 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -247.516 96.0156<738.656 979.032> 326.547 96.0156<738.656 979.032> 618.5 96.0156<177.043 421.987 1508.81 1781.47> 885.375 95.0781<868.812 1105.12> 1193.58 95<177.765 421.265 868.812 1105.12> -VStem: 10.5312 116.25<767.663 1139.42> 472.25 116.25<767.663 1139.42> 630.219 108.438<-151.5 326.547> 760.375 108.438<618.5 885.375 980.453 1193.58> 1034.36 116.172<-96.0967 271.144> 1128.97 114.219<1002.69 1171.26> 1400.38 108.438<714.516 1288.58> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -247.516 96.0156<738.656 979.032> 326.547 96.0156<738.656 979.032> 618.5 96.0156<177.043 421.987 1508.81 1781.47> 885.375 95.0781<868.812 1105.12> 1193.58 95<177.765 421.265 868.812 1105.12> -VStem: 10.5312 116.25<767.663 1139.42> 472.25 116.25<767.663 1139.42> 630.219 108.438<-151.5 326.547> 760.375 108.438<618.5 885.375 980.453 1193.58> 1034.36 116.172<-96.0967 271.144> 1128.97 114.219<1002.69 1171.26> 1400.38 108.438<714.516 1288.58> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -630.21875 422.5625 m 5xffd0 - 709.254882812 422.5625 788.291992188 422.5625 867.328125 422.5625 c 5 - 910.21875 422.5625 949.046875 415.53125 983.96875 401.46875 c 4 - 1018.8125 387.328125 1048.578125 366.390625 1073.265625 338.578125 c 4 - 1097.875 310.6875 1116.9375 275.84375 1130.375 233.890625 c 4 - 1143.8125 192.015625 1150.53125 143.1875 1150.53125 87.5625 c 260 - 1150.53125 31.859375 1143.8125 -16.96875 1130.375 -58.84375 c 4 - 1116.9375 -100.796875 1097.875 -135.640625 1073.265625 -163.53125 c 4 - 1048.578125 -191.34375 1018.8125 -212.28125 983.96875 -226.421875 c 4 - 949.046875 -240.484375 910.21875 -247.515625 867.328125 -247.515625 c 5 - 788.291992188 -247.515625 709.254882812 -247.515625 630.21875 -247.515625 c 5 - 630.21875 -24.15625 630.21875 199.203125 630.21875 422.5625 c 5xffd0 -867.328125 -151.5 m 5 - 917.25 -151.5 957.5625 -135.796875 988.265625 -104.46875 c 4 - 1018.96875 -73.140625 1034.359375 -27.046875 1034.359375 33.734375 c 5 - 1034.359375 69.59375 1034.359375 105.453125 1034.359375 141.3125 c 5 - 1034.359375 202.09375 1018.96875 248.1875 988.265625 279.515625 c 4 - 957.5625 310.921875 917.25 326.546875 867.328125 326.546875 c 5 - 824.4375 326.546875 781.546875 326.546875 738.65625 326.546875 c 5 - 738.65625 167.198242188 738.65625 7.8486328125 738.65625 -151.5 c 5 - 781.546875 -151.5 824.4375 -151.5 867.328125 -151.5 c 5 -299.59375 607.015625 m 260 - 256 607.015625 216.46875 614.515625 181 629.515625 c 4 - 145.375 644.59375 115.0625 666.625 89.75 695.765625 c 4 - 64.4375 724.90625 44.90625 761.078125 31.15625 804.28125 c 4 - 17.40625 847.484375 10.53125 897.25 10.53125 953.578125 c 260 - 10.53125 1009.828125 17.40625 1059.59375 31.15625 1102.796875 c 4 - 44.90625 1146 64.4375 1182.171875 89.75 1211.3125 c 4 - 115.0625 1240.453125 145.375 1262.484375 181 1277.5625 c 4 - 216.46875 1292.5625 256 1300.0625 299.59375 1300.0625 c 260 - 343.03125 1300.0625 382.5625 1292.5625 418.03125 1277.5625 c 4 - 453.65625 1262.484375 483.96875 1240.453125 509.28125 1211.3125 c 4 - 534.59375 1182.171875 554.125 1146 567.875 1102.796875 c 4 - 581.625 1059.59375 588.5 1009.828125 588.5 953.578125 c 260 - 588.5 897.25 581.625 847.484375 567.875 804.28125 c 4 - 554.125 761.078125 534.59375 724.90625 509.28125 695.765625 c 4 - 483.96875 666.625 453.65625 644.59375 418.03125 629.515625 c 4 - 382.5625 614.515625 343.03125 607.015625 299.59375 607.015625 c 260 -299.59375 703.96875 m 4 - 325.0625 703.96875 348.65625 708.421875 370.0625 717.40625 c 4 - 391.46875 726.3125 409.75 739.28125 424.75 756.234375 c 4 - 439.90625 773.1875 451.46875 793.890625 459.90625 818.1875 c 4 - 468.1875 842.484375 472.25 869.984375 472.25 900.765625 c 5 - 472.25 935.948242188 472.25 971.129882812 472.25 1006.3125 c 5 - 472.25 1037.09375 468.1875 1064.59375 459.90625 1088.890625 c 4 - 451.46875 1113.1875 439.90625 1133.890625 424.75 1150.84375 c 4 - 409.75 1167.796875 391.46875 1180.765625 370.0625 1189.671875 c 4 - 348.65625 1198.65625 325.0625 1203.109375 299.59375 1203.109375 c 4 - 273.34375 1203.109375 249.59375 1198.65625 228.5 1189.671875 c 4 - 207.40625 1180.765625 189.28125 1167.796875 174.28125 1150.84375 c 4 - 159.125 1133.890625 147.5625 1113.1875 139.125 1088.890625 c 4 - 130.84375 1064.59375 126.78125 1037.09375 126.78125 1006.3125 c 5 - 126.78125 971.129882812 126.78125 935.948242188 126.78125 900.765625 c 5 - 126.78125 869.984375 130.84375 842.484375 139.125 818.1875 c 4 - 147.5625 793.890625 159.125 773.1875 174.28125 756.234375 c 4 - 189.28125 739.28125 207.40625 726.3125 228.5 717.40625 c 4 - 249.59375 708.421875 273.34375 703.96875 299.59375 703.96875 c 4 -760.375 618.5 m 5 - 760.375 841.859375 760.375 1065.21875 760.375 1288.578125 c 5 - 856.364257812 1288.578125 952.354492188 1288.578125 1048.34375 1288.578125 c 5 - 1110.375 1288.578125 1158.34375 1270.375 1192.25 1233.890625 c 4 - 1226.3125 1197.40625 1243.1875 1148.421875 1243.1875 1087.015625 c 260xffb0 - 1243.1875 1025.53125 1226.3125 976.546875 1192.25 940.0625 c 4 - 1158.34375 903.65625 1110.375 885.375 1048.34375 885.375 c 5 - 988.5 885.375 928.65625 885.375 868.8125 885.375 c 5 - 868.8125 796.416992188 868.8125 707.458007812 868.8125 618.5 c 5 - 832.666992188 618.5 796.520507812 618.5 760.375 618.5 c 5 -868.8125 980.453125 m 5 - 926.416992188 980.453125 984.020507812 980.453125 1041.625 980.453125 c 5 - 1069.125 980.453125 1090.53125 987.640625 1105.84375 1002.015625 c 4 - 1121.3125 1016.390625 1128.96875 1037.09375 1128.96875 1063.96875 c 5 - 1128.96875 1079.30761719 1128.96875 1094.64550781 1128.96875 1109.984375 c 5 - 1128.96875 1136.9375 1121.3125 1157.5625 1105.84375 1171.9375 c 4 - 1090.53125 1186.3125 1069.125 1193.578125 1041.625 1193.578125 c 5 - 984.020507812 1193.578125 926.416992188 1193.578125 868.8125 1193.578125 c 5 - 868.8125 1122.53613281 868.8125 1051.49511719 868.8125 980.453125 c 5 -1400.375 618.5 m 5 - 1400.375 841.859375 1400.375 1065.21875 1400.375 1288.578125 c 5 - 1436.52050781 1288.578125 1472.66699219 1288.578125 1508.8125 1288.578125 c 5 - 1508.8125 1097.22363281 1508.8125 905.870117188 1508.8125 714.515625 c 5 - 1599.69824219 714.515625 1690.58300781 714.515625 1781.46875 714.515625 c 5 - 1781.46875 682.510742188 1781.46875 650.504882812 1781.46875 618.5 c 5 - 1654.4375 618.5 1527.40625 618.5 1400.375 618.5 c 5 -EndSplineSet -EndChar - -StartChar: uniE121 -Encoding: 57633 57633 34 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 171.516 90.2344<160.025 367.673> 453.703 90.2344<772.328 981.503> 708.156 144.922<1321.78 1349.11 1669.28 1697.09> 762.844 90.2344<151.573 376.123 772.328 981.503> -VStem: 3.65625 109.453<309.775 726.303> 414.516 109.453<309.775 726.303> 670.531 101.797<183 453.703 543.938 762.844> 1000.77 108.516<563.279 743.506> 1230.53 97.9688<183 706.401> 1690.38 97.9688<183 708.247> -DStem2: 1350.53 853.078 1333.27 708.156 0.416929 -0.908939<124.527 395.989> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 171.516 90.2344<160.025 367.673> 453.703 90.2344<772.328 981.503> 708.156 144.922<1321.78 1349.11 1669.28 1697.09> 762.844 90.2344<151.573 376.123 772.328 981.503> -VStem: 3.65625 109.453<309.775 726.303> 414.516 109.453<309.775 726.303> 670.531 101.797<183 453.703 543.938 762.844> 1000.77 108.516<563.279 743.506> 1230.53 97.9688<183 706.401> 1690.38 97.9688<183 708.247> -DStem2: 1350.53 853.078 1333.27 708.156 0.416929 -0.908939<124.527 395.989> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -263.8125 171.515625 m 256xcfc0 - 223.5 171.515625 187.328125 178.078125 155.375 191.125 c 0 - 123.34375 204.25 96 224.953125 73.265625 253.078125 c 0 - 50.53125 281.203125 33.265625 317.21875 21.390625 361.046875 c 0 - 9.59375 404.953125 3.65625 457.21875 3.65625 518.078125 c 256 - 3.65625 578.859375 9.59375 631.125 21.390625 675.03125 c 0 - 33.265625 718.859375 50.53125 754.875 73.265625 783 c 0 - 96 811.125 123.34375 831.828125 155.375 844.953125 c 0 - 187.328125 858.078125 223.5 864.5625 263.8125 864.5625 c 256 - 304.125 864.5625 340.296875 858.078125 372.328125 844.953125 c 0 - 404.28125 831.828125 431.703125 811.125 454.359375 783 c 0 - 477.09375 754.875 494.359375 718.859375 506.234375 675.03125 c 0 - 518.03125 631.125 523.96875 578.859375 523.96875 518.078125 c 256 - 523.96875 457.21875 518.03125 404.953125 506.234375 361.046875 c 0 - 494.359375 317.21875 477.09375 281.203125 454.359375 253.078125 c 0 - 431.703125 224.953125 404.28125 204.25 372.328125 191.125 c 0 - 340.296875 178.078125 304.125 171.515625 263.8125 171.515625 c 256xcfc0 -263.8125 261.75 m 256 - 311.859375 261.75 348.96875 277.21875 375.21875 308.3125 c 0 - 401.390625 339.328125 414.515625 382.375 414.515625 437.375 c 1 - 414.515625 491.151367188 414.515625 544.926757812 414.515625 598.703125 c 1 - 414.515625 653.703125 401.390625 696.75 375.21875 727.765625 c 0 - 348.96875 758.859375 311.859375 774.328125 263.8125 774.328125 c 256 - 215.84375 774.328125 178.734375 758.859375 152.484375 727.765625 c 0 - 126.234375 696.75 113.109375 653.703125 113.109375 598.703125 c 1 - 113.109375 544.926757812 113.109375 491.151367188 113.109375 437.375 c 1 - 113.109375 382.375 126.234375 339.328125 152.484375 308.3125 c 0 - 178.734375 277.21875 215.84375 261.75 263.8125 261.75 c 256 -670.53125 183 m 1 - 670.53125 406.359375 670.53125 629.71875 670.53125 853.078125 c 1 - 758.864257812 853.078125 847.198242188 853.078125 935.53125 853.078125 c 1xdfc0 - 993.109375 853.078125 1036.46875 835.96875 1065.609375 801.75 c 0 - 1094.671875 767.453125 1109.28125 718.078125 1109.28125 653.390625 c 256 - 1109.28125 588.78125 1094.671875 539.328125 1065.609375 505.109375 c 0 - 1036.46875 470.8125 993.109375 453.703125 935.53125 453.703125 c 1 - 881.129882812 453.703125 826.729492188 453.703125 772.328125 453.703125 c 1 - 772.328125 363.46875 772.328125 273.234375 772.328125 183 c 1 - 738.395507812 183 704.463867188 183 670.53125 183 c 1 -772.328125 543.9375 m 1 - 823.838867188 543.9375 875.348632812 543.9375 926.859375 543.9375 c 1 - 951.15625 543.9375 969.59375 550.1875 982.09375 562.6875 c 0 - 994.515625 575.1875 1000.765625 595.1875 1000.765625 622.6875 c 1 - 1000.765625 643.15625 1000.765625 663.625 1000.765625 684.09375 c 1 - 1000.765625 711.671875 994.515625 731.671875 982.09375 744.09375 c 0 - 969.59375 756.59375 951.15625 762.84375 926.859375 762.84375 c 1 - 875.348632812 762.84375 823.838867188 762.84375 772.328125 762.84375 c 1 - 772.328125 689.875 772.328125 616.90625 772.328125 543.9375 c 1 -1690.375 595.8125 m 1 - 1692.61425781 633.885742188 1694.85449219 671.958007812 1697.09375 710.03125 c 1 - 1693.265625 710.03125 1689.4375 710.03125 1685.609375 710.03125 c 1 - 1670.24511719 672.583007812 1654.87988281 635.135742188 1639.515625 597.6875 c 1 - 1596 506.828125 1552.484375 415.96875 1508.96875 325.109375 c 1 - 1465.765625 415.96875 1422.5625 506.828125 1379.359375 597.6875 c 1 - 1363.99511719 634.510742188 1348.62988281 671.333007812 1333.265625 708.15625 c 1 - 1329.4375 708.15625 1325.609375 708.15625 1321.78125 708.15625 c 1xefc0 - 1324.02050781 670.708007812 1326.26074219 633.260742188 1328.5 595.8125 c 1 - 1328.5 458.208007812 1328.5 320.604492188 1328.5 183 c 1 - 1295.84375 183 1263.1875 183 1230.53125 183 c 1 - 1230.53125 406.359375 1230.53125 629.71875 1230.53125 853.078125 c 1 - 1270.53125 853.078125 1310.53125 853.078125 1350.53125 853.078125 c 1xdfc0 - 1386.703125 775.004882812 1422.875 696.932617188 1459.046875 618.859375 c 1 - 1474.72363281 574.692382812 1490.40136719 530.526367188 1506.078125 486.359375 c 1 - 1508.94238281 486.359375 1511.80761719 486.359375 1514.671875 486.359375 c 1 - 1530.375 530.526367188 1546.078125 574.692382812 1561.78125 618.859375 c 1 - 1597.61425781 696.932617188 1633.44824219 775.004882812 1669.28125 853.078125 c 1xefc0 - 1708.96875 853.078125 1748.65625 853.078125 1788.34375 853.078125 c 1 - 1788.34375 629.71875 1788.34375 406.359375 1788.34375 183 c 1 - 1755.6875 183 1723.03125 183 1690.375 183 c 1 - 1690.375 320.604492188 1690.375 458.208007812 1690.375 595.8125 c 1 -EndSplineSet -EndChar - -StartChar: uniE122 -Encoding: 57634 57634 35 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 183 96.0156<862.719 1183.34 1380.88 1625.94> 474.875 95.9375<862.719 1153.66 1508.24 1626.52> 757.062 96.0156<862.719 1183.34 1418.58 1654.18> -VStem: 34.2812 103.594<183 695.656> 450.844 103.75<340.422 853.078> 754.281 108.438<279.016 474.875 570.812 757.062> 1290.22 107.5<611.387 747.68> 1650.22 107.5<294.565 441.758> -DStem2: 374.125 482.531 214.75 553.547 0.508638 -0.860981<-299.653 157.446> 1504.28 584.25 1486 481.594 0.978916 -0.204262<-84.3745 149.704> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 183 96.0156<862.719 1183.34 1380.88 1625.94> 474.875 95.9375<862.719 1153.66 1508.24 1626.52> 757.062 96.0156<862.719 1183.34 1418.58 1654.18> -VStem: 34.2812 103.594<183 695.656> 450.844 103.75<340.422 853.078> 754.281 108.438<279.016 474.875 570.812 757.062> 1290.22 107.5<611.387 747.68> 1650.22 107.5<294.565 441.758> -DStem2: 374.125 482.531 214.75 553.547 0.508638 -0.860981<-299.653 157.446> 1504.28 584.25 1486 481.594 0.978916 -0.204262<-84.3745 149.704> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -214.75 553.546875 m 1 - 190.114257812 600.916992188 165.479492188 648.286132812 140.84375 695.65625 c 1 - 139.854492188 695.65625 138.864257812 695.65625 137.875 695.65625 c 1 - 137.875 524.770507812 137.875 353.885742188 137.875 183 c 1 - 103.34375 183 68.8125 183 34.28125 183 c 1 - 34.28125 406.359375 34.28125 629.71875 34.28125 853.078125 c 1 - 74.59375 853.078125 114.90625 853.078125 155.21875 853.078125 c 1 - 228.1875 729.5625 301.15625 606.046875 374.125 482.53125 c 1 - 398.760742188 435.161132812 423.395507812 387.791992188 448.03125 340.421875 c 1 - 448.96875 340.421875 449.90625 340.421875 450.84375 340.421875 c 1 - 450.84375 511.307617188 450.84375 682.192382812 450.84375 853.078125 c 1 - 485.426757812 853.078125 520.010742188 853.078125 554.59375 853.078125 c 1 - 554.59375 629.71875 554.59375 406.359375 554.59375 183 c 1 - 514.28125 183 473.96875 183 433.65625 183 c 1 - 360.6875 306.515625 287.71875 430.03125 214.75 553.546875 c 1 -754.28125 183 m 1 - 754.28125 406.359375 754.28125 629.71875 754.28125 853.078125 c 1 - 897.301757812 853.078125 1040.32324219 853.078125 1183.34375 853.078125 c 1 - 1183.34375 821.073242188 1183.34375 789.067382812 1183.34375 757.0625 c 1 - 1076.46875 757.0625 969.59375 757.0625 862.71875 757.0625 c 1 - 862.71875 694.979492188 862.71875 632.895507812 862.71875 570.8125 c 1 - 959.698242188 570.8125 1056.67675781 570.8125 1153.65625 570.8125 c 1 - 1153.65625 538.833007812 1153.65625 506.854492188 1153.65625 474.875 c 1 - 1056.67675781 474.875 959.698242188 474.875 862.71875 474.875 c 1 - 862.71875 409.588867188 862.71875 344.301757812 862.71875 279.015625 c 1 - 969.59375 279.015625 1076.46875 279.015625 1183.34375 279.015625 c 1 - 1183.34375 247.010742188 1183.34375 215.004882812 1183.34375 183 c 1 - 1040.32324219 183 897.301757812 183 754.28125 183 c 1 -1514.90625 171.515625 m 0 - 1458.5 171.515625 1410.6875 181.75 1371.3125 202.21875 c 0 - 1331.9375 222.6875 1298.1875 250.1875 1270.0625 284.796875 c 1 - 1295.01074219 308.15625 1319.95800781 331.515625 1344.90625 354.875 c 1 - 1368.65625 326.046875 1394.75 304.25 1423.1875 289.5625 c 0 - 1451.625 274.875 1484.125 267.453125 1520.6875 267.453125 c 0 - 1563.5 267.453125 1595.84375 277.0625 1617.5625 296.28125 c 0 - 1639.28125 315.5 1650.21875 341.4375 1650.21875 374.015625 c 0 - 1650.21875 400.265625 1642.5625 421.046875 1627.25 436.4375 c 0 - 1611.78125 451.828125 1584.59375 463.3125 1545.53125 470.96875 c 1 - 1525.6875 474.510742188 1505.84375 478.051757812 1486 481.59375 c 1 - 1420.84375 493.703125 1371.78125 515.1875 1339.125 545.890625 c 0 - 1306.46875 576.59375 1290.21875 618.859375 1290.21875 672.609375 c 0 - 1290.21875 702.0625 1295.84375 728.78125 1307.09375 752.765625 c 0 - 1318.1875 776.75 1333.96875 796.90625 1354.125 813.234375 c 0 - 1374.28125 829.5625 1398.65625 842.21875 1427.5625 851.125 c 0 - 1456.3125 860.109375 1488.65625 864.5625 1524.4375 864.5625 c 0 - 1575.0625 864.5625 1618.8125 855.8125 1656 838.234375 c 0 - 1693.03125 820.578125 1724.75 795.1875 1751 761.90625 c 1 - 1725.73925781 739.510742188 1700.47949219 717.114257812 1675.21875 694.71875 c 1 - 1657.875 717.0625 1636.78125 735.03125 1611.78125 748.46875 c 0 - 1586.9375 761.90625 1555.84375 768.625 1518.65625 768.625 c 0 - 1480.375 768.625 1450.53125 760.890625 1429.4375 745.578125 c 0 - 1408.34375 730.1875 1397.71875 707.765625 1397.71875 678.390625 c 0 - 1397.71875 650.1875 1406.3125 629.25 1423.65625 615.5 c 0 - 1441 601.75 1467.875 591.28125 1504.28125 584.25 c 1 - 1524.125 580.109375 1543.96875 575.96875 1563.8125 571.828125 c 1 - 1631 559.015625 1680.21875 537.21875 1711.15625 506.515625 c 0 - 1742.25 475.8125 1757.71875 433.546875 1757.71875 379.796875 c 0 - 1757.71875 348.46875 1752.25 319.953125 1741.46875 294.328125 c 0 - 1730.53125 268.78125 1714.75 246.828125 1693.96875 228.625 c 0 - 1673.03125 210.34375 1647.71875 196.28125 1617.5625 186.359375 c 0 - 1587.5625 176.4375 1553.1875 171.515625 1514.90625 171.515625 c 0 -EndSplineSet -EndChar - -StartChar: uniE123 -Encoding: 57635 57635 36 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -253.33 91.1719<499.414 694.483 1066.72 1266.62> 64.4043 83.5156<1082.67 1250.74> 95.1074 89.2969<533.048 697.686> 334.17 94.0625<506.077 806.353> 352.373 87.3438<1075.55 1257.83> 612.686 88.2812<528.291 716.365> 624.17 92.1875<1073.85 1411.82> 960.186 87.3438<549.317 716.57> 1211.67 94.0625<1075.17 1251.25> -VStem: 386.196 112.344<733.124 927.954> 727.681 113.281<-128.478 61.427> 746.196 111.406<733.124 927.954> 926.665 113.281<-137.297 35.7148> 946.821 105.625<172.66 327.633> 1280.96 105.547<172.66 327.633 996.52 1182.98> 1293.38 113.281<-137.297 35.7148> -DStem2: 401.274 54.7949 491.509 97.0605 0.0726244 0.997359<48.7072 286.444> 956.743 727.842 1073.85 716.357 0.752577 0.658505<80.5713 451.637> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -253.33 91.1719<499.414 694.483 1066.72 1266.62> 64.4043 83.5156<1082.67 1250.74> 95.1074 89.2969<533.048 697.686> 334.17 94.0625<506.077 806.353> 352.373 87.3438<1075.55 1257.83> 612.686 88.2812<528.291 716.365> 624.17 92.1875<1073.85 1411.82> 960.186 87.3438<549.317 716.57> 1211.67 94.0625<1075.17 1251.25> -VStem: 386.196 112.344<733.124 927.954> 727.681 113.281<-128.478 61.427> 746.196 111.406<733.124 927.954> 926.665 113.281<-137.297 35.7148> 946.821 105.625<172.66 327.633> 1280.96 105.547<172.66 327.633 996.52 1182.98> 1293.38 113.281<-137.297 35.7148> -DStem2: 401.274 54.7949 491.509 97.0605 0.0726244 0.997359<48.7072 286.444> 956.743 727.842 1073.85 716.357 0.752577 0.658505<80.5713 451.637> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -806.352539062 334.169921875 m 1xb1e0 - 707.16015625 334.169921875 607.966796875 334.169921875 508.774414062 334.169921875 c 1 - 503.01953125 255.133789062 497.263671875 176.096679688 491.508789062 97.060546875 c 1 - 493.748046875 97.060546875 495.98828125 97.060546875 498.227539062 97.060546875 c 1 - 505.883789062 110.498046875 513.930664062 122.451171875 522.211914062 132.998046875 c 0 - 530.571289062 143.623046875 540.102539062 152.685546875 551.040039062 160.419921875 c 0 - 561.899414062 168.076171875 574.399414062 174.013671875 588.461914062 178.154296875 c 0 - 602.524414062 182.294921875 619.165039062 184.404296875 638.383789062 184.404296875 c 0 - 667.211914062 184.404296875 693.930664062 179.560546875 718.540039062 170.029296875 c 0 - 743.149414062 160.419921875 764.633789062 146.669921875 782.836914062 128.701171875 c 0 - 801.118164062 110.810546875 815.336914062 88.857421875 825.571289062 62.919921875 c 0 - 835.805664062 37.060546875 840.961914062 7.763671875 840.961914062 -24.892578125 c 0 - 840.961914062 -58.173828125 835.649414062 -88.876953125 825.102539062 -117.080078125 c 0 - 814.555664062 -145.205078125 799.008789062 -169.345703125 778.540039062 -189.501953125 c 0 - 758.071289062 -209.658203125 732.915039062 -225.361328125 703.149414062 -236.533203125 c 0 - 673.383789062 -247.783203125 639.633789062 -253.330078125 601.899414062 -253.330078125 c 0 - 571.821289062 -253.330078125 545.258789062 -249.970703125 522.211914062 -243.251953125 c 0 - 499.165039062 -236.533203125 478.852539062 -227.626953125 461.274414062 -216.376953125 c 0 - 443.618164062 -205.205078125 428.305664062 -192.392578125 415.180664062 -178.017578125 c 0 - 402.055664062 -163.642578125 390.415039062 -148.720703125 380.102539062 -133.330078125 c 1 - 406.352539062 -112.548828125 432.602539062 -91.767578125 458.852539062 -70.986328125 c 1 - 467.211914062 -84.423828125 475.805664062 -96.533203125 484.790039062 -107.470703125 c 0 - 493.774414062 -118.330078125 504.008789062 -127.939453125 515.493164062 -136.220703125 c 0 - 526.977539062 -144.580078125 539.946289062 -150.986328125 554.399414062 -155.439453125 c 0 - 568.774414062 -159.892578125 585.258789062 -162.158203125 603.852539062 -162.158203125 c 0 - 643.461914062 -162.158203125 674.086914062 -151.298828125 695.493164062 -129.501953125 c 0 - 716.899414062 -107.783203125 727.680664062 -77.705078125 727.680664062 -39.267578125 c 1 - 727.680664062 -35.439453125 727.680664062 -31.611328125 727.680664062 -27.783203125 c 1 - 727.680664062 10.654296875 716.899414062 40.732421875 695.493164062 62.451171875 c 0 - 674.086914062 84.248046875 643.461914062 95.107421875 603.852539062 95.107421875 c 0 - 575.024414062 95.107421875 551.977539062 89.638671875 534.711914062 78.779296875 c 0 - 517.446289062 67.919921875 502.680664062 55.732421875 490.571289062 42.294921875 c 1 - 460.805664062 46.4619140625 431.040039062 50.6279296875 401.274414062 54.794921875 c 1 - 409.58203125 179.274414062 417.888671875 303.752929688 426.196289062 428.232421875 c 1 - 552.915039062 428.232421875 679.633789062 428.232421875 806.352539062 428.232421875 c 1 - 806.352539062 396.877929688 806.352539062 365.524414062 806.352539062 334.169921875 c 1xb1e0 -1166.66503906 -253.330078125 m 256 - 1127.68066406 -253.330078125 1093.22753906 -248.408203125 1063.46191406 -238.486328125 c 0 - 1033.77441406 -228.564453125 1008.77441406 -214.970703125 988.618164062 -197.705078125 c 0 - 968.461914062 -180.439453125 953.071289062 -159.892578125 942.524414062 -136.220703125 c 0 - 931.977539062 -112.548828125 926.665039062 -87.001953125 926.665039062 -59.423828125 c 0x89c9 - 926.665039062 -14.658203125 939.008789062 21.357421875 963.618164062 48.544921875 c 0 - 988.305664062 75.732421875 1020.80566406 94.794921875 1061.11816406 105.654296875 c 1 - 1061.11816406 108.232421875 1061.11816406 110.810546875 1061.11816406 113.388671875 c 1 - 1026.50878906 125.498046875 998.852539062 144.716796875 978.071289062 170.966796875 c 0 - 957.290039062 197.216796875 946.821289062 229.482421875 946.821289062 267.919921875 c 0 - 946.821289062 293.544921875 951.821289062 316.904296875 961.743164062 337.998046875 c 0 - 971.665039062 359.091796875 985.883789062 377.216796875 1004.47753906 392.216796875 c 0 - 1022.99316406 407.294921875 1046.04003906 418.935546875 1073.54003906 427.294921875 c 0 - 1101.11816406 435.576171875 1132.13378906 439.716796875 1166.66503906 439.716796875 c 256 - 1201.27441406 439.716796875 1232.29003906 435.576171875 1259.79003906 427.294921875 c 0 - 1287.36816406 418.935546875 1310.41503906 407.294921875 1328.93066406 392.216796875 c 0 - 1347.52441406 377.216796875 1361.74316406 359.091796875 1371.66503906 337.998046875 c 0 - 1381.58691406 316.904296875 1386.50878906 293.544921875 1386.50878906 267.919921875 c 0x89c6 - 1386.50878906 229.482421875 1376.11816406 197.216796875 1355.33691406 170.966796875 c 0 - 1334.55566406 144.716796875 1306.82128906 125.498046875 1272.29003906 113.388671875 c 1 - 1272.29003906 110.810546875 1272.29003906 108.232421875 1272.29003906 105.654296875 c 1 - 1312.60253906 94.794921875 1345.10253906 75.732421875 1369.71191406 48.544921875 c 0 - 1394.39941406 21.357421875 1406.66503906 -14.658203125 1406.66503906 -59.423828125 c 0x89c1 - 1406.66503906 -87.001953125 1401.43066406 -112.548828125 1390.88378906 -136.220703125 c 0 - 1380.25878906 -159.892578125 1364.94628906 -180.439453125 1344.79003906 -197.705078125 c 0 - 1324.63378906 -214.970703125 1299.63378906 -228.564453125 1269.86816406 -238.486328125 c 0 - 1240.10253906 -248.408203125 1205.72753906 -253.330078125 1166.66503906 -253.330078125 c 256 -1166.66503906 -165.986328125 m 256 - 1206.97753906 -165.986328125 1238.22753906 -156.689453125 1260.25878906 -138.173828125 c 0 - 1282.36816406 -119.580078125 1293.38378906 -93.720703125 1293.38378906 -60.439453125 c 1 - 1293.38378906 -54.033203125 1293.38378906 -47.626953125 1293.38378906 -41.220703125 c 1 - 1293.38378906 -7.939453125 1282.36816406 17.998046875 1260.25878906 36.591796875 c 0 - 1238.22753906 55.107421875 1206.97753906 64.404296875 1166.66503906 64.404296875 c 256xc1c9 - 1126.35253906 64.404296875 1095.18066406 55.107421875 1073.07128906 36.591796875 c 0 - 1051.04003906 17.998046875 1039.94628906 -7.939453125 1039.94628906 -41.220703125 c 1 - 1039.94628906 -47.626953125 1039.94628906 -54.033203125 1039.94628906 -60.439453125 c 1 - 1039.94628906 -93.720703125 1051.04003906 -119.580078125 1073.07128906 -138.173828125 c 0 - 1095.18066406 -156.689453125 1126.35253906 -165.986328125 1166.66503906 -165.986328125 c 256 -1166.66503906 147.919921875 m 256 - 1203.85253906 147.919921875 1232.13378906 155.888671875 1251.66503906 171.904296875 c 0 - 1271.19628906 187.919921875 1280.96191406 211.279296875 1280.96191406 241.982421875 c 1 - 1280.96191406 247.424804688 1280.96191406 252.868164062 1280.96191406 258.310546875 c 1 - 1280.96191406 289.013671875 1271.19628906 312.373046875 1251.66503906 328.388671875 c 0 - 1232.13378906 344.404296875 1203.85253906 352.373046875 1166.66503906 352.373046875 c 256 - 1129.55566406 352.373046875 1101.27441406 344.404296875 1081.74316406 328.388671875 c 0 - 1062.21191406 312.373046875 1052.44628906 289.013671875 1052.44628906 258.310546875 c 1 - 1052.44628906 252.868164062 1052.44628906 247.424804688 1052.44628906 241.982421875 c 1xc9c6 - 1052.44628906 211.279296875 1062.21191406 187.919921875 1081.74316406 171.904296875 c 0 - 1101.27441406 155.888671875 1129.55566406 147.919921875 1166.66503906 147.919921875 c 256 -622.368164062 612.685546875 m 0x85d0 - 585.258789062 612.685546875 552.133789062 618.701171875 522.993164062 630.888671875 c 0 - 493.852539062 643.076171875 469.243164062 660.498046875 449.086914062 683.232421875 c 0 - 428.930664062 705.966796875 413.383789062 733.310546875 402.524414062 765.263671875 c 0 - 391.665039062 797.294921875 386.196289062 833.466796875 386.196289062 873.779296875 c 0 - 386.196289062 922.373046875 393.540039062 968.154296875 408.305664062 1011.04492188 c 0 - 422.993164062 1053.93554688 441.899414062 1093.31054688 464.946289062 1129.09179688 c 0 - 487.993164062 1164.95117188 513.696289062 1196.82617188 542.211914062 1224.63867188 c 0 - 570.649414062 1252.45117188 598.696289062 1275.65429688 626.196289062 1294.24804688 c 1 - 674.19140625 1294.24804688 722.185546875 1294.24804688 770.180664062 1294.24804688 c 1 - 732.446289062 1266.74804688 698.540039062 1240.18554688 668.461914062 1214.56054688 c 0 - 638.383789062 1188.93554688 612.133789062 1162.76367188 589.711914062 1135.88867188 c 0 - 567.290039062 1108.93554688 548.618164062 1080.49804688 533.540039062 1050.41992188 c 0 - 518.540039062 1020.34179688 506.821289062 987.373046875 498.540039062 951.513671875 c 1 - 500.779296875 950.888671875 503.01953125 950.263671875 505.258789062 949.638671875 c 1 - 512.290039062 963.076171875 520.415039062 975.654296875 529.711914062 987.529296875 c 0 - 539.008789062 999.404296875 549.868164062 1009.79492188 562.368164062 1018.70117188 c 0 - 574.868164062 1027.68554688 589.086914062 1034.71679688 605.102539062 1039.87304688 c 0 - 621.118164062 1044.95117188 639.633789062 1047.52929688 660.727539062 1047.52929688 c 0 - 688.930664062 1047.52929688 715.024414062 1042.76367188 739.008789062 1033.15429688 c 0 - 762.993164062 1023.54492188 783.774414062 1009.63867188 801.430664062 991.357421875 c 0 - 819.008789062 973.154296875 832.758789062 951.201171875 842.680664062 925.576171875 c 0 - 852.602539062 900.029296875 857.602539062 871.513671875 857.602539062 840.185546875 c 0 - 857.602539062 806.279296875 851.977539062 775.341796875 840.727539062 747.529296875 c 0 - 829.555664062 719.716796875 813.696289062 695.888671875 793.227539062 676.044921875 c 0 - 772.758789062 656.201171875 747.993164062 640.654296875 718.852539062 629.482421875 c 0 - 689.711914062 618.232421875 657.602539062 612.685546875 622.368164062 612.685546875 c 0x85d0 -622.368164062 700.966796875 m 256 - 661.430664062 700.966796875 691.821289062 711.357421875 713.540039062 732.138671875 c 0 - 735.336914062 752.998046875 746.196289062 783.544921875 746.196289062 823.857421875 c 1 - 746.196289062 828.336914062 746.196289062 832.815429688 746.196289062 837.294921875 c 1 - 746.196289062 877.607421875 735.336914062 908.154296875 713.540039062 928.935546875 c 0 - 691.821289062 949.794921875 661.430664062 960.185546875 622.368164062 960.185546875 c 256 - 583.305664062 960.185546875 552.915039062 949.794921875 531.196289062 928.935546875 c 0 - 509.399414062 908.154296875 498.540039062 877.607421875 498.540039062 837.294921875 c 1 - 498.540039062 832.815429688 498.540039062 828.336914062 498.540039062 823.857421875 c 1 - 498.540039062 783.544921875 509.399414062 752.998046875 531.196289062 732.138671875 c 0 - 552.915039062 711.357421875 583.305664062 700.966796875 622.368164062 700.966796875 c 256 -1411.82128906 624.169921875 m 1x83c0 - 1260.12890625 624.169921875 1108.43554688 624.169921875 956.743164062 624.169921875 c 1 - 956.743164062 658.727539062 956.743164062 693.284179688 956.743164062 727.841796875 c 1 - 1028.12304688 791.513671875 1099.50390625 855.185546875 1170.88378906 918.857421875 c 1 - 1204.79003906 949.638671875 1230.88378906 978.857421875 1249.08691406 1006.74804688 c 0 - 1267.29003906 1034.56054688 1276.43066406 1063.85742188 1276.43066406 1094.56054688 c 1 - 1276.43066406 1098.72753906 1276.43066406 1102.89355469 1276.43066406 1107.06054688 c 1 - 1276.43066406 1139.71679688 1266.66503906 1165.26367188 1247.13378906 1183.85742188 c 0 - 1227.68066406 1202.37304688 1201.27441406 1211.66992188 1167.99316406 1211.66992188 c 0 - 1149.39941406 1211.66992188 1133.22753906 1208.93554688 1119.47753906 1203.54492188 c 0 - 1105.72753906 1198.07617188 1093.69628906 1190.57617188 1083.46191406 1180.96679688 c 0 - 1073.22753906 1171.35742188 1064.79003906 1160.18554688 1058.07128906 1147.37304688 c 0 - 1051.35253906 1134.56054688 1046.04003906 1120.81054688 1042.21191406 1106.12304688 c 1 - 1010.51953125 1118.28417969 978.826171875 1130.44628906 947.133789062 1142.60742188 c 1 - 954.243164062 1163.70117188 963.774414062 1184.01367188 975.961914062 1203.54492188 c 0 - 988.149414062 1223.07617188 1003.46191406 1240.49804688 1022.05566406 1255.88867188 c 0 - 1040.57128906 1271.20117188 1062.52441406 1283.38867188 1087.83691406 1292.29492188 c 0 - 1113.07128906 1301.27929688 1142.68066406 1305.73242188 1176.58691406 1305.73242188 c 256 - 1210.49316406 1305.73242188 1240.96191406 1300.81054688 1267.83691406 1290.88867188 c 0 - 1294.71191406 1280.96679688 1317.21191406 1267.21679688 1335.49316406 1249.63867188 c 0 - 1353.69628906 1231.98242188 1367.68066406 1211.04492188 1377.21191406 1186.74804688 c 0 - 1386.82128906 1162.37304688 1391.66503906 1135.88867188 1391.66503906 1107.06054688 c 0 - 1391.66503906 1080.18554688 1387.52441406 1055.18554688 1379.16503906 1032.13867188 c 0 - 1370.88378906 1009.09179688 1359.32128906 987.373046875 1344.63378906 966.904296875 c 0 - 1329.86816406 946.435546875 1312.75878906 926.904296875 1293.22753906 908.310546875 c 0 - 1273.69628906 889.794921875 1253.07128906 870.888671875 1231.35253906 851.669921875 c 1 - 1178.85253906 806.565429688 1126.35253906 761.461914062 1073.85253906 716.357421875 c 1 - 1186.50878906 716.357421875 1299.16503906 716.357421875 1411.82128906 716.357421875 c 1 - 1411.82128906 685.627929688 1411.82128906 654.899414062 1411.82128906 624.169921875 c 1x83c0 -EndSplineSet -EndChar - -StartChar: uniE124 -Encoding: 57636 57636 37 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -253.33 91.1719<1068.73 1263.8> 4.87305 87.3438<519.871 687.162> 95.1074 89.2969<1102.37 1267.01> 334.17 94.0625<1075.4 1375.67> 351.436 88.2812<519.85 708.188> 612.686 88.2812<529.488 717.562> 624.17 92.1875<1075.05 1413.02> 960.186 87.3438<550.514 717.767> 1211.67 94.0625<1076.36 1252.45> -VStem: 378.877 111.406<124.448 319.279 735.299 925.949> 737.939 112.344<124.448 319.279 733.124 927.954> 1277.63 115.233<990.463 1182.98> 1297 113.281<-128.478 61.427> -DStem2: 957.939 727.842 1075.05 716.357 0.752575 0.658506<80.5711 451.636> 970.596 54.7949 1060.83 97.0605 0.0726286 0.997359<48.7076 286.445> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -253.33 91.1719<1068.73 1263.8> 4.87305 87.3438<519.871 687.162> 95.1074 89.2969<1102.37 1267.01> 334.17 94.0625<1075.4 1375.67> 351.436 88.2812<519.85 708.188> 612.686 88.2812<529.488 717.562> 624.17 92.1875<1075.05 1413.02> 960.186 87.3438<550.514 717.767> 1211.67 94.0625<1076.36 1252.45> -VStem: 378.877 111.406<124.448 319.279 735.299 925.949> 737.939 112.344<124.448 319.279 733.124 927.954> 1277.63 115.233<990.463 1182.98> 1297 113.281<-128.478 61.427> -DStem2: 957.939 727.842 1075.05 716.357 0.752575 0.658506<80.5711 451.636> 970.596 54.7949 1060.83 97.0605 0.0726286 0.997359<48.7076 286.445> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -850.283203125 178.623046875 m 0xe9e0 - 850.283203125 130.029296875 842.861328125 84.248046875 828.173828125 41.357421875 c 0 - 813.486328125 -1.533203125 794.580078125 -40.908203125 771.533203125 -76.689453125 c 0 - 748.486328125 -112.548828125 722.705078125 -144.580078125 694.267578125 -172.705078125 c 0 - 665.751953125 -200.908203125 637.783203125 -223.955078125 610.283203125 -241.845703125 c 1 - 562.26171875 -241.845703125 514.241210938 -241.845703125 466.220703125 -241.845703125 c 1 - 504.033203125 -214.345703125 537.939453125 -187.783203125 568.017578125 -162.158203125 c 0 - 598.095703125 -136.533203125 624.345703125 -110.361328125 646.767578125 -83.408203125 c 0 - 669.111328125 -56.533203125 687.861328125 -28.095703125 702.861328125 1.982421875 c 0 - 717.939453125 32.060546875 729.580078125 65.029296875 737.939453125 100.888671875 c 1 - 735.69921875 101.513671875 733.459960938 102.138671875 731.220703125 102.763671875 c 1 - 724.189453125 89.326171875 715.986328125 76.748046875 706.767578125 64.873046875 c 0 - 697.470703125 52.998046875 686.611328125 42.607421875 674.111328125 33.701171875 c 0 - 661.611328125 24.716796875 647.392578125 17.685546875 631.376953125 12.529296875 c 0 - 615.361328125 7.451171875 596.845703125 4.873046875 575.673828125 4.873046875 c 0 - 547.548828125 4.873046875 521.455078125 9.638671875 497.470703125 19.248046875 c 0 - 473.486328125 28.857421875 452.626953125 42.763671875 435.048828125 61.044921875 c 0 - 417.470703125 79.248046875 403.720703125 101.044921875 393.798828125 126.279296875 c 0 - 383.876953125 151.591796875 378.876953125 180.263671875 378.876953125 212.216796875 c 0 - 378.876953125 245.498046875 384.501953125 276.201171875 395.673828125 304.404296875 c 0 - 406.923828125 332.529296875 422.705078125 356.591796875 443.251953125 376.357421875 c 0 - 463.720703125 396.201171875 488.330078125 411.748046875 517.158203125 422.919921875 c 0 - 545.908203125 434.169921875 578.251953125 439.716796875 614.111328125 439.716796875 c 0 - 651.220703125 439.716796875 684.345703125 433.701171875 713.486328125 421.513671875 c 0 - 742.548828125 409.326171875 767.236328125 391.904296875 787.392578125 369.169921875 c 0 - 807.548828125 346.435546875 823.095703125 319.091796875 833.955078125 287.138671875 c 0 - 844.814453125 255.107421875 850.283203125 218.935546875 850.283203125 178.623046875 c 0xe9e0 -614.111328125 92.216796875 m 256 - 653.173828125 92.216796875 683.564453125 102.607421875 705.283203125 123.466796875 c 0 - 727.080078125 144.248046875 737.939453125 174.794921875 737.939453125 215.107421875 c 1 - 737.939453125 219.586914062 737.939453125 224.065429688 737.939453125 228.544921875 c 1 - 737.939453125 268.857421875 727.080078125 299.404296875 705.283203125 320.263671875 c 0 - 683.564453125 341.044921875 653.173828125 351.435546875 614.111328125 351.435546875 c 256 - 575.048828125 351.435546875 544.658203125 341.044921875 522.861328125 320.263671875 c 0 - 501.142578125 299.404296875 490.283203125 268.857421875 490.283203125 228.544921875 c 1 - 490.283203125 224.065429688 490.283203125 219.586914062 490.283203125 215.107421875 c 1 - 490.283203125 174.794921875 501.142578125 144.248046875 522.861328125 123.466796875 c 0 - 544.658203125 102.607421875 575.048828125 92.216796875 614.111328125 92.216796875 c 256 -1375.67382812 334.169921875 m 1xf1e8 - 1276.48046875 334.169921875 1177.28808594 334.169921875 1078.09570312 334.169921875 c 1 - 1072.33984375 255.133789062 1066.58496094 176.096679688 1060.83007812 97.060546875 c 1 - 1063.06933594 97.060546875 1065.30859375 97.060546875 1067.54882812 97.060546875 c 1 - 1075.20507812 110.498046875 1083.25195312 122.451171875 1091.53320312 132.998046875 c 0 - 1099.89257812 143.623046875 1109.42285156 152.685546875 1120.36132812 160.419921875 c 0 - 1131.21972656 168.076171875 1143.72070312 174.013671875 1157.78320312 178.154296875 c 0 - 1171.84472656 182.294921875 1188.48632812 184.404296875 1207.70507812 184.404296875 c 0 - 1236.53222656 184.404296875 1263.25195312 179.560546875 1287.86132812 170.029296875 c 0 - 1312.46972656 160.419921875 1333.95410156 146.669921875 1352.15820312 128.701171875 c 0 - 1370.43945312 110.810546875 1384.65820312 88.857421875 1394.89257812 62.919921875 c 0 - 1405.12597656 37.060546875 1410.28320312 7.763671875 1410.28320312 -24.892578125 c 0 - 1410.28320312 -58.173828125 1404.97070312 -88.876953125 1394.42382812 -117.080078125 c 0 - 1383.87597656 -145.205078125 1368.33007812 -169.345703125 1347.86035156 -189.501953125 c 0 - 1327.39257812 -209.658203125 1302.23535156 -225.361328125 1272.47070312 -236.533203125 c 0 - 1242.70410156 -247.783203125 1208.95410156 -253.330078125 1171.22070312 -253.330078125 c 0 - 1141.14257812 -253.330078125 1114.58007812 -249.970703125 1091.53320312 -243.251953125 c 0 - 1068.48535156 -236.533203125 1048.17382812 -227.626953125 1030.59570312 -216.376953125 c 0 - 1012.93945312 -205.205078125 997.625976562 -192.392578125 984.501953125 -178.017578125 c 0 - 971.375976562 -163.642578125 959.736328125 -148.720703125 949.423828125 -133.330078125 c 1 - 975.673828125 -112.548828125 1001.92285156 -91.767578125 1028.17285156 -70.986328125 c 1 - 1036.53222656 -84.423828125 1045.12695312 -96.533203125 1054.11132812 -107.470703125 c 0 - 1063.09472656 -118.330078125 1073.32910156 -127.939453125 1084.81445312 -136.220703125 c 0 - 1096.29882812 -144.580078125 1109.26757812 -150.986328125 1123.72070312 -155.439453125 c 0 - 1138.09570312 -159.892578125 1154.57910156 -162.158203125 1173.17382812 -162.158203125 c 0 - 1212.78222656 -162.158203125 1243.40820312 -151.298828125 1264.81445312 -129.501953125 c 0 - 1286.21972656 -107.783203125 1297.00195312 -77.705078125 1297.00195312 -39.267578125 c 1 - 1297.00195312 -35.439453125 1297.00195312 -31.611328125 1297.00195312 -27.783203125 c 1 - 1297.00195312 10.654296875 1286.21972656 40.732421875 1264.81445312 62.451171875 c 0 - 1243.40820312 84.248046875 1212.78222656 95.107421875 1173.17382812 95.107421875 c 0 - 1144.34570312 95.107421875 1121.29785156 89.638671875 1104.03320312 78.779296875 c 0 - 1086.76757812 67.919921875 1072.00097656 55.732421875 1059.89257812 42.294921875 c 1 - 1030.12695312 46.4619140625 1000.36035156 50.6279296875 970.595703125 54.794921875 c 1 - 978.90234375 179.274414062 987.209960938 303.752929688 995.517578125 428.232421875 c 1 - 1122.23535156 428.232421875 1248.95507812 428.232421875 1375.67382812 428.232421875 c 1 - 1375.67382812 396.877929688 1375.67382812 365.524414062 1375.67382812 334.169921875 c 1xf1e8 -623.564453125 612.685546875 m 0xe5e0 - 586.455078125 612.685546875 553.330078125 618.701171875 524.189453125 630.888671875 c 0 - 495.048828125 643.076171875 470.439453125 660.498046875 450.283203125 683.232421875 c 0 - 430.126953125 705.966796875 414.580078125 733.310546875 403.720703125 765.263671875 c 0 - 392.861328125 797.294921875 387.392578125 833.466796875 387.392578125 873.779296875 c 0 - 387.392578125 922.373046875 394.736328125 968.154296875 409.501953125 1011.04492188 c 0 - 424.189453125 1053.93554688 443.095703125 1093.31054688 466.142578125 1129.09179688 c 0 - 489.189453125 1164.95117188 514.892578125 1196.82617188 543.408203125 1224.63867188 c 0 - 571.845703125 1252.45117188 599.892578125 1275.65429688 627.392578125 1294.24804688 c 1 - 675.38671875 1294.24804688 723.381835938 1294.24804688 771.376953125 1294.24804688 c 1 - 733.642578125 1266.74804688 699.736328125 1240.18554688 669.658203125 1214.56054688 c 0 - 639.580078125 1188.93554688 613.330078125 1162.76367188 590.908203125 1135.88867188 c 0 - 568.486328125 1108.93554688 549.814453125 1080.49804688 534.736328125 1050.41992188 c 0 - 519.736328125 1020.34179688 508.017578125 987.373046875 499.736328125 951.513671875 c 1 - 501.975585938 950.888671875 504.21484375 950.263671875 506.455078125 949.638671875 c 1 - 513.486328125 963.076171875 521.611328125 975.654296875 530.908203125 987.529296875 c 0 - 540.205078125 999.404296875 551.064453125 1009.79492188 563.564453125 1018.70117188 c 0 - 576.064453125 1027.68554688 590.283203125 1034.71679688 606.298828125 1039.87304688 c 0 - 622.314453125 1044.95117188 640.830078125 1047.52929688 661.923828125 1047.52929688 c 0 - 690.126953125 1047.52929688 716.220703125 1042.76367188 740.205078125 1033.15429688 c 0 - 764.189453125 1023.54492188 784.970703125 1009.63867188 802.626953125 991.357421875 c 0 - 820.205078125 973.154296875 833.955078125 951.201171875 843.876953125 925.576171875 c 0 - 853.798828125 900.029296875 858.798828125 871.513671875 858.798828125 840.185546875 c 0 - 858.798828125 806.279296875 853.173828125 775.341796875 841.923828125 747.529296875 c 0 - 830.751953125 719.716796875 814.892578125 695.888671875 794.423828125 676.044921875 c 0 - 773.955078125 656.201171875 749.189453125 640.654296875 720.048828125 629.482421875 c 0 - 690.908203125 618.232421875 658.798828125 612.685546875 623.564453125 612.685546875 c 0xe5e0 -623.564453125 700.966796875 m 256 - 662.626953125 700.966796875 693.017578125 711.357421875 714.736328125 732.138671875 c 0 - 736.533203125 752.998046875 747.392578125 783.544921875 747.392578125 823.857421875 c 1 - 747.392578125 828.336914062 747.392578125 832.815429688 747.392578125 837.294921875 c 1 - 747.392578125 877.607421875 736.533203125 908.154296875 714.736328125 928.935546875 c 0 - 693.017578125 949.794921875 662.626953125 960.185546875 623.564453125 960.185546875 c 256 - 584.501953125 960.185546875 554.111328125 949.794921875 532.392578125 928.935546875 c 0 - 510.595703125 908.154296875 499.736328125 877.607421875 499.736328125 837.294921875 c 1 - 499.736328125 832.815429688 499.736328125 828.336914062 499.736328125 823.857421875 c 1 - 499.736328125 783.544921875 510.595703125 752.998046875 532.392578125 732.138671875 c 0 - 554.111328125 711.357421875 584.501953125 700.966796875 623.564453125 700.966796875 c 256 -1413.01757812 624.169921875 m 1xe3f0 - 1261.32421875 624.169921875 1109.63183594 624.169921875 957.939453125 624.169921875 c 1 - 957.939453125 658.727539062 957.939453125 693.284179688 957.939453125 727.841796875 c 1 - 1029.31933594 791.513671875 1100.69921875 855.185546875 1172.08007812 918.857421875 c 1 - 1205.98535156 949.638671875 1232.08007812 978.857421875 1250.28320312 1006.74804688 c 0 - 1268.48535156 1034.56054688 1277.62695312 1063.85742188 1277.62695312 1094.56054688 c 1 - 1277.62695312 1098.72753906 1277.62695312 1102.89355469 1277.62695312 1107.06054688 c 1 - 1277.62695312 1139.71679688 1267.86035156 1165.26367188 1248.33007812 1183.85742188 c 0 - 1228.87597656 1202.37304688 1202.47070312 1211.66992188 1169.18847656 1211.66992188 c 0 - 1150.59570312 1211.66992188 1134.42382812 1208.93554688 1120.67382812 1203.54492188 c 0 - 1106.92382812 1198.07617188 1094.89160156 1190.57617188 1084.65820312 1180.96679688 c 0 - 1074.42382812 1171.35742188 1065.98535156 1160.18554688 1059.26660156 1147.37304688 c 0 - 1052.54882812 1134.56054688 1047.23535156 1120.81054688 1043.40722656 1106.12304688 c 1 - 1011.71484375 1118.28417969 980.022460938 1130.44628906 948.330078125 1142.60742188 c 1 - 955.439453125 1163.70117188 964.969726562 1184.01367188 977.158203125 1203.54492188 c 0 - 989.345703125 1223.07617188 1004.65820312 1240.49804688 1023.25195312 1255.88867188 c 0 - 1041.76660156 1271.20117188 1063.71972656 1283.38867188 1089.03320312 1292.29492188 c 0 - 1114.26660156 1301.27929688 1143.87597656 1305.73242188 1177.78320312 1305.73242188 c 256 - 1211.68847656 1305.73242188 1242.15820312 1300.81054688 1269.03320312 1290.88867188 c 0 - 1295.90722656 1280.96679688 1318.40820312 1267.21679688 1336.68945312 1249.63867188 c 0 - 1354.89160156 1231.98242188 1368.87695312 1211.04492188 1378.40820312 1186.74804688 c 0 - 1388.01757812 1162.37304688 1392.86035156 1135.88867188 1392.86035156 1107.06054688 c 0 - 1392.86035156 1080.18554688 1388.72070312 1055.18554688 1380.36132812 1032.13867188 c 0 - 1372.07910156 1009.09179688 1360.51757812 987.373046875 1345.82910156 966.904296875 c 0 - 1331.06347656 946.435546875 1313.95507812 926.904296875 1294.42285156 908.310546875 c 0 - 1274.89257812 889.794921875 1254.26660156 870.888671875 1232.54882812 851.669921875 c 1 - 1180.04882812 806.565429688 1127.54882812 761.461914062 1075.04882812 716.357421875 c 1 - 1187.70507812 716.357421875 1300.36132812 716.357421875 1413.01757812 716.357421875 c 1 - 1413.01757812 685.627929688 1413.01757812 654.899414062 1413.01757812 624.169921875 c 1xe3f0 -EndSplineSet -EndChar - -StartChar: uniE125 -Encoding: 57637 57637 38 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -62.2031 83.5156<801.078 977.719> 330.375 92.1875<873.463 902.443> 607.016 89.2188<744.694 935.623> 889.203 90.2344<158.891 368.066> 1143.66 144.922<1268.34 1295.67 1615.84 1643.66> 1198.34 90.2344<158.891 368.066 736.496 938.717> -VStem: 57.0938 101.797<618.5 889.203 979.438 1198.34> 387.328 108.516<998.779 1179.01> 590.219 109.453<744.746 1162.33> 624.438 99.8438<-247.516 -147.672> 1053.58 102.734<-247.516 -144.781> 1177.09 97.9688<618.5 1141.9> 1636.94 97.9688<618.5 1143.75> -DStem2: 624.438 -247.516 724.281 -247.516 0.286825 0.957983<28.6377 221.043 308.198 625.84> 954.672 422.562 915.297 232.484 0.276827 -0.96092<73.4064 391.949 478.84 671.271> 1297.09 1288.58 1279.83 1143.66 0.416929 -0.908939<124.527 395.989> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -62.2031 83.5156<801.078 977.719> 330.375 92.1875<873.463 902.443> 607.016 89.2188<744.694 935.623> 889.203 90.2344<158.891 368.066> 1143.66 144.922<1268.34 1295.67 1615.84 1643.66> 1198.34 90.2344<158.891 368.066 736.496 938.717> -VStem: 57.0938 101.797<618.5 889.203 979.438 1198.34> 387.328 108.516<998.779 1179.01> 590.219 109.453<744.746 1162.33> 624.438 99.8438<-247.516 -147.672> 1053.58 102.734<-247.516 -144.781> 1177.09 97.9688<618.5 1141.9> 1636.94 97.9688<618.5 1143.75> -DStem2: 624.438 -247.516 724.281 -247.516 0.286825 0.957983<28.6377 221.043 308.198 625.84> 954.672 422.562 915.297 232.484 0.276827 -0.96092<73.4064 391.949 478.84 671.271> 1297.09 1288.58 1279.83 1143.66 0.416929 -0.908939<124.527 395.989> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -1053.578125 -247.515625 m 1xf378 - 1036.28613281 -185.745117188 1018.99511719 -123.974609375 1001.703125 -62.203125 c 1 - 926.520507812 -62.203125 851.338867188 -62.203125 776.15625 -62.203125 c 1 - 758.864257812 -123.974609375 741.573242188 -185.745117188 724.28125 -247.515625 c 1 - 691 -247.515625 657.71875 -247.515625 624.4375 -247.515625 c 1 - 691.3125 -24.15625 758.1875 199.203125 825.0625 422.5625 c 1 - 868.265625 422.5625 911.46875 422.5625 954.671875 422.5625 c 1 - 1021.88574219 199.203125 1089.09863281 -24.15625 1156.3125 -247.515625 c 1 - 1122.06738281 -247.515625 1087.82324219 -247.515625 1053.578125 -247.515625 c 1xf378 -915.296875 232.484375 m 1 - 908.265625 265.114257812 901.234375 297.744140625 894.203125 330.375 c 1 - 890.036132812 330.375 885.870117188 330.375 881.703125 330.375 c 1 - 874.671875 297.744140625 867.640625 265.114257812 860.609375 232.484375 c 1 - 840.765625 162.09375 820.921875 91.703125 801.078125 21.3125 c 1 - 859.958007812 21.3125 918.838867188 21.3125 977.71875 21.3125 c 1 - 956.911132812 91.703125 936.104492188 162.09375 915.296875 232.484375 c 1 -57.09375 618.5 m 1 - 57.09375 841.859375 57.09375 1065.21875 57.09375 1288.578125 c 1 - 145.426757812 1288.578125 233.760742188 1288.578125 322.09375 1288.578125 c 1xf738 - 379.671875 1288.578125 423.03125 1271.46875 452.171875 1237.25 c 0 - 481.234375 1202.953125 495.84375 1153.578125 495.84375 1088.890625 c 256 - 495.84375 1024.28125 481.234375 974.828125 452.171875 940.609375 c 0 - 423.03125 906.3125 379.671875 889.203125 322.09375 889.203125 c 1 - 267.692382812 889.203125 213.291992188 889.203125 158.890625 889.203125 c 1 - 158.890625 798.96875 158.890625 708.734375 158.890625 618.5 c 1 - 124.958007812 618.5 91.0263671875 618.5 57.09375 618.5 c 1 -158.890625 979.4375 m 1 - 210.401367188 979.4375 261.911132812 979.4375 313.421875 979.4375 c 1 - 337.71875 979.4375 356.15625 985.6875 368.65625 998.1875 c 0 - 381.078125 1010.6875 387.328125 1030.6875 387.328125 1058.1875 c 1 - 387.328125 1078.65625 387.328125 1099.125 387.328125 1119.59375 c 1 - 387.328125 1147.171875 381.078125 1167.171875 368.65625 1179.59375 c 0 - 356.15625 1192.09375 337.71875 1198.34375 313.421875 1198.34375 c 1 - 261.911132812 1198.34375 210.401367188 1198.34375 158.890625 1198.34375 c 1 - 158.890625 1125.375 158.890625 1052.40625 158.890625 979.4375 c 1 -843.65625 607.015625 m 0 - 804.59375 607.015625 769.59375 613.578125 738.578125 626.625 c 0 - 707.484375 639.75 680.921875 660.453125 658.890625 688.578125 c 0 - 636.78125 716.703125 619.828125 752.71875 607.953125 796.546875 c 0 - 596.15625 840.453125 590.21875 892.71875 590.21875 953.578125 c 256 - 590.21875 1014.359375 596.15625 1066.625 607.953125 1110.53125 c 0 - 619.828125 1154.359375 636.78125 1190.375 658.890625 1218.5 c 0 - 680.921875 1246.625 707.484375 1267.328125 738.578125 1280.453125 c 0 - 769.59375 1293.578125 804.59375 1300.0625 843.65625 1300.0625 c 0 - 900.609375 1300.0625 946.234375 1287.796875 980.453125 1263.109375 c 0 - 1014.671875 1238.5 1042.09375 1201.546875 1062.5625 1152.25 c 1 - 1033.76074219 1136.25976562 1004.95800781 1120.27050781 976.15625 1104.28125 c 1 - 964.59375 1142.015625 948.5 1169.20214844 927.640625 1185.84375 c 0 - 906.859375 1202.48339844 878.890625 1210.84375 843.65625 1210.84375 c 0 - 798.265625 1210.84375 762.875 1195.140625 737.5625 1163.8125 c 0 - 712.328125 1132.40625 699.671875 1089.203125 699.671875 1034.203125 c 1 - 699.671875 980.426757812 699.671875 926.650390625 699.671875 872.875 c 1xf3b8 - 699.671875 817.875 712.328125 774.671875 737.5625 743.265625 c 0 - 762.875 711.9375 798.265625 696.234375 843.65625 696.234375 c 0 - 879.515625 696.234375 908.5 705.217773438 930.53125 723.109375 c 0 - 952.640625 741.077148438 969.75 769.828125 981.9375 809.515625 c 1 - 1010.08886719 792.875 1038.23925781 776.234375 1066.390625 759.59375 c 1 - 1045.296875 710.375 1017.09375 672.561523438 981.9375 646.3125 c 0 - 946.703125 620.061523438 900.609375 607.015625 843.65625 607.015625 c 0 -1636.9375 1031.3125 m 1 - 1639.17675781 1069.38476562 1641.41699219 1107.45800781 1643.65625 1145.53125 c 1 - 1639.828125 1145.53125 1636 1145.53125 1632.171875 1145.53125 c 1 - 1616.80761719 1108.08300781 1601.44238281 1070.63476562 1586.078125 1033.1875 c 1 - 1542.5625 942.328125 1499.046875 851.46875 1455.53125 760.609375 c 1 - 1412.328125 851.46875 1369.125 942.328125 1325.921875 1033.1875 c 1 - 1310.55761719 1070.00976562 1295.19238281 1106.83300781 1279.828125 1143.65625 c 1 - 1276 1143.65625 1272.171875 1143.65625 1268.34375 1143.65625 c 1xfb38 - 1270.58300781 1106.20800781 1272.82324219 1068.75976562 1275.0625 1031.3125 c 1 - 1275.0625 893.708007812 1275.0625 756.103515625 1275.0625 618.5 c 1 - 1242.40625 618.5 1209.75 618.5 1177.09375 618.5 c 1 - 1177.09375 841.859375 1177.09375 1065.21875 1177.09375 1288.578125 c 1 - 1217.09375 1288.578125 1257.09375 1288.578125 1297.09375 1288.578125 c 1xf738 - 1333.265625 1210.50488281 1369.4375 1132.43164062 1405.609375 1054.359375 c 1 - 1421.28613281 1010.19238281 1436.96386719 966.025390625 1452.640625 921.859375 c 1 - 1455.50488281 921.859375 1458.37011719 921.859375 1461.234375 921.859375 c 1 - 1476.9375 966.025390625 1492.640625 1010.19238281 1508.34375 1054.359375 c 1 - 1544.17675781 1132.43164062 1580.01074219 1210.50488281 1615.84375 1288.578125 c 1xfb38 - 1655.53125 1288.578125 1695.21875 1288.578125 1734.90625 1288.578125 c 1xf738 - 1734.90625 1065.21875 1734.90625 841.859375 1734.90625 618.5 c 1 - 1702.25 618.5 1669.59375 618.5 1636.9375 618.5 c 1 - 1636.9375 756.103515625 1636.9375 893.708007812 1636.9375 1031.3125 c 1 -EndSplineSet -EndChar - -StartChar: uniE126 -Encoding: 57638 57638 39 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -247.516 89.2969<766.078 988.208> 51.0781 87.3438<766.078 968.007> 333.266 89.2969<766.078 968.007> 607.016 89.2188<744.694 935.623> 889.203 90.2344<158.891 368.066> 1143.66 144.922<1268.34 1295.67 1615.84 1643.66> 1198.34 90.2344<158.891 368.066 736.496 938.717> -VStem: 57.0938 101.797<618.5 889.203 979.438 1198.34> 387.328 108.516<998.779 1179.01> 590.219 109.453<744.746 1162.33> 664.281 101.797<-158.219 51.0781 138.422 333.266> 986.859 107.5<156.718 314.969> 1007.95 108.516<-137.91 30.7696> 1177.09 97.9688<618.5 1141.9> 1636.94 97.9688<618.5 1143.75> -DStem2: 1297.09 1288.58 1279.83 1143.66 0.416929 -0.908939<124.527 395.989> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -247.516 89.2969<766.078 988.208> 51.0781 87.3438<766.078 968.007> 333.266 89.2969<766.078 968.007> 607.016 89.2188<744.694 935.623> 889.203 90.2344<158.891 368.066> 1143.66 144.922<1268.34 1295.67 1615.84 1643.66> 1198.34 90.2344<158.891 368.066 736.496 938.717> -VStem: 57.0938 101.797<618.5 889.203 979.438 1198.34> 387.328 108.516<998.779 1179.01> 590.219 109.453<744.746 1162.33> 664.281 101.797<-158.219 51.0781 138.422 333.266> 986.859 107.5<156.718 314.969> 1007.95 108.516<-137.91 30.7696> 1177.09 97.9688<618.5 1141.9> 1636.94 97.9688<618.5 1143.75> -DStem2: 1297.09 1288.58 1279.83 1143.66 0.416929 -0.908939<124.527 395.989> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -664.28125 422.5625 m 1xf9ae - 754.854492188 422.5625 845.426757812 422.5625 936 422.5625 c 1 - 987.796875 422.5625 1027.171875 407.874023438 1054.046875 378.421875 c 0 - 1080.921875 348.967773438 1094.359375 306.078125 1094.359375 249.75 c 0 - 1094.359375 206.859375 1085.0625 173.265625 1066.546875 148.96875 c 0 - 1047.953125 124.670898438 1021.390625 110.920898438 986.859375 107.71875 c 1 - 986.859375 103.864257812 986.859375 100.009765625 986.859375 96.15625 c 1xf9b6 - 1006.078125 96.15625 1023.5 92.4833984375 1039.203125 85.140625 c 0 - 1054.828125 77.796875 1068.421875 67.3271484375 1079.984375 53.890625 c 0 - 1091.46875 40.453125 1100.453125 24.515625 1106.859375 5.921875 c 0 - 1113.265625 -12.6728515625 1116.46875 -32.828125 1116.46875 -54.546875 c 0 - 1116.46875 -83.375 1112.796875 -109.625976562 1105.453125 -133.296875 c 0 - 1098.03125 -156.96875 1087.640625 -177.282226562 1074.203125 -194.234375 c 0 - 1060.765625 -211.1875 1044.59375 -224.313476562 1025.765625 -233.609375 c 0 - 1006.859375 -242.90625 985.921875 -247.515625 962.875 -247.515625 c 1 - 863.34375 -247.515625 763.8125 -247.515625 664.28125 -247.515625 c 1 - 664.28125 -24.15625 664.28125 199.203125 664.28125 422.5625 c 1xf9ae -766.078125 -158.21875 m 1 - 821.754882812 -158.21875 877.432617188 -158.21875 933.109375 -158.21875 c 1 - 957.40625 -158.21875 976 -151.65625 988.8125 -138.53125 c 0 - 1001.546875 -125.40625 1007.953125 -104.46875 1007.953125 -75.640625 c 1 - 1007.953125 -60.927734375 1007.953125 -46.2138671875 1007.953125 -31.5 c 1xf9ae - 1007.953125 -2.75 1001.546875 18.265625 988.8125 31.390625 c 0 - 976 44.515625 957.40625 51.078125 933.109375 51.078125 c 1 - 877.432617188 51.078125 821.754882812 51.078125 766.078125 51.078125 c 1 - 766.078125 -18.6875 766.078125 -88.453125 766.078125 -158.21875 c 1 -766.078125 138.421875 m 1 - 816.3125 138.421875 866.546875 138.421875 916.78125 138.421875 c 1 - 939.203125 138.421875 956.46875 144.359375 968.578125 156.15625 c 0 - 980.765625 168.03125 986.859375 187.327148438 986.859375 214.28125 c 1 - 986.859375 228.65625 986.859375 243.03125 986.859375 257.40625 c 1xf9b6 - 986.859375 284.359375 980.765625 303.655273438 968.578125 315.53125 c 0 - 956.46875 327.327148438 939.203125 333.265625 916.78125 333.265625 c 1 - 866.546875 333.265625 816.3125 333.265625 766.078125 333.265625 c 1 - 766.078125 268.317382812 766.078125 203.369140625 766.078125 138.421875 c 1 -57.09375 618.5 m 1 - 57.09375 841.859375 57.09375 1065.21875 57.09375 1288.578125 c 1 - 145.426757812 1288.578125 233.760742188 1288.578125 322.09375 1288.578125 c 1xfb86 - 379.671875 1288.578125 423.03125 1271.46875 452.171875 1237.25 c 0 - 481.234375 1202.953125 495.84375 1153.578125 495.84375 1088.890625 c 256 - 495.84375 1024.28125 481.234375 974.828125 452.171875 940.609375 c 0 - 423.03125 906.3125 379.671875 889.203125 322.09375 889.203125 c 1 - 267.692382812 889.203125 213.291992188 889.203125 158.890625 889.203125 c 1 - 158.890625 798.96875 158.890625 708.734375 158.890625 618.5 c 1 - 124.958007812 618.5 91.0263671875 618.5 57.09375 618.5 c 1 -158.890625 979.4375 m 1 - 210.401367188 979.4375 261.911132812 979.4375 313.421875 979.4375 c 1 - 337.71875 979.4375 356.15625 985.6875 368.65625 998.1875 c 0 - 381.078125 1010.6875 387.328125 1030.6875 387.328125 1058.1875 c 1 - 387.328125 1078.65625 387.328125 1099.125 387.328125 1119.59375 c 1 - 387.328125 1147.171875 381.078125 1167.171875 368.65625 1179.59375 c 0 - 356.15625 1192.09375 337.71875 1198.34375 313.421875 1198.34375 c 1 - 261.911132812 1198.34375 210.401367188 1198.34375 158.890625 1198.34375 c 1 - 158.890625 1125.375 158.890625 1052.40625 158.890625 979.4375 c 1 -843.65625 607.015625 m 0 - 804.59375 607.015625 769.59375 613.578125 738.578125 626.625 c 0 - 707.484375 639.75 680.921875 660.453125 658.890625 688.578125 c 0 - 636.78125 716.703125 619.828125 752.71875 607.953125 796.546875 c 0 - 596.15625 840.453125 590.21875 892.71875 590.21875 953.578125 c 256 - 590.21875 1014.359375 596.15625 1066.625 607.953125 1110.53125 c 0 - 619.828125 1154.359375 636.78125 1190.375 658.890625 1218.5 c 0 - 680.921875 1246.625 707.484375 1267.328125 738.578125 1280.453125 c 0 - 769.59375 1293.578125 804.59375 1300.0625 843.65625 1300.0625 c 0 - 900.609375 1300.0625 946.234375 1287.796875 980.453125 1263.109375 c 0 - 1014.671875 1238.5 1042.09375 1201.546875 1062.5625 1152.25 c 1 - 1033.76074219 1136.25976562 1004.95800781 1120.27050781 976.15625 1104.28125 c 1 - 964.59375 1142.015625 948.5 1169.20214844 927.640625 1185.84375 c 0 - 906.859375 1202.48339844 878.890625 1210.84375 843.65625 1210.84375 c 0 - 798.265625 1210.84375 762.875 1195.140625 737.5625 1163.8125 c 0 - 712.328125 1132.40625 699.671875 1089.203125 699.671875 1034.203125 c 1 - 699.671875 980.426757812 699.671875 926.650390625 699.671875 872.875 c 1xf9c6 - 699.671875 817.875 712.328125 774.671875 737.5625 743.265625 c 0 - 762.875 711.9375 798.265625 696.234375 843.65625 696.234375 c 0 - 879.515625 696.234375 908.5 705.217773438 930.53125 723.109375 c 0 - 952.640625 741.077148438 969.75 769.828125 981.9375 809.515625 c 1 - 1010.08886719 792.875 1038.23925781 776.234375 1066.390625 759.59375 c 1 - 1045.296875 710.375 1017.09375 672.561523438 981.9375 646.3125 c 0 - 946.703125 620.061523438 900.609375 607.015625 843.65625 607.015625 c 0 -1636.9375 1031.3125 m 1 - 1639.17675781 1069.38476562 1641.41699219 1107.45800781 1643.65625 1145.53125 c 1 - 1639.828125 1145.53125 1636 1145.53125 1632.171875 1145.53125 c 1 - 1616.80761719 1108.08300781 1601.44238281 1070.63476562 1586.078125 1033.1875 c 1 - 1542.5625 942.328125 1499.046875 851.46875 1455.53125 760.609375 c 1 - 1412.328125 851.46875 1369.125 942.328125 1325.921875 1033.1875 c 1 - 1310.55761719 1070.00976562 1295.19238281 1106.83300781 1279.828125 1143.65625 c 1 - 1276 1143.65625 1272.171875 1143.65625 1268.34375 1143.65625 c 1xfd86 - 1270.58300781 1106.20800781 1272.82324219 1068.75976562 1275.0625 1031.3125 c 1 - 1275.0625 893.708007812 1275.0625 756.103515625 1275.0625 618.5 c 1 - 1242.40625 618.5 1209.75 618.5 1177.09375 618.5 c 1 - 1177.09375 841.859375 1177.09375 1065.21875 1177.09375 1288.578125 c 1 - 1217.09375 1288.578125 1257.09375 1288.578125 1297.09375 1288.578125 c 1xfb86 - 1333.265625 1210.50488281 1369.4375 1132.43164062 1405.609375 1054.359375 c 1 - 1421.28613281 1010.19238281 1436.96386719 966.025390625 1452.640625 921.859375 c 1 - 1455.50488281 921.859375 1458.37011719 921.859375 1461.234375 921.859375 c 1 - 1476.9375 966.025390625 1492.640625 1010.19238281 1508.34375 1054.359375 c 1 - 1544.17675781 1132.43164062 1580.01074219 1210.50488281 1615.84375 1288.578125 c 1xfd86 - 1655.53125 1288.578125 1695.21875 1288.578125 1734.90625 1288.578125 c 1xfb86 - 1734.90625 1065.21875 1734.90625 841.859375 1734.90625 618.5 c 1 - 1702.25 618.5 1669.59375 618.5 1636.9375 618.5 c 1 - 1636.9375 756.103515625 1636.9375 893.708007812 1636.9375 1031.3125 c 1 -EndSplineSet -EndChar - -StartChar: uniE127 -Encoding: 57639 57639 40 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -253.33 96.9531<472.423 704.729> -60.4395 93.125<1098.35 1296.09> 22.1387 93.125<608.117 746.32> 328.389 99.8438<1183.19 1212.07> 342.764 96.9531<472.697 701.413> 612.686 95.9375<510.965 736.75 1097.49 1418.2> 916.045 95.9375<1097.49 1388.43> 1209.79 95.9375<536.534 754.946 1097.49 1418.2> -VStem: 295.148 116.172<-93.8873 280.002> 405.07 107.5<1052.56 1188.85> 755.93 95.0781<-241.846 -140.049 -108.342 22.1387> 765.07 107.5<735.735 882.928> 903.43 110.391<-241.846 -131.455> 989.055 108.438<720.186 916.045 1011.98 1198.23> 1383.43 113.281<-241.846 -128.564> -DStem2: 619.133 1025.42 600.852 922.764 0.978916 -0.204262<-84.378 149.631> 903.43 -241.846 1013.82 -241.846 0.322775 0.946476<35.6313 226.241 322.753 322.753> 1268.27 428.232 1200.07 328.389 0.306115 -0.951995<74.1727 385.072 481.954 673.162> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -253.33 96.9531<472.423 704.729> -60.4395 93.125<1098.35 1296.09> 22.1387 93.125<608.117 746.32> 328.389 99.8438<1183.19 1212.07> 342.764 96.9531<472.697 701.413> 612.686 95.9375<510.965 736.75 1097.49 1418.2> 916.045 95.9375<1097.49 1388.43> 1209.79 95.9375<536.534 754.946 1097.49 1418.2> -VStem: 295.148 116.172<-93.8873 280.002> 405.07 107.5<1052.56 1188.85> 755.93 95.0781<-241.846 -140.049 -108.342 22.1387> 765.07 107.5<735.735 882.928> 903.43 110.391<-241.846 -131.455> 989.055 108.438<720.186 916.045 1011.98 1198.23> 1383.43 113.281<-241.846 -128.564> -DStem2: 619.133 1025.42 600.852 922.764 0.978916 -0.204262<-84.378 149.631> 903.43 -241.846 1013.82 -241.846 0.322775 0.946476<35.6313 226.241 322.753 322.753> 1268.27 428.232 1200.07 328.389 0.306115 -0.951995<74.1727 385.072 481.954 673.162> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -755.9296875 -140.048828125 m 1xafa2 - 754.653320312 -140.048828125 753.377929688 -140.048828125 752.1015625 -140.048828125 c 1 - 745.0703125 -172.705078125 726.0078125 -199.736328125 694.9921875 -221.220703125 c 0 - 663.8984375 -242.626953125 622.8046875 -253.330078125 571.6328125 -253.330078125 c 0 - 531.9453125 -253.330078125 495.1484375 -245.830078125 461.2421875 -230.830078125 c 0 - 427.2578125 -215.751953125 398.0390625 -193.720703125 373.3515625 -164.580078125 c 0 - 348.7421875 -135.439453125 329.5234375 -99.267578125 315.7734375 -56.064453125 c 0 - 302.0234375 -12.861328125 295.1484375 36.904296875 295.1484375 93.232421875 c 0 - 295.1484375 148.857421875 302.1796875 198.310546875 316.2421875 241.513671875 c 0 - 330.3046875 284.716796875 350.1484375 321.044921875 375.7734375 350.498046875 c 0 - 401.3984375 379.951171875 432.1015625 402.138671875 467.9609375 417.216796875 c 0 - 503.7421875 432.216796875 543.7421875 439.716796875 587.9609375 439.716796875 c 0 - 648.1171875 439.716796875 698.9765625 426.435546875 740.5390625 399.951171875 c 0 - 782.1796875 373.388671875 814.5234375 336.357421875 837.5703125 289.013671875 c 1 - 808.1171875 271.748046875 778.6640625 254.482421875 749.2109375 237.216796875 c 1 - 736.3984375 268.544921875 716.5546875 294.013671875 689.6796875 313.544921875 c 0 - 662.8046875 332.998046875 628.8984375 342.763671875 587.9609375 342.763671875 c 0 - 534.8359375 342.763671875 492.1015625 325.810546875 459.7578125 291.904296875 c 0 - 427.4921875 257.998046875 411.3203125 210.029296875 411.3203125 147.919921875 c 1 - 411.3203125 111.435546875 411.3203125 74.951171875 411.3203125 38.466796875 c 1 - 411.3203125 -23.642578125 427.4921875 -71.611328125 459.7578125 -105.517578125 c 0 - 492.1015625 -139.423828125 534.8359375 -156.376953125 587.9609375 -156.376953125 c 0 - 609.0546875 -156.376953125 629.2109375 -153.720703125 648.4296875 -148.251953125 c 0 - 667.6484375 -142.783203125 684.4453125 -134.814453125 698.8203125 -124.267578125 c 0 - 713.1953125 -113.720703125 724.7578125 -100.595703125 733.3515625 -84.892578125 c 0 - 742.0234375 -69.189453125 746.3203125 -50.830078125 746.3203125 -29.658203125 c 1 - 746.3203125 -12.392578125 746.3203125 4.873046875 746.3203125 22.138671875 c 1 - 700.252929688 22.138671875 654.184570312 22.138671875 608.1171875 22.138671875 c 1 - 608.1171875 53.1806640625 608.1171875 84.2216796875 608.1171875 115.263671875 c 1 - 689.081054688 115.263671875 770.043945312 115.263671875 851.0078125 115.263671875 c 1 - 851.0078125 -3.7724609375 851.0078125 -122.809570312 851.0078125 -241.845703125 c 1 - 819.315429688 -241.845703125 787.622070312 -241.845703125 755.9296875 -241.845703125 c 1 - 755.9296875 -207.913085938 755.9296875 -173.981445312 755.9296875 -140.048828125 c 1xafa2 -1383.4296875 -241.845703125 m 1 - 1363.2734375 -181.376953125 1343.1171875 -120.908203125 1322.9609375 -60.439453125 c 1 - 1239.4453125 -60.439453125 1155.9296875 -60.439453125 1072.4140625 -60.439453125 c 1 - 1052.8828125 -120.908203125 1033.3515625 -181.376953125 1013.8203125 -241.845703125 c 1 - 977.0234375 -241.845703125 940.2265625 -241.845703125 903.4296875 -241.845703125 c 1 - 979.6015625 -18.486328125 1055.7734375 204.873046875 1131.9453125 428.232421875 c 1 - 1177.38769531 428.232421875 1222.83105469 428.232421875 1268.2734375 428.232421875 c 1xd70a - 1344.41894531 204.873046875 1420.56542969 -18.486328125 1496.7109375 -241.845703125 c 1 - 1458.95019531 -241.845703125 1421.19042969 -241.845703125 1383.4296875 -241.845703125 c 1 -1200.0703125 328.388671875 m 1 - 1198.48144531 328.388671875 1196.89355469 328.388671875 1195.3046875 328.388671875 c 1 - 1162.98730469 229.821289062 1130.66894531 131.252929688 1098.3515625 32.685546875 c 1 - 1164.26269531 32.685546875 1230.17480469 32.685546875 1296.0859375 32.685546875 c 1 - 1264.08105469 131.252929688 1232.07519531 229.821289062 1200.0703125 328.388671875 c 1 -629.6796875 612.685546875 m 0 - 573.3515625 612.685546875 525.5390625 622.919921875 486.1640625 643.388671875 c 0 - 446.7890625 663.857421875 413.0390625 691.357421875 384.9140625 725.966796875 c 1 - 409.862304688 749.326171875 434.809570312 772.685546875 459.7578125 796.044921875 c 1 - 483.4296875 767.216796875 509.5234375 745.419921875 537.9609375 730.732421875 c 0 - 566.4765625 716.044921875 598.9765625 708.623046875 635.4609375 708.623046875 c 0 - 678.3515625 708.623046875 710.6171875 718.232421875 732.4140625 737.451171875 c 0 - 754.1328125 756.669921875 765.0703125 782.607421875 765.0703125 815.185546875 c 0 - 765.0703125 841.435546875 757.3359375 862.216796875 742.0234375 877.607421875 c 0 - 726.6328125 892.998046875 699.4453125 904.482421875 660.3828125 912.138671875 c 1 - 640.5390625 915.680664062 620.6953125 919.221679688 600.8515625 922.763671875 c 1 - 535.6171875 934.873046875 486.6328125 956.357421875 453.9765625 987.060546875 c 0 - 421.3203125 1017.76367188 405.0703125 1060.02929688 405.0703125 1113.77929688 c 0 - 405.0703125 1143.23242188 410.6171875 1169.95117188 421.8671875 1193.93554688 c 0 - 433.0390625 1217.91992188 448.7421875 1238.07617188 468.8984375 1254.40429688 c 0 - 489.0546875 1270.73242188 513.5078125 1283.38867188 542.3359375 1292.29492188 c 0 - 571.0859375 1301.27929688 603.4296875 1305.73242188 639.2890625 1305.73242188 c 0 - 689.8359375 1305.73242188 733.6640625 1296.98242188 770.7734375 1279.40429688 c 0 - 807.8828125 1261.74804688 839.6015625 1236.35742188 865.8515625 1203.07617188 c 1 - 840.565429688 1180.68066406 815.278320312 1158.28417969 789.9921875 1135.88867188 c 1 - 772.7265625 1158.23242188 751.6328125 1176.20117188 726.6328125 1189.63867188 c 0 - 701.7109375 1203.07617188 670.6171875 1209.79492188 633.5078125 1209.79492188 c 0 - 595.1484375 1209.79492188 565.3828125 1202.06054688 544.2109375 1186.74804688 c 0 - 523.1171875 1171.35742188 512.5703125 1148.93554688 512.5703125 1119.56054688 c 0 - 512.5703125 1091.35742188 521.1640625 1070.41992188 538.5078125 1056.66992188 c 0 - 555.7734375 1042.91992188 582.6484375 1032.45117188 619.1328125 1025.41992188 c 1 - 638.9765625 1021.27929688 658.8203125 1017.13867188 678.6640625 1012.99804688 c 1 - 745.8515625 1000.18554688 794.9921875 978.388671875 826.0078125 947.685546875 c 0 - 857.0234375 916.982421875 872.5703125 874.716796875 872.5703125 820.966796875 c 0x8752 - 872.5703125 789.638671875 867.1015625 761.123046875 856.2421875 735.498046875 c 0 - 845.3828125 709.951171875 829.5234375 687.998046875 808.7421875 669.794921875 c 0 - 787.8828125 651.513671875 762.4921875 637.451171875 732.4140625 627.529296875 c 0 - 702.3359375 617.607421875 668.0390625 612.685546875 629.6796875 612.685546875 c 0 -989.0546875 624.169921875 m 1x8706 - 989.0546875 847.529296875 989.0546875 1070.88867188 989.0546875 1294.24804688 c 1 - 1132.1015625 1294.24804688 1275.1484375 1294.24804688 1418.1953125 1294.24804688 c 1 - 1418.1953125 1262.24316406 1418.1953125 1230.23730469 1418.1953125 1198.23242188 c 1 - 1311.29394531 1198.23242188 1204.39355469 1198.23242188 1097.4921875 1198.23242188 c 1 - 1097.4921875 1136.14941406 1097.4921875 1074.06542969 1097.4921875 1011.98242188 c 1 - 1194.47167969 1011.98242188 1291.45019531 1011.98242188 1388.4296875 1011.98242188 c 1 - 1388.4296875 980.002929688 1388.4296875 948.024414062 1388.4296875 916.044921875 c 1 - 1291.45019531 916.044921875 1194.47167969 916.044921875 1097.4921875 916.044921875 c 1 - 1097.4921875 850.758789062 1097.4921875 785.471679688 1097.4921875 720.185546875 c 1 - 1204.39355469 720.185546875 1311.29394531 720.185546875 1418.1953125 720.185546875 c 1 - 1418.1953125 688.180664062 1418.1953125 656.174804688 1418.1953125 624.169921875 c 1 - 1275.1484375 624.169921875 1132.1015625 624.169921875 989.0546875 624.169921875 c 1x8706 -EndSplineSet -EndChar - -StartChar: uniE128 -Encoding: 57640 57640 41 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -233.641 135.352<983.512 1136.47> 892.414 145.43<754.163 1037.71> -VStem: 462.641 174.141<270.312 765.753> 829.672 152.812<-98.1521 8.21826> 1155.22 174.141<268.985 765.753> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -233.641 135.352<983.512 1136.47> 892.414 145.43<754.163 1037.71> -VStem: 462.641 174.141<270.312 765.753> 829.672 152.812<-98.1521 8.21826> 1155.22 174.141<268.985 765.753> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -1136.46875 -233.640625 m 5 - 1088.96875 -233.640625 1041.46875 -233.640625 993.96875 -233.640625 c 5 - 937.25 -233.640625 895.765625 -219.2265625 869.28125 -190.3984375 c 4 - 843.03125 -161.5703125 829.671875 -122.78125 829.671875 -73.796875 c 5 - 829.671875 -48.3671875 829.671875 -22.9375 829.671875 2.4921875 c 5 - 773.1875 9.2890625 722.328125 25.578125 677.09375 51.4765625 c 4 - 632.09375 77.375 593.65625 111.9453125 562.015625 155.1875 c 4 - 530.140625 198.4296875 505.765625 250.4609375 488.421875 311.3984375 c 4 - 471.3125 372.3359375 462.640625 441.2421875 462.640625 518.1171875 c 4 - 462.640625 602.4921875 472.953125 677.140625 493.578125 741.9453125 c 4 - 514.203125 806.75 543.5 861.0078125 581.46875 904.71875 c 4 - 619.203125 948.4296875 664.90625 981.4765625 718.109375 1004.09375 c 4 - 771.546875 1026.59375 830.609375 1037.84375 896 1037.84375 c 260 - 961.390625 1037.84375 1020.453125 1026.59375 1073.890625 1004.09375 c 4 - 1127.09375 981.4765625 1172.796875 948.4296875 1210.53125 904.71875 c 4 - 1248.5 861.0078125 1277.796875 806.75 1298.421875 741.9453125 c 4 - 1319.046875 677.140625 1329.359375 602.4921875 1329.359375 518.1171875 c 4 - 1329.359375 368.3515625 1298.1875 249.9921875 1235.84375 163.15625 c 4 - 1173.5 76.203125 1088.890625 23.703125 982.484375 5.421875 c 5 - 982.484375 -29.1484375 982.484375 -63.71875 982.484375 -98.2890625 c 5 - 1033.8125 -98.2890625 1085.140625 -98.2890625 1136.46875 -98.2890625 c 5 - 1136.46875 -143.40625 1136.46875 -188.5234375 1136.46875 -233.640625 c 5 -896 143.703125 m 4 - 934.4375 143.703125 969.59375 150.3828125 1001.9375 163.859375 c 4 - 1034.046875 177.21875 1061.46875 196.671875 1083.96875 222.1015625 c 4 - 1106.46875 247.53125 1124.046875 278.5859375 1136.46875 315.03125 c 4 - 1148.890625 351.4765625 1155.21875 392.7265625 1155.21875 438.8984375 c 5 - 1155.21875 491.671875 1155.21875 544.4453125 1155.21875 597.21875 c 5 - 1155.21875 643.390625 1148.890625 684.640625 1136.46875 721.0859375 c 4 - 1124.046875 757.53125 1106.46875 788.5859375 1083.96875 814.015625 c 4 - 1061.46875 839.4453125 1034.046875 858.8984375 1001.9375 872.2578125 c 4 - 969.59375 885.734375 934.4375 892.4140625 896 892.4140625 c 4 - 856.625 892.4140625 821.234375 885.734375 789.359375 872.2578125 c 4 - 757.71875 858.8984375 730.53125 839.4453125 708.03125 814.015625 c 4 - 685.53125 788.5859375 667.953125 757.53125 655.53125 721.0859375 c 4 - 643.109375 684.640625 636.78125 643.390625 636.78125 597.21875 c 5 - 636.78125 544.4453125 636.78125 491.671875 636.78125 438.8984375 c 5 - 636.78125 392.7265625 643.109375 351.4765625 655.53125 315.03125 c 4 - 667.953125 278.5859375 685.53125 247.53125 708.03125 222.1015625 c 4 - 730.53125 196.671875 757.71875 177.21875 789.359375 163.859375 c 4 - 821.234375 150.3828125 856.625 143.703125 896 143.703125 c 4 -EndSplineSet -EndChar - -StartChar: uniE129 -Encoding: 57641 57641 42 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 183 89.2969<1439.98 1772.17> 708.156 144.922<737.328 764.657 1084.83 1112.64> 763.781 89.2969<1340.14 1646.39> -VStem: 227.25 101.719<183 442.219> 646.078 97.9688<183 706.401> 1105.92 97.9688<183 708.247> -DStem2: 134.125 853.078 19.8281 853.078 0.450673 -0.892689<0 330.095> 285.766 553.547 328.969 442.219 0.416605 0.909087<0 329.486> 766.078 853.078 748.812 708.156 0.416929 -0.908939<124.527 395.989> 1324.83 274.172 1439.98 272.297 0.548962 0.835847<61.6492 585.764> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 183 89.2969<1439.98 1772.17> 708.156 144.922<737.328 764.657 1084.83 1112.64> 763.781 89.2969<1340.14 1646.39> -VStem: 227.25 101.719<183 442.219> 646.078 97.9688<183 706.401> 1105.92 97.9688<183 708.247> -DStem2: 134.125 853.078 19.8281 853.078 0.450673 -0.892689<0 330.095> 285.766 553.547 328.969 442.219 0.416605 0.909087<0 329.486> 766.078 853.078 748.812 708.156 0.416929 -0.908939<124.527 395.989> 1324.83 274.172 1439.98 272.297 0.548962 0.835847<61.6492 585.764> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -227.25 183 m 1xbc - 227.25 269.40625 227.25 355.8125 227.25 442.21875 c 1 - 158.109375 579.171875 88.96875 716.125 19.828125 853.078125 c 1 - 57.9267578125 853.078125 96.0263671875 853.078125 134.125 853.078125 c 1 - 180.504882812 753.234375 226.885742188 653.390625 273.265625 553.546875 c 1 - 277.432617188 553.546875 281.598632812 553.546875 285.765625 553.546875 c 1 - 331.520507812 653.390625 377.276367188 753.234375 423.03125 853.078125 c 1 - 460.479492188 853.078125 497.926757812 853.078125 535.375 853.078125 c 1 - 466.573242188 716.125 397.770507812 579.171875 328.96875 442.21875 c 1 - 328.96875 355.8125 328.96875 269.40625 328.96875 183 c 1 - 295.0625 183 261.15625 183 227.25 183 c 1xbc -1105.921875 595.8125 m 1 - 1108.16113281 633.885742188 1110.40136719 671.958007812 1112.640625 710.03125 c 1 - 1108.8125 710.03125 1104.984375 710.03125 1101.15625 710.03125 c 1 - 1085.79199219 672.583007812 1070.42675781 635.135742188 1055.0625 597.6875 c 1 - 1011.546875 506.828125 968.03125 415.96875 924.515625 325.109375 c 1 - 881.3125 415.96875 838.109375 506.828125 794.90625 597.6875 c 1 - 779.541992188 634.510742188 764.176757812 671.333007812 748.8125 708.15625 c 1 - 744.984375 708.15625 741.15625 708.15625 737.328125 708.15625 c 1xdc - 739.567382812 670.708007812 741.807617188 633.260742188 744.046875 595.8125 c 1 - 744.046875 458.208007812 744.046875 320.604492188 744.046875 183 c 1 - 711.390625 183 678.734375 183 646.078125 183 c 1 - 646.078125 406.359375 646.078125 629.71875 646.078125 853.078125 c 1 - 686.078125 853.078125 726.078125 853.078125 766.078125 853.078125 c 1xbc - 802.25 775.004882812 838.421875 696.932617188 874.59375 618.859375 c 1 - 890.270507812 574.692382812 905.948242188 530.526367188 921.625 486.359375 c 1 - 924.489257812 486.359375 927.354492188 486.359375 930.21875 486.359375 c 1 - 945.921875 530.526367188 961.625 574.692382812 977.328125 618.859375 c 1 - 1013.16113281 696.932617188 1048.99511719 775.004882812 1084.828125 853.078125 c 1xdc - 1124.515625 853.078125 1164.203125 853.078125 1203.890625 853.078125 c 1 - 1203.890625 629.71875 1203.890625 406.359375 1203.890625 183 c 1 - 1171.234375 183 1138.578125 183 1105.921875 183 c 1 - 1105.921875 320.604492188 1105.921875 458.208007812 1105.921875 595.8125 c 1 -1772.171875 183 m 1 - 1623.05761719 183 1473.94238281 183 1324.828125 183 c 1 - 1324.828125 213.390625 1324.828125 243.78125 1324.828125 274.171875 c 1 - 1432.015625 437.375 1539.203125 600.578125 1646.390625 763.78125 c 1 - 1544.30761719 763.78125 1442.22363281 763.78125 1340.140625 763.78125 c 1 - 1340.140625 793.546875 1340.140625 823.3125 1340.140625 853.078125 c 1 - 1480.63574219 853.078125 1621.12988281 853.078125 1761.625 853.078125 c 1xbc - 1761.625 822.6875 1761.625 792.296875 1761.625 761.90625 c 1 - 1654.41113281 598.703125 1547.19824219 435.5 1439.984375 272.296875 c 1 - 1550.71386719 272.296875 1661.44238281 272.296875 1772.171875 272.296875 c 1 - 1772.171875 242.53125 1772.171875 212.765625 1772.171875 183 c 1 -EndSplineSet -EndChar - -StartChar: uniE12A -Encoding: 57642 57642 43 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 171.516 91.1719<1374.3 1569.36> 453.703 91.25<184.594 336.939> 474.875 95.9375<824.594 1100.14> 519.953 89.2969<1407.93 1572.57> 757.062 96.0156<184.594 420.981 824.594 1134.67 1380.69 1681.23> -VStem: 76.1562 108.438<183 453.703 544.953 758.078> 444.75 114.297<567.194 735.759> 716.156 108.438<183 474.875 570.812 757.062> 1602.56 113.281<296.368 486.273> -DStem2: 428.422 465.266 318.031 453.703 0.456936 -0.8895<0 262.07> 1276.16 479.641 1366.39 521.906 0.0726244 0.997359<48.7072 286.444> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 171.516 91.1719<1374.3 1569.36> 453.703 91.25<184.594 336.939> 474.875 95.9375<824.594 1100.14> 519.953 89.2969<1407.93 1572.57> 757.062 96.0156<184.594 420.981 824.594 1134.67 1380.69 1681.23> -VStem: 76.1562 108.438<183 453.703 544.953 758.078> 444.75 114.297<567.194 735.759> 716.156 108.438<183 474.875 570.812 757.062> 1602.56 113.281<296.368 486.273> -DStem2: 428.422 465.266 318.031 453.703 0.456936 -0.8895<0 262.07> 1276.16 479.641 1366.39 521.906 0.0726244 0.997359<48.7072 286.444> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -184.59375 183 m 1xcf80 - 148.448242188 183 112.301757812 183 76.15625 183 c 1 - 76.15625 406.359375 76.15625 629.71875 76.15625 853.078125 c 1 - 172.458007812 853.078125 268.760742188 853.078125 365.0625 853.078125 c 1 - 425.296875 853.078125 472.640625 835.03125 507.171875 798.859375 c 0 - 541.703125 762.6875 559.046875 713.546875 559.046875 651.515625 c 0 - 559.046875 603.46875 547.953125 563.625 525.921875 531.984375 c 0 - 503.8125 500.265625 471.3125 478.078125 428.421875 465.265625 c 1 - 476.754882812 371.176757812 525.088867188 277.088867188 573.421875 183 c 1 - 533.109375 183 492.796875 183 452.484375 183 c 1 - 407.666992188 273.234375 362.848632812 363.46875 318.03125 453.703125 c 1 - 273.551757812 453.703125 229.073242188 453.703125 184.59375 453.703125 c 1 - 184.59375 363.46875 184.59375 273.234375 184.59375 183 c 1xcf80 -357.40625 544.953125 m 1 - 384.90625 544.953125 406.390625 552.140625 421.703125 566.515625 c 0 - 437.09375 580.890625 444.75 601.59375 444.75 628.46875 c 1 - 444.75 643.807617188 444.75 659.145507812 444.75 674.484375 c 1 - 444.75 701.4375 437.09375 722.0625 421.703125 736.4375 c 0 - 406.390625 750.8125 384.90625 758.078125 357.40625 758.078125 c 1 - 299.801757812 758.078125 242.198242188 758.078125 184.59375 758.078125 c 1 - 184.59375 687.036132812 184.59375 615.995117188 184.59375 544.953125 c 1 - 242.198242188 544.953125 299.801757812 544.953125 357.40625 544.953125 c 1 -716.15625 183 m 1 - 716.15625 406.359375 716.15625 629.71875 716.15625 853.078125 c 1 - 855.661132812 853.078125 995.166992188 853.078125 1134.671875 853.078125 c 1 - 1134.671875 821.073242188 1134.671875 789.067382812 1134.671875 757.0625 c 1 - 1031.3125 757.0625 927.953125 757.0625 824.59375 757.0625 c 1 - 824.59375 694.979492188 824.59375 632.895507812 824.59375 570.8125 c 1 - 916.442382812 570.8125 1008.29199219 570.8125 1100.140625 570.8125 c 1 - 1100.140625 538.833007812 1100.140625 506.854492188 1100.140625 474.875 c 1 - 1008.29199219 474.875 916.442382812 474.875 824.59375 474.875 c 1xaf80 - 824.59375 377.583007812 824.59375 280.291992188 824.59375 183 c 1 - 788.448242188 183 752.301757812 183 716.15625 183 c 1 -1681.234375 759.015625 m 1 - 1582.04199219 759.015625 1482.84863281 759.015625 1383.65625 759.015625 c 1 - 1377.90136719 679.979492188 1372.14550781 600.942382812 1366.390625 521.90625 c 1 - 1368.62988281 521.90625 1370.87011719 521.90625 1373.109375 521.90625 c 1 - 1380.765625 535.34375 1388.8125 547.296875 1397.09375 557.84375 c 0 - 1405.453125 568.46875 1414.984375 577.53125 1425.921875 585.265625 c 0 - 1436.78125 592.921875 1449.28125 598.859375 1463.34375 603 c 0 - 1477.40625 607.140625 1494.046875 609.25 1513.265625 609.25 c 0 - 1542.09375 609.25 1568.8125 604.40625 1593.421875 594.875 c 0 - 1618.03125 585.265625 1639.515625 571.515625 1657.71875 553.546875 c 0 - 1676 535.65625 1690.21875 513.703125 1700.453125 487.765625 c 0 - 1710.6875 461.90625 1715.84375 432.609375 1715.84375 399.953125 c 0 - 1715.84375 366.671875 1710.53125 335.96875 1699.984375 307.765625 c 0 - 1689.4375 279.640625 1673.890625 255.5 1653.421875 235.34375 c 0 - 1632.953125 215.1875 1607.796875 199.484375 1578.03125 188.3125 c 0 - 1548.265625 177.0625 1514.515625 171.515625 1476.78125 171.515625 c 0 - 1446.703125 171.515625 1420.140625 174.875 1397.09375 181.59375 c 0 - 1374.046875 188.3125 1353.734375 197.21875 1336.15625 208.46875 c 0 - 1318.5 219.640625 1303.1875 232.453125 1290.0625 246.828125 c 0 - 1276.9375 261.203125 1265.296875 276.125 1254.984375 291.515625 c 1 - 1281.234375 312.296875 1307.484375 333.078125 1333.734375 353.859375 c 1 - 1342.09375 340.421875 1350.6875 328.3125 1359.671875 317.375 c 0 - 1368.65625 306.515625 1378.890625 296.90625 1390.375 288.625 c 0 - 1401.859375 280.265625 1414.828125 273.859375 1429.28125 269.40625 c 0 - 1443.65625 264.953125 1460.140625 262.6875 1478.734375 262.6875 c 0 - 1518.34375 262.6875 1548.96875 273.546875 1570.375 295.34375 c 0 - 1591.78125 317.0625 1602.5625 347.140625 1602.5625 385.578125 c 1 - 1602.5625 389.40625 1602.5625 393.234375 1602.5625 397.0625 c 1 - 1602.5625 435.5 1591.78125 465.578125 1570.375 487.296875 c 0 - 1548.96875 509.09375 1518.34375 519.953125 1478.734375 519.953125 c 0x9f80 - 1449.90625 519.953125 1426.859375 514.484375 1409.59375 503.625 c 0 - 1392.328125 492.765625 1377.5625 480.578125 1365.453125 467.140625 c 1 - 1335.6875 471.307617188 1305.921875 475.473632812 1276.15625 479.640625 c 1 - 1284.46386719 604.120117188 1292.77050781 728.598632812 1301.078125 853.078125 c 1 - 1427.796875 853.078125 1554.515625 853.078125 1681.234375 853.078125 c 1 - 1681.234375 821.723632812 1681.234375 790.370117188 1681.234375 759.015625 c 1 -EndSplineSet -EndChar - -StartChar: uniE12B -Encoding: 57643 57643 44 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -253.33 91.1719<492.095 694.045 1082.26 1420.23> 60.5762 92.1094<524.289 683.663> 348.545 91.1719<503.64 691.332 1086.66 1259.04> 612.686 91.1719<511.882 706.951 1072.57 1410.54> 961.123 89.2969<545.516 710.154> 1200.19 94.0625<518.545 818.82 1064.99 1253.84> -VStem: 714.289 114.219<179.923 323.321> 727.727 112.344<-131.94 32.8528> 740.148 113.281<737.538 927.443> 965.227 455<-241.846 -149.658 624.17 716.357> 1284.91 115.156<124.902 316.965 1004.13 1182.98> -DStem2: 471.32 795.029 392.57 732.686 0.582707 -0.812682<4.77747 136.754> 413.742 920.811 503.977 963.076 0.0726244 0.997359<48.7072 286.444> 955.461 727.842 1072.57 716.357 0.752577 0.658505<80.5713 451.637> 965.227 -138.174 1082.26 -149.658 0.752577 0.658505<80.5125 451.578> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -253.33 91.1719<492.095 694.045 1082.26 1420.23> 60.5762 92.1094<524.289 683.663> 348.545 91.1719<503.64 691.332 1086.66 1259.04> 612.686 91.1719<511.882 706.951 1072.57 1410.54> 961.123 89.2969<545.516 710.154> 1200.19 94.0625<518.545 818.82 1064.99 1253.84> -VStem: 714.289 114.219<179.923 323.321> 727.727 112.344<-131.94 32.8528> 740.148 113.281<737.538 927.443> 965.227 455<-241.846 -149.658 624.17 716.357> 1284.91 115.156<124.902 316.965 1004.13 1182.98> -DStem2: 471.32 795.029 392.57 732.686 0.582707 -0.812682<4.77747 136.754> 413.742 920.811 503.977 963.076 0.0726244 0.997359<48.7072 286.444> 955.461 727.842 1072.57 716.357 0.752577 0.658505<80.5713 451.637> 965.227 -138.174 1082.26 -149.658 0.752577 0.658505<80.5125 451.578> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -592.4140625 152.685546875 m 1xfd - 633.9765625 152.685546875 664.7578125 161.513671875 684.6015625 179.091796875 c 0 - 704.4453125 196.748046875 714.2890625 219.248046875 714.2890625 246.826171875 c 1 - 714.2890625 249.065429688 714.2890625 251.305664062 714.2890625 253.544921875 c 1 - 714.2890625 284.248046875 704.7578125 307.763671875 685.5390625 324.091796875 c 0 - 666.3203125 340.419921875 640.3828125 348.544921875 607.7265625 348.544921875 c 0 - 575.6953125 348.544921875 548.5078125 341.357421875 526.1640625 326.982421875 c 0 - 503.8203125 312.529296875 484.9140625 292.529296875 469.6015625 266.982421875 c 1 - 445.590820312 287.763671875 421.581054688 308.544921875 397.5703125 329.326171875 c 1 - 407.7265625 344.091796875 419.2890625 358.154296875 432.1015625 371.591796875 c 0 - 444.9140625 385.029296875 459.9140625 396.748046875 477.2578125 406.669921875 c 0 - 494.4453125 416.591796875 513.9765625 424.560546875 535.6953125 430.654296875 c 0 - 557.5703125 436.748046875 582.4140625 439.716796875 610.6953125 439.716796875 c 0 - 641.9453125 439.716796875 671.1640625 435.888671875 698.0390625 428.232421875 c 0 - 724.9140625 420.576171875 747.8828125 409.169921875 767.1015625 394.169921875 c 0 - 786.3203125 379.091796875 801.3203125 360.888671875 812.2578125 339.404296875 c 0 - 823.1953125 317.998046875 828.5078125 293.857421875 828.5078125 266.982421875 c 0xfe - 828.5078125 245.810546875 825.2265625 226.669921875 818.5078125 209.326171875 c 0 - 811.7890625 192.060546875 802.4140625 176.904296875 790.6953125 163.779296875 c 0 - 778.8203125 150.654296875 765.0703125 139.951171875 749.4453125 131.591796875 c 0 - 733.6640625 123.310546875 717.2578125 117.216796875 699.9140625 113.388671875 c 1 - 699.9140625 111.774414062 699.9140625 110.159179688 699.9140625 108.544921875 c 1 - 719.1328125 104.716796875 737.2578125 98.466796875 754.1328125 89.873046875 c 0 - 771.1640625 81.201171875 786.0078125 70.029296875 798.8203125 56.201171875 c 0 - 811.6328125 42.451171875 821.6328125 26.123046875 828.9765625 7.294921875 c 0 - 836.4765625 -11.611328125 840.0703125 -33.173828125 840.0703125 -57.548828125 c 0 - 840.0703125 -87.001953125 834.2890625 -113.720703125 822.8828125 -137.705078125 c 0 - 811.3203125 -161.689453125 795.0703125 -182.314453125 774.2890625 -199.580078125 c 0 - 753.5078125 -216.923828125 728.3515625 -230.126953125 698.9765625 -239.423828125 c 0 - 669.6015625 -248.720703125 636.9453125 -253.330078125 601.0078125 -253.330078125 c 0 - 569.7578125 -253.330078125 542.1015625 -249.970703125 518.5078125 -243.251953125 c 0 - 494.7578125 -236.533203125 473.8203125 -227.626953125 455.5390625 -216.376953125 c 0 - 437.4140625 -205.205078125 421.3203125 -192.392578125 407.5703125 -178.017578125 c 0 - 393.8203125 -163.642578125 381.7890625 -148.720703125 371.6328125 -133.330078125 c 1 - 398.1953125 -112.548828125 424.7578125 -91.767578125 451.3203125 -70.986328125 c 1 - 459.6015625 -84.423828125 468.3515625 -96.689453125 477.7265625 -107.939453125 c 0 - 486.9453125 -119.111328125 497.5703125 -128.720703125 509.4453125 -136.689453125 c 0 - 521.1640625 -144.736328125 534.6015625 -150.986328125 549.7578125 -155.439453125 c 0 - 564.7578125 -159.892578125 581.7890625 -162.158203125 601.0078125 -162.158203125 c 0 - 641.9453125 -162.158203125 673.3515625 -152.392578125 695.0703125 -132.861328125 c 0 - 716.9453125 -113.330078125 727.7265625 -86.298828125 727.7265625 -51.767578125 c 1 - 727.7265625 -49.5283203125 727.7265625 -47.2880859375 727.7265625 -45.048828125 c 1 - 727.7265625 -10.517578125 716.3203125 15.732421875 693.1953125 33.701171875 c 0 - 670.2265625 51.591796875 637.5703125 60.576171875 595.2265625 60.576171875 c 1 - 571.581054688 60.576171875 547.934570312 60.576171875 524.2890625 60.576171875 c 1 - 524.2890625 91.279296875 524.2890625 121.982421875 524.2890625 152.685546875 c 1 - 546.997070312 152.685546875 569.706054688 152.685546875 592.4140625 152.685546875 c 1xfd -1420.2265625 -241.845703125 m 1xfc40 - 1268.55957031 -241.845703125 1116.89355469 -241.845703125 965.2265625 -241.845703125 c 1 - 965.2265625 -207.288085938 965.2265625 -172.731445312 965.2265625 -138.173828125 c 1xfc40 - 1036.58105469 -74.501953125 1107.93457031 -10.830078125 1179.2890625 52.841796875 c 1 - 1213.1953125 83.623046875 1239.2890625 112.841796875 1257.5703125 140.732421875 c 0 - 1275.6953125 168.544921875 1284.9140625 197.841796875 1284.9140625 228.544921875 c 1 - 1284.9140625 232.711914062 1284.9140625 236.877929688 1284.9140625 241.044921875 c 1 - 1284.9140625 273.701171875 1275.0703125 299.248046875 1255.5390625 317.841796875 c 0 - 1236.1640625 336.357421875 1209.7578125 345.654296875 1176.4765625 345.654296875 c 0 - 1157.8828125 345.654296875 1141.6328125 342.919921875 1127.8828125 337.529296875 c 0 - 1114.1328125 332.060546875 1102.1015625 324.560546875 1091.9453125 314.951171875 c 0 - 1081.6328125 305.341796875 1073.1953125 294.169921875 1066.4765625 281.357421875 c 0 - 1059.7578125 268.544921875 1054.4453125 254.794921875 1050.6953125 240.107421875 c 1 - 1018.9765625 252.268554688 987.2578125 264.430664062 955.5390625 276.591796875 c 1 - 962.7265625 297.685546875 972.2578125 317.998046875 984.4453125 337.529296875 c 0 - 996.6328125 357.060546875 1011.9453125 374.482421875 1030.5390625 389.873046875 c 0 - 1048.9765625 405.185546875 1071.0078125 417.373046875 1096.3203125 426.279296875 c 0 - 1121.4765625 435.263671875 1151.1640625 439.716796875 1185.0703125 439.716796875 c 256 - 1218.9765625 439.716796875 1249.4453125 434.794921875 1276.3203125 424.873046875 c 0 - 1303.1953125 414.951171875 1325.6953125 401.201171875 1343.9765625 383.623046875 c 0 - 1362.1015625 365.966796875 1376.1640625 345.029296875 1385.6953125 320.732421875 c 0 - 1395.2265625 296.357421875 1400.0703125 269.873046875 1400.0703125 241.044921875 c 0xfc20 - 1400.0703125 214.169921875 1396.0078125 189.169921875 1387.5703125 166.123046875 c 0 - 1379.2890625 143.076171875 1367.7265625 121.357421875 1353.0390625 100.888671875 c 0 - 1338.3515625 80.419921875 1321.1640625 60.888671875 1301.6328125 42.294921875 c 0 - 1282.1015625 23.779296875 1261.4765625 4.873046875 1239.7578125 -14.345703125 c 1 - 1187.2578125 -59.4501953125 1134.7578125 -104.553710938 1082.2578125 -149.658203125 c 1 - 1194.9140625 -149.658203125 1307.5703125 -149.658203125 1420.2265625 -149.658203125 c 1 - 1420.2265625 -180.387695312 1420.2265625 -211.116210938 1420.2265625 -241.845703125 c 1xfc40 -818.8203125 1200.18554688 m 1 - 719.627929688 1200.18554688 620.434570312 1200.18554688 521.2421875 1200.18554688 c 1 - 515.487304688 1121.14941406 509.731445312 1042.11230469 503.9765625 963.076171875 c 1 - 506.215820312 963.076171875 508.456054688 963.076171875 510.6953125 963.076171875 c 1 - 518.3515625 976.513671875 526.3984375 988.466796875 534.6796875 999.013671875 c 0 - 543.0390625 1009.63867188 552.5703125 1018.70117188 563.5078125 1026.43554688 c 0 - 574.3671875 1034.09179688 586.8671875 1040.02929688 600.9296875 1044.16992188 c 0 - 614.9921875 1048.31054688 631.6328125 1050.41992188 650.8515625 1050.41992188 c 0 - 679.6796875 1050.41992188 706.3984375 1045.57617188 731.0078125 1036.04492188 c 0 - 755.6171875 1026.43554688 777.1015625 1012.68554688 795.3046875 994.716796875 c 0 - 813.5859375 976.826171875 827.8046875 954.873046875 838.0390625 928.935546875 c 0 - 848.2734375 903.076171875 853.4296875 873.779296875 853.4296875 841.123046875 c 0 - 853.4296875 807.841796875 848.1171875 777.138671875 837.5703125 748.935546875 c 0 - 827.0234375 720.810546875 811.4765625 696.669921875 791.0078125 676.513671875 c 0 - 770.5390625 656.357421875 745.3828125 640.654296875 715.6171875 629.482421875 c 0 - 685.8515625 618.232421875 652.1015625 612.685546875 614.3671875 612.685546875 c 0 - 584.2890625 612.685546875 557.7265625 616.044921875 534.6796875 622.763671875 c 0 - 511.6328125 629.482421875 491.3203125 638.388671875 473.7421875 649.638671875 c 0 - 456.0859375 660.810546875 440.7734375 673.623046875 427.6484375 687.998046875 c 0 - 414.5234375 702.373046875 402.8828125 717.294921875 392.5703125 732.685546875 c 1 - 418.8203125 753.466796875 445.0703125 774.248046875 471.3203125 795.029296875 c 1 - 479.6796875 781.591796875 488.2734375 769.482421875 497.2578125 758.544921875 c 0 - 506.2421875 747.685546875 516.4765625 738.076171875 527.9609375 729.794921875 c 0 - 539.4453125 721.435546875 552.4140625 715.029296875 566.8671875 710.576171875 c 0 - 581.2421875 706.123046875 597.7265625 703.857421875 616.3203125 703.857421875 c 0 - 655.9296875 703.857421875 686.5546875 714.716796875 707.9609375 736.513671875 c 0 - 729.3671875 758.232421875 740.1484375 788.310546875 740.1484375 826.748046875 c 1 - 740.1484375 830.576171875 740.1484375 834.404296875 740.1484375 838.232421875 c 1xfc80 - 740.1484375 876.669921875 729.3671875 906.748046875 707.9609375 928.466796875 c 0 - 686.5546875 950.263671875 655.9296875 961.123046875 616.3203125 961.123046875 c 0 - 587.4921875 961.123046875 564.4453125 955.654296875 547.1796875 944.794921875 c 0 - 529.9140625 933.935546875 515.1484375 921.748046875 503.0390625 908.310546875 c 1 - 473.2734375 912.477539062 443.5078125 916.643554688 413.7421875 920.810546875 c 1 - 422.049804688 1045.29003906 430.356445312 1169.76855469 438.6640625 1294.24804688 c 1 - 565.3828125 1294.24804688 692.1015625 1294.24804688 818.8203125 1294.24804688 c 1 - 818.8203125 1262.89355469 818.8203125 1231.54003906 818.8203125 1200.18554688 c 1 -1410.5390625 624.169921875 m 1 - 1258.84667969 624.169921875 1107.15332031 624.169921875 955.4609375 624.169921875 c 1 - 955.4609375 658.727539062 955.4609375 693.284179688 955.4609375 727.841796875 c 1 - 1026.84082031 791.513671875 1098.22167969 855.185546875 1169.6015625 918.857421875 c 1 - 1203.5078125 949.638671875 1229.6015625 978.857421875 1247.8046875 1006.74804688 c 0 - 1266.0078125 1034.56054688 1275.1484375 1063.85742188 1275.1484375 1094.56054688 c 1 - 1275.1484375 1098.72753906 1275.1484375 1102.89355469 1275.1484375 1107.06054688 c 1 - 1275.1484375 1139.71679688 1265.3828125 1165.26367188 1245.8515625 1183.85742188 c 0 - 1226.3984375 1202.37304688 1199.9921875 1211.66992188 1166.7109375 1211.66992188 c 0 - 1148.1171875 1211.66992188 1131.9453125 1208.93554688 1118.1953125 1203.54492188 c 0 - 1104.4453125 1198.07617188 1092.4140625 1190.57617188 1082.1796875 1180.96679688 c 0 - 1071.9453125 1171.35742188 1063.5078125 1160.18554688 1056.7890625 1147.37304688 c 0 - 1050.0703125 1134.56054688 1044.7578125 1120.81054688 1040.9296875 1106.12304688 c 1 - 1009.23730469 1118.28417969 977.543945312 1130.44628906 945.8515625 1142.60742188 c 1 - 952.9609375 1163.70117188 962.4921875 1184.01367188 974.6796875 1203.54492188 c 0 - 986.8671875 1223.07617188 1002.1796875 1240.49804688 1020.7734375 1255.88867188 c 0 - 1039.2890625 1271.20117188 1061.2421875 1283.38867188 1086.5546875 1292.29492188 c 0 - 1111.7890625 1301.27929688 1141.3984375 1305.73242188 1175.3046875 1305.73242188 c 256 - 1209.2109375 1305.73242188 1239.6796875 1300.81054688 1266.5546875 1290.88867188 c 0 - 1293.4296875 1280.96679688 1315.9296875 1267.21679688 1334.2109375 1249.63867188 c 0 - 1352.4140625 1231.98242188 1366.3984375 1211.04492188 1375.9296875 1186.74804688 c 0 - 1385.5390625 1162.37304688 1390.3828125 1135.88867188 1390.3828125 1107.06054688 c 0 - 1390.3828125 1080.18554688 1386.2421875 1055.18554688 1377.8828125 1032.13867188 c 0 - 1369.6015625 1009.09179688 1358.0390625 987.373046875 1343.3515625 966.904296875 c 0 - 1328.5859375 946.435546875 1311.4765625 926.904296875 1291.9453125 908.310546875 c 0 - 1272.4140625 889.794921875 1251.7890625 870.888671875 1230.0703125 851.669921875 c 1 - 1177.5703125 806.565429688 1125.0703125 761.461914062 1072.5703125 716.357421875 c 1 - 1185.2265625 716.357421875 1297.8828125 716.357421875 1410.5390625 716.357421875 c 1 - 1410.5390625 685.627929688 1410.5390625 654.899414062 1410.5390625 624.169921875 c 1 -EndSplineSet -EndChar - -StartChar: uniE12C -Encoding: 57644 57644 45 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 171.516 85.3906<666.317 841.234> 183 108.516<1191.66 1214.71 1540.1 1563.15> 519.953 85.4688<691.227 840.765> 750.344 102.734<1364.48 1386.59> 763.781 89.2969<34.4375 211.938 313.656 491.312> -VStem: 211.938 101.719<183 763.781> 537.406 107.5<277.176 500.303> 861.938 107.5<277.46 499.161> 993.344 103.75<749.328 853.078> 1315.06 123.75<751.086 853.078> 1657.72 99.8438<753.234 853.078> -DStem2: 1097.09 853.078 993.344 853.078 0.190374 -0.981712<0 567.853> 1209.44 291.516 1348.66 595.812 0.136058 0.990701<4.46299 473.288> 1524.28 445.109 1381.31 750.344 0.136058 -0.990701<-318.35 155.035> 1578.97 446.984 1610.69 183 0.190374 0.981712<-154.194 413.659> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 171.516 85.3906<666.317 841.234> 183 108.516<1191.66 1214.71 1540.1 1563.15> 519.953 85.4688<691.227 840.765> 750.344 102.734<1364.48 1386.59> 763.781 89.2969<34.4375 211.938 313.656 491.312> -VStem: 211.938 101.719<183 763.781> 537.406 107.5<277.176 500.303> 861.938 107.5<277.46 499.161> 993.344 103.75<749.328 853.078> 1315.06 123.75<751.086 853.078> 1657.72 99.8438<753.234 853.078> -DStem2: 1097.09 853.078 993.344 853.078 0.190374 -0.981712<0 567.853> 1209.44 291.516 1348.66 595.812 0.136058 0.990701<4.46299 473.288> 1524.28 445.109 1381.31 750.344 0.136058 -0.990701<-318.35 155.035> 1578.97 446.984 1610.69 183 0.190374 0.981712<-154.194 413.659> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -313.65625 763.78125 m 1x6fe0 - 313.65625 570.1875 313.65625 376.59375 313.65625 183 c 1 - 279.75 183 245.84375 183 211.9375 183 c 1 - 211.9375 376.59375 211.9375 570.1875 211.9375 763.78125 c 1 - 152.770507812 763.78125 93.6044921875 763.78125 34.4375 763.78125 c 1 - 34.4375 793.546875 34.4375 823.3125 34.4375 853.078125 c 1 - 186.729492188 853.078125 339.020507812 853.078125 491.3125 853.078125 c 1 - 491.3125 823.3125 491.3125 793.546875 491.3125 763.78125 c 1 - 432.09375 763.78125 372.875 763.78125 313.65625 763.78125 c 1x6fe0 -753.34375 171.515625 m 0xafe0 - 681.78125 171.515625 627.875 193.546875 591.625 237.6875 c 0 - 555.53125 281.90625 537.40625 346.203125 537.40625 430.65625 c 0 - 537.40625 470.96875 542.5625 511.28125 552.71875 551.671875 c 0 - 563.03125 591.984375 577.71875 630.5 596.9375 667.296875 c 0 - 616.15625 704.09375 638.96875 738.546875 665.53125 770.5 c 0 - 692.09375 802.53125 721.78125 830.03125 754.4375 853.078125 c 1 - 800.166992188 853.078125 845.895507812 853.078125 891.625 853.078125 c 1 - 852.5625 823 818.96875 794.328125 790.84375 767.140625 c 0 - 762.71875 739.953125 738.8125 712.921875 719.28125 686.046875 c 0 - 699.75 659.171875 683.96875 631.515625 671.78125 603 c 0 - 659.59375 574.484375 650.375 543.625 643.96875 510.34375 c 1 - 648.135742188 510.34375 652.301757812 510.34375 656.46875 510.34375 c 1 - 667.40625 541.046875 684.59375 564.5625 708.34375 580.890625 c 0 - 731.9375 597.21875 760.0625 605.421875 792.71875 605.421875 c 0 - 847.09375 605.421875 890.21875 587.765625 921.9375 552.609375 c 0 - 953.5 517.375 969.4375 465.578125 969.4375 397.0625 c 0 - 969.4375 326.046875 951 270.65625 914.28125 230.96875 c 0 - 877.40625 191.28125 823.8125 171.515625 753.34375 171.515625 c 0xafe0 -753.34375 256.90625 m 256 - 825.6875 256.90625 861.9375 296.59375 861.9375 375.96875 c 1 - 861.9375 384.276367188 861.9375 392.583007812 861.9375 400.890625 c 1 - 861.9375 480.265625 825.6875 519.953125 753.34375 519.953125 c 256 - 681.15625 519.953125 644.90625 480.265625 644.90625 400.890625 c 1 - 644.90625 392.583007812 644.90625 384.276367188 644.90625 375.96875 c 1 - 644.90625 296.59375 681.15625 256.90625 753.34375 256.90625 c 256 -1135.53125 183 m 1x77e0 - 1088.13574219 406.359375 1040.73925781 629.71875 993.34375 853.078125 c 1 - 1027.92675781 853.078125 1062.51074219 853.078125 1097.09375 853.078125 c 1 - 1123.34375 717.713867188 1149.59375 582.348632812 1175.84375 446.984375 c 1 - 1182.875 395.161132812 1189.90625 343.338867188 1196.9375 291.515625 c 1 - 1201.10449219 291.515625 1205.27050781 291.515625 1209.4375 291.515625 c 1 - 1216.46875 342.713867188 1223.5 393.911132812 1230.53125 445.109375 c 1 - 1258.70800781 581.098632812 1286.88574219 717.088867188 1315.0625 853.078125 c 1 - 1356.3125 853.078125 1397.5625 853.078125 1438.8125 853.078125 c 1 - 1467.30175781 717.088867188 1495.79199219 581.098632812 1524.28125 445.109375 c 1 - 1531.3125 393.911132812 1538.34375 342.713867188 1545.375 291.515625 c 1 - 1549.54199219 291.515625 1553.70800781 291.515625 1557.875 291.515625 c 1 - 1564.90625 343.338867188 1571.9375 395.161132812 1578.96875 446.984375 c 1 - 1605.21875 582.348632812 1631.46875 717.713867188 1657.71875 853.078125 c 1 - 1691 853.078125 1724.28125 853.078125 1757.5625 853.078125 c 1x6fe0 - 1708.60449219 629.71875 1659.64550781 406.359375 1610.6875 183 c 1 - 1570.0625 183 1529.4375 183 1488.8125 183 c 1 - 1460.01074219 320.604492188 1431.20800781 458.208007812 1402.40625 595.8125 c 1 - 1395.375 647.323242188 1388.34375 698.833007812 1381.3125 750.34375 c 1 - 1377.45800781 750.34375 1373.60449219 750.34375 1369.75 750.34375 c 1 - 1362.71875 698.833007812 1355.6875 647.323242188 1348.65625 595.8125 c 1 - 1318.55175781 458.208007812 1288.44824219 320.604492188 1258.34375 183 c 1 - 1217.40625 183 1176.46875 183 1135.53125 183 c 1x77e0 -EndSplineSet -EndChar - -StartChar: uniE12D -Encoding: 57645 57645 46 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 171.516 92.1094<829.327 1005.2 1389.33 1565.2> 772.453 92.1094<829.327 1005.2 1389.33 1565.2> -VStem: 71.8594 108.438<183 434.904 513.234 853.078> 460.609 126.719<726.359 853.078> 476 130.547<183 313.547> 674.438 115.156<303.546 732.443> 1044.98 115.156<302.743 733.336> 1234.44 115.156<303.546 732.443> 1604.98 115.156<302.743 733.336> -DStem2: 348.344 570.812 272.484 495.969 0.54515 -0.838338<21.3896 394.71> 280.141 635.188 348.344 570.812 0.660468 0.750854<-154.984 -109.59 -12.7165 282.798> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 171.516 92.1094<829.327 1005.2 1389.33 1565.2> 772.453 92.1094<829.327 1005.2 1389.33 1565.2> -VStem: 71.8594 108.438<183 434.904 513.234 853.078> 460.609 126.719<726.359 853.078> 476 130.547<183 313.547> 674.438 115.156<303.546 732.443> 1044.98 115.156<302.743 733.336> 1234.44 115.156<303.546 732.443> 1604.98 115.156<302.743 733.336> -DStem2: 348.344 570.812 272.484 495.969 0.54515 -0.838338<21.3896 394.71> 280.141 635.188 348.344 570.812 0.660468 0.750854<-154.984 -109.59 -12.7165 282.798> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -272.484375 495.96875 m 1xef80 - 241.754882812 460.760742188 211.026367188 425.551757812 180.296875 390.34375 c 1 - 180.296875 321.229492188 180.296875 252.114257812 180.296875 183 c 1 - 144.151367188 183 108.004882812 183 71.859375 183 c 1 - 71.859375 406.359375 71.859375 629.71875 71.859375 853.078125 c 1 - 108.004882812 853.078125 144.151367188 853.078125 180.296875 853.078125 c 1 - 180.296875 739.796875 180.296875 626.515625 180.296875 513.234375 c 1 - 181.573242188 513.234375 182.848632812 513.234375 184.125 513.234375 c 1 - 216.129882812 553.885742188 248.135742188 594.536132812 280.140625 635.1875 c 1 - 340.296875 707.817382812 400.453125 780.448242188 460.609375 853.078125 c 1 - 502.848632812 853.078125 545.088867188 853.078125 587.328125 853.078125 c 1xf780 - 507.666992188 758.989257812 428.004882812 664.901367188 348.34375 570.8125 c 1 - 434.411132812 441.541992188 520.479492188 312.270507812 606.546875 183 c 1 - 563.03125 183 519.515625 183 476 183 c 1 - 408.161132812 287.323242188 340.323242188 391.645507812 272.484375 495.96875 c 1xef80 -917.25 171.515625 m 0 - 875.6875 171.515625 839.515625 179.328125 808.8125 195.03125 c 0 - 778.109375 210.65625 752.796875 233.234375 732.953125 262.6875 c 0 - 713.109375 292.140625 698.421875 328.3125 688.8125 371.125 c 0 - 679.203125 414.015625 674.4375 463 674.4375 518.078125 c 0 - 674.4375 572.453125 679.203125 621.203125 688.8125 664.40625 c 0 - 698.421875 707.609375 713.109375 743.9375 732.953125 773.390625 c 0 - 752.796875 802.84375 778.109375 825.421875 808.8125 841.046875 c 0 - 839.515625 856.75 875.6875 864.5625 917.25 864.5625 c 0 - 1000.453125 864.5625 1061.78125 834.171875 1101.15625 773.390625 c 0 - 1140.453125 712.609375 1160.140625 627.453125 1160.140625 518.078125 c 256 - 1160.140625 408.625 1140.453125 323.46875 1101.15625 262.6875 c 0 - 1061.78125 201.90625 1000.453125 171.515625 917.25 171.515625 c 0 -917.25 263.625 m 256 - 940.296875 263.625 959.984375 268.3125 976.3125 277.53125 c 0 - 992.640625 286.828125 1005.921875 300.109375 1016.15625 317.375 c 0 - 1026.390625 334.71875 1033.734375 355.34375 1038.265625 379.328125 c 0 - 1042.71875 403.3125 1044.984375 430.03125 1044.984375 459.484375 c 1 - 1044.984375 498.520507812 1044.984375 537.557617188 1044.984375 576.59375 c 1 - 1044.984375 606.046875 1042.71875 632.765625 1038.265625 656.75 c 0 - 1033.734375 680.734375 1026.390625 701.4375 1016.15625 718.703125 c 0 - 1005.921875 735.96875 992.640625 749.25 976.3125 758.546875 c 0 - 959.984375 767.765625 940.296875 772.453125 917.25 772.453125 c 256 - 894.203125 772.453125 874.59375 767.765625 858.265625 758.546875 c 0 - 841.9375 749.25 828.65625 735.96875 818.421875 718.703125 c 0 - 808.1875 701.4375 800.765625 680.734375 796.3125 656.75 c 0 - 791.859375 632.765625 789.59375 606.046875 789.59375 576.59375 c 1 - 789.59375 537.557617188 789.59375 498.520507812 789.59375 459.484375 c 1 - 789.59375 430.03125 791.859375 403.3125 796.3125 379.328125 c 0 - 800.765625 355.34375 808.1875 334.71875 818.421875 317.375 c 0 - 828.65625 300.109375 841.9375 286.828125 858.265625 277.53125 c 0 - 874.59375 268.3125 894.203125 263.625 917.25 263.625 c 256 -1477.25 171.515625 m 0 - 1435.6875 171.515625 1399.515625 179.328125 1368.8125 195.03125 c 0 - 1338.109375 210.65625 1312.796875 233.234375 1292.953125 262.6875 c 0 - 1273.109375 292.140625 1258.421875 328.3125 1248.8125 371.125 c 0 - 1239.203125 414.015625 1234.4375 463 1234.4375 518.078125 c 0 - 1234.4375 572.453125 1239.203125 621.203125 1248.8125 664.40625 c 0 - 1258.421875 707.609375 1273.109375 743.9375 1292.953125 773.390625 c 0 - 1312.796875 802.84375 1338.109375 825.421875 1368.8125 841.046875 c 0 - 1399.515625 856.75 1435.6875 864.5625 1477.25 864.5625 c 0 - 1560.453125 864.5625 1621.78125 834.171875 1661.15625 773.390625 c 0 - 1700.453125 712.609375 1720.140625 627.453125 1720.140625 518.078125 c 256 - 1720.140625 408.625 1700.453125 323.46875 1661.15625 262.6875 c 0 - 1621.78125 201.90625 1560.453125 171.515625 1477.25 171.515625 c 0 -1477.25 263.625 m 256 - 1500.296875 263.625 1519.984375 268.3125 1536.3125 277.53125 c 0 - 1552.640625 286.828125 1565.921875 300.109375 1576.15625 317.375 c 0 - 1586.390625 334.71875 1593.734375 355.34375 1598.265625 379.328125 c 0 - 1602.71875 403.3125 1604.984375 430.03125 1604.984375 459.484375 c 1 - 1604.984375 498.520507812 1604.984375 537.557617188 1604.984375 576.59375 c 1 - 1604.984375 606.046875 1602.71875 632.765625 1598.265625 656.75 c 0 - 1593.734375 680.734375 1586.390625 701.4375 1576.15625 718.703125 c 0 - 1565.921875 735.96875 1552.640625 749.25 1536.3125 758.546875 c 0 - 1519.984375 767.765625 1500.296875 772.453125 1477.25 772.453125 c 256 - 1454.203125 772.453125 1434.59375 767.765625 1418.265625 758.546875 c 0 - 1401.9375 749.25 1388.65625 735.96875 1378.421875 718.703125 c 0 - 1368.1875 701.4375 1360.765625 680.734375 1356.3125 656.75 c 0 - 1351.859375 632.765625 1349.59375 606.046875 1349.59375 576.59375 c 1 - 1349.59375 537.557617188 1349.59375 498.520507812 1349.59375 459.484375 c 1 - 1349.59375 430.03125 1351.859375 403.3125 1356.3125 379.328125 c 0 - 1360.765625 355.34375 1368.1875 334.71875 1378.421875 317.375 c 0 - 1388.65625 300.109375 1401.9375 286.828125 1418.265625 277.53125 c 0 - 1434.59375 268.3125 1454.203125 263.625 1477.25 263.625 c 256 -EndSplineSet -EndChar - -StartChar: uniE12E -Encoding: 57646 57646 47 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -241.846 92.1875<499.047 837.016 1068.8 1262.38> 345.654 94.0625<500.878 676.405 1076.04 1254.37> 612.686 96.9531<472.493 704.799> 805.576 93.125<1098.42 1296.16> 888.154 93.125<608.188 746.391> 1194.4 99.8438<1183.26 1212.14> 1208.78 96.9531<472.767 701.484> -VStem: 295.219 116.172<772.128 1146.02> 701.547 115.312<124.447 316.965> 756 95.0781<624.17 725.967 757.673 888.154> 903.5 110.391<624.17 734.561> 922.797 115.156<-121.3 307.598> 1293.27 115.156<-122.103 308.491> 1383.5 113.281<624.17 737.451> -DStem2: 381.859 -138.174 499.047 -149.658 0.752577 0.658505<80.6301 451.695> 903.5 624.17 1013.89 624.17 0.303274 0.952903<33.4786 224.111 320.716 631.896> 1268.34 1294.25 1200.14 1194.4 0.306115 -0.951995<74.1727 385.072> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -241.846 92.1875<499.047 837.016 1068.8 1262.38> 345.654 94.0625<500.878 676.405 1076.04 1254.37> 612.686 96.9531<472.493 704.799> 805.576 93.125<1098.42 1296.16> 888.154 93.125<608.188 746.391> 1194.4 99.8438<1183.26 1212.14> 1208.78 96.9531<472.767 701.484> -VStem: 295.219 116.172<772.128 1146.02> 701.547 115.312<124.447 316.965> 756 95.0781<624.17 725.967 757.673 888.154> 903.5 110.391<624.17 734.561> 922.797 115.156<-121.3 307.598> 1293.27 115.156<-122.103 308.491> 1383.5 113.281<624.17 737.451> -DStem2: 381.859 -138.174 499.047 -149.658 0.752577 0.658505<80.6301 451.695> 903.5 624.17 1013.89 624.17 0.303274 0.952903<33.4786 224.111 320.716 631.896> 1268.34 1294.25 1200.14 1194.4 0.306115 -0.951995<74.1727 385.072> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -837.015625 -241.845703125 m 1xe180 - 685.296875 -241.845703125 533.578125 -241.845703125 381.859375 -241.845703125 c 1 - 381.859375 -207.288085938 381.859375 -172.731445312 381.859375 -138.173828125 c 1 - 453.265625 -74.501953125 524.671875 -10.830078125 596.078125 52.841796875 c 1 - 629.984375 83.623046875 656.078125 112.841796875 674.203125 140.732421875 c 0 - 692.484375 168.544921875 701.546875 197.841796875 701.546875 228.544921875 c 1 - 701.546875 232.711914062 701.546875 236.877929688 701.546875 241.044921875 c 1 - 701.546875 273.701171875 691.859375 299.248046875 672.328125 317.841796875 c 0 - 652.796875 336.357421875 626.390625 345.654296875 593.109375 345.654296875 c 0 - 574.515625 345.654296875 558.421875 342.919921875 544.671875 337.529296875 c 0 - 530.921875 332.060546875 518.890625 324.560546875 508.578125 314.951171875 c 0 - 498.421875 305.341796875 489.984375 294.169921875 483.265625 281.357421875 c 0 - 476.546875 268.544921875 471.234375 254.794921875 467.328125 240.107421875 c 1 - 435.661132812 252.268554688 403.995117188 264.430664062 372.328125 276.591796875 c 1 - 379.359375 297.685546875 388.890625 317.998046875 401.078125 337.529296875 c 0 - 413.265625 357.060546875 428.578125 374.482421875 447.171875 389.873046875 c 0 - 465.765625 405.185546875 487.640625 417.373046875 512.953125 426.279296875 c 0 - 538.265625 435.263671875 567.796875 439.716796875 601.703125 439.716796875 c 256 - 635.609375 439.716796875 666.078125 434.794921875 692.953125 424.873046875 c 0 - 719.828125 414.951171875 742.328125 401.201171875 760.609375 383.623046875 c 0 - 778.890625 365.966796875 792.796875 345.029296875 802.328125 320.732421875 c 0 - 812.015625 296.357421875 816.859375 269.873046875 816.859375 241.044921875 c 0 - 816.859375 214.169921875 812.640625 189.169921875 804.359375 166.123046875 c 0 - 796.078125 143.076171875 784.515625 121.357421875 769.828125 100.888671875 c 0 - 754.984375 80.419921875 737.953125 60.888671875 718.421875 42.294921875 c 0 - 698.890625 23.779296875 678.265625 4.873046875 656.546875 -14.345703125 c 1 - 604.046875 -59.4501953125 551.546875 -104.553710938 499.046875 -149.658203125 c 1 - 611.703125 -149.658203125 724.359375 -149.658203125 837.015625 -149.658203125 c 1 - 837.015625 -180.387695312 837.015625 -211.116210938 837.015625 -241.845703125 c 1xe180 -1165.609375 -253.330078125 m 0 - 1124.046875 -253.330078125 1087.796875 -245.517578125 1057.171875 -229.814453125 c 0 - 1026.390625 -214.189453125 1001.078125 -191.611328125 981.234375 -162.158203125 c 0 - 961.390625 -132.705078125 946.703125 -96.533203125 937.171875 -53.720703125 c 0 - 927.484375 -10.830078125 922.796875 38.154296875 922.796875 93.232421875 c 0 - 922.796875 147.607421875 927.484375 196.357421875 937.171875 239.560546875 c 0 - 946.703125 282.763671875 961.390625 319.091796875 981.234375 348.544921875 c 0 - 1001.078125 377.998046875 1026.390625 400.576171875 1057.171875 416.201171875 c 0 - 1087.796875 431.904296875 1124.046875 439.716796875 1165.609375 439.716796875 c 0 - 1248.734375 439.716796875 1310.140625 409.326171875 1349.515625 348.544921875 c 0 - 1388.734375 287.763671875 1408.421875 202.607421875 1408.421875 93.232421875 c 256xe118 - 1408.421875 -16.220703125 1388.734375 -101.376953125 1349.515625 -162.158203125 c 0 - 1310.140625 -222.939453125 1248.734375 -253.330078125 1165.609375 -253.330078125 c 0 -1165.609375 -161.220703125 m 256 - 1188.578125 -161.220703125 1208.265625 -156.533203125 1224.671875 -147.314453125 c 0 - 1240.921875 -138.017578125 1254.203125 -124.736328125 1264.515625 -107.470703125 c 0 - 1274.671875 -90.126953125 1282.015625 -69.501953125 1286.546875 -45.517578125 c 0 - 1291.078125 -21.533203125 1293.265625 5.185546875 1293.265625 34.638671875 c 1 - 1293.265625 73.6748046875 1293.265625 112.711914062 1293.265625 151.748046875 c 1 - 1293.265625 181.201171875 1291.078125 207.919921875 1286.546875 231.904296875 c 0 - 1282.015625 255.888671875 1274.671875 276.591796875 1264.515625 293.857421875 c 0 - 1254.203125 311.123046875 1240.921875 324.404296875 1224.671875 333.701171875 c 0 - 1208.265625 342.919921875 1188.578125 347.607421875 1165.609375 347.607421875 c 256 - 1142.484375 347.607421875 1122.953125 342.919921875 1106.546875 333.701171875 c 0 - 1090.296875 324.404296875 1077.015625 311.123046875 1066.703125 293.857421875 c 0 - 1056.546875 276.591796875 1049.046875 255.888671875 1044.671875 231.904296875 c 0 - 1040.140625 207.919921875 1037.953125 181.201171875 1037.953125 151.748046875 c 1 - 1037.953125 112.711914062 1037.953125 73.6748046875 1037.953125 34.638671875 c 1 - 1037.953125 5.185546875 1040.140625 -21.533203125 1044.671875 -45.517578125 c 0 - 1049.046875 -69.501953125 1056.546875 -90.126953125 1066.703125 -107.470703125 c 0 - 1077.015625 -124.736328125 1090.296875 -138.017578125 1106.546875 -147.314453125 c 0 - 1122.953125 -156.533203125 1142.484375 -161.220703125 1165.609375 -161.220703125 c 256 -756 725.966796875 m 1xeb40 - 754.723632812 725.966796875 753.448242188 725.966796875 752.171875 725.966796875 c 1 - 745.140625 693.310546875 726.078125 666.279296875 695.0625 644.794921875 c 0 - 663.96875 623.388671875 622.875 612.685546875 571.703125 612.685546875 c 0 - 532.015625 612.685546875 495.21875 620.185546875 461.3125 635.185546875 c 0 - 427.328125 650.263671875 398.109375 672.294921875 373.421875 701.435546875 c 0 - 348.8125 730.576171875 329.59375 766.748046875 315.84375 809.951171875 c 0 - 302.09375 853.154296875 295.21875 902.919921875 295.21875 959.248046875 c 0 - 295.21875 1014.87304688 302.25 1064.32617188 316.3125 1107.52929688 c 0 - 330.375 1150.73242188 350.21875 1187.06054688 375.84375 1216.51367188 c 0 - 401.46875 1245.96679688 432.171875 1268.15429688 468.03125 1283.23242188 c 0 - 503.8125 1298.23242188 543.8125 1305.73242188 588.03125 1305.73242188 c 0 - 648.1875 1305.73242188 699.046875 1292.45117188 740.609375 1265.96679688 c 0 - 782.25 1239.40429688 814.59375 1202.37304688 837.640625 1155.02929688 c 1 - 808.1875 1137.76367188 778.734375 1120.49804688 749.28125 1103.23242188 c 1 - 736.46875 1134.56054688 716.625 1160.02929688 689.75 1179.56054688 c 0 - 662.875 1199.01367188 628.96875 1208.77929688 588.03125 1208.77929688 c 0 - 534.90625 1208.77929688 492.171875 1191.82617188 459.828125 1157.91992188 c 0 - 427.5625 1124.01367188 411.390625 1076.04492188 411.390625 1013.93554688 c 1 - 411.390625 977.451171875 411.390625 940.966796875 411.390625 904.482421875 c 1 - 411.390625 842.373046875 427.5625 794.404296875 459.828125 760.498046875 c 0 - 492.171875 726.591796875 534.90625 709.638671875 588.03125 709.638671875 c 0 - 609.125 709.638671875 629.28125 712.294921875 648.5 717.763671875 c 0 - 667.71875 723.232421875 684.515625 731.201171875 698.890625 741.748046875 c 0 - 713.265625 752.294921875 724.828125 765.419921875 733.421875 781.123046875 c 0 - 742.09375 796.826171875 746.390625 815.185546875 746.390625 836.357421875 c 1 - 746.390625 853.623046875 746.390625 870.888671875 746.390625 888.154296875 c 1 - 700.323242188 888.154296875 654.254882812 888.154296875 608.1875 888.154296875 c 1 - 608.1875 919.196289062 608.1875 950.237304688 608.1875 981.279296875 c 1 - 689.151367188 981.279296875 770.114257812 981.279296875 851.078125 981.279296875 c 1 - 851.078125 862.243164062 851.078125 743.206054688 851.078125 624.169921875 c 1 - 819.385742188 624.169921875 787.692382812 624.169921875 756 624.169921875 c 1 - 756 658.102539062 756 692.034179688 756 725.966796875 c 1xeb40 -1383.5 624.169921875 m 1xf524 - 1363.34375 684.638671875 1343.1875 745.107421875 1323.03125 805.576171875 c 1 - 1239.515625 805.576171875 1156 805.576171875 1072.484375 805.576171875 c 1 - 1052.953125 745.107421875 1033.421875 684.638671875 1013.890625 624.169921875 c 1 - 977.09375 624.169921875 940.296875 624.169921875 903.5 624.169921875 c 1 - 979.671875 847.529296875 1055.84375 1070.88867188 1132.015625 1294.24804688 c 1 - 1177.45800781 1294.24804688 1222.90136719 1294.24804688 1268.34375 1294.24804688 c 1 - 1344.48925781 1070.88867188 1420.63574219 847.529296875 1496.78125 624.169921875 c 1 - 1459.02050781 624.169921875 1421.26074219 624.169921875 1383.5 624.169921875 c 1xf524 -1200.140625 1194.40429688 m 1 - 1198.55175781 1194.40429688 1196.96386719 1194.40429688 1195.375 1194.40429688 c 1 - 1163.05761719 1095.83691406 1130.73925781 997.268554688 1098.421875 898.701171875 c 1 - 1164.33300781 898.701171875 1230.24511719 898.701171875 1296.15625 898.701171875 c 1 - 1264.15136719 997.268554688 1232.14550781 1095.83691406 1200.140625 1194.40429688 c 1 -EndSplineSet -EndChar - -StartChar: uniE12F -Encoding: 57647 57647 48 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -407.939 90.2344<638.639 740.609> 332.217 96.0156<457.753 702.84 981.547 1181.23 1289.67 1489.36> 891.045 95.0781<376.312 612.622> 1199.25 95<376.312 612.622> -VStem: 267.875 108.438<624.17 891.045 986.123 1199.25> 291.391 116.094<-92.8317 279.07> 536.078 101.875<-317.614 -243.747> 636.469 114.219<1008.36 1176.93> 753.109 116.094<-92.8297 279.07> 907.875 103.594<624.17 1136.83> 1181.23 108.438<-241.846 332.217> 1420.53 103.594<624.17 1136.83> -DStem2: 1036.47 1294.25 1016.31 1136.83 0.468722 -0.883346<129.61 385.178> 1221.78 953.467 1362.88 1028.31 0.468722 0.883346<0 252.858> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -407.939 90.2344<638.639 740.609> 332.217 96.0156<457.753 702.84 981.547 1181.23 1289.67 1489.36> 891.045 95.0781<376.312 612.622> 1199.25 95<376.312 612.622> -VStem: 267.875 108.438<624.17 891.045 986.123 1199.25> 291.391 116.094<-92.8317 279.07> 536.078 101.875<-317.614 -243.747> 636.469 114.219<1008.36 1176.93> 753.109 116.094<-92.8297 279.07> 907.875 103.594<624.17 1136.83> 1181.23 108.438<-241.846 332.217> 1420.53 103.594<624.17 1136.83> -DStem2: 1036.47 1294.25 1016.31 1136.83 0.468722 -0.883346<129.61 385.178> 1221.78 953.467 1362.88 1028.31 0.468722 0.883346<0 252.858> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -740.609375 -407.939453125 m 1xf6f0 - 708.942382812 -407.939453125 677.276367188 -407.939453125 645.609375 -407.939453125 c 1 - 607.796875 -407.939453125 580.140625 -398.330078125 562.484375 -379.111328125 c 0 - 544.984375 -359.892578125 536.078125 -334.033203125 536.078125 -301.376953125 c 1 - 536.078125 -284.423828125 536.078125 -267.470703125 536.078125 -250.517578125 c 1 - 498.421875 -245.986328125 464.515625 -235.126953125 434.359375 -217.861328125 c 0 - 404.359375 -200.595703125 378.734375 -177.548828125 357.640625 -148.720703125 c 0 - 336.390625 -119.892578125 320.140625 -85.205078125 308.578125 -44.580078125 c 0 - 297.171875 -3.955078125 291.390625 41.982421875 291.390625 93.232421875 c 0 - 291.390625 149.482421875 298.265625 199.248046875 312.015625 242.451171875 c 0 - 325.765625 285.654296875 345.296875 321.826171875 370.609375 350.966796875 c 0 - 395.765625 380.107421875 426.234375 402.138671875 461.703125 417.216796875 c 0 - 497.328125 432.216796875 536.703125 439.716796875 580.296875 439.716796875 c 256 - 623.890625 439.716796875 663.265625 432.216796875 698.890625 417.216796875 c 0 - 734.359375 402.138671875 764.828125 380.107421875 789.984375 350.966796875 c 0 - 815.296875 321.826171875 834.828125 285.654296875 848.578125 242.451171875 c 0 - 862.328125 199.248046875 869.203125 149.482421875 869.203125 93.232421875 c 0 - 869.203125 -6.611328125 848.421875 -85.517578125 806.859375 -143.408203125 c 0 - 765.296875 -201.376953125 708.890625 -236.376953125 637.953125 -248.564453125 c 1 - 637.953125 -271.611328125 637.953125 -294.658203125 637.953125 -317.705078125 c 1 - 672.171875 -317.705078125 706.390625 -317.705078125 740.609375 -317.705078125 c 1 - 740.609375 -347.783203125 740.609375 -377.861328125 740.609375 -407.939453125 c 1xf6f0 -580.296875 -156.376953125 m 0 - 605.921875 -156.376953125 629.359375 -151.923828125 650.921875 -142.939453125 c 0 - 672.328125 -134.033203125 690.609375 -121.064453125 705.609375 -104.111328125 c 0 - 720.609375 -87.158203125 732.328125 -66.455078125 740.609375 -42.158203125 c 0 - 748.890625 -17.861328125 753.109375 9.638671875 753.109375 40.419921875 c 1 - 753.109375 75.6025390625 753.109375 110.784179688 753.109375 145.966796875 c 1 - 753.109375 176.748046875 748.890625 204.248046875 740.609375 228.544921875 c 0 - 732.328125 252.841796875 720.609375 273.544921875 705.609375 290.498046875 c 0 - 690.609375 307.451171875 672.328125 320.419921875 650.921875 329.326171875 c 0 - 629.359375 338.310546875 605.921875 342.763671875 580.296875 342.763671875 c 0 - 554.046875 342.763671875 530.453125 338.310546875 509.203125 329.326171875 c 0 - 488.109375 320.419921875 469.984375 307.451171875 454.984375 290.498046875 c 0 - 439.984375 273.544921875 428.265625 252.841796875 419.984375 228.544921875 c 0 - 411.703125 204.248046875 407.484375 176.748046875 407.484375 145.966796875 c 1 - 407.484375 110.784179688 407.484375 75.6025390625 407.484375 40.419921875 c 1 - 407.484375 9.638671875 411.703125 -17.861328125 419.984375 -42.158203125 c 0 - 428.265625 -66.455078125 439.984375 -87.158203125 454.984375 -104.111328125 c 0 - 469.984375 -121.064453125 488.109375 -134.033203125 509.203125 -142.939453125 c 0 - 530.453125 -151.923828125 554.046875 -156.376953125 580.296875 -156.376953125 c 0 -1289.671875 332.216796875 m 1 - 1289.671875 140.862304688 1289.671875 -50.4912109375 1289.671875 -241.845703125 c 1 - 1253.52636719 -241.845703125 1217.37988281 -241.845703125 1181.234375 -241.845703125 c 1 - 1181.234375 -50.4912109375 1181.234375 140.862304688 1181.234375 332.216796875 c 1 - 1114.671875 332.216796875 1048.109375 332.216796875 981.546875 332.216796875 c 1 - 981.546875 364.221679688 981.546875 396.227539062 981.546875 428.232421875 c 1 - 1150.81738281 428.232421875 1320.08886719 428.232421875 1489.359375 428.232421875 c 1 - 1489.359375 396.227539062 1489.359375 364.221679688 1489.359375 332.216796875 c 1 - 1422.796875 332.216796875 1356.234375 332.216796875 1289.671875 332.216796875 c 1 -267.875 624.169921875 m 1xf9f0 - 267.875 847.529296875 267.875 1070.88867188 267.875 1294.24804688 c 1 - 363.864257812 1294.24804688 459.854492188 1294.24804688 555.84375 1294.24804688 c 1 - 617.875 1294.24804688 665.84375 1276.04492188 699.75 1239.56054688 c 0 - 733.8125 1203.07617188 750.6875 1154.09179688 750.6875 1092.68554688 c 256 - 750.6875 1031.20117188 733.8125 982.216796875 699.75 945.732421875 c 0 - 665.84375 909.326171875 617.875 891.044921875 555.84375 891.044921875 c 1 - 496 891.044921875 436.15625 891.044921875 376.3125 891.044921875 c 1 - 376.3125 802.086914062 376.3125 713.127929688 376.3125 624.169921875 c 1 - 340.166992188 624.169921875 304.020507812 624.169921875 267.875 624.169921875 c 1xf9f0 -376.3125 986.123046875 m 1 - 433.916992188 986.123046875 491.520507812 986.123046875 549.125 986.123046875 c 1 - 576.625 986.123046875 598.03125 993.310546875 613.34375 1007.68554688 c 0 - 628.8125 1022.06054688 636.46875 1042.76367188 636.46875 1069.63867188 c 1 - 636.46875 1084.97753906 636.46875 1100.31542969 636.46875 1115.65429688 c 1 - 636.46875 1142.60742188 628.8125 1163.23242188 613.34375 1177.60742188 c 0 - 598.03125 1191.98242188 576.625 1199.24804688 549.125 1199.24804688 c 1 - 491.520507812 1199.24804688 433.916992188 1199.24804688 376.3125 1199.24804688 c 1 - 376.3125 1128.20605469 376.3125 1057.16503906 376.3125 986.123046875 c 1 -1420.53125 1136.82617188 m 1 - 1418.91699219 1136.82617188 1417.30175781 1136.82617188 1415.6875 1136.82617188 c 1 - 1398.08300781 1100.65429688 1380.47949219 1064.48242188 1362.875 1028.31054688 c 1 - 1313.91699219 939.040039062 1264.95800781 849.768554688 1216 760.498046875 c 1 - 1167.04199219 849.768554688 1118.08300781 939.040039062 1069.125 1028.31054688 c 1 - 1051.52050781 1064.48242188 1033.91699219 1100.65429688 1016.3125 1136.82617188 c 1 - 1014.69824219 1136.82617188 1013.08300781 1136.82617188 1011.46875 1136.82617188 c 1 - 1011.46875 965.940429688 1011.46875 795.055664062 1011.46875 624.169921875 c 1 - 976.9375 624.169921875 942.40625 624.169921875 907.875 624.169921875 c 1 - 907.875 847.529296875 907.875 1070.88867188 907.875 1294.24804688 c 1 - 950.739257812 1294.24804688 993.604492188 1294.24804688 1036.46875 1294.24804688 c 1 - 1096.3125 1180.65429688 1156.15625 1067.06054688 1216 953.466796875 c 1 - 1217.92675781 953.466796875 1219.85449219 953.466796875 1221.78125 953.466796875 c 1 - 1281.625 1067.06054688 1341.46875 1180.65429688 1401.3125 1294.24804688 c 1 - 1442.25 1294.24804688 1483.1875 1294.24804688 1524.125 1294.24804688 c 1 - 1524.125 1070.88867188 1524.125 847.529296875 1524.125 624.169921875 c 1 - 1489.59375 624.169921875 1455.0625 624.169921875 1420.53125 624.169921875 c 1 - 1420.53125 795.055664062 1420.53125 965.940429688 1420.53125 1136.82617188 c 1 -EndSplineSet -EndChar - -StartChar: uniE130 -Encoding: 57648 57648 49 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 84.8447 119.922<305.613 568.692> 831.231 119.922<326.785 582.205> -VStem: 158.402 134.375<638.539 801.481> 608.402 134.375<242.984 418.824> 888.383 129.59<99.2002 740.021> 1529.2 129.59<99.2002 740.021> -DStem2: 425.98 600.763 403.129 472.442 0.978916 -0.204262<-105.472 187.038> 1049.12 936.798 1023.93 740.021 0.468722 -0.883346<162.013 481.472> 1280.77 510.821 1457.13 604.376 0.468722 0.883346<0 316.072> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 84.8447 119.922<305.613 568.692> 831.231 119.922<326.785 582.205> -VStem: 158.402 134.375<638.539 801.481> 608.402 134.375<242.984 418.824> 888.383 129.59<99.2002 740.021> 1529.2 129.59<99.2002 740.021> -DStem2: 425.98 600.763 403.129 472.442 0.978916 -0.204262<-105.472 187.038> 1049.12 936.798 1023.93 740.021 0.468722 -0.883346<162.013 481.472> 1280.77 510.821 1457.13 604.376 0.468722 0.883346<0 316.072> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -439.1640625 84.8447265625 m 0 - 368.75390625 84.8447265625 308.98828125 97.6376953125 259.76953125 123.223632812 c 0 - 210.55078125 148.809570312 168.36328125 183.184570312 133.20703125 226.446289062 c 1 - 164.391601562 255.645507812 195.577148438 284.844726562 226.76171875 314.043945312 c 1 - 256.3515625 278.008789062 288.96875 250.762695312 324.515625 232.403320312 c 0 - 360.16015625 214.043945312 400.78515625 204.766601562 446.390625 204.766601562 c 0 - 500.00390625 204.766601562 540.3359375 216.778320312 567.58203125 240.801757812 c 0 - 594.73046875 264.825195312 608.40234375 297.247070312 608.40234375 337.969726562 c 0 - 608.40234375 370.782226562 598.734375 396.758789062 579.59375 415.997070312 c 0 - 560.35546875 435.235351562 526.37109375 449.590820312 477.54296875 459.161132812 c 1 - 452.73828125 463.587890625 427.93359375 468.014648438 403.12890625 472.442382812 c 1 - 321.5859375 487.579101562 260.35546875 514.434570312 219.53515625 552.813476562 c 0 - 178.71484375 591.192382812 158.40234375 644.024414062 158.40234375 711.211914062 c 0 - 158.40234375 748.028320312 165.3359375 781.426757812 179.3984375 811.407226562 c 0 - 193.36328125 841.387695312 212.9921875 866.583007812 238.1875 886.993164062 c 0 - 263.3828125 907.403320312 293.94921875 923.223632812 329.984375 934.356445312 c 0 - 365.921875 945.586914062 406.3515625 951.153320312 451.17578125 951.153320312 c 0 - 514.359375 951.153320312 569.14453125 940.215820312 615.53125 918.243164062 c 0 - 661.91796875 896.172851562 701.56640625 864.434570312 734.37890625 822.833007812 c 1 - 702.770507812 794.837890625 671.163085938 766.842773438 639.5546875 738.848632812 c 1 - 617.97265625 766.778320312 591.60546875 789.239257812 560.35546875 806.036132812 c 0 - 529.203125 822.833007812 490.3359375 831.231445312 443.94921875 831.231445312 c 0 - 396 831.231445312 358.79296875 821.563476562 332.328125 802.422851562 c 0 - 305.9609375 783.184570312 292.77734375 755.157226562 292.77734375 718.438476562 c 0 - 292.77734375 683.184570312 303.51953125 657.012695312 325.19921875 639.825195312 c 0 - 346.78125 622.637695312 380.375 609.551757812 425.98046875 600.762695312 c 1 - 450.78515625 595.586914062 475.58984375 590.411132812 500.39453125 585.235351562 c 1 - 584.37890625 569.219726562 645.8046875 541.973632812 684.57421875 503.594726562 c 0 - 723.34375 465.215820312 742.77734375 412.383789062 742.77734375 345.196289062 c 0 - 742.77734375 306.036132812 735.94140625 270.391601562 722.3671875 238.360351562 c 0 - 708.79296875 206.426757812 688.96875 178.985351562 662.9921875 156.231445312 c 0 - 636.91796875 133.379882812 605.1796875 115.801757812 567.58203125 103.399414062 c 0 - 529.984375 90.9970703125 487.11328125 84.8447265625 439.1640625 84.8447265625 c 0 -1529.203125 740.020507812 m 1 - 1527.18457031 740.020507812 1525.16699219 740.020507812 1523.1484375 740.020507812 c 1 - 1501.14355469 694.805664062 1479.13769531 649.590820312 1457.1328125 604.375976562 c 1 - 1395.93457031 492.787109375 1334.73730469 381.198242188 1273.5390625 269.610351562 c 1 - 1212.34082031 381.198242188 1151.14355469 492.787109375 1089.9453125 604.375976562 c 1 - 1067.94042969 649.590820312 1045.93457031 694.805664062 1023.9296875 740.020507812 c 1 - 1021.94433594 740.020507812 1019.95800781 740.020507812 1017.97265625 740.020507812 c 1 - 1017.97265625 526.413085938 1017.97265625 312.806640625 1017.97265625 99.2001953125 c 1 - 974.776367188 99.2001953125 931.579101562 99.2001953125 888.3828125 99.2001953125 c 1 - 888.3828125 378.399414062 888.3828125 657.598632812 888.3828125 936.797851562 c 1 - 941.963867188 936.797851562 995.543945312 936.797851562 1049.125 936.797851562 c 1 - 1123.9296875 794.805664062 1198.734375 652.813476562 1273.5390625 510.821289062 c 1 - 1275.94824219 510.821289062 1278.35644531 510.821289062 1280.765625 510.821289062 c 1 - 1355.5703125 652.813476562 1430.375 794.805664062 1505.1796875 936.797851562 c 1 - 1556.38378906 936.797851562 1607.58886719 936.797851562 1658.79296875 936.797851562 c 1 - 1658.79296875 657.598632812 1658.79296875 378.399414062 1658.79296875 99.2001953125 c 1 - 1615.59667969 99.2001953125 1572.39941406 99.2001953125 1529.203125 99.2001953125 c 1 - 1529.203125 312.806640625 1529.203125 526.413085938 1529.203125 740.020507812 c 1 -EndSplineSet -EndChar - -StartChar: uniE131 -Encoding: 57649 57649 50 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 432.794 118.848<317.094 612.675> 818.048 118.75<317.094 612.675> -VStem: 181.547 135.547<99.2002 432.794 551.642 818.048> 642.289 142.969<579.443 790.149> 899.906 140.43<796.368 936.798> 1473.54 136.914<799.884 936.798> -DStem2: 1040.34 936.798 899.906 936.798 0.311738 -0.950168<0 737.016> 1258.7 231.231 1331.94 99.2002 0.291293 0.956634<0 737.551> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 432.794 118.848<317.094 612.675> 818.048 118.75<317.094 612.675> -VStem: 181.547 135.547<99.2002 432.794 551.642 818.048> 642.289 142.969<579.443 790.149> 899.906 140.43<796.368 936.798> 1473.54 136.914<799.884 936.798> -DStem2: 1040.34 936.798 899.906 936.798 0.311738 -0.950168<0 737.016> 1258.7 231.231 1331.94 99.2002 0.291293 0.956634<0 737.551> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -181.546875 99.2001953125 m 1 - 181.546875 378.399414062 181.546875 657.598632812 181.546875 936.797851562 c 1 - 301.534179688 936.797851562 421.520507812 936.797851562 541.5078125 936.797851562 c 1 - 619.2421875 936.797851562 679.203125 914.043945312 721.5859375 868.438476562 c 0 - 763.96875 822.833007812 785.2578125 761.602539062 785.2578125 684.844726562 c 256 - 785.2578125 607.989257812 763.96875 546.758789062 721.5859375 501.153320312 c 0 - 679.203125 455.645507812 619.2421875 432.793945312 541.5078125 432.793945312 c 1 - 466.703125 432.793945312 391.8984375 432.793945312 317.09375 432.793945312 c 1 - 317.09375 321.595703125 317.09375 210.397460938 317.09375 99.2001953125 c 1 - 271.911132812 99.2001953125 226.729492188 99.2001953125 181.546875 99.2001953125 c 1 -317.09375 551.641601562 m 1 - 389.098632812 551.641601562 461.104492188 551.641601562 533.109375 551.641601562 c 1 - 567.484375 551.641601562 594.4375 560.625976562 613.578125 578.594726562 c 0 - 632.71875 596.563476562 642.2890625 622.442382812 642.2890625 656.036132812 c 1 - 642.2890625 675.208984375 642.2890625 694.381835938 642.2890625 713.555664062 c 1 - 642.2890625 747.247070312 632.71875 773.028320312 613.578125 790.997070312 c 0 - 594.4375 808.965820312 567.484375 818.047851562 533.109375 818.047851562 c 1 - 461.104492188 818.047851562 389.098632812 818.047851562 317.09375 818.047851562 c 1 - 317.09375 729.245117188 317.09375 640.443359375 317.09375 551.641601562 c 1 -1174.7109375 99.2001953125 m 1 - 1083.109375 378.399414062 991.5078125 657.598632812 899.90625 936.797851562 c 1 - 946.715820312 936.797851562 993.526367188 936.797851562 1040.3359375 936.797851562 c 1 - 1084.73730469 798.809570312 1129.13769531 660.821289062 1173.5390625 522.833007812 c 1 - 1200.36230469 425.631835938 1227.18457031 328.431640625 1254.0078125 231.231445312 c 1 - 1255.5703125 231.231445312 1257.1328125 231.231445312 1258.6953125 231.231445312 c 1 - 1285.90917969 328.431640625 1313.12207031 425.631835938 1340.3359375 522.833007812 c 1 - 1384.73730469 660.821289062 1429.13769531 798.809570312 1473.5390625 936.797851562 c 1 - 1519.17675781 936.797851562 1564.81542969 936.797851562 1610.453125 936.797851562 c 1 - 1517.61425781 657.598632812 1424.77636719 378.399414062 1331.9375 99.2001953125 c 1 - 1279.52832031 99.2001953125 1227.12011719 99.2001953125 1174.7109375 99.2001953125 c 1 -EndSplineSet -EndChar - -StartChar: uniE132 -Encoding: 57650 57650 51 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 171.516 92.1094<833.624 1009.5 1373.31 1569.36> 519.953 89.2969<1407.93 1572.57> 759.016 94.0625<1380.96 1681.23> 772.453 92.1094<833.624 1009.5> -VStem: 76.1562 108.438<183 434.904 513.234 853.078> 464.906 126.719<726.359 853.078> 480.297 130.547<183 313.547> 678.734 115.156<303.546 732.443> 1049.28 115.156<302.743 733.336> 1602.56 113.281<296.368 486.273> -DStem2: 352.641 570.812 276.781 495.969 0.54515 -0.838338<21.3896 394.71> 284.438 635.188 352.641 570.812 0.660468 0.750854<-154.984 -109.59 -12.7165 282.798> 1276.16 479.641 1366.39 521.906 0.0726244 0.997359<48.7072 286.444> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 171.516 92.1094<833.624 1009.5 1373.31 1569.36> 519.953 89.2969<1407.93 1572.57> 759.016 94.0625<1380.96 1681.23> 772.453 92.1094<833.624 1009.5> -VStem: 76.1562 108.438<183 434.904 513.234 853.078> 464.906 126.719<726.359 853.078> 480.297 130.547<183 313.547> 678.734 115.156<303.546 732.443> 1049.28 115.156<302.743 733.336> 1602.56 113.281<296.368 486.273> -DStem2: 352.641 570.812 276.781 495.969 0.54515 -0.838338<21.3896 394.71> 284.438 635.188 352.641 570.812 0.660468 0.750854<-154.984 -109.59 -12.7165 282.798> 1276.16 479.641 1366.39 521.906 0.0726244 0.997359<48.7072 286.444> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -276.78125 495.96875 m 1xebc0 - 246.051757812 460.760742188 215.323242188 425.551757812 184.59375 390.34375 c 1 - 184.59375 321.229492188 184.59375 252.114257812 184.59375 183 c 1 - 148.448242188 183 112.301757812 183 76.15625 183 c 1 - 76.15625 406.359375 76.15625 629.71875 76.15625 853.078125 c 1 - 112.301757812 853.078125 148.448242188 853.078125 184.59375 853.078125 c 1 - 184.59375 739.796875 184.59375 626.515625 184.59375 513.234375 c 1 - 185.870117188 513.234375 187.145507812 513.234375 188.421875 513.234375 c 1 - 220.426757812 553.885742188 252.432617188 594.536132812 284.4375 635.1875 c 1 - 344.59375 707.817382812 404.75 780.448242188 464.90625 853.078125 c 1 - 507.145507812 853.078125 549.385742188 853.078125 591.625 853.078125 c 1xedc0 - 511.963867188 758.989257812 432.301757812 664.901367188 352.640625 570.8125 c 1 - 438.708007812 441.541992188 524.776367188 312.270507812 610.84375 183 c 1 - 567.328125 183 523.8125 183 480.296875 183 c 1 - 412.458007812 287.323242188 344.620117188 391.645507812 276.78125 495.96875 c 1xebc0 -921.546875 171.515625 m 0 - 879.984375 171.515625 843.8125 179.328125 813.109375 195.03125 c 0 - 782.40625 210.65625 757.09375 233.234375 737.25 262.6875 c 0 - 717.40625 292.140625 702.71875 328.3125 693.109375 371.125 c 0 - 683.5 414.015625 678.734375 463 678.734375 518.078125 c 0 - 678.734375 572.453125 683.5 621.203125 693.109375 664.40625 c 0 - 702.71875 707.609375 717.40625 743.9375 737.25 773.390625 c 0 - 757.09375 802.84375 782.40625 825.421875 813.109375 841.046875 c 0 - 843.8125 856.75 879.984375 864.5625 921.546875 864.5625 c 0xd9c0 - 1004.75 864.5625 1066.078125 834.171875 1105.453125 773.390625 c 0 - 1144.75 712.609375 1164.4375 627.453125 1164.4375 518.078125 c 256 - 1164.4375 408.625 1144.75 323.46875 1105.453125 262.6875 c 0 - 1066.078125 201.90625 1004.75 171.515625 921.546875 171.515625 c 0 -921.546875 263.625 m 256 - 944.59375 263.625 964.28125 268.3125 980.609375 277.53125 c 0 - 996.9375 286.828125 1010.21875 300.109375 1020.453125 317.375 c 0 - 1030.6875 334.71875 1038.03125 355.34375 1042.5625 379.328125 c 0 - 1047.015625 403.3125 1049.28125 430.03125 1049.28125 459.484375 c 1 - 1049.28125 498.520507812 1049.28125 537.557617188 1049.28125 576.59375 c 1 - 1049.28125 606.046875 1047.015625 632.765625 1042.5625 656.75 c 0 - 1038.03125 680.734375 1030.6875 701.4375 1020.453125 718.703125 c 0 - 1010.21875 735.96875 996.9375 749.25 980.609375 758.546875 c 0 - 964.28125 767.765625 944.59375 772.453125 921.546875 772.453125 c 256 - 898.5 772.453125 878.890625 767.765625 862.5625 758.546875 c 0 - 846.234375 749.25 832.953125 735.96875 822.71875 718.703125 c 0 - 812.484375 701.4375 805.0625 680.734375 800.609375 656.75 c 0 - 796.15625 632.765625 793.890625 606.046875 793.890625 576.59375 c 1 - 793.890625 537.557617188 793.890625 498.520507812 793.890625 459.484375 c 1 - 793.890625 430.03125 796.15625 403.3125 800.609375 379.328125 c 0 - 805.0625 355.34375 812.484375 334.71875 822.71875 317.375 c 0 - 832.953125 300.109375 846.234375 286.828125 862.5625 277.53125 c 0 - 878.890625 268.3125 898.5 263.625 921.546875 263.625 c 256 -1681.234375 759.015625 m 1xe9c0 - 1582.04199219 759.015625 1482.84863281 759.015625 1383.65625 759.015625 c 1 - 1377.90136719 679.979492188 1372.14550781 600.942382812 1366.390625 521.90625 c 1 - 1368.62988281 521.90625 1370.87011719 521.90625 1373.109375 521.90625 c 1 - 1380.765625 535.34375 1388.8125 547.296875 1397.09375 557.84375 c 0 - 1405.453125 568.46875 1414.984375 577.53125 1425.921875 585.265625 c 0 - 1436.78125 592.921875 1449.28125 598.859375 1463.34375 603 c 0 - 1477.40625 607.140625 1494.046875 609.25 1513.265625 609.25 c 0 - 1542.09375 609.25 1568.8125 604.40625 1593.421875 594.875 c 0 - 1618.03125 585.265625 1639.515625 571.515625 1657.71875 553.546875 c 0 - 1676 535.65625 1690.21875 513.703125 1700.453125 487.765625 c 0 - 1710.6875 461.90625 1715.84375 432.609375 1715.84375 399.953125 c 0 - 1715.84375 366.671875 1710.53125 335.96875 1699.984375 307.765625 c 0 - 1689.4375 279.640625 1673.890625 255.5 1653.421875 235.34375 c 0 - 1632.953125 215.1875 1607.796875 199.484375 1578.03125 188.3125 c 0 - 1548.265625 177.0625 1514.515625 171.515625 1476.78125 171.515625 c 0 - 1446.703125 171.515625 1420.140625 174.875 1397.09375 181.59375 c 0 - 1374.046875 188.3125 1353.734375 197.21875 1336.15625 208.46875 c 0 - 1318.5 219.640625 1303.1875 232.453125 1290.0625 246.828125 c 0 - 1276.9375 261.203125 1265.296875 276.125 1254.984375 291.515625 c 1 - 1281.234375 312.296875 1307.484375 333.078125 1333.734375 353.859375 c 1 - 1342.09375 340.421875 1350.6875 328.3125 1359.671875 317.375 c 0 - 1368.65625 306.515625 1378.890625 296.90625 1390.375 288.625 c 0 - 1401.859375 280.265625 1414.828125 273.859375 1429.28125 269.40625 c 0 - 1443.65625 264.953125 1460.140625 262.6875 1478.734375 262.6875 c 0 - 1518.34375 262.6875 1548.96875 273.546875 1570.375 295.34375 c 0 - 1591.78125 317.0625 1602.5625 347.140625 1602.5625 385.578125 c 1 - 1602.5625 389.40625 1602.5625 393.234375 1602.5625 397.0625 c 1 - 1602.5625 435.5 1591.78125 465.578125 1570.375 487.296875 c 0 - 1548.96875 509.09375 1518.34375 519.953125 1478.734375 519.953125 c 0 - 1449.90625 519.953125 1426.859375 514.484375 1409.59375 503.625 c 0 - 1392.328125 492.765625 1377.5625 480.578125 1365.453125 467.140625 c 1 - 1335.6875 471.307617188 1305.921875 475.473632812 1276.15625 479.640625 c 1 - 1284.46386719 604.120117188 1292.77050781 728.598632812 1301.078125 853.078125 c 1 - 1427.796875 853.078125 1554.515625 853.078125 1681.234375 853.078125 c 1 - 1681.234375 821.723632812 1681.234375 790.370117188 1681.234375 759.015625 c 1xe9c0 -EndSplineSet -EndChar - -StartChar: uniE133 -Encoding: 57651 57651 52 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -253.33 95.9375<473.104 698.889> 25.0293 95.0781<1059.63 1296.02> 343.779 95.9375<498.673 717.085 1059.63 1296.02> 612.686 95.9375<473.457 699.267 1095.64 1308.92> 1209.79 95.9375<499.001 717.446 1095.56 1308.05> -VStem: 367.209 107.5<186.541 322.835 1053.58 1188.28> 727.209 107.5<-130.28 16.9126 735.143 882.928> 921.817 115.157<771.976 1149.28> 951.193 108.438<-241.846 25.0293 120.107 333.232> 1319.79 114.296<142.348 310.913> -DStem2: 581.271 159.404 562.99 56.748 0.978916 -0.204262<-84.378 149.631> 581.662 1025.42 563.381 922.764 0.978916 -0.204262<-84.3815 149.558> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -253.33 95.9375<473.104 698.889> 25.0293 95.0781<1059.63 1296.02> 343.779 95.9375<498.673 717.085 1059.63 1296.02> 612.686 95.9375<473.457 699.267 1095.64 1308.92> 1209.79 95.9375<499.001 717.446 1095.56 1308.05> -VStem: 367.209 107.5<186.541 322.835 1053.58 1188.28> 727.209 107.5<-130.28 16.9126 735.143 882.928> 921.817 115.157<771.976 1149.28> 951.193 108.438<-241.846 25.0293 120.107 333.232> 1319.79 114.296<142.348 310.913> -DStem2: 581.271 159.404 562.99 56.748 0.978916 -0.204262<-84.378 149.631> 581.662 1025.42 563.381 922.764 0.978916 -0.204262<-84.3815 149.558> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -591.818359375 -253.330078125 m 0xfe40 - 535.490234375 -253.330078125 487.677734375 -243.095703125 448.302734375 -222.626953125 c 0 - 408.927734375 -202.158203125 375.177734375 -174.658203125 347.052734375 -140.048828125 c 1 - 372 -116.689453125 396.948242188 -93.330078125 421.896484375 -69.970703125 c 1 - 445.568359375 -98.798828125 471.662109375 -120.595703125 500.099609375 -135.283203125 c 0 - 528.615234375 -149.970703125 561.115234375 -157.392578125 597.599609375 -157.392578125 c 0 - 640.490234375 -157.392578125 672.755859375 -147.783203125 694.552734375 -128.564453125 c 0 - 716.271484375 -109.345703125 727.208984375 -83.408203125 727.208984375 -50.830078125 c 0 - 727.208984375 -24.580078125 719.474609375 -3.798828125 704.162109375 11.591796875 c 0 - 688.771484375 26.982421875 661.583984375 38.466796875 622.521484375 46.123046875 c 1 - 602.677734375 49.6650390625 582.833984375 53.2060546875 562.990234375 56.748046875 c 1 - 497.755859375 68.857421875 448.771484375 90.341796875 416.115234375 121.044921875 c 0 - 383.458984375 151.748046875 367.208984375 194.013671875 367.208984375 247.763671875 c 0 - 367.208984375 277.216796875 372.755859375 303.935546875 384.005859375 327.919921875 c 0 - 395.177734375 351.904296875 410.880859375 372.060546875 431.037109375 388.388671875 c 0 - 451.193359375 404.716796875 475.646484375 417.373046875 504.474609375 426.279296875 c 0 - 533.224609375 435.263671875 565.568359375 439.716796875 601.427734375 439.716796875 c 0 - 651.974609375 439.716796875 695.802734375 430.966796875 732.912109375 413.388671875 c 0 - 770.021484375 395.732421875 801.740234375 370.341796875 827.990234375 337.060546875 c 1 - 802.703125 314.665039062 777.416992188 292.268554688 752.130859375 269.873046875 c 1 - 734.865234375 292.216796875 713.771484375 310.185546875 688.771484375 323.623046875 c 0 - 663.849609375 337.060546875 632.755859375 343.779296875 595.646484375 343.779296875 c 0 - 557.287109375 343.779296875 527.521484375 336.044921875 506.349609375 320.732421875 c 0 - 485.255859375 305.341796875 474.708984375 282.919921875 474.708984375 253.544921875 c 0 - 474.708984375 225.341796875 483.302734375 204.404296875 500.646484375 190.654296875 c 0 - 517.912109375 176.904296875 544.787109375 166.435546875 581.271484375 159.404296875 c 1 - 601.115234375 155.263671875 620.958984375 151.123046875 640.802734375 146.982421875 c 1 - 707.990234375 134.169921875 757.130859375 112.373046875 788.146484375 81.669921875 c 0 - 819.162109375 50.966796875 834.708984375 8.701171875 834.708984375 -45.048828125 c 0 - 834.708984375 -76.376953125 829.240234375 -104.892578125 818.380859375 -130.517578125 c 0 - 807.521484375 -156.064453125 791.662109375 -178.017578125 770.880859375 -196.220703125 c 0 - 750.021484375 -214.501953125 724.630859375 -228.564453125 694.552734375 -238.486328125 c 0 - 664.474609375 -248.408203125 630.177734375 -253.330078125 591.818359375 -253.330078125 c 0xfe40 -951.193359375 -241.845703125 m 1xfec0 - 951.193359375 -18.486328125 951.193359375 204.873046875 951.193359375 428.232421875 c 1 - 1047.18261719 428.232421875 1143.171875 428.232421875 1239.16210938 428.232421875 c 1 - 1301.27148438 428.232421875 1349.23925781 410.029296875 1383.14648438 373.544921875 c 0 - 1417.12988281 337.060546875 1434.08300781 288.076171875 1434.08300781 226.669921875 c 256 - 1434.08300781 165.185546875 1417.12988281 116.201171875 1383.14648438 79.716796875 c 0 - 1349.23925781 43.310546875 1301.27148438 25.029296875 1239.16210938 25.029296875 c 1 - 1179.31738281 25.029296875 1119.47460938 25.029296875 1059.63085938 25.029296875 c 1 - 1059.63085938 -63.9287109375 1059.63085938 -152.887695312 1059.63085938 -241.845703125 c 1 - 1023.484375 -241.845703125 987.338867188 -241.845703125 951.193359375 -241.845703125 c 1xfec0 -1059.63085938 120.107421875 m 1 - 1117.234375 120.107421875 1174.83886719 120.107421875 1232.44335938 120.107421875 c 1 - 1259.94238281 120.107421875 1281.42773438 127.294921875 1296.74023438 141.669921875 c 0 - 1312.13085938 156.044921875 1319.78710938 176.748046875 1319.78710938 203.623046875 c 1 - 1319.78710938 218.961914062 1319.78710938 234.299804688 1319.78710938 249.638671875 c 1 - 1319.78710938 276.591796875 1312.13085938 297.216796875 1296.74023438 311.591796875 c 0 - 1281.42773438 325.966796875 1259.94238281 333.232421875 1232.44335938 333.232421875 c 1 - 1174.83886719 333.232421875 1117.234375 333.232421875 1059.63085938 333.232421875 c 1 - 1059.63085938 262.190429688 1059.63085938 191.149414062 1059.63085938 120.107421875 c 1 -592.130859375 612.685546875 m 0 - 535.880859375 612.685546875 488.068359375 622.919921875 448.693359375 643.388671875 c 0 - 409.318359375 663.857421875 375.568359375 691.357421875 347.443359375 725.966796875 c 1 - 372.390625 749.326171875 397.338867188 772.685546875 422.287109375 796.044921875 c 1 - 445.880859375 767.216796875 471.974609375 745.419921875 500.412109375 730.732421875 c 0 - 529.005859375 716.044921875 561.505859375 708.623046875 597.912109375 708.623046875 c 0 - 640.880859375 708.623046875 673.068359375 718.232421875 694.943359375 737.451171875 c 0 - 716.662109375 756.669921875 727.599609375 782.607421875 727.599609375 815.185546875 c 0 - 727.599609375 841.435546875 719.787109375 862.216796875 704.474609375 877.607421875 c 0 - 689.162109375 892.998046875 661.974609375 904.482421875 622.912109375 912.138671875 c 1 - 603.068359375 915.680664062 583.224609375 919.221679688 563.380859375 922.763671875 c 1 - 498.068359375 934.873046875 449.162109375 956.357421875 416.505859375 987.060546875 c 0 - 383.849609375 1017.76367188 367.599609375 1060.02929688 367.599609375 1113.77929688 c 0 - 367.599609375 1143.23242188 373.068359375 1169.95117188 384.318359375 1193.93554688 c 0 - 395.568359375 1217.91992188 411.193359375 1238.07617188 431.349609375 1254.40429688 c 0 - 451.505859375 1270.73242188 476.037109375 1283.38867188 504.787109375 1292.29492188 c 0 - 533.537109375 1301.27929688 565.880859375 1305.73242188 601.818359375 1305.73242188 c 0 - 652.287109375 1305.73242188 696.193359375 1296.98242188 733.224609375 1279.40429688 c 0 - 770.412109375 1261.74804688 802.130859375 1236.35742188 828.380859375 1203.07617188 c 1 - 803.068359375 1180.68066406 777.755859375 1158.28417969 752.443359375 1135.88867188 c 1 - 735.255859375 1158.23242188 714.162109375 1176.20117188 689.162109375 1189.63867188 c 0 - 664.162109375 1203.07617188 633.068359375 1209.79492188 596.037109375 1209.79492188 c 0 - 557.599609375 1209.79492188 527.912109375 1202.06054688 506.662109375 1186.74804688 c 0 - 485.568359375 1171.35742188 475.099609375 1148.93554688 475.099609375 1119.56054688 c 0 - 475.099609375 1091.35742188 483.693359375 1070.41992188 501.037109375 1056.66992188 c 0 - 518.224609375 1042.91992188 545.099609375 1032.45117188 581.662109375 1025.41992188 c 1 - 601.505859375 1021.27929688 621.349609375 1017.13867188 641.193359375 1012.99804688 c 1 - 708.380859375 1000.18554688 757.443359375 978.388671875 788.537109375 947.685546875 c 0 - 819.474609375 916.982421875 835.099609375 874.716796875 835.099609375 820.966796875 c 0 - 835.099609375 789.638671875 829.630859375 761.123046875 818.693359375 735.498046875 c 0 - 807.912109375 709.951171875 791.974609375 687.998046875 771.193359375 669.794921875 c 0 - 750.412109375 651.513671875 724.943359375 637.451171875 694.943359375 627.529296875 c 0 - 664.787109375 617.607421875 630.568359375 612.685546875 592.130859375 612.685546875 c 0 -1203.06835938 612.685546875 m 0 - 1115.41113281 612.685546875 1046.50585938 642.216796875 996.662109375 701.435546875 c 0 - 946.662109375 760.654296875 921.817382812 846.591796875 921.817382812 959.248046875 c 0 - 921.817382812 1015.49804688 928.224609375 1065.10742188 941.037109375 1107.99804688 c 0 - 953.692382812 1150.88867188 972.286132812 1187.06054688 996.662109375 1216.51367188 c 0 - 1021.03710938 1245.96679688 1050.56835938 1268.15429688 1085.41210938 1283.23242188 c 0 - 1120.25585938 1298.23242188 1159.47363281 1305.73242188 1203.06835938 1305.73242188 c 0 - 1261.34863281 1305.73242188 1310.09863281 1292.99804688 1349.47363281 1267.37304688 c 0 - 1388.84960938 1241.74804688 1419.63085938 1204.01367188 1442.13085938 1154.09179688 c 1 - 1411.71386719 1137.45117188 1381.296875 1120.81054688 1350.88085938 1104.16992188 c 1 - 1339.31835938 1136.20117188 1321.66210938 1161.59179688 1297.59960938 1180.49804688 c 0 - 1273.53613281 1199.40429688 1242.12988281 1208.77929688 1203.06835938 1208.77929688 c 0 - 1151.19238281 1208.77929688 1110.56835938 1191.20117188 1081.19335938 1156.04492188 c 0 - 1051.66113281 1120.81054688 1036.97460938 1072.13867188 1036.97460938 1010.10742188 c 1 - 1036.97460938 976.174804688 1036.97460938 942.243164062 1036.97460938 908.310546875 c 1xff40 - 1036.97460938 846.279296875 1051.66113281 797.607421875 1081.19335938 762.373046875 c 0 - 1110.56835938 727.216796875 1151.19238281 709.638671875 1203.06835938 709.638671875 c 0 - 1243.37988281 709.638671875 1276.19335938 720.029296875 1301.50585938 740.810546875 c 0 - 1326.66113281 761.591796875 1345.41210938 788.310546875 1357.59960938 820.966796875 c 1 - 1386.71386719 803.362304688 1415.828125 785.758789062 1444.94335938 768.154296875 c 1 - 1422.59960938 719.560546875 1391.19335938 681.435546875 1350.88085938 653.935546875 c 0 - 1310.56738281 626.435546875 1261.34863281 612.685546875 1203.06835938 612.685546875 c 0 -EndSplineSet -EndChar - -StartChar: uniE134 -Encoding: 57652 57652 53 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 183 96.0156<774.047 1094.75 1334.05 1574.42> 474.875 95.9375<774.047 1064.98> 757.062 96.0156<46.0781 245.766 354.203 553.891 774.047 1094.75 1334.05 1574.42> -VStem: 245.766 108.438<183 757.062> 665.609 108.438<279.016 474.875 570.812 757.062> 1225.61 108.438<279.016 757.062> 1629.75 116.172<334.419 701.659> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 183 96.0156<774.047 1094.75 1334.05 1574.42> 474.875 95.9375<774.047 1064.98> 757.062 96.0156<46.0781 245.766 354.203 553.891 774.047 1094.75 1334.05 1574.42> -VStem: 245.766 108.438<183 757.062> 665.609 108.438<279.016 474.875 570.812 757.062> 1225.61 108.438<279.016 757.062> 1629.75 116.172<334.419 701.659> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -354.203125 757.0625 m 1 - 354.203125 565.708007812 354.203125 374.354492188 354.203125 183 c 1 - 318.057617188 183 281.911132812 183 245.765625 183 c 1 - 245.765625 374.354492188 245.765625 565.708007812 245.765625 757.0625 c 1 - 179.203125 757.0625 112.640625 757.0625 46.078125 757.0625 c 1 - 46.078125 789.067382812 46.078125 821.073242188 46.078125 853.078125 c 1 - 215.348632812 853.078125 384.620117188 853.078125 553.890625 853.078125 c 1 - 553.890625 821.073242188 553.890625 789.067382812 553.890625 757.0625 c 1 - 487.328125 757.0625 420.765625 757.0625 354.203125 757.0625 c 1 -665.609375 183 m 1 - 665.609375 406.359375 665.609375 629.71875 665.609375 853.078125 c 1 - 808.65625 853.078125 951.703125 853.078125 1094.75 853.078125 c 1 - 1094.75 821.073242188 1094.75 789.067382812 1094.75 757.0625 c 1 - 987.848632812 757.0625 880.948242188 757.0625 774.046875 757.0625 c 1 - 774.046875 694.979492188 774.046875 632.895507812 774.046875 570.8125 c 1 - 871.026367188 570.8125 968.004882812 570.8125 1064.984375 570.8125 c 1 - 1064.984375 538.833007812 1064.984375 506.854492188 1064.984375 474.875 c 1 - 968.004882812 474.875 871.026367188 474.875 774.046875 474.875 c 1 - 774.046875 409.588867188 774.046875 344.301757812 774.046875 279.015625 c 1 - 880.948242188 279.015625 987.848632812 279.015625 1094.75 279.015625 c 1 - 1094.75 247.010742188 1094.75 215.004882812 1094.75 183 c 1 - 951.703125 183 808.65625 183 665.609375 183 c 1 -1225.609375 853.078125 m 1 - 1304.64550781 853.078125 1383.68261719 853.078125 1462.71875 853.078125 c 1 - 1505.609375 853.078125 1544.4375 846.046875 1579.359375 831.984375 c 0 - 1614.203125 817.84375 1643.96875 796.90625 1668.65625 769.09375 c 0 - 1693.265625 741.203125 1712.328125 706.359375 1725.765625 664.40625 c 0 - 1739.203125 622.53125 1745.921875 573.703125 1745.921875 518.078125 c 256 - 1745.921875 462.375 1739.203125 413.546875 1725.765625 371.671875 c 0 - 1712.328125 329.71875 1693.265625 294.875 1668.65625 266.984375 c 0 - 1643.96875 239.171875 1614.203125 218.234375 1579.359375 204.09375 c 0 - 1544.4375 190.03125 1505.609375 183 1462.71875 183 c 1 - 1383.68261719 183 1304.64550781 183 1225.609375 183 c 1 - 1225.609375 406.359375 1225.609375 629.71875 1225.609375 853.078125 c 1 -1462.71875 279.015625 m 1 - 1512.640625 279.015625 1552.953125 294.71875 1583.65625 326.046875 c 0 - 1614.359375 357.375 1629.75 403.46875 1629.75 464.25 c 1 - 1629.75 500.109375 1629.75 535.96875 1629.75 571.828125 c 1 - 1629.75 632.609375 1614.359375 678.703125 1583.65625 710.03125 c 0 - 1552.953125 741.4375 1512.640625 757.0625 1462.71875 757.0625 c 1 - 1419.828125 757.0625 1376.9375 757.0625 1334.046875 757.0625 c 1 - 1334.046875 597.713867188 1334.046875 438.364257812 1334.046875 279.015625 c 1 - 1376.9375 279.015625 1419.828125 279.015625 1462.71875 279.015625 c 1 -EndSplineSet -EndChar - -StartChar: uniE135 -Encoding: 57653 57653 54 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: -253.33 92.1094<1088.19 1264.07> -111.299 85.4688<453.891 672.797 775.453 866.703> 329.326 98.9062<642.87 672.797> 347.607 92.1094<1088.19 1264.07> 624.17 90.2344<498.707 724.268 1002.88 1191 1297.56 1460.84> 1208.78 96.9531<503.376 719.013 1142.05 1191> -VStem: 331.156 115.156<771.976 1149.28> 672.797 102.656<-241.846 -111.299 -25.8301 329.326> 933.266 115.156<-121.3 307.598> 1191 106.562<714.404 1215.5> 1303.89 115.156<-122.103 308.491> -DStem2: 361.703 -18.1738 453.891 -25.8301 0.512884 0.858458<40.7089 454.423> 961.625 1108.94 1027.88 1049.48 0.683541 0.729912<1.41678 229.335> -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: -253.33 92.1094<1088.19 1264.07> -111.299 85.4688<453.891 672.797 775.453 866.703> 329.326 98.9062<642.87 672.797> 347.607 92.1094<1088.19 1264.07> 624.17 90.2344<498.707 724.268 1002.88 1191 1297.56 1460.84> 1208.78 96.9531<503.376 719.013 1142.05 1191> -VStem: 331.156 115.156<771.976 1149.28> 672.797 102.656<-241.846 -111.299 -25.8301 329.326> 933.266 115.156<-121.3 307.598> 1191 106.562<714.404 1215.5> 1303.89 115.156<-122.103 308.491> -DStem2: 361.703 -18.1738 453.891 -25.8301 0.512884 0.858458<40.7089 454.423> 961.625 1108.94 1027.88 1049.48 0.683541 0.729912<1.41678 229.335> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -672.796875 -241.845703125 m 1xefe0 - 672.796875 -198.330078125 672.796875 -154.814453125 672.796875 -111.298828125 c 1 - 569.098632812 -111.298828125 465.401367188 -111.298828125 361.703125 -111.298828125 c 1 - 361.703125 -80.2568359375 361.703125 -49.2158203125 361.703125 -18.173828125 c 1 - 452.276367188 130.627929688 542.848632812 279.430664062 633.421875 428.232421875 c 1 - 680.765625 428.232421875 728.109375 428.232421875 775.453125 428.232421875 c 1 - 775.453125 276.877929688 775.453125 125.524414062 775.453125 -25.830078125 c 1 - 805.870117188 -25.830078125 836.286132812 -25.830078125 866.703125 -25.830078125 c 1 - 866.703125 -54.3193359375 866.703125 -82.8095703125 866.703125 -111.298828125 c 1 - 836.286132812 -111.298828125 805.870117188 -111.298828125 775.453125 -111.298828125 c 1 - 775.453125 -154.814453125 775.453125 -198.330078125 775.453125 -241.845703125 c 1 - 741.234375 -241.845703125 707.015625 -241.845703125 672.796875 -241.845703125 c 1xefe0 -453.890625 -25.830078125 m 1 - 526.859375 -25.830078125 599.828125 -25.830078125 672.796875 -25.830078125 c 1 - 672.796875 92.5556640625 672.796875 210.940429688 672.796875 329.326171875 c 1 - 670.557617188 329.326171875 668.317382812 329.326171875 666.078125 329.326171875 c 1 - 595.348632812 210.940429688 524.620117188 92.5556640625 453.890625 -25.830078125 c 1 -1176.078125 -253.330078125 m 0 - 1134.515625 -253.330078125 1098.421875 -245.517578125 1067.640625 -229.814453125 c 0 - 1037.015625 -214.189453125 1011.703125 -191.611328125 991.859375 -162.158203125 c 0 - 972.015625 -132.705078125 957.328125 -96.533203125 947.640625 -53.720703125 c 0 - 938.109375 -10.830078125 933.265625 38.154296875 933.265625 93.232421875 c 0 - 933.265625 147.607421875 938.109375 196.357421875 947.640625 239.560546875 c 0 - 957.328125 282.763671875 972.015625 319.091796875 991.859375 348.544921875 c 0 - 1011.703125 377.998046875 1037.015625 400.576171875 1067.640625 416.201171875 c 0 - 1098.421875 431.904296875 1134.515625 439.716796875 1176.078125 439.716796875 c 0xdfe0 - 1259.359375 439.716796875 1320.609375 409.326171875 1359.984375 348.544921875 c 0 - 1399.359375 287.763671875 1419.046875 202.607421875 1419.046875 93.232421875 c 256 - 1419.046875 -16.220703125 1399.359375 -101.376953125 1359.984375 -162.158203125 c 0 - 1320.609375 -222.939453125 1259.359375 -253.330078125 1176.078125 -253.330078125 c 0 -1176.078125 -161.220703125 m 256 - 1199.203125 -161.220703125 1218.890625 -156.533203125 1235.140625 -147.314453125 c 0 - 1251.546875 -138.017578125 1264.828125 -124.736328125 1274.984375 -107.470703125 c 0 - 1285.296875 -90.126953125 1292.640625 -69.501953125 1297.171875 -45.517578125 c 0 - 1301.546875 -21.533203125 1303.890625 5.185546875 1303.890625 34.638671875 c 1 - 1303.890625 73.6748046875 1303.890625 112.711914062 1303.890625 151.748046875 c 1 - 1303.890625 181.201171875 1301.546875 207.919921875 1297.171875 231.904296875 c 0 - 1292.640625 255.888671875 1285.296875 276.591796875 1274.984375 293.857421875 c 0 - 1264.828125 311.123046875 1251.546875 324.404296875 1235.140625 333.701171875 c 0 - 1218.890625 342.919921875 1199.203125 347.607421875 1176.078125 347.607421875 c 256 - 1153.109375 347.607421875 1133.421875 342.919921875 1117.171875 333.701171875 c 0 - 1100.765625 324.404296875 1087.484375 311.123046875 1077.328125 293.857421875 c 0 - 1067.015625 276.591796875 1059.671875 255.888671875 1055.140625 231.904296875 c 0 - 1050.765625 207.919921875 1048.421875 181.201171875 1048.421875 151.748046875 c 1 - 1048.421875 112.711914062 1048.421875 73.6748046875 1048.421875 34.638671875 c 1 - 1048.421875 5.185546875 1050.765625 -21.533203125 1055.140625 -45.517578125 c 0 - 1059.671875 -69.501953125 1067.015625 -90.126953125 1077.328125 -107.470703125 c 0 - 1087.484375 -124.736328125 1100.765625 -138.017578125 1117.171875 -147.314453125 c 0 - 1133.421875 -156.533203125 1153.109375 -161.220703125 1176.078125 -161.220703125 c 256 -612.40625 612.685546875 m 0 - 524.75 612.685546875 456 642.216796875 406 701.435546875 c 0 - 356.15625 760.654296875 331.15625 846.591796875 331.15625 959.248046875 c 0 - 331.15625 1015.49804688 337.5625 1065.10742188 350.375 1107.99804688 c 0 - 363.1875 1150.88867188 381.78125 1187.06054688 406 1216.51367188 c 0 - 430.375 1245.96679688 459.90625 1268.15429688 494.90625 1283.23242188 c 0 - 529.75 1298.23242188 568.96875 1305.73242188 612.40625 1305.73242188 c 0 - 670.6875 1305.73242188 719.4375 1292.99804688 758.8125 1267.37304688 c 0 - 798.1875 1241.74804688 829.125 1204.01367188 851.46875 1154.09179688 c 1 - 821.104492188 1137.45117188 790.739257812 1120.81054688 760.375 1104.16992188 c 1 - 748.8125 1136.20117188 731 1161.59179688 707.09375 1180.49804688 c 0 - 683.03125 1199.40429688 651.46875 1208.77929688 612.40625 1208.77929688 c 0 - 560.6875 1208.77929688 519.90625 1191.20117188 490.53125 1156.04492188 c 0 - 461.15625 1120.81054688 446.3125 1072.13867188 446.3125 1010.10742188 c 1 - 446.3125 976.174804688 446.3125 942.243164062 446.3125 908.310546875 c 1 - 446.3125 846.279296875 461.15625 797.607421875 490.53125 762.373046875 c 0 - 519.90625 727.216796875 560.6875 709.638671875 612.40625 709.638671875 c 0 - 652.71875 709.638671875 685.53125 720.029296875 710.84375 740.810546875 c 0 - 736.15625 761.591796875 754.90625 788.310546875 767.09375 820.966796875 c 1 - 796.208007812 803.362304688 825.323242188 785.758789062 854.4375 768.154296875 c 1 - 831.9375 719.560546875 800.6875 681.435546875 760.375 653.935546875 c 0 - 719.90625 626.435546875 670.6875 612.685546875 612.40625 612.685546875 c 0 -1002.875 624.169921875 m 1 - 1002.875 654.248046875 1002.875 684.326171875 1002.875 714.404296875 c 1 - 1065.58300781 714.404296875 1128.29199219 714.404296875 1191 714.404296875 c 1 - 1191 881.435546875 1191 1048.46679688 1191 1215.49804688 c 1 - 1188.44824219 1215.49804688 1185.89550781 1215.49804688 1183.34375 1215.49804688 c 1 - 1131.52050781 1160.15917969 1079.69824219 1104.82128906 1027.875 1049.48242188 c 1 - 1005.79199219 1069.29980469 983.708007812 1089.11816406 961.625 1108.93554688 c 1 - 1018.55175781 1170.70605469 1075.47949219 1232.47753906 1132.40625 1294.24804688 c 1 - 1187.45800781 1294.24804688 1242.51074219 1294.24804688 1297.5625 1294.24804688 c 1 - 1297.5625 1100.96679688 1297.5625 907.685546875 1297.5625 714.404296875 c 1 - 1351.98925781 714.404296875 1406.41699219 714.404296875 1460.84375 714.404296875 c 1 - 1460.84375 684.326171875 1460.84375 654.248046875 1460.84375 624.169921875 c 1 - 1308.1875 624.169921875 1155.53125 624.169921875 1002.875 624.169921875 c 1 -EndSplineSet -EndChar - -StartChar: uniE0F0 -Encoding: 57584 57584 55 -Width: 1792 -Flags: HW -LayerCount: 2 -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 1 -WasModified: 1 -WasOrder2: 0 -Layer: 1 -Width: 1792 -VWidth: 1792 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 -SplineSet -0 1497.28125 m 1053 -NamedP: "cap heights and baselines for scaled letter icons" -EndSplineSet -EndUndoOperation -UndoOperation -Index: 1 -Type: 1 -WasModified: 1 -WasOrder2: 0 -Layer: 1 -Width: 1792 -VWidth: 1792 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 -SplineSet -0 1488.28125 m 1053 -0 15.5 m 1 -NamedP: "1-char" - 1792 15.5 l 1025 -0 1020.6171875 m 1 -NamedP: "1-char" - 1792 1020.6171875 l 1025 -0 99.2001953125 m 1 -NamedP: "2-char" - 1792 99.2001953125 l 1025 -0 936.797851562 m 1 -NamedP: "2-char" - 1792 936.797851562 l 1025 -0 183 m 1 -NamedP: "3-char" - 1792 183 l 1025 -0 853.078125 m 1 -NamedP: "3-char" - 1792 853.078125 l 1025 -0 1294.24804688 m 1 -NamedP: "2-line" - 1792 1294.24804688 l 1025 --0 -241.845703125 m 1 -NamedP: "2-line" - 1792 -241.845703125 l 1025 --0 428.232421875 m 1 -NamedP: "2-line" - 1792 428.232421875 l 1025 -0 624.169921875 m 1 -NamedP: "2-line" - 1792 624.169921875 l 1025 -EndSplineSet -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet --717.389648438 -10.8251953125 m 8 -NamedP: "baseline 2" - 717.249023438 -10.8251953125 l 1024 --896 0 m 8 -NamedP: "baseline 1" - 896 0 l 1024 -EndSplineSet -Comment: "O" -Colour: ff00ff -EndChar - -StartChar: uniE0F1 -Encoding: 57585 57585 56 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 15.5 139.688<684.242 1061.86> 460.461 135.352<684.242 1028.79> 880.93 139.688<684.242 1028.79> -VStem: 521.586 162.656<155.188 460.461 595.812 880.93> 1062.99 171.328<627.723 849.019> 1098.97 171.445<189.391 426.257> -LayerCount: 2 -UndoRedoHistory -Layer: 0 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 15.5 139.688<684.242 1061.86> 460.461 135.352<684.242 1028.79> 880.93 139.688<684.242 1028.79> -VStem: 521.586 162.656<155.188 460.461 595.812 880.93> 1062.99 171.328<627.723 849.019> 1098.97 171.445<189.391 426.257> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Back -SplineSet -0 15.5 m 5 -NamedP: "1-char" - 1792 15.5 l 1029 -0 1020.6171875 m 5 -NamedP: "1-char" - 1792 1020.6171875 l 1029 -EndSplineSet -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 1 -WasModified: 0 -WasOrder2: 0 -Layer: 1 -Width: 1792 -VWidth: 1687 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -521.5859375 1020.6171875 m 1xf4 - 669.90625 1020.6171875 818.2265625 1020.6171875 966.546875 1020.6171875 c 1 - 1049.984375 1020.6171875 1115.609375 997.0625 1163.0703125 950.0703125 c 0 - 1210.6484375 903.078125 1234.3203125 840.1484375 1234.3203125 761.3984375 c 0xf8 - 1234.3203125 724.015625 1229.046875 692.0234375 1218.5 665.65625 c 0 - 1207.953125 639.2890625 1194.4765625 617.609375 1178.1875 600.8515625 c 0 - 1161.8984375 584.09375 1143.1484375 571.5546875 1122.0546875 563.46875 c 0 - 1100.9609375 555.265625 1080.3359375 550.2265625 1060.0625 548.3515625 c 1 - 1060.0625 545.4609375 1060.0625 542.5703125 1060.0625 539.6796875 c 1 - 1080.3359375 538.7421875 1102.6015625 533.9375 1127.09375 525.265625 c 0 - 1151.5859375 516.59375 1174.3203125 502.8828125 1195.53125 484.25 c 0 - 1216.625 465.5 1234.3203125 441.4765625 1248.734375 412.1796875 c 0 - 1263.1484375 382.8828125 1270.4140625 347.140625 1270.4140625 304.953125 c 0 - 1270.4140625 264.640625 1263.8515625 226.671875 1250.9609375 191.1640625 c 0 - 1237.953125 155.65625 1219.90625 124.953125 1196.9375 99.0546875 c 0 - 1173.8515625 73.15625 1146.546875 52.6484375 1114.7890625 37.765625 c 0 - 1083.1484375 22.8828125 1048.578125 15.5 1011.1953125 15.5 c 1 - 847.9921875 15.5 684.7890625 15.5 521.5859375 15.5 c 1 - 521.5859375 350.5390625 521.5859375 685.578125 521.5859375 1020.6171875 c 1xf4 -684.2421875 155.1875 m 1 - 777.3671875 155.1875 870.4921875 155.1875 963.6171875 155.1875 c 1 - 1005.921875 155.1875 1038.96875 166.203125 1062.9921875 188.3515625 c 0xf8 - 1087.015625 210.3828125 1098.96875 242.0234375 1098.96875 283.390625 c 1 - 1098.96875 299.6796875 1098.96875 315.96875 1098.96875 332.2578125 c 1xf4 - 1098.96875 373.625 1087.015625 405.265625 1062.9921875 427.296875 c 0 - 1038.96875 449.4453125 1005.921875 460.4609375 963.6171875 460.4609375 c 1 - 870.4921875 460.4609375 777.3671875 460.4609375 684.2421875 460.4609375 c 1 - 684.2421875 358.703125 684.2421875 256.9453125 684.2421875 155.1875 c 1 -684.2421875 595.8125 m 1 - 768.265625 595.8125 852.2890625 595.8125 936.3125 595.8125 c 1 - 976.625 595.8125 1007.796875 606.125 1029.828125 626.75 c 0 - 1051.9765625 647.375 1062.9921875 676.90625 1062.9921875 715.34375 c 1 - 1062.9921875 730.6953125 1062.9921875 746.046875 1062.9921875 761.3984375 c 1 - 1062.9921875 799.8359375 1051.9765625 829.3671875 1029.828125 849.9921875 c 0 - 1007.796875 870.6171875 976.625 880.9296875 936.3125 880.9296875 c 1 - 852.2890625 880.9296875 768.265625 880.9296875 684.2421875 880.9296875 c 1 - 684.2421875 785.890625 684.2421875 690.8515625 684.2421875 595.8125 c 1 -EndSplineSet -EndChar - -StartChar: uniE0F2 -Encoding: 57586 57586 57 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 325.958 116.406<389.164 636.43> 811.993 124.805<499.082 527.573> -VStem: 145.609 137.891<99.2002 237.091> 745.609 141.602<99.2002 240.802> 1220.41 135.547<99.2002 492.633> -DStem2: 145.609 99.2002 283.5 99.2002 0.303392 0.952866<41.8349 280.126 400.882 789.887> 601.664 936.798 516.312 811.993 0.306233 -0.951957<92.6712 481.326 602.427 841.437> 1087.21 936.798 932.328 936.798 0.479431 -0.877579<0 425.309> 1294.83 563.556 1355.96 431.622 0.477305 0.878738<0 424.748> -LayerCount: 2 -UndoRedoHistory -Layer: 0 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 325.958 116.406<389.164 636.43> 811.993 124.805<499.082 527.573> -VStem: 145.609 137.891<99.2002 237.091> 745.609 141.602<99.2002 240.802> 1220.41 135.547<99.2002 492.633> -DStem2: 145.609 99.2002 283.5 99.2002 0.303392 0.952866<41.8349 280.126 400.882 789.887> 601.664 936.798 516.312 811.993 0.306233 -0.951957<92.6712 481.326 602.427 841.437> 1087.21 936.798 932.328 936.798 0.479431 -0.877579<0 425.309> 1294.83 563.556 1355.96 431.622 0.477305 0.878738<0 424.748> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Back -SplineSet -0 99.2001953125 m 5 -NamedP: "2-char" - 1792 99.2001953125 l 1029 -0 936.797851562 m 5 -NamedP: "2-char" - 1792 936.797851562 l 1029 -EndSplineSet -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 1 -WasModified: 0 -WasOrder2: 0 -Layer: 1 -Width: 1792 -VWidth: 1687 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -745.609375 99.2001953125 m 1 - 720.4140625 174.786132812 695.21875 250.372070312 670.0234375 325.958007812 c 1 - 565.596679688 325.958007812 461.168945312 325.958007812 356.7421875 325.958007812 c 1 - 332.328125 250.372070312 307.9140625 174.786132812 283.5 99.2001953125 c 1 - 237.536132812 99.2001953125 191.573242188 99.2001953125 145.609375 99.2001953125 c 1 - 240.791992188 378.399414062 335.973632812 657.598632812 431.15625 936.797851562 c 1 - 487.9921875 936.797851562 544.828125 936.797851562 601.6640625 936.797851562 c 1 - 696.846679688 657.598632812 792.028320312 378.399414062 887.2109375 99.2001953125 c 1 - 840.010742188 99.2001953125 792.809570312 99.2001953125 745.609375 99.2001953125 c 1 -516.3125 811.993164062 m 1 - 514.359375 811.993164062 512.40625 811.993164062 510.453125 811.993164062 c 1 - 470.0234375 688.783203125 429.59375 565.573242188 389.1640625 442.364257812 c 1 - 471.5859375 442.364257812 554.0078125 442.364257812 636.4296875 442.364257812 c 1 - 596.390625 565.573242188 556.3515625 688.783203125 516.3125 811.993164062 c 1 -1220.4140625 99.2001953125 m 1 - 1220.4140625 209.193359375 1220.4140625 319.186523438 1220.4140625 429.180664062 c 1 - 1124.38574219 598.385742188 1028.35644531 767.591796875 932.328125 936.797851562 c 1 - 983.956054688 936.797851562 1035.58300781 936.797851562 1087.2109375 936.797851562 c 1 - 1155.1796875 812.383789062 1223.1484375 687.969726562 1291.1171875 563.555664062 c 1 - 1292.35449219 563.555664062 1293.59082031 563.555664062 1294.828125 563.555664062 c 1 - 1362.40625 687.969726562 1429.984375 812.383789062 1497.5625 936.797851562 c 1 - 1547.171875 936.797851562 1596.78125 936.797851562 1646.390625 936.797851562 c 5 - 1549.58105469 768.405273438 1452.77050781 600.013671875 1355.9609375 431.622070312 c 1 - 1355.9609375 320.814453125 1355.9609375 210.006835938 1355.9609375 99.2001953125 c 5 - 1310.77832031 99.2001953125 1265.59667969 99.2001953125 1220.4140625 99.2001953125 c 1 -EndSplineSet -EndChar - -StartChar: uniE0F3 -Encoding: 57587 57587 58 -Width: 1792 -VWidth: 1687 -Flags: W -HStem: 171.516 89.2188<906.667 1116.84 1445.69 1645.37> 183 108.516<198.32 221.367 546.758 569.805> 449.875 87.3438<1569.19 1693.09> 750.344 102.734<371.133 393.242> 775.344 89.2188<935.851 1133.42 1446.32 1654.53> -VStem: 0 103.75<749.328 853.078> 321.719 123.75<751.086 853.078> 664.375 99.8438<753.234 853.078> 812.781 101.719<608.533 755.771> 1137.31 101.719<281.429 444.709> 1288.88 109.531<309.707 726.324> 1701.69 90.3125<183 281.906 305.738 449.875> -DStem2: 103.75 853.078 0 853.078 0.190374 -0.981712<0 567.853> 216.094 291.516 355.312 595.812 0.136058 0.990701<4.46299 473.288> 530.938 445.109 387.969 750.344 0.136058 -0.990701<-318.35 155.035> 585.625 446.984 617.344 183 0.190374 0.981712<-154.194 413.659> 1006.69 581.438 988.406 485.422 0.978371 -0.206857<-75.1218 135.909> -LayerCount: 2 -UndoRedoHistory -Layer: 0 -Undoes -UndoOperation -Index: 0 -Type: 12 -WasModified: 0 -WasOrder2: 0 -Layer: 0 -HStem: 171.516 89.2188<906.667 1116.84 1445.69 1645.37> 183 108.516<198.32 221.367 546.758 569.805> 449.875 87.3438<1569.19 1693.09> 750.344 102.734<371.133 393.242> 775.344 89.2188<935.851 1133.42 1446.32 1654.53> -VStem: 0 103.75<749.328 853.078> 321.719 123.75<751.086 853.078> 664.375 99.8438<753.234 853.078> 812.781 101.719<608.533 755.771> 1137.31 101.719<281.429 444.709> 1288.88 109.531<309.707 726.324> 1701.69 90.3125<183 281.906 305.738 449.875> -DStem2: 103.75 853.078 0 853.078 0.190374 -0.981712<0 567.853> 216.094 291.516 355.312 595.812 0.136058 0.990701<4.46299 473.288> 530.938 445.109 387.969 750.344 0.136058 -0.990701<-318.35 155.035> 585.625 446.984 617.344 183 0.190374 0.981712<-154.194 413.659> 1006.69 581.438 988.406 485.422 0.978371 -0.206857<-75.1218 135.909> -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Back -SplineSet -0 183 m 5 -NamedP: "3-char" - 1792 183 l 1029 -0 853.078125 m 5 -NamedP: "3-char" - 1792 853.078125 l 1029 -EndSplineSet -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 1 -WasModified: 0 -WasOrder2: 0 -Layer: 1 -Width: 1792 -VWidth: 1687 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -142.1875 183 m 5x77f0 - 94.7919921875 406.359375 47.3955078125 629.71875 0 853.078125 c 5 - 34.5830078125 853.078125 69.1669921875 853.078125 103.75 853.078125 c 5 - 130 717.713867188 156.25 582.348632812 182.5 446.984375 c 5 - 189.53125 395.161132812 196.5625 343.338867188 203.59375 291.515625 c 5 - 207.760742188 291.515625 211.926757812 291.515625 216.09375 291.515625 c 5 - 223.125 342.713867188 230.15625 393.911132812 237.1875 445.109375 c 5 - 265.364257812 581.098632812 293.541992188 717.088867188 321.71875 853.078125 c 5 - 362.96875 853.078125 404.21875 853.078125 445.46875 853.078125 c 5 - 473.958007812 717.088867188 502.448242188 581.098632812 530.9375 445.109375 c 5 - 537.96875 393.911132812 545 342.713867188 552.03125 291.515625 c 5 - 556.198242188 291.515625 560.364257812 291.515625 564.53125 291.515625 c 5 - 571.5625 343.338867188 578.59375 395.161132812 585.625 446.984375 c 5 - 611.875 582.348632812 638.125 717.713867188 664.375 853.078125 c 5 - 697.65625 853.078125 730.9375 853.078125 764.21875 853.078125 c 5 - 715.260742188 629.71875 666.301757812 406.359375 617.34375 183 c 5 - 576.71875 183 536.09375 183 495.46875 183 c 5 - 466.666992188 320.604492188 437.864257812 458.208007812 409.0625 595.8125 c 5 - 402.03125 647.323242188 395 698.833007812 387.96875 750.34375 c 5 - 384.114257812 750.34375 380.260742188 750.34375 376.40625 750.34375 c 5 - 369.375 698.833007812 362.34375 647.323242188 355.3125 595.8125 c 5 - 325.208007812 458.208007812 295.104492188 320.604492188 265 183 c 5 - 224.0625 183 183.125 183 142.1875 183 c 5x77f0 -1017.3125 171.515625 m 4xaff0 - 967.3125 171.515625 924.03125 180.890625 887.15625 199.796875 c 4 - 850.4375 218.703125 818.875 246.046875 792.625 281.90625 c 5 - 815.958007812 303.338867188 839.291992188 324.770507812 862.625 346.203125 c 5 - 882.46875 318.703125 905.28125 297.53125 930.90625 282.84375 c 4 - 956.375 268.15625 985.59375 260.734375 1018.25 260.734375 c 4 - 1097.625 260.734375 1137.3125 297.21875 1137.3125 370.1875 c 4 - 1137.3125 399.640625 1130.125 422.21875 1116.0625 437.84375 c 4 - 1102 453.546875 1077.78125 465.578125 1043.09375 473.859375 c 5 - 1024.86425781 477.713867188 1006.63574219 481.567382812 988.40625 485.421875 c 5 - 928.25 498.859375 884.03125 520.421875 855.4375 550.1875 c 4 - 827 579.953125 812.78125 621.75 812.78125 675.5 c 4 - 812.78125 737.53125 831.53125 784.5625 868.875 816.59375 c 4 - 906.375 848.625 958.71875 864.5625 1025.90625 864.5625 c 4 - 1073.875 864.5625 1114.34375 856.4375 1147.3125 840.109375 c 4 - 1180.28125 823.78125 1208.875 798.390625 1233.25 763.78125 c 5 - 1209.86425781 743.3125 1186.47949219 722.84375 1163.09375 702.375 c 5 - 1145.90625 726.671875 1126.53125 744.953125 1105.125 757.0625 c 4 - 1083.71875 769.25 1056.53125 775.34375 1024.03125 775.34375 c 4 - 987.46875 775.34375 960.125 767.765625 941.84375 752.765625 c 4 - 923.71875 737.6875 914.5 712.921875 914.5 678.390625 c 4 - 914.5 650.1875 921.6875 628.9375 936.0625 614.484375 c 4 - 950.59375 600.109375 974.03125 589.09375 1006.6875 581.4375 c 5 - 1024.91699219 577.270507812 1043.14550781 573.104492188 1061.375 568.9375 c 5 - 1093.40625 561.90625 1120.59375 553.078125 1142.9375 542.53125 c 4 - 1165.4375 531.984375 1183.875 519.015625 1198.25 503.625 c 4 - 1212.625 488.3125 1222.9375 470.1875 1229.34375 449.40625 c 4 - 1235.75 428.625 1239.03125 404.40625 1239.03125 376.90625 c 4 - 1239.03125 309.71875 1219.65625 258.703125 1180.90625 223.78125 c 4 - 1142.15625 188.9375 1087.625 171.515625 1017.3125 171.515625 c 4xaff0 -1701.6875 281.90625 m 5 - 1697.83300781 281.90625 1693.97949219 281.90625 1690.125 281.90625 c 5 - 1683.875 249.875 1667.46875 223.46875 1641.21875 202.6875 c 4 - 1614.96875 181.90625 1577.9375 171.515625 1529.8125 171.515625 c 4xa7f0 - 1495.28125 171.515625 1463.40625 177.84375 1434.34375 190.65625 c 4 - 1405.28125 203.46875 1379.8125 223.78125 1358.09375 251.671875 c 4 - 1336.21875 279.484375 1319.34375 315.34375 1307.15625 359.171875 c 4 - 1294.96875 403 1288.875 455.65625 1288.875 517.0625 c 260 - 1288.875 578.546875 1294.8125 631.125 1306.6875 675.03125 c 4 - 1318.5625 718.859375 1335.75 754.875 1358.5625 783 c 4 - 1381.21875 811.125 1408.5625 831.828125 1440.59375 844.953125 c 4 - 1472.625 858.078125 1508.71875 864.5625 1549.03125 864.5625 c 4 - 1608.5625 864.5625 1657 851.828125 1694.03125 826.203125 c 4 - 1731.21875 800.578125 1759.96875 764.09375 1780.4375 716.75 c 5 - 1752.625 700.421875 1724.8125 684.09375 1697 667.765625 c 5 - 1685.4375 700.421875 1667.9375 726.359375 1644.65625 745.578125 c 4 - 1621.21875 764.796875 1589.65625 774.328125 1549.96875 774.328125 c 4 - 1502 774.328125 1464.8125 759.015625 1438.25 728.3125 c 4 - 1411.6875 697.53125 1398.40625 654.71875 1398.40625 599.640625 c 5 - 1398.40625 545.239257812 1398.40625 490.838867188 1398.40625 436.4375 c 5 - 1398.40625 381.4375 1411.6875 338.546875 1438.25 307.765625 c 4 - 1464.8125 277.0625 1502 261.75 1549.96875 261.75 c 4 - 1569.8125 261.75 1588.40625 264.5625 1605.75 270.34375 c 4 - 1622.9375 276.125 1638.25 284.40625 1651.375 295.34375 c 4 - 1664.5 306.203125 1674.65625 319.796875 1682 336.125 c 4 - 1689.34375 352.453125 1693.09375 370.8125 1693.09375 391.28125 c 5 - 1693.09375 410.8125 1693.09375 430.34375 1693.09375 449.875 c 5 - 1651.79199219 449.875 1610.48925781 449.875 1569.1875 449.875 c 5 - 1569.1875 478.989257812 1569.1875 508.104492188 1569.1875 537.21875 c 5 - 1643.45800781 537.21875 1717.72949219 537.21875 1792 537.21875 c 5 - 1792 419.145507812 1792 301.073242188 1792 183 c 5 - 1761.89550781 183 1731.79199219 183 1701.6875 183 c 5x6ff0 - 1701.6875 215.96875 1701.6875 248.9375 1701.6875 281.90625 c 5 -EndSplineSet -EndChar - -StartChar: uniE0F4 -Encoding: 57588 57588 59 -Width: 1792 -Flags: HW -HStem: -253.3 85.3906<331.166 506.082> -61.0391 130.176<891.389 1021.56> 95.1377 85.4687<356.078 505.623> 117.311 130.176<1455.12 1585.3> 612.716 89.2188<1388.21 1579.14> 624.2 92.1875<328.559 354.926> 897.794 85.4688<802.406 938.743> 1204.98 89.2969<802.406 1011.58 1380.73 1582.23> -VStem: 82.0938 106.562<1187.72 1294.28> 202.297 107.5<-147.64 75.4877> 493.891 104.688<1189.59 1294.28> 526.75 107.5<-147.355 74.3454> 700.609 101.797<624.2 897.794 983.263 1204.98> 1030.84 108.516<1002.53 1185.72> 1187.45 101.78<-25.0879 211.535> 1233.73 109.453<750.447 1168.03> -DStem2: 188.656 1294.28 82.0938 1294.28 0.271727 -0.962374<0 593.586> 891.389 69.1366 891.389 -61.0391 0.717299 0.696766<0 311.586> 1024.12 905.45 922.406 897.794 0.413517 -0.910496<0 262.054> 1289.23 -25.0879 1187.45 -248.968 0.735691 0.677318<0 314.262> -LayerCount: 2 -UndoRedoHistory -Layer: 0 -Undoes -UndoOperation -Index: 0 -Type: 1 -WasModified: 1 -WasOrder2: 0 -Layer: 2 -Width: 1792 -VWidth: 1792 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 -SplineSet -418.234375 -251.3046875 m 4xe3dc - 346.59375 -251.3046875 292.6875 -229.2734375 256.515625 -185.1328125 c 4 - 220.34375 -140.9140625 202.296875 -76.6171875 202.296875 7.8359375 c 4 - 202.296875 48.1484375 207.375 88.4609375 217.609375 128.8515625 c 4 - 227.84375 169.1640625 242.609375 207.6796875 261.75 244.4765625 c 4 - 280.96875 281.2734375 303.859375 315.7265625 330.421875 347.6796875 c 4 - 356.984375 379.7109375 386.59375 407.2109375 419.25 430.2578125 c 5 - 465.004882812 430.2578125 510.760742188 430.2578125 556.515625 430.2578125 c 5 - 517.453125 400.1796875 483.859375 371.5078125 455.734375 344.3203125 c 4 - 427.53125 317.1328125 403.703125 290.1015625 384.171875 263.2265625 c 4 - 364.640625 236.3515625 348.859375 208.6953125 336.671875 180.1796875 c 4 - 324.484375 151.6640625 315.1875 120.8046875 308.859375 87.5234375 c 5 - 313 87.5234375 317.140625 87.5234375 321.28125 87.5234375 c 5 - 332.21875 118.2265625 349.484375 141.7421875 373.15625 158.0703125 c 4 - 396.828125 174.3984375 424.953125 182.6015625 457.609375 182.6015625 c 4 - 511.984375 182.6015625 555.03125 164.9453125 586.75 129.7890625 c 4 - 618.390625 94.5546875 634.25 42.7578125 634.25 -25.7578125 c 4 - 634.25 -96.7734375 615.890625 -152.1640625 579.09375 -191.8515625 c 4 - 542.296875 -231.5390625 488.625 -251.3046875 418.234375 -251.3046875 c 4xe3dc -418.234375 -165.9140625 m 260 - 490.578125 -165.9140625 526.75 -126.2265625 526.75 -46.8515625 c 5 - 526.75 -38.544921875 526.75 -30.2373046875 526.75 -21.9296875 c 5 - 526.75 57.4453125 490.578125 97.1328125 418.234375 97.1328125 c 260 - 345.96875 97.1328125 309.796875 57.4453125 309.796875 -21.9296875 c 5 - 309.796875 -30.2373046875 309.796875 -38.544921875 309.796875 -46.8515625 c 5 - 309.796875 -126.2265625 345.96875 -165.9140625 418.234375 -165.9140625 c 260 -278.890625 626.1953125 m 5xc7ec - 213.291992188 849.5546875 147.692382812 1072.9140625 82.09375 1296.2734375 c 5 - 117.614257812 1296.2734375 153.135742188 1296.2734375 188.65625 1296.2734375 c 5 - 228.317382812 1155.8046875 267.979492188 1015.3359375 307.640625 874.8671875 c 5 - 316.9375 822.705078125 326.234375 770.543945312 335.53125 718.3828125 c 5 - 339.671875 718.3828125 343.8125 718.3828125 347.953125 718.3828125 c 5 - 357.25 770.543945312 366.546875 822.705078125 375.84375 874.8671875 c 5 - 415.192382812 1015.3359375 454.541992188 1155.8046875 493.890625 1296.2734375 c 5 - 528.786132812 1296.2734375 563.682617188 1296.2734375 598.578125 1296.2734375 c 5 - 533.291992188 1072.9140625 468.004882812 849.5546875 402.71875 626.1953125 c 5 - 361.442382812 626.1953125 320.166992188 626.1953125 278.890625 626.1953125 c 5xc7ec -802.40625 626.1953125 m 5 - 768.473632812 626.1953125 734.541992188 626.1953125 700.609375 626.1953125 c 5 - 700.609375 849.5546875 700.609375 1072.9140625 700.609375 1296.2734375 c 5 - 788.942382812 1296.2734375 877.276367188 1296.2734375 965.609375 1296.2734375 c 5 - 1023.1875 1296.2734375 1066.546875 1279.1640625 1095.6875 1244.9453125 c 4 - 1124.75 1210.6484375 1139.359375 1161.5859375 1139.359375 1097.5234375 c 4 - 1139.359375 1045.7265625 1129.75 1003.7734375 1110.53125 971.8203125 c 4 - 1091.3125 939.7890625 1062.5625 918.3828125 1024.125 907.4453125 c 5 - 1066.703125 813.6953125 1109.28125 719.9453125 1151.859375 626.1953125 c 5 - 1114.09863281 626.1953125 1076.33886719 626.1953125 1038.578125 626.1953125 c 5 - 999.854492188 717.392578125 961.129882812 808.590820312 922.40625 899.7890625 c 5 - 882.40625 899.7890625 842.40625 899.7890625 802.40625 899.7890625 c 5 - 802.40625 808.590820312 802.40625 717.392578125 802.40625 626.1953125 c 5 -956.9375 985.2578125 m 5 - 981.234375 985.2578125 999.671875 991.5078125 1012.171875 1003.9296875 c 4 - 1024.59375 1016.4296875 1030.84375 1036.7421875 1030.84375 1064.9453125 c 5 - 1030.84375 1085.7265625 1030.84375 1106.5078125 1030.84375 1127.2890625 c 5 - 1030.84375 1155.4921875 1024.59375 1175.8046875 1012.171875 1188.3046875 c 4 - 999.671875 1200.7265625 981.234375 1206.9765625 956.9375 1206.9765625 c 5 - 905.426757812 1206.9765625 853.916992188 1206.9765625 802.40625 1206.9765625 c 5 - 802.40625 1133.0703125 802.40625 1059.1640625 802.40625 985.2578125 c 5 - 853.916992188 985.2578125 905.426757812 985.2578125 956.9375 985.2578125 c 5 -1487.171875 614.7109375 m 4xcbcd - 1448.109375 614.7109375 1413.109375 621.2734375 1382.09375 634.3203125 c 4 - 1351 647.4453125 1324.4375 668.1484375 1302.40625 696.2734375 c 4 - 1280.296875 724.3984375 1263.34375 760.4140625 1251.46875 804.2421875 c 4 - 1239.671875 848.1484375 1233.734375 900.4140625 1233.734375 961.2734375 c 260 - 1233.734375 1022.0546875 1239.671875 1074.3203125 1251.46875 1118.2265625 c 4 - 1263.34375 1162.0546875 1280.296875 1198.0703125 1302.40625 1226.1953125 c 4 - 1324.4375 1254.3203125 1351 1275.0234375 1382.09375 1288.1484375 c 4 - 1413.109375 1301.2734375 1448.109375 1307.7578125 1487.171875 1307.7578125 c 4 - 1544.125 1307.7578125 1589.75 1295.4921875 1623.96875 1270.8046875 c 4 - 1658.1875 1246.1953125 1685.609375 1209.2421875 1706.078125 1159.9453125 c 5 - 1677.27636719 1143.95507812 1648.47363281 1127.96582031 1619.671875 1111.9765625 c 5 - 1608.109375 1149.7109375 1592.015625 1176.8984375 1571.15625 1193.5390625 c 4 - 1550.375 1210.1796875 1522.40625 1218.5390625 1487.171875 1218.5390625 c 4 - 1441.78125 1218.5390625 1406.390625 1202.8359375 1381.078125 1171.5078125 c 4 - 1355.84375 1140.1015625 1343.1875 1096.8984375 1343.1875 1041.8984375 c 5 - 1343.1875 988.122070312 1343.1875 934.345703125 1343.1875 880.5703125 c 5 - 1343.1875 825.5703125 1355.84375 782.3671875 1381.078125 750.9609375 c 4 - 1406.390625 719.6328125 1441.78125 703.9296875 1487.171875 703.9296875 c 4 - 1523.03125 703.9296875 1552.015625 712.9140625 1574.046875 730.8046875 c 4 - 1596.15625 748.7734375 1613.265625 777.5234375 1625.453125 817.2109375 c 5 - 1653.60449219 800.5703125 1681.75488281 783.9296875 1709.90625 767.2890625 c 5 - 1688.8125 718.0703125 1660.609375 680.2578125 1625.453125 654.0078125 c 4 - 1590.21875 627.7578125 1544.125 614.7109375 1487.171875 614.7109375 c 4xcbcd -1289.23339844 437.409179688 m 5 - 1289.23339844 -23.0927734375 l 5 - 1585.29882812 249.481445312 l 5 - 1585.29882812 119.305664062 l 5 - 1187.45410156 -246.97265625 l 5xd3ce - 1187.45410156 213.530273438 l 5 - 891.388671875 -59.0439453125 l 5 - 891.388671875 71.1318359375 l 5 - 1289.23339844 437.409179688 l 5 -EndSplineSet -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Back -SplineSet -0 1294.24804688 m 5 -NamedP: "2-line" - 1792 1294.24804688 l 1029 --0 -241.845703125 m 5 -NamedP: "2-line" - 1792 -241.845703125 l 1029 --0 428.232421875 m 5 -NamedP: "2-line" - 1792 428.232421875 l 1029 -0 624.169921875 m 5 -NamedP: "2-line" - 1792 624.169921875 l 1029 -EndSplineSet -UndoRedoHistory -Layer: 1 -Undoes -UndoOperation -Index: 0 -Type: 1 -WasModified: 0 -WasOrder2: 0 -Layer: 1 -Width: 1792 -VWidth: 1792 -LBearingChange: 0 -UnicodeEnc: 0 -InstructionsLength: 0 -EndUndoOperation -EndUndoes -Redoes -EndRedoes -EndUndoRedoHistory -Fore -SplineSet -418.234375 -253.330078125 m 0xe3dc - 346.59375 -253.330078125 292.6875 -231.298828125 256.515625 -187.158203125 c 0 - 220.34375 -142.939453125 202.296875 -78.642578125 202.296875 5.810546875 c 0 - 202.296875 46.123046875 207.375 86.435546875 217.609375 126.826171875 c 0 - 227.84375 167.138671875 242.609375 205.654296875 261.75 242.451171875 c 0 - 280.96875 279.248046875 303.859375 313.701171875 330.421875 345.654296875 c 0 - 356.984375 377.685546875 386.59375 405.185546875 419.25 428.232421875 c 1 - 465.004882812 428.232421875 510.760742188 428.232421875 556.515625 428.232421875 c 1 - 517.453125 398.154296875 483.859375 369.482421875 455.734375 342.294921875 c 0 - 427.53125 315.107421875 403.703125 288.076171875 384.171875 261.201171875 c 0 - 364.640625 234.326171875 348.859375 206.669921875 336.671875 178.154296875 c 0 - 324.484375 149.638671875 315.1875 118.779296875 308.859375 85.498046875 c 1 - 313 85.498046875 317.140625 85.498046875 321.28125 85.498046875 c 1 - 332.21875 116.201171875 349.484375 139.716796875 373.15625 156.044921875 c 0 - 396.828125 172.373046875 424.953125 180.576171875 457.609375 180.576171875 c 0 - 511.984375 180.576171875 555.03125 162.919921875 586.75 127.763671875 c 0 - 618.390625 92.529296875 634.25 40.732421875 634.25 -27.783203125 c 0 - 634.25 -98.798828125 615.890625 -154.189453125 579.09375 -193.876953125 c 0 - 542.296875 -233.564453125 488.625 -253.330078125 418.234375 -253.330078125 c 0xe3dc -418.234375 -167.939453125 m 256 - 490.578125 -167.939453125 526.75 -128.251953125 526.75 -48.876953125 c 1 - 526.75 -40.5703125 526.75 -32.2626953125 526.75 -23.955078125 c 1 - 526.75 55.419921875 490.578125 95.107421875 418.234375 95.107421875 c 256 - 345.96875 95.107421875 309.796875 55.419921875 309.796875 -23.955078125 c 1 - 309.796875 -32.2626953125 309.796875 -40.5703125 309.796875 -48.876953125 c 1 - 309.796875 -128.251953125 345.96875 -167.939453125 418.234375 -167.939453125 c 256 -278.890625 624.169921875 m 1xc7ec - 213.291992188 847.529296875 147.692382812 1070.88867188 82.09375 1294.24804688 c 1 - 117.614257812 1294.24804688 153.135742188 1294.24804688 188.65625 1294.24804688 c 1 - 228.317382812 1153.77929688 267.979492188 1013.31054688 307.640625 872.841796875 c 1 - 316.9375 820.6796875 326.234375 768.518554688 335.53125 716.357421875 c 1 - 339.671875 716.357421875 343.8125 716.357421875 347.953125 716.357421875 c 1 - 357.25 768.518554688 366.546875 820.6796875 375.84375 872.841796875 c 1 - 415.192382812 1013.31054688 454.541992188 1153.77929688 493.890625 1294.24804688 c 1 - 528.786132812 1294.24804688 563.682617188 1294.24804688 598.578125 1294.24804688 c 1 - 533.291992188 1070.88867188 468.004882812 847.529296875 402.71875 624.169921875 c 1 - 361.442382812 624.169921875 320.166992188 624.169921875 278.890625 624.169921875 c 1xc7ec -802.40625 624.169921875 m 1 - 768.473632812 624.169921875 734.541992188 624.169921875 700.609375 624.169921875 c 1 - 700.609375 847.529296875 700.609375 1070.88867188 700.609375 1294.24804688 c 1 - 788.942382812 1294.24804688 877.276367188 1294.24804688 965.609375 1294.24804688 c 1 - 1023.1875 1294.24804688 1066.546875 1277.13867188 1095.6875 1242.91992188 c 0 - 1124.75 1208.62304688 1139.359375 1159.56054688 1139.359375 1095.49804688 c 0 - 1139.359375 1043.70117188 1129.75 1001.74804688 1110.53125 969.794921875 c 0 - 1091.3125 937.763671875 1062.5625 916.357421875 1024.125 905.419921875 c 1 - 1066.703125 811.669921875 1109.28125 717.919921875 1151.859375 624.169921875 c 1 - 1114.09863281 624.169921875 1076.33886719 624.169921875 1038.578125 624.169921875 c 1 - 999.854492188 715.3671875 961.129882812 806.565429688 922.40625 897.763671875 c 1 - 882.40625 897.763671875 842.40625 897.763671875 802.40625 897.763671875 c 1 - 802.40625 806.565429688 802.40625 715.3671875 802.40625 624.169921875 c 1 -956.9375 983.232421875 m 1 - 981.234375 983.232421875 999.671875 989.482421875 1012.171875 1001.90429688 c 0 - 1024.59375 1014.40429688 1030.84375 1034.71679688 1030.84375 1062.91992188 c 1 - 1030.84375 1083.70117188 1030.84375 1104.48242188 1030.84375 1125.26367188 c 1 - 1030.84375 1153.46679688 1024.59375 1173.77929688 1012.171875 1186.27929688 c 0 - 999.671875 1198.70117188 981.234375 1204.95117188 956.9375 1204.95117188 c 1 - 905.426757812 1204.95117188 853.916992188 1204.95117188 802.40625 1204.95117188 c 1 - 802.40625 1131.04492188 802.40625 1057.13867188 802.40625 983.232421875 c 1 - 853.916992188 983.232421875 905.426757812 983.232421875 956.9375 983.232421875 c 1 -1487.171875 612.685546875 m 0xcbcd - 1448.109375 612.685546875 1413.109375 619.248046875 1382.09375 632.294921875 c 0 - 1351 645.419921875 1324.4375 666.123046875 1302.40625 694.248046875 c 0 - 1280.296875 722.373046875 1263.34375 758.388671875 1251.46875 802.216796875 c 0 - 1239.671875 846.123046875 1233.734375 898.388671875 1233.734375 959.248046875 c 256 - 1233.734375 1020.02929688 1239.671875 1072.29492188 1251.46875 1116.20117188 c 0 - 1263.34375 1160.02929688 1280.296875 1196.04492188 1302.40625 1224.16992188 c 0 - 1324.4375 1252.29492188 1351 1272.99804688 1382.09375 1286.12304688 c 0 - 1413.109375 1299.24804688 1448.109375 1305.73242188 1487.171875 1305.73242188 c 0 - 1544.125 1305.73242188 1589.75 1293.46679688 1623.96875 1268.77929688 c 0 - 1658.1875 1244.16992188 1685.609375 1207.21679688 1706.078125 1157.91992188 c 1 - 1677.27636719 1141.9296875 1648.47363281 1125.94042969 1619.671875 1109.95117188 c 1 - 1608.109375 1147.68554688 1592.015625 1174.87304688 1571.15625 1191.51367188 c 0 - 1550.375 1208.15429688 1522.40625 1216.51367188 1487.171875 1216.51367188 c 0 - 1441.78125 1216.51367188 1406.390625 1200.81054688 1381.078125 1169.48242188 c 0 - 1355.84375 1138.07617188 1343.1875 1094.87304688 1343.1875 1039.87304688 c 1 - 1343.1875 986.096679688 1343.1875 932.3203125 1343.1875 878.544921875 c 1 - 1343.1875 823.544921875 1355.84375 780.341796875 1381.078125 748.935546875 c 0 - 1406.390625 717.607421875 1441.78125 701.904296875 1487.171875 701.904296875 c 0 - 1523.03125 701.904296875 1552.015625 710.888671875 1574.046875 728.779296875 c 0 - 1596.15625 746.748046875 1613.265625 775.498046875 1625.453125 815.185546875 c 1 - 1653.60449219 798.544921875 1681.75488281 781.904296875 1709.90625 765.263671875 c 1 - 1688.8125 716.044921875 1660.609375 678.232421875 1625.453125 651.982421875 c 0 - 1590.21875 625.732421875 1544.125 612.685546875 1487.171875 612.685546875 c 0xcbcd -1289.23339844 435.383789062 m 1 - 1289.23339844 -25.1181640625 l 1 - 1585.29882812 247.456054688 l 1 - 1585.29882812 117.280273438 l 1 - 1187.45410156 -248.998046875 l 1xd3ce - 1187.45410156 211.504882812 l 1 - 891.388671875 -61.0693359375 l 1 - 891.388671875 69.1064453125 l 1 - 1289.23339844 435.383789062 l 1 -EndSplineSet -EndChar - -StartChar: uniE136 -Encoding: 57654 57654 60 -Width: 1792 -Flags: HW -LayerCount: 2 -Fore -SplineSet -92 677 m 25 - 1700 677 l 25 - 1700 607 l 1 - 92 607 l 25 - 92 677 l 25 -EndSplineSet -EndChar - -StartChar: uniE139 -Encoding: 57657 57657 61 -Width: 1792 -Flags: HW -LayerCount: 2 -Fore -SplineSet -92 697 m 17 - 227.833184128 697 447.833007812 697 576 697 c 9 - 506 587 l 1 - 92 587 l 25 - 92 697 l 17 -1298 400.009804473 m 0 - 1149.99557198 400.009804473 978.301939614 182.978627264 937.502759621 122.102053897 c 0 - 932.819590546 115.146853107 807.713428283 -69.2653328143 650.703185768 -155.298342412 c 0 - 603.151061335 -181.354301005 550.315684332 -199.990195527 494 -199.990195527 c 0 - 385.93393271 -199.990195527 277.823349205 -130.541577574 180.364460714 -33.0826890824 c 0 - 102.345482194 44.9362894375 51.571041257 120.507300119 50.4972403793 122.102053897 c 0 - 44.8389497751 130.50545578 42.009804473 140.25272789 42.009804473 150 c 0 - 42.009804473 177.625937316 64.3743280499 199.990195527 92 199.990195527 c 0 - 98.5132748071 199.990195527 119.741348857 198.335684851 133.502759621 177.897946103 c 0 - 174.208972624 117.160089048 345.939397819 -100.009804473 494 -100.009804473 c 0 - 642.004426081 -100.009804473 813.698055818 117.021366792 854.497240379 177.897946103 c 0 - 859.180361743 184.853076837 984.286541968 369.265316513 1141.29681423 455.298342412 c 0 - 1188.84893867 481.354301005 1241.68431567 499.990195527 1298 499.990195527 c 0 - 1406.06606729 499.990195527 1514.1766508 430.541577574 1611.63553929 333.082689082 c 0 - 1689.65451676 255.063711608 1740.42896045 179.492697162 1741.50275813 177.897948311 c 0 - 1747.16104973 169.494545927 1749.99019553 159.747272963 1749.99019553 150 c 0 - 1749.99019553 122.374062684 1727.62567195 100.009804473 1700 100.009804473 c 0 - 1693.4867253 100.009804473 1672.25865286 101.664314962 1658.49724187 122.102051689 c 0 - 1617.79101811 182.839923905 1446.06059764 400.009804473 1298 400.009804473 c 0 -1216 697 m 25 - 1700 697 l 25 - 1700 587 l 1 - 1286 587 l 25 - 1216 697 l 25 -790 880 m 29 - 790 630 l 5 - 640 630 l 5 - 896 390 l 5 - 1152 630 l 5 - 1002 630 l 5 - 1002 880 l 5 - 790 880 l 29 -99.5087890625 1039.79980469 m 0 - 99.5087890625 1062.69042969 104.517578125 1149.43945312 180.448242188 1149.43945312 c 0 - 204.2109375 1149.43945312 221.102539062 1139.33984375 237.377929688 1100.60253906 c 1 - 243.907226562 1104.19824219 253.744140625 1107.96289062 266.291992188 1107.96289062 c 0 - 321.188476562 1107.96289062 325.920898438 1049.36523438 328.561523438 1016.66113281 c 1 - 334.37109375 1024.6640625 348.95703125 1040.48339844 373.474609375 1040.48339844 c 0 - 419.530273438 1040.48339844 373.942418531 963.223860309 379.06572425 933.299664616 c 1 - 381.327793283 933.894620869 385.938268172 934.990195527 392 934.990195527 c 0 - 411.827714938 934.990195527 488.111328125 963.079101562 505.390625 934.30078125 c 1 - 510.904296875 936.8203125 521.263671875 941.403320312 536.791015625 941.403320312 c 0 - 546.374023438 941.403320312 555 939.602539062 563.022460938 936.067382812 c 1 - 571.788085938 960.19921875 575.23828125 985.63671875 588.708984375 1011.61816406 c 0 - 595.147460938 1028.38769531 606.12890625 1056.99023438 640.709960938 1056.99023438 c 0 - 644.639648438 1056.99023438 652.493164062 1056.53417969 660.255859375 1053.40625 c 1 - 665.560546875 1059.63671875 670.994140625 1066.29980469 676.616210938 1073.24804688 c 0 - 716.349609375 1122.35546875 770.275390625 1175.79199219 816.799804688 1175.79199219 c 0 - 823.483398438 1175.79199219 837.6015625 1174.34082031 849.3359375 1163.43359375 c 1 - 871.3828125 1189.38476562 914.88671875 1270.59179688 954.5 1270.59179688 c 0 - 979.115234375 1270.59179688 1007.45019531 1202.10742188 1020.44824219 1180.60546875 c 1 - 1070.74316406 1223.50097656 1109.04394531 1284.6953125 1131.8984375 1331.69726562 c 0 - 1133.33789062 1334.65722656 1144.61523438 1355.79199219 1173.20019531 1355.79199219 c 0 - 1179.78808594 1355.79199219 1195.2109375 1354.33398438 1207.27148438 1341.93261719 c 1 - 1212.80566406 1351.27929688 1251.60449219 1413.39257812 1305.5 1413.39257812 c 0 - 1314.7578125 1413.39257812 1339.18847656 1411.47851562 1357.54785156 1389.74609375 c 1 - 1376.390625 1408.06738281 1403.87597656 1427.79199219 1427 1427.79199219 c 0 - 1461.81835938 1427.79199219 1477.15917969 1399.11425781 1494.55371094 1366.59570312 c 1 - 1500.68164062 1367.84082031 1506.94824219 1368.48046875 1513.140625 1368.48046875 c 0 - 1582.69140625 1368.48046875 1630.35546875 1292.50292969 1666.21972656 1218.80859375 c 1 - 1684.43457031 1217.25878906 1710.13574219 1206.66503906 1710.13574219 1159.22558594 c 0 - 1710.13574219 1150.05371094 1709.23242188 1141.41796875 1709.23242188 1132.12304688 c 0 - 1709.23242188 1126.859375 1728.49121094 1084.65136719 1728.49121094 1071 c 0 - 1728.49121094 1048.89941406 1708.36328125 1031.0078125 1683.5 1031.0078125 c 0 - 1663.57324219 1031.0078125 1646.45800781 1042.546875 1640.63085938 1058.82617188 c 0 - 1619.16308594 1118.80175781 1619.16308594 1118.80175781 1619.16308594 1132.79003906 c 0 - 1619.16308594 1135.296875 1619.22851562 1137.69335938 1619.32128906 1139.984375 c 0 - 1581.66796875 1159.54785156 1561.13476562 1260.28125 1513.80664062 1287.44921875 c 1 - 1505.60253906 1283.50683594 1495.08496094 1280.22558594 1482.78222656 1280.22558594 c 0 - 1441.12597656 1280.22558594 1422.16796875 1315.4296875 1415.76855469 1327.31347656 c 1 - 1381.70898438 1291.15332031 1371.77539062 1280.60742188 1348.70019531 1280.60742188 c 0 - 1341.39257812 1280.60742188 1312.05957031 1282.828125 1295.11816406 1317.14453125 c 1 - 1275.80371094 1291.15527344 1264.27246094 1251.75878906 1239.70996094 1220.78222656 c 0 - 1236.23046875 1216.39355469 1224.37792969 1203.80761719 1202.90039062 1203.80761719 c 0 - 1192.05175781 1203.80761719 1176.265625 1207.43945312 1161.0546875 1224.14453125 c 1 - 1136.83105469 1197.91308594 1109.80566406 1174.46875 1075.62011719 1145.31933594 c 0 - 1020.37011719 1098.20800781 1030.37011719 1078.20800781 1013.09960938 1078.20800781 c 0 - 1001.24023438 1078.20800781 966.395507812 1133.32226562 943.672851562 1170.82617188 c 1 - 923.020507812 1148.97265625 905.580078125 1094.11523438 880.40625 1071.73828125 c 0 - 857.72265625 1051.57519531 846.610351562 1047.80761719 833 1047.80761719 c 0 - 823.0625 1047.80761719 804.573242188 1050.96679688 789.580078125 1071.55078125 c 1 - 752.1640625 1036.72070312 701.99609375 953.989257812 659.7109375 947.580078125 c 1 - 646.875 902.78515625 635.311523438 862.428710938 587.28515625 839.092773438 c 0 - 580.58203125 835.8359375 573.141601562 834.208007812 565.700195312 834.208007812 c 0 - 559.9765625 834.208007812 544.49609375 834.208007812 528.258789062 851.236328125 c 1 - 520.1875 845.29296875 511.651367188 839.0078125 495.5 839.0078125 c 0 - 487.866210938 839.0078125 466.161132812 841.375 445.301757812 865.78515625 c 1 - 435.313476562 852.72265625 422.349609375 846.208007812 406.400390625 846.208007812 c 0 - 372.296875 846.208007812 362.993164062 873.900390625 359.765625 883.509765625 c 1 - 343.77734375 863.122070312 324.138671875 850.01953125 300.072265625 850.01953125 c 0 - 283.0859375 850.01953125 240.138671875 856.994140625 240.138671875 927.532226562 c 0 - 240.138671875 937.625 243.504799533 948.656539087 242.41015625 961.173828125 c 0 - 241.9140625 966.846679688 197.275390625 934.881835938 196.833007812 942 c 1 - 191.255859375 939.947265625 153.922015972 933.808561782 149 937.009804473 c 0 - 84.8836733809 978.710587881 152.290039062 944.85546875 142.833007812 963 c 1 - 134.045898438 955.189453125 156.018554688 999.80859375 144.49609375 999.80859375 c 0 - 119.635742188 999.80859375 99.5087890625 1017.70019531 99.5087890625 1039.79980469 c 0 -EndSplineSet -EndChar - -StartChar: uniE137 -Encoding: 57655 57655 62 -Width: 1792 -Flags: HW -LayerCount: 2 -Fore -SplineSet -92 677 m 1 - 1064.83334229 677 1700 1412.66674805 1700 1494 c 1 - 1700 872 1700 360 1700 -219 c 1 - 1700 -111.333190918 1052.83334265 607 92 607 c 1 - 92 627 92 645.666666667 92 677 c 1 -EndSplineSet -EndChar - -StartChar: uniE138 -Encoding: 57656 57656 63 -Width: 1792 -Flags: HW -LayerCount: 2 -Fore -SplineSet -1700 677 m 1 - 727.166992188 677 92 1412.66699219 92 1494 c 1 - 92 872 92 360 92 -219 c 1 - 92 -111.333007812 739.166992188 607 1700 607 c 1 - 1700 627 1700 645.666992188 1700 677 c 1 -EndSplineSet -EndChar - -StartChar: uniE13A -Encoding: 57658 57658 64 -Width: 1792 -Flags: HW -LayerCount: 2 -Fore -SplineSet -92 677 m 25 - 1700 677 l 25 - 1700 607 l 1 - 92 607 l 25 - 92 677 l 25 -EndSplineSet -EndChar - -StartChar: uniE13B -Encoding: 57659 57659 65 -Width: 1792 -Flags: HW -LayerCount: 2 -Fore -SplineSet -92 677 m 25 - 1700 677 l 25 - 1700 607 l 1 - 92 607 l 25 - 92 677 l 25 -EndSplineSet -EndChar - -StartChar: uniE13C -Encoding: 57660 57660 66 -Width: 1792 -Flags: HW -LayerCount: 2 -Fore -SplineSet -820 349 m 25 - 820 89 l 1 - 620 89 l 1 - 896 -201 l 1 - 1172 89 l 1 - 972 89 l 1 - 972 349 l 1 - 820 349 l 25 -820 953.591796875 m 25 - 820 1213.59179688 l 1 - 620 1213.59179688 l 1 - 896 1503.59179688 l 1 - 1172 1213.59179688 l 1 - 972 1213.59179688 l 1 - 972 953.591796875 l 1 - 820 953.591796875 l 25 -1700 642.479492188 m 1 - 1644 668.879882812 l 1 - 1530 725.040039062 l 1 - 1452 720.720703125 l 1 - 1356 786.959960938 l 1 - 1281 742.3203125 l 1 - 1209 822.959960938 l 1 - 1113 733.6796875 l 1 - 1023 835.919921875 l 1 - 933 802.799804688 l 1 - 849 857.520507812 l 1 - 810 815.759765625 l 1 - 735 903.599609375 l 1 - 711 831.599609375 l 1 - 627 964.080078125 l 1 - 558 851.759765625 l 1 - 483 762.479492188 l 1 - 426 861.83984375 l 1 - 351 936.720703125 l 1 - 297 877.6796875 l 25 - 207 959.759765625 l 1 - 186 817.200195312 l 1 - 129 749.520507812 l 1 - 92 641.520507812 l 1 - 129 541.200195312 l 1 - 186 466.799804688 l 1 - 207 324.240234375 l 1 - 297 406.3203125 l 25 - 351 347.279296875 l 1 - 426 422.16015625 l 1 - 483 521.520507812 l 1 - 558 432.240234375 l 1 - 627 319.919921875 l 1 - 711 452.400390625 l 1 - 735 380.400390625 l 1 - 810 468.240234375 l 1 - 849 426.479492188 l 1 - 933 481.200195312 l 1 - 1023 448.080078125 l 1 - 1113 550.3203125 l 1 - 1209 461.040039062 l 1 - 1281 541.6796875 l 1 - 1356 497.040039062 l 1 - 1452 563.279296875 l 1 - 1530 558.959960938 l 1 - 1644 615.120117188 l 1 - 1700 642.479492188 l 1 -EndSplineSet -EndChar - -StartChar: uniE13D -Encoding: 57661 57661 67 -Width: 1792 -Flags: HW -LayerCount: 2 -Fore -SplineSet -92 677 m 25 - 1700 677 l 25 - 1700 607 l 1 - 92 607 l 25 - 92 677 l 25 -EndSplineSet -EndChar - -StartChar: uniE13E -Encoding: 57662 57662 68 -Width: 1792 -Flags: HW -LayerCount: 2 -Fore -SplineSet -92 677 m 25 - 1700 677 l 25 - 1700 607 l 1 - 92 607 l 25 - 92 677 l 25 -EndSplineSet -EndChar - -StartChar: uniE13F -Encoding: 57663 57663 69 -Width: 1792 -Flags: HW -LayerCount: 2 -Fore -SplineSet -92 677 m 25 - 1700 677 l 25 - 1700 607 l 1 - 92 607 l 25 - 92 677 l 25 -EndSplineSet -EndChar - -StartChar: uniE140 -Encoding: 57664 57664 70 -Width: 1792 -Flags: HW -LayerCount: 2 -Fore -SplineSet -1132 160 m 1 - 1132 260 l 1 - 1592 260 l 1 - 1592 160 l 1 - 1132 160 l 1 -1412 1340 m 9 - 1412 1160 l 1 - 1592 1160 l 1 - 1592 1060 l 1 - 1412 1060 l 1 - 1412 880 l 25 - 1312 880 l 25 - 1312 1060 l 1 - 1132 1060 l 1 - 1132 1160 l 1 - 1312 1160 l 1 - 1312 1340 l 17 - 1412 1340 l 9 -480 920 m 9 - 480 740 l 1 - 660 740 l 1 - 660 640 l 1 - 480 640 l 1 - 480 460 l 25 - 380 460 l 25 - 380 640 l 1 - 200 640 l 1 - 200 740 l 1 - 380 740 l 1 - 380 920 l 17 - 480 920 l 9 -941 1446 m 25 - 941 -162 l 25 - 851 -162 l 1 - 851 1446 l 25 - 941 1446 l 25 -EndSplineSet -EndChar - -StartChar: uniE141 -Encoding: 57665 57665 71 -Width: 1792 -Flags: HW -LayerCount: 2 -Fore -SplineSet -92 677 m 25 - 1700 677 l 25 - 1700 607 l 1 - 92 607 l 25 - 92 677 l 25 -EndSplineSet -EndChar -EndChars -EndSplineFont diff --git a/res/icons.ttf b/res/icons.ttf index 949887040fa4658b2a25d99f0f1fef10d8a36fa6..028b424afcdc06dd1308e590dd4a3a87247046d5 100644 GIT binary patch delta 1022 zcmY*XYfM{p6hHsVy}eMz?Sr;B`q-r{l$KK3TlxS>5k|W;6j%T&ON*|lcWX-@2nA>S zz%(ZA1Id=%xJ0vME;d(ZeU zrhWwwD_JqU{(|*J^bRKfK=o%a()5~)K{6|1YqnT9-F>U|MZ|Xzzf&k@(%ZA2U@>%+ z@aPcMaH^_%^&cpyjr4RIf}J}NdP|=!4yYX%r+P0>ks%b<`vpZ zq)kT){$bMJWtJIP1Go(`P{k%FhwmQ0(c>T?; zSZ?&$HFHvRbZBaRekv4ieg|$ z`$9Oxg+@m3Am82oVD8oV-pL71-#~srT*!w#O_rvZ-QH}?e#Z9M9j*hOpwej5sWiON z=+c|o_14aw?nqc~G>jikNw>2;n;qV&kCTQL*s1#rC`e1)m%#xNkhom0V+O~BBd42i z;O+2L-DkiAf7X2&JVlJS0@9Z`y>uqmeJ}zAoNNXvunal0Jnoc;QjzZDZ2bZRp|_?2 zxIq9fK%^jMD$BVHKOu@0evpr@E|=07k&k7{r4_`2q|9H(b^RiLks`6pxy2wQXID$P WhzHp~+9*0TJ3oEz!5aRzkhApJxO$yzObU|XpWwadC@$!2#$vXy#@ zcv7rjc`Az4La$m-BkDF((4KRcFlxC^0D&or zRkVw)i~;Td{2=9dMlI%RHL472mN=ZrUAhqew03|}8-TWM=xXVFbTPU_$?s(Q4T>~g zkwR1~N*pyTcV_p~)(G)3@xz>>sq^<C5|_fbpDS z-||k;&CdPp1G4k<$shG$Y2d!v_1L+l!C%Gi+Eq zW(%n_x{$^g*(lDEe?!VUG*{gs^|HVRB5#`!aJ(iTrW+tHSAJH9#m&H@@=#D>BE|2Q zzw*^IOP61%p$2g}o9NtyIllfo>$Q4^SN2Rh&Xbm-}U9 ox?roCE+5t$yGYz4mdzzvj-9(xmaN`@7;$24l?g+pZvQRuA2Y^|bN~PV diff --git a/src/gui/font_furicon.cpp b/src/gui/font_furicon.cpp index e149add9e..563b3fe0b 100644 --- a/src/gui/font_furicon.cpp +++ b/src/gui/font_furicon.cpp @@ -1,313 +1,320 @@ #include "fonts.h" -// File: 'icons.ttf' (28108 bytes) +// File: 'icons.ttf' (28552 bytes) // Exported using binary_to_compressed_c.cpp -const unsigned int furIcons_compressed_size = 14633; -const unsigned int furIcons_compressed_data[14636/4] = +const unsigned int furIcons_compressed_size = 14956; +const unsigned int furIcons_compressed_data[14956/4] = { - 0x0000bc57, 0x00000000, 0xcc6d0000, 0x00000400, 0x00010037, 0x000e0000, 0x00030080, 0x54464660, 0x4458a24d, 0x6d000089, 0x281582b0, 0x4544471c, - 0x00150046, 0x200f8214, 0x2b0f8394, 0x322f534f, 0x7552fa8c, 0x68010000, 0x562c0f82, 0x70616d63, 0x8dc99dcd, 0x60020000, 0xe02c1382, 0x20747663, - 0x6f043b00, 0x40040000, 0x04261f82, 0x70736167, 0x5982ffff, 0x8c6d0022, 0x08280f82, 0x66796c67, 0x3fd5de2d, 0xdc2c1f82, 0xd8630000, 0x64616568, - 0xad24a224, 0xec201b82, 0x36210382, 0x23108268, 0x05068209, 0x24204b82, 0x24280f82, 0x78746d68, 0x1c12b128, 0xc0200f82, 0x9e280f82, 0x61636f6c, - 0x50b6999c, 0x44203f82, 0x98270f82, 0x7078616d, 0x82039500, 0x4801213b, 0x202c0f82, 0x656d616e, 0x1fd1e37f, 0xb4680000, 0xe62c3382, 0x74736f70, - 0x39fe916a, 0x9c6a0000, 0xf020a382, 0x012deb84, 0xff390000, 0x0f5f2c8b, 0x0b00f53c, 0x25368207, 0xfde00000, 0x08839fff, 0xdc04e12b, 0xfe80fcc9, - 0x05000768, 0x220f82e0, 0x82020008, 0x82028305, 0x00062233, 0x290982ff, 0x80fc0007, 0x00070000, 0x0c820100, 0x0420028b, 0x4b251184, 0x0800bb03, - 0x21008300, 0x23830002, 0x40222583, 0x0b822e00, 0x072b0d82, 0x00900100, 0x04000005, 0x82e6048c, 0x85fa2011, 0x5c032b07, 0xcf015900, 0x00020000, - 0x15820905, 0x01210285, 0x84078510, 0x75462905, 0x40005472, 0x41e12000, 0x06208385, 0x04856a84, 0x3b208b84, 0x07202683, 0x03830482, 0x0280fc25, - 0x82910009, 0x0052220c, 0x2c798220, 0x003500a5, 0x0029004b, 0x006d0191, 0x349b8278, 0x00470060, 0x00170152, 0x004a000a, 0x0032018f, 0x004f001b, - 0x2631822e, 0x011801ca, 0x82a90036, 0x0028251b, 0x004d0133, 0x23829182, 0x22000338, 0x7a017c01, 0x39003900, 0xce012701, 0x4c001300, 0x22007301, - 0x0d824700, 0x85000b24, 0x0f82b500, 0x2e005b26, 0x5c004b01, 0x2a200184, 0x53200582, 0x4b260382, 0x53005e00, 0x0982c800, 0x00218882, 0x83048203, - 0x861c2003, 0x00da22b3, 0x24098403, 0x0004001c, 0x2e1b82be, 0x00080008, 0x00000002, 0xe1f4e020, 0x84ffff41, 0xe1f02609, 0xffffff00, 0x200b82e3, - 0x222b8400, 0x820e0006, 0x0004260b, 0x00060005, 0x202f8207, 0x249d8209, 0x000c000b, 0x2617820d, 0x0010000f, 0x82120011, 0x00142c9d, 0x00160015, - 0x00180017, 0x821a0019, 0x1c3808db, 0x1e001d00, 0x20001f00, 0x22002100, 0x24002300, 0x26002500, 0x28002700, 0x2a002900, 0x2c002b00, 0x2e002d00, - 0x30002f00, 0x32003100, 0x34003300, 0x36003500, 0x38003700, 0x2008f182, 0x003b003a, 0x003d003c, 0x003f003e, 0x00410040, 0x00430042, 0x00450044, - 0x00470046, 0x00490048, 0x2098824a, 0x829c8506, 0x01002299, 0x21058202, 0x008d0002, 0x84000121, 0x40148dfc, 0x3b22ce0d, 0xd1826f04, 0x85002c21, - 0x3caf0801, 0xc6008400, 0x24056404, 0xd406c405, 0xea075807, 0x3409ce08, 0xb00a7609, 0x880bfe0a, 0x2e0cee0b, 0x6a0de60c, 0x640ed80d, 0xa40fca0e, + 0x0000bc57, 0x00000000, 0x886f0000, 0x00000400, 0x00010037, 0x000e0000, 0x00030080, 0x54464660, 0xc9e6a14d, 0x6f0000a6, 0x2815826c, 0x4544471c, + 0x00150046, 0x200f8214, 0x2b0f8350, 0x322f534f, 0x7652fa8c, 0x68010000, 0x562c0f82, 0x70616d63, 0xe8cf92c7, 0x60020000, 0xe22c1382, 0x20747663, + 0x6f043b00, 0x44040000, 0x04261f82, 0x70736167, 0x5982ffff, 0x486f0022, 0x08280f82, 0x66796c67, 0xfb1da4d3, 0xe42c1f82, 0x74650000, 0x64616568, + 0xb946af24, 0xec201b82, 0x36210382, 0x23108268, 0x05068209, 0x24204b82, 0x24280f82, 0x78746d68, 0x7113b128, 0xc0200f82, 0xa0270f82, 0x61636f6c, + 0x82b653cf, 0x8304208b, 0x6d9a274f, 0x00707861, 0x3b820396, 0x0f830120, 0x616e202c, 0x877b656d, 0x000088bc, 0x3382586a, 0x6f70f22c, 0x5ca17473, + 0x0000e2b7, 0xa3824c6c, 0xeb84fa20, 0x0000012d, 0x8c470031, 0xf53c0f5f, 0x82070b00, 0x00002556, 0x9ffffde0, 0xe12b0883, 0xfcd5fe11, 0x0768fe80, + 0x82e00500, 0x0008220f, 0x83058202, 0x22338202, 0x82ff0006, 0x00072909, 0x000080fc, 0x01000007, 0x028b0c82, 0x11840420, 0xbb034c25, 0x83000800, + 0x00022100, 0x25832383, 0x2e004022, 0x0d820b82, 0x0100072b, 0x00050090, 0x048c0400, 0x201182e6, 0x2b0785fa, 0x59005c03, 0x0000cf01, 0x09050002, + 0x02851582, 0x85100121, 0x29058407, 0x54727546, 0x20004000, 0x838542e1, 0x6a840620, 0x8b840485, 0x26833b20, 0x04820720, 0xfc250383, 0x00090280, + 0x220c8291, 0x82200052, 0x00a52c79, 0x004b0035, 0x01910029, 0x8278006d, 0x0060349b, 0x01520047, 0x000a0017, 0x018f004a, 0x001b0032, 0x822e004f, + 0x01ca2631, 0x00360118, 0x251b82a9, 0x01330028, 0x9182004d, 0x03382382, 0x7c012200, 0x39007a01, 0x27013900, 0x1300ce01, 0x73014c00, 0x47002200, + 0x0b240d82, 0xb5008500, 0x5b260f82, 0x4b012e00, 0x01825c00, 0x2a005b22, 0x53200582, 0x4b2a0382, 0x53005e00, 0x5c00c800, 0x89825601, 0x03860320, + 0xb3861c20, 0x0300dc22, 0x1c240984, 0xc0000400, 0x082e1b82, 0x02000800, 0x20000000, 0x42e1f4e0, 0x0984ffff, 0x00e1f026, 0xe3ffffff, 0x00200b82, + 0x06222b84, 0x0b820e00, 0x05000426, 0x07000600, 0x09202f82, 0x0b249d82, 0x0d000c00, 0x0f261782, 0x11001000, 0x9d821200, 0x1500142c, 0x17001600, + 0x19001800, 0xdb821a00, 0x1d001c3a, 0x1f001e00, 0x21002000, 0x23002200, 0x25002400, 0x27002600, 0x29002800, 0x2b3aab82, 0x2d002c00, 0x2f002e00, + 0x31003000, 0x33003200, 0x35003400, 0x37003600, 0xf1823800, 0x003a2208, 0x003c003b, 0x003e003d, 0x0040003f, 0x00420041, 0x00440043, 0x00460045, + 0x00480047, 0x004a0049, 0x209a824b, 0x829e8506, 0x0100229b, 0x21058202, 0x008d0002, 0x82000121, 0x40128dec, 0x3b22d20d, 0xd5826f04, 0x85002c21, + 0x3c8e0801, 0xc6008400, 0x24056404, 0xd406c405, 0xea075807, 0x3409ce08, 0xb00a7609, 0x880bfe0a, 0x2e0cee0b, 0x6a0de60c, 0x640ed80d, 0xa40fca0e, 0xbc105a10, 0xc6117e11, 0x0c139212, 0xd8138c13, 0x48159814, 0x12173816, 0x1e1b8017, 0x341cae1b, 0xea1dc01c, 0xbc1f081f, 0x34218020, 0xfc218a21, 0xc8238622, 0xca272a27, 0x5229b028, 0x0a2ac629, 0xa42bbe2a, 0x162ef42b, 0x682e442e, 0xf02f8e2e, 0x6a300c30, 0x1e31d230, 0xac315631, 0xec31de31, - 0x3b000200, 0x15020000, 0x0300aa04, 0x2e000700, 0x2f0001b1, 0x0407b23c, 0xb132ed00, 0x3cdc0506, 0x820203b2, 0xb100220a, 0x20168303, 0x27168305, - 0x010607b2, 0x01b23cfc, 0x33371783, 0x25112111, 0x3b211121, 0x61feda01, 0x9cfe6401, 0x56fbaa04, 0x8234043b, 0xfc0226ed, 0x03f5ff80, 0x20098280, - 0x2e598201, 0x25210500, 0x0533fd21, 0x07b3f99a, 0x820b0b00, 0x03250815, 0x0f000902, 0xfd03f704, 0x25001b00, 0x00002f00, 0x32213001, 0x0e141516, - 0x07060701, 0x16171615, 0x15011e17, 0x2f0b8214, 0x2123010e, 0x36322137, 0x2634013d, 0x33352123, 0x4d080985, 0x0a02012b, 0x8e7dbd01, 0x2020311f, - 0x25251e1e, 0x132b1f20, 0x5f232214, 0xa217fe38, 0x483f1801, 0xe8fe3f48, 0x42423dfc, 0xfd03fc3d, 0x4f38778d, 0x030c0d32, 0x0d0d0208, 0x3f581c1c, - 0x2735363c, 0x428b2c27, 0x423e313e, 0x2e393e88, 0x8f833e3a, 0x91003008, 0x6f066300, 0x0f00a903, 0x2b001700, 0x30250000, 0x30213027, 0x36233007, - 0x16333712, 0x30011712, 0x30070623, 0x30012633, 0x30270011, 0x85133033, 0x02062f03, 0x02301107, 0xc7fe4cea, 0xbf2f8a49, 0x0382ab2f, 0x8dfe3408, - 0xf73d3c06, 0xfe84023c, 0xcc9b17f7, 0x3794cb04, 0xe3631dce, 0x2e028ce3, 0xd2fd8c8c, 0xb9c9028c, 0xf0fdb9b9, 0xd4014a01, 0x018bfe28, 0x9afe6175, - 0x82b3fe32, 0x03002182, 0xab3a0482, 0x61030007, 0x8c035803, 0x0000ba03, 0x27022637, 0x021d3033, 0x17041d17, 0x0290031d, 0x11a31491, 0x26f14782, - 0x86957191, 0x17011e26, 0x37013e33, 0x86067341, 0x033d220d, 0x20028937, 0x850b8a04, 0x8211a317, 0x9126f129, 0x2e86a171, 0x07020633, 0x27022623, - 0x2327012e, 0x8207010e, 0x22052d0d, 0x013e2726, 0x33011e37, 0x26343532, 0x26291883, 0x34352627, 0x16323336, 0x2b218217, 0x2223012e, 0x17141506, - 0x011e1716, 0x15230285, 0x82250614, 0x2223223b, 0x26288227, 0x37342627, 0x823e3736, 0x2021823c, 0x352c8407, 0x1614011d, 0x3e373233, 0x23013d02, - 0x23113335, 0x185e188e, 0x00cc0168, 0x040e0434, 0x030e040c, 0x7b0e390e, 0x030e390f, 0x030d030f, 0x61cc040e, 0x18640127, 0x0e7a1962, 0x205c833a, - 0x3b5c820c, 0x020f3c0f, 0x276e4bf0, 0x1d0c2f0b, 0x2a77314d, 0x0a240934, 0x702a2b5a, 0x24634865, 0x3c081382, 0x3731401a, 0x31161637, 0x30092409, - 0x13161544, 0x0c430274, 0x34484f09, 0x20212b2c, 0x12121213, 0x3d5f2222, 0x1e38375a, 0x3c461153, 0x48505048, 0x271a1a1e, 0x5adf7c16, 0xbe0170b7, - 0x10b8cd70, 0x47014d00, 0x19681a2d, 0x44196719, 0x44441001, 0x8244f0fe, 0x6819220a, 0x5b01101a, 0x47414701, 0x70af084d, 0x457042fe, 0x1a451301, - 0x67191967, 0xedfe451a, 0x36380b45, 0x290b2a0b, 0x2f2c6d2c, 0x0207020d, 0x512d2c15, 0x3431615c, 0x250b290a, 0x2a342d24, 0x020c1516, 0x1f0b0208, - 0x293f1717, 0x306e6865, 0x2a13133e, 0xb8424229, 0x2a2a4242, 0x47262728, 0x5c393131, 0x5c52a452, 0x31210908, 0xfe573b1e, 0x0700009e, 0x02ff5200, - 0x1a05ae06, 0x24001a00, 0x49003800, 0x78005300, 0x00008000, 0x35262205, 0x023e3734, 0x07063337, 0x010e0706, 0x013e3307, 0x15163233, 0x32270614, - 0x2334013d, 0x14011d22, 0x27022603, 0x17121633, 0x36331716, 0x82123637, 0x0702272a, 0x21112321, 0x27831732, 0x23130727, 0x2327012e, 0x07794837, - 0x22011527, 0x012e2726, 0x222a8234, 0x82333637, 0x06172123, 0x080b5845, 0x1e373698, 0x010e1701, 0x15011105, 0x35011101, 0x6d6ba201, 0x4f3a0f10, - 0x2a3b8a31, 0x251d1e2a, 0x47110c09, 0x6e5f5131, 0x6c6d6d6a, 0x2183211f, 0x1450136b, 0x0e0c0e0e, 0x144e140e, 0x20832169, 0x01658f01, 0x2b2c5609, - 0x71803a39, 0x78175608, 0x2626249b, 0xad029b24, 0x21225d3a, 0x22212323, 0x563b2e2e, 0x0d1f3333, 0x353e1249, 0x444c4c44, 0x0f124236, 0x69200e38, - 0x2801e4fe, 0xd8fe72fe, 0x3c7f84fd, 0x606f3c3d, 0x28292d22, 0x32562829, 0x676a312f, 0x7755776a, 0x02827719, 0x18035608, 0x6fbf0170, 0x46e7fe46, - 0x4e4f4f4e, 0x46190146, 0x7041fe6f, 0x34339e02, 0x11604d60, 0xc913e7fe, 0x2a265536, 0xde262a3e, 0x2a278efe, 0x84b6842a, 0x14142a2a, 0x074a2525, - 0x5f323929, 0x5e53a152, 0x21083b36, 0xb24e4a09, 0x100134fe, 0x0192fe82, 0x82effecd, 0x3f008200, 0x00200004, 0x03e006ab, 0x000b0061, 0x004a0015, - 0x37000074, 0x21301130, 0x06141632, 0x0119012b, 0x2008b749, 0x05ce4601, 0x16171622, 0xd0461282, 0x012e2806, 0x023e3435, 0x46173233, 0x072c08d1, - 0x16141506, 0x011e011f, 0x020e1415, 0x2105cd46, 0x2485022e, 0x46171621, 0x36230cc6, 0x46013e37, 0xd10806c8, 0x5d200121, 0xb45d6666, 0x2f2e2aad, - 0xdd02ad29, 0x0c2a7655, 0x2b230d32, 0x4141362b, 0x270a3b2e, 0x2162620a, 0x4c36563d, 0x0d283738, 0x4b1a0d32, 0x20203938, 0x643c3734, 0x5a3f205d, - 0x0a04dd02, 0x663c4c5e, 0x4d2a294a, 0x7d5a426c, 0x51135923, 0x6161503d, 0x1d1c2050, 0x8a191616, 0x02b75ff3, 0x6db96d9e, 0x6a01f5fe, 0x292e282b, - 0x3db6fd2b, 0x0c2f0b34, 0x3a17162b, 0x0c2e2731, 0x12020702, 0x482c515c, 0x1a1b1b31, 0x0b2d0b32, 0x18172921, 0x0b292a2c, 0x505d130c, 0x1d374d2f, - 0x2d403171, 0x54548257, 0x502e5881, 0x3b2f3447, 0x5d6e5d66, 0x10080966, 0x34202f0f, 0x009bfe5d, 0x002e0005, 0x03d206ab, 0x00120061, 0x002a001f, - 0x00460134, 0x68422500, 0x013e2807, 0x14021e32, 0x4227020e, 0x222a0583, 0x14011d06, 0x21110516, 0x5e411732, 0x2e052c0f, 0x1d232701, 0x0f1d1707, - 0x870e1d17, 0x820b8502, 0x11013305, 0x16331123, 0x011e1712, 0x053d3317, 0x270f3d27, 0x02870e3d, 0x042d0b88, 0x23113311, 0x33010226, 0x2223603c, - 0x3a028223, 0x44607a5f, 0x61442323, 0x4f4f483c, 0x014f4f90, 0x560901df, 0x56572b2c, 0x82259aa3, 0x029a2600, 0x09220863, 0x0732440c, 0x21756228, - 0x23082285, 0x10880d08, 0x85217623, 0x074c42ac, 0x5428282d, 0x5484b684, 0x525d5a27, 0x845d52a2, 0x024f3304, 0xc134339e, 0x01f1fe67, 0x3d2a2569, - 0x15b22629, 0x7f441553, 0x284dae4d, 0x0270fe02, 0xf4fe439e, 0x80884043, 0xfd900126, 0x0c014362, 0x3a055f43, 0x065400a5, 0x00b8035b, 0x0048002f, - 0x005e0054, 0x23302500, 0x2223010e, 0x4435022e, 0x3e43078a, 0x49062008, 0x362106e3, 0x35018237, 0x3523013d, 0x01231121, 0x15163221, 0x0e070614, - 0x1e150701, 0x0b821702, 0x020e0730, 0x33372123, 0x3d363732, 0x26273401, 0x5d4d012b, 0xe541080a, 0x60740e04, 0x345c804a, 0x43303035, 0x9c715343, - 0x124a122b, 0x634d6518, 0x28637979, 0x1b1b2424, 0x01ac1010, 0x0601772f, 0x77697201, 0x3415141b, 0x353d1a1a, 0x10111311, 0xfe2f4f39, 0x35e98768, - 0x0800821e, 0xd2e9356a, 0x33373733, 0x503de2d2, 0x6aa26d38, 0x3738a268, 0x59631c1c, 0x3b0b2b0b, 0x88757f49, 0x0b0a7f75, 0x1e1d1413, 0xfe754127, - 0x76460341, 0x15422f62, 0x07031415, 0x242f1601, 0x2c323525, 0x7525412d, 0x29331c1b, 0x711c1b34, 0x30273033, 0x00000033, 0x00350005, 0x03cb06ab, - 0x001f0061, 0x00530046, 0x00660060, 0x26222500, 0x2c131b44, 0x011e3736, 0x06070617, 0x012e2221, 0x23218227, 0x013e3736, 0x82050646, 0x32072a14, - 0x033e1716, 0x021e3233, 0x10584315, 0x2135a808, 0x37123635, 0x15331133, 0x33251523, 0x010e2311, 0x96834e01, 0x41694926, 0x5b217658, 0x4d3b4811, - 0x3d4d5959, 0x3a0f124c, 0x3c3d210e, 0x5738fc01, 0x2c10113c, 0x29552323, 0x2d2d3990, 0x16172221, 0x0104020d, 0x30251c0b, 0x35482a20, 0x573e211d, - 0x41413b35, 0x02424275, 0x2dc9fea1, 0x5b8e2eb5, 0xdbbefe5b, 0xac8e2307, 0x8154a9b1, 0x4b4d2e58, 0x6a393032, 0x6a5d665d, 0x2309313f, 0x29294909, - 0x30304424, 0x3680493d, 0x291c5336, 0x29282627, 0x01362d2d, 0x1b231501, 0x4d371c0f, 0x3c53332f, 0x3d3e5821, 0x843e3d0d, 0x4d2f0804, 0x014a5d83, - 0x3afe4a2a, 0x01d88355, 0x00ed3b63, 0xff4b0008, 0x05b50608, 0x000c0015, 0x001c0016, 0x005c0028, 0x00720068, 0x1700009b, 0x44301130, 0x01211235, - 0x23ec8311, 0x15211133, 0xa6450187, 0x2d754c06, 0x2406b44c, 0x13331323, 0x2a0b8503, 0x2533010f, 0x2337013e, 0x8207010e, 0x82138202, 0x1e232702, - 0x23111701, 0xaf4c3311, 0x82332005, 0x2902821e, 0xb0231133, 0x2c560901, 0x5644582c, 0xca013007, 0x0186f466, 0x01e1fe85, 0x01fdfe03, 0x4be7fa1f, - 0x25210cdd, 0x07dd4b09, 0x0c2e0c22, 0x0811dd4b, 0x22093830, 0x2309e109, 0x81c96408, 0x0e04f1ca, 0x0e030d03, 0x02b03b04, 0x010402d0, 0x071f080b, - 0x15165716, 0x1f081557, 0x05010b08, 0x12786201, 0x0b821248, 0x03820920, 0x47125408, 0xf8627712, 0x33349f02, 0xf1fe67c2, 0x29266901, 0xfd25293e, - 0xfd9f02bc, 0x9f025abb, 0xcf58c45a, 0x3957035a, 0x0b2b0b35, 0x2c6e2c2a, 0x08020c2f, 0x2c2d1402, 0x31605d51, 0x0a290a34, 0x342d2524, 0x0b16162a, - 0x0a030802, 0x3f171720, 0x0b696429, 0x821f7c1f, 0x33408202, 0x11e00161, 0x41101041, 0x1390d311, 0x4b13144c, 0x2db62d13, 0x13220282, 0x0b821349, - 0x0263fe29, 0x279d279f, 0x82165816, 0x2c088202, 0x000061fd, 0x29000400, 0xd706ab00, 0x05534703, 0x46003a22, 0x471a5347, 0x1d261140, 0x16171401, - 0x04433233, 0x41252007, 0x21080adc, 0x5e200129, 0xb35d6665, 0x2e2e29ad, 0x0f03ad29, 0x49269584, 0x3b574169, 0x3d0f223b, 0x3b48110f, 0x00822c4e, - 0x4c3c4e35, 0x0f3a0e13, 0x013d3c22, 0xfeae012d, 0xfe2301bf, 0x474101dd, 0xb1341005, 0x598154a9, 0x4b26272d, 0x30082208, 0x5d353539, 0x35355d66, - 0x2a07c642, 0x609e020b, 0x60c460ba, 0x51030000, 0x082e825f, 0x02ff6d01, 0x1a059305, 0x55004400, 0x91826d00, 0xab009e29, 0xe300d500, 0x47250000, - 0x232c0558, 0x2e070622, 0x37362701, 0x3637013e, 0x22051b44, 0x52020e07, 0x0621098f, 0x2a018207, 0x022e2223, 0x17163727, 0x481e1716, 0x352109d6, - 0x06644401, 0x023e3737, 0x10163233, 0x3e322706, 0x34013d02, 0x0e22022e, 0x1d060701, 0x05a14f01, 0x02252582, 0x37363435, 0x05f24835, 0x42823220, - 0x2405634a, 0x15011e15, 0x476b8214, 0x13200ce1, 0x200bee47, 0x211e8325, 0x99822307, 0x22230282, 0x82062726, 0x2223232d, 0x4f822e27, 0xb0833720, - 0x4c853320, 0xc9880720, 0x55087382, 0x3e4b0216, 0x30313a3c, 0x300c1743, 0x14130f0c, 0x2b202133, 0x213a502f, 0x2f240a0a, 0x1a191d1a, 0x22161313, - 0x2c2d1f1f, 0x36472f36, 0x0c500f2a, 0x11120e0e, 0x413e1c2e, 0x02473f45, 0x3c5c3e98, 0x0e0f0f0e, 0x7d3e5c3c, 0x237d7676, 0x0e0e1e31, 0x3145311e, - 0x0082071f, 0x100fb308, 0x3bf8fd31, 0x4a1f3d59, 0x1e3e343c, 0x29685337, 0x0f0f3829, 0x4a3d343f, 0x5a3c1010, 0x42423c3a, 0x3d424279, 0x6f3b3b37, - 0x52033a3a, 0x56451616, 0x5b389029, 0x0d2d2122, 0x0a010501, 0x30260e0e, 0x24242a20, 0x11101d35, 0x36561f1f, 0x3c2c2b38, 0x3bec1011, 0x3b3a4241, - 0x35994141, 0x312e0729, 0x2a0a262c, 0x1415160a, 0x17090a1d, 0x2028412d, 0x1928191a, 0x0d060406, 0x3914150d, 0x1a482c25, 0x140e0e19, 0x3e172c21, - 0x0c111114, 0x343a0d0c, 0x5c363407, 0x582f6afe, 0x52534040, 0x2f594041, 0xb6b8feb7, 0x49331c5c, 0x482c752c, 0x341c1c34, 0x09822424, 0x23252e08, - 0x031c1a1a, 0x47341d06, 0x1151432a, 0x3a4e1307, 0x192d4026, 0x202d0c0d, 0x4e3a2620, 0x51110713, 0x24232a43, 0x38571d34, 0x37321332, 0x27048237, - 0x303a0138, 0x302e102e, 0x2a080484, 0x4041491f, 0x291b556b, 0x5a28284e, 0x14010136, 0x0f1b1212, 0x4c360f0e, 0x2b2a3230, 0x12221e1d, 0x30304413, - 0x0e3c3f93, 0x823e3e3c, 0x003f2104, 0x04370082, 0xb7007800, 0x56038806, 0x27000f00, 0x40003700, 0x30010000, 0x84233011, 0x30352a03, 0x30153021, - 0x30353013, 0x830f8a33, 0x8233201b, 0x30212217, 0x54278227, 0x0e3c0c81, 0x2e330701, 0x6cac0101, 0x53fc01c8, 0x24015b5b, 0x2b025c5c, 0x6f3afb3c, - 0x88269926, 0x43080382, 0x1005d7fe, 0x10c61041, 0xfdf50240, 0x603e02c2, 0x58c2fd60, 0x5858ee01, 0xb55812fe, 0xbe0170b5, 0x42fe7070, 0x313a0270, - 0xc53131c5, 0x00050000, 0x06ab0008, 0x006103f8, 0x003e0034, 0x00500046, 0x37000058, 0x2a329f4b, 0x23072327, 0x12163313, 0x86230117, 0x081190a1, - 0x7655fd42, 0x0d310d2a, 0x372b2b23, 0x3a2e4140, 0x620a280a, 0x563c2262, 0x38384c36, 0x0d320d27, 0x3a374b1a, 0x36341f20, 0x215d653c, 0xd0025a3e, - 0x6e3bfa3d, 0x982689e4, 0x04d7fe26, 0xc5104011, 0x28034010, 0xac201391, 0x242c824b, 0x02b5b50b, 0x0a00419e, 0x8ef7fd21, 0x82002010, 0x00033400, - 0x06ab0060, 0x006103a0, 0x002b0015, 0x2500004b, 0x46300330, 0x06240eaa, 0x35210702, 0x2013b141, 0x1d874805, 0xdb3c012d, 0x12471270, 0x040b2b0a, - 0x820b2b0b, 0x256d2509, 0x4b012595, 0x2605c741, 0x96838401, 0x48684a26, 0xb7281461, 0xdd379e02, 0x279b2737, 0x08820282, 0xd641c383, 0x480b2007, - 0xcb821741, 0x4700042a, 0xb906b700, 0x0b005603, 0x2122cd82, 0x3f462900, 0x0a1b4618, 0x23110128, 0x21352311, 0x4c4d4815, 0x2e292807, 0x02ad292e, - 0x46ad0114, 0x01250702, 0x01c86c7b, 0x0f0846fc, 0xea45c120, 0x3e022106, 0x82057942, 0x4f06207f, 0x1e340893, 0x3d002700, 0x58004e00, 0x00007e00, - 0x26272205, 0x36373435, 0x30250184, 0x07020e33, 0x05944f06, 0x954f1720, 0x1d222408, 0x4f011401, 0x12560694, 0x4f06200a, 0x0e212d96, 0x12974f01, - 0x6b7a033f, 0x0f103736, 0x28271d1d, 0x553b8a31, 0x0a12123a, 0x3147110c, 0x6e2f3051, 0xfed96d6a, 0x06924f09, 0x05130426, 0x0512050c, 0x2212944f, - 0x4f144d14, 0x0e221794, 0x954f0e3a, 0x42fd350e, 0x3d3c7f42, 0x3038363d, 0x522d232f, 0x332a2b50, 0x3535312f, 0x2213904f, 0x821a691a, 0x11924f02, - 0x2eb62e22, 0x2215924f, 0x4f082008, 0x003c0d93, 0xff170106, 0x05e90508, 0x000b0015, 0x002d0017, 0x0055004b, 0x0500005f, 0x33301130, 0x21220382, - 0x07841530, 0xc6500b87, 0x34353305, 0x013e3736, 0x1e171632, 0x07061401, 0x3227010e, 0x01823736, 0x34013d2b, 0x2e272627, 0x06222301, 0x46018207, - 0x052107bf, 0x12d14f11, 0x016ccc24, 0x03826311, 0x10fd2208, 0x26266a42, 0x26262929, 0x256b836a, 0x262a2a26, 0x26416b25, 0x0d161740, 0x160d0c0c, - 0x28264017, 0x220b873f, 0x48f4013f, 0xf8250c83, 0xc1fd9f02, 0x2b048460, 0x2c2d5703, 0x5455822b, 0x2d2c2b82, 0xa9200983, 0x612d0883, 0x2519191b, - 0x2e692e25, 0x19192525, 0x2f0c8c1b, 0x6e9f0256, 0xf5fe6eb8, 0x282c6a01, 0x002c282e, 0x0036f082, 0x06ab000a, 0x006103f6, 0x00300012, 0x0044003a, - 0x2500004a, 0x40502e22, 0x07494f06, 0x112fe6af, 0x15211133, 0x6a422c01, 0x4c29294c, 0x8541426a, 0x21e09b07, 0x6449665d, 0x02220808, 0x10016d13, - 0x82572dac, 0x58825454, 0x82582d2d, 0x2d5782a8, 0x191a1b60, 0x6a2e2425, 0x1925242e, 0x0c8c1b1a, 0x6d505520, 0x02c1280e, 0x60c2fd9e, 0x82040000, - 0x06ab2ccb, 0x006103b6, 0x00220013, 0x4366002d, 0x302306d3, 0x88213015, 0x30112603, 0x32333001, 0x24e88317, 0x2b060701, 0x05ba5201, 0x2b262724, - 0x4d581101, 0x077e5106, 0x27262724, 0x0282012e, 0x37343522, 0x230d8051, 0x17141506, 0x08068051, 0x07060724, 0x014a010e, 0x01cafea3, 0x01edfe13, - 0x3441edc3, 0x29294a34, 0x4134344a, 0x5c4beded, 0x804b2e2e, 0xde45dc02, 0x2a242705, 0x4140372b, 0xdf451717, 0x11112405, 0x4535563d, 0x2b0807e0, - 0x3f3a384a, 0x3c361a1a, 0x10115d65, 0xb759201f, 0xba609e02, 0x02dcfe60, 0x5415159e, 0x547da87d, 0x5e601515, 0x2f5b6c5b, 0x6b22fe2f, 0x210ad645, - 0x5a511717, 0x24242107, 0x08095b51, 0x2a2c2f29, 0x0c0b1514, 0x2f515c13, 0x1c1b2627, 0x0400001d, 0x63008f00, 0xa9037106, 0x2f001500, 0x43003900, - 0x30250000, 0x50333001, 0x535a06ec, 0x02062806, 0x32210107, 0x49141516, 0xdf840bd4, 0x37212322, 0x4f08a252, 0x012e0906, 0x8dedfea2, 0x0f165916, - 0x0f050b36, 0x09820b38, 0xb92f8937, 0x01c2012f, 0x1b776873, 0x19193429, 0x1b1a1f1e, 0x1c111024, 0x06f54e1d, 0x4e3c3c21, 0x633407f3, 0xfe454603, - 0xc53645ec, 0x25c83729, 0x45140145, 0x8cd2fd8c, 0x3605e44e, 0x0703142a, 0x170b0b01, 0x32354918, 0x21202d2c, 0x33377525, 0x4e373429, 0x013409e3, - 0x0508ff32, 0x001405ce, 0x00330026, 0x008a0078, 0x0500009b, 0x202ec44e, 0x41d14a01, 0x27012e32, 0x11231123, 0x011e1333, 0x33113317, 0x35212311, - 0x0e260482, 0x27260702, 0x10823736, 0x02153008, 0x3d573870, 0x222c1010, 0x902a5523, 0x222d2d39, 0x0c171721, 0x0a010501, 0x1f31251c, 0x1e35472b, - 0x35573d22, 0x7542423a, 0x44024141, 0x4a393b3f, 0x13210888, 0x06884a34, 0x230a0b22, 0x0807884a, 0x1f1f233c, 0x2f362c2c, 0x0f293747, 0x0e0e0d4f, - 0x1d2d1211, 0x4045413e, 0x08b2fd47, 0x68030e34, 0x340edb79, 0x79670308, 0x08bc4301, 0x123e3417, 0x56554002, 0x25f8a3a5, 0x3c303044, 0x284f8149, - 0x1447080d, 0x1d0f1b24, 0x332f4d36, 0x59223c53, 0x3c0d3d3e, 0x0d3c3f3f, 0x3d013e3d, 0x2e072935, 0x0a262b31, 0x14160a2a, 0x09091e14, 0x28402d17, - 0x271a1a20, 0x06050619, 0x15140e0c, 0x482c2538, 0x0e0e1a1a, 0x172b2115, 0x4a10153f, 0x35080659, 0x035c3633, 0x1b63104a, 0x9e0200fe, 0x631b8dfe, - 0xfd010210, 0xf5015a62, 0x13433818, 0x5d5c3a02, 0x005abcfd, 0x001b0003, 0x03e506ab, 0x00390061, 0x007f005c, 0x47492500, 0x0568430d, 0x26272622, - 0x54106943, 0x07260aea, 0x010e0706, 0x1d472221, 0x013e2305, 0xd0513233, 0x5636200f, 0x22a2055b, 0x54100127, 0x320d2a77, 0x0570490c, 0x2c069143, - 0x11113131, 0x4c36573c, 0x0c273837, 0x0b734933, 0x10112308, 0x025a1f1f, 0x13958429, 0x68252413, 0x22765742, 0x120f3d0f, 0x584e3a48, 0x4c3c4e58, - 0x0f3a0f12, 0x1e9e7922, 0x430b8b49, 0x2e2306b4, 0x432c512e, 0x17230bb5, 0x552a2d17, 0x272d0611, 0x1d1c1b26, 0x4154a9b1, 0x2e2c2c40, 0x053b4e4d, - 0x200a0051, 0x281a9a52, 0x00050000, 0x06ab004f, 0x092b55b1, 0x55400021, 0x0122342b, 0x02823521, 0x15212808, 0x21070206, 0x603d5401, 0x23232222, - 0x79602222, 0x24244460, 0x483c6044, 0x4f904e4e, 0x01de014f, 0x2c2b5709, 0x57a35757, 0x032e0589, 0x0141fe60, 0x01cdfe42, 0x36d636a6, 0xd9544c01, - 0xfd2a082b, 0xea015bbc, 0xfe525b59, 0x070052ba, 0x08ff2e00, 0x1505d206, 0x33001c00, 0x53004700, 0x73005d00, 0x00009100, 0x30070637, 0x034c3015, - 0x30113205, 0x36373633, 0x06333037, 0x17121607, 0x01012e23, 0x0ae54511, 0x230cf145, 0x33302726, 0x20062949, 0x22cf8233, 0x57013011, 0x2e21187d, - 0x2df34701, 0x42f73608, 0x046d6d1a, 0x5a5a1848, 0x32ae417f, 0x278316ba, 0x01a50192, 0x01c0fead, 0x01ddfe23, 0x74220140, 0x6d1b7c73, 0x6c1b031b, - 0xa418781b, 0x014afb2d, 0x65655e20, 0x075d505e, 0x14481720, 0x41230829, 0x02d01e4b, 0x5cacfe9f, 0x4d6d6d1e, 0xe8fe4bce, 0xfee13d21, 0x609f02e2, - 0x60c460bb, 0xcbcc0801, 0x8232c732, 0xfe292702, 0xf6fe4ee2, 0xf8476203, 0xb5fd210d, 0x212d3748, 0x83620000, 0x0005358f, 0x0608ffca, 0x00150536, - 0x0017000f, 0x00660033, 0x05000092, 0x2a11054e, 0x33300706, 0x012e0526, 0x4e302327, 0x33260549, 0x011e1330, 0xe7493317, 0x30232106, 0x21106359, - 0x62592726, 0x05ad5a0a, 0x230d6159, 0x33270226, 0x16214282, 0x078e5317, 0x27069c53, 0x33373637, 0x23070206, 0x262f6c82, 0x07062327, 0x0207010e, - 0x3afb3df8, 0x4e98266e, 0x30340770, 0x0230c631, 0x08340e19, 0xdb796802, 0x030e3408, 0x5bfc7967, 0x48057c44, 0x2e35050e, 0x621e1e3a, 0x563d2262, - 0x38374c36, 0x1a490327, 0x1f3a384a, 0x07eb4d20, 0x90015e08, 0x6e1a6a1a, 0x18092e0d, 0x24080317, 0x0f360b0a, 0x0a360e79, 0x03092309, 0x6b232331, - 0x7a1b6e1c, 0x1910390d, 0x19190219, 0xf80d3b10, 0x0170b6b6, 0xfe7070bf, 0x3b027041, 0x34949494, 0xfd0f641b, 0xfe9f02ff, 0x1b640f8d, 0x61fd0102, - 0x343d5703, 0x2b0b2f0c, 0x313a1616, 0x060b2e27, 0x06945905, 0x321b1a35, 0x28224102, 0x2a2c1717, 0x130d0a2a, 0x4d2f515c, 0x830b1e36, 0xdb3b334b, - 0x1e706f2d, 0xdc2b2998, 0x2bdc3c3c, 0xde259425, 0x5f83a2a1, 0x3fea3223, 0x37008266, 0x0032ea3f, 0xff180104, 0x05e8050e, 0x001b000f, 0x0043003a, - 0x25000057, 0x221a7d41, 0x54233021, 0x072405fc, 0x37013e23, 0x98430a82, 0x010e2708, 0x01011e07, 0xc5433311, 0x41112007, 0x33200676, 0xb5432782, - 0xcd360806, 0x030c320c, 0x0ddb7867, 0x68030c31, 0x7f3f0379, 0x021b6d1b, 0x781b6b1b, 0x23249124, 0x1980238b, 0x1a021966, 0x24781a67, 0x9325248c, - 0x016cd9fb, 0x26010111, 0x8043269a, 0x77230807, 0x81279a27, 0xfd185f17, 0xfe9e02ff, 0x175f188e, 0x62fd0002, 0x2c2cb22d, 0xe5392db2, 0x36db3639, - 0x8229a729, 0xda363e02, 0x03e63936, 0xfd9e0229, 0x080160c2, 0x430f0144, 0x3131c732, 0xfe4332c7, 0xf6fe43f2, 0x22008200, 0x82360106, 0x82ca20f3, - 0x00142ff3, 0x002a001e, 0x00460032, 0x05000052, 0x57442330, 0x14152205, 0x20cb8206, 0x0f195d17, 0x07232722, 0x50083065, 0x0221070b, 0x0e3f4f03, - 0x21030222, 0x3a0b704e, 0x21016da3, 0x4142685a, 0x79186118, 0x85165a16, 0x2f2e2aac, 0xb603ac29, 0x423bfa3d, 0x10340a66, 0x10c51040, 0x6e79fd40, - 0x4811716e, 0x0a2b0b11, 0x0b2c0b04, 0x6e240982, 0x68016f70, 0x08099c4e, 0x9e02f220, 0x5f485d6c, 0x2fbc2f14, 0x5b2db52d, 0x282e292b, 0x96fed52b, - 0x0170b6b6, 0xfe6f6fbf, 0xfd507041, 0x59012506, 0x4f014f01, 0x240b554f, 0xb1feb1fe, 0x07ae5402, 0x00020030, 0x066300a9, 0x00a90357, 0x0033001d, - 0xd3412500, 0x51062005, 0xb641058d, 0x0516210e, 0x49050d50, 0x40080819, 0x15303330, 0xa0760330, 0x04139027, 0x18966464, 0xbc3335c2, 0x7f20a017, - 0x81200220, 0xbe179620, 0x2d018a33, 0x411c0aeb, 0x5003164f, 0xccce4195, 0x20ed4163, 0x0127a7a7, 0x014f5333, 0xd0342426, 0x34028234, 0x4fdbfe24, - 0x0271d7d7, 0x54461e72, 0xa1480217, 0x712bfd47, 0xe71e1000, 0x06348101, 0x02ff2801, 0x1a05d805, 0x25000f00, 0x56004300, 0x7c007400, 0x4f11d353, - 0x0120335b, 0x512ba14e, 0x022807a6, 0x01c76d67, 0x417301fb, 0x2107704f, 0x824f6b82, 0x416b2205, 0x09794f27, 0x40272725, 0x820d1616, 0x16162c00, - 0x41d0fd40, 0x29294c6b, 0x87416b4c, 0x41262107, 0x41341c87, 0x163f2826, 0x0d0d0c17, 0x3f16170c, 0xc86ced02, 0x4c01fc01, 0x3605cf51, 0x2b2db7fd, - 0x5554822c, 0x2d2c2c81, 0x812c2c2d, 0x2b2c82a9, 0x4e1a612d, 0x252106c0, 0x05c04e24, 0x4e252421, 0x1a2406cd, 0x572d0103, 0x58232e83, 0x82582d2d, - 0x8a57202c, 0x09c24f2b, 0x2205f94e, 0x52e8011a, 0x07360833, 0xfdfe3300, 0x0905c206, 0x16000c00, 0x61003c00, 0x9c008600, 0xb95aa200, 0x0f8b6119, - 0x2014f451, 0x06835a01, 0x5a010b21, 0x24a51a7f, 0x1614112c, 0x11353632, 0x07141133, 0x934d020e, 0x5b112005, 0x0124063e, 0x2b2c5709, 0x2a08284a, - 0x5e3aad02, 0x23232121, 0x612f2121, 0x1d5205b2, 0x390e390c, 0x0269200e, 0x010501c3, 0x081f080b, 0x1f078282, 0x04010b08, 0x13786201, 0x29058b5a, - 0x12082007, 0x62771247, 0x2282c0fb, 0x1d820c20, 0x08828226, 0x020c081e, 0x12222283, 0x33821249, 0x20080825, 0x82481207, 0x64013322, 0x65388e38, - 0x58350c0c, 0x0c36577f, 0x6636020c, 0xc15af8f4, 0xb120080f, 0x842a2b27, 0x2b2a83b6, 0x25251413, 0x0820084a, 0x535e3239, 0x365e53a1, 0x0821093c, - 0xa8014f4a, 0x2305925a, 0x1001f0fe, 0x2117905a, 0x23a1ff04, 0x9f023208, 0x4d514efe, 0xb201514d, 0x32445efe, 0x1f1f4132, 0x44323241, 0x61fda201, - 0xbbfd9f02, 0x0000005a, 0xff4d0104, 0x05b30502, 0x0017001a, 0x008b0051, 0x059f529d, 0x4a09bb50, 0xaa5009d5, 0x23414d14, 0x4d0efe48, 0x0120297a, - 0x2110f14e, 0x5a468501, 0x4b013809, 0x0c2a7654, 0x2a240c32, 0x4240362c, 0x0a3b1717, 0x31610a28, 0x48111031, 0x0c2306d9, 0x621a0c33, 0x3b290653, - 0x10105d65, 0xfd5a1f20, 0x2332848b, 0x2b2b230d, 0x272e3286, 0x3131620a, 0x563c1111, 0x37384c36, 0x32890d28, 0x82643c21, 0x1f1f2b32, 0x0ce2015b, - 0x68020d31, 0x0682db79, 0x79670323, 0x069246f2, 0x343d0b32, 0x2b0c2e0c, 0x31391616, 0x0b171827, 0x12020702, 0x250d5e4d, 0x17172822, 0x5e4d2b2c, - 0x6203210b, 0x012133b1, 0x0f3c487e, 0x0000002f, 0x00cf0002, 0x03310654, 0x003400b8, 0x10d94e4a, 0x666a2620, 0x08805c05, 0x52095e4a, 0x0e220740, - 0x35430102, 0x2787080d, 0x1135022e, 0x946a0202, 0x0f3f0f34, 0x4436352d, 0x493a5250, 0x3d7b2525, 0x6b4c2a3d, 0x46465e44, 0x21045b31, 0x2847465d, - 0x44202128, 0x29747e4b, 0xf901704e, 0x8551c552, 0x764b1110, 0x4b3b3bae, 0x404d5521, 0x360f3a0f, 0x3d481b1c, 0x070e3a31, 0x393a1706, 0x3e593865, - 0x3e212121, 0x322a0351, 0x34381c1d, 0x100d1a1a, 0x3a657318, 0x03254461, 0x6bfcfd54, 0x026b6c6c, 0x5c11fe04, 0x2b574443, 0x86581615, 0x82ef015c, - 0x732d10db, 0x0a393d07, 0xf60608ff, 0x0e001505, 0x2b001800, 0x53004900, 0x63005d00, 0x30010000, 0x09505c33, 0x7e5a2b20, 0x2b262306, 0xe24c1101, - 0x146b5c2c, 0x1133113a, 0x76021521, 0x256841ed, 0x25292925, 0xed416825, 0x5c5c4bed, 0x49fe804b, 0x3c3a985b, 0x292ba701, 0x7ea77e2a, 0x602b292a, - 0x5b6b5b5f, 0x0221fe5f, 0x82572df7, 0x57825455, 0x2007822d, 0x290682a9, 0x19191b61, 0x692f2425, 0xbf4c242f, 0x5c0c8807, 0xfd2e0e82, 0xfd9f02c0, - 0x050061c2, 0xab000300, 0xa756fd06, 0x5659200a, 0x052034a7, 0x2024bd4c, 0x11c05608, 0x200dae6b, 0x06c056a4, 0x744c9620, 0x83072105, 0x2007744c, - 0x0f006761, 0x3a2bd456, 0x134c13a7, 0xfe124b13, 0x121101ef, 0x4a13124a, 0x0263fe13, 0x279c279e, 0x82165916, 0x22088202, 0x820062fd, 0x00033100, - 0x06ab0022, 0x006103de, 0x0033001b, 0x1300006c, 0x561c4153, 0x114c15e7, 0x012e2114, 0x5c105259, 0xd7200fbc, 0x28054d53, 0x0c320cdb, 0x01796803, - 0x0abc5640, 0xb85c4c20, 0x2a02212f, 0x240a214b, 0xfd010218, 0x09a14b62, 0x5c080f6e, 0x250827b5, 0x01070000, 0x0502ff7c, 0x001a0584, 0x005b0037, - 0x00750068, 0x00a9009c, 0x010000d5, 0x010e2130, 0x37363307, 0x8866023e, 0x07012e07, 0x27222306, 0x2627012e, 0x17163727, 0x7917821e, 0x22220515, - 0x14820706, 0x37013e23, 0x3a5e6621, 0x6b07bf66, 0x1e220d24, 0x246b3301, 0x35212117, 0x29607182, 0x23262405, 0x83020e22, 0x233c8283, 0x17163202, - 0xc9790182, 0x08c28206, 0x26032137, 0x0c03d7fe, 0x0d0b0602, 0x1c2b200d, 0x1f364b2b, 0x2d3d1010, 0x232d392c, 0x13143423, 0x0e0c4f10, 0x1c2b230d, - 0x3b41413b, 0x0f12342b, 0x11040f3c, 0x017c0104, 0x245d6669, 0xfe3b3b37, 0x3c583717, 0x232c1110, 0x90295523, 0x212d2e38, 0x0c171622, 0x097d6b01, - 0x6b221e21, 0x5908067d, 0x50034141, 0x8f2339fe, 0x1b1b3324, 0x291c323a, 0x1006141f, 0x120b103f, 0x664c3812, 0x0e1c1b50, 0x1d2d190f, 0x691a201e, - 0x0152011a, 0x289e274e, 0x17101014, 0x4e361c0c, 0x2a2a3231, 0x0a10113d, 0x1516210a, 0x10143e18, 0x410d1911, 0x413a0b3a, 0x09021421, 0x3ef93e02, - 0x4e6657fd, 0xd1012137, 0x2d0be66b, 0x28282726, 0x01352d2e, 0x1b231401, 0xe66b1d10, 0x683f0812, 0x2e207f20, 0x0c2e2a2a, 0x1c113831, 0x19061627, - 0x1d1d2006, 0x1a1e1b2e, 0x2b25241b, 0x1c3e4528, 0x5a171c1c, 0x00000017, 0xff7a0106, 0x05860502, 0x0028001a, 0x006c0036, 0x009f0092, 0x680000ca, - 0x3f680c40, 0x21252226, 0x18834206, 0x37013e24, 0x345f031e, 0x07386906, 0x25211322, 0x6d14a75e, 0x2122196b, 0x88613635, 0x1e454206, 0x45685220, - 0x5a393505, 0x0d2c2222, 0x0e0a0403, 0x1f30260e, 0x3424242b, 0x1e11111e, 0x08054468, 0x10103d45, 0x41413bec, 0x42423a3b, 0xd6fe3403, 0x0b070c05, - 0x2a210c0d, 0x364a2b1d, 0x3e0f101f, 0x2d392c2d, 0x13352322, 0x340e1014, 0x221b0d0d, 0x403c1c2b, 0x342b3c40, 0x0f3c0e12, 0x7c011207, 0x583810fd, - 0x8211103c, 0x29552c23, 0x2e2d3890, 0x17162221, 0x6d03030c, 0xcd5e07c7, 0x41412205, 0x05494275, 0x336b6b25, 0x423b1c1b, 0x0f210548, 0x07484240, - 0x0e1b1c2e, 0x1e2c190f, 0x691b201d, 0xb352011a, 0x222d3068, 0x42a449f2, 0x0a241475, 0x21140a2a, 0x230b7642, 0xb9010174, 0x212d3b42, 0x3a42605f, - 0x06003824, 0x08ff3900, 0x1505c706, 0x1c000f00, 0x32002800, 0x7a005700, 0x58050000, 0x303407d1, 0x16333013, 0x26031712, 0x06233027, 0x30073007, - 0x01012e33, 0x5315536e, 0x25750f99, 0x14735313, 0x1e171625, 0x44331701, 0x113c0588, 0x0a1e0423, 0x06e20624, 0xc9640a24, 0x21872182, 0x0c0b0af1, - 0xb13c0a0b, 0x9bfc290b, 0x080d306e, 0x3bad0230, 0x2421215d, 0x2f212124, 0x33553b2e, 0x4a0d1f34, 0x44343f11, 0x35444c4c, 0x380e1243, 0x026a1f0e, - 0x010501c4, 0x0421090c, 0x22038282, 0x0c820c09, 0x3678623e, 0x05210937, 0x05171808, 0x62771552, 0x187f23f8, 0x02237f18, 0x41fe709f, 0x31e00170, - 0xd3240082, 0xa5018c24, 0x211d4e53, 0x4d532907, 0x52163f12, 0x01f0fe09, 0x16510810, 0xfe124b14, 0x769f0263, 0x0e5d1975, 0xb10b4242, 0x0061fd2f, - 0x67410700, 0x00162c08, 0x002a0020, 0x003f0035, 0x7f870064, 0x06230807, 0x6c321507, 0x0e20061c, 0x2305a571, 0x34013d36, 0x200ca371, 0x13ff7301, - 0x76057856, 0x75411e9b, 0x02220822, 0x4e100198, 0x1d343750, 0x0a221817, 0x39281609, 0x66d5fe22, 0x262625a7, 0x2197a725, 0x97212525, 0x7d413bfd, - 0xa7013f50, 0x48415459, 0x0b0b0c05, 0x211c1c28, 0x1c33472b, 0x2c2b275a, 0x2457272c, 0x23292b28, 0x85411d01, 0x00003451, 0xff270105, 0x05d90502, - 0x002a001a, 0x003c0034, 0x827d0071, 0x09597314, 0x33023e24, 0x71761632, 0x10e76a19, 0x650e7b54, 0x5d65085e, 0x0d7c5d0d, 0x210a0c5b, 0x8676f402, - 0x7302261f, 0x6f3afb3c, 0x07ed6be5, 0xc6114026, 0xb6fd4010, 0x6b12ea76, 0x6426135d, 0x5a3f215e, 0xd3542e01, 0x768c2009, 0x59210796, 0x0896762d, - 0x0808652e, 0x1f2f1010, 0x9bfe5d34, 0x9e02b6b6, 0x200b345b, 0x0a51544e, 0x020b2f22, 0x540ef376, 0x5c250982, 0x374d2f51, 0x09fd6f1d, 0x0200003d, - 0x16ffce01, 0x0e043205, 0x3b002100, 0x30050000, 0x26272223, 0x2e353035, 0x82262701, 0x05b04208, 0x1617322f, 0x15011e17, 0x15070214, 0x3e322733, - 0x05987401, 0x23022e22, 0x0808436f, 0x04021e28, 0x28558e70, 0x2f885527, 0x3e191b2f, 0x50503938, 0x395050c4, 0xa0bb3e38, 0x603af09a, 0x13131244, - 0x3a604412, 0x09855f3b, 0x2cea5f31, 0x0b4c492b, 0x5b41414d, 0xc27f735c, 0x82224142, 0x42413400, 0xfee17fc2, 0xf2671cfc, 0x37374c28, 0x37459e45, - 0x8a284c37, 0x0300290a, 0xb7001300, 0x5603ed06, 0x3d220782, 0x61675100, 0x61032005, 0x944b0f5f, 0x30032206, 0x07535803, 0x30233023, 0x0f2b6c11, - 0x30231123, 0x22018221, 0x84013035, 0x21230805, 0x02061530, 0xe3302107, 0x5d1772cf, 0x5b170d17, 0x8a227017, 0x01090322, 0x080c0105, 0x8282081e, - 0x44071f08, 0x12360597, 0x20071249, 0x1f080808, 0x12481208, 0x9a026277, 0x410141fe, 0x7662cefe, 0x01b73206, 0x329b0103, 0xc83131c8, 0xeefe4432, - 0x01fdfe45, 0x21874b9d, 0x28097d62, 0x00040000, 0x06ab004c, 0x26e382b4, 0x001e0014, 0x835f0028, 0x1ddb5de5, 0x2107a642, 0x994a0111, 0x5db92032, - 0x192106e4, 0x08e45d60, 0xac2a2e24, 0x56681302, 0x58032707, 0x0c03d7fe, 0x244a0703, 0x0e132123, 0x2006244a, 0x0eec5db7, 0x292e2827, 0x96fed52b, - 0x065a6802, 0x9e28402a, 0x10101427, 0x351d0c17, 0x210fc549, 0xc5491011, 0x8200200e, 0x01043000, 0x0502ff73, 0x001a058d, 0x007d004c, 0x72e000b4, - 0x17201717, 0x2106e24a, 0x01840607, 0x011e1522, 0x8405f24a, 0x2306220d, 0x05115722, 0x82372721, 0x0c227217, 0x210a324b, 0x596b2627, 0x06364b06, - 0x36370123, 0x85558632, 0x010e2354, 0x68412107, 0x8a012033, 0x1d514964, 0x67500221, 0x62081192, 0x1d1d2828, 0x0a0a1110, 0x17181212, 0x13331d1a, - 0x110b0b13, 0x2c1f2011, 0x232f362c, 0x141c1b24, 0x0d4f0f15, 0x2d12111c, 0x45423d1d, 0x80034740, 0x8f2439fe, 0x1b1c3323, 0x1b321e1d, 0x0b0f0f2a, - 0x4010050a, 0x13110b0f, 0x66262637, 0x0e1c1b51, 0x1616190e, 0x1a201e1d, 0x52011b69, 0xd6fea7fd, 0x49030b03, 0x37350893, 0x3e100f1e, 0x2d392d2c, - 0x14342322, 0x0d4e0f14, 0x2c220e0d, 0x0692491b, 0x4c3b0f21, 0x02240507, 0x2438fe50, 0x2107b34b, 0xb34b1e2a, 0x854b2008, 0x4b18205e, 0x357208b3, - 0x0c270810, 0x2116170b, 0x1a20291f, 0x0c141419, 0x0604060d, 0x1d14151a, 0x242c251c, 0x0e191a24, 0x110a0a0e, 0x17161511, 0x7222143e, 0x7520093d, - 0x2609614b, 0x0e111c1c, 0x4b13140e, 0x0d210764, 0x05654b0e, 0x1f442923, 0x05664b1f, 0x4c460521, 0x62202b22, 0x2028bb4b, 0x06274f04, 0x0f005628, - 0x37002e00, 0x5b5e8f03, 0x243f6f13, 0x02260526, 0x011d3327, 0x22354618, 0x158a4518, 0x5fa638c9, 0x461826a6, 0x1520194a, 0x153d4618, 0x3d370122, - 0x14774518, 0x45181494, 0x119111b3, 0x26a638a6, 0x35215fcc, 0x3f461833, 0x3a012810, 0xc901b266, 0x706b0601, 0x282105f6, 0x12f67027, 0x18eb0123, - 0x0346185f, 0x03012d4f, 0x040c040e, 0x380e040e, 0x390e7c0e, 0x46180782, 0x01285204, 0x18621964, 0x0f390f7a, 0x0b3a6b82, 0x0f030e04, 0xfc020f3d, - 0x4502bbfd, 0xb0fd5959, 0x3c7f4242, 0x38373c3d, 0x7a71302f, 0x34302107, 0x200a7a71, 0xda45104a, 0x002f5503, 0x00050000, 0x06ab0047, 0x006103b9, - 0x822f001e, 0x0058280b, 0x01000070, 0x6c07010e, 0xc67a0ad7, 0x82332005, 0x06d96c14, 0x20243e7b, 0x3925a405, 0x3d0f1001, 0x046c6c10, 0x1e104010, - 0x287e1e79, 0xad2b289f, 0x8822832b, 0xd27a6302, 0x06062718, 0x31100f07, 0x209e5202, 0xf0012208, 0xcf124612, 0xacfe9e02, 0x25145115, 0xbc2f2491, - 0xfefe412f, 0xfed13441, 0x40592ef0, 0x40525340, 0x06797a41, 0x49341b35, 0x482c762b, 0x341b1b34, 0x762c2424, 0x1b23252b, 0xa35c1b1a, 0x00002224, - 0x08934e06, 0x42002f3a, 0x8d006300, 0xa0009800, 0x30050000, 0x30353021, 0x36373637, 0x34353035, 0x2a0adb49, 0x013e3736, 0x17011e32, 0x4a141516, - 0x07250581, 0x2107010e, 0x052a5605, 0x82343521, 0x3637211d, 0x8306937c, 0x05554d3d, 0x82272621, 0x85222001, 0x05dd752f, 0x16171623, 0x51421801, - 0x22f74e08, 0xf2791220, 0x4503240c, 0x53d639fe, 0x5a550911, 0x1c1c2c05, 0x3750664c, 0x0c0d0f0e, 0x531d1716, 0x01260613, 0x2e2e3f49, 0x00820e3c, - 0x2e3c2308, 0x767c3f2e, 0x19227c76, 0x070f1018, 0x0f070606, 0x45191810, 0x100f1918, 0x06070706, 0x18190f10, 0x0e4f89fe, 0x3d742620, 0x726e3afb, - 0x0c0f4f72, 0xbf68f22c, 0x2f292a2e, 0x1138310c, 0xc349261d, 0x17172a06, 0x24351e1b, 0x23282b25, 0x07c34922, 0x18176722, 0x33072e7c, 0xfeb71817, - 0x0e5cb6b8, 0x231a1a0e, 0x2c752d24, 0x1a1a2424, 0x0e29a182, 0x24231b1a, 0x242d752c, 0x210e8323, 0x2d4f7703, 0x4f01231f, 0x2f4f4f01, 0x0020080a, - 0x01060000, 0x0568fe0b, 0x000f05f5, 0x0039001f, 0x004b0041, 0x006f0055, 0x23300100, 0x013d2622, 0x2014fd4e, 0x1afd4e06, 0x2007f667, 0x12877701, - 0x41180520, 0x2e080d65, 0x33112311, 0x37363313, 0x02231133, 0x35395fe5, 0x201f5b38, 0x262a1211, 0x82353625, 0x26263536, 0x676b7c29, 0x2d4027a1, - 0x0d0c0c0d, 0x8227402d, 0x0d0c2d09, 0x402d0c0d, 0xc76ded02, 0x3bfbfb01, 0x2b0cff79, 0x09051504, 0x62190923, 0x19621818, 0x05390882, 0x06b48067, - 0x677b595a, 0x313a68fe, 0x2b340732, 0x4c3e3d2b, 0x2b2c8155, 0x3d008217, 0x55812c2b, 0x4513ad96, 0x25331aa2, 0x2e6a2d25, 0x1b332425, 0x2524331b, - 0x252d6a2e, 0xec673325, 0x24012108, 0x2d09e276, 0x2b282e29, 0x1249123e, 0x2d2db32c, 0x08822cb3, 0x02fffd39, 0xababfe9e, 0x0062fdaa, 0x00020000, - 0x06540085, 0x00b8037b, 0x644d0034, 0x1a41357f, 0x133d0813, 0x01231133, 0x359469b7, 0x2c103e10, 0x51443536, 0x26493951, 0x3e3d7a25, 0x436c4c2a, - 0x3145465f, 0x5d21035b, 0x27284846, 0x4a442120, 0x4e29757e, 0x06fa0371, 0x130b2c0b, 0x81242381, 0x27088213, 0xe1a18206, 0x829ae007, 0x2a2d8c64, - 0x5a178f02, 0x40ec2217, 0x8222ec40, 0x7ffd3808, 0x56fe4603, 0xbafcaa01, 0x00030000, 0x066300b5, 0x00a9034b, 0x7b15000b, 0x092119ad, 0x11d57601, - 0x6801b63c, 0x747f7f74, 0x3934d8e1, 0x03d83439, 0x8cedfe5a, 0x0a175817, 0x0f050f37, 0x09820a38, 0xba2e8834, 0x4603632e, 0xfe89e689, 0x36c501b2, - 0x36323a32, 0xa17631fd, 0xc8252205, 0x0aa17637, 0x00820020, 0x20071b50, 0x06bf4561, 0xbd457e20, 0x34ce4e46, 0x10152108, 0x6d6d0f3d, 0x10401003, - 0x7f1e781f, 0x2b27a028, 0x22832bac, 0x3f630287, 0x0e0f3b5c, 0x5c3b0f0e, 0x28054344, 0x0d0d1f31, 0x3145311f, 0x053b441f, 0x1a033122, 0x45325050, - 0x01213edf, 0x2c7150ef, 0x5b01053a, 0xa50502ff, 0x34001a05, 0x48003e00, 0xa2008100, 0x22050000, 0x37362726, 0x54079f79, 0x0225103f, 0x23012e07, - 0x0f3f5422, 0x14654b18, 0x01694589, 0x0d597629, 0x2a0eb157, 0x010e1716, 0x76555002, 0x7f26252a, 0x0b2314c7, 0x7f091e1a, 0x01210dc8, 0x0545442d, - 0x2aacb335, 0xac2a2e2e, 0x76542cfe, 0x2425262b, 0x40372b2a, 0x69161842, 0x0d211140, 0x0e406919, 0x08057476, 0x69242521, 0x22755841, 0x48112e2d, - 0x58584e3b, 0x134b3d4e, 0x79224d0a, 0x23343dfd, 0x16162b23, 0x54273139, 0x0a230e8c, 0x54081b16, 0x4b18128d, 0x292507bf, 0x012b282e, 0x693d8918, - 0x2a082650, 0x4055a9b1, 0x2d2c2d40, 0x19194b4d, 0x5d6a3930, 0x3e695d66, 0x492f0631, 0x00000052, 0x002e0004, 0x03d206b7, 0x000f0056, 0x18360027, - 0x5e15e741, 0x132015d5, 0x25182d61, 0x01c86c62, 0xad5570fc, 0xed832b09, 0x25256940, 0x25252828, 0xf6604069, 0x18812005, 0x2009e841, 0x05bb7002, - 0x2a9e0227, 0xa87d2a2a, 0x2705827d, 0x6c5b5e60, 0x22fe5e5b, 0x002d9e82, 0xff4b0106, 0x05b50502, 0x0015001a, 0x30ab821e, 0x016e0049, 0x050000d8, - 0x21303530, 0x12363530, 0x053d7437, 0x2330152e, 0x25301530, 0x11303330, 0x010e2330, 0x2007145e, 0xd344183e, 0x48012008, 0x2e23073d, 0x7e062201, - 0x1e240719, 0x26220102, 0x6d08006a, 0x07220681, 0x46181d06, 0x352b0e81, 0x0f231133, 0x0e0f1501, 0x840d0f15, 0x91088205, 0x2e05270b, 0x35372701, - 0x02840b3f, 0x05840a20, 0x06200b88, 0x073c1793, 0x15331133, 0xc9fea102, 0x8e2db52d, 0xbffe5c5c, 0x8e2307db, 0x5c3eaf02, 0x1d0f0e3c, 0x09bd4418, - 0x00820720, 0x310f0f26, 0x0f103145, 0x07390982, 0xeefd311f, 0x49279683, 0x3b584168, 0x3c0f213b, 0x3b481110, 0x2d2d2c4d, 0xd849182c, 0xbc2f220a, - 0x3b4c1808, 0x222eeb2e, 0xd20b2c0b, 0xd202206e, 0x01012453, 0x18f2a3a6, 0x290ea54a, 0x582fe2fe, 0x51524140, 0x45185883, 0x243b07aa, 0x2b752c25, - 0x1a1a2425, 0x1a1a1c1c, 0x752b2524, 0x3324252c, 0xb106031c, 0x188055a9, 0x2c0f6148, 0x09313e34, 0x29490923, 0x015a0b29, 0xd0b1d4f5, 0x280a2254, - 0x8953d00a, 0x55b64150, 0xfd235f86, 0x82005abc, 0x02350800, 0x5f025c00, 0x7105a406, 0x1b000300, 0x21130000, 0x27012115, 0x33351737, 0x07173715, - 0x17231533, 0x23152707, 0x37270735, 0x065c3523, 0x04b8f948, 0x8c2a8cc2, 0x2103823c, 0x0887c6c6, 0x46a50224, 0x118c2202, 0x00261a84, 0x5c000100, - 0x5b8225ff, 0x1400d622, 0x38085982, 0x3e012c32, 0x34113505, 0x022c032e, 0x019d5c23, 0xf6050134, 0x5b7fadc7, 0xaa6f3c2e, 0xfef8fecc, 0xada9fee5, - 0x5633a502, 0x7a837e72, 0xf90e4766, 0x7d5b154f, 0x68869190, 0x24478d3e, 0x012c2201, 0x2047832e, 0x2747823e, 0x9da40633, 0xfbfeccfe, 0x01254889, - 0x011b0108, 0x82489657, 0x000532ef, 0x0638ff2a, 0x009405d6, 0x00400004, 0x014b0044, 0x2b9b8208, 0x21072130, 0x030e2204, 0x07040e07, 0x2e06eb57, - 0x33363435, 0x041e1732, 0x37033e32, 0x8337043e, 0x1716240c, 0x83141516, 0x032e391e, 0x21152103, 0x05231501, 0x25352325, 0x33023e34, 0x36171632, - 0x17031e32, 0x14212682, 0x21058306, 0x05833236, 0x013e1725, 0x82033e37, 0x84362047, 0x22288340, 0x8631011e, 0x2317840c, 0x021e3233, 0x5b852983, - 0x85141521, 0x27262961, 0x3435012e, 0x27022e35, 0x0e2e6e83, 0x27222301, 0x0607010e, 0x07062722, 0x0c86030e, 0x02200683, 0xb0840e82, 0x03862683, - 0x82022e21, 0x273b08ba, 0x35010e34, 0x2627010e, 0x16172627, 0x06273435, 0x36373437, 0x5c262223, 0xfe46e401, 0x54e00462, 0x2f4f5061, 0x3c15070f, - 0x522c5b40, 0x4da7934b, 0x151d0835, 0x2f0f0f1b, 0x9a61504f, 0xddd4081b, 0x62fee401, 0x019610fe, 0x96000100, 0x0e047afc, 0x1b131a24, 0x171f0e0b, - 0x0202080c, 0x11151b11, 0x04070602, 0x10072e38, 0x020c0e10, 0x06030810, 0x0a0c130c, 0x530b0609, 0x040d1339, 0x0c11282c, 0x2f411e18, 0x0d151d0c, - 0x241a0e04, 0x27142013, 0x11140c1e, 0x0909090a, 0x2c21492f, 0x121a1301, 0x1004180f, 0x25210f06, 0x2a100f14, 0x10171c19, 0x21091224, 0x132e0e0d, - 0x18133b1a, 0x0d060707, 0x0e290938, 0x111a141b, 0x122f340d, 0x19100807, 0x160b0a11, 0x1c101010, 0x22180f17, 0x08221a0c, 0x030d1611, 0x06171601, - 0x021a0327, 0x01100801, 0x08020103, 0x021a1207, 0x2fbb6eb9, 0x173c5242, 0x424a1d09, 0xa72d184b, 0x0f0d4d4e, 0x17161d15, 0x2f42523c, 0x90081897, - 0x016e5801, 0xf0f0fa25, 0x1d0da0fa, 0x1b151a29, 0x1d110e07, 0x26170e11, 0x0c020b3a, 0x0505070d, 0x0b091037, 0x08040910, 0x040d670c, 0x3b1f2741, - 0x0e186037, 0x121d1107, 0x15092617, 0x5201100f, 0x04380443, 0x34010512, 0x10171108, 0x0b122d0c, 0x3e080403, 0x2f070b42, 0x0b24111d, 0x14111045, - 0x1d0f331c, 0x0a5d090e, 0x18180c4d, 0x022d410c, 0x17211617, 0x0c110508, 0x2226141b, 0x19220e05, 0x02071703, 0x02030c0c, 0x04110205, 0x04020202, - 0x24038201, 0x171a0702, 0x07b34300, 0x00492508, 0x000f000b, 0x33150100, 0x23152315, 0x33352335, 0x15210135, 0xb4980521, 0xb4b464b4, 0x480628fb, - 0x4905b8f9, 0x64380b83, 0x465cfdb4, 0x53000500, 0x8c063eff, 0x0600a705, 0x2c002800, 0x37003000, 0x11293d82, 0x33010b33, 0x07232711, 0x20018327, - 0x26058403, 0x1b35020b, 0x82173702, 0x84132001, 0x33172905, 0x2b153321, 0x37333502, 0x2e082d85, 0xcea0a104, 0xc936a0ce, 0x303f334a, 0x3a3a3f2f, - 0x10311937, 0x27273736, 0x31103637, 0x3a3a3719, 0x3f302f3f, 0x01c94a33, 0xbc8a8af2, 0x83887373, 0x0247082c, 0x01b00108, 0xfedefe22, 0x3ed63a50, - 0xe3cd72a9, 0x8b54fcfe, 0xfe92df6a, 0x010401d4, 0xeb0189eb, 0xaffe0401, 0x8b6adfb7, 0xe3fcfe54, 0x3ea972cd, 0x3a6161d6, 0xdefe50fe, 0xb0012201, - 0x00030000, 0x0637ff5c, 0x82e005a4, 0x000d22bb, 0x26b7833b, 0x23010923, 0x84110311, 0x2f012206, 0x85bf8501, 0x840f2005, 0x020f220f, 0x23c4821f, - 0x011f013f, 0x0586c485, 0xc8340328, 0x14011401, 0x068598c8, 0x38d8023d, 0x4b604e72, 0x5a5a6048, 0x184b2754, 0x394b4554, 0x155a364b, 0x39252539, - 0x82365a15, 0x5445310c, 0x54274b18, 0x48605a5a, 0x724e604b, 0xfcfe5d01, 0x04229484, 0xb9825d02, 0x3008d183, 0x1bc8fefc, 0x2d420438, 0x21665951, - 0x48582a37, 0x645a7084, 0x8f523b4b, 0x4a656c43, 0x4b3b528f, 0x84705a64, 0x372a5848, 0x51596621, 0x3804422d, 0x3b008200, 0xff4b0002, 0x05b50622, - 0x000900d0, 0x0500002a, 0x15012d15, 0x010d3521, 0x17130135, 0x3f20ad8b, 0x0324d98d, 0x6d010307, 0x04227e83, 0x7a820126, 0xd3fa2608, 0x1f6d6e4e, - 0x756d3262, 0x615e7d75, 0x4994667d, 0x7d669449, 0x757d5e61, 0x62326d75, 0x4e6e6d1f, 0xcecea03e, 0x080383a0, 0xfe540333, 0x73eccd7e, 0x426e54b0, - 0x59a1b2cc, 0x36993184, 0x84319935, 0xccb2a159, 0xb0546e42, 0xcd090190, 0x00007efe, 0xff5e0002, 0x05a2066a, 0x000b007b, 0x0e5b421f, 0x03270330, - 0x27020b27, 0x021b3711, 0x13371337, 0x69421521, 0xc7fe2106, 0x86877487, 0x42a70221, 0xfc330777, 0x629dfef0, 0xfeb2f7fe, 0xfe6501be, 0x07058467, - 0x8267fe84, 0xb2be2f09, 0xfe62f7fe, 0x0300749d, 0x3eff5300, 0x9342af06, 0x002f2c06, 0x35211300, 0x2135010d, 0x41211503, 0x80420507, 0x021b2205, - 0x42798235, 0x072109a0, 0x20268503, 0x075442cb, 0x45035522, 0x21068c42, 0x8c42363b, 0x3b36210b, 0x20068c42, 0x074b4296, 0xa0030428, 0xfea0cece, - 0x864261fc, 0x9bfe2126, 0x00202f83, 0x04280082, 0x5effc800, 0xa6053806, 0x0f2bb582, 0x1f001b00, 0x35250000, 0x43031521, 0x0b8b0b7f, 0x1123112e, - 0xcc016c04, 0x64b4b4b4, 0xc0fcb4b4, 0x02270684, 0x64a05a31, 0x439c0464, 0xfe210595, 0x2507855c, 0xb8f90e02, 0x62824806, 0x47010021, 0x0221058f, - 0x2c6382a5, 0x15211300, 0x48065c21, 0xa502b8f9, 0x231c8346, 0xae000e00, 0x0a842182, 0x02200482, 0x01220b86, 0x8b820d00, 0x11820120, 0x02000026, - 0x3d000700, 0x03241786, 0x91002500, 0x04200b86, 0xd3202382, 0x05240b86, 0x01010f00, 0x06240b86, 0x2b010c00, 0x01226b82, 0x3f840904, 0x0b860020, - 0x1a000122, 0x03210982, 0x20178300, 0x20778202, 0x2417862d, 0x004a0003, 0x200b8645, 0x20238204, 0x240b86b7, 0x001e0005, 0x240b86e1, 0x01180006, - 0x304d8311, 0x00750046, 0x006e0072, 0x00630061, 0x00200065, 0x20078249, 0x2e0f826f, 0x46000073, 0x616e7275, 0x49206563, 0x826e6f63, 0x8252200e, - 0x8267201f, 0x826c202d, 0x0072282b, 0x67655200, 0x82616c75, 0x00462108, 0x74212f83, 0x22078300, 0x84670072, 0x823a2045, 0x21599949, 0x1f830020, - 0x38003124, 0x03842d00, 0x30003226, 0x33003200, 0x6f2a7182, 0x6f46746e, 0x20656772, 0x7d8c203a, 0x31270f82, 0x2d382d38, 0x83323032, 0x20b3a826, - 0x248d8256, 0x00730072, 0x20a38469, 0x24678220, 0x00310030, 0x3007842e, 0x56000030, 0x69737265, 0x30206e6f, 0x302e3130, 0x8d108230, 0x110b41b3, - 0x23060a41, 0x00020000, 0x0120008b, 0x0b840c8b, 0x05824b20, 0x00019a08, 0x01030002, 0x01030102, 0x01050104, 0x01070106, 0x01090108, 0x010b010a, - 0x010d010c, 0x010f010e, 0x01110110, 0x01130112, 0x01150114, 0x01170116, 0x01190118, 0x011b011a, 0x011d011c, 0x011f011e, 0x01210120, 0x01230122, - 0x01250124, 0x01270126, 0x01290128, 0x012b012a, 0x012d012c, 0x012f012e, 0x01310130, 0x01330132, 0x01350134, 0x01370136, 0x01390138, 0x013b013a, - 0x013d013c, 0x013f013e, 0x01410140, 0x01430142, 0x01450144, 0x01470146, 0x6e750748, 0x46304569, 0x20078630, 0x20078631, 0x20078632, 0x20078633, - 0x21078434, 0x27853031, 0x85303121, 0x30312127, 0x31212785, 0x21278530, 0x27873031, 0x2f863520, 0x07863620, 0x07863720, 0x07863820, 0x07863920, - 0x07864120, 0x07864220, 0x07864320, 0x07864420, 0x07864520, 0x07854620, 0x86303121, 0x86312007, 0x207f8607, 0x207f8631, 0x207f8631, 0x207f8631, - 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x217f8631, 0x77853032, 0x86313221, - 0x207f8607, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, - 0x207f8632, 0x217f8632, 0x77853033, 0x86313321, 0x207f8607, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, - 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x217f8633, 0x77853034, 0x00313428, 0xff010000, 0xcd4400ff, 0x00002607, 0x0014000c, - 0x24158204, 0x00000002, 0x85038601, 0xe0002409, 0x82206855, 0xe0002c11, 0x009ffffd, 0xe1000000, 0x05c9dc04, 0xc4a023fa, 0x00000091, + 0x9982ba32, 0x00022108, 0x0200003b, 0x00aa0415, 0x00070003, 0x0001b12e, 0x07b23c2f, 0x32ed0004, 0xdc0506b1, 0x0203b23c, 0x00220a82, 0x168303b1, + 0x16830520, 0x0607b227, 0xb23cfc01, 0x37178301, 0x11211133, 0x21112125, 0xfeda013b, 0xfe640161, 0xfbaa049c, 0x34043b56, 0xfc255783, 0x03f5ff80, + 0x20098280, 0x2e598201, 0x25210500, 0x0533fd21, 0x07b3f99a, 0x820b0b00, 0x03250815, 0x0f000902, 0xfd03f704, 0x25001b00, 0x00002f00, 0x32213001, + 0x0e141516, 0x07060701, 0x16171615, 0x15011e17, 0x2f0b8214, 0x2123010e, 0x36322137, 0x2634013d, 0x33352123, 0x4d080985, 0x0a02012b, 0x8e7dbd01, + 0x2020311f, 0x25251e1e, 0x132b1f20, 0x5f232214, 0xa217fe38, 0x483f1801, 0xe8fe3f48, 0x42423dfc, 0xfd03fc3d, 0x4f38778d, 0x030c0d32, 0x0d0d0208, + 0x3f581c1c, 0x2735363c, 0x428b2c27, 0x423e313e, 0x2e393e88, 0x8f833e3a, 0x91003008, 0x6f066300, 0x0f00a903, 0x2b001700, 0x30250000, 0x30213027, + 0x36233007, 0x16333712, 0x30011712, 0x30070623, 0x30012633, 0x30270011, 0x85133033, 0x02062f03, 0x02301107, 0xc7fe4cea, 0xbf2f8a49, 0x0382ab2f, + 0x8dfe3408, 0xf73d3c06, 0xfe84023c, 0xcc9b17f7, 0x3794cb04, 0xe3631dce, 0x2e028ce3, 0xd2fd8c8c, 0xb9c9028c, 0xf0fdb9b9, 0xd4014a01, 0x018bfe28, + 0x9afe6175, 0x82b3fe32, 0x03002182, 0xab3a0482, 0x61030007, 0x8c035803, 0x0000ba03, 0x27022637, 0x021d3033, 0x17041d17, 0x0290031d, 0x11a31491, + 0x26f14782, 0x86957191, 0x17011e26, 0x37013e33, 0x86067341, 0x033d220d, 0x20028937, 0x850b8a04, 0x8211a317, 0x9126f129, 0x2e86a171, 0x07020633, + 0x27022623, 0x2327012e, 0x8207010e, 0x22052d0d, 0x013e2726, 0x33011e37, 0x26343532, 0x26291883, 0x34352627, 0x16323336, 0x2b218217, 0x2223012e, + 0x17141506, 0x011e1716, 0x15230285, 0x82250614, 0x2223223b, 0x26288227, 0x37342627, 0x823e3736, 0x2021823c, 0x352c8407, 0x1614011d, 0x3e373233, + 0x23013d02, 0x23113335, 0x185e188e, 0x00cc0168, 0x040e0434, 0x030e040c, 0x7b0e390e, 0x030e390f, 0x030d030f, 0x61cc040e, 0x18640127, 0x0e7a1962, + 0x205c833a, 0x3b5c820c, 0x020f3c0f, 0x276e4bf0, 0x1d0c2f0b, 0x2a77314d, 0x0a240934, 0x702a2b5a, 0x24634865, 0x3c081382, 0x3731401a, 0x31161637, + 0x30092409, 0x13161544, 0x0c430274, 0x34484f09, 0x20212b2c, 0x12121213, 0x3d5f2222, 0x1e38375a, 0x3c461153, 0x48505048, 0x271a1a1e, 0x5adf7c16, + 0xbe0170b7, 0x10b8cd70, 0x47014d00, 0x19681a2d, 0x44196719, 0x44441001, 0x8244f0fe, 0x6819220a, 0x5b01101a, 0x47414701, 0x70af084d, 0x457042fe, + 0x1a451301, 0x67191967, 0xedfe451a, 0x36380b45, 0x290b2a0b, 0x2f2c6d2c, 0x0207020d, 0x512d2c15, 0x3431615c, 0x250b290a, 0x2a342d24, 0x020c1516, + 0x1f0b0208, 0x293f1717, 0x306e6865, 0x2a13133e, 0xb8424229, 0x2a2a4242, 0x47262728, 0x5c393131, 0x5c52a452, 0x31210908, 0xfe573b1e, 0x0700009e, + 0x02ff5200, 0x1a05ae06, 0x24001a00, 0x49003800, 0x78005300, 0x00008000, 0x35262205, 0x023e3734, 0x07063337, 0x010e0706, 0x013e3307, 0x15163233, + 0x32270614, 0x2334013d, 0x14011d22, 0x27022603, 0x17121633, 0x36331716, 0x82123637, 0x0702272a, 0x21112321, 0x27831732, 0x23130727, 0x2327012e, + 0x07794837, 0x22011527, 0x012e2726, 0x222a8234, 0x82333637, 0x06172123, 0x080b5845, 0x1e373698, 0x010e1701, 0x15011105, 0x35011101, 0x6d6ba201, + 0x4f3a0f10, 0x2a3b8a31, 0x251d1e2a, 0x47110c09, 0x6e5f5131, 0x6c6d6d6a, 0x2183211f, 0x1450136b, 0x0e0c0e0e, 0x144e140e, 0x20832169, 0x01658f01, + 0x2b2c5609, 0x71803a39, 0x78175608, 0x2626249b, 0xad029b24, 0x21225d3a, 0x22212323, 0x563b2e2e, 0x0d1f3333, 0x353e1249, 0x444c4c44, 0x0f124236, + 0x69200e38, 0x2801e4fe, 0xd8fe72fe, 0x3c7f84fd, 0x606f3c3d, 0x28292d22, 0x32562829, 0x676a312f, 0x7755776a, 0x02827719, 0x18035608, 0x6fbf0170, + 0x46e7fe46, 0x4e4f4f4e, 0x46190146, 0x7041fe6f, 0x34339e02, 0x11604d60, 0xc913e7fe, 0x2a265536, 0xde262a3e, 0x2a278efe, 0x84b6842a, 0x14142a2a, + 0x074a2525, 0x5f323929, 0x5e53a152, 0x21083b36, 0xb24e4a09, 0x100134fe, 0x0192fe82, 0x82effecd, 0x3f008200, 0x00200004, 0x03e006ab, 0x000b0061, + 0x004a0015, 0x37000074, 0x21301130, 0x06141632, 0x0119012b, 0x2008b749, 0x05ce4601, 0x16171622, 0xd0461282, 0x012e2806, 0x023e3435, 0x46173233, + 0x072c08d1, 0x16141506, 0x011e011f, 0x020e1415, 0x2105cd46, 0x2485022e, 0x46171621, 0x36230cc6, 0x46013e37, 0xd10806c8, 0x5d200121, 0xb45d6666, + 0x2f2e2aad, 0xdd02ad29, 0x0c2a7655, 0x2b230d32, 0x4141362b, 0x270a3b2e, 0x2162620a, 0x4c36563d, 0x0d283738, 0x4b1a0d32, 0x20203938, 0x643c3734, + 0x5a3f205d, 0x0a04dd02, 0x663c4c5e, 0x4d2a294a, 0x7d5a426c, 0x51135923, 0x6161503d, 0x1d1c2050, 0x8a191616, 0x02b75ff3, 0x6db96d9e, 0x6a01f5fe, + 0x292e282b, 0x3db6fd2b, 0x0c2f0b34, 0x3a17162b, 0x0c2e2731, 0x12020702, 0x482c515c, 0x1a1b1b31, 0x0b2d0b32, 0x18172921, 0x0b292a2c, 0x505d130c, + 0x1d374d2f, 0x2d403171, 0x54548257, 0x502e5881, 0x3b2f3447, 0x5d6e5d66, 0x10080966, 0x34202f0f, 0x009bfe5d, 0x002e0005, 0x03d206ab, 0x00120061, + 0x002a001f, 0x00460134, 0x68422500, 0x013e2807, 0x14021e32, 0x4227020e, 0x222a0583, 0x14011d06, 0x21110516, 0x5e411732, 0x2e052c0f, 0x1d232701, + 0x0f1d1707, 0x870e1d17, 0x820b8502, 0x11013305, 0x16331123, 0x011e1712, 0x053d3317, 0x270f3d27, 0x02870e3d, 0x042d0b88, 0x23113311, 0x33010226, + 0x2223603c, 0x3a028223, 0x44607a5f, 0x61442323, 0x4f4f483c, 0x014f4f90, 0x560901df, 0x56572b2c, 0x82259aa3, 0x029a2600, 0x09220863, 0x0732440c, + 0x21756228, 0x23082285, 0x10880d08, 0x85217623, 0x074c42ac, 0x5428282d, 0x5484b684, 0x525d5a27, 0x845d52a2, 0x024f3304, 0xc134339e, 0x01f1fe67, + 0x3d2a2569, 0x15b22629, 0x7f441553, 0x284dae4d, 0x0270fe02, 0xf4fe439e, 0x80884043, 0xfd900126, 0x0c014362, 0x3a055f43, 0x065400a5, 0x00b8035b, + 0x0048002f, 0x005e0054, 0x23302500, 0x2223010e, 0x4435022e, 0x3e43078a, 0x49062008, 0x362106e3, 0x35018237, 0x3523013d, 0x01231121, 0x15163221, + 0x0e070614, 0x1e150701, 0x0b821702, 0x020e0730, 0x33372123, 0x3d363732, 0x26273401, 0x5d4d012b, 0xe541080a, 0x60740e04, 0x345c804a, 0x43303035, + 0x9c715343, 0x124a122b, 0x634d6518, 0x28637979, 0x1b1b2424, 0x01ac1010, 0x0601772f, 0x77697201, 0x3415141b, 0x353d1a1a, 0x10111311, 0xfe2f4f39, + 0x35e98768, 0x0800821e, 0xd2e9356a, 0x33373733, 0x503de2d2, 0x6aa26d38, 0x3738a268, 0x59631c1c, 0x3b0b2b0b, 0x88757f49, 0x0b0a7f75, 0x1e1d1413, + 0xfe754127, 0x76460341, 0x15422f62, 0x07031415, 0x242f1601, 0x2c323525, 0x7525412d, 0x29331c1b, 0x711c1b34, 0x30273033, 0x00000033, 0x00350005, + 0x03cb06ab, 0x001f0061, 0x00530046, 0x00660060, 0x26222500, 0x2c131b44, 0x011e3736, 0x06070617, 0x012e2221, 0x23218227, 0x013e3736, 0x82050646, + 0x32072a14, 0x033e1716, 0x021e3233, 0x10584315, 0x2135a808, 0x37123635, 0x15331133, 0x33251523, 0x010e2311, 0x96834e01, 0x41694926, 0x5b217658, + 0x4d3b4811, 0x3d4d5959, 0x3a0f124c, 0x3c3d210e, 0x5738fc01, 0x2c10113c, 0x29552323, 0x2d2d3990, 0x16172221, 0x0104020d, 0x30251c0b, 0x35482a20, + 0x573e211d, 0x41413b35, 0x02424275, 0x2dc9fea1, 0x5b8e2eb5, 0xdbbefe5b, 0xac8e2307, 0x8154a9b1, 0x4b4d2e58, 0x6a393032, 0x6a5d665d, 0x2309313f, + 0x29294909, 0x30304424, 0x3680493d, 0x291c5336, 0x29282627, 0x01362d2d, 0x1b231501, 0x4d371c0f, 0x3c53332f, 0x3d3e5821, 0x843e3d0d, 0x4d2f0804, + 0x014a5d83, 0x3afe4a2a, 0x01d88355, 0x00ed3b63, 0xff4b0008, 0x05b50608, 0x000c0015, 0x001c0016, 0x005c0028, 0x00720068, 0x1700009b, 0x44301130, + 0x01211235, 0x23ec8311, 0x15211133, 0xa6450187, 0x2d754c06, 0x2406b44c, 0x13331323, 0x2a0b8503, 0x2533010f, 0x2337013e, 0x8207010e, 0x82138202, + 0x1e232702, 0x23111701, 0xaf4c3311, 0x82332005, 0x2902821e, 0xb0231133, 0x2c560901, 0x5644582c, 0xca013007, 0x0186f466, 0x01e1fe85, 0x01fdfe03, + 0x4be7fa1f, 0x25210cdd, 0x07dd4b09, 0x0c2e0c22, 0x0811dd4b, 0x22093830, 0x2309e109, 0x81c96408, 0x0e04f1ca, 0x0e030d03, 0x02b03b04, 0x010402d0, + 0x071f080b, 0x15165716, 0x1f081557, 0x05010b08, 0x12786201, 0x0b821248, 0x03820920, 0x47125408, 0xf8627712, 0x33349f02, 0xf1fe67c2, 0x29266901, + 0xfd25293e, 0xfd9f02bc, 0x9f025abb, 0xcf58c45a, 0x3957035a, 0x0b2b0b35, 0x2c6e2c2a, 0x08020c2f, 0x2c2d1402, 0x31605d51, 0x0a290a34, 0x342d2524, + 0x0b16162a, 0x0a030802, 0x3f171720, 0x0b696429, 0x821f7c1f, 0x33408202, 0x11e00161, 0x41101041, 0x1390d311, 0x4b13144c, 0x2db62d13, 0x13220282, + 0x0b821349, 0x0263fe29, 0x279d279f, 0x82165816, 0x2c088202, 0x000061fd, 0x29000400, 0xd706ab00, 0x05534703, 0x46003a22, 0x471a5347, 0x1d261140, + 0x16171401, 0x04433233, 0x41252007, 0x21080adc, 0x5e200129, 0xb35d6665, 0x2e2e29ad, 0x0f03ad29, 0x49269584, 0x3b574169, 0x3d0f223b, 0x3b48110f, + 0x00822c4e, 0x4c3c4e35, 0x0f3a0e13, 0x013d3c22, 0xfeae012d, 0xfe2301bf, 0x474101dd, 0xb1341005, 0x598154a9, 0x4b26272d, 0x30082208, 0x5d353539, + 0x35355d66, 0x2a07c642, 0x609e020b, 0x60c460ba, 0x51030000, 0x082e825f, 0x02ff6d01, 0x1a059305, 0x55004400, 0x91826d00, 0xab009e29, 0xe300d500, + 0x47250000, 0x232c0558, 0x2e070622, 0x37362701, 0x3637013e, 0x22051b44, 0x52020e07, 0x0621098f, 0x2a018207, 0x022e2223, 0x17163727, 0x481e1716, + 0x352109d6, 0x06644401, 0x023e3737, 0x10163233, 0x3e322706, 0x34013d02, 0x0e22022e, 0x1d060701, 0x05a14f01, 0x02252582, 0x37363435, 0x05f24835, + 0x42823220, 0x2405634a, 0x15011e15, 0x476b8214, 0x13200ce1, 0x200bee47, 0x211e8325, 0x99822307, 0x22230282, 0x82062726, 0x2223232d, 0x4f822e27, + 0xb0833720, 0x4c853320, 0xc9880720, 0x55087382, 0x3e4b0216, 0x30313a3c, 0x300c1743, 0x14130f0c, 0x2b202133, 0x213a502f, 0x2f240a0a, 0x1a191d1a, + 0x22161313, 0x2c2d1f1f, 0x36472f36, 0x0c500f2a, 0x11120e0e, 0x413e1c2e, 0x02473f45, 0x3c5c3e98, 0x0e0f0f0e, 0x7d3e5c3c, 0x237d7676, 0x0e0e1e31, + 0x3145311e, 0x0082071f, 0x100fb308, 0x3bf8fd31, 0x4a1f3d59, 0x1e3e343c, 0x29685337, 0x0f0f3829, 0x4a3d343f, 0x5a3c1010, 0x42423c3a, 0x3d424279, + 0x6f3b3b37, 0x52033a3a, 0x56451616, 0x5b389029, 0x0d2d2122, 0x0a010501, 0x30260e0e, 0x24242a20, 0x11101d35, 0x36561f1f, 0x3c2c2b38, 0x3bec1011, + 0x3b3a4241, 0x35994141, 0x312e0729, 0x2a0a262c, 0x1415160a, 0x17090a1d, 0x2028412d, 0x1928191a, 0x0d060406, 0x3914150d, 0x1a482c25, 0x140e0e19, + 0x3e172c21, 0x0c111114, 0x343a0d0c, 0x5c363407, 0x582f6afe, 0x52534040, 0x2f594041, 0xb6b8feb7, 0x49331c5c, 0x482c752c, 0x341c1c34, 0x09822424, + 0x23252e08, 0x031c1a1a, 0x47341d06, 0x1151432a, 0x3a4e1307, 0x192d4026, 0x202d0c0d, 0x4e3a2620, 0x51110713, 0x24232a43, 0x38571d34, 0x37321332, + 0x27048237, 0x303a0138, 0x302e102e, 0x2a080484, 0x4041491f, 0x291b556b, 0x5a28284e, 0x14010136, 0x0f1b1212, 0x4c360f0e, 0x2b2a3230, 0x12221e1d, + 0x30304413, 0x0e3c3f93, 0x823e3e3c, 0x003f2104, 0x04370082, 0xb7007800, 0x56038806, 0x27000f00, 0x40003700, 0x30010000, 0x84233011, 0x30352a03, + 0x30153021, 0x30353013, 0x830f8a33, 0x8233201b, 0x30212217, 0x54278227, 0x0e3c0c81, 0x2e330701, 0x6cac0101, 0x53fc01c8, 0x24015b5b, 0x2b025c5c, + 0x6f3afb3c, 0x88269926, 0x43080382, 0x1005d7fe, 0x10c61041, 0xfdf50240, 0x603e02c2, 0x58c2fd60, 0x5858ee01, 0xb55812fe, 0xbe0170b5, 0x42fe7070, + 0x313a0270, 0xc53131c5, 0x00050000, 0x06ab0008, 0x006103f8, 0x003e0034, 0x00500046, 0x37000058, 0x2a329f4b, 0x23072327, 0x12163313, 0x86230117, + 0x081190a1, 0x7655fd42, 0x0d310d2a, 0x372b2b23, 0x3a2e4140, 0x620a280a, 0x563c2262, 0x38384c36, 0x0d320d27, 0x3a374b1a, 0x36341f20, 0x215d653c, + 0xd0025a3e, 0x6e3bfa3d, 0x982689e4, 0x04d7fe26, 0xc5104011, 0x28034010, 0xac201391, 0x242c824b, 0x02b5b50b, 0x0a00419e, 0x8ef7fd21, 0x82002010, + 0x00033400, 0x06ab0060, 0x006103a0, 0x002b0015, 0x2500004b, 0x46300330, 0x06240eaa, 0x35210702, 0x2013b141, 0x1d874805, 0xdb3c012d, 0x12471270, + 0x040b2b0a, 0x820b2b0b, 0x256d2509, 0x4b012595, 0x2605c741, 0x96838401, 0x48684a26, 0xb7281461, 0xdd379e02, 0x279b2737, 0x08820282, 0xd641c383, + 0x480b2007, 0xcb821741, 0x4700042a, 0xb906b700, 0x0b005603, 0x2122cd82, 0x3f462900, 0x0a1b4618, 0x23110128, 0x21352311, 0x4c4d4815, 0x2e292807, + 0x02ad292e, 0x46ad0114, 0x01250702, 0x01c86c7b, 0x0f0846fc, 0xea45c120, 0x3e022106, 0x82057942, 0x4f06207f, 0x1e340893, 0x3d002700, 0x58004e00, + 0x00007e00, 0x26272205, 0x36373435, 0x30250184, 0x07020e33, 0x05944f06, 0x954f1720, 0x1d222408, 0x4f011401, 0x12560694, 0x4f06200a, 0x0e212d96, + 0x12974f01, 0x6b7a033f, 0x0f103736, 0x28271d1d, 0x553b8a31, 0x0a12123a, 0x3147110c, 0x6e2f3051, 0xfed96d6a, 0x06924f09, 0x05130426, 0x0512050c, + 0x2212944f, 0x4f144d14, 0x0e221794, 0x954f0e3a, 0x42fd350e, 0x3d3c7f42, 0x3038363d, 0x522d232f, 0x332a2b50, 0x3535312f, 0x2213904f, 0x821a691a, + 0x11924f02, 0x2eb62e22, 0x2215924f, 0x4f082008, 0x003c0d93, 0xff170106, 0x05e90508, 0x000b0015, 0x002d0017, 0x0055004b, 0x0500005f, 0x33301130, + 0x21220382, 0x07841530, 0xc6500b87, 0x34353305, 0x013e3736, 0x1e171632, 0x07061401, 0x3227010e, 0x01823736, 0x34013d2b, 0x2e272627, 0x06222301, + 0x46018207, 0x052107bf, 0x12d14f11, 0x016ccc24, 0x03826311, 0x10fd2208, 0x26266a42, 0x26262929, 0x256b836a, 0x262a2a26, 0x26416b25, 0x0d161740, + 0x160d0c0c, 0x28264017, 0x220b873f, 0x48f4013f, 0xf8250c83, 0xc1fd9f02, 0x2b048460, 0x2c2d5703, 0x5455822b, 0x2d2c2b82, 0xa9200983, 0x612d0883, + 0x2519191b, 0x2e692e25, 0x19192525, 0x2f0c8c1b, 0x6e9f0256, 0xf5fe6eb8, 0x282c6a01, 0x002c282e, 0x0036f082, 0x06ab000a, 0x006103f6, 0x00300012, + 0x0044003a, 0x2500004a, 0x40502e22, 0x07494f06, 0x112fe6af, 0x15211133, 0x6a422c01, 0x4c29294c, 0x8541426a, 0x21e09b07, 0x6449665d, 0x02220808, + 0x10016d13, 0x82572dac, 0x58825454, 0x82582d2d, 0x2d5782a8, 0x191a1b60, 0x6a2e2425, 0x1925242e, 0x0c8c1b1a, 0x6d505520, 0x02c1280e, 0x60c2fd9e, + 0x82040000, 0x06ab2ccb, 0x006103b6, 0x00220013, 0x4366002d, 0x302306d3, 0x88213015, 0x30112603, 0x32333001, 0x24e88317, 0x2b060701, 0x05ba5201, + 0x2b262724, 0x4d581101, 0x077e5106, 0x27262724, 0x0282012e, 0x37343522, 0x230d8051, 0x17141506, 0x08068051, 0x07060724, 0x014a010e, 0x01cafea3, + 0x01edfe13, 0x3441edc3, 0x29294a34, 0x4134344a, 0x5c4beded, 0x804b2e2e, 0xde45dc02, 0x2a242705, 0x4140372b, 0xdf451717, 0x11112405, 0x4535563d, + 0x2b0807e0, 0x3f3a384a, 0x3c361a1a, 0x10115d65, 0xb759201f, 0xba609e02, 0x02dcfe60, 0x5415159e, 0x547da87d, 0x5e601515, 0x2f5b6c5b, 0x6b22fe2f, + 0x210ad645, 0x5a511717, 0x24242107, 0x08095b51, 0x2a2c2f29, 0x0c0b1514, 0x2f515c13, 0x1c1b2627, 0x0400001d, 0x63008f00, 0xa9037106, 0x2f001500, + 0x43003900, 0x30250000, 0x50333001, 0x535a06ec, 0x02062806, 0x32210107, 0x49141516, 0xdf840bd4, 0x37212322, 0x4f08a252, 0x012e0906, 0x8dedfea2, + 0x0f165916, 0x0f050b36, 0x09820b38, 0xb92f8937, 0x01c2012f, 0x1b776873, 0x19193429, 0x1b1a1f1e, 0x1c111024, 0x06f54e1d, 0x4e3c3c21, 0x633407f3, + 0xfe454603, 0xc53645ec, 0x25c83729, 0x45140145, 0x8cd2fd8c, 0x3605e44e, 0x0703142a, 0x170b0b01, 0x32354918, 0x21202d2c, 0x33377525, 0x4e373429, + 0x013409e3, 0x0508ff32, 0x001405ce, 0x00330026, 0x008a0078, 0x0500009b, 0x202ec44e, 0x41d14a01, 0x27012e32, 0x11231123, 0x011e1333, 0x33113317, + 0x35212311, 0x0e260482, 0x27260702, 0x10823736, 0x02153008, 0x3d573870, 0x222c1010, 0x902a5523, 0x222d2d39, 0x0c171721, 0x0a010501, 0x1f31251c, + 0x1e35472b, 0x35573d22, 0x7542423a, 0x44024141, 0x4a393b3f, 0x13210888, 0x06884a34, 0x230a0b22, 0x0807884a, 0x1f1f233c, 0x2f362c2c, 0x0f293747, + 0x0e0e0d4f, 0x1d2d1211, 0x4045413e, 0x08b2fd47, 0x68030e34, 0x340edb79, 0x79670308, 0x08bc4301, 0x123e3417, 0x56554002, 0x25f8a3a5, 0x3c303044, + 0x284f8149, 0x1447080d, 0x1d0f1b24, 0x332f4d36, 0x59223c53, 0x3c0d3d3e, 0x0d3c3f3f, 0x3d013e3d, 0x2e072935, 0x0a262b31, 0x14160a2a, 0x09091e14, + 0x28402d17, 0x271a1a20, 0x06050619, 0x15140e0c, 0x482c2538, 0x0e0e1a1a, 0x172b2115, 0x4a10153f, 0x35080659, 0x035c3633, 0x1b63104a, 0x9e0200fe, + 0x631b8dfe, 0xfd010210, 0xf5015a62, 0x13433818, 0x5d5c3a02, 0x005abcfd, 0x001b0003, 0x03e506ab, 0x00390061, 0x007f005c, 0x47492500, 0x0568430d, + 0x26272622, 0x54106943, 0x07260aea, 0x010e0706, 0x1d472221, 0x013e2305, 0xd0513233, 0x5636200f, 0x22a2055b, 0x54100127, 0x320d2a77, 0x0570490c, + 0x2c069143, 0x11113131, 0x4c36573c, 0x0c273837, 0x0b734933, 0x10112308, 0x025a1f1f, 0x13958429, 0x68252413, 0x22765742, 0x120f3d0f, 0x584e3a48, + 0x4c3c4e58, 0x0f3a0f12, 0x1e9e7922, 0x430b8b49, 0x2e2306b4, 0x432c512e, 0x17230bb5, 0x552a2d17, 0x272d0611, 0x1d1c1b26, 0x4154a9b1, 0x2e2c2c40, + 0x053b4e4d, 0x200a0051, 0x281a9a52, 0x00050000, 0x06ab004f, 0x092b55b1, 0x55400021, 0x0122342b, 0x02823521, 0x15212808, 0x21070206, 0x603d5401, + 0x23232222, 0x79602222, 0x24244460, 0x483c6044, 0x4f904e4e, 0x01de014f, 0x2c2b5709, 0x57a35757, 0x032e0589, 0x0141fe60, 0x01cdfe42, 0x36d636a6, + 0xd9544c01, 0xfd2a082b, 0xea015bbc, 0xfe525b59, 0x070052ba, 0x08ff2e00, 0x1505d206, 0x33001c00, 0x53004700, 0x73005d00, 0x00009100, 0x30070637, + 0x034c3015, 0x30113205, 0x36373633, 0x06333037, 0x17121607, 0x01012e23, 0x0ae54511, 0x230cf145, 0x33302726, 0x20062949, 0x22cf8233, 0x57013011, + 0x2e21187d, 0x2df34701, 0x42f73608, 0x046d6d1a, 0x5a5a1848, 0x32ae417f, 0x278316ba, 0x01a50192, 0x01c0fead, 0x01ddfe23, 0x74220140, 0x6d1b7c73, + 0x6c1b031b, 0xa418781b, 0x014afb2d, 0x65655e20, 0x075d505e, 0x14481720, 0x41230829, 0x02d01e4b, 0x5cacfe9f, 0x4d6d6d1e, 0xe8fe4bce, 0xfee13d21, + 0x609f02e2, 0x60c460bb, 0xcbcc0801, 0x8232c732, 0xfe292702, 0xf6fe4ee2, 0xf8476203, 0xb5fd210d, 0x212d3748, 0x83620000, 0x0005358f, 0x0608ffca, + 0x00150536, 0x0017000f, 0x00660033, 0x05000092, 0x2a11054e, 0x33300706, 0x012e0526, 0x4e302327, 0x33260549, 0x011e1330, 0xe7493317, 0x30232106, + 0x21106359, 0x62592726, 0x05ad5a0a, 0x230d6159, 0x33270226, 0x16214282, 0x078e5317, 0x27069c53, 0x33373637, 0x23070206, 0x262f6c82, 0x07062327, + 0x0207010e, 0x3afb3df8, 0x4e98266e, 0x30340770, 0x0230c631, 0x08340e19, 0xdb796802, 0x030e3408, 0x5bfc7967, 0x48057c44, 0x2e35050e, 0x621e1e3a, + 0x563d2262, 0x38374c36, 0x1a490327, 0x1f3a384a, 0x07eb4d20, 0x90015e08, 0x6e1a6a1a, 0x18092e0d, 0x24080317, 0x0f360b0a, 0x0a360e79, 0x03092309, + 0x6b232331, 0x7a1b6e1c, 0x1910390d, 0x19190219, 0xf80d3b10, 0x0170b6b6, 0xfe7070bf, 0x3b027041, 0x34949494, 0xfd0f641b, 0xfe9f02ff, 0x1b640f8d, + 0x61fd0102, 0x343d5703, 0x2b0b2f0c, 0x313a1616, 0x060b2e27, 0x06945905, 0x321b1a35, 0x28224102, 0x2a2c1717, 0x130d0a2a, 0x4d2f515c, 0x830b1e36, + 0xdb3b334b, 0x1e706f2d, 0xdc2b2998, 0x2bdc3c3c, 0xde259425, 0x5f83a2a1, 0x3fea3223, 0x37008266, 0x0032ea3f, 0xff180104, 0x05e8050e, 0x001b000f, + 0x0043003a, 0x25000057, 0x221a7d41, 0x54233021, 0x072405fc, 0x37013e23, 0x98430a82, 0x010e2708, 0x01011e07, 0xc5433311, 0x41112007, 0x33200676, + 0xb5432782, 0xcd360806, 0x030c320c, 0x0ddb7867, 0x68030c31, 0x7f3f0379, 0x021b6d1b, 0x781b6b1b, 0x23249124, 0x1980238b, 0x1a021966, 0x24781a67, + 0x9325248c, 0x016cd9fb, 0x26010111, 0x8043269a, 0x77230807, 0x81279a27, 0xfd185f17, 0xfe9e02ff, 0x175f188e, 0x62fd0002, 0x2c2cb22d, 0xe5392db2, + 0x36db3639, 0x8229a729, 0xda363e02, 0x03e63936, 0xfd9e0229, 0x080160c2, 0x430f0144, 0x3131c732, 0xfe4332c7, 0xf6fe43f2, 0x22008200, 0x82360106, + 0x82ca20f3, 0x00142ff3, 0x002a001e, 0x00460032, 0x05000052, 0x57442330, 0x14152205, 0x20cb8206, 0x0f195d17, 0x07232722, 0x50083065, 0x0221070b, + 0x0e3f4f03, 0x21030222, 0x3a0b704e, 0x21016da3, 0x4142685a, 0x79186118, 0x85165a16, 0x2f2e2aac, 0xb603ac29, 0x423bfa3d, 0x10340a66, 0x10c51040, + 0x6e79fd40, 0x4811716e, 0x0a2b0b11, 0x0b2c0b04, 0x6e240982, 0x68016f70, 0x08099c4e, 0x9e02f220, 0x5f485d6c, 0x2fbc2f14, 0x5b2db52d, 0x282e292b, + 0x96fed52b, 0x0170b6b6, 0xfe6f6fbf, 0xfd507041, 0x59012506, 0x4f014f01, 0x240b554f, 0xb1feb1fe, 0x07ae5402, 0x00020030, 0x066300a9, 0x00a90357, + 0x0033001d, 0xd3412500, 0x51062005, 0xb641058d, 0x0516210e, 0x49050d50, 0x40080819, 0x15303330, 0xa0760330, 0x04139027, 0x18966464, 0xbc3335c2, + 0x7f20a017, 0x81200220, 0xbe179620, 0x2d018a33, 0x411c0aeb, 0x5003164f, 0xccce4195, 0x20ed4163, 0x0127a7a7, 0x014f5333, 0xd0342426, 0x34028234, + 0x4fdbfe24, 0x0271d7d7, 0x54461e72, 0xa1480217, 0x712bfd47, 0xe71e1000, 0x06348101, 0x02ff2801, 0x1a05d805, 0x25000f00, 0x56004300, 0x7c007400, + 0x4f11d353, 0x0120335b, 0x512ba14e, 0x022807a6, 0x01c76d67, 0x417301fb, 0x2107704f, 0x824f6b82, 0x416b2205, 0x09794f27, 0x40272725, 0x820d1616, + 0x16162c00, 0x41d0fd40, 0x29294c6b, 0x87416b4c, 0x41262107, 0x41341c87, 0x163f2826, 0x0d0d0c17, 0x3f16170c, 0xc86ced02, 0x4c01fc01, 0x3605cf51, + 0x2b2db7fd, 0x5554822c, 0x2d2c2c81, 0x812c2c2d, 0x2b2c82a9, 0x4e1a612d, 0x252106c0, 0x05c04e24, 0x4e252421, 0x1a2406cd, 0x572d0103, 0x58232e83, + 0x82582d2d, 0x8a57202c, 0x09c24f2b, 0x2205f94e, 0x52e8011a, 0x07360833, 0xfdfe3300, 0x0905c206, 0x16000c00, 0x61003c00, 0x9c008600, 0xb95aa200, + 0x0f8b6119, 0x2014f451, 0x06835a01, 0x5a010b21, 0x24a51a7f, 0x1614112c, 0x11353632, 0x07141133, 0x934d020e, 0x5b112005, 0x0124063e, 0x2b2c5709, + 0x2a08284a, 0x5e3aad02, 0x23232121, 0x612f2121, 0x1d5205b2, 0x390e390c, 0x0269200e, 0x010501c3, 0x081f080b, 0x1f078282, 0x04010b08, 0x13786201, + 0x29058b5a, 0x12082007, 0x62771247, 0x2282c0fb, 0x1d820c20, 0x08828226, 0x020c081e, 0x12222283, 0x33821249, 0x20080825, 0x82481207, 0x64013322, + 0x65388e38, 0x58350c0c, 0x0c36577f, 0x6636020c, 0xc15af8f4, 0xb120080f, 0x842a2b27, 0x2b2a83b6, 0x25251413, 0x0820084a, 0x535e3239, 0x365e53a1, + 0x0821093c, 0xa8014f4a, 0x2305925a, 0x1001f0fe, 0x2117905a, 0x23a1ff04, 0x9f023208, 0x4d514efe, 0xb201514d, 0x32445efe, 0x1f1f4132, 0x44323241, + 0x61fda201, 0xbbfd9f02, 0x0000005a, 0xff4d0104, 0x05b30502, 0x0017001a, 0x008b0051, 0x059f529d, 0x4a09bb50, 0xaa5009d5, 0x23414d14, 0x4d0efe48, + 0x0120297a, 0x2110f14e, 0x5a468501, 0x4b013809, 0x0c2a7654, 0x2a240c32, 0x4240362c, 0x0a3b1717, 0x31610a28, 0x48111031, 0x0c2306d9, 0x621a0c33, + 0x3b290653, 0x10105d65, 0xfd5a1f20, 0x2332848b, 0x2b2b230d, 0x272e3286, 0x3131620a, 0x563c1111, 0x37384c36, 0x32890d28, 0x82643c21, 0x1f1f2b32, + 0x0ce2015b, 0x68020d31, 0x0682db79, 0x79670323, 0x069246f2, 0x343d0b32, 0x2b0c2e0c, 0x31391616, 0x0b171827, 0x12020702, 0x250d5e4d, 0x17172822, + 0x5e4d2b2c, 0x6203210b, 0x012133b1, 0x0f3c487e, 0x0000002f, 0x00cf0002, 0x03310654, 0x003400b8, 0x10d94e4a, 0x666a2620, 0x08805c05, 0x52095e4a, + 0x0e220740, 0x35430102, 0x2787080d, 0x1135022e, 0x946a0202, 0x0f3f0f34, 0x4436352d, 0x493a5250, 0x3d7b2525, 0x6b4c2a3d, 0x46465e44, 0x21045b31, + 0x2847465d, 0x44202128, 0x29747e4b, 0xf901704e, 0x8551c552, 0x764b1110, 0x4b3b3bae, 0x404d5521, 0x360f3a0f, 0x3d481b1c, 0x070e3a31, 0x393a1706, + 0x3e593865, 0x3e212121, 0x322a0351, 0x34381c1d, 0x100d1a1a, 0x3a657318, 0x03254461, 0x6bfcfd54, 0x026b6c6c, 0x5c11fe04, 0x2b574443, 0x86581615, + 0x82ef015c, 0x732d10db, 0x0a393d07, 0xf60608ff, 0x0e001505, 0x2b001800, 0x53004900, 0x63005d00, 0x30010000, 0x09505c33, 0x7e5a2b20, 0x2b262306, + 0xe24c1101, 0x146b5c2c, 0x1133113a, 0x76021521, 0x256841ed, 0x25292925, 0xed416825, 0x5c5c4bed, 0x49fe804b, 0x3c3a985b, 0x292ba701, 0x7ea77e2a, + 0x602b292a, 0x5b6b5b5f, 0x0221fe5f, 0x82572df7, 0x57825455, 0x2007822d, 0x290682a9, 0x19191b61, 0x692f2425, 0xbf4c242f, 0x5c0c8807, 0xfd2e0e82, + 0xfd9f02c0, 0x050061c2, 0xab000300, 0xa756fd06, 0x5659200a, 0x052034a7, 0x2024bd4c, 0x11c05608, 0x200dae6b, 0x06c056a4, 0x744c9620, 0x83072105, + 0x2007744c, 0x0f006761, 0x3a2bd456, 0x134c13a7, 0xfe124b13, 0x121101ef, 0x4a13124a, 0x0263fe13, 0x279c279e, 0x82165916, 0x22088202, 0x820062fd, + 0x00033100, 0x06ab0022, 0x006103de, 0x0033001b, 0x1300006c, 0x561c4153, 0x114c15e7, 0x012e2114, 0x5c105259, 0xd7200fbc, 0x28054d53, 0x0c320cdb, + 0x01796803, 0x0abc5640, 0xb85c4c20, 0x2a02212f, 0x240a214b, 0xfd010218, 0x09a14b62, 0x5c080f6e, 0x250827b5, 0x01070000, 0x0502ff7c, 0x001a0584, + 0x005b0037, 0x00750068, 0x00a9009c, 0x010000d5, 0x010e2130, 0x37363307, 0x8866023e, 0x07012e07, 0x27222306, 0x2627012e, 0x17163727, 0x7917821e, + 0x22220515, 0x14820706, 0x37013e23, 0x3a5e6621, 0x6b07bf66, 0x1e220d24, 0x246b3301, 0x35212117, 0x29607182, 0x23262405, 0x83020e22, 0x233c8283, + 0x17163202, 0xc9790182, 0x08c28206, 0x26032137, 0x0c03d7fe, 0x0d0b0602, 0x1c2b200d, 0x1f364b2b, 0x2d3d1010, 0x232d392c, 0x13143423, 0x0e0c4f10, + 0x1c2b230d, 0x3b41413b, 0x0f12342b, 0x11040f3c, 0x017c0104, 0x245d6669, 0xfe3b3b37, 0x3c583717, 0x232c1110, 0x90295523, 0x212d2e38, 0x0c171622, + 0x097d6b01, 0x6b221e21, 0x5908067d, 0x50034141, 0x8f2339fe, 0x1b1b3324, 0x291c323a, 0x1006141f, 0x120b103f, 0x664c3812, 0x0e1c1b50, 0x1d2d190f, + 0x691a201e, 0x0152011a, 0x289e274e, 0x17101014, 0x4e361c0c, 0x2a2a3231, 0x0a10113d, 0x1516210a, 0x10143e18, 0x410d1911, 0x413a0b3a, 0x09021421, + 0x3ef93e02, 0x4e6657fd, 0xd1012137, 0x2d0be66b, 0x28282726, 0x01352d2e, 0x1b231401, 0xe66b1d10, 0x683f0812, 0x2e207f20, 0x0c2e2a2a, 0x1c113831, + 0x19061627, 0x1d1d2006, 0x1a1e1b2e, 0x2b25241b, 0x1c3e4528, 0x5a171c1c, 0x00000017, 0xff7a0106, 0x05860502, 0x0028001a, 0x006c0036, 0x009f0092, + 0x680000ca, 0x3f680c40, 0x21252226, 0x18834206, 0x37013e24, 0x345f031e, 0x07386906, 0x25211322, 0x6d14a75e, 0x2122196b, 0x88613635, 0x1e454206, + 0x45685220, 0x5a393505, 0x0d2c2222, 0x0e0a0403, 0x1f30260e, 0x3424242b, 0x1e11111e, 0x08054468, 0x10103d45, 0x41413bec, 0x42423a3b, 0xd6fe3403, + 0x0b070c05, 0x2a210c0d, 0x364a2b1d, 0x3e0f101f, 0x2d392c2d, 0x13352322, 0x340e1014, 0x221b0d0d, 0x403c1c2b, 0x342b3c40, 0x0f3c0e12, 0x7c011207, + 0x583810fd, 0x8211103c, 0x29552c23, 0x2e2d3890, 0x17162221, 0x6d03030c, 0xcd5e07c7, 0x41412205, 0x05494275, 0x336b6b25, 0x423b1c1b, 0x0f210548, + 0x07484240, 0x0e1b1c2e, 0x1e2c190f, 0x691b201d, 0xb352011a, 0x222d3068, 0x42a449f2, 0x0a241475, 0x21140a2a, 0x230b7642, 0xb9010174, 0x212d3b42, + 0x3a42605f, 0x06003824, 0x08ff3900, 0x1505c706, 0x1c000f00, 0x32002800, 0x7a005700, 0x58050000, 0x303407d1, 0x16333013, 0x26031712, 0x06233027, + 0x30073007, 0x01012e33, 0x5315536e, 0x25750f99, 0x14735313, 0x1e171625, 0x44331701, 0x113c0588, 0x0a1e0423, 0x06e20624, 0xc9640a24, 0x21872182, + 0x0c0b0af1, 0xb13c0a0b, 0x9bfc290b, 0x080d306e, 0x3bad0230, 0x2421215d, 0x2f212124, 0x33553b2e, 0x4a0d1f34, 0x44343f11, 0x35444c4c, 0x380e1243, + 0x026a1f0e, 0x010501c4, 0x0421090c, 0x22038282, 0x0c820c09, 0x3678623e, 0x05210937, 0x05171808, 0x62771552, 0x187f23f8, 0x02237f18, 0x41fe709f, + 0x31e00170, 0xd3240082, 0xa5018c24, 0x211d4e53, 0x4d532907, 0x52163f12, 0x01f0fe09, 0x16510810, 0xfe124b14, 0x769f0263, 0x0e5d1975, 0xb10b4242, + 0x0061fd2f, 0x67410700, 0x00162c08, 0x002a0020, 0x003f0035, 0x7f870064, 0x06230807, 0x6c321507, 0x0e20061c, 0x2305a571, 0x34013d36, 0x200ca371, + 0x13ff7301, 0x76057856, 0x75411e9b, 0x02220822, 0x4e100198, 0x1d343750, 0x0a221817, 0x39281609, 0x66d5fe22, 0x262625a7, 0x2197a725, 0x97212525, + 0x7d413bfd, 0xa7013f50, 0x48415459, 0x0b0b0c05, 0x211c1c28, 0x1c33472b, 0x2c2b275a, 0x2457272c, 0x23292b28, 0x85411d01, 0x00003451, 0xff270105, + 0x05d90502, 0x002a001a, 0x003c0034, 0x827d0071, 0x09597314, 0x33023e24, 0x71761632, 0x10e76a19, 0x650e7b54, 0x5d65085e, 0x0d7c5d0d, 0x210a0c5b, + 0x8676f402, 0x7302261f, 0x6f3afb3c, 0x07ed6be5, 0xc6114026, 0xb6fd4010, 0x6b12ea76, 0x6426135d, 0x5a3f215e, 0xd3542e01, 0x768c2009, 0x59210796, + 0x0896762d, 0x0808652e, 0x1f2f1010, 0x9bfe5d34, 0x9e02b6b6, 0x200b345b, 0x0a51544e, 0x020b2f22, 0x540ef376, 0x5c250982, 0x374d2f51, 0x09fd6f1d, + 0x0200003d, 0x16ffce01, 0x0e043205, 0x3b002100, 0x30050000, 0x26272223, 0x2e353035, 0x82262701, 0x05b04208, 0x1617322f, 0x15011e17, 0x15070214, + 0x3e322733, 0x05987401, 0x23022e22, 0x0808436f, 0x04021e28, 0x28558e70, 0x2f885527, 0x3e191b2f, 0x50503938, 0x395050c4, 0xa0bb3e38, 0x603af09a, + 0x13131244, 0x3a604412, 0x09855f3b, 0x2cea5f31, 0x0b4c492b, 0x5b41414d, 0xc27f735c, 0x82224142, 0x42413400, 0xfee17fc2, 0xf2671cfc, 0x37374c28, + 0x37459e45, 0x8a284c37, 0x0300290a, 0xb7001300, 0x5603ed06, 0x3d220782, 0x61675100, 0x61032005, 0x944b0f5f, 0x30032206, 0x07535803, 0x30233023, + 0x0f2b6c11, 0x30231123, 0x22018221, 0x84013035, 0x21230805, 0x02061530, 0xe3302107, 0x5d1772cf, 0x5b170d17, 0x8a227017, 0x01090322, 0x080c0105, + 0x8282081e, 0x44071f08, 0x12360597, 0x20071249, 0x1f080808, 0x12481208, 0x9a026277, 0x410141fe, 0x7662cefe, 0x01b73206, 0x329b0103, 0xc83131c8, + 0xeefe4432, 0x01fdfe45, 0x21874b9d, 0x28097d62, 0x00040000, 0x06ab004c, 0x26e382b4, 0x001e0014, 0x835f0028, 0x1ddb5de5, 0x2107a642, 0x994a0111, + 0x5db92032, 0x192106e4, 0x08e45d60, 0xac2a2e24, 0x56681302, 0x58032707, 0x0c03d7fe, 0x244a0703, 0x0e132123, 0x2006244a, 0x0eec5db7, 0x292e2827, + 0x96fed52b, 0x065a6802, 0x9e28402a, 0x10101427, 0x351d0c17, 0x210fc549, 0xc5491011, 0x8200200e, 0x01043000, 0x0502ff73, 0x001a058d, 0x007d004c, + 0x72e000b4, 0x17201717, 0x2106e24a, 0x01840607, 0x011e1522, 0x8405f24a, 0x2306220d, 0x05115722, 0x82372721, 0x0c227217, 0x210a324b, 0x596b2627, + 0x06364b06, 0x36370123, 0x85558632, 0x010e2354, 0x68412107, 0x8a012033, 0x1d514964, 0x67500221, 0x62081192, 0x1d1d2828, 0x0a0a1110, 0x17181212, + 0x13331d1a, 0x110b0b13, 0x2c1f2011, 0x232f362c, 0x141c1b24, 0x0d4f0f15, 0x2d12111c, 0x45423d1d, 0x80034740, 0x8f2439fe, 0x1b1c3323, 0x1b321e1d, + 0x0b0f0f2a, 0x4010050a, 0x13110b0f, 0x66262637, 0x0e1c1b51, 0x1616190e, 0x1a201e1d, 0x52011b69, 0xd6fea7fd, 0x49030b03, 0x37350893, 0x3e100f1e, + 0x2d392d2c, 0x14342322, 0x0d4e0f14, 0x2c220e0d, 0x0692491b, 0x4c3b0f21, 0x02240507, 0x2438fe50, 0x2107b34b, 0xb34b1e2a, 0x854b2008, 0x4b18205e, + 0x357208b3, 0x0c270810, 0x2116170b, 0x1a20291f, 0x0c141419, 0x0604060d, 0x1d14151a, 0x242c251c, 0x0e191a24, 0x110a0a0e, 0x17161511, 0x7222143e, + 0x7520093d, 0x2609614b, 0x0e111c1c, 0x4b13140e, 0x0d210764, 0x05654b0e, 0x1f442923, 0x05664b1f, 0x4c460521, 0x62202b22, 0x2028bb4b, 0x06274f04, + 0x0f005628, 0x37002e00, 0x5b5e8f03, 0x243f6f13, 0x02260526, 0x011d3327, 0x22354618, 0x158a4518, 0x5fa638c9, 0x461826a6, 0x1520194a, 0x153d4618, + 0x3d370122, 0x14774518, 0x45181494, 0x119111b3, 0x26a638a6, 0x35215fcc, 0x3f461833, 0x3a012810, 0xc901b266, 0x706b0601, 0x282105f6, 0x12f67027, + 0x18eb0123, 0x0346185f, 0x03012d4f, 0x040c040e, 0x380e040e, 0x390e7c0e, 0x46180782, 0x01285204, 0x18621964, 0x0f390f7a, 0x0b3a6b82, 0x0f030e04, + 0xfc020f3d, 0x4502bbfd, 0xb0fd5959, 0x3c7f4242, 0x38373c3d, 0x7a71302f, 0x34302107, 0x200a7a71, 0xda45104a, 0x002f5503, 0x00050000, 0x06ab0047, + 0x006103b9, 0x822f001e, 0x0058280b, 0x01000070, 0x6c07010e, 0xc67a0ad7, 0x82332005, 0x06d96c14, 0x20243e7b, 0x3925a405, 0x3d0f1001, 0x046c6c10, + 0x1e104010, 0x287e1e79, 0xad2b289f, 0x8822832b, 0xd27a6302, 0x06062718, 0x31100f07, 0x209e5202, 0xf0012208, 0xcf124612, 0xacfe9e02, 0x25145115, + 0xbc2f2491, 0xfefe412f, 0xfed13441, 0x40592ef0, 0x40525340, 0x06797a41, 0x49341b35, 0x482c762b, 0x341b1b34, 0x762c2424, 0x1b23252b, 0xa35c1b1a, + 0x00002224, 0x08934e06, 0x42002f3a, 0x8d006300, 0xa0009800, 0x30050000, 0x30353021, 0x36373637, 0x34353035, 0x2a0adb49, 0x013e3736, 0x17011e32, + 0x4a141516, 0x07250581, 0x2107010e, 0x052a5605, 0x82343521, 0x3637211d, 0x8306937c, 0x05554d3d, 0x82272621, 0x85222001, 0x05dd752f, 0x16171623, + 0x51421801, 0x22f74e08, 0xf2791220, 0x4503240c, 0x53d639fe, 0x5a550911, 0x1c1c2c05, 0x3750664c, 0x0c0d0f0e, 0x531d1716, 0x01260613, 0x2e2e3f49, + 0x00820e3c, 0x2e3c2308, 0x767c3f2e, 0x19227c76, 0x070f1018, 0x0f070606, 0x45191810, 0x100f1918, 0x06070706, 0x18190f10, 0x0e4f89fe, 0x3d742620, + 0x726e3afb, 0x0c0f4f72, 0xbf68f22c, 0x2f292a2e, 0x1138310c, 0xc349261d, 0x17172a06, 0x24351e1b, 0x23282b25, 0x07c34922, 0x18176722, 0x33072e7c, + 0xfeb71817, 0x0e5cb6b8, 0x231a1a0e, 0x2c752d24, 0x1a1a2424, 0x0e29a182, 0x24231b1a, 0x242d752c, 0x210e8323, 0x2d4f7703, 0x4f01231f, 0x2f4f4f01, + 0x0020080a, 0x01060000, 0x0568fe0b, 0x000f05f5, 0x0039001f, 0x004b0041, 0x006f0055, 0x23300100, 0x013d2622, 0x2014fd4e, 0x1afd4e06, 0x2007f667, + 0x12877701, 0x41180520, 0x2e080d65, 0x33112311, 0x37363313, 0x02231133, 0x35395fe5, 0x201f5b38, 0x262a1211, 0x82353625, 0x26263536, 0x676b7c29, + 0x2d4027a1, 0x0d0c0c0d, 0x8227402d, 0x0d0c2d09, 0x402d0c0d, 0xc76ded02, 0x3bfbfb01, 0x2b0cff79, 0x09051504, 0x62190923, 0x19621818, 0x05390882, + 0x06b48067, 0x677b595a, 0x313a68fe, 0x2b340732, 0x4c3e3d2b, 0x2b2c8155, 0x3d008217, 0x55812c2b, 0x4513ad96, 0x25331aa2, 0x2e6a2d25, 0x1b332425, + 0x2524331b, 0x252d6a2e, 0xec673325, 0x24012108, 0x2d09e276, 0x2b282e29, 0x1249123e, 0x2d2db32c, 0x08822cb3, 0x02fffd39, 0xababfe9e, 0x0062fdaa, + 0x00020000, 0x06540085, 0x00b8037b, 0x644d0034, 0x1a41357f, 0x133d0813, 0x01231133, 0x359469b7, 0x2c103e10, 0x51443536, 0x26493951, 0x3e3d7a25, + 0x436c4c2a, 0x3145465f, 0x5d21035b, 0x27284846, 0x4a442120, 0x4e29757e, 0x06fa0371, 0x130b2c0b, 0x81242381, 0x27088213, 0xe1a18206, 0x829ae007, + 0x2a2d8c64, 0x5a178f02, 0x40ec2217, 0x8222ec40, 0x7ffd3808, 0x56fe4603, 0xbafcaa01, 0x00030000, 0x066300b5, 0x00a9034b, 0x7b15000b, 0x092119ad, + 0x11d57601, 0x6801b63c, 0x747f7f74, 0x3934d8e1, 0x03d83439, 0x8cedfe5a, 0x0a175817, 0x0f050f37, 0x09820a38, 0xba2e8834, 0x4603632e, 0xfe89e689, + 0x36c501b2, 0x36323a32, 0xa17631fd, 0xc8252205, 0x0aa17637, 0x00820020, 0x20071b50, 0x06bf4561, 0xbd457e20, 0x34ce4e46, 0x10152108, 0x6d6d0f3d, + 0x10401003, 0x7f1e781f, 0x2b27a028, 0x22832bac, 0x3f630287, 0x0e0f3b5c, 0x5c3b0f0e, 0x28054344, 0x0d0d1f31, 0x3145311f, 0x053b441f, 0x1a033122, + 0x45325050, 0x01213edf, 0x2c7150ef, 0x5b01053a, 0xa50502ff, 0x34001a05, 0x48003e00, 0xa2008100, 0x22050000, 0x37362726, 0x54079f79, 0x0225103f, + 0x23012e07, 0x0f3f5422, 0x14654b18, 0x01694589, 0x0d597629, 0x2a0eb157, 0x010e1716, 0x76555002, 0x7f26252a, 0x0b2314c7, 0x7f091e1a, 0x01210dc8, + 0x0545442d, 0x2aacb335, 0xac2a2e2e, 0x76542cfe, 0x2425262b, 0x40372b2a, 0x69161842, 0x0d211140, 0x0e406919, 0x08057476, 0x69242521, 0x22755841, + 0x48112e2d, 0x58584e3b, 0x134b3d4e, 0x79224d0a, 0x23343dfd, 0x16162b23, 0x54273139, 0x0a230e8c, 0x54081b16, 0x4b18128d, 0x292507bf, 0x012b282e, + 0x693d8918, 0x2a082650, 0x4055a9b1, 0x2d2c2d40, 0x19194b4d, 0x5d6a3930, 0x3e695d66, 0x492f0631, 0x00000052, 0x002e0004, 0x03d206b7, 0x000f0056, + 0x18360027, 0x5e15e741, 0x132015d5, 0x25182d61, 0x01c86c62, 0xad5570fc, 0xed832b09, 0x25256940, 0x25252828, 0xf6604069, 0x18812005, 0x2009e841, + 0x05bb7002, 0x2a9e0227, 0xa87d2a2a, 0x2705827d, 0x6c5b5e60, 0x22fe5e5b, 0x002d9e82, 0xff4b0106, 0x05b50502, 0x0015001a, 0x30ab821e, 0x016e0049, + 0x050000d8, 0x21303530, 0x12363530, 0x053d7437, 0x2330152e, 0x25301530, 0x11303330, 0x010e2330, 0x2007145e, 0xd344183e, 0x48012008, 0x2e23073d, + 0x7e062201, 0x1e240719, 0x26220102, 0x6d08006a, 0x07220681, 0x46181d06, 0x352b0e81, 0x0f231133, 0x0e0f1501, 0x840d0f15, 0x91088205, 0x2e05270b, + 0x35372701, 0x02840b3f, 0x05840a20, 0x06200b88, 0x073c1793, 0x15331133, 0xc9fea102, 0x8e2db52d, 0xbffe5c5c, 0x8e2307db, 0x5c3eaf02, 0x1d0f0e3c, + 0x09bd4418, 0x00820720, 0x310f0f26, 0x0f103145, 0x07390982, 0xeefd311f, 0x49279683, 0x3b584168, 0x3c0f213b, 0x3b481110, 0x2d2d2c4d, 0xd849182c, + 0xbc2f220a, 0x3b4c1808, 0x222eeb2e, 0xd20b2c0b, 0xd202206e, 0x01012453, 0x18f2a3a6, 0x290ea54a, 0x582fe2fe, 0x51524140, 0x45185883, 0x243b07aa, + 0x2b752c25, 0x1a1a2425, 0x1a1a1c1c, 0x752b2524, 0x3324252c, 0xb106031c, 0x188055a9, 0x2c0f6148, 0x09313e34, 0x29490923, 0x015a0b29, 0xd0b1d4f5, + 0x280a2254, 0x8953d00a, 0x55b64150, 0xfd235f86, 0x82005abc, 0x02350800, 0x5f025c00, 0x7105a406, 0x1b000300, 0x21130000, 0x27012115, 0x33351737, + 0x07173715, 0x17231533, 0x23152707, 0x37270735, 0x065c3523, 0x04b8f948, 0x8c2a8cc2, 0x2103823c, 0x0887c6c6, 0x46a50224, 0x118c2202, 0x00261a84, + 0x5c000100, 0x5b8225ff, 0x1400d622, 0x38085982, 0x3e012c32, 0x34113505, 0x022c032e, 0x019d5c23, 0xf6050134, 0x5b7fadc7, 0xaa6f3c2e, 0xfef8fecc, + 0xada9fee5, 0x5633a502, 0x7a837e72, 0xf90e4766, 0x7d5b154f, 0x68869190, 0x2047823e, 0x2447895b, 0x012c2201, 0x2047832e, 0x2747823e, 0x9da40633, + 0xfbfeccfe, 0x01254889, 0x011b0108, 0x82489657, 0x000532ef, 0x0638ff2a, 0x009405d6, 0x00400004, 0x014b0044, 0x2b9b8208, 0x21072130, 0x030e2204, + 0x07040e07, 0x2e06eb57, 0x33363435, 0x041e1732, 0x37033e32, 0x8337043e, 0x1716240c, 0x83141516, 0x032e391e, 0x21152103, 0x05231501, 0x25352325, + 0x33023e34, 0x36171632, 0x17031e32, 0x14212682, 0x21058306, 0x05833236, 0x013e1725, 0x82033e37, 0x84362047, 0x22288340, 0x8631011e, 0x2317840c, + 0x021e3233, 0x5b852983, 0x85141521, 0x27262961, 0x3435012e, 0x27022e35, 0x0e2e6e83, 0x27222301, 0x0607010e, 0x07062722, 0x0c86030e, 0x02200683, + 0xb0840e82, 0x03862683, 0x82022e21, 0x273b08ba, 0x35010e34, 0x2627010e, 0x16172627, 0x06273435, 0x36373437, 0x5c262223, 0xfe46e401, 0x54e00462, + 0x2f4f5061, 0x3c15070f, 0x522c5b40, 0x4da7934b, 0x151d0835, 0x2f0f0f1b, 0x9a61504f, 0xddd4081b, 0x62fee401, 0x019610fe, 0x96000100, 0x0e047afc, + 0x1b131a24, 0x171f0e0b, 0x0202080c, 0x11151b11, 0x04070602, 0x10072e38, 0x020c0e10, 0x06030810, 0x0a0c130c, 0x530b0609, 0x040d1339, 0x0c11282c, + 0x2f411e18, 0x0d151d0c, 0x241a0e04, 0x27142013, 0x11140c1e, 0x0909090a, 0x2c21492f, 0x121a1301, 0x1004180f, 0x25210f06, 0x2a100f14, 0x10171c19, + 0x21091224, 0x132e0e0d, 0x18133b1a, 0x0d060707, 0x0e290938, 0x111a141b, 0x122f340d, 0x19100807, 0x160b0a11, 0x1c101010, 0x22180f17, 0x08221a0c, + 0x030d1611, 0x06171601, 0x021a0327, 0x01100801, 0x08020103, 0x021a1207, 0x2fbb6eb9, 0x173c5242, 0x424a1d09, 0xa72d184b, 0x0f0d4d4e, 0x17161d15, + 0x2f42523c, 0x90081897, 0x016e5801, 0xf0f0fa25, 0x1d0da0fa, 0x1b151a29, 0x1d110e07, 0x26170e11, 0x0c020b3a, 0x0505070d, 0x0b091037, 0x08040910, + 0x040d670c, 0x3b1f2741, 0x0e186037, 0x121d1107, 0x15092617, 0x5201100f, 0x04380443, 0x34010512, 0x10171108, 0x0b122d0c, 0x3e080403, 0x2f070b42, + 0x0b24111d, 0x14111045, 0x1d0f331c, 0x0a5d090e, 0x18180c4d, 0x022d410c, 0x17211617, 0x0c110508, 0x2226141b, 0x19220e05, 0x02071703, 0x02030c0c, + 0x04110205, 0x04020202, 0x24038201, 0x171a0702, 0x07b34300, 0x00492508, 0x000f000b, 0x33150100, 0x23152315, 0x33352335, 0x15210135, 0xb4980521, + 0xb4b464b4, 0x480628fb, 0x4905b8f9, 0x64380b83, 0x465cfdb4, 0x53000500, 0x8c063eff, 0x0600a705, 0x2c002800, 0x37003000, 0x11293d82, 0x33010b33, + 0x07232711, 0x20018327, 0x26058403, 0x1b35020b, 0x82173702, 0x84132001, 0x33172905, 0x2b153321, 0x37333502, 0x2e082d85, 0xcea0a104, 0xc936a0ce, + 0x303f334a, 0x3a3a3f2f, 0x10311937, 0x27273736, 0x31103637, 0x3a3a3719, 0x3f302f3f, 0x01c94a33, 0xbc8a8af2, 0x83887373, 0x0247082c, 0x01b00108, + 0xfedefe22, 0x3ed63a50, 0xe3cd72a9, 0x8b54fcfe, 0xfe92df6a, 0x010401d4, 0xeb0189eb, 0xaffe0401, 0x8b6adfb7, 0xe3fcfe54, 0x3ea972cd, 0x3a6161d6, + 0xdefe50fe, 0xb0012201, 0x00030000, 0x0637ff5c, 0x82e005a4, 0x000d22bb, 0x26b7833b, 0x23010923, 0x84110311, 0x2f012206, 0x85bf8501, 0x840f2005, + 0x020f220f, 0x23c4821f, 0x011f013f, 0x0586c485, 0xc8340328, 0x14011401, 0x068598c8, 0x38d8023d, 0x4b604e72, 0x5a5a6048, 0x184b2754, 0x394b4554, + 0x155a364b, 0x39252539, 0x82365a15, 0x5445310c, 0x54274b18, 0x48605a5a, 0x724e604b, 0xfcfe5d01, 0x04229484, 0xb9825d02, 0x3008d183, 0x1bc8fefc, + 0x2d420438, 0x21665951, 0x48582a37, 0x645a7084, 0x8f523b4b, 0x4a656c43, 0x4b3b528f, 0x84705a64, 0x372a5848, 0x51596621, 0x3804422d, 0x3b008200, + 0xff4b0002, 0x05b50622, 0x000900d0, 0x0500002a, 0x15012d15, 0x010d3521, 0x17130135, 0x3f20ad8b, 0x0324d98d, 0x6d010307, 0x04227e83, 0x7a820126, + 0xd3fa2608, 0x1f6d6e4e, 0x756d3262, 0x615e7d75, 0x4994667d, 0x7d669449, 0x757d5e61, 0x62326d75, 0x4e6e6d1f, 0xcecea03e, 0x080383a0, 0xfe540333, + 0x73eccd7e, 0x426e54b0, 0x59a1b2cc, 0x36993184, 0x84319935, 0xccb2a159, 0xb0546e42, 0xcd090190, 0x00007efe, 0xff5e0002, 0x05a2066a, 0x000b007b, + 0x0e5b421f, 0x03270330, 0x27020b27, 0x021b3711, 0x13371337, 0x69421521, 0xc7fe2106, 0x86877487, 0x42a70221, 0xfc330777, 0x629dfef0, 0xfeb2f7fe, + 0xfe6501be, 0x07058467, 0x8267fe84, 0xb2be2f09, 0xfe62f7fe, 0x0300749d, 0x3eff5300, 0x9342af06, 0x002f2c06, 0x35211300, 0x2135010d, 0x41211503, + 0x80420507, 0x021b2205, 0x42798235, 0x072109a0, 0x20268503, 0x075442cb, 0x45035522, 0x21068c42, 0x8c42363b, 0x3b36210b, 0x20068c42, 0x074b4296, + 0xa0030428, 0xfea0cece, 0x864261fc, 0x9bfe2126, 0x00202f83, 0x04280082, 0x5effc800, 0xa6053806, 0x0f2bb582, 0x1f001b00, 0x35250000, 0x43031521, + 0x0b8b0b7f, 0x1123112e, 0xcc016c04, 0x64b4b4b4, 0xc0fcb4b4, 0x02270684, 0x64a05a31, 0x439c0464, 0xfe210595, 0x2507855c, 0xb8f90e02, 0x62824806, + 0x47010021, 0x0221058f, 0x2c6382a5, 0x15211300, 0x48065c21, 0xa502b8f9, 0x3a1c8246, 0xff560105, 0x05aa0508, 0x000f0015, 0x00450039, 0x008f0065, + 0x33350500, 0x5e062311, 0x332a0571, 0x01153311, 0x020e0714, 0x8b552307, 0x012e2105, 0x0e211a82, 0x52501802, 0x18042012, 0x4b0a8650, 0x146308e8, + 0x3736280d, 0x0617011e, 0x67250607, 0x26210fce, 0x10136a27, 0x21070632, 0xbc9c0115, 0x0b376507, 0x6e3d0b2c, 0x1c02a3a5, 0x2c05da67, 0x22215b38, + 0x04020d2d, 0x0e0f0a01, 0x20501825, 0xd9fe3212, 0x75424275, 0x8456fe41, 0x69492695, 0x22765741, 0x06104e5b, 0x08aa5218, 0xe2025f08, 0x07cf39fe, + 0x3b1b1c33, 0x1e2a1b32, 0x332c0515, 0x3713120a, 0x1c50664c, 0x190e0f1b, 0x201e1d2c, 0x52014f4f, 0xf5015bf8, 0x270a3b6b, 0xfd77430a, 0xa5015bbc, + 0x6b414049, 0x4d2a1b55, 0x36592928, 0x12140101, 0x0f101a12, 0x304c370e, 0x1e2a2b31, 0x1312211e, 0x92303044, 0x3c0e3c3e, 0x04823f3f, 0xb2ca0131, + 0x588154a9, 0x314b4d2d, 0x5d6a392f, 0x4a6a5d65, 0x682f088b, 0x292f07b8, 0x310c2e2a, 0x271d1038, 0x69141116, 0x1b260d9f, 0x43441c1d, 0x0083005c, + 0xae000e24, 0x08830100, 0x02200384, 0x01240b86, 0x1f000d00, 0x02240b86, 0x3d000700, 0x03240b86, 0x99002900, 0x04200b86, 0xdf202382, 0x05240b86, + 0x0d010f00, 0x062a0b86, 0x37010c00, 0x01000300, 0x53840904, 0x0b860020, 0x1a000122, 0x17850982, 0x0e000224, 0x17862d00, 0x52000324, 0x0b864500, + 0x23820420, 0x0b86c320, 0x1e000524, 0x0b86ed00, 0x18000624, 0x4d831d01, 0x75004630, 0x6e007200, 0x63006100, 0x20006500, 0x07824900, 0x0f826f20, + 0x0000732e, 0x6e727546, 0x20656361, 0x6e6f6349, 0x52200e82, 0x67201f82, 0x6c202d82, 0x72282b82, 0x65520000, 0x616c7567, 0x45220882, 0x19826c00, + 0x74006322, 0x69204782, 0x20223d82, 0x0f824b00, 0x0f826520, 0x3a002022, 0x61995182, 0x32221f85, 0xba823800, 0x32380383, 0x32003000, 0x00003300, + 0x63656c45, 0x63697274, 0x65654b20, 0x203a2074, 0x0f82898c, 0x2d383227, 0x30322d38, 0x992a8232, 0x20bf8f5d, 0x26958256, 0x00730072, 0x826f0069, + 0x822020df, 0x0030246b, 0x842e0031, 0x00303007, 0x72655600, 0x6e6f6973, 0x31303020, 0x8230302e, 0x41598d10, 0x16411117, 0x00002306, 0x008b0002, + 0x0c8b0120, 0x4c200b84, 0x9c080582, 0x00020001, 0x01020103, 0x01040103, 0x01060105, 0x01080107, 0x010a0109, 0x010c010b, 0x010e010d, 0x0110010f, + 0x01120111, 0x01140113, 0x01160115, 0x01180117, 0x011a0119, 0x011c011b, 0x011e011d, 0x0120011f, 0x01220121, 0x01240123, 0x01260125, 0x01280127, + 0x012a0129, 0x012c012b, 0x012e012d, 0x0130012f, 0x01320131, 0x01340133, 0x01360135, 0x01380137, 0x013a0139, 0x013c013b, 0x013e013d, 0x0140013f, + 0x01420141, 0x01440143, 0x01460145, 0x01480147, 0x6e750749, 0x46304569, 0x20078630, 0x20078631, 0x20078632, 0x20078633, 0x21078434, 0x27853031, + 0x85303121, 0x30312127, 0x31212785, 0x21278530, 0x27873031, 0x2f863520, 0x07863620, 0x07863720, 0x07863820, 0x07863920, 0x07864120, 0x07864220, + 0x07864320, 0x07864420, 0x07864520, 0x07854620, 0x86303121, 0x86312007, 0x207f8607, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, + 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x207f8631, 0x217f8631, 0x77853032, 0x86313221, 0x207f8607, 0x207f8632, + 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x207f8632, 0x217f8632, + 0x77853033, 0x86313321, 0x207f8607, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, 0x207f8633, + 0x207f8633, 0x207f8633, 0x207f8633, 0x217f8633, 0x77853034, 0x86313421, 0x00322107, 0x01230083, 0x4400ffff, 0x002607e5, 0x14000c00, 0x16820400, + 0x00000224, 0x03860100, 0x00240985, 0x31cbd6df, 0x6e181182, 0xfa050c77, 0x761b0bb4, }; From 284a4f39adc8a77ba153db47712f4ae240098340 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 03:02:35 -0500 Subject: [PATCH 038/126] :< --- scripts/release-win32.sh | 2 +- src/gui/gui.cpp | 4 ++++ src/gui/render/renderSDL.cpp | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/scripts/release-win32.sh b/scripts/release-win32.sh index b0c1c2ff6..206e4e6c6 100755 --- a/scripts/release-win32.sh +++ b/scripts/release-win32.sh @@ -15,7 +15,7 @@ fi cd win32build # TODO: potential Arch-ism? -i686-w64-mingw32-cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_FLAGS="-O2 -march=i686" -DCMAKE_CXX_FLAGS="-O2 -Wall -Wextra -Wno-unused-parameter -Wno-cast-function-type -march=i686" -DBUILD_SHARED_LIBS=OFF -DSUPPORT_XP=OFF -DWITH_RENDER_DX11=ON .. || exit 1 +i686-w64-mingw32-cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_FLAGS="-O2 -march=i586" -DCMAKE_CXX_FLAGS="-O2 -Wall -Wextra -Wno-unused-parameter -Wno-cast-function-type -march=i586" -DBUILD_SHARED_LIBS=OFF -DSUPPORT_XP=OFF -DWITH_RENDER_DX11=ON -DUSE_BACKWARD=OFF .. || exit 1 make -j8 || exit 1 cd .. diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 1053f202a..07be9fefb 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6513,10 +6513,12 @@ bool FurnaceGUI::init() { logW("could not list render drivers! %s",SDL_GetError()); } else { SDL_RendererInfo ri; + logV("available render drivers:"); for (int i=0; iinit(sdlWin)) { + logE("it failed..."); if (settings.renderBackend!="SDL") { settings.renderBackend="SDL"; e->setConf("renderBackend","SDL"); @@ -6542,6 +6545,7 @@ bool FurnaceGUI::init() { } return false; } + logV("render backend started"); // try acquiring the canvas size if (!rend->getOutputSize(canvasW,canvasH)) { diff --git a/src/gui/render/renderSDL.cpp b/src/gui/render/renderSDL.cpp index 0fe6b9889..de1e28d3c 100644 --- a/src/gui/render/renderSDL.cpp +++ b/src/gui/render/renderSDL.cpp @@ -19,6 +19,7 @@ #include "renderSDL.h" #include "backends/imgui_impl_sdlrenderer2.h" +#include "../../ta-log.h" class FurnaceSDLTexture: public FurnaceGUITexture { public: @@ -143,7 +144,9 @@ void FurnaceGUIRenderSDL::preInit() { } bool FurnaceGUIRenderSDL::init(SDL_Window* win) { + logV("creating SDL renderer..."); sdlRend=SDL_CreateRenderer(win,-1,SDL_RENDERER_ACCELERATED|SDL_RENDERER_PRESENTVSYNC|SDL_RENDERER_TARGETTEXTURE); + logV("(post creation)"); return (sdlRend!=NULL); } From 0e7dbf7b4a464f8e7b7de9997baa92c527a1f2b4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 04:03:32 -0500 Subject: [PATCH 039/126] fix type limits, part 1? --- .../vgsound_emu/src/core/util.hpp | 8 +++++++ .../vgsound_emu/src/es550x/es5504.cpp | 14 +++++------ .../vgsound_emu/src/es550x/es5505.cpp | 16 ++++++------- .../vgsound_emu/src/es550x/es5506.cpp | 24 +++++++++---------- src/engine/platform/c140.cpp | 11 +++++++++ 5 files changed, 46 insertions(+), 27 deletions(-) diff --git a/extern/vgsound_emu-modified/vgsound_emu/src/core/util.hpp b/extern/vgsound_emu-modified/vgsound_emu/src/core/util.hpp index b85548be2..df35866a4 100644 --- a/extern/vgsound_emu-modified/vgsound_emu/src/core/util.hpp +++ b/extern/vgsound_emu-modified/vgsound_emu/src/core/util.hpp @@ -66,6 +66,14 @@ namespace vgsound_emu return T(T(in) << len) >> len; } + // get sign extended value, sign_ext(input, len) + template + static inline T sign_ext_nomax(T in, u8 len) + { + len = (8 * sizeof(T)) - len; + return T(T(in) << len) >> len; + } + // convert attenuation decibel value to gain static inline f32 dB_to_gain(f32 attenuation) { return std::pow(10.0f, attenuation / 20.0f); } diff --git a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5504.cpp b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5504.cpp index bdff401e0..1b63cd1d9 100644 --- a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5504.cpp +++ b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5504.cpp @@ -145,7 +145,7 @@ void es5504_core::voice_t::tick(u8 voice) if (m_alu.busy()) { // Send to output - m_out = ((sign_ext(m_filter.o4_1(), 16) >> 3) * m_volume) >> + m_out = ((sign_ext_nomax(m_filter.o4_1(), 16) >> 3) * m_volume) >> 12; // Analog multiplied in real chip, 13/12 bit ladder DAC // ALU execute @@ -386,22 +386,22 @@ void es5504_core::regs_w(u8 page, u8 address, u16 data, bool cpu_access) switch (address) { case 1: // O4(n-1) (Filter 4 Temp Register) - v.filter().set_o4_1(sign_ext(data, 16)); + v.filter().set_o4_1(sign_ext_nomax(data, 16)); break; case 2: // O3(n-2) (Filter 3 Temp Register #2) - v.filter().set_o3_2(sign_ext(data, 16)); + v.filter().set_o3_2(sign_ext_nomax(data, 16)); break; case 3: // O3(n-1) (Filter 3 Temp Register #1) - v.filter().set_o3_1(sign_ext(data, 16)); + v.filter().set_o3_1(sign_ext_nomax(data, 16)); break; case 4: // O2(n-2) (Filter 2 Temp Register #2) - v.filter().set_o2_2(sign_ext(data, 16)); + v.filter().set_o2_2(sign_ext_nomax(data, 16)); break; case 5: // O2(n-1) (Filter 2 Temp Register #1) - v.filter().set_o2_1(sign_ext(data, 16)); + v.filter().set_o2_1(sign_ext_nomax(data, 16)); break; case 6: // O1(n-1) (Filter 1 Temp Register) - v.filter().set_o1_1(sign_ext(data, 16)); + v.filter().set_o1_1(sign_ext_nomax(data, 16)); break; } } diff --git a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5505.cpp b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5505.cpp index c07280efc..71c8e51a6 100644 --- a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5505.cpp +++ b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5505.cpp @@ -231,8 +231,8 @@ void es5505_core::voice_t::tick(u8 voice) if (m_alu.busy()) { // Send to output - m_output[0] = volume_calc(m_lvol, sign_ext(m_filter.o4_1(), 16)); - m_output[1] = volume_calc(m_rvol, sign_ext(m_filter.o4_1(), 16)); + m_output[0] = volume_calc(m_lvol, sign_ext_nomax(m_filter.o4_1(), 16)); + m_output[1] = volume_calc(m_rvol, sign_ext_nomax(m_filter.o4_1(), 16)); m_ch.set_left(m_output[0]); m_ch.set_right(m_output[1]); @@ -583,22 +583,22 @@ void es5505_core::regs_w(u8 page, u8 address, u16 data) switch (address) { case 1: // O4(n-1) (Filter 4 Temp Register) - v.filter().set_o4_1(sign_ext(data, 16)); + v.filter().set_o4_1(sign_ext_nomax(data, 16)); break; case 2: // O3(n-2) (Filter 3 Temp Register #2) - v.filter().set_o3_2(sign_ext(data, 16)); + v.filter().set_o3_2(sign_ext_nomax(data, 16)); break; case 3: // O3(n-1) (Filter 3 Temp Register #1) - v.filter().set_o3_1(sign_ext(data, 16)); + v.filter().set_o3_1(sign_ext_nomax(data, 16)); break; case 4: // O2(n-2) (Filter 2 Temp Register #2) - v.filter().set_o2_2(sign_ext(data, 16)); + v.filter().set_o2_2(sign_ext_nomax(data, 16)); break; case 5: // O2(n-1) (Filter 2 Temp Register #1) - v.filter().set_o2_1(sign_ext(data, 16)); + v.filter().set_o2_1(sign_ext_nomax(data, 16)); break; case 6: // O1(n-1) (Filter 1 Temp Register) - v.filter().set_o1_1(sign_ext(data, 16)); + v.filter().set_o1_1(sign_ext_nomax(data, 16)); break; } } diff --git a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5506.cpp b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5506.cpp index 11cb44499..81ddf85c2 100644 --- a/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5506.cpp +++ b/extern/vgsound_emu-modified/vgsound_emu/src/es550x/es5506.cpp @@ -123,11 +123,11 @@ void es5506_core::voice_t::tick(u8 voice) // Left and Right volume if (bitfield(m_lvramp, 0, 8) != 0) { - m_lvol = VGS_CLAMP(m_lvol + sign_ext(bitfield(m_lvramp, 0, 8), 8), 0, 0xffff); + m_lvol = VGS_CLAMP(m_lvol + sign_ext_nomax(bitfield(m_lvramp, 0, 8), 8), 0, 0xffff); } if (bitfield(m_rvramp, 0, 8) != 0) { - m_rvol = VGS_CLAMP(m_rvol + sign_ext(bitfield(m_rvramp, 0, 8), 8), 0, 0xffff); + m_rvol = VGS_CLAMP(m_rvol + sign_ext_nomax(bitfield(m_rvramp, 0, 8), 8), 0, 0xffff); } // Filter coeffcient @@ -135,13 +135,13 @@ void es5506_core::voice_t::tick(u8 voice) ((m_k1ramp.slow() == 0) || (bitfield(m_filtcount, 0, 3) == 0))) { m_filter.set_k1( - VGS_CLAMP(m_filter.k1() + sign_ext(m_k1ramp.ramp(), 8), 0, 0xffff)); + VGS_CLAMP(m_filter.k1() + sign_ext_nomax(m_k1ramp.ramp(), 8), 0, 0xffff)); } if ((m_k2ramp.ramp() != 0) && ((m_k2ramp.slow() == 0) || (bitfield(m_filtcount, 0, 3) == 0))) { m_filter.set_k2( - VGS_CLAMP(m_filter.k2() + sign_ext(m_k2ramp.ramp(), 8), 0, 0xffff)); + VGS_CLAMP(m_filter.k2() + sign_ext_nomax(m_k2ramp.ramp(), 8), 0, 0xffff)); } m_ecount--; @@ -531,7 +531,7 @@ void es5506_core::regs_w(u8 page, u8 address, u32 data) case 8: // CH4L (Channel 4 Left) case 10: // CH5L (Channel 5 Left) m_ch[bitfield(address, 1, 3)].set_left( - sign_ext(bitfield(data, 0, 23), 23)); + sign_ext_nomax(bitfield(data, 0, 23), 23)); break; case 1: // CH0R (Channel 0 Right) case 3: // CH1R (Channel 1 Right) @@ -540,7 +540,7 @@ void es5506_core::regs_w(u8 page, u8 address, u32 data) case 9: // CH4R (Channel 4 Right) case 11: // CH5R (Channel 5 Right) m_ch[bitfield(address, 1, 3)].set_right( - sign_ext(bitfield(data, 0, 23), 23)); + sign_ext_nomax(bitfield(data, 0, 23), 23)); break; } } @@ -574,22 +574,22 @@ void es5506_core::regs_w(u8 page, u8 address, u32 data) v.alu().set_accum(data); break; case 4: // O4(n-1) (Filter 4 Temp Register) - v.filter().set_o4_1(sign_ext(bitfield(data, 0, 18), 18)); + v.filter().set_o4_1(sign_ext_nomax(bitfield(data, 0, 18), 18)); break; case 5: // O3(n-2) (Filter 3 Temp Register #2) - v.filter().set_o3_2(sign_ext(bitfield(data, 0, 18), 18)); + v.filter().set_o3_2(sign_ext_nomax(bitfield(data, 0, 18), 18)); break; case 6: // O3(n-1) (Filter 3 Temp Register #1) - v.filter().set_o3_1(sign_ext(bitfield(data, 0, 18), 18)); + v.filter().set_o3_1(sign_ext_nomax(bitfield(data, 0, 18), 18)); break; case 7: // O2(n-2) (Filter 2 Temp Register #2) - v.filter().set_o2_2(sign_ext(bitfield(data, 0, 18), 18)); + v.filter().set_o2_2(sign_ext_nomax(bitfield(data, 0, 18), 18)); break; case 8: // O2(n-1) (Filter 2 Temp Register #1) - v.filter().set_o2_1(sign_ext(bitfield(data, 0, 18), 18)); + v.filter().set_o2_1(sign_ext_nomax(bitfield(data, 0, 18), 18)); break; case 9: // O1(n-1) (Filter 1 Temp Register) - v.filter().set_o1_1(sign_ext(bitfield(data, 0, 18), 18)); + v.filter().set_o1_1(sign_ext_nomax(bitfield(data, 0, 18), 18)); break; case 10: // W_ST (Word Clock Start Register) m_w_st = bitfield(data, 0, 7); diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index ba2b5d33e..b4cc9171a 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -239,6 +239,17 @@ void DivPlatformC140::tick(bool sysTick) { groupBank[i>>2]=bank; } rWrite(0x1f1+(((3+(i>>2))&3)<<1),groupBank[i>>2]); + // shut everyone else up + for (int j=0; j<4; j++) { + int ch=(i&(~3))|j; + if (chan[ch].active && (i&3)!=j) { + chan[ch].sample=-1; + chan[ch].active=false; + chan[ch].keyOff=true; + chan[ch].macroInit(NULL); + rWrite(0x05+(ch<<4),ctrl); + } + } } else { rWrite(0x04+(i<<4),bank); } From 23a70381c62442c9f4b5fe85e0741d88ca54bc25 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 04:06:25 -0500 Subject: [PATCH 040/126] fix type limits, part 2 --- extern/vgsound_emu-modified/vgsound_emu/src/k053260/k053260.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/vgsound_emu-modified/vgsound_emu/src/k053260/k053260.cpp b/extern/vgsound_emu-modified/vgsound_emu/src/k053260/k053260.cpp index cd6fe8e89..3650cdaaf 100644 --- a/extern/vgsound_emu-modified/vgsound_emu/src/k053260/k053260.cpp +++ b/extern/vgsound_emu-modified/vgsound_emu/src/k053260/k053260.cpp @@ -83,7 +83,7 @@ void k053260_core::voice_t::tick(u32 cycle) } // calculate output - s32 output = (m_adpcm ? m_output : sign_ext(m_data, 8)) * s32(m_volume); + s32 output = (m_adpcm ? m_output : sign_ext_nomax(m_data, 8)) * s32(m_volume); // use math for now; actually fomula unknown m_out[0] = (output * m_host.pan_lut(m_pan, 0)) >> 7; m_out[1] = (output * m_host.pan_lut(m_pan, 1)) >> 7; From 4e3de466ce65ada69b80d36a92521a64d933ef8c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 04:10:48 -0500 Subject: [PATCH 041/126] C219: looooooool --- src/engine/platform/c140.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index b4cc9171a..1284a78bf 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -237,17 +237,17 @@ void DivPlatformC140::tick(bool sysTick) { if (is219) { if (groupBank[i>>2]!=bank) { groupBank[i>>2]=bank; - } - rWrite(0x1f1+(((3+(i>>2))&3)<<1),groupBank[i>>2]); - // shut everyone else up - for (int j=0; j<4; j++) { - int ch=(i&(~3))|j; - if (chan[ch].active && (i&3)!=j) { - chan[ch].sample=-1; - chan[ch].active=false; - chan[ch].keyOff=true; - chan[ch].macroInit(NULL); - rWrite(0x05+(ch<<4),ctrl); + rWrite(0x1f1+(((3+(i>>2))&3)<<1),groupBank[i>>2]); + // shut everyone else up + for (int j=0; j<4; j++) { + int ch=(i&(~3))|j; + if (chan[ch].active && (i&3)!=j) { + chan[ch].sample=-1; + chan[ch].active=false; + chan[ch].keyOff=true; + chan[ch].macroInit(NULL); + rWrite(0x05+(ch<<4),ctrl); + } } } } else { From bcf877b7cadb870a0ba1a5d6780ba19cecdca34c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 04:12:09 -0500 Subject: [PATCH 042/126] C219: fix out of bounds access --- src/engine/platform/sound/c140_c219.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/platform/sound/c140_c219.c b/src/engine/platform/sound/c140_c219.c index 4855bd782..67aa6dc4c 100644 --- a/src/engine/platform/sound/c140_c219.c +++ b/src/engine/platform/sound/c140_c219.c @@ -175,8 +175,8 @@ void c219_voice_tick(struct c219_t *c219, const unsigned char v, const int cycle signed short s2 = c219->sample_mem[((unsigned int)(c219->bank[(v >> 2) & 3]) << 17) | ((voice->addr + 1) & 0x1ffff)]; if (voice->compressed) { - s1 = c219->mulaw[s1]; - s2 = c219->mulaw[s2]; + s1 = c219->mulaw[s1&0xff]; + s2 = c219->mulaw[s2&0xff]; } else { From 628ddc91ca97d14a42edcd2e77d40caa0621c95d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 05:09:48 -0500 Subject: [PATCH 043/126] fix void pointer --- extern/imgui_patched/imgui_draw.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/imgui_patched/imgui_draw.cpp b/extern/imgui_patched/imgui_draw.cpp index 6e39f4d0d..208b2fdde 100644 --- a/extern/imgui_patched/imgui_draw.cpp +++ b/extern/imgui_patched/imgui_draw.cpp @@ -2228,7 +2228,7 @@ ImFont* ImFontAtlas::AddFontFromMemoryCompressedTTF(const void* compressed_ttf_d #ifdef TA_BIG_ENDIAN unsigned char* beData=(unsigned char*)IM_ALLOC(compressed_ttf_size); for (int i=0; i Date: Mon, 28 Aug 2023 05:32:09 -0500 Subject: [PATCH 044/126] fix missing big endian writeI_BE --- src/engine/safeWriter.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/engine/safeWriter.cpp b/src/engine/safeWriter.cpp index bd327607b..acdf9ad6b 100644 --- a/src/engine/safeWriter.cpp +++ b/src/engine/safeWriter.cpp @@ -87,6 +87,10 @@ int SafeWriter::writeS(short val) { return write(bytes,2); } +int SafeWriter::writeI_BE(int val) { + return write(&val,4); +} + int SafeWriter::writeI(int val) { unsigned char bytes[4]; bytes[0]=((unsigned int)val)&0xff; From bd730cbeec2acb7b97ead8251066eda71dc8ee7b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 05:44:38 -0500 Subject: [PATCH 045/126] GUI: furIcon big endian fix --- src/gui/gui.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 07be9fefb..db3d4311f 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6361,7 +6361,11 @@ bool FurnaceGUI::init() { const FurnaceGUIImage* furIcon=getImage(GUI_IMAGE_ICON); SDL_Surface* icon=NULL; if (furIcon!=NULL) { +#ifdef TA_BIG_ENDIAN + icon=SDL_CreateRGBSurfaceFrom(furIcon->data,furIcon->width,furIcon->height,32,256*4,0xff000000,0xff0000,0xff00,0xff); +#else icon=SDL_CreateRGBSurfaceFrom(furIcon->data,furIcon->width,furIcon->height,32,256*4,0xff,0xff00,0xff0000,0xff000000); +#endif } else { logE("furIcon is NULL!"); } From 2357093bc80b4899af62dbedcc68707c3cf01d6f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 05:58:46 -0500 Subject: [PATCH 046/126] GUI: fix image loading (big endian) --- src/gui/gui.cpp | 4 ---- src/gui/image.cpp | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index db3d4311f..07be9fefb 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6361,11 +6361,7 @@ bool FurnaceGUI::init() { const FurnaceGUIImage* furIcon=getImage(GUI_IMAGE_ICON); SDL_Surface* icon=NULL; if (furIcon!=NULL) { -#ifdef TA_BIG_ENDIAN - icon=SDL_CreateRGBSurfaceFrom(furIcon->data,furIcon->width,furIcon->height,32,256*4,0xff000000,0xff0000,0xff00,0xff); -#else icon=SDL_CreateRGBSurfaceFrom(furIcon->data,furIcon->width,furIcon->height,32,256*4,0xff,0xff00,0xff0000,0xff000000); -#endif } else { logE("furIcon is NULL!"); } diff --git a/src/gui/image.cpp b/src/gui/image.cpp index 493b5a57f..a5c7baec3 100644 --- a/src/gui/image.cpp +++ b/src/gui/image.cpp @@ -87,6 +87,20 @@ FurnaceGUIImage* FurnaceGUI::getImage(FurnaceGUIImages image) { logV("%dx%d",ret->width,ret->height); +#ifdef TA_BIG_ENDIAN + if (ret->ch==4) { + size_t total=ret->width*ret->height*ret->ch; + for (size_t i=0; idata[i]^=ret->data[i|3]; + ret->data[i|3]^=ret->data[i]; + ret->data[i]^=ret->data[i|3]; + ret->data[i|1]^=ret->data[i|2]; + ret->data[i|2]^=ret->data[i|1]; + ret->data[i|1]^=ret->data[i|2]; + } + } +#endif + images[image]=ret; } From f5ac9b13b668edc2e7f5946f1081d6c1e653ee0c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 06:17:42 -0500 Subject: [PATCH 047/126] GUI: fix crash inducing typo issue #1429 --- src/gui/settings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 753abc3bb..7e08be4b5 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -3861,7 +3861,7 @@ void FurnaceGUI::resetColors() { } void FurnaceGUI::resetKeybinds() { - for (int i=0; i Date: Mon, 28 Aug 2023 06:37:13 -0500 Subject: [PATCH 048/126] GUI: preview sample button in unified assets issue #1430 --- src/gui/dataList.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index de5f3515d..ab9d341e9 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -504,6 +504,18 @@ void FurnaceGUI::drawInsList(bool asChild) { ImGui::SetTooltip("New folder"); } } + if (lastAssetType==2) { + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_VOLUME_UP "##PreviewSampleL")) { + doAction(GUI_ACTION_SAMPLE_LIST_PREVIEW); + } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Preview (right click to stop)"); + } + if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { + doAction(GUI_ACTION_SAMPLE_LIST_STOP_PREVIEW); + } + } ImGui::SameLine(); pushDestColor(); if (ImGui::Button(ICON_FA_TIMES "##InsDelete")) { From ed05c16d9576f3d11b997a97814c03daa9e5867a Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Mon, 28 Aug 2023 10:39:40 -0700 Subject: [PATCH 049/126] Adding the missing TableNextRow. --- src/gui/chanOsc.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 623eb39fe..a92a0a7d8 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -149,6 +149,7 @@ void FurnaceGUI::drawChanOsc() { if (chanOscWindowSize>50.0f) chanOscWindowSize=50.0f; } + ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Automatic columns"); From 0b5afcb8d6415a6465d88ec5a74efff5a3c4fcb7 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Mon, 28 Aug 2023 13:58:33 -0700 Subject: [PATCH 050/126] Docs update for 0.6pre9. --- doc/2-interface/asset-list.md | 4 ++-- doc/2-interface/samples.png | Bin 44742 -> 43386 bytes doc/4-instrument/README.md | 2 +- doc/4-instrument/fmopll.md | 10 +++++++--- doc/4-instrument/snes.md | 10 +++++++++- doc/5-wave/README.md | 2 ++ doc/5-wave/wave-editor-tools.png | Bin 97988 -> 96378 bytes 7 files changed, 21 insertions(+), 7 deletions(-) diff --git a/doc/2-interface/asset-list.md b/doc/2-interface/asset-list.md index 7c8340f5e..b9fa9ce85 100644 --- a/doc/2-interface/asset-list.md +++ b/doc/2-interface/asset-list.md @@ -43,6 +43,6 @@ Everything from the instrument list applies here also, with one major difference ![samples window](samples.png) -Everything from the wavetables list applies here also, with the addition of two buttons before the Delete button: +Everything from the wavetables list applies here also, with the addition of one button before the Delete button: - **Preview**: Plays the selected sample at its default note. -- **Stop preview**: Stops the sample playback. + - Right-clicking stops the sample playback. diff --git a/doc/2-interface/samples.png b/doc/2-interface/samples.png index 654ff87871a7017afe8aec1e18c762b10e53d9b4..3c6af859029b8225af6792468c554535c1891d8b 100644 GIT binary patch literal 43386 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 z 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 literal 44742 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 Cyb6Q> diff --git a/doc/4-instrument/README.md b/doc/4-instrument/README.md index c7fbb67d2..2bfcd4091 100644 --- a/doc/4-instrument/README.md +++ b/doc/4-instrument/README.md @@ -113,7 +113,7 @@ This tab appears for PC Engine, FDS, Namco WSG, and other wavetable-based instru ![wavetable tab](wavetable.png) -When **Enable synthesizer** is off, the only option is to select a wavetable entry with the text entry box beneath the **Wave 1** preview. +When **Enable synthesizer** is off, the wavetable used for the instrument may be selected by creating a Waveform macro with a single value. To use the wavetable synthesizer, refer to the bottom part of [the wavetable documentation](../5-wave/README.md). diff --git a/doc/4-instrument/fmopll.md b/doc/4-instrument/fmopll.md index fe26e556a..318a75127 100644 --- a/doc/4-instrument/fmopll.md +++ b/doc/4-instrument/fmopll.md @@ -15,14 +15,18 @@ The OPLL synthesizer is two-operator, meaning it takes two oscillators to produc These apply to the instrument as a whole: - **Feedback (FB)**: Determines how many times operator 1 returns its output to itself. (0-7 range) - **Sustain (SUS)**: enables the sustain flag (sets the release rate to 5) +- algorithm: shows the connection of operators (though they are always connected the same way). + - Right-click to switch to a preview display of the waveform generated on a new note: + - Left-click restarts the preview. + - Middle-click pauses and unpauses the preview. + - Right-click returns to algorithm view. - **DC (half-sine carrier)**: Sets the waveform produced by carrier operator to half-sine - **DM (half-sine modulator)**: Sets the waveform produced by modulator operator to half-sine - -To the right, there is a drop down menu for OPLL preset instrument selection. +- preset dropdown: select OPLL preset instrument. These apply to each operator: - The crossed-arrows button can be dragged to rearrange operators. -- The **OP1**, **OP2** buttons enable or disable those operators. +- The **OP1** and **OP2** buttons enable or disable those operators. - **Amplitude Modulation (AM)**: Makes the operator affected by LFO tremolo. - **Envelope generator sustain flag (EGS)**: When enabled, value of Sustain Level is in effect. - **Attack Rate (AR)**: determines the rising time for the sound. The bigger the value, the faster the attack. (0-15 range) diff --git a/doc/4-instrument/snes.md b/doc/4-instrument/snes.md index 0887e9a6a..58a3a5e15 100644 --- a/doc/4-instrument/snes.md +++ b/doc/4-instrument/snes.md @@ -19,7 +19,15 @@ these tabs are unique to the editor for SNES instruments. - **Effective (exponential decrease)**: after release, volume decays exponentially. see [gain chart](../7-systems/snes.md). - **Delayed (write R on release)**: after release, waits until A and D have completed before starting exponential decrease. -if envelope is off, select gain mode as described below. +if envelope is off: +- **Gain Mode**: select gain mode. + - **Direct**: direct gain from 0 to 127 + - **Decrease (linear)**: linear gain from -0 to -31 + - **Decrease (logarithmic)**: exponential gain from -0 to -31 + - **Increase (linear)**: linear gain from +0 to +31 + - **Increase (bent line)**: exponential gain from +0 to +31 + - _note:_ using decrease modes will not produce any sound unless a Gain macro is set. The first tick must be the initial gain, and the second tick must be the decrease gain value. gain values are as described in the Macros section below. +- **Gain**: value of gain. diff --git a/doc/5-wave/README.md b/doc/5-wave/README.md index 8b0db521a..47430fd30 100644 --- a/doc/5-wave/README.md +++ b/doc/5-wave/README.md @@ -87,6 +87,7 @@ these are useful editing tools to fine-tune the waveform: - **Amplify**. changes the volume of the waveform. it will clip at the top and bottom. - **Normalize**: stretches waveform to maximum within the wavetable height. - **Invert**: flips waveform vertically. +- **Reverse**: flips waveform horizontally. - **Half**: halves the waveform's frequency by stretching its first half to fill the waveform length. - **Double**: doubles the waveform's frequency by squashing it to half length then repeating it. - **Convert Signed/Unsigned**. worth trying if an imported wave sounds corrupted. @@ -110,6 +111,7 @@ input waveforms should match the size of the wavetable or unexpected results may - synthesizer type: selects the synthesis algorithm. - waveform displays. - **Wave 1**: selects input waveform. + - this will turn yellow to indicate that a Waveform macro is set; remove the macro to work with the synthesizer. - **Wave 2**: selects second input waveform. only appears when a dual-waveform synthesizer is selected. - **Pause preview**: toggles live waveform preview. - **Restart preview**: restarts preview from initial state. diff --git a/doc/5-wave/wave-editor-tools.png b/doc/5-wave/wave-editor-tools.png index 64261f90da9b25aeae8fb720dc0f3d1160e2a7b2..aea9ab4570945f6ec1f39bc8272c1942dd1a6da0 100644 GIT binary patch literal 96378 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

_1?g%Fp9qKXMOqZU@ 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%0A=w*NNW4JbSMqE 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 From 281598812cd64f2a473d6d045706617213ec4684 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 16:02:29 -0500 Subject: [PATCH 051/126] fix FFxx and "reset channels" loop modality issue #1427 --- src/engine/playback.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 7483a972a..13bc57ee8 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -1173,7 +1173,7 @@ void DivEngine::nextRow() { } // new loop detection routine - if (!endOfSong && walked[((curOrder<<5)+(curRow>>3))&8191]&(1<<(curRow&7))) { + if (!endOfSong && walked[((curOrder<<5)+(curRow>>3))&8191]&(1<<(curRow&7)) && !shallStopSched) { logV("loop reached"); endOfSong=true; memset(walked,0,8192); From decd2fde0f21cc353a2780cc8d84eb30ce08b3f6 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 16:36:26 -0500 Subject: [PATCH 052/126] MSM5232: work around possible chip quirk when changing control, it seemingly retriggers all channels issue #1433 --- src/engine/platform/msm5232.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/msm5232.cpp b/src/engine/platform/msm5232.cpp index e4564134e..8ad6b1da9 100644 --- a/src/engine/platform/msm5232.cpp +++ b/src/engine/platform/msm5232.cpp @@ -20,9 +20,9 @@ #define _USE_MATH_DEFINES #include "msm5232.h" #include "../engine.h" +#include "../../ta-log.h" #include -//#define rWrite(a,v) pendingWrites[a]=v; #define rWrite(a,v) if (!skipRegisterWrites) {writes.push(QueuedWrite(a,v)); if (dumpWrites) {addWrite(a,v);} } #define NOTE_LINEAR(x) ((x)<<7) @@ -49,6 +49,7 @@ void DivPlatformMSM5232::acquire(short** buf, size_t len) { for (size_t h=0; hwrite(w.addr,w.val); regPool[w.addr&0x0f]=w.val; writes.pop(); @@ -125,6 +126,10 @@ void DivPlatformMSM5232::tick(bool sysTick) { for (int i=0; i<2; i++) { if (updateGroup[i]) { rWrite(12+i,groupControl[i]); + // do not retrigger inactive channels + for (int j=i<<2; j<(i+1)<<2; j++) { + if (!chan[j].active) rWrite(j,0); + } updateGroup[i]=false; } if (updateGroupAR[i]) { From 044859f6d15c82f0836504861dc48593215e854c Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 17:00:39 -0500 Subject: [PATCH 053/126] GUI: add option to choose between chip menus and chip manager in File menu --- src/gui/gui.cpp | 116 +++++++++++++++++++++++-------------------- src/gui/gui.h | 2 + src/gui/settings.cpp | 8 +++ 3 files changed, 71 insertions(+), 55 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 07be9fefb..ec168f035 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4169,70 +4169,76 @@ bool FurnaceGUI::loop() { ImGui::EndMenu(); } ImGui::Separator(); - if (ImGui::BeginMenu("add chip...")) { - exitDisabledTimer=1; - DivSystem picked=systemPicker(); - if (picked!=DIV_SYSTEM_NULL) { - if (!e->addSystem(picked)) { - showError("cannot add chip! ("+e->getLastError()+")"); - } else { - MARK_MODIFIED; - } - ImGui::CloseCurrentPopup(); - if (e->song.autoSystem) { - autoDetectSystem(); - } - updateWindowTitle(); + if (!settings.classicChipOptions) { + if (ImGui::MenuItem("manage chips")) { + nextWindow=GUI_WINDOW_SYS_MANAGER; } - ImGui::EndMenu(); - } - if (ImGui::BeginMenu("configure chip...")) { - exitDisabledTimer=1; - for (int i=0; isong.systemLen; i++) { - if (ImGui::TreeNode(fmt::sprintf("%d. %s##_SYSP%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { - drawSysConf(i,e->song.system[i],e->song.systemFlags[i],true,true); - ImGui::TreePop(); - } - } - ImGui::EndMenu(); - } - if (ImGui::BeginMenu("change chip...")) { - exitDisabledTimer=1; - ImGui::Checkbox("Preserve channel positions",&preserveChanPos); - for (int i=0; isong.systemLen; i++) { - if (ImGui::BeginMenu(fmt::sprintf("%d. %s##_SYSC%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { - DivSystem picked=systemPicker(); - if (picked!=DIV_SYSTEM_NULL) { - e->changeSystem(i,picked,preserveChanPos); - MARK_MODIFIED; - if (e->song.autoSystem) { - autoDetectSystem(); - } - updateWindowTitle(); - ImGui::CloseCurrentPopup(); - } - ImGui::EndMenu(); - } - } - ImGui::EndMenu(); - } - if (ImGui::BeginMenu("remove chip...")) { - exitDisabledTimer=1; - ImGui::Checkbox("Preserve channel positions",&preserveChanPos); - for (int i=0; isong.systemLen; i++) { - if (ImGui::MenuItem(fmt::sprintf("%d. %s##_SYSR%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { - if (!e->removeSystem(i,preserveChanPos)) { - showError("cannot remove chip! ("+e->getLastError()+")"); + } else { + if (ImGui::BeginMenu("add chip...")) { + exitDisabledTimer=1; + DivSystem picked=systemPicker(); + if (picked!=DIV_SYSTEM_NULL) { + if (!e->addSystem(picked)) { + showError("cannot add chip! ("+e->getLastError()+")"); } else { MARK_MODIFIED; } + ImGui::CloseCurrentPopup(); if (e->song.autoSystem) { autoDetectSystem(); - updateWindowTitle(); + } + updateWindowTitle(); + } + ImGui::EndMenu(); + } + if (ImGui::BeginMenu("configure chip...")) { + exitDisabledTimer=1; + for (int i=0; isong.systemLen; i++) { + if (ImGui::TreeNode(fmt::sprintf("%d. %s##_SYSP%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { + drawSysConf(i,e->song.system[i],e->song.systemFlags[i],true,true); + ImGui::TreePop(); } } + ImGui::EndMenu(); + } + if (ImGui::BeginMenu("change chip...")) { + exitDisabledTimer=1; + ImGui::Checkbox("Preserve channel positions",&preserveChanPos); + for (int i=0; isong.systemLen; i++) { + if (ImGui::BeginMenu(fmt::sprintf("%d. %s##_SYSC%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { + DivSystem picked=systemPicker(); + if (picked!=DIV_SYSTEM_NULL) { + e->changeSystem(i,picked,preserveChanPos); + MARK_MODIFIED; + if (e->song.autoSystem) { + autoDetectSystem(); + } + updateWindowTitle(); + ImGui::CloseCurrentPopup(); + } + ImGui::EndMenu(); + } + } + ImGui::EndMenu(); + } + if (ImGui::BeginMenu("remove chip...")) { + exitDisabledTimer=1; + ImGui::Checkbox("Preserve channel positions",&preserveChanPos); + for (int i=0; isong.systemLen; i++) { + if (ImGui::MenuItem(fmt::sprintf("%d. %s##_SYSR%d",i+1,getSystemName(e->song.system[i]),i).c_str())) { + if (!e->removeSystem(i,preserveChanPos)) { + showError("cannot remove chip! ("+e->getLastError()+")"); + } else { + MARK_MODIFIED; + } + if (e->song.autoSystem) { + autoDetectSystem(); + updateWindowTitle(); + } + } + } + ImGui::EndMenu(); } - ImGui::EndMenu(); } ImGui::BeginDisabled(exitDisabledTimer); ImGui::Separator(); diff --git a/src/gui/gui.h b/src/gui/gui.h index 6b22a2d96..ced96f825 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1569,6 +1569,7 @@ class FurnaceGUI { int capitalMenuBar; int centerPopup; int insIconsStyle; + int classicChipOptions; unsigned int maxUndoSteps; String mainFontPath; String headFontPath; @@ -1742,6 +1743,7 @@ class FurnaceGUI { capitalMenuBar(0), centerPopup(1), insIconsStyle(1), + classicChipOptions(0), maxUndoSteps(100), mainFontPath(""), headFontPath(""), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 7e08be4b5..40fef8210 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -2199,6 +2199,11 @@ void FurnaceGUI::drawSettings() { settings.capitalMenuBar=capitalMenuBarB; } + bool classicChipOptionsB=settings.classicChipOptions; + if (ImGui::Checkbox("Display add/configure/change/remove chip menus in File menu",&classicChipOptionsB)) { + settings.classicChipOptions=classicChipOptionsB; + } + // SUBSECTION ORDERS CONFIG_SUBSECTION("Orders"); // sorry. temporarily disabled until ImGui has a way to add separators in tables arbitrarily. @@ -3191,6 +3196,7 @@ void FurnaceGUI::syncSettings() { settings.capitalMenuBar=e->getConfInt("capitalMenuBar",0); settings.centerPopup=e->getConfInt("centerPopup",1); settings.insIconsStyle=e->getConfInt("insIconsStyle",1); + settings.classicChipOptions=e->getConfInt("classicChipOptions",0); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.headFontSize,2,96); @@ -3337,6 +3343,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.capitalMenuBar,0,1); clampSetting(settings.centerPopup,0,1); clampSetting(settings.insIconsStyle,0,2); + clampSetting(settings.classicChipOptions,0,1); if (settings.exportLoops<0.0) settings.exportLoops=0.0; if (settings.exportFadeOut<0.0) settings.exportFadeOut=0.0; @@ -3590,6 +3597,7 @@ void FurnaceGUI::commitSettings() { e->setConf("capitalMenuBar",settings.capitalMenuBar); e->setConf("centerPopup",settings.centerPopup); e->setConf("insIconsStyle",settings.insIconsStyle); + e->setConf("classicChipOptions",settings.classicChipOptions); // colors for (int i=0; i Date: Mon, 28 Aug 2023 17:59:34 -0500 Subject: [PATCH 054/126] C219: noise/invert/surround effects/macro --- src/engine/platform/c140.cpp | 28 ++++++++++++++++++++++++---- src/engine/platform/c140.h | 3 ++- src/engine/sysDef.cpp | 3 ++- src/gui/insEdit.cpp | 18 +++++++++++++++--- 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index 1284a78bf..58ef1570b 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -150,6 +150,15 @@ void DivPlatformC140::tick(bool sysTick) { } chan[i].freqChanged=true; } + if (is219) { + if (chan[i].std.duty.had) { + chan[i].noise=chan[i].std.duty.val&1; + chan[i].invert=chan[i].std.duty.val&2; + chan[i].surround=chan[i].std.duty.val&4; + chan[i].freqChanged=true; + chan[i].writeCtrl=true; + } + } if (chan[i].std.pitch.had) { if (chan[i].std.pitch.mode) { chan[i].pitch2+=chan[i].std.pitch.val; @@ -193,7 +202,6 @@ void DivPlatformC140::tick(bool sysTick) { chan[i].audPos=0; } if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) { - bool writeCtrl=false; DivSample* s=parent->getSample(chan[i].sample); unsigned char ctrl=0; double off=(s->centerRate>=1)?((double)s->centerRate/8363.0):1.0; @@ -264,11 +272,11 @@ void DivPlatformC140::tick(bool sysTick) { chan[i].volChangedL=true; chan[i].volChangedR=true; } - writeCtrl=true; + chan[i].writeCtrl=true; chan[i].keyOn=false; } if (chan[i].keyOff) { - writeCtrl=true; + chan[i].writeCtrl=true; chan[i].keyOff=false; } if (chan[i].freqChanged) { @@ -276,8 +284,9 @@ void DivPlatformC140::tick(bool sysTick) { rWrite(0x03+(i<<4),chan[i].freq&0xff); chan[i].freqChanged=false; } - if (writeCtrl) { + if (chan[i].writeCtrl) { rWrite(0x05+(i<<4),ctrl); + chan[i].writeCtrl=false; } } } @@ -342,6 +351,17 @@ int DivPlatformC140::dispatch(DivCommand c) { } return chan[c.chan].outVol; break; + case DIV_CMD_STD_NOISE_MODE: + if (!is219) break; + chan[c.chan].noise=c.value; + chan[c.chan].writeCtrl=true; + break; + case DIV_CMD_SNES_INVERT: + if (!is219) break; + chan[c.chan].invert=c.value&15; + chan[c.chan].surround=c.value>>4; + chan[c.chan].writeCtrl=true; + break; case DIV_CMD_PANNING: chan[c.chan].chPanL=c.value; chan[c.chan].chPanR=c.value2; diff --git a/src/engine/platform/c140.h b/src/engine/platform/c140.h index 01802de82..0706a6fbc 100644 --- a/src/engine/platform/c140.h +++ b/src/engine/platform/c140.h @@ -28,7 +28,7 @@ class DivPlatformC140: public DivDispatch { struct Channel: public SharedChannel { unsigned int audPos; int sample, wave; - bool setPos, invert, surround, noise, volChangedL, volChangedR; + bool setPos, invert, surround, noise, volChangedL, volChangedR, writeCtrl; int chPanL, chPanR; int chVolL, chVolR; int macroVolMul; @@ -44,6 +44,7 @@ class DivPlatformC140: public DivDispatch { noise(false), volChangedL(false), volChangedR(false), + writeCtrl(false), chPanL(255), chPanR(255), chVolL(255), diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index e06311770..b9c1f60e7 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1897,7 +1897,8 @@ void DivEngine::registerSystems() { {DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA}, {}, { - {0x10, {DIV_CMD_STD_NOISE_MODE, "10xx: Set noise/invert mode (bit 0: noise; bit 1: invert left output; bit 2: invert output)"}} + {0x11, {DIV_CMD_STD_NOISE_MODE, "11xx: Set noise mode"}}, + {0x12, {DIV_CMD_SNES_INVERT, "12xy: Set invert mode (x: surround; y: invert)"}}, } ); diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index d00295895..b63ff50e6 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -272,6 +272,10 @@ const char* tedControlBits[3]={ "square", "noise", NULL }; +const char* c219ControlBits[4]={ + "noise", "invert", "surround", NULL +}; + const char* x1_010EnvBits[8]={ "enable", "oneshot", "split L/R", "HinvR", "VinvR", "HinvL", "VinvL", NULL }; @@ -4510,7 +4514,8 @@ void FurnaceGUI::drawInsEdit() { ins->type==DIV_INS_K007232 || ins->type==DIV_INS_GA20 || ins->type==DIV_INS_K053260 || - ins->type==DIV_INS_C140) { + ins->type==DIV_INS_C140 || + ins->type==DIV_INS_C219) { if (ImGui::BeginTabItem((ins->type==DIV_INS_SU)?"Sound Unit":"Sample")) { String sName; bool wannaOpenSMPopup=false; @@ -5538,7 +5543,7 @@ void FurnaceGUI::drawInsEdit() { volMax=31; } if (ins->type==DIV_INS_ADPCMB || ins->type==DIV_INS_YMZ280B || ins->type==DIV_INS_RF5C68 || - ins->type==DIV_INS_GA20 || ins->type==DIV_INS_C140) { + ins->type==DIV_INS_GA20 || ins->type==DIV_INS_C140 || ins->type==DIV_INS_C219) { volMax=255; } if (ins->type==DIV_INS_QSOUND) { @@ -5584,6 +5589,10 @@ void FurnaceGUI::drawInsEdit() { dutyLabel="Group Ctrl"; dutyMax=5; } + if (ins->type==DIV_INS_C219) { + dutyLabel="Control"; + dutyMax=3; + } if (ins->type==DIV_INS_BEEPER || ins->type==DIV_INS_POKEMINI) { dutyLabel="Pulse Width"; dutyMax=255; @@ -5709,6 +5718,7 @@ void FurnaceGUI::drawInsEdit() { if (ins->type==DIV_INS_POKEMINI) waveMax=0; if (ins->type==DIV_INS_TED) waveMax=0; if (ins->type==DIV_INS_C140) waveMax=0; + if (ins->type==DIV_INS_C219) waveMax=0; if (ins->type==DIV_INS_SU || ins->type==DIV_INS_POKEY) waveMax=7; if (ins->type==DIV_INS_PET) { waveMax=8; @@ -5839,7 +5849,7 @@ void FurnaceGUI::drawInsEdit() { panMin=0; panMax=127; } - if (ins->type==DIV_INS_C140) { + if (ins->type==DIV_INS_C140 || ins->type==DIV_INS_C219) { panMin=0; panMax=255; } @@ -5864,6 +5874,8 @@ void FurnaceGUI::drawInsEdit() { macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,0,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,msm5232ControlBits)); } else if (ins->type==DIV_INS_ES5506) { macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,dutyMin,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,¯oHoverES5506FilterMode)); + } else if (ins->type==DIV_INS_C219) { + macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,0,dutyMax,120,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,c219ControlBits)); } else { macroList.push_back(FurnaceGUIMacroDesc(dutyLabel,&ins->std.dutyMacro,dutyMin,dutyMax,160,uiColors[GUI_COLOR_MACRO_OTHER])); } From 35faa8c23c1ebf9b70320dbb75ac8bc239141db0 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 18:21:49 -0500 Subject: [PATCH 055/126] C219: presets and VGM export --- src/engine/vgmOps.cpp | 61 ++++++++++++++++++++++++++++++++++++++----- src/gui/presets.cpp | 10 +++++++ 2 files changed, 64 insertions(+), 7 deletions(-) diff --git a/src/engine/vgmOps.cpp b/src/engine/vgmOps.cpp index 30defa66a..1289ef6c2 100644 --- a/src/engine/vgmOps.cpp +++ b/src/engine/vgmOps.cpp @@ -596,6 +596,19 @@ void DivEngine::performVGMWrite(SafeWriter* w, DivSystem sys, DivRegWrite& write w->writeC(0); } break; + case DIV_SYSTEM_C219: + for (int i=0; i<16; i++) { + w->writeC(0xd4); // mute + w->writeS_BE(baseAddr2S|(i<<4)|0); + w->writeC(0); + w->writeC(0xd4); + w->writeS_BE(baseAddr2S|(i<<4)|1); + w->writeC(0); + w->writeC(0xd4); // keyoff + w->writeS_BE(baseAddr2S|(i<<4)|5); + w->writeC(0); + } + break; default: break; } @@ -1058,6 +1071,7 @@ void DivEngine::performVGMWrite(SafeWriter* w, DivSystem sys, DivRegWrite& write w->writeC(write.val&0xff); break; case DIV_SYSTEM_C140: + case DIV_SYSTEM_C219: w->writeC(0xd4); w->writeS_BE(baseAddr2S|(write.addr&0x1ff)); w->writeC(write.val&0xff); @@ -1151,7 +1165,8 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p int hasOKIM6295=0; int hasK051649=0; int hasPCE=0; - int hasNamco=0; + int hasC140=0; + int c140Type=0; int hasK053260=0; int hasPOKEY=0; int hasQSound=0; @@ -1236,6 +1251,7 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p DivDispatch* writeGA20[2]={NULL,NULL}; DivDispatch* writeK053260[2]={NULL,NULL}; DivDispatch* writeC140[2]={NULL,NULL}; + DivDispatch* writeC219[2]={NULL,NULL}; DivDispatch* writeNES[2]={NULL,NULL}; int writeNESIndex[2]={0,0}; @@ -1785,18 +1801,36 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p } break; case DIV_SYSTEM_C140: - if (!hasNamco) { + if (!hasC140) { // ?!?!?! - hasNamco=disCont[i].dispatch->rate/2; + hasC140=disCont[i].dispatch->rate/2; CHIP_VOL(40,1.0); willExport[i]=true; writeC140[0]=disCont[i].dispatch; - } else if (!(hasNamco&0x40000000)) { + } else if (!(hasC140&0x40000000)) { isSecond[i]=true; CHIP_VOL_SECOND(40,1.0); willExport[i]=true; writeC140[1]=disCont[i].dispatch; - hasNamco|=0x40000000; + hasC140|=0x40000000; + howManyChips++; + } + break; + case DIV_SYSTEM_C219: + if (!hasC140) { + // ?!?!?! + hasC140=disCont[i].dispatch->rate/2; + CHIP_VOL(40,1.0); + willExport[i]=true; + writeC219[0]=disCont[i].dispatch; + c140Type=2; + } else if (!(hasC140&0x40000000)) { + isSecond[i]=true; + CHIP_VOL_SECOND(40,1.0); + willExport[i]=true; + writeC219[1]=disCont[i].dispatch; + hasC140|=0x40000000; + c140Type=2; howManyChips++; } break; @@ -1895,13 +1929,13 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p w->writeI(hasOKIM6258); w->writeC(0); // flags w->writeC(0); // K flags - w->writeC(0); // C140 chip type + w->writeC(c140Type); // C140 chip type w->writeC(0); // reserved w->writeI(hasOKIM6295); w->writeI(hasK051649); w->writeI(hasK054539); w->writeI(hasPCE); - w->writeI(hasNamco); + w->writeI(hasC140); w->writeI(hasK053260); w->writeI(hasPOKEY); w->writeI(hasQSound); @@ -2211,6 +2245,19 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p w->writeC(mem[i]>>8); } } + if (writeC219[i]!=NULL && writeC219[i]->getSampleMemUsage()>0) { + w->writeC(0x67); + w->writeC(0x66); + w->writeC(0x8d); + unsigned short* mem=(unsigned short*)writeC219[i]->getSampleMem(); + size_t memLen=writeC219[i]->getSampleMemUsage(); + w->writeI((memLen+8)|(i*0x80000000)); + w->writeI(writeC219[i]->getSampleMemCapacity()); + w->writeI(0); + for (size_t i=0; iwriteC(mem[i]); + } + } } // initialize streams diff --git a/src/gui/presets.cpp b/src/gui/presets.cpp index 7c423ea40..c3cf1bdec 100644 --- a/src/gui/presets.cpp +++ b/src/gui/presets.cpp @@ -2030,6 +2030,11 @@ void FurnaceGUI::initSystemPresets() { CH(DIV_SYSTEM_C140, 1.0f, 0, "") } ); + ENTRY( + "Namco NA-1/2", { + CH(DIV_SYSTEM_C219, 1.0f, 0, "") + } + ); ENTRY( "Taito Arcade", { CH(DIV_SYSTEM_YM2610B, 1.0f, 0, "") @@ -2557,6 +2562,11 @@ void FurnaceGUI::initSystemPresets() { CH(DIV_SYSTEM_C140, 1.0f, 0, "") } ); + ENTRY( + "Namco C219", { + CH(DIV_SYSTEM_C219, 1.0f, 0, "") + } + ); CATEGORY_END; CATEGORY_BEGIN("Wavetable","chips which use user-specified waveforms to generate sound."); From 9cb239438e3269cfe86ff68a583cba4d7d165384 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 18:37:35 -0500 Subject: [PATCH 056/126] C219: chip config and proper clock rate --- src/engine/platform/c140.cpp | 22 +++++++++++++++++++--- src/engine/platform/c140.h | 2 ++ src/gui/sysConf.cpp | 1 + 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index 58ef1570b..f68531576 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -639,10 +639,26 @@ void DivPlatformC140::set219(bool is_219) { totalChans=is219?16:24; } +int DivPlatformC140::getClockRangeMin() { + if (is219) return 1000000; + return MIN_CUSTOM_CLOCK; +} + +int DivPlatformC140::getClockRangeMax() { + if (is219) return 100000000; + return MAX_CUSTOM_CLOCK; +} + void DivPlatformC140::setFlags(const DivConfig& flags) { - chipClock=32000*256; // 8.192MHz and 12.288MHz input, verified from Assault Schematics - CHECK_CUSTOM_CLOCK; - rate=chipClock/192; + if (is219) { + chipClock=50113000; // 50.113MHz clock input in Namco NA-1/NA-2 PCB + CHECK_CUSTOM_CLOCK; + rate=chipClock/1136; // assumed as ~44100hz + } else { + chipClock=32000*256; // 8.192MHz and 12.288MHz input, verified from Assault Schematics + CHECK_CUSTOM_CLOCK; + rate=chipClock/192; + } for (int i=0; irate=rate; } diff --git a/src/engine/platform/c140.h b/src/engine/platform/c140.h index 0706a6fbc..fb74151c0 100644 --- a/src/engine/platform/c140.h +++ b/src/engine/platform/c140.h @@ -106,6 +106,8 @@ class DivPlatformC140: public DivDispatch { size_t getSampleMemUsage(int index = 0); bool isSampleLoaded(int index, int sample); void renderSamples(int chipID); + int getClockRangeMin(); + int getClockRangeMax(); void set219(bool is_219); void setFlags(const DivConfig& flags); int init(DivEngine* parent, int channels, int sugRate, const DivConfig& flags); diff --git a/src/gui/sysConf.cpp b/src/gui/sysConf.cpp index 1609ca7b0..b048ca6a0 100644 --- a/src/gui/sysConf.cpp +++ b/src/gui/sysConf.cpp @@ -2099,6 +2099,7 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo case DIV_SYSTEM_PV1000: case DIV_SYSTEM_VERA: case DIV_SYSTEM_C140: + case DIV_SYSTEM_C219: break; case DIV_SYSTEM_YMU759: supportsCustomRate=false; From a5f351c23228fe8189654a55a770b2cdc0e26e31 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 28 Aug 2023 20:31:22 -0500 Subject: [PATCH 057/126] C219: new sample format (work in progress) --- src/engine/bsr.h | 61 ++++++++++++++++++++++++++++++ src/engine/fileOpsSample.cpp | 1 + src/engine/platform/c140.cpp | 7 ++-- src/engine/platform/lynx.cpp | 43 +-------------------- src/engine/sample.cpp | 72 ++++++++++++++++++++++++++++++++++++ src/engine/sample.h | 7 +++- src/engine/sysDef.cpp | 2 +- src/gui/guiConst.cpp | 2 +- 8 files changed, 146 insertions(+), 49 deletions(-) create mode 100644 src/engine/bsr.h diff --git a/src/engine/bsr.h b/src/engine/bsr.h new file mode 100644 index 000000000..ac3da44d9 --- /dev/null +++ b/src/engine/bsr.h @@ -0,0 +1,61 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2023 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#if defined( _MSC_VER ) + +#include + +static inline int bsr(unsigned short v) { + unsigned long idx; + if (_BitScanReverse(&idx,(unsigned long)v)) { + return idx; + } + else { + return -1; + } +} + +#elif defined( __GNUC__ ) + +static inline int bsr(unsigned short v) +{ + if (v) { + return 32 - __builtin_clz(v); + } + else{ + return -1; + } +} + +#else + +static inline int bsr(unsigned short v) +{ + unsigned short mask = 0x8000; + for (int i = 15; i >= 0; --i) { + if (v&mask) + return (int)i; + mask>>=1; + } + + return -1; +} + +#endif + diff --git a/src/engine/fileOpsSample.cpp b/src/engine/fileOpsSample.cpp index 4d4b3a0e8..0cc3d5b56 100644 --- a/src/engine/fileOpsSample.cpp +++ b/src/engine/fileOpsSample.cpp @@ -395,6 +395,7 @@ DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth, break; case DIV_SAMPLE_DEPTH_8BIT: case DIV_SAMPLE_DEPTH_MULAW: + case DIV_SAMPLE_DEPTH_C219: samples=lenDivided; break; case DIV_SAMPLE_DEPTH_BRR: diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index f68531576..af8ff2f43 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -575,13 +575,12 @@ void DivPlatformC140::renderSamples(int sysID) { length=getSampleMemCapacity()-memPos; logW("out of C219 memory for sample %d!",i); } - if (s->depth==DIV_SAMPLE_DEPTH_MULAW) { + if (s->depth==DIV_SAMPLE_DEPTH_C219) { for (unsigned int i=0; i=s->lengthMuLaw) { + if (i>=s->lengthC219) { sampleMem[i+memPos]=0; } else { - unsigned char x=s->dataMuLaw[i]^0xff; - sampleMem[i+memPos]=x; + sampleMem[i+memPos]=s->dataC219[i]; } } } else { diff --git a/src/engine/platform/lynx.cpp b/src/engine/platform/lynx.cpp index c8a34d461..f06de0415 100644 --- a/src/engine/platform/lynx.cpp +++ b/src/engine/platform/lynx.cpp @@ -19,6 +19,7 @@ #include "lynx.h" #include "../engine.h" +#include "../bsr.h" #include #define rWrite(a,v) {if (!skipRegisterWrites) {mikey->write(a,v); if (dumpWrites) {addWrite(a,v);}}} @@ -36,48 +37,6 @@ #define CHIP_DIVIDER 64 #define CHIP_FREQBASE 16000000 -#if defined( _MSC_VER ) - -#include - -static int bsr(uint16_t v) { - unsigned long idx; - if (_BitScanReverse(&idx,(unsigned long)v)) { - return idx; - } - else { - return -1; - } -} - -#elif defined( __GNUC__ ) - -static int bsr(uint16_t v) -{ - if (v) { - return 32 - __builtin_clz(v); - } - else{ - return -1; - } -} - -#else - -static int bsr(uint16_t v) -{ - uint16_t mask = 0x8000; - for (int i = 15; i >= 0; --i) { - if (v&mask) - return (int)i; - mask>>=1; - } - - return -1; -} - -#endif - static int32_t clamp(int32_t v, int32_t lo, int32_t hi) { return vhi?hi:v); diff --git a/src/engine/sample.cpp b/src/engine/sample.cpp index c2ff85a6a..b3b9345ae 100644 --- a/src/engine/sample.cpp +++ b/src/engine/sample.cpp @@ -26,6 +26,7 @@ #include "sfWrapper.h" #endif #include "filter.h" +#include "bsr.h" extern "C" { #include "../../extern/adpcm/bs_codec.h" @@ -272,6 +273,9 @@ int DivSample::getSampleOffset(int offset, int length, DivSampleDepth depth) { case DIV_SAMPLE_DEPTH_MULAW: off=offset; break; + case DIV_SAMPLE_DEPTH_C219: + off=offset; + break; case DIV_SAMPLE_DEPTH_16BIT: off=offset*2; break; @@ -323,6 +327,10 @@ int DivSample::getSampleOffset(int offset, int length, DivSampleDepth depth) { off=offset; len=length; break; + case DIV_SAMPLE_DEPTH_C219: + off=offset; + len=length; + break; case DIV_SAMPLE_DEPTH_16BIT: off=offset*2; len=length*2; @@ -375,6 +383,9 @@ int DivSample::getEndPosition(DivSampleDepth depth) { case DIV_SAMPLE_DEPTH_MULAW: off=lengthMuLaw; break; + case DIV_SAMPLE_DEPTH_C219: + off=lengthC219; + break; case DIV_SAMPLE_DEPTH_16BIT: off=length16; break; @@ -554,6 +565,12 @@ bool DivSample::initInternal(DivSampleDepth d, int count) { dataMuLaw=new unsigned char[(count+4095)&(~0xfff)]; memset(dataMuLaw,0,(count+4095)&(~0xfff)); break; + case DIV_SAMPLE_DEPTH_C219: // 8-bit C219 "μ-law" + if (dataC219!=NULL) delete[] dataC219; + lengthC219=count; + dataC219=new unsigned char[(count+4095)&(~0xfff)]; + memset(dataC219,0,(count+4095)&(~0xfff)); + break; case DIV_SAMPLE_DEPTH_16BIT: // 16-bit if (data16!=NULL) delete[] data16; length16=count*2; @@ -1133,6 +1150,33 @@ union IntFloat { float f; }; +const short c219Table[256]={ + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, + 512, 576, 640, 704, 768, 832, 896, 960, 1024, 1152, 1280, 1408, 1536, 1664, 1792, 1920, + 2048, 2176, 2304, 2432, 2560, 2688, 2816, 2944, 3072, 3200, 3328, 3456, 3584, 3712, 3840, 3968, + 4096, 4352, 4608, 4864, 5120, 5376, 5632, 5888, 6144, 6400, 6656, 6912, 7168, 7424, 7680, 7936, + 8192, 8448, 8704, 8960, 9216, 9472, 9728, 9984, 10240, 10496, 10752, 11008, 11264, 11520, 11776, 12032, + 12288, 12544, 12800, 13056, 13312, 13568, 13824, 14080, 14336, 14592, 14848, 15104, 15360, 15616, 15872, 16128, + 16384, 16640, 16896, 17152, 17408, 17920, 18432, 18944, 19456, 19968, 20480, 20992, 21504, 22016, 22528, 23040, + 23552, 24064, 24576, 25088, 25600, 26112, 26624, 27136, 27648, 28160, 28672, 29184, 29696, 30208, 30720, 31232, + -32, -64, -96, -128, -160, -192, -224, -256, -288, -320, -352, -384, -416, -448, -480, -512, + -544, -608, -672, -736, -800, -864, -928, -992, -1056, -1184, -1312, -1440, -1568, -1696, -1824, -1952, + -2080, -2208, -2336, -2464, -2592, -2720, -2848, -2976, -3104, -3232, -3360, -3488, -3616, -3744, -3872, -4000, + -4128, -4384, -4640, -4896, -5152, -5408, -5664, -5920, -6176, -6432, -6688, -6944, -7200, -7456, -7712, -7968, + -8224, -8480, -8736, -8992, -9248, -9504, -9760, -10016, -10272, -10528, -10784, -11040, -11296, -11552, -11808, -12064, + -12320, -12576, -12832, -13088, -13344, -13600, -13856, -14112, -14368, -14624, -14880, -15136, -15392, -15648, -15904, -16160, + -16416, -16672, -16928, -17184, -17440, -17952, -18464, -18976, -19488, -20000, -20512, -21024, -21536, -22048, -22560, -23072, + -23584, -24096, -24608, -25120, -25632, -26144, -26656, -27168, -27680, -28192, -28704, -29216, -29728, -30240, -30752, -31264 +}; + +unsigned char c219HighBitPos[16]={ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 24, 24, 48, 48, 48, 48 +}; + +unsigned char c219ShiftToVal[16]={ + 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 7, 7, 8, 8, 8, 8 +}; + void DivSample::render(unsigned int formatMask) { // step 1: convert to 16-bit if needed if (depth!=DIV_SAMPLE_DEPTH_16BIT) { @@ -1184,6 +1228,12 @@ void DivSample::render(unsigned int formatMask) { data16[i]=(short)(s.f*128.0f); } break; + case DIV_SAMPLE_DEPTH_C219: // 8-bit C219 "μ-law" PCM + for (unsigned int i=0; i>19)^0xff; } } + if (NOT_IN_FORMAT(DIV_SAMPLE_DEPTH_C219)) { // C219 + if (!initInternal(DIV_SAMPLE_DEPTH_C219,samples)) return; + for (unsigned int i=0; i0) { + if (s>17152) { // 100+ + x=((s-17152)>>9)+100; + } else { + int b=bsr(s)&15; + x=(s>>c219ShiftToVal[b])+c219HighBitPos[b]; + } + } else if (s<0) { + } + dataC219[i]=x; + } + } } void* DivSample::getCurBuf() { @@ -1297,6 +1364,8 @@ void* DivSample::getCurBuf() { return dataVOX; case DIV_SAMPLE_DEPTH_MULAW: return dataMuLaw; + case DIV_SAMPLE_DEPTH_C219: + return dataC219; case DIV_SAMPLE_DEPTH_16BIT: return data16; default: @@ -1327,6 +1396,8 @@ unsigned int DivSample::getCurBufLen() { return lengthVOX; case DIV_SAMPLE_DEPTH_MULAW: return lengthMuLaw; + case DIV_SAMPLE_DEPTH_C219: + return lengthC219; case DIV_SAMPLE_DEPTH_16BIT: return length16; default: @@ -1437,4 +1508,5 @@ DivSample::~DivSample() { if (dataBRR) delete[] dataBRR; if (dataVOX) delete[] dataVOX; if (dataMuLaw) delete[] dataMuLaw; + if (dataC219) delete[] dataC219; } diff --git a/src/engine/sample.h b/src/engine/sample.h index bbf90d4f5..cf2f9ef07 100644 --- a/src/engine/sample.h +++ b/src/engine/sample.h @@ -44,6 +44,7 @@ enum DivSampleDepth: unsigned char { DIV_SAMPLE_DEPTH_BRR=9, DIV_SAMPLE_DEPTH_VOX=10, DIV_SAMPLE_DEPTH_MULAW=11, + DIV_SAMPLE_DEPTH_C219=12, DIV_SAMPLE_DEPTH_16BIT=16, DIV_SAMPLE_DEPTH_MAX // boundary for sample depth }; @@ -110,6 +111,7 @@ struct DivSample { // - 9: BRR (SNES) // - 10: VOX ADPCM // - 11: 8-bit µ-law PCM + // - 12: C219 "µ-law" PCM // - 16: 16-bit PCM DivSampleDepth depth; bool loop, brrEmphasis, dither; @@ -133,8 +135,9 @@ struct DivSample { unsigned char* dataBRR; // 9 unsigned char* dataVOX; // 10 unsigned char* dataMuLaw; // 11 + unsigned char* dataC219; // 12 - unsigned int length8, length16, length1, lengthDPCM, lengthZ, lengthQSoundA, lengthA, lengthB, lengthBRR, lengthVOX, lengthMuLaw; + unsigned int length8, length16, length1, lengthDPCM, lengthZ, lengthQSoundA, lengthA, lengthB, lengthBRR, lengthVOX, lengthMuLaw, lengthC219; unsigned int samples; @@ -341,6 +344,7 @@ struct DivSample { dataBRR(NULL), dataVOX(NULL), dataMuLaw(NULL), + dataC219(NULL), length8(0), length16(0), length1(0), @@ -352,6 +356,7 @@ struct DivSample { lengthBRR(0), lengthVOX(0), lengthMuLaw(0), + lengthC219(0), samples(0) { for (int i=0; i Date: Tue, 29 Aug 2023 02:01:56 -0500 Subject: [PATCH 058/126] YESSSSSSSSS disable SSE on the 32-bit Windows builds --- scripts/release-win32.sh | 2 +- scripts/release-winxp.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/release-win32.sh b/scripts/release-win32.sh index 206e4e6c6..d189ca6de 100755 --- a/scripts/release-win32.sh +++ b/scripts/release-win32.sh @@ -15,7 +15,7 @@ fi cd win32build # TODO: potential Arch-ism? -i686-w64-mingw32-cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_FLAGS="-O2 -march=i586" -DCMAKE_CXX_FLAGS="-O2 -Wall -Wextra -Wno-unused-parameter -Wno-cast-function-type -march=i586" -DBUILD_SHARED_LIBS=OFF -DSUPPORT_XP=OFF -DWITH_RENDER_DX11=ON -DUSE_BACKWARD=OFF .. || exit 1 +i686-w64-mingw32-cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_FLAGS="-O2 -march=i586" -DCMAKE_CXX_FLAGS="-O2 -Wall -Wextra -Wno-unused-parameter -Wno-cast-function-type -march=i586" -DBUILD_SHARED_LIBS=OFF -DSUPPORT_XP=OFF -DWITH_RENDER_DX11=ON -DUSE_BACKWARD=OFF -DSDL_SSE2=OFF -DSDL_SSE3=OFF -DENABLE_SSE=OFF -DENABLE_SSE2=OFF -DENABLE_AVX=OFF -DENABLE_AVX2=OFF .. || exit 1 make -j8 || exit 1 cd .. diff --git a/scripts/release-winxp.sh b/scripts/release-winxp.sh index 59604ea36..9242bfc6c 100755 --- a/scripts/release-winxp.sh +++ b/scripts/release-winxp.sh @@ -15,7 +15,7 @@ fi cd xpbuild # TODO: potential Arch-ism? -i686-w64-mingw32-cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_FLAGS="-O2" -DCMAKE_CXX_FLAGS="-O2 -Wall -Wextra -Wno-unused-parameter -Wno-cast-function-type" -DBUILD_SHARED_LIBS=OFF -DSUPPORT_XP=ON -DWITH_RENDER_DX11=OFF .. || exit 1 +i686-w64-mingw32-cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_FLAGS="-O2" -DCMAKE_CXX_FLAGS="-O2 -Wall -Wextra -Wno-unused-parameter -Wno-cast-function-type" -DBUILD_SHARED_LIBS=OFF -DSUPPORT_XP=ON -DWITH_RENDER_DX11=OFF -DSDL_SSE2=OFF -DSDL_SSE3=OFF -DENABLE_SSE=OFF -DENABLE_SSE2=OFF -DENABLE_AVX=OFF -DENABLE_AVX2=OFF .. || exit 1 make -j8 || exit 1 cd .. From 87ae995ff916847c2e5f48af9c428188e2f8e266 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 02:14:55 -0500 Subject: [PATCH 059/126] MSM5232: fix chan osc again issue #1435 --- src/engine/platform/msm5232.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/engine/platform/msm5232.cpp b/src/engine/platform/msm5232.cpp index 8ad6b1da9..997ab607e 100644 --- a/src/engine/platform/msm5232.cpp +++ b/src/engine/platform/msm5232.cpp @@ -49,20 +49,23 @@ void DivPlatformMSM5232::acquire(short** buf, size_t len) { for (size_t h=0; hwrite(w.addr,w.val); regPool[w.addr&0x0f]=w.val; writes.pop(); } for (int i=0; i<8; i++) { - int o=( - ((regPool[12+(i>>2)]&1)?((msm->vo16[i]*partVolume[3+(i&4)])>>8):0)+ - ((regPool[12+(i>>2)]&2)?((msm->vo8[i]*partVolume[2+(i&4)])>>8):0)+ - ((regPool[12+(i>>2)]&4)?((msm->vo4[i]*partVolume[1+(i&4)])>>8):0)+ - ((regPool[12+(i>>2)]&8)?((msm->vo2[i]*partVolume[i&4])>>8):0) - )<<2; - oscBuf[i]->data[oscBuf[i]->needle++]=CLAMP(o,-32768,32767); + if (isMuted[i]) { + oscBuf[i]->data[oscBuf[i]->needle++]=0; + } else { + int o=( + ((regPool[12+(i>>2)]&1)?((msm->vo16[i]*partVolume[3+(i&4)])>>8):0)+ + ((regPool[12+(i>>2)]&2)?((msm->vo8[i]*partVolume[2+(i&4)])>>8):0)+ + ((regPool[12+(i>>2)]&4)?((msm->vo4[i]*partVolume[1+(i&4)])>>8):0)+ + ((regPool[12+(i>>2)]&8)?((msm->vo2[i]*partVolume[i&4])>>8):0) + )<<2; + oscBuf[i]->data[oscBuf[i]->needle++]=CLAMP(o,-32768,32767); + } } clockDriftLFOPos+=clockDriftLFOSpeed; From da7ad75afdff029740851ffa1fea59505b4dd402 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 02:32:59 -0500 Subject: [PATCH 060/126] C219: fix audio --- src/engine/platform/c140.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index af8ff2f43..3718ad65c 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -23,7 +23,7 @@ #include #include -#define CHIP_FREQBASE 12582912 +#define CHIP_FREQBASE (is219?74448896:12582912) #define rWrite(a,v) {if(!skipRegisterWrites) {writes.push(QueuedWrite(a,v)); if(dumpWrites) addWrite(a,v); }} From e6c52e34d1a70cee8f71f1767b70bffdedbc1b53 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 03:19:26 -0500 Subject: [PATCH 061/126] C219: finish C219 sample format --- src/engine/platform/c140.cpp | 2 +- src/engine/sample.cpp | 22 +++++++++++++--------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index 3718ad65c..873825648 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -209,7 +209,7 @@ void DivPlatformC140::tick(bool sysTick) { if (chan[i].freq<0) chan[i].freq=0; if (chan[i].freq>65535) chan[i].freq=65535; if (is219) { - ctrl|=(chan[i].active?0x80:0)|((s->isLoopable())?0x10:0)|((s->depth==DIV_SAMPLE_DEPTH_MULAW)?1:0)|(chan[i].invert?0x40:0)|(chan[i].surround?8:0)|(chan[i].noise?4:0); + ctrl|=(chan[i].active?0x80:0)|((s->isLoopable())?0x10:0)|((s->depth==DIV_SAMPLE_DEPTH_C219)?1:0)|(chan[i].invert?0x40:0)|(chan[i].surround?8:0)|(chan[i].noise?4:0); } else { ctrl|=(chan[i].active?0x80:0)|((s->isLoopable())?0x10:0)|((s->depth==DIV_SAMPLE_DEPTH_MULAW)?0x08:0); } diff --git a/src/engine/sample.cpp b/src/engine/sample.cpp index b3b9345ae..6764ac2c7 100644 --- a/src/engine/sample.cpp +++ b/src/engine/sample.cpp @@ -1328,16 +1328,20 @@ void DivSample::render(unsigned int formatMask) { for (unsigned int i=0; i0) { - if (s>17152) { // 100+ - x=((s-17152)>>9)+100; - } else { - int b=bsr(s)&15; - x=(s>>c219ShiftToVal[b])+c219HighBitPos[b]; - } - } else if (s<0) { + bool negate=s&0x8000; + if (negate) { + s^=0xffff; } - dataC219[i]=x; + if (s==0) { + x=0; + } else if (s>17152) { // 100+ + x=((s-17152)>>9)+100; + } else { + int b=bsr(s)-1; + x=((s-(c219Table[c219HighBitPos[b]]))>>c219ShiftToVal[b])+c219HighBitPos[b]; + } + if (x>127) x=127; + dataC219[i]=x|(negate?0x80:0); } } } From eff22ae7b9ae2b9a98ddcee54620c64bd839a32b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 03:26:32 -0500 Subject: [PATCH 062/126] =?UTF-8?q?fix=20=C2=B5-law=20encoder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/engine/sample.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/engine/sample.cpp b/src/engine/sample.cpp index 6764ac2c7..fe640d270 100644 --- a/src/engine/sample.cpp +++ b/src/engine/sample.cpp @@ -1316,7 +1316,9 @@ void DivSample::render(unsigned int formatMask) { if (!initInternal(DIV_SAMPLE_DEPTH_MULAW,samples)) return; for (unsigned int i=0; i32639.0f) s.f=32639.0f; s.f/=128.0f; s.f+=1.0f; s.i-=0x3f800000; From fccb6aff6e58e3fa9c357457b6943022099bcb28 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 03:33:34 -0500 Subject: [PATCH 063/126] GUI: C219 in sample editor --- src/gui/sampleEdit.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index 02d0aed58..2ca22f14e 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -320,6 +320,22 @@ void FurnaceGUI::drawSampleEdit() { if (sample->samples>65535) { SAMPLE_WARN(warnLength,"C140: maximum sample length is 65535"); } + if (dispatch!=NULL) { + MAX_RATE("C140",dispatch->rate); + } + break; + case DIV_SYSTEM_C219: + if (sample->loop) { + if (sample->loopStart&1 || sample->loopEnd&1) { + SAMPLE_WARN(warnLoopPos,"C219: loop must be a multiple of 2"); + } + } + if (sample->samples>131072) { + SAMPLE_WARN(warnLength,"C219: maximum sample length is 131072"); + } + if (dispatch!=NULL) { + MAX_RATE("C219",dispatch->rate); + } break; default: break; From ca51ee9f320f2aef1e2d3b32c3d953e99230dbba Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 03:38:59 -0500 Subject: [PATCH 064/126] C219: fix bank note off --- src/engine/platform/c140.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index 873825648..d3ddb1133 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -249,7 +249,7 @@ void DivPlatformC140::tick(bool sysTick) { // shut everyone else up for (int j=0; j<4; j++) { int ch=(i&(~3))|j; - if (chan[ch].active && (i&3)!=j) { + if (chan[ch].active && !chan[ch].keyOn && (i&3)!=j) { chan[ch].sample=-1; chan[ch].active=false; chan[ch].keyOff=true; @@ -447,6 +447,12 @@ void DivPlatformC140::forceIns() { chan[i].volChangedR=true; chan[i].sample=-1; } + if (is219) { + // restore banks + for (int i=0; i<4; i++) { + rWrite(0x1f1+(((3+(i>>2))&3)<<1),groupBank[i>>2]); + } + } } void* DivPlatformC140::getChanState(int ch) { From ead19d6111ca403b69bef2e3f671d5c79bed567d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 03:40:40 -0500 Subject: [PATCH 065/126] C219: fix bank restore --- src/engine/platform/c140.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index d3ddb1133..362ece043 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -450,7 +450,7 @@ void DivPlatformC140::forceIns() { if (is219) { // restore banks for (int i=0; i<4; i++) { - rWrite(0x1f1+(((3+(i>>2))&3)<<1),groupBank[i>>2]); + rWrite(0x1f1+(((3+i)&3)<<1),groupBank[i]); } } } From e7fe99f795ea428c2777b735fd836167940198a7 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 03:42:16 -0500 Subject: [PATCH 066/126] C219: fix VGM export crash --- src/engine/vgmOps.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/vgmOps.cpp b/src/engine/vgmOps.cpp index 1289ef6c2..0d5e3f8b5 100644 --- a/src/engine/vgmOps.cpp +++ b/src/engine/vgmOps.cpp @@ -2249,7 +2249,7 @@ SafeWriter* DivEngine::saveVGM(bool* sysToExport, bool loop, int version, bool p w->writeC(0x67); w->writeC(0x66); w->writeC(0x8d); - unsigned short* mem=(unsigned short*)writeC219[i]->getSampleMem(); + unsigned char* mem=(unsigned char*)writeC219[i]->getSampleMem(); size_t memLen=writeC219[i]->getSampleMemUsage(); w->writeI((memLen+8)|(i*0x80000000)); w->writeI(writeC219[i]->getSampleMemCapacity()); From eaac5cc224312daf5aba3cf66fde8baff35d70de Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 04:09:11 -0500 Subject: [PATCH 067/126] C219: fix VGM export a sample word has two 8-bit samples in reverse order (need hardware confirmation) --- src/engine/platform/c140.cpp | 9 +++++---- src/engine/platform/sound/c140_c219.c | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index 362ece043..61e12c8ae 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -573,6 +573,7 @@ void DivPlatformC140::renderSamples(int sysID) { if ((memPos&0xfe0000)!=((memPos+length)&0xfe0000)) { memPos=((memPos+0x1ffff)&0xfe0000); } + logV("%d",length); if (memPos>=(getSampleMemCapacity())) { logW("out of C219 memory for sample %d!",i); break; @@ -584,17 +585,17 @@ void DivPlatformC140::renderSamples(int sysID) { if (s->depth==DIV_SAMPLE_DEPTH_C219) { for (unsigned int i=0; i=s->lengthC219) { - sampleMem[i+memPos]=0; + sampleMem[(memPos+i)^1]=0; } else { - sampleMem[i+memPos]=s->dataC219[i]; + sampleMem[(memPos+i)^1]=s->dataC219[i]; } } } else { for (unsigned int i=0; i=s->length8) { - sampleMem[memPos+i]=0; + sampleMem[(memPos+i)^1]=0; } else { - sampleMem[memPos+i]=s->data8[i]; + sampleMem[(memPos+i)^1]=s->data8[i]; } } } diff --git a/src/engine/platform/sound/c140_c219.c b/src/engine/platform/sound/c140_c219.c index 67aa6dc4c..56d96ca19 100644 --- a/src/engine/platform/sound/c140_c219.c +++ b/src/engine/platform/sound/c140_c219.c @@ -171,8 +171,8 @@ void c219_voice_tick(struct c219_t *c219, const unsigned char v, const int cycle else { // fetch 8 bit sample - signed short s1 = c219->sample_mem[((unsigned int)(c219->bank[(v >> 2) & 3]) << 17) | voice->addr]; - signed short s2 = c219->sample_mem[((unsigned int)(c219->bank[(v >> 2) & 3]) << 17) | ((voice->addr + 1) & 0x1ffff)]; + signed short s1 = c219->sample_mem[((unsigned int)(c219->bank[(v >> 2) & 3]) << 17) | (voice->addr^1)]; + signed short s2 = c219->sample_mem[((unsigned int)(c219->bank[(v >> 2) & 3]) << 17) | (((voice->addr + 1) & 0x1ffff)^1)]; if (voice->compressed) { s1 = c219->mulaw[s1&0xff]; From 32ec87ca27223f2f628b4b7352a8cf230dff2e45 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 04:26:25 -0500 Subject: [PATCH 068/126] prepare for K05 ADPCM --- src/engine/fileOpsSample.cpp | 2 ++ src/engine/sample.cpp | 33 +++++++++++++++++++++++++++++++++ src/engine/sample.h | 7 ++++++- src/gui/guiConst.cpp | 2 +- 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/engine/fileOpsSample.cpp b/src/engine/fileOpsSample.cpp index 0cc3d5b56..ac9441adc 100644 --- a/src/engine/fileOpsSample.cpp +++ b/src/engine/fileOpsSample.cpp @@ -390,6 +390,7 @@ DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth, case DIV_SAMPLE_DEPTH_QSOUND_ADPCM: case DIV_SAMPLE_DEPTH_ADPCM_A: case DIV_SAMPLE_DEPTH_ADPCM_B: + case DIV_SAMPLE_DEPTH_ADPCM_K: case DIV_SAMPLE_DEPTH_VOX: samples=lenDivided*2; break; @@ -488,6 +489,7 @@ DivSample* DivEngine::sampleFromFileRaw(const char* path, DivSampleDepth depth, case DIV_SAMPLE_DEPTH_QSOUND_ADPCM: case DIV_SAMPLE_DEPTH_ADPCM_A: case DIV_SAMPLE_DEPTH_ADPCM_B: + case DIV_SAMPLE_DEPTH_ADPCM_K: case DIV_SAMPLE_DEPTH_VOX: // swap nibbles for (unsigned int i=0; igetCurBufLen(); i++) { diff --git a/src/engine/sample.cpp b/src/engine/sample.cpp index fe640d270..21738b8aa 100644 --- a/src/engine/sample.cpp +++ b/src/engine/sample.cpp @@ -261,6 +261,9 @@ int DivSample::getSampleOffset(int offset, int length, DivSampleDepth depth) { case DIV_SAMPLE_DEPTH_ADPCM_B: off=(offset+1)/2; break; + case DIV_SAMPLE_DEPTH_ADPCM_K: + off=(offset+1)/2; + break; case DIV_SAMPLE_DEPTH_8BIT: off=offset; break; @@ -311,6 +314,10 @@ int DivSample::getSampleOffset(int offset, int length, DivSampleDepth depth) { off=(offset+1)/2; len=(length+1)/2; break; + case DIV_SAMPLE_DEPTH_ADPCM_K: + off=(offset+1)/2; + len=(length+1)/2; + break; case DIV_SAMPLE_DEPTH_8BIT: off=offset; len=length; @@ -371,6 +378,9 @@ int DivSample::getEndPosition(DivSampleDepth depth) { case DIV_SAMPLE_DEPTH_ADPCM_B: off=lengthB; break; + case DIV_SAMPLE_DEPTH_ADPCM_K: + off=lengthK; + break; case DIV_SAMPLE_DEPTH_8BIT: off=length8; break; @@ -540,6 +550,12 @@ bool DivSample::initInternal(DivSampleDepth d, int count) { dataB=new unsigned char[(lengthB+255)&(~0xff)]; memset(dataB,0,(lengthB+255)&(~0xff)); break; + case DIV_SAMPLE_DEPTH_ADPCM_K: // K05 ADPCM + if (dataK!=NULL) delete[] dataK; + lengthK=(count+1)/2; + dataK=new unsigned char[(lengthK+255)&(~0xff)]; + memset(dataK,0,(lengthK+255)&(~0xff)); + break; case DIV_SAMPLE_DEPTH_8BIT: // 8-bit if (data8!=NULL) delete[] data8; length8=count; @@ -800,6 +816,9 @@ void DivSample::convert(DivSampleDepth newDepth) { case DIV_SAMPLE_DEPTH_ADPCM_B: // ADPCM-B setSampleCount((samples+1)&(~1)); break; + case DIV_SAMPLE_DEPTH_ADPCM_K: // K05 ADPCM + setSampleCount((samples+1)&(~1)); + break; case DIV_SAMPLE_DEPTH_BRR: // BRR setSampleCount(16*(lengthBRR/9)); break; @@ -1209,6 +1228,11 @@ void DivSample::render(unsigned int formatMask) { case DIV_SAMPLE_DEPTH_ADPCM_B: // ADPCM-B ymb_decode(dataB,data16,samples); break; + case DIV_SAMPLE_DEPTH_ADPCM_K: // K05 ADPCM + for (unsigned int i=0; i Date: Tue, 29 Aug 2023 06:16:07 -0500 Subject: [PATCH 069/126] kind of implement K05 ADPCM low quality --- src/engine/sample.cpp | 74 +++++++++++++++++++++++++++++++++++++++++-- src/engine/sysDef.cpp | 4 +-- 2 files changed, 73 insertions(+), 5 deletions(-) diff --git a/src/engine/sample.cpp b/src/engine/sample.cpp index 21738b8aa..610297401 100644 --- a/src/engine/sample.cpp +++ b/src/engine/sample.cpp @@ -1196,6 +1196,10 @@ unsigned char c219ShiftToVal[16]={ 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 7, 7, 8, 8, 8, 8 }; +signed char adpcmKTable[16]={ + 0, 1, 2, 4, 8, 16, 32, 64, -128, -64, -32, -16, -8, -4, -2, -1 +}; + void DivSample::render(unsigned int formatMask) { // step 1: convert to 16-bit if needed if (depth!=DIV_SAMPLE_DEPTH_16BIT) { @@ -1228,11 +1232,20 @@ void DivSample::render(unsigned int formatMask) { case DIV_SAMPLE_DEPTH_ADPCM_B: // ADPCM-B ymb_decode(dataB,data16,samples); break; - case DIV_SAMPLE_DEPTH_ADPCM_K: // K05 ADPCM + case DIV_SAMPLE_DEPTH_ADPCM_K: { // K05 ADPCM + signed char s=0; for (unsigned int i=0; i>1]; + if (i&1) { // TODO: is this right? + nibble>>=4; + } else { + nibble&=15; + } + s+=adpcmKTable[nibble]; + data16[i]=s<<8; } break; + } case DIV_SAMPLE_DEPTH_8BIT: // 8-bit PCM for (unsigned int i=0; i>8; + short delta=target-accum; + unsigned char next=0; + + if (delta!=0) { + int b=bsr((delta>=0)?delta:-delta); + if (delta>=0) { + if (b>7) b=7; + next=b&15; + + // test previous + if (next>1) { + const signed char t1=accum+adpcmKTable[next]; + const signed char t2=accum+adpcmKTable[next-1]; + const signed char d1=((t1-target)<0)?(target-t1):(t1-target); + const signed char d2=((t2-target)<0)?(target-t2):(t2-target); + + if (d28) b=8; + next=(16-b)&15; + + // test next + if (next<15) { + const signed char t1=accum+adpcmKTable[next]; + const signed char t2=accum+adpcmKTable[next+1]; + const signed char d1=((t1-target)<0)?(target-t1):(t1-target); + const signed char d2=((t2-target)<0)?(target-t2):(t2-target); + + if (d2=128 || accum+adpcmKTable[next]<-128) { + if (delta>=0) { + next--; + } else { + next++; + if (next>15) next=15; + } + }*/ + } + + out<<=4; + out|=next; + accum+=adpcmKTable[next]; + + if (i&1) { + dataK[i>>1]=out; + out=0; + } + } } if (NOT_IN_FORMAT(DIV_SAMPLE_DEPTH_8BIT)) { // 8-bit PCM if (!initInternal(DIV_SAMPLE_DEPTH_8BIT,samples)) return; diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 59885807c..9e7fafc0f 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1854,7 +1854,7 @@ void DivEngine::registerSystems() { ); sysDefs[DIV_SYSTEM_K053260]=new DivSysDef( - "Konami K053260", NULL, 0xcc, 0, 4, false, true, 0x161, false, 1U< Date: Tue, 29 Aug 2023 06:23:38 -0500 Subject: [PATCH 070/126] implement K05 ADPCM --- src/engine/sample.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/sample.cpp b/src/engine/sample.cpp index 610297401..4332503cd 100644 --- a/src/engine/sample.cpp +++ b/src/engine/sample.cpp @@ -1368,8 +1368,8 @@ void DivSample::render(unsigned int formatMask) { }*/ } - out<<=4; - out|=next; + out>>=4; + out|=next<<4; accum+=adpcmKTable[next]; if (i&1) { From da5d110e739f507a373f4147f77ff4026e121a11 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Tue, 29 Aug 2023 10:52:07 -0700 Subject: [PATCH 071/126] Doc update for new features. --- doc/2-interface/menu-bar.md | 10 ++-------- doc/2-interface/order-list.png | Bin 73955 -> 82185 bytes doc/2-interface/settings.md | 3 ++- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/doc/2-interface/menu-bar.md b/doc/2-interface/menu-bar.md index 9b4268cf4..2a6c184a5 100644 --- a/doc/2-interface/menu-bar.md +++ b/doc/2-interface/menu-bar.md @@ -39,14 +39,8 @@ items in _italics_ don't appear in basic mode and are only available in advanced - only available when there's a YM2151 and/or VERA. - **export command stream...**: export song data to a command stream file. see next section for more details. - this option is for developers. - -- _**add chip...**:_ add a chip to the current song. -- _**configure chip...**:_ set a chip's parameters. - - for a list of parameters, see [7-systems](../7-systems/README.md). -- _**change chip...**:_ change a chip to another. - - **Preserve channel positions**: enable this option to make sure Furnace does not auto-arrange/delete channels to compensate for differing channel counts. this can be useful for doing ports, e.g. from Genesis to PC-98. -- _**remove chip...**_: remove a chip. - - **Preserve channel positions**: same thing as above. + +- **manage chips**: opens the [Chip Manager](../8-advanced/chip-manager.md) dialog. - **restore backup**: restores a previously saved backup. - Furnace keeps up to 5 backups of a song. diff --git a/doc/2-interface/order-list.png b/doc/2-interface/order-list.png index e3ead8c06fd9cdc8fb7546222ceb2dda7ebaf28c..ffce368ad8f939b972c3cbdc1f98bca0f1515f9c 100644 GIT binary patch literal 82185 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 T2B(&Ch2UXjVTa2%^CbTT7qoO2 literal 73955 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:+n3HUDvqG&A% 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 z

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 diff --git a/doc/2-interface/settings.md b/doc/2-interface/settings.md index 7a5546642..5c984d39c 100644 --- a/doc/2-interface/settings.md +++ b/doc/2-interface/settings.md @@ -193,7 +193,7 @@ settings are saved when clicking the **OK** or **Apply** buttons at the bottom o - **Import** - **Export** - **Reset defaults** -- several categories of keybinds... +- [grouped list of keybinds...](keyboard.md) - click on a keybind then enter a key or key combination to change it - right-click to clear the keybind @@ -327,6 +327,7 @@ settings are saved when clicking the **OK** or **Apply** buttons at the bottom o - **Cursor details or file path** - **Nothing** - **Capitalize menu bar** +- **Display add/configure/change/remove chip menus in File menu**: if enabled, the "manage chips" item in the file menu is split into the four listed items for quick access. ### Orders From e65e79f1920de0d466ff88871bf90cada9ec7c51 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Tue, 29 Aug 2023 11:24:47 -0700 Subject: [PATCH 072/126] Complete keyboard settings. All* the settings are here now! * minus the one that shouldn't be --- doc/2-interface/keyboard.md | 307 ++++++++++++++++++++++++++++++++++-- src/gui/guiConst.cpp | 2 +- src/gui/settings.cpp | 50 ++++-- 3 files changed, 328 insertions(+), 31 deletions(-) diff --git a/doc/2-interface/keyboard.md b/doc/2-interface/keyboard.md index 7fe7f8f5a..4592672b2 100644 --- a/doc/2-interface/keyboard.md +++ b/doc/2-interface/keyboard.md @@ -1,15 +1,296 @@ -# global keyboard shortcuts +# keyboard -this is a list of available shortcuts that may be used at any time, regardless of currently focused window. +everything on this list can be configured in the "Keyboard" tab of the Settings dialog: +- click on a keybind then enter a key or key combination to change it. +- right-click to clear the keybind. -key | action ------------|----------------------- -Ctrl-O | open file -Ctrl-S | save file -Enter | play/stop song -F5/F6 | " -Shift-Enter| play from cursor position -F7 | " -Ctrl-Enter | play one row -NumPad `/` | decrease octave -NumPad `*` | increase octave +the keys in the "Global hotkeys" section can be used in any window, though not within text boxes. + +| action | default keybind | +|--------------------------------------------------------|------------------| +| **Global hotkeys** | | +| New | `Ctrl-N` | +| Clear song data | — | +| Open file | `Ctrl-O` | +| Restore backup | — | +| Save file | `Ctrl-S` | +| Save as | `Ctrl-Shift-S` | +| Undo | `Ctrl-Z` | +| Redo | `Ctrl-Y` | +| Play/Stop (toggle) | `Return` | +| Play | — | +| Stop | — | +| Play (from beginning) | `F5` | +| Play (repeat pattern) | — | +| Play from cursor | `Shift-Return` | +| Step row | `Ctrl-Return` | +| Octave up | `Keypad *` | +| Octave down | `Keypad /` | +| Previous instrument | `Shift-Keypad /` | +| Next instrument | `Shift-Keypad *` | +| Increase edit step | `Ctrl-Keypad *` | +| Decrease edit step | `Ctrl-Keypad /` | +| Toggle edit mode | `Space` | +| Metronome | `Ctrl-M` | +| Toggle repeat pattern | — | +| Follow orders | — | +| Follow pattern | — | +| Toggle full-screen | `F11` | +| Request voice from TX81Z | — | +| Panic | `F12` | +| | | +| **Window activation** | | +| Find/Replace | Ctrl-F | +| Settings | — | +| Song Information | — | +| Subsongs | — | +| Speed | — | +| Instrument List | — | +| Wavetable List | — | +| Sample List | — | +| Orders | — | +| Pattern | — | +| Mixer | — | +| Grooves | — | +| Channels | — | +| Pattern Manager | — | +| Chip Manager | — | +| Compatibility Flags | — | +| Song Comments | — | +| Instrument Editor | — | +| Wavetable Editor | — | +| Sample Editor | — | +| Edit Controls | — | +| Piano | — | +| Oscilloscope (master) | — | +| Oscilloscope (per-channel) | — | +| Volume Meter | — | +| Clock | — | +| Register View | — | +| Log Viewer | — | +| Statistics | — | +| Effect List | — | +| Debug Menu | `Ctrl-Shift-D` | +| About | — | +| Collapse/expand current window | — | +| Close current window | `Shift-Escape` | +| | | +| **Note input** | | +| _see "note input" section after table_ | | +| | | +| **Pattern** | | +| Transpose (+1) | `Ctrl-F2` | +| Transpose (-1) | `Ctrl-F1` | +| Transpose (+1 octave) | `Ctrl-F4` | +| Transpose (-1 octave) | `Ctrl-F3` | +| Increase values (+1) | `Ctrl-Shift-F2` | +| Increase values (-1) | `Ctrl-Shift-F1` | +| Increase values (+16) | `Ctrl-Shift-F4` | +| Increase values (-16) | `Ctrl-Shift-F3` | +| Select all | `Ctrl-A` | +| Cut | `Ctrl-X` | +| Copy | `Ctrl-C` | +| Paste | `Ctrl-V` | +| Paste Mix (foreground) | `Ctrl-Shift-V` | +| Paste Mix (background) | — | +| Paste Flood | — | +| Paste Overflow | — | +| Move cursor up | `Up` | +| Move cursor down | `Down` | +| Move cursor left | `Left` | +| Move cursor right | `Right` | +| Move cursor up by one (override Edit Step) | `Shift-Home` | +| Move cursor down by one (override Edit Step) | `Shift-End` | +| Move cursor to previous channel | — | +| Move cursor to next channel | — | +| Move cursor to next channel (overflow) | — | +| Move cursor to previous channel (overflow) | — | +| Move cursor to beginning of pattern | `Home` | +| Move cursor to end of pattern | `End` | +| Move cursor up (coarse) | `PageUp` | +| Move cursor down (coarse) | `PageDown` | +| Expand selection upwards | `Shift-Up` | +| Expand selection downwards | `Shift-Down` | +| Expand selection to the left | `Shift-Left` | +| Expand selection to the right | `Shift-Right` | +| Expand selection upwards by one (override Edit Step) | — | +| Expand selection downwards by one (override Edit Step) | — | +| Expand selection to beginning of pattern | — | +| Expand selection to end of pattern | — | +| Expand selection upwards (coarse) | `Shift-PageUp` | +| Expand selection downwards (coarse) | `Shift-PageDown` | +| Delete | `Delete` | +| Pull delete | `Backspace` | +| Insert | `Insert` | +| Mute channel at cursor | `Alt-F9` | +| Solo channel at cursor | `Alt-F10` | +| Unmute all channels | `Alt-Shift-F9` | +| Go to next order | — | +| Go to previous order | — | +| Collapse channel at cursor | — | +| Increase effect columns | — | +| Decrease effect columns | — | +| Interpolate | — | +| Fade | — | +| Invert values | — | +| Flip selection | — | +| Collapse rows | — | +| Expand rows | — | +| Collapse pattern | — | +| Expand pattern | — | +| Collapse song | — | +| Expand song | — | +| Set note input latch | — | +| Clear note input latch | — | +| | | +| **Instrument list** | | +| Add | `Insert` | +| Duplicate | `Ctrl-D` | +| Open | — | +| Open (replace current) | — | +| Save | — | +| Save (.dmp) | — | +| Move up | `Shift-Up` | +| Move down | `Shift-Down` | +| Delete | — | +| Edit | `Shift-Return` | +| Cursor up | `Up` | +| Cursor down | `Down` | +| Toggle folders/standard view | `Ctrl-V` | +| | | +| **Wavetable list** | | +| Add | `Insert` | +| Duplicate | `Ctrl-D` | +| Open | — | +| Open (replace current) | — | +| Save | — | +| Save (.dmw) | — | +| Save (raw) | — | +| Move up | `Shift-Up` | +| Move down | `Shift-Down` | +| Delete | — | +| Edit | `Shift-Return` | +| Cursor up | `Up` | +| Cursor down | `Down` | +| Toggle folders/standard view | `Ctrl-V` | +| | | +| **Sample list** | | +| Add | `Insert` | +| Duplicate | `Ctrl-D` | +| Create wavetable from selection | `Ctrl-W` | +| Open | — | +| Open (replace current) | — | +| Import raw data | — | +| Import raw data (replace current) | — | +| Save | — | +| Save (raw) | — | +| Move up | `Shift-Up` | +| Move down | `Shift-Down` | +| Delete | — | +| Edit | `Shift-Return` | +| Cursor up | `Up` | +| Cursor down | `Down` | +| Preview | — | +| Stop preview | — | +| Toggle folders/standard view | `Ctrl-V` | +| | | +| **Orders** | | +| Previous order | `Up` | +| Next order | `Down` | +| Cursor left | `Left` | +| Cursor right | `Right` | +| Increase value | — | +| Decrease value | — | +| Switch edit mode | — | +| Toggle alter entire row | `Ctrl-L` | +| Add | `Insert` | +| Duplicate | `Ctrl-D` | +| Deep clone | `Ctrl-Shift-D` | +| Duplicate to end of song | `Ctrl-E` | +| Deep clone to end of song | `Ctrl-Shift-E` | +| Remove | `Delete` | +| Move up | `Shift-Up` | +| Move down | `Shift-Down` | +| Replay | — | +| | | +| **Sample editor** | | +| Edit mode: Select | `Shift-I` | +| Edit mode: Draw | `Shift-D` | +| Cut | `Ctrl-X` | +| Copy | `Ctrl-C` | +| Paste | `Ctrl-V` | +| Paste replace | `Ctrl-Shift-V` | +| Paste mix | `Ctrl-Alt-V` | +| Select all | `Ctrl-A` | +| Resize | `Ctrl-R` | +| Resample | `Ctrl-E` | +| Amplify | `Ctrl-B` | +| Normalize | `Ctrl-N` | +| Fade in | `Ctrl-I` | +| Fade out | `Ctrl-O` | +| Insert silence | `Insert` | +| Apply silence | `Shift-Delete` | +| Delete | `Delete` | +| Trim | `Ctrl-Delete` | +| Reverse | `Ctrl-T` | +| Invert | `Ctrl-Shift-T` | +| Signed/unsigned exchange | `Ctrl-U` | +| Apply filter | `Ctrl-F` | +| Preview sample | — | +| Stop sample preview | — | +| Zoom in | `Ctrl-=` | +| Zoom out | `Ctrl--` | +| Toggle auto-zoom | `Ctrl-0` | +| Create instrument from sample | — | +| Set loop to selection | `Ctrl-l` | + +## note input + +the settings for note input keybinds operate differently. each entry in the list of keybinds is made of the following: +- **Key**: key assignment. +- **Type**: type of note input. left-click cycles through "Note", "Note off", "Note release", and "Macro release". + - _note:_ the list is sorted by type. on changing a key's type, it will instantly move to its new sorting position! +- **Value**: number of semitones above C at the current octave. only appears for note type binds. +- **Remove**: removes the keybind from the list. + +below all the binds, select a key from the dropdown list to add it. it will appear at or near the top of the list as a note with value 0. + +the default note keys are: + +| key | bind | +|:---:|:-----| +| `Z` | Note 0 | +| `S` | Note 1 | +| `X` | Note 2 | +| `D` | Note 3 | +| `C` | Note 4 | +| `V` | Note 5 | +| `G` | Note 6 | +| `B` | Note 7 | +| `H` | Note 8 | +| `N` | Note 9 | +| `J` | Note 10 | +| `M` | Note 11 | +| `Q` | Note 12 | +| `2` | Note 13 | +| `W` | Note 14 | +| `3` | Note 15 | +| `E` | Note 16 | +| `R` | Note 17 | +| `5` | Note 18 | +| `T` | Note 19 | +| `6` | Note 20 | +| `Y` | Note 21 | +| `7` | Note 22 | +| `U` | Note 23 | +| `I` | Note 24 | +| `9` | Note 25 | +| `O` | Note 26 | +| `0` | Note 27 | +| `P` | Note 28 | +| `[` | Note 29 | +| `]` | Note 31 | +| `1` | Note off | +| ` | Note off | +| `Tab` | Note release | +| `=` | Macro release | diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 8446f8528..c6069477a 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -588,7 +588,7 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={ D("WINDOW_SYS_MANAGER", "Chip Manager", 0), D("WINDOW_REGISTER_VIEW", "Register View", 0), D("WINDOW_LOG", "Log Viewer", 0), - D("EFFECT_LIST", "Effect List", 0), + D("WINDOW_EFFECT_LIST", "Effect List", 0), D("WINDOW_CHAN_OSC", "Oscilloscope (per-channel)", 0), D("WINDOW_SUBSONGS", "Subsongs", 0), D("WINDOW_FIND", "Find/Replace", FURKMOD_CMD|SDLK_f), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 40fef8210..8e3178f8e 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1376,6 +1376,7 @@ void FurnaceGUI::drawSettings() { KEYBIND_CONFIG_BEGIN("keysGlobal"); UI_KEYBIND_CONFIG(GUI_ACTION_NEW); + UI_KEYBIND_CONFIG(GUI_ACTION_CLEAR); UI_KEYBIND_CONFIG(GUI_ACTION_OPEN); UI_KEYBIND_CONFIG(GUI_ACTION_OPEN_BACKUP); UI_KEYBIND_CONFIG(GUI_ACTION_SAVE); @@ -1401,6 +1402,7 @@ void FurnaceGUI::drawSettings() { UI_KEYBIND_CONFIG(GUI_ACTION_FOLLOW_ORDERS); UI_KEYBIND_CONFIG(GUI_ACTION_FOLLOW_PATTERN); UI_KEYBIND_CONFIG(GUI_ACTION_FULLSCREEN); + UI_KEYBIND_CONFIG(GUI_ACTION_TX81Z_REQUEST); UI_KEYBIND_CONFIG(GUI_ACTION_PANIC); KEYBIND_CONFIG_END; @@ -1409,33 +1411,38 @@ void FurnaceGUI::drawSettings() { if (ImGui::TreeNode("Window activation")) { KEYBIND_CONFIG_BEGIN("keysWindow"); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_EDIT_CONTROLS); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_ORDERS); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_INS_LIST); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_INS_EDIT); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_FIND); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_SETTINGS); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_SONG_INFO); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_SUBSONGS); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_PATTERN); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_SPEED); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_INS_LIST); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_WAVE_LIST); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_WAVE_EDIT); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_SAMPLE_LIST); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_SAMPLE_EDIT); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_ABOUT); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_SETTINGS); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_ORDERS); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_PATTERN); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_MIXER); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_DEBUG); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_GROOVES); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_CHANNELS); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_PAT_MANAGER); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_SYS_MANAGER); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_COMPAT_FLAGS); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_NOTES); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_INS_EDIT); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_WAVE_EDIT); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_SAMPLE_EDIT); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_EDIT_CONTROLS); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_PIANO); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_OSCILLOSCOPE); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_CHAN_OSC); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_EFFECT_LIST); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_VOL_METER); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_STATS); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_COMPAT_FLAGS); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_PIANO); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_NOTES); - UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_CHANNELS); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_CLOCK); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_REGISTER_VIEW); UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_LOG); - + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_STATS); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_EFFECT_LIST); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_DEBUG); + UI_KEYBIND_CONFIG(GUI_ACTION_WINDOW_ABOUT); UI_KEYBIND_CONFIG(GUI_ACTION_COLLAPSE_WINDOW); UI_KEYBIND_CONFIG(GUI_ACTION_CLOSE_WINDOW); @@ -1603,6 +1610,7 @@ void FurnaceGUI::drawSettings() { UI_KEYBIND_CONFIG(GUI_ACTION_INS_LIST_OPEN); UI_KEYBIND_CONFIG(GUI_ACTION_INS_LIST_OPEN_REPLACE); UI_KEYBIND_CONFIG(GUI_ACTION_INS_LIST_SAVE); + UI_KEYBIND_CONFIG(GUI_ACTION_INS_LIST_SAVE_DMP); UI_KEYBIND_CONFIG(GUI_ACTION_INS_LIST_MOVE_UP); UI_KEYBIND_CONFIG(GUI_ACTION_INS_LIST_MOVE_DOWN); UI_KEYBIND_CONFIG(GUI_ACTION_INS_LIST_DELETE); @@ -1620,7 +1628,10 @@ void FurnaceGUI::drawSettings() { UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_ADD); UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_DUPLICATE); UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_OPEN); + UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_OPEN_REPLACE); UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_SAVE); + UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_SAVE_DMW); + UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_SAVE_RAW); UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_MOVE_UP); UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_MOVE_DOWN); UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_DELETE); @@ -1637,8 +1648,13 @@ void FurnaceGUI::drawSettings() { UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_ADD); UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_DUPLICATE); + UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_CREATE_WAVE); UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_OPEN); + UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_OPEN_REPLACE); + UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_OPEN_RAW); + UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_OPEN_REPLACE_RAW); UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_SAVE); + UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_SAVE_RAW); UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_MOVE_UP); UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_MOVE_DOWN); UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_DELETE); From de34b5c9c4ba52d07c1cec5cd97c370a004356e1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 16:43:37 -0500 Subject: [PATCH 073/126] K053260: implement ADPCM --- src/engine/platform/k053260.cpp | 62 ++++++++++++++++++++++----------- src/gui/gui.cpp | 1 + 2 files changed, 42 insertions(+), 21 deletions(-) diff --git a/src/engine/platform/k053260.cpp b/src/engine/platform/k053260.cpp index 17ff6db48..097d0c4c8 100644 --- a/src/engine/platform/k053260.cpp +++ b/src/engine/platform/k053260.cpp @@ -131,21 +131,20 @@ void DivPlatformK053260::tick(bool sysTick) { chan[i].audPos=0; } if (chan[i].freqChanged || chan[i].keyOn || chan[i].keyOff) { - unsigned char keyon=regPool[0x28]|(1<getSample(sample); + unsigned char keyon=regPool[0x28]|(1<isLoopable()?(1<depth==DIV_SAMPLE_DEPTH_ADPCM_K?(0x10<=0 && samplesong.sampleLen) { - DivSample* s=parent->getSample(sample); if (s->centerRate<1) { off=1.0; } else { off=8363.0/s->centerRate; } } - DivSample* s=parent->getSample(sample); chan[i].freq=0x1000-(int)(off*parent->calcFreq(chan[i].baseFreq,chan[i].pitch,chan[i].fixedArp?chan[i].baseNoteOverride:chan[i].arpOff,chan[i].fixedArp,true,0,chan[i].pitch2,chipClock,CHIP_DIVIDER)); if (chan[i].freq>4095) chan[i].freq=4095; if (chan[i].freq<0) chan[i].freq=0; @@ -154,17 +153,26 @@ void DivPlatformK053260::tick(bool sysTick) { unsigned int length=0; if (sample>=0 && samplesong.sampleLen) { start=sampleOffK053260[sample]; - length=s->length8; + length=(s->depth==DIV_SAMPLE_DEPTH_ADPCM_K)?s->lengthK:s->length8; if (chan[i].reverse) { start+=length; keyon|=(16<0) { - if (chan[i].reverse) { - start=start-MIN(chan[i].audPos,s->length8); + if (s->depth==DIV_SAMPLE_DEPTH_ADPCM_K) { + chan[i].audPos>>=1; + if (chan[i].reverse) { + start=start-MIN(chan[i].audPos,s->lengthK); + } else { + start=start+MIN(chan[i].audPos,s->lengthK); + } } else { - start=start+MIN(chan[i].audPos,s->length8); + if (chan[i].reverse) { + start=start-MIN(chan[i].audPos,s->length8); + } else { + start=start+MIN(chan[i].audPos,s->length8); + } } length=MAX(1,length-chan[i].audPos); } @@ -181,10 +189,8 @@ void DivPlatformK053260::tick(bool sysTick) { chan[i].outVol=chan[i].vol; chWrite(i,7,chan[i].outVol); } + rWrite(0x2a,loopon); rWrite(0x28,keyon); - if (s->isLoopable()) { - rWrite(0x2a,loopon); - } chan[i].keyOn=false; } if (chan[i].keyOff) { @@ -473,14 +479,28 @@ void DivPlatformK053260::renderSamples(int sysID) { continue; } - int length=MIN(65535,s->getEndPosition(DIV_SAMPLE_DEPTH_8BIT)); - int actualLength=MIN((int)(getSampleMemCapacity()-memPos-1),length); - if (actualLength>0) { - sampleOffK053260[i]=memPos-1; - for (int j=0; jdata8[j]; + int length, actualLength; + + if (s->depth==DIV_SAMPLE_DEPTH_ADPCM_K) { + length=MIN(65535,s->getEndPosition(DIV_SAMPLE_DEPTH_ADPCM_K)); + actualLength=MIN((int)(getSampleMemCapacity()-memPos-1),length); + if (actualLength>0) { + sampleOffK053260[i]=memPos-1; + for (int j=0; jdataK[j]; + } + sampleMem[memPos++]=0; // Silence for avoid popping noise + } + } else { + length=MIN(65535,s->getEndPosition(DIV_SAMPLE_DEPTH_8BIT)); + actualLength=MIN((int)(getSampleMemCapacity()-memPos-1),length); + if (actualLength>0) { + sampleOffK053260[i]=memPos-1; + for (int j=0; jdata8[j]; + } + sampleMem[memPos++]=0; // Silence for avoid popping noise } - sampleMem[memPos++]=0; // Silence for avoid popping noise } if (actualLength Date: Tue, 29 Aug 2023 17:06:40 -0500 Subject: [PATCH 074/126] GUI: fix wrong cursor pos on step row --- src/gui/pattern.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 6c84c8d76..3d38deef8 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -378,7 +378,7 @@ void FurnaceGUI::drawPattern() { bool inhibitMenu=false; if (e->isPlaying() && followPattern && (!e->isStepping() || pendingStepUpdate)) { - cursor.y=oldRow+((pendingStepUpdate)?1:0); + cursor.y=e->getRow(); if (selStart.xCoarse==selEnd.xCoarse && selStart.xFine==selEnd.xFine && selStart.y==selEnd.y && !selecting) { selStart=cursor; selEnd=cursor; From f9237dc69cbf0cd724c127e3cf2568f20ab0d483 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 17:16:10 -0500 Subject: [PATCH 075/126] GUI: fix input pad flickering issue #1436 --- src/gui/piano.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/piano.cpp b/src/gui/piano.cpp index 3c501c45f..fe884f38d 100644 --- a/src/gui/piano.cpp +++ b/src/gui/piano.cpp @@ -442,7 +442,7 @@ void FurnaceGUI::drawPiano() { ImGui::End(); // draw input pad if necessary - if (curWindow==GUI_WINDOW_PATTERN && ((pianoInputPadMode==PIANO_INPUT_PAD_SPLIT_AUTO && cursor.xFine>0) || pianoInputPadMode==PIANO_INPUT_PAD_SPLIT_VISIBLE)) { + if ((curWindow==GUI_WINDOW_PATTERN || !mobileUI) && ((pianoInputPadMode==PIANO_INPUT_PAD_SPLIT_AUTO && cursor.xFine>0) || pianoInputPadMode==PIANO_INPUT_PAD_SPLIT_VISIBLE)) { if (ImGui::Begin("Input Pad",NULL,ImGuiWindowFlags_NoTitleBar)) { ImGui::BeginDisabled(cursor.xFine==0); if (ImGui::BeginTable("InputPad",3,ImGuiTableFlags_Borders)) { From d38ff59cb8e4edbb760cae30039f3e9a5083213d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 18:13:01 -0500 Subject: [PATCH 076/126] GUI: fix pattern play flicker --- src/gui/pattern.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 3d38deef8..ef22b5e06 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -378,7 +378,7 @@ void FurnaceGUI::drawPattern() { bool inhibitMenu=false; if (e->isPlaying() && followPattern && (!e->isStepping() || pendingStepUpdate)) { - cursor.y=e->getRow(); + cursor.y=e->isStepping()?e->getRow():oldRow; if (selStart.xCoarse==selEnd.xCoarse && selStart.xFine==selEnd.xFine && selStart.y==selEnd.y && !selecting) { selStart=cursor; selEnd=cursor; From 6fb738294ae889e52a53eaaa64c9f5ee44f9fc10 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Tue, 29 Aug 2023 16:33:47 -0700 Subject: [PATCH 077/126] Don't need the default note keys table. --- doc/2-interface/keyboard.md | 40 ------------------------------------- 1 file changed, 40 deletions(-) diff --git a/doc/2-interface/keyboard.md b/doc/2-interface/keyboard.md index 4592672b2..2255670e6 100644 --- a/doc/2-interface/keyboard.md +++ b/doc/2-interface/keyboard.md @@ -254,43 +254,3 @@ the settings for note input keybinds operate differently. each entry in the list - **Remove**: removes the keybind from the list. below all the binds, select a key from the dropdown list to add it. it will appear at or near the top of the list as a note with value 0. - -the default note keys are: - -| key | bind | -|:---:|:-----| -| `Z` | Note 0 | -| `S` | Note 1 | -| `X` | Note 2 | -| `D` | Note 3 | -| `C` | Note 4 | -| `V` | Note 5 | -| `G` | Note 6 | -| `B` | Note 7 | -| `H` | Note 8 | -| `N` | Note 9 | -| `J` | Note 10 | -| `M` | Note 11 | -| `Q` | Note 12 | -| `2` | Note 13 | -| `W` | Note 14 | -| `3` | Note 15 | -| `E` | Note 16 | -| `R` | Note 17 | -| `5` | Note 18 | -| `T` | Note 19 | -| `6` | Note 20 | -| `Y` | Note 21 | -| `7` | Note 22 | -| `U` | Note 23 | -| `I` | Note 24 | -| `9` | Note 25 | -| `O` | Note 26 | -| `0` | Note 27 | -| `P` | Note 28 | -| `[` | Note 29 | -| `]` | Note 31 | -| `1` | Note off | -| ` | Note off | -| `Tab` | Note release | -| `=` | Macro release | From 015899a43f5c62250bbe7babd175aa31eaa44b5e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 29 Aug 2023 18:54:08 -0500 Subject: [PATCH 078/126] GUI: fix cursor inconsistency after stop issue #1424 --- src/gui/gui.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 4ea2dbb86..f9c76d12b 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1103,10 +1103,21 @@ void FurnaceGUI::setOrder(unsigned char order, bool forced) { } void FurnaceGUI::stop() { + bool wasPlaying=e->isPlaying(); e->walkSong(loopOrder,loopRow,loopEnd); e->stop(); curNibble=false; orderNibble=false; + if (followPattern && wasPlaying) { + nextScroll=-1.0f; + nextAddScroll=0.0f; + cursor.y=e->getRow(); + if (selStart.xCoarse==selEnd.xCoarse && selStart.xFine==selEnd.xFine && selStart.y==selEnd.y && !selecting) { + selStart=cursor; + selEnd=cursor; + } + updateScroll(cursor.y); + } } void FurnaceGUI::previewNote(int refChan, int note, bool autoNote) { From 5da54a767848b65734ba7695cee14e439cd2598b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 00:42:51 -0500 Subject: [PATCH 079/126] update ImGui to 1.89.8 commit f8704cd085c4347f835c21dc12a3951924143872 with Furnace patches --- extern/imgui_patched/MODIFIED.md | 9 +- .../backends/imgui_impl_allegro5.cpp | 9 +- .../backends/imgui_impl_allegro5.h | 3 + .../backends/imgui_impl_android.cpp | 5 + .../backends/imgui_impl_android.h | 4 + .../backends/imgui_impl_dx10.cpp | 4 + .../imgui_patched/backends/imgui_impl_dx10.h | 3 + .../backends/imgui_impl_dx11.cpp | 5 + .../imgui_patched/backends/imgui_impl_dx11.h | 3 + .../backends/imgui_impl_dx12.cpp | 5 + .../imgui_patched/backends/imgui_impl_dx12.h | 3 + .../imgui_patched/backends/imgui_impl_dx9.cpp | 5 + .../imgui_patched/backends/imgui_impl_dx9.h | 3 + .../backends/imgui_impl_glfw.cpp | 21 +- .../imgui_patched/backends/imgui_impl_glfw.h | 3 + .../backends/imgui_impl_glut.cpp | 5 + .../imgui_patched/backends/imgui_impl_glut.h | 5 +- .../imgui_patched/backends/imgui_impl_metal.h | 5 + .../backends/imgui_impl_metal.mm | 5 + .../backends/imgui_impl_opengl2.cpp | 10 +- .../backends/imgui_impl_opengl2.h | 5 +- .../backends/imgui_impl_opengl3.cpp | 32 +- .../backends/imgui_impl_opengl3.h | 3 + .../imgui_patched/backends/imgui_impl_osx.h | 3 + .../imgui_patched/backends/imgui_impl_osx.mm | 5 + .../backends/imgui_impl_sdl2.cpp | 5 + .../imgui_patched/backends/imgui_impl_sdl2.h | 3 + .../backends/imgui_impl_sdl3.cpp | 9 +- .../imgui_patched/backends/imgui_impl_sdl3.h | 3 + .../backends/imgui_impl_sdlrenderer2.cpp | 9 +- .../backends/imgui_impl_sdlrenderer2.h | 3 + .../backends/imgui_impl_sdlrenderer3.cpp | 9 +- .../backends/imgui_impl_sdlrenderer3.h | 3 + .../backends/imgui_impl_vulkan.cpp | 114 ++- .../backends/imgui_impl_vulkan.h | 9 + .../backends/imgui_impl_wgpu.cpp | 10 +- .../imgui_patched/backends/imgui_impl_wgpu.h | 4 + .../backends/imgui_impl_win32.cpp | 41 +- .../imgui_patched/backends/imgui_impl_win32.h | 3 + extern/imgui_patched/docs/CHANGELOG.txt | 262 ++++-- extern/imgui_patched/docs/CONTRIBUTING.md | 2 +- extern/imgui_patched/docs/FAQ.md | 43 +- extern/imgui_patched/docs/FONTS.md | 224 ++--- extern/imgui_patched/docs/README.md | 12 +- extern/imgui_patched/docs/TODO.txt | 48 +- extern/imgui_patched/imconfig.h | 23 +- extern/imgui_patched/imgui.cpp | 809 +++++++++++------- extern/imgui_patched/imgui.h | 169 ++-- extern/imgui_patched/imgui_demo.cpp | 284 ++++-- extern/imgui_patched/imgui_draw.cpp | 62 +- extern/imgui_patched/imgui_internal.h | 88 +- extern/imgui_patched/imgui_tables.cpp | 59 +- extern/imgui_patched/imgui_widgets.cpp | 142 +-- .../imgui_patched/misc/cpp/imgui_stdlib.cpp | 10 + extern/imgui_patched/misc/freetype/README.md | 11 +- .../misc/freetype/imgui_freetype.cpp | 149 +++- .../misc/freetype/imgui_freetype.h | 4 +- src/gui/mixer.cpp | 2 +- src/gui/pattern.cpp | 10 +- src/gui/piano.cpp | 2 +- src/gui/plot_nolerp.cpp | 6 +- 61 files changed, 1926 insertions(+), 883 deletions(-) diff --git a/extern/imgui_patched/MODIFIED.md b/extern/imgui_patched/MODIFIED.md index 5dd3ea115..d6e59db11 100644 --- a/extern/imgui_patched/MODIFIED.md +++ b/extern/imgui_patched/MODIFIED.md @@ -1,5 +1,10 @@ # modified version -this is a modified version of Dear ImGui to fix UI scaling on macOS, which works in a really weird (but logical) way. +this is a modified version of Dear ImGui (docking branch) to suit Furnace. +the following changes have been made: -further modifications may be made to suit Furnace. +- fix UI scaling on macOS, Wayland and any other platform where HiDPI is implemented through logical pixels +- gradients on frames +- improved touch support (inertial scrolling in particular) +- disable text input undo/redo by default +- add ability to lock dockspace diff --git a/extern/imgui_patched/backends/imgui_impl_allegro5.cpp b/extern/imgui_patched/backends/imgui_impl_allegro5.cpp index ae91443ce..01f4bce6f 100644 --- a/extern/imgui_patched/backends/imgui_impl_allegro5.cpp +++ b/extern/imgui_patched/backends/imgui_impl_allegro5.cpp @@ -47,10 +47,11 @@ // 2018-02-06: Misc: Removed call to ImGui::Shutdown() which is not available from 1.60 WIP, user needs to call CreateContext/DestroyContext themselves. // 2018-02-06: Inputs: Added mapping for ImGuiKey_Space. +#include "imgui.h" +#ifndef IMGUI_DISABLE +#include "imgui_impl_allegro5.h" #include // uint64_t #include // memcpy -#include "imgui.h" -#include "imgui_impl_allegro5.h" // Allegro #include @@ -603,3 +604,7 @@ void ImGui_ImplAllegro5_NewFrame() // Setup mouse cursor shape ImGui_ImplAllegro5_UpdateMouseCursor(); } + +//----------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_allegro5.h b/extern/imgui_patched/backends/imgui_impl_allegro5.h index 7e97969e5..12679a087 100644 --- a/extern/imgui_patched/backends/imgui_impl_allegro5.h +++ b/extern/imgui_patched/backends/imgui_impl_allegro5.h @@ -17,6 +17,7 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE struct ALLEGRO_DISPLAY; union ALLEGRO_EVENT; @@ -30,3 +31,5 @@ IMGUI_IMPL_API bool ImGui_ImplAllegro5_ProcessEvent(ALLEGRO_EVENT* event); // Use if you want to reset your rendering device without losing Dear ImGui state. IMGUI_IMPL_API bool ImGui_ImplAllegro5_CreateDeviceObjects(); IMGUI_IMPL_API void ImGui_ImplAllegro5_InvalidateDeviceObjects(); + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_android.cpp b/extern/imgui_patched/backends/imgui_impl_android.cpp index 48828ec20..3d705c636 100644 --- a/extern/imgui_patched/backends/imgui_impl_android.cpp +++ b/extern/imgui_patched/backends/imgui_impl_android.cpp @@ -27,6 +27,7 @@ // 2021-03-04: Initial version. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_android.h" #include #include @@ -294,3 +295,7 @@ void ImGui_ImplAndroid_NewFrame() io.DeltaTime = g_Time > 0.0 ? (float)(current_time - g_Time) : (float)(1.0f / 60.0f); g_Time = current_time; } + +//----------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_android.h b/extern/imgui_patched/backends/imgui_impl_android.h index eb97c4c89..17bff2c55 100644 --- a/extern/imgui_patched/backends/imgui_impl_android.h +++ b/extern/imgui_patched/backends/imgui_impl_android.h @@ -19,6 +19,8 @@ // Read online: https://github.com/ocornut/imgui/tree/master/docs #pragma once +#include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE struct ANativeWindow; struct AInputEvent; @@ -27,3 +29,5 @@ IMGUI_IMPL_API bool ImGui_ImplAndroid_Init(ANativeWindow* window); IMGUI_IMPL_API int32_t ImGui_ImplAndroid_HandleInputEvent(AInputEvent* input_event); IMGUI_IMPL_API void ImGui_ImplAndroid_Shutdown(); IMGUI_IMPL_API void ImGui_ImplAndroid_NewFrame(); + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_dx10.cpp b/extern/imgui_patched/backends/imgui_impl_dx10.cpp index 05b106cf9..4f7a81a07 100644 --- a/extern/imgui_patched/backends/imgui_impl_dx10.cpp +++ b/extern/imgui_patched/backends/imgui_impl_dx10.cpp @@ -32,6 +32,7 @@ // 2016-05-07: DirectX10: Disabling depth-write. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_dx10.h" // DirectX @@ -713,3 +714,6 @@ void ImGui_ImplDX10_ShutdownPlatformInterface() ImGui::DestroyPlatformWindows(); } +//----------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_dx10.h b/extern/imgui_patched/backends/imgui_impl_dx10.h index c2c0f9363..7c954234e 100644 --- a/extern/imgui_patched/backends/imgui_impl_dx10.h +++ b/extern/imgui_patched/backends/imgui_impl_dx10.h @@ -13,6 +13,7 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE struct ID3D10Device; @@ -24,3 +25,5 @@ IMGUI_IMPL_API void ImGui_ImplDX10_RenderDrawData(ImDrawData* draw_data); // Use if you want to reset your rendering device without losing Dear ImGui state. IMGUI_IMPL_API void ImGui_ImplDX10_InvalidateDeviceObjects(); IMGUI_IMPL_API bool ImGui_ImplDX10_CreateDeviceObjects(); + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_dx11.cpp b/extern/imgui_patched/backends/imgui_impl_dx11.cpp index 00ecb8e60..26288d0cd 100644 --- a/extern/imgui_patched/backends/imgui_impl_dx11.cpp +++ b/extern/imgui_patched/backends/imgui_impl_dx11.cpp @@ -35,6 +35,7 @@ // DISCLAIMER: modified with d3dcompiler patch (see https://github.com/ocornut/imgui/pull/638). #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_dx11.h" // DirectX @@ -747,3 +748,7 @@ static void ImGui_ImplDX11_ShutdownPlatformInterface() { ImGui::DestroyPlatformWindows(); } + +//----------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_dx11.h b/extern/imgui_patched/backends/imgui_impl_dx11.h index 5f4dd7f99..3fe5ecc91 100644 --- a/extern/imgui_patched/backends/imgui_impl_dx11.h +++ b/extern/imgui_patched/backends/imgui_impl_dx11.h @@ -13,6 +13,7 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE struct ID3D11Device; struct ID3D11DeviceContext; @@ -25,3 +26,5 @@ IMGUI_IMPL_API void ImGui_ImplDX11_RenderDrawData(ImDrawData* draw_data); // Use if you want to reset your rendering device without losing Dear ImGui state. IMGUI_IMPL_API void ImGui_ImplDX11_InvalidateDeviceObjects(); IMGUI_IMPL_API bool ImGui_ImplDX11_CreateDeviceObjects(); + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_dx12.cpp b/extern/imgui_patched/backends/imgui_impl_dx12.cpp index 36b12ec72..71661bc8f 100644 --- a/extern/imgui_patched/backends/imgui_impl_dx12.cpp +++ b/extern/imgui_patched/backends/imgui_impl_dx12.cpp @@ -42,6 +42,7 @@ // 2018-02-22: Merged into master with all Win32 code synchronized to other examples. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_dx12.h" // DirectX @@ -1074,3 +1075,7 @@ void ImGui_ImplDX12_ShutdownPlatformInterface() { ImGui::DestroyPlatformWindows(); } + +//----------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_dx12.h b/extern/imgui_patched/backends/imgui_impl_dx12.h index a4d02aa8e..e77793d21 100644 --- a/extern/imgui_patched/backends/imgui_impl_dx12.h +++ b/extern/imgui_patched/backends/imgui_impl_dx12.h @@ -16,6 +16,7 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE #include // DXGI_FORMAT struct ID3D12Device; @@ -37,3 +38,5 @@ IMGUI_IMPL_API void ImGui_ImplDX12_RenderDrawData(ImDrawData* draw_data, ID3 // Use if you want to reset your rendering device without losing Dear ImGui state. IMGUI_IMPL_API void ImGui_ImplDX12_InvalidateDeviceObjects(); IMGUI_IMPL_API bool ImGui_ImplDX12_CreateDeviceObjects(); + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_dx9.cpp b/extern/imgui_patched/backends/imgui_impl_dx9.cpp index 7274f299a..7ee02b5b9 100644 --- a/extern/imgui_patched/backends/imgui_impl_dx9.cpp +++ b/extern/imgui_patched/backends/imgui_impl_dx9.cpp @@ -34,6 +34,7 @@ // 2018-02-06: Misc: Removed call to ImGui::Shutdown() which is not available from 1.60 WIP, user needs to call CreateContext/DestroyContext themselves. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_dx9.h" // DirectX @@ -540,3 +541,7 @@ static void ImGui_ImplDX9_InvalidateDeviceObjectsForPlatformWindows() if (platform_io.Viewports[i]->RendererUserData) ImGui_ImplDX9_DestroyWindow(platform_io.Viewports[i]); } + +//----------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_dx9.h b/extern/imgui_patched/backends/imgui_impl_dx9.h index 3e7c17367..ffcd46826 100644 --- a/extern/imgui_patched/backends/imgui_impl_dx9.h +++ b/extern/imgui_patched/backends/imgui_impl_dx9.h @@ -13,6 +13,7 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE struct IDirect3DDevice9; @@ -24,3 +25,5 @@ IMGUI_IMPL_API void ImGui_ImplDX9_RenderDrawData(ImDrawData* draw_data); // Use if you want to reset your rendering device without losing Dear ImGui state. IMGUI_IMPL_API bool ImGui_ImplDX9_CreateDeviceObjects(); IMGUI_IMPL_API void ImGui_ImplDX9_InvalidateDeviceObjects(); + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_glfw.cpp b/extern/imgui_patched/backends/imgui_impl_glfw.cpp index 87ea528b1..e5f0e6483 100644 --- a/extern/imgui_patched/backends/imgui_impl_glfw.cpp +++ b/extern/imgui_patched/backends/imgui_impl_glfw.cpp @@ -22,6 +22,8 @@ // CHANGELOG // (minor and older changes stripped away, please see git history for details) // 2023-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface. +// 2023-07-18: Inputs: Revert ignoring mouse data on GLFW_CURSOR_DISABLED as it can be used differently. User may set ImGuiConfigFLags_NoMouse if desired. (#5625, #6609) +// 2023-06-12: Accept glfwGetTime() not returning a monotonically increasing value. This seems to happens on some Windows setup when peripherals disconnect, and is likely to also happen on browser + Emscripten. (#6491) // 2023-04-04: Inputs: Added support for io.AddMouseSourceEvent() to discriminate ImGuiMouseSource_Mouse/ImGuiMouseSource_TouchScreen/ImGuiMouseSource_Pen on Windows ONLY, using a custom WndProc hook. (#2702) // 2023-03-16: Inputs: Fixed key modifiers handling on secondary viewports (docking branch). Broken on 2023/01/04. (#6248, #6034) // 2023-03-14: Emscripten: Avoid using glfwGetError() and glfwGetGamepadState() which are not correctly implemented in Emscripten emulation. (#6240) @@ -32,7 +34,7 @@ // 2022-10-18: Perform a dummy glfwGetError() read to cancel missing mouse cursors errors. Using GLFW_VERSION_COMBINED directly. (#5785) // 2022-10-11: Using 'nullptr' instead of 'NULL' as per our switch to C++11. // 2022-09-26: Inputs: Renamed ImGuiKey_ModXXX introduced in 1.87 to ImGuiMod_XXX (old names still supported). -// 2022-09-01: Inputs: Honor GLFW_CURSOR_DISABLED by not setting mouse position. +// 2022-09-01: Inputs: Honor GLFW_CURSOR_DISABLED by not setting mouse position *EDIT* Reverted 2023-07-18. // 2022-04-30: Inputs: Fixed ImGui_ImplGlfw_TranslateUntranslatedKey() for lower case letters on OSX. // 2022-03-23: Inputs: Fixed a regression in 1.87 which resulted in keyboard modifiers events being reported incorrectly on Linux/X11. // 2022-02-07: Added ImGui_ImplGlfw_InstallCallbacks()/ImGui_ImplGlfw_RestoreCallbacks() helpers to facilitate user installing callbacks after initializing backend. @@ -69,6 +71,7 @@ // 2016-10-15: Misc: Added a void* user_data parameter to Clipboard function handlers. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_glfw.h" // Clang warnings with -Weverything @@ -418,8 +421,6 @@ void ImGui_ImplGlfw_CursorPosCallback(GLFWwindow* window, double x, double y) ImGui_ImplGlfw_Data* bd = ImGui_ImplGlfw_GetBackendData(); if (bd->PrevUserCallbackCursorPos != nullptr && ImGui_ImplGlfw_ShouldChainCallback(window)) bd->PrevUserCallbackCursorPos(window, x, y); - if (glfwGetInputMode(window, GLFW_CURSOR) == GLFW_CURSOR_DISABLED) - return; ImGuiIO& io = ImGui::GetIO(); if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable) @@ -440,8 +441,6 @@ void ImGui_ImplGlfw_CursorEnterCallback(GLFWwindow* window, int entered) ImGui_ImplGlfw_Data* bd = ImGui_ImplGlfw_GetBackendData(); if (bd->PrevUserCallbackCursorEnter != nullptr && ImGui_ImplGlfw_ShouldChainCallback(window)) bd->PrevUserCallbackCursorEnter(window, entered); - if (glfwGetInputMode(window, GLFW_CURSOR) == GLFW_CURSOR_DISABLED) - return; ImGuiIO& io = ImGui::GetIO(); if (entered) @@ -727,11 +726,6 @@ static void ImGui_ImplGlfw_UpdateMouseData() ImGuiIO& io = ImGui::GetIO(); ImGuiPlatformIO& platform_io = ImGui::GetPlatformIO(); - if (glfwGetInputMode(bd->Window, GLFW_CURSOR) == GLFW_CURSOR_DISABLED) - { - io.AddMousePosEvent(-FLT_MAX, -FLT_MAX); - return; - } ImGuiID mouse_viewport_id = 0; const ImVec2 mouse_pos_prev = io.MousePos; @@ -937,7 +931,10 @@ void ImGui_ImplGlfw_NewFrame() ImGui_ImplGlfw_UpdateMonitors(); // Setup time step + // (Accept glfwGetTime() not returning a monotonically increasing value. Seems to happens on disconnecting peripherals and probably on VMs and Emscripten, see #6491, #6189, #6114, #3644) double current_time = glfwGetTime(); + if (current_time <= bd->Time) + current_time = bd->Time + 0.00001f; io.DeltaTime = bd->Time > 0.0 ? (float)(current_time - bd->Time) : (float)(1.0f / 60.0f); bd->Time = current_time; @@ -1285,6 +1282,10 @@ static void ImGui_ImplGlfw_ShutdownPlatformInterface() ImGui::DestroyPlatformWindows(); } +//----------------------------------------------------------------------------- + #if defined(__clang__) #pragma clang diagnostic pop #endif + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_glfw.h b/extern/imgui_patched/backends/imgui_impl_glfw.h index 2e3b8bf2d..241a97107 100644 --- a/extern/imgui_patched/backends/imgui_impl_glfw.h +++ b/extern/imgui_patched/backends/imgui_impl_glfw.h @@ -21,6 +21,7 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE struct GLFWwindow; struct GLFWmonitor; @@ -50,3 +51,5 @@ IMGUI_IMPL_API void ImGui_ImplGlfw_ScrollCallback(GLFWwindow* window, double IMGUI_IMPL_API void ImGui_ImplGlfw_KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods); IMGUI_IMPL_API void ImGui_ImplGlfw_CharCallback(GLFWwindow* window, unsigned int c); IMGUI_IMPL_API void ImGui_ImplGlfw_MonitorCallback(GLFWmonitor* monitor, int event); + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_glut.cpp b/extern/imgui_patched/backends/imgui_impl_glut.cpp index 3f911a136..36050e0ef 100644 --- a/extern/imgui_patched/backends/imgui_impl_glut.cpp +++ b/extern/imgui_patched/backends/imgui_impl_glut.cpp @@ -32,6 +32,7 @@ // 2018-03-22: Added GLUT Platform binding. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_glut.h" #define GL_SILENCE_DEPRECATION #ifdef __APPLE__ @@ -298,3 +299,7 @@ void ImGui_ImplGLUT_MotionFunc(int x, int y) ImGuiIO& io = ImGui::GetIO(); io.AddMousePosEvent((float)x, (float)y); } + +//----------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_glut.h b/extern/imgui_patched/backends/imgui_impl_glut.h index 545cd8dd3..9f1416796 100644 --- a/extern/imgui_patched/backends/imgui_impl_glut.h +++ b/extern/imgui_patched/backends/imgui_impl_glut.h @@ -20,6 +20,7 @@ // Read online: https://github.com/ocornut/imgui/tree/master/docs #pragma once +#ifndef IMGUI_DISABLE #include "imgui.h" // IMGUI_IMPL_API IMGUI_IMPL_API bool ImGui_ImplGLUT_Init(); @@ -29,7 +30,7 @@ IMGUI_IMPL_API void ImGui_ImplGLUT_NewFrame(); // You can call ImGui_ImplGLUT_InstallFuncs() to get all those functions installed automatically, // or call them yourself from your own GLUT handlers. We are using the same weird names as GLUT for consistency.. -//---------------------------------------- GLUT name --------------------------------------------- Decent Name --------- +//------------------------------------ GLUT name ---------------------------------------------- Decent Name --------- IMGUI_IMPL_API void ImGui_ImplGLUT_ReshapeFunc(int w, int h); // ~ ResizeFunc IMGUI_IMPL_API void ImGui_ImplGLUT_MotionFunc(int x, int y); // ~ MouseMoveFunc IMGUI_IMPL_API void ImGui_ImplGLUT_MouseFunc(int button, int state, int x, int y); // ~ MouseButtonFunc @@ -38,3 +39,5 @@ IMGUI_IMPL_API void ImGui_ImplGLUT_KeyboardFunc(unsigned char c, int x, int IMGUI_IMPL_API void ImGui_ImplGLUT_KeyboardUpFunc(unsigned char c, int x, int y); // ~ CharReleasedFunc IMGUI_IMPL_API void ImGui_ImplGLUT_SpecialFunc(int key, int x, int y); // ~ KeyPressedFunc IMGUI_IMPL_API void ImGui_ImplGLUT_SpecialUpFunc(int key, int x, int y); // ~ KeyReleasedFunc + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_metal.h b/extern/imgui_patched/backends/imgui_impl_metal.h index a281f6a2a..83b3ee8d0 100644 --- a/extern/imgui_patched/backends/imgui_impl_metal.h +++ b/extern/imgui_patched/backends/imgui_impl_metal.h @@ -12,6 +12,7 @@ // Read online: https://github.com/ocornut/imgui/tree/master/docs #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE //----------------------------------------------------------------------------- // ObjC API @@ -63,3 +64,7 @@ IMGUI_IMPL_API void ImGui_ImplMetal_DestroyDeviceObjects(); #endif #endif + +//----------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_metal.mm b/extern/imgui_patched/backends/imgui_impl_metal.mm index 521a01ac0..b29b4f26a 100644 --- a/extern/imgui_patched/backends/imgui_impl_metal.mm +++ b/extern/imgui_patched/backends/imgui_impl_metal.mm @@ -32,6 +32,7 @@ // 2018-07-05: Metal: Added new Metal backend implementation. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_metal.h" #import #import @@ -740,3 +741,7 @@ static void ImGui_ImplMetal_InvalidateDeviceObjectsForPlatformWindows() } @end + +//----------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_opengl2.cpp b/extern/imgui_patched/backends/imgui_impl_opengl2.cpp index 47e7aef92..7e76cb5aa 100644 --- a/extern/imgui_patched/backends/imgui_impl_opengl2.cpp +++ b/extern/imgui_patched/backends/imgui_impl_opengl2.cpp @@ -39,12 +39,9 @@ // 2016-09-05: OpenGL: Fixed save and restore of current scissor rectangle. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_opengl2.h" -#if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier -#include // intptr_t -#else #include // intptr_t -#endif // Clang/GCC warnings with -Weverything #if defined(__clang__) @@ -305,6 +302,7 @@ void ImGui_ImplOpenGL2_DestroyDeviceObjects() ImGui_ImplOpenGL2_DestroyFontsTexture(); } + //-------------------------------------------------------------------------------------------------------- // MULTI-VIEWPORT / PLATFORM INTERFACE SUPPORT // This is an _advanced_ and _optional_ feature, allowing the backend to create and handle multiple viewports simultaneously. @@ -333,6 +331,10 @@ static void ImGui_ImplOpenGL2_ShutdownPlatformInterface() ImGui::DestroyPlatformWindows(); } +//----------------------------------------------------------------------------- + #if defined(__clang__) #pragma clang diagnostic pop #endif + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_opengl2.h b/extern/imgui_patched/backends/imgui_impl_opengl2.h index 91b3b1daa..c6d67f651 100644 --- a/extern/imgui_patched/backends/imgui_impl_opengl2.h +++ b/extern/imgui_patched/backends/imgui_impl_opengl2.h @@ -5,7 +5,7 @@ // [X] Renderer: User texture binding. Use 'GLuint' OpenGL texture identifier as void*/ImTextureID. Read the FAQ about ImTextureID! // [X] Renderer: Multi-viewport support (multiple windows). Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'. -// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. +// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. // Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need. // If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp. // Read online: https://github.com/ocornut/imgui/tree/master/docs @@ -20,6 +20,7 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE IMGUI_IMPL_API bool ImGui_ImplOpenGL2_Init(); IMGUI_IMPL_API void ImGui_ImplOpenGL2_Shutdown(); @@ -31,3 +32,5 @@ IMGUI_IMPL_API bool ImGui_ImplOpenGL2_CreateFontsTexture(); IMGUI_IMPL_API void ImGui_ImplOpenGL2_DestroyFontsTexture(); IMGUI_IMPL_API bool ImGui_ImplOpenGL2_CreateDeviceObjects(); IMGUI_IMPL_API void ImGui_ImplOpenGL2_DestroyDeviceObjects(); + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_opengl3.cpp b/extern/imgui_patched/backends/imgui_impl_opengl3.cpp index d5ef359d6..78461d9ff 100644 --- a/extern/imgui_patched/backends/imgui_impl_opengl3.cpp +++ b/extern/imgui_patched/backends/imgui_impl_opengl3.cpp @@ -21,6 +21,7 @@ // CHANGELOG // (minor and older changes stripped away, please see git history for details) // 2023-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface. +// 2023-06-20: OpenGL: Fixed erroneous use glGetIntegerv(GL_CONTEXT_PROFILE_MASK) on contexts lower than 3.2. (#6539, #6333) // 2023-05-09: OpenGL: Support for glBindSampler() backup/restore on ES3. (#6375) // 2023-04-18: OpenGL: Restore front and back polygon mode separately when supported by context. (#6333) // 2023-03-23: OpenGL: Properly restoring "no shader program bound" if it was the case prior to running the rendering function. (#6267, #6220, #6224) @@ -105,13 +106,10 @@ #endif #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_opengl3.h" #include -#if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier -#include // intptr_t -#else #include // intptr_t -#endif #if defined(__APPLE__) #include #endif @@ -292,7 +290,12 @@ bool ImGui_ImplOpenGL3_Init(const char* glsl_version) io.BackendRendererName = "imgui_impl_opengl3"; // Query for GL version (e.g. 320 for GL 3.2) -#if !defined(IMGUI_IMPL_OPENGL_ES2) +#if defined(IMGUI_IMPL_OPENGL_ES2) + // GLES 2 + bd->GlVersion = 200; + bd->GlProfileIsES2 = true; +#else + // Desktop or GLES 3 GLint major = 0; GLint minor = 0; glGetIntegerv(GL_MAJOR_VERSION, &major); @@ -305,10 +308,15 @@ bool ImGui_ImplOpenGL3_Init(const char* glsl_version) } bd->GlVersion = (GLuint)(major * 100 + minor * 10); #if defined(GL_CONTEXT_PROFILE_MASK) - glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &bd->GlProfileMask); + if (bd->GlVersion >= 320) + glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &bd->GlProfileMask); bd->GlProfileIsCompat = (bd->GlProfileMask & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT) != 0; #endif +#if defined(IMGUI_IMPL_OPENGL_ES3) + bd->GlProfileIsES3 = true; +#endif + bd->UseBufferSubData = false; /* // Query vendor to enable glBufferSubData kludge @@ -318,16 +326,10 @@ bool ImGui_ImplOpenGL3_Init(const char* glsl_version) bd->UseBufferSubData = true; #endif */ -#elif defined(IMGUI_IMPL_OPENGL_ES2) - bd->GlVersion = 200; // GLES 2 - bd->GlProfileIsES2 = true; -#elif defined(IMGUI_IMPL_OPENGL_ES3) - bd->GlVersion = 200; // Don't raise version as it is intended as a desktop version check for now. - bd->GlProfileIsES3 = true; #endif #ifdef IMGUI_IMPL_OPENGL_DEBUG - logD("\nGL_VENDOR = '%s'\nGL_RENDERER = '%s'\n", (const char*)glGetString(GL_VENDOR), (const char*)glGetString(GL_RENDERER)); // [DEBUG] + printf("GlVersion = %d\nGlProfileIsCompat = %d\nGlProfileMask = 0x%X\nGlProfileIsES2 = %d, GlProfileIsES3 = %d\nGL_VENDOR = '%s'\nGL_RENDERER = '%s'\n", bd->GlVersion, bd->GlProfileIsCompat, bd->GlProfileMask, bd->GlProfileIsES2, bd->GlProfileIsES3, (const char*)glGetString(GL_VENDOR), (const char*)glGetString(GL_RENDERER)); // [DEBUG] #endif #ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_VTX_OFFSET @@ -979,9 +981,13 @@ static void ImGui_ImplOpenGL3_ShutdownPlatformInterface() ImGui::DestroyPlatformWindows(); } +//----------------------------------------------------------------------------- + #if defined(__GNUC__) #pragma GCC diagnostic pop #endif #if defined(__clang__) #pragma clang diagnostic pop #endif + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_opengl3.h b/extern/imgui_patched/backends/imgui_impl_opengl3.h index 328a145d0..044997ad2 100644 --- a/extern/imgui_patched/backends/imgui_impl_opengl3.h +++ b/extern/imgui_patched/backends/imgui_impl_opengl3.h @@ -25,6 +25,7 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE // Backend API IMGUI_IMPL_API bool ImGui_ImplOpenGL3_Init(const char* glsl_version = nullptr); @@ -59,3 +60,5 @@ IMGUI_IMPL_API void ImGui_ImplOpenGL3_DestroyDeviceObjects(); #endif #endif + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_osx.h b/extern/imgui_patched/backends/imgui_impl_osx.h index 08b6ab745..41731318f 100644 --- a/extern/imgui_patched/backends/imgui_impl_osx.h +++ b/extern/imgui_patched/backends/imgui_impl_osx.h @@ -18,6 +18,7 @@ // Read online: https://github.com/ocornut/imgui/tree/master/docs #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE #ifdef __OBJC__ @@ -44,3 +45,5 @@ IMGUI_IMPL_API void ImGui_ImplOSX_NewFrame(void* _Nullable view); #endif #endif + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_osx.mm b/extern/imgui_patched/backends/imgui_impl_osx.mm index bfd0dba9b..18732b035 100644 --- a/extern/imgui_patched/backends/imgui_impl_osx.mm +++ b/extern/imgui_patched/backends/imgui_impl_osx.mm @@ -18,6 +18,7 @@ // Read online: https://github.com/ocornut/imgui/tree/master/docs #import "imgui.h" +#ifndef IMGUI_DISABLE #import "imgui_impl_osx.h" #import #import @@ -1109,3 +1110,7 @@ static void ImGui_ImplOSX_ShutdownPlatformInterface() main_viewport->PlatformUserData = nullptr; ImGui::DestroyPlatformWindows(); } + +//----------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_sdl2.cpp b/extern/imgui_patched/backends/imgui_impl_sdl2.cpp index 5dc655683..919f490e9 100644 --- a/extern/imgui_patched/backends/imgui_impl_sdl2.cpp +++ b/extern/imgui_patched/backends/imgui_impl_sdl2.cpp @@ -77,6 +77,7 @@ // 2016-10-15: Misc: Added a void* user_data parameter to Clipboard function handlers. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_sdl2.h" #include #include @@ -1072,6 +1073,10 @@ static void ImGui_ImplSDL2_ShutdownPlatformInterface() ImGui::DestroyPlatformWindows(); } +//----------------------------------------------------------------------------- + #if defined(__clang__) #pragma clang diagnostic pop #endif + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_sdl2.h b/extern/imgui_patched/backends/imgui_impl_sdl2.h index 1ca91b3a8..8d50eb801 100644 --- a/extern/imgui_patched/backends/imgui_impl_sdl2.h +++ b/extern/imgui_patched/backends/imgui_impl_sdl2.h @@ -20,6 +20,7 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE struct SDL_Window; struct SDL_Renderer; @@ -37,3 +38,5 @@ IMGUI_IMPL_API bool ImGui_ImplSDL2_ProcessEvent(const SDL_Event* event); #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS static inline void ImGui_ImplSDL2_NewFrame(SDL_Window*) { ImGui_ImplSDL2_NewFrame(); } // 1.84: removed unnecessary parameter #endif + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_sdl3.cpp b/extern/imgui_patched/backends/imgui_impl_sdl3.cpp index 47fe49f24..9455412bb 100644 --- a/extern/imgui_patched/backends/imgui_impl_sdl3.cpp +++ b/extern/imgui_patched/backends/imgui_impl_sdl3.cpp @@ -29,6 +29,7 @@ // 2023-02-07: Forked "imgui_impl_sdl2" into "imgui_impl_sdl3". Removed version checks for old feature. Refer to imgui_impl_sdl2.cpp for older changelog. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_sdl3.h" // Clang warnings with -Weverything @@ -752,7 +753,7 @@ static void ImGui_ImplSDL3_CreateWindow(ImGuiViewport* viewport) sdl_flags |= (viewport->Flags & ImGuiViewportFlags_NoDecoration) ? 0 : SDL_WINDOW_RESIZABLE; #if !defined(_WIN32) // See SDL hack in ImGui_ImplSDL3_ShowWindow(). - sdl_flags |= (viewport->Flags & ImGuiViewportFlags_NoTaskBarIcon) ? SDL_WINDOW_SKIP_TASKBAR : 0; + sdl_flags |= (viewport->Flags & ImGuiViewportFlags_NoTaskBarIcon) ? SDL_WINDOW_UTILITY : 0; #endif sdl_flags |= (viewport->Flags & ImGuiViewportFlags_TopMost) ? SDL_WINDOW_ALWAYS_ON_TOP : 0; vd->Window = SDL_CreateWindow("No Title Yet", (int)viewport->Size.x, (int)viewport->Size.y, sdl_flags); @@ -801,7 +802,7 @@ static void ImGui_ImplSDL3_ShowWindow(ImGuiViewport* viewport) HWND hwnd = (HWND)viewport->PlatformHandleRaw; // SDL hack: Hide icon from task bar - // Note: SDL 2.0.6+ has a SDL_WINDOW_SKIP_TASKBAR flag which is supported under Windows but the way it create the window breaks our seamless transition. + // Note: SDL 3.0.0+ has a SDL_WINDOW_UTILITY flag which is supported under Windows but the way it create the window breaks our seamless transition. if (viewport->Flags & ImGuiViewportFlags_NoTaskBarIcon) { LONG ex_style = ::GetWindowLong(hwnd, GWL_EXSTYLE); @@ -944,6 +945,10 @@ static void ImGui_ImplSDL3_ShutdownPlatformInterface() ImGui::DestroyPlatformWindows(); } +//----------------------------------------------------------------------------- + #if defined(__clang__) #pragma clang diagnostic pop #endif + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_sdl3.h b/extern/imgui_patched/backends/imgui_impl_sdl3.h index e2d9f90f9..56b404e5c 100644 --- a/extern/imgui_patched/backends/imgui_impl_sdl3.h +++ b/extern/imgui_patched/backends/imgui_impl_sdl3.h @@ -21,6 +21,7 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE struct SDL_Window; struct SDL_Renderer; @@ -34,3 +35,5 @@ IMGUI_IMPL_API bool ImGui_ImplSDL3_InitForSDLRenderer(SDL_Window* window, SD IMGUI_IMPL_API void ImGui_ImplSDL3_Shutdown(); IMGUI_IMPL_API void ImGui_ImplSDL3_NewFrame(); IMGUI_IMPL_API bool ImGui_ImplSDL3_ProcessEvent(const SDL_Event* event); + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_sdlrenderer2.cpp b/extern/imgui_patched/backends/imgui_impl_sdlrenderer2.cpp index fd5a0747d..de18d49ea 100644 --- a/extern/imgui_patched/backends/imgui_impl_sdlrenderer2.cpp +++ b/extern/imgui_patched/backends/imgui_impl_sdlrenderer2.cpp @@ -26,12 +26,9 @@ // 2021-09-21: Initial version. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_sdlrenderer2.h" -#if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier -#include // intptr_t -#else #include // intptr_t -#endif // Clang warnings with -Weverything #if defined(__clang__) @@ -260,6 +257,10 @@ void ImGui_ImplSDLRenderer2_DestroyDeviceObjects() ImGui_ImplSDLRenderer2_DestroyFontsTexture(); } +//----------------------------------------------------------------------------- + #if defined(__clang__) #pragma clang diagnostic pop #endif + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_sdlrenderer2.h b/extern/imgui_patched/backends/imgui_impl_sdlrenderer2.h index 0f1b2b6cc..bf4fd0e72 100644 --- a/extern/imgui_patched/backends/imgui_impl_sdlrenderer2.h +++ b/extern/imgui_patched/backends/imgui_impl_sdlrenderer2.h @@ -14,6 +14,7 @@ // [ ] Renderer: Multi-viewport support (multiple windows). #pragma once +#ifndef IMGUI_DISABLE #include "imgui.h" // IMGUI_IMPL_API struct SDL_Renderer; @@ -28,3 +29,5 @@ IMGUI_IMPL_API bool ImGui_ImplSDLRenderer2_CreateFontsTexture(); IMGUI_IMPL_API void ImGui_ImplSDLRenderer2_DestroyFontsTexture(); IMGUI_IMPL_API bool ImGui_ImplSDLRenderer2_CreateDeviceObjects(); IMGUI_IMPL_API void ImGui_ImplSDLRenderer2_DestroyDeviceObjects(); + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_sdlrenderer3.cpp b/extern/imgui_patched/backends/imgui_impl_sdlrenderer3.cpp index 7c1b3bf19..d7b7fd181 100644 --- a/extern/imgui_patched/backends/imgui_impl_sdlrenderer3.cpp +++ b/extern/imgui_patched/backends/imgui_impl_sdlrenderer3.cpp @@ -21,12 +21,9 @@ // 2023-05-30: Initial version. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_sdlrenderer3.h" -#if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier -#include // intptr_t -#else #include // intptr_t -#endif // Clang warnings with -Weverything #if defined(__clang__) @@ -253,6 +250,10 @@ void ImGui_ImplSDLRenderer3_DestroyDeviceObjects() ImGui_ImplSDLRenderer3_DestroyFontsTexture(); } +//----------------------------------------------------------------------------- + #if defined(__clang__) #pragma clang diagnostic pop #endif + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_sdlrenderer3.h b/extern/imgui_patched/backends/imgui_impl_sdlrenderer3.h index 71eec4396..6a59de9a3 100644 --- a/extern/imgui_patched/backends/imgui_impl_sdlrenderer3.h +++ b/extern/imgui_patched/backends/imgui_impl_sdlrenderer3.h @@ -15,6 +15,7 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE struct SDL_Renderer; @@ -28,3 +29,5 @@ IMGUI_IMPL_API bool ImGui_ImplSDLRenderer3_CreateFontsTexture(); IMGUI_IMPL_API void ImGui_ImplSDLRenderer3_DestroyFontsTexture(); IMGUI_IMPL_API bool ImGui_ImplSDLRenderer3_CreateDeviceObjects(); IMGUI_IMPL_API void ImGui_ImplSDLRenderer3_DestroyDeviceObjects(); + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_vulkan.cpp b/extern/imgui_patched/backends/imgui_impl_vulkan.cpp index 59bb6d658..77929100c 100644 --- a/extern/imgui_patched/backends/imgui_impl_vulkan.cpp +++ b/extern/imgui_patched/backends/imgui_impl_vulkan.cpp @@ -32,6 +32,7 @@ // CHANGELOG // (minor and older changes stripped away, please see git history for details) // 2023-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface. +// 2023-07-04: Vulkan: Added optional support for VK_KHR_dynamic_rendering. User needs to set init_info->UseDynamicRendering = true and init_info->ColorAttachmentFormat. // 2023-01-02: Vulkan: Fixed sampler passed to ImGui_ImplVulkan_AddTexture() not being honored + removed a bunch of duplicate code. // 2022-10-11: Using 'nullptr' instead of 'NULL' as per our switch to C++11. // 2022-10-04: Vulkan: Added experimental ImGui_ImplVulkan_RemoveTexture() for api symetry. (#914, #5738). @@ -67,6 +68,8 @@ // 2016-10-18: Vulkan: Add location decorators & change to use structs as in/out in glsl, update embedded spv (produced with glslangValidator -x). Null the released resources. // 2016-08-27: Vulkan: Fix Vulkan example for use when a depth buffer is active. +#include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_vulkan.h" #include @@ -238,6 +241,12 @@ IMGUI_VULKAN_FUNC_MAP(IMGUI_VULKAN_FUNC_DEF) #undef IMGUI_VULKAN_FUNC_DEF #endif // VK_NO_PROTOTYPES +#if defined(VK_VERSION_1_3) || defined(VK_KHR_dynamic_rendering) +#define IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING +static PFN_vkCmdBeginRenderingKHR ImGuiImplVulkanFuncs_vkCmdBeginRenderingKHR; +static PFN_vkCmdEndRenderingKHR ImGuiImplVulkanFuncs_vkCmdEndRenderingKHR; +#endif + //----------------------------------------------------------------------------- // SHADERS //----------------------------------------------------------------------------- @@ -872,6 +881,19 @@ static void ImGui_ImplVulkan_CreatePipeline(VkDevice device, const VkAllocationC info.layout = bd->PipelineLayout; info.renderPass = renderPass; info.subpass = subpass; + +#ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING + VkPipelineRenderingCreateInfoKHR pipelineRenderingCreateInfo = {}; + pipelineRenderingCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR; + pipelineRenderingCreateInfo.colorAttachmentCount = 1; + pipelineRenderingCreateInfo.pColorAttachmentFormats = &bd->VulkanInitInfo.ColorAttachmentFormat; + if (bd->VulkanInitInfo.UseDynamicRendering) + { + info.pNext = &pipelineRenderingCreateInfo; + info.renderPass = VK_NULL_HANDLE; // Just make sure it's actually nullptr. + } +#endif + VkResult err = vkCreateGraphicsPipelines(device, pipelineCache, 1, &info, allocator, pipeline); check_vk_result(err); } @@ -984,10 +1006,17 @@ bool ImGui_ImplVulkan_LoadFunctions(PFN_vkVoidFunction(*loader_func)(const ch return false; IMGUI_VULKAN_FUNC_MAP(IMGUI_VULKAN_FUNC_LOAD) #undef IMGUI_VULKAN_FUNC_LOAD + +#ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING + // Manually load those two (see #5446) + ImGuiImplVulkanFuncs_vkCmdBeginRenderingKHR = reinterpret_cast(loader_func("vkCmdBeginRenderingKHR", user_data)); + ImGuiImplVulkanFuncs_vkCmdEndRenderingKHR = reinterpret_cast(loader_func("vkCmdEndRenderingKHR", user_data)); +#endif #else IM_UNUSED(loader_func); IM_UNUSED(user_data); #endif + g_FunctionsLoaded = true; return true; } @@ -996,6 +1025,20 @@ bool ImGui_ImplVulkan_Init(ImGui_ImplVulkan_InitInfo* info, VkRenderPass rend { IM_ASSERT(g_FunctionsLoaded && "Need to call ImGui_ImplVulkan_LoadFunctions() if IMGUI_IMPL_VULKAN_NO_PROTOTYPES or VK_NO_PROTOTYPES are set!"); + if (info->UseDynamicRendering) + { +#ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING +#ifndef VK_NO_PROTOTYPES + ImGuiImplVulkanFuncs_vkCmdBeginRenderingKHR = reinterpret_cast(vkGetInstanceProcAddr(info->Instance, "vkCmdBeginRenderingKHR")); + ImGuiImplVulkanFuncs_vkCmdEndRenderingKHR = reinterpret_cast(vkGetInstanceProcAddr(info->Instance, "vkCmdEndRenderingKHR")); +#endif + IM_ASSERT(ImGuiImplVulkanFuncs_vkCmdBeginRenderingKHR != nullptr); + IM_ASSERT(ImGuiImplVulkanFuncs_vkCmdEndRenderingKHR != nullptr); +#else + IM_ASSERT(0 && "Can't use dynamic rendering when neither VK_VERSION_1_3 or VK_KHR_dynamic_rendering is defined."); +#endif + } + ImGuiIO& io = ImGui::GetIO(); IM_ASSERT(io.BackendRendererUserData == nullptr && "Already initialized a renderer backend!"); @@ -1013,7 +1056,8 @@ bool ImGui_ImplVulkan_Init(ImGui_ImplVulkan_InitInfo* info, VkRenderPass rend IM_ASSERT(info->DescriptorPool != VK_NULL_HANDLE); IM_ASSERT(info->MinImageCount >= 2); IM_ASSERT(info->ImageCount >= info->MinImageCount); - IM_ASSERT(render_pass != VK_NULL_HANDLE); + if (info->UseDynamicRendering == false) + IM_ASSERT(render_pass != VK_NULL_HANDLE); bd->VulkanInitInfo = *info; bd->RenderPass = render_pass; @@ -1350,6 +1394,7 @@ void ImGui_ImplVulkanH_CreateWindowSwapChain(VkPhysicalDevice physical_device, V vkDestroySwapchainKHR(device, old_swapchain, allocator); // Create the Render Pass + if (wd->UseDynamicRendering == false) { VkAttachmentDescription attachment = {}; attachment.format = wd->SurfaceFormat.format; @@ -1412,6 +1457,7 @@ void ImGui_ImplVulkanH_CreateWindowSwapChain(VkPhysicalDevice physical_device, V } // Create Framebuffer + if (wd->UseDynamicRendering == false) { VkImageView attachment[1]; VkFramebufferCreateInfo info = {}; @@ -1553,6 +1599,7 @@ static void ImGui_ImplVulkan_CreateWindow(ImGuiViewport* viewport) // Create SwapChain, RenderPass, Framebuffer, etc. wd->ClearEnable = (viewport->Flags & ImGuiViewportFlags_NoRendererClear) ? false : true; + wd->UseDynamicRendering = v->UseDynamicRendering; ImGui_ImplVulkanH_CreateOrResizeWindow(v->Instance, v->PhysicalDevice, v->Device, wd, v->QueueFamily, v->Allocator, (int)viewport->Size.x, (int)viewport->Size.y, v->MinImageCount); vd->WindowOwned = true; } @@ -1618,7 +1665,45 @@ static void ImGui_ImplVulkan_RenderWindow(ImGuiViewport* viewport, void*) { ImVec4 clear_color = ImVec4(0.0f, 0.0f, 0.0f, 1.0f); memcpy(&wd->ClearValue.color.float32[0], &clear_color, 4 * sizeof(float)); + } +#ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING + if (v->UseDynamicRendering) + { + // Transition swapchain image to a layout suitable for drawing. + VkImageMemoryBarrier barrier = {}; + barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; + barrier.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; + barrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; + barrier.newLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + barrier.image = fd->Backbuffer; + barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + barrier.subresourceRange.levelCount = 1; + barrier.subresourceRange.layerCount = 1; + vkCmdPipelineBarrier(fd->CommandBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, 0, 0, nullptr, 0, nullptr, 1, &barrier); + VkRenderingAttachmentInfo attachmentInfo = {}; + attachmentInfo.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR; + attachmentInfo.imageView = fd->BackbufferView; + attachmentInfo.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + attachmentInfo.resolveMode = VK_RESOLVE_MODE_NONE; + attachmentInfo.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; + attachmentInfo.storeOp = VK_ATTACHMENT_STORE_OP_STORE; + attachmentInfo.clearValue = wd->ClearValue; + + VkRenderingInfo renderingInfo = {}; + renderingInfo.sType = VK_STRUCTURE_TYPE_RENDERING_INFO_KHR; + renderingInfo.renderArea.extent.width = wd->Width; + renderingInfo.renderArea.extent.height = wd->Height; + renderingInfo.layerCount = 1; + renderingInfo.viewMask = 0; + renderingInfo.colorAttachmentCount = 1; + renderingInfo.pColorAttachments = &attachmentInfo; + + ImGuiImplVulkanFuncs_vkCmdBeginRenderingKHR(fd->CommandBuffer, &renderingInfo); + } + else +#endif + { VkRenderPassBeginInfo info = {}; info.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; info.renderPass = wd->RenderPass; @@ -1634,7 +1719,28 @@ static void ImGui_ImplVulkan_RenderWindow(ImGuiViewport* viewport, void*) ImGui_ImplVulkan_RenderDrawData(viewport->DrawData, fd->CommandBuffer, wd->Pipeline); { - vkCmdEndRenderPass(fd->CommandBuffer); +#ifdef IMGUI_IMPL_VULKAN_HAS_DYNAMIC_RENDERING + if (v->UseDynamicRendering) + { + ImGuiImplVulkanFuncs_vkCmdEndRenderingKHR(fd->CommandBuffer); + + // Transition image to a layout suitable for presentation + VkImageMemoryBarrier barrier = {}; + barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; + barrier.srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; + barrier.oldLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + barrier.newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; + barrier.image = fd->Backbuffer; + barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + barrier.subresourceRange.levelCount = 1; + barrier.subresourceRange.layerCount = 1; + vkCmdPipelineBarrier(fd->CommandBuffer, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, 0, 0, nullptr, 0, nullptr, 1, &barrier); + } + else +#endif + { + vkCmdEndRenderPass(fd->CommandBuffer); + } { VkPipelineStageFlags wait_stage = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; VkSubmitInfo info = {}; @@ -1701,3 +1807,7 @@ void ImGui_ImplVulkan_ShutdownPlatformInterface() { ImGui::DestroyPlatformWindows(); } + +//----------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_vulkan.h b/extern/imgui_patched/backends/imgui_impl_vulkan.h index 044437ad4..3c5bd6cb0 100644 --- a/extern/imgui_patched/backends/imgui_impl_vulkan.h +++ b/extern/imgui_patched/backends/imgui_impl_vulkan.h @@ -25,6 +25,7 @@ // Read comments in imgui_impl_vulkan.h. #pragma once +#ifndef IMGUI_DISABLE #include "imgui.h" // IMGUI_IMPL_API // [Configuration] in order to use a custom Vulkan function loader: @@ -60,6 +61,12 @@ struct ImGui_ImplVulkan_InitInfo uint32_t MinImageCount; // >= 2 uint32_t ImageCount; // >= MinImageCount VkSampleCountFlagBits MSAASamples; // >= VK_SAMPLE_COUNT_1_BIT (0 -> default to VK_SAMPLE_COUNT_1_BIT) + + // Dynamic Rendering (Optional) + bool UseDynamicRendering; // Need to explicitly enable VK_KHR_dynamic_rendering extension to use this, even for Vulkan 1.3. + VkFormat ColorAttachmentFormat; // Required for dynamic rendering + + // Allocation, Debugging const VkAllocationCallbacks* Allocator; void (*CheckVkResultFn)(VkResult err); }; @@ -140,6 +147,7 @@ struct ImGui_ImplVulkanH_Window VkPresentModeKHR PresentMode; VkRenderPass RenderPass; VkPipeline Pipeline; // The window pipeline may uses a different VkRenderPass than the one passed in ImGui_ImplVulkan_InitInfo + bool UseDynamicRendering; bool ClearEnable; VkClearValue ClearValue; uint32_t FrameIndex; // Current frame being rendered to (0 <= FrameIndex < FrameInFlightCount) @@ -156,3 +164,4 @@ struct ImGui_ImplVulkanH_Window } }; +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_wgpu.cpp b/extern/imgui_patched/backends/imgui_impl_wgpu.cpp index 8da8e4575..e21ef81dd 100644 --- a/extern/imgui_patched/backends/imgui_impl_wgpu.cpp +++ b/extern/imgui_patched/backends/imgui_impl_wgpu.cpp @@ -13,6 +13,7 @@ // CHANGELOG // (minor and older changes stripped away, please see git history for details) +// 2023-07-13: Use WGPUShaderModuleWGSLDescriptor's code instead of source. use WGPUMipmapFilterMode_Linear instead of WGPUFilterMode_Linear. (#6602) // 2023-04-11: Align buffer sizes. Use WGSL shaders instead of precompiled SPIR-V. // 2023-04-11: Reorganized backend to pull data from a single structure to facilitate usage with multiple-contexts (all g_XXXX access changed to bd->XXXX). // 2023-01-25: Revert automatic pipeline layout generation (see https://github.com/gpuweb/gpuweb/issues/2470) @@ -28,6 +29,7 @@ // 2021-01-28: Initial version. #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_wgpu.h" #include #include @@ -230,7 +232,7 @@ static WGPUProgrammableStageDescriptor ImGui_ImplWGPU_CreateShaderModule(const c WGPUShaderModuleWGSLDescriptor wgsl_desc = {}; wgsl_desc.chain.sType = WGPUSType_ShaderModuleWGSLDescriptor; - wgsl_desc.source = wgsl_source; + wgsl_desc.code = wgsl_source; WGPUShaderModuleDescriptor desc = {}; desc.nextInChain = reinterpret_cast(&wgsl_desc); @@ -511,7 +513,7 @@ static void ImGui_ImplWGPU_CreateFontsTexture() WGPUSamplerDescriptor sampler_desc = {}; sampler_desc.minFilter = WGPUFilterMode_Linear; sampler_desc.magFilter = WGPUFilterMode_Linear; - sampler_desc.mipmapFilter = WGPUFilterMode_Linear; + sampler_desc.mipmapFilter = WGPUMipmapFilterMode_Linear; sampler_desc.addressModeU = WGPUAddressMode_Repeat; sampler_desc.addressModeV = WGPUAddressMode_Repeat; sampler_desc.addressModeW = WGPUAddressMode_Repeat; @@ -761,3 +763,7 @@ void ImGui_ImplWGPU_NewFrame() if (!bd->pipelineState) ImGui_ImplWGPU_CreateDeviceObjects(); } + +//----------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_wgpu.h b/extern/imgui_patched/backends/imgui_impl_wgpu.h index 091420784..00a54158e 100644 --- a/extern/imgui_patched/backends/imgui_impl_wgpu.h +++ b/extern/imgui_patched/backends/imgui_impl_wgpu.h @@ -13,6 +13,8 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE + #include IMGUI_IMPL_API bool ImGui_ImplWGPU_Init(WGPUDevice device, int num_frames_in_flight, WGPUTextureFormat rt_format, WGPUTextureFormat depth_format = WGPUTextureFormat_Undefined); @@ -23,3 +25,5 @@ IMGUI_IMPL_API void ImGui_ImplWGPU_RenderDrawData(ImDrawData* draw_data, WGPURen // Use if you want to reset your rendering device without losing Dear ImGui state. IMGUI_IMPL_API void ImGui_ImplWGPU_InvalidateDeviceObjects(); IMGUI_IMPL_API bool ImGui_ImplWGPU_CreateDeviceObjects(); + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_win32.cpp b/extern/imgui_patched/backends/imgui_impl_win32.cpp index d24c655d8..927caea2a 100644 --- a/extern/imgui_patched/backends/imgui_impl_win32.cpp +++ b/extern/imgui_patched/backends/imgui_impl_win32.cpp @@ -15,6 +15,7 @@ // Read online: https://github.com/ocornut/imgui/tree/master/docs #include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_impl_win32.h" #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN @@ -950,11 +951,12 @@ void ImGui_ImplWin32_EnableAlphaCompositing(void* hwnd) struct ImGui_ImplWin32_ViewportData { HWND Hwnd; + HWND HwndParent; bool HwndOwned; DWORD DwStyle; DWORD DwExStyle; - ImGui_ImplWin32_ViewportData() { Hwnd = nullptr; HwndOwned = false; DwStyle = DwExStyle = 0; } + ImGui_ImplWin32_ViewportData() { Hwnd = HwndParent = nullptr; HwndOwned = false; DwStyle = DwExStyle = 0; } ~ImGui_ImplWin32_ViewportData() { IM_ASSERT(Hwnd == nullptr); } }; @@ -974,6 +976,14 @@ static void ImGui_ImplWin32_GetWin32StyleFromViewportFlags(ImGuiViewportFlags fl *out_ex_style |= WS_EX_TOPMOST; } +static HWND ImGui_ImplWin32_GetHwndFromViewportID(ImGuiID viewport_id) +{ + if (viewport_id != 0) + if (ImGuiViewport* viewport = ImGui::FindViewportByID(viewport_id)) + return (HWND)viewport->PlatformHandle; + return nullptr; +} + static void ImGui_ImplWin32_CreateWindow(ImGuiViewport* viewport) { ImGui_ImplWin32_ViewportData* vd = IM_NEW(ImGui_ImplWin32_ViewportData)(); @@ -981,10 +991,7 @@ static void ImGui_ImplWin32_CreateWindow(ImGuiViewport* viewport) // Select style and parent window ImGui_ImplWin32_GetWin32StyleFromViewportFlags(viewport->Flags, &vd->DwStyle, &vd->DwExStyle); - HWND parent_window = nullptr; - if (viewport->ParentViewportId != 0) - if (ImGuiViewport* parent_viewport = ImGui::FindViewportByID(viewport->ParentViewportId)) - parent_window = (HWND)parent_viewport->PlatformHandle; + vd->HwndParent = ImGui_ImplWin32_GetHwndFromViewportID(viewport->ParentViewportId); // Create window RECT rect = { (LONG)viewport->Pos.x, (LONG)viewport->Pos.y, (LONG)(viewport->Pos.x + viewport->Size.x), (LONG)(viewport->Pos.y + viewport->Size.y) }; @@ -992,7 +999,7 @@ static void ImGui_ImplWin32_CreateWindow(ImGuiViewport* viewport) vd->Hwnd = ::CreateWindowEx( vd->DwExStyle, _T("ImGui Platform"), _T("Untitled"), vd->DwStyle, // Style, class name, window name rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, // Window area - parent_window, nullptr, ::GetModuleHandle(nullptr), nullptr); // Parent window, Menu, Instance, Param + vd->HwndParent, nullptr, ::GetModuleHandle(nullptr), nullptr); // Owner window, Menu, Instance, Param vd->HwndOwned = true; viewport->PlatformRequestResize = false; viewport->PlatformHandle = viewport->PlatformHandleRaw = vd->Hwnd; @@ -1029,10 +1036,26 @@ static void ImGui_ImplWin32_ShowWindow(ImGuiViewport* viewport) static void ImGui_ImplWin32_UpdateWindow(ImGuiViewport* viewport) { - // (Optional) Update Win32 style if it changed _after_ creation. - // Generally they won't change unless configuration flags are changed, but advanced uses (such as manually rewriting viewport flags) make this useful. ImGui_ImplWin32_ViewportData* vd = (ImGui_ImplWin32_ViewportData*)viewport->PlatformUserData; IM_ASSERT(vd->Hwnd != 0); + + // Update Win32 parent if it changed _after_ creation + // Unlike style settings derived from configuration flags, this is more likely to change for advanced apps that are manipulating ParentViewportID manually. + HWND new_parent = ImGui_ImplWin32_GetHwndFromViewportID(viewport->ParentViewportId); + if (new_parent != vd->HwndParent) + { + // Win32 windows can either have a "Parent" (for WS_CHILD window) or an "Owner" (which among other thing keeps window above its owner). + // Our Dear Imgui-side concept of parenting only mostly care about what Win32 call "Owner". + // The parent parameter of CreateWindowEx() sets up Parent OR Owner depending on WS_CHILD flag. In our case an Owner as we never use WS_CHILD. + // Calling ::SetParent() here would be incorrect: it will create a full child relation, alter coordinate system and clipping. + // Calling ::SetWindowLongPtr() with GWLP_HWNDPARENT seems correct although poorly documented. + // https://devblogs.microsoft.com/oldnewthing/20100315-00/?p=14613 + vd->HwndParent = new_parent; + ::SetWindowLongPtr(vd->Hwnd, GWLP_HWNDPARENT, (LONG_PTR)vd->HwndParent); + } + + // (Optional) Update Win32 style if it changed _after_ creation. + // Generally they won't change unless configuration flags are changed, but advanced uses (such as manually rewriting viewport flags) make this useful. DWORD new_style; DWORD new_ex_style; ImGui_ImplWin32_GetWin32StyleFromViewportFlags(viewport->Flags, &new_style, &new_ex_style); @@ -1261,3 +1284,5 @@ static void ImGui_ImplWin32_ShutdownPlatformInterface() } //--------------------------------------------------------------------------------------------------------- + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/backends/imgui_impl_win32.h b/extern/imgui_patched/backends/imgui_impl_win32.h index 5f720cda9..232ddc134 100644 --- a/extern/imgui_patched/backends/imgui_impl_win32.h +++ b/extern/imgui_patched/backends/imgui_impl_win32.h @@ -16,6 +16,7 @@ #pragma once #include "imgui.h" // IMGUI_IMPL_API +#ifndef IMGUI_DISABLE IMGUI_IMPL_API bool ImGui_ImplWin32_Init(void* hwnd); IMGUI_IMPL_API bool ImGui_ImplWin32_InitForOpenGL(void* hwnd); @@ -45,3 +46,5 @@ IMGUI_IMPL_API float ImGui_ImplWin32_GetDpiScaleForMonitor(void* monitor); // // - Use to enable alpha compositing transparency with the desktop. // - Use together with e.g. clearing your framebuffer with zero-alpha. IMGUI_IMPL_API void ImGui_ImplWin32_EnableAlphaCompositing(void* hwnd); // HWND hwnd + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/docs/CHANGELOG.txt b/extern/imgui_patched/docs/CHANGELOG.txt index 03d290e4a..5ef06ddc0 100644 --- a/extern/imgui_patched/docs/CHANGELOG.txt +++ b/extern/imgui_patched/docs/CHANGELOG.txt @@ -5,25 +5,30 @@ This document holds the user-facing changelog that we also use in release notes. We generally fold multiple commits pertaining to the same topic as a single entry. Changes to backends are also included within the individual .cpp files of each backend. -RELEASE NOTES: https://github.com/ocornut/imgui/releases -REPORT ISSUES: https://github.com/ocornut/imgui/issues -DISCUSS, ASK QUESTIONS: https://github.com/ocornut/imgui/discussions -WIKI https://github.com/ocornut/imgui/wiki FAQ https://www.dearimgui.com/faq/ +RELEASE NOTES: https://github.com/ocornut/imgui/releases +WIKI https://github.com/ocornut/imgui/wiki +GETTING STARTED https://github.com/ocornut/imgui/wiki/Getting-Started +GLOSSARY https://github.com/ocornut/imgui/wiki/Glossary +ISSUES & SUPPORT https://github.com/ocornut/imgui/issues WHEN TO UPDATE? - Keeping your copy of Dear ImGui updated regularly is recommended. -- It is generally safe to sync to the latest commit in master or docking branches - The library is fairly stable and regressions tends to be fixed fast when reported. +- It is generally safe and recommended to sync to the latest commit in 'master' or 'docking' + branches. The library is fairly stable and regressions tends to be fixed fast when reported. HOW TO UPDATE? -- Overwrite every file except imconfig.h (if you have modified it). -- You may also locally branch to modify imconfig.h and merge latest into your branch. +- Update submodule or copy/overwrite every file. +- About imconfig.h: + - You may modify your copy of imconfig.h, in this case don't overwrite it. + - or you may locally branch to modify imconfig.h and merge/rebase latest. + - or you may '#define IMGUI_USER_CONFIG "my_config_file.h"' globally from your build system to + specify a custom path for your imconfig.h file and instead not have to modify the default one. - Read the `Breaking Changes` section (in imgui.cpp or here in the Changelog). - If you have a problem with a missing function/symbols, search for its name in the code, there will likely be a comment about it. -- If you are dropping this repository in your codebase, please leave the demo and text files in there, they will be useful. +- If you are copying this repository in your codebase, please leave the demo and documentations files in there, they will be useful. - You may diff your previous Changelog with the one you just copied and read that diff. - You may enable `IMGUI_DISABLE_OBSOLETE_FUNCTIONS` in imconfig.h to forcefully disable legacy names and symbols. Doing it every once in a while is a good way to make sure you are not using obsolete symbols. Dear ImGui is in active development, @@ -32,70 +37,193 @@ HOW TO UPDATE? ----------------------------------------------------------------------- - DOCKING+MULTI-VIEWPORT BRANCH (In Progress) + VERSION 1.89.8 (Released 2023-08-01) ----------------------------------------------------------------------- -DOCKING FEATURES -(see https://github.com/ocornut/imgui/wiki/Docking for quick intro) +Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.8 -- Added Docking system: [BETA] (#2109, #351) - - Added ImGuiConfigFlags_DockingEnable flag to enable Docking. - Set with `io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;`. - - Added DockSpace(), DockSpaceOverViewport() API. - - Added ImGuiDockNodeFlags flags for DockSpace(). - - Added SetNextWindowDockID(), SetNextWindowClass() API. - - Added GetWindowDockID(), IsWindowDocked() API. - - Added ImGuiWindowFlags_NoDocking window flag to disable the possibility for a window to be docked. - Popup, Menu and Child windows always have the ImGuiWindowFlags_NoDocking flag set. - - Added ImGuiWindowClass to specify advanced docking/viewport related flags via SetNextWindowClass(). - - Added io.ConfigDockingNoSplit option. - - Added io.ConfigDockingWithShift option. - - Added io.ConfigDockingAlwaysTabBar option. - - Added io.ConfigDockingTransparentPayload option. - - Style: Added ImGuiCol_DockingPreview, ImGuiCol_DockingEmptyBg colors. - - Demo: Added "DockSpace" example app showcasing use of explicit dockspace nodes. +Breaking changes: -MULTI-VIEWPORT FEATURES -(see https://github.com/ocornut/imgui/wiki/Multi-Viewports for quick intro) - -Breaking Changes: - -- IMPORTANT: When multi-viewports are enabled (with io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable), - all coordinates/positions will be in your natural OS coordinates space. It means that: - - Reference to hard-coded positions such as in SetNextWindowPos(ImVec2(0,0)) are _probably_ not what you want anymore. - Use GetMainViewport()->Pos to offset hard-coded positions, e.g. SetNextWindowPos(GetMainViewport()->Pos). - - Likewise io.MousePos and GetMousePos() will use OS coordinates. - If you query mouse positions to interact with non-imgui coordinates you will need to offset them. - e.g. subtract GetWindowViewport()->Pos. -- IO: Removed io.DisplayVisibleMin, io.DisplayVisibleMax settings (they were marked obsoleted, used to clip within the (0,0)..(DisplaySize) range). +- IO: Obsoleted io.ClearInputCharacters() (added in 1.47) as it now ambiguous + and often incorrect/misleading considering the existence of a higher-level + input queue. This is automatically cleared by io.ClearInputsKeys(). (#4921) +- ImDrawData: CmdLists[] array is now owned, changed from 'ImDrawList**' to + 'ImVector'. Majority of users shouldn't be affected, but you + cannot compare to NULL nor reassign manually anymore. + Instead use AddDrawList(). Allocation count are identical. (#6406, #4879, #1878) Other changes: -(FIXME: This need a fuller explanation!) -- Added ImGuiPlatformIO structure and GetPlatformIO(). - - Similarly to ImGuiIO and GetIO(), this structure is the main point of communication for backends supporting multi-viewports. - - Backend sets functions in ImGuiPlatformIO to manipulate platform windows. - - ImGuiPlatformIO::Monitors is a list of platform monitors (input from backend) - - ImGuiPlatformIO::Viewports is a list of viewports (output from dear imgui) -- Added ImGuiPlatformMonitor to feed OS monitor information in the ImGuiPlatformIO::Monitors. -- Added GetWindowViewport(), SetNextWindowViewport(). -- Added GetWindowDpiScale(). -- Added GetOverlayDrawList(ImGuiViewport* viewport). - The no-parameter version of GetOverlayDrawList() return the overlay for the current window's viewport. -- Added UpdatePlatformWindows(), RenderPlatformWindowsDefault(), DestroyPlatformWindows() for usage in application setup. -- Added FindViewportByID(), FindViewportByPlatformHandle() for usage by backends. -- Added ImGuiConfigFlags_ViewportsEnable configuration flag and other viewport options. -- Added io.ConfigViewportsNoAutoMerge option. -- Added io.ConfigViewportsNoTaskBarIcon option. -- Added io.ConfigViewportsNoDecoration option. -- Added io.ConfigViewportsNoDefaultParent option. -- Added ImGuiBackendFlags_PlatformHasViewports, ImGuiBackendFlags_RendererHasViewports, ImGuiBackendFlags_HasMouseHoveredViewport backend flags. -- Added io.AddMouseViewportEvent() (optional _even_ for multi-viewport support, tied to ImGuiBackendFlags_HasMouseHoveredViewport flag). -- Expanded ImGuiViewport structure, ImGuiViewportFlags flags. -- Added ImGuiWindowClass and SetNextWindowClass() for passing viewport related hints to the OS/platform back-end. -- Examples: Renderer: OpenGL2, OpenGL3, DirectX9, DirectX10, DirectX11, DirectX12, Vulkan: Added support for multi-viewports. -- Examples: Platforms: Win32, GLFW, SDL2: Added support for multi-viewports. - Note that Linux/Mac still have inconsistent support for multi-viewports. If you want to help see https://github.com/ocornut/imgui/issues/2117. +- Fonts: ImFontConfig::OversampleH now defaults to 2 instead of 3, since the + quality increase is largely minimal. +- Fonts, imgui_freetype: Added support to render OpenType SVG fonts using lunasvg. + Requires enabling IMGUI_ENABLE_FREETYPE_LUNASVG along with IMGUI_ENABLE_FREETYPE, + and providing headers/libraries for lunasvg. (#6591, #6607) [@sakiodre] +- ImDrawData: CmdLists[] array is now an ImVector<> owned by ImDrawData rather + than a pointer to internal state. + - This makes it easier for user to create their own or append to an existing draw data. + Added a ImDrawData::AddDrawList() helper function to do that. (#6406, #4879, #1878) + - This makes it easier to perform a deep-swap instead of a deep-copy, as array + ownership is now clear. (#6597, #6475, #6167, #5776, #5109, #4763, #3515, #1860) + - Syntax and allocation count are otherwise identical. +- Fixed CTRL+Tab dimming background assert when target window has a callback + in the last ImDrawCmd. (#4857, #5937) +- IsItemHovered: Fixed ImGuiHoveredFlags_ForTooltip for Keyboard/Gamepad navigation, + got broken prior to 1.89.7 due to an unrelated change making flags conflict. (#6622, #1485) +- InputText: Fixed a case where deactivation frame would write to underlying + buffer or call CallbackResize although unnecessary, in a frame where the + return value was false. +- Tables: fixed GetContentRegionAvail().y report not taking account of lower cell + padding or of using ImGuiTableFlags_NoHostExtendY. Not taking it into account + would make the idiom of creating vertically bottom-aligned content (e.g. a child + window) inside a table make the parent window erroneously have a scrollbar. (#6619) +- Tables: fixed calculation of multi-instance shared decoration/scrollbar width of + scrolling tables, to avoid flickering width variation when resizing down a table + hosting a child window. (#5920, #6619) +- Scrollbar: layout needs to take account of window border size, so a border size + will slightly reduce scrollbar size. Generally we tried to make it that window + border size has no incidence on layout but this can't work with thick borders. (#2522) +- IO: Added io.ClearEventsQueue() to clear incoming inputs events. (#4921) + May be useful in conjunction with io.ClearInputsKeys() if you need to clear + both current inputs state and queued events (e.g. when using blocking native + dialogs such as Windows's ::MessageBox() or ::GetOpenFileName()). +- IO: Changed io.ClearInputsKeys() specs to also clear current frame character buffer + (what now obsoleted io.ClearInputCharacters() did), as this is effectively the + desirable behavior. +- Misc: Added IMGUI_DISABLE_STB_SPRINTF_IMPLEMENTATION config macro to disable + stb_sprintf implementation when using IMGUI_USE_STB_SPRINTF. (#6626) [@septag] +- Misc: Avoid stb_textedit.h reincluding string.h while in a namespace, which + messes up with building with Clang Modules. (#6653, #4791) [@JohelEGP] +- Demo: Better showcase use of SetNextItemAllowOverlap(). (#6574, #6512, #3909, #517) +- Demo: Showcase a few more InputText() flags. +- Backends: Made all backends sources files support global IMGUI_DISABLE. (#6601) +- Backends: GLFW: Revert ignoring mouse data on GLFW_CURSOR_DISABLED as it can be used + differently. User may set ImGuiConfigFlags_NoMouse if desired. (#5625, #6609) [@scorpion-26] +- Backends: WebGPU: Update for changes in Dawn. (#6602, #6188) [@williamhCode] +- Examples: Vulkan: Creating minimal descriptor pools to fit only what is needed by + example. (#6642) [@SaschaWillem] + +Docking+Viewports Branch: + +- Docking, Style: resizing separators use same colors as window borders (ImGuiCol_Border) + for consistency. With default styles it doesn't make a big difference. (#2522) [@rmitton] + In the future if we promote using thick value for inner/outer docking padding we may + need to introduce new colors for it. +- Docking: added style.DockingSeparatorSize, ImGuiStyleVar_DockingSeparatorSize. Now + also scaled by style.ScaleAllSizes(). (#3481, #4721, #2522) [@PossiblyAShrub, @wobbier] +- Docking: fixed rendering of docked-window scrollbar above outer border. (#2522) + + +----------------------------------------------------------------------- + VERSION 1.89.7 (Released 2023-07-04) +----------------------------------------------------------------------- + +Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.7 + +Breaking changes: + +- Moved io.HoverDelayShort/io.HoverDelayNormal to style.HoverDelayShort/style.HoverDelayNormal. + As the fields were added in 1.89 and expected to be left unchanged by most users, or only + tweaked once during app initialisation, we are exceptionally accepting the breakage. + Majority of users should not even notice. +- Overlapping items: (#6512, #3909, #517) + - Added 'SetNextItemAllowOverlap()' (called before an item) as a replacement for using + 'SetItemAllowOverlap()' (called after an item). This is roughly equivalent to using the + legacy 'SetItemAllowOverlap()' call (public API) + ImGuiButtonFlags_AllowOverlap (internal). + - Obsoleted 'SetItemAllowOverlap()': it didn't and couldn't work reliably since 1.89 (2022-11-15), + and relied on ambiguously defined design. Use 'SetNextItemAllowOverlap()' before item instead. + - Selectable, TreeNode: When using ImGuiSelectableFlags_AllowOverlap/ImGuiTreeNodeFlags_AllowOverlap + and holding item held, overlapping widgets won't appear as hovered. (#6512, #3909) + While this fixes a common small visual issue, it also means that calling IsItemHovered() + after a non-reactive elements - e.g. Text() - overlapping an active one may fail if you don't + use IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem). (#6610) + - Renamed 'ImGuiTreeNodeFlags_AllowItemOverlap' to 'ImGuiTreeNodeFlags_AllowOverlap'. + - Renamed 'ImGuiSelectableFlags_AllowItemOverlap' to 'ImGuiSelectableFlags_AllowOverlap' + - Kept redirecting enums (will obsolete). + +Other changes: + +- Tooltips/IsItemHovered() related changes: + - Tooltips: Added SetItemTooltip() and BeginItemTooltip() functions. + They are shortcuts for the common idiom of using IsItemHovered(). + - SetItemTooltip("Hello") == if (IsItemHovered(ImGuiHoveredFlags_Tooltip)) { SetTooltip("Hello"); } + - BeginItemTooltip() == IsItemHovered(ImGuiHoveredFlags_Tooltip) && BeginTooltip() + The newly added ImGuiHoveredFlags_Tooltip is meant to facilitate standardizing + mouse hovering delays and rules for a given application. + The previously common idiom of using 'if (IsItemHovered()) { SetTooltip(...); }' + won't use delay or stationary test. + - IsItemHovered: Added ImGuiHoveredFlags_Stationary to require mouse being + stationary when hovering a new item. Added style.HoverStationaryDelay (~0.15 sec). + Once the mouse has been stationary once the state is preserved for same item. (#1485) + - IsItemHovered: Added ImGuiHoveredFlags_ForTooltip as a shortcut for pulling flags + from style.HoverFlagsForTooltipMouse or style.HoverFlagsForTooltipNav depending + on active inputs (#1485) + - style.HoverFlagsForTooltipMouse defaults to 'ImGuiHoveredFlags_Stationary | ImGuiHoveredFlags_DelayShort' + - style.HoverFlagsForTooltipNav defaults to 'ImGuiHoveredFlags_NoSharedDelay | ImGuiHoveredFlags_DelayNormal'. + - Tooltips: Tweak default offset for non-drag and drop tooltips so underlying items + isn't covered as much. (Match offset for drag and drop tooltips) + - IsItemHovered: Tweaked default value of style.HoverDelayNormal from 0.30 to 0.40, + Tweaked default value of style.HoverDelayShort from 0.10 to 0.15. (#1485) + - IsItemHovered: Added ImGuiHoveredFlags_AllowWhenOverlappedByWindow to ignore window-overlap only. + Option ImGuiHoveredFlags_AllowWhenOverlapped now expand into a combination of both + _AllowWhenOverlappedByWindow + _AllowWhenOverlappedByItem, matching old behavior. +- Overlapping items: (#6512, #3909, #517) + - Most item types should now work with SetNextItemAllowOverlap(). (#6512, #3909, #517) + - Fixed first frame of an overlap highlighting underlying item if previous frame didn't hover anything. + - IsItemHovered: Changed to return false when querying an item using AllowOverlap mode which + is being overlapped. Added ImGuiHoveredFlags_AllowWhenOverlappedByItem to opt-out. (#6512, #3909, #517) +- IsWindowHovered: Added support for ImGuiHoveredFlags_Stationary. +- IsWindowHovered, IsItemHovered: Assert when passed any unsupported flags. +- Tables: Fixed a regression in 1.89.6 leading to the first column of tables with either + ScrollX or ScrollY flags from being impossible to resize. (#6503) +- CollapsingHeader/TreeNode: Fixed text padding when using _Framed+_Leaf flags. (#6549) [@BobbyAnguelov] +- InputText: Fixed not returning true when buffer is cleared while using the + ImGuiInputTextFlags_EscapeClearsAll flag. (#5688, #2620) +- InputText: Fixed a crash on deactivating a ReadOnly buffer. (#6570, #6292, #4714) +- InputText: ImGuiInputTextCallbackData::InsertChars() accept (NULL,NULL) range, in order to conform + to common idioms (e.g. passing .data(), .data() + .size() from a null string). (#6565, #6566, #3615) +- Combo: Made simple/legacy Combo() function not returns true when picking already selected item. + This is consistent with other widgets. If you need something else, you can use BeginCombo(). (#1182) +- Clipper: Rework inner logic to allow functioning with a zero-clear constructor. + This is order to facilitate usage for language bindings (e.g cimgui or dear_binding) + where user may not be calling a constructor manually. (#5856) +- Drag and Drop: Apply default behavior of drag source not reporting itself as hovered + at lower-level, so DragXXX, SliderXXX, InputXXX, Plot widgets are fulfilling it. + (Behavior doesn't apply when ImGuiDragDropFlags_SourceNoDisableHover is set). +- Modals: In the case of nested modal, made sure that focused or appearing windows are + moved below the lowest blocking modal (rather than the highest one). (#4317) +- GetKeyName(): Fixed assert with ImGuiMod_XXX values when IMGUI_DISABLE_OBSOLETE_KEYIO is set. +- Debug Tools: Added 'io.ConfigDebugIniSettings' option to save .ini data with extra + comments. Currently mainly for inspecting Docking .ini data, but makes saving slower. +- Demo: Added more developed "Widgets->Tooltips" section. (#1485) +- Backends: OpenGL3: Fixed support for glBindSampler() backup/restore on ES3. (#6375, #6508) [@jsm174] +- Backends: OpenGL3: Fixed erroneous use glGetIntegerv(GL_CONTEXT_PROFILE_MASK) on contexts + lower than 3.2. (#6539, #6333) [@krumelmonster] +- Backends: Vulkan: Added optional support for VK_KHR_dynamic_rendering (Vulkan 1.3+) in the + backend for applications using it. User needs to set 'init_info->UseDynamicRendering = true' + and 'init_info->ColorAttachmentFormat'. RenderPass becomes unused. (#5446, #5037) [@spnda, @cmarcelo] +- Backends: GLFW: Accept glfwGetTime() not returning a monotonically increasing value. + This seems to happens on some Windows setup when peripherals disconnect, and is likely + to also happen on browser+Emscripten. Matches similar 1.89.4 fix in SDL backend. (#6491) +- Examples: Win32+OpenGL3: Changed DefWindowProc() to DefWindowProcW() to match other examples + and support the example app being compiled without UNICODE. (#6516, #5725, #5961, #5975) [@yenixing] + +Docking+Viewports Branch: + +- Viewports+Docking: Fixed extraneous viewport+platform-window recreation in various + combination of showing or hiding windows, docking with/without split, undocking. + While with some backends and without OS decorations, some extraneous window recreation + were visibly not noticeable, they would typically become noticeable when enabling + OS decorations on those windows (e.g. Windows title bar fade-in/animation). +- Viewports: Closing a viewport via OS/platform means (e.g. OS close button or task-bar menu), + mark all windows in this viewport as closed. +- Docking: Fixed one-frame flickering on reappearing windows binding to a dock node + where a later-submitted window was already bound. +- Docking: Fixed dragging from title-bar empty space (regression from 1.88 related to + keeping ID alive when calling low-level ButtonBehavior() directly). (#5181, #2645) +- Docking: [Internal] DockBuilderDockWindow() API calls don't clear docking order + if the target node is same as existing one. +- Backends: Win32: Added support for changing ParentViewportID after viewport creation. ----------------------------------------------------------------------- @@ -643,7 +771,7 @@ Other Changes: - ColorEdit3: fixed id collision leading to an assertion. (#5707) - IsItemHovered: Added ImGuiHoveredFlags_DelayNormal and ImGuiHoveredFlags_DelayShort flags, allowing to introduce a shared delay for tooltip idioms. The delays are respectively - io.HoverDelayNormal (default to 0.30f) and io.HoverDelayFast (default to 0.10f). (#1485) + io.HoverDelayNormal (default to 0.30f) and io.HoverDelayShort (default to 0.10f). (#1485) - IsItemHovered: Added ImGuiHoveredFlags_NoSharedDelay to disable sharing delays between items, so moving from one item to a nearby one will requires delay to elapse again. (#1485) - Tables: activating an ID (e.g. clicking button inside) column doesn't prevent columns diff --git a/extern/imgui_patched/docs/CONTRIBUTING.md b/extern/imgui_patched/docs/CONTRIBUTING.md index 81a6f0e3c..26e82f514 100644 --- a/extern/imgui_patched/docs/CONTRIBUTING.md +++ b/extern/imgui_patched/docs/CONTRIBUTING.md @@ -11,7 +11,7 @@ ## Getting Started & General Advice - Article: [How To Ask Good Questions](https://bit.ly/3nwRnx1). -- Please browse the [Wiki](https://github.com/ocornut/imgui/wiki) to find code snippets, links and other resources (e.g. [Useful extensions](https://github.com/ocornut/imgui/wiki/Useful-Extensions)). +- Please browse the [Wiki](https://github.com/ocornut/imgui/wiki) to find code snippets, links and other resources (e.g. [Getting Started](https://github.com/ocornut/imgui/wiki/Getting-Started), [Useful extensions](https://github.com/ocornut/imgui/wiki/Useful-Extensions)). - Please read [docs/FAQ.md](https://github.com/ocornut/imgui/blob/master/docs/FAQ.md). - Please read [docs/FONTS.md](https://github.com/ocornut/imgui/blob/master/docs/FONTS.md) if your question relates to fonts or text. - Please read one of the [examples/](https://github.com/ocornut/imgui/tree/master/examples) application if your question relates to setting up Dear ImGui. diff --git a/extern/imgui_patched/docs/FAQ.md b/extern/imgui_patched/docs/FAQ.md index 2a2c9ebf7..d0e75799f 100644 --- a/extern/imgui_patched/docs/FAQ.md +++ b/extern/imgui_patched/docs/FAQ.md @@ -50,7 +50,8 @@ or view this file with any Markdown viewer. **This library is poorly documented at the moment and expects the user to be acquainted with C/C++.** - The [Wiki](https://github.com/ocornut/imgui/wiki) is a hub to many resources and links. -- Dozens of standalone example applications using e.g. OpenGL/DirectX are provided in the [examples/](https://github.com/ocornut/imgui/blob/master/examples/) folder to explain how to integrate Dear ImGui with your own engine/application. You can run those applications and explore them. +- Handy [Getting Started](https://github.com/ocornut/imgui/wiki/Getting-Started) guide to integrate Dear ImGui in an existing application. +- 20+ standalone example applications using e.g. OpenGL/DirectX are provided in the [examples/](https://github.com/ocornut/imgui/blob/master/examples/) folder to explain how to integrate Dear ImGui with your own engine/application. You can run those applications and explore them. - See demo code in [imgui_demo.cpp](https://github.com/ocornut/imgui/blob/master/imgui_demo.cpp) and particularly the `ImGui::ShowDemoWindow()` function. The demo covers most features of Dear ImGui, so you can read the code and see its output. - See documentation: [Backends](https://github.com/ocornut/imgui/blob/master/docs/BACKENDS.md), [Examples](https://github.com/ocornut/imgui/blob/master/docs/EXAMPLES.md), [Fonts](https://github.com/ocornut/imgui/blob/master/docs/FONTS.md). - See documentation and comments at the top of [imgui.cpp](https://github.com/ocornut/imgui/blob/master/imgui.cpp) + general API comments in [imgui.h](https://github.com/ocornut/imgui/blob/master/imgui.h). @@ -90,6 +91,7 @@ Many projects are using this branch and it is kept in sync with master regularly ### Q: How to get started? +Read [Getting Started](https://github.com/ocornut/imgui/wiki/Getting-Started).
Read [EXAMPLES.md](https://github.com/ocornut/imgui/blob/master/docs/EXAMPLES.md).
Read [BACKENDS.md](https://github.com/ocornut/imgui/blob/master/docs/BACKENDS.md).
Read `PROGRAMMER GUIDE` section of [imgui.cpp](https://github.com/ocornut/imgui/blob/master/imgui.cpp).
@@ -163,8 +165,8 @@ Console SDK also sometimes provide equivalent tooling or wrapper for Synergy-lik --- ### Q: I integrated Dear ImGui in my engine and little squares are showing instead of text... -Your renderer is not using the font texture correctly or it hasn't been uploaded to the GPU. -- If this happens using the standard backends: A) have you modified the font atlas after `ImGui_ImplXXX_NewFrame()`? B) maybe the texture failed to upload, which could happens if for some reason your texture is too big. Also see [docs/FONTS.md](https://github.com/ocornut/imgui/blob/master/docs/FONTS.md). +Your renderer backend is not using the font texture correctly or it hasn't been uploaded to the GPU. +- If this happens using the standard backends: A) have you modified the font atlas after `ImGui_ImplXXX_NewFrame()`? B) maybe the texture failed to upload, which **can if your texture atlas is too big**. Also see [docs/FONTS.md](https://github.com/ocornut/imgui/blob/master/docs/FONTS.md). - If this happens with a custom backend: make sure you have uploaded the font texture to the GPU, that all shaders are rendering states are setup properly (e.g. texture is bound). Compare your code to existing backends and use a graphics debugger such as [RenderDoc](https://renderdoc.org) to debug your rendering states. ##### [Return to Index](#index) @@ -528,7 +530,7 @@ This approach is relatively easy and functional but comes with two issues: - Style override may be lost during the `Begin()` call crossing monitor boundaries. You may need to do some custom scaling mumbo-jumbo if you want your `OnChangedViewport()` handler to preserve style overrides. Please note that if you are not using multi-viewports with multi-monitors using different DPI scales, you can ignore that and use the simpler technique recommended at the top. - + On Windows, in addition to scaling the font size (make sure to round to an integer) and using `style.ScaleAllSizes()`, you will need to inform Windows that your application is DPI aware. If this is not done, Windows will scale the application window and the UI text will be blurry. Potential solutions to indicate DPI awareness on Windows are: - For SDL: the flag `SDL_WINDOW_ALLOW_HIGHDPI` needs to be passed to `SDL_CreateWindow()``. @@ -568,44 +570,15 @@ io.Fonts->AddFontFromFileTTF("MyFolder/MyFont.ttf", size); // ALSO CORRECT ### Q: How can I easily use icons in my application? The most convenient and practical way is to merge an icon font such as FontAwesome inside your main font. Then you can refer to icons within your strings. -You may want to see `ImFontConfig::GlyphMinAdvanceX` to make your icon look monospace to facilitate alignment. -(Read the [docs/FONTS.md](https://github.com/ocornut/imgui/blob/master/docs/FONTS.md) file for more details about icons font loading.) -With some extra effort, you may use colorful icons by registering custom rectangle space inside the font atlas, -and copying your own graphics data into it. See docs/FONTS.md about using the AddCustomRectFontGlyph API. +Read the [docs/FONTS.md](https://github.com/ocornut/imgui/blob/master/docs/FONTS.md) file for more details about icons font loading. ##### [Return to Index](#index) --- ### Q: How can I load multiple fonts? -Use the font atlas to pack them into a single texture: -(Read the [docs/FONTS.md](https://github.com/ocornut/imgui/blob/master/docs/FONTS.md) file and the code in ImFontAtlas for more details.) -```cpp -ImGuiIO& io = ImGui::GetIO(); -ImFont* font0 = io.Fonts->AddFontDefault(); -ImFont* font1 = io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_in_pixels); -ImFont* font2 = io.Fonts->AddFontFromFileTTF("myfontfile2.ttf", size_in_pixels); -io.Fonts->GetTexDataAsRGBA32() or GetTexDataAsAlpha8() -// the first loaded font gets used by default -// use ImGui::PushFont()/ImGui::PopFont() to change the font at runtime - -// Options -ImFontConfig config; -config.OversampleH = 2; -config.OversampleV = 1; -config.GlyphOffset.y -= 1.0f; // Move everything by 1 pixel up -config.GlyphExtraSpacing.x = 1.0f; // Increase spacing between characters -io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, &config); - -// Combine multiple fonts into one (e.g. for icon fonts) -static ImWchar ranges[] = { 0xf000, 0xf3ff, 0 }; -ImFontConfig config; -config.MergeMode = true; -io.Fonts->AddFontDefault(); -io.Fonts->AddFontFromFileTTF("fontawesome-webfont.ttf", 16.0f, &config, ranges); // Merge icon font -io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, nullptr, &config, io.Fonts->GetGlyphRangesJapanese()); // Merge japanese glyphs -``` +Use the font atlas to pack them into a single texture. Read [docs/FONTS.md](https://github.com/ocornut/imgui/blob/master/docs/FONTS.md) for more details. ##### [Return to Index](#index) diff --git a/extern/imgui_patched/docs/FONTS.md b/extern/imgui_patched/docs/FONTS.md index 6049fb48f..fa68dad20 100644 --- a/extern/imgui_patched/docs/FONTS.md +++ b/extern/imgui_patched/docs/FONTS.md @@ -11,10 +11,7 @@ In the [misc/fonts/](https://github.com/ocornut/imgui/tree/master/misc/fonts) fo **Also read the FAQ:** https://www.dearimgui.com/faq (there is a Fonts section!) ## Index -- [Readme First](#readme-first) -- [About Filenames](#about-filenames) -- [About UTF-8 Encoding](#about-utf-8-encoding) -- [Debug Tools](#debug-tools) +- [Troubleshooting](#troubleshooting) - [How should I handle DPI in my application?](#how-should-i-handle-dpi-in-my-application) - [Fonts Loading Instructions](#fonts-loading-instructions) - [Using Icon Fonts](#using-icon-fonts) @@ -23,103 +20,44 @@ In the [misc/fonts/](https://github.com/ocornut/imgui/tree/master/misc/fonts) fo - [Using Custom Glyph Ranges](#using-custom-glyph-ranges) - [Using Custom Colorful Icons](#using-custom-colorful-icons) - [Using Font Data Embedded In Source Code](#using-font-data-embedded-in-source-code) +- [About Filenames](#about-filenames) +- [About UTF-8 Encoding](#about-utf-8-encoding) +- [Debug Tools](#debug-tools) - [Credits/Licenses For Fonts Included In Repository](#creditslicenses-for-fonts-included-in-repository) - [Font Links](#font-links) --------------------------------------- -## Readme First +## Troubleshooting -**A vast majority of font and text related issues encountered comes from 3 things:** -- Invalid filename due to use of `\` or unexpected working directory. See [About Filenames](#about-filenames). AddFontXXX functions should assert if the filename is incorrect. -- Invalid UTF-8 encoding of your non-ASCII strings. See [About UTF-8 Encoding](#about-utf-8-encoding). Use the encoding viewer to confirm yours is correct. -- You need to load a font with explicit glyph ranges if you want to use non-ASCII characters. See [Fonts Loading Instructions](#fonts-loading-instructions). Use Metrics/Debugger->Fonts to confirm loaded fonts and loaded glyph ranges. +**A vast majority of font and text related issues encountered comes from 4 things:** -The third point is a current constraint of Dear ImGui (which we will lift in the future): when loading a font you need to specify which characters glyphs to load. -All loaded fonts glyphs are rendered into a single texture atlas ahead of time. Calling either of `io.Fonts->GetTexDataAsAlpha8()`, `io.Fonts->GetTexDataAsRGBA32()` or `io.Fonts->Build()` will build the atlas. This is generally called by the Renderer backend, e.g. `ImGui_ImplDX11_NewFrame()` calls it. +### (1) Invalid filename due to use of `\` or unexpected working directory. -**If you use custom glyphs ranges, make sure the array is persistent** and available during the calls to `GetTexDataAsAlpha8()/GetTexDataAsRGBA32()/Build()`. +See [About Filenames](#about-filenames). AddFontXXX functions should assert if the filename is incorrect. -##### [Return to Index](#index) +### (2) Invalid UTF-8 encoding of your non-ASCII strings. -## About Filenames +See [About UTF-8 Encoding](#about-utf-8-encoding). Use the encoding viewer to confirm encoding of string literal in your source code is correct. -**Please note that many new C/C++ users have issues loading their files _because the filename they provide is wrong_ due to incorrect assumption of what is the current directory.** +### (3) Missing glyph ranges. -Two things to watch for: +You need to load a font with explicit glyph ranges if you want to use non-ASCII characters. See [Fonts Loading Instructions](#fonts-loading-instructions). Use [Debug Tools](#debug-tools) confirm loaded fonts and loaded glyph ranges. -(1) In C/C++ and most programming languages if you want to use a backslash `\` within a string literal, you need to write it double backslash `\\`. At it happens, Windows uses backslashes as a path separator, so be mindful. -```cpp -io.Fonts->AddFontFromFileTTF("MyFiles\MyImage01.jpg", ...); // This is INCORRECT!! -io.Fonts->AddFontFromFileTTF("MyFiles\\MyImage01.jpg", ...); // This is CORRECT -``` -In some situations, you may also use `/` path separator under Windows. +This is a current constraint of Dear ImGui (which we will lift in the future): when loading a font you need to specify which characters glyphs to load. +All loaded fonts glyphs are rendered into a single texture atlas ahead of time. Calling either of `io.Fonts->GetTexDataAsAlpha8()`, `io.Fonts->GetTexDataAsRGBA32()` or `io.Fonts->Build()` will build the atlas. This is generally called by the Renderer backend, e.g. `ImGui_ImplDX11_NewFrame()` calls it. **If you use custom glyphs ranges, make sure the array is persistent** and available during the calls to `GetTexDataAsAlpha8()/GetTexDataAsRGBA32()/Build()`. -(2) Make sure your IDE/debugger settings starts your executable from the right working (current) directory. In Visual Studio you can change your working directory in project `Properties > General > Debugging > Working Directory`. People assume that their execution will start from the root folder of the project, where by default it often starts from the folder where object or executable files are stored. -```cpp -io.Fonts->AddFontFromFileTTF("MyImage01.jpg", ...); // Relative filename depends on your Working Directory when running your program! -io.Fonts->AddFontFromFileTTF("../MyImage01.jpg", ...); // Load from the parent folder of your Working Directory -``` -##### [Return to Index](#index) +### (4) Font atlas texture fails to upload to GPU. +This is often of byproduct of point 3. If you have large number of glyphs or multiple fonts, the texture may become too big for your graphics API. **The typical result of failing to upload a texture is if every glyph or everything appears as empty black or white rectangle.** Mind the fact that some graphics drivers have texture size limitation. If you are building a PC application, mind the fact that your users may use hardware with lower limitations than yours. -## About UTF-8 Encoding - -**For non-ASCII characters display, a common user issue is not passing correctly UTF-8 encoded strings.** - -(1) We provide a function `ImGui::DebugTextEncoding(const char* text)` which you can call to verify the content of your UTF-8 strings. -This is a convenient way to confirm that your encoding is correct. - -```cpp -ImGui::SeparatorText("CORRECT"); -ImGui::DebugTextEncoding(u8"こんにちは"); - -ImGui::SeparatorText("INCORRECT"); -ImGui::DebugTextEncoding("こんにちは"); -``` -![UTF-8 Encoding viewer](https://github.com/ocornut/imgui/assets/8225057/61c1696a-9a94-46c5-9627-cf91211111f0) - -You can also find this tool under `Metrics/Debuggers->Tools->UTF-8 Encoding viewer` if you want to paste from clipboard, but this won't validate the UTF-8 encoding done by your compiler. - -(2) To encode in UTF-8: - -There are also compiler-specific ways to enforce UTF-8 encoding by default: - -- Visual Studio compiler: `/utf-8` command-line flag. -- Visual Studio compiler: `#pragma execution_character_set("utf-8")` inside your code. -- Since May 2023 we have changed the Visual Studio projects of all our examples to use `/utf-8` ([see commit](https://github.com/ocornut/imgui/commit/513af1efc9080857bbd10000d98f98f2a0c96803)). - -Or, since C++11, you can use the `u8"my text"` syntax to encode literal strings as UTF-8. e.g.: -```cpp -ImGui::Text(u8"hello"); -ImGui::Text(u8"こんにちは"); // this will always be encoded as UTF-8 -ImGui::Text("こんにちは"); // the encoding of this is depending on compiler settings/flags and may be incorrect. -``` - -Since C++20, because the C++ committee hate its users, they decided to change the `u8""` syntax to not return `const char*` but a new type `const char_t*` which doesn't cast to `const char*`. -Because of type usage of `u8""` in C++20 is a little more tedious: -```cpp -ImGui::Text((const char*)u8"こんにちは"); -``` -We suggest using a macro in your codebase: -```cpp -#define U8(_S) (const char*)u8##_S -ImGui::Text(U8("こんにちは")); -``` -##### [Return to Index](#index) - - -## Debug Tools - -#### Metrics/Debugger->Fonts -You can use the `Metrics/Debugger` window (available in `Demo>Tools`) to browse your fonts and understand what's going on if you have an issue. You can also reach it in `Demo->Tools->Style Editor->Fonts`. The same information are also available in the Style Editor under Fonts. - -![Fonts debugging](https://user-images.githubusercontent.com/8225057/135429892-0e41ef8d-33c5-4991-bcf6-f997a0bcfd6b.png) - -#### UTF-8 Encoding Viewer** -You can use the `UTF-8 Encoding viewer` in `Metrics/Debugger` to verify the content of your UTF-8 strings. From C/C++ code, you can call `ImGui::DebugTextEncoding("my string");` function to verify that your UTF-8 encoding is correct. - -![UTF-8 Encoding viewer](https://user-images.githubusercontent.com/8225057/166505963-8a0d7899-8ee8-4558-abb2-1ae523dc02f9.png) +Some solutions: +- You may reduce oversampling, e.g. `font_config.OversampleH = 1`, this will half your texture size for a quality looss. + Note that while OversampleH = 2 looks visibly very close to 3 in most situations, with OversampleH = 1 the quality drop will be noticeable. Read about oversampling [here](https://github.com/nothings/stb/blob/master/tests/oversample). +- Reduce glyphs ranges by calculating them from source localization data. + You can use the `ImFontGlyphRangesBuilder` for this purpose and rebuilding your atlas between frames when new characters are needed. This will be the biggest win! +- Set `io.Fonts.Flags |= ImFontAtlasFlags_NoPowerOfTwoHeight;` to disable rounding the texture height to the next power of two. +- Set `io.Fonts.TexDesiredWidth` to specify a texture width to reduce maximum texture height (see comment in `ImFontAtlas::Build()` function). ##### [Return to Index](#index) @@ -144,7 +82,7 @@ io.Fonts->AddFontDefault(); ImGuiIO& io = ImGui::GetIO(); io.Fonts->AddFontFromFileTTF("font.ttf", size_pixels); ``` -If you get an assert stating "Could not load font file!", your font filename is likely incorrect. Read "[About filenames](#about-filenames)" carefully. +If you get an assert stating "Could not load font file!", your font filename is likely incorrect. Read [About filenames](#about-filenames) carefully. **Load multiple fonts:** ```cpp @@ -153,8 +91,9 @@ ImGuiIO& io = ImGui::GetIO(); ImFont* font1 = io.Fonts->AddFontFromFileTTF("font.ttf", size_pixels); ImFont* font2 = io.Fonts->AddFontFromFileTTF("anotherfont.otf", size_pixels); ``` + +In your application loop, select which font to use: ```cpp -// In application loop: select font at runtime ImGui::Text("Hello"); // use the default font (which is the first loaded font) ImGui::PushFont(font2); ImGui::Text("Hello with another font"); @@ -220,22 +159,6 @@ ImGui::SliderFloat("float", &f, 0.0f, 1.0f); ![sample code output](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v160/code_sample_02_jp.png)
_(settings: Dark style (left), Light style (right) / Font: NotoSansCJKjp-Medium, 20px / Rounding: 5)_ -**Font Atlas too large?** - -- If you have very large number of glyphs or multiple fonts, the texture may become too big for your graphics API. The typical result of failing to upload a texture is if every glyph appears as a white rectangle. -- Mind the fact that some graphics drivers have texture size limitation. If you are building a PC application, mind the fact that your users may use hardware with lower limitations than yours. - -Some solutions: - -1. Reduce glyphs ranges by calculating them from source localization data. - You can use the `ImFontGlyphRangesBuilder` for this purpose and rebuilding your atlas between frames when new characters are needed. This will be the biggest win! -2. You may reduce oversampling, e.g. `font_config.OversampleH = 2`, this will largely reduce your texture size. - Note that while OversampleH = 2 looks visibly very close to 3 in most situations, with OversampleH = 1 the quality drop will be noticeable. -3. Set `io.Fonts.TexDesiredWidth` to specify a texture width to minimize texture height (see comment in `ImFontAtlas::Build()` function). -4. Set `io.Fonts.Flags |= ImFontAtlasFlags_NoPowerOfTwoHeight;` to disable rounding the texture height to the next power of two. -5. Read about oversampling [here](https://github.com/nothings/stb/blob/master/tests/oversample). -6. To support the extended range of unicode beyond 0xFFFF (e.g. emoticons, dingbats, symbols, shapes, ancient languages, etc...) add `#define IMGUI_USE_WCHAR32`in your `imconfig.h`. - ##### [Return to Index](#index) ## Using Icon Fonts @@ -270,6 +193,12 @@ ImGui::Button(ICON_FA_SEARCH " Search"); ``` See Links below for other icons fonts and related tools. +**Monospace Icons?** + +To make your icon look more monospace and facilitate alignment, you may want to set the ImFontConfig::GlyphMinAdvanceX value when loading an icon font. + +**Screenshot** + Here's an application using icons ("Avoyd", https://www.avoyd.com): ![avoyd](https://user-images.githubusercontent.com/8225057/81696852-c15d9e80-9464-11ea-9cab-2a4d4fc84396.jpg) @@ -287,7 +216,7 @@ Here's an application using icons ("Avoyd", https://www.avoyd.com): ## Using Colorful Glyphs/Emojis -- Rendering of colored emojis is only supported by imgui_freetype with FreeType 2.10+. +- Rendering of colored emojis is supported by imgui_freetype with FreeType 2.10+. - You will need to load fonts with the `ImGuiFreeTypeBuilderFlags_LoadColor` flag. - Emojis are frequently encoded in upper Unicode layers (character codes >0x10000) and will need dear imgui compiled with `IMGUI_USE_WCHAR32`. - Not all types of color fonts are supported by FreeType at the moment. @@ -384,6 +313,93 @@ ImFont* font = io.Fonts->AddFontFromMemoryCompressedBase85TTF(compressed_data_ba ##### [Return to Index](#index) +-- + +## About Filenames + +**Please note that many new C/C++ users have issues loading their files _because the filename they provide is wrong_ due to incorrect assumption of what is the current directory.** + +Two things to watch for: + +(1) In C/C++ and most programming languages if you want to use a backslash `\` within a string literal, you need to write it double backslash `\\`. At it happens, Windows uses backslashes as a path separator, so be mindful. +```cpp +io.Fonts->AddFontFromFileTTF("MyFiles\MyImage01.jpg", ...); // This is INCORRECT!! +io.Fonts->AddFontFromFileTTF("MyFiles\\MyImage01.jpg", ...); // This is CORRECT +``` +In some situations, you may also use `/` path separator under Windows. + +(2) Make sure your IDE/debugger settings starts your executable from the right working (current) directory. In Visual Studio you can change your working directory in project `Properties > General > Debugging > Working Directory`. People assume that their execution will start from the root folder of the project, where by default it often starts from the folder where object or executable files are stored. +```cpp +io.Fonts->AddFontFromFileTTF("MyImage01.jpg", ...); // Relative filename depends on your Working Directory when running your program! +io.Fonts->AddFontFromFileTTF("../MyImage01.jpg", ...); // Load from the parent folder of your Working Directory +``` +##### [Return to Index](#index) + +-- + +## About UTF-8 Encoding + +**For non-ASCII characters display, a common user issue is not passing correctly UTF-8 encoded strings.** + +(1) We provide a function `ImGui::DebugTextEncoding(const char* text)` which you can call to verify the content of your UTF-8 strings. +This is a convenient way to confirm that your encoding is correct. + +```cpp +ImGui::SeparatorText("CORRECT"); +ImGui::DebugTextEncoding(u8"こんにちは"); + +ImGui::SeparatorText("INCORRECT"); +ImGui::DebugTextEncoding("こんにちは"); +``` +![UTF-8 Encoding viewer](https://github.com/ocornut/imgui/assets/8225057/61c1696a-9a94-46c5-9627-cf91211111f0) + +You can also find this tool under `Metrics/Debuggers->Tools->UTF-8 Encoding viewer` if you want to paste from clipboard, but this won't validate the UTF-8 encoding done by your compiler. + +(2) To encode in UTF-8: + +There are also compiler-specific ways to enforce UTF-8 encoding by default: + +- Visual Studio compiler: `/utf-8` command-line flag. +- Visual Studio compiler: `#pragma execution_character_set("utf-8")` inside your code. +- Since May 2023 we have changed the Visual Studio projects of all our examples to use `/utf-8` ([see commit](https://github.com/ocornut/imgui/commit/513af1efc9080857bbd10000d98f98f2a0c96803)). + +Or, since C++11, you can use the `u8"my text"` syntax to encode literal strings as UTF-8. e.g.: +```cpp +ImGui::Text(u8"hello"); +ImGui::Text(u8"こんにちは"); // this will always be encoded as UTF-8 +ImGui::Text("こんにちは"); // the encoding of this is depending on compiler settings/flags and may be incorrect. +``` + +Since C++20, because the C++ committee hate its users, they decided to change the `u8""` syntax to not return `const char*` but a new type `const char_t*` which doesn't cast to `const char*`. +Because of type usage of `u8""` in C++20 is a little more tedious: +```cpp +ImGui::Text((const char*)u8"こんにちは"); +``` +We suggest using a macro in your codebase: +```cpp +#define U8(_S) (const char*)u8##_S +ImGui::Text(U8("こんにちは")); +``` +##### [Return to Index](#index) + +-- + +## Debug Tools + +#### Metrics/Debugger->Fonts +You can use the `Metrics/Debugger` window (available in `Demo>Tools`) to browse your fonts and understand what's going on if you have an issue. You can also reach it in `Demo->Tools->Style Editor->Fonts`. The same information are also available in the Style Editor under Fonts. + +![Fonts debugging](https://user-images.githubusercontent.com/8225057/135429892-0e41ef8d-33c5-4991-bcf6-f997a0bcfd6b.png) + +#### UTF-8 Encoding Viewer** +You can use the `UTF-8 Encoding viewer` in `Metrics/Debugger` to verify the content of your UTF-8 strings. From C/C++ code, you can call `ImGui::DebugTextEncoding("my string");` function to verify that your UTF-8 encoding is correct. + +![UTF-8 Encoding viewer](https://user-images.githubusercontent.com/8225057/166505963-8a0d7899-8ee8-4558-abb2-1ae523dc02f9.png) + +##### [Return to Index](#index) + +-- + ## Credits/Licenses For Fonts Included In Repository Some fonts files are available in the `misc/fonts/` folder: diff --git a/extern/imgui_patched/docs/README.md b/extern/imgui_patched/docs/README.md index c3159d36d..10e7bde7c 100644 --- a/extern/imgui_patched/docs/README.md +++ b/extern/imgui_patched/docs/README.md @@ -39,7 +39,7 @@ Dear ImGui is particularly suited to integration in game engines (for tooling), ### Usage -**The core of Dear ImGui is self-contained within a few platform-agnostic files** which you can easily compile in your application/engine. They are all the files in the root folder of the repository (imgui*.cpp, imgui*.h). **No specific build process is required**. You can add the .cpp files into your existing project. +**The core of Dear ImGui is self-contained within a few platform-agnostic files** which you can easily compile in your application/engine. They are all the files in the root folder of the repository (imgui*.cpp, imgui*.h). **No specific build process is required**. You can add the .cpp files into your existing project. See [Getting Started](https://github.com/ocornut/imgui/wiki/Getting-Started). **Backends for a variety of graphics API and rendering platforms** are provided in the [backends/](https://github.com/ocornut/imgui/tree/master/backends) folder, along with example applications in the [examples/](https://github.com/ocornut/imgui/tree/master/examples) folder. See the [Integration](#integration) section of this document for details. You may also create your own backend. Anywhere where you can render textured triangles, you can render Dear ImGui. @@ -92,7 +92,7 @@ Dear ImGui allows you to **create elaborate tools** as well as very short-lived ### How it works -Check out the Wiki's [About the IMGUI paradigm](https://github.com/ocornut/imgui/wiki#about-the-imgui-paradigm) section if you want to understand the core principles behind the IMGUI paradigm. An IMGUI tries to minimize superfluous state duplication, state synchronization, and state retention from the user's point of view. It is less error-prone (less code and fewer bugs) than traditional retained-mode interfaces, and lends itself to creating dynamic user interfaces. +The IMGUI paradigm through its API tries to minimize superfluous state duplication, state synchronization, and state retention from the user's point of view. It is less error-prone (less code and fewer bugs) than traditional retained-mode interfaces, and lends itself to creating dynamic user interfaces. Check out the Wiki's [About the IMGUI paradigm](https://github.com/ocornut/imgui/wiki#about-the-imgui-paradigm) section for more details. Dear ImGui outputs vertex buffers and command lists that you can easily render in your application. The number of draw calls and state changes required to render them is fairly small. Because Dear ImGui doesn't know or touch graphics state directly, you can call its functions anywhere in your code (e.g. in the middle of a running algorithm, or in the middle of your own rendering process). Refer to the sample applications in the examples/ folder for instructions on how to integrate Dear ImGui with your existing codebase. @@ -108,7 +108,7 @@ Reading the changelogs is a good way to keep up to date with the things Dear ImG Calling the `ImGui::ShowDemoWindow()` function will create a demo window showcasing a variety of features and examples. The code is always available for reference in `imgui_demo.cpp`. [Here's how the demo looks](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v167/v167-misc.png). You should be able to build the examples from sources. If you don't, let us know! If you want to have a quick look at some Dear ImGui features, you can download Windows binaries of the demo app here: -- [imgui-demo-binaries-20220504.zip](https://www.dearimgui.com/binaries/imgui-demo-binaries-20220504.zip) (Windows, 1.88 WIP, built 2022/05/04, master) or [older binaries](https://www.dearimgui.com/binaries). +- [imgui-demo-binaries-20230704.zip](https://www.dearimgui.com/binaries/imgui-demo-binaries-20230704.zip) (Windows, 1.89.7, built 2023/07/04, master) or [older binaries](https://www.dearimgui.com/binaries). The demo applications are not DPI aware so expect some blurriness on a 4K screen. For DPI awareness in your application, you can load/reload your font at a different scale and scale your style with `style.ScaleAllSizes()` (see [FAQ](https://www.dearimgui.com/faq)). @@ -116,7 +116,7 @@ The demo applications are not DPI aware so expect some blurriness on a 4K screen On most platforms and when using C++, **you should be able to use a combination of the [imgui_impl_xxxx](https://github.com/ocornut/imgui/tree/master/backends) backends without modification** (e.g. `imgui_impl_win32.cpp` + `imgui_impl_dx11.cpp`). If your engine supports multiple platforms, consider using more imgui_impl_xxxx files instead of rewriting them: this will be less work for you, and you can get Dear ImGui running immediately. You can _later_ decide to rewrite a custom backend using your custom engine functions if you wish so. -Integrating Dear ImGui within your custom engine is a matter of 1) wiring mouse/keyboard/gamepad inputs 2) uploading a texture to your GPU/render engine 3) providing a render function that can bind textures and render textured triangles. The [examples/](https://github.com/ocornut/imgui/tree/master/examples) folder is populated with applications doing just that. If you are an experienced programmer at ease with those concepts, it should take you less than two hours to integrate Dear ImGui into your custom engine. **Make sure to spend time reading the [FAQ](https://www.dearimgui.com/faq), comments, and the examples applications!** +See [Getting Started](https://github.com/ocornut/imgui/wiki/Getting-Started). Integrating Dear ImGui within your custom engine is a matter of 1) wiring mouse/keyboard/gamepad inputs 2) uploading a texture to your GPU/render engine 3) providing a render function that can bind textures and render textured triangles, which is essentially what Backends are doing. The [examples/](https://github.com/ocornut/imgui/tree/master/examples) folder is populated with applications doing just that: setting up a window and using backends. If you follow [Getting Started](https://github.com/ocornut/imgui/wiki/Getting-Started) it should in theory takes you less than an hour to integrate Dear ImGui. **Make sure to spend time reading the [FAQ](https://www.dearimgui.com/faq), comments, and the examples applications!** Officially maintained backends/bindings (in repository): - Renderers: DirectX9, DirectX10, DirectX11, DirectX12, Metal, OpenGL/ES/ES2, SDL_Renderer, Vulkan, WebGPU. @@ -148,7 +148,7 @@ For a list of third-party widgets and extensions, check out the [Useful Extensio See: [Frequently Asked Questions (FAQ)](https://github.com/ocornut/imgui/blob/master/docs/FAQ.md) where common questions are answered. -See: [Wiki](https://github.com/ocornut/imgui/wiki) for many links, references, articles. +See: [Getting Started](https://github.com/ocornut/imgui/wiki/Getting-Started) and [Wiki](https://github.com/ocornut/imgui/wiki) for many links, references, articles. See: [Articles about the IMGUI paradigm](https://github.com/ocornut/imgui/wiki#about-the-imgui-paradigm) to read/learn about the Immediate Mode GUI paradigm. @@ -162,7 +162,7 @@ Private support is available for paying business customers (E-mail: _contact @ d **Which version should I get?** -We occasionally tag [Releases](https://github.com/ocornut/imgui/releases) (with nice releases notes) but it is generally safe and recommended to sync to master/latest. The library is fairly stable and regressions tend to be fixed fast when reported. Advanced users may want to use the `docking` branch with [Multi-Viewport](https://github.com/ocornut/imgui/issues/1542) and [Docking](https://github.com/ocornut/imgui/issues/2109) features. This branch is kept in sync with master regularly. +We occasionally tag [Releases](https://github.com/ocornut/imgui/releases) (with nice releases notes) but it is generally safe and recommended to sync to latest `master` or `docking` branch. The library is fairly stable and regressions tend to be fixed fast when reported. Advanced users may want to use the `docking` branch with [Multi-Viewport](https://github.com/ocornut/imgui/issues/1542) and [Docking](https://github.com/ocornut/imgui/issues/2109) features. This branch is kept in sync with master regularly. **Who uses Dear ImGui?** diff --git a/extern/imgui_patched/docs/TODO.txt b/extern/imgui_patched/docs/TODO.txt index 2c67c26b5..0174cb0a0 100644 --- a/extern/imgui_patched/docs/TODO.txt +++ b/extern/imgui_patched/docs/TODO.txt @@ -2,12 +2,12 @@ dear imgui ISSUES & TODO LIST Issue numbers (#) refer to GitHub issues listed at https://github.com/ocornut/imgui/issues/XXXX -This list is not well maintained, most of the work happens on GitHub nowadays. +THIS LIST IS NOT WELL MAINTAINED. MOST OF THE WORK HAPPENS ON GITHUB NOWADAYS. The list below consist mostly of ideas noted down before they are requested/discussed by users (at which point they usually exist on the github issue tracker). It's mostly a bunch of personal notes, probably incomplete. Feel free to query if you have any questions. - - doc/test: add a proper documentation+regression testing system (#435) - - doc/test: checklist app to verify backends/integration of imgui (test inputs, rendering, callback, etc.). + - doc: add a proper documentation system (maybe relying on automation? #435) + - doc: checklist app to verify backends/integration of imgui (test inputs, rendering, callback, etc.). - doc/tips: tips of the day: website? applet in imgui_club? - doc/wiki: work on the wiki https://github.com/ocornut/imgui/wiki @@ -18,7 +18,7 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - window: begin with *p_open == false could return false. - window: get size/pos helpers given names (see discussion in #249) - window: when window is very small, prioritize resize button over close button. - - window: double-clicking on title bar to minimize isn't consistent, perhaps move to single-click on left-most collapse icon? + - window: double-clicking on title bar to minimize isn't consistent interaction, perhaps move to single-click on left-most collapse icon? - window: expose contents size. (#1045) - window: using SetWindowPos() inside Begin() and moving the window with the mouse reacts a very ugly glitch. We should just defer the SetWindowPos() call. - window: GetWindowSize() returns (0,0) when not calculated? (#1045) @@ -31,29 +31,26 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - window/child: allow resizing of child windows (possibly given min/max for each axis?.) - window/child: allow SetNextWindowContentSize() to work on child windows. - window/clipping: some form of clipping when DisplaySize (or corresponding viewport) is zero. - - window/tabbing: add a way to signify that a window or docked window requires attention (e.g. blinking title bar). - - window/id_stack: add e.g. window->GetIDFromPath() with support for leading / and ../ (#1390, #331) + - window/tabbing: add a way to signify that a window or docked window requires attention (e.g. blinking title bar, trying to click behind a modal). + - window/id_stack: add e.g. window->GetIDFromPath() with support for leading / and ../ (#1390, #331) -> model from test engine. ! scrolling: exposing horizontal scrolling with Shift+Wheel even when scrollbar is disabled expose lots of issues (#2424, #1463) - scrolling: while holding down a scrollbar, try to keep the same contents visible (at least while not moving mouse) - scrolling: allow immediately effective change of scroll after Begin() if we haven't appended items yet. - scrolling: forward mouse wheel scrolling to parent window when at the edge of scrolling limits? (useful for listbox,tables?) - - scrolling/clipping: separator on the initial position of a window is not visible (cursorpos.y <= clippos.y). (2017-08-20: can't repro) - scrolling/style: shadows on scrollable areas to denote that there is more contents (see e.g. DaVinci Resolve ui) - drawdata: make it easy to deep-copy (or swap?) a full ImDrawData so user can easily save that data if they use threaded rendering. (e.g. #2646) ! drawlist: add CalcTextSize() func to facilitate consistent code from user pov (currently need to use ImGui or ImFont alternatives!) - drawlist: maintaining bounding box per command would allow to merge draw command when clipping isn't relied on (typical non-scrolling window or non-overflowing column would merge with previous command). (WIP branch) - - drawlist: primitives/helpers to manipulate vertices post submission, so e.g. a quad/rect can be resized to fit later submitted content, _without_ using the ChannelSplit api - drawlist: make it easier to toggle AA per primitive, so we can use e.g. non-AA fill + AA borders more naturally - drawlist: non-AA strokes have gaps between points (#593, #288), glitch especially on RenderCheckmark() and ColorPicker4(). - - drawlist: rendering: provide a way for imgui to output to a single/global vertex buffer, re-order indices only at the end of the frame (ref: https://gist.github.com/floooh/10388a0afbe08fce9e617d8aefa7d302) - drawlist: callback: add an extra void* in ImDrawCallback to allow passing render-local data to the callback (would break API). - drawlist: AddRect vs AddLine position confusing (#2441) - drawlist/opt: store rounded corners in texture to use 1 quad per corner (filled and wireframe) to lower the cost of rounding. (#1962) - drawlist/opt: AddRect() axis aligned pixel aligned (no-aa) could use 8 triangles instead of 16 and no normal calculation. - drawlist/opt: thick AA line could be doable in same number of triangles as 1.0 AA line by storing gradient+full color in atlas. - - main: IsItemHovered() info stored in a stack? so that 'if TreeNode() { Text; TreePop; } if IsHovered' return the hover state of the TreeNode? + - items: IsItemHovered() info stored in a stack? so that 'if TreeNode() { Text; TreePop; } if IsHovered' return the hover state of the TreeNode? - widgets: display mode: widget-label, label-widget (aligned on column or using fixed size), label-newline-tab-widget etc. (#395) - widgets: clean up widgets internal toward exposing everything and stabilizing imgui_internals.h. @@ -61,8 +58,7 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - widgets: start exposing PushItemFlag() and ImGuiItemFlags - widgets: alignment options in style (e.g. center Selectable, Right-Align within Button, etc.) #1260 - widgets: activate by identifier (trigger button, focus given id) - - widgets: a way to represent "mixed" values, so e.g. all values replaced with *, including check-boxes, colors, etc. with support for multi-components widgets (e.g. SliderFloat3, make only "Y" mixed) (#2644) - - widgets: checkbox: checkbox with custom glyph inside frame. + - widgets: custom glyph/shapes replacements for stock sapes. (also #6090 #2431 #2235 #6517) - widgets: coloredit: keep reporting as active when picker is on? - widgets: group/scalarn functions: expose more per-component information. e.g. store NextItemData.ComponentIdx set by scalarn function, groups can expose them back somehow. - selectable: using (size.x == 0.0f) and (SelectableTextAlign.x > 0.0f) followed by SameLine() is currently not supported. @@ -81,7 +77,6 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - input text: option to Tab after an Enter validation. - input text: add ImGuiInputTextFlags_EnterToApply? (off #218) - input text: easier ways to update buffer (from source char*) while owned. preserve some sort of cursor position for multi-line text. - - input text: add flag (e.g. ImGuiInputTextFlags_EscapeClearsBuffer) to clear instead of revert. what to do with focus? (also see #2890) - input text: add discard flag (e.g. ImGuiInputTextFlags_DiscardActiveBuffer) or make it easier to clear active focus for text replacement during edition (#725) - input text: display bug when clicking a drag/slider after an input text in a different window has all-selected text (order dependent). actually a very old bug but no one appears to have noticed it. - input text: allow centering/positioning text so that ctrl+clicking Drag or Slider keeps the textual value at the same pixel position. @@ -116,20 +111,14 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - tables: see https://github.com/ocornut/imgui/issues/2957#issuecomment-569726095 - group: BeginGroup() needs a border option. (~#1496) - - group: IsHovered() after EndGroup() covers whole AABB rather than the intersection of individual items. Is that desirable? + - group: IsItemHovered() after EndGroup() covers whole AABB rather than the intersection of individual items. Is that desirable? - group: merge deactivation/activation within same group (fwd WasEdited flag). (#2550) !- color: the color conversion helpers/types are a mess and needs sorting out. - color: (api breaking) ImGui::ColorConvertXXX functions should be loose ImColorConvertXX to match imgui_internals.h - - plot: full featured plot/graph api w/ scrolling, zooming etc. all bell & whistle. why not! - - plot: PlotLines() should use the polygon-stroke facilities, less vertices (currently issues with averaging normals) - - plot: make it easier for user to draw extra stuff into the graph (e.g: draw basis, highlight certain points, 2d plots, multiple plots) - - plot: "smooth" automatic scale over time, user give an input 0.0(full user scale) 1.0(full derived from value) - - plot: option/feature: draw the zero line - - plot: option/feature: draw grid, vertical markers - - plot: option/feature: draw unit - - plot: add a helper e.g. Plot(char* label, float value, float time_span=2.0f) that stores values and Plot them for you - probably another function name. and/or automatically allow to plot ANY displayed value (more reliance on stable ID) + - plot: full featured plot/graph api w/ scrolling, zooming etc. --> ImPlot + - (plot: deleted all other todo lines on 2023-06-28) - clipper: ability to disable the clipping through a simple flag/bool. - clipper: ability to run without knowing full count in advance. @@ -140,7 +129,6 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - separator: width, thickness, centering (#1643) - splitter: formalize the splitter idiom into an official api (we want to handle n-way split) (#319) - - docking: merge docking branch (#2109) - docking: B: ordering currently held in tab bar should be implicitly held by windows themselves (also see #2304) - docking: B- tab bar: the order/focus restoring code could be part of TabBar and not DockNode? (#8) - docking: B~ rework code to be able to lazily create tab bar instance in a single place. The _Unsorted tab flag could be replacing a trailing-counter in DockNode? @@ -174,16 +162,11 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - tabs: "there is currently a problem because TabItem() will try to submit their own tooltip after 0.50 second, and this will have the effect of making your tooltip flicker once." -> tooltip priority work (WIP branch) - tabs: make EndTabBar fail if users doesn't respect BeginTabBar return value, for consistency/future-proofing. - tabs: persistent order/focus in BeginTabBar() api (#261, #351) - - tabs: TabItem could honor SetNextItemWidth()? - tabs: explicit api (even if internal) to cleanly manipulate tab order. - - tabs: Mouse wheel over tab bar could scroll? (with shift?) (#2702) - image/image button: misalignment on padded/bordered button? - image/image button: parameters are confusing, image() has tint_col,border_col whereas imagebutton() has bg_col/tint_col. Even thou they are different parameters ordering could be more consistent. can we fix that? - - image button: not taking an explicit id can be problematic. (#2464, #1390) - - slider/drag: ctrl+click when format doesn't include a % character.. disable? display underlying value in default format? (see TempInputTextScalar) - slider: allow using the [-]/[+] buttons used by InputFloat()/InputInt() - - slider: initial absolute click is imprecise. change to relative movement slider (same as scrollbar). (#1946) - slider: add dragging-based widgets to edit values with mouse (on 2 axises), saving screen real-estate. - slider: tint background based on value (e.g. v_min -> v_max, or use 0.0f either side of the sign) - slider: relative dragging? + precision dragging @@ -196,7 +179,6 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - drag float: added leeway on edge (e.g. a few invisible steps past the clamp limits) - combo: use clipper. - - combo: flag for BeginCombo to not return true when unchanged (#1182) - combo: a way/helper to customize the combo preview (#1658) -> experimental BeginComboPreview() - combo/listbox: keyboard control. need InputText-like non-active focus + key handling. considering keyboard for custom listbox (pr #203) - listbox: multiple selection (WIP range-select branch) @@ -218,7 +200,6 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - tooltip: drag and drop with tooltip near monitor edges lose/changes its last direction instead of locking one. The drag and drop tooltip should always follow without changing direction. - tooltip: allow to set the width of a tooltip to allow TextWrapped() etc. while keeping the height automatic. - - tooltip: tooltips with delay timers? or general timer policy? (instantaneous vs timed): IsItemHovered() with timer + implicit aabb-id for items with no ID. (#1485) (WIP branch) - tooltip: drag tooltip hovering over source widget with IsItemHovered/SetTooltip flickers (WIP branch) - status-bar: add a per-window status bar helper similar to what menu-bar does. generalize concept of layer0 rect in window (can make _MenuBar window flag obsolete too). @@ -227,7 +208,6 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - shortcuts: programmatically access shortcuts "Focus("&Save")) - menus: menu-bar: main menu-bar could affect clamping of windows position (~ akin to modifying DisplayMin) - menus: hovering from menu to menu on a menu-bar has 1 frame without any menu, which is a little annoying. ideally either 0 either longer. - - menus: could merge draw call in most cases (how about storing an optional aabb in ImDrawCmd to move the burden of merging in a single spot). - menus: would be nice if the Selectable() supported horizontal alignment (must be given the equivalent of WorkRect.Max.x matching the position of the shortcut column) - tree node: add treenode/treepush int variants? not there because (void*) cast from int warns on some platforms/settings? @@ -273,7 +253,6 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - drag and drop: drag source on a group object (would need e.g. an invisible button covering group in EndGroup) https://twitter.com/paniq/status/1121446364909535233 - drag and drop: have some way to know when a drag begin from BeginDragDropSource() pov. (see 2018/01/11 post in #143) - drag and drop: allow preview tooltip to be submitted from a different place than the drag source. (#1725) - - drag and drop: allow using with other mouse buttons (where activeid won't be set). (#1637) - drag and drop: make it easier and provide a demo to have tooltip both are source and target site, with a more detailed one on target site (tooltip ordering problem) - drag and drop: demo with reordering nodes (in a list, or a tree node). (#143) - drag and drop: test integrating with os drag and drop (make it easy to do a naive WM_DROPFILE integration) @@ -325,10 +304,10 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - font/opt: Considering storing standalone AdvanceX table as 16-bit fixed point integer? - font/opt: Glyph currently 40 bytes (2+9*4). Consider storing UV as 16-bits integer? (->32 bytes). X0/Y0/X1/Y1 as 16 fixed-point integers? Or X0/Y0 as float and X1/Y1 as fixed8_8? + - nav: visual feedback on button press. - nav: some features such as PageUp/Down/Home/End should probably work without ImGuiConfigFlags_NavEnableKeyboard? (where do we draw the line? how about CTRL+Tab) ! nav: never clear NavId on some setup (e.g. gamepad centric) - nav: there's currently no way to completely clear focus with the keyboard. depending on patterns used by the application to dispatch inputs, it may be desirable. - - nav: code to focus child-window on restoring NavId appears to have issue: e.g. when focus change is implicit because of window closure. - nav: Home/End behavior when navigable item is not fully visible at the edge of scrolling? should be backtrack to keep item into view? - nav: NavScrollToBringItemIntoView() with item bigger than view should focus top-right? Repro: using Nav in "About Window" - nav: wrap around logic to allow e.g. grid based layout (pressing NavRight on the right-most element would go to the next row, etc.). see internal's NavMoveRequestTryWrapping(). @@ -349,7 +328,6 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - nav/menus: when using the main menu bar, even though we restore focus after, the underlying window loses its title bar highlight during menu manipulation. could we prevent it? - nav/menus: main menu bar currently cannot restore a nullptr focus. Could save NavWindow at the time of being focused, similarly to what popup do? - nav/menus: Alt,Up could open the first menu (e.g. "File") currently it tends to nav into the window/collapse menu. Do do that we would need custom transition? - - nav/windowing: configure fade-in/fade-out delay on Ctrl+Tab? - nav/windowing: when CTRL+Tab/windowing is active, the HoveredWindow detection doesn't take account of the window display re-ordering. - nav/windowing: Resizing window will currently fail with certain types of resizing constraints/callback applied - focus: preserve ActiveId/focus stack state, e.g. when opening a menu and close it, previously selected InputText() focus gets restored (#622) @@ -368,7 +346,6 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - platform: sdl: no refresh of monitor/display (SDL doesn't seem to have an event for it). - platform: sdl: multi-viewport + minimized window seems to break mouse wheel events (at least under Win32). - - inputs: we need an explicit flag about whether the platform window is focused, to be able to distinguish focused key releases vs alt-tabbing all release behaviors. - inputs: support track pad style scrolling & slider edit. - inputs/io: backspace and arrows in the context of a text input could use system repeat rate. - inputs/io: clarify/standardize/expose repeat rate and repeat delays (#1808) @@ -394,7 +371,6 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i - examples: provide a zero frame-rate/idle example. - examples: dx11/dx12: try to use new swapchain blit models (#2970) - backends: report it better when not able to create texture? - - backends: apple: example_apple should be using modern GL3. - backends: glfw: could go idle when minimized? if (glfwGetWindowAttrib(window, GLFW_ICONIFIED)) { glfwWaitEvents(); continue; } // issue: DeltaTime will be super high on resume, perhaps provide a way to let impl know (#440) - backends: opengl: rename imgui_impl_opengl2 to impl_opengl_legacy and imgui_impl_opengl3 to imgui_impl_opengl? (#1900) - backends: opengl: could use a single vertex buffer and glBufferSubData for uploads? diff --git a/extern/imgui_patched/imconfig.h b/extern/imgui_patched/imconfig.h index 860c0b427..5ed81b14b 100644 --- a/extern/imgui_patched/imconfig.h +++ b/extern/imgui_patched/imconfig.h @@ -1,5 +1,5 @@ //----------------------------------------------------------------------------- -// COMPILE-TIME OPTIONS FOR DEAR IMGUI +// DEAR IMGUI COMPILE-TIME OPTIONS // Runtime options (clipboard callbacks, enabling various features, etc.) can generally be set via the ImGuiIO structure. // You can use ImGui::SetAllocatorFunctions() before calling ImGui::CreateContext() to rewire memory allocation functions. //----------------------------------------------------------------------------- @@ -9,7 +9,7 @@ // You need to make sure that configuration settings are defined consistently _everywhere_ Dear ImGui is used, which include the imgui*.cpp // files but also _any_ of your code that uses Dear ImGui. This is because some compile-time options have an affect on data structures. // Defining those options in imconfig.h will ensure every compilation unit gets to see the same data structure layouts. -// Call IMGUI_CHECKVERSION() from your .cpp files to verify that the data structures your files are using are matching the ones imgui.cpp is using. +// Call IMGUI_CHECKVERSION() from your .cpp file to verify that the data structures your files are using are matching the ones imgui.cpp is using. //----------------------------------------------------------------------------- #pragma once @@ -26,7 +26,7 @@ //#define IMGUI_API __declspec( dllexport ) //#define IMGUI_API __declspec( dllimport ) -//---- Don't define obsolete functions/enums/behaviors. Consider enabling from time to time after updating to avoid using soon-to-be obsolete function/names. +//---- Don't define obsolete functions/enums/behaviors. Consider enabling from time to time after updating to clean your code of obsolete function/names. //#define IMGUI_DISABLE_OBSOLETE_FUNCTIONS //#define IMGUI_DISABLE_OBSOLETE_KEYIO // 1.87: disable legacy io.KeyMap[]+io.KeysDown[] in favor io.AddKeyEvent(). This will be folded into IMGUI_DISABLE_OBSOLETE_FUNCTIONS in a few versions. @@ -40,7 +40,7 @@ //#define IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS // [Win32] Don't implement default clipboard handler. Won't use and link with OpenClipboard/GetClipboardData/CloseClipboard etc. (user32.lib/.a, kernel32.lib/.a) //#define IMGUI_ENABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with Visual Studio] Implement default IME handler (require imm32.lib/.a, auto-link for Visual Studio, -limm32 on command-line for MinGW) //#define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with non-Visual Studio compilers] Don't implement default IME handler (won't require imm32.lib/.a) -//#define IMGUI_DISABLE_WIN32_FUNCTIONS // [Win32] Won't use and link with any Win32 function (clipboard, ime). +//#define IMGUI_DISABLE_WIN32_FUNCTIONS // [Win32] Won't use and link with any Win32 function (clipboard, IME). //#define IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS // [OSX] Implement default OSX clipboard handler (need to link with '-framework ApplicationServices', this is why this is not the default). //#define IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS // Don't implement ImFormatString/ImFormatStringV so you can implement them yourself (e.g. if you don't want to link with vsnprintf) //#define IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS // Don't implement ImFabs/ImSqrt/ImPow/ImFmod/ImCos/ImSin/ImAcos/ImAtan2 so you can implement them yourself. @@ -62,9 +62,10 @@ // By default the embedded implementations are declared static and not available outside of Dear ImGui sources files. //#define IMGUI_STB_TRUETYPE_FILENAME "my_folder/stb_truetype.h" //#define IMGUI_STB_RECT_PACK_FILENAME "my_folder/stb_rect_pack.h" -//#define IMGUI_STB_SPRINTF_FILENAME "my_folder/stb_sprintf.h" // only used if enabled +//#define IMGUI_STB_SPRINTF_FILENAME "my_folder/stb_sprintf.h" // only used if IMGUI_USE_STB_SPRINTF is defined. //#define IMGUI_DISABLE_STB_TRUETYPE_IMPLEMENTATION //#define IMGUI_DISABLE_STB_RECT_PACK_IMPLEMENTATION +//#define IMGUI_DISABLE_STB_SPRINTF_IMPLEMENTATION // only disabled if IMGUI_USE_STB_SPRINTF is defined. //---- Use stb_sprintf.h for a faster implementation of vsnprintf instead of the one from libc (unless IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS is defined) // Compatibility checks of arguments and formats done by clang and GCC will be disabled in order to support the extra formats provided by stb_sprintf.h. @@ -75,6 +76,12 @@ // On Windows you may use vcpkg with 'vcpkg install freetype --triplet=x64-windows' + 'vcpkg integrate install'. //#define IMGUI_ENABLE_FREETYPE +//---- Use FreeType+lunasvg library to render OpenType SVG fonts (SVGinOT) +// Requires lunasvg headers to be available in the include path + program to be linked with the lunasvg library (not provided). +// Only works in combination with IMGUI_ENABLE_FREETYPE. +// (implementation is based on Freetype's rsvg-port.c which is licensed under CeCILL-C Free Software License Agreement) +//#define IMGUI_ENABLE_FREETYPE_LUNASVG + //---- Use stb_truetype to build and rasterize the font atlas (default) // The only purpose of this define is if you want force compilation of the stb_truetype backend ALONG with the FreeType backend. //#define IMGUI_ENABLE_STB_TRUETYPE @@ -107,7 +114,7 @@ //typedef void (*MyImDrawCallback)(const ImDrawList* draw_list, const ImDrawCmd* cmd, void* my_renderer_user_data); //#define ImDrawCallback MyImDrawCallback -//---- Debug Tools: Macro to break in Debugger +//---- Debug Tools: Macro to break in Debugger (we provide a default implementation of this in the codebase) // (use 'Metrics->Tools->Item Picker' to pick widgets with the mouse and break into them for easy debugging.) //#define IM_DEBUG_BREAK IM_ASSERT(0) //#define IM_DEBUG_BREAK __debugbreak() @@ -115,10 +122,10 @@ //---- Debug Tools: Enable slower asserts //#define IMGUI_DEBUG_PARANOID -//---- Tip: You can add extra functions within the ImGui:: namespace, here or in your own headers files. +//---- Tip: You can add extra functions within the ImGui:: namespace from anywhere (e.g. your own sources/header files) /* namespace ImGui { - void MyFunction(const char* name, const MyMatrix44& v); + void MyFunction(const char* name, MyMatrix44* mtx); } */ diff --git a/extern/imgui_patched/imgui.cpp b/extern/imgui_patched/imgui.cpp index ceb71b325..7d5313b8b 100644 --- a/extern/imgui_patched/imgui.cpp +++ b/extern/imgui_patched/imgui.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.89.6 +// dear imgui, v1.89.8 // (main code and documentation) // Help: @@ -9,22 +9,26 @@ // Resources: // - FAQ http://dearimgui.com/faq -// - Homepage & latest https://github.com/ocornut/imgui +// - Homepage https://github.com/ocornut/imgui // - Releases & changelog https://github.com/ocornut/imgui/releases // - Gallery https://github.com/ocornut/imgui/issues/6478 (please post your screenshots/video there!) // - Wiki https://github.com/ocornut/imgui/wiki (lots of good stuff there) +// - Getting Started https://github.com/ocornut/imgui/wiki/Getting-Started // - Glossary https://github.com/ocornut/imgui/wiki/Glossary // - Issues & support https://github.com/ocornut/imgui/issues +// - Tests & Automation https://github.com/ocornut/imgui_test_engine // Getting Started? -// - For first-time users having issues compiling/linking/running or issues loading fonts: +// - Read https://github.com/ocornut/imgui/wiki/Getting-Started +// - For first-time users having issues compiling/linking/running/loading fonts: // please post in https://github.com/ocornut/imgui/discussions if you cannot find a solution in resources above. // Developed by Omar Cornut and every direct or indirect contributors to the GitHub. // See LICENSE.txt for copyright and licensing details (standard MIT License). // This library is free but needs your support to sustain development and maintenance. -// Businesses: you can support continued development via invoiced technical support, maintenance and sponsoring contracts. Please reach out to "contact AT dearimgui.com". -// Individuals: you can support continued development via donations. See docs/README or web page. +// Businesses: you can support continued development via B2B invoiced technical support, maintenance and sponsoring contracts. +// PLEASE reach out at contact AT dearimgui DOT com. See https://github.com/ocornut/imgui/wiki/Sponsors +// Businesses: you can also purchase licenses for the Dear ImGui Automation/Test Engine. // It is recommended that you don't modify imgui.cpp! It will become difficult for you to update the library. // Note that 'ImGui::' being a namespace, you can add functions into the namespace from your own source files, without @@ -108,9 +112,10 @@ CODE - Portable, minimize dependencies, run on target (consoles, phones, etc.). - Efficient runtime and memory consumption. - Designed for developers and content-creators, not the typical end-user! Some of the current weaknesses includes: + Designed primarily for developers and content-creators, not the typical end-user! + Some of the current weaknesses (which we aim to address in the future) includes: - - Doesn't look fancy, doesn't animate. + - Doesn't look fancy. - Limited layout features, intricate layouts are typically crafted in code. @@ -189,9 +194,11 @@ CODE READ FIRST ---------- - Remember to check the wonderful Wiki (https://github.com/ocornut/imgui/wiki) - - Your code creates the UI, if your code doesn't run the UI is gone! The UI can be highly dynamic, there are no construction or - destruction steps, less superfluous data retention on your side, less state duplication, less state synchronization, fewer bugs. + - Your code creates the UI every frame of your application loop, if your code doesn't run the UI is gone! + The UI can be highly dynamic, there are no construction or destruction steps, less superfluous + data retention on your side, less state duplication, less state synchronization, fewer bugs. - Call and read ImGui::ShowDemoWindow() for demo code demonstrating most features. + Or browse https://pthom.github.io/imgui_manual_online/manual/imgui_manual.html for interactive web version. - The library is designed to be built from sources. Avoid pre-compiled binaries and packaged versions. See imconfig.h to configure your build. - Dear ImGui is an implementation of the IMGUI paradigm (immediate-mode graphical user interface, a term coined by Casey Muratori). You can learn about IMGUI principles at http://www.johno.se/book/imgui.html, http://mollyrocket.com/861 & more links in Wiki. @@ -199,18 +206,38 @@ CODE For every application frame, your UI code will be called only once. This is in contrast to e.g. Unity's implementation of an IMGUI, where the UI code is called multiple times ("multiple passes") from a single entry point. There are pros and cons to both approaches. - Our origin is on the top-left. In axis aligned bounding boxes, Min = top-left, Max = bottom-right. - - This codebase is also optimized to yield decent performances with typical "Debug" builds settings. - Please make sure you have asserts enabled (IM_ASSERT redirects to assert() by default, but can be redirected). If you get an assert, read the messages and comments around the assert. - - C++: this is a very C-ish codebase: we don't rely on C++11, we don't include any C++ headers, and ImGui:: is a namespace. - - C++: ImVec2/ImVec4 do not expose math operators by default, because it is expected that you use your own math types. - See FAQ "How can I use my own math types instead of ImVec2/ImVec4?" for details about setting up imconfig.h for that. - However, imgui_internal.h can optionally export math operators for ImVec2/ImVec4, which we use in this codebase. - - C++: pay attention that ImVector<> manipulates plain-old-data and does not honor construction/destruction (avoid using it in your code!). + - This codebase aims to be highly optimized: + - A typical idle frame should never call malloc/free. + - We rely on a maximum of constant-time or O(N) algorithms. Limiting searches/scans as much as possible. + - We put particular energy in making sure performances are decent with typical "Debug" build settings as well. + Which mean we tend to avoid over-relying on "zero-cost abstraction" as they aren't zero-cost at all. + - This codebase aims to be both highly opinionated and highly flexible: + - This code works because of the things it choose to solve or not solve. + - C++: this is a pragmatic C-ish codebase: we don't use fancy C++ features, we don't include C++ headers, + and ImGui:: is a namespace. We rarely use member functions (and when we did, I am mostly regretting it now). + This is to increase compatibility, increase maintainability and facilitate use from other languages. + - C++: ImVec2/ImVec4 do not expose math operators by default, because it is expected that you use your own math types. + See FAQ "How can I use my own math types instead of ImVec2/ImVec4?" for details about setting up imconfig.h for that. + We can can optionally export math operators for ImVec2/ImVec4 using IMGUI_DEFINE_MATH_OPERATORS, which we use internally. + - C++: pay attention that ImVector<> manipulates plain-old-data and does not honor construction/destruction + (so don't use ImVector in your code or at our own risk!). + - Building: We don't use nor mandate a build system for the main library. + This is in an effort to ensure that it works in the real world aka with any esoteric build setup. + This is also because providing a build system for the main library would be of little-value. + The build problems are almost never coming from the main library but from specific backends. HOW TO UPDATE TO A NEWER VERSION OF DEAR IMGUI ---------------------------------------------- + - Update submodule or copy/overwrite every file. + - About imconfig.h: + - You may modify your copy of imconfig.h, in this case don't overwrite it. + - or you may locally branch to modify imconfig.h and merge/rebase latest. + - or you may '#define IMGUI_USER_CONFIG "my_config_file.h"' globally from your build system to + specify a custom path for your imconfig.h file and instead not have to modify the default one. + - Overwrite all the sources files except for imconfig.h (if you have modified your copy of imconfig.h) - Or maintain your own branch where you have imconfig.h modified as a top-most commit which you can regularly rebase over "master". - You can also use '#define IMGUI_USER_CONFIG "my_config_file.h" to redirect configuration to your own file. @@ -219,11 +246,12 @@ CODE from the public API. If you have a problem with a missing function/symbols, search for its name in the code, there will likely be a comment about it. Please report any issue to the GitHub page! - To find out usage of old API, you can add '#define IMGUI_DISABLE_OBSOLETE_FUNCTIONS' in your configuration file. - - Try to keep your copy of Dear ImGui reasonably up to date. + - Try to keep your copy of Dear ImGui reasonably up to date! GETTING STARTED WITH INTEGRATING DEAR IMGUI IN YOUR CODE/ENGINE --------------------------------------------------------------- + - See https://github.com/ocornut/imgui/wiki/Getting-Started. - Run and study the examples and demo in imgui_demo.cpp to get acquainted with the library. - In the majority of cases you should be able to use unmodified backends files available in the backends/ folder. - Add the Dear ImGui source files + selected backend source files to your projects or using your preferred build system. @@ -405,6 +433,12 @@ CODE - likewise io.MousePos and GetMousePos() will use OS coordinates. If you query mouse positions to interact with non-imgui coordinates you will need to offset them, e.g. subtract GetWindowViewport()->Pos. + - 2023/07/12 (1.89.8) - ImDrawData: CmdLists now owned, changed from ImDrawList** to ImVector. Majority of users shouldn't be affected, but you cannot compare to NULL nor reassign manually anymore. Instead use AddDrawList(). (#6406, #4879, #1878) + - 2023/06/28 (1.89.7) - overlapping items: obsoleted 'SetItemAllowOverlap()' (called after item) in favor of calling 'SetNextItemAllowOverlap()' (called before item). 'SetItemAllowOverlap()' didn't and couldn't work reliably since 1.89 (2022-11-15). + - 2023/06/28 (1.89.7) - overlapping items: renamed 'ImGuiTreeNodeFlags_AllowItemOverlap' to 'ImGuiTreeNodeFlags_AllowOverlap', 'ImGuiSelectableFlags_AllowItemOverlap' to 'ImGuiSelectableFlags_AllowOverlap'. Kept redirecting enums (will obsolete). + - 2023/06/28 (1.89.7) - overlapping items: IsItemHovered() now by default return false when querying an item using AllowOverlap mode which is being overlapped. Use ImGuiHoveredFlags_AllowWhenOverlappedByItem to revert to old behavior. + - 2023/06/28 (1.89.7) - overlapping items: Selectable and TreeNode don't allow overlap when active so overlapping widgets won't appear as hovered. While this fixes a common small visual issue, it also means that calling IsItemHovered() after a non-reactive elements - e.g. Text() - overlapping an active one may fail if you don't use IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem). (#6610) + - 2023/06/20 (1.89.7) - moved io.HoverDelayShort/io.HoverDelayNormal to style.HoverDelayShort/style.HoverDelayNormal. As the fields were added in 1.89 and expected to be left unchanged by most users, or only tweaked once during app initialization, we are exceptionally accepting the breakage. - 2023/05/30 (1.89.6) - backends: renamed "imgui_impl_sdlrenderer.cpp" to "imgui_impl_sdlrenderer2.cpp" and "imgui_impl_sdlrenderer.h" to "imgui_impl_sdlrenderer2.h". This is in prevision for the future release of SDL3. - 2023/05/22 (1.89.6) - listbox: commented out obsolete/redirecting functions that were marked obsolete more than two years ago: - ListBoxHeader() -> use BeginListBox() (note how two variants of ListBoxHeader() existed. Check commented versions in imgui.h for reference) @@ -807,11 +841,12 @@ CODE Q: Where is the documentation? A: This library is poorly documented at the moment and expects the user to be acquainted with C/C++. - - Run the examples/ and explore them. + - Run the examples/ applications and explore them. + - Read Getting Started (https://github.com/ocornut/imgui/wiki/Getting-Started) guide. - See demo code in imgui_demo.cpp and particularly the ImGui::ShowDemoWindow() function. - The demo covers most features of Dear ImGui, so you can read the code and see its output. - See documentation and comments at the top of imgui.cpp + effectively imgui.h. - - Dozens of standalone example applications using e.g. OpenGL/DirectX are provided in the + - 20+ standalone example applications using e.g. OpenGL/DirectX are provided in the examples/ folder to explain how to integrate Dear ImGui with your own engine/application. - The Wiki (https://github.com/ocornut/imgui/wiki) has many resources and links. - The Glossary (https://github.com/ocornut/imgui/wiki/Glossary) page also may be useful. @@ -827,14 +862,14 @@ CODE ================ Q: How to get started? - A: Read 'PROGRAMMER GUIDE' above. Read examples/README.txt. + A: Read https://github.com/ocornut/imgui/wiki/Getting-Started. Read 'PROGRAMMER GUIDE' above. Read examples/README.txt. Q: How can I tell whether to dispatch mouse/keyboard to Dear ImGui or my application? A: You should read the 'io.WantCaptureMouse', 'io.WantCaptureKeyboard' and 'io.WantTextInput' flags! >> See https://www.dearimgui.com/faq for a fully detailed answer. You really want to read this. - Q. How can I enable keyboard controls? - Q: How can I use this without a mouse, without a keyboard or without a screen? (gamepad, input share, remote display) + Q. How can I enable keyboard or gamepad controls? + Q: How can I use this on a machine without mouse, keyboard or screen? (input share, remote display) Q: I integrated Dear ImGui in my engine and little squares are showing instead of text... Q: I integrated Dear ImGui in my engine and some elements are clipping or disappearing when I move windows around... Q: I integrated Dear ImGui in my engine and some elements are displaying outside their expected windows boundaries... @@ -849,7 +884,7 @@ CODE - How can I have multiple widgets with the same label? - How can I have multiple windows with the same label? Q: How can I display an image? What is ImTextureID, how does it work? - Q: How can I use my own math types instead of ImVec2/ImVec4? + Q: How can I use my own math types instead of ImVec2? Q: How can I interact with standard C++ types (such as std::string and std::vector)? Q: How can I display custom shapes? (using low-level ImDrawList API) >> See https://www.dearimgui.com/faq @@ -879,10 +914,10 @@ CODE Q: How can I help? A: - Businesses: please reach out to "contact AT dearimgui.com" if you work in a place using Dear ImGui! We can discuss ways for your company to fund development via invoiced technical support, maintenance or sponsoring contacts. - This is among the most useful thing you can do for Dear ImGui. With increased funding, we can hire more people working on this project. - - Individuals: you can support continued development via PayPal donations. See README. - - If you are experienced with Dear ImGui and C++, look at the GitHub issues, look at the Wiki, read docs/TODO.txt - and see how you want to help and can help! + This is among the most useful thing you can do for Dear ImGui. With increased funding, we sustain and grow work on this project. + Also see https://github.com/ocornut/imgui/wiki/Sponsors + - Businesses: you can also purchase licenses for the Dear ImGui Automation/Test Engine. + - If you are experienced with Dear ImGui and C++, look at the GitHub issues, look at the Wiki, and see how you want to help and can help! - Disclose your usage of Dear ImGui via a dev blog post, a tweet, a screenshot, a mention somewhere etc. You may post screenshot or links in the gallery threads. Visuals are ideal as they inspire other programmers. But even without visuals, disclosing your use of dear imgui helps the library grow credibility, and help other teams and programmers with taking decisions. @@ -908,11 +943,7 @@ CODE // System includes #include // vsnprintf, sscanf, printf -#if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier -#include // intptr_t -#else #include // intptr_t -#endif #include "../../src/fileutils.h" @@ -993,7 +1024,6 @@ CODE // Debug options #define IMGUI_DEBUG_NAV_SCORING 0 // Display navigation scoring preview when hovering items. Display last moving direction matches when holding CTRL #define IMGUI_DEBUG_NAV_RECTS 0 // Display the reference navigation rectangle for each window -#define IMGUI_DEBUG_INI_SETTINGS 0 // Save additional comments in .ini file (particularly helps for Docking, but makes saving slower) // When using CTRL+TAB (or Gamepad Square+L/R) we delay the visual a little in order to reduce visual noise doing a fast switch. static const float NAV_WINDOWING_HIGHLIGHT_DELAY = 0.20f; // Time before the highlight and screen dimming starts fading in @@ -1004,9 +1034,11 @@ static const float WINDOWS_HOVER_PADDING = 4.0f; // Exten static const float WINDOWS_RESIZE_FROM_EDGES_FEEDBACK_TIMER = 0.04f; // Reduce visual noise by only highlighting the border after a certain time. static const float WINDOWS_MOUSE_WHEEL_SCROLL_LOCK_TIMER = 0.70f; // Lock scrolled window (so it doesn't pick child windows that are scrolling through) for a certain time, unless mouse moved. +// Tooltip offset +static const ImVec2 TOOLTIP_DEFAULT_OFFSET = ImVec2(16, 10); // Multiplied by g.Style.MouseCursorScale + // Docking static const float DOCKING_TRANSPARENT_PAYLOAD_ALPHA = 0.50f; // For use with io.ConfigDockingTransparentPayload. Apply to Viewport _or_ WindowBg in host viewport. -static const float DOCKING_SPLITTER_SIZE = 2.0f; //------------------------------------------------------------------------- // [SECTION] FORWARD DECLARATIONS @@ -1017,7 +1049,6 @@ static void FindHoveredWindow(); static ImGuiWindow* CreateNewWindow(const char* name, ImGuiWindowFlags flags); static ImVec2 CalcNextScrollFromScrollTargetAndClamp(ImGuiWindow* window); -static void AddDrawListToDrawData(ImVector* out_list, ImDrawList* draw_list); static void AddWindowToSortBuffer(ImVector* out_sorted_windows, ImGuiWindow* window); // Settings @@ -1180,6 +1211,7 @@ ImGuiStyle::ImGuiStyle() SeparatorTextPadding = ImVec2(20.0f,3.f);// Horizontal offset of text from each edge of the separator + spacing on other axis. Generally small values. .y is recommended to be == FramePadding.y. DisplayWindowPadding = ImVec2(19,19); // Window position are clamped to be visible within the display area or monitors by at least this amount. Only applies to regular windows. DisplaySafeAreaPadding = ImVec2(3,3); // If you cannot see the edge of your screen (e.g. on a TV) increase the safe area padding. Covers popups/tooltips as well regular windows. + DockingSeparatorSize = 2.0f; // Thickness of resizing border between docked windows MouseCursorScale = 1.0f; // Scale software rendered mouse cursor (when io.MouseDrawCursor is enabled). May be removed later. AntiAliasedLines = true; // Enable anti-aliased lines/borders. Disable if you are really tight on CPU/GPU. AntiAliasedLinesUseTex = true; // Enable anti-aliased lines/borders using textures where possible. Require backend to render with bilinear filtering (NOT point/nearest filtering). @@ -1187,6 +1219,13 @@ ImGuiStyle::ImGuiStyle() CurveTessellationTol = 1.25f; // Tessellation tolerance when using PathBezierCurveTo() without a specific number of segments. Decrease for highly tessellated curves (higher quality, more polygons), increase to reduce quality. CircleTessellationMaxError = 0.30f; // Maximum error (in pixels) allowed when using AddCircle()/AddCircleFilled() or drawing rounded corner rectangles with no explicit segment count specified. Decrease for higher quality but more geometry. + // Behaviors + HoverStationaryDelay = 0.15f; // Delay for IsItemHovered(ImGuiHoveredFlags_Stationary). Time required to consider mouse stationary. + HoverDelayShort = 0.15f; // Delay for IsItemHovered(ImGuiHoveredFlags_DelayShort). Usually used along with HoverStationaryDelay. + HoverDelayNormal = 0.40f; // Delay for IsItemHovered(ImGuiHoveredFlags_DelayNormal). " + HoverFlagsForTooltipMouse = ImGuiHoveredFlags_Stationary | ImGuiHoveredFlags_DelayShort; // Default flags when using IsItemHovered(ImGuiHoveredFlags_ForTooltip) or BeginItemTooltip()/SetItemTooltip() while using mouse. + HoverFlagsForTooltipNav = ImGuiHoveredFlags_NoSharedDelay | ImGuiHoveredFlags_DelayNormal; // Default flags when using IsItemHovered(ImGuiHoveredFlags_ForTooltip) or BeginItemTooltip()/SetItemTooltip() while using keyboard/gamepad. + // Default theme ImGui::StyleColorsDark(this); } @@ -1216,6 +1255,7 @@ void ImGuiStyle::ScaleAllSizes(float scale_factor) TabRounding = ImFloor(TabRounding * scale_factor); TabMinWidthForCloseButton = (TabMinWidthForCloseButton != FLT_MAX) ? ImFloor(TabMinWidthForCloseButton * scale_factor) : FLT_MAX; SeparatorTextPadding = ImFloor(SeparatorTextPadding * scale_factor); + DockingSeparatorSize = ImFloor(DockingSeparatorSize * scale_factor); DisplayWindowPadding = ImFloor(DisplayWindowPadding * scale_factor); DisplaySafeAreaPadding = ImFloor(DisplaySafeAreaPadding * scale_factor); MouseCursorScale = ImFloor(MouseCursorScale * scale_factor); @@ -1235,16 +1275,10 @@ ImGuiIO::ImGuiIO() IniSavingRate = 5.0f; IniFilename = "imgui.ini"; // Important: "imgui.ini" is relative to current working dir, most apps will want to lock this to an absolute path (e.g. same path as executables). LogFilename = "imgui_log.txt"; - MouseDoubleClickTime = 0.30f; - MouseDoubleClickMaxDist = 6.0f; #ifndef IMGUI_DISABLE_OBSOLETE_KEYIO for (int i = 0; i < ImGuiKey_COUNT; i++) KeyMap[i] = -1; #endif - KeyRepeatDelay = 0.275f; - KeyRepeatRate = 0.050f; - HoverDelayNormal = 0.30f; - HoverDelayShort = 0.10f; UserData = NULL; Fonts = NULL; @@ -1285,6 +1319,13 @@ ImGuiIO::ImGuiIO() ConfigDebugBeginReturnValueOnce = false; ConfigDebugBeginReturnValueLoop = false; + // Inputs Behaviors + MouseDoubleClickTime = 0.30f; + MouseDoubleClickMaxDist = 6.0f; + MouseDragThreshold = 6.0f; + KeyRepeatDelay = 0.275f; + KeyRepeatRate = 0.050f; + // Platform Functions // Note: Initialize() will setup default clipboard/ime handlers. BackendPlatformName = BackendRendererName = NULL; @@ -1294,7 +1335,6 @@ ImGuiIO::ImGuiIO() MousePos = ImVec2(-FLT_MAX, -FLT_MAX); MousePosPrev = ImVec2(-FLT_MAX, -FLT_MAX); MouseSource = ImGuiMouseSource_Mouse; - MouseDragThreshold = 6.0f; for (int i = 0; i < IM_ARRAYSIZE(MouseDownDuration); i++) MouseDownDuration[i] = MouseDownDurationPrev[i] = -1.0f; for (int i = 0; i < IM_ARRAYSIZE(KeysData); i++) { KeysData[i].DownDuration = KeysData[i].DownDurationPrev = -1.0f; } AppAcceptingEvents = true; @@ -1369,13 +1409,15 @@ void ImGuiIO::AddInputCharactersUTF8(const char* utf8_chars) } } -// FIXME: Perhaps we could clear queued events as well? -void ImGuiIO::ClearInputCharacters() +// Clear all incoming events. +void ImGuiIO::ClearEventsQueue() { - InputQueueCharacters.resize(0); + IM_ASSERT(Ctx != NULL); + ImGuiContext& g = *Ctx; + g.InputEventsQueue.clear(); } -// FIXME: Perhaps we could clear queued events as well? +// Clear current keyboard/mouse/gamepad state + current frame text input buffer. Equivalent to releasing all keys/buttons. void ImGuiIO::ClearInputKeys() { #ifndef IMGUI_DISABLE_OBSOLETE_KEYIO @@ -1396,8 +1438,18 @@ void ImGuiIO::ClearInputKeys() MouseDownDuration[n] = MouseDownDurationPrev[n] = -1.0f; } MouseWheel = MouseWheelH = 0.0f; + InputQueueCharacters.resize(0); // Behavior of old ClearInputCharacters(). } +// Removed this as it is ambiguous/misleading and generally incorrect to use with the existence of a higher-level input queue. +// Current frame character buffer is now also cleared by ClearInputKeys(). +#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS +void ImGuiIO::ClearInputCharacters() +{ + InputQueueCharacters.resize(0); +} +#endif + static ImGuiInputEvent* FindLatestInputEvent(ImGuiContext* ctx, ImGuiInputEventType type, int arg = -1) { ImGuiContext& g = *ctx; @@ -1871,13 +1923,15 @@ const char* ImStrSkipBlank(const char* str) // and setup the wrapper yourself. (FIXME-OPT: Some of our high-level operations such as ImGuiTextBuffer::appendfv() are // designed using two-passes worst case, which probably could be improved using the stbsp_vsprintfcb() function.) #ifdef IMGUI_USE_STB_SPRINTF +#ifndef IMGUI_DISABLE_STB_SPRINTF_IMPLEMENTATION #define STB_SPRINTF_IMPLEMENTATION +#endif #ifdef IMGUI_STB_SPRINTF_FILENAME #include IMGUI_STB_SPRINTF_FILENAME #else #include "stb_sprintf.h" #endif -#endif +#endif // #ifdef IMGUI_USE_STB_SPRINTF #if defined(_MSC_VER) && !defined(vsnprintf) #define vsnprintf _vsnprintf @@ -2814,9 +2868,6 @@ static void ImGuiListClipper_SeekCursorForItem(ImGuiListClipper* clipper, int it ImGuiListClipper::ImGuiListClipper() { memset(this, 0, sizeof(*this)); - Ctx = ImGui::GetCurrentContext(); - IM_ASSERT(Ctx != NULL); - ItemsCount = -1; } ImGuiListClipper::~ImGuiListClipper() @@ -2826,6 +2877,9 @@ ImGuiListClipper::~ImGuiListClipper() void ImGuiListClipper::Begin(int items_count, float items_height) { + if (Ctx == NULL) + Ctx = ImGui::GetCurrentContext(); + ImGuiContext& g = *Ctx; ImGuiWindow* window = g.CurrentWindow; IMGUI_DEBUG_LOG_CLIPPER("Clipper: Begin(%d,%.2f) in '%s'\n", items_count, items_height, window->Name); @@ -2851,10 +2905,10 @@ void ImGuiListClipper::Begin(int items_count, float items_height) void ImGuiListClipper::End() { - ImGuiContext& g = *Ctx; if (ImGuiListClipperData* data = (ImGuiListClipperData*)TempData) { // In theory here we should assert that we are already at the right position, but it seems saner to just seek at the end and not assert/crash the user. + ImGuiContext& g = *Ctx; IMGUI_DEBUG_LOG_CLIPPER("Clipper: End() in '%s'\n", g.CurrentWindow->Name); if (ItemsCount >= 0 && ItemsCount < INT_MAX && DisplayStart >= 0) ImGuiListClipper_SeekCursorForItem(this, ItemsCount); @@ -2955,7 +3009,7 @@ static bool ImGuiListClipper_StepInternal(ImGuiListClipper* clipper) const bool is_nav_request = (g.NavMoveScoringItems && g.NavWindow && g.NavWindow->RootWindowForNav == window->RootWindowForNav); if (is_nav_request) data->Ranges.push_back(ImGuiListClipperRange::FromPositions(g.NavScoringNoClipRect.Min.y, g.NavScoringNoClipRect.Max.y, 0, 0)); - if (is_nav_request && (g.NavMoveFlags & ImGuiNavMoveFlags_Tabbing) && g.NavTabbingDir == -1) + if (is_nav_request && (g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) && g.NavTabbingDir == -1) data->Ranges.push_back(ImGuiListClipperRange::FromIndices(clipper->ItemsCount - 1, clipper->ItemsCount)); // Add focused/active item @@ -3143,6 +3197,7 @@ static const ImGuiDataVarInfo GStyleVarInfo[] = { ImGuiDataType_Float, 1, (ImU32)IM_OFFSETOF(ImGuiStyle, SeparatorTextBorderSize) },// ImGuiStyleVar_SeparatorTextBorderSize { ImGuiDataType_Float, 2, (ImU32)IM_OFFSETOF(ImGuiStyle, SeparatorTextAlign) }, // ImGuiStyleVar_SeparatorTextAlign { ImGuiDataType_Float, 2, (ImU32)IM_OFFSETOF(ImGuiStyle, SeparatorTextPadding) }, // ImGuiStyleVar_SeparatorTextPadding + { ImGuiDataType_Float, 1, (ImU32)IM_OFFSETOF(ImGuiStyle, DockingSeparatorSize) }, // ImGuiStyleVar_DockingSeparatorSize }; const ImGuiDataVarInfo* ImGui::GetStyleVarInfo(ImGuiStyleVar idx) @@ -3588,6 +3643,7 @@ void ImGui::DestroyContext(ImGuiContext* ctx) // IMPORTANT: ###xxx suffixes must be same in ALL languages static const ImGuiLocEntry GLocalizationEntriesEnUS[] = { + { ImGuiLocKey_VersionStr, "Dear ImGui " IMGUI_VERSION " (" IM_STRINGIFY(IMGUI_VERSION_NUM) ")" }, { ImGuiLocKey_TableSizeOne, "Size column to fit###SizeOne" }, { ImGuiLocKey_TableSizeAllFit, "Size all columns to fit###SizeAll" }, { ImGuiLocKey_TableSizeAllDefault, "Size all columns to default###SizeAll" }, @@ -3634,6 +3690,7 @@ void ImGui::Initialize() viewport->Flags = ImGuiViewportFlags_OwnedByApp; g.Viewports.push_back(viewport); g.TempBuffer.resize(1024 * 3 + 1, 0); + g.ViewportCreatedCount++; g.PlatformIO.Viewports.push_back(g.Viewports[0]); #ifdef IMGUI_HAS_DOCK @@ -4033,6 +4090,16 @@ bool ImGui::IsWindowContentHoverable(ImGuiWindow* window, ImGuiHoveredFlags flag return true; } +static inline float CalcDelayFromHoveredFlags(ImGuiHoveredFlags flags) +{ + ImGuiContext& g = *GImGui; + if (flags & ImGuiHoveredFlags_DelayShort) + return g.Style.HoverDelayShort; + if (flags & ImGuiHoveredFlags_DelayNormal) + return g.Style.HoverDelayNormal; + return 0.0f; +} + // This is roughly matching the behavior of internal-facing ItemHoverable() // - we allow hovering to be true when ActiveId==window->MoveID, so that clicking on non-interactive items such as a Text() item still returns true with IsItemHovered() // - this should work even for non-interactive items that have no ID, so we cannot use LastItemId @@ -4040,6 +4107,8 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) { ImGuiContext& g = *GImGui; ImGuiWindow* window = g.CurrentWindow; + IM_ASSERT((flags & ~ImGuiHoveredFlags_AllowedMaskForIsItemHovered) == 0 && "Invalid flags for IsItemHovered()!"); + if (g.NavDisableMouseHover && !g.NavDisableHighlight && !(flags & ImGuiHoveredFlags_NoNavOverride)) { if ((g.LastItemData.InFlags & ImGuiItemFlags_Disabled) && !(flags & ImGuiHoveredFlags_AllowWhenDisabled)) @@ -4048,6 +4117,9 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) return false; if (window->InertialScroll) return false; + + if (flags & ImGuiHoveredFlags_ForTooltip) + flags |= g.Style.HoverFlagsForTooltipNav; } else { @@ -4055,6 +4127,10 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) ImGuiItemStatusFlags status_flags = g.LastItemData.StatusFlags; if (!(status_flags & ImGuiItemStatusFlags_HoveredRect)) return false; + + if (flags & ImGuiHoveredFlags_ForTooltip) + flags |= g.Style.HoverFlagsForTooltipMouse; + IM_ASSERT((flags & (ImGuiHoveredFlags_AnyWindow | ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_ChildWindows | ImGuiHoveredFlags_NoPopupHierarchy | ImGuiHoveredFlags_DockHierarchy)) == 0); // Flags not supported by this function // Done with rectangle culling so we can perform heavier checks now @@ -4064,12 +4140,13 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) // to use IsItemHovered() after EndChild() itself. Until a solution is found I believe reverting to the test from 2017/09/27 is safe since this was // the test that has been running for a long while. if (g.HoveredWindow != window && (status_flags & ImGuiItemStatusFlags_HoveredWindow) == 0) - if ((flags & ImGuiHoveredFlags_AllowWhenOverlapped) == 0) + if ((flags & ImGuiHoveredFlags_AllowWhenOverlappedByWindow) == 0) return false; // Test if another item is active (e.g. being dragged) + const ImGuiID id = g.LastItemData.ID; if ((flags & ImGuiHoveredFlags_AllowWhenBlockedByActiveItem) == 0) - if (g.ActiveId != 0 && g.ActiveId != g.LastItemData.ID && !g.ActiveIdAllowOverlap) + if (g.ActiveId != 0 && g.ActiveId != id && !g.ActiveIdAllowOverlap) if (g.ActiveId != window->MoveId && g.ActiveId != window->TabId) return false; @@ -4089,48 +4166,60 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) // Special handling for calling after Begin() which represent the title bar or tab. // When the window is skipped/collapsed (SkipItems==true) that last item (always ->MoveId submitted by Begin) // will never be overwritten so we need to detect the case. - if (g.LastItemData.ID == window->MoveId && window->WriteAccessed) + if (id == window->MoveId && window->WriteAccessed) return false; + + // Test if using AllowOverlap and overlapped + if ((g.LastItemData.InFlags & ImGuiItemflags_AllowOverlap) && id != 0) + if ((flags & ImGuiHoveredFlags_AllowWhenOverlappedByItem) == 0) + if (g.HoveredIdPreviousFrame != g.LastItemData.ID) + return false; } // Handle hover delay // (some ideas: https://www.nngroup.com/articles/timing-exposing-content) - float delay; - if (flags & ImGuiHoveredFlags_DelayNormal) - delay = g.IO.HoverDelayNormal; - else if (flags & ImGuiHoveredFlags_DelayShort) - delay = g.IO.HoverDelayShort; - else - delay = 0.0f; - if (delay > 0.0f) + const float delay = CalcDelayFromHoveredFlags(flags); + if (delay > 0.0f || (flags & ImGuiHoveredFlags_Stationary)) { ImGuiID hover_delay_id = (g.LastItemData.ID != 0) ? g.LastItemData.ID : window->GetIDFromRectangle(g.LastItemData.Rect); - if ((flags & ImGuiHoveredFlags_NoSharedDelay) && (g.HoverDelayIdPreviousFrame != hover_delay_id)) - g.HoverDelayTimer = 0.0f; - g.HoverDelayId = hover_delay_id; - return g.HoverDelayTimer >= delay; + if ((flags & ImGuiHoveredFlags_NoSharedDelay) && (g.HoverItemDelayIdPreviousFrame != hover_delay_id)) + g.HoverItemDelayTimer = 0.0f; + g.HoverItemDelayId = hover_delay_id; + + // When changing hovered item we requires a bit of stationary delay before activating hover timer, + // but once unlocked on a given item we also moving. + //if (g.HoverDelayTimer >= delay && (g.HoverDelayTimer - g.IO.DeltaTime < delay || g.MouseStationaryTimer - g.IO.DeltaTime < g.Style.HoverStationaryDelay)) { IMGUI_DEBUG_LOG("HoverDelayTimer = %f/%f, MouseStationaryTimer = %f\n", g.HoverDelayTimer, delay, g.MouseStationaryTimer); } + if ((flags & ImGuiHoveredFlags_Stationary) != 0 && g.HoverItemUnlockedStationaryId != hover_delay_id) + return false; + + if (g.HoverItemDelayTimer < delay) + return false; } return true; } // Internal facing ItemHoverable() used when submitting widgets. Differs slightly from IsItemHovered(). -bool ImGui::ItemHoverable(const ImRect& bb, ImGuiID id) +// (this does not rely on LastItemData it can be called from a ButtonBehavior() call not following an ItemAdd() call) +// FIXME-LEGACY: the 'ImGuiItemFlags item_flags' parameter was added on 2023-06-28. +// If you used this in your legacy/custom widgets code: +// - Commonly: if your ItemHoverable() call comes after an ItemAdd() call: pass 'item_flags = g.LastItemData.InFlags'. +// - Rare: otherwise you may pass 'item_flags = 0' (ImGuiItemFlags_None) unless you want to benefit from special behavior handled by ItemHoverable. +bool ImGui::ItemHoverable(const ImRect& bb, ImGuiID id, ImGuiItemFlags item_flags) { ImGuiContext& g = *GImGui; - if (g.HoveredId != 0 && g.HoveredId != id && !g.HoveredIdAllowOverlap) - return false; - ImGuiWindow* window = g.CurrentWindow; if (g.HoveredWindow != window) return false; - if (g.ActiveId != 0 && g.ActiveId != id && !g.ActiveIdAllowOverlap) - return false; if (!IsMouseHoveringRect(bb.Min, bb.Max)) return false; + if (g.HoveredId != 0 && g.HoveredId != id && !g.HoveredIdAllowOverlap) + return false; + if (g.ActiveId != 0 && g.ActiveId != id && !g.ActiveIdAllowOverlap) + return false; + // Done with rectangle culling so we can perform heavier checks now. - ImGuiItemFlags item_flags = (g.LastItemData.ID == id ? g.LastItemData.InFlags : g.CurrentItemFlags); if (!(item_flags & ImGuiItemFlags_NoWindowHoverableCheck) && !IsWindowContentHoverable(window, ImGuiHoveredFlags_None)) { g.HoveredIdDisabled = true; @@ -4140,14 +4229,29 @@ bool ImGui::ItemHoverable(const ImRect& bb, ImGuiID id) // We exceptionally allow this function to be called with id==0 to allow using it for easy high-level // hover test in widgets code. We could also decide to split this function is two. if (id != 0) + { + // Drag source doesn't report as hovered + if (g.DragDropActive && g.DragDropPayload.SourceId == id && !(g.DragDropSourceFlags & ImGuiDragDropFlags_SourceNoDisableHover)) + return false; + SetHoveredID(id); + // AllowOverlap mode (rarely used) requires previous frame HoveredId to be null or to match. + // This allows using patterns where a later submitted widget overlaps a previous one. Generally perceived as a front-to-back hit-test. + if (item_flags & ImGuiItemflags_AllowOverlap) + { + g.HoveredIdAllowOverlap = true; + if (g.HoveredIdPreviousFrame != id) + return false; + } + } + // When disabled we'll return false but still set HoveredId // Same thing if swiping if (item_flags & ImGuiItemFlags_Disabled || window->InertialScroll) { // Release active id if turning disabled - if (g.ActiveId == id) + if (g.ActiveId == id && id != 0) ClearActiveID(); g.HoveredIdDisabled = true; return false; @@ -4402,7 +4506,7 @@ void ImGui::UpdateMouseMovingWindowNewFrame() ImGuiWindow* moving_window = g.MovingWindow->RootWindowDockTree; // When a window stop being submitted while being dragged, it may will its viewport until next Begin() - const bool window_disappared = ((!moving_window->WasActive && !moving_window->Active) || moving_window->Viewport == NULL); + const bool window_disappared = (!moving_window->WasActive && !moving_window->Active); if (g.IO.MouseDown[0] && IsMousePosValid(&g.IO.MousePos) && !window_disappared) { ImVec2 pos = g.IO.MousePos - g.ActiveIdClickOffset; @@ -4410,7 +4514,7 @@ void ImGui::UpdateMouseMovingWindowNewFrame() { SetWindowPos(moving_window, pos, ImGuiCond_Always); g.InertialScrollInhibited=true; - if (moving_window->ViewportOwned) // Synchronize viewport immediately because some overlays may relies on clipping rectangle before we Begin() into the window. + if (moving_window->Viewport && moving_window->ViewportOwned) // Synchronize viewport immediately because some overlays may relies on clipping rectangle before we Begin() into the window. { moving_window->Viewport->Pos = pos; moving_window->Viewport->UpdateWorkRect(); @@ -4428,11 +4532,12 @@ void ImGui::UpdateMouseMovingWindowNewFrame() UpdateTryMergeWindowIntoHostViewport(moving_window, g.MouseViewport); // Restore the mouse viewport so that we don't hover the viewport _under_ the moved window during the frame we released the mouse button. - if (!IsDragDropPayloadBeingAccepted()) + if (moving_window->Viewport && !IsDragDropPayloadBeingAccepted()) g.MouseViewport = moving_window->Viewport; // Clear the NoInput window flag set by the Viewport system - moving_window->Viewport->Flags &= ~ImGuiViewportFlags_NoInputs; // FIXME-VIEWPORT: Test engine managed to crash here because Viewport was NULL. + if (moving_window->Viewport) + moving_window->Viewport->Flags &= ~ImGuiViewportFlags_NoInputs; } g.MovingWindow = NULL; @@ -4747,21 +4852,33 @@ void ImGui::NewFrame() } #endif + // Record when we have been stationary as this state is preserved while over same item. + // FIXME: The way this is expressed means user cannot alter HoverStationaryDelay during the frame to use varying values. + // To allow this we should store HoverItemMaxStationaryTime+ID and perform the >= check in IsItemHovered() function. + if (g.HoverItemDelayId != 0 && g.MouseStationaryTimer >= g.Style.HoverStationaryDelay) + g.HoverItemUnlockedStationaryId = g.HoverItemDelayId; + else if (g.HoverItemDelayId == 0) + g.HoverItemUnlockedStationaryId = 0; + if (g.HoveredWindow != NULL && g.MouseStationaryTimer >= g.Style.HoverStationaryDelay) + g.HoverWindowUnlockedStationaryId = g.HoveredWindow->ID; + else if (g.HoveredWindow == NULL) + g.HoverWindowUnlockedStationaryId = 0; + // Update hover delay for IsItemHovered() with delays and tooltips - g.HoverDelayIdPreviousFrame = g.HoverDelayId; - if (g.HoverDelayId != 0) + g.HoverItemDelayIdPreviousFrame = g.HoverItemDelayId; + if (g.HoverItemDelayId != 0) { - //if (g.IO.MouseDelta.x == 0.0f && g.IO.MouseDelta.y == 0.0f) // Need design/flags - g.HoverDelayTimer += g.IO.DeltaTime; - g.HoverDelayClearTimer = 0.0f; - g.HoverDelayId = 0; + g.HoverItemDelayTimer += g.IO.DeltaTime; + g.HoverItemDelayClearTimer = 0.0f; + g.HoverItemDelayId = 0; } - else if (g.HoverDelayTimer > 0.0f) + else if (g.HoverItemDelayTimer > 0.0f) { // This gives a little bit of leeway before clearing the hover timer, allowing mouse to cross gaps - g.HoverDelayClearTimer += g.IO.DeltaTime; - if (g.HoverDelayClearTimer >= ImMax(0.20f, g.IO.DeltaTime * 2.0f)) // ~6 frames at 30 Hz + allow for low framerate - g.HoverDelayTimer = g.HoverDelayClearTimer = 0.0f; // May want a decaying timer, in which case need to clamp at max first, based on max of caller last requested timer. + // We could expose 0.25f as style.HoverClearDelay but I am not sure of the logic yet, this is particularly subtle. + g.HoverItemDelayClearTimer += g.IO.DeltaTime; + if (g.HoverItemDelayClearTimer >= ImMax(0.25f, g.IO.DeltaTime * 2.0f)) // ~7 frames at 30 Hz + allow for low framerate + g.HoverItemDelayTimer = g.HoverItemDelayClearTimer = 0.0f; // May want a decaying timer, in which case need to clamp at max first, based on max of caller last requested timer. } // Drag and drop @@ -4917,49 +5034,15 @@ static void AddWindowToSortBuffer(ImVector* out_sorted_windows, Im } } -static void AddDrawListToDrawData(ImVector* out_list, ImDrawList* draw_list) -{ - if (draw_list->CmdBuffer.Size == 0) - return; - if (draw_list->CmdBuffer.Size == 1 && draw_list->CmdBuffer[0].ElemCount == 0 && draw_list->CmdBuffer[0].UserCallback == NULL) - return; - - // Draw list sanity check. Detect mismatch between PrimReserve() calls and incrementing _VtxCurrentIdx, _VtxWritePtr etc. - // May trigger for you if you are using PrimXXX functions incorrectly. - IM_ASSERT(draw_list->VtxBuffer.Size == 0 || draw_list->_VtxWritePtr == draw_list->VtxBuffer.Data + draw_list->VtxBuffer.Size); - IM_ASSERT(draw_list->IdxBuffer.Size == 0 || draw_list->_IdxWritePtr == draw_list->IdxBuffer.Data + draw_list->IdxBuffer.Size); - if (!(draw_list->Flags & ImDrawListFlags_AllowVtxOffset)) - IM_ASSERT((int)draw_list->_VtxCurrentIdx == draw_list->VtxBuffer.Size); - - // Check that draw_list doesn't use more vertices than indexable (default ImDrawIdx = unsigned short = 2 bytes = 64K vertices per ImDrawList = per window) - // If this assert triggers because you are drawing lots of stuff manually: - // - First, make sure you are coarse clipping yourself and not trying to draw many things outside visible bounds. - // Be mindful that the ImDrawList API doesn't filter vertices. Use the Metrics/Debugger window to inspect draw list contents. - // - If you want large meshes with more than 64K vertices, you can either: - // (A) Handle the ImDrawCmd::VtxOffset value in your renderer backend, and set 'io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset'. - // Most example backends already support this from 1.71. Pre-1.71 backends won't. - // Some graphics API such as GL ES 1/2 don't have a way to offset the starting vertex so it is not supported for them. - // (B) Or handle 32-bit indices in your renderer backend, and uncomment '#define ImDrawIdx unsigned int' line in imconfig.h. - // Most example backends already support this. For example, the OpenGL example code detect index size at compile-time: - // glDrawElements(GL_TRIANGLES, (GLsizei)pcmd->ElemCount, sizeof(ImDrawIdx) == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT, idx_buffer_offset); - // Your own engine or render API may use different parameters or function calls to specify index sizes. - // 2 and 4 bytes indices are generally supported by most graphics API. - // - If for some reason neither of those solutions works for you, a workaround is to call BeginChild()/EndChild() before reaching - // the 64K limit to split your draw commands in multiple draw lists. - if (sizeof(ImDrawIdx) == 2) - IM_ASSERT(draw_list->_VtxCurrentIdx < (1 << 16) && "Too many vertices in ImDrawList using 16-bit indices. Read comment above"); - - out_list->push_back(draw_list); -} - static void AddWindowToDrawData(ImGuiWindow* window, int layer) { ImGuiContext& g = *GImGui; ImGuiViewportP* viewport = window->Viewport; + IM_ASSERT(viewport != NULL); g.IO.MetricsRenderWindows++; if (window->Flags & ImGuiWindowFlags_DockNodeHost) window->DrawList->ChannelsMerge(); - AddDrawListToDrawData(&viewport->DrawDataBuilder.Layers[layer], window->DrawList); + ImGui::AddDrawListToDrawDataEx(&viewport->DrawDataP, viewport->DrawDataBuilder.Layers[layer], window->DrawList); for (int i = 0; i < window->DC.ChildWindows.Size; i++) { ImGuiWindow* child = window->DC.ChildWindows[i]; @@ -4979,26 +5062,35 @@ static inline void AddRootWindowToDrawData(ImGuiWindow* window) AddWindowToDrawData(window, GetWindowDisplayLayer(window)); } -void ImDrawDataBuilder::FlattenIntoSingleLayer() +static void FlattenDrawDataIntoSingleLayer(ImDrawDataBuilder* builder) { - int n = Layers[0].Size; - int size = n; - for (int i = 1; i < IM_ARRAYSIZE(Layers); i++) - size += Layers[i].Size; - Layers[0].resize(size); - for (int layer_n = 1; layer_n < IM_ARRAYSIZE(Layers); layer_n++) + int n = builder->Layers[0]->Size; + int full_size = n; + for (int i = 1; i < IM_ARRAYSIZE(builder->Layers); i++) + full_size += builder->Layers[i]->Size; + builder->Layers[0]->resize(full_size); + for (int layer_n = 1; layer_n < IM_ARRAYSIZE(builder->Layers); layer_n++) { - ImVector& layer = Layers[layer_n]; - if (layer.empty()) + ImVector* layer = builder->Layers[layer_n]; + if (layer->empty()) continue; - memcpy(&Layers[0][n], &layer[0], layer.Size * sizeof(ImDrawList*)); - n += layer.Size; - layer.resize(0); + memcpy(builder->Layers[0]->Data + n, layer->Data, layer->Size * sizeof(ImDrawList*)); + n += layer->Size; + layer->resize(0); } } -static void SetupViewportDrawData(ImGuiViewportP* viewport, ImVector* draw_lists) +static void InitViewportDrawData(ImGuiViewportP* viewport) { + ImGuiIO& io = ImGui::GetIO(); + ImDrawData* draw_data = &viewport->DrawDataP; + + viewport->DrawData = draw_data; // Make publicly accessible + viewport->DrawDataBuilder.Layers[0] = &draw_data->CmdLists; + viewport->DrawDataBuilder.Layers[1] = &viewport->DrawDataBuilder.LayerData1; + viewport->DrawDataBuilder.Layers[0]->resize(0); + viewport->DrawDataBuilder.Layers[1]->resize(0); + // When minimized, we report draw_data->DisplaySize as zero to be consistent with non-viewport mode, // and to allow applications/backends to easily skip rendering. // FIXME: Note that we however do NOT attempt to report "zero drawlist / vertices" into the ImDrawData structure. @@ -5006,24 +5098,13 @@ static void SetupViewportDrawData(ImGuiViewportP* viewport, ImVectorFlags & ImGuiViewportFlags_IsMinimized) != 0; - ImGuiIO& io = ImGui::GetIO(); - ImDrawData* draw_data = &viewport->DrawDataP; - viewport->DrawData = draw_data; // Make publicly accessible draw_data->Valid = true; - draw_data->CmdLists = (draw_lists->Size > 0) ? draw_lists->Data : NULL; - draw_data->CmdListsCount = draw_lists->Size; + draw_data->CmdListsCount = 0; draw_data->TotalVtxCount = draw_data->TotalIdxCount = 0; draw_data->DisplayPos = viewport->Pos; draw_data->DisplaySize = is_minimized ? ImVec2(0.0f, 0.0f) : viewport->Size; draw_data->FramebufferScale = io.DisplayFramebufferScale; // FIXME-VIEWPORT: This may vary on a per-monitor/viewport basis? draw_data->OwnerViewport = viewport; - for (int n = 0; n < draw_lists->Size; n++) - { - ImDrawList* draw_list = draw_lists->Data[n]; - draw_list->_PopUnusedDrawCmd(); - draw_data->TotalVtxCount += draw_list->VtxBuffer.Size; - draw_data->TotalIdxCount += draw_list->IdxBuffer.Size; - } } // Push a clipping rectangle for both ImGui logic (hit-testing etc.) and low-level ImDrawList rendering. @@ -5070,14 +5151,14 @@ static void ImGui::RenderDimmedBackgroundBehindWindow(ImGuiWindow* window, ImU32 ImDrawList* draw_list = window->RootWindowDockTree->DrawList; if (draw_list->CmdBuffer.Size == 0) draw_list->AddDrawCmd(); - draw_list->PushClipRect(viewport_rect.Min - ImVec2(1, 1), viewport_rect.Max + ImVec2(1, 1), false); // Ensure ImDrawCmd are not merged + draw_list->PushClipRect(viewport_rect.Min - ImVec2(1, 1), viewport_rect.Max + ImVec2(1, 1), false); // FIXME: Need to stricty ensure ImDrawCmd are not merged (ElemCount==6 checks below will verify that) draw_list->AddRectFilled(viewport_rect.Min, viewport_rect.Max, col); ImDrawCmd cmd = draw_list->CmdBuffer.back(); IM_ASSERT(cmd.ElemCount == 6); draw_list->CmdBuffer.pop_back(); draw_list->CmdBuffer.push_front(cmd); - draw_list->PopClipRect(); draw_list->AddDrawCmd(); // We need to create a command as CmdBuffer.back().IdxOffset won't be correct if we append to same command. + draw_list->PopClipRect(); } // Draw over sibling docking nodes in a same docking tree @@ -5297,9 +5378,9 @@ void ImGui::Render() for (int n = 0; n != g.Viewports.Size; n++) { ImGuiViewportP* viewport = g.Viewports[n]; - viewport->DrawDataBuilder.Clear(); + InitViewportDrawData(viewport); if (viewport->DrawLists[0] != NULL) - AddDrawListToDrawData(&viewport->DrawDataBuilder.Layers[0], GetBackgroundDrawList(viewport)); + AddDrawListToDrawDataEx(&viewport->DrawDataP, viewport->DrawDataBuilder.Layers[0], GetBackgroundDrawList(viewport)); } // Add ImDrawList to render @@ -5330,14 +5411,18 @@ void ImGui::Render() for (int n = 0; n < g.Viewports.Size; n++) { ImGuiViewportP* viewport = g.Viewports[n]; - viewport->DrawDataBuilder.FlattenIntoSingleLayer(); + FlattenDrawDataIntoSingleLayer(&viewport->DrawDataBuilder); // Add foreground ImDrawList (for each active viewport) if (viewport->DrawLists[1] != NULL) - AddDrawListToDrawData(&viewport->DrawDataBuilder.Layers[0], GetForegroundDrawList(viewport)); + AddDrawListToDrawDataEx(&viewport->DrawDataP, viewport->DrawDataBuilder.Layers[0], GetForegroundDrawList(viewport)); + + // We call _PopUnusedDrawCmd() last thing, as RenderDimmedBackgrounds() rely on a valid command being there (especially in docking branch). + ImDrawData* draw_data = &viewport->DrawDataP; + IM_ASSERT(draw_data->CmdLists.Size == draw_data->CmdListsCount); + for (int draw_list_n = 0; draw_list_n < draw_data->CmdLists.Size; draw_list_n++) + draw_data->CmdLists[draw_list_n]->_PopUnusedDrawCmd(); - SetupViewportDrawData(viewport, &viewport->DrawDataBuilder.Layers[0]); - ImDrawData* draw_data = viewport->DrawData; g.IO.MetricsRenderVertices += draw_data->TotalVtxCount; g.IO.MetricsRenderIndices += draw_data->TotalIdxCount; } @@ -5536,17 +5621,28 @@ bool ImGui::IsItemEdited() return (g.LastItemData.StatusFlags & ImGuiItemStatusFlags_Edited) != 0; } +// Allow next item to be overlapped by subsequent items. +// This works by requiring HoveredId to match for two subsequent frames, +// so if a following items overwrite it our interactions will naturally be disabled. +void ImGui::SetNextItemAllowOverlap() +{ + ImGuiContext& g = *GImGui; + g.NextItemData.ItemFlags |= ImGuiItemflags_AllowOverlap; +} + +#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS // Allow last item to be overlapped by a subsequent item. Both may be activated during the same frame before the later one takes priority. -// FIXME: Although this is exposed, its interaction and ideal idiom with using ImGuiButtonFlags_AllowItemOverlap flag are extremely confusing, need rework. +// FIXME-LEGACY: Use SetNextItemAllowOverlap() *before* your item instead. void ImGui::SetItemAllowOverlap() { ImGuiContext& g = *GImGui; ImGuiID id = g.LastItemData.ID; if (g.HoveredId == id) g.HoveredIdAllowOverlap = true; - if (g.ActiveId == id) + if (g.ActiveId == id) // Before we made this obsolete, most calls to SetItemAllowOverlap() used to avoid this path by testing g.ActiveId != id. g.ActiveIdAllowOverlap = true; } +#endif // FIXME: It might be undesirable that this will likely disable KeyOwner-aware shortcuts systems. Consider a more fine-tuned version for the two users of this function. void ImGui::SetActiveIdUsingAllKeyboardKeys() @@ -5624,7 +5720,7 @@ bool ImGui::BeginChildEx(const char* name, ImGuiID id, const ImVec2& size_arg, b // Process navigation-in immediately so NavInit can run on first frame // Can enter a child if (A) it has navigatable items or (B) it can be scrolled. - const ImGuiID temp_id_for_activation = (id + 1); + const ImGuiID temp_id_for_activation = ImHashStr("##Child", 0, id); if (g.ActiveId == temp_id_for_activation) ClearActiveID(); if (g.NavActivateId == id && !(flags & ImGuiWindowFlags_NavFlattened) && (child_window->DC.NavLayersActiveMask != 0 || child_window->DC.NavWindowHasScrollY)) @@ -6491,12 +6587,13 @@ void ImGui::UpdateWindowParentAndRootLinks(ImGuiWindow* window, ImGuiWindowFlags // When a modal popup is open, newly created windows that want focus (i.e. are not popups and do not specify ImGuiWindowFlags_NoFocusOnAppearing) // should be positioned behind that modal window, unless the window was created inside the modal begin-stack. // In case of multiple stacked modals newly created window honors begin stack order and does not go below its own modal parent. -// - Window // FindBlockingModal() returns Modal1 -// - Window // .. returns Modal1 +// - WindowA // FindBlockingModal() returns Modal1 +// - WindowB // .. returns Modal1 // - Modal1 // .. returns Modal2 -// - Window // .. returns Modal2 -// - Window // .. returns Modal2 +// - WindowC // .. returns Modal2 +// - WindowD // .. returns Modal2 // - Modal2 // .. returns Modal2 +// - WindowE // .. returns NULL // Notes: // - FindBlockingModal(NULL) == NULL is generally equivalent to GetTopMostPopupModal() == NULL. // Only difference is here we check for ->Active/WasActive but it may be unecessary. @@ -6507,7 +6604,7 @@ ImGuiWindow* ImGui::FindBlockingModal(ImGuiWindow* window) return NULL; // Find a modal that has common parent with specified window. Specified window should be positioned behind that modal. - for (int i = g.OpenPopupStack.Size - 1; i >= 0; i--) + for (int i = 0; i < g.OpenPopupStack.Size; i++) { ImGuiWindow* popup_window = g.OpenPopupStack.Data[i].Window; if (popup_window == NULL || !(popup_window->Flags & ImGuiWindowFlags_Modal)) @@ -6516,11 +6613,9 @@ ImGuiWindow* ImGui::FindBlockingModal(ImGuiWindow* window) continue; if (window == NULL) // FindBlockingModal(NULL) test for if FocusWindow(NULL) is naturally possible via a mouse click. return popup_window; - if (IsWindowWithinBeginStackOf(window, popup_window)) // Window is rendered over last modal, no render order change needed. - break; - for (ImGuiWindow* parent = popup_window->ParentWindowInBeginStack->RootWindow; parent != NULL; parent = parent->ParentWindowInBeginStack->RootWindow) - if (IsWindowWithinBeginStackOf(window, parent)) - return popup_window; // Place window above its begin stack parent. + if (IsWindowWithinBeginStackOf(window, popup_window)) // Window may be over modal + continue; + return popup_window; // Place window right below first block modal } return NULL; } @@ -6796,7 +6891,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) // LOCK BORDER SIZE AND PADDING FOR THE FRAME (so that altering them doesn't cause inconsistencies) // We read Style data after the call to UpdateSelectWindowViewport() which might be swapping the style. - if (flags & ImGuiWindowFlags_ChildWindow) + if (!window->DockIsActive && (flags & ImGuiWindowFlags_ChildWindow)) window->WindowBorderSize = style.ChildBorderSize; else window->WindowBorderSize = ((flags & (ImGuiWindowFlags_Popup | ImGuiWindowFlags_Tooltip)) && !(flags & ImGuiWindowFlags_Modal)) ? style.PopupBorderSize : style.WindowBorderSize; @@ -7227,6 +7322,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) // [LEGACY] Content Region // FIXME-OBSOLETE: window->ContentRegionRect.Max is currently very misleading / partly faulty, but some BeginChild() patterns relies on it. + // Unless explicit content size is specified by user, this currently represent the region leading to no scrolling. // Used by: // - Mouse wheel scrolling + many other things window->ContentRegionRect.Min.x = window->Pos.x - window->Scroll.x + window->WindowPadding.x + window->DecoOuterSizeX1; @@ -7290,16 +7386,12 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) if (want_focus && window == g.NavWindow) NavInitWindow(window, false); // <-- this is in the way for us to be able to defer and sort reappearing FocusWindow() calls - // Close requested by platform window + // Close requested by platform window (apply to all windows in this viewport) if (p_open != NULL && window->Viewport->PlatformRequestClose && window->Viewport != GetMainViewport()) { - if (!window->DockIsActive || window->DockTabIsVisible) - { - window->Viewport->PlatformRequestClose = false; - g.NavWindowingToggleLayer = false; // Assume user mapped PlatformRequestClose on ALT-F4 so we disable ALT for menu toggle. False positive not an issue. - IMGUI_DEBUG_LOG_VIEWPORT("[viewport] Window '%s' PlatformRequestClose\n", window->Name); - *p_open = false; - } + IMGUI_DEBUG_LOG_VIEWPORT("[viewport] Window '%s' closed by PlatformRequestClose\n", window->Name); + *p_open = false; + g.NavWindowingToggleLayer = false; // Assume user mapped PlatformRequestClose on ALT-F4 so we disable ALT for menu toggle. False positive not an issue. // FIXME-NAV: Try removing. } // Title bar @@ -7896,7 +7988,8 @@ bool ImGui::IsWindowAbove(ImGuiWindow* potential_above, ImGuiWindow* potential_b bool ImGui::IsWindowHovered(ImGuiHoveredFlags flags) { - IM_ASSERT((flags & (ImGuiHoveredFlags_AllowWhenOverlapped | ImGuiHoveredFlags_AllowWhenDisabled)) == 0); // Flags not supported by this function + IM_ASSERT((flags & ~ImGuiHoveredFlags_AllowedMaskForIsWindowHovered) == 0 && "Invalid flags for IsWindowHovered()!"); + ImGuiContext& g = *GImGui; ImGuiWindow* ref_window = g.HoveredWindow; ImGuiWindow* cur_window = g.CurrentWindow; @@ -7925,6 +8018,17 @@ bool ImGui::IsWindowHovered(ImGuiHoveredFlags flags) if (!(flags & ImGuiHoveredFlags_AllowWhenBlockedByActiveItem)) if (g.ActiveId != 0 && !g.ActiveIdAllowOverlap && g.ActiveId != ref_window->MoveId) return false; + + // When changing hovered window we requires a bit of stationary delay before activating hover timer. + // FIXME: We don't support delay other than stationary one for now, other delay would need a way + // to fullfill the possibility that multiple IsWindowHovered() with varying flag could return true + // for different windows of the hierarchy. Possibly need a Hash(Current+Flags) ==> (Timer) cache. + // We can implement this for _Stationary because the data is linked to HoveredWindow rather than CurrentWindow. + if (flags & ImGuiHoveredFlags_ForTooltip) + flags |= g.Style.HoverFlagsForTooltipMouse; + if ((flags & ImGuiHoveredFlags_Stationary) != 0 && g.HoverWindowUnlockedStationaryId != ref_window->ID) + return false; + return true; } @@ -8266,13 +8370,6 @@ void ImGui::SetWindowFontScale(float scale) g.FontSize = g.DrawListSharedData.FontSize = window->CalcFontSize(); } -void ImGui::ActivateItem(ImGuiID id) -{ - ImGuiContext& g = *GImGui; - g.NavNextActivateId = id; - g.NavNextActivateFlags = ImGuiActivateFlags_None; -} - void ImGui::PushFocusScope(ImGuiID id) { ImGuiContext& g = *GImGui; @@ -8288,13 +8385,40 @@ void ImGui::PopFocusScope() g.CurrentFocusScopeId = g.FocusScopeStack.Size ? g.FocusScopeStack.back() : 0; } +// Focus = move navigation cursor, set scrolling, set focus window. +void ImGui::FocusItem() +{ + ImGuiContext& g = *GImGui; + ImGuiWindow* window = g.CurrentWindow; + IMGUI_DEBUG_LOG_FOCUS("FocusItem(0x%08x) in window \"%s\"\n", g.LastItemData.ID, window->Name); + if (g.DragDropActive || g.MovingWindow != NULL) // FIXME: Opt-in flags for this? + { + IMGUI_DEBUG_LOG_FOCUS("FocusItem() ignored while DragDropActive!\n"); + return; + } + + ImGuiNavMoveFlags move_flags = ImGuiNavMoveFlags_IsTabbing | ImGuiNavMoveFlags_FocusApi | ImGuiNavMoveFlags_NoSelect; + ImGuiScrollFlags scroll_flags = window->Appearing ? ImGuiScrollFlags_KeepVisibleEdgeX | ImGuiScrollFlags_AlwaysCenterY : ImGuiScrollFlags_KeepVisibleEdgeX | ImGuiScrollFlags_KeepVisibleEdgeY; + SetNavWindow(window); + NavMoveRequestSubmit(ImGuiDir_None, ImGuiDir_Up, move_flags, scroll_flags); + NavMoveRequestResolveWithLastItem(&g.NavMoveResultLocal); +} + +void ImGui::ActivateItemByID(ImGuiID id) +{ + ImGuiContext& g = *GImGui; + g.NavNextActivateId = id; + g.NavNextActivateFlags = ImGuiActivateFlags_None; +} + // Note: this will likely be called ActivateItem() once we rework our Focus/Activation system! +// But ActivateItem() should function without altering scroll/focus? void ImGui::SetKeyboardFocusHere(int offset) { ImGuiContext& g = *GImGui; ImGuiWindow* window = g.CurrentWindow; IM_ASSERT(offset >= -1); // -1 is allowed but not below - IMGUI_DEBUG_LOG_ACTIVEID("SetKeyboardFocusHere(%d) in window \"%s\"\n", offset, window->Name); + IMGUI_DEBUG_LOG_FOCUS("SetKeyboardFocusHere(%d) in window \"%s\"\n", offset, window->Name); // It makes sense in the vast majority of cases to never interrupt a drag and drop. // When we refactor this function into ActivateItem() we may want to make this an option. @@ -8302,14 +8426,15 @@ void ImGui::SetKeyboardFocusHere(int offset) // is also automatically dropped in the event g.ActiveId is stolen. if (g.DragDropActive || g.MovingWindow != NULL) { - IMGUI_DEBUG_LOG_ACTIVEID("SetKeyboardFocusHere() ignored while DragDropActive!\n"); + IMGUI_DEBUG_LOG_FOCUS("SetKeyboardFocusHere() ignored while DragDropActive!\n"); return; } SetNavWindow(window); + ImGuiNavMoveFlags move_flags = ImGuiNavMoveFlags_IsTabbing | ImGuiNavMoveFlags_Activate | ImGuiNavMoveFlags_FocusApi; ImGuiScrollFlags scroll_flags = window->Appearing ? ImGuiScrollFlags_KeepVisibleEdgeX | ImGuiScrollFlags_AlwaysCenterY : ImGuiScrollFlags_KeepVisibleEdgeX | ImGuiScrollFlags_KeepVisibleEdgeY; - NavMoveRequestSubmit(ImGuiDir_None, offset < 0 ? ImGuiDir_Up : ImGuiDir_Down, ImGuiNavMoveFlags_Tabbing | ImGuiNavMoveFlags_FocusApi, scroll_flags); // FIXME-NAV: Once we refactor tabbing, add LegacyApi flag to not activate non-inputable. + NavMoveRequestSubmit(ImGuiDir_None, offset < 0 ? ImGuiDir_Up : ImGuiDir_Down, move_flags, scroll_flags); // FIXME-NAV: Once we refactor tabbing, add LegacyApi flag to not activate non-inputable. if (offset == -1) { NavMoveRequestResolveWithLastItem(&g.NavMoveResultLocal); @@ -8572,7 +8697,7 @@ const char* ImGui::GetKeyName(ImGuiKey key) { ImGuiContext& g = *GImGui; #ifdef IMGUI_DISABLE_OBSOLETE_KEYIO - IM_ASSERT((IsNamedKey(key) || key == ImGuiKey_None) && "Support for user key indices was dropped in favor of ImGuiKey. Please update backend and user code."); + IM_ASSERT((IsNamedKeyOrModKey(key) || key == ImGuiKey_None) && "Support for user key indices was dropped in favor of ImGuiKey. Please update backend and user code."); #else if (IsLegacyKey(key)) { @@ -9244,6 +9369,13 @@ static void ImGui::UpdateMouseInputs() else io.MouseDelta = ImVec2(0.0f, 0.0f); + // Update stationary timer. + // FIXME: May need to rework again to have some tolerance for occasional small movement, while being functional on high-framerates. + const float mouse_stationary_threshold = (io.MouseSource == ImGuiMouseSource_Mouse) ? 2.0f : 3.0f; // Slightly higher threshold for ImGuiMouseSource_TouchScreen/ImGuiMouseSource_Pen, may need rework. + const bool mouse_stationary = (ImLengthSqr(io.MouseDelta) <= mouse_stationary_threshold * mouse_stationary_threshold); + g.MouseStationaryTimer = mouse_stationary ? (g.MouseStationaryTimer + io.DeltaTime) : 0.0f; + //IMGUI_DEBUG_LOG("%.4f\n", g.MouseStationaryTimer); + // If mouse moved we re-enable mouse hovering in case it was disabled by gamepad/keyboard. In theory should use a >0.0f threshold but would need to reset in everywhere we set this to true. if (io.MouseDelta.x != 0.0f || io.MouseDelta.y != 0.0f) g.NavDisableMouseHover = false; @@ -10155,7 +10287,7 @@ bool ImGui::ItemAdd(const ImRect& bb, ImGuiID id, const ImRect* nav_bb_arg, ImGu g.LastItemData.ID = id; g.LastItemData.Rect = bb; g.LastItemData.NavRect = nav_bb_arg ? *nav_bb_arg : bb; - g.LastItemData.InFlags = g.CurrentItemFlags | extra_flags; + g.LastItemData.InFlags = g.CurrentItemFlags | g.NextItemData.ItemFlags | extra_flags; g.LastItemData.StatusFlags = ImGuiItemStatusFlags_None; // Directional navigation processing @@ -10187,6 +10319,7 @@ bool ImGui::ItemAdd(const ImRect& bb, ImGuiID id, const ImRect* nav_bb_arg, ImGu IM_ASSERT(id != window->ID && "Cannot have an empty ID at the root of a window. If you need an empty label, use ## and read the FAQ about how the ID Stack works!"); } g.NextItemData.Flags = ImGuiNextItemDataFlags_None; + g.NextItemData.ItemFlags = ImGuiItemFlags_None; #ifdef IMGUI_ENABLE_TEST_ENGINE if (id != 0) @@ -10452,10 +10585,8 @@ ImVec2 ImGui::GetContentRegionMax() { ImGuiContext& g = *GImGui; ImGuiWindow* window = g.CurrentWindow; - ImVec2 mx = window->ContentRegionRect.Max - window->Pos; - if (window->DC.CurrentColumns || g.CurrentTable) - mx.x = window->WorkRect.Max.x - window->Pos.x; - return mx; + ImVec2 mx = (window->DC.CurrentColumns || g.CurrentTable) ? window->WorkRect.Max : window->ContentRegionRect.Max; + return mx - window->Pos; } // [Internal] Absolute coordinate. Saner. This is not exposed until we finishing refactoring work rect features. @@ -10463,9 +10594,7 @@ ImVec2 ImGui::GetContentRegionMaxAbs() { ImGuiContext& g = *GImGui; ImGuiWindow* window = g.CurrentWindow; - ImVec2 mx = window->ContentRegionRect.Max; - if (window->DC.CurrentColumns || g.CurrentTable) - mx.x = window->WorkRect.Max.x; + ImVec2 mx = (window->DC.CurrentColumns || g.CurrentTable) ? window->WorkRect.Max : window->ContentRegionRect.Max; return mx; } @@ -10832,26 +10961,35 @@ bool ImGui::BeginTooltip() return BeginTooltipEx(ImGuiTooltipFlags_None, ImGuiWindowFlags_None); } +bool ImGui::BeginItemTooltip() +{ + if (!IsItemHovered(ImGuiHoveredFlags_ForTooltip)) + return false; + return BeginTooltipEx(ImGuiTooltipFlags_None, ImGuiWindowFlags_None); +} + bool ImGui::BeginTooltipEx(ImGuiTooltipFlags tooltip_flags, ImGuiWindowFlags extra_window_flags) { ImGuiContext& g = *GImGui; if (g.DragDropWithinSource || g.DragDropWithinTarget) { - // The default tooltip position is a little offset to give space to see the context menu (it's also clamped within the current viewport/monitor) - // In the context of a dragging tooltip we try to reduce that offset and we enforce following the cursor. - // Whatever we do we want to call SetNextWindowPos() to enforce a tooltip position and disable clipping the tooltip without our display area, like regular tooltip do. + // Drag and Drop tooltips are positioning differently than other tooltips: + // - offset visibility to increase visibility around mouse. + // - never clamp within outer viewport boundary. + // We call SetNextWindowPos() to enforce position and disable clamping. + // See FindBestWindowPosForPopup() for positionning logic of other tooltips (not drag and drop ones). //ImVec2 tooltip_pos = g.IO.MousePos - g.ActiveIdClickOffset - g.Style.WindowPadding; - ImVec2 tooltip_pos = g.IO.MousePos + ImVec2(16 * g.Style.MouseCursorScale, 8 * g.Style.MouseCursorScale); + ImVec2 tooltip_pos = g.IO.MousePos + TOOLTIP_DEFAULT_OFFSET * g.Style.MouseCursorScale; SetNextWindowPos(tooltip_pos); SetNextWindowBgAlpha(g.Style.Colors[ImGuiCol_PopupBg].w * 0.60f); //PushStyleVar(ImGuiStyleVar_Alpha, g.Style.Alpha * 0.60f); // This would be nice but e.g ColorButton with checkboard has issue with transparent colors :( - tooltip_flags |= ImGuiTooltipFlags_OverridePreviousTooltip; + tooltip_flags |= ImGuiTooltipFlags_OverridePrevious; } char window_name[16]; ImFormatString(window_name, IM_ARRAYSIZE(window_name), "##Tooltip_%02d", g.TooltipOverrideCount); - if (tooltip_flags & ImGuiTooltipFlags_OverridePreviousTooltip) + if (tooltip_flags & ImGuiTooltipFlags_OverridePrevious) if (ImGuiWindow* window = FindWindowByName(window_name)) if (window->Active) { @@ -10875,14 +11013,6 @@ void ImGui::EndTooltip() End(); } -void ImGui::SetTooltipV(const char* fmt, va_list args) -{ - if (!BeginTooltipEx(ImGuiTooltipFlags_OverridePreviousTooltip, ImGuiWindowFlags_None)) - return; - TextV(fmt, args); - EndTooltip(); -} - void ImGui::SetTooltip(const char* fmt, ...) { va_list args; @@ -10891,6 +11021,32 @@ void ImGui::SetTooltip(const char* fmt, ...) va_end(args); } +void ImGui::SetTooltipV(const char* fmt, va_list args) +{ + if (!BeginTooltipEx(ImGuiTooltipFlags_OverridePrevious, ImGuiWindowFlags_None)) + return; + TextV(fmt, args); + EndTooltip(); +} + +// Shortcut to use 'style.HoverFlagsForTooltipMouse' or 'style.HoverFlagsForTooltipNav'. +// Defaults to == ImGuiHoveredFlags_Stationary | ImGuiHoveredFlags_DelayShort when using the mouse. +void ImGui::SetItemTooltip(const char* fmt, ...) +{ + va_list args; + va_start(args, fmt); + if (IsItemHovered(ImGuiHoveredFlags_ForTooltip)) + SetTooltipV(fmt, args); + va_end(args); +} + +void ImGui::SetItemTooltipV(const char* fmt, va_list args) +{ + if (IsItemHovered(ImGuiHoveredFlags_ForTooltip)) + SetTooltipV(fmt, args); +} + + //----------------------------------------------------------------------------- // [SECTION] POPUPS //----------------------------------------------------------------------------- @@ -11424,15 +11580,20 @@ ImVec2 ImGui::FindBestWindowPosForPopup(ImGuiWindow* window) } if (window->Flags & ImGuiWindowFlags_Tooltip) { - // Position tooltip (always follows mouse) - float sc = g.Style.MouseCursorScale; - ImVec2 ref_pos = NavCalcPreferredRefPos(); + // Position tooltip (always follows mouse + clamp within outer boundaries) + // Note that drag and drop tooltips are NOT using this path: BeginTooltipEx() manually sets their position. + // In theory we could handle both cases in same location, but requires a bit of shuffling as drag and drop tooltips are calling SetWindowPos() leading to 'window_pos_set_by_api' being set in Begin() + IM_ASSERT(g.CurrentWindow == window); + const float scale = g.Style.MouseCursorScale; + const ImVec2 ref_pos = NavCalcPreferredRefPos(); + const ImVec2 tooltip_pos = ref_pos + TOOLTIP_DEFAULT_OFFSET * scale; ImRect r_avoid; if (!g.NavDisableHighlight && g.NavDisableMouseHover && !(g.IO.ConfigFlags & ImGuiConfigFlags_NavEnableSetMousePos)) r_avoid = ImRect(ref_pos.x - 16, ref_pos.y - 8, ref_pos.x + 16, ref_pos.y + 8); else - r_avoid = ImRect(ref_pos.x - 16, ref_pos.y - 8, ref_pos.x + 24 * sc, ref_pos.y + 24 * sc); // FIXME: Hard-coded based on mouse cursor shape expectation. Exact dimension not very important. - return FindBestWindowPosForPopupEx(ref_pos, window->Size, &window->AutoPosLastDirection, r_outer, r_avoid, ImGuiPopupPositionPolicy_Tooltip); + r_avoid = ImRect(ref_pos.x - 16, ref_pos.y - 8, ref_pos.x + 24 * scale, ref_pos.y + 24 * scale); // FIXME: Hard-coded based on mouse cursor shape expectation. Exact dimension not very important. + //GetForegroundDrawList()->AddRect(r_avoid.Min, r_avoid.Max, IM_COL32(255, 0, 255, 255)); + return FindBestWindowPosForPopupEx(tooltip_pos, window->Size, &window->AutoPosLastDirection, r_outer, r_avoid, ImGuiPopupPositionPolicy_Tooltip); } IM_ASSERT(0); return window->Pos; @@ -11720,7 +11881,7 @@ static void ImGui::NavProcessItem() // FIXME-NAV: Consider policy for double scoring (scoring from NavScoringRect + scoring from a rect wrapped according to current wrapping policy) if (g.NavMoveScoringItems && (item_flags & ImGuiItemFlags_Disabled) == 0) { - const bool is_tabbing = (g.NavMoveFlags & ImGuiNavMoveFlags_Tabbing) != 0; + const bool is_tabbing = (g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) != 0; if (is_tabbing) { NavProcessItemForTabbingRequest(id, item_flags, g.NavMoveFlags); @@ -11826,7 +11987,7 @@ void ImGui::NavMoveRequestSubmit(ImGuiDir move_dir, ImGuiDir clip_dir, ImGuiNavM ImGuiContext& g = *GImGui; IM_ASSERT(g.NavWindow != NULL); - if (move_flags & ImGuiNavMoveFlags_Tabbing) + if (move_flags & ImGuiNavMoveFlags_IsTabbing) move_flags |= ImGuiNavMoveFlags_AllowCurrentNavId; g.NavMoveSubmitted = g.NavMoveScoringItems = true; @@ -12378,9 +12539,10 @@ void ImGui::NavUpdateCreateTabbingRequest() g.NavTabbingDir = g.IO.KeyShift ? -1 : (g.NavDisableHighlight == true && g.ActiveId == 0) ? 0 : +1; else g.NavTabbingDir = g.IO.KeyShift ? -1 : (g.ActiveId == 0) ? 0 : +1; + ImGuiNavMoveFlags move_flags = ImGuiNavMoveFlags_IsTabbing | ImGuiNavMoveFlags_Activate; ImGuiScrollFlags scroll_flags = window->Appearing ? ImGuiScrollFlags_KeepVisibleEdgeX | ImGuiScrollFlags_AlwaysCenterY : ImGuiScrollFlags_KeepVisibleEdgeX | ImGuiScrollFlags_KeepVisibleEdgeY; ImGuiDir clip_dir = (g.NavTabbingDir < 0) ? ImGuiDir_Up : ImGuiDir_Down; - NavMoveRequestSubmit(ImGuiDir_None, clip_dir, ImGuiNavMoveFlags_Tabbing, scroll_flags); // FIXME-NAV: Once we refactor tabbing, add LegacyApi flag to not activate non-inputable. + NavMoveRequestSubmit(ImGuiDir_None, clip_dir, move_flags, scroll_flags); // FIXME-NAV: Once we refactor tabbing, add LegacyApi flag to not activate non-inputable. g.NavTabbingCounter = -1; } @@ -12397,7 +12559,7 @@ void ImGui::NavMoveRequestApplyResult() ImGuiNavItemData* result = (g.NavMoveResultLocal.ID != 0) ? &g.NavMoveResultLocal : (g.NavMoveResultOther.ID != 0) ? &g.NavMoveResultOther : NULL; // Tabbing forward wrap - if ((g.NavMoveFlags & ImGuiNavMoveFlags_Tabbing) && result == NULL) + if ((g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) && result == NULL) if ((g.NavTabbingCounter == 1 || g.NavTabbingDir == 0) && g.NavTabbingResultFirst.ID) result = &g.NavTabbingResultFirst; @@ -12405,9 +12567,9 @@ void ImGui::NavMoveRequestApplyResult() const ImGuiAxis axis = (g.NavMoveDir == ImGuiDir_Up || g.NavMoveDir == ImGuiDir_Down) ? ImGuiAxis_Y : ImGuiAxis_X; if (result == NULL) { - if (g.NavMoveFlags & ImGuiNavMoveFlags_Tabbing) - g.NavMoveFlags |= ImGuiNavMoveFlags_DontSetNavHighlight; - if (g.NavId != 0 && (g.NavMoveFlags & ImGuiNavMoveFlags_DontSetNavHighlight) == 0) + if (g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) + g.NavMoveFlags |= ImGuiNavMoveFlags_NoSetNavHighlight; + if (g.NavId != 0 && (g.NavMoveFlags & ImGuiNavMoveFlags_NoSetNavHighlight) == 0) NavRestoreHighlightAfterMove(); NavClearPreferredPosForAxis(axis); // On a failed move, clear preferred pos for this axis. IMGUI_DEBUG_LOG_NAV("[nav] NavMoveSubmitted but not led to a result!\n"); @@ -12446,9 +12608,11 @@ void ImGui::NavMoveRequestApplyResult() } if (g.ActiveId != result->ID) ClearActiveID(); - if (g.NavId != result->ID) + + // Don't set NavJustMovedToId if just landed on the same spot (which may happen with ImGuiNavMoveFlags_AllowCurrentNavId) + // PageUp/PageDown however sets always set NavJustMovedTo (vs Home/End which doesn't) mimicking Windows behavior. + if ((g.NavId != result->ID || (g.NavMoveFlags & ImGuiNavMoveFlags_IsPageMove)) && (g.NavMoveFlags & ImGuiNavMoveFlags_NoSelect) == 0) { - // Don't set NavJustMovedToId if just landed on the same spot (which may happen with ImGuiNavMoveFlags_AllowCurrentNavId) g.NavJustMovedToId = result->ID; g.NavJustMovedToFocusScopeId = result->FocusScopeId; g.NavJustMovedToKeyMods = g.NavMoveKeyMods; @@ -12461,29 +12625,28 @@ void ImGui::NavMoveRequestApplyResult() // Restore last preferred position for current axis // (storing in RootWindowForNav-> as the info is desirable at the beginning of a Move Request. In theory all storage should use RootWindowForNav..) - if ((g.NavMoveFlags & ImGuiNavMoveFlags_Tabbing) == 0) + if ((g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) == 0) { preferred_scoring_pos_rel[axis] = result->RectRel.GetCenter()[axis]; g.NavWindow->RootWindowForNav->NavPreferredScoringPosRel[g.NavLayer] = preferred_scoring_pos_rel; } - // Tabbing: Activates Inputable or Focus non-Inputable - if ((g.NavMoveFlags & ImGuiNavMoveFlags_Tabbing) && (result->InFlags & ImGuiItemFlags_Inputable)) - { - g.NavNextActivateId = result->ID; - g.NavNextActivateFlags = ImGuiActivateFlags_PreferInput | ImGuiActivateFlags_TryToPreserveState; - g.NavMoveFlags |= ImGuiNavMoveFlags_DontSetNavHighlight; - } + // Tabbing: Activates Inputable, otherwise only Focus + if ((g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) && (result->InFlags & ImGuiItemFlags_Inputable) == 0) + g.NavMoveFlags &= ~ImGuiNavMoveFlags_Activate; // Activate if (g.NavMoveFlags & ImGuiNavMoveFlags_Activate) { g.NavNextActivateId = result->ID; g.NavNextActivateFlags = ImGuiActivateFlags_None; + g.NavMoveFlags |= ImGuiNavMoveFlags_NoSetNavHighlight; + if (g.NavMoveFlags & ImGuiNavMoveFlags_IsTabbing) + g.NavNextActivateFlags |= ImGuiActivateFlags_PreferInput | ImGuiActivateFlags_TryToPreserveState; } // Enable nav highlight - if ((g.NavMoveFlags & ImGuiNavMoveFlags_DontSetNavHighlight) == 0) + if ((g.NavMoveFlags & ImGuiNavMoveFlags_NoSetNavHighlight) == 0) NavRestoreHighlightAfterMove(); } @@ -12578,14 +12741,14 @@ static float ImGui::NavUpdatePageUpPageDown() nav_scoring_rect_offset_y = -page_offset_y; g.NavMoveDir = ImGuiDir_Down; // Because our scoring rect is offset up, we request the down direction (so we can always land on the last item) g.NavMoveClipDir = ImGuiDir_Up; - g.NavMoveFlags = ImGuiNavMoveFlags_AllowCurrentNavId | ImGuiNavMoveFlags_AlsoScoreVisibleSet; + g.NavMoveFlags = ImGuiNavMoveFlags_AllowCurrentNavId | ImGuiNavMoveFlags_AlsoScoreVisibleSet | ImGuiNavMoveFlags_IsPageMove; } else if (IsKeyPressed(ImGuiKey_PageDown, true)) { nav_scoring_rect_offset_y = +page_offset_y; g.NavMoveDir = ImGuiDir_Up; // Because our scoring rect is offset down, we request the up direction (so we can always land on the last item) g.NavMoveClipDir = ImGuiDir_Down; - g.NavMoveFlags = ImGuiNavMoveFlags_AllowCurrentNavId | ImGuiNavMoveFlags_AlsoScoreVisibleSet; + g.NavMoveFlags = ImGuiNavMoveFlags_AllowCurrentNavId | ImGuiNavMoveFlags_AlsoScoreVisibleSet | ImGuiNavMoveFlags_IsPageMove; } else if (home_pressed) { @@ -13049,7 +13212,7 @@ bool ImGui::BeginDragDropSource(ImGuiDragDropFlags flags) // Rely on keeping other window->LastItemXXX fields intact. source_id = g.LastItemData.ID = window->GetIDFromRectangle(g.LastItemData.Rect); KeepAliveID(source_id); - bool is_hovered = ItemHoverable(g.LastItemData.Rect, source_id); + bool is_hovered = ItemHoverable(g.LastItemData.Rect, source_id, g.LastItemData.InFlags); if (is_hovered && g.IO.MouseClicked[mouse_button]) { SetActiveID(source_id, window); @@ -13820,12 +13983,13 @@ ImGuiWindowSettings* ImGui::CreateNewWindowSettings(const char* name) { ImGuiContext& g = *GImGui; -#if !IMGUI_DEBUG_INI_SETTINGS - // Skip to the "###" marker if any. We don't skip past to match the behavior of GetID() - // Preserve the full string when IMGUI_DEBUG_INI_SETTINGS is set to make .ini inspection easier. - if (const char* p = strstr(name, "###")) - name = p; -#endif + if (g.IO.ConfigDebugIniSettings == false) + { + // Skip to the "###" marker if any. We don't skip past to match the behavior of GetID() + // Preserve the full string when ConfigDebugVerboseIniSettings is set to make .ini inspection easier. + if (const char* p = strstr(name, "###")) + name = p; + } const size_t name_len = strlen(name); // Allocate chunk @@ -14477,6 +14641,7 @@ ImGuiViewportP* ImGui::AddUpdateViewport(ImGuiWindow* window, ImGuiID id, const viewport->Flags = flags; UpdateViewportPlatformMonitor(viewport); g.Viewports.push_back(viewport); + g.ViewportCreatedCount++; IMGUI_DEBUG_LOG_VIEWPORT("[viewport] Add Viewport %08X '%s'\n", id, window ? window->Name : ""); // We normally setup for all viewports in NewFrame() but here need to handle the mid-frame creation of a new viewport. @@ -14571,6 +14736,11 @@ static void ImGui::WindowSelectViewport(ImGuiWindow* window) // Code explicitly request a viewport window->Viewport = (ImGuiViewportP*)FindViewportByID(g.NextWindowData.ViewportId); window->ViewportId = g.NextWindowData.ViewportId; // Store ID even if Viewport isn't resolved yet. + if (window->Viewport && (window->Flags & ImGuiWindowFlags_DockNodeHost) != 0 && window->Viewport->Window != NULL) + { + window->Viewport->Window = window; + window->Viewport->ID = window->ViewportId = window->ID; // Overwrite ID (always owned by node) + } lock_viewport = true; } else if ((flags & ImGuiWindowFlags_ChildWindow) || (flags & ImGuiWindowFlags_ChildMenu)) @@ -14789,6 +14959,7 @@ void ImGui::UpdatePlatformWindows() g.PlatformIO.Platform_CreateWindow(viewport); if (g.PlatformIO.Renderer_CreateWindow != NULL) g.PlatformIO.Renderer_CreateWindow(viewport); + g.PlatformWindowsCreatedCount++; viewport->LastNameHash = 0; viewport->LastPlatformPos = viewport->LastPlatformSize = ImVec2(FLT_MAX, FLT_MAX); // By clearing those we'll enforce a call to Platform_SetWindowPos/Size below, before Platform_ShowWindow (FIXME: Is that necessary?) viewport->LastRendererSize = viewport->Size; // We don't need to call Renderer_SetWindowSize() as it is expected Renderer_CreateWindow() already did it. @@ -15347,7 +15518,7 @@ void ImGui::DockContextEndFrame(ImGuiContext* ctx) if (node->LastFrameActive == g.FrameCount && node->IsVisible && node->HostWindow && node->IsLeafNode() && !node->IsBgDrawnThisFrame) { ImRect bg_rect(node->Pos + ImVec2(0.0f, GetFrameHeight()), node->Pos + node->Size); - ImDrawFlags bg_rounding_flags = CalcRoundingFlagsForRectInRect(bg_rect, node->HostWindow->Rect(), DOCKING_SPLITTER_SIZE); + ImDrawFlags bg_rounding_flags = CalcRoundingFlagsForRectInRect(bg_rect, node->HostWindow->Rect(), g.Style.DockingSeparatorSize); node->HostWindow->DrawList->ChannelsSetCurrent(DOCKING_HOST_DRAW_CHANNEL_BG); node->HostWindow->DrawList->AddRectFilled(bg_rect.Min, bg_rect.Max, node->LastBgColor, node->HostWindow->WindowRounding, bg_rounding_flags); } @@ -15880,6 +16051,7 @@ ImGuiDockNode::ImGuiDockNode(ImGuiID id) LastFocusedNodeId = 0; SelectedTabId = 0; WantCloseTabId = 0; + RefViewportId = 0; AuthorityForPos = AuthorityForSize = ImGuiDataAuthority_DockNode; AuthorityForViewport = ImGuiDataAuthority_Auto; IsVisible = true; @@ -15986,6 +16158,16 @@ static void ImGui::DockNodeRemoveWindow(ImGuiDockNode* node, ImGuiWindow* window window->ParentWindow->DC.ChildWindows.find_erase(window); UpdateWindowParentAndRootLinks(window, window->Flags, NULL); // Update immediately + if (node->HostWindow && node->HostWindow->ViewportOwned) + { + // When undocking from a user interaction this will always run in NewFrame() and have not much effect. + // But mid-frame, if we clear viewport we need to mark window as hidden as well. + window->Viewport = NULL; + window->ViewportId = 0; + window->ViewportOwned = false; + window->Hidden = true; + } + // Remove window bool erased = false; for (int n = 0; n < node->Windows.Size; n++) @@ -16020,14 +16202,7 @@ static void ImGui::DockNodeRemoveWindow(ImGuiDockNode* node, ImGuiWindow* window if (node->Windows.Size == 1 && !node->IsCentralNode() && node->HostWindow) { ImGuiWindow* remaining_window = node->Windows[0]; - if (node->HostWindow->ViewportOwned && node->IsRootNode()) - { - // Transfer viewport back to the remaining loose window - IMGUI_DEBUG_LOG_VIEWPORT("[viewport] Node %08X transfer Viewport %08X=>%08X for Window '%s'\n", node->ID, node->HostWindow->Viewport->ID, remaining_window->ID, remaining_window->Name); - IM_ASSERT(node->HostWindow->Viewport->Window == node->HostWindow); - node->HostWindow->Viewport->Window = remaining_window; - node->HostWindow->Viewport->ID = remaining_window->ID; - } + // Note: we used to transport viewport ownership here. remaining_window->Collapsed = node->HostWindow->Collapsed; } @@ -16358,14 +16533,17 @@ static void ImGui::DockNodeUpdate(ImGuiDockNode* node) FocusWindow(single_window); if (node->HostWindow) { + IMGUI_DEBUG_LOG_VIEWPORT("[viewport] Node %08X transfer Viewport %08X->%08X to Window '%s'\n", node->ID, node->HostWindow->Viewport->ID, single_window->ID, single_window->Name); single_window->Viewport = node->HostWindow->Viewport; single_window->ViewportId = node->HostWindow->ViewportId; if (node->HostWindow->ViewportOwned) { + single_window->Viewport->ID = single_window->ID; single_window->Viewport->Window = single_window; single_window->ViewportOwned = true; } } + node->RefViewportId = single_window->ViewportId; } DockNodeHideHostWindow(node); @@ -16455,6 +16633,8 @@ static void ImGui::DockNodeUpdate(ImGuiDockNode* node) // Sync Viewport if (node->AuthorityForViewport == ImGuiDataAuthority_Window && ref_window) SetNextWindowViewport(ref_window->ViewportId); + else if (node->AuthorityForViewport == ImGuiDataAuthority_Window && node->RefViewportId != 0) + SetNextWindowViewport(node->RefViewportId); SetNextWindowClass(&node->WindowClass); @@ -16497,6 +16677,7 @@ static void ImGui::DockNodeUpdate(ImGuiDockNode* node) if (node->WantMouseMove && node->HostWindow) DockNodeStartMouseMovingWindow(node, node->HostWindow); } + node->RefViewportId = 0; // Clear when we have a host window // Update focused node (the one whose title bar is highlight) within a node tree if (node->IsSplitNode()) @@ -16548,7 +16729,11 @@ static void ImGui::DockNodeUpdate(ImGuiDockNode* node) if (node->IsRootNode() && host_window) { DockNodeTreeUpdatePosSize(node, host_window->Pos, host_window->Size); + PushStyleColor(ImGuiCol_Separator, g.Style.Colors[ImGuiCol_Border]); + PushStyleColor(ImGuiCol_SeparatorActive, g.Style.Colors[ImGuiCol_ResizeGripActive]); + PushStyleColor(ImGuiCol_SeparatorHovered, g.Style.Colors[ImGuiCol_ResizeGripHovered]); DockNodeTreeUpdateSplitter(node); + PopStyleColor(3); } // Draw empty node background (currently can only be the Central Node) @@ -16810,7 +16995,7 @@ static void ImGui::DockNodeUpdateTabBar(ImGuiDockNode* node, ImGuiWindow* host_w if (is_focused) node->LastFrameFocused = g.FrameCount; ImU32 title_bar_col = GetColorU32(host_window->Collapsed ? ImGuiCol_TitleBgCollapsed : is_focused ? ImGuiCol_TitleBgActive : ImGuiCol_TitleBg); - ImDrawFlags rounding_flags = CalcRoundingFlagsForRectInRect(title_bar_rect, host_window->Rect(), DOCKING_SPLITTER_SIZE); + ImDrawFlags rounding_flags = CalcRoundingFlagsForRectInRect(title_bar_rect, host_window->Rect(), g.Style.DockingSeparatorSize); host_window->DrawList->AddRectFilled(title_bar_rect.Min, title_bar_rect.Max, title_bar_col, host_window->WindowRounding, rounding_flags); // Docking/Collapse button @@ -16937,18 +17122,18 @@ static void ImGui::DockNodeUpdateTabBar(ImGuiDockNode* node, ImGuiWindow* host_w } // When clicking on the title bar outside of tabs, we still focus the selected tab for that node - // FIXME: TabItem use AllowItemOverlap so we manually perform a more specific test for now (hovered || held) + // FIXME: TabItems submitted earlier use AllowItemOverlap so we manually perform a more specific test for now (hovered || held) in order to not cover them. ImGuiID title_bar_id = host_window->GetID("#TITLEBAR"); if (g.HoveredId == 0 || g.HoveredId == title_bar_id || g.ActiveId == title_bar_id) { + // AllowItem mode required for appending into dock node tab bar, + // otherwise dragging window will steal HoveredId and amended tabs cannot get them. bool held; - ButtonBehavior(title_bar_rect, title_bar_id, NULL, &held, ImGuiButtonFlags_AllowItemOverlap); + KeepAliveID(title_bar_id); + ButtonBehavior(title_bar_rect, title_bar_id, NULL, &held, ImGuiButtonFlags_AllowOverlap); if (g.HoveredId == title_bar_id) { - // ImGuiButtonFlags_AllowItemOverlap + SetItemAllowOverlap() required for appending into dock node tab bar, - // otherwise dragging window will steal HoveredId and amended tabs cannot get them. g.LastItemData.ID = title_bar_id; - SetItemAllowOverlap(); } if (held) { @@ -17292,7 +17477,7 @@ static void ImGui::DockNodePreviewDockRender(ImGuiWindow* host_window, ImGuiDock overlay_rect.Min.y += GetFrameHeight(); if (data->SplitDir != ImGuiDir_None || data->IsCenterAvailable) for (int overlay_n = 0; overlay_n < overlay_draw_lists_count; overlay_n++) - overlay_draw_lists[overlay_n]->AddRectFilled(overlay_rect.Min, overlay_rect.Max, overlay_col_main, host_window->WindowRounding, CalcRoundingFlagsForRectInRect(overlay_rect, host_window->Rect(), DOCKING_SPLITTER_SIZE)); + overlay_draw_lists[overlay_n]->AddRectFilled(overlay_rect.Min, overlay_rect.Max, overlay_col_main, host_window->WindowRounding, CalcRoundingFlagsForRectInRect(overlay_rect, host_window->Rect(), g.Style.DockingSeparatorSize)); } // Display tab shape/label preview unless we are splitting node (it generally makes the situation harder to read) @@ -17409,7 +17594,7 @@ void ImGui::DockNodeTreeSplit(ImGuiContext* ctx, ImGuiDockNode* parent_node, ImG parent_node->VisibleWindow = NULL; parent_node->AuthorityForPos = parent_node->AuthorityForSize = ImGuiDataAuthority_DockNode; - float size_avail = (parent_node->Size[split_axis] - DOCKING_SPLITTER_SIZE); + float size_avail = (parent_node->Size[split_axis] - g.Style.DockingSeparatorSize); size_avail = ImMax(size_avail, g.Style.WindowMinSize[split_axis] * 2.0f); IM_ASSERT(size_avail > 0.0f); // If you created a node manually with DockBuilderAddNode(), you need to also call DockBuilderSetNodeSize() before splitting. child_0->SizeRef = child_1->SizeRef = parent_node->Size; @@ -17490,6 +17675,7 @@ void ImGui::DockNodeTreeUpdatePosSize(ImGuiDockNode* node, ImVec2 pos, ImVec2 si { // During the regular dock node update we write to all nodes. // 'only_write_to_single_node' is only set when turning a node visible mid-frame and we need its size right-away. + ImGuiContext& g = *GImGui; const bool write_to_node = only_write_to_single_node == NULL || only_write_to_single_node == node; if (write_to_node) { @@ -17512,8 +17698,7 @@ void ImGui::DockNodeTreeUpdatePosSize(ImGuiDockNode* node, ImVec2 pos, ImVec2 si if (child_0_is_or_will_be_visible && child_1_is_or_will_be_visible) { - ImGuiContext& g = *GImGui; - const float spacing = DOCKING_SPLITTER_SIZE; + const float spacing = g.Style.DockingSeparatorSize; const ImGuiAxis axis = (ImGuiAxis)node->SplitAxis; const float size_avail = ImMax(size[axis] - spacing, 0.0f); @@ -17963,12 +18148,16 @@ ImGuiID ImGui::DockSpaceOverViewport(const ImGuiViewport* viewport, ImGuiDockNod void ImGui::DockBuilderDockWindow(const char* window_name, ImGuiID node_id) { // We don't preserve relative order of multiple docked windows (by clearing DockOrder back to -1) + ImGuiContext& g = *GImGui; IM_UNUSED(g); + IMGUI_DEBUG_LOG_DOCKING("[docking] DockBuilderDockWindow '%s' to node 0x%08X\n", window_name, node_id); ImGuiID window_id = ImHashStr(window_name); if (ImGuiWindow* window = FindWindowByID(window_id)) { // Apply to created window + ImGuiID prev_node_id = window->DockId; SetWindowDock(window, node_id, ImGuiCond_Always); - window->DockOrder = -1; + if (window->DockId != prev_node_id) + window->DockOrder = -1; } else { @@ -17976,8 +18165,9 @@ void ImGui::DockBuilderDockWindow(const char* window_name, ImGuiID node_id) ImGuiWindowSettings* settings = FindWindowSettingsByID(window_id); if (settings == NULL) settings = CreateNewWindowSettings(window_name); + if (settings->DockId != node_id) + settings->DockOrder = -1; settings->DockId = node_id; - settings->DockOrder = -1; } } @@ -18015,22 +18205,24 @@ void ImGui::DockBuilderSetNodeSize(ImGuiID node_id, ImVec2 size) // For various reason, the splitting code currently needs a base size otherwise space may not be allocated as precisely as you would expect. // - Use (id == 0) to let the system allocate a node identifier. // - Existing node with a same id will be removed. -ImGuiID ImGui::DockBuilderAddNode(ImGuiID id, ImGuiDockNodeFlags flags) +ImGuiID ImGui::DockBuilderAddNode(ImGuiID node_id, ImGuiDockNodeFlags flags) { ImGuiContext* ctx = GImGui; + ImGuiContext& g = *ctx; IM_UNUSED(g); + IMGUI_DEBUG_LOG_DOCKING("[docking] DockBuilderAddNode 0x%08X flags=%08X\n", node_id, flags); - if (id != 0) - DockBuilderRemoveNode(id); + if (node_id != 0) + DockBuilderRemoveNode(node_id); ImGuiDockNode* node = NULL; if (flags & ImGuiDockNodeFlags_DockSpace) { - DockSpace(id, ImVec2(0, 0), (flags & ~ImGuiDockNodeFlags_DockSpace) | ImGuiDockNodeFlags_KeepAliveOnly); - node = DockContextFindNodeByID(ctx, id); + DockSpace(node_id, ImVec2(0, 0), (flags & ~ImGuiDockNodeFlags_DockSpace) | ImGuiDockNodeFlags_KeepAliveOnly); + node = DockContextFindNodeByID(ctx, node_id); } else { - node = DockContextAddNode(ctx, id); + node = DockContextAddNode(ctx, node_id); node->SetLocalFlags(flags); } node->LastFrameAlive = ctx->FrameCount; // Set this otherwise BeginDocked will undock during the same frame. @@ -18040,6 +18232,9 @@ ImGuiID ImGui::DockBuilderAddNode(ImGuiID id, ImGuiDockNodeFlags flags) void ImGui::DockBuilderRemoveNode(ImGuiID node_id) { ImGuiContext* ctx = GImGui; + ImGuiContext& g = *ctx; IM_UNUSED(g); + IMGUI_DEBUG_LOG_DOCKING("[docking] DockBuilderRemoveNode 0x%08X\n", node_id); + ImGuiDockNode* node = DockContextFindNodeByID(ctx, node_id); if (node == NULL) return; @@ -18500,7 +18695,7 @@ void ImGui::BeginDocked(ImGuiWindow* window, bool* p_open) { if (node->State == ImGuiDockNodeState_HostWindowHiddenBecauseWindowsAreResizing) window->DockIsActive = true; - if (node->Windows.Size > 1) + if (node->Windows.Size > 1 && window->Appearing) // Only hide appearing window DockNodeHideWindowDuringHostWindowCreation(window); return; } @@ -18859,24 +19054,24 @@ static void ImGui::DockSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettings if (node_settings->SelectedTabId) buf->appendf(" Selected=0x%08X", node_settings->SelectedTabId); -#if IMGUI_DEBUG_INI_SETTINGS - // [DEBUG] Include comments in the .ini file to ease debugging - if (ImGuiDockNode* node = DockContextFindNodeByID(ctx, node_settings->ID)) - { - buf->appendf("%*s", ImMax(2, (line_start_pos + 92) - buf->size()), ""); // Align everything - if (node->IsDockSpace() && node->HostWindow && node->HostWindow->ParentWindow) - buf->appendf(" ; in '%s'", node->HostWindow->ParentWindow->Name); - // Iterate settings so we can give info about windows that didn't exist during the session. - int contains_window = 0; - for (ImGuiWindowSettings* settings = g.SettingsWindows.begin(); settings != NULL; settings = g.SettingsWindows.next_chunk(settings)) - if (settings->DockId == node_settings->ID) - { - if (contains_window++ == 0) - buf->appendf(" ; contains "); - buf->appendf("'%s' ", settings->GetName()); - } - } -#endif + // [DEBUG] Include comments in the .ini file to ease debugging (this makes saving slower!) + if (g.IO.ConfigDebugIniSettings) + if (ImGuiDockNode* node = DockContextFindNodeByID(ctx, node_settings->ID)) + { + buf->appendf("%*s", ImMax(2, (line_start_pos + 92) - buf->size()), ""); // Align everything + if (node->IsDockSpace() && node->HostWindow && node->HostWindow->ParentWindow) + buf->appendf(" ; in '%s'", node->HostWindow->ParentWindow->Name); + // Iterate settings so we can give info about windows that didn't exist during the session. + int contains_window = 0; + for (ImGuiWindowSettings* settings = g.SettingsWindows.begin(); settings != NULL; settings = g.SettingsWindows.next_chunk(settings)) + if (settings->DockId == node_settings->ID) + { + if (contains_window++ == 0) + buf->appendf(" ; contains "); + buf->appendf("'%s' ", settings->GetName()); + } + } + buf->appendf("\n"); } buf->appendf("\n"); @@ -19226,7 +19421,7 @@ void ImGui::DebugTextEncoding(const char* str) static void MetricsHelpMarker(const char* desc) { ImGui::TextDisabled("(?)"); - if (ImGui::IsItemHovered(ImGuiHoveredFlags_DelayShort) && ImGui::BeginTooltip()) + if (ImGui::BeginItemTooltip()) { ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f); ImGui::TextUnformatted(desc); @@ -19321,7 +19516,7 @@ void ImGui::ShowMetricsWindow(bool* p_open) else if (rect_type == WRT_InnerRect) { return window->InnerRect; } else if (rect_type == WRT_InnerClipRect) { return window->InnerClipRect; } else if (rect_type == WRT_WorkRect) { return window->WorkRect; } - else if (rect_type == WRT_Content) { ImVec2 min = window->InnerRect.Min - window->Scroll + window->WindowPadding; return ImRect(min, min + window->ContentSize); } + else if (rect_type == WRT_Content) { ImVec2 min = window->InnerRect.Min - window->Scroll + window->WindowPadding; return ImRect(min, min + window->ContentSize); } else if (rect_type == WRT_ContentIdeal) { ImVec2 min = window->InnerRect.Min - window->Scroll + window->WindowPadding; return ImRect(min, min + window->ContentSizeIdeal); } else if (rect_type == WRT_ContentRegionRect) { return window->ContentRegionRect; } IM_ASSERT(0); @@ -19456,7 +19651,7 @@ void ImGui::ShowMetricsWindow(bool* p_open) // DrawLists int drawlist_count = 0; for (int viewport_i = 0; viewport_i < g.Viewports.Size; viewport_i++) - drawlist_count += g.Viewports[viewport_i]->DrawDataBuilder.GetDrawListCount(); + drawlist_count += g.Viewports[viewport_i]->DrawDataP.CmdLists.Size; if (TreeNode("DrawLists", "DrawLists (%d)", drawlist_count)) { Checkbox("Show ImDrawCmd mesh when hovering", &cfg->ShowDrawCmdMesh); @@ -19465,14 +19660,13 @@ void ImGui::ShowMetricsWindow(bool* p_open) { ImGuiViewportP* viewport = g.Viewports[viewport_i]; bool viewport_has_drawlist = false; - for (int layer_i = 0; layer_i < IM_ARRAYSIZE(viewport->DrawDataBuilder.Layers); layer_i++) - for (int draw_list_i = 0; draw_list_i < viewport->DrawDataBuilder.Layers[layer_i].Size; draw_list_i++) - { - if (!viewport_has_drawlist) - Text("Active DrawLists in Viewport #%d, ID: 0x%08X", viewport->Idx, viewport->ID); - viewport_has_drawlist = true; - DebugNodeDrawList(NULL, viewport, viewport->DrawDataBuilder.Layers[layer_i][draw_list_i], "DrawList"); - } + for (int draw_list_i = 0; draw_list_i < viewport->DrawDataP.CmdLists.Size; draw_list_i++) + { + if (!viewport_has_drawlist) + Text("Active DrawLists in Viewport #%d, ID: 0x%08X", viewport->Idx, viewport->ID); + viewport_has_drawlist = true; + DebugNodeDrawList(NULL, viewport, viewport->DrawDataP.CmdLists[draw_list_i], "DrawList"); + } } TreePop(); } @@ -19607,11 +19801,12 @@ void ImGui::ShowMetricsWindow(bool* p_open) Text("\"%s\"", g.IO.IniFilename); else TextUnformatted(""); + Checkbox("io.ConfigDebugIniSettings", &io.ConfigDebugIniSettings); Text("SettingsDirtyTimer %.2f", g.SettingsDirtyTimer); if (TreeNode("SettingsHandlers", "Settings handlers: (%d)", g.SettingsHandlers.Size)) { for (int n = 0; n < g.SettingsHandlers.Size; n++) - BulletText("%s", g.SettingsHandlers[n].TypeName); + BulletText("\"%s\"", g.SettingsHandlers[n].TypeName); TreePop(); } if (TreeNode("SettingsWindows", "Settings packed data: Windows: %d bytes", g.SettingsWindows.size())) @@ -19635,7 +19830,7 @@ void ImGui::ShowMetricsWindow(bool* p_open) Text("In SettingsWindows:"); for (ImGuiWindowSettings* settings = g.SettingsWindows.begin(); settings != NULL; settings = g.SettingsWindows.next_chunk(settings)) if (settings->DockId != 0) - BulletText("Window '%s' -> DockId %08X", settings->GetName(), settings->DockId); + BulletText("Window '%s' -> DockId %08X DockOrder=%d", settings->GetName(), settings->DockId, settings->DockOrder); Text("In SettingsNodes:"); for (int n = 0; n < dc->NodesSettings.Size; n++) { @@ -19697,6 +19892,7 @@ void ImGui::ShowMetricsWindow(bool* p_open) Text("Mouse clicked:"); for (int i = 0; i < count; i++) if (IsMouseClicked(i)) { SameLine(); Text("b%d (%d)", i, io.MouseClickedCount[i]); } Text("Mouse released:"); for (int i = 0; i < count; i++) if (IsMouseReleased(i)) { SameLine(); Text("b%d", i); } Text("Mouse wheel: %.1f", io.MouseWheel); + Text("MouseStationaryTimer: %.2f", g.MouseStationaryTimer); Text("Mouse source: %s", GetMouseSourceName(io.MouseSource)); Text("Pen Pressure: %.1f", io.PenPressure); // Note: currently unused Unindent(); @@ -19774,7 +19970,7 @@ void ImGui::ShowMetricsWindow(bool* p_open) Text("ActiveIdWindow: '%s'", g.ActiveIdWindow ? g.ActiveIdWindow->Name : "NULL"); Text("ActiveIdUsing: AllKeyboardKeys: %d, NavDirMask: %X", g.ActiveIdUsingAllKeyboardKeys, g.ActiveIdUsingNavDirMask); Text("HoveredId: 0x%08X (%.2f sec), AllowOverlap: %d", g.HoveredIdPreviousFrame, g.HoveredIdTimer, g.HoveredIdAllowOverlap); // Not displaying g.HoveredId as it is update mid-frame - Text("HoverDelayId: 0x%08X, Timer: %.2f, ClearTimer: %.2f", g.HoverDelayId, g.HoverDelayTimer, g.HoverDelayClearTimer); + Text("HoverItemDelayId: 0x%08X, Timer: %.2f, ClearTimer: %.2f", g.HoverItemDelayId, g.HoverItemDelayTimer, g.HoverItemDelayClearTimer); Text("DragDrop: %d, SourceId = 0x%08X, Payload \"%s\" (%d bytes)", g.DragDropActive, g.DragDropPayload.SourceId, g.DragDropPayload.DataType, g.DragDropPayload.DataSize); DebugLocateItemOnHover(g.DragDropPayload.SourceId); Unindent(); @@ -20274,9 +20470,8 @@ void ImGui::DebugNodeViewport(ImGuiViewportP* viewport) (flags & ImGuiViewportFlags_NoAutoMerge) ? " NoAutoMerge" : "", (flags & ImGuiViewportFlags_TopMost) ? " TopMost" : "", (flags & ImGuiViewportFlags_CanHostOtherWindows) ? " CanHostOtherWindows" : ""); - for (int layer_i = 0; layer_i < IM_ARRAYSIZE(viewport->DrawDataBuilder.Layers); layer_i++) - for (int draw_list_i = 0; draw_list_i < viewport->DrawDataBuilder.Layers[layer_i].Size; draw_list_i++) - DebugNodeDrawList(NULL, viewport, viewport->DrawDataBuilder.Layers[layer_i][draw_list_i], "DrawList"); + for (int draw_list_i = 0; draw_list_i < viewport->DrawDataP.CmdLists.Size; draw_list_i++) + DebugNodeDrawList(NULL, viewport, viewport->DrawDataP.CmdLists[draw_list_i], "DrawList"); TreePop(); } } diff --git a/extern/imgui_patched/imgui.h b/extern/imgui_patched/imgui.h index 3ee53ac5c..2acd2532e 100644 --- a/extern/imgui_patched/imgui.h +++ b/extern/imgui_patched/imgui.h @@ -1,4 +1,4 @@ -// dear imgui, v1.89.6 +// dear imgui, v1.89.8 // (headers) // Help: @@ -9,21 +9,24 @@ // Resources: // - FAQ http://dearimgui.com/faq -// - Homepage & latest https://github.com/ocornut/imgui +// - Homepage https://github.com/ocornut/imgui // - Releases & changelog https://github.com/ocornut/imgui/releases // - Gallery https://github.com/ocornut/imgui/issues/6478 (please post your screenshots/video there!) // - Wiki https://github.com/ocornut/imgui/wiki (lots of good stuff there) +// - Getting Started https://github.com/ocornut/imgui/wiki/Getting-Started // - Glossary https://github.com/ocornut/imgui/wiki/Glossary // - Issues & support https://github.com/ocornut/imgui/issues +// - Tests & Automation https://github.com/ocornut/imgui_test_engine // Getting Started? -// - For first-time users having issues compiling/linking/running or issues loading fonts: +// - Read https://github.com/ocornut/imgui/wiki/Getting-Started +// - For first-time users having issues compiling/linking/running/loading fonts: // please post in https://github.com/ocornut/imgui/discussions if you cannot find a solution in resources above. // Library Version // (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345') -#define IMGUI_VERSION "1.89.6" -#define IMGUI_VERSION_NUM 18960 +#define IMGUI_VERSION "1.89.8" +#define IMGUI_VERSION_NUM 18980 #define IMGUI_HAS_TABLE #define IMGUI_HAS_VIEWPORT // Viewport WIP branch #define IMGUI_HAS_DOCK // Docking WIP branch @@ -115,10 +118,13 @@ Index of this file: #endif #if defined(__clang__) #pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wold-style-cast" -#if __has_warning("-Wzero-as-null-pointer-constant") -#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" +#if __has_warning("-Wunknown-warning-option") +#pragma clang diagnostic ignored "-Wunknown-warning-option" // warning: unknown warning group 'xxx' #endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" // warning: unknown warning group 'xxx' +#pragma clang diagnostic ignored "-Wold-style-cast" +#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" +#pragma clang diagnostic ignored "-Wreserved-identifier" // warning: identifier '_Xxx' is reserved because it starts with '_' followed by a capital letter #elif defined(__GNUC__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wpragmas" // warning: unknown option after '#pragma GCC diagnostic' kind @@ -672,12 +678,21 @@ namespace ImGui IMGUI_API bool MenuItem(const char* label, const char* shortcut, bool* p_selected, bool enabled = true); // return true when activated + toggle (*p_selected) if p_selected != NULL // Tooltips - // - Tooltip are windows following the mouse. They do not take focus away. - IMGUI_API bool BeginTooltip(); // begin/append a tooltip window. to create full-featured tooltip (with any kind of items). - IMGUI_API void EndTooltip(); // only call EndTooltip() if BeginTooltip() returns true! - IMGUI_API void SetTooltip(const char* fmt, ...) IM_FMTARGS(1); // set a text-only tooltip, typically use with ImGui::IsItemHovered(). override any previous call to SetTooltip(). + // - Tooltips are windows following the mouse. They do not take focus away. + // - A tooltip window can contain items of any types. SetTooltip() is a shortcut for the 'if (BeginTooltip()) { Text(...); EndTooltip(); }' idiom. + IMGUI_API bool BeginTooltip(); // begin/append a tooltip window. + IMGUI_API void EndTooltip(); // only call EndTooltip() if BeginTooltip()/BeginItemTooltip() returns true! + IMGUI_API void SetTooltip(const char* fmt, ...) IM_FMTARGS(1); // set a text-only tooltip. Often used after a ImGui::IsItemHovered() check. Override any previous call to SetTooltip(). IMGUI_API void SetTooltipV(const char* fmt, va_list args) IM_FMTLIST(1); + // Tooltips: helpers for showing a tooltip when hovering an item + // - BeginItemTooltip() is a shortcut for the 'if (IsItemHovered(ImGuiHoveredFlags_Tooltip) && BeginTooltip())' idiom. + // - SetItemTooltip() is a shortcut for the 'if (IsItemHovered(ImGuiHoveredFlags_Tooltip)) { SetTooltip(...); }' idiom. + // - Where 'ImGuiHoveredFlags_Tooltip' itself is a shortcut to use 'style.HoverFlagsForTooltipMouse' or 'style.HoverFlagsForTooltipNav' depending on active input type. For mouse it defaults to 'ImGuiHoveredFlags_Stationary | ImGuiHoveredFlags_DelayShort'. + IMGUI_API bool BeginItemTooltip(); // begin/append a tooltip window if preceding item was hovered. + IMGUI_API void SetItemTooltip(const char* fmt, ...) IM_FMTARGS(1); // set a text-only tooltip if preceeding item was hovered. override any previous call to SetTooltip(). + IMGUI_API void SetItemTooltipV(const char* fmt, va_list args) IM_FMTLIST(1); + // Popups, Modals // - They block normal mouse hovering detection (and therefore most mouse interactions) behind them. // - If not modal: they can be closed by clicking anywhere outside them, or by pressing ESCAPE. @@ -806,9 +821,9 @@ namespace ImGui // - Drag from window menu button (upper-left button) to undock an entire node (all windows). // - When io.ConfigDockingWithShift == true, you instead need to hold SHIFT to _enable_ docking/undocking. // About dockspaces: - // - Use DockSpace() to create an explicit dock node _within_ an existing window. See Docking demo for details. // - Use DockSpaceOverViewport() to create an explicit dock node covering the screen or a specific viewport. - // This is often used with ImGuiDockNodeFlags_PassthruCentralNode. + // This is often used with ImGuiDockNodeFlags_PassthruCentralNode to make it transparent. + // - Use DockSpace() to create an explicit dock node _within_ an existing window. See Docking demo for details. // - Important: Dockspaces need to be submitted _before_ any window they can host. Submit it early in your frame! // - Important: Dockspaces need to be kept alive if hidden, otherwise windows docked into it will be undocked. // e.g. if you have multiple tabs with a dockspace inside each tab: submit the non-visible dockspaces with ImGuiDockNodeFlags_KeepAliveOnly. @@ -864,6 +879,9 @@ namespace ImGui IMGUI_API void SetItemDefaultFocus(); // make last item the default focused item of a window. IMGUI_API void SetKeyboardFocusHere(int offset = 0); // focus keyboard on the next widget. Use positive 'offset' to access sub components of a multiple component widget. Use -1 to access previous widget. + // Overlapping mode + IMGUI_API void SetNextItemAllowOverlap(); // allow next item to be overlapped by a subsequent item. Useful with invisible buttons, selectable, treenode covering an area where subsequent items may need to be added. Note that both Selectable() and TreeNode() have dedicated flags doing this. + // Item/Widgets Utilities and Query Functions // - Most of the functions are referring to the previous Item that has been submitted. // - See Demo Window under "Widgets->Querying Status" for an interactive visualization of most of those functions. @@ -884,7 +902,6 @@ namespace ImGui IMGUI_API ImVec2 GetItemRectMin(); // get upper-left bounding rectangle of the last item (screen space) IMGUI_API ImVec2 GetItemRectMax(); // get lower-right bounding rectangle of the last item (screen space) IMGUI_API ImVec2 GetItemRectSize(); // get size of last item - IMGUI_API void SetItemAllowOverlap(); // allow last item to be overlapped by a subsequent item. sometimes useful with invisible buttons, selectables, etc. to catch unused area. // Viewports // - Currently represents the Platform Window created by the application which is hosting our Dear ImGui windows. @@ -1073,7 +1090,7 @@ enum ImGuiTreeNodeFlags_ ImGuiTreeNodeFlags_None = 0, ImGuiTreeNodeFlags_Selected = 1 << 0, // Draw as selected ImGuiTreeNodeFlags_Framed = 1 << 1, // Draw frame with background (e.g. for CollapsingHeader) - ImGuiTreeNodeFlags_AllowItemOverlap = 1 << 2, // Hit testing to allow subsequent widgets to overlap this one + ImGuiTreeNodeFlags_AllowOverlap = 1 << 2, // Hit testing to allow subsequent widgets to overlap this one ImGuiTreeNodeFlags_NoTreePushOnOpen = 1 << 3, // Don't do a TreePush() when open (e.g. for CollapsingHeader) = no extra indent nor pushing on ID stack ImGuiTreeNodeFlags_NoAutoOpenOnLog = 1 << 4, // Don't automatically and temporarily open node when Logging is active (by default logging will automatically open tree nodes) ImGuiTreeNodeFlags_DefaultOpen = 1 << 5, // Default node to be open @@ -1087,6 +1104,10 @@ enum ImGuiTreeNodeFlags_ ImGuiTreeNodeFlags_NavLeftJumpsBackHere = 1 << 13, // (WIP) Nav: left direction may move to this TreeNode() from any of its child (items submitted between TreeNode and TreePop) //ImGuiTreeNodeFlags_NoScrollOnOpen = 1 << 14, // FIXME: TODO: Disable automatic scroll on TreePop() if node got just open and contents is not visible ImGuiTreeNodeFlags_CollapsingHeader = ImGuiTreeNodeFlags_Framed | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_NoAutoOpenOnLog, + +#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS + ImGuiTreeNodeFlags_AllowItemOverlap = ImGuiTreeNodeFlags_AllowOverlap, // Renamed in 1.89.7 +#endif }; // Flags for OpenPopup*(), BeginPopupContext*(), IsPopupOpen() functions. @@ -1120,7 +1141,11 @@ enum ImGuiSelectableFlags_ ImGuiSelectableFlags_SpanAllColumns = 1 << 1, // Selectable frame can span all columns (text will still fit in current column) ImGuiSelectableFlags_AllowDoubleClick = 1 << 2, // Generate press events on double clicks too ImGuiSelectableFlags_Disabled = 1 << 3, // Cannot be selected, display grayed out text - ImGuiSelectableFlags_AllowItemOverlap = 1 << 4, // (WIP) Hit testing to allow subsequent widgets to overlap this one + ImGuiSelectableFlags_AllowOverlap = 1 << 4, // (WIP) Hit testing to allow subsequent widgets to overlap this one + +#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS + ImGuiSelectableFlags_AllowItemOverlap = ImGuiSelectableFlags_AllowOverlap, // Renamed in 1.89.7 +#endif }; // Flags for ImGui::BeginCombo() @@ -1329,16 +1354,30 @@ enum ImGuiHoveredFlags_ ImGuiHoveredFlags_AllowWhenBlockedByPopup = 1 << 5, // Return true even if a popup window is normally blocking access to this item/window //ImGuiHoveredFlags_AllowWhenBlockedByModal = 1 << 6, // Return true even if a modal popup window is normally blocking access to this item/window. FIXME-TODO: Unavailable yet. ImGuiHoveredFlags_AllowWhenBlockedByActiveItem = 1 << 7, // Return true even if an active item is blocking access to this item/window. Useful for Drag and Drop patterns. - ImGuiHoveredFlags_AllowWhenOverlapped = 1 << 8, // IsItemHovered() only: Return true even if the position is obstructed or overlapped by another window - ImGuiHoveredFlags_AllowWhenDisabled = 1 << 9, // IsItemHovered() only: Return true even if the item is disabled - ImGuiHoveredFlags_NoNavOverride = 1 << 10, // Disable using gamepad/keyboard navigation state when active, always query mouse. + ImGuiHoveredFlags_AllowWhenOverlappedByItem = 1 << 8, // IsItemHovered() only: Return true even if the item uses AllowOverlap mode and is overlapped by another hoverable item. + ImGuiHoveredFlags_AllowWhenOverlappedByWindow = 1 << 9, // IsItemHovered() only: Return true even if the position is obstructed or overlapped by another window. + ImGuiHoveredFlags_AllowWhenDisabled = 1 << 10, // IsItemHovered() only: Return true even if the item is disabled + ImGuiHoveredFlags_NoNavOverride = 1 << 11, // IsItemHovered() only: Disable using gamepad/keyboard navigation state when active, always query mouse + ImGuiHoveredFlags_AllowWhenOverlapped = ImGuiHoveredFlags_AllowWhenOverlappedByItem | ImGuiHoveredFlags_AllowWhenOverlappedByWindow, ImGuiHoveredFlags_RectOnly = ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_AllowWhenOverlapped, ImGuiHoveredFlags_RootAndChildWindows = ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_ChildWindows, - // Hovering delays (for tooltips) - ImGuiHoveredFlags_DelayNormal = 1 << 11, // Return true after io.HoverDelayNormal elapsed (~0.30 sec) - ImGuiHoveredFlags_DelayShort = 1 << 12, // Return true after io.HoverDelayShort elapsed (~0.10 sec) - ImGuiHoveredFlags_NoSharedDelay = 1 << 13, // Disable shared delay system where moving from one item to the next keeps the previous timer for a short time (standard for tooltips with long delays) + // Tooltips mode + // - typically used in IsItemHovered() + SetTooltip() sequence. + // - this is a shortcut to pull flags from 'style.HoverFlagsForTooltipMouse' or 'style.HoverFlagsForTooltipNav' where you can reconfigure desired behavior. + // e.g. 'TooltipHoveredFlagsForMouse' defaults to 'ImGuiHoveredFlags_Stationary | ImGuiHoveredFlags_DelayShort'. + // - for frequently actioned or hovered items providing a tooltip, you want may to use ImGuiHoveredFlags_ForTooltip (stationary + delay) so the tooltip doesn't show too often. + // - for items which main purpose is to be hovered, or items with low affordance, or in less consistent apps, prefer no delay or shorter delay. + ImGuiHoveredFlags_ForTooltip = 1 << 12, // Shortcut for standard flags when using IsItemHovered() + SetTooltip() sequence. + + // (Advanced) Mouse Hovering delays. + // - generally you can use ImGuiHoveredFlags_ForTooltip to use application-standardized flags. + // - use those if you need specific overrides. + ImGuiHoveredFlags_Stationary = 1 << 13, // Require mouse to be stationary for style.HoverStationaryDelay (~0.15 sec) _at least one time_. After this, can move on same item/window. Using the stationary test tends to reduces the need for a long delay. + ImGuiHoveredFlags_DelayNone = 1 << 14, // IsItemHovered() only: Return true immediately (default). As this is the default you generally ignore this. + ImGuiHoveredFlags_DelayShort = 1 << 15, // IsItemHovered() only: Return true after style.HoverDelayShort elapsed (~0.15 sec) (shared between items) + requires mouse to be stationary for style.HoverStationaryDelay (once per item). + ImGuiHoveredFlags_DelayNormal = 1 << 16, // IsItemHovered() only: Return true after style.HoverDelayNormal elapsed (~0.40 sec) (shared between items) + requires mouse to be stationary for style.HoverStationaryDelay (once per item). + ImGuiHoveredFlags_NoSharedDelay = 1 << 17, // IsItemHovered() only: Disable shared delay system where moving from one item to the next keeps the previous timer for a short time (standard for tooltips with long delays) }; // Flags for ImGui::DockSpace(), shared/inherited by child nodes. @@ -1700,6 +1739,7 @@ enum ImGuiStyleVar_ ImGuiStyleVar_SeparatorTextBorderSize,// float SeparatorTextBorderSize ImGuiStyleVar_SeparatorTextAlign, // ImVec2 SeparatorTextAlign ImGuiStyleVar_SeparatorTextPadding,// ImVec2 SeparatorTextPadding + ImGuiStyleVar_DockingSeparatorSize,// float DockingSeparatorSize ImGuiStyleVar_COUNT }; @@ -1971,6 +2011,7 @@ struct ImGuiStyle ImVec2 SeparatorTextPadding; // Horizontal offset of text from each edge of the separator + spacing on other axis. Generally small values. .y is recommended to be == FramePadding.y. ImVec2 DisplayWindowPadding; // Window position are clamped to be visible within the display area or monitors by at least this amount. Only applies to regular windows. ImVec2 DisplaySafeAreaPadding; // If you cannot see the edges of your screen (e.g. on a TV) increase the safe area padding. Apply to popups/tooltips as well regular windows. NB: Prefer configuring your TV sets correctly! + float DockingSeparatorSize; // Thickness of resizing border between docked windows float MouseCursorScale; // Scale software rendered mouse cursor (when io.MouseDrawCursor is enabled). We apply per-monitor DPI scaling over this scale. May be removed later. bool AntiAliasedLines; // Enable anti-aliased lines/borders. Disable if you are really tight on CPU/GPU. Latched at the beginning of the frame (copied to ImDrawList). bool AntiAliasedLinesUseTex; // Enable anti-aliased lines/borders using textures where possible. Require backend to render with bilinear filtering (NOT point/nearest filtering). Latched at the beginning of the frame (copied to ImDrawList). @@ -1979,6 +2020,14 @@ struct ImGuiStyle float CircleTessellationMaxError; // Maximum error (in pixels) allowed when using AddCircle()/AddCircleFilled() or drawing rounded corner rectangles with no explicit segment count specified. Decrease for higher quality but more geometry. ImVec4 Colors[ImGuiCol_COUNT]; + // Behaviors + // (It is possible to modify those fields mid-frame if specific behavior need it, unlike e.g. configuration fields in ImGuiIO) + float HoverStationaryDelay; // Delay for IsItemHovered(ImGuiHoveredFlags_Stationary). Time required to consider mouse stationary. + float HoverDelayShort; // Delay for IsItemHovered(ImGuiHoveredFlags_DelayShort). Usually used along with HoverStationaryDelay. + float HoverDelayNormal; // Delay for IsItemHovered(ImGuiHoveredFlags_DelayNormal). " + ImGuiHoveredFlags HoverFlagsForTooltipMouse;// Default flags when using IsItemHovered(ImGuiHoveredFlags_ForTooltip) or BeginItemTooltip()/SetItemTooltip() while using mouse. + ImGuiHoveredFlags HoverFlagsForTooltipNav; // Default flags when using IsItemHovered(ImGuiHoveredFlags_ForTooltip) or BeginItemTooltip()/SetItemTooltip() while using keyboard/gamepad. + IMGUI_API ImGuiStyle(); IMGUI_API void ScaleAllSizes(float scale_factor); }; @@ -2013,13 +2062,6 @@ struct ImGuiIO float IniSavingRate; // = 5.0f // Minimum time between saving positions/sizes to .ini file, in seconds. const char* IniFilename; // = "imgui.ini" // Path to .ini file (important: default "imgui.ini" is relative to current working dir!). Set NULL to disable automatic .ini loading/saving or if you want to manually call LoadIniSettingsXXX() / SaveIniSettingsXXX() functions. const char* LogFilename; // = "imgui_log.txt"// Path to .log file (default parameter to ImGui::LogToFile when no file is specified). - float MouseDoubleClickTime; // = 0.30f // Time for a double-click, in seconds. - float MouseDoubleClickMaxDist; // = 6.0f // Distance threshold to stay in to validate a double-click, in pixels. - float MouseDragThreshold; // = 6.0f // Distance threshold before considering we are dragging. - float KeyRepeatDelay; // = 0.275f // When holding a key/button, time before it starts repeating, in seconds (for buttons in Repeat mode, etc.). - float KeyRepeatRate; // = 0.050f // When holding a key/button, rate at which it repeats, in seconds. - float HoverDelayNormal; // = 0.30 sec // Delay on hovering before IsItemHovered(ImGuiHoveredFlags_DelayNormal) returns true. - float HoverDelayShort; // = 0.10 sec // Delay on hovering before IsItemHovered(ImGuiHoveredFlags_DelayShort) returns true. void* UserData; // = NULL // Store your own data. ImFontAtlas*Fonts; // // Font atlas: load, rasterize and pack one or more fonts into a single texture. @@ -2054,18 +2096,33 @@ struct ImGuiIO bool ConfigWindowsMoveFromTitleBarOnly; // = false // Enable allowing to move windows only when clicking on their title bar. Does not apply to windows without a title bar. float ConfigMemoryCompactTimer; // = 60.0f // Timer (in seconds) to free transient windows/tables memory buffers when unused. Set to -1.0f to disable. + // Inputs Behaviors + // (other variables, ones which are expected to be tweaked within UI code, are exposed in ImGuiStyle) + float MouseDoubleClickTime; // = 0.30f // Time for a double-click, in seconds. + float MouseDoubleClickMaxDist; // = 6.0f // Distance threshold to stay in to validate a double-click, in pixels. + float MouseDragThreshold; // = 6.0f // Distance threshold before considering we are dragging. + float KeyRepeatDelay; // = 0.275f // When holding a key/button, time before it starts repeating, in seconds (for buttons in Repeat mode, etc.). + float KeyRepeatRate; // = 0.050f // When holding a key/button, rate at which it repeats, in seconds. + + //------------------------------------------------------------------ // Debug options - // - tools to test correct Begin/End and BeginChild/EndChild behaviors. - // - presently Begin()/End() and BeginChild()/EndChild() needs to ALWAYS be called in tandem, regardless of return value of BeginXXX() - // this is inconsistent with other BeginXXX functions and create confusion for many users. - // - we expect to update the API eventually. In the meanwhile we provide tools to facilitate checking user-code behavior. + //------------------------------------------------------------------ + + // Tools to test correct Begin/End and BeginChild/EndChild behaviors. + // Presently Begin()/End() and BeginChild()/EndChild() needs to ALWAYS be called in tandem, regardless of return value of BeginXXX() + // This is inconsistent with other BeginXXX functions and create confusion for many users. + // We expect to update the API eventually. In the meanwhile we provide tools to facilitate checking user-code behavior. bool ConfigDebugBeginReturnValueOnce;// = false // First-time calls to Begin()/BeginChild() will return false. NEEDS TO BE SET AT APPLICATION BOOT TIME if you don't want to miss windows. bool ConfigDebugBeginReturnValueLoop;// = false // Some calls to Begin()/BeginChild() will return false. Will cycle through window depths then repeat. Suggested use: add "io.ConfigDebugBeginReturnValue = io.KeyShift" in your main loop then occasionally press SHIFT. Windows should be flickering while running. - // - option to deactivate io.AddFocusEvent(false) handling. May facilitate interactions with a debugger when focus loss leads to clearing inputs data. - // - backends may have other side-effects on focus loss, so this will reduce side-effects but not necessary remove all of them. - // - consider using e.g. Win32's IsDebuggerPresent() as an additional filter (or see ImOsIsDebuggerPresent() in imgui_test_engine/imgui_te_utils.cpp for a Unix compatible version). + + // Option to deactivate io.AddFocusEvent(false) handling. May facilitate interactions with a debugger when focus loss leads to clearing inputs data. + // Backends may have other side-effects on focus loss, so this will reduce side-effects but not necessary remove all of them. + // Consider using e.g. Win32's IsDebuggerPresent() as an additional filter (or see ImOsIsDebuggerPresent() in imgui_test_engine/imgui_te_utils.cpp for a Unix compatible version). bool ConfigDebugIgnoreFocusLoss; // = false // Ignore io.AddFocusEvent(false), consequently not calling io.ClearInputKeys() in input processing. + // Option to audit .ini data + bool ConfigDebugIniSettings; // = false // Save .ini data with extra comments (particularly helpful for Docking, but makes saving slower) + //------------------------------------------------------------------ // Platform Functions // (the imgui_impl_xxxx backend files are setting those up for you) @@ -2112,8 +2169,11 @@ struct ImGuiIO IMGUI_API void SetKeyEventNativeData(ImGuiKey key, int native_keycode, int native_scancode, int native_legacy_index = -1); // [Optional] Specify index for legacy <1.87 IsKeyXXX() functions with native indices + specify native keycode, scancode. IMGUI_API void SetAppAcceptingEvents(bool accepting_events); // Set master flag for accepting key/mouse/text events (default to true). Useful if you have native dialog boxes that are interrupting your application loop/refresh, and you want to disable events being queued while your app is frozen. - IMGUI_API void ClearInputCharacters(); // [Internal] Clear the text input buffer manually - IMGUI_API void ClearInputKeys(); // [Internal] Release all keys + IMGUI_API void ClearEventsQueue(); // Clear all incoming events. + IMGUI_API void ClearInputKeys(); // Clear current keyboard/mouse/gamepad state + current frame text input buffer. Equivalent to releasing all keys/buttons. +#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS + IMGUI_API void ClearInputCharacters(); // [Obsolete] Clear the current frame text input buffer. Now included within ClearInputKeys(). +#endif //------------------------------------------------------------------ // Output - Updated by NewFrame() or EndFrame()/Render() @@ -2544,8 +2604,8 @@ struct ImColor constexpr ImColor() { } constexpr ImColor(float r, float g, float b, float a = 1.0f) : Value(r, g, b, a) { } constexpr ImColor(const ImVec4& col) : Value(col) {} - ImColor(int r, int g, int b, int a = 255) { float sc = 1.0f / 255.0f; Value.x = (float)r * sc; Value.y = (float)g * sc; Value.z = (float)b * sc; Value.w = (float)a * sc; } - ImColor(ImU32 rgba) { float sc = 1.0f / 255.0f; Value.x = (float)((rgba >> IM_COL32_R_SHIFT) & 0xFF) * sc; Value.y = (float)((rgba >> IM_COL32_G_SHIFT) & 0xFF) * sc; Value.z = (float)((rgba >> IM_COL32_B_SHIFT) & 0xFF) * sc; Value.w = (float)((rgba >> IM_COL32_A_SHIFT) & 0xFF) * sc; } + constexpr ImColor(int r, int g, int b, int a = 255) : Value((float)r * (1.0f / 255.0f), (float)g * (1.0f / 255.0f), (float)b * (1.0f / 255.0f), (float)a* (1.0f / 255.0f)) {} + constexpr ImColor(ImU32 rgba) : Value((float)((rgba >> IM_COL32_R_SHIFT) & 0xFF) * (1.0f / 255.0f), (float)((rgba >> IM_COL32_G_SHIFT) & 0xFF) * (1.0f / 255.0f), (float)((rgba >> IM_COL32_B_SHIFT) & 0xFF) * (1.0f / 255.0f), (float)((rgba >> IM_COL32_A_SHIFT) & 0xFF) * (1.0f / 255.0f)) {} inline operator ImU32() const { return ImGui::ColorConvertFloat4ToU32(Value); } inline operator ImVec4() const { return Value; } @@ -2820,19 +2880,20 @@ struct ImDrawList // as this is one of the oldest structure exposed by the library! Basically, ImDrawList == CmdList) struct ImDrawData { - bool Valid; // Only valid after Render() is called and before the next NewFrame() is called. - int CmdListsCount; // Number of ImDrawList* to render - int TotalIdxCount; // For convenience, sum of all ImDrawList's IdxBuffer.Size - int TotalVtxCount; // For convenience, sum of all ImDrawList's VtxBuffer.Size - ImDrawList** CmdLists; // Array of ImDrawList* to render. The ImDrawList are owned by ImGuiContext and only pointed to from here. - ImVec2 DisplayPos; // Top-left position of the viewport to render (== top-left of the orthogonal projection matrix to use) (== GetMainViewport()->Pos for the main viewport, == (0.0) in most single-viewport applications) - ImVec2 DisplaySize; // Size of the viewport to render (== GetMainViewport()->Size for the main viewport, == io.DisplaySize in most single-viewport applications) - ImVec2 FramebufferScale; // Amount of pixels for each unit of DisplaySize. Based on io.DisplayFramebufferScale. Generally (1,1) on normal display, (2,2) on OSX with Retina display. - ImGuiViewport* OwnerViewport; // Viewport carrying the ImDrawData instance, might be of use to the renderer (generally not). + bool Valid; // Only valid after Render() is called and before the next NewFrame() is called. + int CmdListsCount; // Number of ImDrawList* to render + int TotalIdxCount; // For convenience, sum of all ImDrawList's IdxBuffer.Size + int TotalVtxCount; // For convenience, sum of all ImDrawList's VtxBuffer.Size + ImVector CmdLists; // Array of ImDrawList* to render. The ImDrawLists are owned by ImGuiContext and only pointed to from here. + ImVec2 DisplayPos; // Top-left position of the viewport to render (== top-left of the orthogonal projection matrix to use) (== GetMainViewport()->Pos for the main viewport, == (0.0) in most single-viewport applications) + ImVec2 DisplaySize; // Size of the viewport to render (== GetMainViewport()->Size for the main viewport, == io.DisplaySize in most single-viewport applications) + ImVec2 FramebufferScale; // Amount of pixels for each unit of DisplaySize. Based on io.DisplayFramebufferScale. Generally (1,1) on normal display, (2,2) on OSX with Retina display. + ImGuiViewport* OwnerViewport; // Viewport carrying the ImDrawData instance, might be of use to the renderer (generally not). // Functions ImDrawData() { Clear(); } - void Clear() { memset(this, 0, sizeof(*this)); } // The ImDrawList are owned by ImGuiContext! + IMGUI_API void Clear(); + IMGUI_API void AddDrawList(ImDrawList* draw_list); // Helper to add an external draw list into an existing ImDrawData. IMGUI_API void DeIndexAllBuffers(); // Helper to convert all buffers from indexed to non-indexed, in case you cannot render indexed. Note: this is slow and most likely a waste of resources. Always prefer indexed rendering! IMGUI_API void ScaleClipRects(const ImVec2& fb_scale); // Helper to scale the ClipRect field of each ImDrawCmd. Use if your final output buffer is at a different scale than Dear ImGui expects, or if there is a difference between your window resolution and framebuffer resolution. }; @@ -2848,7 +2909,7 @@ struct ImFontConfig bool FontDataOwnedByAtlas; // true // TTF/OTF data ownership taken by the container ImFontAtlas (will delete memory itself). int FontNo; // 0 // Index of font within TTF/OTF file float SizePixels; // // Size in pixels for rasterizer (more or less maps to the resulting font height). - int OversampleH; // 3 // Rasterize at higher quality for sub-pixel positioning. Note the difference between 2 and 3 is minimal so you can reduce this to 2 to save memory. Read https://github.com/nothings/stb/blob/master/tests/oversample/README.md for details. + int OversampleH; // 2 // Rasterize at higher quality for sub-pixel positioning. Note the difference between 2 and 3 is minimal. You can reduce this to 1 for large glyphs save memory. Read https://github.com/nothings/stb/blob/master/tests/oversample/README.md for details. int OversampleV; // 1 // Rasterize at higher quality for sub-pixel positioning. This is not really useful as we don't use sub-pixel positions on the Y axis. bool PixelSnapH; // false // Align every glyph to pixel boundary. Useful e.g. if you are merging a non-pixel aligned font with the default font. If enabled, you can set OversampleH/V to 1. ImVec2 GlyphExtraSpacing; // 0, 0 // Extra spacing (in pixels) between glyphs. Only X axis is supported for now. @@ -3309,6 +3370,8 @@ namespace ImGui #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS namespace ImGui { + // OBSOLETED in 1.89.7 (from June 2023) + IMGUI_API void SetItemAllowOverlap(); // Use SetNextItemAllowOverlap() before item. // OBSOLETED in 1.89.4 (from March 2023) static inline void PushAllowKeyboardFocus(bool tab_stop) { PushTabStop(tab_stop); } static inline void PopAllowKeyboardFocus() { PopTabStop(); } diff --git a/extern/imgui_patched/imgui_demo.cpp b/extern/imgui_patched/imgui_demo.cpp index 52abc7982..505be4d90 100644 --- a/extern/imgui_patched/imgui_demo.cpp +++ b/extern/imgui_patched/imgui_demo.cpp @@ -1,10 +1,12 @@ -// dear imgui, v1.89.6 +// dear imgui, v1.89.8 // (demo code) // Help: // - Read FAQ at http://dearimgui.com/faq -// - Newcomers, read 'Programmer guide' in imgui.cpp for notes on how to setup Dear ImGui in your codebase. // - Call and read ImGui::ShowDemoWindow() in imgui_demo.cpp. All applications in examples/ are doing that. +// - Need help integrating Dear ImGui in your codebase? +// - Read Getting Started https://github.com/ocornut/imgui/wiki/Getting-Started +// - Read 'Programmer guide' in imgui.cpp for notes on how to setup Dear ImGui in your codebase. // Read imgui.cpp for more details, documentation and comments. // Get the latest version at https://github.com/ocornut/imgui @@ -92,11 +94,7 @@ Index of this file: #include // sqrtf, powf, cosf, sinf, floorf, ceilf #include // vsnprintf, sscanf, printf #include // NULL, malloc, free, atoi -#if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier -#include // intptr_t -#else #include // intptr_t -#endif // Visual Studio warnings #ifdef _MSC_VER @@ -213,7 +211,7 @@ static void ShowDemoWindowInputs(); static void HelpMarker(const char* desc) { ImGui::TextDisabled("(?)"); - if (ImGui::IsItemHovered(ImGuiHoveredFlags_DelayShort) && ImGui::BeginTooltip()) + if (ImGui::BeginItemTooltip()) { ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f); ImGui::TextUnformatted(desc); @@ -525,6 +523,8 @@ void ImGui::ShowDemoWindow(bool* p_open) ImGui::SameLine(); HelpMarker("Some calls to Begin()/BeginChild() will return false.\n\nWill cycle through window depths then repeat. Windows should be flickering while running."); ImGui::Checkbox("io.ConfigDebugIgnoreFocusLoss", &io.ConfigDebugIgnoreFocusLoss); ImGui::SameLine(); HelpMarker("Option to deactivate io.AddFocusEvent(false) handling. May facilitate interactions with a debugger when focus loss leads to clearing inputs data."); + ImGui::Checkbox("io.ConfigDebugIniSettings", &io.ConfigDebugIniSettings); + ImGui::SameLine(); HelpMarker("Option to save .ini data with extra comments (particularly helpful for Docking, but makes saving slower)."); ImGui::TreePop(); ImGui::Spacing(); @@ -683,37 +683,8 @@ static void ShowDemoWindowWidgets() ImGui::SameLine(); ImGui::Text("%d", counter); - { - // Tooltips - IMGUI_DEMO_MARKER("Widgets/Basic/Tooltips"); - //ImGui::AlignTextToFramePadding(); - ImGui::Text("Tooltips:"); - - ImGui::SameLine(); - ImGui::SmallButton("Basic"); - if (ImGui::IsItemHovered()) - ImGui::SetTooltip("I am a tooltip"); - - ImGui::SameLine(); - ImGui::SmallButton("Fancy"); - if (ImGui::IsItemHovered() && ImGui::BeginTooltip()) - { - ImGui::Text("I am a fancy tooltip"); - static float arr[] = { 0.6f, 0.1f, 1.0f, 0.5f, 0.92f, 0.1f, 0.2f }; - ImGui::PlotLines("Curve", arr, IM_ARRAYSIZE(arr)); - ImGui::Text("Sin(time) = %f", sinf((float)ImGui::GetTime())); - ImGui::EndTooltip(); - } - - ImGui::SameLine(); - ImGui::SmallButton("Delayed"); - if (ImGui::IsItemHovered(ImGuiHoveredFlags_DelayNormal)) // With a delay - ImGui::SetTooltip("I am a tooltip with a delay."); - - ImGui::SameLine(); - HelpMarker( - "Tooltip are created by using the IsItemHovered() function over any kind of item."); - } + ImGui::Button("Tooltip"); + ImGui::SetItemTooltip("I am a tooltip"); ImGui::LabelText("label", "Value"); @@ -848,6 +819,85 @@ static void ShowDemoWindowWidgets() ImGui::TreePop(); } + IMGUI_DEMO_MARKER("Widgets/Tooltips"); + if (ImGui::TreeNode("Tooltips")) + { + // Tooltips are windows following the mouse. They do not take focus away. + ImGui::SeparatorText("General"); + + // Typical use cases: + // - Short-form (text only): SetItemTooltip("Hello"); + // - Short-form (any contents): if (BeginItemTooltip()) { Text("Hello"); EndTooltip(); } + + // - Full-form (text only): if (IsItemHovered(...)) { SetTooltip("Hello"); } + // - Full-form (any contents): if (IsItemHovered(...) && BeginTooltip()) { Text("Hello"); EndTooltip(); } + + HelpMarker( + "Tooltip are typically created by using a IsItemHovered() + SetTooltip() sequence.\n\n" + "We provide a helper SetItemTooltip() function to perform the two with standards flags."); + + ImVec2 sz = ImVec2(-FLT_MIN, 0.0f); + + ImGui::Button("Basic", sz); + ImGui::SetItemTooltip("I am a tooltip"); + + ImGui::Button("Fancy", sz); + if (ImGui::BeginItemTooltip()) + { + ImGui::Text("I am a fancy tooltip"); + static float arr[] = { 0.6f, 0.1f, 1.0f, 0.5f, 0.92f, 0.1f, 0.2f }; + ImGui::PlotLines("Curve", arr, IM_ARRAYSIZE(arr)); + ImGui::Text("Sin(time) = %f", sinf((float)ImGui::GetTime())); + ImGui::EndTooltip(); + } + + ImGui::SeparatorText("Always On"); + + // Showcase NOT relying on a IsItemHovered() to emit a tooltip. + // Here the tooltip is always emitted when 'always_on == true'. + static int always_on = 0; + ImGui::RadioButton("Off", &always_on, 0); + ImGui::SameLine(); + ImGui::RadioButton("Always On (Simple)", &always_on, 1); + ImGui::SameLine(); + ImGui::RadioButton("Always On (Advanced)", &always_on, 2); + if (always_on == 1) + ImGui::SetTooltip("I am following you around."); + else if (always_on == 2 && ImGui::BeginTooltip()) + { + ImGui::ProgressBar(sinf((float)ImGui::GetTime()) * 0.5f + 0.5f, ImVec2(ImGui::GetFontSize() * 25, 0.0f)); + ImGui::EndTooltip(); + } + + ImGui::SeparatorText("Custom"); + + // The following examples are passed for documentation purpose but may not be useful to most users. + // Passing ImGuiHoveredFlags_Tooltip to IsItemHovered() will pull ImGuiHoveredFlags flags values from + // 'style.HoverFlagsForTooltipMouse' or 'style.HoverFlagsForTooltipNav' depending on whether mouse or gamepad/keyboard is being used. + // With default settings, ImGuiHoveredFlags_Tooltip is equivalent to ImGuiHoveredFlags_DelayShort + ImGuiHoveredFlags_Stationary. + ImGui::Button("Manual", sz); + if (ImGui::IsItemHovered(ImGuiHoveredFlags_ForTooltip)) + ImGui::SetTooltip("I am a manually emitted tooltip"); + + ImGui::Button("DelayNone", sz); + if (ImGui::IsItemHovered(ImGuiHoveredFlags_DelayNone)) + ImGui::SetTooltip("I am a tooltip with no delay."); + + ImGui::Button("DelayShort", sz); + if (ImGui::IsItemHovered(ImGuiHoveredFlags_DelayShort | ImGuiHoveredFlags_NoSharedDelay)) + ImGui::SetTooltip("I am a tooltip with a short delay (%0.2f sec).", ImGui::GetStyle().HoverDelayShort); + + ImGui::Button("DelayLong", sz); + if (ImGui::IsItemHovered(ImGuiHoveredFlags_DelayNormal | ImGuiHoveredFlags_NoSharedDelay)) + ImGui::SetTooltip("I am a tooltip with a long delay (%0.2f sec)", ImGui::GetStyle().HoverDelayNormal); + + ImGui::Button("Stationary", sz); + if (ImGui::IsItemHovered(ImGuiHoveredFlags_Stationary)) + ImGui::SetTooltip("I am a tooltip requiring mouse to be stationary before activating."); + + ImGui::TreePop(); + } + // Testing ImGuiOnceUponAFrame helper. //static ImGuiOnceUponAFrame once; //for (int i = 0; i < 5; i++) @@ -1113,7 +1163,7 @@ static void ShowDemoWindowWidgets() ImVec4 tint_col = use_text_color_for_tint ? ImGui::GetStyleColorVec4(ImGuiCol_Text) : ImVec4(1.0f, 1.0f, 1.0f, 1.0f); // No tint ImVec4 border_col = ImGui::GetStyleColorVec4(ImGuiCol_Border); ImGui::Image(my_tex_id, ImVec2(my_tex_w, my_tex_h), uv_min, uv_max, tint_col, border_col); - if (ImGui::IsItemHovered() && ImGui::BeginTooltip()) + if (ImGui::BeginItemTooltip()) { float region_sz = 32.0f; float region_x = io.MousePos.x - pos.x - region_sz * 0.5f; @@ -1267,16 +1317,16 @@ static void ShowDemoWindowWidgets() IMGUI_DEMO_MARKER("Widgets/Selectables/Basic"); if (ImGui::TreeNode("Basic")) { - static bool selection[5] = { false, true, false, false, false }; + static bool selection[5] = { false, true, false, false }; ImGui::Selectable("1. I am selectable", &selection[0]); ImGui::Selectable("2. I am selectable", &selection[1]); - ImGui::Text("(I am not selectable)"); - ImGui::Selectable("4. I am selectable", &selection[3]); - if (ImGui::Selectable("5. I am double clickable", selection[4], ImGuiSelectableFlags_AllowDoubleClick)) + ImGui::Selectable("3. I am selectable", &selection[2]); + if (ImGui::Selectable("4. I am double clickable", selection[3], ImGuiSelectableFlags_AllowDoubleClick)) if (ImGui::IsMouseDoubleClicked(0)) - selection[4] = !selection[4]; + selection[3] = !selection[3]; ImGui::TreePop(); } + IMGUI_DEMO_MARKER("Widgets/Selectables/Single Selection"); if (ImGui::TreeNode("Selection State: Single Selection")) { @@ -1308,17 +1358,18 @@ static void ShowDemoWindowWidgets() } ImGui::TreePop(); } - IMGUI_DEMO_MARKER("Widgets/Selectables/Rendering more text into the same line"); - if (ImGui::TreeNode("Rendering more text into the same line")) + IMGUI_DEMO_MARKER("Widgets/Selectables/Rendering more items on the same line"); + if (ImGui::TreeNode("Rendering more items on the same line")) { - // Using the Selectable() override that takes "bool* p_selected" parameter, - // this function toggle your bool value automatically. + // (1) Using SetNextItemAllowOverlap() + // (2) Using the Selectable() override that takes "bool* p_selected" parameter, the bool value is toggled automatically. static bool selected[3] = { false, false, false }; - ImGui::Selectable("main.c", &selected[0]); ImGui::SameLine(300); ImGui::Text(" 2,345 bytes"); - ImGui::Selectable("Hello.cpp", &selected[1]); ImGui::SameLine(300); ImGui::Text("12,345 bytes"); - ImGui::Selectable("Hello.h", &selected[2]); ImGui::SameLine(300); ImGui::Text(" 2,345 bytes"); + ImGui::SetNextItemAllowOverlap(); ImGui::Selectable("main.c", &selected[0]); ImGui::SameLine(); ImGui::SmallButton("Link 1"); + ImGui::SetNextItemAllowOverlap(); ImGui::Selectable("Hello.cpp", &selected[1]); ImGui::SameLine(); ImGui::SmallButton("Link 2"); + ImGui::SetNextItemAllowOverlap(); ImGui::Selectable("Hello.h", &selected[2]); ImGui::SameLine(); ImGui::SmallButton("Link 3"); ImGui::TreePop(); } + IMGUI_DEMO_MARKER("Widgets/Selectables/In columns"); if (ImGui::TreeNode("In columns")) { @@ -1354,6 +1405,7 @@ static void ShowDemoWindowWidgets() } ImGui::TreePop(); } + IMGUI_DEMO_MARKER("Widgets/Selectables/Grid"); if (ImGui::TreeNode("Grid")) { @@ -1452,8 +1504,8 @@ static void ShowDemoWindowWidgets() // Modify character input by altering 'data->Eventchar' (ImGuiInputTextFlags_CallbackCharFilter callback) static int FilterCasingSwap(ImGuiInputTextCallbackData* data) { - if (data->EventChar >= 'a' && data->EventChar <= 'z') { data->EventChar = data->EventChar - 'A' - 'a'; } // Lowercase becomes uppercase - else if (data->EventChar >= 'A' && data->EventChar <= 'Z') { data->EventChar = data->EventChar + 'a' - 'A'; } // Uppercase becomes lowercase + if (data->EventChar >= 'a' && data->EventChar <= 'z') { data->EventChar -= 'a' - 'A'; } // Lowercase becomes uppercase + else if (data->EventChar >= 'A' && data->EventChar <= 'Z') { data->EventChar += 'a' - 'A'; } // Uppercase becomes lowercase return 0; } @@ -1487,6 +1539,7 @@ static void ShowDemoWindowWidgets() ImGui::TreePop(); } + IMGUI_DEMO_MARKER("Widgets/Text Input/Completion, History, Edit Callbacks"); if (ImGui::TreeNode("Completion, History, Edit Callbacks")) { struct Funcs @@ -1586,6 +1639,18 @@ static void ShowDemoWindowWidgets() ImGui::TreePop(); } + IMGUI_DEMO_MARKER("Widgets/Text Input/Miscellaneous"); + if (ImGui::TreeNode("Miscellaneous")) + { + static char buf1[16]; + static ImGuiInputTextFlags flags = ImGuiInputTextFlags_EscapeClearsAll; + ImGui::CheckboxFlags("ImGuiInputTextFlags_EscapeClearsAll", &flags, ImGuiInputTextFlags_EscapeClearsAll); + ImGui::CheckboxFlags("ImGuiInputTextFlags_ReadOnly", &flags, ImGuiInputTextFlags_ReadOnly); + ImGui::CheckboxFlags("ImGuiInputTextFlags_NoUndoRedo", &flags, ImGuiInputTextFlags_NoUndoRedo); + ImGui::InputText("Hello", buf1, IM_ARRAYSIZE(buf1), flags); + ImGui::TreePop(); + } + ImGui::TreePop(); } @@ -2434,8 +2499,10 @@ static void ShowDemoWindowWidgets() if (item_type == 15){ const char* items[] = { "Apple", "Banana", "Cherry", "Kiwi" }; static int current = 1; ret = ImGui::ListBox("ITEM: ListBox", ¤t, items, IM_ARRAYSIZE(items), IM_ARRAYSIZE(items)); } bool hovered_delay_none = ImGui::IsItemHovered(); + bool hovered_delay_stationary = ImGui::IsItemHovered(ImGuiHoveredFlags_Stationary); bool hovered_delay_short = ImGui::IsItemHovered(ImGuiHoveredFlags_DelayShort); bool hovered_delay_normal = ImGui::IsItemHovered(ImGuiHoveredFlags_DelayNormal); + bool hovered_delay_tooltip = ImGui::IsItemHovered(ImGuiHoveredFlags_ForTooltip); // = Normal + Stationary // Display the values of IsItemHovered() and other common item state functions. // Note that the ImGuiHoveredFlags_XXX flags can be combined. @@ -2447,7 +2514,8 @@ static void ShowDemoWindowWidgets() "IsItemHovered() = %d\n" "IsItemHovered(_AllowWhenBlockedByPopup) = %d\n" "IsItemHovered(_AllowWhenBlockedByActiveItem) = %d\n" - "IsItemHovered(_AllowWhenOverlapped) = %d\n" + "IsItemHovered(_AllowWhenOverlappedByItem) = %d\n" + "IsItemHovered(_AllowWhenOverlappedByWindow) = %d\n" "IsItemHovered(_AllowWhenDisabled) = %d\n" "IsItemHovered(_RectOnly) = %d\n" "IsItemActive() = %d\n" @@ -2466,7 +2534,8 @@ static void ShowDemoWindowWidgets() ImGui::IsItemHovered(), ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByPopup), ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem), - ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenOverlapped), + ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenOverlappedByItem), + ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenOverlappedByWindow), ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled), ImGui::IsItemHovered(ImGuiHoveredFlags_RectOnly), ImGui::IsItemActive(), @@ -2482,7 +2551,13 @@ static void ShowDemoWindowWidgets() ImGui::GetItemRectSize().x, ImGui::GetItemRectSize().y ); ImGui::BulletText( - "w/ Hovering Delay: None = %d, Fast %d, Normal = %d", hovered_delay_none, hovered_delay_short, hovered_delay_normal); + "with Hovering Delay or Stationary test:\n" + "IsItemHovered() = = %d\n" + "IsItemHovered(_Stationary) = %d\n" + "IsItemHovered(_DelayShort) = %d\n" + "IsItemHovered(_DelayNormal) = %d\n" + "IsItemHovered(_Tooltip) = %d", + hovered_delay_none, hovered_delay_stationary, hovered_delay_short, hovered_delay_normal, hovered_delay_tooltip); if (item_disabled) ImGui::EndDisabled(); @@ -2543,7 +2618,8 @@ static void ShowDemoWindowWidgets() "IsWindowHovered(_RootWindow|_NoPopupHierarchy) = %d\n" "IsWindowHovered(_RootWindow|_DockHierarchy) = %d\n" "IsWindowHovered(_ChildWindows|_AllowWhenBlockedByPopup) = %d\n" - "IsWindowHovered(_AnyWindow) = %d\n", + "IsWindowHovered(_AnyWindow) = %d\n" + "IsWindowHovered(_Stationary) = %d\n", ImGui::IsWindowHovered(), ImGui::IsWindowHovered(ImGuiHoveredFlags_AllowWhenBlockedByPopup), ImGui::IsWindowHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem), @@ -2557,7 +2633,8 @@ static void ShowDemoWindowWidgets() ImGui::IsWindowHovered(ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_NoPopupHierarchy), ImGui::IsWindowHovered(ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_DockHierarchy), ImGui::IsWindowHovered(ImGuiHoveredFlags_ChildWindows | ImGuiHoveredFlags_AllowWhenBlockedByPopup), - ImGui::IsWindowHovered(ImGuiHoveredFlags_AnyWindow)); + ImGui::IsWindowHovered(ImGuiHoveredFlags_AnyWindow), + ImGui::IsWindowHovered(ImGuiHoveredFlags_Stationary)); ImGui::BeginChild("child", ImVec2(0, 50), true); ImGui::Text("This is another child window for testing the _ChildWindows flag."); @@ -2803,11 +2880,11 @@ static void ShowDemoWindowLayout() // Text IMGUI_DEMO_MARKER("Layout/Basic Horizontal Layout/SameLine"); ImGui::Text("Two items: Hello"); ImGui::SameLine(); - ImGui::TextColored(ImVec4(1,1,0,1), "Sailor"); + ImGui::TextColored(ImVec4(1, 1, 0, 1), "Sailor"); // Adjust spacing ImGui::Text("More spacing: Hello"); ImGui::SameLine(0, 20); - ImGui::TextColored(ImVec4(1,1,0,1), "Sailor"); + ImGui::TextColored(ImVec4(1, 1, 0, 1), "Sailor"); // Button ImGui::AlignTextToFramePadding(); @@ -2858,7 +2935,7 @@ static void ShowDemoWindowLayout() ImGui::PushID(i); ImGui::ListBox("", &selection[i], items, IM_ARRAYSIZE(items)); ImGui::PopID(); - //if (ImGui::IsItemHovered()) ImGui::SetTooltip("ListBox %d hovered", i); + //ImGui::SetItemTooltip("ListBox %d hovered", i); } ImGui::PopItemWidth(); @@ -2911,8 +2988,7 @@ static void ShowDemoWindowLayout() ImGui::SameLine(); ImGui::Button("EEE"); ImGui::EndGroup(); - if (ImGui::IsItemHovered()) - ImGui::SetTooltip("First group hovered"); + ImGui::SetItemTooltip("First group hovered"); } // Capture the group size and create widgets using the same size ImVec2 size = ImGui::GetItemRectSize(); @@ -3406,6 +3482,36 @@ static void ShowDemoWindowLayout() ImGui::TreePop(); } + + IMGUI_DEMO_MARKER("Layout/Overlap Mode"); + if (ImGui::TreeNode("Overlap Mode")) + { + static bool enable_allow_overlap = true; + + HelpMarker( + "Hit-testing is by default performed in item submission order, which generally is perceived as 'back-to-front'.\n\n" + "By using SetNextItemAllowOverlap() you can notify that an item may be overlapped by another. Doing so alters the hovering logic: items using AllowOverlap mode requires an extra frame to accept hovered state."); + ImGui::Checkbox("Enable AllowOverlap", &enable_allow_overlap); + + ImVec2 button1_pos = ImGui::GetCursorScreenPos(); + ImVec2 button2_pos = ImVec2(button1_pos.x + 50.0f, button1_pos.y + 50.0f); + if (enable_allow_overlap) + ImGui::SetNextItemAllowOverlap(); + ImGui::Button("Button 1", ImVec2(80, 80)); + ImGui::SetCursorScreenPos(button2_pos); + ImGui::Button("Button 2", ImVec2(80, 80)); + + // This is typically used with width-spanning items. + // (note that Selectable() has a dedicated flag ImGuiSelectableFlags_AllowOverlap, which is a shortcut + // for using SetNextItemAllowOverlap(). For demo purpose we use SetNextItemAllowOverlap() here.) + if (enable_allow_overlap) + ImGui::SetNextItemAllowOverlap(); + ImGui::Selectable("Some Selectable", false); + ImGui::SameLine(); + ImGui::SmallButton("++"); + + ImGui::TreePop(); + } } static void ShowDemoWindowPopups() @@ -3473,8 +3579,7 @@ static void ShowDemoWindowPopups() ImGui::Separator(); ImGui::Text("Tooltip here"); - if (ImGui::IsItemHovered()) - ImGui::SetTooltip("I am a tooltip over a popup"); + ImGui::SetItemTooltip("I am a tooltip over a popup"); if (ImGui::Button("Stacked Popup")) ImGui::OpenPopup("another popup"); @@ -3558,8 +3663,7 @@ static void ShowDemoWindowPopups() ImGui::CloseCurrentPopup(); ImGui::EndPopup(); } - if (ImGui::IsItemHovered()) - ImGui::SetTooltip("Right-click to open popup"); + ImGui::SetItemTooltip("Right-click to open popup"); } } @@ -3811,7 +3915,7 @@ static void EditTableSizingFlags(ImGuiTableFlags* p_flags) } ImGui::SameLine(); ImGui::TextDisabled("(?)"); - if (ImGui::IsItemHovered() && ImGui::BeginTooltip()) + if (ImGui::BeginItemTooltip()) { ImGui::PushTextWrapPos(ImGui::GetFontSize() * 50.0f); for (int m = 0; m < IM_ARRAYSIZE(policies); m++) @@ -5509,7 +5613,7 @@ static void ShowDemoWindowTables() ImGui::Button(label, ImVec2(-FLT_MIN, 0.0f)); else if (contents_type == CT_Selectable || contents_type == CT_SelectableSpanRow) { - ImGuiSelectableFlags selectable_flags = (contents_type == CT_SelectableSpanRow) ? ImGuiSelectableFlags_SpanAllColumns | ImGuiSelectableFlags_AllowItemOverlap : ImGuiSelectableFlags_None; + ImGuiSelectableFlags selectable_flags = (contents_type == CT_SelectableSpanRow) ? ImGuiSelectableFlags_SpanAllColumns | ImGuiSelectableFlags_AllowOverlap : ImGuiSelectableFlags_None; if (ImGui::Selectable(label, item_is_selected, selectable_flags, ImVec2(0, row_min_height))) { if (ImGui::GetIO().KeyCtrl) @@ -6012,10 +6116,11 @@ void ImGui::ShowAboutWindow(bool* p_open) return; } IMGUI_DEMO_MARKER("Tools/About Dear ImGui"); - ImGui::Text("Dear ImGui %s", ImGui::GetVersion()); + ImGui::Text("Dear ImGui %s (%d)", IMGUI_VERSION, IMGUI_VERSION_NUM); ImGui::Separator(); ImGui::Text("By Omar Cornut and all Dear ImGui contributors."); ImGui::Text("Dear ImGui is licensed under the MIT License, see LICENSE for more information."); + ImGui::Text("If your company uses this, please consider sponsoring the project!"); static bool show_config_info = false; ImGui::Checkbox("Config/Build Information", &show_config_info); @@ -6311,11 +6416,28 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref) ImGui::SameLine(); HelpMarker("Alignment applies when a selectable is larger than its text content."); ImGui::SliderFloat("SeparatorTextBorderSize", &style.SeparatorTextBorderSize, 0.0f, 10.0f, "%.0f"); ImGui::SliderFloat2("SeparatorTextAlign", (float*)&style.SeparatorTextAlign, 0.0f, 1.0f, "%.2f"); - ImGui::SliderFloat2("SeparatorTextPadding", (float*)&style.SeparatorTextPadding, 0.0f, 40.0f, "%0.f"); + ImGui::SliderFloat2("SeparatorTextPadding", (float*)&style.SeparatorTextPadding, 0.0f, 40.0f, "%.0f"); ImGui::SliderFloat("LogSliderDeadzone", &style.LogSliderDeadzone, 0.0f, 12.0f, "%.0f"); + ImGui::SeparatorText("Docking"); + ImGui::SliderFloat("DockingSplitterSize", &style.DockingSeparatorSize, 0.0f, 12.0f, "%.0f"); + + ImGui::SeparatorText("Tooltips"); + for (int n = 0; n < 2; n++) + if (ImGui::TreeNodeEx(n == 0 ? "HoverFlagsForTooltipMouse" : "HoverFlagsForTooltipNav")) + { + ImGuiHoveredFlags* p = (n == 0) ? &style.HoverFlagsForTooltipMouse : &style.HoverFlagsForTooltipNav; + ImGui::CheckboxFlags("ImGuiHoveredFlags_DelayNone", p, ImGuiHoveredFlags_DelayNone); + ImGui::CheckboxFlags("ImGuiHoveredFlags_DelayShort", p, ImGuiHoveredFlags_DelayShort); + ImGui::CheckboxFlags("ImGuiHoveredFlags_DelayNormal", p, ImGuiHoveredFlags_DelayNormal); + ImGui::CheckboxFlags("ImGuiHoveredFlags_Stationary", p, ImGuiHoveredFlags_Stationary); + ImGui::CheckboxFlags("ImGuiHoveredFlags_NoSharedDelay", p, ImGuiHoveredFlags_NoSharedDelay); + ImGui::TreePop(); + } + ImGui::SeparatorText("Misc"); ImGui::SliderFloat2("DisplaySafeAreaPadding", (float*)&style.DisplaySafeAreaPadding, 0.0f, 30.0f, "%.0f"); ImGui::SameLine(); HelpMarker("Adjust if you cannot see the edges of your screen (e.g. on a TV where scaling has not been configured)."); + ImGui::EndTabItem(); } @@ -7872,18 +7994,20 @@ static void ShowExampleAppCustomRendering(bool* p_open) // your own implicit "Debug##2" window after calling DockSpace() and leave it in the window stack for anyone to use. void ShowExampleAppDockSpace(bool* p_open) { - // If you strip some features of, this demo is pretty much equivalent to calling DockSpaceOverViewport()! - // In most cases you should be able to just call DockSpaceOverViewport() and ignore all the code below! - // In this specific demo, we are not using DockSpaceOverViewport() because: - // - we allow the host window to be floating/moveable instead of filling the viewport (when opt_fullscreen == false) - // - we allow the host window to have padding (when opt_padding == true) - // - we have a local menu bar in the host window (vs. you could use BeginMainMenuBar() + DockSpaceOverViewport() in your code!) - // TL;DR; this demo is more complicated than what you would normally use. - // If we removed all the options we are showcasing, this demo would become: + // READ THIS !!! + // TL;DR; this demo is more complicated than what most users you would normally use. + // If we remove all options we are showcasing, this demo would become: // void ShowExampleAppDockSpace() // { // ImGui::DockSpaceOverViewport(ImGui::GetMainViewport()); // } + // In most cases you should be able to just call DockSpaceOverViewport() and ignore all the code below! + // In this specific demo, we are not using DockSpaceOverViewport() because: + // - (1) we allow the host window to be floating/moveable instead of filling the viewport (when opt_fullscreen == false) + // - (2) we allow the host window to have padding (when opt_padding == true) + // - (3) we expose many flags and need a way to have them visible. + // - (4) we have a local menu bar in the host window (vs. you could use BeginMainMenuBar() + DockSpaceOverViewport() + // in your code, but we don't here because we allow the window to be floating) static bool opt_fullscreen = true; static bool opt_padding = false; @@ -8293,8 +8417,8 @@ void ShowExampleAppDocuments(bool* p_open) for (int n = 0; n < close_queue.Size; n++) if (close_queue[n]->Dirty) ImGui::Text("%s", close_queue[n]->Name); - ImGui::EndChildFrame(); } + ImGui::EndChildFrame(); ImVec2 button_size(ImGui::GetFontSize() * 7.0f, 0.0f); if (ImGui::Button("Yes", button_size)) diff --git a/extern/imgui_patched/imgui_draw.cpp b/extern/imgui_patched/imgui_draw.cpp index 208b2fdde..7ee0a19dc 100644 --- a/extern/imgui_patched/imgui_draw.cpp +++ b/extern/imgui_patched/imgui_draw.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.89.6 +// dear imgui, v1.89.8 // (drawing and font code) /* @@ -63,6 +63,7 @@ Index of this file: #pragma clang diagnostic ignored "-Wreserved-id-macro" // warning: macro name is a reserved identifier #pragma clang diagnostic ignored "-Wdouble-promotion" // warning: implicit conversion from 'float' to 'double' when passing argument to function // using printf() is a misery with this as C++ va_arg ellipsis changes float to double. #pragma clang diagnostic ignored "-Wimplicit-int-float-conversion" // warning: implicit conversion from 'xxx' to 'float' may lose precision +#pragma clang diagnostic ignored "-Wreserved-identifier" // warning: identifier '_Xxx' is reserved because it starts with '_' followed by a capital letter #elif defined(__GNUC__) #pragma GCC diagnostic ignored "-Wpragmas" // warning: unknown option after '#pragma GCC diagnostic' kind #pragma GCC diagnostic ignored "-Wunused-function" // warning: 'xxxx' defined but not used @@ -1861,6 +1862,63 @@ void ImDrawListSplitter::SetCurrentChannel(ImDrawList* draw_list, int idx) // [SECTION] ImDrawData //----------------------------------------------------------------------------- +void ImDrawData::Clear() +{ + Valid = false; + CmdListsCount = TotalIdxCount = TotalVtxCount = 0; + CmdLists.resize(0); // The ImDrawList are NOT owned by ImDrawData but e.g. by ImGuiContext, so we don't clear them. + DisplayPos = DisplaySize = FramebufferScale = ImVec2(0.0f, 0.0f); + OwnerViewport = NULL; +} + +// Important: 'out_list' is generally going to be draw_data->CmdLists, but may be another temporary list +// as long at it is expected that the result will be later merged into draw_data->CmdLists[]. +void ImGui::AddDrawListToDrawDataEx(ImDrawData* draw_data, ImVector* out_list, ImDrawList* draw_list) +{ + if (draw_list->CmdBuffer.Size == 0) + return; + if (draw_list->CmdBuffer.Size == 1 && draw_list->CmdBuffer[0].ElemCount == 0 && draw_list->CmdBuffer[0].UserCallback == NULL) + return; + + // Draw list sanity check. Detect mismatch between PrimReserve() calls and incrementing _VtxCurrentIdx, _VtxWritePtr etc. + // May trigger for you if you are using PrimXXX functions incorrectly. + IM_ASSERT(draw_list->VtxBuffer.Size == 0 || draw_list->_VtxWritePtr == draw_list->VtxBuffer.Data + draw_list->VtxBuffer.Size); + IM_ASSERT(draw_list->IdxBuffer.Size == 0 || draw_list->_IdxWritePtr == draw_list->IdxBuffer.Data + draw_list->IdxBuffer.Size); + if (!(draw_list->Flags & ImDrawListFlags_AllowVtxOffset)) + IM_ASSERT((int)draw_list->_VtxCurrentIdx == draw_list->VtxBuffer.Size); + + // Check that draw_list doesn't use more vertices than indexable (default ImDrawIdx = unsigned short = 2 bytes = 64K vertices per ImDrawList = per window) + // If this assert triggers because you are drawing lots of stuff manually: + // - First, make sure you are coarse clipping yourself and not trying to draw many things outside visible bounds. + // Be mindful that the lower-level ImDrawList API doesn't filter vertices. Use the Metrics/Debugger window to inspect draw list contents. + // - If you want large meshes with more than 64K vertices, you can either: + // (A) Handle the ImDrawCmd::VtxOffset value in your renderer backend, and set 'io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset'. + // Most example backends already support this from 1.71. Pre-1.71 backends won't. + // Some graphics API such as GL ES 1/2 don't have a way to offset the starting vertex so it is not supported for them. + // (B) Or handle 32-bit indices in your renderer backend, and uncomment '#define ImDrawIdx unsigned int' line in imconfig.h. + // Most example backends already support this. For example, the OpenGL example code detect index size at compile-time: + // glDrawElements(GL_TRIANGLES, (GLsizei)pcmd->ElemCount, sizeof(ImDrawIdx) == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT, idx_buffer_offset); + // Your own engine or render API may use different parameters or function calls to specify index sizes. + // 2 and 4 bytes indices are generally supported by most graphics API. + // - If for some reason neither of those solutions works for you, a workaround is to call BeginChild()/EndChild() before reaching + // the 64K limit to split your draw commands in multiple draw lists. + if (sizeof(ImDrawIdx) == 2) + IM_ASSERT(draw_list->_VtxCurrentIdx < (1 << 16) && "Too many vertices in ImDrawList using 16-bit indices. Read comment above"); + + // Add to output list + records state in ImDrawData + out_list->push_back(draw_list); + draw_data->CmdListsCount++; + draw_data->TotalVtxCount += draw_list->VtxBuffer.Size; + draw_data->TotalIdxCount += draw_list->IdxBuffer.Size; +} + +void ImDrawData::AddDrawList(ImDrawList* draw_list) +{ + IM_ASSERT(CmdLists.Size == CmdListsCount); + draw_list->_PopUnusedDrawCmd(); + ImGui::AddDrawListToDrawDataEx(this, &CmdLists, draw_list); +} + // For backward compatibility: convert all buffers from indexed to de-indexed, in case you cannot render indexed. Note: this is slow and most likely a waste of resources. Always prefer indexed rendering! void ImDrawData::DeIndexAllBuffers() { @@ -1957,7 +2015,7 @@ ImFontConfig::ImFontConfig() { memset(this, 0, sizeof(*this)); FontDataOwnedByAtlas = true; - OversampleH = 3; // FIXME: 2 may be a better default? + OversampleH = 2; OversampleV = 1; GlyphMaxAdvanceX = FLT_MAX; RasterizerMultiply = 1.0f; diff --git a/extern/imgui_patched/imgui_internal.h b/extern/imgui_patched/imgui_internal.h index 6fa0dc581..2c8057bd7 100644 --- a/extern/imgui_patched/imgui_internal.h +++ b/extern/imgui_patched/imgui_internal.h @@ -1,4 +1,4 @@ -// dear imgui, v1.89.6 +// dear imgui, v1.89.8 // (internal structures/api) // You may use this file to debug, understand or extend Dear ImGui features but we don't provide any guarantee of forward compatibility. @@ -278,6 +278,8 @@ namespace ImStb #define IM_F32_TO_INT8_SAT(_VAL) ((int)(ImSaturate(_VAL) * 255.0f + 0.5f)) // Saturated, always output 0..255 #define IM_FLOOR(_VAL) ((float)(int)(_VAL)) // ImFloor() is not inlined in MSVC debug builds #define IM_ROUND(_VAL) ((float)(int)((_VAL) + 0.5f)) // +#define IM_STRINGIFY_HELPER(_X) #_X +#define IM_STRINGIFY(_X) IM_STRINGIFY_HELPER(_X) // Preprocessor idiom to stringify e.g. an integer. // Enforce cdecl calling convention for functions called by the standard library, in case compilation settings changed the default to e.g. __vectorcall #ifdef _MSC_VER @@ -780,12 +782,10 @@ struct IMGUI_API ImDrawListSharedData struct ImDrawDataBuilder { - ImVector Layers[2]; // Global layers for: regular, tooltip + ImVector* Layers[2]; // Pointers to global layers for: regular, tooltip. LayersP[0] is owned by DrawData. + ImVector LayerData1; - void Clear() { for (int n = 0; n < IM_ARRAYSIZE(Layers); n++) Layers[n].resize(0); } - void ClearFreeMemory() { for (int n = 0; n < IM_ARRAYSIZE(Layers); n++) Layers[n].clear(); } - int GetDrawListCount() const { int count = 0; for (int n = 0; n < IM_ARRAYSIZE(Layers); n++) count += Layers[n].Size; return count; } - IMGUI_API void FlattenIntoSingleLayer(); + ImDrawDataBuilder() { memset(this, 0, sizeof(*this)); } }; //----------------------------------------------------------------------------- @@ -810,6 +810,7 @@ enum ImGuiItemFlags_ ImGuiItemFlags_MixedValue = 1 << 6, // false // [BETA] Represent a mixed/indeterminate value, generally multi-selection where values differ. Currently only supported by Checkbox() (later should support all sorts of widgets) ImGuiItemFlags_ReadOnly = 1 << 7, // false // [ALPHA] Allow hovering interactions but underlying value is not changed. ImGuiItemFlags_NoWindowHoverableCheck = 1 << 8, // false // Disable hoverable check in ItemHoverable() + ImGuiItemflags_AllowOverlap = 1 << 9, // false // Allow being overlapped by another widget. Not-hovered to Hovered transition deferred by a frame. // Controlled by widget code ImGuiItemFlags_Inputable = 1 << 10, // false // [WIP] Auto-activate input mode when tab focused. Currently only used and supported by a few items before it becomes a generic feature. @@ -842,6 +843,14 @@ enum ImGuiItemStatusFlags_ #endif }; +// Extend ImGuiHoveredFlags_ +enum ImGuiHoveredFlagsPrivate_ +{ + ImGuiHoveredFlags_DelayMask_ = ImGuiHoveredFlags_DelayNone | ImGuiHoveredFlags_DelayShort | ImGuiHoveredFlags_DelayNormal | ImGuiHoveredFlags_NoSharedDelay, + ImGuiHoveredFlags_AllowedMaskForIsWindowHovered = ImGuiHoveredFlags_ChildWindows | ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_AnyWindow | ImGuiHoveredFlags_NoPopupHierarchy | ImGuiHoveredFlags_DockHierarchy | ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_ForTooltip | ImGuiHoveredFlags_Stationary, + ImGuiHoveredFlags_AllowedMaskForIsItemHovered = ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_AllowWhenOverlapped | ImGuiHoveredFlags_AllowWhenDisabled | ImGuiHoveredFlags_NoNavOverride | ImGuiHoveredFlags_ForTooltip | ImGuiHoveredFlags_Stationary | ImGuiHoveredFlags_DelayMask_, +}; + // Extend ImGuiInputTextFlags_ enum ImGuiInputTextFlagsPrivate_ { @@ -862,7 +871,7 @@ enum ImGuiButtonFlagsPrivate_ ImGuiButtonFlags_PressedOnDragDropHold = 1 << 9, // return true when held into while we are drag and dropping another item (used by e.g. tree nodes, collapsing headers) ImGuiButtonFlags_Repeat = 1 << 10, // hold to repeat ImGuiButtonFlags_FlattenChildren = 1 << 11, // allow interactions even if a child window is overlapping - ImGuiButtonFlags_AllowItemOverlap = 1 << 12, // require previous frame HoveredId to either match id or be null before being usable, use along with SetItemAllowOverlap() + ImGuiButtonFlags_AllowOverlap = 1 << 12, // require previous frame HoveredId to either match id or be null before being usable. ImGuiButtonFlags_DontClosePopups = 1 << 13, // disable automatically closing parent popup on press // [UNUSED] //ImGuiButtonFlags_Disabled = 1 << 14, // disable interactions -> use BeginDisabled() or ImGuiItemFlags_Disabled ImGuiButtonFlags_AlignTextBaseLine = 1 << 15, // vertically align button to match text baseline - ButtonEx() only // FIXME: Should be removed and handled by SmallButton(), not possible currently because of DC.CursorPosPrevLine @@ -907,6 +916,7 @@ enum ImGuiSelectableFlagsPrivate_ enum ImGuiTreeNodeFlagsPrivate_ { ImGuiTreeNodeFlags_ClipLabelForTrailingButton = 1 << 20, + ImGuiTreeNodeFlags_UpsideDownArrow = 1 << 21,// (FIXME-WIP) Turn Down arrow into an Up arrow, but reversed trees (#6517) }; enum ImGuiSeparatorFlags_ @@ -936,7 +946,7 @@ enum ImGuiTextFlags_ enum ImGuiTooltipFlags_ { ImGuiTooltipFlags_None = 0, - ImGuiTooltipFlags_OverridePreviousTooltip = 1 << 0, // Override will clear/ignore previously submitted tooltip (defaults to append) + ImGuiTooltipFlags_OverridePrevious = 1 << 1, // Clear/ignore previously submitted tooltip (defaults to append) }; // FIXME: this is in development, not exposed/functional as a generic feature yet. @@ -1187,13 +1197,14 @@ enum ImGuiNextItemDataFlags_ struct ImGuiNextItemData { ImGuiNextItemDataFlags Flags; + ImGuiItemFlags ItemFlags; // Currently only tested/used for ImGuiItemflags_AllowOverlap. float Width; // Set by SetNextItemWidth() ImGuiID FocusScopeId; // Set by SetNextItemMultiSelectData() (!= 0 signify value has been set, so it's an alternate version of HasSelectionData, we don't use Flags for this because they are cleared too early. This is mostly used for debugging) ImGuiCond OpenCond; bool OpenVal; // Set by SetNextItemOpen() ImGuiNextItemData() { memset(this, 0, sizeof(*this)); } - inline void ClearFlags() { Flags = ImGuiNextItemDataFlags_None; } // Also cleared manually by ItemAdd()! + inline void ClearFlags() { Flags = ImGuiNextItemDataFlags_None; ItemFlags = ImGuiItemFlags_None; } // Also cleared manually by ItemAdd()! }; // Status storage for the last submitted item @@ -1501,10 +1512,12 @@ enum ImGuiNavMoveFlags_ ImGuiNavMoveFlags_ScrollToEdgeY = 1 << 6, // Force scrolling to min/max (used by Home/End) // FIXME-NAV: Aim to remove or reword, probably unnecessary ImGuiNavMoveFlags_Forwarded = 1 << 7, ImGuiNavMoveFlags_DebugNoResult = 1 << 8, // Dummy scoring for debug purpose, don't apply result - ImGuiNavMoveFlags_FocusApi = 1 << 9, - ImGuiNavMoveFlags_Tabbing = 1 << 10, // == Focus + Activate if item is Inputable + DontChangeNavHighlight - ImGuiNavMoveFlags_Activate = 1 << 11, - ImGuiNavMoveFlags_DontSetNavHighlight = 1 << 12, // Do not alter the visible state of keyboard vs mouse nav highlight + ImGuiNavMoveFlags_FocusApi = 1 << 9, // Requests from focus API can land/focus/activate items even if they are marked with _NoTabStop (see NavProcessItemForTabbingRequest() for details) + ImGuiNavMoveFlags_IsTabbing = 1 << 10, // == Focus + Activate if item is Inputable + DontChangeNavHighlight + ImGuiNavMoveFlags_IsPageMove = 1 << 11, // Identify a PageDown/PageUp request. + ImGuiNavMoveFlags_Activate = 1 << 12, // Activate/select target item. + ImGuiNavMoveFlags_NoSelect = 1 << 13, // Don't trigger selection by not setting g.NavJustMovedTo + ImGuiNavMoveFlags_NoSetNavHighlight = 1 << 14, // Do not alter the visible state of keyboard vs mouse nav highlight }; enum ImGuiNavLayer @@ -1674,6 +1687,7 @@ struct IMGUI_API ImGuiDockNode ImGuiID LastFocusedNodeId; // [Root node only] Which of our child docking node (any ancestor in the hierarchy) was last focused. ImGuiID SelectedTabId; // [Leaf node only] Which of our tab/window is selected. ImGuiID WantCloseTabId; // [Leaf node only] Set when closing a specific tab/window. + ImGuiID RefViewportId; // Reference viewport ID from visible window when HostWindow == NULL. ImGuiDataAuthority AuthorityForPos :3; ImGuiDataAuthority AuthorityForSize :3; ImGuiDataAuthority AuthorityForViewport :3; @@ -1758,7 +1772,7 @@ struct ImGuiViewportP : public ImGuiViewport int DrawListsLastFrame[2]; // Last frame number the background (0) and foreground (1) draw lists were used ImDrawList* DrawLists[2]; // Convenience background (0) and foreground (1) draw lists. We use them to draw software mouser cursor when io.MouseDrawCursor is set and to draw most debug overlays. ImDrawData DrawDataP; - ImDrawDataBuilder DrawDataBuilder; + ImDrawDataBuilder DrawDataBuilder; // Temporary data while building final ImDrawData ImVec2 LastPlatformPos; ImVec2 LastPlatformSize; ImVec2 LastRendererSize; @@ -1829,6 +1843,7 @@ struct ImGuiSettingsHandler // This is experimental and not officially supported, it'll probably fall short of features, if/when it does we may backtrack. enum ImGuiLocKey : int { + ImGuiLocKey_VersionStr, ImGuiLocKey_TableSizeOne, ImGuiLocKey_TableSizeAllFit, ImGuiLocKey_TableSizeAllDefault, @@ -2046,6 +2061,8 @@ struct ImGuiContext ImGuiViewportP* MouseLastHoveredViewport; // Last known viewport that was hovered by mouse (even if we are not hovering any viewport any more) + honoring the _NoInputs flag. ImGuiID PlatformLastFocusedViewportId; ImGuiPlatformMonitor FallbackMonitor; // Virtual monitor used as fallback if backend doesn't provide monitor information. + int ViewportCreatedCount; // Unique sequential creation counter (mostly for testing/debugging) + int PlatformWindowsCreatedCount; // Unique sequential creation counter (mostly for testing/debugging) int ViewportFocusedStampCount; // Every time the front-most window changes, we stamp its viewport with an incrementing counter // Gamepad/keyboard Navigation @@ -2111,7 +2128,6 @@ struct ImGuiContext // Render float DimBgRatio; // 0.0..1.0 animation when fading in a dimming background (for modal window and CTRL+TAB list) - ImGuiMouseCursor MouseCursor; // Drag and Drop bool DragDropActive; @@ -2151,13 +2167,19 @@ struct ImGuiContext ImVector ShrinkWidthBuffer; // Hover Delay system - ImGuiID HoverDelayId; - ImGuiID HoverDelayIdPreviousFrame; - float HoverDelayTimer; // Currently used IsItemHovered(), generally inferred from g.HoveredIdTimer but kept uncleared until clear timer elapse. - float HoverDelayClearTimer; // Currently used IsItemHovered(): grace time before g.TooltipHoverTimer gets cleared. + ImGuiID HoverItemDelayId; + ImGuiID HoverItemDelayIdPreviousFrame; + float HoverItemDelayTimer; // Currently used by IsItemHovered() + float HoverItemDelayClearTimer; // Currently used by IsItemHovered(): grace time before g.TooltipHoverTimer gets cleared. + ImGuiID HoverItemUnlockedStationaryId; // Mouse has once been stationary on this item. Only reset after departing the item. + ImGuiID HoverWindowUnlockedStationaryId; // Mouse has once been stationary on this window. Only reset after departing the window. + + // Mouse state + ImGuiMouseCursor MouseCursor; + float MouseStationaryTimer; // Time the mouse has been stationary (with some loose heuristic) + ImVec2 MouseLastValidPos; // Widget state - ImVec2 MouseLastValidPos; ImGuiInputTextState InputTextState; ImGuiInputTextDeactivatedState InputTextDeactivatedState; ImFont InputTextPasswordFont; @@ -2314,6 +2336,7 @@ struct ImGuiContext CurrentViewport = NULL; MouseViewport = MouseLastHoveredViewport = NULL; PlatformLastFocusedViewportId = 0; + ViewportCreatedCount = PlatformWindowsCreatedCount = 0; ViewportFocusedStampCount = 0; NavWindow = NULL; @@ -2350,7 +2373,6 @@ struct ImGuiContext InertialScrollInhibited = false; DimBgRatio = 0.0f; - MouseCursor = ImGuiMouseCursor_Arrow; DragDropActive = DragDropWithinSource = DragDropWithinTarget = false; DragDropSourceFlags = ImGuiDragDropFlags_None; @@ -2370,8 +2392,11 @@ struct ImGuiContext TablesTempDataStacked = 0; CurrentTabBar = NULL; - HoverDelayId = HoverDelayIdPreviousFrame = 0; - HoverDelayTimer = HoverDelayClearTimer = 0.0f; + HoverItemDelayId = HoverItemDelayIdPreviousFrame = HoverItemUnlockedStationaryId = HoverWindowUnlockedStationaryId = 0; + HoverItemDelayTimer = HoverItemDelayClearTimer = 0.0f; + + MouseCursor = ImGuiMouseCursor_Arrow; + MouseStationaryTimer = 0.0f; TempInputId = 0; ColorEditOptions = ImGuiColorEditFlags_DefaultOptions_; @@ -2797,8 +2822,10 @@ struct ImGuiTableInstanceData float LastOuterHeight; // Outer height from last frame float LastFirstRowHeight; // Height of first row from last frame (FIXME: this is used as "header height" and may be reworked) float LastFrozenHeight; // Height of frozen section from last frame + int HoveredRowLast; // Index of row which was hovered last frame. + int HoveredRowNext; // Index of row hovered this frame, set after encountering it. - ImGuiTableInstanceData() { TableInstanceID = 0; LastOuterHeight = LastFirstRowHeight = LastFrozenHeight = 0.0f; } + ImGuiTableInstanceData() { TableInstanceID = 0; LastOuterHeight = LastFirstRowHeight = LastFrozenHeight = 0.0f; HoveredRowLast = HoveredRowNext = -1; } }; // FIXME-TABLE: more transient data could be stored in a stacked ImGuiTableTempData: e.g. SortSpecs, incoming RowData @@ -3022,6 +3049,7 @@ namespace ImGui IMGUI_API void SetCurrentFont(ImFont* font); inline ImFont* GetDefaultFont() { ImGuiContext& g = *GImGui; return g.IO.FontDefault ? g.IO.FontDefault : g.IO.Fonts->Fonts[0]; } inline ImDrawList* GetForegroundDrawList(ImGuiWindow* window) { return GetForegroundDrawList(window->Viewport); } + IMGUI_API void AddDrawListToDrawDataEx(ImDrawData* draw_data, ImVector* out_list, ImDrawList* draw_list); // Init IMGUI_API void Initialize(); @@ -3101,7 +3129,7 @@ namespace ImGui IMGUI_API void ItemSize(const ImVec2& size, float text_baseline_y = -1.0f); inline void ItemSize(const ImRect& bb, float text_baseline_y = -1.0f) { ItemSize(bb.GetSize(), text_baseline_y); } // FIXME: This is a misleading API since we expect CursorPos to be bb.Min. IMGUI_API bool ItemAdd(const ImRect& bb, ImGuiID id, const ImRect* nav_bb = NULL, ImGuiItemFlags extra_flags = 0); - IMGUI_API bool ItemHoverable(const ImRect& bb, ImGuiID id); + IMGUI_API bool ItemHoverable(const ImRect& bb, ImGuiID id, ImGuiItemFlags item_flags); IMGUI_API bool IsWindowContentHoverable(ImGuiWindow* window, ImGuiHoveredFlags flags = 0); IMGUI_API bool IsClippedEx(const ImRect& bb, ImGuiID id); IMGUI_API void SetLastItemData(ImGuiID item_id, ImGuiItemFlags in_flags, ImGuiItemStatusFlags status_flags, const ImRect& item_rect); @@ -3161,10 +3189,15 @@ namespace ImGui IMGUI_API void NavMoveRequestTryWrapping(ImGuiWindow* window, ImGuiNavMoveFlags move_flags); IMGUI_API void NavClearPreferredPosForAxis(ImGuiAxis axis); IMGUI_API void NavUpdateCurrentWindowIsScrollPushableX(); - IMGUI_API void ActivateItem(ImGuiID id); // Remotely activate a button, checkbox, tree node etc. given its unique ID. activation is queued and processed on the next frame when the item is encountered again. IMGUI_API void SetNavWindow(ImGuiWindow* window); IMGUI_API void SetNavID(ImGuiID id, ImGuiNavLayer nav_layer, ImGuiID focus_scope_id, const ImRect& rect_rel); + // Focus/Activation + // This should be part of a larger set of API: FocusItem(offset = -1), FocusItemByID(id), ActivateItem(offset = -1), ActivateItemByID(id) etc. which are + // much harder to design and implement than expected. I have a couple of private branches on this matter but it's not simple. For now implementing the easy ones. + IMGUI_API void FocusItem(); // Focus last item (no selection/activation). + IMGUI_API void ActivateItemByID(ImGuiID id); // Activate an item by ID (button, checkbox, tree node etc.). Activation is queued and processed on the next frame when the item is encountered again. + // Inputs // FIXME: Eventually we should aim to move e.g. IsActiveIdUsingKey() into IsKeyXXX functions. inline bool IsNamedKey(ImGuiKey key) { return key >= ImGuiKey_NamedKey_BEGIN && key < ImGuiKey_NamedKey_END; } @@ -3334,7 +3367,8 @@ namespace ImGui IMGUI_API void TableOpenContextMenu(int column_n = -1); IMGUI_API void TableSetColumnWidth(int column_n, float width); IMGUI_API void TableSetColumnSortDirection(int column_n, ImGuiSortDirection sort_direction, bool append_to_sort_specs); - IMGUI_API int TableGetHoveredColumn(); // May use (TableGetColumnFlags() & ImGuiTableColumnFlags_IsHovered) instead. Return hovered column. return -1 when table is not hovered. return columns_count if the unused space at the right of visible columns is hovered. + IMGUI_API int TableGetHoveredColumn(); // May use (TableGetColumnFlags() & ImGuiTableColumnFlags_IsHovered) instead. Return hovered column. return -1 when table is not hovered. return columns_count if the unused space at the right of visible columns is hovered. + IMGUI_API int TableGetHoveredRow(); // Retrieve *PREVIOUS FRAME* hovered row. This difference with TableGetHoveredColumn() is the reason why this is not public yet. IMGUI_API float TableGetHeaderRowHeight(); IMGUI_API void TablePushBackgroundChannel(); IMGUI_API void TablePopBackgroundChannel(); diff --git a/extern/imgui_patched/imgui_tables.cpp b/extern/imgui_patched/imgui_tables.cpp index 4aae7a1e6..c6ab13732 100644 --- a/extern/imgui_patched/imgui_tables.cpp +++ b/extern/imgui_patched/imgui_tables.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.89.6 +// dear imgui, v1.89.8 // (tables and columns code) /* @@ -198,11 +198,7 @@ Index of this file: #include "imgui_internal.h" // System includes -#if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier -#include // intptr_t -#else #include // intptr_t -#endif // Visual Studio warnings #ifdef _MSC_VER @@ -417,7 +413,7 @@ bool ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImG table->HasScrollbarYPrev = table->HasScrollbarYCurr; table->HasScrollbarYCurr = false; } - table->HasScrollbarYCurr |= (table->InnerWindow->ScrollMax.y > 0.0f); + table->HasScrollbarYCurr |= table->InnerWindow->ScrollbarY; } else { @@ -974,12 +970,14 @@ void ImGui::TableUpdateLayout(ImGuiTable* table) // clear ActiveId, which is equivalent to the change provided by _AllowWhenBLockedByActiveItem). // - This allows columns to be marked as hovered when e.g. clicking a button inside the column, or using drag and drop. ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table->InstanceCurrent); + table_instance->HoveredRowLast = table_instance->HoveredRowNext; + table_instance->HoveredRowNext = -1; table->HoveredColumnBody = -1; table->HoveredColumnBorder = -1; const ImRect mouse_hit_rect(table->OuterRect.Min.x, table->OuterRect.Min.y, table->OuterRect.Max.x, ImMax(table->OuterRect.Max.y, table->OuterRect.Min.y + table_instance->LastOuterHeight)); const ImGuiID backup_active_id = g.ActiveId; g.ActiveId = 0; - const bool is_hovering_table = ItemHoverable(mouse_hit_rect, 0); + const bool is_hovering_table = ItemHoverable(mouse_hit_rect, 0, ImGuiItemFlags_None); g.ActiveId = backup_active_id; // [Part 6] Setup final position, offset, skip/clip states and clipping rectangles, detect hovered column @@ -1131,6 +1129,14 @@ void ImGui::TableUpdateLayout(ImGuiTable* table) table->BorderX1 = table->InnerClipRect.Min.x;// +((table->Flags & ImGuiTableFlags_BordersOuter) ? 0.0f : -1.0f); table->BorderX2 = table->InnerClipRect.Max.x;// +((table->Flags & ImGuiTableFlags_BordersOuter) ? 0.0f : +1.0f); + // Setup window's WorkRect.Max.y for GetContentRegionAvail(). Other values will be updated in each TableBeginCell() call. + float window_content_max_y; + if (table->Flags & ImGuiTableFlags_NoHostExtendY) + window_content_max_y = table->OuterRect.Max.y; + else + window_content_max_y = ImMax(table->InnerWindow->ContentRegionRect.Max.y, (table->Flags & ImGuiTableFlags_ScrollY) ? 0.0f : table->OuterRect.Max.y); + table->InnerWindow->WorkRect.Max.y = ImClamp(window_content_max_y - g.Style.CellPadding.y, table->InnerWindow->WorkRect.Min.y, table->InnerWindow->WorkRect.Max.y); + // [Part 9] Allocate draw channels and setup background cliprect TableSetupDrawChannels(table); @@ -1170,8 +1176,6 @@ void ImGui::TableUpdateLayout(ImGuiTable* table) // Process hit-testing on resizing borders. Actual size change will be applied in EndTable() // - Set table->HoveredColumnBorder with a short delay/timer to reduce visual feedback noise. -// - Submit ahead of table contents and header, use ImGuiButtonFlags_AllowItemOverlap to prioritize -// widgets overlapping the same area. void ImGui::TableUpdateBorders(ImGuiTable* table) { ImGuiContext& g = *GImGui; @@ -1211,7 +1215,7 @@ void ImGui::TableUpdateBorders(ImGuiTable* table) //GetForegroundDrawList()->AddRect(hit_rect.Min, hit_rect.Max, IM_COL32(255, 0, 0, 100)); bool hovered = false, held = false; - bool pressed = ButtonBehavior(hit_rect, column_id, &hovered, &held, ImGuiButtonFlags_FlattenChildren | ImGuiButtonFlags_AllowItemOverlap | ImGuiButtonFlags_PressedOnClick | ImGuiButtonFlags_PressedOnDoubleClick | ImGuiButtonFlags_NoNavFocus); + bool pressed = ButtonBehavior(hit_rect, column_id, &hovered, &held, ImGuiButtonFlags_FlattenChildren | ImGuiButtonFlags_PressedOnClick | ImGuiButtonFlags_PressedOnDoubleClick | ImGuiButtonFlags_NoNavFocus); if (pressed && IsMouseDoubleClicked(0)) { TableSetColumnWidthAutoSingle(table, column_n); @@ -1552,6 +1556,7 @@ void ImGui::TableSetupScrollFreeze(int columns, int rows) // - TableGetCellBgRect() [Internal] // - TableGetColumnResizeID() [Internal] // - TableGetHoveredColumn() [Internal] +// - TableGetHoveredRow() [Internal] // - TableSetBgColor() //----------------------------------------------------------------------------- @@ -1656,6 +1661,19 @@ int ImGui::TableGetHoveredColumn() return (int)table->HoveredColumnBody; } +// Return -1 when table is not hovered. Return maxrow+1 if in table but below last submitted row. +// *IMPORTANT* Unlike TableGetHoveredColumn(), this has a one frame latency in updating the value. +// This difference with is the reason why this is not public yet. +int ImGui::TableGetHoveredRow() +{ + ImGuiContext& g = *GImGui; + ImGuiTable* table = g.CurrentTable; + if (!table) + return -1; + ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, table->InstanceCurrent); + return (int)table_instance->HoveredRowLast; +} + void ImGui::TableSetBgColor(ImGuiTableBgTarget target, ImU32 color, int column_n) { ImGuiContext& g = *GImGui; @@ -1807,6 +1825,10 @@ void ImGui::TableEndRow(ImGuiTable* table) const bool is_visible = (bg_y2 >= table->InnerClipRect.Min.y && bg_y1 <= table->InnerClipRect.Max.y); if (is_visible) { + // Update data for TableGetHoveredRow() + if (table->HoveredColumnBody != -1 && g.IO.MousePos.y >= bg_y1 && g.IO.MousePos.y < bg_y2) + TableGetInstanceData(table, table->InstanceCurrent)->HoveredRowNext = table->CurrentRow; + // Decide of background color for the row ImU32 bg_col0 = 0; ImU32 bg_col1 = 0; @@ -2000,6 +2022,7 @@ void ImGui::TableBeginCell(ImGuiTable* table, int column_n) window->DC.CurrLineTextBaseOffset = table->RowTextBaseline; window->DC.NavLayerCurrent = (ImGuiNavLayer)column->NavLayerCurrent; + // Note how WorkRect.Max.y is only set once during layout window->WorkRect.Min.y = window->DC.CursorPos.y; window->WorkRect.Min.x = column->WorkMinX; window->WorkRect.Max.x = column->WorkMaxX; @@ -2964,11 +2987,9 @@ void ImGui::TableHeader(const char* label) //GetForegroundDrawList()->AddRect(cell_r.Min, cell_r.Max, IM_COL32(255, 0, 0, 255)); // [DEBUG] //GetForegroundDrawList()->AddRect(bb.Min, bb.Max, IM_COL32(255, 0, 0, 255)); // [DEBUG] - // Using AllowItemOverlap mode because we cover the whole cell, and we want user to be able to submit subsequent items. + // Using AllowOverlap mode because we cover the whole cell, and we want user to be able to submit subsequent items. bool hovered, held; - bool pressed = ButtonBehavior(bb, id, &hovered, &held, ImGuiButtonFlags_AllowItemOverlap); - if (g.ActiveId != id) - SetItemAllowOverlap(); + bool pressed = ButtonBehavior(bb, id, &hovered, &held, ImGuiButtonFlags_AllowOverlap); if (held || hovered || selected) { const ImU32 col = GetColorU32(held ? ImGuiCol_HeaderActive : hovered ? ImGuiCol_HeaderHovered : ImGuiCol_Header); @@ -3039,8 +3060,8 @@ void ImGui::TableHeader(const char* label) RenderTextEllipsis(window->DrawList, label_pos, ImVec2(ellipsis_max, label_pos.y + label_height + g.Style.FramePadding.y), ellipsis_max, ellipsis_max, label, label_end, &label_size); const bool text_clipped = label_size.x > (ellipsis_max - label_pos.x); - if (text_clipped && hovered && g.ActiveId == 0 && IsItemHovered(ImGuiHoveredFlags_DelayNormal)) - SetTooltip("%.*s", (int)(label_end - label), label); + if (text_clipped && hovered && g.ActiveId == 0) + SetItemTooltip("%.*s", (int)(label_end - label), label); // We don't use BeginPopupContextItem() because we want the popup to stay up even after the column is hidden if (IsMouseReleased(1) && IsItemHovered()) @@ -3602,6 +3623,11 @@ void ImGui::DebugNodeTable(ImGuiTable* table) BulletText("CellPaddingX: %.1f, CellSpacingX: %.1f/%.1f, OuterPaddingX: %.1f", table->CellPaddingX, table->CellSpacingX1, table->CellSpacingX2, table->OuterPaddingX); BulletText("HoveredColumnBody: %d, HoveredColumnBorder: %d", table->HoveredColumnBody, table->HoveredColumnBorder); BulletText("ResizedColumn: %d, ReorderColumn: %d, HeldHeaderColumn: %d", table->ResizedColumn, table->ReorderColumn, table->HeldHeaderColumn); + for (int n = 0; n < table->InstanceCurrent + 1; n++) + { + ImGuiTableInstanceData* table_instance = TableGetInstanceData(table, n); + BulletText("Instance %d: HoveredRow: %d, LastOuterHeight: %.2f", n, table_instance->HoveredRowLast, table_instance->LastOuterHeight); + } //BulletText("BgDrawChannels: %d/%d", 0, table->BgDrawChannelUnfrozen); float sum_weights = 0.0f; for (int n = 0; n < table->ColumnsCount; n++) @@ -3960,6 +3986,7 @@ void ImGui::BeginColumns(const char* str_id, int columns_count, ImGuiOldColumnFl window->DC.ColumnsOffset.x = ImMax(column_padding - window->WindowPadding.x, 0.0f); window->DC.CursorPos.x = IM_FLOOR(window->Pos.x + window->DC.Indent.x + window->DC.ColumnsOffset.x); window->WorkRect.Max.x = window->Pos.x + offset_1 - column_padding; + window->WorkRect.Max.y = window->ContentRegionRect.Max.y; } void ImGui::NextColumn() diff --git a/extern/imgui_patched/imgui_widgets.cpp b/extern/imgui_patched/imgui_widgets.cpp index b99e546e3..ff90e35ad 100644 --- a/extern/imgui_patched/imgui_widgets.cpp +++ b/extern/imgui_patched/imgui_widgets.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.89.6 +// dear imgui, v1.89.8 // (widgets code) /* @@ -41,11 +41,7 @@ Index of this file: #include "imgui_internal.h" // System includes -#if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier -#include // intptr_t -#else #include // intptr_t -#endif //------------------------------------------------------------------------- // Warnings @@ -492,6 +488,14 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool if ((flags & ImGuiButtonFlags_PressedOnMask_) == 0) flags |= ImGuiButtonFlags_PressedOnDefault_; + // Default behavior inherited from item flags + // Note that _both_ ButtonFlags and ItemFlags are valid sources, so copy one into the item_flags and only check that. + ImGuiItemFlags item_flags = (g.LastItemData.ID == id ? g.LastItemData.InFlags : g.CurrentItemFlags); + if (flags & ImGuiButtonFlags_AllowOverlap) + item_flags |= ImGuiItemflags_AllowOverlap; + if (flags & ImGuiButtonFlags_Repeat) + item_flags |= ImGuiItemFlags_ButtonRepeat; + ImGuiWindow* backup_hovered_window = g.HoveredWindow; const bool flatten_hovered_children = (flags & ImGuiButtonFlags_FlattenChildren) && g.HoveredWindow && g.HoveredWindow->RootWindowDockTree == window->RootWindowDockTree; if (flatten_hovered_children) @@ -504,11 +508,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool #endif bool pressed = false; - bool hovered = ItemHoverable(bb, id); - - // Drag source doesn't report as hovered - if (hovered && g.DragDropActive && g.DragDropPayload.SourceId == id && !(g.DragDropSourceFlags & ImGuiDragDropFlags_SourceNoDisableHover)) - hovered = false; + bool hovered = ItemHoverable(bb, id, item_flags); // Special mode for Drag and Drop where holding button pressed for a long time while dragging another item triggers the button if (g.DragDropActive && (flags & ImGuiButtonFlags_PressedOnDragDropHold) && !(g.DragDropSourceFlags & ImGuiDragDropFlags_SourceNoHoldToOpenOthers)) @@ -527,10 +527,6 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool if (flatten_hovered_children) g.HoveredWindow = backup_hovered_window; - // AllowOverlap mode (rarely used) requires previous frame HoveredId to be null or to match. This allows using patterns where a later submitted widget overlaps a previous one. - if (hovered && (flags & ImGuiButtonFlags_AllowItemOverlap) && (g.HoveredIdPreviousFrame != id && g.HoveredIdPreviousFrame != 0)) - hovered = false; - // Mouse handling const ImGuiID test_owner_id = (flags & ImGuiButtonFlags_NoTestKeyOwner) ? ImGuiKeyOwner_Any : id; if (hovered) @@ -579,7 +575,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool { if (mouse_button_released != -1) { - const bool has_repeated_at_least_once = (flags & ImGuiButtonFlags_Repeat) && g.IO.MouseDownDurationPrev[mouse_button_released] >= g.IO.KeyRepeatDelay; // Repeat mode trumps on release behavior + const bool has_repeated_at_least_once = (item_flags & ImGuiItemFlags_ButtonRepeat) && g.IO.MouseDownDurationPrev[mouse_button_released] >= g.IO.KeyRepeatDelay; // Repeat mode trumps on release behavior if (!has_repeated_at_least_once) pressed = true; if (!(flags & ImGuiButtonFlags_NoNavFocus)) @@ -590,7 +586,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool // 'Repeat' mode acts when held regardless of _PressedOn flags (see table above). // Relies on repeat logic of IsMouseClicked() but we may as well do it ourselves if we end up exposing finer RepeatDelay/RepeatRate settings. - if (g.ActiveId == id && (flags & ImGuiButtonFlags_Repeat)) + if (g.ActiveId == id && (item_flags & ImGuiItemFlags_ButtonRepeat)) if (g.IO.MouseDownDuration[g.ActiveIdMouseButton] > 0.0f && IsMouseClicked(g.ActiveIdMouseButton, test_owner_id, ImGuiInputFlags_Repeat)) pressed = true; } @@ -608,7 +604,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool { bool nav_activated_by_code = (g.NavActivateId == id); bool nav_activated_by_inputs = (g.NavActivatePressedId == id); - if (!nav_activated_by_inputs && (flags & ImGuiButtonFlags_Repeat)) + if (!nav_activated_by_inputs && (item_flags & ImGuiItemFlags_ButtonRepeat)) { // Avoid pressing multiple keys from triggering excessive amount of repeat events const ImGuiKeyData* key1 = GetKeyData(ImGuiKey_Space); @@ -655,7 +651,7 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool { // Report as pressed when releasing the mouse (this is the most common path) bool is_double_click_release = (flags & ImGuiButtonFlags_PressedOnDoubleClick) && g.IO.MouseReleased[mouse_button] && g.IO.MouseClickedLastCount[mouse_button] == 2; - bool is_repeating_already = (flags & ImGuiButtonFlags_Repeat) && g.IO.MouseDownDurationPrev[mouse_button] >= g.IO.KeyRepeatDelay; // Repeat mode trumps + bool is_repeating_already = (item_flags & ImGuiItemFlags_ButtonRepeat) && g.IO.MouseDownDurationPrev[mouse_button] >= g.IO.KeyRepeatDelay; // Repeat mode trumps bool is_button_avail_or_owned = TestKeyOwner(MouseButtonToKey(mouse_button), test_owner_id); if (!is_double_click_release && !is_repeating_already && is_button_avail_or_owned) pressed = true; @@ -702,9 +698,6 @@ bool ImGui::ButtonEx(const char* label, const ImVec2& size_arg, ImGuiButtonFlags if (!ItemAdd(bb, id)) return false; - if (g.LastItemData.InFlags & ImGuiItemFlags_ButtonRepeat) - flags |= ImGuiButtonFlags_Repeat; - bool hovered, held; bool pressed = ButtonBehavior(bb, id, &hovered, &held, flags); @@ -781,9 +774,6 @@ bool ImGui::ArrowButtonEx(const char* str_id, ImGuiDir dir, ImVec2 size, ImGuiBu if (!ItemAdd(bb, id)) return false; - if (g.LastItemData.InFlags & ImGuiItemFlags_ButtonRepeat) - flags |= ImGuiButtonFlags_Repeat; - bool hovered, held; bool pressed = ButtonBehavior(bb, id, &hovered, &held, flags); @@ -887,9 +877,9 @@ ImRect ImGui::GetWindowScrollbarRect(ImGuiWindow* window, ImGuiAxis axis) const float scrollbar_size = window->ScrollbarSizes[axis ^ 1]; // (ScrollbarSizes.x = width of Y scrollbar; ScrollbarSizes.y = height of X scrollbar) IM_ASSERT(scrollbar_size > 0.0f); if (axis == ImGuiAxis_X) - return ImRect(inner_rect.Min.x, ImMax(outer_rect.Min.y, outer_rect.Max.y - border_size - scrollbar_size), inner_rect.Max.x, outer_rect.Max.y); + return ImRect(inner_rect.Min.x, ImMax(outer_rect.Min.y, outer_rect.Max.y - border_size - scrollbar_size), inner_rect.Max.x - border_size, outer_rect.Max.y - border_size); else - return ImRect(ImMax(outer_rect.Min.x, outer_rect.Max.x - border_size - scrollbar_size), inner_rect.Min.y, outer_rect.Max.x, inner_rect.Max.y); + return ImRect(ImMax(outer_rect.Min.x, outer_rect.Max.x - border_size - scrollbar_size), inner_rect.Min.y, outer_rect.Max.x - border_size, inner_rect.Max.y - border_size); } void ImGui::Scrollbar(ImGuiAxis axis) @@ -1174,10 +1164,8 @@ bool ImGui::CheckboxFlagsT(const char* label, T* flags, T flags_value) if (!all_on && any_on) { ImGuiContext& g = *GImGui; - ImGuiItemFlags backup_item_flags = g.CurrentItemFlags; - g.CurrentItemFlags |= ImGuiItemFlags_MixedValue; + g.NextItemData.ItemFlags |= ImGuiItemFlags_MixedValue; pressed = Checkbox(label, &all_on); - g.CurrentItemFlags = backup_item_flags; } else { @@ -1559,14 +1547,20 @@ bool ImGui::SplitterBehavior(const ImRect& bb, ImGuiID id, ImGuiAxis axis, float if (!ItemAdd(bb, id, NULL, ImGuiItemFlags_NoNav)) return false; + // FIXME: AFAIK the only leftover reason for passing ImGuiButtonFlags_AllowOverlap here is + // to allow caller of SplitterBehavior() to call SetItemAllowOverlap() after the item. + // Nowadays we would instead want to use SetNextItemAllowOverlap() before the item. + ImGuiButtonFlags button_flags = ImGuiButtonFlags_FlattenChildren; +#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS + button_flags |= ImGuiButtonFlags_AllowOverlap; +#endif + bool hovered, held; ImRect bb_interact = bb; bb_interact.Expand(axis == ImGuiAxis_Y ? ImVec2(0.0f, hover_extend) : ImVec2(hover_extend, 0.0f)); - ButtonBehavior(bb_interact, id, &hovered, &held, ImGuiButtonFlags_FlattenChildren | ImGuiButtonFlags_AllowItemOverlap); + ButtonBehavior(bb_interact, id, &hovered, &held, button_flags); if (hovered) g.LastItemData.StatusFlags |= ImGuiItemStatusFlags_HoveredRect; // for IsItemHovered(), because bb_interact is larger than bb - if (g.ActiveId != id) - SetItemAllowOverlap(); if (held || (hovered && g.HoveredIdPreviousFrame == id && g.HoveredIdTimer >= hover_visibility_delay)) SetMouseCursor(axis == ImGuiAxis_Y ? ImGuiMouseCursor_ResizeNS : ImGuiMouseCursor_ResizeEW); @@ -1835,7 +1829,7 @@ bool ImGui::BeginComboPreview() if (window->SkipItems || !(g.LastItemData.StatusFlags & ImGuiItemStatusFlags_Visible)) return false; IM_ASSERT(g.LastItemData.Rect.Min.x == preview_data->PreviewRect.Min.x && g.LastItemData.Rect.Min.y == preview_data->PreviewRect.Min.y); // Didn't call after BeginCombo/EndCombo block or forgot to pass ImGuiComboFlags_CustomPreview flag? - if (!window->ClipRect.Contains(preview_data->PreviewRect)) // Narrower test (optional) + if (!window->ClipRect.Overlaps(preview_data->PreviewRect)) // Narrower test (optional) return false; // FIXME: This could be contained in a PushWorkRect() api @@ -1934,7 +1928,7 @@ bool ImGui::Combo(const char* label, int* current_item, bool (*items_getter)(voi const char* item_text; if (!items_getter(data, i, &item_text)) item_text = "*Unknown item*"; - if (Selectable(item_text, item_selected)) + if (Selectable(item_text, item_selected) && *current_item != i) { value_changed = true; *current_item = i; @@ -2421,7 +2415,7 @@ bool ImGui::DragScalar(const char* label, ImGuiDataType data_type, void* p_data, if (format == NULL) format = DataTypeGetInfo(data_type)->PrintFmt; - const bool hovered = ItemHoverable(frame_bb, id); + const bool hovered = ItemHoverable(frame_bb, id, g.LastItemData.InFlags); bool temp_input_is_active = temp_input_allowed && TempInputIsActive(id); if (!temp_input_is_active) { @@ -3014,7 +3008,7 @@ bool ImGui::SliderScalar(const char* label, ImGuiDataType data_type, void* p_dat if (format == NULL) format = DataTypeGetInfo(data_type)->PrintFmt; - const bool hovered = ItemHoverable(frame_bb, id); + const bool hovered = ItemHoverable(frame_bb, id, g.LastItemData.InFlags); bool temp_input_is_active = temp_input_allowed && TempInputIsActive(id); if (!temp_input_is_active) { @@ -3182,7 +3176,7 @@ bool ImGui::VSliderScalar(const char* label, const ImVec2& size, ImGuiDataType d if (format == NULL) format = DataTypeGetInfo(data_type)->PrintFmt; - const bool hovered = ItemHoverable(frame_bb, id); + const bool hovered = ItemHoverable(frame_bb, id, g.LastItemData.InFlags); bool temp_input_is_active = temp_input_allowed && TempInputIsActive(id); if (!temp_input_is_active) { @@ -3849,6 +3843,7 @@ static bool STB_TEXTEDIT_INSERTCHARS(ImGuiInputTextState* obj, int pos, const Im #define STB_TEXTEDIT_K_SHIFT 0x400000 #define STB_TEXTEDIT_IMPLEMENTATION +#define STB_TEXTEDIT_memmove memmove #include "imstb_textedit.h" // stb_textedit internally allows for a single undo record to do addition and deletion, but somehow, calling @@ -3909,6 +3904,10 @@ void ImGuiInputTextCallbackData::DeleteChars(int pos, int bytes_count) void ImGuiInputTextCallbackData::InsertChars(int pos, const char* new_text, const char* new_text_end) { + // Accept null ranges + if (new_text == new_text_end) + return; + const bool is_resizable = (Flags & ImGuiInputTextFlags_CallbackResize) != 0; const int new_text_len = new_text_end ? (int)(new_text_end - new_text) : (int)strlen(new_text); if (new_text_len + BufTextLen >= BufSize) @@ -4084,8 +4083,16 @@ void ImGui::InputTextDeactivateHook(ImGuiID id) if (id == 0 || state->ID != id) return; g.InputTextDeactivatedState.ID = state->ID; - g.InputTextDeactivatedState.TextA.resize(state->CurLenA + 1); - memcpy(g.InputTextDeactivatedState.TextA.Data, state->TextA.Data ? state->TextA.Data : "", state->CurLenA + 1); + if (state->Flags & ImGuiInputTextFlags_ReadOnly) + { + g.InputTextDeactivatedState.TextA.resize(0); // In theory this data won't be used, but clear to be neat. + } + else + { + IM_ASSERT(state->TextA.Data != 0); + g.InputTextDeactivatedState.TextA.resize(state->CurLenA + 1); + memcpy(g.InputTextDeactivatedState.TextA.Data, state->TextA.Data, state->CurLenA + 1); + } } // Edit a string of text @@ -4175,7 +4182,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ return false; item_status_flags = g.LastItemData.StatusFlags; } - const bool hovered = ItemHoverable(frame_bb, id); + const bool hovered = ItemHoverable(frame_bb, id, g.LastItemData.InFlags); if (hovered) g.MouseCursor = ImGuiMouseCursor_TextInput; @@ -4517,7 +4524,7 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ { if (flags & ImGuiInputTextFlags_EscapeClearsAll) { - if (state->CurLenA > 0) + if (buf[0] != 0) { revert_edit = true; } @@ -4605,8 +4612,10 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ if (flags & ImGuiInputTextFlags_EscapeClearsAll) { // Clear input + IM_ASSERT(buf[0] != 0); apply_new_text = ""; apply_new_text_length = 0; + value_changed = true; STB_TEXTEDIT_CHARTYPE empty_string; stb_textedit_replace(state, &state->Stb, &empty_string, 0); } @@ -4635,9 +4644,12 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ ImTextStrToUtf8(state->TextA.Data, state->TextA.Size, state->TextW.Data, NULL); } - // When using 'ImGuiInputTextFlags_EnterReturnsTrue' as a special case we reapply the live buffer back to the input buffer before clearing ActiveId, even though strictly speaking it wasn't modified on this frame. + // When using 'ImGuiInputTextFlags_EnterReturnsTrue' as a special case we reapply the live buffer back to the input buffer + // before clearing ActiveId, even though strictly speaking it wasn't modified on this frame. // If we didn't do that, code like InputInt() with ImGuiInputTextFlags_EnterReturnsTrue would fail. - // This also allows the user to use InputText() with ImGuiInputTextFlags_EnterReturnsTrue without maintaining any user-side storage (please note that if you use this property along ImGuiInputTextFlags_CallbackResize you can end up with your temporary string object unnecessarily allocating once a frame, either store your string data, either if you don't then don't use ImGuiInputTextFlags_CallbackResize). + // This also allows the user to use InputText() with ImGuiInputTextFlags_EnterReturnsTrue without maintaining any user-side storage + // (please note that if you use this property along ImGuiInputTextFlags_CallbackResize you can end up with your temporary string object + // unnecessarily allocating once a frame, either store your string data, either if you don't then don't use ImGuiInputTextFlags_CallbackResize). const bool apply_edit_back_to_user_buffer = !revert_edit || (validated && (flags & ImGuiInputTextFlags_EnterReturnsTrue) != 0); if (apply_edit_back_to_user_buffer) { @@ -4738,11 +4750,11 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ // Handle reapplying final data on deactivation (see InputTextDeactivateHook() for details) if (g.InputTextDeactivatedState.ID == id) { - if (g.ActiveId != id && IsItemDeactivatedAfterEdit() && !is_readonly) + if (g.ActiveId != id && IsItemDeactivatedAfterEdit() && !is_readonly && strcmp(g.InputTextDeactivatedState.TextA.Data, buf) != 0) { apply_new_text = g.InputTextDeactivatedState.TextA.Data; apply_new_text_length = g.InputTextDeactivatedState.TextA.Size - 1; - value_changed |= (strcmp(g.InputTextDeactivatedState.TextA.Data, buf) != 0); + value_changed = true; //IMGUI_DEBUG_LOG("InputText(): apply Deactivated data for 0x%08X: \"%.*s\".\n", id, apply_new_text_length, apply_new_text); } g.InputTextDeactivatedState.ID = 0; @@ -5023,11 +5035,9 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ { // For focus requests to work on our multiline we need to ensure our child ItemAdd() call specifies the ImGuiItemFlags_Inputable (ref issue #4761)... Dummy(ImVec2(text_size.x, text_size.y + style.FramePadding.y)); - ImGuiItemFlags backup_item_flags = g.CurrentItemFlags; - g.CurrentItemFlags |= ImGuiItemFlags_Inputable | ImGuiItemFlags_NoTabStop; + g.NextItemData.ItemFlags |= ImGuiItemFlags_Inputable | ImGuiItemFlags_NoTabStop; EndChild(); item_data_backup.StatusFlags |= (g.LastItemData.StatusFlags & ImGuiItemStatusFlags_HoveredWindow); - g.CurrentItemFlags = backup_item_flags; // ...and then we need to undo the group overriding last item data, which gets a bit messy as EndGroup() tries to forward scrollbar being active... // FIXME: This quite messy/tricky, should attempt to get rid of the child window. @@ -5861,7 +5871,7 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl } // Tooltip - if (!(flags & ImGuiColorEditFlags_NoTooltip) && hovered) + if (!(flags & ImGuiColorEditFlags_NoTooltip) && hovered && IsItemHovered(ImGuiHoveredFlags_ForTooltip)) ColorTooltip(desc_id, &col.x, flags & (ImGuiColorEditFlags_InputMask_ | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf)); return pressed; @@ -5891,7 +5901,7 @@ void ImGui::ColorTooltip(const char* text, const float* col, ImGuiColorEditFlags { ImGuiContext& g = *GImGui; - if (!BeginTooltipEx(ImGuiTooltipFlags_OverridePreviousTooltip, ImGuiWindowFlags_None)) + if (!BeginTooltipEx(ImGuiTooltipFlags_OverridePrevious, ImGuiWindowFlags_None)) return; const char* text_end = text ? FindRenderedTextEnd(text, NULL) : text; if (text_end > text) @@ -6226,8 +6236,8 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l } ImGuiButtonFlags button_flags = ImGuiTreeNodeFlags_None; - if (flags & ImGuiTreeNodeFlags_AllowItemOverlap) - button_flags |= ImGuiButtonFlags_AllowItemOverlap; + if ((flags & ImGuiTreeNodeFlags_AllowOverlap) || (g.LastItemData.InFlags & ImGuiItemflags_AllowOverlap)) + button_flags |= ImGuiButtonFlags_AllowOverlap; if (!is_leaf) button_flags |= ImGuiButtonFlags_PressedOnDragDropHold; @@ -6300,8 +6310,6 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l g.LastItemData.StatusFlags |= ImGuiItemStatusFlags_ToggledOpen; } } - if (flags & ImGuiTreeNodeFlags_AllowItemOverlap) - SetItemAllowOverlap(); // In this branch, TreeNodeBehavior() cannot toggle the selection so this will never trigger. if (selected != was_selected) //-V547 @@ -6319,9 +6327,9 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l if (flags & ImGuiTreeNodeFlags_Bullet) RenderBullet(window->DrawList, ImVec2(text_pos.x - text_offset_x * 0.60f, text_pos.y + g.FontSize * 0.5f), text_col); else if (!is_leaf) - RenderArrow(window->DrawList, ImVec2(text_pos.x - text_offset_x + padding.x, text_pos.y), text_col, is_open ? ImGuiDir_Down : ImGuiDir_Right, 1.0f); + RenderArrow(window->DrawList, ImVec2(text_pos.x - text_offset_x + padding.x, text_pos.y), text_col, is_open ? ((flags & ImGuiTreeNodeFlags_UpsideDownArrow) ? ImGuiDir_Up : ImGuiDir_Down) : ImGuiDir_Right, 1.0f); else // Leaf without bullet, left-adjusted text - text_pos.x -= text_offset_x; + text_pos.x -= text_offset_x -padding.x; if (flags & ImGuiTreeNodeFlags_ClipLabelForTrailingButton) frame_bb.Max.x -= g.FontSize + style.FramePadding.x; @@ -6341,7 +6349,7 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l if (flags & ImGuiTreeNodeFlags_Bullet) RenderBullet(window->DrawList, ImVec2(text_pos.x - text_offset_x * 0.5f, text_pos.y + g.FontSize * 0.5f), text_col); else if (!is_leaf) - RenderArrow(window->DrawList, ImVec2(text_pos.x - text_offset_x + padding.x, text_pos.y + g.FontSize * 0.15f), text_col, is_open ? ImGuiDir_Down : ImGuiDir_Right, 0.70f); + RenderArrow(window->DrawList, ImVec2(text_pos.x - text_offset_x + padding.x, text_pos.y + g.FontSize * 0.15f), text_col, is_open ? ((flags & ImGuiTreeNodeFlags_UpsideDownArrow) ? ImGuiDir_Up : ImGuiDir_Down) : ImGuiDir_Right, 0.70f); if (g.LogEnabled) LogSetNextTextDecoration(">", NULL); RenderText(text_pos, label, label_end, false); @@ -6445,7 +6453,7 @@ bool ImGui::CollapsingHeader(const char* label, bool* p_visible, ImGuiTreeNodeFl ImGuiID id = window->GetID(label); flags |= ImGuiTreeNodeFlags_CollapsingHeader; if (p_visible) - flags |= ImGuiTreeNodeFlags_AllowItemOverlap | ImGuiTreeNodeFlags_ClipLabelForTrailingButton; + flags |= ImGuiTreeNodeFlags_AllowOverlap | ImGuiTreeNodeFlags_ClipLabelForTrailingButton; bool is_open = TreeNodeBehavior(id, flags, label); if (p_visible != NULL) { @@ -6474,7 +6482,7 @@ bool ImGui::CollapsingHeader(const char* label, bool* p_visible, ImGuiTreeNodeFl // Tip: pass a non-visible label (e.g. "##hello") then you can use the space to draw other text or image. // But you need to make sure the ID is unique, e.g. enclose calls in PushID/PopID or use ##unique_id. -// With this scheme, ImGuiSelectableFlags_SpanAllColumns and ImGuiSelectableFlags_AllowItemOverlap are also frequently used flags. +// With this scheme, ImGuiSelectableFlags_SpanAllColumns and ImGuiSelectableFlags_AllowOverlap are also frequently used flags. // FIXME: Selectable() with (size.x == 0.0f) and (SelectableTextAlign.x > 0.0f) followed by SameLine() is currently not supported. bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags flags, const ImVec2& size_arg) { @@ -6558,7 +6566,7 @@ bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags fl if (flags & ImGuiSelectableFlags_SelectOnClick) { button_flags |= ImGuiButtonFlags_PressedOnClick; } if (flags & ImGuiSelectableFlags_SelectOnRelease) { button_flags |= ImGuiButtonFlags_PressedOnRelease; } if (flags & ImGuiSelectableFlags_AllowDoubleClick) { button_flags |= ImGuiButtonFlags_PressedOnClickRelease | ImGuiButtonFlags_PressedOnDoubleClick; } - if (flags & ImGuiSelectableFlags_AllowItemOverlap) { button_flags |= ImGuiButtonFlags_AllowItemOverlap; } + if ((flags & ImGuiSelectableFlags_AllowOverlap) || (g.LastItemData.InFlags & ImGuiItemflags_AllowOverlap)) { button_flags |= ImGuiButtonFlags_AllowOverlap; } const bool was_selected = selected; bool hovered, held; @@ -6587,9 +6595,6 @@ bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags fl if (pressed) MarkItemEdited(id); - if (flags & ImGuiSelectableFlags_AllowItemOverlap) - SetItemAllowOverlap(); - // In this branch, Selectable() cannot toggle the selection so this will never trigger. if (selected != was_selected) //-V547 g.LastItemData.StatusFlags |= ImGuiItemStatusFlags_ToggledSelection; @@ -6774,7 +6779,7 @@ int ImGui::PlotEx(ImGuiPlotType plot_type, const char* label, float (*values_get ItemSize(total_bb, style.FramePadding.y); if (!ItemAdd(total_bb, 0, &frame_bb)) return -1; - const bool hovered = ItemHoverable(frame_bb, id); + const bool hovered = ItemHoverable(frame_bb, id, g.LastItemData.InFlags); // Determine scale from values if not specified if (scale_min == FLT_MAX || scale_max == FLT_MAX) @@ -8516,7 +8521,7 @@ bool ImGui::TabItemEx(ImGuiTabBar* tab_bar, const char* label, bool* p_open, } // Click to Select a tab - ImGuiButtonFlags button_flags = ((is_tab_button ? ImGuiButtonFlags_PressedOnClickRelease : ImGuiButtonFlags_PressedOnClick) | ImGuiButtonFlags_AllowItemOverlap); + ImGuiButtonFlags button_flags = ((is_tab_button ? ImGuiButtonFlags_PressedOnClickRelease : ImGuiButtonFlags_PressedOnClick) | ImGuiButtonFlags_AllowOverlap); if (g.DragDropActive && !g.DragDropPayload.IsDataType(IMGUI_PAYLOAD_TYPE_WINDOW)) // FIXME: May be an opt-in property of the payload to disable this button_flags |= ImGuiButtonFlags_PressedOnDragDropHold; bool hovered, held; @@ -8529,10 +8534,6 @@ bool ImGui::TabItemEx(ImGuiTabBar* tab_bar, const char* label, bool* p_open, if (held && docked_window && g.ActiveId == id && g.ActiveIdIsJustActivated) g.ActiveIdWindow = docked_window; - // Allow the close button to overlap unless we are dragging (in which case we don't want any overlapping tabs to be hovered) - if (g.ActiveId != id) - SetItemAllowOverlap(); - // Drag and drop a single floating window node moves it ImGuiDockNode* node = docked_window ? docked_window->DockNode : NULL; const bool single_floating_window_node = node && node->IsFloatingNode() && (node->Windows.Size == 1); @@ -8653,8 +8654,7 @@ bool ImGui::TabItemEx(ImGuiTabBar* tab_bar, const char* label, bool* p_open, // FIXME: We may want disabled tab to still display the tooltip? if (text_clipped && g.HoveredId == id && !held) if (!(tab_bar->Flags & ImGuiTabBarFlags_NoTooltip) && !(tab->Flags & ImGuiTabItemFlags_NoTooltip)) - if (IsItemHovered(ImGuiHoveredFlags_DelayNormal)) - SetTooltip("%.*s", (int)(FindRenderedTextEnd(label) - label), label); + SetItemTooltip("%.*s", (int)(FindRenderedTextEnd(label) - label), label); IM_ASSERT(!is_tab_button || !(tab_bar->SelectedTabId == tab->ID && is_tab_button)); // TabItemButton should not be selected if (is_tab_button) diff --git a/extern/imgui_patched/misc/cpp/imgui_stdlib.cpp b/extern/imgui_patched/misc/cpp/imgui_stdlib.cpp index c9060e886..cf69aa89a 100644 --- a/extern/imgui_patched/misc/cpp/imgui_stdlib.cpp +++ b/extern/imgui_patched/misc/cpp/imgui_stdlib.cpp @@ -10,6 +10,12 @@ #include "imgui.h" #include "imgui_stdlib.h" +// Clang warnings with -Weverything +#if defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wsign-conversion" // warning: implicit conversion changes signedness +#endif + struct InputTextCallback_UserData { std::string* Str; @@ -73,3 +79,7 @@ bool ImGui::InputTextWithHint(const char* label, const char* hint, std::string* cb_user_data.ChainCallbackUserData = user_data; return InputTextWithHint(label, hint, (char*)str->c_str(), str->capacity() + 1, flags, InputTextCallback, &cb_user_data); } + +#if defined(__clang__) +#pragma clang diagnostic pop +#endif diff --git a/extern/imgui_patched/misc/freetype/README.md b/extern/imgui_patched/misc/freetype/README.md index 140ae2257..275a53866 100644 --- a/extern/imgui_patched/misc/freetype/README.md +++ b/extern/imgui_patched/misc/freetype/README.md @@ -12,7 +12,7 @@ Build font atlases using FreeType instead of stb_truetype (which is the default ### About Gamma Correct Blending FreeType assumes blending in linear space rather than gamma space. -See FreeType note for [FT_Render_Glyph](https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_Render_Glyph). +See FreeType note for [FT_Render_Glyph](https://freetype.org/freetype2/docs/reference/ft2-glyph_retrieval.html#ft_render_glyph). For correct results you need to be using sRGB and convert to linear space in the pixel shader output. The default Dear ImGui styles will be impacted by this change (alpha values will need tweaking). @@ -22,7 +22,7 @@ See https://gist.github.com/ocornut/b3a9ecf13502fd818799a452969649ad ### Known issues -- Oversampling settins are ignored but also not so much necessary with the higher quality rendering. +- Oversampling settings are ignored but also not so much necessary with the higher quality rendering. ### Comparison @@ -35,3 +35,10 @@ You can use the `ImGuiFreeTypeBuilderFlags_LoadColor` flag to load certain color ["Using Colorful Glyphs/Emojis"](https://github.com/ocornut/imgui/blob/master/docs/FONTS.md#using-colorful-glyphsemojis) section of FONTS.md. ![colored glyphs](https://user-images.githubusercontent.com/8225057/106171241-9dc4ba80-6191-11eb-8a69-ca1467b206d1.png) + +### Using OpenType SVG fonts (SVGinOT) +- *SVG in Open Type* is a standard by Adobe and Mozilla for color OpenType and Open Font Format fonts. It allows font creators to embed complete SVG files within a font enabling full color and even animations. +- Popular fonts such as [twemoji](https://github.com/13rac1/twemoji-color-font) and fonts made with [scfbuild](https://github.com/13rac1/scfbuild) is SVGinOT +- Requires: [lunasvg](https://github.com/sammycage/lunasvg) v2.3.2 and above + 1. Add `#define IMGUI_ENABLE_FREETYPE_LUNASVG` in your `imconfig.h`. + 2. Get latest lunasvg binaries or build yourself. Under Windows you may use vcpkg with: `vcpkg install lunasvg --triplet=x64-windows`. diff --git a/extern/imgui_patched/misc/freetype/imgui_freetype.cpp b/extern/imgui_patched/misc/freetype/imgui_freetype.cpp index 503430a68..a11e58255 100644 --- a/extern/imgui_patched/misc/freetype/imgui_freetype.cpp +++ b/extern/imgui_patched/misc/freetype/imgui_freetype.cpp @@ -6,13 +6,13 @@ // CHANGELOG // (minor and older changes stripped away, please see git history for details) +// 2023/08/01: added support for SVG fonts, enable by using '#define IMGUI_ENABLE_FREETYPE_LUNASVG' (#6591) // 2023/01/04: fixed a packing issue which in some occurrences would prevent large amount of glyphs from being packed correctly. // 2021/08/23: fixed crash when FT_Render_Glyph() fails to render a glyph and returns NULL. // 2021/03/05: added ImGuiFreeTypeBuilderFlags_Bitmap to load bitmap glyphs. // 2021/03/02: set 'atlas->TexPixelsUseColors = true' to help some backends with deciding of a prefered texture format. // 2021/01/28: added support for color-layered glyphs via ImGuiFreeTypeBuilderFlags_LoadColor (require Freetype 2.10+). -// 2021/01/26: simplified integration by using '#define IMGUI_ENABLE_FREETYPE'. -// renamed ImGuiFreeType::XXX flags to ImGuiFreeTypeBuilderFlags_XXX for consistency with other API. removed ImGuiFreeType::BuildFontAtlas(). +// 2021/01/26: simplified integration by using '#define IMGUI_ENABLE_FREETYPE'. renamed ImGuiFreeType::XXX flags to ImGuiFreeTypeBuilderFlags_XXX for consistency with other API. removed ImGuiFreeType::BuildFontAtlas(). // 2020/06/04: fix for rare case where FT_Get_Char_Index() succeed but FT_Load_Glyph() fails. // 2019/02/09: added RasterizerFlags::Monochrome flag to disable font anti-aliasing (combine with ::MonoHinting for best results!) // 2019/01/15: added support for imgui allocators + added FreeType only override function SetAllocatorFunctions(). @@ -33,6 +33,8 @@ // FIXME: cfg.OversampleH, OversampleV are not supported (but perhaps not so necessary with this rasterizer). +#include "imgui.h" +#ifndef IMGUI_DISABLE #include "imgui_freetype.h" #include "imgui_internal.h" // ImMin,ImMax,ImFontAtlasBuild*, #include @@ -42,6 +44,15 @@ #include FT_GLYPH_H // #include FT_SYNTHESIS_H // +#ifdef IMGUI_ENABLE_FREETYPE_LUNASVG +#include FT_OTSVG_H // +#include FT_BBOX_H // +#include +#if !((FREETYPE_MAJOR >= 2) && (FREETYPE_MINOR >= 12)) +#error IMGUI_ENABLE_FREETYPE_LUNASVG requires FreeType version >= 2.12 +#endif +#endif + #ifdef _MSC_VER #pragma warning (push) #pragma warning (disable: 4505) // unreferenced local function has been removed (stb stuff) @@ -68,6 +79,14 @@ static void* (*GImGuiFreeTypeAllocFunc)(size_t size, void* user_data) = ImGuiFre static void (*GImGuiFreeTypeFreeFunc)(void* ptr, void* user_data) = ImGuiFreeTypeDefaultFreeFunc; static void* GImGuiFreeTypeAllocatorUserData = nullptr; +// Lunasvg support +#ifdef IMGUI_ENABLE_FREETYPE_LUNASVG +static FT_Error ImGuiLunasvgPortInit(FT_Pointer* state); +static void ImGuiLunasvgPortFree(FT_Pointer* state); +static FT_Error ImGuiLunasvgPortRender(FT_GlyphSlot slot, FT_Pointer* _state); +static FT_Error ImGuiLunasvgPortPresetSlot(FT_GlyphSlot slot, FT_Bool cache, FT_Pointer* _state); +#endif + //------------------------------------------------------------------------- // Code //------------------------------------------------------------------------- @@ -242,7 +261,14 @@ namespace // Need an outline for this to work FT_GlyphSlot slot = Face->glyph; +#ifdef IMGUI_ENABLE_FREETYPE_LUNASVG + IM_ASSERT(slot->format == FT_GLYPH_FORMAT_OUTLINE || slot->format == FT_GLYPH_FORMAT_BITMAP || slot->format == FT_GLYPH_FORMAT_SVG); +#else +#if ((FREETYPE_MAJOR >= 2) && (FREETYPE_MINOR >= 12)) + IM_ASSERT(slot->format != FT_GLYPH_FORMAT_SVG && "The font contains SVG glyphs, you'll need to enable IMGUI_ENABLE_FREETYPE_LUNASVG in imconfig.h and install required libraries in order to use this font"); +#endif IM_ASSERT(slot->format == FT_GLYPH_FORMAT_OUTLINE || slot->format == FT_GLYPH_FORMAT_BITMAP); +#endif // IMGUI_ENABLE_FREETYPE_LUNASVG // Apply convenience transform (this is not picking from real "Bold"/"Italic" fonts! Merely applying FreeType helper transform. Oblique == Slanting) if (UserFlags & ImGuiFreeTypeBuilderFlags_Bold) @@ -768,6 +794,14 @@ static bool ImFontAtlasBuildWithFreeType(ImFontAtlas* atlas) // If you don't call FT_Add_Default_Modules() the rest of code may work, but FreeType won't use our custom allocator. FT_Add_Default_Modules(ft_library); +#ifdef IMGUI_ENABLE_FREETYPE_LUNASVG + // Install svg hooks for FreeType + // https://freetype.org/freetype2/docs/reference/ft2-properties.html#svg-hooks + // https://freetype.org/freetype2/docs/reference/ft2-svg_fonts.html#svg_fonts + SVG_RendererHooks hooks = { ImGuiLunasvgPortInit, ImGuiLunasvgPortFree, ImGuiLunasvgPortRender, ImGuiLunasvgPortPresetSlot }; + FT_Property_Set(ft_library, "ot-svg", "svg-hooks", &hooks); +#endif // IMGUI_ENABLE_FREETYPE_LUNASVG + bool ret = ImFontAtlasBuildWithFreeTypeEx(ft_library, atlas, atlas->FontBuilderFlags); FT_Done_Library(ft_library); @@ -788,6 +822,115 @@ void ImGuiFreeType::SetAllocatorFunctions(void* (*alloc_func)(size_t sz, void* u GImGuiFreeTypeAllocatorUserData = user_data; } +#ifdef IMGUI_ENABLE_FREETYPE_LUNASVG +// For more details, see https://gitlab.freedesktop.org/freetype/freetype-demos/-/blob/master/src/rsvg-port.c +// The original code from the demo is licensed under CeCILL-C Free Software License Agreement (https://gitlab.freedesktop.org/freetype/freetype/-/blob/master/LICENSE.TXT) +struct LunasvgPortState +{ + FT_Error err = FT_Err_Ok; + lunasvg::Matrix matrix; + std::unique_ptr svg = nullptr; +}; + +static FT_Error ImGuiLunasvgPortInit(FT_Pointer* _state) +{ + *_state = IM_NEW(LunasvgPortState)(); + return FT_Err_Ok; +} + +static void ImGuiLunasvgPortFree(FT_Pointer* _state) +{ + IM_DELETE(*_state); +} + +static FT_Error ImGuiLunasvgPortRender(FT_GlyphSlot slot, FT_Pointer* _state) +{ + LunasvgPortState* state = *(LunasvgPortState**)_state; + + // If there was an error while loading the svg in ImGuiLunasvgPortPresetSlot(), the renderer hook still get called, so just returns the error. + if (state->err != FT_Err_Ok) + return state->err; + + // rows is height, pitch (or stride) equals to width * sizeof(int32) + lunasvg::Bitmap bitmap((uint8_t*)slot->bitmap.buffer, slot->bitmap.width, slot->bitmap.rows, slot->bitmap.pitch); + state->svg->setMatrix(state->svg->matrix().identity()); // Reset the svg matrix to the default value + state->svg->render(bitmap, state->matrix); // state->matrix is already scaled and translated + state->err = FT_Err_Ok; + return state->err; +} + +static FT_Error ImGuiLunasvgPortPresetSlot(FT_GlyphSlot slot, FT_Bool cache, FT_Pointer* _state) +{ + FT_SVG_Document document = (FT_SVG_Document)slot->other; + LunasvgPortState* state = *(LunasvgPortState**)_state; + FT_Size_Metrics& metrics = document->metrics; + + // This function is called twice, once in the FT_Load_Glyph() and another right before ImGuiLunasvgPortRender(). + // If it's the latter, don't do anything because it's // already done in the former. + if (cache) + return state->err; + + state->svg = lunasvg::Document::loadFromData((const char*)document->svg_document, document->svg_document_length); + if (state->svg == nullptr) + { + state->err = FT_Err_Invalid_SVG_Document; + return state->err; + } + + lunasvg::Box box = state->svg->box(); + double scale = std::min(metrics.x_ppem / box.w, metrics.y_ppem / box.h); + double xx = (double)document->transform.xx / (1 << 16); + double xy = -(double)document->transform.xy / (1 << 16); + double yx = -(double)document->transform.yx / (1 << 16); + double yy = (double)document->transform.yy / (1 << 16); + double x0 = (double)document->delta.x / 64 * box.w / metrics.x_ppem; + double y0 = -(double)document->delta.y / 64 * box.h / metrics.y_ppem; + + // Scale and transform, we don't translate the svg yet + state->matrix.identity(); + state->matrix.scale(scale, scale); + state->matrix.transform(xx, xy, yx, yy, x0, y0); + state->svg->setMatrix(state->matrix); + + // Pre-translate the matrix for the rendering step + state->matrix.translate(-box.x, -box.y); + + // Get the box again after the transformation + box = state->svg->box(); + + // Calculate the bitmap size + slot->bitmap_left = FT_Int(box.x); + slot->bitmap_top = FT_Int(-box.y); + slot->bitmap.rows = (unsigned int)(ImCeil((float)box.h)); + slot->bitmap.width = (unsigned int)(ImCeil((float)box.w)); + slot->bitmap.pitch = slot->bitmap.width * 4; + slot->bitmap.pixel_mode = FT_PIXEL_MODE_BGRA; + + // Compute all the bearings and set them correctly. The outline is scaled already, we just need to use the bounding box. + double metrics_width = box.w; + double metrics_height = box.h; + double horiBearingX = box.x; + double horiBearingY = -box.y; + double vertBearingX = slot->metrics.horiBearingX / 64.0 - slot->metrics.horiAdvance / 64.0 / 2.0; + double vertBearingY = (slot->metrics.vertAdvance / 64.0 - slot->metrics.height / 64.0) / 2.0; + slot->metrics.width = FT_Pos(IM_ROUND(metrics_width * 64.0)); // Using IM_ROUND() assume width and height are positive + slot->metrics.height = FT_Pos(IM_ROUND(metrics_height * 64.0)); + slot->metrics.horiBearingX = FT_Pos(horiBearingX * 64); + slot->metrics.horiBearingY = FT_Pos(horiBearingY * 64); + slot->metrics.vertBearingX = FT_Pos(vertBearingX * 64); + slot->metrics.vertBearingY = FT_Pos(vertBearingY * 64); + + if (slot->metrics.vertAdvance == 0) + slot->metrics.vertAdvance = FT_Pos(metrics_height * 1.2 * 64.0); + + state->err = FT_Err_Ok; + return state->err; +} + +#endif // #ifdef IMGUI_ENABLE_FREETYPE_LUNASVG + +//----------------------------------------------------------------------------- + #ifdef __GNUC__ #pragma GCC diagnostic pop #endif @@ -795,3 +938,5 @@ void ImGuiFreeType::SetAllocatorFunctions(void* (*alloc_func)(size_t sz, void* u #ifdef _MSC_VER #pragma warning (pop) #endif + +#endif // #ifndef IMGUI_DISABLE diff --git a/extern/imgui_patched/misc/freetype/imgui_freetype.h b/extern/imgui_patched/misc/freetype/imgui_freetype.h index 80a1f95e4..cc58ba6ab 100644 --- a/extern/imgui_patched/misc/freetype/imgui_freetype.h +++ b/extern/imgui_patched/misc/freetype/imgui_freetype.h @@ -2,8 +2,8 @@ // (headers) #pragma once - #include "imgui.h" // IMGUI_API +#ifndef IMGUI_DISABLE // Forward declarations struct ImFontAtlas; @@ -48,3 +48,5 @@ namespace ImGuiFreeType static inline bool BuildFontAtlas(ImFontAtlas* atlas, unsigned int flags = 0) { atlas->FontBuilderIO = GetBuilderForFreeType(); atlas->FontBuilderFlags = flags; return atlas->Build(); } #endif } + +#endif // #ifndef IMGUI_DISABLE diff --git a/src/gui/mixer.cpp b/src/gui/mixer.cpp index dfa270ecd..c023445ab 100644 --- a/src/gui/mixer.cpp +++ b/src/gui/mixer.cpp @@ -105,7 +105,7 @@ bool FurnaceGUI::portSet(String label, unsigned int portSetID, int ins, int outs bool hovered=false; bool active=false; if (visible) { - hovered=ImGui::ItemHoverable(rect,ImGui::GetID(portID.c_str())); + hovered=ImGui::ItemHoverable(rect,ImGui::GetID(portID.c_str()),0); active=(hovered && ImGui::IsMouseClicked(ImGuiMouseButton_Left)); if (hovered && ImGui::IsMouseClicked(ImGuiMouseButton_Right)) { diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index ef22b5e06..f87b4ae7c 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -623,7 +623,7 @@ void FurnaceGUI::drawPattern() { case 0: // classic ImGui::ItemSize(size,ImGui::GetStyle().FramePadding.y); if (ImGui::ItemAdd(rect,ImGui::GetID(chanID))) { - bool hovered=ImGui::ItemHoverable(rect,ImGui::GetID(chanID)); + bool hovered=ImGui::ItemHoverable(rect,ImGui::GetID(chanID),0); ImU32 col=(hovered || (mobileUI && ImGui::IsMouseDown(ImGuiMouseButton_Left)))?ImGui::GetColorU32(ImGuiCol_HeaderHovered):ImGui::GetColorU32(ImGuiCol_Header); dl->AddRectFilled(rect.Min,rect.Max,col); dl->AddText(ImVec2(minLabelArea.x,rect.Min.y),ImGui::GetColorU32(channelTextColor(i)),chanID); @@ -632,7 +632,7 @@ void FurnaceGUI::drawPattern() { case 1: { // line ImGui::ItemSize(size,ImGui::GetStyle().FramePadding.y); if (ImGui::ItemAdd(rect,ImGui::GetID(chanID))) { - bool hovered=ImGui::ItemHoverable(rect,ImGui::GetID(chanID)); + bool hovered=ImGui::ItemHoverable(rect,ImGui::GetID(chanID),0); ImU32 fadeCol0=ImGui::GetColorU32(ImVec4( chanHeadBase.x, chanHeadBase.y, @@ -654,7 +654,7 @@ void FurnaceGUI::drawPattern() { case 2: { // round ImGui::ItemSize(size,ImGui::GetStyle().FramePadding.y); if (ImGui::ItemAdd(rect,ImGui::GetID(chanID))) { - bool hovered=ImGui::ItemHoverable(rect,ImGui::GetID(chanID)); + bool hovered=ImGui::ItemHoverable(rect,ImGui::GetID(chanID),0); ImU32 fadeCol0=ImGui::GetColorU32(ImVec4( chanHeadBase.x, chanHeadBase.y, @@ -690,7 +690,7 @@ void FurnaceGUI::drawPattern() { case 4: { // square border ImGui::ItemSize(size,ImGui::GetStyle().FramePadding.y); if (ImGui::ItemAdd(rect,ImGui::GetID(chanID))) { - bool hovered=ImGui::ItemHoverable(rect,ImGui::GetID(chanID)); + bool hovered=ImGui::ItemHoverable(rect,ImGui::GetID(chanID),0); ImU32 fadeCol=ImGui::GetColorU32(ImVec4( chanHeadBase.x, chanHeadBase.y, @@ -711,7 +711,7 @@ void FurnaceGUI::drawPattern() { case 5: { // round border ImGui::ItemSize(size,ImGui::GetStyle().FramePadding.y); if (ImGui::ItemAdd(rect,ImGui::GetID(chanID))) { - bool hovered=ImGui::ItemHoverable(rect,ImGui::GetID(chanID)); + bool hovered=ImGui::ItemHoverable(rect,ImGui::GetID(chanID),0); ImU32 fadeCol=ImGui::GetColorU32(ImVec4( chanHeadBase.x, chanHeadBase.y, diff --git a/src/gui/piano.cpp b/src/gui/piano.cpp index fe884f38d..4a40c33ad 100644 --- a/src/gui/piano.cpp +++ b/src/gui/piano.cpp @@ -228,7 +228,7 @@ void FurnaceGUI::drawPiano() { //ImGui::ItemSize(size,ImGui::GetStyle().FramePadding.y); if (ImGui::ItemAdd(rect,ImGui::GetID("pianoDisplay"))) { bool canInput=false; - if (!pianoReadonly && ImGui::ItemHoverable(rect,ImGui::GetID("pianoDisplay"))) { + if (!pianoReadonly && ImGui::ItemHoverable(rect,ImGui::GetID("pianoDisplay"),0)) { canInput=true; ImGui::InhibitInertialScroll(); } diff --git a/src/gui/plot_nolerp.cpp b/src/gui/plot_nolerp.cpp index e6c3989ef..eefb4ea1b 100644 --- a/src/gui/plot_nolerp.cpp +++ b/src/gui/plot_nolerp.cpp @@ -78,7 +78,7 @@ int PlotNoLerpEx(ImGuiPlotType plot_type, const char* label, float (*values_gett ImGui::ItemSize(total_bb, style.FramePadding.y); if (!ImGui::ItemAdd(total_bb, 0, &frame_bb, ImGuiItemFlags_NoInertialScroll)) return -1; - const bool hovered = ImGui::ItemHoverable(frame_bb, id); + const bool hovered = ImGui::ItemHoverable(frame_bb, id, 0); // Determine scale from values if not specified if (scale_min == FLT_MAX || scale_max == FLT_MAX) @@ -205,7 +205,7 @@ int PlotBitfieldEx(const char* label, int (*values_getter)(void* data, int idx), ImGui::ItemSize(total_bb, style.FramePadding.y); if (!ImGui::ItemAdd(total_bb, 0, &frame_bb, ImGuiItemFlags_NoInertialScroll)) return -1; - const bool hovered = ImGui::ItemHoverable(frame_bb, id); + const bool hovered = ImGui::ItemHoverable(frame_bb, id, 0); ImGui::RenderFrame(frame_bb.Min, frame_bb.Max, ImGui::GetColorU32(ImGuiCol_FrameBg), true, style.FrameRounding); @@ -315,7 +315,7 @@ int PlotCustomEx(ImGuiPlotType plot_type, const char* label, float (*values_gett ImGui::ItemSize(total_bb, style.FramePadding.y); if (!ImGui::ItemAdd(total_bb, 0, &frame_bb, ImGuiItemFlags_NoInertialScroll)) return -1; - const bool hovered = ImGui::ItemHoverable(frame_bb, id); + const bool hovered = ImGui::ItemHoverable(frame_bb, id, 0); // Determine scale from values if not specified if (scale_min == FLT_MAX || scale_max == FLT_MAX) From da259a33b753127e9ca04712072d489e079c638e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 01:31:25 -0500 Subject: [PATCH 080/126] GUI: fix orders scroll --- src/gui/orders.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gui/orders.cpp b/src/gui/orders.cpp index 0bce014aa..afd96ea5d 100644 --- a/src/gui/orders.cpp +++ b/src/gui/orders.cpp @@ -102,7 +102,7 @@ void FurnaceGUI::drawOrderButtons() { int buttonColumns=(settings.orderButtonPos==0)?8:1; int buttonColumn=0; - while (buttonColumns<8 && ((8/buttonColumns)*ImGui::GetFrameHeightWithSpacing())>ImGui::GetContentRegionAvail().y) { + while (buttonColumns<8 && ((int)(8/buttonColumns)*ImGui::GetFrameHeightWithSpacing())>ImGui::GetContentRegionAvail().y) { buttonColumns++; } @@ -260,6 +260,7 @@ void FurnaceGUI::drawOrders() { ImGui::PushFont(patFont); bool tooSmall=((displayChans+1)>((ImGui::GetContentRegionAvail().x)/(ImGui::CalcTextSize("AA").x+2.0*ImGui::GetStyle().ItemInnerSpacing.x))); ImGui::PopFont(); + float yHeight=ImGui::GetContentRegionAvail().y; if (ImGui::BeginTable("OrdersTable",1+displayChans,(tooSmall?ImGuiTableFlags_SizingFixedFit:ImGuiTableFlags_SizingStretchSame)|ImGuiTableFlags_ScrollX|ImGuiTableFlags_ScrollY)) { ImGui::PushFont(patFont); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing,prevSpacing); @@ -267,7 +268,7 @@ void FurnaceGUI::drawOrders() { float lineHeight=(ImGui::GetTextLineHeight()+4*dpiScale); if (e->isPlaying()) { if (followOrders) { - ImGui::SetScrollY((e->getOrder()+1)*lineHeight-(ImGui::GetContentRegionAvail().y/2)); + ImGui::SetScrollY((e->getOrder()+1)*lineHeight-((yHeight-(tooSmall?ImGui::GetStyle().ScrollbarSize:0.0f))/2.0f)); } } ImGui::TableNextRow(0,lineHeight); From fda2ca06453b1ac769261a41b195ff73b5b786e8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 02:17:16 -0500 Subject: [PATCH 081/126] introduce p r e - e f f e c t s the ultimate fix to #1439 --- src/engine/engine.h | 9 +++++-- src/engine/playback.cpp | 37 ++++++++++++++++++++++++++ src/engine/sysDef.cpp | 59 ++++++++++++++++++++++++----------------- 3 files changed, 79 insertions(+), 26 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index 8df2652d1..57696e94b 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -283,6 +283,7 @@ struct DivSysDef { DivInstrumentType chanInsType[DIV_MAX_CHANS][2]; const EffectHandlerMap effectHandlers; const EffectHandlerMap postEffectHandlers; + const EffectHandlerMap preEffectHandlers; DivSysDef( const char* sysName, const char* sysNameJ, unsigned char fileID, unsigned char fileID_DMF, int chans, bool isFMChip, bool isSTDChip, unsigned int vgmVer, bool compound, unsigned int formatMask, const char* desc, @@ -292,7 +293,8 @@ struct DivSysDef { std::initializer_list chInsType1, std::initializer_list chInsType2={}, const EffectHandlerMap fxHandlers_={}, - const EffectHandlerMap postFxHandlers_={}): + const EffectHandlerMap postFxHandlers_={}, + const EffectHandlerMap preFxHandlers_={}): name(sysName), nameJ(sysNameJ), description(desc), @@ -305,7 +307,8 @@ struct DivSysDef { vgmVersion(vgmVer), sampleFormatMask(formatMask), effectHandlers(fxHandlers_), - postEffectHandlers(postFxHandlers_) { + postEffectHandlers(postFxHandlers_), + preEffectHandlers(preFxHandlers_) { memset(chanNames,0,DIV_MAX_CHANS*sizeof(void*)); memset(chanShortNames,0,DIV_MAX_CHANS*sizeof(void*)); memset(chanTypes,0,DIV_MAX_CHANS*sizeof(int)); @@ -484,6 +487,7 @@ class DivEngine { // MIDI stuff std::function midiCallback=[](const TAMidiMessage&) -> int {return -2;}; + void processRowPre(int i); void processRow(int i, bool afterDelay); void nextOrder(); void nextRow(); @@ -492,6 +496,7 @@ class DivEngine { bool nextTick(bool noAccum=false, bool inhibitLowLat=false); bool perSystemEffect(int ch, unsigned char effect, unsigned char effectVal); bool perSystemPostEffect(int ch, unsigned char effect, unsigned char effectVal); + bool perSystemPreEffect(int ch, unsigned char effect, unsigned char effectVal); void recalcChans(); void reset(); void playSub(bool preserveDrift, int goalRow=0); diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 13bc57ee8..2306f057b 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -407,6 +407,38 @@ bool DivEngine::perSystemPostEffect(int ch, unsigned char effect, unsigned char return dispatchCmd(DivCommand(handler.dispatchCmd,ch,val,val2)); } +bool DivEngine::perSystemPreEffect(int ch, unsigned char effect, unsigned char effectVal) { + DivSysDef* sysDef=sysDefs[sysOfChan[ch]]; + if (sysDef==NULL) return false; + auto iter=sysDef->preEffectHandlers.find(effect); + if (iter==sysDef->preEffectHandlers.end()) return false; + EffectHandler handler=iter->second; + int val=0; + int val2=0; + try { + val=handler.val?handler.val(effect,effectVal):effectVal; + val2=handler.val2?handler.val2(effect,effectVal):0; + } catch (DivDoNotHandleEffect& e) { + return false; + } + // wouldn't this cause problems if it were to return 0? + return dispatchCmd(DivCommand(handler.dispatchCmd,ch,val,val2)); +} + +void DivEngine::processRowPre(int i) { + int whatOrder=curOrder; + int whatRow=curRow; + DivPattern* pat=curPat[i].getPattern(curOrders->ord[i][whatOrder],false); + for (int j=0; jdata[whatRow][4+(j<<1)]; + short effectVal=pat->data[whatRow][5+(j<<1)]; + + if (effectVal==-1) effectVal=0; + effectVal&=255; + perSystemPreEffect(i,effect,effectVal); + } +} + void DivEngine::processRow(int i, bool afterDelay) { int whatOrder=afterDelay?chan[i].delayOrder:curOrder; int whatRow=afterDelay?chan[i].delayRow:curRow; @@ -1135,6 +1167,11 @@ void DivEngine::nextRow() { prevRow=curRow; } + for (int i=0; i Date: Wed, 30 Aug 2023 05:21:33 -0500 Subject: [PATCH 082/126] possibly fix HiDPI input problem on macOS/Wayland issue #1425 --- .../backends/imgui_impl_sdl2.cpp | 21 +++++-------------- extern/imgui_patched/imgui.cpp | 1 + extern/imgui_patched/imgui.h | 1 + src/gui/gui.cpp | 2 ++ 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/extern/imgui_patched/backends/imgui_impl_sdl2.cpp b/extern/imgui_patched/backends/imgui_impl_sdl2.cpp index 919f490e9..ddbad7bed 100644 --- a/extern/imgui_patched/backends/imgui_impl_sdl2.cpp +++ b/extern/imgui_patched/backends/imgui_impl_sdl2.cpp @@ -322,14 +322,8 @@ bool ImGui_ImplSDL2_ProcessEvent(const SDL_Event* event) mouse_pos.y += window_y; } // Fix for high DPI mac/idevice/wayland - ImGuiPlatformIO& platform_io = ImGui::GetPlatformIO(); - if (!platform_io.Monitors.empty() && platform_io.Monitors[0].DpiScale > 1.0f) - { - // The Framebuffer is scaled by an integer ceiling of the actual ratio, so 2.0 not 1.685 on Mac! - //printf("multiply by %f\n",platform_io.Monitors[0].DpiScale); - mouse_pos.x *= std::ceil(platform_io.Monitors[0].DpiScale); - mouse_pos.y *= std::ceil(platform_io.Monitors[0].DpiScale); - } + mouse_pos.x *= io.InputScale; + mouse_pos.y *= io.InputScale; io.AddMouseSourceEvent(event->motion.which == SDL_TOUCH_MOUSEID ? ImGuiMouseSource_TouchScreen : ImGuiMouseSource_Mouse); io.AddMousePosEvent(mouse_pos.x, mouse_pos.y); return true; @@ -627,13 +621,8 @@ static void ImGui_ImplSDL2_UpdateMouseData() mouse_y -= window_y; } // Fix for high DPI mac/idevice/wayland - ImGuiPlatformIO& platform_io = ImGui::GetPlatformIO(); - if (!platform_io.Monitors.empty() && platform_io.Monitors[0].DpiScale > 1.0f) - { - // The Framebuffer is scaled by an integer ceiling of the actual ratio, so 2.0 not 1.685 on Mac! - mouse_x *= std::ceil(platform_io.Monitors[0].DpiScale); - mouse_y *= std::ceil(platform_io.Monitors[0].DpiScale); - } + mouse_x *= io.InputScale; + mouse_y *= io.InputScale; io.AddMousePosEvent((float)mouse_x, (float)mouse_y); } } @@ -793,7 +782,7 @@ void ImGui_ImplSDL2_NewFrame() io.DisplayFramebufferScale = ImVec2(1.0f, 1.0f); io.DisplaySize = ImVec2((float)display_w, (float)display_h); //printf("write %d/%d to DpiScale\n",display_w,w); - platform_io.Monitors[0].DpiScale=(float)display_w/(float)w; + io.InputScale=(float)display_w/(float)w; } // Setup time step (we don't use SDL_GetTicks() because it is using millisecond resolution) diff --git a/extern/imgui_patched/imgui.cpp b/extern/imgui_patched/imgui.cpp index 7d5313b8b..71aee9354 100644 --- a/extern/imgui_patched/imgui.cpp +++ b/extern/imgui_patched/imgui.cpp @@ -1273,6 +1273,7 @@ ImGuiIO::ImGuiIO() DisplaySize = ImVec2(-1.0f, -1.0f); DeltaTime = 1.0f / 60.0f; IniSavingRate = 5.0f; + InputScale = 1.0f; IniFilename = "imgui.ini"; // Important: "imgui.ini" is relative to current working dir, most apps will want to lock this to an absolute path (e.g. same path as executables). LogFilename = "imgui_log.txt"; #ifndef IMGUI_DISABLE_OBSOLETE_KEYIO diff --git a/extern/imgui_patched/imgui.h b/extern/imgui_patched/imgui.h index 2acd2532e..e7966cab4 100644 --- a/extern/imgui_patched/imgui.h +++ b/extern/imgui_patched/imgui.h @@ -2060,6 +2060,7 @@ struct ImGuiIO ImVec2 DisplaySize; // // Main display size, in pixels (generally == GetMainViewport()->Size). May change every frame. float DeltaTime; // = 1.0f/60.0f // Time elapsed since last frame, in seconds. May change every frame. float IniSavingRate; // = 5.0f // Minimum time between saving positions/sizes to .ini file, in seconds. + float InputScale; // = 1.0f // Used by backend in system managed scale situations. const char* IniFilename; // = "imgui.ini" // Path to .ini file (important: default "imgui.ini" is relative to current working dir!). Set NULL to disable automatic .ini loading/saving or if you want to manually call LoadIniSettingsXXX() / SaveIniSettingsXXX() functions. const char* LogFilename; // = "imgui_log.txt"// Path to .log file (default parameter to ImGui::LogToFile when no file is specified). void* UserData; // = NULL // Store your own data. diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index f9c76d12b..45adf1162 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3628,6 +3628,8 @@ bool FurnaceGUI::loop() { if (prevScrW!=scrW || prevScrH!=scrH) { logV("size change 2: %dx%d (from %dx%d)",scrW,scrH,prevScrW,prevScrH); } + + ImGui::GetIO().InputScale=(float)canvasW/(float)scrW; } wantCaptureKeyboard=ImGui::GetIO().WantTextInput; From 426d4b44f01f69dbc524147da5076701b39ac30e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 13:12:25 -0500 Subject: [PATCH 083/126] dang it let me freeze --- src/gui/gui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 45adf1162..694fe99c3 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4365,7 +4365,7 @@ bool FurnaceGUI::loop() { if (ImGui::BeginMenu(settings.capitalMenuBar?"Help":"help")) { if (ImGui::MenuItem("effect list",BIND_FOR(GUI_ACTION_WINDOW_EFFECT_LIST),effectListOpen)) effectListOpen=!effectListOpen; if (ImGui::MenuItem("debug menu",BIND_FOR(GUI_ACTION_WINDOW_DEBUG))) debugOpen=!debugOpen; - if (ImGui::MenuItem("inspector",BIND_FOR(GUI_ACTION_WINDOW_DEBUG))) inspectorOpen=!inspectorOpen; + if (ImGui::MenuItem("inspector")) inspectorOpen=!inspectorOpen; if (ImGui::MenuItem("panic",BIND_FOR(GUI_ACTION_PANIC))) e->syncReset(); if (ImGui::MenuItem("about...",BIND_FOR(GUI_ACTION_WINDOW_ABOUT))) { aboutOpen=true; From 63dcacf33da5294593c0a90d57163cda4115c73f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 13:35:22 -0500 Subject: [PATCH 084/126] dev170 - YM2151: fix noise frequency on ymfm issue #1441 raising ver num to allow possible compat change --- src/engine/engine.h | 4 ++-- src/engine/platform/sound/ymfm/ymfm_opm.cpp | 2 +- src/engine/platform/sound/ymfm/ymfm_opz.cpp | 2 +- src/gui/editControls.cpp | 10 ++++++++-- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index 57696e94b..66d645291 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -56,8 +56,8 @@ #define DIV_UNSTABLE -#define DIV_VERSION "dev169" -#define DIV_ENGINE_VERSION 169 +#define DIV_VERSION "dev170" +#define DIV_ENGINE_VERSION 170 // for imports #define DIV_VERSION_MOD 0xff01 #define DIV_VERSION_FC 0xff02 diff --git a/src/engine/platform/sound/ymfm/ymfm_opm.cpp b/src/engine/platform/sound/ymfm/ymfm_opm.cpp index 958dae579..9876c2bce 100644 --- a/src/engine/platform/sound/ymfm/ymfm_opm.cpp +++ b/src/engine/platform/sound/ymfm/ymfm_opm.cpp @@ -176,7 +176,7 @@ int32_t opm_registers::clock_noise_and_lfo() { // base noise frequency is measured at 2x 1/2 FM frequency; this // means each tick counts as two steps against the noise counter - uint32_t freq = noise_frequency(); + uint32_t freq = noise_frequency() ^ 0x1f; for (int rep = 0; rep < 2; rep++) { // evidence seems to suggest the LFSR is clocked continually and just diff --git a/src/engine/platform/sound/ymfm/ymfm_opz.cpp b/src/engine/platform/sound/ymfm/ymfm_opz.cpp index b20bea3c1..0bfce6bc6 100644 --- a/src/engine/platform/sound/ymfm/ymfm_opz.cpp +++ b/src/engine/platform/sound/ymfm/ymfm_opz.cpp @@ -327,7 +327,7 @@ int32_t opz_registers::clock_noise_and_lfo() { // base noise frequency is measured at 2x 1/2 FM frequency; this // means each tick counts as two steps against the noise counter - uint32_t freq = noise_frequency(); + uint32_t freq = noise_frequency() ^ 0x1f; for (int rep = 0; rep < 2; rep++) { // evidence seems to suggest the LFSR is clocked continually and just diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index f08893b96..2786e536e 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -509,9 +509,15 @@ void FurnaceGUI::drawMobileControls() { doAction(GUI_ACTION_SAVE_AS); } - ImGui::Button("1.1+ .dmf"); + if (ImGui::Button("1.1+ .dmf")) { + mobileMenuOpen=false; + openFileDialog(GUI_FILE_SAVE_DMF); + } ImGui::SameLine(); - ImGui::Button("Legacy .dmf"); + if (ImGui::Button("Legacy .dmf")) { + mobileMenuOpen=false; + openFileDialog(GUI_FILE_SAVE_DMF_LEGACY); + } ImGui::SameLine(); if (ImGui::Button("Export Audio")) { openFileDialog(GUI_FILE_EXPORT_AUDIO_ONE); From 5a688c58cb110e61876bf1b121d26216f3a364fe Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 13:46:47 -0500 Subject: [PATCH 085/126] OPM/OPZ: invert noise frequencies since ymfm is default --- src/engine/platform/arcade.cpp | 6 +++--- src/engine/platform/tx81z.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/engine/platform/arcade.cpp b/src/engine/platform/arcade.cpp index 95a3d7750..3e09dfbe1 100644 --- a/src/engine/platform/arcade.cpp +++ b/src/engine/platform/arcade.cpp @@ -175,7 +175,7 @@ void DivPlatformArcade::tick(bool sysTick) { if (chan[i].std.duty.had) { if (chan[i].std.duty.val>0) { - rWrite(0x0f,0x80|(0x20-chan[i].std.duty.val)); + rWrite(0x0f,0x80|(chan[i].std.duty.val-1)); } else { rWrite(0x0f,0); } @@ -768,9 +768,9 @@ int DivPlatformArcade::dispatch(DivCommand c) { if (c.chan!=7) break; if (c.value) { if (c.value>0x1f) { - rWrite(0x0f,0x80); + rWrite(0x0f,0x80|0x1f); } else { - rWrite(0x0f,0x80|(0x1f-c.value)); + rWrite(0x0f,0x80|(c.value-1)); } } else { rWrite(0x0f,0); diff --git a/src/engine/platform/tx81z.cpp b/src/engine/platform/tx81z.cpp index 52f71aedc..540365cde 100644 --- a/src/engine/platform/tx81z.cpp +++ b/src/engine/platform/tx81z.cpp @@ -134,7 +134,7 @@ void DivPlatformTX81Z::tick(bool sysTick) { if (chan[i].std.duty.had) { if (chan[i].std.duty.val>0) { - rWrite(0x0f,0x80|(0x20-chan[i].std.duty.val)); + rWrite(0x0f,0x80|(chan[i].std.duty.val-1)); } else { rWrite(0x0f,0); } @@ -865,9 +865,9 @@ int DivPlatformTX81Z::dispatch(DivCommand c) { if (c.chan!=7) break; if (c.value) { if (c.value>0x1f) { - rWrite(0x0f,0x80); + rWrite(0x0f,0x80|0x1f); } else { - rWrite(0x0f,0x80|(0x1f-c.value)); + rWrite(0x0f,0x80|(c.value-1)); } } else { rWrite(0x0f,0); From 80013089a2a27e4f4f02602ca484ee1e7a720901 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 14:06:04 -0500 Subject: [PATCH 086/126] GUI: colorize macro speed/delay button if used --- src/gui/insEdit.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index b63ff50e6..00cc903f2 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -1802,7 +1802,9 @@ void FurnaceGUI::drawMacroEdit(FurnaceGUIMacroDesc& i, int totalFit, float avail } #define BUTTON_TO_SET_PROPS(_x) \ + pushToggleColors(_x.macro->speed!=1 || _x.macro->delay); \ ImGui::Button(ICON_FA_ELLIPSIS_H "##IMacroSet"); \ + popToggleColors(); \ if (ImGui::IsItemHovered()) { \ ImGui::SetTooltip("Delay/Step Length"); \ } \ From 7d605c9d765227b9ed679338e78c743de4b09b12 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 14:27:29 -0500 Subject: [PATCH 087/126] GUI: why do I see a 0.5 reference --- src/gui/settings.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 8e3178f8e..3f3c5aab8 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -1231,7 +1231,7 @@ void FurnaceGUI::drawSettings() { ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); - ImGui::Text("Arcade/YM2151"); + ImGui::Text("YM2151"); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); ImGui::Combo("##ArcadeCore",&settings.arcadeCore,arcadeCores,2); @@ -1242,7 +1242,7 @@ void FurnaceGUI::drawSettings() { ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); - ImGui::Text("Genesis/YM2612"); + ImGui::Text("YM2612"); ImGui::TableNextColumn(); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); ImGui::Combo("##YM2612Core",&settings.ym2612Core,ym2612Cores,2); From 1ebf828743ca8337bdc8002fbe23f73d2eea1c32 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Wed, 30 Aug 2023 14:13:06 -0700 Subject: [PATCH 088/126] A couple more slight edits. Typo fix and update for new macro props indicator, just to show what that looks like. --- doc/4-instrument/README.md | 5 +++-- doc/4-instrument/macro-ADSR.png | Bin 31048 -> 31627 bytes doc/7-systems/tia.md | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/4-instrument/README.md b/doc/4-instrument/README.md index 2bfcd4091..d8fa8b2ee 100644 --- a/doc/4-instrument/README.md +++ b/doc/4-instrument/README.md @@ -50,8 +50,9 @@ The very first numeric entry sets the visible width of the bars in sequence-type Each macro has two buttons on the left. - Macro type (explained below). - Timing editor, which pops up a small dialog: - - Step Length (ticks): Determines how many ticks pass before each change of value. - - Delay: Delays the start of the macro until this many ticks have passed. + - Step Length (ticks): Determines how many ticks pass before each change of value. Default is 1. + - Delay: Delays the start of the macro until this many ticks have passed. Default is 0. + - The button is highlighted if either of these is set differently from default. ## macro types diff --git a/doc/4-instrument/macro-ADSR.png b/doc/4-instrument/macro-ADSR.png index d01e177ef8cba86f01abd543d4ca7f8350741b49..8d12c7c6305b035cfb216066cb58944285f7a7bc 100644 GIT binary patch literal 31627 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 literal 31048 zcmbTd1z40_yEcpk0*a4>h@`*(gLDcKDmg>RNJvTy9fL!+f`T**14ttbEnU(gNF&{) zbR*LJFMOW&{r3Kky}$h(o8wUNo;CNq?zOIU#d)4rz%ymJn?(1B@bK_%!sMk9cz9QA z@$fD&U%w2ljG%VOz(0g`@>=$Ic*Nj$VzNtkaS3T1A~!?nT4%5<7Ra|BZCD}oKaIyiATv!%Ea74-VJT?+)Y`{ z*v-mV1j#5V!64=$3T|Ly;$X<&Vq8u=hB#P>Gd{U^Aj1o# zXADv(vlMkq%IaYiuJzu&>e?%%hywf|?Gz>0CZ7}|03a`9Ze z)1QGzCda9*pJv_gFh~lmp7%9QEJa`rjY_rw4$wRZ{x* zGycoD*x3C05%vx;PT)2ES&;v7w7r_Eoe4L>#2)2{Ha3xQ0@Gyr*V{N)nEs#T{7>J$ z_~bv$%f!XvzZrV*$-jr%iAteO3>{EtH5AJFU;F>;Ukky&C%`4hz@}+oi$powLocTB z&lgOj4INCx882*sljk8PFOM4ULs4FSQ664S9$`@)p1+4Gp^z4)uK#%`9~deiD!?zw z&-0�!u_1IvDzvxr{O~Z0nUda#)6zkej`3XV^aZs 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 R@Pjx4Md`R=>XEZv{|DL80XhHx diff --git a/doc/7-systems/tia.md b/doc/7-systems/tia.md index 8b89616d4..9e6d9cfa6 100644 --- a/doc/7-systems/tia.md +++ b/doc/7-systems/tia.md @@ -184,7 +184,7 @@ this chip uses the [TIA](../4-instrument/tia.md) instrument editor. | 30 | 32.7 | C-1 | 0.0 | 32.5 | C-1 | -11 | 31 | 31.7 | B-0 | +44 | 31.5 | B-0 | +33 -## shapes 8 +## shape 8 | pitch | NTSC | note | cent | PAL | note | cent |------:|--------:|:----:|-----:|--------:|:----:|-----: From 68787a4d8b4e068eaab9c845c09cf711cf170af9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 17:32:51 -0500 Subject: [PATCH 089/126] add PortAudio backend - PLEASE READ PLEASE DO: ``` git submodule update --init --recursive ``` AFTER PULLING THIS COMMIT. --- .gitmodules | 3 + CMakeLists.txt | 31 ++++++ README.md | 1 + extern/portaudio | 1 + src/audio/pa.cpp | 222 ++++++++++++++++++++++++++++++++++++++++++ src/audio/pa.h | 38 ++++++++ src/engine/engine.cpp | 20 ++++ src/engine/engine.h | 1 + src/gui/settings.cpp | 27 ++++- 9 files changed, 340 insertions(+), 4 deletions(-) create mode 160000 extern/portaudio create mode 100644 src/audio/pa.cpp create mode 100644 src/audio/pa.h diff --git a/.gitmodules b/.gitmodules index f3ef8bbd3..c78fee42a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -12,3 +12,6 @@ [submodule "extern/adpcm"] path = extern/adpcm url = https://github.com/superctr/adpcm +[submodule "extern/portaudio"] + path = extern/portaudio + url = https://github.com/PortAudio/portaudio.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 63053c787..11174ba3d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,7 @@ include(TestBigEndian) if (ANDROID) set(USE_RTMIDI_DEFAULT OFF) + set(WITH_PORTAUDIO_DEFAULT OFF) set(USE_BACKWARD_DEFAULT OFF) find_library(TERMUX rt) if (TERMUX) @@ -34,6 +35,7 @@ if (ANDROID) endif() else() set(USE_RTMIDI_DEFAULT ON) + set(WITH_PORTAUDIO_DEFAULT ON) if (WIN32 OR APPLE) set(USE_BACKWARD_DEFAULT ON) else() @@ -78,6 +80,7 @@ option(USE_SDL2 "Build with SDL2. Required to build with GUI." ${USE_SDL2_DEFAUL option(USE_SNDFILE "Build with libsndfile. Required in order to work with audio files." ${USE_SNDFILE_DEFAULT}) option(USE_BACKWARD "Use backward-cpp to print a backtrace on crash/abort." ${USE_BACKWARD_DEFAULT}) option(WITH_JACK "Whether to build with JACK support. Auto-detects if JACK is available" ${WITH_JACK_DEFAULT}) +option(WITH_PORTAUDIO "Whether to build with PortAudio for audio output." ${WITH_PORTAUDIO_DEFAULT}) option(WITH_RENDER_SDL "Whether to build with the SDL_Renderer render backend." ${WITH_RENDER_SDL_DEFAULT}) option(WITH_RENDER_OPENGL "Whether to build with the OpenGL render backend." ${WITH_RENDER_OPENGL_DEFAULT}) option(WITH_RENDER_DX11 "Whether to build with the DirectX 11 render backend." ${WITH_RENDER_DX11_DEFAULT}) @@ -85,6 +88,7 @@ option(USE_GLES "Use OpenGL ES for the OpenGL render backend." ${USE_GLES_DEFAUL option(SYSTEM_FFTW "Use a system-installed version of FFTW instead of the vendored one" OFF) option(SYSTEM_FMT "Use a system-installed version of fmt instead of the vendored one" OFF) option(SYSTEM_LIBSNDFILE "Use a system-installed version of libsndfile instead of the vendored one" OFF) +option(SYSTEM_PORTAUDIO "Use a system-installed version of PortAudio instead of the vendored one" OFF) option(SYSTEM_RTMIDI "Use a system-installed version of RtMidi instead of the vendored one" OFF) option(SYSTEM_ZLIB "Use a system-installed version of zlib instead of the vendored one" OFF) option(SYSTEM_SDL2 "Use a system-installed version of SDL2 instead of the vendored one" ${SYSTEM_SDL2_DEFAULT}) @@ -204,6 +208,25 @@ else() message(STATUS "Not using libsndfile") endif() +if (WITH_PORTAUDIO) + if (SYSTEM_PORTAUDIO) + find_package(PkgConfig REQUIRED) + pkg_check_modules(PORTAUDIO REQUIRED portaudio) + list(APPEND DEPENDENCIES_INCLUDE_DIRS ${PORTAUDIO_INCLUDE_DIRS}) + list(APPEND DEPENDENCIES_COMPILE_OPTIONS ${PORTAUDIO_CFLAGS_OTHER}) + list(APPEND DEPENDENCIES_LIBRARIES ${PORTAUDIO_LIBRARIES}) + list(APPEND DEPENDENCIES_LIBRARY_DIRS ${PORTAUDIO_LIBRARY_DIRS}) + list(APPEND DEPENDENCIES_LINK_OPTIONS ${PORTAUDIO_LDFLAGS_OTHER}) + list(APPEND DEPENDENCIES_LEGACY_LDFLAGS ${PORTAUDIO_LDFLAGS}) + message(STATUS "Using system-installed PortAudio") + else() + set(PA_BUILD_SHARED_LIBS OFF CACHE BOOL "Build dynamic library" FORCE) + add_subdirectory(extern/portaudio EXCLUDE_FROM_ALL) + list(APPEND DEPENDENCIES_LIBRARIES PortAudio) + message(STATUS "Using vendored PortAudio") + endif() +endif() + if (USE_RTMIDI) if (SYSTEM_RTMIDI) find_package(PkgConfig REQUIRED) @@ -345,6 +368,14 @@ else() message(STATUS "Building without JACK support") endif() +if (WITH_PORTAUDIO) + list(APPEND AUDIO_SOURCES src/audio/pa.cpp) + message(STATUS "Building with PortAudio") + list(APPEND DEPENDENCIES_DEFINES HAVE_PA) +else() + message(STATUS "Building without PortAudio") +endif() + if (USE_RTMIDI) list(APPEND AUDIO_SOURCES src/audio/rtmidi.cpp) message(STATUS "Building with RtMidi") diff --git a/README.md b/README.md index 08ccfc85c..37549dbda 100644 --- a/README.md +++ b/README.md @@ -252,6 +252,7 @@ Available options: | `USE_SNDFILE` | `ON` | Build with libsndfile (required in order to work with audio files) | | `USE_BACKWARD` | `ON` | Use backward-cpp to print a backtrace on crash/abort | | `WITH_JACK` | `ON` if system-installed JACK detected, otherwise `OFF` | Whether to build with JACK support. Auto-detects if JACK is available | +| `WITH_PORTAUDIO` | `ON` | Whether to build with PortAudio. | | `SYSTEM_FFTW` | `OFF` | Use a system-installed version of FFTW instead of the vendored one | | `SYSTEM_FMT` | `OFF` | Use a system-installed version of fmt instead of the vendored one | | `SYSTEM_LIBSNDFILE` | `OFF` | Use a system-installed version of libsndfile instead of the vendored one | diff --git a/extern/portaudio b/extern/portaudio new file mode 160000 index 000000000..6ee9836a0 --- /dev/null +++ b/extern/portaudio @@ -0,0 +1 @@ +Subproject commit 6ee9836a08d201c118b4715d4d70242816584000 diff --git a/src/audio/pa.cpp b/src/audio/pa.cpp new file mode 100644 index 000000000..722d29fd9 --- /dev/null +++ b/src/audio/pa.cpp @@ -0,0 +1,222 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2023 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include "../ta-log.h" +#include "pa.h" + +int taPAProcess(const void* in, void* out, unsigned long nframes, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags flags, void* inst) { + TAAudioPA* instance=(TAAudioPA*)inst; + return instance->onProcess(in,out,nframes,timeInfo,flags); +} + +int TAAudioPA::onProcess(const void* in, void* out, unsigned long nframes, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags flags) { + for (int i=0; idesc.bufsize) { + delete[] inBufs[i]; + inBufs[i]=new float[nframes]; + } + } + for (int i=0; idesc.bufsize) { + delete[] outBufs[i]; + outBufs[i]=new float[nframes]; + } + } + if (nframes!=desc.bufsize) { + desc.bufsize=nframes; + } + + if (audioProcCallback!=NULL) { + if (midiIn!=NULL) midiIn->gather(); + audioProcCallback(audioProcCallbackUser,inBufs,outBufs,desc.inChans,desc.outChans,desc.bufsize); + } + float* fbuf=(float*)out; + for (size_t j=0; j TAAudioPA::listAudioDevices() { + std::vector ret; + if (!audioSysStarted) { + PaError status=Pa_Initialize(); + if (status!=paNoError) { + logE("could not initialize PortAudio to list audio devices"); + return ret; + } else { + audioSysStarted=true; + } + } + + int count=Pa_GetDeviceCount(); + if (count<0) return ret; + + for (int i=0; imaxOutputChannels<1) continue; + + if (devInfo->name!=NULL) { + ret.push_back(String(devInfo->name)); + } + } + + return ret; +} + +bool TAAudioPA::init(TAAudioDesc& request, TAAudioDesc& response) { + if (initialized) { + logE("audio already initialized"); + return false; + } + PaError status; + + if (!audioSysStarted) { + status=Pa_Initialize(); + if (status!=paNoError) { + logE("could not initialize PortAudio"); + return false; + } else { + audioSysStarted=true; + } + } + + desc=request; + desc.outFormat=TA_AUDIO_FORMAT_F32; + + const PaDeviceInfo* devInfo=NULL; + int outDeviceID=0; + + if (desc.deviceName.empty()) { + outDeviceID=Pa_GetDefaultOutputDevice(); + devInfo=Pa_GetDeviceInfo(outDeviceID); + } else { + int count=Pa_GetDeviceCount(); + bool found=false; + if (count<0) { + logE("audio device not found"); + return false; + } + + for (int i=0; imaxOutputChannels<1) continue; + + if (devInfo->name!=NULL) { + if (strcmp(devInfo->name,desc.deviceName.c_str())==0) { + outDeviceID=i; + found=true; + break; + } + } + } + if (!found) { + logE("audio device not found"); + return false; + } + } + + // check output channels and sample rate + if (devInfo!=NULL) { + if (desc.outChans>devInfo->maxOutputChannels) desc.outChans=devInfo->maxOutputChannels; + } + + PaStreamParameters outParams; + outParams.device=outDeviceID; + outParams.channelCount=desc.outChans; + outParams.sampleFormat=paFloat32; + outParams.suggestedLatency=(double)(desc.bufsize*desc.fragments)/desc.rate; + outParams.hostApiSpecificStreamInfo=NULL; + + logV("opening audio device..."); + status=Pa_OpenStream( + &ac, + NULL, + &outParams, + desc.rate, + 0, + paClipOff|paDitherOff, + taPAProcess, + this + ); + if (status!=paNoError) { + logE("could not open audio device: %s",Pa_GetErrorText(status)); + return false; + } + + desc.deviceName=devInfo->name; + desc.inChans=0; + + if (desc.outChans>0) { + outBufs=new float*[desc.outChans]; + for (int i=0; i + +class TAAudioPA: public TAAudio { + PaStream* ac; + bool audioSysStarted; + + public: + int onProcess(const void* in, void* out, unsigned long nframes, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags flags); + + void* getContext(); + bool quit(); + bool setRun(bool run); + std::vector listAudioDevices(); + bool init(TAAudioDesc& request, TAAudioDesc& response); + TAAudioPA(): + ac(NULL), + audioSysStarted(false) {} +}; diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 7428de45d..f60bdf6a0 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -32,6 +32,9 @@ #ifdef HAVE_JACK #include "../audio/jack.h" #endif +#ifdef HAVE_PA +#include "../audio/pa.h" +#endif #include #include #include @@ -3279,6 +3282,8 @@ bool DivEngine::initAudioBackend() { if (audioEngine==DIV_AUDIO_NULL) { if (getConfString("audioEngine","SDL")=="JACK") { audioEngine=DIV_AUDIO_JACK; + } else if (getConfString("audioEngine","SDL")=="PortAudio") { + audioEngine=DIV_AUDIO_PORTAUDIO; } else { audioEngine=DIV_AUDIO_SDL; } @@ -3322,6 +3327,21 @@ bool DivEngine::initAudioBackend() { #endif #else output=new TAAudioJACK; +#endif + break; + case DIV_AUDIO_PORTAUDIO: +#ifndef HAVE_PA + logE("Furnace was not compiled with PortAudio!"); + setConf("audioEngine","SDL"); + saveConf(); +#ifdef HAVE_SDL2 + output=new TAAudioSDL; +#else + logE("Furnace was not compiled with SDL support either!"); + output=new TAAudio; +#endif +#else + output=new TAAudioPA; #endif break; case DIV_AUDIO_SDL: diff --git a/src/engine/engine.h b/src/engine/engine.h index 66d645291..0c755f8f9 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -73,6 +73,7 @@ enum DivStatusView { enum DivAudioEngines { DIV_AUDIO_JACK=0, DIV_AUDIO_SDL=1, + DIV_AUDIO_PORTAUDIO=2, DIV_AUDIO_NULL=126, DIV_AUDIO_DUMMY=127 diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 3f3c5aab8..bd9f949bd 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -82,11 +82,13 @@ const char* patFonts[]={ const char* audioBackends[]={ "JACK", - "SDL" + "SDL", + "PortAudio" }; const bool isProAudio[]={ true, + false, false }; @@ -724,17 +726,27 @@ void FurnaceGUI::drawSettings() { if (ImGui::BeginTable("##Output",2)) { ImGui::TableSetupColumn("##Label",ImGuiTableColumnFlags_WidthFixed); ImGui::TableSetupColumn("##Combo",ImGuiTableColumnFlags_WidthStretch); -#ifdef HAVE_JACK +#if defined(HAVE_JACK) || defined(HAVE_PA) ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Backend"); ImGui::TableNextColumn(); int prevAudioEngine=settings.audioEngine; - if (ImGui::Combo("##Backend",&settings.audioEngine,audioBackends,2)) { + if (ImGui::BeginCombo("##Backend",audioBackends[settings.audioEngine])) { + if (ImGui::Selectable("JACK",settings.audioEngine==DIV_AUDIO_JACK)) { + settings.audioEngine=DIV_AUDIO_JACK; + } + if (ImGui::Selectable("SDL",settings.audioEngine==DIV_AUDIO_SDL)) { + settings.audioEngine=DIV_AUDIO_SDL; + } + if (ImGui::Selectable("PortAudio",settings.audioEngine==DIV_AUDIO_PORTAUDIO)) { + settings.audioEngine=DIV_AUDIO_PORTAUDIO; + } if (settings.audioEngine!=prevAudioEngine) { if (!isProAudio[settings.audioEngine]) settings.audioChans=2; } + ImGui::EndCombo(); } #endif @@ -3045,6 +3057,13 @@ void FurnaceGUI::syncSettings() { settings.patFontSize=e->getConfInt("patFontSize",18); settings.iconSize=e->getConfInt("iconSize",16); settings.audioEngine=(e->getConfString("audioEngine","SDL")=="SDL")?1:0; + if (e->getConfString("audioEngine","SDL")=="PortAudio") { + settings.audioEngine=DIV_AUDIO_JACK; + } else if (e->getConfString("audioEngine","SDL")=="PortAudio") { + settings.audioEngine=DIV_AUDIO_PORTAUDIO; + } else { + settings.audioEngine=DIV_AUDIO_SDL; + } settings.audioDevice=e->getConfString("audioDevice",""); settings.audioChans=e->getConfInt("audioChans",2); settings.midiInDevice=e->getConfString("midiInDevice",""); @@ -3218,7 +3237,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.headFontSize,2,96); clampSetting(settings.patFontSize,2,96); clampSetting(settings.iconSize,2,48); - clampSetting(settings.audioEngine,0,1); + clampSetting(settings.audioEngine,0,2); clampSetting(settings.audioQuality,0,1); clampSetting(settings.audioBufSize,32,4096); clampSetting(settings.audioRate,8000,384000); From d1b78f787bd06fb1aa8270afab23275474e90f16 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 17:38:45 -0500 Subject: [PATCH 090/126] update credits --- src/gui/about.cpp | 1 + src/main.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/gui/about.cpp b/src/gui/about.cpp index e1ce1b642..0c9834795 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -160,6 +160,7 @@ const char* aboutLine[]={ "libsndfile by Erik de Castro Lopo", "Portable File Dialogs by Sam Hocevar", "Native File Dialog by Frogtoss Games", + "PortAudio", "RtMidi by Gary P. Scavone", "FFTW by Matteo Frigo and Steven G. Johnson", "backward-cpp by Google", diff --git a/src/main.cpp b/src/main.cpp index dd0cc2bf2..6cc6b803d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -166,6 +166,7 @@ TAParamResult pVersion(String) { printf("- libsndfile by Erik de Castro Lopo and rest of libsndfile team (LGPLv2.1)\n"); printf("- SDL2 by Sam Lantinga (zlib license)\n"); printf("- zlib by Jean-loup Gailly and Mark Adler (zlib license)\n"); + printf("- PortAudio (PortAudio license)\n"); printf("- RtMidi by Gary P. Scavone (RtMidi license)\n"); printf("- backward-cpp by Google (MIT)\n"); printf("- Dear ImGui by Omar Cornut (MIT)\n"); From 274ce8a6461c550faefda3f34ac0556f4cd03b43 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 19:21:38 -0500 Subject: [PATCH 091/126] remove many TODOs --- src/engine/platform/ay.cpp | 2 -- src/engine/platform/c140.cpp | 3 +-- src/engine/platform/es5506.cpp | 2 -- src/engine/platform/ga20.cpp | 2 -- src/engine/platform/k007232.cpp | 2 -- src/engine/platform/k053260.cpp | 2 -- src/engine/platform/rf5c68.cpp | 2 -- 7 files changed, 1 insertion(+), 14 deletions(-) diff --git a/src/engine/platform/ay.cpp b/src/engine/platform/ay.cpp index 9a1711763..9928372cc 100644 --- a/src/engine/platform/ay.cpp +++ b/src/engine/platform/ay.cpp @@ -658,8 +658,6 @@ int DivPlatformAY8910::dispatch(DivCommand c) { return 15; break; case DIV_CMD_PRE_PORTA: - // TODO: FIX wtr_envelope.dmf - // the brokenPortaArp update broke it if (chan[c.chan].active && c.value2) { if (parent->song.resetMacroOnPorta) chan[c.chan].macroInit(parent->getIns(chan[c.chan].ins,DIV_INS_AY)); } diff --git a/src/engine/platform/c140.cpp b/src/engine/platform/c140.cpp index 61e12c8ae..ed9426674 100644 --- a/src/engine/platform/c140.cpp +++ b/src/engine/platform/c140.cpp @@ -502,8 +502,7 @@ void DivPlatformC140::notifyInsChange(int ins) { } void DivPlatformC140::notifyWaveChange(int wave) { - // TODO when wavetables are added - // TODO they probably won't be added unless the samples reside in RAM + } void DivPlatformC140::notifyInsDeletion(void* ins) { diff --git a/src/engine/platform/es5506.cpp b/src/engine/platform/es5506.cpp index d5eb38a0b..227917636 100644 --- a/src/engine/platform/es5506.cpp +++ b/src/engine/platform/es5506.cpp @@ -1107,8 +1107,6 @@ void DivPlatformES5506::notifyInsChange(int ins) { } void DivPlatformES5506::notifyWaveChange(int wave) { - // TODO when wavetables are added - // TODO they probably won't be added unless the samples reside in RAM } void DivPlatformES5506::notifyInsDeletion(void* ins) { diff --git a/src/engine/platform/ga20.cpp b/src/engine/platform/ga20.cpp index 901927dd7..cc796bd61 100644 --- a/src/engine/platform/ga20.cpp +++ b/src/engine/platform/ga20.cpp @@ -388,8 +388,6 @@ void DivPlatformGA20::notifyInsChange(int ins) { } void DivPlatformGA20::notifyWaveChange(int wave) { - // TODO when wavetables are added - // TODO they probably won't be added unless the samples reside in RAM } void DivPlatformGA20::notifyInsDeletion(void* ins) { diff --git a/src/engine/platform/k007232.cpp b/src/engine/platform/k007232.cpp index c1e314f53..b2a09057a 100644 --- a/src/engine/platform/k007232.cpp +++ b/src/engine/platform/k007232.cpp @@ -473,8 +473,6 @@ void DivPlatformK007232::notifyInsChange(int ins) { } void DivPlatformK007232::notifyWaveChange(int wave) { - // TODO when wavetables are added - // TODO they probably won't be added unless the samples reside in RAM } void DivPlatformK007232::notifyInsDeletion(void* ins) { diff --git a/src/engine/platform/k053260.cpp b/src/engine/platform/k053260.cpp index 097d0c4c8..3c9d21932 100644 --- a/src/engine/platform/k053260.cpp +++ b/src/engine/platform/k053260.cpp @@ -409,8 +409,6 @@ void DivPlatformK053260::notifyInsChange(int ins) { } void DivPlatformK053260::notifyWaveChange(int wave) { - // TODO when wavetables are added - // TODO they probably won't be added unless the samples reside in RAM } void DivPlatformK053260::notifyInsDeletion(void* ins) { diff --git a/src/engine/platform/rf5c68.cpp b/src/engine/platform/rf5c68.cpp index 9319de5d3..c183cd505 100644 --- a/src/engine/platform/rf5c68.cpp +++ b/src/engine/platform/rf5c68.cpp @@ -355,8 +355,6 @@ void DivPlatformRF5C68::notifyInsChange(int ins) { } void DivPlatformRF5C68::notifyWaveChange(int wave) { - // TODO when wavetables are added - // TODO they probably won't be added unless the samples reside in RAM } void DivPlatformRF5C68::notifyInsDeletion(void* ins) { From 922800d8643af0d618e021c888306304a48c60fd Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 23:14:47 -0500 Subject: [PATCH 092/126] oh crap --- CMakeLists.txt | 2 ++ src/gui/chanOsc.cpp | 2 -- src/gui/gui.cpp | 2 ++ src/gui/gui.h | 1 + src/gui/settings.cpp | 37 +++++++++++++++++++++++++++---------- 5 files changed, 32 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 11174ba3d..3d9234f48 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -221,6 +221,8 @@ if (WITH_PORTAUDIO) message(STATUS "Using system-installed PortAudio") else() set(PA_BUILD_SHARED_LIBS OFF CACHE BOOL "Build dynamic library" FORCE) + # don't - Furnace has its own implementation + set(PA_USE_JACK OFF CACHE BOOL "Enable support for JACK Audio Connection Kit" FORCE) add_subdirectory(extern/portaudio EXCLUDE_FROM_ALL) list(APPEND DEPENDENCIES_LIBRARIES PortAudio) message(STATUS "Using vendored PortAudio") diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index c5ccb4f33..4371d6fd3 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -478,8 +478,6 @@ void FurnaceGUI::drawChanOsc() { needlePos-=phase; } chanOscPitch[ch]=(float)point/32.0f; - - needlePos-=displaySize; for (unsigned short i=0; i":settings.audioDevice; - if (ImGui::BeginCombo("##AudioDevice",audioDevName.c_str())) { - if (ImGui::Selectable("",settings.audioDevice.empty())) { - settings.audioDevice=""; - } - for (String& i: e->getAudioDevices()) { - if (ImGui::Selectable(i.c_str(),i==settings.audioDevice)) { - settings.audioDevice=i; + if (audioEngineChanged) { + ImGui::BeginDisabled(); + if (ImGui::BeginCombo("##AudioDevice","")) { + ImGui::Text("ALERT - TRESPASSER DETECTED"); + if (ImGui::IsItemHovered()) { + showError("you have been arrested for trying to engage with a disabled combo box."); + ImGui::CloseCurrentPopup(); } + ImGui::EndCombo(); + } + ImGui::EndDisabled(); + } else { + String audioDevName=settings.audioDevice.empty()?"":settings.audioDevice; + if (ImGui::BeginCombo("##AudioDevice",audioDevName.c_str())) { + if (ImGui::Selectable("",settings.audioDevice.empty())) { + settings.audioDevice=""; + } + for (String& i: e->getAudioDevices()) { + if (ImGui::Selectable(i.c_str(),i==settings.audioDevice)) { + settings.audioDevice=i; + } + } + ImGui::EndCombo(); } - ImGui::EndCombo(); } ImGui::TableNextRow(); @@ -3031,6 +3045,7 @@ void FurnaceGUI::drawSettings() { ImGui::SameLine(); if (ImGui::Button("Cancel##SettingsCancel")) { settingsOpen=false; + audioEngineChanged=false; syncSettings(); } ImGui::SameLine(); @@ -3057,7 +3072,7 @@ void FurnaceGUI::syncSettings() { settings.patFontSize=e->getConfInt("patFontSize",18); settings.iconSize=e->getConfInt("iconSize",16); settings.audioEngine=(e->getConfString("audioEngine","SDL")=="SDL")?1:0; - if (e->getConfString("audioEngine","SDL")=="PortAudio") { + if (e->getConfString("audioEngine","SDL")=="JACK") { settings.audioEngine=DIV_AUDIO_JACK; } else if (e->getConfString("audioEngine","SDL")=="PortAudio") { settings.audioEngine=DIV_AUDIO_PORTAUDIO; @@ -3690,6 +3705,8 @@ void FurnaceGUI::commitSettings() { } else { rend->createFontsTexture(); } + + audioEngineChanged=false; } bool FurnaceGUI::importColors(String path) { From 8b3fc84b5191811ff2ac80babcc128eae52622d5 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 30 Aug 2023 23:23:27 -0500 Subject: [PATCH 093/126] don't show JACK/PA backends if not available --- src/gui/settings.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 5c7503380..1c219d014 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -734,15 +734,19 @@ void FurnaceGUI::drawSettings() { ImGui::TableNextColumn(); int prevAudioEngine=settings.audioEngine; if (ImGui::BeginCombo("##Backend",audioBackends[settings.audioEngine])) { +#ifdef HAVE_JACK if (ImGui::Selectable("JACK",settings.audioEngine==DIV_AUDIO_JACK)) { settings.audioEngine=DIV_AUDIO_JACK; } +#endif if (ImGui::Selectable("SDL",settings.audioEngine==DIV_AUDIO_SDL)) { settings.audioEngine=DIV_AUDIO_SDL; } +#ifdef HAVE_PA if (ImGui::Selectable("PortAudio",settings.audioEngine==DIV_AUDIO_PORTAUDIO)) { settings.audioEngine=DIV_AUDIO_PORTAUDIO; } +#endif if (settings.audioEngine!=prevAudioEngine) { audioEngineChanged=true; if (!isProAudio[settings.audioEngine]) settings.audioChans=2; From 29c287939770b5cdd2e1b6a482e60c56ea7d70b4 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Wed, 30 Aug 2023 22:07:06 -0700 Subject: [PATCH 094/126] Small correction. --- doc/4-instrument/fmopll.md | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/4-instrument/fmopll.md b/doc/4-instrument/fmopll.md index 318a75127..819c28f20 100644 --- a/doc/4-instrument/fmopll.md +++ b/doc/4-instrument/fmopll.md @@ -26,7 +26,6 @@ These apply to the instrument as a whole: These apply to each operator: - The crossed-arrows button can be dragged to rearrange operators. -- The **OP1** and **OP2** buttons enable or disable those operators. - **Amplitude Modulation (AM)**: Makes the operator affected by LFO tremolo. - **Envelope generator sustain flag (EGS)**: When enabled, value of Sustain Level is in effect. - **Attack Rate (AR)**: determines the rising time for the sound. The bigger the value, the faster the attack. (0-15 range) From fb3a3890d5f0cec6ac0717352722f321e6786c71 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Wed, 30 Aug 2023 22:18:15 -0700 Subject: [PATCH 095/126] And the rest of the fixes. --- doc/4-instrument/fmopll.md | 2 +- doc/4-instrument/snes.md | 2 +- doc/5-wave/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/4-instrument/fmopll.md b/doc/4-instrument/fmopll.md index 819c28f20..901ec45a2 100644 --- a/doc/4-instrument/fmopll.md +++ b/doc/4-instrument/fmopll.md @@ -22,7 +22,7 @@ These apply to the instrument as a whole: - Right-click returns to algorithm view. - **DC (half-sine carrier)**: Sets the waveform produced by carrier operator to half-sine - **DM (half-sine modulator)**: Sets the waveform produced by modulator operator to half-sine -- preset dropdown: select OPLL preset instrument. +- preset dropdown: selects OPLL preset instrument. These apply to each operator: - The crossed-arrows button can be dragged to rearrange operators. diff --git a/doc/4-instrument/snes.md b/doc/4-instrument/snes.md index 58a3a5e15..ddc7204fe 100644 --- a/doc/4-instrument/snes.md +++ b/doc/4-instrument/snes.md @@ -20,7 +20,7 @@ these tabs are unique to the editor for SNES instruments. - **Delayed (write R on release)**: after release, waits until A and D have completed before starting exponential decrease. if envelope is off: -- **Gain Mode**: select gain mode. +- **Gain Mode**: selects gain mode. - **Direct**: direct gain from 0 to 127 - **Decrease (linear)**: linear gain from -0 to -31 - **Decrease (logarithmic)**: exponential gain from -0 to -31 diff --git a/doc/5-wave/README.md b/doc/5-wave/README.md index 47430fd30..243e92366 100644 --- a/doc/5-wave/README.md +++ b/doc/5-wave/README.md @@ -111,7 +111,7 @@ input waveforms should match the size of the wavetable or unexpected results may - synthesizer type: selects the synthesis algorithm. - waveform displays. - **Wave 1**: selects input waveform. - - this will turn yellow to indicate that a Waveform macro is set; remove the macro to work with the synthesizer. + - this will turn yellow to indicate that a Waveform macro is set. - **Wave 2**: selects second input waveform. only appears when a dual-waveform synthesizer is selected. - **Pause preview**: toggles live waveform preview. - **Restart preview**: restarts preview from initial state. From 9caa2f38f452427b66e6bae387d67e56167f6733 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 31 Aug 2023 00:42:25 -0500 Subject: [PATCH 096/126] SoundUnit: fix getPan() --- src/engine/platform/su.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/su.cpp b/src/engine/platform/su.cpp index 0aae51a8c..6d5dd6a0c 100644 --- a/src/engine/platform/su.cpp +++ b/src/engine/platform/su.cpp @@ -459,7 +459,7 @@ DivMacroInt* DivPlatformSoundUnit::getChanMacroInt(int ch) { } unsigned short DivPlatformSoundUnit::getPan(int ch) { - return parent->convertPanLinearToSplit(chan[ch].pan,8,255); + return parent->convertPanLinearToSplit(chan[ch].pan^0x80,8,255); } DivDispatchOscBuffer* DivPlatformSoundUnit::getOscBuffer(int ch) { From a882d7bcf23cbc6d9b4761d8b658915b7de980ad Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 31 Aug 2023 01:24:06 -0500 Subject: [PATCH 097/126] GUI: detect UI scale factor when moving window --- src/gui/gui.cpp | 36 ++++++++++++++++++++++++++++++++++-- src/gui/macstuff.h | 2 +- src/gui/macstuff.m | 25 +++++++++++++++++++++++-- src/gui/scaling.cpp | 41 ++++++++++++++++++++++++++++++++++------- src/gui/scaling.h | 2 +- src/gui/settings.cpp | 26 ++++++++++++++------------ 6 files changed, 107 insertions(+), 25 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 37efe4c72..5e774d218 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3491,6 +3491,7 @@ bool FurnaceGUI::loop() { scrX=ev.window.data1; scrY=ev.window.data2; updateWindow=true; + shallDetectScale=2; logV("window moved to %dx%d",scrX,scrY); break; case SDL_WINDOWEVENT_SIZE_CHANGED: @@ -6140,7 +6141,38 @@ bool FurnaceGUI::loop() { if (shallDetectScale) { if (--shallDetectScale<1) { if (settings.dpiScale<0.5f) { - applyUISettings(); + const char* videoBackend=SDL_GetCurrentVideoDriver(); + double newScale=getScaleFactor(videoBackend,sdlWin); + if (newScale<0.1f) { + logW("scale what?"); + newScale=1.0f; + } + + if (newScale!=dpiScale) { + logD("auto UI scale changed (%f != %f) - applying settings...",newScale,dpiScale); + ImGui::GetIO().Fonts->Clear(); + + applyUISettings(); + + if (rend) rend->destroyFontsTexture(); + if (!ImGui::GetIO().Fonts->Build()) { + logE("error while building font atlas!"); + showError("error while loading fonts! please check your settings."); + ImGui::GetIO().Fonts->Clear(); + mainFont=ImGui::GetIO().Fonts->AddFontDefault(); + patFont=mainFont; + bigFont=mainFont; + headFont=mainFont; + if (rend) rend->destroyFontsTexture(); + if (!ImGui::GetIO().Fonts->Build()) { + logE("error again while building font atlas!"); + } else { + rend->createFontsTexture(); + } + } else { + rend->createFontsTexture(); + } + } } } } @@ -6368,7 +6400,7 @@ bool FurnaceGUI::init() { dpiScale=settings.dpiScale; } else { logD("auto-detecting UI scale factor."); - dpiScale=getScaleFactor(videoBackend); + dpiScale=getScaleFactor(videoBackend,sdlWin); logD("scale factor: %f",dpiScale); if (dpiScale<0.1f) { logW("scale what?"); diff --git a/src/gui/macstuff.h b/src/gui/macstuff.h index 76afff169..242abd17f 100644 --- a/src/gui/macstuff.h +++ b/src/gui/macstuff.h @@ -17,4 +17,4 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -double getMacDPIScale(); +double getMacDPIScale(void* sysWin, unsigned char isUIKit); diff --git a/src/gui/macstuff.m b/src/gui/macstuff.m index 7d20c433e..fe6d641a7 100644 --- a/src/gui/macstuff.m +++ b/src/gui/macstuff.m @@ -20,7 +20,28 @@ #include #include "macstuff.h" -double getMacDPIScale() { - CGFloat val=[[NSScreen mainScreen] backingScaleFactor]; +double getMacDPIScale(void* sysWin, unsigned char isUIKit) { + NSScreen* screen=nil; + if (sysWin!=NULL) { + if (isUIKit) { + UIWindow* win=(UIWindow*)sysWin; + UIWindowScene* winScene=[win windowScene]; + if (winScene!=nil) { + UIScreen* winScreen=[winScene screen]; + CGFloat ret=[winScreen scale]; + return (double)ret; + } + } else { + NSWindow* win=(NSWindow*)sysWin; + screen=[win screen]; + } + } + if (screen==nil) { + screen=[NSScreen mainScreen]; + } + if (screen==nil) { + return 1.0; + } + CGFloat val=[screen backingScaleFactor]; return (double)val; } diff --git a/src/gui/scaling.cpp b/src/gui/scaling.cpp index e3d8d6f80..f122aac8b 100644 --- a/src/gui/scaling.cpp +++ b/src/gui/scaling.cpp @@ -42,14 +42,23 @@ typedef int (*XDS)(void*); typedef int (*XDW)(void*,int); #endif -double getScaleFactor(const char* driverHint) { +double getScaleFactor(const char* driverHint, void* windowHint) { double ret=1.0; // Windows #ifdef _WIN32 POINT nullPoint; - nullPoint.x=-1; - nullPoint.y=-1; + if (windowHint!=NULL) { + int px=0; + int py=0; + + SDL_GetWindowPosition((SDL_Window*)windowHint,&px,&py); + nullPoint.x=px; + nullPoint.y=py; + } else { + nullPoint.x=-1; + nullPoint.y=-1; + } HMONITOR disp=MonitorFromPoint(nullPoint,MONITOR_DEFAULTTOPRIMARY); if (disp==NULL) { @@ -93,12 +102,30 @@ double getScaleFactor(const char* driverHint) { return ret; #endif - // macOS - backingScaleFactor + // macOS #ifdef __APPLE__ if (driverHint==NULL) { - return getMacDPIScale(); - } else if (strcmp(driverHint,"cocoa")==0 || strcmp(driverHint,"uikit")==0) { - return getMacDPIScale(); + return getMacDPIScale(NULL,false); + } else if (strcmp(driverHint,"cocoa")==0) { + void* nsWindow=NULL; + SDL_SysWMinfo wmInfo; + if (windowHint!=NULL) { + SDL_VERSION(&info.version) + if (SDL_GetWindowWMInfo((SDL_Window*)windowHint,&wmInfo)==SDL_TRUE) { + nsWindow=wmInfo.cocoa.window; + } + } + return getMacDPIScale(nsWindow,false); + } else if (strcmp(driverHint,"uikit")==0) { + void* uiWindow=NULL; + SDL_SysWMinfo wmInfo; + if (windowHint!=NULL) { + SDL_VERSION(&info.version) + if (SDL_GetWindowWMInfo((SDL_Window*)windowHint,&wmInfo)==SDL_TRUE) { + uiWindow=wmInfo.cocoa.window; + } + } + return getMacDPIScale(uiWindow,true); } #endif diff --git a/src/gui/scaling.h b/src/gui/scaling.h index 60710a34f..be2c9f035 100644 --- a/src/gui/scaling.h +++ b/src/gui/scaling.h @@ -17,4 +17,4 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -double getScaleFactor(const char* driverHint); \ No newline at end of file +double getScaleFactor(const char* driverHint, void* windowHint); \ No newline at end of file diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 1c219d014..52d0008fc 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -4153,18 +4153,20 @@ void FurnaceGUI::applyUISettings(bool updateFonts) { setupLabel(settings.emptyLabel.c_str(),emptyLabel,3); setupLabel(settings.emptyLabel2.c_str(),emptyLabel2,2); - // get scale factor - const char* videoBackend=SDL_GetCurrentVideoDriver(); - if (settings.dpiScale>=0.5f) { - logD("setting UI scale factor from config (%f).",settings.dpiScale); - dpiScale=settings.dpiScale; - } else { - logD("auto-detecting UI scale factor."); - dpiScale=getScaleFactor(videoBackend); - logD("scale factor: %f",dpiScale); - if (dpiScale<0.1f) { - logW("scale what?"); - dpiScale=1.0f; + if (updateFonts) { + // get scale factor + const char* videoBackend=SDL_GetCurrentVideoDriver(); + if (settings.dpiScale>=0.5f) { + logD("setting UI scale factor from config (%f).",settings.dpiScale); + dpiScale=settings.dpiScale; + } else { + logD("auto-detecting UI scale factor."); + dpiScale=getScaleFactor(videoBackend,sdlWin); + logD("scale factor: %f",dpiScale); + if (dpiScale<0.1f) { + logW("scale what?"); + dpiScale=1.0f; + } } } From 4ad1ae78fa98c867cafbfe5e2e59aec807ef1f75 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 31 Aug 2023 01:43:19 -0500 Subject: [PATCH 098/126] ASDFGHJKL --- src/gui/scaling.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gui/scaling.cpp b/src/gui/scaling.cpp index f122aac8b..737092836 100644 --- a/src/gui/scaling.cpp +++ b/src/gui/scaling.cpp @@ -21,6 +21,7 @@ #include "scaling.h" #include "../ta-log.h" #include +#include #ifdef _WIN32 #include @@ -110,7 +111,7 @@ double getScaleFactor(const char* driverHint, void* windowHint) { void* nsWindow=NULL; SDL_SysWMinfo wmInfo; if (windowHint!=NULL) { - SDL_VERSION(&info.version) + SDL_VERSION(&wmInfo.version) if (SDL_GetWindowWMInfo((SDL_Window*)windowHint,&wmInfo)==SDL_TRUE) { nsWindow=wmInfo.cocoa.window; } @@ -120,7 +121,7 @@ double getScaleFactor(const char* driverHint, void* windowHint) { void* uiWindow=NULL; SDL_SysWMinfo wmInfo; if (windowHint!=NULL) { - SDL_VERSION(&info.version) + SDL_VERSION(&wmInfo.version) if (SDL_GetWindowWMInfo((SDL_Window*)windowHint,&wmInfo)==SDL_TRUE) { uiWindow=wmInfo.cocoa.window; } From 43ef57390af7792c1ba0622ef0be7c777cc7006e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 31 Aug 2023 01:52:11 -0500 Subject: [PATCH 099/126] GUI: clamp CWSliders --- src/gui/gui.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 5e774d218..530b402b8 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -417,6 +417,7 @@ void FurnaceGUI::decodeMMLStr(String& source, int* macro, unsigned char& macroLe } bool FurnaceGUI::CWSliderScalar(const char* label, ImGuiDataType data_type, void* p_data, const void* p_min, const void* p_max, const char* format, ImGuiSliderFlags flags) { + flags^=ImGuiSliderFlags_AlwaysClamp; if (ImGui::SliderScalar(label,data_type,p_data,p_min,p_max,format,flags)) { return true; } @@ -453,6 +454,7 @@ bool FurnaceGUI::CWSliderScalar(const char* label, ImGuiDataType data_type, void } bool FurnaceGUI::CWVSliderScalar(const char* label, const ImVec2& size, ImGuiDataType data_type, void* p_data, const void* p_min, const void* p_max, const char* format, ImGuiSliderFlags flags) { + flags^=ImGuiSliderFlags_AlwaysClamp; if (ImGui::VSliderScalar(label,size,data_type,p_data,p_min,p_max,format,flags)) { return true; } From 7f35d06ccb1c319d5244f15cedfbc50c1b59cbda Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 31 Aug 2023 01:59:37 -0500 Subject: [PATCH 100/126] why does this happen --- src/gui/scaling.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/scaling.cpp b/src/gui/scaling.cpp index 737092836..f46ccb69f 100644 --- a/src/gui/scaling.cpp +++ b/src/gui/scaling.cpp @@ -113,7 +113,7 @@ double getScaleFactor(const char* driverHint, void* windowHint) { if (windowHint!=NULL) { SDL_VERSION(&wmInfo.version) if (SDL_GetWindowWMInfo((SDL_Window*)windowHint,&wmInfo)==SDL_TRUE) { - nsWindow=wmInfo.cocoa.window; + nsWindow=wmInfo.info.cocoa.window; } } return getMacDPIScale(nsWindow,false); @@ -123,7 +123,7 @@ double getScaleFactor(const char* driverHint, void* windowHint) { if (windowHint!=NULL) { SDL_VERSION(&wmInfo.version) if (SDL_GetWindowWMInfo((SDL_Window*)windowHint,&wmInfo)==SDL_TRUE) { - uiWindow=wmInfo.cocoa.window; + uiWindow=wmInfo.info.uikit.window; } } return getMacDPIScale(uiWindow,true); From 879e770e582495069cd456cb4c4803ca3850a8dc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 31 Aug 2023 02:09:54 -0500 Subject: [PATCH 101/126] and again --- src/gui/scaling.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/scaling.cpp b/src/gui/scaling.cpp index f46ccb69f..0bbe744da 100644 --- a/src/gui/scaling.cpp +++ b/src/gui/scaling.cpp @@ -108,6 +108,7 @@ double getScaleFactor(const char* driverHint, void* windowHint) { if (driverHint==NULL) { return getMacDPIScale(NULL,false); } else if (strcmp(driverHint,"cocoa")==0) { +#ifdef SDL_VIDEO_DRIVER_COCOA void* nsWindow=NULL; SDL_SysWMinfo wmInfo; if (windowHint!=NULL) { @@ -117,7 +118,9 @@ double getScaleFactor(const char* driverHint, void* windowHint) { } } return getMacDPIScale(nsWindow,false); +#endif } else if (strcmp(driverHint,"uikit")==0) { +#ifdef SDL_VIDEO_DRIVER_UIKIT void* uiWindow=NULL; SDL_SysWMinfo wmInfo; if (windowHint!=NULL) { @@ -129,6 +132,7 @@ double getScaleFactor(const char* driverHint, void* windowHint) { return getMacDPIScale(uiWindow,true); } #endif +#endif #if defined(__unix__) || defined(ANDROID) if (driverHint==NULL) { From 05d5eb5ca36ec0b7fa6ea5890af3557f7a1dffe4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 31 Aug 2023 02:19:27 -0500 Subject: [PATCH 102/126] asd --- src/gui/scaling.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/scaling.cpp b/src/gui/scaling.cpp index 0bbe744da..6df1db087 100644 --- a/src/gui/scaling.cpp +++ b/src/gui/scaling.cpp @@ -130,8 +130,8 @@ double getScaleFactor(const char* driverHint, void* windowHint) { } } return getMacDPIScale(uiWindow,true); - } #endif + } #endif #if defined(__unix__) || defined(ANDROID) From 35aeb51b79366a847faee2249bbb27a39d73e89f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 31 Aug 2023 02:31:33 -0500 Subject: [PATCH 103/126] ugh why --- src/gui/macstuff.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/macstuff.m b/src/gui/macstuff.m index fe6d641a7..a104fdfb7 100644 --- a/src/gui/macstuff.m +++ b/src/gui/macstuff.m @@ -24,13 +24,15 @@ double getMacDPIScale(void* sysWin, unsigned char isUIKit) { NSScreen* screen=nil; if (sysWin!=NULL) { if (isUIKit) { + return 1.0; + /* UIWindow* win=(UIWindow*)sysWin; UIWindowScene* winScene=[win windowScene]; if (winScene!=nil) { UIScreen* winScreen=[winScene screen]; CGFloat ret=[winScreen scale]; return (double)ret; - } + }*/ } else { NSWindow* win=(NSWindow*)sysWin; screen=[win screen]; From b315b84e31de0e43c738db62685a6da6542cc9b5 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 31 Aug 2023 03:01:38 -0500 Subject: [PATCH 104/126] GUI: clear out audio dev when changing backend --- src/gui/settings.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 52d0008fc..9f5b01cf9 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -749,6 +749,7 @@ void FurnaceGUI::drawSettings() { #endif if (settings.audioEngine!=prevAudioEngine) { audioEngineChanged=true; + settings.audioDevice=""; if (!isProAudio[settings.audioEngine]) settings.audioChans=2; } ImGui::EndCombo(); From 2a370dbb1fe4993ee89857960682736fb044692b Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Thu, 31 Aug 2023 12:15:29 +0400 Subject: [PATCH 105/126] update part numbers fix opl/opll cases rm "MOS" from sids c219 case --- src/gui/sysPartNumber.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/gui/sysPartNumber.cpp b/src/gui/sysPartNumber.cpp index fb52b5b19..d71e65a98 100644 --- a/src/gui/sysPartNumber.cpp +++ b/src/gui/sysPartNumber.cpp @@ -55,10 +55,10 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys, DivConfig& flags) { return "2A03"; break; case DIV_SYSTEM_C64_6581: - return "MOS 6581"; + return "6581"; break; case DIV_SYSTEM_C64_8580: - return "MOS 8580"; + return "8580"; break; case DIV_SYSTEM_Y8950: case DIV_SYSTEM_Y8950_DRUMS: @@ -137,8 +137,8 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys, DivConfig& flags) { case DIV_SYSTEM_YM2608_EXT: return "YM2608"; break; - case DIV_SYSTEM_OPL: - case DIV_SYSTEM_OPL_DRUMS:{ + case DIV_SYSTEM_OPLL: + case DIV_SYSTEM_OPLL_DRUMS:{ int patchSet=flags.getInt("patchSet",0); if (patchSet==1) { return "YMF281"; @@ -210,9 +210,9 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys, DivConfig& flags) { case DIV_SYSTEM_YM2610_FULL_EXT: return "YM2610"; break; - case DIV_SYSTEM_OPLL: - case DIV_SYSTEM_OPLL_DRUMS: - return "YM2413"; + case DIV_SYSTEM_OPL: + case DIV_SYSTEM_OPL_DRUMS: + return "YM3526"; break; case DIV_SYSTEM_QSOUND: return "QSound"; @@ -274,6 +274,9 @@ const char* FurnaceGUI::getSystemPartNumber(DivSystem sys, DivConfig& flags) { case DIV_SYSTEM_C140: return "C140"; break; + case DIV_SYSTEM_C219: + return "C219"; + break; default: return FurnaceGUI::getSystemName(sys); break; From addbc986f0c3548d920a5da87b1d74d7c6b10f33 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 31 Aug 2023 03:23:15 -0500 Subject: [PATCH 106/126] ExtCh: fix forceIns why KVS --- src/engine/platform/genesisext.cpp | 4 +--- src/engine/platform/ym2203ext.cpp | 4 +--- src/engine/platform/ym2608ext.cpp | 4 +--- src/engine/platform/ym2610bext.cpp | 4 +--- src/engine/platform/ym2610ext.cpp | 4 +--- 5 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/engine/platform/genesisext.cpp b/src/engine/platform/genesisext.cpp index a147545cb..75606f00c 100644 --- a/src/engine/platform/genesisext.cpp +++ b/src/engine/platform/genesisext.cpp @@ -732,10 +732,8 @@ void DivPlatformGenesisExt::forceIns() { if (i==2 && extMode) { // extended channel if (isOpMuted[orderedOps[j]] || !op.enable) { rWrite(baseAddr+0x40,127); - } else if (KVS(i,j)) { - rWrite(baseAddr+0x40,127-VOL_SCALE_LOG_BROKEN(127-op.tl,opChan[orderedOps[j]].outVol&0x7f,127)); } else { - rWrite(baseAddr+0x40,op.tl); + rWrite(baseAddr+0x40,127-VOL_SCALE_LOG_BROKEN(127-op.tl,opChan[orderedOps[j]].outVol&0x7f,127)); } } else { if (isMuted[i]) { diff --git a/src/engine/platform/ym2203ext.cpp b/src/engine/platform/ym2203ext.cpp index 349c8a820..adb312ad8 100644 --- a/src/engine/platform/ym2203ext.cpp +++ b/src/engine/platform/ym2203ext.cpp @@ -627,10 +627,8 @@ void DivPlatformYM2203Ext::forceIns() { if (i==2 && extMode) { // extended channel if (isOpMuted[orderedOps[j]] || !op.enable) { rWrite(baseAddr+0x40,127); - } else if (KVS(i,j)) { - rWrite(baseAddr+0x40,127-VOL_SCALE_LOG_BROKEN(127-op.tl,opChan[orderedOps[j]].outVol&0x7f,127)); } else { - rWrite(baseAddr+0x40,op.tl); + rWrite(baseAddr+0x40,127-VOL_SCALE_LOG_BROKEN(127-op.tl,opChan[orderedOps[j]].outVol&0x7f,127)); } } else { if (isMuted[i]) { diff --git a/src/engine/platform/ym2608ext.cpp b/src/engine/platform/ym2608ext.cpp index 10225613b..50424d4eb 100644 --- a/src/engine/platform/ym2608ext.cpp +++ b/src/engine/platform/ym2608ext.cpp @@ -676,10 +676,8 @@ void DivPlatformYM2608Ext::forceIns() { if (i==2 && extMode) { // extended channel if (isOpMuted[orderedOps[j]] || !op.enable) { rWrite(baseAddr+0x40,127); - } else if (KVS(i,j)) { - rWrite(baseAddr+0x40,127-VOL_SCALE_LOG_BROKEN(127-op.tl,opChan[orderedOps[j]].outVol&0x7f,127)); } else { - rWrite(baseAddr+0x40,op.tl); + rWrite(baseAddr+0x40,127-VOL_SCALE_LOG_BROKEN(127-op.tl,opChan[orderedOps[j]].outVol&0x7f,127)); } } else { if (isMuted[i] || !op.enable) { diff --git a/src/engine/platform/ym2610bext.cpp b/src/engine/platform/ym2610bext.cpp index 74d98aaf4..545a80e98 100644 --- a/src/engine/platform/ym2610bext.cpp +++ b/src/engine/platform/ym2610bext.cpp @@ -671,10 +671,8 @@ void DivPlatformYM2610BExt::forceIns() { if (i==extChanOffs && extMode) { // extended channel if (isOpMuted[orderedOps[j]] || !op.enable) { rWrite(baseAddr+0x40,127); - } else if (KVS(i,j)) { - rWrite(baseAddr+0x40,127-VOL_SCALE_LOG_BROKEN(127-op.tl,opChan[orderedOps[j]].outVol&0x7f,127)); } else { - rWrite(baseAddr+0x40,op.tl); + rWrite(baseAddr+0x40,127-VOL_SCALE_LOG_BROKEN(127-op.tl,opChan[orderedOps[j]].outVol&0x7f,127)); } } else { if (isMuted[i] || !op.enable) { diff --git a/src/engine/platform/ym2610ext.cpp b/src/engine/platform/ym2610ext.cpp index f0ab46990..39e341675 100644 --- a/src/engine/platform/ym2610ext.cpp +++ b/src/engine/platform/ym2610ext.cpp @@ -671,10 +671,8 @@ void DivPlatformYM2610Ext::forceIns() { if (i==extChanOffs && extMode) { // extended channel if (isOpMuted[orderedOps[j]] || !op.enable) { rWrite(baseAddr+0x40,127); - } else if (KVS(i,j)) { - rWrite(baseAddr+0x40,127-VOL_SCALE_LOG_BROKEN(127-op.tl,opChan[orderedOps[j]].outVol&0x7f,127)); } else { - rWrite(baseAddr+0x40,op.tl); + rWrite(baseAddr+0x40,127-VOL_SCALE_LOG_BROKEN(127-op.tl,opChan[orderedOps[j]].outVol&0x7f,127)); } } else { if (isMuted[i] || !op.enable) { From fa7405090e25b795c7eacdf2faaaa886a3635d26 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 31 Aug 2023 04:30:49 -0500 Subject: [PATCH 107/126] add WASAPI exclusive mode flag to PortAudio backen d --- src/audio/pa.cpp | 63 ++++++++++++++++++++++++++++++++++++++----- src/audio/taAudio.h | 5 +++- src/engine/engine.cpp | 1 + src/gui/gui.h | 2 ++ src/gui/settings.cpp | 16 +++++++++-- 5 files changed, 78 insertions(+), 9 deletions(-) diff --git a/src/audio/pa.cpp b/src/audio/pa.cpp index 722d29fd9..ed809b220 100644 --- a/src/audio/pa.cpp +++ b/src/audio/pa.cpp @@ -21,6 +21,9 @@ #include #include "../ta-log.h" #include "pa.h" +#ifdef _WIN32 +#include +#endif int taPAProcess(const void* in, void* out, unsigned long nframes, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags flags, void* inst) { TAAudioPA* instance=(TAAudioPA*)inst; @@ -117,8 +120,18 @@ std::vector TAAudioPA::listAudioDevices() { if (devInfo==NULL) continue; if (devInfo->maxOutputChannels<1) continue; + String devName; + + const PaHostApiInfo* driverInfo=Pa_GetHostApiInfo(devInfo->hostApi); + if (driverInfo==NULL) { + devName+="[???] "; + } else { + devName+=fmt::sprintf("[%s] ",driverInfo->name); + } + if (devInfo->name!=NULL) { - ret.push_back(String(devInfo->name)); + devName+=devInfo->name; + ret.push_back(devName); } } @@ -146,11 +159,15 @@ bool TAAudioPA::init(TAAudioDesc& request, TAAudioDesc& response) { desc.outFormat=TA_AUDIO_FORMAT_F32; const PaDeviceInfo* devInfo=NULL; + const PaHostApiInfo* driverInfo=NULL; int outDeviceID=0; if (desc.deviceName.empty()) { outDeviceID=Pa_GetDefaultOutputDevice(); devInfo=Pa_GetDeviceInfo(outDeviceID); + if (devInfo!=NULL) { + driverInfo=Pa_GetHostApiInfo(devInfo->hostApi); + } } else { int count=Pa_GetDeviceCount(); bool found=false; @@ -164,12 +181,25 @@ bool TAAudioPA::init(TAAudioDesc& request, TAAudioDesc& response) { if (devInfo==NULL) continue; if (devInfo->maxOutputChannels<1) continue; + String devName; + + driverInfo=Pa_GetHostApiInfo(devInfo->hostApi); + if (driverInfo==NULL) { + devName+="[???] "; + } else { + devName+=fmt::sprintf("[%s] ",driverInfo->name); + } + if (devInfo->name!=NULL) { - if (strcmp(devInfo->name,desc.deviceName.c_str())==0) { - outDeviceID=i; - found=true; - break; - } + devName+=devInfo->name; + } else { + continue; + } + + if (devName==desc.deviceName) { + outDeviceID=i; + found=true; + break; } } if (!found) { @@ -190,6 +220,27 @@ bool TAAudioPA::init(TAAudioDesc& request, TAAudioDesc& response) { outParams.suggestedLatency=(double)(desc.bufsize*desc.fragments)/desc.rate; outParams.hostApiSpecificStreamInfo=NULL; + if (driverInfo!=NULL) { + if (driverInfo->type==paWASAPI) { + logV("setting WASAPI-specific flags"); + PaWasapiStreamInfo* wasapiInfo=new PaWasapiStreamInfo; + memset(wasapiInfo,0,sizeof(PaWasapiStreamInfo)); + wasapiInfo->size=sizeof(PaWasapiStreamInfo); + wasapiInfo->hostApiType=paWASAPI; + wasapiInfo->version=1; + wasapiInfo->flags=paWinWasapiThreadPriority; + wasapiInfo->threadPriority=eThreadPriorityProAudio; + wasapiInfo->streamCategory=eAudioCategoryMedia; + wasapiInfo->streamOption=eStreamOptionRaw; + + if (desc.wasapiEx) { + wasapiInfo->flags|=paWinWasapiExclusive; + } + + outParams.hostApiSpecificStreamInfo=wasapiInfo; + } + } + logV("opening audio device..."); status=Pa_OpenStream( &ac, diff --git a/src/audio/taAudio.h b/src/audio/taAudio.h index dd0d76748..20491dbbe 100644 --- a/src/audio/taAudio.h +++ b/src/audio/taAudio.h @@ -58,13 +58,16 @@ struct TAAudioDesc { unsigned char inChans, outChans; TAAudioFormat outFormat; + bool wasapiEx; + TAAudioDesc(): rate(0.0), bufsize(0), fragments(0), inChans(0), outChans(0), - outFormat(TA_AUDIO_FORMAT_F32) {} + outFormat(TA_AUDIO_FORMAT_F32), + wasapiEx(false) {} }; diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index f60bdf6a0..8dbe1f26d 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -3370,6 +3370,7 @@ bool DivEngine::initAudioBackend() { want.inChans=0; want.outChans=getConfInt("audioChans",2); want.outFormat=TA_AUDIO_FORMAT_F32; + want.wasapiEx=getConfInt("wasapiEx",0); want.name="Furnace"; if (want.outChans<1) want.outChans=1; diff --git a/src/gui/gui.h b/src/gui/gui.h index 8c7837ca0..4f90a7bd9 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1571,6 +1571,7 @@ class FurnaceGUI { int centerPopup; int insIconsStyle; int classicChipOptions; + int wasapiEx; unsigned int maxUndoSteps; String mainFontPath; String headFontPath; @@ -1745,6 +1746,7 @@ class FurnaceGUI { centerPopup(1), insIconsStyle(1), classicChipOptions(0), + wasapiEx(0), maxUndoSteps(100), mainFontPath(""), headFontPath(""), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 9f5b01cf9..186905143 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -872,11 +872,11 @@ void FurnaceGUI::drawSettings() { } bool lowLatencyB=settings.lowLatency; - if (ImGui::Checkbox("Low-latency mode (experimental!)",&lowLatencyB)) { + if (ImGui::Checkbox("Low-latency mode",&lowLatencyB)) { settings.lowLatency=lowLatencyB; } if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("reduces latency by running the engine faster than the tick rate.\nuseful for live playback/jam mode.\n\nwarning: experimental! may produce glitches.\nonly enable if your buffer size is small (10ms or less)."); + ImGui::SetTooltip("reduces latency by running the engine faster than the tick rate.\nuseful for live playback/jam mode.\n\nwarning: nonly enable if your buffer size is small (10ms or less)."); } bool forceMonoB=settings.forceMono; @@ -884,6 +884,15 @@ void FurnaceGUI::drawSettings() { settings.forceMono=forceMonoB; } + if (settings.audioEngine==DIV_AUDIO_PORTAUDIO) { + if (settings.audioDevice.find("[Windows WASAPI] ")==0) { + bool wasapiExB=settings.wasapiEx; + if (ImGui::Checkbox("Exclusive mode",&wasapiExB)) { + settings.wasapiEx=wasapiExB; + } + } + } + TAAudioDesc& audioWant=e->getAudioDescWant(); TAAudioDesc& audioGot=e->getAudioDescGot(); @@ -3252,6 +3261,7 @@ void FurnaceGUI::syncSettings() { settings.centerPopup=e->getConfInt("centerPopup",1); settings.insIconsStyle=e->getConfInt("insIconsStyle",1); settings.classicChipOptions=e->getConfInt("classicChipOptions",0); + settings.wasapiEx=e->getConfInt("wasapiEx",0); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.headFontSize,2,96); @@ -3399,6 +3409,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.centerPopup,0,1); clampSetting(settings.insIconsStyle,0,2); clampSetting(settings.classicChipOptions,0,1); + clampSetting(settings.wasapiEx,0,1); if (settings.exportLoops<0.0) settings.exportLoops=0.0; if (settings.exportFadeOut<0.0) settings.exportFadeOut=0.0; @@ -3653,6 +3664,7 @@ void FurnaceGUI::commitSettings() { e->setConf("centerPopup",settings.centerPopup); e->setConf("insIconsStyle",settings.insIconsStyle); e->setConf("classicChipOptions",settings.classicChipOptions); + e->setConf("wasapiEx",settings.wasapiEx); // colors for (int i=0; i Date: Thu, 31 Aug 2023 04:39:19 -0500 Subject: [PATCH 108/126] fix build --- src/audio/pa.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/audio/pa.cpp b/src/audio/pa.cpp index ed809b220..e2bdfdd8d 100644 --- a/src/audio/pa.cpp +++ b/src/audio/pa.cpp @@ -221,6 +221,7 @@ bool TAAudioPA::init(TAAudioDesc& request, TAAudioDesc& response) { outParams.hostApiSpecificStreamInfo=NULL; if (driverInfo!=NULL) { +#ifdef _WIN32 if (driverInfo->type==paWASAPI) { logV("setting WASAPI-specific flags"); PaWasapiStreamInfo* wasapiInfo=new PaWasapiStreamInfo; @@ -239,6 +240,7 @@ bool TAAudioPA::init(TAAudioDesc& request, TAAudioDesc& response) { outParams.hostApiSpecificStreamInfo=wasapiInfo; } +#endif } logV("opening audio device..."); From 65cd433ac7e5a7f69157c4ba1212fefb120fbcfe Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 31 Aug 2023 04:46:52 -0500 Subject: [PATCH 109/126] fix hang detection (DirectSound) --- src/engine/playback.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engine/playback.cpp b/src/engine/playback.cpp index 2306f057b..270dd7f79 100644 --- a/src/engine/playback.cpp +++ b/src/engine/playback.cpp @@ -2080,8 +2080,8 @@ void DivEngine::nextBuf(float** in, float** out, int inChans, int outChans, unsi } //logD("attempts: %d",attempts); - if (attempts>=(int)size) { - logE("hang detected! stopping! at %d seconds %d micro",totalSeconds,totalTicks); + if (attempts>=(int)(size+10)) { + logE("hang detected! stopping! at %d seconds %d micro (%d>=%d)",totalSeconds,totalTicks,attempts,(int)size); freelance=false; playing=false; extValuePresent=false; From 4f02f1f90b7845562a00380034a332ab87c62e66 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 1 Sep 2023 16:43:08 -0500 Subject: [PATCH 110/126] update settings.md --- doc/2-interface/settings.md | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/doc/2-interface/settings.md b/doc/2-interface/settings.md index 5c984d39c..34b5c8fab 100644 --- a/doc/2-interface/settings.md +++ b/doc/2-interface/settings.md @@ -66,17 +66,31 @@ settings are saved when clicking the **OK** or **Apply** buttons at the bottom o ### Output -- **Backend**: selects SDL or JACK for audio output. - - only appears on Linux, or MacOS compiled with JACK support -- **Driver**: select a different SDL audio driver if you're having problems with the default one. +- **Backend**: selects a different backend for audio output. + - SDL: the default one. + - JACK: the JACK Audio Connection Kit (low-latency audio server). only appears on Linux, or MacOS compiled with JACK support. + - PortAudio: this may or may not perform better than the SDL backend. +- **Driver**: select a different audio driver if you're having problems with the default one. + - only appears when Backend is SDL. - **Device**: audio device for playback. -- **Sample rate** + - if using PortAudio backend, devices will be prefixed with the audio API that PortAudio is going to use: + - Windows WASAPI: a modern audio API available on Windows Vista and later, featuring an (optional) Exclusive Mode. be noted that your buffer size setting may be ignored. + - Windows WDM-KS: low-latency, direct to hardware output mechanism. may not work all the time and prevents your audio device from being used for anything else! + - Windows DirectSound: this is the worst choice. best to move on. + - MME: an old audio API. doesn't have Exclusive Mode. + - Core Audio: the only choice in macOS. + - ALSA: low-level audio output on Linux. may prevent other applications from using your audio device. +- **Sample rate**: audio output rate. + - a lower rate decreases quality and isn't really beneficial. + - if using PortAudio backend, be careful about this value. - **Outputs**: number of audio outputs created, up to 16. - only appears when Backend is JACK. -- **Channels**: number of output channels to use. +- **Channels**: mono, stereo or something. - **Buffer size**: size of buffer in both samples and milliseconds. - setting this to a low value may cause stuttering/glitches in playback (known as "underruns" or "xruns"). - setting this to a high value increases latency. +- **Exclusive mode**: enables Exclusive Mode, which may offer latency improvements. + - only available on WASAPI devices in the PortAudio backend! - **Low-latency mode (experimental!)**: reduces latency by running the engine faster than the tick rate. useful for live playback/jam mode. - only enable if your buffer size is small (10ms or less). - **Force mono audio**: use if you're unable to hear stereo audio (e.g. single speaker or hearing loss in one ear). @@ -88,6 +102,7 @@ settings are saved when clicking the **OK** or **Apply** buttons at the bottom o - **Quality**: selects quality of resampling. low quality reduces CPU load by a small amount. - **Software clipping**: clips output to nominal range (-1.0 to 1.0) before passing it to the audio device. - this avoids activating Windows' built-in limiter. + - this option shall be enabled when using PortAudio backend with a DirectSound device. ### Metronome From c21f880e3e29876a5d5fb1236a11f626950443e3 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 1 Sep 2023 18:33:08 -0500 Subject: [PATCH 111/126] GUI: update credits --- src/gui/about.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/about.cpp b/src/gui/about.cpp index 0c9834795..d1ab6b983 100644 --- a/src/gui/about.cpp +++ b/src/gui/about.cpp @@ -79,6 +79,7 @@ const char* aboutLine[]={ "Burnt Fishy", "CaptainMalware", "Clingojam", + "Crisps", "DeMOSic", "DevEd", "Dippy", From 1c171ed7bd017e9846aca9f2378fbd20579afb3a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 1 Sep 2023 18:33:32 -0500 Subject: [PATCH 112/126] GUI: de-duplicate file dialog filters untested. may not work... --- src/gui/fileDialog.cpp | 39 +++++++++++++++++++++++++++++++++++++-- src/gui/fileDialog.h | 7 +++++-- src/gui/gui.cpp | 41 +---------------------------------------- 3 files changed, 43 insertions(+), 44 deletions(-) diff --git a/src/gui/fileDialog.cpp b/src/gui/fileDialog.cpp index 17d30a40f..e4dd8d3cd 100644 --- a/src/gui/fileDialog.cpp +++ b/src/gui/fileDialog.cpp @@ -76,7 +76,38 @@ void _nfdThread(const NFDState state, std::atomic* ok, std::vector } #endif -bool FurnaceGUIFileDialog::openLoad(String header, std::vector filter, const char* noSysFilter, String path, double dpiScale, FileDialogSelectCallback clickCallback, bool allowMultiple) { +void FurnaceGUIFileDialog::convertFilterList(std::vector& filter) { + memset(noSysFilter,0,4096); + + String result; + + for (size_t i=0; (i+1) filter, String path, double dpiScale, FileDialogSelectCallback clickCallback, bool allowMultiple) { if (opened) return false; saving=false; curPath=path; @@ -149,6 +180,8 @@ bool FurnaceGUIFileDialog::openLoad(String header, std::vector filter, c } #endif + convertFilterList(filter); + ImGuiFileDialog::Instance()->singleClickSel=mobileUI; ImGuiFileDialog::Instance()->DpiScale=dpiScale; ImGuiFileDialog::Instance()->mobileMode=mobileUI; @@ -159,7 +192,7 @@ bool FurnaceGUIFileDialog::openLoad(String header, std::vector filter, c return true; } -bool FurnaceGUIFileDialog::openSave(String header, std::vector filter, const char* noSysFilter, String path, double dpiScale) { +bool FurnaceGUIFileDialog::openSave(String header, std::vector filter, String path, double dpiScale) { if (opened) return false; #ifdef ANDROID @@ -233,6 +266,8 @@ bool FurnaceGUIFileDialog::openSave(String header, std::vector filter, c } else { hasError=false; + convertFilterList(filter); + ImGuiFileDialog::Instance()->singleClickSel=false; ImGuiFileDialog::Instance()->DpiScale=dpiScale; ImGuiFileDialog::Instance()->mobileMode=mobileUI; diff --git a/src/gui/fileDialog.h b/src/gui/fileDialog.h index b4a6d46e6..371fa7c21 100644 --- a/src/gui/fileDialog.h +++ b/src/gui/fileDialog.h @@ -31,6 +31,7 @@ class FurnaceGUIFileDialog { bool opened; bool saving; bool hasError; + char noSysFilter[4096]; String curPath; std::vector fileName; #ifdef USE_NFD @@ -46,10 +47,12 @@ class FurnaceGUIFileDialog { pfd::open_file* dialogO; pfd::save_file* dialogS; #endif + + void convertFilterList(std::vector& filter); public: bool mobileUI; - bool openLoad(String header, std::vector filter, const char* noSysFilter, String path, double dpiScale, FileDialogSelectCallback clickCallback=NULL, bool allowMultiple=false); - bool openSave(String header, std::vector filter, const char* noSysFilter, String path, double dpiScale); + bool openLoad(String header, std::vector filter, String path, double dpiScale, FileDialogSelectCallback clickCallback=NULL, bool allowMultiple=false); + bool openSave(String header, std::vector filter, String path, double dpiScale); bool accepted(); void close(); bool render(const ImVec2& min, const ImVec2& max); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 530b402b8..60e0c650f 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1567,7 +1567,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { "Open File", {"compatible files", "*.fur *.dmf *.mod *.fc13 *.fc14 *.smod *.fc", "all files", "*"}, - "compatible files{.fur,.dmf,.mod,.fc13,.fc14,.smod,.fc},.*", workingDirSong, dpiScale ); @@ -1580,7 +1579,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openLoad( "Restore Backup", {"Furnace song", "*.fur"}, - "Furnace song{.fur}", backupPath+String(DIR_SEPARATOR_STR), dpiScale ); @@ -1590,7 +1588,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Save File", {"Furnace song", "*.fur"}, - "Furnace song{.fur}", workingDirSong, dpiScale ); @@ -1600,7 +1597,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Save File", {"DefleMask 1.1.3 module", "*.dmf"}, - "DefleMask 1.1.3 module{.dmf}", workingDirSong, dpiScale ); @@ -1610,7 +1606,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Save File", {"DefleMask 1.0/legacy module", "*.dmf"}, - "DefleMask 1.0/legacy module{.dmf}", workingDirSong, dpiScale ); @@ -1627,8 +1622,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { if (!dirExists(workingDirIns)) workingDirIns=getHomeDir(); hasOpened=fileDialog->openLoad( "Load Instrument", - // TODO supply loadable formats in a dynamic, scalable, "DRY" way. - // thank the author of IGFD for making things impossible {"all compatible files", "*.fui *.dmp *.tfi *.vgi *.s3i *.sbi *.opli *.opni *.y12 *.bnk *.ff *.gyb *.opm *.wopl *.wopn", "Furnace instrument", "*.fui", "DefleMask preset", "*.dmp", @@ -1646,7 +1639,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { "Wohlstand WOPL bank", "*.wopl", "Wohlstand WOPN bank", "*.wopn", "all files", "*"}, - "all compatible files{.fui,.dmp,.tfi,.vgi,.s3i,.sbi,.opli,.opni,.y12,.bnk,.ff,.gyb,.opm,.wopl,.wopn},.*", workingDirIns, dpiScale, [this](const char* path) { @@ -1681,7 +1673,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Save Instrument", {"Furnace instrument", "*.fui"}, - "Furnace instrument{.fui}", workingDirIns, dpiScale ); @@ -1691,7 +1682,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Save Instrument", {"DefleMask preset", "*.dmp"}, - "DefleMask preset{.dmp}", workingDirIns, dpiScale ); @@ -1703,7 +1693,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { "Load Wavetable", {"compatible files", "*.fuw *.dmw", "all files", "*"}, - "compatible files{.fuw,.dmw},.*", workingDirWave, dpiScale, NULL, // TODO @@ -1715,7 +1704,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Save Wavetable", {"Furnace wavetable", ".fuw"}, - "Furnace wavetable{.fuw}", workingDirWave, dpiScale ); @@ -1725,7 +1713,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Save Wavetable", {"DefleMask wavetable", ".dmw"}, - "DefleMask wavetable{.dmw}", workingDirWave, dpiScale ); @@ -1735,7 +1722,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Save Wavetable", {"raw data", ".raw"}, - "raw data{.raw}", workingDirWave, dpiScale ); @@ -1747,7 +1733,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { "Load Sample", {"compatible files", "*.wav *.dmc *.brr", "all files", "*"}, - "compatible files{.wav,.dmc,.brr},.*", workingDirSample, dpiScale, NULL, // TODO @@ -1760,7 +1745,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openLoad( "Load Raw Sample", {"all files", "*"}, - ".*", workingDirSample, dpiScale ); @@ -1770,7 +1754,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Save Sample", {"Wave file", "*.wav"}, - "Wave file{.wav}", workingDirSample, dpiScale ); @@ -1778,9 +1761,8 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { case GUI_FILE_SAMPLE_SAVE_RAW: if (!dirExists(workingDirSample)) workingDirSample=getHomeDir(); hasOpened=fileDialog->openSave( - "Load Raw Sample", + "Save Raw Sample", {"all files", "*"}, - ".*", workingDirSample, dpiScale ); @@ -1790,7 +1772,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Export Audio", {"Wave file", "*.wav"}, - "Wave file{.wav}", workingDirAudioExport, dpiScale ); @@ -1800,7 +1781,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Export Audio", {"Wave file", "*.wav"}, - "Wave file{.wav}", workingDirAudioExport, dpiScale ); @@ -1810,7 +1790,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Export Audio", {"Wave file", "*.wav"}, - "Wave file{.wav}", workingDirAudioExport, dpiScale ); @@ -1820,7 +1799,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Export VGM", {"VGM file", "*.vgm"}, - "VGM file{.vgm}", workingDirVGMExport, dpiScale ); @@ -1830,7 +1808,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Export ZSM", {"ZSM file", "*.zsm"}, - "ZSM file{.zsm}", workingDirZSMExport, dpiScale ); @@ -1840,7 +1817,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Export Command Stream", {"text file", "*.txt"}, - "text file{.txt}", workingDirROMExport, dpiScale ); @@ -1850,7 +1826,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Export Command Stream", {"binary file", "*.bin"}, - "binary file{.bin}", workingDirROMExport, dpiScale ); @@ -1863,7 +1838,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openLoad( "Select Font", {"compatible files", "*.ttf *.otf *.ttc"}, - "compatible files{.ttf,.otf,.ttc}", workingDirFont, dpiScale ); @@ -1873,7 +1847,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openLoad( "Select Font", {"compatible files", "*.ttf *.otf *.ttc"}, - "compatible files{.ttf,.otf,.ttc}", workingDirFont, dpiScale ); @@ -1883,7 +1856,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openLoad( "Select Font", {"compatible files", "*.ttf *.otf *.ttc"}, - "compatible files{.ttf,.otf,.ttc}", workingDirFont, dpiScale ); @@ -1893,7 +1865,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openLoad( "Select Color File", {"configuration files", "*.cfgc"}, - "configuration files{.cfgc}", workingDirColors, dpiScale ); @@ -1903,7 +1874,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openLoad( "Select Keybind File", {"configuration files", "*.cfgk"}, - "configuration files{.cfgk}", workingDirKeybinds, dpiScale ); @@ -1913,7 +1883,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openLoad( "Select Layout File", {".ini files", "*.ini"}, - ".ini files{.ini}", workingDirKeybinds, dpiScale ); @@ -1923,7 +1892,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Export Colors", {"configuration files", "*.cfgc"}, - "configuration files{.cfgc}", workingDirColors, dpiScale ); @@ -1933,7 +1901,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Export Keybinds", {"configuration files", "*.cfgk"}, - "configuration files{.cfgk}", workingDirKeybinds, dpiScale ); @@ -1943,7 +1910,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { hasOpened=fileDialog->openSave( "Export Layout", {".ini files", "*.ini"}, - ".ini files{.ini}", workingDirKeybinds, dpiScale ); @@ -1956,7 +1922,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { "Load ROM", {"compatible files", "*.rom *.bin", "all files", "*"}, - "compatible files{.rom,.bin},.*", workingDirROM, dpiScale ); @@ -1967,7 +1932,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { "Play Command Stream", {"command stream", "*.bin", "all files", "*"}, - "command stream{.bin},.*", workingDirROM, dpiScale ); @@ -1979,7 +1943,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { {"compatible files", "*.fur *.dmf *.mod", "another option", "*.wav *.ttf", "all files", "*"}, - "compatible files{.fur,.dmf,.mod},another option{.wav,.ttf},.*", workingDirTest, dpiScale, [](const char* path) { @@ -1998,7 +1961,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { {"compatible files", "*.fur *.dmf *.mod", "another option", "*.wav *.ttf", "all files", "*"}, - "compatible files{.fur,.dmf,.mod},another option{.wav,.ttf},.*", workingDirTest, dpiScale, [](const char* path) { @@ -2017,7 +1979,6 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { "Save Test", {"Furnace song", "*.fur", "DefleMask module", "*.dmf"}, - "Furnace song{.fur},DefleMask module{.dmf}", workingDirTest, dpiScale ); From 716d42ee6d5f9e82865380b53328eac8c2a46256 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 1 Sep 2023 19:59:43 -0500 Subject: [PATCH 113/126] IGFD: fix .* filter with label --- extern/igfd/ImGuiFileDialog.cpp | 3 ++- extern/igfd/ImGuiFileDialog.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/extern/igfd/ImGuiFileDialog.cpp b/extern/igfd/ImGuiFileDialog.cpp index b5152d7c6..82207a587 100644 --- a/extern/igfd/ImGuiFileDialog.cpp +++ b/extern/igfd/ImGuiFileDialog.cpp @@ -720,6 +720,7 @@ namespace IGFD auto arr = IGFD::Utils::SplitStringToVector(fs, ',', false); for (auto a : arr) { + infos.firstFilter=a; infos.collectionfilters.emplace(a); } } @@ -1048,7 +1049,7 @@ namespace IGFD // check if current file extention is covered by current filter // we do that here, for avoid doing that during filelist display // for better fps - if (prSelectedFilter.exist(vTag) || prSelectedFilter.filter == ".*") + if (prSelectedFilter.exist(vTag) || prSelectedFilter.firstFilter == ".*") { return true; } diff --git a/extern/igfd/ImGuiFileDialog.h b/extern/igfd/ImGuiFileDialog.h index a2420918f..cecf885a3 100644 --- a/extern/igfd/ImGuiFileDialog.h +++ b/extern/igfd/ImGuiFileDialog.h @@ -745,6 +745,7 @@ namespace IGFD { public: std::string filter; + std::string firstFilter; std::set collectionfilters; public: From ef23b88ad3b0fdd36c572e5eb97864c296413c68 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 2 Sep 2023 03:58:11 -0500 Subject: [PATCH 114/126] NES: fix chan osc (noise, NSFplay) --- src/engine/platform/nes.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/platform/nes.cpp b/src/engine/platform/nes.cpp index 657a084e0..92f7edfa8 100644 --- a/src/engine/platform/nes.cpp +++ b/src/engine/platform/nes.cpp @@ -145,7 +145,7 @@ void DivPlatformNES::acquire_NSFPlay(short** buf, size_t len) { oscBuf[0]->data[oscBuf[0]->needle++]=nes1_NP->out[0]<<11; oscBuf[1]->data[oscBuf[1]->needle++]=nes1_NP->out[1]<<11; oscBuf[2]->data[oscBuf[2]->needle++]=nes2_NP->out[0]<<11; - oscBuf[3]->data[oscBuf[3]->needle++]=nes2_NP->out[1]<<12; + oscBuf[3]->data[oscBuf[3]->needle++]=nes2_NP->out[1]<<11; oscBuf[4]->data[oscBuf[4]->needle++]=nes2_NP->out[2]<<8; } } From b26a76f343a138bed9931c692d15e2909b428bbf Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 2 Sep 2023 22:46:46 -0500 Subject: [PATCH 115/126] . --- instruments/FM/bass/(GEN) Thiel Bass.dmp | Bin 51 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 instruments/FM/bass/(GEN) Thiel Bass.dmp diff --git a/instruments/FM/bass/(GEN) Thiel Bass.dmp b/instruments/FM/bass/(GEN) Thiel Bass.dmp deleted file mode 100644 index 17817d34e90c5fec8a0ab9dc10e6b669e8a53b53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 kcmd<)WMp7xVqy`MXJFuGU|?ooV3C6}8F}GM78W=Y03y}_HUIzs From 20ed22d6e804eddc4e5ecbfb1cc9f69b26091b82 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 2 Sep 2023 23:07:09 -0500 Subject: [PATCH 116/126] Revert "." This reverts commit b26a76f343a138bed9931c692d15e2909b428bbf. --- instruments/FM/bass/(GEN) Thiel Bass.dmp | Bin 0 -> 51 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 instruments/FM/bass/(GEN) Thiel Bass.dmp diff --git a/instruments/FM/bass/(GEN) Thiel Bass.dmp b/instruments/FM/bass/(GEN) Thiel Bass.dmp new file mode 100644 index 0000000000000000000000000000000000000000..17817d34e90c5fec8a0ab9dc10e6b669e8a53b53 GIT binary patch literal 51 kcmd<)WMp7xVqy`MXJFuGU|?ooV3C6}8F}GM78W=Y03y}_HUIzs literal 0 HcmV?d00001 From 19d0ed617a224ceaeda0a5ae970087f676d2a377 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 2 Sep 2023 23:57:55 -0500 Subject: [PATCH 117/126] what? --- src/gui/chanOsc.cpp | 58 ++++++++++++++++++++++++------------------ src/gui/gui.cpp | 3 ++- src/gui/gui.h | 6 ++++- src/gui/sampleEdit.cpp | 1 + 4 files changed, 41 insertions(+), 27 deletions(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 4371d6fd3..9b51d0f3f 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -417,8 +417,10 @@ void FurnaceGUI::drawChanOsc() { if (fft->plan==NULL) { logD("creating FFT plan for channel %d",ch); fft->inBuf=(double*)fftw_malloc(FURNACE_FFT_SIZE*sizeof(double)); - fft->outBuf=(fftw_complex*)fftw_malloc(FURNACE_FFT_SIZE*sizeof(fftw_complex)); + fft->outBuf=(fftw_complex*)fftw_malloc(FURNACE_FFT_SIZE*sizeof(fftw_complex)*2); + fft->corrBuf=(double*)fftw_malloc(FURNACE_FFT_SIZE*sizeof(double)*2); fft->plan=fftw_plan_dft_r2c_1d(FURNACE_FFT_SIZE,fft->inBuf,fft->outBuf,FFTW_ESTIMATE); + fft->planI=fftw_plan_dft_c2r_1d(FURNACE_FFT_SIZE,fft->outBuf,fft->corrBuf,FFTW_ESTIMATE); } int displaySize=(float)(buf->rate)*(chanOscWindowSize/1000.0f); @@ -447,38 +449,44 @@ void FurnaceGUI::drawChanOsc() { waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f)); } } else { - float minLevel=1.0f; - float maxLevel=-1.0f; - float dcOff=0.0f; + //float minLevel=1.0f; + //float maxLevel=-1.0f; + //float dcOff=0.0f; unsigned short needlePos=buf->needle; //unsigned short needlePosOrig=needlePos; for (int i=0; iinBuf[i]=(double)buf->data[(unsigned short)(needlePos-displaySize*2+((i*displaySize*2)/FURNACE_FFT_SIZE))]/32768.0; + fft->inBuf[i]*=sin(M_PI*(double)i/(double)FURNACE_FFT_SIZE); } fftw_execute(fft->plan); - - // find origin frequency - int point=1; - double candAmp=0.0; - for (unsigned short i=1; i<512; i++) { - fftw_complex& f=fft->outBuf[i]; - // AMPLITUDE - double amp=sqrt(pow(f[0],2.0)+pow(f[1],2.0))/pow((double)i,0.8); - if (amp>candAmp) { - point=i; - candAmp=amp; - } - } - // PHASE - fftw_complex& candPoint=fft->outBuf[point]; - double phase=((double)(displaySize*2)/(double)point)*(0.5+(atan2(candPoint[1],candPoint[0])/(M_PI*2))); + for (int i=0; ioutBuf[i][0]-=fft->outBuf[0][0]; + //fft->outBuf[i][1]-=fft->outBuf[0][1]; + fft->outBuf[i][0]/=FURNACE_FFT_SIZE; + fft->outBuf[i][1]/=FURNACE_FFT_SIZE; + fft->outBuf[i][0]=fft->outBuf[i][0]*fft->outBuf[i][0]; + fft->outBuf[i][1]=fft->outBuf[i][1]*fft->outBuf[i][1]; + } + memset(&fft->outBuf[FURNACE_FFT_SIZE],0,sizeof(fftw_complex)*FURNACE_FFT_SIZE); + fftw_execute(fft->planI); if (chanOscWaveCorr) { - needlePos-=phase; + //needlePos-=phase; } - chanOscPitch[ch]=(float)point/32.0f; + //chanOscPitch[ch]=(float)point/32.0f; + for (unsigned short i=0; icorrBuf[(i*FURNACE_FFT_SIZE)/precision]-fft->corrBuf[FURNACE_FFT_SIZE-1-((i*FURNACE_FFT_SIZE)/precision)]; + if (i>=precision/2) { + y=fft->inBuf[((i-(precision/2))*FURNACE_FFT_SIZE*2)/(precision)]; + } + + waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); + } + + /* needlePos-=displaySize; for (unsigned short i=0; idata[(unsigned short)(needlePos+(i*displaySize/precision))]/32768.0f; @@ -494,10 +502,10 @@ void FurnaceGUI::drawChanOsc() { if (y>0.5f) y=0.5f; y*=chanOscAmplify; waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); - } + }*/ - //String cPhase=fmt::sprintf("%d cphase: %f\nvol: %f\nmin: %.2f\nmax: %.2f\ndcOff: %.2f\nneedles:\n- %d\n- %d\n- %d (%s)",point,phase,chanOscVol[ch],minLevel,maxLevel,dcOff,needlePosOrig,needlePos,(needlePos+displaySize),((needlePos+displaySize)>=needlePosOrig)?"WARN":"OK"); - //dl->AddText(inRect.Min,0xffffffff,cPhase.c_str()); + String cPhase=fmt::sprintf("\n%f",fft->corrBuf[0]); + dl->AddText(inRect.Min,0xffffffff,cPhase.c_str()); } ImU32 color=ImGui::GetColorU32(chanOscColor); if (chanOscUseGrad) { diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 60e0c650f..8a9521277 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6273,7 +6273,8 @@ bool FurnaceGUI::init() { pianoView=e->getConfInt("pianoView",pianoView); pianoInputPadMode=e->getConfInt("pianoInputPadMode",pianoInputPadMode); - chanOscCols=e->getConfInt("chanOscCols",3); + //chanOscCols=e->getConfInt("chanOscCols",3); + chanOscCols=1; chanOscAutoColsType=e->getConfInt("chanOscAutoColsType",0); chanOscColorX=e->getConfInt("chanOscColorX",GUI_OSCREF_CENTER); chanOscColorY=e->getConfInt("chanOscColorY",GUI_OSCREF_CENTER); diff --git a/src/gui/gui.h b/src/gui/gui.h index 4f90a7bd9..c3b5448d4 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -2060,14 +2060,18 @@ class FurnaceGUI { double inBufPosFrac; unsigned short needle; fftw_complex* outBuf; + double* corrBuf; fftw_plan plan; + fftw_plan planI; ChanOscStatus(): inBuf(NULL), inBufPos(0), inBufPosFrac(0.0f), needle(0), outBuf(NULL), - plan(NULL) {} + corrBuf(NULL), + plan(NULL), + planI(NULL) {} } chanOscChan[DIV_MAX_CHANS]; // visualizer diff --git a/src/gui/sampleEdit.cpp b/src/gui/sampleEdit.cpp index 2ca22f14e..bdfba982f 100644 --- a/src/gui/sampleEdit.cpp +++ b/src/gui/sampleEdit.cpp @@ -1197,6 +1197,7 @@ void FurnaceGUI::drawSampleEdit() { sameLineMaybe(ImGui::CalcTextSize("Zoom").x+150.0f*dpiScale+ImGui::CalcTextSize("100%").x); double zoomPercent=100.0/sampleZoom; bool checkZoomLimit=false; + ImGui::AlignTextToFramePadding(); ImGui::Text("Zoom"); ImGui::SameLine(); ImGui::SetNextItemWidth(150.0f*dpiScale); From f6db75fae1bc62c474c99bd5085e60d7f70e9df0 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 3 Sep 2023 04:22:00 -0500 Subject: [PATCH 118/126] GUI: massive chan osc improvements --- src/gui/chanOsc.cpp | 173 ++++++++++++++++++++++++++++++++------------ src/gui/gui.cpp | 4 +- src/gui/gui.h | 2 +- 3 files changed, 130 insertions(+), 49 deletions(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 9b51d0f3f..7e7e8efe7 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -23,6 +23,7 @@ #include "imgui.h" #include "imgui_internal.h" #include "misc/cpp/imgui_stdlib.h" +#include #define FURNACE_FFT_SIZE 4096 #define FURNACE_FFT_RATE 80.0 @@ -417,8 +418,8 @@ void FurnaceGUI::drawChanOsc() { if (fft->plan==NULL) { logD("creating FFT plan for channel %d",ch); fft->inBuf=(double*)fftw_malloc(FURNACE_FFT_SIZE*sizeof(double)); - fft->outBuf=(fftw_complex*)fftw_malloc(FURNACE_FFT_SIZE*sizeof(fftw_complex)*2); - fft->corrBuf=(double*)fftw_malloc(FURNACE_FFT_SIZE*sizeof(double)*2); + fft->outBuf=(fftw_complex*)fftw_malloc(FURNACE_FFT_SIZE*sizeof(fftw_complex)); + fft->corrBuf=(double*)fftw_malloc(FURNACE_FFT_SIZE*sizeof(double)); fft->plan=fftw_plan_dft_r2c_1d(FURNACE_FFT_SIZE,fft->inBuf,fft->outBuf,FFTW_ESTIMATE); fft->planI=fftw_plan_dft_c2r_1d(FURNACE_FFT_SIZE,fft->outBuf,fft->corrBuf,FFTW_ESTIMATE); } @@ -444,67 +445,145 @@ void FurnaceGUI::drawChanOsc() { ImGui::ItemSize(size,style.FramePadding.y); if (ImGui::ItemAdd(rect,ImGui::GetID("chOscDisplay"))) { if (!e->isRunning()) { - for (unsigned short i=0; ineedle; //unsigned short needlePosOrig=needlePos; - for (int i=0; iinBuf[i]=(double)buf->data[(unsigned short)(needlePos-displaySize*2+((i*displaySize*2)/FURNACE_FFT_SIZE))]/32768.0; - fft->inBuf[i]*=sin(M_PI*(double)i/(double)FURNACE_FFT_SIZE); + + // first FFT + for (int j=0; j<(FURNACE_FFT_SIZE); j++) { + fft->inBuf[j]=(double)buf->data[(unsigned short)(needlePos-displaySize*2+((j*displaySize*2)/(FURNACE_FFT_SIZE)))]/32768.0; + fft->inBuf[j]*=0.55-0.45*cos(M_PI*(double)j/(double)(FURNACE_FFT_SIZE>>1)); } + //memset(&fft->inBuf[FURNACE_FFT_SIZE>>1],0,sizeof(double)*(FURNACE_FFT_SIZE>>1)); fftw_execute(fft->plan); - for (int i=0; ioutBuf[i][0]-=fft->outBuf[0][0]; - //fft->outBuf[i][1]-=fft->outBuf[0][1]; - fft->outBuf[i][0]/=FURNACE_FFT_SIZE; - fft->outBuf[i][1]/=FURNACE_FFT_SIZE; - fft->outBuf[i][0]=fft->outBuf[i][0]*fft->outBuf[i][0]; - fft->outBuf[i][1]=fft->outBuf[i][1]*fft->outBuf[i][1]; + // auto-correlation and second FFT + for (int j=0; joutBuf[j][0]-=fft->outBuf[0][0]; + //fft->outBuf[j][1]-=fft->outBuf[0][1]; + fft->outBuf[j][0]/=FURNACE_FFT_SIZE; + fft->outBuf[j][1]/=FURNACE_FFT_SIZE; + fft->outBuf[j][0]=fft->outBuf[j][0]*fft->outBuf[j][0]+fft->outBuf[j][1]*fft->outBuf[j][1]; + fft->outBuf[j][1]=0; } - memset(&fft->outBuf[FURNACE_FFT_SIZE],0,sizeof(fftw_complex)*FURNACE_FFT_SIZE); + fft->outBuf[0][0]=0; + fft->outBuf[0][1]=0; + fft->outBuf[1][0]=0; + fft->outBuf[1][1]=0; + //memset(&fft->outBuf[FURNACE_FFT_SIZE],0,sizeof(fftw_complex)*FURNACE_FFT_SIZE); fftw_execute(fft->planI); + + // high-pass + /*for (int j=1; j<(FURNACE_FFT_SIZE>>1); j++) { + fft->corrBuf[j]-=fft->corrBuf[j-1]; + }*/ + + // find size of period + double waveLen=FURNACE_FFT_SIZE; + double waveLenCandL=DBL_MAX; + double waveLenCandH=DBL_MIN; + int waveLenBottom=0; + /* + int waveLenTop=0; + double waveLenCandL2=DBL_MAX;*/ + // find lowest point + for (int j=(FURNACE_FFT_SIZE>>1); j>2; j--) { + if (fft->corrBuf[j]corrBuf[j]; + waveLenBottom=j; + } + } + + // find highest point + for (int j=(FURNACE_FFT_SIZE>>1); j>waveLenBottom; j--) { + if (fft->corrBuf[j]>waveLenCandH) { + waveLenCandH=fft->corrBuf[j]; + waveLen=j; + } + } + /* + // find next lowest point + for (int j=(FURNACE_FFT_SIZE>>1); j>waveLenTop; j--) { + if (fft->corrBuf[j]corrBuf[j]; + waveLen=j-waveLenTop; + } + }*/ + waveLen*=(double)displaySize*2.0/(double)FURNACE_FFT_SIZE; + + // DFT of one period (x_1) + std::complex dft(0,0); + for (int j=0; jdata[(unsigned short)(needlePos-waveLen+j)]/32768.0)*std::exp((-std::complex(0.0,1.0)*2.0*M_PI/(double)waveLen)*(double)j); + } + + // calculate and lock into phase + double phase=(0.5+(atan2(dft.imag(),dft.real())/(2.0*M_PI))); + //phase-=sin(4.0*phase*M_PI)/21.0; + + double maxavg=0.0; + for (unsigned short j=0; j<(FURNACE_FFT_SIZE>>1); j++) { + if (fabs(fft->corrBuf[j]>maxavg)) { + maxavg=fabs(fft->corrBuf[j]); + } + } + if (maxavg>0.0000001) maxavg=0.5/maxavg; if (chanOscWaveCorr) { - //needlePos-=phase; + needlePos-=phase*waveLen; + needlePos-=displaySize/waveLen; } //chanOscPitch[ch]=(float)point/32.0f; - for (unsigned short i=0; icorrBuf[(i*FURNACE_FFT_SIZE)/precision]-fft->corrBuf[FURNACE_FFT_SIZE-1-((i*FURNACE_FFT_SIZE)/precision)]; - if (i>=precision/2) { - y=fft->inBuf[((i-(precision/2))*FURNACE_FFT_SIZE*2)/(precision)]; - } - - waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); - } - - /* needlePos-=displaySize; - for (unsigned short i=0; idata[(unsigned short)(needlePos+(i*displaySize/precision))]/32768.0f; + for (unsigned short j=0; jdata[(unsigned short)(needlePos+(j*displaySize/precision))]/32768.0f; if (minLevel>y) minLevel=y; if (maxLeveldata[(unsigned short)(needlePos+(i*displaySize/precision))]/32768.0f; + for (unsigned short j=0; jdata[(unsigned short)(needlePos+(j*displaySize/precision))]/32768.0f; y-=dcOff; if (y<-0.5f) y=-0.5f; if (y>0.5f) y=0.5f; y*=chanOscAmplify; - waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); - }*/ + waveform[j]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); + } - String cPhase=fmt::sprintf("\n%f",fft->corrBuf[0]); + // FFT debug code! + if (debugFFT) { + for (unsigned short j=0; jcorrBuf[(j*FURNACE_FFT_SIZE)/precision]*maxavg; + if (j>=precision/2) { + y=fft->inBuf[((j-(precision/2))*FURNACE_FFT_SIZE*2)/(precision)]; + } + + waveform[j]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); + } + } + + String cPhase=fmt::sprintf("\n%.1f - %.2f (%.2f %.2f)",waveLen,phase,dft.imag(),dft.real()); dl->AddText(inRect.Min,0xffffffff,cPhase.c_str()); } ImU32 color=ImGui::GetColorU32(chanOscColor); @@ -525,9 +604,9 @@ void FurnaceGUI::drawChanOsc() { String text; bool inFormat=false; - for (char i: chanOscTextFormat) { + for (char j: chanOscTextFormat) { if (inFormat) { - switch (i) { + switch (j) { case 'c': text+=e->getChannelName(ch); break; @@ -568,7 +647,7 @@ void FurnaceGUI::drawChanOsc() { break; } case 'p': { - text+=FurnaceGUI::getSystemPartNumber(e->sysOfChan[ch], e->song.systemFlags[e->dispatchOfChan[ch]]); + text+=FurnaceGUI::getSystemPartNumber(e->sysOfChan[ch],e->song.systemFlags[e->dispatchOfChan[ch]]); break; } case 'S': { @@ -609,19 +688,18 @@ void FurnaceGUI::drawChanOsc() { break; default: text+='%'; - text+=i; + text+=j; break; } inFormat=false; } else { - if (i=='%') { + if (j=='%') { inFormat=true; } else { - text+=i; + text+=j; } } } - dl->AddText(ImLerp(inRect.Min,inRect.Max,ImVec2(0.0f,0.0f)),ImGui::GetColorU32(chanOscTextColor),text.c_str()); } @@ -634,6 +712,9 @@ void FurnaceGUI::drawChanOsc() { if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { chanOscOptions=!chanOscOptions; } + if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { + debugFFT=!debugFFT; + } } ImGui::PopStyleVar(); } diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 8a9521277..7673a19ca 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6273,8 +6273,7 @@ bool FurnaceGUI::init() { pianoView=e->getConfInt("pianoView",pianoView); pianoInputPadMode=e->getConfInt("pianoInputPadMode",pianoInputPadMode); - //chanOscCols=e->getConfInt("chanOscCols",3); - chanOscCols=1; + chanOscCols=e->getConfInt("chanOscCols",3); chanOscAutoColsType=e->getConfInt("chanOscAutoColsType",0); chanOscColorX=e->getConfInt("chanOscColorX",GUI_OSCREF_CENTER); chanOscColorY=e->getConfInt("chanOscColorY",GUI_OSCREF_CENTER); @@ -6912,6 +6911,7 @@ FurnaceGUI::FurnaceGUI(): killGraphics(false), audioEngineChanged(false), settingsChanged(false), + debugFFT(false), vgmExportVersion(0x171), vgmExportTrailingTicks(-1), drawHalt(10), diff --git a/src/gui/gui.h b/src/gui/gui.h index c3b5448d4..b28918fda 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1334,7 +1334,7 @@ class FurnaceGUI { bool displayPendingIns, pendingInsSingle, displayPendingRawSample, snesFilterHex, modTableHex, displayEditString; bool mobileEdit; bool killGraphics; - bool audioEngineChanged, settingsChanged; + bool audioEngineChanged, settingsChanged, debugFFT; bool willExport[DIV_MAX_CHIPS]; int vgmExportVersion; int vgmExportTrailingTicks; From 7ea5f2de07267767efa0696500f93f61dec24c8b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 3 Sep 2023 04:22:17 -0500 Subject: [PATCH 119/126] remove some debug info --- src/gui/chanOsc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 7e7e8efe7..e14b90547 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -583,8 +583,8 @@ void FurnaceGUI::drawChanOsc() { } } - String cPhase=fmt::sprintf("\n%.1f - %.2f (%.2f %.2f)",waveLen,phase,dft.imag(),dft.real()); - dl->AddText(inRect.Min,0xffffffff,cPhase.c_str()); + /*String cPhase=fmt::sprintf("\n%.1f - %.2f (%.2f %.2f)",waveLen,phase,dft.imag(),dft.real()); + dl->AddText(inRect.Min,0xffffffff,cPhase.c_str());*/ } ImU32 color=ImGui::GetColorU32(chanOscColor); if (chanOscUseGrad) { From 83c64aa4b4e6f193d33ac5764f30fa9238143f04 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 3 Sep 2023 17:18:31 -0500 Subject: [PATCH 120/126] fix the crash the hell? one double and suddenly it crashes on Android? --- src/gui/chanOsc.cpp | 54 +++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index e14b90547..cfdb3f9e1 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -23,7 +23,6 @@ #include "imgui.h" #include "imgui_internal.h" #include "misc/cpp/imgui_stdlib.h" -#include #define FURNACE_FFT_SIZE 4096 #define FURNACE_FFT_RATE 80.0 @@ -422,6 +421,15 @@ void FurnaceGUI::drawChanOsc() { fft->corrBuf=(double*)fftw_malloc(FURNACE_FFT_SIZE*sizeof(double)); fft->plan=fftw_plan_dft_r2c_1d(FURNACE_FFT_SIZE,fft->inBuf,fft->outBuf,FFTW_ESTIMATE); fft->planI=fftw_plan_dft_c2r_1d(FURNACE_FFT_SIZE,fft->outBuf,fft->corrBuf,FFTW_ESTIMATE); + if (fft->plan==NULL) { + logE("failed to create plan!"); + } + if (fft->planI==NULL) { + logE("failed to create inverse plan!"); + } + if (fft->inBuf==NULL || fft->outBuf==NULL || fft->corrBuf==NULL) { + logE("failed to create FFT buffers"); + } } int displaySize=(float)(buf->rate)*(chanOscWindowSize/1000.0f); @@ -465,20 +473,16 @@ void FurnaceGUI::drawChanOsc() { float maxLevel=-1.0f; float dcOff=0.0f; unsigned short needlePos=buf->needle; - //unsigned short needlePosOrig=needlePos; // first FFT - for (int j=0; j<(FURNACE_FFT_SIZE); j++) { + for (int j=0; jinBuf[j]=(double)buf->data[(unsigned short)(needlePos-displaySize*2+((j*displaySize*2)/(FURNACE_FFT_SIZE)))]/32768.0; fft->inBuf[j]*=0.55-0.45*cos(M_PI*(double)j/(double)(FURNACE_FFT_SIZE>>1)); } - //memset(&fft->inBuf[FURNACE_FFT_SIZE>>1],0,sizeof(double)*(FURNACE_FFT_SIZE>>1)); fftw_execute(fft->plan); // auto-correlation and second FFT for (int j=0; joutBuf[j][0]-=fft->outBuf[0][0]; - //fft->outBuf[j][1]-=fft->outBuf[0][1]; fft->outBuf[j][0]/=FURNACE_FFT_SIZE; fft->outBuf[j][1]/=FURNACE_FFT_SIZE; fft->outBuf[j][0]=fft->outBuf[j][0]*fft->outBuf[j][0]+fft->outBuf[j][1]*fft->outBuf[j][1]; @@ -488,22 +492,14 @@ void FurnaceGUI::drawChanOsc() { fft->outBuf[0][1]=0; fft->outBuf[1][0]=0; fft->outBuf[1][1]=0; - //memset(&fft->outBuf[FURNACE_FFT_SIZE],0,sizeof(fftw_complex)*FURNACE_FFT_SIZE); fftw_execute(fft->planI); - - // high-pass - /*for (int j=1; j<(FURNACE_FFT_SIZE>>1); j++) { - fft->corrBuf[j]-=fft->corrBuf[j-1]; - }*/ // find size of period - double waveLen=FURNACE_FFT_SIZE; + double waveLen=FURNACE_FFT_SIZE-1; double waveLenCandL=DBL_MAX; double waveLenCandH=DBL_MIN; int waveLenBottom=0; - /* - int waveLenTop=0; - double waveLenCandL2=DBL_MAX;*/ + // find lowest point for (int j=(FURNACE_FFT_SIZE>>1); j>2; j--) { if (fft->corrBuf[j]>1); j>waveLenTop; j--) { - if (fft->corrBuf[j]corrBuf[j]; - waveLen=j-waveLenTop; - } - }*/ waveLen*=(double)displaySize*2.0/(double)FURNACE_FFT_SIZE; // DFT of one period (x_1) - std::complex dft(0,0); + double dft[2]; + dft[0]=0.0; + dft[1]=0.0; for (int j=0; jdata[(unsigned short)(needlePos-waveLen+j)]/32768.0)*std::exp((-std::complex(0.0,1.0)*2.0*M_PI/(double)waveLen)*(double)j); + double one=((double)buf->data[(unsigned short)(needlePos-((int)waveLen)+j)&0xffff]/32768.0); + double two=(double)j*(-2.0*M_PI)/waveLen; + dft[0]+=one*cos(two); + dft[1]+=one*sin(two); } // calculate and lock into phase - double phase=(0.5+(atan2(dft.imag(),dft.real())/(2.0*M_PI))); - //phase-=sin(4.0*phase*M_PI)/21.0; + double phase=(0.5+(atan2(dft[1],dft[0])/(2.0*M_PI))); double maxavg=0.0; for (unsigned short j=0; j<(FURNACE_FFT_SIZE>>1); j++) { @@ -549,7 +541,7 @@ void FurnaceGUI::drawChanOsc() { if (chanOscWaveCorr) { needlePos-=phase*waveLen; - needlePos-=displaySize/waveLen; + //needlePos-=displaySize/waveLen; } //chanOscPitch[ch]=(float)point/32.0f; @@ -571,7 +563,7 @@ void FurnaceGUI::drawChanOsc() { } // FFT debug code! - if (debugFFT) { + /*if (debugFFT) { for (unsigned short j=0; jcorrBuf[(j*FURNACE_FFT_SIZE)/precision]*maxavg; @@ -581,7 +573,7 @@ void FurnaceGUI::drawChanOsc() { waveform[j]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); } - } + }*/ /*String cPhase=fmt::sprintf("\n%.1f - %.2f (%.2f %.2f)",waveLen,phase,dft.imag(),dft.real()); dl->AddText(inRect.Min,0xffffffff,cPhase.c_str());*/ From 90980a306239ff41cd83fdb4a4f53bd2494aca11 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 3 Sep 2023 19:08:30 -0500 Subject: [PATCH 121/126] GUI: center chan osc --- src/gui/chanOsc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index cfdb3f9e1..d9c58fbc6 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -541,7 +541,7 @@ void FurnaceGUI::drawChanOsc() { if (chanOscWaveCorr) { needlePos-=phase*waveLen; - //needlePos-=displaySize/waveLen; + needlePos-=(2*waveLen-fmod(displaySize,waveLen*2))*0.5; } //chanOscPitch[ch]=(float)point/32.0f; From 7a78ec1b6092d1aa886a63ba13f8b78e5d55f656 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 3 Sep 2023 20:09:03 -0500 Subject: [PATCH 122/126] GUI: optimize chan osc don't process FFT if not loud enough don't process DFT if we couldn't determine wave length --- src/gui/chanOsc.cpp | 141 ++++++++++++++++++++------------------------ 1 file changed, 65 insertions(+), 76 deletions(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index d9c58fbc6..637ae7d58 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -469,81 +469,86 @@ void FurnaceGUI::drawChanOsc() { // if you know how, please tell me // initialization + double phase=0.0; float minLevel=1.0f; float maxLevel=-1.0f; float dcOff=0.0f; unsigned short needlePos=buf->needle; + bool loudEnough=false; // first FFT for (int j=0; jinBuf[j]=(double)buf->data[(unsigned short)(needlePos-displaySize*2+((j*displaySize*2)/(FURNACE_FFT_SIZE)))]/32768.0; + if (fft->inBuf[j]>0.001 || fft->inBuf[j]<-0.001) loudEnough=true; fft->inBuf[j]*=0.55-0.45*cos(M_PI*(double)j/(double)(FURNACE_FFT_SIZE>>1)); } - fftw_execute(fft->plan); - // auto-correlation and second FFT - for (int j=0; joutBuf[j][0]/=FURNACE_FFT_SIZE; - fft->outBuf[j][1]/=FURNACE_FFT_SIZE; - fft->outBuf[j][0]=fft->outBuf[j][0]*fft->outBuf[j][0]+fft->outBuf[j][1]*fft->outBuf[j][1]; - fft->outBuf[j][1]=0; - } - fft->outBuf[0][0]=0; - fft->outBuf[0][1]=0; - fft->outBuf[1][0]=0; - fft->outBuf[1][1]=0; - fftw_execute(fft->planI); + // only proceed if not quiet + if (loudEnough) { + fftw_execute(fft->plan); - // find size of period - double waveLen=FURNACE_FFT_SIZE-1; - double waveLenCandL=DBL_MAX; - double waveLenCandH=DBL_MIN; - int waveLenBottom=0; + // auto-correlation and second FFT + for (int j=0; joutBuf[j][0]/=FURNACE_FFT_SIZE; + fft->outBuf[j][1]/=FURNACE_FFT_SIZE; + fft->outBuf[j][0]=fft->outBuf[j][0]*fft->outBuf[j][0]+fft->outBuf[j][1]*fft->outBuf[j][1]; + fft->outBuf[j][1]=0; + } + fft->outBuf[0][0]=0; + fft->outBuf[0][1]=0; + fft->outBuf[1][0]=0; + fft->outBuf[1][1]=0; + fftw_execute(fft->planI); - // find lowest point - for (int j=(FURNACE_FFT_SIZE>>1); j>2; j--) { - if (fft->corrBuf[j]corrBuf[j]; - waveLenBottom=j; + // find size of period + double waveLen=FURNACE_FFT_SIZE-1; + double waveLenCandL=DBL_MAX; + double waveLenCandH=DBL_MIN; + int waveLenBottom=0; + + // find lowest point + for (int j=(FURNACE_FFT_SIZE>>1); j>2; j--) { + if (fft->corrBuf[j]corrBuf[j]; + waveLenBottom=j; + } + } + + // find highest point + for (int j=(FURNACE_FFT_SIZE>>1); j>waveLenBottom; j--) { + if (fft->corrBuf[j]>waveLenCandH) { + waveLenCandH=fft->corrBuf[j]; + waveLen=j; + } + } + + // did we find the period size? + if (waveLen<(FURNACE_FFT_SIZE-32)) { + waveLen*=(double)displaySize*2.0/(double)FURNACE_FFT_SIZE; + + // we got pitch + chanOscPitch[ch]=1.0-pow(waveLen/(double)(FURNACE_FFT_SIZE>>1),2.0); + + // DFT of one period (x_1) + double dft[2]; + dft[0]=0.0; + dft[1]=0.0; + for (int j=0; jdata[(unsigned short)(needlePos-((int)waveLen)+j)&0xffff]/32768.0); + double two=(double)j*(-2.0*M_PI)/waveLen; + dft[0]+=one*cos(two); + dft[1]+=one*sin(two); + } + + // calculate and lock into phase + phase=(0.5+(atan2(dft[1],dft[0])/(2.0*M_PI))); + + if (chanOscWaveCorr) { + needlePos-=phase*waveLen; + needlePos-=(2*waveLen-fmod(displaySize,waveLen*2))*0.5; + } } } - - // find highest point - for (int j=(FURNACE_FFT_SIZE>>1); j>waveLenBottom; j--) { - if (fft->corrBuf[j]>waveLenCandH) { - waveLenCandH=fft->corrBuf[j]; - waveLen=j; - } - } - waveLen*=(double)displaySize*2.0/(double)FURNACE_FFT_SIZE; - - // DFT of one period (x_1) - double dft[2]; - dft[0]=0.0; - dft[1]=0.0; - for (int j=0; jdata[(unsigned short)(needlePos-((int)waveLen)+j)&0xffff]/32768.0); - double two=(double)j*(-2.0*M_PI)/waveLen; - dft[0]+=one*cos(two); - dft[1]+=one*sin(two); - } - - // calculate and lock into phase - double phase=(0.5+(atan2(dft[1],dft[0])/(2.0*M_PI))); - - double maxavg=0.0; - for (unsigned short j=0; j<(FURNACE_FFT_SIZE>>1); j++) { - if (fabs(fft->corrBuf[j]>maxavg)) { - maxavg=fabs(fft->corrBuf[j]); - } - } - if (maxavg>0.0000001) maxavg=0.5/maxavg; - - if (chanOscWaveCorr) { - needlePos-=phase*waveLen; - needlePos-=(2*waveLen-fmod(displaySize,waveLen*2))*0.5; - } - //chanOscPitch[ch]=(float)point/32.0f; needlePos-=displaySize; for (unsigned short j=0; jcorrBuf[(j*FURNACE_FFT_SIZE)/precision]*maxavg; - if (j>=precision/2) { - y=fft->inBuf[((j-(precision/2))*FURNACE_FFT_SIZE*2)/(precision)]; - } - - waveform[j]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); - } - }*/ - - /*String cPhase=fmt::sprintf("\n%.1f - %.2f (%.2f %.2f)",waveLen,phase,dft.imag(),dft.real()); - dl->AddText(inRect.Min,0xffffffff,cPhase.c_str());*/ } ImU32 color=ImGui::GetColorU32(chanOscColor); if (chanOscUseGrad) { From ab7b26a2e79992ce1de0212d51a4bf90f912df43 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 4 Sep 2023 01:18:48 -0500 Subject: [PATCH 123/126] GUI: improve chan osc wave centering --- src/engine/workPool.cpp | 20 +++++++++++++ src/engine/workPool.h | 66 +++++++++++++++++++++++++++++++++++++++++ src/gui/chanOsc.cpp | 8 ++--- 3 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 src/engine/workPool.cpp create mode 100644 src/engine/workPool.h diff --git a/src/engine/workPool.cpp b/src/engine/workPool.cpp new file mode 100644 index 000000000..6c294a7d6 --- /dev/null +++ b/src/engine/workPool.cpp @@ -0,0 +1,20 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2023 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + + #include "workPool.h" \ No newline at end of file diff --git a/src/engine/workPool.h b/src/engine/workPool.h new file mode 100644 index 000000000..9abdfba0e --- /dev/null +++ b/src/engine/workPool.h @@ -0,0 +1,66 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2023 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef _WORKPOOL_H +#define _WORKPOOL_H + +#include +#include +#include +#include + +struct DivWorkThread { + std::mutex lock; + std::thread* thread; + std::condition_variable notify; + bool busy, terminate; + + void run(); + DivWorkThread(): + busy(false) {} +}; + +/** + * this class provides an implementation of a "thread pool" for executing tasks in parallel. + * it is highly recommended to use `new` when allocating a DivWorkPool. + */ +class DivWorkPool { + DivWorkThread* workThreads; + public: + /** + * push a new job to this work pool. + * if all work threads are busy, this will block until one is free. + */ + bool push(); + + /** + * check whether this work pool is busy. + */ + bool busy(); + + /** + * wait for all work threads to finish. + */ + bool wait(); + + DivWorkPool(unsigned int threads=0); + ~DivWorkPool(); +}; + +#endif \ No newline at end of file diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 637ae7d58..4f62c0d15 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -533,9 +533,9 @@ void FurnaceGUI::drawChanOsc() { double dft[2]; dft[0]=0.0; dft[1]=0.0; - for (int j=0; jdata[(unsigned short)(needlePos-((int)waveLen)+j)&0xffff]/32768.0); - double two=(double)j*(-2.0*M_PI)/waveLen; + for (int j=needlePos-1-((displaySize+(int)waveLen)>>1), k=0; kdata[j&0xffff]/32768.0); + double two=(double)k*(-2.0*M_PI)/waveLen; dft[0]+=one*cos(two); dft[1]+=one*sin(two); } @@ -545,7 +545,7 @@ void FurnaceGUI::drawChanOsc() { if (chanOscWaveCorr) { needlePos-=phase*waveLen; - needlePos-=(2*waveLen-fmod(displaySize,waveLen*2))*0.5; + //needlePos-=(2*waveLen-fmod(displaySize,waveLen*2))*0.5; } } } From 60df7e26f44ddf28cebdfbd6472ac04c1295c55d Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 4 Sep 2023 04:14:47 -0500 Subject: [PATCH 124/126] GUI: even more chan osc improvements --- src/gui/chanOsc.cpp | 90 ++++++++++++++++++++++++++++++----------- src/gui/debugWindow.cpp | 1 + 2 files changed, 68 insertions(+), 23 deletions(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 4f62c0d15..6d59879b8 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -500,14 +500,20 @@ void FurnaceGUI::drawChanOsc() { fft->outBuf[1][1]=0; fftw_execute(fft->planI); + // window + for (int j=0; j<(FURNACE_FFT_SIZE>>1); j++) { + fft->corrBuf[j]*=1.0-((double)j/(double)(FURNACE_FFT_SIZE<<1)); + } + // find size of period double waveLen=FURNACE_FFT_SIZE-1; double waveLenCandL=DBL_MAX; double waveLenCandH=DBL_MIN; int waveLenBottom=0; + int waveLenTop=0; // find lowest point - for (int j=(FURNACE_FFT_SIZE>>1); j>2; j--) { + for (int j=(FURNACE_FFT_SIZE>>2); j>2; j--) { if (fft->corrBuf[j]corrBuf[j]; waveLenBottom=j; @@ -515,19 +521,20 @@ void FurnaceGUI::drawChanOsc() { } // find highest point - for (int j=(FURNACE_FFT_SIZE>>1); j>waveLenBottom; j--) { + for (int j=(FURNACE_FFT_SIZE>>1)-1; j>waveLenBottom; j--) { if (fft->corrBuf[j]>waveLenCandH) { waveLenCandH=fft->corrBuf[j]; waveLen=j; } } + waveLenTop=waveLen; // did we find the period size? if (waveLen<(FURNACE_FFT_SIZE-32)) { - waveLen*=(double)displaySize*2.0/(double)FURNACE_FFT_SIZE; - // we got pitch - chanOscPitch[ch]=1.0-pow(waveLen/(double)(FURNACE_FFT_SIZE>>1),2.0); + chanOscPitch[ch]=pow(1.0-(waveLen/(double)(FURNACE_FFT_SIZE>>1)),4.0); + + waveLen*=(double)displaySize*2.0/(double)FURNACE_FFT_SIZE; // DFT of one period (x_1) double dft[2]; @@ -548,23 +555,63 @@ void FurnaceGUI::drawChanOsc() { //needlePos-=(2*waveLen-fmod(displaySize,waveLen*2))*0.5; } } + + // FFT debug code! + if (debugFFT) { + double maxavg=0.0; + for (unsigned short j=0; j<(FURNACE_FFT_SIZE>>1); j++) { + if (fabs(fft->corrBuf[j]>maxavg)) { + maxavg=fabs(fft->corrBuf[j]); + } + } + if (maxavg>0.0000001) maxavg=0.5/maxavg; + + for (unsigned short j=0; jcorrBuf[(j*FURNACE_FFT_SIZE)/precision]*maxavg; + if (j>=precision/2) { + y=fft->inBuf[((j-(precision/2))*FURNACE_FFT_SIZE*2)/(precision)]; + } + + waveform[j]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); + } + String cPhase=fmt::sprintf("\n%.1f (b: %d t: %d)",waveLen,waveLenBottom,waveLenTop); + dl->AddText(inRect.Min,0xffffffff,cPhase.c_str()); + + dl->AddLine( + ImLerp(inRect.Min,inRect.Max,ImVec2((double)waveLenBottom/(double)FURNACE_FFT_SIZE,0.0)), + ImLerp(inRect.Min,inRect.Max,ImVec2((double)waveLenBottom/(double)FURNACE_FFT_SIZE,1.0)), + 0xffffff00 + ); + dl->AddLine( + ImLerp(inRect.Min,inRect.Max,ImVec2((double)waveLenTop/(double)FURNACE_FFT_SIZE,0.0)), + ImLerp(inRect.Min,inRect.Max,ImVec2((double)waveLenTop/(double)FURNACE_FFT_SIZE,1.0)), + 0xff00ff00 + ); + } + } else { + if (debugFFT) { + dl->AddText(inRect.Min,0xffffffff,"\nquiet"); + } } - needlePos-=displaySize; - for (unsigned short j=0; jdata[(unsigned short)(needlePos+(j*displaySize/precision))]/32768.0f; - if (minLevel>y) minLevel=y; - if (maxLeveldata[(unsigned short)(needlePos+(j*displaySize/precision))]/32768.0f; - y-=dcOff; - if (y<-0.5f) y=-0.5f; - if (y>0.5f) y=0.5f; - y*=chanOscAmplify; - waveform[j]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); + if (!debugFFT || !loudEnough) { + needlePos-=displaySize; + for (unsigned short j=0; jdata[(unsigned short)(needlePos+(j*displaySize/precision))]/32768.0f; + if (minLevel>y) minLevel=y; + if (maxLeveldata[(unsigned short)(needlePos+(j*displaySize/precision))]/32768.0f; + y-=dcOff; + if (y<-0.5f) y=-0.5f; + if (y>0.5f) y=0.5f; + y*=chanOscAmplify; + waveform[j]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); + } } } ImU32 color=ImGui::GetColorU32(chanOscColor); @@ -693,9 +740,6 @@ void FurnaceGUI::drawChanOsc() { if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) { chanOscOptions=!chanOscOptions; } - if (ImGui::IsItemClicked(ImGuiMouseButton_Left)) { - debugFFT=!debugFFT; - } } ImGui::PopStyleVar(); } diff --git a/src/gui/debugWindow.cpp b/src/gui/debugWindow.cpp index b3c07b071..916204030 100644 --- a/src/gui/debugWindow.cpp +++ b/src/gui/debugWindow.cpp @@ -212,6 +212,7 @@ void FurnaceGUI::drawDebug() { } if (ImGui::TreeNode("Oscilloscope Debug")) { int c=0; + ImGui::Checkbox("FFT debug view",&debugFFT); for (int i=0; isong.systemLen; i++) { DivSystem system=e->song.system[i]; if (e->getChannelCount(system)>0) { From 2ca5856800dd5107a237b184a415cdcf4a4f8fd4 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 4 Sep 2023 04:25:21 -0500 Subject: [PATCH 125/126] a fix --- src/gui/chanOsc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 6d59879b8..7f0949dd5 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -540,7 +540,7 @@ void FurnaceGUI::drawChanOsc() { double dft[2]; dft[0]=0.0; dft[1]=0.0; - for (int j=needlePos-1-((displaySize+(int)waveLen)>>1), k=0; k>1)-(int)waveLen, k=0; kdata[j&0xffff]/32768.0); double two=(double)k*(-2.0*M_PI)/waveLen; dft[0]+=one*cos(two); From ad7b4f61b5d60cdf4375c953e4df0e4550b23090 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 4 Sep 2023 15:02:19 -0500 Subject: [PATCH 126/126] YM2612: fix missing 30xx effect --- src/engine/sysDef.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 37fcbf87f..6eba35f2a 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -454,10 +454,11 @@ void DivEngine::registerSystems() { {0x18, {DIV_CMD_FM_EXTCH, "18xx: Toggle extended channel 3 mode"}}, }); - EffectHandlerMap fmOPN2EffectHandlerMap={ + EffectHandlerMap fmOPN2EffectHandlerMap(fmEffectHandlerMap); + fmOPN2EffectHandlerMap.insert({ {0x17, {DIV_CMD_SAMPLE_MODE, "17xx: Toggle PCM mode (LEGACY)"}}, {0xdf, {DIV_CMD_SAMPLE_DIR, "DFxx: Set sample playback direction (0: normal; 1: reverse)"}}, - }; + }); EffectHandlerMap fmOPLDrumsEffectHandlerMap(fmEffectHandlerMap); fmOPLDrumsEffectHandlerMap.insert({