1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Added several new features: support for AudioUnit v3, new simplified JUCE module format, deleted the Introjucer and replaced it by the Projucer, various improvements for exporting of iOS and Android projects.

This commit is contained in:
Timur Doumler 2016-04-06 18:31:24 +01:00
parent 9eb54629f2
commit 70949aa0c6
1979 changed files with 130149 additions and 129257 deletions

View file

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<JUCERPROJECT id="NaPIav" name="AUv3Synth" projectType="audioplug" version="1.0.0"
bundleIdentifier="com.roli.development.AUv3Synth" includeBinaryInAppConfig="1"
buildVST="1" buildVST3="1" buildAU="0" buildAUv3="1" buildRTAS="0"
buildAAX="0" pluginName="AUv3 Synth" pluginDesc="AUv3 Synth"
pluginManufacturer="ROLI Ltd." pluginManufacturerCode="ROLI"
pluginCode="AUv3" pluginChannelConfigs="{0,2}" pluginIsSynth="1"
pluginWantsMidiIn="1" pluginProducesMidiOut="0" pluginIsMidiEffectPlugin="0"
pluginEditorRequiresKeys="0" pluginAUExportPrefix="AUv3SynthAU"
pluginRTASCategory="" aaxIdentifier="com.roli.development.AUv3Synth"
pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.0"
buildStandalone="1">
<MAINGROUP id="h0gx6L" name="AUv3Synth">
<GROUP id="{9DC59668-E6DF-876C-EB58-DDA88D152162}" name="Source">
<GROUP id="{CDDEC2D7-B8D6-2849-AC85-2363EAD0449C}" name="BinaryData">
<FILE id="IIURe2" name="power.png" compile="0" resource="0" file="Source/BinaryData/power.png"
xcodeResource="1"/>
<FILE id="fCMFhA" name="proaudio.path" compile="0" resource="1" file="Source/BinaryData/proaudio.path"/>
<FILE id="X8KTzd" name="singing.ogg" compile="0" resource="1" file="Source/BinaryData/singing.ogg"/>
</GROUP>
<FILE id="SfLsx7" name="MaterialLookAndFeel.h" compile="0" resource="0"
file="Source/MaterialLookAndFeel.h"/>
<FILE id="iw5EFr" name="AUv3SynthEditor.h" compile="0" resource="0"
file="Source/AUv3SynthEditor.h"/>
<FILE id="WdW8gj" name="AUv3SynthProcessor.cpp" compile="1" resource="0"
file="Source/AUv3SynthProcessor.cpp"/>
</GROUP>
</MAINGROUP>
<EXPORTFORMATS>
<XCODE_IPHONE targetFolder="Builds/iOS" vstFolder="" vst3Folder="" iosScreenOrientation="portraitlandscape"
iosDevelopmentTeamID="">
<CONFIGURATIONS>
<CONFIGURATION name="Debug" iosCompatibility="default" isDebug="1" optimisation="1"
targetName="AUv3Synth" codeSigningIdentity=""/>
<CONFIGURATION name="Release" iosCompatibility="default" isDebug="0" optimisation="3"
targetName="AUv3Synth" codeSigningIdentity=""/>
</CONFIGURATIONS>
<MODULEPATHS>
<MODULEPATH id="juce_core" path="../../modules"/>
<MODULEPATH id="juce_events" path="../../modules"/>
<MODULEPATH id="juce_graphics" path="../../modules"/>
<MODULEPATH id="juce_data_structures" path="../../modules"/>
<MODULEPATH id="juce_gui_basics" path="../../modules"/>
<MODULEPATH id="juce_audio_basics" path="../../modules"/>
<MODULEPATH id="juce_audio_formats" path="../../modules"/>
<MODULEPATH id="juce_audio_processors" path="../../modules"/>
<MODULEPATH id="juce_audio_plugin_client" path="../../modules"/>
<MODULEPATH id="juce_audio_utils" path="../../modules"/>
<MODULEPATH id="juce_audio_devices" path="../../modules"/>
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
</MODULEPATHS>
</XCODE_IPHONE>
<XCODE_MAC targetFolder="Builds/MacOSX" iosDevelopmentTeamID="" vstFolder=""
vst3Folder="">
<CONFIGURATIONS>
<CONFIGURATION name="Debug" osxSDK="default" osxCompatibility="default" osxArchitecture="default"
isDebug="1" optimisation="1" targetName="AUv3Synth"/>
<CONFIGURATION name="Release" osxSDK="default" osxCompatibility="default" osxArchitecture="default"
isDebug="0" optimisation="3" targetName="AUv3Synth"/>
</CONFIGURATIONS>
<MODULEPATHS>
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
<MODULEPATH id="juce_gui_basics" path="../../modules"/>
<MODULEPATH id="juce_graphics" path="../../modules"/>
<MODULEPATH id="juce_events" path="../../modules"/>
<MODULEPATH id="juce_data_structures" path="../../modules"/>
<MODULEPATH id="juce_core" path="../../modules"/>
<MODULEPATH id="juce_audio_utils" path="../../modules"/>
<MODULEPATH id="juce_audio_processors" path="../../modules"/>
<MODULEPATH id="juce_audio_plugin_client" path="../../modules"/>
<MODULEPATH id="juce_audio_formats" path="../../modules"/>
<MODULEPATH id="juce_audio_devices" path="../../modules"/>
<MODULEPATH id="juce_audio_basics" path="../../modules"/>
</MODULEPATHS>
</XCODE_MAC>
</EXPORTFORMATS>
<MODULES>
<MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/>
<MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/>
<MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/>
<MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"/>
<MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0"/>
<MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0"/>
<MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/>
<MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/>
<MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/>
<MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/>
<MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/>
<MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/>
</MODULES>
<JUCEOPTIONS JUCE_QUICKTIME="disabled"/>
</JUCERPROJECT>

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>com.apple.security.app-sandbox</key> <true/></dict></plist>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist>
<dict>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleName</key>
<string>AUv3Synth</string>
<key>CFBundleDisplayName</key>
<string>AUv3Synth</string>
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>NSHumanReadableCopyright</key>
<string></string>
<key>NSHighResolutionCapable</key>
<true/>
<key>NSExtension</key>
<dict>
<key>NSExtensionPrincipalClass</key>
<string>AUv3SynthAUFactoryAUv3</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.AudioUnit-UI</string>
<key>NSExtensionAttributes</key>
<dict>
<key>AudioComponents</key>
<array>
<dict>
<key>name</key>
<string>ROLI Ltd.: AUv3 Synth</string>
<key>description</key>
<string>AUv3 Synth</string>
<key>factoryFunction</key>
<string>AUv3SynthAUFactoryAUv3</string>
<key>manufacturer</key>
<string>ROLI</string>
<key>type</key>
<string>aumu</string>
<key>subtype</key>
<string>AUv3</string>
<key>version</key>
<integer>65536</integer>
<key>sandboxSafe</key>
<true/>
<key>tags</key>
<array>
<string>Synth</string>
</array>
</dict>
</array>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist>
<dict>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleName</key>
<string>AUv3Synth</string>
<key>CFBundleDisplayName</key>
<string>AUv3Synth</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>NSHumanReadableCopyright</key>
<string></string>
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist>
<dict>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleName</key>
<string>AUv3Synth</string>
<key>CFBundleDisplayName</key>
<string>AUv3Synth</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>NSHumanReadableCopyright</key>
<string></string>
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist>
<dict>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleName</key>
<string>AUv3Synth</string>
<key>CFBundleDisplayName</key>
<string>AUv3Synth</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>NSHumanReadableCopyright</key>
<string></string>
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist>
<dict>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleName</key>
<string>AUv3Synth</string>
<key>CFBundleDisplayName</key>
<string>AUv3Synth</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>NSHumanReadableCopyright</key>
<string></string>
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,128 @@
{
"images": [
{
"idiom": "iphone",
"size": "29x29",
"filename": "Icon-29.png",
"scale": "1x"
},
{
"idiom": "iphone",
"size": "29x29",
"filename": "Icon-29@2x.png",
"scale": "2x"
},
{
"idiom": "iphone",
"size": "29x29",
"filename": "Icon-29@3x.png",
"scale": "3x"
},
{
"idiom": "iphone",
"size": "40x40",
"filename": "Icon-Spotlight-40@2x.png",
"scale": "2x"
},
{
"idiom": "iphone",
"size": "40x40",
"filename": "Icon-Spotlight-40@3x.png",
"scale": "3x"
},
{
"idiom": "iphone",
"size": "57x57",
"filename": "Icon.png",
"scale": "1x"
},
{
"idiom": "iphone",
"size": "57x57",
"filename": "Icon@2x.png",
"scale": "2x"
},
{
"idiom": "iphone",
"size": "60x60",
"filename": "Icon-60@2x.png",
"scale": "2x"
},
{
"idiom": "iphone",
"size": "60x60",
"filename": "Icon-@3x.png",
"scale": "3x"
},
{
"idiom": "ipad",
"size": "29x29",
"filename": "Icon-Small-1.png",
"scale": "1x"
},
{
"idiom": "ipad",
"size": "29x29",
"filename": "Icon-Small@2x-1.png",
"scale": "2x"
},
{
"idiom": "ipad",
"size": "40x40",
"filename": "Icon-Spotlight-40.png",
"scale": "1x"
},
{
"idiom": "ipad",
"size": "40x40",
"filename": "Icon-Spotlight-40@2x-1.png",
"scale": "2x"
},
{
"idiom": "ipad",
"size": "50x50",
"filename": "Icon-Small-50.png",
"scale": "1x"
},
{
"idiom": "ipad",
"size": "50x50",
"filename": "Icon-Small-50@2x.png",
"scale": "2x"
},
{
"idiom": "ipad",
"size": "72x72",
"filename": "Icon-72.png",
"scale": "1x"
},
{
"idiom": "ipad",
"size": "72x72",
"filename": "Icon-72@2x.png",
"scale": "2x"
},
{
"idiom": "ipad",
"size": "76x76",
"filename": "Icon-76.png",
"scale": "1x"
},
{
"idiom": "ipad",
"size": "76x76",
"filename": "Icon-76@2x.png",
"scale": "2x"
},
{
"idiom": "ipad",
"size": "83.5x83.5",
"filename": "Icon-83.5@2x.png",
"scale": "2x"
}
],
"info": {
"version": 1,
"author": "xcode"
}
}

View file

@ -0,0 +1,57 @@
{
"images": [
{
"orientation": "portrait",
"idiom": "iphone",
"extent": "full-screen",
"minimum-system-version": "7.0",
"scale": "2x",
"filename": "LaunchImage-iphone-2x.png"
},
{
"orientation": "portrait",
"idiom": "iphone",
"extent": "full-screen",
"minimum-system-version": "7.0",
"scale": "2x",
"filename": "LaunchImage-iphone-retina4.png",
"subtype": "retina4"
},
{
"orientation": "portrait",
"idiom": "ipad",
"extent": "full-screen",
"minimum-system-version": "7.0",
"scale": "1x",
"filename": "LaunchImage-ipad-portrait-1x.png"
},
{
"orientation": "landscape",
"idiom": "ipad",
"extent": "full-screen",
"minimum-system-version": "7.0",
"scale": "1x",
"filename": "LaunchImage-ipad-landscape-1x.png"
},
{
"orientation": "portrait",
"idiom": "ipad",
"extent": "full-screen",
"minimum-system-version": "7.0",
"scale": "2x",
"filename": "LaunchImage-ipad-portrait-2x.png"
},
{
"orientation": "landscape",
"idiom": "ipad",
"extent": "full-screen",
"minimum-system-version": "7.0",
"scale": "2x",
"filename": "LaunchImage-ipad-landscape-2x.png"
}
],
"info": {
"version": 1,
"author": "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist>
<dict>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleName</key>
<string>AUv3Synth</string>
<key>CFBundleDisplayName</key>
<string>AUv3Synth</string>
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>NSHumanReadableCopyright</key>
<string></string>
<key>NSHighResolutionCapable</key>
<true/>
<key>NSExtension</key>
<dict>
<key>NSExtensionPrincipalClass</key>
<string>AUv3SynthAUFactoryAUv3</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.AudioUnit-UI</string>
<key>NSExtensionAttributes</key>
<dict>
<key>AudioComponents</key>
<array>
<dict>
<key>name</key>
<string>ROLI Ltd.: AUv3 Synth</string>
<key>description</key>
<string>AUv3 Synth</string>
<key>factoryFunction</key>
<string>AUv3SynthAUFactoryAUv3</string>
<key>manufacturer</key>
<string>ROLI</string>
<key>type</key>
<string>aumu</string>
<key>subtype</key>
<string>AUv3</string>
<key>version</key>
<integer>65536</integer>
<key>sandboxSafe</key>
<true/>
<key>tags</key>
<array>
<string>Synth</string>
</array>
</dict>
</array>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist>
<dict>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleName</key>
<string>AUv3Synth</string>
<key>CFBundleDisplayName</key>
<string>AUv3Synth</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>NSHumanReadableCopyright</key>
<string></string>
<key>NSHighResolutionCapable</key>
<true/>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIBackgroundModes</key>
<array/>
</dict>
</plist>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist>
<dict>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleName</key>
<string>AUv3Synth</string>
<key>CFBundleDisplayName</key>
<string>AUv3Synth</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>NSHumanReadableCopyright</key>
<string></string>
<key>NSHighResolutionCapable</key>
<true/>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIBackgroundModes</key>
<array/>
</dict>
</plist>

View file

@ -4,20 +4,20 @@
project - if you alter its contents, your changes may be overwritten!
There's a section below where you can add your own custom code safely, and the
Introjucer will preserve the contents of that block, but the best way to change
any of these definitions is by using the Introjucer's project settings.
Projucer will preserve the contents of that block, but the best way to change
any of these definitions is by using the Projucer's project settings.
Any commented-out settings will assume their default values.
*/
#ifndef __JUCE_APPCONFIG_AX3KPE__
#define __JUCE_APPCONFIG_AX3KPE__
#ifndef __JUCE_APPCONFIG_NAPIAV__
#define __JUCE_APPCONFIG_NAPIAV__
//==============================================================================
// [BEGIN_USER_CODE_SECTION]
// (You can add your own code in this section, and the Introjucer will not overwrite it)
// (You can add your own code in this section, and the Projucer will not overwrite it)
// [END_USER_CODE_SECTION]
@ -27,21 +27,25 @@
#define JUCE_MODULE_AVAILABLE_juce_audio_formats 1
#define JUCE_MODULE_AVAILABLE_juce_audio_plugin_client 1
#define JUCE_MODULE_AVAILABLE_juce_audio_processors 1
#define JUCE_MODULE_AVAILABLE_juce_audio_utils 1
#define JUCE_MODULE_AVAILABLE_juce_core 1
#define JUCE_MODULE_AVAILABLE_juce_cryptography 1
#define JUCE_MODULE_AVAILABLE_juce_data_structures 1
#define JUCE_MODULE_AVAILABLE_juce_events 1
#define JUCE_MODULE_AVAILABLE_juce_graphics 1
#define JUCE_MODULE_AVAILABLE_juce_gui_basics 1
#define JUCE_MODULE_AVAILABLE_juce_gui_extra 1
#define JUCE_MODULE_AVAILABLE_juce_opengl 1
#define JUCE_MODULE_AVAILABLE_juce_video 1
//==============================================================================
#ifndef JUCE_STANDALONE_APPLICATION
#define JUCE_STANDALONE_APPLICATION 0
#ifdef JucePlugin_Build_Standalone
#define JUCE_STANDALONE_APPLICATION JucePlugin_Build_Standalone
#else
#define JUCE_STANDALONE_APPLICATION 0
#endif
#endif
#define JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED 1
//==============================================================================
// juce_audio_devices flags:
@ -187,70 +191,57 @@
//#define JUCE_ENABLE_LIVE_CONSTANT_EDITOR
#endif
//==============================================================================
// juce_video flags:
#ifndef JUCE_DIRECTSHOW
//#define JUCE_DIRECTSHOW
#endif
#ifndef JUCE_MEDIAFOUNDATION
//#define JUCE_MEDIAFOUNDATION
#endif
#ifndef JUCE_QUICKTIME
#define JUCE_QUICKTIME 0
#endif
#ifndef JUCE_USE_CAMERA
//#define JUCE_USE_CAMERA
#endif
//==============================================================================
// Audio plugin settings..
#ifndef JucePlugin_Build_VST
#define JucePlugin_Build_VST 0
#define JucePlugin_Build_VST 1
#endif
#ifndef JucePlugin_Build_VST3
#define JucePlugin_Build_VST3 1
#endif
#ifndef JucePlugin_Build_AU
#define JucePlugin_Build_AU 1
#define JucePlugin_Build_AU 0
#endif
#ifndef JucePlugin_Build_AUv3
#define JucePlugin_Build_AUv3 1
#endif
#ifndef JucePlugin_Build_RTAS
#define JucePlugin_Build_RTAS 0
#endif
#ifndef JucePlugin_Build_AAX
#define JucePlugin_Build_AAX 1
#define JucePlugin_Build_AAX 0
#endif
#ifndef JucePlugin_Build_STANDALONE
#define JucePlugin_Build_STANDALONE 1
#endif
#ifndef JucePlugin_Name
#define JucePlugin_Name "Spatializer"
#define JucePlugin_Name "AUv3 Synth"
#endif
#ifndef JucePlugin_Desc
#define JucePlugin_Desc "Spatializer"
#define JucePlugin_Desc "AUv3 Synth"
#endif
#ifndef JucePlugin_Manufacturer
#define JucePlugin_Manufacturer "ROLI Ltd."
#endif
#ifndef JucePlugin_ManufacturerWebsite
#define JucePlugin_ManufacturerWebsite "www.juce.com"
#define JucePlugin_ManufacturerWebsite ""
#endif
#ifndef JucePlugin_ManufacturerEmail
#define JucePlugin_ManufacturerEmail "info@juce.com"
#define JucePlugin_ManufacturerEmail ""
#endif
#ifndef JucePlugin_ManufacturerCode
#define JucePlugin_ManufacturerCode 'ROLI'
#endif
#ifndef JucePlugin_PluginCode
#define JucePlugin_PluginCode 'Spce'
#define JucePlugin_PluginCode 'AUv3'
#endif
#ifndef JucePlugin_IsSynth
#define JucePlugin_IsSynth 0
#define JucePlugin_IsSynth 1
#endif
#ifndef JucePlugin_WantsMidiInput
#define JucePlugin_WantsMidiInput 0
#define JucePlugin_WantsMidiInput 1
#endif
#ifndef JucePlugin_ProducesMidiOutput
#define JucePlugin_ProducesMidiOutput 0
@ -274,28 +265,28 @@
#define JucePlugin_VSTUniqueID JucePlugin_PluginCode
#endif
#ifndef JucePlugin_VSTCategory
#define JucePlugin_VSTCategory kPlugCategEffect
#define JucePlugin_VSTCategory kPlugCategSynth
#endif
#ifndef JucePlugin_AUMainType
#define JucePlugin_AUMainType kAudioUnitType_Effect
#define JucePlugin_AUMainType kAudioUnitType_MusicDevice
#endif
#ifndef JucePlugin_AUSubType
#define JucePlugin_AUSubType JucePlugin_PluginCode
#endif
#ifndef JucePlugin_AUExportPrefix
#define JucePlugin_AUExportPrefix SpatializerAU
#define JucePlugin_AUExportPrefix AUv3SynthAU
#endif
#ifndef JucePlugin_AUExportPrefixQuoted
#define JucePlugin_AUExportPrefixQuoted "SpatializerAU"
#define JucePlugin_AUExportPrefixQuoted "AUv3SynthAU"
#endif
#ifndef JucePlugin_AUManufacturerCode
#define JucePlugin_AUManufacturerCode JucePlugin_ManufacturerCode
#endif
#ifndef JucePlugin_CFBundleIdentifier
#define JucePlugin_CFBundleIdentifier com.ROLI.Spatializer
#define JucePlugin_CFBundleIdentifier com.roli.development.AUv3Synth
#endif
#ifndef JucePlugin_RTASCategory
#define JucePlugin_RTASCategory ePlugInCategory_None
#define JucePlugin_RTASCategory ePlugInCategory_SWGenerators
#endif
#ifndef JucePlugin_RTASManufacturerCode
#define JucePlugin_RTASManufacturerCode JucePlugin_ManufacturerCode
@ -310,7 +301,7 @@
#define JucePlugin_RTASDisableMultiMono 0
#endif
#ifndef JucePlugin_AAXIdentifier
#define JucePlugin_AAXIdentifier com.ROLI.Spatializer
#define JucePlugin_AAXIdentifier com.roli.development.AUv3Synth
#endif
#ifndef JucePlugin_AAXManufacturerCode
#define JucePlugin_AAXManufacturerCode JucePlugin_ManufacturerCode
@ -319,7 +310,7 @@
#define JucePlugin_AAXProductId JucePlugin_PluginCode
#endif
#ifndef JucePlugin_AAXCategory
#define JucePlugin_AAXCategory AAX_ePlugInCategory_SoundField
#define JucePlugin_AAXCategory AAX_ePlugInCategory_Dynamics
#endif
#ifndef JucePlugin_AAXDisableBypass
#define JucePlugin_AAXDisableBypass 0
@ -327,5 +318,14 @@
#ifndef JucePlugin_AAXDisableMultiMono
#define JucePlugin_AAXDisableMultiMono 0
#endif
#ifndef JucePlugin_MaxNumInputChannels
#define JucePlugin_MaxNumInputChannels 0
#endif
#ifndef JucePlugin_MaxNumOutputChannels
#define JucePlugin_MaxNumOutputChannels 2
#endif
#ifndef JucePlugin_PreferredChannelConfigurations
#define JucePlugin_PreferredChannelConfigurations {0,2}
#endif
#endif // __JUCE_APPCONFIG_AX3KPE__
#endif // __JUCE_APPCONFIG_NAPIAV__

View file

@ -0,0 +1,315 @@
/* ==================================== JUCER_BINARY_RESOURCE ====================================
This is an auto-generated file: Any edits you make may be overwritten!
*/
namespace BinaryData
{
//================== proaudio.path ==================
static const unsigned char temp_binary_data_0[] =
{ 110,109,94,122,189,65,86,174,63,67,108,152,230,10,67,178,93,132,66,108,242,130,195,66,178,93,132,66,108,152,230,10,67,0,0,0,0,108,22,94,178,66,0,0,0,0,108,210,215,29,66,68,75,189,66,108,172,33,146,66,68,75,189,66,99,109,0,64,144,66,137,57,121,65,98,65,
235,252,65,200,166,160,65,0,0,0,0,30,34,90,66,0,0,0,0,49,117,192,66,98,0,0,0,0,164,28,244,66,146,92,66,65,123,22,17,67,0,24,248,65,24,246,31,67,108,0,20,19,66,152,165,20,67,98,144,78,175,65,77,16,8,67,0,216,71,65,181,140,234,66,0,216,71,65,49,117,192,
66,98,0,216,71,65,217,128,127,66,69,240,10,66,47,102,19,66,0,150,129,66,196,64,236,65,108,0,64,144,66,137,57,121,65,99,109,0,10,1,67,196,28,246,65,108,0,237,244,66,98,92,37,66,98,112,181,0,67,130,44,56,66,101,29,6,67,18,42,79,66,128,112,10,67,98,76,105,
66,108,128,225,24,67,98,76,105,66,98,8,26,19,67,116,188,61,66,81,235,10,67,112,11,24,66,0,10,1,67,197,28,246,65,99,109,128,72,26,67,98,60,116,66,108,0,18,17,67,49,49,142,66,98,122,31,20,67,138,193,157,66,0,209,21,67,138,178,174,66,0,209,21,67,49,117,
192,66,98,0,209,21,67,193,55,6,67,176,74,238,66,152,227,36,67,255,76,162,66,152,227,36,67,98,152,174,148,66,152,227,36,67,199,139,135,66,181,227,35,67,254,69,118,66,152,13,34,67,108,254,113,81,66,24,21,44,67,98,230,66,117,66,56,126,47,67,144,7,142,66,
24,97,49,67,255,76,162,66,24,97,49,67,98,54,203,251,66,24,97,49,67,0,79,34,67,81,248,12,67,0,79,34,67,48,117,192,66,98,0,79,34,67,4,70,167,66,172,108,31,67,253,104,143,66,128,72,26,67,96,60,116,66,99,101,0,0,0,0 };
const char* proaudio_path = (const char*) temp_binary_data_0;
//================== singing.ogg ==================
static const unsigned char temp_binary_data_1[] =
{ 79,103,103,83,0,2,0,0,0,0,0,0,0,0,153,3,97,43,0,0,0,0,80,169,198,253,1,30,1,118,111,114,98,105,115,0,0,0,0,1,68,172,0,0,0,0,0,0,0,119,1,0,0,0,0,0,184,1,79,103,103,83,0,0,0,0,0,0,0,0,0,0,153,3,97,43,1,0,0,0,7,4,119,201,16,63,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,201,3,118,111,114,98,105,115,47,0,0,0,88,105,112,104,46,79,114,103,32,108,105,98,86,111,114,98,105,115,32,73,32,50,48,49,52,48,49,50,50,32,40,84,117,114,112,97,107,195,164,114,195,164,106,105,105,110,41,0,0,0,0,1,5,118,111,
114,98,105,115,41,66,67,86,1,0,8,0,0,0,49,76,32,197,128,208,144,85,0,0,16,0,0,96,36,41,14,147,102,73,41,165,148,161,40,121,152,148,72,73,41,165,148,197,48,137,152,148,137,197,24,99,140,49,198,24,99,140,49,198,24,99,140,32,52,100,21,0,0,4,0,128,40,9,142,
163,230,73,106,206,57,103,24,39,142,114,160,57,105,78,56,167,32,7,138,81,224,57,9,194,245,38,99,110,166,180,166,107,110,206,41,37,8,13,89,5,0,0,2,0,64,72,33,133,20,82,72,33,133,20,98,136,33,134,24,98,136,33,135,28,114,200,33,167,156,114,10,42,168,160,
130,10,50,200,32,131,76,50,233,164,147,78,58,233,168,163,142,58,234,40,180,208,66,11,45,180,210,74,76,49,213,86,99,174,189,6,93,124,115,206,57,231,156,115,206,57,231,156,115,206,9,66,67,86,1,0,32,0,0,4,66,6,25,100,16,66,8,33,133,20,82,136,41,166,152,
114,10,50,200,128,208,144,85,0,0,32,0,128,0,0,0,0,71,145,20,73,177,20,203,177,28,205,209,36,79,242,44,81,19,53,209,51,69,83,84,77,85,85,85,85,117,93,87,118,101,215,118,117,215,118,125,89,152,133,91,184,125,89,184,133,91,216,133,93,247,133,97,24,134,97,
24,134,97,24,134,97,248,125,223,247,125,223,247,125,32,52,100,21,0,32,1,0,160,35,57,150,227,41,162,34,26,162,226,57,162,3,132,134,172,2,0,100,0,0,4,0,32,9,146,34,41,146,163,73,166,102,106,174,105,155,182,104,171,182,109,203,178,44,203,178,12,132,134,
172,2,0,0,1,0,4,0,0,0,0,0,160,105,154,166,105,154,166,105,154,166,105,154,166,105,154,166,105,154,166,105,154,102,89,150,101,89,150,101,89,150,101,89,150,101,89,150,101,89,150,101,89,150,101,89,150,101,89,150,101,89,150,101,89,150,101,89,150,101,89,64,
104,200,42,0,64,2,0,64,199,113,28,199,113,36,69,82,36,199,114,44,7,8,13,89,5,0,200,0,0,8,0,64,82,44,197,114,52,71,115,52,199,115,60,199,115,60,71,116,68,201,148,76,205,244,76,15,8,13,89,5,0,0,2,0,8,0,0,0,0,0,64,49,28,197,113,28,201,209,36,79,82,45,211,
114,53,87,115,61,215,115,77,215,117,93,87,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,129,208,144,85,0,0,4,0,0,33,157,102,150,106,128,8,51,144,97,32,52,100,21,0,128,0,0,0,24,161,8,67,12,8,13,89,
5,0,0,4,0,0,136,161,228,32,154,208,154,243,205,57,14,154,229,160,169,20,155,211,193,137,84,155,39,185,169,152,155,115,206,57,231,156,108,206,25,227,156,115,206,41,202,153,197,160,153,208,154,115,206,73,12,154,165,160,153,208,154,115,206,121,18,155,7,
173,169,210,154,115,206,25,231,156,14,198,25,97,156,115,206,105,210,154,7,169,217,88,155,115,206,89,208,154,230,168,185,20,155,115,206,137,148,155,39,181,185,84,155,115,206,57,231,156,115,206,57,231,156,115,206,169,94,156,206,193,57,225,156,115,206,137,
218,155,107,185,9,93,156,115,206,249,100,156,238,205,9,225,156,115,206,57,231,156,115,206,57,231,156,115,206,9,66,67,86,1,0,64,0,0,4,97,216,24,198,157,130,32,125,142,6,98,20,33,166,33,147,30,116,143,14,147,160,49,200,41,164,30,141,142,70,74,169,131,80,
82,25,39,165,116,130,208,144,85,0,0,32,0,0,132,16,82,72,33,133,20,82,72,33,133,20,82,72,33,134,24,98,136,33,167,156,114,10,42,168,164,146,138,42,202,40,179,204,50,203,44,179,204,50,203,172,195,206,58,235,176,195,16,67,12,49,180,210,74,44,53,213,86,99,
141,181,230,158,115,174,57,72,107,165,181,214,90,43,165,148,82,74,41,165,32,52,100,21,0,0,2,0,64,32,100,144,65,6,25,133,20,82,72,33,134,152,114,202,41,167,160,130,10,8,13,89,5,0,0,2,0,8,0,0,0,240,36,207,17,29,209,17,29,209,17,29,209,17,29,209,17,29,207,
241,28,81,18,37,81,18,37,209,50,45,83,51,61,85,84,85,87,118,109,89,151,117,219,183,133,93,216,117,223,215,125,223,215,141,95,23,134,101,89,150,101,89,150,101,89,150,101,89,150,101,89,150,101,9,66,67,86,1,0,32,0,0,0,66,8,33,132,20,82,72,33,133,148,98,
140,49,199,156,131,78,66,9,129,208,144,85,0,0,32,0,128,0,0,0,0,71,113,20,199,145,28,201,145,36,75,178,36,77,210,44,205,242,52,79,243,52,209,19,69,81,52,77,83,21,93,209,21,117,211,22,101,83,54,93,211,53,101,211,85,101,213,118,101,217,182,101,91,183,125,
89,182,125,223,247,125,223,247,125,223,247,125,223,247,125,223,215,117,32,52,100,21,0,32,1,0,160,35,57,146,34,41,146,34,57,142,227,72,146,4,132,134,172,2,0,100,0,0,4,0,160,40,142,226,56,142,35,73,146,36,89,146,38,121,150,103,137,154,169,153,158,233,169,
162,10,132,134,172,2,0,0,1,0,4,0,0,0,0,0,160,104,138,167,152,138,167,136,138,231,136,142,40,137,150,105,137,154,170,185,162,108,202,174,235,186,174,235,186,174,235,186,174,235,186,174,235,186,174,235,186,174,235,186,174,235,186,174,235,186,174,235,186,
174,235,186,174,235,186,64,104,200,42,0,64,2,0,64,71,114,36,71,114,36,69,82,36,69,114,36,7,8,13,89,5,0,200,0,0,8,0,192,49,28,67,82,36,199,178,44,77,243,52,79,243,52,209,19,61,209,51,61,85,116,69,23,8,13,89,5,0,0,2,0,8,0,0,0,0,0,192,144,12,75,177,28,205,
209,36,81,82,45,213,82,53,213,82,45,85,84,61,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,213,52,77,211,52,129,208,144,149,0,0,25,0,0,35,65,6,25,132,16,138,114,144,66,110,61,88,8,49,230,36,5,161,57,
6,161,196,24,132,167,16,51,12,57,13,34,116,144,65,39,61,184,146,57,195,12,243,224,82,40,21,68,76,131,141,37,55,142,32,13,194,166,92,73,229,56,8,66,67,86,4,0,81,0,0,128,49,200,49,196,24,114,206,73,201,160,68,206,49,9,157,148,200,57,39,165,147,210,73,41,
45,150,24,51,41,37,166,18,99,227,156,163,210,73,201,164,148,24,75,138,157,164,18,99,137,173,0,0,128,0,7,0,128,0,11,161,208,144,21,1,64,20,0,0,98,12,82,10,41,133,148,82,206,41,230,144,82,202,49,229,28,82,74,57,167,156,83,206,57,8,29,132,202,49,6,157,131,
16,41,165,28,83,206,41,199,28,132,204,65,229,156,131,208,65,40,0,0,32,192,1,0,32,192,66,40,52,100,69,0,16,39,0,224,112,36,207,147,52,75,20,37,75,19,69,207,20,101,215,19,77,215,149,52,205,52,53,81,84,85,203,19,85,213,84,85,219,22,77,85,182,37,77,19,77,
77,244,84,85,19,69,85,21,85,211,150,77,85,181,109,207,52,101,217,84,85,221,22,85,213,182,101,219,22,126,87,150,117,223,51,77,89,22,85,213,214,77,85,181,117,215,150,125,95,214,109,93,152,52,205,52,53,81,84,85,77,20,85,213,84,85,219,54,85,215,182,53,81,
116,85,81,85,101,89,84,85,89,118,101,89,247,85,87,214,125,75,20,85,213,83,77,217,21,85,85,182,85,217,245,109,85,150,125,225,116,85,93,87,101,217,247,85,89,22,126,91,215,133,225,246,125,225,24,85,213,214,77,215,213,117,85,150,125,97,214,101,97,183,117,
223,40,105,154,105,106,162,168,170,154,40,170,170,169,170,182,109,170,174,173,91,162,232,170,162,170,202,178,103,170,174,172,202,178,175,171,174,108,235,154,40,170,174,168,170,178,44,170,170,44,171,178,172,251,170,44,235,182,168,170,186,173,202,178,176,
155,174,171,235,182,239,11,195,44,235,186,112,170,174,174,171,178,236,251,170,44,235,186,173,235,198,113,235,186,48,124,166,41,203,166,171,234,186,169,186,186,110,235,186,113,204,182,109,28,163,170,234,190,42,203,194,176,202,178,239,235,186,47,180,117,
33,81,85,117,221,148,93,227,87,101,89,247,109,95,119,158,91,247,133,178,109,59,191,173,251,202,113,235,186,210,248,57,207,111,28,185,182,109,28,179,110,27,191,173,251,198,243,43,63,97,56,142,165,103,154,182,109,170,170,173,155,170,171,235,178,110,43,
195,172,235,66,81,85,125,93,149,101,223,55,93,89,23,110,223,55,142,91,215,141,162,170,234,186,42,203,190,176,202,178,49,220,198,111,28,187,48,28,93,219,54,142,91,215,157,178,173,11,125,99,200,247,9,207,107,219,198,113,251,58,227,246,117,163,175,12,9,
199,143,0,0,128,1,7,0,128,0,19,202,64,161,33,43,2,128,56,1,0,6,33,231,20,83,16,42,197,32,116,16,82,234,32,164,84,49,6,33,115,78,74,197,28,148,80,74,106,33,148,212,42,198,32,84,142,73,200,156,147,18,74,104,41,148,210,82,7,161,165,80,74,107,161,148,214,
82,107,177,166,212,98,237,32,164,22,74,105,45,148,210,90,106,169,198,212,90,140,17,99,16,50,231,164,100,206,73,9,165,180,22,74,105,45,115,78,74,231,160,164,14,66,74,165,164,20,75,74,45,86,204,73,201,160,163,210,65,72,169,164,18,83,73,169,181,80,74,107,
165,164,22,75,74,49,182,20,91,110,49,214,28,74,105,45,164,18,91,73,41,198,20,83,109,45,198,154,35,198,32,100,206,73,201,156,147,18,74,105,45,148,210,90,229,152,148,14,66,74,153,131,146,74,74,173,149,146,82,204,156,147,210,65,72,169,131,142,74,73,41,182,
146,74,76,161,148,214,74,74,177,133,82,90,108,49,214,156,82,108,53,148,210,90,73,41,198,146,74,108,45,198,90,91,76,181,117,16,90,11,165,180,22,74,105,173,181,86,107,106,173,198,80,74,107,37,165,24,75,74,177,181,22,107,110,49,230,26,74,105,173,164,18,
91,73,169,197,22,91,142,45,198,154,83,107,53,166,214,106,110,49,230,26,91,109,61,214,154,115,74,173,214,212,82,141,45,198,154,99,109,189,213,154,123,239,32,164,22,74,105,45,148,210,98,106,45,198,214,98,173,161,148,214,74,42,177,149,146,90,108,49,230,
218,90,140,57,148,210,98,73,169,197,146,82,140,45,198,154,91,108,185,166,150,106,108,49,230,154,82,139,181,230,218,115,108,53,246,212,90,172,45,198,154,83,75,181,214,90,115,143,185,245,86,0,0,192,128,3,0,64,128,9,101,160,208,144,149,0,64,20,0,0,65,136,
82,206,73,105,16,114,204,57,42,9,66,204,57,39,169,114,76,66,41,41,85,204,65,8,37,181,206,57,41,41,197,214,57,8,37,165,22,75,42,45,197,86,107,41,41,181,22,107,45,0,0,160,192,1,0,32,192,6,77,137,197,1,10,13,89,9,0,68,1,0,32,198,32,196,24,132,6,25,165,24,
131,208,24,164,20,99,16,34,165,24,115,78,74,165,20,99,206,73,201,24,115,14,66,42,25,99,206,65,40,41,132,80,74,42,41,133,16,74,73,37,165,2,0,0,10,28,0,0,2,108,208,148,88,28,160,208,144,21,1,64,20,0,0,96,12,98,12,49,134,32,116,84,50,42,17,132,76,74,39,
169,129,16,90,11,173,117,214,82,107,165,197,204,90,106,173,180,216,64,8,173,133,214,50,75,37,198,212,90,102,173,196,152,90,43,0,0,236,192,1,0,236,192,66,40,52,100,37,0,144,7,0,64,24,163,20,99,206,57,103,16,98,204,57,232,28,52,8,49,230,28,132,14,42,198,
156,131,14,66,8,21,99,206,65,8,33,132,204,57,8,33,132,16,66,230,28,132,16,66,8,161,131,16,66,8,165,148,210,65,8,33,132,82,74,233,32,132,16,66,41,165,116,16,66,8,161,148,82,10,0,0,42,112,0,0,8,176,81,100,115,130,145,160,66,67,86,2,0,121,0,0,128,49,74,
57,7,161,148,70,41,198,32,148,146,82,163,20,99,16,74,73,169,114,12,66,41,41,197,86,57,7,161,148,148,90,236,32,148,210,90,108,53,118,16,74,105,45,198,90,67,74,173,197,88,107,174,33,165,214,98,172,53,215,212,90,140,181,230,154,107,74,45,198,90,107,205,
185,0,0,220,5,7,0,176,3,27,69,54,39,24,9,42,52,100,37,0,144,7,0,128,32,164,20,99,140,49,134,20,98,138,49,231,156,67,8,41,197,152,115,206,41,166,24,115,206,57,231,148,98,140,57,231,156,115,140,49,231,156,115,206,57,198,152,115,206,57,231,28,115,206,57,
231,156,115,142,57,231,156,115,206,57,231,156,115,206,57,231,156,115,206,57,231,156,115,206,9,0,0,42,112,0,0,8,176,81,100,115,130,145,160,66,67,86,2,0,169,0,0,0,17,86,98,140,49,198,24,27,8,49,198,24,99,140,49,70,18,98,140,49,198,24,99,108,49,198,24,99,
140,49,198,152,98,140,49,198,24,99,140,49,198,24,99,140,49,198,24,99,140,49,198,24,99,140,49,198,24,99,140,49,198,24,99,140,49,198,24,99,140,49,198,24,99,140,49,198,24,99,140,49,198,24,99,140,49,198,24,91,107,173,181,214,90,107,173,181,214,90,107,173,
181,214,90,107,173,0,64,191,10,7,0,255,7,27,86,71,56,41,26,11,44,52,100,37,0,16,14,0,0,24,195,152,115,142,57,6,29,132,134,41,232,164,132,14,66,8,161,67,74,57,40,37,132,80,74,41,41,115,78,74,74,165,164,148,90,74,153,115,82,82,42,37,165,150,82,234,32,164,
212,90,74,45,181,214,90,7,37,165,214,82,106,173,181,214,58,8,165,180,212,90,107,173,181,216,65,72,41,165,214,90,139,45,198,80,74,74,173,181,216,98,140,53,134,82,82,106,173,197,216,98,172,49,164,210,82,108,45,198,24,99,172,161,148,214,90,107,49,198,24,
107,45,41,181,214,98,140,181,198,90,107,73,169,181,214,98,139,53,214,90,11,0,224,110,112,0,128,72,176,113,134,149,164,179,194,209,224,66,67,86,2,0,33,1,0,4,66,140,57,231,156,115,16,66,8,33,82,138,49,231,160,131,16,66,8,33,68,74,49,230,28,116,16,66,8,
33,132,140,49,231,160,131,16,66,8,33,132,144,49,230,28,116,16,66,8,33,132,16,58,231,28,132,16,66,8,161,132,82,74,231,28,116,16,66,8,33,148,80,66,233,32,132,16,66,8,161,132,82,74,41,29,132,16,66,40,161,132,82,74,41,37,132,16,66,9,165,148,82,74,41,165,
132,16,66,8,161,132,18,74,41,165,148,16,66,8,165,148,82,74,41,165,148,18,66,8,33,148,82,74,41,165,148,82,66,8,161,148,80,74,41,165,148,82,74,8,33,132,82,74,41,165,148,82,74,9,33,132,80,74,41,165,148,82,74,41,33,132,18,74,41,165,148,82,74,41,165,0,0,128,
3,7,0,128,0,35,232,36,163,202,34,108,52,225,194,3,80,104,200,74,0,128,12,0,0,113,216,106,235,41,214,200,32,197,156,132,150,75,132,144,114,16,98,46,17,82,138,57,71,177,101,72,25,197,24,213,148,49,165,20,83,82,107,232,156,98,140,81,79,157,99,74,49,195,
172,148,86,74,40,145,130,210,114,172,181,118,204,1,0,0,32,8,0,48,16,33,51,129,64,1,20,24,200,0,128,3,132,4,41,0,160,176,192,208,49,92,4,4,228,18,50,10,12,10,199,132,115,210,105,3,0,16,132,200,12,145,136,88,12,18,19,170,129,162,98,58,0,88,92,96,200,7,
128,12,141,141,180,139,11,232,50,192,5,93,220,117,32,132,32,4,33,136,197,1,20,144,128,131,19,110,120,226,13,79,184,193,9,58,69,165,14,2,0,0,0,0,0,1,0,30,0,0,146,13,32,34,34,154,57,142,14,143,15,144,16,145,17,146,18,147,19,148,0,0,0,0,0,224,1,128,15,0,
128,36,5,136,136,136,102,142,163,195,227,3,36,68,100,132,164,196,228,4,37,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,0,0,4,0,0,0,8,8,79,103,103,83,0,0,192,59,0,0,0,0,0,0,153,3,97,43,2,0,0,0,169,58,23,146,32,54,52,54,58,246,252,255,12,255,7,255,14,255,15,255,12,255,
20,255,5,255,19,255,6,255,2,255,10,255,6,255,15,108,10,93,103,243,86,237,103,242,178,237,171,132,106,161,21,240,144,229,148,39,23,205,161,7,170,63,255,218,246,159,99,9,186,194,98,255,239,156,233,243,100,152,234,139,235,28,253,245,165,3,176,44,0,204,62,
187,180,111,251,214,188,164,74,125,21,168,22,74,3,51,87,217,141,56,149,115,45,74,200,214,241,10,132,158,211,211,255,207,149,250,56,248,192,225,63,83,149,77,7,219,103,135,3,149,13,196,82,131,12,176,111,197,183,144,68,125,21,232,76,106,54,192,207,101,206,
112,195,58,181,36,122,13,23,27,91,61,248,234,122,101,102,71,239,206,215,38,90,47,156,4,254,252,101,50,168,20,34,254,3,196,94,101,245,140,93,13,223,79,8,81,179,79,107,168,64,80,177,49,152,47,119,116,28,60,191,65,202,172,65,150,112,96,199,151,199,38,46,
18,228,146,91,59,181,144,236,238,193,229,102,13,0,252,178,46,175,76,0,58,201,69,86,220,237,117,135,187,251,132,250,44,51,160,130,178,255,128,10,16,224,199,1,132,3,10,6,193,249,4,0,97,49,41,75,48,3,200,91,10,172,132,126,185,93,193,235,193,121,53,231,164,
186,222,170,51,149,116,63,185,140,0,251,47,69,128,184,253,82,14,160,54,127,57,5,176,186,153,242,232,81,63,253,179,89,65,47,140,83,2,190,216,252,189,170,176,202,52,167,12,168,170,185,102,110,172,13,25,157,166,99,141,223,124,249,188,162,222,98,45,181,250,
13,40,46,203,73,9,163,118,65,187,222,133,248,223,158,250,104,198,110,47,95,144,89,2,118,252,90,133,59,96,126,124,153,79,108,170,50,214,29,170,79,205,241,172,138,190,202,245,232,57,26,24,160,15,201,112,37,54,131,48,80,196,233,242,124,233,245,39,127,213,
245,232,127,139,187,112,192,217,31,61,17,240,173,37,56,53,207,246,229,28,183,13,240,9,215,231,75,250,131,12,44,69,193,219,241,161,81,244,209,126,53,61,155,179,187,252,121,190,181,209,25,87,5,62,217,133,89,221,234,54,205,89,238,30,119,132,143,62,42,87,
16,240,31,208,0,39,240,253,171,0,29,135,134,42,215,16,59,86,146,7,74,96,113,224,26,0,242,192,3,208,38,60,118,134,2,57,128,190,103,61,240,15,75,5,192,14,29,115,43,232,68,245,90,0,206,182,12,2,240,187,79,210,0,248,223,152,7,64,156,45,14,245,143,237,15,
83,64,38,154,95,41,36,189,58,129,149,112,46,231,86,3,160,110,214,42,248,228,223,244,36,21,116,53,255,110,176,215,202,105,0,113,146,247,64,128,214,206,190,122,112,163,18,113,250,243,159,237,185,8,160,0,188,52,193,7,50,83,93,46,128,158,122,155,100,228,
254,124,198,130,250,229,255,58,144,235,100,166,239,145,192,154,83,181,181,254,197,182,168,104,103,185,115,253,224,42,49,120,181,43,36,195,6,230,47,65,7,153,160,176,125,173,74,236,180,27,235,46,167,1,254,39,46,211,186,26,133,195,149,39,82,10,74,234,165,
136,4,62,158,238,185,146,125,0,242,39,198,36,104,14,167,173,2,119,160,3,62,185,101,161,111,244,82,148,83,238,206,142,68,55,57,85,19,82,65,209,191,128,6,52,0,192,97,3,140,48,70,62,224,46,160,198,87,16,199,97,151,60,8,28,80,101,87,192,204,3,29,193,0,48,
53,20,232,25,250,127,202,65,199,9,240,89,192,214,1,248,158,10,0,237,214,17,3,192,141,181,2,184,93,6,129,4,205,50,67,0,128,163,186,136,8,101,217,148,2,66,253,25,5,128,245,102,170,170,46,88,237,114,64,77,190,54,160,66,7,64,100,178,57,77,17,122,37,222,205,
33,88,102,244,193,205,83,238,2,37,0,196,15,130,59,112,120,42,180,160,211,89,36,71,147,55,69,163,247,249,231,41,32,148,182,221,165,6,216,189,15,159,19,2,66,142,19,94,73,33,225,202,229,123,191,148,224,247,102,0,62,59,0,237,255,78,0,72,235,201,6,240,235,
127,189,112,85,176,159,143,232,203,141,61,9,192,243,125,166,132,202,58,192,23,208,192,164,160,126,253,214,130,92,186,20,12,162,92,225,175,210,138,18,14,70,136,208,47,213,154,106,98,8,192,41,105,34,15,160,157,117,92,78,212,1,45,18,0,30,185,101,97,156,
98,163,218,108,119,53,35,188,111,160,77,192,57,251,23,0,0,208,0,15,80,1,116,129,49,218,7,124,7,112,0,190,1,235,144,124,242,32,112,116,12,162,131,25,1,130,61,192,93,152,148,14,24,20,193,217,106,2,147,107,0,255,54,208,93,2,0,230,2,14,0,224,109,218,0,240,
213,86,5,168,164,29,145,128,28,11,139,4,0,240,30,101,1,106,219,59,35,88,0,87,222,2,197,62,166,67,147,204,137,6,74,73,168,65,20,10,0,133,171,162,37,214,229,252,108,62,189,165,49,231,55,236,69,1,0,135,22,174,86,107,160,227,166,4,138,113,150,126,193,218,
75,77,79,160,240,192,51,33,208,179,123,73,11,64,182,182,182,10,192,100,190,234,150,6,105,117,31,134,26,30,82,184,2,32,199,3,30,59,3,128,0,54,5,116,172,31,183,32,170,62,140,141,34,16,30,224,170,105,29,64,78,44,28,199,5,141,27,183,218,81,251,236,2,67,9,
202,206,98,83,203,90,46,52,133,47,83,245,154,236,138,189,59,195,218,162,215,253,83,62,206,155,54,50,152,30,4,0,30,185,213,25,63,113,169,202,189,239,250,142,176,155,20,102,3,228,236,95,64,5,84,0,128,15,232,87,224,90,64,9,172,15,120,73,96,78,224,3,48,216,
128,151,30,80,208,192,1,5,9,178,196,147,0,16,77,48,124,160,24,216,70,88,63,148,128,117,185,0,95,155,129,203,68,1,64,253,142,2,128,124,141,6,0,208,21,71,1,160,60,36,0,40,83,190,54,2,0,80,16,5,16,43,203,195,54,5,32,39,144,0,156,14,2,21,123,187,83,128,238,
46,214,168,132,212,243,1,153,233,87,39,253,221,64,0,0,0,224,70,74,212,233,255,90,86,161,83,102,147,238,66,183,110,15,165,52,94,175,69,193,115,229,68,222,17,128,170,91,18,45,14,86,253,184,125,21,114,19,185,180,129,18,72,93,118,169,39,152,80,122,87,13,
16,170,170,190,18,1,33,83,31,194,146,255,57,129,129,216,4,31,193,110,72,70,7,160,192,64,237,229,13,64,125,127,145,0,82,32,219,158,169,159,49,226,219,32,0,2,108,94,226,192,93,169,80,199,139,33,46,180,51,150,200,87,59,128,54,189,220,63,25,43,46,110,171,
1,76,0,30,185,101,153,212,232,198,148,123,220,101,139,25,238,134,65,49,17,206,65,127,1,21,0,0,224,3,118,12,40,1,37,176,62,224,60,129,11,240,13,40,60,32,128,29,225,65,224,152,40,66,3,7,52,4,56,0,159,128,236,50,52,162,130,41,176,5,172,103,69,224,180,117,
128,83,18,232,56,0,224,102,136,2,0,82,203,2,0,14,153,16,0,108,197,7,32,66,126,26,40,0,200,108,134,66,130,38,15,37,0,64,60,4,1,0,167,19,72,66,32,95,53,0,245,102,45,161,35,75,69,0,108,202,79,141,144,56,121,94,58,21,143,38,186,40,80,0,2,23,69,165,90,201,
172,212,22,133,90,221,215,0,194,249,93,160,220,39,246,0,0,160,83,97,125,246,224,99,30,130,118,139,11,228,108,79,15,222,157,28,217,15,75,154,255,207,49,239,156,103,131,9,185,127,86,1,100,109,159,108,3,232,182,201,78,11,99,81,41,160,243,31,224,219,1,115,
76,52,72,162,52,174,132,9,31,89,1,3,144,2,16,207,57,175,129,202,191,27,161,39,25,32,144,237,123,103,162,132,222,85,189,212,153,101,167,97,246,182,180,207,0,30,185,21,153,56,137,11,83,206,184,239,98,171,243,97,108,128,245,15,0,232,115,224,143,42,128,151,
7,168,0,182,177,1,22,63,224,2,28,1,156,39,144,54,64,45,112,192,148,58,56,96,12,96,160,10,184,205,120,45,225,49,197,96,3,159,173,147,208,87,140,3,128,254,223,30,198,82,64,114,71,0,64,57,135,22,0,100,59,27,128,82,255,13,64,133,57,18,0,186,253,92,11,0,242,
22,26,157,2,238,216,196,19,2,36,93,163,6,192,115,40,169,30,110,10,160,190,160,134,161,199,155,252,205,200,183,253,64,226,201,65,81,1,202,1,224,204,29,161,226,147,45,27,61,118,151,188,140,80,8,252,232,132,100,26,227,247,166,67,167,190,243,90,18,128,161,
103,95,27,211,31,242,61,48,252,119,175,218,140,166,27,99,192,163,212,60,29,34,64,180,156,102,242,254,118,174,14,200,17,190,123,64,1,24,255,118,112,138,104,123,130,119,0,192,224,4,233,112,49,6,32,1,128,29,11,209,255,100,123,69,245,233,48,64,44,88,213,
144,145,186,65,110,135,35,70,170,179,242,14,54,103,138,55,98,99,66,3,0,254,184,21,153,212,138,11,215,206,184,118,17,222,239,144,76,160,211,47,192,0,0,128,7,56,3,40,176,42,218,7,92,128,111,192,45,128,217,3,0,74,8,8,28,208,1,28,48,70,3,210,131,2,0,36,97,
210,204,100,11,154,129,194,8,30,183,38,176,79,77,224,231,5,116,74,1,32,55,165,20,0,226,95,6,0,103,79,4,160,206,38,32,16,105,178,201,3,64,81,222,196,72,64,84,244,221,0,0,32,161,7,96,225,114,20,218,53,144,220,132,82,238,161,236,3,189,156,106,0,30,183,215,
69,113,101,62,77,120,40,121,50,198,219,223,94,0,8,0,44,22,161,201,18,159,89,82,131,123,108,31,69,52,86,215,68,7,46,229,108,54,58,151,178,210,201,0,128,222,12,211,216,77,79,119,125,146,253,32,213,107,230,145,13,28,120,58,167,118,1,118,52,63,161,10,16,
122,214,184,77,1,136,168,203,117,255,23,146,186,33,45,182,29,66,6,212,47,160,95,247,116,96,177,87,208,237,246,79,17,21,64,215,89,33,9,255,72,15,115,2,86,178,8,236,167,177,159,179,212,90,93,175,2,126,137,32,251,79,130,89,219,169,43,128,61,1,30,185,101,
65,45,197,96,194,115,94,83,196,247,123,172,77,84,215,95,64,3,42,0,192,7,184,3,56,1,42,128,181,195,32,22,129,39,128,203,6,168,4,3,28,48,49,193,1,99,0,146,168,3,150,8,70,3,69,129,21,208,63,87,192,58,191,0,239,79,96,158,5,0,28,125,75,0,64,214,136,5,5,192,
112,121,0,96,145,39,148,51,188,107,5,96,189,109,158,130,88,235,27,99,69,0,82,30,167,29,40,76,169,232,103,198,242,28,80,244,205,20,192,235,41,208,112,236,162,116,197,240,211,185,26,243,99,92,221,75,245,8,120,1,64,89,90,73,73,220,152,183,222,118,167,126,
40,104,53,185,221,138,245,97,140,125,109,150,154,33,228,34,85,46,163,222,125,63,123,235,222,82,45,181,115,171,173,26,132,176,195,180,46,0,221,218,155,188,2,104,186,232,40,164,8,210,170,63,168,187,189,25,177,148,53,49,253,36,53,40,21,85,198,144,55,42,
145,246,53,1,29,6,251,221,92,230,105,146,146,90,4,141,78,77,251,160,41,53,192,201,166,136,80,162,216,245,25,202,106,153,0,254,168,197,97,47,231,160,210,46,71,23,211,238,134,130,19,153,167,95,64,3,12,0,120,128,87,96,27,155,209,63,160,3,80,2,47,9,28,54,
64,11,6,56,14,29,59,240,0,64,9,64,240,37,192,65,51,39,45,71,49,144,23,232,45,128,179,215,4,234,148,1,199,14,0,216,85,141,3,0,168,109,7,160,66,83,128,31,129,56,192,37,87,33,1,0,52,113,60,149,86,86,249,69,75,37,96,119,98,20,20,230,33,52,183,149,131,37,
229,196,119,128,131,158,43,14,50,62,85,178,81,100,254,223,217,125,227,129,48,169,7,21,2,16,1,0,164,7,113,178,4,98,88,172,232,245,237,0,152,19,3,77,243,228,74,222,189,87,159,214,221,247,149,243,2,55,87,255,164,154,153,191,23,110,94,75,117,147,171,185,
128,191,239,191,227,178,0,186,11,204,211,4,112,170,151,28,1,134,61,189,222,51,207,171,203,26,9,123,196,247,216,17,31,184,185,120,192,46,79,233,216,81,210,82,191,93,65,203,240,247,144,214,8,53,89,73,57,154,13,27,100,201,181,32,164,207,194,123,132,76,36,
101,100,143,145,177,122,4,183,194,108,122,98,131,2,30,169,101,153,30,31,69,56,227,88,33,166,147,7,27,72,150,252,11,0,104,0,128,15,216,11,80,1,116,9,136,29,6,49,52,112,14,8,43,240,101,0,56,96,98,130,3,26,26,24,46,134,3,82,150,204,76,97,132,254,81,13,208,
111,70,224,29,11,184,148,0,5,174,12,9,0,138,128,203,1,0,188,22,185,0,128,137,192,0,24,126,54,17,192,211,206,146,176,80,146,12,3,0,196,35,223,64,32,233,184,27,245,246,75,160,169,121,60,11,82,112,64,4,7,254,55,215,216,180,113,157,205,153,67,185,224,86,
180,20,64,0,0,5,21,78,41,131,198,82,9,188,129,150,75,229,53,244,201,223,207,171,153,215,146,22,227,162,57,140,5,123,186,50,192,195,59,215,118,15,112,178,223,87,14,128,242,162,175,176,66,9,251,35,117,185,141,106,124,136,120,145,162,71,164,201,101,98,167,
8,1,128,66,251,158,136,208,45,9,141,12,37,224,104,189,226,63,162,208,232,196,67,199,25,95,225,66,182,214,74,102,92,118,171,116,249,69,152,27,18,210,237,170,30,36,183,170,242,184,3,116,0,222,168,197,97,139,216,48,179,108,134,240,123,15,131,129,36,240,
47,0,0,0,192,14,91,99,51,176,9,40,14,131,40,24,18,213,21,16,210,120,112,28,14,192,6,76,193,20,192,65,3,180,128,100,64,93,176,107,77,224,46,229,192,71,128,142,0,92,249,89,0,212,69,43,1,224,166,144,18,10,0,66,201,9,234,47,13,81,96,252,104,144,116,193,159,
39,67,23,208,249,4,133,128,1,173,183,152,102,83,235,80,122,3,141,138,88,1,113,169,39,49,154,97,176,81,103,129,248,222,179,79,62,37,80,5,12,0,112,69,64,252,146,146,152,94,182,231,220,119,19,195,165,155,192,105,114,238,33,236,239,125,120,112,251,171,121,
221,57,121,214,19,164,247,118,53,109,145,16,140,121,245,48,93,9,140,124,114,15,49,33,141,200,65,106,182,107,74,145,133,9,201,110,157,90,245,66,141,18,223,33,235,126,234,232,235,41,192,37,65,239,162,15,36,9,142,74,157,239,45,1,150,128,91,250,224,46,126,
116,192,153,97,16,105,198,147,14,146,97,11,156,239,98,11,13,128,7,18,0,254,168,5,185,177,141,76,148,51,78,165,171,237,174,192,213,128,235,31,80,1,117,50,240,75,10,224,245,3,84,2,74,224,105,64,177,67,199,64,224,27,48,91,0,50,112,60,58,58,216,0,6,37,0,
39,3,40,48,3,245,51,172,191,41,7,235,249,23,1,128,198,237,198,212,117,0,186,83,73,0,136,190,167,4,0,173,15,80,0,176,55,19,80,0,232,198,138,2,245,191,157,80,120,25,10,75,64,15,26,38,34,0,74,142,61,128,98,66,77,77,134,183,159,160,130,250,91,136,151,51,
39,169,183,254,245,233,69,162,25,54,187,3,184,20,0,174,80,168,63,112,124,221,98,154,139,198,252,158,237,50,236,218,21,132,93,75,138,77,237,95,204,251,175,86,211,65,182,108,168,2,140,188,125,33,13,128,204,116,190,175,173,43,171,185,12,95,252,214,72,115,
31,130,59,111,162,76,96,188,50,247,132,63,147,217,203,15,104,248,126,116,2,0,176,160,160,58,89,220,213,1,148,4,105,120,164,255,23,16,0,51,156,233,53,102,76,15,91,84,187,5,185,138,58,145,104,59,44,119,63,151,129,195,146,188,0,30,169,197,234,56,201,129,
181,81,78,37,194,222,195,82,94,127,1,21,0,0,224,1,70,192,214,24,161,127,192,6,240,0,206,19,104,43,32,131,57,176,113,152,54,128,161,104,128,7,208,25,0,72,6,198,34,92,22,176,222,99,31,224,204,4,6,9,145,0,78,38,32,0,112,29,73,128,195,135,15,6,0,187,132,
180,0,220,184,77,0,160,10,36,65,98,157,203,173,1,0,146,124,13,5,212,1,64,151,108,124,40,128,200,238,175,33,49,148,19,179,5,69,252,107,156,212,212,253,201,153,68,20,215,174,148,217,110,191,205,49,205,31,191,222,183,91,214,24,91,106,131,130,166,40,0,198,
242,240,128,44,184,79,186,111,76,135,220,229,39,25,6,134,92,154,142,192,188,81,59,91,22,192,187,248,235,17,64,241,157,59,253,96,5,154,18,46,54,147,2,159,132,152,185,73,49,186,177,229,38,115,253,84,0,0,174,121,79,52,34,165,127,75,167,111,139,232,0,144,
235,0,74,69,54,144,227,199,118,121,41,187,54,74,115,158,159,104,192,108,25,208,187,63,219,203,200,132,92,45,224,14,0,30,169,165,217,222,204,196,218,200,151,210,149,157,123,14,145,1,247,47,160,2,26,0,224,1,78,128,197,14,155,63,64,1,60,128,15,128,88,0,
90,122,8,62,57,176,1,83,176,54,1,119,7,0,5,36,3,113,8,235,163,90,208,255,56,12,250,79,192,102,6,0,208,24,51,0,160,115,81,56,112,43,93,0,88,14,194,194,83,178,151,12,8,104,217,78,45,149,41,226,148,64,74,11,210,204,5,165,244,160,165,156,132,182,119,90,56,
210,15,147,80,214,237,1,155,188,93,34,167,122,82,0,24,1,128,17,170,71,157,217,150,88,204,3,159,230,47,218,217,212,168,81,17,69,218,250,123,216,187,171,82,145,10,75,7,235,221,75,167,245,173,233,103,146,80,189,252,172,4,51,230,238,225,137,1,122,210,255,
57,0,190,125,116,173,2,96,95,201,139,88,114,46,60,33,167,207,98,107,35,128,154,172,169,235,27,72,50,15,206,210,214,94,1,64,139,240,93,236,218,43,192,89,202,148,204,209,21,73,3,232,148,238,218,135,35,179,74,137,128,132,83,63,79,193,135,90,131,125,55,102,
24,182,50,51,205,169,13,67,193,76,0,79,103,103,83,0,0,192,123,0,0,0,0,0,0,153,3,97,43,3,0,0,0,53,123,117,14,27,255,20,253,255,7,255,7,255,3,255,15,255,3,255,0,246,255,3,253,250,255,3,248,255,1,255,2,254,168,133,193,60,139,140,205,25,46,41,194,124,152,
152,8,39,228,95,128,129,6,0,248,0,35,64,2,74,64,238,208,209,128,91,0,107,5,148,1,224,120,28,128,13,104,50,44,3,54,3,38,167,3,176,6,201,192,188,3,222,163,6,232,175,13,5,30,41,128,2,31,148,0,85,174,2,0,28,62,233,0,128,52,96,1,64,94,9,205,82,132,253,124,
134,3,235,179,28,60,13,168,120,164,28,33,210,210,145,19,4,252,199,154,22,97,254,133,41,120,241,110,12,148,139,40,78,211,192,219,42,210,207,206,158,188,54,90,90,98,156,236,182,211,1,28,0,112,40,193,235,253,192,234,102,231,25,252,249,89,183,70,233,32,32,
0,0,156,95,90,175,189,119,18,121,153,123,120,164,84,241,160,43,153,142,167,188,245,166,127,46,110,75,180,160,169,91,0,167,117,170,232,4,204,195,11,180,42,0,250,58,217,3,12,40,60,136,13,131,112,194,137,2,187,181,118,197,115,37,5,76,76,45,255,12,179,105,
116,164,114,219,148,187,150,0,80,124,66,148,131,37,111,27,128,148,135,122,41,118,226,75,126,125,216,140,55,180,215,65,195,121,163,5,36,0,30,153,165,246,216,198,128,202,24,167,46,226,110,114,56,202,251,23,0,0,0,224,1,253,10,168,177,1,230,14,29,195,128,
7,208,250,210,13,120,93,48,0,7,133,137,20,200,169,224,253,117,128,175,219,11,156,49,129,34,7,0,240,10,75,1,224,96,65,0,216,253,84,64,20,123,117,202,52,46,218,72,137,52,94,23,16,42,117,242,187,64,1,16,219,164,23,8,31,38,190,136,105,170,245,145,23,15,29,
153,202,62,141,120,194,81,132,252,219,212,65,188,45,216,94,43,18,115,58,241,45,5,16,250,157,208,35,48,66,42,35,2,129,219,15,129,214,142,13,255,24,99,240,44,237,197,116,160,63,39,108,61,61,12,163,222,162,40,158,209,157,250,231,209,129,95,127,175,64,130,
1,128,238,92,147,255,185,38,213,249,237,43,151,29,61,109,153,228,176,106,6,142,60,148,166,73,160,236,112,95,180,109,33,49,12,208,142,86,253,53,158,177,250,159,87,81,148,193,67,38,184,240,220,126,233,237,118,80,38,88,93,155,64,15,166,152,70,28,244,141,
175,30,147,29,30,153,101,65,111,42,39,105,134,185,152,212,125,5,57,162,238,95,64,3,42,0,192,151,192,57,96,1,5,160,63,64,0,74,224,73,160,99,1,40,129,13,144,147,96,38,224,110,128,6,166,128,122,232,159,43,96,125,180,1,31,3,102,51,0,128,108,167,0,149,72,
190,45,0,137,218,174,4,0,188,206,43,42,173,195,202,130,3,0,20,25,157,82,107,235,181,29,41,165,68,252,48,26,64,121,106,195,50,175,83,41,157,98,84,222,55,77,244,53,201,147,239,141,143,147,180,201,148,249,230,40,0,238,212,254,46,202,199,199,237,155,239,
120,133,220,206,14,160,178,90,215,197,15,200,101,183,38,72,192,186,62,237,77,8,137,94,209,24,13,60,89,117,59,12,247,66,214,239,8,14,151,86,245,166,1,141,197,184,187,52,253,23,21,3,0,16,0,155,129,52,217,125,252,175,11,159,81,106,100,160,2,125,114,121,
226,242,2,218,95,111,28,189,205,13,0,126,98,145,75,2,118,136,245,150,36,9,34,252,251,189,216,13,29,206,187,104,204,166,193,185,254,96,222,118,155,213,114,89,173,92,76,0,30,153,213,106,47,99,100,74,61,103,142,248,190,199,100,128,132,244,23,208,0,0,0,15,
240,10,184,176,71,223,161,96,17,120,0,29,43,26,4,35,225,144,124,118,15,54,224,4,211,1,207,0,122,4,132,3,81,128,254,2,184,199,90,96,215,2,112,140,43,2,128,62,152,1,0,37,137,160,176,159,0,128,196,37,9,52,194,217,75,7,117,157,12,182,150,144,192,207,174,
16,194,0,56,228,10,10,245,209,240,104,88,133,105,67,74,20,181,3,196,169,89,120,87,151,155,109,235,213,161,150,120,114,96,255,176,207,13,210,223,82,68,41,92,212,21,32,162,134,154,234,63,48,147,251,249,159,242,185,171,170,9,13,80,1,28,95,57,159,146,176,
144,148,16,204,10,247,182,32,176,113,233,218,46,0,149,126,69,131,49,193,55,63,165,146,66,249,26,3,193,28,202,245,214,204,232,112,71,240,239,224,130,221,200,189,231,62,112,238,155,105,55,110,0,0,160,142,138,97,182,88,89,31,101,103,215,255,185,48,196,17,
3,236,169,192,132,213,135,234,119,31,51,98,61,78,107,174,124,114,92,26,15,0,254,168,165,97,111,90,206,210,116,42,17,223,111,80,155,208,137,252,11,0,104,0,128,29,86,197,32,176,37,208,177,67,65,128,158,2,214,6,136,218,152,104,86,128,193,5,224,112,39,164,
3,214,5,250,111,202,64,127,182,30,120,7,96,205,3,112,51,42,0,207,94,11,0,88,92,13,41,0,64,25,171,180,168,254,85,170,162,197,248,170,149,56,113,90,190,22,178,14,132,186,100,51,80,20,42,5,88,150,132,63,75,40,94,231,15,105,23,50,115,7,63,108,222,0,40,1,
66,246,148,54,179,187,197,111,94,188,250,221,214,177,52,85,128,198,17,5,176,201,179,81,5,48,103,102,143,81,2,232,15,91,66,224,155,144,121,142,52,251,160,133,120,76,20,142,60,118,56,144,100,144,140,127,12,5,186,55,196,252,60,62,250,103,48,0,18,8,190,148,
122,226,147,138,238,37,37,143,135,1,96,2,218,213,121,3,64,107,97,201,170,118,22,13,56,216,192,134,99,94,205,130,96,209,250,173,198,62,162,147,165,13,32,192,244,206,239,138,133,6,96,135,75,92,140,209,52,97,43,3,254,152,101,86,111,35,23,237,88,138,48,31,
174,77,64,243,47,64,128,1,0,30,160,0,58,48,12,245,29,234,72,224,12,32,205,3,31,25,128,35,16,40,96,5,79,176,14,240,10,130,169,132,244,1,99,17,92,91,7,168,89,3,120,17,48,74,10,0,215,103,28,0,144,171,141,226,0,105,243,43,10,28,179,161,80,213,143,54,0,244,
143,80,120,136,119,143,172,167,0,16,161,168,43,143,134,72,244,40,15,166,123,5,212,179,2,213,253,13,170,19,228,168,53,120,196,226,7,15,27,227,91,223,118,254,199,5,7,4,0,170,11,148,231,238,109,207,231,53,142,173,217,153,75,186,175,159,34,20,0,94,67,55,
99,122,136,79,166,194,5,243,37,48,115,65,66,45,18,164,171,183,29,124,192,204,190,251,168,8,140,220,236,218,52,202,226,49,101,40,15,91,185,84,235,206,136,146,145,63,16,190,154,190,227,182,254,103,115,192,179,178,142,125,206,126,208,72,143,143,157,89,165,
197,22,24,147,94,62,220,200,56,1,152,239,104,166,49,218,217,70,230,184,70,65,0,242,78,125,154,163,251,141,67,196,14,165,158,147,27,48,3,222,168,149,97,155,181,81,181,145,207,37,194,123,30,182,1,246,47,160,2,42,0,192,3,250,0,46,24,163,237,80,67,128,189,
1,210,2,120,221,81,144,104,96,5,210,224,1,62,0,128,84,34,7,244,0,214,243,18,176,222,191,1,63,3,118,28,8,0,37,160,32,128,156,188,1,148,7,211,140,64,89,114,8,208,110,229,239,2,180,149,122,2,47,51,127,41,40,37,216,183,1,80,39,17,212,205,108,102,119,96,92,
31,81,44,102,40,187,67,226,247,250,122,234,94,1,0,0,80,17,160,135,31,54,45,10,103,123,159,246,170,247,200,34,56,128,74,64,233,135,255,20,190,178,122,19,58,29,136,166,188,149,214,201,43,128,224,234,87,5,192,193,167,23,217,2,104,156,121,96,132,129,244,
93,5,132,66,69,46,53,79,45,18,186,68,230,81,181,224,18,128,243,207,56,8,147,177,93,116,52,47,126,73,253,53,25,64,0,191,109,200,179,120,66,70,243,117,57,83,68,7,178,152,146,196,86,191,86,199,228,72,0,171,231,232,73,246,245,239,124,204,153,136,67,208,55,
3,116,54,222,152,101,217,222,174,156,149,237,226,98,50,157,187,53,224,253,5,84,0,0,128,7,168,4,58,49,198,252,128,11,144,128,10,96,89,0,50,61,58,26,10,88,1,6,19,32,187,18,22,40,204,176,190,181,43,240,183,67,2,127,105,160,72,1,0,245,30,46,0,72,122,160,
0,254,134,2,240,144,5,144,68,74,211,13,2,11,40,10,98,57,170,136,111,70,138,10,100,101,7,0,44,105,196,231,11,126,12,32,49,200,134,253,144,102,146,24,184,218,173,134,87,123,158,144,114,0,128,8,9,1,199,127,165,22,78,231,129,241,130,154,201,174,54,6,112,
223,54,21,96,116,234,123,226,1,179,60,81,60,32,76,57,254,145,15,208,106,199,115,204,107,24,170,104,196,166,32,53,7,20,196,200,53,239,64,129,91,68,177,232,66,85,14,151,246,210,138,248,167,210,64,98,0,26,42,21,32,3,200,64,235,97,84,187,106,13,51,131,2,
192,59,100,30,130,109,137,79,35,135,117,0,243,187,10,118,239,68,84,211,1,137,38,78,208,146,249,175,87,105,79,133,9,180,27,36,222,168,149,97,75,141,170,12,147,168,156,110,24,70,6,114,127,1,6,0,0,60,96,107,64,137,49,198,135,142,134,33,209,154,192,209,1,
192,6,52,193,30,224,182,37,25,88,69,240,168,154,192,183,15,5,222,29,192,64,89,0,184,30,16,1,0,84,55,1,252,231,121,14,128,71,195,68,34,12,10,66,20,234,200,230,242,197,53,94,157,11,94,229,199,114,244,194,175,66,5,29,219,195,235,150,106,53,170,236,68,11,
64,160,128,24,92,81,78,95,109,95,139,98,12,247,52,111,173,82,73,139,160,57,154,148,192,236,123,70,208,46,128,183,106,67,235,2,68,127,93,32,1,89,94,8,0,222,116,31,137,250,235,203,168,221,186,20,26,230,61,30,63,2,167,130,122,37,63,181,10,148,255,63,153,
204,37,72,204,201,85,230,126,33,181,24,4,136,96,1,10,224,4,18,32,247,238,222,38,0,211,7,255,201,61,233,77,58,112,191,59,30,192,230,130,230,80,70,139,90,168,206,217,151,22,32,169,32,210,189,114,205,136,141,214,4,0,222,168,21,225,56,245,65,180,221,14,83,
236,119,23,2,44,37,81,218,191,0,3,0,0,94,0,63,0,53,214,152,31,160,0,36,240,4,208,22,40,104,201,198,225,109,192,145,68,3,60,237,72,11,212,55,248,182,154,9,126,103,47,176,187,8,76,5,5,128,228,177,8,10,96,76,28,128,167,231,17,128,158,150,130,128,58,199,
33,146,82,139,49,23,32,204,210,89,226,74,192,130,112,113,69,253,103,168,144,53,77,115,211,214,162,225,231,221,131,199,69,87,231,10,82,172,123,41,113,184,250,14,138,134,249,155,89,33,153,200,235,162,134,176,115,29,5,240,246,129,113,11,240,224,149,207,
213,0,122,94,232,3,129,144,159,22,148,30,118,219,183,164,106,251,119,50,21,18,81,96,31,197,2,252,86,215,253,119,61,171,209,90,2,64,1,242,41,128,120,57,71,212,31,146,192,161,151,217,58,128,220,86,17,204,144,77,100,87,118,24,140,145,214,176,255,104,172,
223,169,60,76,253,84,34,101,108,131,106,107,165,36,253,111,18,24,103,147,8,217,101,86,181,245,60,84,15,192,82,2,254,168,53,86,157,245,81,149,17,167,16,97,247,39,56,74,251,23,208,128,10,104,128,47,129,115,192,43,160,0,182,119,216,26,139,192,19,64,91,0,
138,212,198,37,111,3,158,36,70,128,39,37,24,24,20,160,63,175,128,117,184,129,254,213,192,220,64,0,192,221,102,1,72,180,119,28,0,139,192,18,0,176,203,15,19,103,28,235,83,10,208,234,109,12,1,132,163,122,52,87,130,202,68,50,161,128,202,89,232,197,134,191,
146,94,160,227,106,32,154,93,19,23,184,95,0,36,146,0,83,195,104,17,180,243,49,149,132,80,116,139,240,204,253,6,168,52,181,118,2,140,217,93,123,4,176,241,224,19,16,24,197,28,27,221,171,225,234,81,128,44,254,95,83,34,248,104,153,197,218,191,133,48,46,186,
162,83,16,192,128,65,191,129,145,248,85,142,214,0,202,146,241,138,115,13,98,2,140,126,199,220,40,54,235,190,188,2,33,0,146,246,207,216,215,136,238,175,227,189,185,90,71,72,144,46,83,218,21,105,13,59,133,6,211,184,85,192,213,226,124,32,76,108,0,190,152,
213,65,154,124,80,74,62,184,166,234,190,99,50,144,245,23,208,0,0,0,15,240,10,184,176,71,223,97,59,44,2,15,64,44,0,25,216,184,68,174,192,145,68,7,220,249,164,116,192,156,208,255,6,112,143,117,128,93,11,192,113,11,0,172,234,214,40,0,177,44,238,1,176,111,
116,128,146,124,130,251,201,243,134,170,34,90,239,143,81,81,178,114,188,246,76,1,9,245,192,2,80,143,85,210,12,171,222,75,19,171,137,252,252,39,103,17,145,167,63,22,0,152,136,208,233,250,74,234,136,232,188,109,126,146,102,166,148,26,206,180,15,226,32,
116,183,43,100,129,100,99,193,221,18,2,200,77,158,2,176,82,59,29,104,135,249,252,89,187,142,17,175,128,70,29,88,205,19,147,228,250,57,58,38,24,223,2,0,204,150,233,243,160,48,248,84,27,29,119,123,192,231,162,245,205,155,24,118,170,179,217,159,71,72,24,
3,172,95,252,206,136,160,22,76,182,122,51,235,30,177,251,142,164,237,63,18,83,57,132,220,12,56,222,234,97,232,121,2,0,222,152,53,118,153,106,99,74,235,142,20,126,247,39,40,145,121,253,5,52,0,160,2,188,0,70,9,60,56,204,15,216,49,32,128,45,128,142,121,
192,168,93,0,202,10,28,105,76,192,109,128,21,176,141,208,95,149,131,254,227,42,88,223,19,216,34,0,0,141,53,1,0,168,180,1,112,246,1,0,157,252,0,188,133,120,247,69,45,96,237,235,186,163,206,91,47,183,107,148,88,168,215,16,64,244,27,52,177,140,211,15,219,
86,84,66,61,104,4,73,168,172,126,76,1,232,152,173,210,182,154,190,150,235,148,14,22,75,152,84,43,211,187,80,191,61,16,252,11,52,157,1,60,186,233,43,55,0,203,210,191,1,38,84,18,108,17,228,242,100,127,169,40,182,246,113,51,2,142,100,64,58,23,4,8,183,254,
158,217,62,197,178,83,90,245,164,89,195,173,158,127,200,1,52,166,216,218,97,111,186,190,117,9,121,133,144,156,27,220,107,2,0,216,173,125,197,160,74,171,143,162,110,56,104,228,181,181,203,83,139,188,223,81,45,118,150,238,20,186,185,104,255,147,92,161,
10,201,199,4,190,152,21,118,109,24,84,154,105,41,194,110,50,16,19,208,254,3,0,250,14,240,165,149,64,241,0,149,192,14,24,196,226,7,60,0,1,188,6,144,230,129,171,165,27,192,10,76,65,28,32,73,6,50,192,227,107,130,126,251,7,0,88,123,223,165,128,149,98,141,
43,1,216,200,44,0,88,172,54,152,160,240,227,31,3,128,183,193,84,66,162,222,47,18,145,2,246,59,214,57,133,240,176,83,39,32,160,197,134,40,64,241,52,158,44,137,227,143,47,12,33,203,222,47,195,181,136,195,111,187,125,64,188,53,199,169,89,105,114,114,110,
106,9,114,127,254,72,155,4,102,14,192,180,40,172,139,177,61,66,194,85,136,56,55,124,44,119,250,45,13,64,127,83,137,186,31,81,90,73,0,18,196,230,66,169,117,160,108,168,72,10,148,130,201,22,95,254,241,255,209,5,218,20,32,128,67,13,76,64,181,47,204,226,
117,0,26,88,165,255,252,142,43,235,115,160,245,250,166,90,52,235,7,44,101,165,70,199,5,120,161,196,121,96,184,185,103,81,0,222,136,213,217,222,214,134,181,29,14,18,126,62,45,29,217,251,23,0,0,0,224,1,79,13,108,96,16,30,80,36,16,248,10,111,79,0,112,133,
192,1,5,9,86,128,96,19,176,93,158,72,129,222,192,215,149,3,223,96,23,224,52,1,20,67,10,0,87,195,18,0,80,38,82,128,216,138,0,96,103,47,18,192,38,211,81,4,32,54,62,134,162,137,122,127,111,170,59,240,113,142,80,0,88,13,8,160,52,193,167,105,82,1,222,69,51,
46,234,198,159,153,153,233,71,146,216,1,128,2,0,35,161,211,196,111,29,159,234,251,48,180,73,214,193,81,152,108,17,148,234,167,84,129,111,117,22,169,17,8,125,53,215,16,0,53,29,157,72,128,236,45,50,255,42,180,151,202,33,235,173,80,106,212,214,27,146,223,
146,130,145,167,136,244,43,18,65,113,85,195,67,242,197,27,8,14,3,160,141,120,235,57,11,185,14,192,108,37,50,184,64,13,58,96,116,157,28,169,224,157,225,21,234,203,123,0,130,246,134,97,172,119,92,237,241,214,5,240,243,161,232,224,230,93,91,80,10,222,136,
53,153,222,198,168,198,142,71,137,253,233,38,28,181,1,215,95,64,5,0,0,120,128,2,80,160,163,124,192,13,144,128,23,64,216,0,145,118,75,32,5,26,63,47,20,16,245,176,122,6,126,119,87,224,61,18,24,164,0,0,205,28,3,10,224,205,216,16,128,187,249,68,4,28,19,128,
68,58,80,96,1,128,174,137,214,194,219,149,85,43,1,2,91,73,7,252,166,193,36,106,221,95,92,170,176,117,138,149,122,70,106,230,226,182,191,3,204,204,29,251,3,16,30,47,57,70,2,193,211,222,2,210,208,181,106,192,28,145,163,186,84,225,153,170,7,17,105,243,162,
143,235,112,138,48,148,140,88,183,201,119,42,36,87,236,156,240,253,239,237,172,254,47,4,128,1,180,230,69,31,88,102,242,133,96,141,47,51,10,86,27,40,230,175,62,169,59,127,21,140,96,35,89,242,253,252,49,232,17,112,53,192,38,40,67,210,2,208,205,205,244,
39,78,119,61,237,115,182,175,228,61,162,0,86,224,248,57,194,101,172,206,59,135,208,63,49,80,37,10,122,176,66,6,60,54,0,79,103,103,83,0,0,192,191,0,0,0,0,0,0,153,3,97,43,4,0,0,0,79,236,212,107,20,255,9,255,1,254,250,255,2,249,242,242,240,250,248,249,240,
233,249,235,246,158,136,213,185,54,139,76,180,147,196,127,98,50,221,228,112,53,28,251,23,0,208,0,0,15,184,14,64,129,14,31,240,10,8,192,24,104,14,248,0,72,15,128,2,6,128,182,105,178,5,3,243,0,214,63,238,3,124,182,30,248,228,6,46,123,0,192,123,141,2,0,
186,177,70,41,96,107,39,68,240,7,45,212,74,2,100,102,28,177,176,226,41,17,189,148,98,241,200,192,74,226,233,126,79,4,47,125,15,16,36,119,119,93,10,248,119,137,119,58,43,4,135,72,195,39,205,191,55,200,209,179,171,159,67,5,192,197,145,214,62,91,176,10,
29,171,3,214,139,2,184,186,237,109,66,128,107,199,127,110,0,170,15,251,69,18,16,87,63,73,144,204,71,206,196,237,214,85,249,84,65,189,83,65,192,55,80,230,251,219,81,163,79,184,190,59,12,0,0,230,35,203,244,210,245,195,112,26,1,148,151,83,223,79,127,142,
211,153,27,3,119,0,140,68,92,171,134,12,252,188,226,215,237,166,53,111,164,91,215,186,244,132,237,242,75,50,118,217,199,198,169,206,85,84,128,171,147,162,193,170,43,162,49,241,0,222,136,117,118,175,190,97,101,16,254,139,222,114,191,199,219,112,236,95,
128,1,128,10,240,0,99,192,162,163,31,22,81,176,32,202,6,136,234,6,128,192,6,224,77,44,3,227,57,24,162,6,112,167,19,128,63,23,112,220,0,0,248,60,13,0,138,43,210,29,138,240,180,185,2,152,77,137,109,217,98,78,26,226,158,75,148,227,181,154,189,37,22,37,254,
106,138,20,16,115,80,222,253,252,98,146,145,182,28,19,69,232,43,69,90,116,138,8,64,240,250,251,223,106,61,32,143,74,236,65,96,194,138,196,127,169,1,225,193,7,199,218,96,172,48,16,33,246,73,131,172,68,105,13,226,187,182,65,255,123,22,242,222,205,206,220,
61,76,71,60,63,94,35,9,222,206,18,31,255,228,207,195,36,15,1,176,123,52,246,50,223,207,247,12,131,144,113,48,178,67,75,212,190,128,189,71,71,35,102,18,48,176,105,189,211,230,212,50,32,233,217,48,183,20,79,53,0,202,253,159,239,26,212,150,159,59,18,74,
86,162,219,204,119,44,90,84,159,240,195,136,185,212,115,152,78,60,0,222,136,245,65,111,201,85,104,137,63,97,239,55,197,6,186,254,2,0,0,0,188,0,30,192,5,248,195,10,246,56,252,6,152,113,3,244,37,64,5,236,196,50,160,8,158,85,129,183,229,192,78,5,88,70,14,
0,198,103,205,128,5,146,215,40,66,196,31,206,104,14,229,95,103,5,47,126,134,233,156,20,220,190,213,130,122,12,198,151,105,4,26,122,36,167,2,213,142,1,248,120,240,185,104,112,65,182,118,67,197,205,93,58,13,224,49,225,170,94,188,235,55,253,233,4,28,200,
179,183,59,1,225,212,249,215,181,72,96,198,195,165,170,128,64,107,38,32,222,212,64,217,33,154,174,222,83,22,71,131,173,29,165,37,221,59,139,168,6,54,121,194,50,59,168,67,144,186,253,113,77,0,23,14,133,200,131,143,69,54,48,55,220,214,123,244,162,245,106,
8,50,121,44,138,18,183,20,105,132,33,13,183,28,128,136,39,195,181,20,73,34,129,45,51,169,86,125,222,212,73,164,203,245,132,67,235,207,85,184,70,148,119,142,75,90,236,190,132,237,152,216,208,83,81,0,190,136,53,217,86,125,16,97,39,233,191,174,140,186,225,
177,54,81,221,191,0,0,0,0,15,48,151,64,7,143,63,172,131,199,62,184,3,116,128,184,1,230,196,4,116,171,24,136,27,232,111,213,73,88,255,41,7,110,85,128,139,64,4,0,27,173,101,1,64,234,246,32,94,125,198,174,0,42,97,165,23,243,250,144,181,80,200,30,179,247,
62,101,248,70,198,160,70,105,13,47,89,1,20,219,172,132,145,226,167,173,41,94,34,31,125,133,70,98,57,224,144,80,81,167,185,141,124,160,128,240,200,101,122,183,128,217,239,109,151,0,96,204,215,46,234,128,233,30,167,18,91,49,74,152,68,134,157,241,94,230,
206,79,115,196,175,155,87,140,97,11,1,13,163,233,49,37,115,241,177,98,77,25,228,155,70,165,227,10,123,205,60,21,0,219,225,47,85,154,72,48,32,222,125,215,182,96,12,24,6,0,150,182,204,175,34,208,40,88,191,10,6,220,140,220,206,206,243,50,151,233,143,17,
116,172,226,188,149,12,196,40,187,12,76,21,153,155,2,61,9,0,190,136,213,225,212,146,177,116,39,233,71,239,71,175,194,49,26,142,253,11,104,64,5,0,120,9,156,3,14,116,220,97,135,53,86,96,3,76,127,9,136,13,9,93,64,108,192,164,20,160,4,250,159,85,176,142,
51,240,81,2,179,3,0,200,72,33,96,1,31,179,9,4,15,63,20,192,219,133,164,42,230,249,205,191,89,1,225,233,19,197,61,202,233,74,129,54,110,253,5,8,90,249,188,41,57,110,137,22,69,229,25,49,102,149,248,121,26,64,52,131,214,220,101,153,3,16,68,84,169,34,111,
27,222,186,136,6,176,113,160,54,15,0,165,43,174,251,0,87,107,239,147,66,4,44,15,76,101,112,10,89,179,168,141,118,127,20,106,181,91,15,201,146,230,76,3,118,6,227,85,228,12,46,34,50,51,18,200,91,31,31,191,26,3,161,121,213,169,200,91,1,49,97,216,58,30,220,
99,71,199,60,56,208,118,1,149,8,189,137,242,214,13,12,0,47,232,206,173,162,178,229,1,25,87,212,61,59,181,88,112,246,190,94,226,67,135,118,0,27,242,71,245,76,179,3,138,81,9,158,120,117,65,139,216,178,114,194,65,98,70,186,233,177,53,28,251,23,208,128,10,
0,240,18,56,1,106,76,244,7,40,129,133,129,40,11,64,73,198,174,51,42,144,99,192,3,180,17,248,59,181,192,93,10,192,113,199,82,0,94,111,144,0,240,57,155,68,28,31,211,93,180,224,214,117,7,72,34,159,119,40,64,108,41,140,2,85,253,121,233,178,40,238,126,41,
21,0,214,13,247,170,245,146,62,213,149,62,132,253,55,253,149,6,66,207,26,26,74,128,254,179,106,27,144,4,125,118,31,18,111,235,85,78,79,87,175,192,108,77,92,98,143,174,204,27,86,239,65,73,193,142,4,178,109,63,133,94,61,70,84,72,231,170,13,94,28,164,65,
252,205,243,42,19,151,246,69,60,11,4,18,202,44,135,79,3,195,0,96,128,68,189,125,159,138,182,12,64,119,203,215,245,224,166,109,238,171,207,51,18,22,206,107,63,179,76,195,60,130,93,145,238,111,172,53,86,242,187,116,175,70,95,39,167,86,166,193,104,12,197,
89,191,43,223,99,112,23,192,4,158,104,117,97,155,233,136,202,201,252,137,253,206,39,215,6,114,127,1,0,13,0,112,216,0,35,20,56,84,249,10,31,136,13,120,109,187,129,103,14,160,227,10,49,176,211,224,71,229,192,253,19,224,61,0,115,22,160,126,94,52,1,152,110,
134,186,40,155,166,113,128,127,11,208,250,123,124,38,22,222,111,254,5,165,150,231,123,173,9,218,109,43,0,196,91,177,144,66,82,86,162,194,147,222,170,66,113,148,165,58,154,176,79,118,113,162,0,78,234,43,1,188,246,112,221,57,192,114,197,230,0,112,243,254,
89,34,0,215,38,225,209,34,115,32,83,104,205,148,207,82,43,61,243,73,180,130,33,87,116,206,15,72,98,28,25,98,216,183,232,180,247,104,144,194,173,141,21,139,82,6,99,9,178,109,181,47,57,181,138,83,152,25,246,115,78,70,57,1,165,0,9,58,183,83,169,29,224,80,
49,247,83,59,150,18,97,181,187,227,141,15,2,20,201,211,253,247,190,242,213,58,204,32,240,69,244,190,29,60,98,235,216,0,158,104,117,65,155,116,203,198,38,253,137,174,211,77,30,110,19,241,250,11,0,0,0,112,88,21,35,128,15,40,0,1,108,1,8,27,112,82,63,198,
128,200,231,24,56,47,128,223,171,1,252,193,93,128,187,0,138,166,2,204,47,6,64,133,137,1,224,159,231,8,224,53,43,7,66,165,29,31,135,0,165,30,83,20,64,150,46,239,140,8,133,196,62,151,17,32,76,39,112,113,250,241,125,218,127,16,128,147,30,122,60,2,33,251,
221,167,18,32,207,234,227,164,1,209,106,72,146,236,109,229,4,69,117,200,103,21,247,170,44,72,170,224,140,137,116,44,226,12,193,76,246,165,209,58,61,62,119,226,98,183,9,87,234,103,103,193,149,251,135,87,71,166,188,248,208,125,16,87,205,66,4,90,10,10,226,
162,36,143,206,66,145,27,199,119,103,30,45,147,110,88,230,176,210,92,25,183,116,165,76,107,127,100,63,177,11,36,125,135,83,55,243,181,188,40,10,47,34,232,221,61,1,202,96,54,53,81,69,100,193,91,130,0,94,120,213,97,107,117,203,82,139,103,133,80,127,222,
33,218,16,68,22,254,5,84,64,5,0,120,9,60,128,197,195,97,140,137,79,228,39,110,9,72,107,91,21,98,96,42,88,31,74,192,250,75,17,172,95,128,248,165,0,224,78,230,65,1,56,115,14,84,25,239,11,128,79,142,166,8,180,248,187,167,132,2,62,255,234,94,234,225,115,
154,107,38,64,223,230,21,136,49,125,42,69,130,196,233,43,137,145,191,196,192,206,154,116,148,167,13,230,224,210,79,226,0,222,253,179,81,41,77,160,244,239,17,96,242,233,163,101,201,227,76,213,92,103,122,216,137,146,221,186,195,110,45,75,239,58,97,232,
73,73,164,255,187,106,255,187,193,158,252,43,78,195,71,193,81,21,184,153,63,59,192,192,222,28,62,45,42,221,160,140,101,67,149,188,200,30,230,227,82,174,105,80,162,25,24,185,48,191,99,252,158,164,17,61,125,131,194,63,147,78,204,203,84,226,191,150,63,90,
58,37,206,91,127,52,87,166,186,244,108,2,19,158,120,53,65,159,116,16,225,14,194,191,16,187,238,220,124,3,205,81,127,1,0,0,0,222,24,216,11,80,16,216,53,212,16,128,11,112,5,0,144,174,29,48,0,56,178,167,67,12,76,77,240,235,224,1,254,125,17,120,56,4,252,
82,0,0,243,163,149,0,48,222,20,0,218,217,45,0,148,89,121,53,164,214,171,169,237,21,69,57,11,23,65,69,43,211,162,17,0,34,166,151,19,148,138,243,150,235,5,226,31,21,0,208,234,84,168,150,26,61,150,119,18,148,54,124,211,182,235,166,68,170,57,148,179,190,
227,51,37,240,125,219,18,201,1,78,254,17,31,0,186,255,235,81,195,152,136,170,58,44,135,37,87,26,99,147,59,131,26,50,142,161,166,235,115,100,18,97,31,241,10,159,3,0,255,107,86,239,139,59,234,250,136,101,128,2,190,165,21,167,84,226,28,253,147,195,40,217,
56,1,48,29,196,103,232,235,190,226,104,59,216,137,1,43,213,16,66,67,116,104,219,37,64,13,78,95,200,200,102,23,68,253,212,162,122,193,176,224,19,193,4,158,120,77,97,41,196,64,226,12,186,191,20,215,220,247,27,28,195,149,67,127,1,2,8,0,224,141,0,47,128,
134,196,21,20,140,49,136,13,38,106,254,0,25,5,176,154,48,163,153,98,13,192,235,196,0,15,103,8,16,53,0,70,0,0,116,198,22,0,96,255,95,9,184,243,144,1,34,132,75,169,68,17,115,60,146,218,75,92,71,177,235,229,227,56,190,187,10,26,156,119,153,160,224,187,124,
174,186,81,190,75,16,115,29,24,54,186,66,152,127,101,231,218,100,34,67,1,178,159,232,99,192,44,133,78,223,128,9,5,59,104,5,96,221,31,137,140,4,230,56,74,200,100,158,19,128,9,214,198,236,6,54,156,180,61,140,232,65,216,86,119,200,174,151,205,209,155,194,
32,127,206,27,93,172,11,21,46,57,180,35,228,152,217,78,83,33,21,135,243,5,86,171,45,8,61,173,88,29,146,236,172,79,50,73,38,243,145,140,58,8,128,219,92,188,63,53,21,40,137,89,218,8,253,8,80,146,65,65,213,128,210,183,73,43,221,0,81,20,0,158,104,117,74,
43,76,70,226,193,159,184,45,208,123,120,77,20,237,95,128,0,2,0,120,51,160,4,182,32,240,37,160,4,36,160,4,108,9,168,69,1,164,142,137,169,102,32,174,192,165,18,224,120,86,128,167,5,244,29,3,0,152,190,215,1,192,174,255,111,2,72,184,32,0,186,171,193,122,
69,245,198,146,99,1,208,211,39,88,17,132,78,206,204,0,96,167,83,164,112,106,189,75,122,232,165,250,189,17,60,14,101,29,203,20,145,230,87,239,22,64,207,125,191,11,35,192,218,120,135,23,96,244,159,75,213,140,133,48,253,226,66,96,36,173,86,90,219,64,45,
34,186,55,178,210,164,97,163,109,125,22,70,31,171,28,58,1,56,206,18,240,203,63,65,32,116,174,159,99,98,169,229,171,66,130,132,153,163,53,212,9,56,41,135,139,17,177,82,233,247,147,123,128,245,237,240,124,207,15,101,78,170,110,89,41,79,45,26,8,34,9,180,
118,129,103,126,125,78,184,86,196,6,194,255,31,15,165,20,86,187,121,44,46,8,83,190,10,54,204,117,158,88,141,97,157,235,5,106,39,92,37,118,115,191,199,171,1,239,47,0,0,0,192,5,43,73,199,195,97,97,209,176,1,52,213,215,134,44,89,33,166,24,139,224,17,251,
7,56,219,190,192,199,128,209,30,112,246,86,115,186,32,28,48,0,41,110,238,90,64,169,231,95,39,1,78,118,235,185,26,96,57,122,203,236,226,213,167,255,75,5,138,167,211,110,30,168,3,39,159,61,70,43,192,143,158,106,231,0,35,15,155,54,35,77,160,251,121,3,236,
245,65,192,22,255,166,56,174,73,50,83,39,12,29,79,58,145,247,110,206,8,34,185,172,239,194,38,239,171,169,123,51,81,109,16,109,36,157,158,47,172,73,1,115,127,125,12,80,24,66,248,76,69,61,216,29,54,103,138,17,150,104,16,196,43,135,55,53,242,123,60,236,
182,237,213,54,41,97,125,235,222,254,88,238,38,23,118,207,101,167,6,114,141,147,181,177,39,197,36,195,24,148,107,220,165,166,24,132,109,195,254,248,204,139,134,194,63,202,0,217,1,126,56,245,65,33,147,219,207,184,139,252,95,216,230,173,226,255,7,84,128,
5,215,159,2,168,56,12,34,1,142,15,30,61,33,223,204,3,180,214,138,64,194,20,59,3,88,207,103,208,255,103,207,80,0,95,233,177,84,138,96,63,159,73,129,191,191,42,64,157,14,229,3,208,243,175,85,149,226,124,150,10,202,98,191,169,44,174,202,183,20,234,76,221,
58,146,4,170,238,165,234,40,195,223,150,149,83,193,149,5,178,223,235,1,83,180,179,2,144,127,124,192,216,75,49,128,251,27,52,8,207,24,154,183,155,99,195,206,92,251,230,149,154,6,92,92,155,11,173,183,66,197,233,26,74,115,87,255,127,87,29,112,27,107,127,
68,90,152,128,155,151,222,237,92,221,49,238,220,142,150,15,234,200,156,2,63,62,226,43,38,74,209,60,58,43,203,165,112,128,171,115,70,166,184,74,253,8,142,100,194,89,9,164,41,16,119,117,37,215,0,251,201,124,32,5,186,186,229,238,216,118,64,147,0,222,56,
109,106,37,247,236,115,239,40,126,197,198,221,228,72,166,131,255,95,0,0,0,128,7,28,128,2,143,247,64,1,72,24,18,205,74,128,236,121,128,188,48,100,207,50,99,136,29,176,127,21,184,135,4,93,5,86,16,5,88,57,51,67,64,0,103,26,128,84,237,167,136,56,202,184,
2,32,68,86,13,150,16,208,183,132,37,229,42,215,172,98,117,240,89,217,64,65,165,21,192,253,59,127,12,30,223,205,164,122,119,164,131,182,234,139,125,36,128,162,35,145,2,248,255,131,207,149,128,105,149,235,193,1,126,184,85,27,238,100,106,17,98,68,67,94,
92,123,92,54,22,109,179,35,231,189,70,140,232,11,205,147,139,118,83,208,132,199,16,32,159,3,202,190,84,198,1,139,109,36,203,190,140,91,87,41,43,109,113,87,244,88,165,193,62,186,91,179,12,166,235,78,68,56,254,67,60,240,248,3,166,65,18,187,245,194,126,
57,225,252,24,95,63,98,66,60,39,52,39,12,226,81,159,211,44,100,103,221,214,121,66,232,235,108,204,47,152,116,0,190,39,149,153,66,22,155,159,93,197,47,93,32,144,129,228,176,63,160,1,206,2,251,31,5,216,122,137,137,126,92,0,128,171,236,210,78,164,138,25,
197,13,250,183,1,88,143,57,39,1,72,28,37,176,20,182,239,35,5,160,94,252,204,57,224,127,143,131,203,237,255,247,202,40,103,117,224,85,83,17,218,127,91,215,0,19,107,16,173,30,36,80,181,193,158,122,132,32,145,19,1,104,187,138,174,1,200,124,84,157,205,152,
198,126,50,101,24,106,88,222,110,99,215,159,73,165,125,232,120,1,217,7,196,31,20,27,158,134,251,78,113,72,36,3,77,147,181,174,79,195,34,147,122,208,73,12,255,235,90,146,137,219,244,146,68,34,166,84,148,148,138,2,47,185,207,213,50,104,254,31,9,184,66,
47,61,192,105,99,137,253,237,66,174,75,95,98,208,34,67,162,154,245,217,84,184,190,76,64,91,28,121,131,76,140,245,187,37,27,149,90,98,126,55,138,176,49,51,157,89,209,244,31,65,2,0,126,72,245,118,159,201,17,42,119,147,127,132,244,14,181,1,238,47,0,0,0,
192,27,1,74,64,32,113,88,93,160,142,68,82,49,53,86,170,20,83,148,214,67,255,181,28,120,186,110,130,75,93,192,129,22,0,236,201,95,8,0,238,227,203,4,5,186,251,39,7,20,203,49,17,103,242,243,69,158,137,227,126,251,129,60,13,48,159,221,4,64,107,199,236,166,
2,225,219,165,47,56,71,96,198,252,191,112,2,128,174,9,114,93,43,131,68,204,84,11,249,146,221,238,230,230,138,104,168,80,179,125,97,160,42,149,218,147,220,71,238,228,20,249,1,128,31,230,40,21,245,69,12,162,20,232,255,227,192,228,77,84,231,30,172,187,138,
25,181,174,247,15,75,37,17,203,236,121,92,158,158,147,36,110,207,138,82,6,1,198,7,249,254,242,156,203,251,114,123,54,152,225,188,240,221,21,149,32,144,219,88,155,17,116,67,234,133,134,36,98,186,225,156,242,89,146,100,242,86,90,154,127,188,180,44,103,
21,116,184,96,209,101,233,187,235,19,0,79,103,103,83,0,4,86,233,0,0,0,0,0,0,153,3,97,43,5,0,0,0,169,30,118,253,11,242,245,243,234,245,243,240,234,242,223,194,30,72,213,86,157,9,67,180,34,220,70,247,43,104,77,212,247,23,0,96,0,192,123,5,140,18,24,97,17,
87,48,198,161,99,155,128,90,0,116,172,3,61,195,20,99,1,124,191,0,87,167,77,48,56,93,192,127,0,80,0,209,38,0,96,203,175,237,1,100,249,96,3,2,190,26,168,49,102,141,92,63,105,57,202,143,109,1,119,194,11,139,130,47,244,87,4,0,189,165,61,56,196,122,45,21,
237,8,49,33,16,143,188,93,33,224,234,178,199,2,2,97,211,38,29,0,28,169,5,32,66,242,175,178,64,174,175,52,185,62,149,148,14,66,52,230,71,253,128,181,240,249,196,3,173,28,23,98,246,136,194,227,148,121,130,159,115,60,224,158,95,139,206,216,145,11,27,156,
212,219,14,189,85,116,238,71,93,228,142,172,200,171,203,231,161,176,145,197,60,50,46,94,218,231,190,33,143,210,166,10,104,16,113,129,68,108,62,161,170,238,246,47,59,101,129,221,10,255,45,242,240,118,248,243,74,115,21,160,219,208,41,224,1,30,72,53,153,
58,33,73,184,11,71,54,238,92,137,225,126,127,1,0,0,0,94,3,74,64,160,224,18,21,52,20,172,13,80,249,137,136,196,84,51,69,221,25,124,223,47,193,175,59,1,122,31,96,173,24,0,9,212,155,1,0,136,159,9,208,88,175,82,1,120,62,22,72,197,189,205,51,160,212,50,247,
154,212,48,112,218,16,124,1,223,155,104,17,149,177,161,174,212,185,53,61,2,251,206,169,116,1,176,113,221,251,34,0,14,119,235,64,74,25,14,196,133,169,78,142,15,227,67,125,180,202,35,152,50,34,78,236,195,43,241,202,205,239,81,31,121,15,165,13,100,210,76,
56,103,64,163,55,205,96,163,67,121,182,23,50,139,42,225,75,4,253,136,137,229,118,22,101,93,194,198,238,137,188,61,64,223,106,195,230,172,163,222,180,14,4,73,94,98,64,79,109,147,213,46,233,181,94,3,228,149,60,188,86,95,241,203,177,195,187,135,123,99,202,
75,50,92,138,28,38,75,140,214,237,26,189,244,67,26,93,47,171,230,54,85,2,126,56,45,65,154,49,160,121,39,190,162,83,238,247,16,152,208,247,23,0,0,0,224,130,79,14,15,135,197,160,227,161,77,107,84,164,239,9,67,113,86,66,255,165,10,214,127,118,3,131,97,96,
157,12,0,159,179,31,1,234,234,22,192,169,7,243,9,192,240,53,19,64,238,154,79,178,20,126,192,54,221,68,91,173,237,55,53,192,57,48,211,74,21,120,112,181,209,13,192,245,45,31,38,1,24,181,46,212,106,1,97,81,60,160,209,27,27,58,123,181,193,97,65,108,118,245,
15,150,159,234,221,79,137,91,111,180,21,106,159,7,229,236,155,231,39,80,100,53,29,66,90,19,51,90,226,57,112,117,103,248,123,174,152,27,107,176,118,207,108,217,169,19,119,2,140,89,174,128,111,168,56,66,195,249,247,61,118,200,210,40,158,12,69,153,172,177,
93,202,117,109,160,205,175,157,49,109,151,69,30,220,241,165,223,104,235,159,175,149,168,226,93,12,140,233,147,9,61,119,79,222,247,56,192,202,10,11,77,7,152,99,47,8,0,62,24,117,106,197,218,225,227,158,186,31,97,187,2,111,132,126,127,0,128,3,236,31,12,
64,197,134,53,250,161,134,228,65,69,111,100,35,124,99,41,182,35,244,159,13,124,195,172,25,0,30,30,142,117,9,96,156,95,8,194,233,223,84,40,250,203,173,128,143,159,242,174,53,133,225,84,66,29,154,222,255,60,27,96,137,243,50,121,172,18,216,116,248,11,14,
35,9,71,85,4,144,111,234,192,123,249,162,130,183,27,158,196,212,8,154,212,135,247,209,214,143,212,176,132,193,106,111,163,183,62,142,218,87,137,14,187,186,38,99,179,77,199,183,229,63,38,180,7,83,127,112,174,144,205,120,177,30,149,160,38,8,164,196,233,
14,235,185,90,147,179,213,71,251,104,186,13,116,61,200,48,170,138,234,143,16,63,161,16,151,148,245,200,122,67,83,110,37,167,155,8,69,233,46,37,175,117,114,71,49,176,77,16,86,61,107,212,150,250,104,77,125,159,110,154,128,248,183,255,225,3,177,113,238,
27,30,248,172,182,39,151,230,181,15,253,20,220,140,13,248,253,2,0,0,0,60,160,6,20,144,188,7,18,80,194,68,179,2,84,181,90,203,130,100,198,129,51,216,175,12,120,121,13,86,25,32,8,0,200,254,92,9,9,235,162,25,7,226,91,190,136,83,181,215,1,40,165,205,144,
214,74,20,57,92,24,132,177,38,170,134,11,119,54,90,68,145,252,84,135,170,180,244,152,192,93,12,80,157,46,137,5,176,68,214,207,8,9,55,87,116,80,52,10,44,230,237,182,225,229,25,88,173,254,203,121,128,243,87,227,47,174,252,16,18,93,142,157,22,58,189,182,
138,86,186,151,13,134,29,60,125,161,153,68,127,62,191,104,60,254,35,29,94,160,79,148,13,174,198,77,170,213,18,31,230,36,44,147,175,53,144,198,8,171,100,154,94,178,224,92,199,45,16,243,34,227,245,138,108,45,174,133,193,91,148,179,173,54,173,189,190,190,
108,233,90,179,197,50,230,202,220,38,124,207,73,21,92,96,13,151,89,210,214,102,88,177,12,232,169,216,0,158,248,108,170,39,119,249,59,55,117,139,237,228,65,6,250,253,1,21,224,12,184,254,148,96,71,75,12,34,143,79,224,64,83,53,234,72,148,98,197,216,41,194,
122,182,1,239,17,37,2,192,103,94,147,179,82,36,183,95,22,128,241,245,157,20,48,217,150,66,193,217,182,249,28,33,234,217,23,215,21,85,225,242,44,74,96,76,23,249,99,191,38,152,209,219,130,4,248,229,184,36,34,182,71,5,136,129,215,138,182,120,90,100,147,
123,62,10,33,101,81,156,62,199,244,207,192,204,118,132,191,234,96,81,46,24,168,63,65,9,91,76,85,113,47,44,158,72,190,163,16,184,65,214,91,52,123,75,94,87,54,162,14,230,96,131,227,129,218,160,216,53,59,50,14,4,31,124,200,185,21,150,11,64,73,23,211,168,
220,69,133,168,136,192,49,83,111,183,185,6,179,234,161,72,83,51,194,243,40,86,173,193,189,132,199,17,33,164,241,96,172,79,69,156,85,110,218,242,10,227,40,213,41,193,156,237,136,185,233,169,170,64,209,1,158,7,213,65,34,19,230,229,73,190,105,142,12,244,
255,5,0,52,0,192,3,60,128,0,56,44,12,160,67,51,86,182,49,34,85,138,112,108,35,120,83,5,253,165,8,60,5,176,56,20,160,72,30,26,41,0,84,151,121,72,85,171,75,27,0,181,154,3,5,151,108,183,206,1,98,252,252,127,78,197,113,61,238,13,104,243,241,159,239,18,193,
131,182,155,19,19,4,243,87,36,77,137,0,7,14,63,86,45,8,72,13,37,128,166,19,44,224,214,119,90,165,118,37,67,145,83,154,249,11,41,41,39,71,169,88,248,82,118,176,129,145,49,42,40,177,174,6,13,225,155,253,242,138,222,120,53,37,62,212,98,142,59,50,176,177,
70,88,91,96,180,214,120,111,43,192,232,181,75,137,30,179,180,189,190,179,137,18,202,23,128,180,107,193,100,211,223,217,92,158,21,86,15,7,114,60,98,68,155,20,78,135,125,211,126,56,3,76,130,112,171,123,166,1,156,13,80,186,224,209,186,203,37,209,149,192,
0,225,112,17,41,94,8,173,138,39,89,251,107,147,252,163,227,161,102,100,192,247,11,48,0,0,224,42,124,65,2,14,22,68,1,84,85,195,62,27,197,140,250,25,188,214,76,240,116,45,112,92,192,90,37,0,184,99,36,64,212,125,47,129,66,140,199,83,0,124,255,58,5,94,63,
142,93,139,170,129,85,75,56,168,31,188,158,34,0,181,238,122,74,96,182,179,47,147,0,172,208,57,47,57,64,42,126,199,154,70,175,48,254,77,7,193,208,78,167,24,52,14,229,12,249,179,136,51,175,133,215,85,77,106,204,150,206,116,120,161,35,252,149,9,218,135,
7,139,210,241,36,222,226,231,125,205,220,125,196,34,122,111,228,136,149,177,148,184,224,99,93,187,169,223,202,117,121,179,237,105,95,51,3,165,187,226,209,161,31,127,224,153,3,116,18,32,212,132,61,150,123,42,189,13,105,254,61,23,176,83,140,253,250,132,
120,50,141,165,118,40,41,3,171,33,242,98,164,54,163,146,185,63,217,48,208,10,157,0,0,62,248,108,156,155,140,132,76,186,105,208,140,77,112,247,23,0,0,0,224,26,70,104,128,131,213,1,160,250,146,214,6,100,39,4,195,84,240,122,16,224,238,18,244,193,0,153,3,
133,83,98,217,112,41,149,118,199,226,32,212,147,77,142,66,152,23,173,194,28,191,95,116,133,234,135,211,218,104,65,251,190,212,10,113,169,206,141,7,54,159,74,105,6,136,82,235,142,43,236,3,38,225,201,84,58,109,133,82,4,84,228,246,76,89,94,67,7,207,161,
229,191,78,34,206,19,27,53,53,107,7,45,183,196,200,156,119,18,171,38,184,50,17,93,8,110,121,87,114,129,46,10,169,122,251,2,117,132,86,14,158,220,18,169,5,98,218,110,188,201,207,92,116,116,135,244,240,29,183,212,172,226,28,232,184,111,74,92,102,107,150,
88,22,198,103,5,95,8,22,235,194,153,219,228,65,131,113,7,233,103,73,208,188,117,95,33,206,176,150,75,217,50,27,127,80,37,127,179,214,215,63,169,89,6,86,240,85,11,101,245,196,4,0,254,71,92,32,37,151,188,188,171,181,89,119,41,69,134,235,189,30,39,246,31,
189,19,176,83,92,162,58,191,116,144,150,133,18,81,225,231,186,128,18,48,187,43,177,170,148,119,239,187,9,133,73,50,110,61,116,33,147,62,63,191,73,69,6,44,102,150,9,245,87,207,248,183,8,140,123,253,84,80,125,34,62,35,15,201,196,126,139,81,99,21,118,63,
164,191,146,125,158,60,67,207,251,105,81,145,1,80,9,83,34,178,134,20,178,221,14,178,154,83,199,88,227,57,55,83,182,119,231,173,192,243,72,225,150,155,253,2,109,98,71,25,0,227,164,144,238,143,175,108,35,1,118,99,211,240,172,1,249,60,9,80,230,133,187,229,
173,133,21,245,23,198,51,22,53,139,218,245,194,155,154,226,121,139,13,45,89,116,184,161,102,30,155,122,186,49,116,243,6,133,225,46,83,166,169,69,5,39,171,254,225,150,7,216,67,66,200,101,188,136,110,11,76,11,190,101,252,26,235,105,114,115,44,62,55,251,
112,24,99,7,48,142,149,198,210,172,4,3,248,152,255,53,158,13,95,77,121,237,99,46,196,47,127,127,188,73,69,227,250,149,189,227,167,204,131,102,203,138,99,150,31,241,28,2,73,206,107,155,179,120,172,31,229,203,98,2,152,219,227,224,97,91,147,163,108,103,
102,81,253,210,18,121,170,117,172,56,213,146,169,168,46,116,179,51,168,117,66,83,118,98,75,78,88,148,189,12,239,170,0,181,191,185,98,204,4,45,187,162,119,247,211,196,243,183,240,61,249,115,215,71,125,113,63,162,254,236,204,136,194,2,184,65,138,1,48,126,
247,228,53,121,141,240,61,220,139,86,173,97,52,252,15,72,24,94,185,252,60,242,192,233,6,127,186,6,180,170,6,32,120,243,150,75,106,85,48,42,118,6,0,0 };
const char* singing_ogg = (const char*) temp_binary_data_1;
const char* getNamedResource (const char*, int&) throw();
const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw()
{
unsigned int hash = 0;
if (resourceNameUTF8 != 0)
while (*resourceNameUTF8 != 0)
hash = 31 * hash + (unsigned int) *resourceNameUTF8++;
switch (hash)
{
case 0xb1ef755b: numBytes = 452; return proaudio_path;
case 0x09d82643: numBytes = 19215; return singing_ogg;
default: break;
}
numBytes = 0;
return 0;
}
const char* namedResourceList[] =
{
"proaudio_path",
"singing_ogg"
};
}

View file

@ -0,0 +1,29 @@
/* =========================================================================================
This is an auto-generated file: Any edits you make may be overwritten!
*/
#ifndef BINARYDATA_H_43410497_INCLUDED
#define BINARYDATA_H_43410497_INCLUDED
namespace BinaryData
{
extern const char* proaudio_path;
const int proaudio_pathSize = 452;
extern const char* singing_ogg;
const int singing_oggSize = 19215;
// Points to the start of a list of resource names.
extern const char* namedResourceList[];
// Number of elements in the namedResourceList array.
const int namedResourceListSize = 2;
// If you provide the name of one of the binary resource variables above, this function will
// return the corresponding data and its size (or a null pointer if the name isn't found).
const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw();
}
#endif

View file

@ -0,0 +1,48 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This is the header file that your files should include in order to get all the
JUCE library headers. You should avoid including the JUCE headers directly in
your own source files, because that wouldn't pick up the correct configuration
options for your app.
*/
#ifndef __APPHEADERFILE_NAPIAV__
#define __APPHEADERFILE_NAPIAV__
#include "AppConfig.h"
#include <juce_audio_basics/juce_audio_basics.h>
#include <juce_audio_devices/juce_audio_devices.h>
#include <juce_audio_formats/juce_audio_formats.h>
#include <juce_audio_plugin_client/juce_audio_plugin_client.h>
#include <juce_audio_processors/juce_audio_processors.h>
#include <juce_audio_utils/juce_audio_utils.h>
#include <juce_core/juce_core.h>
#include <juce_data_structures/juce_data_structures.h>
#include <juce_events/juce_events.h>
#include <juce_graphics/juce_graphics.h>
#include <juce_gui_basics/juce_gui_basics.h>
#include <juce_gui_extra/juce_gui_extra.h>
#include "BinaryData.h"
#if ! DONT_SET_USING_JUCE_NAMESPACE
// If your code uses a lot of JUCE classes, then this will obviously save you
// a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE.
using namespace juce;
#endif
#if ! JUCE_DONT_DECLARE_PROJECTINFO
namespace ProjectInfo
{
const char* const projectName = "AUv3Synth";
const char* const versionString = "1.0.0";
const int versionNumber = 0x10000;
}
#endif
#endif // __APPHEADERFILE_NAPIAV__

View file

@ -2,11 +2,11 @@
Important Note!!
================
The purpose of this folder is to contain files that are auto-generated by the Introjucer,
The purpose of this folder is to contain files that are auto-generated by the Projucer,
and ALL files in this folder will be mercilessly DELETED and completely re-written whenever
the Introjucer saves your project.
the Projucer saves your project.
Therefore, it's a bad idea to make any manual changes to the files in here, or to
put any of your own files in here if you don't want to lose them. (Of course you may choose
to add the folder's contents to your version-control system so that you can re-merge your own
modifications after the Introjucer has saved its changes).
modifications after the Projucer has saved its changes).

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_basics/juce_audio_basics.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_basics/juce_audio_basics.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_devices/juce_audio_devices.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_devices/juce_audio_devices.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_formats/juce_audio_formats.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_formats/juce_audio_formats.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_AAX.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_AAX.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_AU_1.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_AU_2.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_AUv3.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_RTAS_1.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_RTAS_2.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_RTAS_3.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_RTAS_4.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_RTAS_utils.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_RTAS_utils.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_Standalone.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_VST_utils.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_plugin_client/juce_audio_plugin_client_utils.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_processors/juce_audio_processors.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_processors/juce_audio_processors.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_utils/juce_audio_utils.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_utils/juce_audio_utils.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_core/juce_core.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_core/juce_core.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_data_structures/juce_data_structures.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_data_structures/juce_data_structures.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_events/juce_events.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_events/juce_events.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_graphics/juce_graphics.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_graphics/juce_graphics.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_gui_basics/juce_gui_basics.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_gui_basics/juce_gui_basics.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_gui_extra/juce_gui_extra.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_gui_extra/juce_gui_extra.mm>

View file

@ -0,0 +1,142 @@
/*
==============================================================================
Copyright (c) 2015 - ROLI Ltd.
==============================================================================
*/
#include "MaterialLookAndFeel.h"
//==============================================================================
class AUv3SynthEditor : public AudioProcessorEditor,
public ButtonListener,
public Slider::Listener,
private Timer
{
public:
//==============================================================================
AUv3SynthEditor (AudioProcessor& processor)
: AudioProcessorEditor (processor),
recordButton ("Record"),
roomSizeSlider (Slider::LinearHorizontal, Slider::NoTextBox)
{
LookAndFeel::setDefaultLookAndFeel (&materialLookAndFeel);
roomSizeSlider.setValue (getParameterValue ("roomSize"), NotificationType::dontSendNotification);
recordButton.addListener (this);
addAndMakeVisible (recordButton);
roomSizeSlider.addListener (this);
roomSizeSlider.setRange (0.0, 1.0);
addAndMakeVisible (roomSizeSlider);
Path proAudioPath;
proAudioPath.loadPathFromData (BinaryData::proaudio_path, BinaryData::proaudio_pathSize);
proAudioIcon.setPath (proAudioPath);
addAndMakeVisible (proAudioIcon);
Colour proAudioIconColour = findColour (TextButton::buttonOnColourId);
proAudioIcon.setFill (FillType (proAudioIconColour));
setSize (600, 400);
startTimer (100);
}
//==============================================================================
void paint (Graphics& g) override
{
g.fillAll (findColour (ResizableWindow::backgroundColourId));
}
void resized() override
{
Rectangle<int> r = getLocalBounds();
int guiElementAreaHeight = r.getHeight() / 3;
proAudioIcon.setTransformToFit (r.removeFromLeft (proportionOfWidth (0.25))
.withSizeKeepingCentre (guiElementAreaHeight, guiElementAreaHeight)
.toFloat(),
RectanglePlacement::fillDestination);
int margin = guiElementAreaHeight / 4;
r.reduce (margin, margin);
int buttonHeight = guiElementAreaHeight - margin;
recordButton.setBounds (r.removeFromTop (guiElementAreaHeight).withSizeKeepingCentre (r.getWidth(), buttonHeight));
roomSizeSlider.setBounds (r.removeFromTop (guiElementAreaHeight).withSizeKeepingCentre (r.getWidth(), buttonHeight));
}
//==============================================================================
void buttonClicked (Button* button) override
{
if (button == &recordButton)
{
recordButton.setEnabled (false);
setParameterValue ("isRecording", 1.0f);
}
}
void sliderValueChanged (Slider*) override
{
setParameterValue ("roomSize", roomSizeSlider.getValue());
}
private:
//==============================================================================
void timerCallback() override
{
bool isRecordingNow = (getParameterValue ("isRecording") >= 0.5f);
recordButton.setEnabled (! isRecordingNow);
roomSizeSlider.setValue (getParameterValue ("roomSize"), NotificationType::dontSendNotification);
}
//==============================================================================
AudioProcessorParameter* getParameter (const String& paramId)
{
if (AudioProcessor* processor = getAudioProcessor())
{
const OwnedArray<AudioProcessorParameter>& params = processor->getParameters();
for (int i = 0; i < params.size(); ++i)
{
if (AudioProcessorParameterWithID* param = dynamic_cast<AudioProcessorParameterWithID*> (params[i]))
{
if (param->paramID == paramId)
return param;
}
}
}
return nullptr;
}
//==============================================================================
float getParameterValue (const String& paramId)
{
if (AudioProcessorParameter* param = getParameter (paramId))
return param->getValue();
return 0.0f;
}
void setParameterValue (const String& paramId, float value)
{
if (AudioProcessorParameter* param = getParameter (paramId))
param->setValueNotifyingHost (value);
}
//==============================================================================
MaterialLookAndFeel materialLookAndFeel;
//==============================================================================
TextButton recordButton;
Slider roomSizeSlider;
DrawablePath proAudioIcon;
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AUv3SynthEditor)
};

View file

@ -0,0 +1,172 @@
/*
==============================================================================
Copyright (c) 2015 - ROLI Ltd.
==============================================================================
*/
#include "../JuceLibraryCode/JuceHeader.h"
#include "AUv3SynthEditor.h"
class AUv3SynthProcessor : public AudioProcessor
{
public:
AUv3SynthProcessor ()
: currentRecording (1, 1), currentProgram (0)
{
// initialize parameters
addParameter (isRecordingParam = new AudioParameterBool ("isRecording", "Is Recording", false));
addParameter (roomSizeParam = new AudioParameterFloat ("roomSize", "Room Size", 0.0f, 1.0f, 0.5f));
formatManager.registerBasicFormats();
for (int i = 0; i < maxNumVoices; ++i)
synth.addVoice (new SamplerVoice());
loadNewSample (BinaryData::singing_ogg, BinaryData::singing_oggSize, "ogg");
}
//==============================================================================
void prepareToPlay (double sampleRate, int estimatedMaxSizeOfBuffer) override
{
ignoreUnused (estimatedMaxSizeOfBuffer);
lastSampleRate = sampleRate;
currentRecording.setSize (1, static_cast<int> (std::ceil (kMaxDurationOfRecording * lastSampleRate)));
samplesRecorded = 0;
synth.setCurrentPlaybackSampleRate (lastSampleRate);
reverb.setSampleRate (lastSampleRate);
}
void processBlock (AudioBuffer<float>& buffer, MidiBuffer& midiMessages) override
{
Reverb::Parameters reverbParameters;
reverbParameters.roomSize = roomSizeParam->get();
reverb.setParameters (reverbParameters);
synth.renderNextBlock (buffer, midiMessages, 0, buffer.getNumSamples());
if (getMainBusNumOutputChannels() == 1)
reverb.processMono (buffer.getWritePointer (0), buffer.getNumSamples());
else if (getMainBusNumOutputChannels() == 2)
reverb.processStereo (buffer.getWritePointer (0), buffer.getWritePointer (1), buffer.getNumSamples());
}
//==============================================================================
void releaseResources() override { currentRecording.setSize (1, 1); }
//==============================================================================
bool acceptsMidi() const override { return true; }
bool producesMidi() const override { return false; }
bool silenceInProducesSilenceOut() const override { return false; }
double getTailLengthSeconds() const override { return 0.0; }
//==============================================================================
AudioProcessorEditor* createEditor() override { return new AUv3SynthEditor (*this); }
bool hasEditor() const override { return true; }
//==============================================================================
const String getName() const override { return "AUv3 Synth"; }
int getNumPrograms() override { return 4; }
int getCurrentProgram() override { return currentProgram; }
void setCurrentProgram (int index) override { currentProgram = index; }
const String getProgramName (int index) override
{
switch (index)
{
case 0:
return "Piano";
case 1:
return "Singing";
case 2:
return "Pinched Balloon";
case 3:
return "Gazeebo";
}
return "<Unknown>";
}
//==============================================================================
void changeProgramName (int /*index*/, const String& /*name*/) override {}
//==============================================================================
void getStateInformation (MemoryBlock& destData) override
{
MemoryOutputStream stream (destData, true);
stream.writeFloat (*isRecordingParam);
stream.writeFloat (*roomSizeParam);
}
void setStateInformation (const void* data, int sizeInBytes) override
{
MemoryInputStream stream (data, static_cast<size_t> (sizeInBytes), false);
isRecordingParam->setValueNotifyingHost (stream.readFloat());
roomSizeParam->setValueNotifyingHost (stream.readFloat());
}
private:
//==============================================================================
void loadNewSample (const void* data, int dataSize, const char* format)
{
MemoryInputStream* soundBuffer = new MemoryInputStream (data, static_cast<std::size_t> (dataSize), false);
ScopedPointer<AudioFormatReader> formatReader (formatManager.findFormatForFileExtension (format)->createReaderFor (soundBuffer, true));
BigInteger midiNotes;
midiNotes.setRange (0, 126, true);
SynthesiserSound::Ptr newSound = new SamplerSound ("Voice", *formatReader, midiNotes, 0x40, 0.0, 0.0, 10.0);
synth.removeSound (0);
sound = newSound;
synth.addSound (sound);
}
void swapSamples()
{
MemoryBlock mb;
MemoryOutputStream* stream = new MemoryOutputStream (mb, true);
{
ScopedPointer<AudioFormatWriter> writer (formatManager.findFormatForFileExtension ("wav")->createWriterFor (stream, lastSampleRate, 1, 16,
StringPairArray(), 0));
writer->writeFromAudioSampleBuffer (currentRecording, 0, currentRecording.getNumSamples());
writer->flush();
stream->flush();
}
loadNewSample (mb.getData(), static_cast<int> (mb.getSize()), "wav");
}
//==============================================================================
static constexpr int maxNumVoices = 5;
static constexpr double kMaxDurationOfRecording = 1.0;
//==============================================================================
AudioFormatManager formatManager;
int samplesRecorded;
double lastSampleRate;
AudioBuffer<float> currentRecording;
Reverb reverb;
Synthesiser synth;
SynthesiserSound::Ptr sound;
AudioParameterBool* isRecordingParam;
AudioParameterFloat* roomSizeParam;
int currentProgram;
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AUv3SynthProcessor)
};
//==============================================================================
// This creates new instances of the plugin..
AudioProcessor* JUCE_CALLTYPE createPluginFilter()
{
return new AUv3SynthProcessor();
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,133 @@
/*
==============================================================================
Copyright (c) 2015 - ROLI Ltd.
==============================================================================
*/
#include "../JuceLibraryCode/JuceHeader.h"
//==============================================================================
class MaterialLookAndFeel : public LookAndFeel_V3
{
public:
//==============================================================================
MaterialLookAndFeel()
{
setColour (ResizableWindow::backgroundColourId, windowBackgroundColour);
setColour (TextButton::buttonOnColourId, brightButtonColour);
setColour (TextButton::buttonColourId, disabledButtonColour);
}
//==============================================================================
void drawButtonBackground (Graphics& g,
Button& button,
const Colour& /*backgroundColour*/,
bool isMouseOverButton,
bool isButtonDown) override
{
ignoreUnused (isMouseOverButton);
const int width = button.getWidth();
const int height = button.getHeight();
Rectangle<float> buttonRect (0, 0, width, height);
buttonRect.reduce (haloRadius, 0.0f);
if (isButtonDown)
g.setColour (brightButtonColour.withAlpha (0.7f));
else if (! button.isEnabled())
g.setColour (disabledButtonColour);
else
g.setColour (brightButtonColour);
g.fillRoundedRectangle (buttonRect, 5.0f);
}
//==============================================================================
void drawButtonText (Graphics& g, TextButton& button, bool isMouseOverButton, bool isButtonDown) override
{
ignoreUnused (isMouseOverButton, isButtonDown);
Font font (getTextButtonFont (button, button.getHeight()));
g.setFont (font);
if (button.isEnabled())
g.setColour (Colours::white);
else
g.setColour (backgroundColour);
g.drawFittedText (button.getButtonText(), 0, 1,
button.getWidth(),
button.getHeight(),
Justification::centred, 2);
}
//==============================================================================
void drawLinearSlider (Graphics& g, int x, int y, int width, int height,
float sliderPos, float minSliderPos, float maxSliderPos,
const Slider::SliderStyle style, Slider& slider) override
{
ignoreUnused (style, minSliderPos, maxSliderPos);
Rectangle<int> r = Rectangle<int> (x + haloRadius, y, width - (haloRadius * 2), height);
Rectangle<int> backgroundBar = r.withSizeKeepingCentre(r.getWidth(), 2);
sliderPos = (sliderPos - minSliderPos) / static_cast<float> (width);
int knobPos = static_cast<int> (sliderPos * r.getWidth());
g.setColour (sliderActivePart);
g.fillRect (backgroundBar.removeFromLeft (knobPos));
g.setColour (sliderInactivePart);
g.fillRect (backgroundBar);
if (slider.isMouseOverOrDragging())
{
Rectangle<int> haloBounds = r.withTrimmedLeft (knobPos - haloRadius)
.withWidth (haloRadius*2)
.withSizeKeepingCentre(haloRadius*2, haloRadius*2);
g.setColour (sliderActivePart.withAlpha (0.5f));
g.fillEllipse (haloBounds.toFloat());
}
const int knobRadius = slider.isMouseOverOrDragging() ? knobActiveRadius : knobInActiveRadius;
Rectangle<int> knobBounds = r.withTrimmedLeft (knobPos - knobRadius)
.withWidth (knobRadius*2)
.withSizeKeepingCentre(knobRadius*2, knobRadius*2);
g.setColour (sliderActivePart);
g.fillEllipse (knobBounds.toFloat());
}
//==============================================================================
Font getTextButtonFont (TextButton& button, int buttonHeight) override
{
return LookAndFeel_V3::getTextButtonFont (button, buttonHeight).withHeight (buttonFontSize);
}
Font getLabelFont (Label& label) override
{
return LookAndFeel_V3::getLabelFont (label).withHeight (labelFontSize);
}
//==============================================================================
const int labelFontSize = 12;
const int buttonFontSize = 15;
//==============================================================================
const int knobActiveRadius = 12;
const int knobInActiveRadius = 8;
const int haloRadius = 18;
//==============================================================================
const Colour windowBackgroundColour = Colour (0xff262328);
const Colour backgroundColour = Colour (0xff4d4d4d);
const Colour brightButtonColour = Colour (0xff80cbc4);
const Colour disabledButtonColour = Colour (0xffe4e4e4);
const Colour sliderInactivePart = Colour (0xff545d62);
const Colour sliderActivePart = Colour (0xff80cbc4);
};

View file

@ -2,7 +2,7 @@
<JUCERPROJECT id="LrATE6" name="AnimationAppExample" projectType="guiapp" version="1.0.0"
bundleIdentifier="com.yourcompany.AnimationAppExample" includeBinaryInAppConfig="1"
jucerVersion="4.1.0">
jucerVersion="4.2.0">
<MAINGROUP id="F3keCY" name="AnimationAppExample">
<GROUP id="{5E4132EA-C4A0-CBDE-BEDA-FD6772DA79D5}" name="Source">
<FILE id="n1FmZc" name="MainComponent.cpp" compile="1" resource="0"
@ -34,7 +34,7 @@
<MODULEPATH id="juce_audio_processors" path="../../modules"/>
</MODULEPATHS>
</XCODE_MAC>
<XCODE_IPHONE targetFolder="Builds/iOS">
<XCODE_IPHONE targetFolder="Builds/iOS" iosScreenOrientation="portraitlandscape">
<CONFIGURATIONS>
<CONFIGURATION name="Debug" iosCompatibility="default" isDebug="1" optimisation="1"
targetName="AnimationAppExample"/>

View file

@ -11,6 +11,8 @@
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleName</key>
<string>AnimationAppExample</string>
<key>CFBundleDisplayName</key>
<string>AnimationAppExample</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>

View file

@ -13,6 +13,8 @@
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleName</key>
<string>AnimationAppExample</string>
<key>CFBundleDisplayName</key>
<string>AnimationAppExample</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
@ -27,12 +29,15 @@
<true/>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIBackgroundModes</key>
<array/>
</dict>
</plist>

View file

@ -4,8 +4,8 @@
project - if you alter its contents, your changes may be overwritten!
There's a section below where you can add your own custom code safely, and the
Introjucer will preserve the contents of that block, but the best way to change
any of these definitions is by using the Introjucer's project settings.
Projucer will preserve the contents of that block, but the best way to change
any of these definitions is by using the Projucer's project settings.
Any commented-out settings will assume their default values.
@ -17,7 +17,7 @@
//==============================================================================
// [BEGIN_USER_CODE_SECTION]
// (You can add your own code in this section, and the Introjucer will not overwrite it)
// (You can add your own code in this section, and the Projucer will not overwrite it)
// [END_USER_CODE_SECTION]
@ -38,9 +38,15 @@
//==============================================================================
#ifndef JUCE_STANDALONE_APPLICATION
#define JUCE_STANDALONE_APPLICATION 1
#ifdef JucePlugin_Build_Standalone
#define JUCE_STANDALONE_APPLICATION JucePlugin_Build_Standalone
#else
#define JUCE_STANDALONE_APPLICATION 1
#endif
#endif
#define JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED 1
//==============================================================================
// juce_audio_devices flags:

View file

@ -14,19 +14,21 @@
#define __APPHEADERFILE_LRATE6__
#include "AppConfig.h"
#include "modules/juce_audio_basics/juce_audio_basics.h"
#include "modules/juce_audio_devices/juce_audio_devices.h"
#include "modules/juce_audio_formats/juce_audio_formats.h"
#include "modules/juce_audio_processors/juce_audio_processors.h"
#include "modules/juce_core/juce_core.h"
#include "modules/juce_cryptography/juce_cryptography.h"
#include "modules/juce_data_structures/juce_data_structures.h"
#include "modules/juce_events/juce_events.h"
#include "modules/juce_graphics/juce_graphics.h"
#include "modules/juce_gui_basics/juce_gui_basics.h"
#include "modules/juce_gui_extra/juce_gui_extra.h"
#include "modules/juce_opengl/juce_opengl.h"
#include "modules/juce_video/juce_video.h"
#include <juce_audio_basics/juce_audio_basics.h>
#include <juce_audio_devices/juce_audio_devices.h>
#include <juce_audio_formats/juce_audio_formats.h>
#include <juce_audio_processors/juce_audio_processors.h>
#include <juce_core/juce_core.h>
#include <juce_cryptography/juce_cryptography.h>
#include <juce_data_structures/juce_data_structures.h>
#include <juce_events/juce_events.h>
#include <juce_graphics/juce_graphics.h>
#include <juce_gui_basics/juce_gui_basics.h>
#include <juce_gui_extra/juce_gui_extra.h>
#include <juce_opengl/juce_opengl.h>
#include <juce_video/juce_video.h>
#if ! DONT_SET_USING_JUCE_NAMESPACE
// If your code uses a lot of JUCE classes, then this will obviously save you

View file

@ -2,11 +2,11 @@
Important Note!!
================
The purpose of this folder is to contain files that are auto-generated by the Introjucer,
The purpose of this folder is to contain files that are auto-generated by the Projucer,
and ALL files in this folder will be mercilessly DELETED and completely re-written whenever
the Introjucer saves your project.
the Projucer saves your project.
Therefore, it's a bad idea to make any manual changes to the files in here, or to
put any of your own files in here if you don't want to lose them. (Of course you may choose
to add the folder's contents to your version-control system so that you can re-merge your own
modifications after the Introjucer has saved its changes).
modifications after the Projucer has saved its changes).

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_basics/juce_audio_basics.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_basics/juce_audio_basics.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_devices/juce_audio_devices.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_devices/juce_audio_devices.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_formats/juce_audio_formats.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_formats/juce_audio_formats.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_processors/juce_audio_processors.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_audio_processors/juce_audio_processors.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_core/juce_core.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_core/juce_core.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_cryptography/juce_cryptography.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_cryptography/juce_cryptography.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_data_structures/juce_data_structures.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_data_structures/juce_data_structures.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_events/juce_events.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_events/juce_events.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_graphics/juce_graphics.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_graphics/juce_graphics.mm>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_gui_basics/juce_gui_basics.cpp>

View file

@ -0,0 +1,9 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
*/
#include "AppConfig.h"
#include <juce_gui_basics/juce_gui_basics.mm>

Some files were not shown because too many files have changed in this diff Show more