Storing and retrieving 11KB fixed data within program code. AVR & PIC

For Flowcode users to discuss projects, flowcharts, and any other issues related to Flowcode 8.

Moderator: Benj

medelec35
Matrix Staff
Posts: 9521
Joined: Sat May 05, 2007 2:27 pm
Location: Northamptonshire, UK
Has thanked: 2585 times
Been thanked: 3815 times

Storing and retrieving 11KB fixed data within program code. AVR & PIC

Post by medelec35 »

If I have got 11475 bytes to store and retrieve.
Not talking about changing flash memory as the data will not change, like LUT data it''s fixed.
Will this work for AVR withing Function implementations of Supplementary code :

Code: Select all

unsigned char Image1 = {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,123,239,115,206,140,177,
41,165,41,165,107,173,16,194,214,218,189,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,181,214,74,169,165,148,74,169,239,189,115,206,181,214,181,214,115,206,49,198,74,169,165,148,198,152,239,189,123,239,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,115,206,165,148,198,152,115,206,255,255,255,255,255,255,255,255,90,235,148,210,255,255,255,255,255,255,255,255,57,231,8,161,99,140,8,161,222,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,156,243,74,169,41,165,148,210,189,247,
255,255,222,251,222,251,222,251,255,255,173,181,99,140,189,247,222,251,222,251,222,251,255,255,255,255,24,227,140,177,99,140,214,218,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,57,231,33,132,107,173,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,16,194,99,140,222,251,222,251,
222,251,222,251,222,251,222,251,222,251,255,255,181,214,33,132,239,189,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,90,235,99,140,16,194,255,255,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,57,231,8,161,
49,198,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,90,235,66,136,49,198,
156,243,140,177,189,247,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,115,206,115,206,90,235,231,156,173,181,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,41,165,140,177,255,255,57,231,99,140,140,177,255,255,222,251,222,251,222,251,222,251,222,251,
255,255,148,210,74,169,222,251,222,251,222,251,222,251,222,251,222,251,255,255,24,227,66,136,206,185,255,255,247,222,99,140,57,231,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,115,206,41,165,222,251,222,251,222,251,90,235,24,227,255,255,222,251,222,251,222,251,222,251,222,251,255,255,173,181,99,140,189,247,222,251,222,251,222,251,222,251,222,251,
255,255,156,243,247,222,255,255,222,251,255,255,115,206,198,152,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,198,152,247,222,255,255,222,251,222,251,255,255,255,255,222,251,222,251,222,251,222,251,222,251,222,251,255,255,173,181,99,140,189,247,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,222,251,222,251,222,251,222,251,74,169,115,206,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,140,177,107,173,222,251,222,251,222,251,222,251,222,251,222,251,222,251,
222,251,222,251,222,251,222,251,222,251,255,255,173,181,99,140,189,247,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,115,206,165,148,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,156,243,247,222,156,243,255,255,255,255,255,255,222,251,123,239,123,239,123,239,123,239,156,243,255,255,123,239,123,239,123,239,123,239,123,239,123,239,123,239,222,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,222,251,123,239,
189,247,255,255,255,255,255,255,156,243,222,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,189,247,24,227,189,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,156,243,123,239,255,255,255,255,255,255,222,251,156,243,255,255,
255,255,255,255,222,251,123,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,165,148,82,202,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,173,181,99,140,189,247,
222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,156,243,132,144,214,218,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,107,173,0,128,66,136,0,128,140,177,255,255,255,255,41,165,
0,128,0,128,0,128,0,128,132,144,189,247,0,128,0,128,0,128,0,128,0,128,0,128,0,128,16,194,255,255,255,255,255,255,255,255,255,255,123,239,8,161,0,128,0,128,0,128,41,165,189,247,255,255,99,140,115,206,255,255,255,255,255,255,
255,255,255,255,57,231,198,152,0,128,0,128,0,128,165,148,24,227,255,255,255,255,255,255,255,255,82,202,33,132,0,128,0,128,66,136,148,210,255,255,115,206,99,140,255,255,255,255,222,251,198,152,198,152,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,90,235,33,132,156,243,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,173,181,99,140,189,247,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,
222,251,222,251,222,251,255,255,74,169,206,185,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,148,210,0,128,24,227,255,255,156,243,82,202,255,255,255,255,231,156,107,173,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
0,128,115,206,255,255,255,255,255,255,255,255,255,255,255,255,255,255,189,247,66,136,198,152,57,231,255,255,90,235,107,173,24,227,255,255,99,140,115,206,255,255,255,255,255,255,255,255,90,235,0,128,74,169,90,235,255,255,57,231,8,161,0,128,
156,243,255,255,255,255,239,189,0,128,49,198,189,247,189,247,148,210,140,177,255,255,115,206,99,140,255,255,255,255,140,177,66,136,123,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,148,210,99,140,255,255,222,251,222,251,
222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,173,181,99,140,189,247,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,82,202,41,165,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,239,189,99,140,255,255,255,255,255,255,255,255,255,255,255,255,231,156,107,173,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,128,115,206,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
239,189,33,132,189,247,255,255,255,255,255,255,255,255,255,255,255,255,99,140,115,206,255,255,255,255,255,255,255,255,107,173,132,144,222,251,255,255,255,255,255,255,222,251,66,136,173,181,255,255,189,247,33,132,239,189,255,255,255,255,255,255,255,255,
255,255,255,255,115,206,99,140,255,255,115,206,33,132,24,227,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,49,198,173,181,255,255,222,251,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,
222,251,255,255,173,181,99,140,189,247,255,255,255,255,255,255,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,255,255,156,243,231,156,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,181,214,0,128,239,189,222,251,
255,255,255,255,255,255,255,255,231,156,107,173,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,128,115,206,255,255,255,255,255,255,255,255,255,255,255,255,255,255,198,152,140,177,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
99,140,115,206,255,255,255,255,255,255,255,255,66,136,239,189,255,255,255,255,255,255,255,255,255,255,74,169,198,152,255,255,214,218,0,128,123,239,255,255,255,255,255,255,255,255,255,255,255,255,115,206,99,140,24,227,0,128,148,210,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,206,185,115,206,255,255,222,251,222,251,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,173,181,99,140,189,247,222,251,222,251,222,251,222,251,
222,251,255,255,222,251,222,251,222,251,222,251,255,255,222,251,255,255,255,255,99,140,222,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,239,189,0,128,99,140,49,198,222,251,255,255,255,255,231,156,33,132,99,140,99,140,99,140,
57,231,255,255,255,255,255,255,255,255,0,128,115,206,255,255,255,255,255,255,255,255,255,255,255,255,255,255,66,136,16,194,255,255,255,255,255,255,255,255,255,255,255,255,255,255,99,140,115,206,255,255,255,255,255,255,189,247,0,128,115,206,255,255,
255,255,255,255,255,255,255,255,239,189,99,140,255,255,49,198,33,132,255,255,255,255,255,255,255,255,255,255,255,255,255,255,115,206,99,140,99,140,173,181,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
173,181,148,210,214,218,66,136,99,140,123,239,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,239,189,33,132,33,132,33,132,33,132,33,132,33,132,41,165,189,247,222,251,222,251,222,251,255,255,74,169,33,132,140,177,
222,251,33,132,156,243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,90,235,107,173,0,128,8,161,222,251,255,255,231,156,8,161,247,222,247,222,247,222,189,247,255,255,255,255,255,255,255,255,0,128,115,206,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,33,132,49,198,255,255,255,255,255,255,255,255,255,255,255,255,255,255,99,140,115,206,255,255,255,255,255,255,189,247,0,128,115,206,255,255,255,255,255,255,255,255,255,255,206,185,132,144,255,255,49,198,33,132,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,115,206,99,140,239,189,66,136,123,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,206,185,115,206,222,251,90,235,90,235,222,251,222,251,222,251,222,251,
222,251,222,251,222,251,222,251,222,251,222,251,222,251,189,247,90,235,90,235,90,235,90,235,90,235,90,235,123,239,222,251,222,251,222,251,222,251,222,251,123,239,57,231,156,243,255,255,66,136,222,251,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,115,206,0,128,181,214,255,255,231,156,107,173,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,128,115,206,255,255,255,255,255,255,255,255,255,255,255,255,255,255,198,152,140,177,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,99,140,115,206,255,255,255,255,255,255,255,255,66,136,206,185,255,255,255,255,255,255,255,255,255,255,74,169,41,165,255,255,181,214,0,128,156,243,255,255,255,255,255,255,255,255,255,255,255,255,115,206,99,140,
222,251,231,156,231,156,222,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,49,198,173,181,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,
222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,156,243,231,156,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,189,247,0,128,148,210,255,255,
231,156,107,173,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,128,115,206,255,255,255,255,255,255,255,255,255,255,255,255,255,255,173,181,33,132,189,247,255,255,255,255,255,255,255,255,255,255,255,255,99,140,115,206,255,255,255,255,
255,255,255,255,41,165,132,144,222,251,255,255,255,255,255,255,189,247,33,132,49,198,255,255,156,243,0,128,239,189,255,255,255,255,255,255,255,255,255,255,255,255,115,206,99,140,255,255,123,239,66,136,206,185,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,148,210,132,144,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,
222,251,222,251,222,251,222,251,255,255,115,206,41,165,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,173,181,214,218,189,247,222,251,206,185,33,132,123,239,255,255,231,156,74,169,123,239,123,239,123,239,156,243,255,255,255,255,255,255,
255,255,0,128,115,206,255,255,255,255,255,255,255,255,255,255,255,255,255,255,156,243,33,132,198,152,247,222,123,239,24,227,74,169,247,222,255,255,99,140,16,194,123,239,123,239,123,239,222,251,57,231,0,128,74,169,57,231,189,247,247,222,165,148,
99,140,222,251,255,255,255,255,206,185,0,128,16,194,90,235,123,239,82,202,74,169,255,255,115,206,99,140,255,255,255,255,214,218,0,128,214,218,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,57,231,33,132,189,247,255,255,
222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,107,173,173,181,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,82,202,66,136,0,128,0,128,132,144,214,218,255,255,255,255,74,169,0,128,0,128,0,128,0,128,99,140,255,255,255,255,255,255,255,255,0,128,115,206,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,90,235,231,156,0,128,0,128,0,128,107,173,189,247,255,255,132,144,0,128,0,128,0,128,0,128,247,222,255,255,24,227,198,152,0,128,0,128,33,132,41,165,156,243,255,255,255,255,255,255,222,251,16,194,66,136,0,128,0,128,
132,144,181,214,255,255,115,206,99,140,255,255,255,255,255,255,206,185,66,136,189,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,165,148,115,206,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,
222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,156,243,132,144,214,218,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,123,239,
123,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,222,251,123,239,222,251,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,189,247,123,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,156,243,156,243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,41,165,41,165,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,
222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,82,202,165,148,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,222,251,132,144,24,227,255,255,222,251,222,251,255,255,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,222,251,222,251,222,251,222,251,
107,173,49,198,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,115,206,41,165,255,255,222,251,255,255,123,239,
247,222,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,156,243,214,218,255,255,222,251,255,255,148,210,198,152,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,231,156,206,185,222,251,123,239,99,140,74,169,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,
222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,247,222,66,136,49,198,255,255,24,227,66,136,24,227,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,123,239,66,136,82,202,189,247,239,189,156,243,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,
148,210,148,210,90,235,231,156,173,181,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,247,222,99,140,181,214,255,255,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,123,239,41,165,140,177,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,57,231,66,136,173,181,156,243,255,255,222,251,222,251,
222,251,222,251,222,251,255,255,82,202,74,169,222,251,222,251,222,251,222,251,222,251,222,251,222,251,255,255,148,210,165,148,239,189,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,123,239,231,156,198,152,90,235,222,251,222,251,222,251,222,251,222,251,255,255,173,181,99,140,189,247,222,251,222,251,
222,251,222,251,222,251,189,247,140,177,66,136,49,198,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,181,214,132,144,107,173,82,202,123,239,255,255,255,255,255,255,24,227,82,202,255,255,255,255,255,255,189,247,181,214,140,177,165,148,140,177,189,247,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,49,198,132,144,33,132,66,136,140,177,148,210,247,222,24,227,214,218,16,194,165,148,66,136,132,144,8,161,189,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,156,243,181,214,82,202,206,185,
140,177,107,173,173,181,16,194,148,210,90,235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,22};
Flowchart does compile ok, but worndering if this is the way to do it if large amounts of fixed data to store?
Martin

medelec35
Matrix Staff
Posts: 9521
Joined: Sat May 05, 2007 2:27 pm
Location: Northamptonshire, UK
Has thanked: 2585 times
Been thanked: 3815 times

Re: Storing and retrieving fixed data within program code.

Post by medelec35 »

If I add code to retrieve data I just get:

Code: Select all

3152: warning: excess elements in scalar initializer
So not really sure how I can store or retrieve lots of data?
Maybe the only way of retrieving one value at a time is within C code?
I'm also assuming it can't be done the normal variable route and have to be direct memory access?
If so not sure how to do that for AVR?
Martin

User avatar
LeighM
Matrix Staff
Posts: 2178
Joined: Tue Jan 17, 2012 10:07 am
Has thanked: 481 times
Been thanked: 699 times

Re: Storing and retrieving fixed data within program code.

Post by LeighM »

Hi Martin,
Try

Code: Select all

const unsigned char Image1[] = 

medelec35
Matrix Staff
Posts: 9521
Joined: Sat May 05, 2007 2:27 pm
Location: Northamptonshire, UK
Has thanked: 2585 times
Been thanked: 3815 times

Re: Storing and retrieving fixed data within program code.

Post by medelec35 »

Thanks, Leigh, that's great!
Flowchart now compiles OK.
Unfortunately, if I have

Code: Select all

FCV_BITMAPDATA = Image1[FCV_DATACOUNT];
to retrieve the data then whole program stops working.
Does not even start to work.
When the

Code: Select all

FCV_BITMAPDATA = Image1[FCV_DATACOUNT];
is disabled, rest of the program works.
Martin

User avatar
LeighM
Matrix Staff
Posts: 2178
Joined: Tue Jan 17, 2012 10:07 am
Has thanked: 481 times
Been thanked: 699 times

Re: Storing and retrieving fixed data within program code.

Post by LeighM »

OK, looks like it's not that simple on AVR then, needs a bit more code to read program memory :)
Have you tried the Lookup Table component?

Or try this ...

Code: Select all

FCV_BITMAPDATA = pgm_read_byte(&Image1[FCV_DATACOUNT]);

medelec35
Matrix Staff
Posts: 9521
Joined: Sat May 05, 2007 2:27 pm
Location: Northamptonshire, UK
Has thanked: 2585 times
Been thanked: 3815 times

Re: Storing and retrieving fixed data within program code.

Post by medelec35 »

Hi Leigh,
LeighM wrote:Have you tried the Lookup Table component?
Yes, Sorry I should have said that LUT's truncated the 11475 bytes to 7524 bytes
That's all the copy and paste allowed.
The LUT data window won't allow anymore typing either.
LeighM wrote:Or try this ...

Code: Select all

FCV_BITMAPDATA = pgm_read_byte(&Image1[FCV_DATACOUNT]);
Thanks for the suggestion.
Unfortunately the same as before.
Compiles OK but the program does not run at all for some strange memory conflicting reason?

In case it's important, the target device is Arduino UNO.
That could change, so want to try and keep as compatible as possible with microchip PIC series as well.

Help so far is really appreciated, Thank you.
Would it help If I sent the Flowchart?
Martin

mnf
Valued Contributor
Valued Contributor
Posts: 1208
Joined: Wed May 31, 2017 11:57 am
Has thanked: 70 times
Been thanked: 440 times

Re: Storing and retrieving fixed data within program code.

Post by mnf »

The data looks a good fit for some compression too? Even simple run length encoding would reduce the size (all those blocks of 255s)

Can you acts the data from C rather than using a LUT ?

Martin (2)

medelec35
Matrix Staff
Posts: 9521
Joined: Sat May 05, 2007 2:27 pm
Location: Northamptonshire, UK
Has thanked: 2585 times
Been thanked: 3815 times

Re: Storing and retrieving fixed data within program code.

Post by medelec35 »

Hi Martin,
I was accessing from C originally which causes program hangup.
The LUT was Leigh's suggestion which truncated the 11475 bytes to 7524 bytes.
Are you suggesting something like lzo?
I'm not sure how well it would integrate?
Thanks for the suggestions though
Martin

User avatar
LeighM
Matrix Staff
Posts: 2178
Joined: Tue Jan 17, 2012 10:07 am
Has thanked: 481 times
Been thanked: 699 times

Re: Storing and retrieving fixed data within program code.

Post by LeighM »

Shame about the LUT text limit, I think that's probably a Flowcode executable issue rather than the component,
Ben and Daniel might have a comment on that.
As a possible work around, maybe you could try a text editor and do a global replace 255 with -1
A few less characters :D
I'll try and have a further look regarding the AVR C tomorrow.
Leigh

medelec35
Matrix Staff
Posts: 9521
Joined: Sat May 05, 2007 2:27 pm
Location: Northamptonshire, UK
Has thanked: 2585 times
Been thanked: 3815 times

Re: Storing and retrieving fixed data within program code.

Post by medelec35 »

LeighM wrote:As a possible work around, maybe you could try a text editor and do a global replace 255 with -1
Yes that's a great idea, but unfortunately bytes are only increased to 9267. But still a good improvement never the less.
LeighM wrote: I'll try and have a further look regarding the AVR C tomorrow.
Thanks Leigh that will be great!
Martin

mnf
Valued Contributor
Valued Contributor
Posts: 1208
Joined: Wed May 31, 2017 11:57 am
Has thanked: 70 times
Been thanked: 440 times

Re: Storing and retrieving fixed data within program code.

Post by mnf »

lzo -Lempel–Ziv–Oberhumer? - yes something like but a lot simpler....

RLE - can be encoded in several ways. Here is an example using an escape character (I use 27 :-) ) followed by a count byte and then a data byte - this allows runs of up to 255 bytes to compress to 3 bytes - depending on your data the escape character needs to compress as 3 bytes (even for a single occurrence) There are other ways of doing this (for example if the same byte occurs twice then its a run and the count byte follows) It works very well for data with blocks of recurring bytes (bitmaps usually work well - text on the other hand - not so much)

I've cheated somewhat - decompressing the data is much (to my mind at least) simpler than compressing it.... You might want to run the compression on a PC - depending on the data - before compiling into a program and sending it to the Uno....

So a simple demo - this compresses 14 bytes of data (but depending on data it could be as much as 255 * 3 bytes) into 10 bytes...... (including a stop character at the end!)
rle.fcfx
(13.57 KiB) Downloaded 179 times
Martin

mnf
Valued Contributor
Valued Contributor
Posts: 1208
Joined: Wed May 31, 2017 11:57 am
Has thanked: 70 times
Been thanked: 440 times

Re: Storing and retrieving fixed data within program code.

Post by mnf »

Just created a simple compressor in C++ - and your data file (as above) compresses from 11476 bytes to 1700.....

Amending the above RLE - program it can decompress this (and the output looks AOK)

I needed to generate embedded C for the data - not enough RAM to save as an array in RAM.
RLE.zip
(3.19 KiB) Downloaded 180 times
(Updated - to remove an overzealous use of post-increment addressing !)

- note that this just outputs the data to the console (so use something like RLE.exe >test.txt) and it has a trailing ',' to the data block (and some stats) you'll need to delete before pasting into a LUT data block. I compiled it using the (free) version of Visual Studio 2017...

Martin

medelec35
Matrix Staff
Posts: 9521
Joined: Sat May 05, 2007 2:27 pm
Location: Northamptonshire, UK
Has thanked: 2585 times
Been thanked: 3815 times

Re: Storing and retrieving fixed data within program code.

Post by medelec35 »

Hi Martin,
Thank you for the examples.
So what I would need to do is add a macro ( convert C code within RLE.zip to Flowchart icons).
Then compress data using an external app, then use the compressed data within flowcode.
When read to use the compressed data, Run the compressed data in the new macro for the correct values?

After running it the data on the

Code: Select all

LUT = 27,6,124,125,6,5,27,4,18,0
the following is sent via

Code: Select all

UART = 124,124,124,124,124,124,125,6,5,18,18,18,18,0,
So the LUT is compressed data which has been compressed 1.4 times the original
Hmm That's very good.
Going to look into this more.
Martin

mnf
Valued Contributor
Valued Contributor
Posts: 1208
Joined: Wed May 31, 2017 11:57 am
Has thanked: 70 times
Been thanked: 440 times

Re: Storing and retrieving fixed data within program code.

Post by mnf »

No - the compression probably won't be run on the Arduino,

- and a slight glitch - actually it compresses to 3066 bytes! (It's been a while since I used C++)

Still - the code there (i'll update the above message) - would have to run on the PC - and generates the data to add to a Flowcode program LUT. The RLE decompresser above (RLE.fcfx) would do the stuff on the Arduino...

It 'would' be possible to do the compression on the Arduino - for example by streaming the data to it via the UART - but I'd probably just do it on the PC.

If it were me - I'd encode the image size into the LUT as well (Width x Height as the first 4 bytes?) rather than hardcoding it in.

Martin

mnf
Valued Contributor
Valued Contributor
Posts: 1208
Joined: Wed May 31, 2017 11:57 am
Has thanked: 70 times
Been thanked: 440 times

Re: Storing and retrieving fixed data within program code.

Post by mnf »

Here is a copy of the Arduino decompress routine with your bitmap (compressed) - I've only done a quick visual inspection of the output data but it looks (very) similar to the original (as it should be - it being a lossless compression technique)
rle.fcfx
(25.53 KiB) Downloaded 151 times
As is - it just outputs the data to the UART - can you test with your display.
Note that although the decompression does take some time - I suspect it will be quicker than reading the bitmap from the program memory - as the reads are (relatively) slow compared to reading data from RAM (and there are ~1/4 reads of the original data)

Martin

mnf
Valued Contributor
Valued Contributor
Posts: 1208
Joined: Wed May 31, 2017 11:57 am
Has thanked: 70 times
Been thanked: 440 times

Re: Storing and retrieving fixed data within program code.

Post by mnf »

A couple of ideas to improve the compression slightly:

Don't compress runs of length 2. Currently AA 'compresses' to Esc 2 A. This is easy to implement and doesn't require any changes to the decoder.

Analyse the data before compression and use the value with the lowest incidence of singletons (& runs of 2) as the escape character. This could then be stored as the first value in the LUT and would require a small change in the decoder (set the escape character as a first step)

More that this only really works for data needed on a serial fashion. Random access is impractical ..

Martin

medelec35
Matrix Staff
Posts: 9521
Joined: Sat May 05, 2007 2:27 pm
Location: Northamptonshire, UK
Has thanked: 2585 times
Been thanked: 3815 times

Re: Storing and retrieving fixed data within program code.

Post by medelec35 »

Thanks for your posts Martin, some very useful information.
As it's a menu system, speed will be of the essence.
I will try it all out though.
Will let you know how I get on.
Martin

mnf
Valued Contributor
Valued Contributor
Posts: 1208
Joined: Wed May 31, 2017 11:57 am
Has thanked: 70 times
Been thanked: 440 times

Re: Storing and retrieving fixed data within program code.

Post by mnf »

Should be possible to use for menus - just need to have an offset to the start of each element. As long as this doesn't fall into a compressed run then all should be well - just need a set of pointers to (or offsets) for each graphic. Compressing each element separately and then adding to the LUT is one way to do this.

Would be interested to hear how you get on - and if the 'large LUT read' error gets fixed too.

Martin

User avatar
LeighM
Matrix Staff
Posts: 2178
Joined: Tue Jan 17, 2012 10:07 am
Has thanked: 481 times
Been thanked: 699 times

Re: Storing and retrieving fixed data within program code.

Post by LeighM »

Looks like I missed a bit :oops:
For ..

Code: Select all

const unsigned char Image1[] = 
Try ..

Code: Select all

const unsigned char Image1[] PROGMEM = 

medelec35
Matrix Staff
Posts: 9521
Joined: Sat May 05, 2007 2:27 pm
Location: Northamptonshire, UK
Has thanked: 2585 times
Been thanked: 3815 times

Re: Storing and retrieving fixed data within program code.

Post by medelec35 »

Thanks Leigh,
As I'm currently using LUT, I will revisit this tomorrow and let you know how it goes.
Martin

medelec35
Matrix Staff
Posts: 9521
Joined: Sat May 05, 2007 2:27 pm
Location: Northamptonshire, UK
Has thanked: 2585 times
Been thanked: 3815 times

Re: Storing and retrieving fixed data within program code.

Post by medelec35 »

Hi Leigh,
LeighM wrote:Try ..

Code: Select all

const unsigned char Image1[] PROGMEM =
YES!
Brilliant!
That does indeed work.
Thank you. :)
Now to find a bigger capacity chip! :lol:
Martin

medelec35
Matrix Staff
Posts: 9521
Joined: Sat May 05, 2007 2:27 pm
Location: Northamptonshire, UK
Has thanked: 2585 times
Been thanked: 3815 times

Re: Storing and retrieving fixed data within program code.

Post by medelec35 »

Hi Leigh,
LeighM wrote:const unsigned char Image1[] PROGMEM =
Is there an equivalent for XC8 compiler please?
Martin

User avatar
LeighM
Matrix Staff
Posts: 2178
Joined: Tue Jan 17, 2012 10:07 am
Has thanked: 481 times
Been thanked: 699 times

Re: Storing and retrieving fixed data within program code.

Post by LeighM »

Hi Martin,

Code: Select all

const unsigned char Image1[] = 
Should be OK for XC8
Looks like reading should simply be

Code: Select all

FCV_BITMAPDATA = Image1[FCV_DATACOUNT];

medelec35
Matrix Staff
Posts: 9521
Joined: Sat May 05, 2007 2:27 pm
Location: Northamptonshire, UK
Has thanked: 2585 times
Been thanked: 3815 times

Re: Storing and retrieving fixed data within program code.

Post by medelec35 »

Hi Leigh,
LeighM wrote:

Code: Select all

const unsigned char Image1[] =
I have and can't find enough space error:

Code: Select all

Test1.c: 493: (1250) could not find space (15600 bytes) for variable _Image3
The target chip is 18F47K40.
Total Rom is 128KB so a quarter of the ROM of which it works on = ATMEGA328P
Martin

User avatar
LeighM
Matrix Staff
Posts: 2178
Joined: Tue Jan 17, 2012 10:07 am
Has thanked: 481 times
Been thanked: 699 times

Re: Storing and retrieving fixed data within program code.

Post by LeighM »

Ah right, I took the code from the Lookup component,
maybe looks then that for 8 bit PIC we are not ROMing the array,
will have to look into this further,
Doh! Harvard architecture processors!

Post Reply