MCUdude / SigmaDSP

A versatile Arduino library for interfacing with the ADAU1401, ADAU1701 and ADAU1702 audio DSPs
GNU Lesser General Public License v3.0
163 stars 33 forks source link

example for dummies #5

Closed yentzee closed 5 years ago

yentzee commented 5 years ago

Hi, first of all thanks a lot for sharing your work with everyone. Is there any example online which documents the whole process of including buttons or encoders on an arduino to control parameters? I know that this is a dumb question resulting of a lack of knowledge. Unfortunately I am more of a musician than a person who is able to program and would just be really happy to have a useable and especially computer independent unit (i am in the process of optimizing my studio and due to the lack of space i have to think of alternatives than huge porous absorbers to get room resonances under control - i want to use the 1701 with a mic attached to an active subwoofer for a kind of low frequency noise canceling system. Unfortunately this system needs a lot of trial an error to find the right spot for it to work, prevent feedback etc and this just isn't possible with a computer attached to it)

MCUdude commented 5 years ago

Well, the library is in fact intended for advanced tinkers who already know the Arduino framework well. I've provided some interface functions to control the ADAU1701, and then it's up to the users to adjust these variables with whatever they want.

Examples like the ones you request isn't necessary very useful to the advanced user. Personally I hate when I want to test a component (and LCD for instance) and then the example code requires me to connect a bunch of potentiometers and switches to work.

I can give you a quick example here though. Let's say you've loaded example 1 (1_Volume) and want to control the volume using a potentiometer. That's quite easy.


// Create two signed 8-bit variables (holds -127 -> 127)
int8_t currentVolumeValue = -80;
int8_t newVolumeValue = -80;

void loop()
{
  // Map the analogRead value from 0->1023 to -80->0
  newVolumeValue  = map(analogRead(A0), 0, 1023, -80, 0);

  // If we have a change 
  if(newVolumeValue != currentVolumeValue)
  {
    // Write new volume value to DSP
    dsp.volume_slew(MOD_SWVOL1_ALG0_TARGET_ADDR, newVolumeValue);

    // Prevent this if-query to be executed when there's no change
    currentVolumeValue = newVolumeValue;
  }
}

I haven't tested the code above on read hardware, but there's no reason why it shouldn't work.

yentzee commented 5 years ago

Awesome, thank you so much. I suppose that is all I need to work my way through it. Again thanks a lot. :)

MCUdude commented 5 years ago

Great! Let me know if you have any other questions!

yentzee commented 5 years ago

Sorry to bother ou with another question. The Adau 1701 is used on a board manufactured by sure (now called wondom). There is an Eprom on the board. Can this be used the way you decribe it? It has to be connected to the iusb programmer with a second cord. When using the sure board with sigma studio just the normal way the setup is written onto it. Cheers, Jens

MCUdude commented 5 years ago

Well, I can't find a schematic for it, so I can't say for sure.

The ADAU1701 can load its firmware directly from an external EEPROM if their SDA and SCL lines are connected together, the EEPROM is added to the SigmaStudio project and the SELFBOOT pin on the ADAU1701 is pulled high. I've done it many times

yentzee commented 5 years ago

So, I made it work finally. Now that I want to use my own setup I am getting tons of errormessages when compiling and I really don't know what to do with it. It took me a few weeks to get external control as well as a display with the changes I am ding working. Way too much time to stop here. What does stuff like this exactly mean? I followed your instructions 1:1

In file included from /Users/jenskuehnemann/Documents/Arduino/activetrap01/activetrap01.ino:93:0:
sketch/SigmaDSP_parameters.h: In function 'void loadProgram(SigmaDSP&)':
sketch/SigmaDSP_parameters.h:748:122: error: no matching function for call to 'SigmaDSP::writeRegister(int, int, const uint8_t [2], int)'
     myDSP.writeRegister(CORE_REGISTER_R0_ADDR, CORE_REGISTER_R0_SIZE, DSP_core_register_R0_data, CORE_REGISTER_R0_REGSIZE);
                                                                                                                          ^
In file included from /Users/jenskuehnemann/Documents/Arduino/activetrap01/activetrap01.ino:90:0:
/Users/jenskuehnemann/Documents/Arduino/libraries/SigmaDSP-master/src/SigmaDSP.h:65:10: note: candidate: void SigmaDSP::writeRegister(uint16_t, uint8_t, uint8_t*)
     void writeRegister(uint16_t memoryAddress, uint8_t length, uint8_t *data);
          ^
/Users/jenskuehnemann/Documents/Arduino/libraries/SigmaDSP-master/src/SigmaDSP.h:65:10: note:   candidate expects 3 arguments, 4 provided
/Users/jenskuehnemann/Documents/Arduino/libraries/SigmaDSP-master/src/SigmaDSP.h:66:10: note: candidate: void SigmaDSP::writeRegister(uint16_t, uint8_t, const uint8_t*)
     void writeRegister(uint16_t memoryAddress, uint8_t length, const uint8_t *data);
          ^
/Users/jenskuehnemann/Documents/Arduino/libraries/SigmaDSP-master/src/SigmaDSP.h:66:10: note:   candidate expects 3 arguments, 4 provided
In file included from /Users/jenskuehnemann/Documents/Arduino/activetrap01/activetrap01.ino:93:0:
sketch/SigmaDSP_parameters.h:751:110: error: no matching function for call to 'SigmaDSP::writeRegister(int, int, const uint8_t [24], int)'
     myDSP.writeRegister(HARDWARE_CONF_ADDR, HARDWARE_CONF_SIZE, DSP_hardware_conf_data, HARDWARE_CONF_REGSIZE);
                                                                                                              ^
In file included from /Users/jenskuehnemann/Documents/Arduino/activetrap01/activetrap01.ino:90:0:
/Users/jenskuehnemann/Documents/Arduino/libraries/SigmaDSP-master/src/SigmaDSP.h:65:10: note: candidate: void SigmaDSP::writeRegister(uint16_t, uint8_t, uint8_t*)
     void writeRegister(uint16_t memoryAddress, uint8_t length, uint8_t *data);
          ^
/Users/jenskuehnemann/Documents/Arduino/libraries/SigmaDSP-master/src/SigmaDSP.h:65:10: note:   candidate expects 3 arguments, 4 provided
/Users/jenskuehnemann/Documents/Arduino/libraries/SigmaDSP-master/src/SigmaDSP.h:66:10: note: candidate: void SigmaDSP::writeRegister(uint16_t, uint8_t, const uint8_t*)
     void writeRegister(uint16_t memoryAddress, uint8_t length, const uint8_t *data);
          ^
/Users/jenskuehnemann/Documents/Arduino/libraries/SigmaDSP-master/src/SigmaDSP.h:66:10: note:   candidate expects 3 arguments, 4 provided
In file included from /Users/jenskuehnemann/Documents/Arduino/activetrap01/activetrap01.ino:93:0:
sketch/SigmaDSP_parameters.h:752:122: error: no matching function for call to 'SigmaDSP::writeRegister(int, int, const uint8_t [2], int)'
     myDSP.writeRegister(CORE_REGISTER_R4_ADDR, CORE_REGISTER_R4_SIZE, DSP_core_register_R4_data, CORE_REGISTER_R4_REGSIZE);
                                                                                                                          ^
In file included from /Users/jenskuehnemann/Documents/Arduino/activetrap01/activetrap01.ino:90:0:
/Users/jenskuehnemann/Documents/Arduino/libraries/SigmaDSP-master/src/SigmaDSP.h:65:10: note: candidate: void SigmaDSP::writeRegister(uint16_t, uint8_t, uint8_t*)
     void writeRegister(uint16_t memoryAddress, uint8_t length, uint8_t *data);
          ^
/Users/jenskuehnemann/Documents/Arduino/libraries/SigmaDSP-master/src/SigmaDSP.h:65:10: note:   candidate expects 3 arguments, 4 provided
/Users/jenskuehnemann/Documents/Arduino/libraries/SigmaDSP-master/src/SigmaDSP.h:66:10: note: candidate: void SigmaDSP::writeRegister(uint16_t, uint8_t, const uint8_t*)
     void writeRegister(uint16_t memoryAddress, uint8_t length, const uint8_t *data);
          ^
/Users/jenskuehnemann/Documents/Arduino/libraries/SigmaDSP-master/src/SigmaDSP.h:66:10: note:   candidate expects 3 arguments, 4 provided
Mehrere Bibliotheken wurden für "WiFi.h" gefunden
 Benutzt: /Users/jenskuehnemann/Library/Arduino15/packages/esp32/hardware/esp32/1.0.2/libraries/WiFi
 Nicht benutzt: /Applications/Arduino.app/Contents/Java/libraries/WiFi
exit status 1
Fehler beim Kompilieren für das Board ESP32 Dev Module.

I really don't know if I should just give up :(

MCUdude commented 5 years ago

Can you upload your Arduino project files as a zip file, so I can ido some investigation? Also, did you use the .sh or .ps1 script to generate SigmaDSP_parameters.h?

MCUdude commented 5 years ago

Also, can you open the SigmaDSP_parameters.h file and replace the loadProgram function whis this exact one?

void loadProgram(SigmaDSP &myDSP)
{
    myDSP.writeRegister(CORE_REGISTER_R0_ADDR, CORE_REGISTER_R0_SIZE, DSP_core_register_R0_data, CORE_REGISTER_R0_REGSIZE);
    myDSP.writeRegisterBlock(PROGRAM_ADDR, PROGRAM_SIZE, DSP_program_data, PROGRAM_REGSIZE);
    myDSP.writeRegisterBlock(PARAMETER_ADDR, PARAMETER_SIZE, DSP_parameter_data, PARAMETER_REGSIZE);
    myDSP.writeRegister(HARDWARE_CONF_ADDR, HARDWARE_CONF_SIZE, DSP_hardware_conf_data, HARDWARE_CONF_REGSIZE);
    myDSP.writeRegister(CORE_REGISTER_R4_ADDR, CORE_REGISTER_R4_SIZE, DSP_core_register_R4_data, CORE_REGISTER_R4_REGSIZE);
}

I belive it should work if the fuction is replaced. If so it's much easier to figure out what caused the issue in the first place. I'm pretty sure there's a bug in one of the script files though.

yentzee commented 5 years ago

Hi, sure. That would be really nice. It is basically just the Volume script I modified to get it working with a display and a potentiometer. My thoughts were to "copy" the way you used the different functions on the volume with other things/commands i want to control by hardware. I had no experience with programming except flash action script 2 weeks ago. I will send the complete folder including the sigma dsp folder. I used the script on windows as the osx version wouldn't do anything :( - on a mac switching between parallels running win 10 and os x. hanks a lot for helping. Changing the sigmaDSP_parameters the way you mentioned didn't work unfortunately :(

yentzee commented 5 years ago

Archiv.zip

yentzee commented 5 years ago

The project is an "active Basstrap" with 3 possible strings of audio - one unedited, second for using a mic input signal, isolating the modefrequency and playing it phaseshifted (into an active sub) to cancel out by interference, third is a basic setting for a double bass array also a technique to cancel out bass on the rear wall of the studio to prevent standing waves/room modes and get a better soundgin situation on the working space in front of the nearfield monitors. If I get it working at one point I might add another string with fiir filtering based on measurements made with rew software to even out the frequency response by the nearfield monitors. THe goal is to have quite cheap but flexible elements that can be used in between audio source (daw) and speakers to help making the room sound more linear which is a big problem in a lot of studios. there are commercial products like the e trap available but they are really expensive and without the reach of small hobby project studios. I also found schematics of completely analogue working solutions sucking the bass away instead of canceling it by interference but well I have to go on making music at one point otherwise i would build one of them as well. Once the error messages are gone I hope that I can then just call every function of the .h file and so decide which parameters are relevant and get a dedicated hardware control (setting up delay times and leveling is absolutely crucial when setting up the active basstraps - they do work really well but it is just a pain having to connect a laptop, running sigma studio on parallels instead of just adjjusting on the unit with some potentiometers and a display) using your examples to "copy" the way you are using those functions. Thanks a lot for helping. Best regards, Jens

MCUdude commented 5 years ago

Well, there's a few things.

First, the function I posted earlier was incorrect. Use this one instead. I will fix this issue soon.

void loadProgram(SigmaDSP &myDSP)
{
  myDSP.writeRegister(CORE_REGISTER_R0_ADDR, CORE_REGISTER_R0_SIZE, DSP_core_register_R0_data);
  myDSP.writeRegisterBlock(PROGRAM_ADDR, PROGRAM_SIZE, DSP_program_data, PROGRAM_REGSIZE);
  myDSP.writeRegisterBlock(PARAMETER_ADDR, PARAMETER_SIZE, DSP_parameter_data, PARAMETER_REGSIZE);
  myDSP.writeRegister(HARDWARE_CONF_ADDR, HARDWARE_CONF_SIZE, DSP_hardware_conf_data);
  myDSP.writeRegister(CORE_REGISTER_R4_ADDR, CORE_REGISTER_R4_SIZE, DSP_core_register_R4_data);
}

I will also recommend you to get the DSP working properly before adding features like Wifi and an LCD. It's much simpler to debug code where "things that work" is removed/commented out.

Also, you can't expect the 1_Volume example to work out of the box with your Sigma Studio project. The code has to match the parameters in the generated SigmaDSP_parameters.h file. I know it's rather complicated, but the ADAU1701 along with the exported Sigma Studio files isn't exactly made for easy integration with a microcontroller. That's why this library uses a dedicated script for gathering all the useful data.

I would also recommend you to replace your volume sliders with the one with slew rate. This prevents popping noises when adjusting them.

I've edited your project slightly to get ti to compile on my computer. I replaced the loadProgram function, replaced the volume sliders with ones with slew rate. note that the parameter I use to adjust the volume is named MOD_INPUTGAIN_ALG0_TARGET_ADDR, where INPUTGAIN is derived from the name you gave it in the Sigma Studio project.

Try this project to see if you can get it to compile and run. Active_Basstrap.zip

yentzee commented 5 years ago

Hi, first of all - thank you so much for your help. I ran the script but still get error messages. But compared to before a lot less.

/Users/jenskuehnemann/Documents/Arduino/Projekte/Active_Basstrap/Active_Basstrap.ino: In function 'void loop()': Active_Basstrap:75:21: error: 'MOD_SWVOL1_ALG0_TARGET_ADDR' was not declared in this scope dsp.volume_slew(MOD_SWVOL1_ALG0_TARGET_ADDR, volume);

                 ^

exit status 1 'MOD_SWVOL1_ALG0_TARGET_ADDR' was not declared in this scope

Hi from Hamburg Best regards, Jens

MCUdude commented 5 years ago

Hi, first of all - thank you so much for your help.

No worries! It's important that the library is usable for other than me 😉

The reason why you get that error is because MOD_SWVOL1_ALG0_TARGET_ADDR belongs to the 1_Volume example. You need to find the correct parameters in the SigmaDSP_parameters.h file and use these instead. In your case, for adjusting the input volume (with slew, that I added to your project file) you'll have to use MOD_INPUTGAIN_ALG0_TARGET_ADDR instead. To figure out what parameters to modify on other functions you can use the output window in sigma studio to see the changes in various registers. When you adjust the volume slider you can see that one register changes (the one that contains the volume) while the other one doesn't (because it contains the slew-rate). Hope this makes sense.

MCUdude commented 5 years ago

Aah, sorry! My fault; I forgot to save the project before I zipped and uploaded it! It does compile if you replace MOD_SWVOL1_ALG0_TARGET_ADDR with MOD_INPUTGAIN_ALG0_TARGET_ADDR though

yentzee commented 5 years ago

Awesome, compiled. Great, so now I can just start adding control to the parameters I suppose. Just in case I want to change the setup, can I use the script within the folder you sent me to generate the .h file? Is this the corrected version?

MCUdude commented 5 years ago

There is a bug in the Powershell script that prevents it from working properly. If you use the shell script in your project folder it's all fine. The shell script also formats the outputted code a little nicer than the Powershell script

yentzee commented 5 years ago

Awesome. Do you have a patreon page? Or if you need some electronic music without licensing issues for one of your projects let me know. I really do appreciate your immediate help as well as the whole project.

MCUdude commented 5 years ago

I don't have a Patreon. Everything I host here on Github is just hobby, and I don't make any money off it except for a DIP-40 Arduino development board I sell That goes along with MightyCore. If you're interested in running "Arduino code" of other (and more capable) AVR microcontrollers this board is definitely worth its money. I used it together with an ATmega1284P when I made this library.

I'm also working on a new board I will start selling soon. It's a 42x42mm ATtiny13/25/45/85 development board with a socketed crystal, a USB to serial interface and all pins located on the same side of the board. I hope it will be popular! image

yentzee commented 5 years ago

I am fairly new to the whole thing. Are those processors it can handle capable of doing some audio-manipulatons? Haven'T got my wages yet but will order one the next days (regardless of their audio capabilities), if this is a good way to say thank you :)

MCUdude commented 5 years ago

Thanks, I just got your order! I added a small gift to your order as well. It's self-made ESP8266 breakout board, very similar to the ATtiny board I posted a 3D model of above. I'm sure you'll like it! Don't hesitate to contact me if you need assistance getting the board(s) up and running!

They (AVR microcontrollers) are not more powerful than Arduino UNO in terms of processing power, but have a few benefits. The microcontroller that comes with the (blue) board, ATmega32, is more or less similar to the ATmega328P that's in the Arduino UNO, but with more IO pins.

However, since the microcontroller is socketed you can insert bigger and more capable microcontrollers as well. If you get yourself an ATmega1284P-PU you get 16kB of RAM and 128kB of flash storage. That's eight times more RAM and four times as much flash compared to a UNO!

The AVR will never be as powerful as an ARM or an ESP32, but it's surprisingly capable for what is. is. It's not fast enough to manipulate raw digital audio such as an i2s data stream, but that's why you have a DSP, right?

yentzee commented 5 years ago

Q¹Awesome, thank you so much. Really looking fwd to getting deeper into it. Just about to finish the last limp membrane traps for my studio. Gonna start using the dsp's after that actively. Might buy 2 more (the 1401 is ridiciously cheap bought of aliexpress) to include fir filters for room correction. Still struggleing a bit with the whole thing as I am uncertain whetther to use potis (would just make sense if there was a way to say "when mixer is set to position 1 poti 1 does aaa when mixer is set to position 2 poti1 does bbb) or try to include a rotary encoder with display and menu. Also I dont understand where to get the information on the different parameters in the .h file (which parameter is which function as well as the possible states for each parameter) but I think I will just try a bit and see what happens. Thanks a lot for the addon, really appreciate it.

Best regards from Hamburg,

Jens

Hans notifications@github.com schrieb am Mi., 31. Juli 2019, 00:50:

Thanks, I just got your order! I added a small gift to your order as well. It's self-made ESP8266 breakout board, very similar to the ATtiny board I posted a 3D model of above. I'm sure you'll like it! Don't hesitate to contact me if you need assistance getting the board(s) up and running!

https://user-images.githubusercontent.com/3238730/62170764-e72e1280-b32c-11e9-8f44-21e1854d36b9.jpg

They (AVR microcontrollers) are not more powerful than Arduino UNO in terms of processing power, but have a few benefits. The microcontroller that comes with the (blue) board, ATmega32, is more or less similar to the ATmega328P that's in the Arduino UNO, but with more IO pins.

However, since the microcontroller is socketed you can insert bigger and more capable microcontrollers as well. If you get yourself an ATmega1284P-PU you get 16kB of RAM and 128kB of flash storage. That's eight times more RAM and four times as much flash compared to a UNO!

The AVR will never be as powerful as an ARM or an ESP32, but it's surprisingly capable for what is. is. It's not fast enough to manipulate raw digital audio such as an i2s data stream, but that's why you have a DSP, right?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/MCUdude/SigmaDSP/issues/5?email_source=notifications&email_token=ALWF2DJN2GLDJQ7WXR4WDOTQCDATPA5CNFSM4IBJVYZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD3FRGOI#issuecomment-516625209, or mute the thread https://github.com/notifications/unsubscribe-auth/ALWF2DKEASOBLQIAOXG2JR3QCDATPANCNFSM4IBJVYZA .

yentzee commented 5 years ago

Sorry for being a pain.. Is there any way to get information off the DSP? It would be great to include an oled for displaying input and output levels. Best regards

MCUdude commented 5 years ago

There is, but this library doesn't support it yet. It's a lot of work to implement.

But can't you display the information that's already in the microcontroller? The microcontroller always "know" the current value of a block as long as the microcontroller is the only device that talks to the DSP.

MCUdude commented 5 years ago

Are you thinking about something like a VU meter?

yentzee commented 5 years ago

Yes, it would be great to be able to have input and output meter to prevent clipping. Alternatively a led that blinks on clipping would be an idea. I might be able to grab it from the comp/limiter I suppose. Regarding settings for an eq I suppose it is possible to display encoder/ potivalues through some mathformula to show the frequency instead of abstract values (sounds rather difficult to map a linear range to logarithmic range). I really hope I will finish this project. The rest of my room treatment is done so I am desperate to start producing again. Unfortunately with the whole setup (changed the sigma setup to one signal line - hope to be able to control bypass / on off for each block) I might still run out of connections to the microcontroller. Is a multiplexer worth checking out? Best regards, Jens

Hans notifications@github.com schrieb am Do., 8. Aug. 2019, 21:00:

Are you thinking about something like a VU meter?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/MCUdude/SigmaDSP/issues/5?email_source=notifications&email_token=ALWF2DJ3LW7SDLCU5OPDOPDQDRULXA5CNFSM4IBJVYZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD34S44Y#issuecomment-519646835, or mute the thread https://github.com/notifications/unsubscribe-auth/ALWF2DNDJMBOKXMNVIEBWA3QDRULXANCNFSM4IBJVYZA .

MCUdude commented 5 years ago

Regarding settings for an eq I suppose it is possible to display encoder/ potivalues through some mathformula to show the frequency instead of abstract values (sounds rather difficult to map a linear range to logarithmic range)

Shouldn't be too difficult? dB_value = map(potmeter_value, 0, 1023, -80, 0); // Map 0 to 1023 -> -80 to 0

Unfortunately with the whole setup (changed the sigma setup to one signal line - hope to be able to control bypass / on off for each block) I might still run out of connections to the microcontroller. Is a multiplexer worth checking out?

I don't think I fully understand. The DSP require only three pins from the microcontroller, no matter how many "blocks" you have in your DSP flow. However, if you have too many buttons and external things to control I often just use plain old shiftregisters. 74HC595 if I need outputs, and 74HC165 if I need inputs.

yentzee commented 5 years ago

Unfortunately it doesn't map accordingly to frequency (or is it? I am really bad at maths) which is logarithmic scaledue to perception of the ear (i think?)

Yes I need 8 potis 6 buttons and 10 leds as i am way too unexperienced to include a menu and an encoder. Looked a bit into different libraries but I have no idea of programming and just try to look at examples and change them to my needs. I never knew how crazy it is having to habe so many things in your mind when programming. Similar to a medical diagnosis / treatment whereyou havd to have all that background knowledge to be able to do it properly. I was thinki g of a multiplexer to get more inputs and or outputs. Still dont get what the different pins are for and why they aren't numbered chronologically. Anyway I am still confident to be able to build a box that can be connected to every sub and be adjusted according to the needs of the room. Also looking for a good and cheap electrect mic preamp. Willdefinitely post results with room measurements when done :)

Hans notifications@github.com schrieb am Do., 8. Aug. 2019, 23:15:

Regarding settings for an eq I suppose it is possible to display encoder/ potivalues through some mathformula to show the frequency instead of abstract values (sounds rather difficult to map a linear range to logarithmic range)

Shouldn't be too difficult? dB_value = map(potmeter_value, 0, 1023, -80, 0); // Map 0 to 1023 -> -80 to 0

Unfortunately with the whole setup (changed the sigma setup to one signal line - hope to be able to control bypass / on off for each block) I might still run out of connections to the microcontroller. Is a multiplexer worth checking out?

I don't think I fully understand. The DSP require only three pins from the microcontroller, no matter how many "blocks" you have in your DSP flow. However, if you have too many buttons and external things to control I often just use plain old shiftregisters. 74HC595 if I need outputs, and 74HC165 if I need inputs.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/MCUdude/SigmaDSP/issues/5?email_source=notifications&email_token=ALWF2DOGEGOVYQIWPC4PUQ3QDSEFJA5CNFSM4IBJVYZKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD345PBQ#issuecomment-519690118, or mute the thread https://github.com/notifications/unsubscribe-auth/ALWF2DKXPYB3ZRQ4AOWF22TQDSEFJANCNFSM4IBJVYZA .

yentzee commented 5 years ago

Hi, unfortunately trying to make a new Sigma DSP setup working results in the same problems as before. I can't execute the script under OSX (tried cding into the dir and executing using the command given in your description) and when using windows I am getting a lot of errors when using the .h file created. :(

MCUdude commented 5 years ago

can you post the output error of the .sh script from OSX?

MCUdude commented 5 years ago

And/or post your entire project as a zip file so I can investigate too.

yentzee commented 5 years ago

Unfortunately nothing happens when running the script under OS X. A new screen shows up for a second or so and that's it. I am running El Captain if this might be an issue. Trying to redo the sigmadsp.h in windows on parallels now. 01.zip

MCUdude commented 5 years ago

Unfortunately nothing happens when running the script under OS X. A new screen shows up for a second or so and that's it.

Have you tried making the script executable by running the following line first.

chmod +x DSP_parameter_generator.sh

I'm on macOS Mojave (10.14) at the moment, but the script was made when I had Sierra (10.12) installed.

I tried to execute the .sh script in the zip file you provided, and it immodestly generated this file:

SigmaDSP_parameters.h

#ifndef SIGMADSP_PARAMETERS_H
#define SIGMADSP_PARAMETERS_H

#include <SigmaDSP.h>

/****************************************************************************
| File name: SigmaDSP_parameters.h                                          |
| Generation tool: AWK + bash                                               |
| Date and time: 14.08.2019 18:04:11                                        |
|                                                                           |
| ADAU1701 parameter and program file header                                |
| SigmaDSP library and its content is developed and maintained by MCUdude.  |
| https://github.com/MCUdude/SigmaDSP                                       |
|                                                                           |
| Huge thanks to the Aida DSP team who have reverse engineered a lot of the |
| Sigma DSP algorithms and made them open source and available to everyone. |
| This library would never have existed if it wasn't for the Aida DSP team  |
| and their incredible work.                                                |
|                                                                           |
| This file have been generated with the Sigmastudio_parameter_generator.sh |
| script. This file contains all the DSP function block parameters and      |
| addresses. It also contains the program that will be loaded to the        |
| external EEPROM.                                                          |
|                                                                           |
| The *_COUNT macro holds the number of addresses in memory each complete   |
| module takes.                                                             |
|                                                                           |
| The *_ADDR macro holds the current address for the module. Use this macro |
| when changing the behaviour of the modules (EQs, volume etc.).            |
|                                                                           |
| The *_FIXFT macros holds the default value of the module. Use this when   |
| restoring the default parameters.                                         |
|                                                                           |
| The DSP_eeprom_firmware[] array contains the DSP firmware, and can be     |
| loaded using the writeFirmware method in the DSPEEPROM class.             |
| When stored in the external i2c EEPROM, the firmware is automatically     |
| loaded into the DSP on boot if the SELFBOOT pin is tied to Vcc.           |
|                                                                           |
| If you want to load the DSP firmware directly without using an external   |
| EEPROM, you can simply run loadProgram() (located at the bottom of this   |
| file) where you pass the SigmaDSP object as the only parameter.           |
****************************************************************************/

/* 7-bit i2c addresses */
#define DSP_I2C_ADDRESS (0x68 >> 1) & 0xFE
#define EEPROM_I2C_ADDRESS (0xA0 >> 1) & 0xFE

/* Module Mute - Mute*/
#define MOD_MUTE_COUNT                                 1

#define MOD_MUTE_MUTENOSLEWALG1MUTE_ADDR               0
#define MOD_MUTE_MUTENOSLEWALG1MUTE_FIXPT              0x00800000

/* Module GainIn - Single SW slew vol (adjustable)*/
#define MOD_GAININ_COUNT                               2

#define MOD_GAININ_ALG0_TARGET_ADDR                    1
#define MOD_GAININ_ALG0_TARGET_FIXPT                   0x00800000

#define MOD_GAININ_ALG0_STEP_ADDR                      2
#define MOD_GAININ_ALG0_STEP_FIXPT                     0x00000800

/* Module Highpass - Nth Order Filter*/
#define MOD_HIGHPASS_COUNT                             15

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_0B_1_ADDR 3
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_0B_1_FIXPT 0x00800000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_1B_1_ADDR 4
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_1B_1_FIXPT 0x00000000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_2B_1_ADDR 5
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_2B_1_FIXPT 0x00000000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_1A_1_ADDR 6
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_1A_1_FIXPT 0x00000000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_2A_1_ADDR 7
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_2A_1_FIXPT 0x00000000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_0B_2_ADDR 8
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_0B_2_FIXPT 0x00800000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_1B_2_ADDR 9
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_1B_2_FIXPT 0x00000000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_2B_2_ADDR 10
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_2B_2_FIXPT 0x00000000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_1A_2_ADDR 11
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_1A_2_FIXPT 0x00000000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_2A_2_ADDR 12
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_2A_2_FIXPT 0x00000000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_0B_3_ADDR 13
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_0B_3_FIXPT 0x00800000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_1B_3_ADDR 14
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_1B_3_FIXPT 0x00000000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_2B_3_ADDR 15
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_2B_3_FIXPT 0x00000000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_1A_3_ADDR 16
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_1A_3_FIXPT 0x00000000

#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_2A_3_ADDR 17
#define MOD_HIGHPASS_ALG0_STAGE3_NTHORDERDOUBLE21_2A_3_FIXPT 0x00000000

/* Module Limiter1 - Limiter*/
#define MOD_LIMITER1_COUNT                             15

#define MOD_LIMITER1_ALG0_S1_ADDR                      18
#define MOD_LIMITER1_ALG0_S1_FIXPT                     0xFFFE2BE3

#define MOD_LIMITER1_ALG0_INT1_ADDR                    19
#define MOD_LIMITER1_ALG0_INT1_FIXPT                   0x0022BE2B

#define MOD_LIMITER1_ALG0_S2_ADDR                      20
#define MOD_LIMITER1_ALG0_S2_FIXPT                     0xFFEAAAAB

#define MOD_LIMITER1_ALG0_INT2_ADDR                    21
#define MOD_LIMITER1_ALG0_INT2_FIXPT                   0x006AAAAA

#define MOD_LIMITER1_ALG0_S3_ADDR                      22
#define MOD_LIMITER1_ALG0_S3_FIXPT                     0xFF9A69A7

#define MOD_LIMITER1_ALG0_INT3_ADDR                    23
#define MOD_LIMITER1_ALG0_INT3_FIXPT                   0x00FDF7DF

#define MOD_LIMITER1_ALG0_S4_ADDR                      24
#define MOD_LIMITER1_ALG0_S4_FIXPT                     0xF83C6C20

#define MOD_LIMITER1_ALG0_INT4_ADDR                    25
#define MOD_LIMITER1_ALG0_INT4_FIXPT                   0x03F5AA22

#define MOD_LIMITER1_ALG0_C1_ADDR                      26
#define MOD_LIMITER1_ALG0_C1_FIXPT                     0x01800000

#define MOD_LIMITER1_ALG0_C2_ADDR                      27
#define MOD_LIMITER1_ALG0_C2_FIXPT                     0x01000000

#define MOD_LIMITER1_ALG0_C3_ADDR                      28
#define MOD_LIMITER1_ALG0_C3_FIXPT                     0x00333333

#define MOD_LIMITER1_ALG0_THRESHOLD_ADDR               29
#define MOD_LIMITER1_ALG0_THRESHOLD_FIXPT              0x0016C310

#define MOD_LIMITER1_ALG0_RMS_ADDR                     30
#define MOD_LIMITER1_ALG0_RMS_FIXPT                    0x000007DC

#define MOD_LIMITER1_ALG0_DECAY_ADDR                   31
#define MOD_LIMITER1_ALG0_DECAY_FIXPT                  0x00004000

#define MOD_LIMITER1_ALG0_DECAYCOMPLEMENT_ADDR         32
#define MOD_LIMITER1_ALG0_DECAYCOMPLEMENT_FIXPT        0x007FFE00

/* Module Lowpass - Nth Order Filter*/
#define MOD_LOWPASS_COUNT                              15

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_0B_1_ADDR 33
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_0B_1_FIXPT 0x00800000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_1B_1_ADDR 34
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_1B_1_FIXPT 0x00000000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_2B_1_ADDR 35
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_2B_1_FIXPT 0x00000000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_1A_1_ADDR 36
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_1A_1_FIXPT 0x00000000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_2A_1_ADDR 37
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_2A_1_FIXPT 0x00000000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_0B_2_ADDR 38
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_0B_2_FIXPT 0x00800000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_1B_2_ADDR 39
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_1B_2_FIXPT 0x00000000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_2B_2_ADDR 40
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_2B_2_FIXPT 0x00000000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_1A_2_ADDR 41
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_1A_2_FIXPT 0x00000000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_2A_2_ADDR 42
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_2A_2_FIXPT 0x00000000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_0B_3_ADDR 43
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_0B_3_FIXPT 0x00800000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_1B_3_ADDR 44
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_1B_3_FIXPT 0x00000000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_2B_3_ADDR 45
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_2B_3_FIXPT 0x00000000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_1A_3_ADDR 46
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_1A_3_FIXPT 0x00000000

#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_2A_3_ADDR 47
#define MOD_LOWPASS_ALG0_STAGE3_NTHORDERDOUBLE24_2A_3_FIXPT 0x00000000

/* Module EQ - Parametric EQ*/
#define MOD_EQ_COUNT                                   10

#define MOD_EQ_ALG0_STAGE0_B0_ADDR                     48
#define MOD_EQ_ALG0_STAGE0_B0_FIXPT                    0x00800000

#define MOD_EQ_ALG0_STAGE0_B0_ADDR                     48
#define MOD_EQ_ALG0_STAGE0_B0_FIXPT                    0x00800000

#define MOD_EQ_ALG0_STAGE0_B1_ADDR                     49
#define MOD_EQ_ALG0_STAGE0_B1_FIXPT                    0x00000000

#define MOD_EQ_ALG0_STAGE0_B1_ADDR                     49
#define MOD_EQ_ALG0_STAGE0_B1_FIXPT                    0x00000000

#define MOD_EQ_ALG0_STAGE0_B2_ADDR                     50
#define MOD_EQ_ALG0_STAGE0_B2_FIXPT                    0x00000000

#define MOD_EQ_ALG0_STAGE0_B2_ADDR                     50
#define MOD_EQ_ALG0_STAGE0_B2_FIXPT                    0x00000000

#define MOD_EQ_ALG0_STAGE0_A0_ADDR                     51
#define MOD_EQ_ALG0_STAGE0_A0_FIXPT                    0x00000000

#define MOD_EQ_ALG0_STAGE0_A0_ADDR                     51
#define MOD_EQ_ALG0_STAGE0_A0_FIXPT                    0x00000000

#define MOD_EQ_ALG0_STAGE0_A1_ADDR                     52
#define MOD_EQ_ALG0_STAGE0_A1_FIXPT                    0x00000000

#define MOD_EQ_ALG0_STAGE0_A1_ADDR                     52
#define MOD_EQ_ALG0_STAGE0_A1_FIXPT                    0x00000000

/* Module Delay - Delay*/
#define MOD_DELAY_COUNT                                1

#define MOD_DELAY_DELAYAMT_ADDR                        53
#define MOD_DELAY_DELAYAMT_FIXPT                       0x00000001

/* Module Phase - Signal Invert*/
#define MOD_PHASE_COUNT                                2

#define MOD_PHASE_ALG0_EQ1940INVERT3GAIN_ADDR          54
#define MOD_PHASE_ALG0_EQ1940INVERT3GAIN_FIXPT         0x00800000

#define MOD_PHASE_ALG1_EQ1940INVERT4GAIN_ADDR          55
#define MOD_PHASE_ALG1_EQ1940INVERT4GAIN_FIXPT         0x00800000

/* Module GainOut - Single SW slew vol (adjustable)*/
#define MOD_GAINOUT_COUNT                              2

#define MOD_GAINOUT_ALG0_TARGET_ADDR                   56
#define MOD_GAINOUT_ALG0_TARGET_FIXPT                  0x00800000

#define MOD_GAINOUT_ALG0_STEP_ADDR                     57
#define MOD_GAINOUT_ALG0_STEP_FIXPT                    0x00000800

/* Module Limiter2 - Limiter*/
#define MOD_LIMITER2_COUNT                             15

#define MOD_LIMITER2_ALG0_S1_ADDR                      58
#define MOD_LIMITER2_ALG0_S1_FIXPT                     0xFFFE2BE3

#define MOD_LIMITER2_ALG0_INT1_ADDR                    59
#define MOD_LIMITER2_ALG0_INT1_FIXPT                   0x0022BE2B

#define MOD_LIMITER2_ALG0_S2_ADDR                      60
#define MOD_LIMITER2_ALG0_S2_FIXPT                     0xFFEAAAAB

#define MOD_LIMITER2_ALG0_INT2_ADDR                    61
#define MOD_LIMITER2_ALG0_INT2_FIXPT                   0x006AAAAA

#define MOD_LIMITER2_ALG0_S3_ADDR                      62
#define MOD_LIMITER2_ALG0_S3_FIXPT                     0xFF9A69A7

#define MOD_LIMITER2_ALG0_INT3_ADDR                    63
#define MOD_LIMITER2_ALG0_INT3_FIXPT                   0x00FDF7DF

#define MOD_LIMITER2_ALG0_S4_ADDR                      64
#define MOD_LIMITER2_ALG0_S4_FIXPT                     0xF83C6C20

#define MOD_LIMITER2_ALG0_INT4_ADDR                    65
#define MOD_LIMITER2_ALG0_INT4_FIXPT                   0x03F5AA22

#define MOD_LIMITER2_ALG0_C1_ADDR                      66
#define MOD_LIMITER2_ALG0_C1_FIXPT                     0x01800000

#define MOD_LIMITER2_ALG0_C2_ADDR                      67
#define MOD_LIMITER2_ALG0_C2_FIXPT                     0x01000000

#define MOD_LIMITER2_ALG0_C3_ADDR                      68
#define MOD_LIMITER2_ALG0_C3_FIXPT                     0x00333333

#define MOD_LIMITER2_ALG0_THRESHOLD_ADDR               69
#define MOD_LIMITER2_ALG0_THRESHOLD_FIXPT              0x0016C310

#define MOD_LIMITER2_ALG0_RMS_ADDR                     70
#define MOD_LIMITER2_ALG0_RMS_FIXPT                    0x000007DC

#define MOD_LIMITER2_ALG0_DECAY_ADDR                   71
#define MOD_LIMITER2_ALG0_DECAY_FIXPT                  0x00004000

#define MOD_LIMITER2_ALG0_DECAYCOMPLEMENT_ADDR         72
#define MOD_LIMITER2_ALG0_DECAYCOMPLEMENT_FIXPT        0x007FFE00

/* Module LimiterMix - Signal Merger*/
#define MOD_LIMITERMIX_COUNT                           1

#define MOD_LIMITERMIX_SINGLECTRLMIXER19401_ADDR       73
#define MOD_LIMITERMIX_SINGLECTRLMIXER19401_FIXPT      0x00400000

/* This array contains the entire DSP program,
and should be loaded into the external i2c EEPROM */
const uint8_t PROGMEM DSP_eeprom_firmware[2304] =
{
0x01, 0x00, 0x05, 0x00, 0x08, 0x1C, 0x00, 0x58, 
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 
0x03, 0x03, 0x01, 0x00, 0x23, 0x00, 0x08, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x01, 0x01, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x80, 
0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 
0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 
0x2B, 0xE3, 0x00, 0x22, 0xBE, 0x2C, 0x0F, 0xEA, 
0xAA, 0xAB, 0x00, 0x6A, 0xAA, 0xAB, 0x0F, 0x9A, 
0x69, 0xA7, 0x00, 0xFD, 0xF7, 0xDF, 0x08, 0x3C, 
0x6C, 0x20, 0x03, 0xF5, 0xAA, 0x23, 0x01, 0x80, 
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x33, 
0x33, 0x33, 0x00, 0x16, 0xC3, 0x11, 0x00, 0x00, 
0x07, 0xDC, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 
0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 
0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFE, 
0x2B, 0xE3, 0x00, 0x22, 0xBE, 0x2C, 0x0F, 0xEA, 
0xAA, 0xAB, 0x00, 0x6A, 0xAA, 0xAB, 0x0F, 0x9A, 
0x69, 0xA7, 0x00, 0xFD, 0xF7, 0xDF, 0x08, 0x3C, 
0x6C, 0x20, 0x03, 0xF5, 0xAA, 0x23, 0x01, 0x80, 
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x33, 
0x33, 0x33, 0x00, 0x16, 0xC3, 0x11, 0x00, 0x00, 
0x07, 0xDC, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 
0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x06, 
0xFC, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x01, 0x00, 0x00, 0x00, 0xE8, 0x01, 0x00, 0x00, 
0x00, 0x00, 0x01, 0x00, 0x08, 0x00, 0xE8, 0x01, 
0x00, 0x02, 0x00, 0x20, 0x01, 0x00, 0x10, 0x00, 
0xE2, 0x01, 0x00, 0x0A, 0x00, 0x20, 0x01, 0x00, 
0x18, 0x00, 0xE2, 0x01, 0xFF, 0xF2, 0x01, 0x20, 
0x01, 0x00, 0x21, 0x08, 0x22, 0x41, 0x00, 0x40, 
0x00, 0xE2, 0x01, 0x00, 0x31, 0x08, 0x20, 0x01, 
0x00, 0x21, 0x08, 0x34, 0x01, 0x00, 0x42, 0x02, 
0x22, 0x01, 0x00, 0x28, 0x00, 0xE2, 0x01, 0x00, 
0x28, 0x00, 0xC0, 0x01, 0x00, 0x38, 0x00, 0xF2, 
0x01, 0x00, 0x17, 0xFF, 0x20, 0x01, 0x00, 0x58, 
0x00, 0xE2, 0x01, 0x00, 0x1F, 0xFF, 0x20, 0x01, 
0x00, 0x70, 0x00, 0xE2, 0x01, 0x00, 0x9A, 0x06, 
0x20, 0x01, 0x00, 0x92, 0x07, 0x22, 0x01, 0x00, 
0x82, 0x06, 0x34, 0x01, 0x00, 0x7A, 0x07, 0x22, 
0x01, 0x00, 0x5A, 0x03, 0x22, 0x01, 0x00, 0x52, 
0x04, 0x22, 0x01, 0x00, 0x4A, 0x05, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x88, 0x00, 
0xE2, 0x01, 0x00, 0xA0, 0x00, 0xF2, 0x01, 0x00, 
0xCA, 0x06, 0x20, 0x01, 0x00, 0xC2, 0x07, 0x22, 
0x01, 0x00, 0xB2, 0x06, 0x34, 0x01, 0x00, 0xAA, 
0x07, 0x22, 0x01, 0x00, 0x72, 0x03, 0x22, 0x01, 
0x00, 0x6A, 0x04, 0x22, 0x01, 0x00, 0x62, 0x05, 
0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 
0xB8, 0x00, 0xE2, 0x01, 0x00, 0xD0, 0x00, 0xF2, 
0x01, 0x00, 0xFA, 0x0B, 0x20, 0x01, 0x00, 0xF2, 
0x0C, 0x22, 0x01, 0x00, 0xE2, 0x0B, 0x34, 0x01, 
0x00, 0xDA, 0x0C, 0x22, 0x01, 0x00, 0x8A, 0x08, 
0x22, 0x01, 0x00, 0x82, 0x09, 0x22, 0x01, 0x00, 
0x7A, 0x0A, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 
0x01, 0x00, 0xE8, 0x00, 0xE2, 0x01, 0x01, 0x00, 
0x00, 0xF2, 0x01, 0x01, 0x2A, 0x0B, 0x20, 0x01, 
0x01, 0x22, 0x0C, 0x22, 0x01, 0x01, 0x12, 0x0B, 
0x34, 0x01, 0x01, 0x0A, 0x0C, 0x22, 0x01, 0x00, 
0xBA, 0x08, 0x22, 0x01, 0x00, 0xB2, 0x09, 0x22, 
0x01, 0x00, 0xAA, 0x0A, 0x22, 0x01, 0x00, 0x00, 
0x00, 0x00, 0x01, 0x01, 0x18, 0x00, 0xE2, 0x01, 
0x01, 0x30, 0x00, 0xF2, 0x01, 0x01, 0x5A, 0x10, 
0x20, 0x01, 0x01, 0x52, 0x11, 0x22, 0x01, 0x01, 
0x42, 0x10, 0x34, 0x01, 0x01, 0x3A, 0x11, 0x22, 
0x01, 0x00, 0xEA, 0x0D, 0x22, 0x01, 0x00, 0xE2, 
0x0E, 0x22, 0x01, 0x00, 0xDA, 0x0F, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x48, 0x00, 
0xE2, 0x01, 0x01, 0x60, 0x00, 0xF2, 0x01, 0x01, 
0x8A, 0x10, 0x20, 0x01, 0x01, 0x82, 0x11, 0x22, 
0x01, 0x01, 0x72, 0x10, 0x34, 0x01, 0x01, 0x6A, 
0x11, 0x22, 0x01, 0x01, 0x1A, 0x0D, 0x22, 0x01, 
0x01, 0x12, 0x0E, 0x22, 0x01, 0x01, 0x0A, 0x0F, 
0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 
0x78, 0x00, 0xE2, 0x01, 0x01, 0x90, 0x00, 0xF2, 
0x01, 0x00, 0x71, 0x08, 0x20, 0x01, 0x00, 0x00, 
0x00, 0x00, 0x01, 0x01, 0xF0, 0x00, 0xF0, 0x01, 
0xFF, 0xE9, 0x08, 0x22, 0x01, 0x01, 0xE8, 0x00, 
0xF2, 0x01, 0x01, 0xD9, 0x08, 0x20, 0x01, 0x01, 
0xDA, 0x1E, 0x22, 0x41, 0x01, 0xEA, 0x1E, 0x22, 
0x01, 0x01, 0xC9, 0x08, 0x34, 0x01, 0x01, 0xCA, 
0x1E, 0x22, 0x41, 0x01, 0xF2, 0x1E, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xD0, 0x00, 
0xE2, 0x01, 0x01, 0xE0, 0x00, 0xF2, 0x01, 0x01, 
0xF8, 0x00, 0xE2, 0x01, 0xFF, 0xF2, 0x1A, 0x40, 
0x01, 0x01, 0xF9, 0x08, 0x20, 0x09, 0x01, 0xFA, 
0x12, 0x20, 0x01, 0xFF, 0xF2, 0x13, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 0x01, 0xFA, 0x14, 
0x20, 0x01, 0xFF, 0xF2, 0x15, 0x22, 0x01, 0x01, 
0x98, 0x00, 0xE2, 0x23, 0xFF, 0xF2, 0x1B, 0x40, 
0x01, 0x01, 0xF9, 0x08, 0x20, 0x09, 0x01, 0xFA, 
0x16, 0x20, 0x01, 0xFF, 0xF2, 0x17, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x23, 0xFF, 0xF2, 0x1C, 
0x40, 0x01, 0x01, 0xF9, 0x08, 0x20, 0x09, 0x01, 
0xFA, 0x18, 0x20, 0x01, 0xFF, 0xF2, 0x19, 0x22, 
0x01, 0x01, 0x98, 0x00, 0xE2, 0x23, 0x00, 0x00, 
0x00, 0x00, 0x01, 0x01, 0x98, 0x00, 0xC0, 0x01, 
0x01, 0xFF, 0xFF, 0x20, 0x41, 0xFF, 0xF1, 0x07, 
0x22, 0x01, 0x01, 0x98, 0x00, 0xE2, 0x01, 0x01, 
0x9F, 0xFF, 0x20, 0x01, 0x01, 0x98, 0x00, 0xE2, 
0x01, 0x01, 0x98, 0x00, 0xC0, 0x01, 0x01, 0xFF, 
0xFF, 0x20, 0x41, 0xFF, 0xF1, 0x07, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 0x01, 0x9F, 0xFF, 
0x20, 0x01, 0x01, 0x98, 0x00, 0xE2, 0x01, 0x01, 
0x98, 0x00, 0xC0, 0x01, 0x01, 0xFF, 0xFF, 0x20, 
0x41, 0xFF, 0xF1, 0x07, 0x22, 0x01, 0x01, 0x98, 
0x00, 0xE2, 0x01, 0x01, 0x9F, 0xFF, 0x20, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 0x01, 0x98, 0x00, 
0xC0, 0x01, 0x00, 0x02, 0x1D, 0xA0, 0x01, 0xFF, 
0xE7, 0xFF, 0x20, 0x01, 0x01, 0xC0, 0x00, 0xE2, 
0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xC1, 
0x08, 0x40, 0x01, 0xFF, 0xF1, 0x08, 0x20, 0x09, 
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xC0, 0x00, 
0xE2, 0x23, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 
0xC1, 0x08, 0x40, 0x01, 0x01, 0xB9, 0x08, 0x20, 
0x09, 0x01, 0xC2, 0x1F, 0x20, 0x01, 0x01, 0xBA, 
0x1F, 0x22, 0x41, 0x01, 0xB9, 0x08, 0x22, 0x01, 
0x01, 0xC0, 0x00, 0xE2, 0x23, 0x00, 0x00, 0x00, 
0x00, 0x01, 0x01, 0xC1, 0x08, 0x20, 0x01, 0x01, 
0xB0, 0x00, 0xE2, 0x01, 0xFF, 0xF2, 0x20, 0x22, 
0x49, 0xFF, 0xF1, 0x08, 0x20, 0x01, 0xFF, 0xE9, 
0x08, 0x20, 0x25, 0x01, 0xA8, 0x00, 0xE2, 0x01, 
0x01, 0xC0, 0x00, 0xC0, 0x01, 0x00, 0x77, 0xFF, 
0x20, 0x01, 0x01, 0xA0, 0x00, 0xE2, 0x01, 0x01, 
0xA9, 0x08, 0x20, 0x01, 0xFF, 0x10, 0x00, 0x02, 
0x01, 0x02, 0x22, 0x24, 0x20, 0x01, 0x02, 0x1A, 
0x25, 0x22, 0x01, 0x02, 0x0A, 0x24, 0x34, 0x01, 
0x02, 0x02, 0x25, 0x22, 0x01, 0x01, 0x4A, 0x21, 
0x22, 0x01, 0x01, 0x42, 0x22, 0x22, 0x01, 0x01, 
0x3A, 0x23, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 
0x01, 0x02, 0x10, 0x00, 0xE2, 0x01, 0x02, 0x28, 
0x00, 0xF2, 0x01, 0x02, 0x52, 0x24, 0x20, 0x01, 
0x02, 0x4A, 0x25, 0x22, 0x01, 0x02, 0x3A, 0x24, 
0x34, 0x01, 0x02, 0x32, 0x25, 0x22, 0x01, 0x01, 
0x7A, 0x21, 0x22, 0x01, 0x01, 0x72, 0x22, 0x22, 
0x01, 0x01, 0x6A, 0x23, 0x22, 0x01, 0x00, 0x00, 
0x00, 0x00, 0x01, 0x02, 0x40, 0x00, 0xE2, 0x01, 
0x02, 0x58, 0x00, 0xF2, 0x01, 0x02, 0x82, 0x29, 
0x20, 0x01, 0x02, 0x7A, 0x2A, 0x22, 0x01, 0x02, 
0x6A, 0x29, 0x34, 0x01, 0x02, 0x62, 0x2A, 0x22, 
0x01, 0x02, 0x12, 0x26, 0x22, 0x01, 0x02, 0x0A, 
0x27, 0x22, 0x01, 0x02, 0x02, 0x28, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x70, 0x00, 
0xE2, 0x01, 0x02, 0x88, 0x00, 0xF2, 0x01, 0x02, 
0xB2, 0x29, 0x20, 0x01, 0x02, 0xAA, 0x2A, 0x22, 
0x01, 0x02, 0x9A, 0x29, 0x34, 0x01, 0x02, 0x92, 
0x2A, 0x22, 0x01, 0x02, 0x42, 0x26, 0x22, 0x01, 
0x02, 0x3A, 0x27, 0x22, 0x01, 0x02, 0x32, 0x28, 
0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 
0xA0, 0x00, 0xE2, 0x01, 0x02, 0xB8, 0x00, 0xF2, 
0x01, 0x02, 0xE2, 0x2E, 0x20, 0x01, 0x02, 0xDA, 
0x2F, 0x22, 0x01, 0x02, 0xCA, 0x2E, 0x34, 0x01, 
0x02, 0xC2, 0x2F, 0x22, 0x01, 0x02, 0x72, 0x2B, 
0x22, 0x01, 0x02, 0x6A, 0x2C, 0x22, 0x01, 0x02, 
0x62, 0x2D, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 
0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xE8, 
0x00, 0xF2, 0x01, 0x03, 0x12, 0x2E, 0x20, 0x01, 
0x03, 0x0A, 0x2F, 0x22, 0x01, 0x02, 0xFA, 0x2E, 
0x34, 0x01, 0x02, 0xF2, 0x2F, 0x22, 0x01, 0x02, 
0xA2, 0x2B, 0x22, 0x01, 0x02, 0x9A, 0x2C, 0x22, 
0x01, 0x02, 0x92, 0x2D, 0x22, 0x01, 0x00, 0x00, 
0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0xE2, 0x01, 
0x03, 0x18, 0x00, 0xF2, 0x01, 0x03, 0x42, 0x33, 
0x20, 0x01, 0x03, 0x3A, 0x34, 0x22, 0x01, 0x03, 
0x2A, 0x33, 0x34, 0x01, 0x03, 0x22, 0x34, 0x22, 
0x01, 0x02, 0xD2, 0x30, 0x22, 0x01, 0x02, 0xCA, 
0x31, 0x22, 0x01, 0x02, 0xC2, 0x32, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x30, 0x00, 
0xE2, 0x01, 0x03, 0x48, 0x00, 0xF2, 0x01, 0x03, 
0x72, 0x33, 0x20, 0x01, 0x03, 0x6A, 0x34, 0x22, 
0x01, 0x03, 0x5A, 0x33, 0x34, 0x01, 0x03, 0x52, 
0x34, 0x22, 0x01, 0x03, 0x02, 0x30, 0x22, 0x01, 
0x02, 0xFA, 0x31, 0x22, 0x01, 0x02, 0xF2, 0x32, 
0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 
0x60, 0x00, 0xE2, 0x01, 0x03, 0x78, 0x00, 0xF2, 
0x01, 0x00, 0x02, 0x35, 0xA0, 0x01, 0x03, 0x89, 
0x08, 0x20, 0x01, 0x03, 0x80, 0x00, 0xE2, 0x01, 
0x03, 0x31, 0x08, 0x20, 0x01, 0x03, 0x88, 0x00, 
0xE2, 0x81, 0x17, 0xE9, 0x08, 0x20, 0x01, 0x17, 
0xE0, 0x00, 0xE2, 0x01, 0x03, 0x61, 0x08, 0x20, 
0x01, 0x17, 0xE8, 0x00, 0xE2, 0x81, 0x03, 0x82, 
0x36, 0x20, 0x01, 0x2C, 0x40, 0x00, 0xE2, 0x01, 
0x17, 0xE2, 0x37, 0x20, 0x01, 0x2C, 0x48, 0x00, 
0xE2, 0x01, 0xFF, 0xF2, 0x38, 0x20, 0x01, 0x2C, 
0x61, 0x08, 0x22, 0x41, 0x2C, 0x80, 0x00, 0xE2, 
0x01, 0x2C, 0x71, 0x08, 0x20, 0x01, 0x2C, 0x61, 
0x08, 0x34, 0x01, 0x2C, 0x82, 0x39, 0x22, 0x01, 
0x2C, 0x68, 0x00, 0xE2, 0x01, 0x2C, 0x68, 0x00, 
0xC0, 0x01, 0x2C, 0x78, 0x00, 0xF2, 0x01, 0x2C, 
0x47, 0xFF, 0x20, 0x01, 0x2C, 0x50, 0x00, 0xE2, 
0x01, 0x2C, 0x4F, 0xFF, 0x20, 0x01, 0x2C, 0x58, 
0x00, 0xE2, 0x01, 0x2C, 0x51, 0x08, 0x20, 0x01, 
0xFF, 0x68, 0x00, 0x02, 0x01, 0x2C, 0x59, 0x08, 
0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 
0xF0, 0x00, 0xF0, 0x01, 0xFF, 0xE9, 0x08, 0x22, 
0x01, 0x01, 0xE8, 0x00, 0xF2, 0x01, 0x2C, 0xC1, 
0x08, 0x20, 0x01, 0x2C, 0xC2, 0x46, 0x22, 0x41, 
0x01, 0xEA, 0x46, 0x22, 0x01, 0x2C, 0xB1, 0x08, 
0x34, 0x01, 0x2C, 0xB2, 0x46, 0x22, 0x41, 0x01, 
0xF2, 0x46, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 
0x01, 0x2C, 0xB8, 0x00, 0xE2, 0x01, 0x2C, 0xC8, 
0x00, 0xF2, 0x01, 0x01, 0xF8, 0x00, 0xE2, 0x01, 
0xFF, 0xF2, 0x42, 0x40, 0x01, 0x01, 0xF9, 0x08, 
0x20, 0x09, 0x01, 0xFA, 0x3A, 0x20, 0x01, 0xFF, 
0xF2, 0x3B, 0x22, 0x01, 0x01, 0x98, 0x00, 0xE2, 
0x01, 0x01, 0xFA, 0x3C, 0x20, 0x01, 0xFF, 0xF2, 
0x3D, 0x22, 0x01, 0x01, 0x98, 0x00, 0xE2, 0x23, 
0xFF, 0xF2, 0x43, 0x40, 0x01, 0x01, 0xF9, 0x08, 
0x20, 0x09, 0x01, 0xFA, 0x3E, 0x20, 0x01, 0xFF, 
0xF2, 0x3F, 0x22, 0x01, 0x01, 0x98, 0x00, 0xE2, 
0x23, 0xFF, 0xF2, 0x44, 0x40, 0x01, 0x01, 0xF9, 
0x08, 0x20, 0x09, 0x01, 0xFA, 0x40, 0x20, 0x01, 
0xFF, 0xF2, 0x41, 0x22, 0x01, 0x01, 0x98, 0x00, 
0xE2, 0x23, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 
0x98, 0x00, 0xC0, 0x01, 0x01, 0xFF, 0xFF, 0x20, 
0x41, 0xFF, 0xF1, 0x07, 0x22, 0x01, 0x01, 0x98, 
0x00, 0xE2, 0x01, 0x01, 0x9F, 0xFF, 0x20, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 0x01, 0x98, 0x00, 
0xC0, 0x01, 0x01, 0xFF, 0xFF, 0x20, 0x41, 0xFF, 
0xF1, 0x07, 0x22, 0x01, 0x01, 0x98, 0x00, 0xE2, 
0x01, 0x01, 0x9F, 0xFF, 0x20, 0x01, 0x01, 0x98, 
0x00, 0xE2, 0x01, 0x01, 0x98, 0x00, 0xC0, 0x01, 
0x01, 0xFF, 0xFF, 0x20, 0x41, 0xFF, 0xF1, 0x07, 
0x22, 0x01, 0x01, 0x98, 0x00, 0xE2, 0x01, 0x01, 
0x9F, 0xFF, 0x20, 0x01, 0x01, 0x98, 0x00, 0xE2, 
0x01, 0x01, 0x98, 0x00, 0xC0, 0x01, 0x00, 0x02, 
0x45, 0xA0, 0x01, 0xFF, 0xE7, 0xFF, 0x20, 0x01, 
0x2C, 0xA8, 0x00, 0xE2, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x01, 0x2C, 0xA9, 0x08, 0x40, 0x01, 0xFF, 
0xF1, 0x08, 0x20, 0x09, 0x00, 0x00, 0x00, 0x00, 
0x01, 0x2C, 0xA8, 0x00, 0xE2, 0x23, 0x00, 0x00, 
0x00, 0x00, 0x01, 0x2C, 0xA9, 0x08, 0x40, 0x01, 
0x2C, 0xA1, 0x08, 0x20, 0x09, 0x2C, 0xAA, 0x47, 
0x20, 0x01, 0x2C, 0xA2, 0x47, 0x22, 0x41, 0x2C, 
0xA1, 0x08, 0x22, 0x01, 0x2C, 0xA8, 0x00, 0xE2, 
0x23, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2C, 0xA9, 
0x08, 0x20, 0x01, 0x2C, 0x98, 0x00, 0xE2, 0x01, 
0xFF, 0xF2, 0x48, 0x22, 0x49, 0xFF, 0xF1, 0x08, 
0x20, 0x01, 0xFF, 0xE9, 0x08, 0x20, 0x25, 0x2C, 
0x90, 0x00, 0xE2, 0x01, 0x2C, 0xA8, 0x00, 0xC0, 
0x01, 0x2C, 0x5F, 0xFF, 0x20, 0x01, 0x2C, 0x88, 
0x00, 0xE2, 0x01, 0x2C, 0x59, 0x08, 0x20, 0x01, 
0xFF, 0x70, 0x00, 0x02, 0x01, 0x2C, 0x8A, 0x49, 
0x20, 0x01, 0x01, 0xA2, 0x49, 0x22, 0x01, 0x00, 
0x00, 0x00, 0x00, 0x01, 0x2C, 0xD0, 0x00, 0xE2, 
0x01, 0x2C, 0x91, 0x08, 0x20, 0x01, 0xFF, 0x18, 
0x00, 0x02, 0x01, 0x2C, 0xD1, 0x08, 0x20, 0x01, 
0xFF, 0x78, 0x00, 0x02, 0x01, 0x01, 0x00, 0x05, 
0x00, 0x08, 0x1C, 0x00, 0x1C, 0x01, 0x00, 0x04, 
0x00, 0x08, 0x1D, 0x08, 0x01, 0x00, 0x05, 0x00, 
0x08, 0x1E, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 
0x08, 0x1F, 0x00, 0x01, 0x00, 0x06, 0x00, 0x08, 
0x20, 0x00, 0x00, 0x22, 0x01, 0x00, 0x06, 0x00, 
0x08, 0x21, 0x22, 0x00, 0x00, 0x01, 0x00, 0x05, 
0x00, 0x08, 0x22, 0x00, 0x00, 0x01, 0x00, 0x05, 
0x00, 0x08, 0x23, 0x00, 0x00, 0x01, 0x00, 0x05, 
0x00, 0x08, 0x24, 0x80, 0x00, 0x01, 0x00, 0x05, 
0x00, 0x08, 0x25, 0x00, 0x00, 0x01, 0x00, 0x05, 
0x00, 0x08, 0x26, 0x00, 0x00, 0x01, 0x00, 0x05, 
0x00, 0x08, 0x27, 0x00, 0x01, 0x01, 0x00, 0x05, 
0x00, 0x08, 0x1C, 0x00, 0x1C, 0x06, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
};

/* DSP Program Data */

#define PROGRAM_SIZE 5120
#define PROGRAM_ADDR 1024
#define PROGRAM_REGSIZE 5

const uint8_t PROGMEM DSP_program_data[PROGRAM_SIZE] = 
{
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0xE8, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x08, 0x00, 0xE8, 0x01, 
0x00, 0x02, 0x00, 0x20, 0x01, 
0x00, 0x10, 0x00, 0xE2, 0x01, 
0x00, 0x0A, 0x00, 0x20, 0x01, 
0x00, 0x18, 0x00, 0xE2, 0x01, 
0xFF, 0xF2, 0x01, 0x20, 0x01, 
0x00, 0x21, 0x08, 0x22, 0x41, 
0x00, 0x40, 0x00, 0xE2, 0x01, 
0x00, 0x31, 0x08, 0x20, 0x01, 
0x00, 0x21, 0x08, 0x34, 0x01, 
0x00, 0x42, 0x02, 0x22, 0x01, 
0x00, 0x28, 0x00, 0xE2, 0x01, 
0x00, 0x28, 0x00, 0xC0, 0x01, 
0x00, 0x38, 0x00, 0xF2, 0x01, 
0x00, 0x17, 0xFF, 0x20, 0x01, 
0x00, 0x58, 0x00, 0xE2, 0x01, 
0x00, 0x1F, 0xFF, 0x20, 0x01, 
0x00, 0x70, 0x00, 0xE2, 0x01, 
0x00, 0x9A, 0x06, 0x20, 0x01, 
0x00, 0x92, 0x07, 0x22, 0x01, 
0x00, 0x82, 0x06, 0x34, 0x01, 
0x00, 0x7A, 0x07, 0x22, 0x01, 
0x00, 0x5A, 0x03, 0x22, 0x01, 
0x00, 0x52, 0x04, 0x22, 0x01, 
0x00, 0x4A, 0x05, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x88, 0x00, 0xE2, 0x01, 
0x00, 0xA0, 0x00, 0xF2, 0x01, 
0x00, 0xCA, 0x06, 0x20, 0x01, 
0x00, 0xC2, 0x07, 0x22, 0x01, 
0x00, 0xB2, 0x06, 0x34, 0x01, 
0x00, 0xAA, 0x07, 0x22, 0x01, 
0x00, 0x72, 0x03, 0x22, 0x01, 
0x00, 0x6A, 0x04, 0x22, 0x01, 
0x00, 0x62, 0x05, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0xB8, 0x00, 0xE2, 0x01, 
0x00, 0xD0, 0x00, 0xF2, 0x01, 
0x00, 0xFA, 0x0B, 0x20, 0x01, 
0x00, 0xF2, 0x0C, 0x22, 0x01, 
0x00, 0xE2, 0x0B, 0x34, 0x01, 
0x00, 0xDA, 0x0C, 0x22, 0x01, 
0x00, 0x8A, 0x08, 0x22, 0x01, 
0x00, 0x82, 0x09, 0x22, 0x01, 
0x00, 0x7A, 0x0A, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0xE8, 0x00, 0xE2, 0x01, 
0x01, 0x00, 0x00, 0xF2, 0x01, 
0x01, 0x2A, 0x0B, 0x20, 0x01, 
0x01, 0x22, 0x0C, 0x22, 0x01, 
0x01, 0x12, 0x0B, 0x34, 0x01, 
0x01, 0x0A, 0x0C, 0x22, 0x01, 
0x00, 0xBA, 0x08, 0x22, 0x01, 
0x00, 0xB2, 0x09, 0x22, 0x01, 
0x00, 0xAA, 0x0A, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x01, 0x18, 0x00, 0xE2, 0x01, 
0x01, 0x30, 0x00, 0xF2, 0x01, 
0x01, 0x5A, 0x10, 0x20, 0x01, 
0x01, 0x52, 0x11, 0x22, 0x01, 
0x01, 0x42, 0x10, 0x34, 0x01, 
0x01, 0x3A, 0x11, 0x22, 0x01, 
0x00, 0xEA, 0x0D, 0x22, 0x01, 
0x00, 0xE2, 0x0E, 0x22, 0x01, 
0x00, 0xDA, 0x0F, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x01, 0x48, 0x00, 0xE2, 0x01, 
0x01, 0x60, 0x00, 0xF2, 0x01, 
0x01, 0x8A, 0x10, 0x20, 0x01, 
0x01, 0x82, 0x11, 0x22, 0x01, 
0x01, 0x72, 0x10, 0x34, 0x01, 
0x01, 0x6A, 0x11, 0x22, 0x01, 
0x01, 0x1A, 0x0D, 0x22, 0x01, 
0x01, 0x12, 0x0E, 0x22, 0x01, 
0x01, 0x0A, 0x0F, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x01, 0x78, 0x00, 0xE2, 0x01, 
0x01, 0x90, 0x00, 0xF2, 0x01, 
0x00, 0x71, 0x08, 0x20, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x01, 0xF0, 0x00, 0xF0, 0x01, 
0xFF, 0xE9, 0x08, 0x22, 0x01, 
0x01, 0xE8, 0x00, 0xF2, 0x01, 
0x01, 0xD9, 0x08, 0x20, 0x01, 
0x01, 0xDA, 0x1E, 0x22, 0x41, 
0x01, 0xEA, 0x1E, 0x22, 0x01, 
0x01, 0xC9, 0x08, 0x34, 0x01, 
0x01, 0xCA, 0x1E, 0x22, 0x41, 
0x01, 0xF2, 0x1E, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x01, 0xD0, 0x00, 0xE2, 0x01, 
0x01, 0xE0, 0x00, 0xF2, 0x01, 
0x01, 0xF8, 0x00, 0xE2, 0x01, 
0xFF, 0xF2, 0x1A, 0x40, 0x01, 
0x01, 0xF9, 0x08, 0x20, 0x09, 
0x01, 0xFA, 0x12, 0x20, 0x01, 
0xFF, 0xF2, 0x13, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0xFA, 0x14, 0x20, 0x01, 
0xFF, 0xF2, 0x15, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x23, 
0xFF, 0xF2, 0x1B, 0x40, 0x01, 
0x01, 0xF9, 0x08, 0x20, 0x09, 
0x01, 0xFA, 0x16, 0x20, 0x01, 
0xFF, 0xF2, 0x17, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x23, 
0xFF, 0xF2, 0x1C, 0x40, 0x01, 
0x01, 0xF9, 0x08, 0x20, 0x09, 
0x01, 0xFA, 0x18, 0x20, 0x01, 
0xFF, 0xF2, 0x19, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x23, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x01, 0x98, 0x00, 0xC0, 0x01, 
0x01, 0xFF, 0xFF, 0x20, 0x41, 
0xFF, 0xF1, 0x07, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0x9F, 0xFF, 0x20, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0x98, 0x00, 0xC0, 0x01, 
0x01, 0xFF, 0xFF, 0x20, 0x41, 
0xFF, 0xF1, 0x07, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0x9F, 0xFF, 0x20, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0x98, 0x00, 0xC0, 0x01, 
0x01, 0xFF, 0xFF, 0x20, 0x41, 
0xFF, 0xF1, 0x07, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0x9F, 0xFF, 0x20, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0x98, 0x00, 0xC0, 0x01, 
0x00, 0x02, 0x1D, 0xA0, 0x01, 
0xFF, 0xE7, 0xFF, 0x20, 0x01, 
0x01, 0xC0, 0x00, 0xE2, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x01, 0xC1, 0x08, 0x40, 0x01, 
0xFF, 0xF1, 0x08, 0x20, 0x09, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x01, 0xC0, 0x00, 0xE2, 0x23, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x01, 0xC1, 0x08, 0x40, 0x01, 
0x01, 0xB9, 0x08, 0x20, 0x09, 
0x01, 0xC2, 0x1F, 0x20, 0x01, 
0x01, 0xBA, 0x1F, 0x22, 0x41, 
0x01, 0xB9, 0x08, 0x22, 0x01, 
0x01, 0xC0, 0x00, 0xE2, 0x23, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x01, 0xC1, 0x08, 0x20, 0x01, 
0x01, 0xB0, 0x00, 0xE2, 0x01, 
0xFF, 0xF2, 0x20, 0x22, 0x49, 
0xFF, 0xF1, 0x08, 0x20, 0x01, 
0xFF, 0xE9, 0x08, 0x20, 0x25, 
0x01, 0xA8, 0x00, 0xE2, 0x01, 
0x01, 0xC0, 0x00, 0xC0, 0x01, 
0x00, 0x77, 0xFF, 0x20, 0x01, 
0x01, 0xA0, 0x00, 0xE2, 0x01, 
0x01, 0xA9, 0x08, 0x20, 0x01, 
0xFF, 0x10, 0x00, 0x02, 0x01, 
0x02, 0x22, 0x24, 0x20, 0x01, 
0x02, 0x1A, 0x25, 0x22, 0x01, 
0x02, 0x0A, 0x24, 0x34, 0x01, 
0x02, 0x02, 0x25, 0x22, 0x01, 
0x01, 0x4A, 0x21, 0x22, 0x01, 
0x01, 0x42, 0x22, 0x22, 0x01, 
0x01, 0x3A, 0x23, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x02, 0x10, 0x00, 0xE2, 0x01, 
0x02, 0x28, 0x00, 0xF2, 0x01, 
0x02, 0x52, 0x24, 0x20, 0x01, 
0x02, 0x4A, 0x25, 0x22, 0x01, 
0x02, 0x3A, 0x24, 0x34, 0x01, 
0x02, 0x32, 0x25, 0x22, 0x01, 
0x01, 0x7A, 0x21, 0x22, 0x01, 
0x01, 0x72, 0x22, 0x22, 0x01, 
0x01, 0x6A, 0x23, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x02, 0x40, 0x00, 0xE2, 0x01, 
0x02, 0x58, 0x00, 0xF2, 0x01, 
0x02, 0x82, 0x29, 0x20, 0x01, 
0x02, 0x7A, 0x2A, 0x22, 0x01, 
0x02, 0x6A, 0x29, 0x34, 0x01, 
0x02, 0x62, 0x2A, 0x22, 0x01, 
0x02, 0x12, 0x26, 0x22, 0x01, 
0x02, 0x0A, 0x27, 0x22, 0x01, 
0x02, 0x02, 0x28, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x02, 0x70, 0x00, 0xE2, 0x01, 
0x02, 0x88, 0x00, 0xF2, 0x01, 
0x02, 0xB2, 0x29, 0x20, 0x01, 
0x02, 0xAA, 0x2A, 0x22, 0x01, 
0x02, 0x9A, 0x29, 0x34, 0x01, 
0x02, 0x92, 0x2A, 0x22, 0x01, 
0x02, 0x42, 0x26, 0x22, 0x01, 
0x02, 0x3A, 0x27, 0x22, 0x01, 
0x02, 0x32, 0x28, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x02, 0xA0, 0x00, 0xE2, 0x01, 
0x02, 0xB8, 0x00, 0xF2, 0x01, 
0x02, 0xE2, 0x2E, 0x20, 0x01, 
0x02, 0xDA, 0x2F, 0x22, 0x01, 
0x02, 0xCA, 0x2E, 0x34, 0x01, 
0x02, 0xC2, 0x2F, 0x22, 0x01, 
0x02, 0x72, 0x2B, 0x22, 0x01, 
0x02, 0x6A, 0x2C, 0x22, 0x01, 
0x02, 0x62, 0x2D, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x02, 0xD0, 0x00, 0xE2, 0x01, 
0x02, 0xE8, 0x00, 0xF2, 0x01, 
0x03, 0x12, 0x2E, 0x20, 0x01, 
0x03, 0x0A, 0x2F, 0x22, 0x01, 
0x02, 0xFA, 0x2E, 0x34, 0x01, 
0x02, 0xF2, 0x2F, 0x22, 0x01, 
0x02, 0xA2, 0x2B, 0x22, 0x01, 
0x02, 0x9A, 0x2C, 0x22, 0x01, 
0x02, 0x92, 0x2D, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x03, 0x00, 0x00, 0xE2, 0x01, 
0x03, 0x18, 0x00, 0xF2, 0x01, 
0x03, 0x42, 0x33, 0x20, 0x01, 
0x03, 0x3A, 0x34, 0x22, 0x01, 
0x03, 0x2A, 0x33, 0x34, 0x01, 
0x03, 0x22, 0x34, 0x22, 0x01, 
0x02, 0xD2, 0x30, 0x22, 0x01, 
0x02, 0xCA, 0x31, 0x22, 0x01, 
0x02, 0xC2, 0x32, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x03, 0x30, 0x00, 0xE2, 0x01, 
0x03, 0x48, 0x00, 0xF2, 0x01, 
0x03, 0x72, 0x33, 0x20, 0x01, 
0x03, 0x6A, 0x34, 0x22, 0x01, 
0x03, 0x5A, 0x33, 0x34, 0x01, 
0x03, 0x52, 0x34, 0x22, 0x01, 
0x03, 0x02, 0x30, 0x22, 0x01, 
0x02, 0xFA, 0x31, 0x22, 0x01, 
0x02, 0xF2, 0x32, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x03, 0x60, 0x00, 0xE2, 0x01, 
0x03, 0x78, 0x00, 0xF2, 0x01, 
0x00, 0x02, 0x35, 0xA0, 0x01, 
0x03, 0x89, 0x08, 0x20, 0x01, 
0x03, 0x80, 0x00, 0xE2, 0x01, 
0x03, 0x31, 0x08, 0x20, 0x01, 
0x03, 0x88, 0x00, 0xE2, 0x81, 
0x17, 0xE9, 0x08, 0x20, 0x01, 
0x17, 0xE0, 0x00, 0xE2, 0x01, 
0x03, 0x61, 0x08, 0x20, 0x01, 
0x17, 0xE8, 0x00, 0xE2, 0x81, 
0x03, 0x82, 0x36, 0x20, 0x01, 
0x2C, 0x40, 0x00, 0xE2, 0x01, 
0x17, 0xE2, 0x37, 0x20, 0x01, 
0x2C, 0x48, 0x00, 0xE2, 0x01, 
0xFF, 0xF2, 0x38, 0x20, 0x01, 
0x2C, 0x61, 0x08, 0x22, 0x41, 
0x2C, 0x80, 0x00, 0xE2, 0x01, 
0x2C, 0x71, 0x08, 0x20, 0x01, 
0x2C, 0x61, 0x08, 0x34, 0x01, 
0x2C, 0x82, 0x39, 0x22, 0x01, 
0x2C, 0x68, 0x00, 0xE2, 0x01, 
0x2C, 0x68, 0x00, 0xC0, 0x01, 
0x2C, 0x78, 0x00, 0xF2, 0x01, 
0x2C, 0x47, 0xFF, 0x20, 0x01, 
0x2C, 0x50, 0x00, 0xE2, 0x01, 
0x2C, 0x4F, 0xFF, 0x20, 0x01, 
0x2C, 0x58, 0x00, 0xE2, 0x01, 
0x2C, 0x51, 0x08, 0x20, 0x01, 
0xFF, 0x68, 0x00, 0x02, 0x01, 
0x2C, 0x59, 0x08, 0x20, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x01, 0xF0, 0x00, 0xF0, 0x01, 
0xFF, 0xE9, 0x08, 0x22, 0x01, 
0x01, 0xE8, 0x00, 0xF2, 0x01, 
0x2C, 0xC1, 0x08, 0x20, 0x01, 
0x2C, 0xC2, 0x46, 0x22, 0x41, 
0x01, 0xEA, 0x46, 0x22, 0x01, 
0x2C, 0xB1, 0x08, 0x34, 0x01, 
0x2C, 0xB2, 0x46, 0x22, 0x41, 
0x01, 0xF2, 0x46, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x2C, 0xB8, 0x00, 0xE2, 0x01, 
0x2C, 0xC8, 0x00, 0xF2, 0x01, 
0x01, 0xF8, 0x00, 0xE2, 0x01, 
0xFF, 0xF2, 0x42, 0x40, 0x01, 
0x01, 0xF9, 0x08, 0x20, 0x09, 
0x01, 0xFA, 0x3A, 0x20, 0x01, 
0xFF, 0xF2, 0x3B, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0xFA, 0x3C, 0x20, 0x01, 
0xFF, 0xF2, 0x3D, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x23, 
0xFF, 0xF2, 0x43, 0x40, 0x01, 
0x01, 0xF9, 0x08, 0x20, 0x09, 
0x01, 0xFA, 0x3E, 0x20, 0x01, 
0xFF, 0xF2, 0x3F, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x23, 
0xFF, 0xF2, 0x44, 0x40, 0x01, 
0x01, 0xF9, 0x08, 0x20, 0x09, 
0x01, 0xFA, 0x40, 0x20, 0x01, 
0xFF, 0xF2, 0x41, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x23, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x01, 0x98, 0x00, 0xC0, 0x01, 
0x01, 0xFF, 0xFF, 0x20, 0x41, 
0xFF, 0xF1, 0x07, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0x9F, 0xFF, 0x20, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0x98, 0x00, 0xC0, 0x01, 
0x01, 0xFF, 0xFF, 0x20, 0x41, 
0xFF, 0xF1, 0x07, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0x9F, 0xFF, 0x20, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0x98, 0x00, 0xC0, 0x01, 
0x01, 0xFF, 0xFF, 0x20, 0x41, 
0xFF, 0xF1, 0x07, 0x22, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0x9F, 0xFF, 0x20, 0x01, 
0x01, 0x98, 0x00, 0xE2, 0x01, 
0x01, 0x98, 0x00, 0xC0, 0x01, 
0x00, 0x02, 0x45, 0xA0, 0x01, 
0xFF, 0xE7, 0xFF, 0x20, 0x01, 
0x2C, 0xA8, 0x00, 0xE2, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x2C, 0xA9, 0x08, 0x40, 0x01, 
0xFF, 0xF1, 0x08, 0x20, 0x09, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x2C, 0xA8, 0x00, 0xE2, 0x23, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x2C, 0xA9, 0x08, 0x40, 0x01, 
0x2C, 0xA1, 0x08, 0x20, 0x09, 
0x2C, 0xAA, 0x47, 0x20, 0x01, 
0x2C, 0xA2, 0x47, 0x22, 0x41, 
0x2C, 0xA1, 0x08, 0x22, 0x01, 
0x2C, 0xA8, 0x00, 0xE2, 0x23, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x2C, 0xA9, 0x08, 0x20, 0x01, 
0x2C, 0x98, 0x00, 0xE2, 0x01, 
0xFF, 0xF2, 0x48, 0x22, 0x49, 
0xFF, 0xF1, 0x08, 0x20, 0x01, 
0xFF, 0xE9, 0x08, 0x20, 0x25, 
0x2C, 0x90, 0x00, 0xE2, 0x01, 
0x2C, 0xA8, 0x00, 0xC0, 0x01, 
0x2C, 0x5F, 0xFF, 0x20, 0x01, 
0x2C, 0x88, 0x00, 0xE2, 0x01, 
0x2C, 0x59, 0x08, 0x20, 0x01, 
0xFF, 0x70, 0x00, 0x02, 0x01, 
0x2C, 0x8A, 0x49, 0x20, 0x01, 
0x01, 0xA2, 0x49, 0x22, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x2C, 0xD0, 0x00, 0xE2, 0x01, 
0x2C, 0x91, 0x08, 0x20, 0x01, 
0xFF, 0x18, 0x00, 0x02, 0x01, 
0x2C, 0xD1, 0x08, 0x20, 0x01, 
0xFF, 0x78, 0x00, 0x02, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x00, 0x00, 0x00, 0x01, 
};

/* DSP Parameter (Coefficient) Data */

#define PARAMETER_SIZE 4096
#define PARAMETER_ADDR 0
#define PARAMETER_REGSIZE 4

const uint8_t PROGMEM DSP_parameter_data[PARAMETER_SIZE] = 
{
0x00, 0x80, 0x00, 0x00, 
0x00, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x08, 0x00, 
0x00, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x0F, 0xFE, 0x2B, 0xE3, 
0x00, 0x22, 0xBE, 0x2C, 
0x0F, 0xEA, 0xAA, 0xAB, 
0x00, 0x6A, 0xAA, 0xAB, 
0x0F, 0x9A, 0x69, 0xA7, 
0x00, 0xFD, 0xF7, 0xDF, 
0x08, 0x3C, 0x6C, 0x20, 
0x03, 0xF5, 0xAA, 0x23, 
0x01, 0x80, 0x00, 0x00, 
0x01, 0x00, 0x00, 0x00, 
0x00, 0x33, 0x33, 0x33, 
0x00, 0x16, 0xC3, 0x11, 
0x00, 0x00, 0x07, 0xDC, 
0x00, 0x00, 0x40, 0x00, 
0x00, 0x7F, 0xFE, 0x00, 
0x00, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x01, 
0x00, 0x80, 0x00, 0x00, 
0x00, 0x80, 0x00, 0x00, 
0x00, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x08, 0x00, 
0x0F, 0xFE, 0x2B, 0xE3, 
0x00, 0x22, 0xBE, 0x2C, 
0x0F, 0xEA, 0xAA, 0xAB, 
0x00, 0x6A, 0xAA, 0xAB, 
0x0F, 0x9A, 0x69, 0xA7, 
0x00, 0xFD, 0xF7, 0xDF, 
0x08, 0x3C, 0x6C, 0x20, 
0x03, 0xF5, 0xAA, 0x23, 
0x01, 0x80, 0x00, 0x00, 
0x01, 0x00, 0x00, 0x00, 
0x00, 0x33, 0x33, 0x33, 
0x00, 0x16, 0xC3, 0x11, 
0x00, 0x00, 0x07, 0xDC, 
0x00, 0x00, 0x40, 0x00, 
0x00, 0x7F, 0xFE, 0x00, 
0x00, 0x40, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 
};

/* Register Default - IC 1.CoreRegister */

#define CORE_REGISTER_R0_SIZE 2
#define CORE_REGISTER_R0_ADDR 0x081C
#define CORE_REGISTER_R0_REGSIZE 2

const uint8_t PROGMEM DSP_core_register_R0_data[CORE_REGISTER_R0_SIZE] = 
{
0x00, 0x18
};

/* Register Default - IC 1.HWConFiguration */

#define HARDWARE_CONF_SIZE 24
#define HARDWARE_CONF_ADDR 0x081C
#define HARDWARE_CONF_REGSIZE 1

const uint8_t PROGMEM DSP_hardware_conf_data[HARDWARE_CONF_SIZE] = 
{
0x00, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
};

/* Register Default - IC 1.CoreRegister */

#define CORE_REGISTER_R4_SIZE 2
#define CORE_REGISTER_R4_ADDR 0x081C
#define CORE_REGISTER_R4_REGSIZE 2

const uint8_t PROGMEM DSP_core_register_R4_data[CORE_REGISTER_R4_SIZE] = 
{
0x00, 0x1C
};

/* Run this function to load DSP firmware directly */
void loadProgram(SigmaDSP &myDSP)
{
  myDSP.writeRegister(CORE_REGISTER_R0_ADDR, CORE_REGISTER_R0_SIZE, DSP_core_register_R0_data);
  myDSP.writeRegisterBlock(PROGRAM_ADDR, PROGRAM_SIZE, DSP_program_data, PROGRAM_REGSIZE);
  myDSP.writeRegisterBlock(PARAMETER_ADDR, PARAMETER_SIZE, DSP_parameter_data, PARAMETER_REGSIZE);
  myDSP.writeRegister(HARDWARE_CONF_ADDR, HARDWARE_CONF_SIZE, DSP_hardware_conf_data);
  myDSP.writeRegister(CORE_REGISTER_R4_ADDR, CORE_REGISTER_R4_SIZE, DSP_core_register_R4_data);
}

#endif
yentzee commented 5 years ago

let me check again.

yentzee commented 5 years ago

ok cool that worked. gonna check if the file generated is going to work now. :)

yentzee commented 5 years ago

working now. Awesome. Thanks a lot. :)