├── channel.PNG ├── apc40-mapping ├── images │ ├── options.png │ ├── buttonpage.PNG │ └── resolution.png ├── apc40-plugin.xml ├── sysexApc40InitOK.txt ├── sysexApc40InitCheck.txt ├── apc40-macros.xml ├── README.md ├── apc40Mapping.bmtp ├── apc40-midi.xml ├── apc40-mapper.lua └── apc40-view.xml ├── showfile-navigator ├── youtubeScreenshot.PNG ├── README.md └── showfile-navigator.xml ├── single-cue-magic ├── youtubeScreenshot.PNG ├── README.md ├── dimmer-fade-presets.xml └── single-cue-creator.xml ├── matricks-pattern-generator ├── youtubeScreenshot.PNG ├── README.md └── matricks-pattern-generator.xml ├── preset-to-sequence ├── README.md ├── presetToSequence.xml └── presetToSequence.lua ├── README.md ├── onpc-backup-script ├── README.md └── CreateMA2ShowFolderBackup.ps1 └── executor-mode-bar ├── README.md └── executor-mode-bar.xml /channel.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/channel.PNG -------------------------------------------------------------------------------- /apc40-mapping/images/options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/apc40-mapping/images/options.png -------------------------------------------------------------------------------- /apc40-mapping/images/buttonpage.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/apc40-mapping/images/buttonpage.PNG -------------------------------------------------------------------------------- /apc40-mapping/images/resolution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/apc40-mapping/images/resolution.png -------------------------------------------------------------------------------- /showfile-navigator/youtubeScreenshot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/showfile-navigator/youtubeScreenshot.PNG -------------------------------------------------------------------------------- /single-cue-magic/youtubeScreenshot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/single-cue-magic/youtubeScreenshot.PNG -------------------------------------------------------------------------------- /matricks-pattern-generator/youtubeScreenshot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/HEAD/matricks-pattern-generator/youtubeScreenshot.PNG -------------------------------------------------------------------------------- /preset-to-sequence/README.md: -------------------------------------------------------------------------------- 1 | # Preset to Sequence Plugin 2 | Walkthrough of the code: 3 | https://www.youtube.com/watch?v=UzrcWexQ1kU&index=4&list=PLBkQelJDkjdSSbdyyWU7enC4swaFdBmG_ 4 | 5 | **SUBSCRIBE** 6 | [youtube.com/aGuyNamedJonas](https://youtube.com/aGuyNamedJonas) 7 | -------------------------------------------------------------------------------- /apc40-mapping/apc40-plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /preset-to-sequence/presetToSequence.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GrandMA2 Snippets 2 | Easily import the macros I'm showing you in my videos on Youtube! 3 | Click on one of the folders above to see instructions on how to download and easily import into your show! 4 | 5 | # SUBSCRIBE to my channel on YouTube for more MA2 tutorial videos! 6 | 7 | *(Right-click and "Open link in new tab")* 8 | 9 | ### Get in touch 10 | Follow me on twitter ▶ **https://twitter.com/aguynamedjonas** -------------------------------------------------------------------------------- /apc40-mapping/sysexApc40InitOK.txt: -------------------------------------------------------------------------------- 1 | f0 7e 00 06 01 f7 f0 47 00 73 60 00 04 41 01 01 01 f7 2 | 90 35 03 3 | 90 36 00 4 | 90 37 02 5 | 90 38 02 6 | 90 39 00 7 | 8 | 91 35 03 9 | 91 36 02 10 | 91 37 00 11 | 91 38 00 12 | 91 39 02 13 | 14 | 92 35 03 15 | 92 36 02 16 | 92 37 00 17 | 92 38 00 18 | 92 39 02 19 | 20 | 93 35 03 21 | 93 36 00 22 | 93 37 02 23 | 93 38 02 24 | 93 39 00 25 | 26 | 94 35 03 27 | 94 36 00 28 | 94 37 00 29 | 94 38 00 30 | 94 39 00 31 | 32 | 95 35 03 33 | 95 36 02 34 | 95 37 02 35 | 95 38 02 36 | 95 39 02 37 | 38 | 96 35 03 39 | 96 36 00 40 | 96 37 02 41 | 96 38 02 42 | 96 39 00 43 | 44 | 97 35 03 45 | 97 36 02 46 | 97 37 00 47 | 97 38 00 48 | 97 39 02 -------------------------------------------------------------------------------- /apc40-mapping/sysexApc40InitCheck.txt: -------------------------------------------------------------------------------- 1 | f0 7e 00 06 01 f7 f0 47 00 73 60 00 04 41 01 01 01 f7 2 | 90 35 00 3 | 90 36 00 4 | 90 37 00 5 | 90 38 00 6 | 90 39 00 7 | 8 | 91 35 00 9 | 91 36 00 10 | 91 37 00 11 | 91 38 00 12 | 91 39 00 13 | 14 | 92 35 00 15 | 92 36 00 16 | 92 37 02 17 | 92 38 02 18 | 92 39 00 19 | 20 | 93 35 00 21 | 93 36 00 22 | 93 37 02 23 | 93 38 02 24 | 93 39 02 25 | 26 | 94 35 00 27 | 94 36 00 28 | 94 37 00 29 | 94 38 02 30 | 94 39 02 31 | 32 | 95 35 00 33 | 95 36 00 34 | 95 37 02 35 | 95 38 02 36 | 95 39 02 37 | 38 | 96 35 00 39 | 96 36 02 40 | 96 37 02 41 | 96 38 02 42 | 96 39 00 43 | 44 | 97 35 02 45 | 97 36 02 46 | 97 37 02 47 | 97 38 00 48 | 97 39 00 -------------------------------------------------------------------------------- /onpc-backup-script/README.md: -------------------------------------------------------------------------------- 1 | # MA2 onPC Show Folder Backup Script 2 | This Windows Powershell script will allow you to create backups of your entire showfolder on an external drive or your cloud storage (e.g. Google Drive, Dropbox, etc.). 3 | 4 | This closes the gap that the missing support for FTP backups in onPC systems left us with. 5 | 6 | # How to use 7 | Adapt `$source` and `$dest` to your needs, and then execute the script by double clicking on it. 8 | 9 | # Trouble shooting ("executon of scripts is disabled") 10 | In case you get the error message `“execution of scripts is disabled on this system.”`, [try this solution from StackOverflow](https://stackoverflow.com/questions/4037939/powershell-says-execution-of-scripts-is-disabled-on-this-system). -------------------------------------------------------------------------------- /executor-mode-bar/README.md: -------------------------------------------------------------------------------- 1 | # Executor Mode Bar 2 | Tiny little macro that's not very fancy, but incredibly useful: Quickly switch your executor buttons and faders with this little set of macros. 3 | Just download and put on the bottom of one of your console's screens and you're good to go switching executor functionality on the fly! 4 | 5 | ### How to use 6 | Videothumbnail coming soon! 7 | *(Right-click and "Open link in new tab")* 8 | 9 | **[SUBSCRIBE to my channel ▶ Youtube](https://www.youtube.com/aguynamedjonas)** 10 | 11 | ### Import into MA2 12 | - Download [executor-mode-bar.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/executor-mode-bar/executor-mode-bar.xml) ◀ Right-click and save-as 13 | - Move `executor-mode-bar.xml` into `\macros\executor-mode-bar.xml` 14 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\macros\executor-mode-bar.xml`) 15 | - Import macros: `Import "executor-mode-bar" at Macro 1` 16 | - Watch the video for how to use! 17 | 18 | ### Questions? 19 | Hit me up on twitter ▶ **https://twitter.com/aguynamedjonas** 20 | -------------------------------------------------------------------------------- /showfile-navigator/README.md: -------------------------------------------------------------------------------- 1 | # Showfile Navigator 2 | Set of macros that help you navigate through the internal structure of your showfile. This is super helpful when trying to write macros for custom functionality that is not provided through MA2 commands directly. 3 | 4 | ### How to use 5 | 6 | *(Right-click and "Open link in new tab")* 7 | 8 | **[SUBSCRIBE to my channel ▶ Youtube](https://www.youtube.com/aguynamedjonas)** 9 | 10 | ### Import into MA2 11 | - Download [showfile-navigator.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/showfile-navigator/showfile-navigator.xml) ◀ Right-click and save-as 12 | - Move `showfile-navigator.xml` into `\macros\showfile-navigator.xml` 13 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\macros\showfile-navigator.xml`) 14 | - Import macros: `Import "showfile-navigator" at Macro 1` 15 | - Watch the video for how to use! 16 | 17 | ### Questions? 18 | Hit me up on twitter ▶ **https://twitter.com/aguynamedjonas** 19 | -------------------------------------------------------------------------------- /matricks-pattern-generator/README.md: -------------------------------------------------------------------------------- 1 | # MA-Tricks Pattern Generator 2 | Set of macros which lets you easily discover cool patterns with MAtricks and allows you to quickly convert those to ready-to-use sequences and chasers. 3 | 4 | ### How to use 5 | 6 | *(Right-click and "Open link in new tab")* 7 | 8 | **[SUBSCRIBE to my channel ▶ Youtube](https://www.youtube.com/aguynamedjonas)** 9 | 10 | ### Import into MA2 11 | - Download [matricks-pattern-generator.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/matricks-pattern-generator/matricks-pattern-generator.xml) ◀ Right-click and save-as 12 | - Move `matricks-pattern-generator.xml` into `\macros\matricks-pattern-generator.xml` 13 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\macros\matricks-pattern-generator.xml`) 14 | - Import macros: `Import "matricks-pattern-generator" at Macro 1` 15 | - Watch the video for how to use! 16 | 17 | ### Questions? 18 | Hit me up on twitter ▶ **https://twitter.com/aguynamedjonas** 19 | -------------------------------------------------------------------------------- /onpc-backup-script/CreateMA2ShowFolderBackup.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | Original Version by: Philipp Börner 3 | Source: https://freshblog.azurewebsites.net/2016/03/28/backup-you-work-with-powershell/ 4 | 5 | Adapted by @aGuyNamedJonas for MA2 onPC 6 | 7 | --------------------------------------------- 8 | SUBSCRIBE >>> youtube.com/aGuyNamedJonas 9 | QA & COMMUNITY >>> fb.com/aGuyNamedJonas 10 | GET IN TOUCH >>> hi@aGuyNamedJonas.com 11 | --------------------------------------------- 12 | 13 | HOW TO USE: 14 | - Make sure $source points to your PC's showfolder 15 | - Change $dest to point to your harddrive / cloud storage folder (=backup folder) 16 | 17 | #> 18 | 19 | #Define source and destination folders 20 | $source = 'C:\ProgramData\MA Lighting Technologies\grandma' 21 | $dest = 'F:\Google Drive\2019\Showfolder Backups\' 22 | 23 | #Getting the current date 24 | $date = Get-Date -UFormat _%d_%m_%Y 25 | 26 | #Building ZIP file name and complete backup path 27 | $ZipFile = 'MA2ShowFolderBackup'+$date+'.zip' 28 | $BackupPath = $dest+$ZipFile 29 | 30 | #creating GUID if ZIP archive already exist, to rename the pre existing file 31 | $GUID = [GUID]::NewGuid().ToString() 32 | $doubleBackup = $ZipFile+$GUID 33 | if (Test-Path $BackupPath) {Rename-Item $BackupPath -NewName $doubleBackup} 34 | 35 | #Creating ZIP archive 36 | Get-Item -Path $source | Compress-Archive -DestinationPath $BackupPath -CompressionLevel Optimal -Verbose -------------------------------------------------------------------------------- /showfile-navigator/showfile-navigator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ChangeDest / 7 | 8 | 9 | List 10 | 11 | 12 | 13 | 14 | ChangeDest .. 15 | 16 | 17 | List 18 | 19 | 20 | 21 | 22 | ChangeDest (Enter object number to enter) 23 | 24 | 25 | List 26 | 27 | 28 | 29 | 30 | List 31 | 32 | 33 | 34 | 35 | List 36 | 37 | 38 | Assign (Enter object number to modify) /(Enter-Attribute-name)=(Enter-New-Value ) 39 | 40 | 41 | List 42 | 43 | 44 | -------------------------------------------------------------------------------- /single-cue-magic/README.md: -------------------------------------------------------------------------------- 1 | # Single Cue Magic 2 | Set of macros that helps you create more interesting, single-cue looks by utilizing fade- and delay-times to bring a surprising amount of movement into your cues! 3 | 4 | ### How to use 5 | 6 | *(Right-click and "Open link in new tab")* 7 | 8 | **[SUBSCRIBE to my channel ▶ Youtube](https://www.youtube.com/aguynamedjonas)** 9 | 10 | ### Import into MA2 11 | - Download [dimmer-fade-presets.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/single-cue-magic/dimmer-fade-presets.xml) ◀ Right-click and save-as 12 | - Download [single-cue-creator.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/single-cue-magic/single-cue-creator.xml) ◀ Right-click and save-as 13 | - Move `single-cue-creator.xml` into `\macros\single-cue-creator.xml` 14 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\macros\single-cue-creator.xml`) 15 | - Move `dimmer-fade-presets.xml` into `\importexport\dimmer-fade-presets.xml` 16 | (e.g. `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\importexport\dimmer-fade-presets.xml`) 17 | - Import macros: `Import "single-cue-creator" at Macro 1` 18 | - Import presets: `Import "dimmer-fade-presets" at Preset 1.1` 19 | - Watch the video for how to use! 20 | 21 | ### Questions? 22 | Hit me up on twitter ▶ **https://twitter.com/aguynamedjonas** 23 | -------------------------------------------------------------------------------- /apc40-mapping/apc40-macros.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | SetVar $apc40-op = "refresh-leds" 7 | 8 | 9 | Go Plugin "apc40-mapper" 10 | 11 | 12 | 13 | 14 | SetVar $apc40-op = "setup" 15 | 16 | 17 | Go Plugin "apc40-mapper" 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /matricks-pattern-generator/matricks-pattern-generator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | MAtricksInterleave + 7 | 8 | 9 | 10 | 11 | MAtricksInterleave - 12 | 13 | 14 | 15 | 16 | MAtricksBlocks + 17 | 18 | 19 | 20 | 21 | MAtricksBlocks - 22 | 23 | 24 | 25 | 26 | MAtricksWings + 27 | 28 | 29 | 30 | 31 | MAtricksWings - 32 | 33 | 34 | 35 | 36 | Next 37 | 38 | 39 | 40 | 41 | Previous 42 | 43 | 44 | 45 | 46 | At Full 47 | 48 | 49 | Store 50 | 51 | 52 | At Zero 53 | 54 | 55 | Next 56 | 57 | 58 | 59 | 60 | At Full 61 | 62 | 63 | Store 64 | 65 | 66 | At Zero 67 | 68 | 69 | -------------------------------------------------------------------------------- /single-cue-magic/dimmer-fade-presets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /preset-to-sequence/presetToSequence.lua: -------------------------------------------------------------------------------- 1 | function print (msg) 2 | gma.echo(msg) 3 | gma.feedback(msg) 4 | end 5 | 6 | function printWelcomeScreen () 7 | print('-------------------------------------------------') 8 | print(' Starting presetToSequence Plugin... ') 9 | print(' ') 10 | print(' ---------------------------------- ') 11 | print(' Brought to you by @aGuyNamedJonas ') 12 | print(' ---------------------------------- ') 13 | print(' ') 14 | print(' SUBSCRIBE >>> youtube.com/aGuyNamedJonas ') 15 | print(' QA & COMMUNITY >>> fb.com/aGuyNamedJonas ') 16 | print(' GET IN TOUCH >>> hi@aGuyNamedJonas.com ') 17 | print('-------------------------------------------------') 18 | end 19 | 20 | function getPresetRangeFromUser () 21 | local presetRange = {} 22 | presetRange['type'] = tonumber(gma.textinput('Preset TYPE', '(0 for All, 1 for Dimmer, 2 for Position, ...)')) 23 | presetRange['first'] = tonumber(gma.textinput('Preset START', '1')) 24 | presetRange['last'] = tonumber(gma.textinput('Preset END')) 25 | return presetRange 26 | end 27 | 28 | function getGroupNumberFromUser () 29 | local groupNumber = tonumber(gma.textinput('GROUP', '1')) 30 | return groupNumber 31 | end 32 | 33 | function getFadeTimeFromUser () 34 | local fadeTime = tonumber(gma.textinput('FADE', '0')) 35 | return fadeTime 36 | end 37 | 38 | function getTargetExecutorFromUser () 39 | local executorNumber = gma.textinput('EXECUTOR', '1.1') 40 | return executorNumber 41 | end 42 | 43 | function getObjectLabel (ma2ObjectName) 44 | local handle = gma.show.getobj.handle(ma2ObjectName) 45 | local label = gma.show.getobj.label(handle) 46 | return label 47 | end 48 | 49 | function setObjectLabel (ma2ObjectName, label) 50 | gma.cmd('Label '..ma2ObjectName..' "'..label..'"') 51 | end 52 | 53 | function createSequenceFromPresets (presetType, presetStart, presetEnd, groupNumber, fadeTime, executorNumber) 54 | local groupName = 'Group '..groupNumber 55 | local groupLabel = getObjectLabel(groupName) 56 | local executorName = 'Executor '..executorNumber 57 | 58 | print('Deleting '..executorName) 59 | gma.cmd('Delete '..executorName..' /nc') 60 | 61 | -- Store presets in sequence 62 | local presetIndex = presetStart 63 | local cueIndex = 1 64 | while presetIndex <= presetEnd do 65 | local presetName = 'Preset '..presetType..'.'..presetIndex 66 | local presetLabel = getObjectLabel(presetName) 67 | 68 | print('Storing '..presetName..' "'..presetLabel..'"') 69 | 70 | local cueName = 'Cue '..cueIndex 71 | gma.cmd('ClearAll') 72 | gma.cmd(groupName..' at '..presetName) 73 | gma.cmd('Store at '..executorName..' '..cueName..' Fade '..fadeTime) 74 | gma.cmd('Label '..executorName..' '..cueName..' "'..presetLabel..'"') 75 | 76 | presetIndex = presetIndex + 1 77 | cueIndex = cueIndex + 1 78 | end 79 | 80 | gma.cmd('Label '..executorName..' "'..groupLabel..'"') 81 | end 82 | 83 | function main() 84 | printWelcomeScreen() 85 | local presetRange = getPresetRangeFromUser() 86 | local groupNumber = getGroupNumberFromUser() 87 | local fadeTime = getFadeTimeFromUser() 88 | local executorNumber = getTargetExecutorFromUser() 89 | createSequenceFromPresets(presetRange.type, presetRange.first, presetRange.last, groupNumber, fadeTime, executorNumber) 90 | end 91 | 92 | return main 93 | -------------------------------------------------------------------------------- /single-cue-magic/single-cue-creator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Attribute $cuemagic_attribute 7 | 8 | 9 | Delay $cuemagic_offset Thru $cuemagic_delay 10 | 11 | 12 | Attribute $cuemagic_attribute At $cuemagic_value 13 | 14 | 15 | 16 | 17 | Attribute $cuemagic_attribute 18 | 19 | 20 | Delay $cuemagic_delay Thru $cuemagic_offset 21 | 22 | 23 | Attribute $cuemagic_attribute At $cuemagic_value 24 | 25 | 26 | 27 | 28 | Attribute $cuemagic_attribute 29 | 30 | 31 | Delay $cuemagic_offset Thru $cuemagic_delay Thru $cuemagic_offset 32 | 33 | 34 | Attribute $cuemagic_attribute At $cuemagic_value 35 | 36 | 37 | 38 | 39 | Attribute $cuemagic_attribute 40 | 41 | 42 | Delay $cuemagic_delay Thru $cuemagic_offset Thru $cuemagic_delay 43 | 44 | 45 | Attribute $cuemagic_attribute At $cuemagic_value 46 | 47 | 48 | 49 | 50 | Attribute $cuemagic_attribute 51 | 52 | 53 | Delay $cuemagic_offset Thru $cuemagic_delay Thru $cuemagic_offset Thru $cuemagic_delay Thru $cuemagic_offset 54 | 55 | 56 | Attribute $cuemagic_attribute At $cuemagic_value 57 | 58 | 59 | 60 | 61 | Attribute $cuemagic_attribute 62 | 63 | 64 | Delay $cuemagic_delay Thru $cuemagic_offset Thru $cuemagic_delay Thru $cuemagic_offset Thru $cuemagic_delay 65 | 66 | 67 | Attribute $cuemagic_attribute At $cuemagic_value 68 | 69 | 70 | 71 | 72 | List Attribute 73 | 74 | 75 | SetVar $cuemagic_attribute = ("which attribute to set? [dim]") 76 | 77 | 78 | $cuemagic_attribute 79 | 80 | 81 | 82 | 83 | SetVar $cuemagic_value = ("Value?") 84 | 85 | 86 | 87 | 88 | SetVar $cuemagic_delay = ("How much delay?") 89 | 90 | 91 | 92 | 93 | SetVar $cuemagic_offTime = ("Offtime?") 94 | 95 | 96 | 97 | 98 | Select Executor @ 99 | 100 | 101 | Store 102 | 103 | 104 | Assign Executor /OffTime=$cuemagic_offTime 105 | 106 | 107 | ClearAll 108 | 109 | 110 | -------------------------------------------------------------------------------- /executor-mode-bar/executor-mode-bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Label Macro "GO" ">GO<" 7 | 8 | 9 | Assign Go @ 10 | 11 | 12 | Label Macro ">GO<" "GO" 13 | 14 | 15 | 16 | 17 | Label Macro "GO_R" ">GO_R<" 18 | 19 | 20 | Assign Go /cue_mode=release @ 21 | 22 | 23 | Label Macro ">GO_R<" "GO_R" 24 | 25 | 26 | 27 | 28 | Label Macro "TOGGLE" ">TOGGLE<" 29 | 30 | 31 | Assign Toggle @ 32 | 33 | 34 | Label Macro ">TOGGLE<" "TOGGLE" 35 | 36 | 37 | 38 | 39 | Label Macro "FLASH" ">FLASH<" 40 | 41 | 42 | Assign Flash @ 43 | 44 | 45 | Label Macro ">FLASH<" "FLASH" 46 | 47 | 48 | 49 | 50 | Label Macro "MASTER" ">MASTER<" 51 | 52 | 53 | Assign Master @ 54 | 55 | 56 | Label Macro ">MASTER<" "MASTER" 57 | 58 | 59 | 60 | 61 | Label Macro "TEMP" ">TEMP<" 62 | 63 | 64 | Assign TempFader @ 65 | 66 | 67 | Label Macro ">TEMP<" "TEMP" 68 | 69 | 70 | 71 | 72 | Label Macro "RATE" ">RATE<" 73 | 74 | 75 | Assign Rate @ 76 | 77 | 78 | Label Macro ">RATE<" "RATE" 79 | 80 | 81 | 82 | 83 | Label Macro "SPEED" ">SPEED<" 84 | 85 | 86 | Assign Speed @ 87 | 88 | 89 | Label Macro ">SPEED<" "SPEED" 90 | 91 | 92 | 93 | 94 | Label Macro "X-FADE" ">X-FADE<" 95 | 96 | 97 | Assign Crossfade @ 98 | 99 | 100 | Label Macro ">X-FADE<" "X-FADE" 101 | 102 | 103 | 104 | 105 | Label Macro "X-FADE-B" ">X-FADE-B<" 106 | 107 | 108 | Assign CrossfadeB @ 109 | 110 | 111 | Label Macro ">X-FADE-B<" "X-FADE-B" 112 | 113 | 114 | -------------------------------------------------------------------------------- /apc40-mapping/README.md: -------------------------------------------------------------------------------- 1 | # APC40 Mark 1 Mapping (Single Controller) 2 | This Akai APC40 Mark 1 single-controller mapping **with LED feedback** aims at giving MA2 onPC operators with an APC40 Mark 1 controller and a Full HD monitor access to 40 full-sized executors, 12 buttons executors (only one button + fader) and 4 button executors with fader-only control. 3 | 4 | On top of that 7 groups can be toggled selected and deselected and 16 "All" presets can be toggled on and off. 5 | 6 | The focus of this mapping is live-playback (not on preprogramming). 7 | 8 | ## Prerequisites 9 | Before downloading & installing this mapping, please go through the following list as a peparation 10 | 11 | ### Prerquisite #0: A Full HD Monitor 12 | The view for this mapping was built for and with a Full HD monitor (1920px x 1080px) and won't work properly without a monitor like that. 13 | 14 | If you don't own a Full HD monitor yet, consider the fairly cheap DELL touch monitor which I reviewed in this video: 15 | https://www.youtube.com/watch?v=oBfwf3NR3ws 16 | 17 | ### Prerequisite #1: Bome's Midi Translator Pro installed 18 | Download it here: https://www.bome.com/products/miditranslator 19 | 20 | Demo mode runs for 20 minutes at a time and needs to be restarted after that. 21 | **Please buy the software to support the creator!** 22 | 23 | ### Prerequisite #2: Extern 1 has Resolution 1920x1080 24 | ![options](images/options.png "Options") 25 | In the main window, click on the yellow ball in the upper-left corner, and click on "Options" 26 | 27 | ![resolution](images/resolution.png "Resolution") 28 | Make sure the reoslution of your Extern 1 is set to 1920 x 1080 (Full HD) 29 | 30 | ### Prerequisite #3: Go to Button Page 6 31 | ![buttonpage](images/buttonpage.png "Button Page") 32 | To make button page 6 visible in MA2 (Page 6 is used by the APC40 view), click on "Bt Pg+" a few time. 33 | 34 | ### Prerequisite #4: Make the following slots available 35 | The following slots will be used by the APC40 mapping - please make them available for use with the mapping: 36 | 37 | **Groups** 38 | - Group 1 thru 7 39 | 40 | **"All" Presets** 41 | - Preset 0.1 thru 0.17 42 | 43 | **Macros** 44 | - Macro 1 thru 11 45 | 46 | **Executors** 47 | - Executor 7.1 thru 7.10 48 | - Executor 7.66 thru 7.75 49 | - Executor 7.81 thru 7.90 50 | 51 | **ButtonExecutors** 52 | - ExecButtons 6.131 thru 6.190 53 | 54 | ## Download & Install 55 | **BEFORE YOU DO THIS, READ THE PREVIOUS SECTION!** 56 | 57 | 1. Make sure your setup & showfile are prepared as described in the previous section 58 | 2. Download & Import Plugin: 59 | - Download [apc40-plugin.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/apc40-mapping/apc40-plugin.xml) **and** [apc40-mapper.lua](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/apc40-mapping/apc40-mapper.lua) ◀ Right-click on links and save-as 60 | - Move **both files** into `\plugins` 61 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\plugins\apc40-plugin.xml`) 62 | - Copy & paste the following MA2 command to import the plugin: 63 | `Import "apc40-mapper" At Plugin 2` 64 | 3. Download & Import Macros: 65 | - Download [apc40-macros.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/apc40-mapping/apc40-macros.xml) ◀ Right-click and save-as 66 | - Move file into `\macros\` 67 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\macros\apc40-macros.xml`) 68 | - Copy & paste the following MA2 command to import the macros: 69 | `Import "apc40-macros" At Macro 1` 70 | 4. Download & Import View: 71 | - Download [apc40-view.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/apc40-mapping/apc40-view.xml) ◀ Right-click and save-as 72 | - Move file into `\macros\` 73 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\importexportmacros\apc40-view.xml`) 74 | - Copy & paste the following MA2 command to import the view: 75 | `Import "apc40-view" At View 1; Assign View 1 ViewButton 1.31 /screen=5` 76 | 5. Download & Import Midi Mapping: 77 | - Download [apc40-midi.xml](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/apc40-mapping/apc40-midi.xml) ◀ Right-click and save-as 78 | - Move file into `\importexport\` 79 | (e.g. into `C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.3.4\importexport\apc40-midi.xml`) 80 | - Copy & paste the following MA2 command to import the midi mapping: 81 | `cd /; cd RemoteTypes; import "apc40-midi" at MidiRemotes;` 82 | - Enter `cd /` to get back to the root of the showfile 83 | 6. Download the Bome's Midi Translator Pro [Project file](https://raw.githubusercontent.com/aGuyNamedJonas/grandma2-snippets/master/apc40-mapping/apc40Mapping.bmtp) ◀ Right-click and save-as 84 | 85 | ## How to Use 86 | Yeah there's no way in hell I'm typing that one out - just watch the video: https://youtu.be/k9Ce1NXg9xg :) 87 | -------------------------------------------------------------------------------- /apc40-mapping/apc40Mapping.bmtp: -------------------------------------------------------------------------------- 1 | [MIDI.routes] 2 | In0=Bome Virtual Port 2 3 | Out0=Akai APC40 4 | 5 | [Preset.0] 6 | Name=Init APC40 7 | Active=1 8 | PresetSwitchIgnore=0 9 | Name0=INIT 10 | Incoming0=MID3 11 | Outgoing0=MID2MIDA0001000AAkai APC40f07e000601f7f047007360000441010101f7903503903600903702903802903900913503913602913700913800913902923503923602923700923800923902933503933600933702933802933900943503943600943700943800943900953503953602953702953802953902963503963600963702963802963900973503973602973700973800973902 12 | Options0=Actv01Stop00OutO00 13 | 14 | [Preset.1] 15 | Name=Midi Through In 16 | Active=1 17 | PresetSwitchIgnore=0 18 | Name0=Midi Through Notes 19 | Incoming0=MID3 20 | Outgoing0=MID3 21 | Options0=Actv01Stop00OutO01 22 | 23 | [Preset.2] 24 | Name=Fader Translation 25 | Active=1 26 | PresetSwitchIgnore=0 27 | Name0=Fader 1 28 | Incoming0=MID3 29 | Outgoing0=MID3 30 | Options0=Actv01Stop00OutO00 31 | Name1=Fader 2 32 | Incoming1=MID3 33 | Outgoing1=MID3 34 | Options1=Actv01Stop00OutO00 35 | Name2=Fader 3 36 | Incoming2=MID3 37 | Outgoing2=MID3 38 | Options2=Actv01Stop00OutO00 39 | Name3=Fader 4 40 | Incoming3=MID3 41 | Outgoing3=MID3 42 | Options3=Actv01Stop00OutO00 43 | Name4=Fader 5 44 | Incoming4=MID3 45 | Outgoing4=MID3 46 | Options4=Actv01Stop00OutO00 47 | Name5=Fader 6 48 | Incoming5=MID3 49 | Outgoing5=MID3 50 | Options5=Actv01Stop00OutO00 51 | Name6=Fader 7 52 | Incoming6=MID3 53 | Outgoing6=MID3 54 | Options6=Actv01Stop00OutO00 55 | Name7=Fader 8 56 | Incoming7=MID3 57 | Outgoing7=MID3 58 | Options7=Actv01Stop00OutO00 59 | Name8=Fader 9 60 | Incoming8=MID3 61 | Outgoing8=MID3 62 | Options8=Actv01Stop00OutO00 63 | Name9=Fader 10 (Knob) 64 | Incoming9=MID3 65 | Outgoing9=MID3 66 | Options9=Actv01Stop00OutO00 67 | Name10=Knob 1 68 | Incoming10=MID3 69 | Outgoing10=MID3 70 | Options10=Actv01Stop00OutO00 71 | Name11=Knob 2 72 | Incoming11=MID3 73 | Outgoing11=MID3 74 | Options11=Actv01Stop00OutO00 75 | Name12=Knob 3 76 | Incoming12=MID3 77 | Outgoing12=MID3 78 | Options12=Actv01Stop00OutO00 79 | Name13=Knob 4 80 | Incoming13=MID3 81 | Outgoing13=MID3 82 | Options13=Actv01Stop00OutO00 83 | Name14=Knob 5 84 | Incoming14=MID3 85 | Outgoing14=MID3 86 | Options14=Actv01Stop00OutO00 87 | Name15=Knob 6 88 | Incoming15=MID3 89 | Outgoing15=MID3 90 | Options15=Actv01Stop00OutO00 91 | Name16=Knob 7 92 | Incoming16=MID3 93 | Outgoing16=MID3 94 | Options16=Actv01Stop00OutO00 95 | Name17=Knob 8 96 | Incoming17=MID3 97 | Outgoing17=MID3 98 | Options17=Actv01Stop00OutO00 99 | Name18=Knob 9 100 | Incoming18=MID3 101 | Outgoing18=MID3 102 | Options18=Actv01Stop00OutO00 103 | Name19=Knob 10 104 | Incoming19=MID3 105 | Outgoing19=MID3 106 | Options19=Actv01Stop00OutO00 107 | Name20=Knob 11 108 | Incoming20=MID3 109 | Outgoing20=MID3 110 | Options20=Actv01Stop00OutO00 111 | Name21=Knob 12 112 | Incoming21=MID3 113 | Outgoing21=MID3 114 | Options21=Actv01Stop00OutO00 115 | Name22=Knob 13 116 | Incoming22=MID3 117 | Outgoing22=MID3 118 | Options22=Actv01Stop00OutO00 119 | Name23=Knob 14 120 | Incoming23=MID3 121 | Outgoing23=MID3 122 | Options23=Actv01Stop00OutO00 123 | Name24=Knob 15 124 | Incoming24=MID3 125 | Outgoing24=MID3 126 | Options24=Actv01Stop00OutO00 127 | Name25=Knob 16 128 | Incoming25=MID3 129 | Outgoing25=MID3 130 | Options25=Actv01Stop00OutO00 131 | 132 | [Project] 133 | Version=2 134 | Author= 135 | AuthorContact= 136 | Comments= 137 | AuthorWWW= 138 | AuthorCopyright= 139 | DefaultInPorts=MIDA0001000AAkai APC40 140 | DefaultOutPorts=MIDA00010022Bome MIDI Translator 1 Virtual Out 141 | 142 | -------------------------------------------------------------------------------- /apc40-mapping/apc40-midi.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 1; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper" 101 | 102 | 103 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 1; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper" 104 | 105 | 106 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 1; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper" 107 | 108 | 109 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 1; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper" 110 | 111 | 112 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 1; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper" 113 | 114 | 115 | 116 | 117 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 2; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper" 118 | 119 | 120 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 2; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper" 121 | 122 | 123 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 2; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper" 124 | 125 | 126 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 2; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper" 127 | 128 | 129 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 2; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper" 130 | 131 | 132 | 133 | 134 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 3; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper" 135 | 136 | 137 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 3; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper" 138 | 139 | 140 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 3; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper" 141 | 142 | 143 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 3; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper" 144 | 145 | 146 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 3; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper" 147 | 148 | 149 | 150 | 151 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 4; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper" 152 | 153 | 154 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 4; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper" 155 | 156 | 157 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 4; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper" 158 | 159 | 160 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 4; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper" 161 | 162 | 163 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 4; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper" 164 | 165 | 166 | 167 | 168 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 5; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper" 169 | 170 | 171 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 5; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper" 172 | 173 | 174 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 5; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper" 175 | 176 | 177 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 5; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper" 178 | 179 | 180 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 5; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper" 181 | 182 | 183 | 184 | 185 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 6; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper" 186 | 187 | 188 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 6; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper" 189 | 190 | 191 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 6; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper" 192 | 193 | 194 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 6; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper" 195 | 196 | 197 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 6; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper" 198 | 199 | 200 | 201 | 202 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 7; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper" 203 | 204 | 205 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 7; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper" 206 | 207 | 208 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 7; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper" 209 | 210 | 211 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 7; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper" 212 | 213 | 214 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 7; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper" 215 | 216 | 217 | 218 | 219 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 8; SetVar $apc40-clip = 1; Go Plugin "apc40-mapper" 220 | 221 | 222 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 8; SetVar $apc40-clip = 2; Go Plugin "apc40-mapper" 223 | 224 | 225 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 8; SetVar $apc40-clip = 3; Go Plugin "apc40-mapper" 226 | 227 | 228 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 8; SetVar $apc40-clip = 4; Go Plugin "apc40-mapper" 229 | 230 | 231 | SetVar $apc40-op = "load-slot"; SetVar $apc40-slot = 8; SetVar $apc40-clip = 5; Go Plugin "apc40-mapper" 232 | 233 | 234 | 235 | 236 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "1"; Go Plugin "apc40-mapper" 237 | 238 | 239 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "2"; Go Plugin "apc40-mapper" 240 | 241 | 242 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "3"; Go Plugin "apc40-mapper" 243 | 244 | 245 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "4"; Go Plugin "apc40-mapper" 246 | 247 | 248 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "5"; Go Plugin "apc40-mapper" 249 | 250 | 251 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "6"; Go Plugin "apc40-mapper" 252 | 253 | 254 | SetVar $apc40-op = "toggle-group"; SetVar $apc40-group = "7"; Go Plugin "apc40-mapper" 255 | 256 | 257 | 258 | 259 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.1"; Go Plugin "apc40-mapper" 260 | 261 | 262 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.2"; Go Plugin "apc40-mapper" 263 | 264 | 265 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.3"; Go Plugin "apc40-mapper" 266 | 267 | 268 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.4"; Go Plugin "apc40-mapper" 269 | 270 | 271 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.5"; Go Plugin "apc40-mapper" 272 | 273 | 274 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.6"; Go Plugin "apc40-mapper" 275 | 276 | 277 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.7"; Go Plugin "apc40-mapper" 278 | 279 | 280 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.8"; Go Plugin "apc40-mapper" 281 | 282 | 283 | 284 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.10"; Go Plugin "apc40-mapper" 285 | 286 | 287 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.11"; Go Plugin "apc40-mapper" 288 | 289 | 290 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.12"; Go Plugin "apc40-mapper" 291 | 292 | 293 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.13"; Go Plugin "apc40-mapper" 294 | 295 | 296 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.14"; Go Plugin "apc40-mapper" 297 | 298 | 299 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.15"; Go Plugin "apc40-mapper" 300 | 301 | 302 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.16"; Go Plugin "apc40-mapper" 303 | 304 | 305 | SetVar $apc40-op = "toggle-preset"; SetVar $apc40-preset = "0.17"; Go Plugin "apc40-mapper" 306 | 307 | 308 | -------------------------------------------------------------------------------- /apc40-mapping/apc40-mapper.lua: -------------------------------------------------------------------------------- 1 | local feedback = gma.feedback -- create fast shortcut for functionblock. this is speeding up the script significantly 2 | local cmd = gma.cmd 3 | 4 | local obj = gma.show.getobj 5 | local handle = obj.handle 6 | 7 | local get = gma.show.property.get 8 | local setVar = gma.show.setvar 9 | local getVar = gma.show.getvar 10 | 11 | -- LUA "apc40Mapper()" 12 | 13 | local LED_CL_EMPTY = '0' 14 | local LED_CL_ORANGE = '5' 15 | 16 | -- Settings 17 | local ledMappingExecutors = { 18 | -- Clip Slot Buttons 19 | ['6.131'] = { ['empty'] = 'MidiNote 1.53 0', ['loaded'] = 'MidiNote 1.53 5', ['playing'] = 'MidiNote 1.53 3' }, 20 | ['6.141'] = { ['empty'] = 'MidiNote 1.54 0', ['loaded'] = 'MidiNote 1.54 5', ['playing'] = 'MidiNote 1.54 3' }, 21 | ['6.151'] = { ['empty'] = 'MidiNote 1.55 0', ['loaded'] = 'MidiNote 1.55 5', ['playing'] = 'MidiNote 1.55 3' }, 22 | ['6.161'] = { ['empty'] = 'MidiNote 1.56 0', ['loaded'] = 'MidiNote 1.56 5', ['playing'] = 'MidiNote 1.56 3' }, 23 | ['6.171'] = { ['empty'] = 'MidiNote 1.57 0', ['loaded'] = 'MidiNote 1.57 5', ['playing'] = 'MidiNote 1.57 3' }, 24 | 25 | ['6.132'] = { ['empty'] = 'MidiNote 2.53 0', ['loaded'] = 'MidiNote 2.53 5', ['playing'] = 'MidiNote 2.53 3' }, 26 | ['6.142'] = { ['empty'] = 'MidiNote 2.54 0', ['loaded'] = 'MidiNote 2.54 5', ['playing'] = 'MidiNote 2.54 3' }, 27 | ['6.152'] = { ['empty'] = 'MidiNote 2.55 0', ['loaded'] = 'MidiNote 2.55 5', ['playing'] = 'MidiNote 2.55 3' }, 28 | ['6.162'] = { ['empty'] = 'MidiNote 2.56 0', ['loaded'] = 'MidiNote 2.56 5', ['playing'] = 'MidiNote 2.56 3' }, 29 | ['6.172'] = { ['empty'] = 'MidiNote 2.57 0', ['loaded'] = 'MidiNote 2.57 5', ['playing'] = 'MidiNote 2.57 3' }, 30 | 31 | ['6.133'] = { ['empty'] = 'MidiNote 3.53 0', ['loaded'] = 'MidiNote 3.53 5', ['playing'] = 'MidiNote 3.53 3' }, 32 | ['6.143'] = { ['empty'] = 'MidiNote 3.54 0', ['loaded'] = 'MidiNote 3.54 5', ['playing'] = 'MidiNote 3.54 3' }, 33 | ['6.153'] = { ['empty'] = 'MidiNote 3.55 0', ['loaded'] = 'MidiNote 3.55 5', ['playing'] = 'MidiNote 3.55 3' }, 34 | ['6.163'] = { ['empty'] = 'MidiNote 3.56 0', ['loaded'] = 'MidiNote 3.56 5', ['playing'] = 'MidiNote 3.56 3' }, 35 | ['6.173'] = { ['empty'] = 'MidiNote 3.57 0', ['loaded'] = 'MidiNote 3.57 5', ['playing'] = 'MidiNote 3.57 3' }, 36 | 37 | ['6.134'] = { ['empty'] = 'MidiNote 4.53 0', ['loaded'] = 'MidiNote 4.53 5', ['playing'] = 'MidiNote 4.53 3' }, 38 | ['6.144'] = { ['empty'] = 'MidiNote 4.54 0', ['loaded'] = 'MidiNote 4.54 5', ['playing'] = 'MidiNote 4.54 3' }, 39 | ['6.154'] = { ['empty'] = 'MidiNote 4.55 0', ['loaded'] = 'MidiNote 4.55 5', ['playing'] = 'MidiNote 4.55 3' }, 40 | ['6.164'] = { ['empty'] = 'MidiNote 4.56 0', ['loaded'] = 'MidiNote 4.56 5', ['playing'] = 'MidiNote 4.56 3' }, 41 | ['6.174'] = { ['empty'] = 'MidiNote 4.57 0', ['loaded'] = 'MidiNote 4.57 5', ['playing'] = 'MidiNote 4.57 3' }, 42 | 43 | ['6.135'] = { ['empty'] = 'MidiNote 5.53 0', ['loaded'] = 'MidiNote 5.53 5', ['playing'] = 'MidiNote 5.53 3' }, 44 | ['6.145'] = { ['empty'] = 'MidiNote 5.54 0', ['loaded'] = 'MidiNote 5.54 5', ['playing'] = 'MidiNote 5.54 3' }, 45 | ['6.155'] = { ['empty'] = 'MidiNote 5.55 0', ['loaded'] = 'MidiNote 5.55 5', ['playing'] = 'MidiNote 5.55 3' }, 46 | ['6.165'] = { ['empty'] = 'MidiNote 5.56 0', ['loaded'] = 'MidiNote 5.56 5', ['playing'] = 'MidiNote 5.56 3' }, 47 | ['6.175'] = { ['empty'] = 'MidiNote 5.57 0', ['loaded'] = 'MidiNote 5.57 5', ['playing'] = 'MidiNote 5.57 3' }, 48 | 49 | ['6.136'] = { ['empty'] = 'MidiNote 6.53 0', ['loaded'] = 'MidiNote 6.53 5', ['playing'] = 'MidiNote 6.53 3' }, 50 | ['6.146'] = { ['empty'] = 'MidiNote 6.54 0', ['loaded'] = 'MidiNote 6.54 5', ['playing'] = 'MidiNote 6.54 3' }, 51 | ['6.156'] = { ['empty'] = 'MidiNote 6.55 0', ['loaded'] = 'MidiNote 6.55 5', ['playing'] = 'MidiNote 6.55 3' }, 52 | ['6.166'] = { ['empty'] = 'MidiNote 6.56 0', ['loaded'] = 'MidiNote 6.56 5', ['playing'] = 'MidiNote 6.56 3' }, 53 | ['6.176'] = { ['empty'] = 'MidiNote 6.57 0', ['loaded'] = 'MidiNote 6.57 5', ['playing'] = 'MidiNote 6.57 3' }, 54 | 55 | ['6.137'] = { ['empty'] = 'MidiNote 7.53 0', ['loaded'] = 'MidiNote 7.53 5', ['playing'] = 'MidiNote 7.53 3' }, 56 | ['6.147'] = { ['empty'] = 'MidiNote 7.54 0', ['loaded'] = 'MidiNote 7.54 5', ['playing'] = 'MidiNote 7.54 3' }, 57 | ['6.157'] = { ['empty'] = 'MidiNote 7.55 0', ['loaded'] = 'MidiNote 7.55 5', ['playing'] = 'MidiNote 7.55 3' }, 58 | ['6.167'] = { ['empty'] = 'MidiNote 7.56 0', ['loaded'] = 'MidiNote 7.56 5', ['playing'] = 'MidiNote 7.56 3' }, 59 | ['6.177'] = { ['empty'] = 'MidiNote 7.57 0', ['loaded'] = 'MidiNote 7.57 5', ['playing'] = 'MidiNote 7.57 3' }, 60 | 61 | ['6.138'] = { ['empty'] = 'MidiNote 8.53 0', ['loaded'] = 'MidiNote 8.53 5', ['playing'] = 'MidiNote 8.53 3' }, 62 | ['6.148'] = { ['empty'] = 'MidiNote 8.54 0', ['loaded'] = 'MidiNote 8.54 5', ['playing'] = 'MidiNote 8.54 3' }, 63 | ['6.158'] = { ['empty'] = 'MidiNote 8.55 0', ['loaded'] = 'MidiNote 8.55 5', ['playing'] = 'MidiNote 8.55 3' }, 64 | ['6.168'] = { ['empty'] = 'MidiNote 8.56 0', ['loaded'] = 'MidiNote 8.56 5', ['playing'] = 'MidiNote 8.56 3' }, 65 | ['6.178'] = { ['empty'] = 'MidiNote 8.57 0', ['loaded'] = 'MidiNote 8.57 5', ['playing'] = 'MidiNote 8.57 3' }, 66 | 67 | -- Executor Fader 68 | ['7.1'] = { ['empty'] = 'MidiNote 1.48 0; MidiNote 1.49 0; MidiNote 1.50 0;', ['loaded'] = 'MidiNote 1.48 127; MidiNote 1.49 0; MidiNote 1.50 0;' }, 69 | ['7.2'] = { ['empty'] = 'MidiNote 2.48 0; MidiNote 2.49 0; MidiNote 2.50 0;', ['loaded'] = 'MidiNote 2.48 127; MidiNote 2.49 0; MidiNote 2.50 0;' }, 70 | ['7.3'] = { ['empty'] = 'MidiNote 3.48 0; MidiNote 3.49 0; MidiNote 3.50 0;', ['loaded'] = 'MidiNote 3.48 127; MidiNote 3.49 0; MidiNote 3.50 0;' }, 71 | ['7.4'] = { ['empty'] = 'MidiNote 4.48 0; MidiNote 4.49 0; MidiNote 4.50 0;', ['loaded'] = 'MidiNote 4.48 127; MidiNote 4.49 0; MidiNote 4.50 0;' }, 72 | ['7.5'] = { ['empty'] = 'MidiNote 5.48 0; MidiNote 5.49 0; MidiNote 5.50 0;', ['loaded'] = 'MidiNote 5.48 127; MidiNote 5.49 0; MidiNote 5.50 0;' }, 73 | ['7.6'] = { ['empty'] = 'MidiNote 6.48 0; MidiNote 6.49 0; MidiNote 6.50 0;', ['loaded'] = 'MidiNote 6.48 127; MidiNote 6.49 0; MidiNote 6.50 0;' }, 74 | ['7.7'] = { ['empty'] = 'MidiNote 7.48 0; MidiNote 7.49 0; MidiNote 7.50 0;', ['loaded'] = 'MidiNote 7.48 127; MidiNote 7.49 0; MidiNote 7.50 0;' }, 75 | ['7.8'] = { ['empty'] = 'MidiNote 8.48 0; MidiNote 8.49 0; MidiNote 8.50 0;', ['loaded'] = 'MidiNote 8.48 127; MidiNote 8.49 0; MidiNote 8.50 0;' }, 76 | 77 | -- Track Control Executors 78 | ['7.66'] = { ['empty'] = 'MidiControl 1.56 0', ['loaded'] = 'MidiControl 1.56 1' }, 79 | ['7.67'] = { ['empty'] = 'MidiControl 1.57 0', ['loaded'] = 'MidiControl 1.57 1' }, 80 | ['7.68'] = { ['empty'] = 'MidiControl 1.58 0', ['loaded'] = 'MidiControl 1.58 1' }, 81 | ['7.69'] = { ['empty'] = 'MidiControl 1.59 0', ['loaded'] = 'MidiControl 1.59 1' }, 82 | ['7.71'] = { ['empty'] = 'MidiControl 1.60 0; MidiNote 1.87 0', ['loaded'] = 'MidiControl 1.60 1; MidiNote 1.87 127' }, 83 | ['7.72'] = { ['empty'] = 'MidiControl 1.61 0; MidiNote 1.88 0', ['loaded'] = 'MidiControl 1.61 1; MidiNote 1.88 127' }, 84 | ['7.73'] = { ['empty'] = 'MidiControl 1.62 0; MidiNote 1.89 0', ['loaded'] = 'MidiControl 1.62 1; MidiNote 1.89 127' }, 85 | ['7.74'] = { ['empty'] = 'MidiControl 1.63 0; MidiNote 1.90 0', ['loaded'] = 'MidiControl 1.63 1; MidiNote 1.90 127' }, 86 | 87 | -- Device Control Executors 88 | ['7.81'] = { ['empty'] = 'MidiControl 1.24 0; MidiNote 1.58 0', ['loaded'] = 'MidiControl 1.24 1; MidiNote 1.58 127' }, 89 | ['7.82'] = { ['empty'] = 'MidiControl 1.25 0; MidiNote 1.59 0', ['loaded'] = 'MidiControl 1.25 1; MidiNote 1.59 127' }, 90 | ['7.83'] = { ['empty'] = 'MidiControl 1.26 0; MidiNote 1.60 0', ['loaded'] = 'MidiControl 1.26 1; MidiNote 1.60 127' }, 91 | ['7.84'] = { ['empty'] = 'MidiControl 1.27 0; MidiNote 1.61 0', ['loaded'] = 'MidiControl 1.27 1; MidiNote 1.61 127' }, 92 | ['7.86'] = { ['empty'] = 'MidiControl 1.28 0; MidiNote 1.62 0', ['loaded'] = 'MidiControl 1.28 1; MidiNote 1.62 127' }, 93 | ['7.87'] = { ['empty'] = 'MidiControl 1.29 0; MidiNote 1.63 0', ['loaded'] = 'MidiControl 1.29 1; MidiNote 1.63 127' }, 94 | ['7.88'] = { ['empty'] = 'MidiControl 1.30 0; MidiNote 1.64 0', ['loaded'] = 'MidiControl 1.30 1; MidiNote 1.64 127' }, 95 | ['7.89'] = { ['empty'] = 'MidiControl 1.31 0; MidiNote 1.65 0', ['loaded'] = 'MidiControl 1.31 1; MidiNote 1.65 127' }, 96 | } 97 | 98 | local ledMappingPresets = { 99 | ['0.1'] = { ['empty'] = 'MidiNote 1.52 0', ['loaded'] = 'MidiNote 1.52 1', ['playing'] = 'MidiNote 1.52 2' }, 100 | ['0.2'] = { ['empty'] = 'MidiNote 2.52 0', ['loaded'] = 'MidiNote 2.52 1', ['playing'] = 'MidiNote 2.52 2' }, 101 | ['0.3'] = { ['empty'] = 'MidiNote 3.52 0', ['loaded'] = 'MidiNote 3.52 1', ['playing'] = 'MidiNote 3.52 2' }, 102 | ['0.4'] = { ['empty'] = 'MidiNote 4.52 0', ['loaded'] = 'MidiNote 4.52 1', ['playing'] = 'MidiNote 4.52 2' }, 103 | ['0.5'] = { ['empty'] = 'MidiNote 5.52 0', ['loaded'] = 'MidiNote 5.52 1', ['playing'] = 'MidiNote 5.52 2' }, 104 | ['0.6'] = { ['empty'] = 'MidiNote 6.52 0', ['loaded'] = 'MidiNote 6.52 1', ['playing'] = 'MidiNote 6.52 2' }, 105 | ['0.7'] = { ['empty'] = 'MidiNote 7.52 0', ['loaded'] = 'MidiNote 7.52 1', ['playing'] = 'MidiNote 7.52 2' }, 106 | ['0.8'] = { ['empty'] = 'MidiNote 8.52 0', ['loaded'] = 'MidiNote 8.52 1', ['playing'] = 'MidiNote 8.52 2' }, 107 | ['0.10'] = { ['empty'] = 'MidiNote 1.51 0', ['loaded'] = 'MidiNote 1.51 1', ['playing'] = '' }, 108 | ['0.11'] = { ['empty'] = 'MidiNote 2.51 0', ['loaded'] = 'MidiNote 2.51 1', ['playing'] = '' }, 109 | ['0.12'] = { ['empty'] = 'MidiNote 3.51 0', ['loaded'] = 'MidiNote 3.51 1', ['playing'] = '' }, 110 | ['0.13'] = { ['empty'] = 'MidiNote 4.51 0', ['loaded'] = 'MidiNote 4.51 1', ['playing'] = '' }, 111 | ['0.14'] = { ['empty'] = 'MidiNote 5.51 0', ['loaded'] = 'MidiNote 5.51 1', ['playing'] = '' }, 112 | ['0.15'] = { ['empty'] = 'MidiNote 6.51 0', ['loaded'] = 'MidiNote 6.51 1', ['playing'] = '' }, 113 | ['0.16'] = { ['empty'] = 'MidiNote 7.51 0', ['loaded'] = 'MidiNote 7.51 1', ['playing'] = '' }, 114 | ['0.17'] = { ['empty'] = 'MidiNote 8.51 0', ['loaded'] = 'MidiNote 8.51 1', ['playing'] = '' }, 115 | } 116 | 117 | local ledMappingGroups = { 118 | ['1'] = { ['empty'] = 'MidiNote 82 0', ['loaded'] = 'MidiNote 82 1', ['playing'] = 'MidiNote 82 2' }, 119 | ['2'] = { ['empty'] = 'MidiNote 83 0', ['loaded'] = 'MidiNote 83 1', ['playing'] = 'MidiNote 83 2' }, 120 | ['3'] = { ['empty'] = 'MidiNote 84 0', ['loaded'] = 'MidiNote 84 1', ['playing'] = 'MidiNote 84 2' }, 121 | ['4'] = { ['empty'] = 'MidiNote 85 0', ['loaded'] = 'MidiNote 85 1', ['playing'] = 'MidiNote 85 2' }, 122 | ['5'] = { ['empty'] = 'MidiNote 86 0', ['loaded'] = 'MidiNote 86 1', ['playing'] = 'MidiNote 86 2' }, 123 | ['6'] = { ['empty'] = 'MidiNote 81 0', ['loaded'] = 'MidiNote 81 1', ['playing'] = '' }, 124 | ['7'] = { ['empty'] = 'MidiNote 80 0', ['loaded'] = 'MidiNote 80 1', ['playing'] = '' } 125 | } 126 | 127 | local slotMappingExecutors = { 128 | ['1'] = { ['1'] = '6.131', ['2'] = '6.141', ['3'] = '6.151', ['4'] = '6.161', ['5'] = '6.171' }, 129 | ['2'] = { ['1'] = '6.132', ['2'] = '6.142', ['3'] = '6.152', ['4'] = '6.162', ['5'] = '6.172' }, 130 | ['3'] = { ['1'] = '6.133', ['2'] = '6.143', ['3'] = '6.153', ['4'] = '6.163', ['5'] = '6.173' }, 131 | ['4'] = { ['1'] = '6.134', ['2'] = '6.144', ['3'] = '6.154', ['4'] = '6.164', ['5'] = '6.174' }, 132 | ['5'] = { ['1'] = '6.135', ['2'] = '6.145', ['3'] = '6.155', ['4'] = '6.165', ['5'] = '6.175' }, 133 | ['6'] = { ['1'] = '6.136', ['2'] = '6.146', ['3'] = '6.156', ['4'] = '6.166', ['5'] = '6.176' }, 134 | ['7'] = { ['1'] = '6.137', ['2'] = '6.147', ['3'] = '6.157', ['4'] = '6.167', ['5'] = '6.177' }, 135 | ['8'] = { ['1'] = '6.138', ['2'] = '6.148', ['3'] = '6.158', ['4'] = '6.168', ['5'] = '6.178' } 136 | } 137 | 138 | -- Classes 139 | local Utils = {} 140 | local Mapper = {} 141 | 142 | ----------------------- 143 | Utils.exists = function(objString) 144 | if (handle(objString)) then 145 | return true 146 | else 147 | return false 148 | end 149 | end 150 | 151 | Utils.toggleOnOff = function(status) 152 | if (status == 'on') then 153 | return 'off' 154 | else 155 | return 'on' 156 | end 157 | end 158 | 159 | ----------------------- 160 | Mapper.setup = function() 161 | local confirmation = gma.textinput("Reset Slots + Setup, continue? [y/n]", 'n') 162 | if (confirmation == 'y') then 163 | local ex1 = Utils.exists('Executor 7.1') 164 | local ex2 = Utils.exists('Executor 7.2') 165 | local ex3 = Utils.exists('Executor 7.3') 166 | local ex4 = Utils.exists('Executor 7.4') 167 | local ex5 = Utils.exists('Executor 7.5') 168 | local ex6 = Utils.exists('Executor 7.6') 169 | local ex7 = Utils.exists('Executor 7.7') 170 | local ex8 = Utils.exists('Executor 7.8') 171 | 172 | -- Cannot setup when one of the slots is loaded! 173 | if (ex1 or ex2 or ex3 or ex4 or ex5 or ex6 or ex7 or ex8) then 174 | feedback('Error during setup: Please clear out Executors 7.1 - 7.8 and try again!') 175 | else 176 | feedback('Setting up executor slots...') 177 | setVar('apc40-slot1', 'none') 178 | setVar('apc40-slot2', 'none') 179 | setVar('apc40-slot3', 'none') 180 | setVar('apc40-slot4', 'none') 181 | setVar('apc40-slot5', 'none') 182 | setVar('apc40-slot6', 'none') 183 | setVar('apc40-slot7', 'none') 184 | setVar('apc40-slot8', 'none') 185 | 186 | feedback('Setting up group slots...') 187 | setVar('apc40-group1', 'none') 188 | setVar('apc40-group2', 'none') 189 | setVar('apc40-group3', 'none') 190 | setVar('apc40-group4', 'none') 191 | setVar('apc40-group5', 'none') 192 | setVar('apc40-group6', 'none') 193 | setVar('apc40-group7', 'none') 194 | 195 | feedback('Setting up preset slots...') 196 | setVar('apc40-preset0.1', 'none') 197 | setVar('apc40-preset0.2', 'none') 198 | setVar('apc40-preset0.3', 'none') 199 | setVar('apc40-preset0.4', 'none') 200 | setVar('apc40-preset0.5', 'none') 201 | setVar('apc40-preset0.6', 'none') 202 | setVar('apc40-preset0.7', 'none') 203 | setVar('apc40-preset0.8', 'none') 204 | 205 | setVar('apc40-preset0.10', 'none') 206 | setVar('apc40-preset0.11', 'none') 207 | setVar('apc40-preset0.12', 'none') 208 | setVar('apc40-preset0.13', 'none') 209 | setVar('apc40-preset0.14', 'none') 210 | setVar('apc40-preset0.15', 'none') 211 | setVar('apc40-preset0.16', 'none') 212 | setVar('apc40-preset0.17', 'none') 213 | 214 | setVar('apc40-setup', 'done') 215 | feedback('Setup completed!') 216 | end 217 | else 218 | feedback('No confirmation, no setup! :)') 219 | end 220 | end 221 | 222 | Mapper.refreshLeds = function() 223 | -- Go through ledMappingExecutors table 224 | for k,v in pairs(ledMappingExecutors) do 225 | local doesExist = Utils.exists('Executor '..k) 226 | 227 | if (doesExist) then 228 | cmd(ledMappingExecutors[k]['loaded']) 229 | else 230 | cmd(ledMappingExecutors[k]['empty']) 231 | end 232 | end 233 | 234 | -- Set the loaded clips 235 | local slot1 = getVar('apc40-slot1') 236 | local slot2 = getVar('apc40-slot2') 237 | local slot3 = getVar('apc40-slot3') 238 | local slot4 = getVar('apc40-slot4') 239 | local slot5 = getVar('apc40-slot5') 240 | local slot6 = getVar('apc40-slot6') 241 | local slot7 = getVar('apc40-slot7') 242 | local slot8 = getVar('apc40-slot8') 243 | 244 | if (slot1 ~= 'none') then 245 | cmd(ledMappingExecutors[slot1]['playing']) 246 | end 247 | 248 | if (slot2 ~= 'none') then 249 | cmd(ledMappingExecutors[slot2]['playing']) 250 | end 251 | 252 | if (slot3 ~= 'none') then 253 | cmd(ledMappingExecutors[slot3]['playing']) 254 | end 255 | 256 | if (slot4 ~= 'none') then 257 | cmd(ledMappingExecutors[slot4]['playing']) 258 | end 259 | 260 | if (slot5 ~= 'none') then 261 | cmd(ledMappingExecutors[slot5]['playing']) 262 | end 263 | 264 | if (slot6 ~= 'none') then 265 | cmd(ledMappingExecutors[slot6]['playing']) 266 | end 267 | 268 | if (slot7 ~= 'none') then 269 | cmd(ledMappingExecutors[slot7]['playing']) 270 | end 271 | 272 | if (slot8 ~= 'none') then 273 | cmd(ledMappingExecutors[slot8]['playing']) 274 | end 275 | 276 | -- Go through Presets 277 | for k,v in pairs(ledMappingPresets) do 278 | local doesExist = Utils.exists('Preset '..k) 279 | 280 | if (doesExist) then 281 | cmd(ledMappingPresets[k]['loaded']) 282 | else 283 | cmd(ledMappingPresets[k]['empty']) 284 | end 285 | end 286 | 287 | -- Go through Groups 288 | for k,v in pairs(ledMappingGroups) do 289 | local doesExist = Utils.exists('Group '..k) 290 | 291 | if (doesExist) then 292 | cmd(ledMappingGroups[k]['loaded']) 293 | else 294 | cmd(ledMappingGroups[k]['empty']) 295 | end 296 | end 297 | end 298 | 299 | Mapper.loadSlot = function(slot, clip) 300 | local loadSlot = slotMappingExecutors[slot][clip] 301 | if (loadSlot == nil) then 302 | feedback('Cannot find slot: '..slot..' with clip: '..clip) 303 | return 304 | end 305 | 306 | local newSlot = 'none' 307 | -- Load slot 308 | local previousSlot = '' 309 | local slotExecutor = '' 310 | 311 | if (slot == '1') then 312 | previousSlot = getVar('apc40-slot1') 313 | slotExecutor = '7.1' 314 | elseif (slot == '2') then 315 | previousSlot = getVar('apc40-slot2') 316 | slotExecutor = '7.2' 317 | elseif (slot == '3') then 318 | previousSlot = getVar('apc40-slot3') 319 | slotExecutor = '7.3' 320 | elseif (slot == '4') then 321 | previousSlot = getVar('apc40-slot4') 322 | slotExecutor = '7.4' 323 | elseif (slot == '5') then 324 | previousSlot = getVar('apc40-slot5') 325 | slotExecutor = '7.5' 326 | elseif (slot == '6') then 327 | previousSlot = getVar('apc40-slot6') 328 | slotExecutor = '7.6' 329 | elseif (slot == '7') then 330 | previousSlot = getVar('apc40-slot7') 331 | slotExecutor = '7.7' 332 | elseif (slot == '8') then 333 | previousSlot = getVar('apc40-slot8') 334 | slotExecutor = '7.8' 335 | end 336 | 337 | -- If the clip in that slot does not exist, simply do nothing 338 | if (loadSlot ~= previousSlot and Utils.exists('Executor '..loadSlot) == false) then 339 | return 340 | end 341 | 342 | if (loadSlot == previousSlot) then 343 | cmd('Off Executor '..slotExecutor..'; Move Executor '..slotExecutor..' at Executor '..previousSlot) 344 | cmd(ledMappingExecutors[previousSlot]['loaded']) 345 | cmd(ledMappingExecutors[slotExecutor]['empty']) 346 | else 347 | if (previousSlot ~= 'none') then 348 | cmd('Off Executor '..slotExecutor..'; Move Executor '..slotExecutor..' at Executor '..previousSlot) 349 | cmd(ledMappingExecutors[previousSlot]['loaded']) 350 | end 351 | 352 | cmd('Move Executor '..loadSlot..' at Executor '..slotExecutor) 353 | newSlot = loadSlot 354 | cmd(ledMappingExecutors[loadSlot]['playing']) 355 | cmd(ledMappingExecutors[slotExecutor]['loaded']) 356 | end 357 | 358 | -- Save new slot 359 | if (slot == '1') then 360 | setVar('apc40-slot1', newSlot) 361 | elseif (slot == '2') then 362 | setVar('apc40-slot2', newSlot) 363 | elseif (slot == '3') then 364 | setVar('apc40-slot3', newSlot) 365 | elseif (slot == '4') then 366 | setVar('apc40-slot4', newSlot) 367 | elseif (slot == '5') then 368 | setVar('apc40-slot5', newSlot) 369 | elseif (slot == '6') then 370 | setVar('apc40-slot6', newSlot) 371 | elseif (slot == '7') then 372 | setVar('apc40-slot7', newSlot) 373 | elseif (slot == '8') then 374 | setVar('apc40-slot8', newSlot) 375 | end 376 | end 377 | 378 | Mapper.togglePreset = function(preset) 379 | if (Utils.exists('Preset '..preset)) then 380 | local presetStatus = 'none' 381 | 382 | if (preset == '0.1') then 383 | presetStatus = getVar('apc40-preset0.1') 384 | setVar('apc40-preset0.1', Utils.toggleOnOff(presetStatus)) 385 | elseif (preset == '0.2') then 386 | presetStatus = getVar('apc40-preset0.2') 387 | setVar('apc40-preset0.2', Utils.toggleOnOff(presetStatus)) 388 | elseif (preset == '0.3') then 389 | presetStatus = getVar('apc40-preset0.3') 390 | setVar('apc40-preset0.3', Utils.toggleOnOff(presetStatus)) 391 | elseif (preset == '0.4') then 392 | presetStatus = getVar('apc40-preset0.4') 393 | setVar('apc40-preset0.4', Utils.toggleOnOff(presetStatus)) 394 | elseif (preset == '0.5') then 395 | presetStatus = getVar('apc40-preset0.5') 396 | setVar('apc40-preset0.5', Utils.toggleOnOff(presetStatus)) 397 | elseif (preset == '0.6') then 398 | presetStatus = getVar('apc40-preset0.6') 399 | setVar('apc40-preset0.6', Utils.toggleOnOff(presetStatus)) 400 | elseif (preset == '0.7') then 401 | presetStatus = getVar('apc40-preset0.7') 402 | setVar('apc40-preset0.7', Utils.toggleOnOff(presetStatus)) 403 | elseif (preset == '0.8') then 404 | presetStatus = getVar('apc40-preset0.8') 405 | setVar('apc40-preset0.8', Utils.toggleOnOff(presetStatus)) 406 | elseif (preset == '0.10') then 407 | presetStatus = getVar('apc40-preset0.10') 408 | setVar('apc40-preset0.10', Utils.toggleOnOff(presetStatus)) 409 | elseif (preset == '0.11') then 410 | presetStatus = getVar('apc40-preset0.11') 411 | setVar('apc40-preset0.11', Utils.toggleOnOff(presetStatus)) 412 | elseif (preset == '0.12') then 413 | presetStatus = getVar('apc40-preset0.12') 414 | setVar('apc40-preset0.12', Utils.toggleOnOff(presetStatus)) 415 | elseif (preset == '0.13') then 416 | presetStatus = getVar('apc40-preset0.13') 417 | setVar('apc40-preset0.13', Utils.toggleOnOff(presetStatus)) 418 | elseif (preset == '0.14') then 419 | presetStatus = getVar('apc40-preset0.14') 420 | setVar('apc40-preset0.14', Utils.toggleOnOff(presetStatus)) 421 | elseif (preset == '0.15') then 422 | presetStatus = getVar('apc40-preset0.15') 423 | setVar('apc40-preset0.15', Utils.toggleOnOff(presetStatus)) 424 | elseif (preset == '0.16') then 425 | presetStatus = getVar('apc40-preset0.16') 426 | setVar('apc40-preset0.16', Utils.toggleOnOff(presetStatus)) 427 | elseif (preset == '0.17') then 428 | presetStatus = getVar('apc40-preset0.17') 429 | setVar('apc40-preset0.17', Utils.toggleOnOff(presetStatus)) 430 | end 431 | 432 | -- Toggle preset 433 | if (presetStatus == 'on') then 434 | -- Turn off preset 435 | cmd('Off Preset '..preset) 436 | cmd(ledMappingPresets[preset]['loaded']) 437 | cmd('Appearance Preset '..preset..' /r') 438 | else 439 | -- Turn on preset 440 | cmd('Call Preset '..preset) 441 | cmd(ledMappingPresets[preset]['playing']) 442 | cmd('Appearance Preset '..preset..' /color=FF0000') 443 | end 444 | end 445 | end 446 | 447 | Mapper.toggleGroup = function(group) 448 | if (Utils.exists('Group '..group)) then 449 | local groupStatus = 'none' 450 | 451 | -- Get the current status of the group --> Immediately reversing it in the appropriate variable 452 | if (group == '1') then 453 | groupStatus = getVar('apc40-group1') 454 | setVar('apc40-group1', Utils.toggleOnOff(groupStatus)) 455 | elseif (group == '2') then 456 | groupStatus = getVar('apc40-group2') 457 | setVar('apc40-group2', Utils.toggleOnOff(groupStatus)) 458 | elseif (group == '3') then 459 | groupStatus = getVar('apc40-group3') 460 | setVar('apc40-group3', Utils.toggleOnOff(groupStatus)) 461 | elseif (group == '4') then 462 | groupStatus = getVar('apc40-group4') 463 | setVar('apc40-group4', Utils.toggleOnOff(groupStatus)) 464 | elseif (group == '5') then 465 | groupStatus = getVar('apc40-group5') 466 | setVar('apc40-group5', Utils.toggleOnOff(groupStatus)) 467 | elseif (group == '6') then 468 | groupStatus = getVar('apc40-group6') 469 | setVar('apc40-group6', Utils.toggleOnOff(groupStatus)) 470 | elseif (group == '7') then 471 | groupStatus = getVar('apc40-group7') 472 | setVar('apc40-group7', Utils.toggleOnOff(groupStatus)) 473 | end 474 | 475 | -- Toggle group 476 | if (groupStatus == 'on') then 477 | -- Turn off group 478 | cmd('Off Group '..group) 479 | cmd(ledMappingGroups[group]['loaded']) 480 | cmd('Appearance Group '..group..' /r') 481 | else 482 | -- Turn on group 483 | cmd('Group '..group) 484 | cmd(ledMappingGroups[group]['playing']) 485 | cmd('Appearance Group '..group..' /color=FF0000') 486 | end 487 | end 488 | end 489 | 490 | function apc40Mapper() 491 | local op = getVar('apc40-op') 492 | 493 | -- Check if the system is setup! 494 | local isSetup = getVar('apc40-setup') 495 | 496 | if (isSetup or op == 'setup') then 497 | if (op == 'load-slot') then 498 | local slot = getVar('apc40-slot') 499 | local clip = getVar('apc40-clip') 500 | 501 | if (slot and clip) then 502 | Mapper.loadSlot(slot, clip) 503 | else 504 | feedback('Please set apc40-slot and apc40-clip!') 505 | end 506 | elseif (op == 'refresh-leds') then 507 | Mapper.refreshLeds() 508 | elseif (op == 'setup') then 509 | Mapper.setup() 510 | elseif (op == 'toggle-group') then 511 | local group = getVar('apc40-group') 512 | Mapper.toggleGroup(group) 513 | elseif (op == 'toggle-preset') then 514 | local preset = getVar('apc40-preset') 515 | Mapper.togglePreset(preset) 516 | else 517 | feedback('Unknown operation "'..op..'"') 518 | end 519 | else 520 | feedback('Error while trying to execute operation "'..op..'": Please run SETUP first!') 521 | end 522 | end 523 | 524 | 525 | return apc40Mapper -------------------------------------------------------------------------------- /apc40-mapping/apc40-view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | UE5b/1M2QP+AAQH/gAEB/4ABAf+AAQH/gAEB/4ABAf+AAQH/gAEB/4ABAf+AAQH/gAEB/4ABAf+AAQH/ 8 | jRsb/5cvL/+aNTX/mzg4/5gxMf+WLCz/jx4e/5w5Of+WLS3/hQwM/5k0NP+YMDD/gAEB/4ABAf+AAQH/ 9 | gAEB/4ABAf+AAQH/gAEB/4ABAf+AAQH/gAEB/4ABAf+AAQH/fwEB/2EEBP9FAQH/RQEB/0UBAf9FAQH/ 10 | QBIS/zI1Nf82LCz/PBgY/0UBAf9FAQH/RQEB/0UBAf9KCAj/QkJC/ypxf/8uWGD/QkJC/1JFUP9KRVH/ 11 | gAEB/4ABAf+AAQH/gAEB/4ABAf+AAQH/gwcH/4EDA/+AAQH/gwgI/5kzM/+bNjb/mzY2/5kzM/+SJCT/ 12 | nDg4/4oWFv+OHh7/mjQ0/4QJCf+BAwP/gQMD/4EDA/+AAQH/gAEB/4ABAf+AAQH/fwEB/1wDA/8MAQH/ 13 | HBER/yQZGf8nHBz/HRIS/wwBAf8hEBD/RSgv/0ogJv9fExb/XxMW/18TFv9eEhX/XxMW/18TFv9fExb/ 14 | XxMW/14SFf9fExb/XxMW/18TFv9fExb/XhIV/18TFv91P0L/eUhK/3Q9QP9lICP/bjM2/3dER/92QkT/ 15 | dkJF/18TFv9cEBP/XBAT/18TFv9fExb/XxMW/18TFv9eEhX/XhMW/18TFv9fExb/XxMW/14TFv9eEhX/ 16 | XhMW/0sVGP87Exb/OxMW/zYOEf80DQ//Lhwf/yQ6Pf8iPT//KiYo/zQND/80DQ//NAwP/zQND/85Fhn/ 17 | Q0ND/y9OVP8zREf/Q0ND/0MlMf8+Hi//WA0a/1gNGv9YDRr/WA0a/1gNGv9YDhj/aDQ5/3JHTP9pNjv/ 18 | YSYs/2g0Ov9tPUL/cENI/24zNv9yOTz/dUBC/3Q+Qf9rKy3/aCYo/3E3Ov9zQEL/dkhL/2YoKv9eGBr/ 19 | Xhga/14YGv9eGBr/WxQW/0EOEf8RDQ//EA0P/ycjJv8oJCf/EAwP/x0ND/8kFxn/JzAz/y8vL/8yMjP/ 20 | MjIz/zIyM/8vLy//Li4v/zIyM/8yMjP/MjIz/zAwMP8tLS3/MjIz/zIyM/8yMjP/MTEx/y0tLv8xMTH/ 21 | MjIz/zIyM/8zMzP/LS0t/zAwMP8yMjP/MjIz/zIyM/8fHx//ICAg/y0tLf8yMjP/MjIz/zIyM/8xMTH/ 22 | Ly8v/zExMf8yMjP/MjIz/zMzM/8tLS3/MDAw/zIyM/8yMjP/MjIz/xcXF/8NDQ3/AgIC/wAAAP8RERH/ 23 | FBQU/w8PD/8AAAD/AgIC/xAQEP8YISX/SEhI/1tbW/9gYGD/SEhI/xUeMP8HBwf/Hh4e/ycnJ/9GRkb/ 24 | JCQk/wAAAP8RGiz/CgoK/xISEv8sLCz/Pz8//yYmJv8PDw//EBkd/y8vL/84ODj/ODg4/zg4OP84ODj/ 25 | ODg4/zg4OP8kKyv/BwcH/x0dHf8xMTH/PDw8/x4eHv8WFhb/HyYm/w0NDf8AAAD/AAAA/wICAv8AAAD/ 26 | AAAA/x4eHv8UHSD/HCUo/x0dHf8dHR3/HR0d/x0dHf8gICD/HR0d/x0dHf8dHR3/HR0d/yAgIP8dHR3/ 27 | HR0d/x0dHf8dHR3/ICAg/x0dHf8dHR3/HR0d/x0dHf8fHx//ICAg/x0dHf8dHR3/HR0d/x0dHf8cHBz/ 28 | HBwc/x0dHf8dHR3/HR0d/x0dHf8gICD/Hx8f/x0dHf8dHR3/HR0d/x8fH/8gICD/HR0d/x0dHf8dHR3/ 29 | HR0d/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GDhf/ICA9/x4eMv8bGzL/ 30 | HBw9/wgQSf8AAEH/AABB/wAAQf8AAEH/AABB/wAAQf8AEkz/ACs8/wArPP8AKzz/ACs8/wArPP8AKzz/ 31 | ADBC/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8lOzv/JUVF/yxLS/8nRkb/IUFB/yFBQf8hQUH/ 32 | Gzc3/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/HCUo/x4eHv8dHR3/HR0d/x0dHf8gICD/ 33 | HR0d/x4eHv8dHR3/HR0d/yAgIP8dHR3/Hh4e/x0dHf8dHR3/ICAg/x0dHf8eHh7/HR0d/x0dHf8eHh7/ 34 | ICAg/x4eHv8dHR3/HR0d/x0dHf8cHBz/HBwc/x0dHf8eHh7/HR0d/x0dHf8gICD/Hh4e/x4eHv8dHR3/ 35 | HR0d/x4eHv8gICD/Hh4e/x0dHf8dHR3/HR0d/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 36 | AAAA/wAAAP8EDR3/AgMb/wIDAP8AAAD/AAAa/wYdWP8AHVT/AAE7/wEBOP8KCkH/BgY9/wAANv8AFkn/ 37 | AENR/wAwP/8AJDL/Bio4/wkuPP8AJTP/ACk5/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8hNTX/ 38 | Hzk5/yZBQf8eOTn/Ij09/yE8PP8bNjb/GDAw/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/ 39 | KDA0/zExMf80NDT/NDQ0/zQ0NP8wMDD/MDAw/zQ0NP80NDT/NDQ0/zExMf8uLi7/NDQ0/zQ0NP80NDT/ 40 | MjIy/y8vL/8zMzP/NDQ0/zQ0NP80NDT/Li4u/zIyMv80NDT/NDQ0/zQ0NP8fHx//ICAg/y4uLv80NDT/ 41 | NDQ0/zQ0NP8yMjL/MDAw/zMzM/80NDT/NDQ0/zQ0NP8uLi7/MjIy/zQ0NP80NDT/NDQ0/xgYGP8NDQ3/ 42 | AgIC/wAAAP8RERH/FBQU/w8PD/8AAAD/AgIC/xAQEP8SGyv/UVFs/1xcXP9fX1//VFRv/x9Vc/8oiYn/ 43 | AAUm/wQEGv8pKT//FRUr/wAAFv8AHTv/MpCQ/w9AR/8ADhT/HSsx/yEvNf8CERb/ABYe/xoaGv8cHBz/ 44 | HR0d/x0dHf8dHR3/HR0d/x0dHf8mLCz/FRUV/xAgIP8LFhb/Hikp/xQfH/8LFhb/DRsb/wAAAP8AAAD/ 45 | AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/HCUo/x0dHf8dHR3/HR0d/x0dHf8gICD/HR0d/x0dHf8dHR3/ 46 | HR0d/yAgIP8dHR3/HR0d/x0dHf8dHR3/ICAg/x0dHf8dHR3/HR0d/x0dHf8fHx//ICAg/x0dHf8dHR3/ 47 | HR0d/x0dHf8cHBz/HBwc/x0dHf8dHR3/HR0d/x0dHf8gICD/Hx8f/x0dHf8dHR3/HR0d/x8fH/8gICD/ 48 | HR0d/x0dHf8dHR3/HR0d/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8EDRn/ 49 | R0dw/09PZf9RUWf/RkZv/xIqQP8RMz7/BggX/wYGEf8VFSD/EhId/w8PGv8OGCP/Fj9C/wYcIP8GDhD/ 50 | DhUY/xkgI/8HDhH/Fh4i/xkZGf8YGBj/EhIS/xISEv8SEhL/EhIS/x8fH/8ZHR3/Fhsb/w4VFf8MERH/ 51 | FBkZ/xIYGP8VGhr/FRoa/xISEv8ICAj/BgYG/wYGBv8GBgb/BgYG/xYWFv8VHiH/GyQn/xwcHP8bGxv/ 52 | Gxsb/xsbG/8fHx//Gxsb/xwcHP8bGxv/Gxsb/x8fH/8bGxv/HBwc/xsbG/8bGxv/Hx8f/xsbG/8cHBz/ 53 | Gxsb/xsbG/8dHR3/Hx8f/xwcHP8bGxv/Gxsb/xsbG/8cHBz/HBwc/xsbG/8cHBz/Gxsb/xsbG/8fHx// 54 | HR0d/xwcHP8bGxv/Gxsb/x0dHf8fHx//HBwc/xsbG/8bGxv/Gxsb/woKCv8AAAD/AAAA/wAAAP8AAAD/ 55 | AAAA/wAAAP8AAAD/AAAA/wAAAP8KExb/DQ0H/wQFAP8AAAD/BwcH/xAYHP8GBgb/AAAA/wEBAf8CAgL/ 56 | AAAA/wcHB/8HBwf/BwcH/wAAAP8AAAD/AgIC/wAAAP8AAAD/Dg4O/wYGBv8DAwP/AAAA/wICAv8AAAD/ 57 | AAAA/wsLC/8ICAj/BAQE/wAAAP8AAAD/AgIC/wAAAP8HBwf/CAgI/wcHB/8AAAD/AAAA/wICAv8AAAD/ 58 | AAAA/w4ODv8UHSD/JzAz/zExMf80NDT/NDQ0/zQ0NP8vLy//MDAw/zQ0NP80NDT/NDQ0/zExMf8uLi7/ 59 | NDQ0/zQ0NP80NDT/MTEx/y8vL/8zMzP/NDQ0/zQ0NP80NDT/LS0t/zIyMv80NDT/NDQ0/zQ0NP8fHx// 60 | ICAg/y4uLv80NDT/NDQ0/zQ0NP8xMTH/Ly8v/zMzM/80NDT/NDQ0/zQ0NP8tLS3/MjIy/zQ0NP80NDT/ 61 | NDQ0/xgYGP8NDQ3/AgIC/wAAAP8RERH/FBQU/w8PD/8AAAD/AgIC/xAQEP8YISX/MzMz/y4uLv8uLi7/ 62 | MzMz/wwVGP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 63 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 64 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/HCUo/x0dHf8dHR3/HR0d/x0dHf8gICD/ 65 | HR0d/x0dHf8dHR3/HR0d/yAgIP8dHR3/HR0d/x0dHf8dHR3/ICAg/x0dHf8dHR3/HR0d/x0dHf8fHx// 66 | ICAg/x0dHf8dHR3/HR0d/x0dHf8cHBz/HBwc/x0dHf8dHR3/HR0d/x0dHf8gICD/Hx8f/x0dHf8dHR3/ 67 | HR0d/x8fH/8gICD/HR0d/x0dHf8dHR3/HR0d/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 68 | AAAA/wAAAP8KExf/Z2dn/2dnZ/9qamr/Z2dn/wwVGP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 69 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 70 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAMEf8TJi3/ 71 | HCUo/x4eHv8dHR3/HR0d/x0dHf8gICD/HR0d/x4eHv8dHR3/HR0d/yAgIP8dHR3/Hh4e/x0dHf8dHR3/ 72 | ICAg/x0dHf8eHh7/HR0d/x0dHf8fHx//ICAg/x4eHv8dHR3/HR0d/x0dHf8cHBz/HBwc/x0dHf8eHh7/ 73 | HR0d/x0dHf8gICD/Hx8f/x4eHv8dHR3/HR0d/x8fH/8gICD/Hh4e/x0dHf8dHR3/HR0d/woKCv8AAAD/ 74 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HEBP/MjIy/zIyMv8tLS3/Li4u/0cyO/9EMz3/ 75 | Xg0P/14ND/9eDRD/Xg0P/14ND/9eDQ//Xg0Q/14ND/9eDQ//Xg0P/3Q5PP9zODr/eEFE/3U7Pf9sKCv/ 76 | cjU4/2cfIv9rJyr/cjQ3/14ND/9eDQ//Xg0P/14NEP9eDRD/Xg0P/14ND/9eDQ//Xg0Q/0UOEf8QDQ// 77 | Hhod/yQgI/8nIyb/Hhsf/xAUGv8eGh3/Ji4y/y8vL/8yMjL/MjIy/zIyMv8uLi7/Li4u/zIyMv8yMjL/ 78 | MjIy/y8vL/8sLCz/MjIy/zIyMv8yMjL/MDAw/y0tLf8xMTH/MjIy/zIyMv8yMjL/Kysr/zAwMP8yMjL/ 79 | MjIy/zIyMv8fHx//Hx8f/ywsLP8yMjL/MjIy/zIyMv8wMDD/LS0t/zExMf8yMjL/MjIy/zIyMv8rKyv/ 80 | MDAw/zIyMv8yMjL/MjIy/xgYGP8MDAz/AgIC/wAAAP8RERH/FBQU/w0NDf8AAAD/AgIC/xAQEP8WHyL/ 81 | HR0d/xoaGv8aGhr/HR0d/0k3Qf9END//dgkM/3YJDP92CQz/dgkM/3YJDP92CQz/hysu/5A9QP+HKy7/ 82 | gB4h/4csLv+NODv/jjk8/4crLv+LMzb/jTc6/4s0N/+CISP/giEk/4oxM/+MNjj/jzs+/34aHf92CQz/ 83 | dgkM/3YJDP92CQz/dgkM/1UMDv8NCQz/EAwP/ygkJ/8oJSf/EAwP/xoJDP8mExP/Hicq/yAgIP8gICD/ 84 | ICAg/yAgIP8jIyP/ICAg/yAgIP8gICD/ICAg/yMjI/8gICD/ICAg/yAgIP8gICD/IyMj/yAgIP8gICD/ 85 | ICAg/yAgIP8iIiL/IyMj/yAgIP8gICD/ICAg/yAgIP8dHR3/HR0d/yAgIP8gICD/ICAg/yAgIP8jIyP/ 86 | IiIi/yAgIP8gICD/ICAg/yIiIv8jIyP/ICAg/yAgIP8gICD/ICAg/wsLC/8AAAD/AAAA/wAAAP8AAAD/ 87 | AAAA/wAAAP8AAAD/AAAA/wAAAP8IERT/HR0d/xoaGv8aGhr/HR0d/yY0Ov8wNzr/Mjk8/zI5PP8yOTz/ 88 | Mjk8/zI5PP8uNjj/LjY4/zI5PP8yOTz/Mjk8/zI5PP8yOTz/MDg7/yszNf8yOTz/Mjk8/zI5PP8yOTz/ 89 | Mjk8/zI5PP8tNDf/MDc6/zI5PP8yOTz/Mjk8/zI5PP8yOTz/JCwv/xAXGv8DCg3/AwoN/wMKDf8DCg3/ 90 | AwoN/yEpLP8UICT/HCUo/x0dHf8dHR3/HR0d/x0dHf8gICD/HR0d/x0dHf8dHR3/HR0d/yAgIP8dHR3/ 91 | HR0d/x0dHf8dHR3/ICAg/x0dHf8dHR3/HR0d/x0dHf8fHx//ICAg/x0dHf8dHR3/HR0d/x0dHf8cHBz/ 92 | HBwc/x0dHf8dHR3/HR0d/x0dHf8gICD/Hx8f/x0dHf8dHR3/HR0d/x8fH/8gICD/HR0d/x0dHf8dHR3/ 93 | HR0d/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HEBP/Hx8f/xwcHP8cHBz/ 94 | Hx8f/yIrLv8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8oKCj/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/ 95 | Jycn/yYmJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8oKCj/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/ 96 | HR0d/wAAAP8AAAD/AAAA/wICAv8AAAD/AAAA/wAAAP8UHSD/JC0w/ywsLP8vLy//Ly8v/y8vL/8zOTn/ 97 | MTY2/zk+Pv84Pj7/PUND/zg/P/8qKir/Ly8v/y8vL/8vLy//LDAw/x8lJf8mLCz/QUZG/xwiIv8/R0f/ 98 | Ki0t/y0tLf8vLy//Ly8v/y8vL/8eHh7/Hx8f/ykpKf8vLy//Ly8v/y8vL/8tLS3/Kysr/y4uLv8vLy// 99 | Ly8v/y8vL/8pKSr/LS0t/y8vL/8vLy//Ly8v/xUVFf8MDAz/AAAA/wAAAP8RERH/FBQU/xAQEP8AAAD/ 100 | AAAA/xAQEP8WHyL/ICAg/x4eHv8aGhr/HR0d/x4nKv8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8gICD/ 101 | HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/Hh4e/x4eHv8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8gICD/ 102 | HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/FxcX/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/ 103 | ICkt/yMjI/8jIyP/IyMj/yMjI/8qPDz/J0JC/zBLS/8mQkL/KkZG/ytBQf8jIyP/IyMj/yMjI/8jIyP/ 104 | Jy8v/xw3N/8lQED/KURE/x86Ov8hQUH/Jy4u/yMjI/8jIyP/IyMj/yMjI/8dHR3/Hh4e/yMjI/8jIyP/ 105 | IyMj/yMjI/8lJSX/JSUl/yMjI/8jIyP/IyMj/yUlJf8lJSX/IyMj/yMjI/8jIyP/IyMj/wwMDP8AAAD/ 106 | AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/wAAAP8IERT/HR0d/xoaGv8aGhr/HR0d/x0mKf8bGxv/ 107 | Hx8f/x0dHf8dHR3/HR0d/x0dHf8gICD/Gxsb/x4eHv8dHR3/HR0d/x0dHf8dHR3/Hh4e/x0dHf8eHh7/ 108 | HR0d/x0dHf8dHR3/HR0d/x0dHf8fHx//Gxsb/x4eHv8dHR3/HR0d/x0dHf8dHR3/FxcX/wAAAP8AAAD/ 109 | AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/HCUo/x0dHf8dHR3/HR0d/x0dHf8jPT3/JVJS/y1NTf8pR0f/ 110 | ID8//yQ8PP8dHR3/HR0d/x0dHf8dHR3/Iisr/yFOTv8qUFD/L0xM/yFAQP8lSUn/Iikp/x0dHf8dHR3/ 111 | HR0d/x0dHf8cHBz/HBwc/x0dHf8dHR3/HR0d/x0dHf8gICD/Hx8f/x0dHf8dHR3/HR0d/x8fH/8gICD/ 112 | HR0d/x0dHf8dHR3/HR0d/woKCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8IERT/ 113 | HR0d/xoaGv8aGhr/HR0d/xojJ/8ZGRn/HBwc/xsbG/8bGxv/Gxsb/xsbG/8cHBz/GRkZ/xsbG/8bGxv/ 114 | Gxsb/xsbG/8bGxv/Gxsb/xoaGv8aGhr/Gxsb/xsbG/8bGxv/Gxsb/xsbG/8bGxv/GRkZ/xsbG/8bGxv/ 115 | Gxsb/xsbG/8bGxv/FhYW/wYGBv8GBgb/BgYG/wYGBv8GBgb/BgYG/wYGBv8VHiH/HSYq/yAgIP8dHR3/ 116 | HR0d/yQkJP8iNzf/HlFR/xsqKv8lKyv/Iicn/yEnJ/8kJCT/HBwc/xoaGv8gICD/KS0t/yJUVP8WNDT/ 117 | HSMj/yctLf8wODj/ISMj/yUlJf8eHh7/IiIi/zo6Ov8bGxv/Ghoa/yUlJf8fHx//GRkZ/yIiIv8rKyv/ 118 | IiIi/yIiIv8hISH/GRkZ/zY2Nv8hISH/Hh4e/yIiIv8XFxf/Ly8v/xgYGP8NDQ3/AAAA/wAAAP8RERH/ 119 | FBQU/w8PD/8AAAD/AAAA/xAQEP8VHiH/JCQk/yEhIf8cHBz/Hh4e/w8YHP8LCwv/AAAA/wEBAf8CAgL/ 120 | AAAA/xAQEP8PDw//ERER/wAAAP8AAAD/AgIC/wAAAP8BAQH/HR0d/wsLC/8GBgb/AAAA/wICAv8AAAD/ 121 | AAAA/xcXF/8RERH/DAwM/wAAAP8AAAD/AgIC/wAAAP8QEBD/ERER/xMTE/8BAQH/AAAA/wICAv8AAAD/ 122 | AAAA/x4eHv8UHSD/DhYa/xAQEP8dHR3/GRkZ/wkJCf8MDAz/FhYW/yQkJP8fHx//ExMT/wwMDP8JCQn/ 123 | FhYW/xgYGP8MDAz/DAwM/xsbG/8XFxf/ICAg/x8fH/8gICD/DAwM/xwcHP8aGhr/ICAg/xEREf8XFxf/ 124 | FhYW/wkJCf8bGxv/FxcX/xISEv8MDAz/CwsL/xwcHP8cHBz/Dw8P/wsLC/8MDAz/Dw8P/xwcHP8VFRX/ 125 | CQkJ/wQEBP8AAAD/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/wAAAP8IERT/HR0d/xoaGv8aGhr/ 126 | HR0d/woSFv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 127 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 128 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UHSD/EBkc/w0NDf8NDQ3/DQ0N/w0NDf8QEBD/ 129 | DQ0N/w0NDf8NDQ3/DQ0N/xAQEP8NDQ3/DQ0N/w0NDf8NDQ3/EBAQ/w0NDf8NDQ3/DQ0N/w0NDf8PDw// 130 | EBAQ/w0NDf8NDQ3/DQ0N/w0NDf8XFxf/FxcX/w0NDf8NDQ3/DQ0N/w0NDf8QEBD/Dw8P/w0NDf8NDQ3/ 131 | DQ0N/w8PD/8QEBD/DQ0N/w0NDf8NDQ3/DQ0N/wUFBf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 132 | AAAA/wAAAP8IERT/HR0d/xoaGv8aGhr/HR0d/woSFv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 133 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 134 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAFB/8TIij/ 135 | EBkc/w0NDf8YGBj/ExMT/w0NDf8PDw//DQ0N/xQUFP8WFhb/DQ0N/w8PD/8NDQ3/EBAQ/xkZGf8NDQ3/ 136 | Dw8P/w0NDf8NDQ3/HBwc/w0NDf8ODg7/Dw8P/w0NDf8aGhr/Dw8P/w0NDf8XFxf/FxcX/w0NDf8QEBD/ 137 | Ghoa/w0NDf8PDw//Dg4O/w0NDf8cHBz/DQ0N/w4ODv8PDw//DQ0N/xoaGv8QEBD/DQ0N/wwMDP8LCwv/ 138 | CwsL/wsLC/8LCwv/CwsL/wsLC/8LCwv/CwsL/wsLC/8PFxv/ICAg/x0dHf8cHBz/Hx8f/zcbIP83FRr/ 139 | PA0P/zwND/89DRD/PA0P/zwND/88DQ//QhYZ/0chJP9EHB7/Qhca/0UdH/9DGh3/RR4g/z4PEf9LKCv/ 140 | QBMV/zwND/88DQ//PQ0Q/zwND/88DQ//Nw4R/xINEP8WEhX/EA0P/xIOEf8VDQ//CQw//wQMRv8EDUb/ 141 | BAtF/woRKf8PFiD/DRUg/wwgL/8UISz/GCEk/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/ 142 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/ 143 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/ 144 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aIyb/ 145 | ISEh/x0dHf8aGhr/HR0d/0NMWf83TVv/fwAA/38AAP+GDg7/lSws/5gzM/+FDQ3/jyEh/6hTU/+sWVn/ 146 | rFtb/5YvL/+jSEj/pEpK/5gzM/+YMjL/li0t/5MoKP+VLS3/lSws/38AAP9/AAD/dAIC/wQEBP8fHx// 147 | MjIy/yQkJP8aAQH/DgFz/wFJnv8AUZT/AAB//xAQOv8eHh7/Ghoa/xoaGv8XFyD/GCEk/xoaGv8aGhr/ 148 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/ 149 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/ 150 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/ 151 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8ZJCj/HR0d/xoaGv8aGhr/HR0d/zYrMP8vGx7/Mx8i/0QwMv83Iyb/ 152 | RjI0/zomKP9CLTD/Qi0w/0MwMv9CLTD/QCwv/z4qLf9CLTD/Qi0w/0ItMP9CLTD/PSot/0AsLv9CLTD/ 153 | QzAy/0ItMP9BLTD/MiEk/xMOEf8QDQ//EA0P/x4aHf8rKS7/Agd7/wUFgf8AAH7/AAB//xAQOv8aGhr/ 154 | Ghoa/xoaGv8XFyD/Fyct/xggI/8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/ 155 | GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/ 156 | GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/ 157 | GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xggIv8YICL/GCAi/xYlKv8UOUb/Hh4e/xsbG/8bGxv/ 158 | Hh4e/zY/Q/9AQED/MDAw/zQ0NP9BQUH/R0dH/yoqKv8tLS3/LS0t/y0tLf8tLS3/LCwt/y0tLf8tLS3/ 159 | LS0t/y0tLf8tLS3/LCwt/y0tLf8tLS3/LS0t/y0tLf8tLS3/BwcH/wAAAP8BAQH/AQEB/wAAAP8EDRD/ 160 | AQp9/ycnkv8dHY3/EBCH/w4OO/8XFx//Fxcf/xcXH/8WFiH/Ghoa/xoaGv8aGhr/Ghoa/xsbG/8aGhr/ 161 | Ghoa/xoaGv8zMzP/NlNY/yN2hv8/Pz//JiYm/wkJCf8FBRX/BQWG/xERTP8LCwv/BQUQ/wVoY/8Ral7/ 162 | CwsL/wUFB/8PShX/GXci/wgIIv8FBRb/MRQm/4o4K/8NDQ3/CgoK/xkFIv+tCXH/ERER/wwMDP8FBRX/ 163 | VwWt/xYRG/8JCQn/BQUV/xkZGf8WFhb/DAwM/wUFFf8ODhH/FRUV/xoaGv8aGhr/Ghoa/xsbG/8aGhr/ 164 | Ghoa/xoaGv8bGxv/ISEh/x4eHv8bGxv/Hh4e/y02Of8+Pj7/SkpK/0xMTP9QUFD/NTU1/x0dHf8dHR3/ 165 | HR0d/x0dHf8dHR3/ICAg/x0dHf8dHR3/HR0d/x0dHf8dHR3/ICAg/x0dHf8dHR3/HR0d/x0dHf8dHR3/ 166 | BgYG/wAAAP8AAAD/AAAA/wAAAP8EDRD/FR4w/x8fJv8XFx//Fxcf/xISKf8eHib/Fxcf/xcXH/8WFiH/ 167 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv80NDT/OUZI/ylMU/8/Pz//NDQ0/yUlJf8lJSX/ 168 | JSU0/yoqMf8lJSX/JSUl/yUxL/8qNTT/JSUl/yUlJf8mLSX/JC89/yMjMP8lJSX/Kycl/y8mOv8mJib/ 169 | JSUl/yclJv85JTH/Kioq/yUlJf8lJSX/LyU5/ysqLP8lJSX/JSUl/yYmJv8qKir/JSUl/yUlJf8lJSX/ 170 | IyMj/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/HR0d/xoaGv8aGhr/HR0d/yMsL/8tLS3/ 171 | IyMj/ygoKP8nJyf/JCQk/xwcHP8dHR3/HR0d/x0dHf8dHR3/ICAg/xsbG/8dHR3/HR0d/x0dHf8dHR3/ 172 | Hx8f/xsbG/8eHh7/HR0d/x0dHf8dHR3/BgYG/wAAAP8AAAD/AAAA/wAAAP8EDRD/FR4r/xoaGv8aGhr/ 173 | Ghoa/xQUJv8aGhr/Ghoa/xoaGv8XFyD/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv80NDT/ 174 | QEBA/2tra/9AQED/R0dH/15eXv9jY2P/WFhY/01NTf9aWlr/Y2Nj/1tbW/9NTU3/V1dX/2JiYv9fX1// 175 | QkJd/1FRXv9iYmL/Y2Nj/0REX/9LS0v/Y2Nj/2BgYP9WVlb/TU1N/2NjY/9dXV3/W1tb/1hYWP9jY2P/ 176 | ZmZm/2dnZ/9ZWVn/ZGRk/2VlZf9nZ2f/RERE/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8bGxv/ 177 | HR0d/xoaGv8aGhr/GCUq/yFCSP8pTEz/GRsb/ykpKf8mJib/GBgY/xsbG/8dHR3/HR0d/x0dHf8dHR3/ 178 | Hx8f/xsbG/8eHh7/HR0d/x0dHf8dHR3/Hx8f/xsbG/8eHh7/HR0d/x0dHf8dHR3/BgYG/wEBAf8BAQH/ 179 | AQEB/wEBAf8FDRH/FR4r/xoaGv8aGhr/Ghoa/xQUJv8aGhr/Ghoa/xoaGv8XFyD/Ghoa/xoaGv8aGhr/ 180 | Ghoa/xsbG/8aGhr/Ghoa/xoaGv8oKCj/MjIy/zQ0NP8tLS3/Li4u/zc3N/8xMTH/LS0t/y0tLf80NDT/ 181 | MTEx/y4uLv8tLS3/MzMz/zU1Nf8tLS3/KSkx/yYmQf8tLUP/JCQ6/yAgPf8uLi7/Nzc3/y4uLv8uLi7/ 182 | LS0t/zo6Ov8uLi7/Li4u/y0tLf86Ojr/Li4u/y0tLf8uLi7/ODg4/y4uLv8uLi7/Jycn/xoaGv8aGhr/ 183 | Ghoa/xsbG/8aGhr/Ghoa/xoaGv8bGxv/HBwc/xsbG/8ZHyH/GCkw/xQgJP8UFBT/BQUF/wUFBf8JCQn/ 184 | IiIi/xQUFP8MDAz/BQUF/wUFBf8VFRX/FhYW/xoaGv8HBwf/BQUF/wUFBf8dHR3/FxcX/xUVFf8FBQX/ 185 | BQUF/wUFBf8jIyP/FBQU/w8PD/8FBQX/BQUF/xMTE/8cJSj/Ehsy/xsbKv8VFST/FRUk/xAQLP8bGyn/ 186 | FRUk/xUVJP8VFSL/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8eHh7/HBwc/xoaGv8aGhr/ 187 | Hx8f/yAgIP8aGhr/Ghoa/x0dHf8fHx//Ghoa/xoaGv8dHR3/Hh4e/x0dHf8aGhr/HR0d/x0dHf8dHR3/ 188 | Ghoa/xsbG/8dHR3/Hh4e/xoaGv8aGhr/Hh4e/x8fH/8aGhr/Ghoa/x0dHf8gICD/Ghoa/xoaGv8dHR3/ 189 | Hh4e/xoaGv8aGhr/Gxsb/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/ 190 | Ghoa/wgRFP8AAAD/AAAA/wICAv8AAAD/AAAA/wAAAP8AAAD/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 191 | AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wAAAP8EDRD/ 192 | Fh8r/x0dHf8aGhr/Ghoa/xQUJv8dHR3/Ghoa/xoaGv8XFyD/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/ 193 | Ghoa/xoaGv89Pj7/UVFR/1FRUf9RUVH/NDQ0/xoaGv8aGhr/Ghoa/x0dHf8aGhr/Ghoa/xoaGv8dHR3/ 194 | Ghoa/xoaGv8aGhr/HR0d/xoaGv8aGhr/Ghoa/xsbG/8aGhr/Ghoa/xoaGv8aGhr/HR0d/xoaGv8aGhr/ 195 | Ghoa/x0dHf8aGhr/Ghoa/xoaGv8dHR3/Ghoa/xoaGv8aGhr/GR8h/xoaGv8aGhr/Ghoa/xoaGv8aGhr/ 196 | Ghoa/xoaGv8aGhr/Ghoa/xoaGv8aGhr/Ghoa/wgRFP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 197 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 198 | AAAA/wAAAP8AAAD/AAAA/wAAAP8DDxT/FR0p/xoaGv8aGhr/Ghoa/xQUJv8aGhr/Ghoa/xoaGv8XFyD/ 199 | JhgY/ygXF/8oFxf/KBcX/ygYGP8oFxf/KBcX/ygXF/9KOTn/Xk1N/15NTf9eTU3/QDAw/ykZGf8pGRn/ 200 | KRkZ/ywbG/8pGRn/KRkZ/ykZGf8sGxv/KRkZ/ykZGf8pGRn/LBsb/yoZGf8pGRn/KRkZ/yoaGv8qGRn/ 201 | KRkZ/ykZGf8pGRn/LBsb/ykZGf8pGRn/KRkZ/ywbG/8pGRn/KRkZ/ykZGf8sGxv/KRkZ/ykZGf8lJCr/ 202 | Jikw/ygXF/8jGBj/IxcX/yMYGP8iFxf/IhcX/yIXF/8jGBj/IxgY/yIXF/8iFxf/IhcX/xkZHv8WDA// 203 | Fg0P/xYND/8WDRD/Fg0P/xYND/8WDQ//Fg0Q/xYND/8WDQ//Fg0P/xYNEP8WDQ//Fg0P/xYND/8WDRD/ 204 | Fg0P/xYND/8WDQ//Fg0Q/xYND/8WDQ//Eg0Q/xENEP8RDRD/EA0P/xAPFP8SLDv/Ehgu/xUVJP8VFST/ 205 | FRUk/xAQK/8VFST/FRUk/xUVJP8VFSL/R1Zl/0k7Rv9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/ 206 | fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/hAsL/509Pf+dPDz/mjY2/549Pf+UKir/ 207 | li8v/40dHf+XMDD/n0FB/4sYGP+ZNTX/kiYm/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/ 208 | fwAA/38AAP9/AAD/fwAA/38AAP9/AAD/fwAA/38AAP9TAgL/AAAA/wAAAP8AAAD/FRUV/yMjI/8hISH/ 209 | CAgI/wAAAP8AAAD/DQAA/1NHVP8/S1n/fwAA/38AAP+CBgb/hg4O/4YPD/+BBQX/jyAg/6NHR/+ePz// 210 | nj8//5UtLf+ZNTX/oURE/4oWFv+ePT3/jyEh/4gTE/+ECgr/hxAQ/38AAP9/AAD/dQIC/wQEBP8cHBz/ 211 | IyMj/yEhIf8PAQH/JRgh/yIiIv8aGhr/Ghoa/xQUJ/8fHx//Ghoa/xoaGv8XFyD/RiEr/0cYIv9WFh7/ 212 | Xh4m/1MTG/9aGiH/VRod/1YbHv9WGx7/Vhse/1YbHv9UGRz/Vhse/1YbHv9WGx7/Vhse/1UaHf9UGRz/ 213 | Xiot/2xHSv9nPkD/WyUo/10qLf9nPT//a0RH/2M1OP9hMDP/a0VI/2I5PP9eMjT/XSks/1YbHv9WGx7/ 214 | Vhse/1YbHv9UGRv/Vhse/1YbHv9WGx7/Vhse/1UaHf9UGRz/Vhse/1YbHv9WGx7/Vhse/1QZHP9BHB// 215 | Hxse/x8bHv8fGx7/Ih4h/ywoK/8bFxr/EA0P/xAMD/8YExb/LBcc/0clK/9DHyP/VBkc/1UaHP9aIyb/ 216 | bEJF/2hCRf9cJyr/XCYp/2Y7Pv9rRUj/aUJF/1snKv9oPkD/aEBC/2lBRP9bJij/Xy8y/2I0N/9rRUj/ 217 | aD5B/1YbHv9WGx7/SBYZ/xINEP8YFRf/Ih8h/xsXGv8tGR3/Gxkj/xoaGv8aGhr/Ghoa/xQUJv8aGhr/ 218 | Ghoa/xoaGv8XFyD/NSg2/z0pMP87Mzv/X1df/zszO/9AM0D/MzMz/zQ0NP80NDT/NDQ0/zQ0NP8xMTH/ 219 | NDQ0/zQ0NP80NDT/NDQ0/zMzM/8wMDD/NDQ0/zQ0NP80NDT/NDQ0/zExMv8zMzP/NDQ0/zQ0NP80NDT/ 220 | NDQ0/x4eHv8eHh7/MjIy/zQ0NP80NDT/NDQ0/zQ0NP8yMjL/NDQ0/zQ0NP80NDT/NDQ0/zIyMv8xMTL/ 221 | NDQ0/zQ0NP80NDT/NDQ0/zExMf8zMzP/NDQ0/zQ0NP80NDT/NDQ0/xAQEP8BAQH/AgIC/wEBAf8JCQn/ 222 | EBgc/zFDSf8sLCz/LCws/z4+Pv9DQ0P/SUlJ/y8vL/81NTX/NTU1/zU1Nf81NTX/MzMz/zIyMv81NTX/ 223 | NTU1/zU1Nf81NTX/MjIy/zQ0NP81NTX/NTU1/zU1Nf81NTX/EBAQ/wEBAf8BAQH/AQEB/wgICP8QGRz/ 224 | FR4r/xoaGv8aGhr/Ghoa/xQUJv8aGhr/Ghoa/xoaGv8XFyD/ohwt/9YXJf+uO1H/sD9V/6knPv+GHzj/ 225 | HR0d/x0dHf8dHR3/HR0d/x0dHf8gICD/HR0d/x0dHf8dHR3/HR0d/x4eHv8eHh7/HR0d/x0dHf8dHR3/ 226 | HR0d/yAgIP8dHR3/HR0d/x0dHf8dHR3/HR0d/xwcHP8cHBz/HR0d/x0dHf8dHR3/HR0d/x0dHf8gICD/ 227 | HR0d/x0dHf8dHR3/HR0d/x4eHv8eHh7/HR0d/x0dHf8dHR3/HR0d/yAgIP8dHR3/HR0d/x0dHf8dHR3/ 228 | HR0d/wYGBv8AAAD/AAAA/wAAAP8AAAD/BQ4R/yo8Q/87Ozv/SUlJ/05OTv9QUFD/NTU1/xwcHP8bGxv/ 229 | Gxsb/xsbG/8bGxv/Hx8f/xsbG/8bGxv/Gxsb/xsbG/8bGxv/Hx8f/xsbG/8bGxv/Gxsb/xsbG/8bGxv/ 230 | BgYG/wAAAP8AAAD/AAAA/wAAAP8EDRD/FB00/x4eLf8VFST/FRUk/xAQLP8dHSz/FRUk/xUVJP8VFSL/ 231 | SyA1/zUbNf81GzX/NRs1/zUbNf85ITn/GBgY/xgYGP8YGBj/GBgY/xgYGP8eHh7/GBgY/xgYGP8YGBj/ 232 | GBgY/xsbG/8bGxv/GBgY/xgYGP8YGBj/GBgY/x4eHv8YGBj/GBgY/xgYGP8YGBj/GBgY/xwcHP8cHBz/ 233 | GBgY/xgYGP8YGBj/GBgY/xgYGP8eHh7/GBgY/xgYGP8YGBj/GBgY/xsbG/8bGxv/GBgY/xgYGP8YGBj/ 234 | GBgY/x4eHv8YGBj/GBgY/xgYGP8YGBj/GRkZ/wgICP8BAQH/AQEB/wEBAf8BAQH/Bg8S/yc5QP8xMTH/ 235 | JSUl/ysrK/8pKSn/Jycn/x0dHf8eHh7/HR0d/x0dHf8dHR3/ICAg/x0dHf8eHh7/HR0d/x0dHf8dHR3/ 236 | ICAg/x0dHf8eHh7/HR0d/x0dHf8dHR3/BgYG/wAAAP8AAAD/AAAA/wAAAP8EDRD/FR4r/xoaGv8aGhr/ 237 | Ghoa/xQUJv8aGhr/Ghoa/xoaGv8XFyD/EhUf/wUFBf8cHBz/HBwc/wICAv8WEBb/AAAA/wcHB/8NDQ3/ 238 | CAgI/wAAAP8RERH/AAAA/wwMDP8NDQ3/BAQE/wgICP8JCQn/BQUF/w0NDf8LCwv/AAAA/xEREf8AAAD/ 239 | CQkJ/w4ODv8FBQX/AAAA/xsbG/8bGxv/AAAA/wkJCf8ODg7/CAgI/wAAAP8QEBD/AAAA/w4ODv8ODg7/ 240 | AwMD/woKCv8ICAj/BgYG/w0NDf8LCwv/AAAA/xAQEP8AAAD/CQkJ/w8PD/8EBAT/AAAA/woKCv8FBQX/ 241 | HBwc/xwcHP8CAgL/BQ4R/x4yOP8kJyf/GRkZ/yUlJf8kJCT/GRkZ/xoaGv8cHBz/HR0d/x0dHf8dHR3/ 242 | ICAg/xoaGv8dHR3/HR0d/x0dHf8dHR3/Hx8f/xoaGv8eHh7/HR0d/x0dHf8dHR3/BgYG/wAAAP8AAAD/ 243 | AAAA/wAAAP8EDRD/FR4r/xoaGv8aGhr/Ghoa/xQUJv8aGhr/Ghoa/xoaGv8XFyD/Ix4v/xgNGP8YDRj/ 244 | GA0Y/xgNGP8oGij/Dg4O/w0NDf8NDQ3/DQ0N/w0NDf8bGxv/DQ0N/w0NDf8NDQ3/DQ0N/xQUFP8UFBT/ 245 | DQ0N/w0NDf8NDQ3/DQ0N/xsbG/8NDQ3/DQ0N/w0NDf8NDQ3/DQ0N/x0dHf8dHR3/DQ0N/w0NDf8NDQ3/ 246 | DQ0N/w0NDf8aGhr/DQ0N/w0NDf8NDQ3/DQ0N/xUVFf8UFBT/DQ0N/w0NDf8NDQ3/DQ0N/xoaGv8NDQ3/ 247 | DQ0N/w0NDf8NDQ3/Dw8P/wwMDP8CAgL/AgIC/wICAv8CAgL/BxAT/xk0O/8lNjb/EBER/xYWFv8XFxf/ 248 | JSUl/x0dHf8UFBT/Dw8P/w8PD/8bGxv/HBwc/yYmJv8RERH/Dw8P/w8PD/8hISH/Hh4e/x8fH/8PDw// 249 | Dw8P/w8PD/8mJib/FRUV/xAQEP8GBgb/BgYG/xEREf8YIST/Dhcy/xAQI/8QECP/EBAj/wwMLv8QECP/ 250 | EBAj/xAQI/8UFCP/ExUf/wUFBf8cHBz/HBwc/wICAv8XEBf/AAAA/wcHB/8NDQ3/CAgI/wAAAP8RERH/ 251 | AAAA/wwMDP8NDQ3/BAQE/wgICP8JCQn/BQUF/w0NDf8LCwv/AAAA/xEREf8AAAD/CQkJ/w4ODv8FBQX/ 252 | AAAA/xsbG/8bGxv/AAAA/wkJCf8ODg7/CAgI/wAAAP8QEBD/AAAA/w4ODv8ODg7/AwMD/woKCv8ICAj/ 253 | BgYG/w0NDf8LCwv/AAAA/xAQEP8AAAD/CQkJ/w8PD/8EBAT/AAAA/woKCv8FBQX/HBwc/xwcHP8CAgL/ 254 | BQ4R/wYYH/8AAAD/AAAA/wICAv8BAQH/BwcH/wAAAP8AAAD/AgIC/wAAAP8EBAT/BAQE/wAAAP8AAAD/ 255 | AgIC/wAAAP8FBQX/AgIC/wAAAP8AAAD/AgIC/wAAAP8HBwf/AAAA/wAAAP8BAQH/AQEB/wMDA/8IERT/ 256 | BQ4f/wcHB/8AAAD/AAAA/wAAG/8ICAj/AAAA/wAAAP8PDxz/Ix4v/xgNGP89Mj3/Mygz/xgNGP8lFyX/ 257 | Gxsb/xsbG/8bGxv/Gxsb/xsbG/8dHR3/Gxsb/xsbG/8bGxv/Gxsb/xwcHP8cHBz/Gxsb/xsbG/8bGxv/ 258 | Gxsb/x0dHf8bGxv/Gxsb/xsbG/8bGxv/Gxsb/xsbG/8bGxv/Gxsb/xsbG/8bGxv/Gxsb/xsbG/8dHR3/ 259 | Gxsb/xsbG/8bGxv/Gxsb/xwcHP8cHBz/Gxsb/xsbG/8bGxv/Gxsb/x0dHf8bGxv/Gxsb/xsbG/8bGxv/ 260 | Gxsb/xcXF/8VFRX/FRUV/xUVFf8VFRX/FR4h/wYYH/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 261 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 262 | AAAA/wAAAP8AAAD/AAAA/wAAAP8DDRD/KDBB/zg4OP83Nzf/MzMz/x8fOv8oKCj/KCgo/ygoKP8bHCn/ 263 | MSQ9/ywWLP8WFBb/FhUW/ywWLP8yHDL/Ghoa/xoaGv8hISH/Ghoa/xoaGv8aGhr/Ghoa/xwcHP8eHh7/ 264 | Ghoa/xoaGv8aGhr/Ghoa/x4eHv8cHBz/Ghoa/xoaGv8aGhr/Ghoa/yEhIf8aGhr/Ghoa/xoaGv8aGhr/ 265 | Ghoa/xoaGv8hISH/Ghoa/xoaGv8aGhr/Ghoa/x0dHf8dHR3/Ghoa/xoaGv8aGhr/Ghoa/x8fH/8cHBz/ 266 | Ghoa/xoaGv8aGhr/Ghoa/yEhIf8aGhr/Ghoa/xoaGv8aGhr/HR0d/x0dHf8aGhr/GCEk/wgaIf8CAgL/ 267 | AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/ 268 | AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wIEBf8FJTH/SFBh/2pqav9wcHD/ 269 | XV1d/0REYP9ra2v/Zmdn/1dmbP8lNEH/Gxon/w0HDf8RCxH/EQsR/w0HDf8cEhz/Ghoa/xoaGv8kJCT/ 270 | Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/ 271 | Ghoa/yQkJP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8kJCT/Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx// 272 | Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/Ghoa/yQkJP8aGhr/Ghoa/xoaGv8aGhr/ 273 | Hx8f/x8fH/8aGhr/GCEk/0lEU/9HQE3/bQsO/20LDv9uDA//bQsO/20LDv9tCw7/bgwP/20LDv9tCw7/ 274 | bQsO/24MD/93HyL/dyAj/3ghI/92HB//dx4h/3kjJv92HSD/dh4g/3cgI/91HB//eSQn/3giJP92HB// 275 | dh0g/20MD/9sDhP/cAgS/3IJFP9yCRT/cgkU/28GEv9yCRT/cgoU/3IPF/89FBj/GCEk/xoaGv8fHx// 276 | Hx8f/xoaGv8aGhr/Ghoa/xoaGv8kJCT/Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/ 277 | Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/Ghoa/yQkJP8aGhr/Ghoa/xoaGv8aGhr/Ghoa/xoaGv8kJCT/ 278 | Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/Ghoa/x8fH/8fHx//Ghoa/xoaGv8aGhr/ 279 | Ghoa/yQkJP8aGhr/Ghoa/xoaGv8aGhr/Hx8f/x8fH/8aGhr/GCEk/0I3RP9CMDr/aBMY/2gTGP9oExj/ 280 | aBMY/2gTGP9oExj/aBMY/2gTGP9oExj/aBMY/2gTGP9yKC7/eDM5/3gzOP94Mzn/dzE2/3IoLv90LDL/ 281 | dzI4/20eI/94NDn/eDM5/3cyN/92MDX/cics/2gTGP9oExj/aBMY/2gTGP9oExj/aBMY/2gTGP9oExj/ 282 | ZxMY/2cTGP86Fxj/GCEk/xoaGv8fHx//Hx8f/xoaGv8cHBz/DQ0N/w0NDf8WFhb/DQ0N/w0NDf8YGBj/ 283 | DQ0N/xEREf8RERH/DQ0N/xISEv8TExP/DQ0N/xEREf8RERH/DQ0N/xgYGP8NDQ3/DQ0N/xYWFv8NDQ3/ 284 | DQ0N/xsbG/8bGxv/DQ0N/w0NDf8WFhb/DQ0N/w0NDf8YGBj/DQ0N/xEREf8RERH/DQ0N/xQUFP8SEhL/ 285 | DQ0N/xEREf8RERH/DQ0N/xgYGP8NDQ3/DQ0N/xYWFv8NDQ3/Dg4O/w8PD/8HBwf/DAwM/wwMDP8HBwf/ 286 | CxQX/xY1Qf8tNDf/Mzs9/ycuMf8dJSf/Mzs9/wkQE/8XHyH/Iyot/yMqLf8eJSj/Exsd/wQSDv8BKQv/ 287 | ASUL/wEIC/8BCAv/AQgL/wEIC/8BCAv/AQgL/wEIC/8BCAv/AQgL/wEIC/8BCAv/AQgL/wEIC/8BCAv/ 288 | AQgL/wEIC/8BCAv/AQgL/wEIC/8BCAv/AQgL/wAIC/8UJy7/GCEk/xoaGv8eHh7/Hh4e/xoaGv8eHh7/ 289 | FhYW/xYWFv8bGxv/FhYW/xYWFv8hISH/FhYW/xgYGP8YGBj/FhYW/xwcHP8cHBz/FhYW/xgYGP8YGBj/ 290 | FhYW/yEhIf8WFhb/FhYW/xsbG/8WFhb/FhYW/x4eHv8eHh7/FhYW/xYWFv8bGxv/FhYW/xYWFv8hISH/ 291 | FhYW/xgYGP8YGBj/FhYW/xwcHP8cHBz/FhYW/xkZGf8YGBj/FhYW/yEhIf8WFhb/FhYW/xsbG/8WFhb/ 292 | FhYW/wwMDP8AAAD/AgIC/wICAv8AAAD/BQ4R/xYxO/8oKCj/MTEx/yQkJP8ZGRn/Kysr/wkJCf8TExP/ 293 | JSUl/yIiIv8eHh7/FxcX/wMJA/8AJAD/ACEA/wALAP8AFwD/ABkA/w0ODf8PDw//AAAA/wAAAP8AAAD/ 294 | AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UJiz/ 295 | GCEk/xoaGv8aGhr/Ghoa/xoaGv8dHR3/BwcH/wYGBv8GBgb/BgYG/wYGBv8WFhb/BgYG/wYGBv8GBgb/ 296 | BgYG/w4ODv8PDw//BgYG/wYGBv8GBgb/BgYG/xYWFv8GBgb/BgYG/wYGBv8GBgb/BgYG/xwcHP8cHBz/ 297 | BgYG/wYGBv8GBgb/BgYG/wYGBv8VFRX/BgYG/wYGBv8GBgb/BgYG/xAQEP8ODg7/BgYG/wYGBv8GBgb/ 298 | BgYG/xUVFf8GBgb/BgYG/wYGBv8GBgb/BwcH/wsLC/8BAQH/AQEB/wEBAf8BAQH/Bg8S/xcxO/8yMjL/ 299 | PDw8/ygoKP8lJSX/NTU1/woKCv8YGBj/LCws/ycnJ/8iIiL/FhYW/wQOBP8AKgD/ACgA/wAVAP8AKwD/ 300 | ADIA/w0gDf8PHw//BgYG/w8PD/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ 301 | AAAA/wAAAP8AAAD/AAAA/wAAAP8UJiz/JB4w/xgPGP8dGB3/IRwh/xYOFv8pGSn/Dg4O/wsLC/8QEBD/ 302 | DAwM/wsLC/8cHBz/CwsL/w8PD/8PDw//CQkJ/xUVFf8WFhb/CgoK/xAQEP8ODg7/CgoK/xoaGv8ODg7/ 303 | DQ0N/xAQEP8KCgr/Dg4O/xwcHP8cHBz/Dg4O/w0NDf8QEBD/DAwM/w4ODv8bGxv/CgoK/xEREf8QEBD/ 304 | CwsL/xcXF/8VFRX/CwsL/w8PD/8ODg7/CwsL/xsbG/8LCwv/Dg4O/xAQEP8JCQn/Dw8P/wsLC/8FBQX/ 305 | FhYW/xMTE/8EBAT/BRAV/x1CPf8lNh3/JTYd/yM0HP8jNBv/Jjce/yEyGf8kNRz/IzQb/yU2Hf8kNh3/ 306 | JDYd/yAyGP8fNhj/HzMY/x8yGP8fNhj/HzYX/x81F/8fMxf/IjQb/yU2Hf8gMRj/HzAY/x8wF/8fMRj/ 307 | GCgx/xwtJP8aLCv/GTA2/xovL/8XKDX/IzMf/0MuI/8SJSP/CCg1/wMaI/8ULDX/GyEw/xIUHP8dHif/ 308 | ISIr/xIUHP8eHSj/CxIV/w0UF/8RGBv/DhUY/wsSFf8WHiH/CxIV/w8WGf8QGBr/DRQX/xAYGv8RGBv/ 309 | DRQX/xAYGv8PFxn/CxIV/xYeIP8LEhX/DhUY/xEYG/8NFRf/CxIV/xoiJP8aIiT/CxIV/w4VGP8RGBv/ 310 | DhUY/wsSFf8WHSD/CxIV/xAXGv8RGBv/DRQX/xIZHP8QGBr/DRQX/xAYGv8PFhn/CxIV/xYdIP8LEhX/ 311 | DhUY/xEZG/8NFBf/DBMW/w0UF/8HDhH/DxYZ/xIZHP8FEBT/BzBA/zNYP/9MYC3/Sl4n/0teKf9abjf/ 312 | XXE8/1hsNP9ecj3/Y3dE/19zP/9bbzn/Umcr/1puNv9FWhj/RVoY/0VaGP9FWhf/RVoX/0VaF/9FWhj/ 313 | RVoY/0VaGP9FWhj/RVoY/0VaGP9AVCX/MENU/zhhOP8zUkv/PWhC/z9kN/8vZVz/QmU6/35OLP8fOCj/ 314 | EVNw/wY1SP8TNED/ 315 | 316 | 317 | 318 | 319 | 65536 320 | 393218 321 | 65535 322 | 0 323 | 324 | 325 | 326 | 327 | 65549 328 | 393218 329 | 6 330 | 0 331 | 332 | 333 | 334 | 335 | 65550 336 | 393218 337 | 6 338 | 0 339 | 340 | 341 | 342 | 343 | 65542 344 | 4294901760 345 | 5 346 | 0 347 | 348 | 349 | 350 | 351 | 65552 352 | 393218 353 | 6 354 | 0 355 | 356 | 357 | 358 | 359 | 65553 360 | 393218 361 | 6 362 | 0 363 | 364 | 365 | 366 | 367 | 0 368 | 0 369 | 0 370 | 3 371 | 372 | 373 | 374 | 375 | 0 376 | 1 377 | 0 378 | 3 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 13 400 | 5 401 | 0 402 | 0 403 | 404 | 405 | 406 | 407 | 0 408 | 0 409 | 0 410 | 3 411 | 412 | 413 | 414 | --------------------------------------------------------------------------------