PPM image integration
PPM image integration
PPM image integration
| Author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-05-11 09:46:12 +0200 |
| Committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-05-11 09:54:59 +0200 |
| Commit | 5af8d0e3d9aa116af326ca91b5956a4774a03960 (patch) |
|
-rw-r--r-- |
extern/ppm.lua | 47 | |
-rw-r--r-- |
main.c | 96 | |
-rw-r--r-- |
textures/test.ase | bin 0 B -> 728 B | |
-rw-r--r-- |
textures/test.ppm | 4 |
4 files changed, 142 insertions, 5 deletions
| diff --git a/extern/ppm.lua b/extern/ppm.lua | |||
| 1 | local spr = app.activeSprite |
||
| 2 | |||
| 3 | if not spr then |
||
| 4 | app.alert("No active sprite") |
||
| 5 | return |
||
| 6 | end |
||
| 7 | |||
| 8 | local path = app.fs.filePath(spr.filename) |
||
| 9 | local name = app.fs.fileTitle(spr.filename) |
||
| 10 | |||
| 11 | if path == "" then |
||
| 12 | path = app.fs.userDocsPath |
||
| 13 | end |
||
| 14 | |||
| 15 | local out_path = app.fs.joinPath(path, name .. ".ppm") |
||
| 16 | |||
| 17 | local img = Image(spr.width, spr.height, ColorMode.RGB) |
||
| 18 | |||
| 19 | -- Render visible layers / current frame into one image |
||
| 20 | img:drawSprite(spr, app.activeFrame.frameNumber) |
||
| 21 | |||
| 22 | local file = io.open(out_path, "wb") |
||
| 23 | |||
| 24 | if not file then |
||
| 25 | app.alert("Could not write file:\n" .. out_path) |
||
| 26 | return |
||
| 27 | end |
||
| 28 | |||
| 29 | -- PPM binary format, P6 |
||
| 30 | file:write("P6\n") |
||
| 31 | file:write(tostring(spr.width) .. " " .. tostring(spr.height) .. "\n") |
||
| 32 | file:write("255\n") |
||
| 33 | |||
| 34 | for y = 0, spr.height - 1 do |
||
| 35 | for x = 0, spr.width - 1 do |
||
| 36 | local pixel = img:getPixel(x, y) |
||
| 37 | local c = Color(pixel) |
||
| 38 | |||
| 39 | file:write(string.char(c.red)) |
||
| 40 | file:write(string.char(c.green)) |
||
| 41 | file:write(string.char(c.blue)) |
||
| 42 | end |
||
| 43 | end |
||
| 44 | |||
| 45 | file:close() |
||
| 46 | |||
| 47 | app.alert("Exported PPM:\n" .. out_path) |
||
| diff --git a/main.c b/main.c | |||
| ... | |||
| 20 | float x_offset; |
20 | float x_offset; |
| 21 | float y_offset; |
21 | float y_offset; |
| 22 | float cube_angle; |
22 | float cube_angle; |
| 23 | GLuint texture_id; |
||
| 23 | } Game; |
24 | } Game; |
| 24 | 25 | ||
| 25 | Game game = {0}; |
26 | Game game = {0}; |
| 26 | 27 | ||
| 28 | unsigned char* load_ppm(const char* filename, int* width, int* height) { |
||
| 29 | FILE* fp = fopen(filename, "rb"); |
||
| 30 | if (!fp) { |
||
| 31 | fprintf(stderr, "Unable to open file '%s'\n", filename); |
||
| 32 | return NULL; |
||
| 33 | } |
||
| 34 | |||
| 35 | char header[3]; |
||
| 36 | if (!fgets(header, sizeof(header), fp) || header[0] != 'P' || header[1] != '6') { |
||
| 37 | fprintf(stderr, "Invalid PPM file (must be P6)\n"); |
||
| 38 | fclose(fp); |
||
| 39 | return NULL; |
||
| 40 | } |
||
| 41 | |||
| 42 | // Skip comments |
||
| 43 | int c = getc(fp); |
||
| 44 | while (c == '#') { |
||
| 45 | while (getc(fp) != '\n'); |
||
| 46 | c = getc(fp); |
||
| 47 | } |
||
| 48 | ungetc(c, fp); |
||
| 49 | |||
| 50 | if (fscanf(fp, "%d %d", width, height) != 2) { |
||
| 51 | fprintf(stderr, "Invalid PPM dimensions\n"); |
||
| 52 | fclose(fp); |
||
| 53 | return NULL; |
||
| 54 | } |
||
| 55 | |||
| 56 | int max_val; |
||
| 57 | if (fscanf(fp, "%d", &max_val) != 1 || max_val != 255) { |
||
| 58 | fprintf(stderr, "Invalid PPM max value\n"); |
||
| 59 | fclose(fp); |
||
| 60 | return NULL; |
||
| 61 | } |
||
| 62 | |||
| 63 | while (getc(fp) != '\n'); // skip single whitespace |
||
| 64 | |||
| 65 | unsigned char* data = (unsigned char*)malloc((*width) * (*height) * 3); |
||
| 66 | if (!data) { |
||
| 67 | fprintf(stderr, "Memory allocation failed\n"); |
||
| 68 | fclose(fp); |
||
| 69 | return NULL; |
||
| 70 | } |
||
| 71 | |||
| 72 | if (fread(data, 1, (*width) * (*height) * 3, fp) != (size_t)((*width) * (*height) * 3)) { |
||
| 73 | fprintf(stderr, "Error reading PPM data\n"); |
||
| 74 | free(data); |
||
| 75 | fclose(fp); |
||
| 76 | return NULL; |
||
| 77 | } |
||
| 78 | |||
| 79 | fclose(fp); |
||
| 80 | return data; |
||
| 81 | } |
||
| 82 | |||
| 83 | void init_texture(void) { |
||
| 84 | int width, height; |
||
| 85 | unsigned char* data = load_ppm("textures/test.ppm", &width, &height); |
||
| 86 | if (!data) return; |
||
| 87 | |||
| 88 | glGenTextures(1, &game.texture_id); |
||
| 89 | glBindTexture(GL_TEXTURE_2D, game.texture_id); |
||
| 90 | |||
| 91 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); |
||
| 92 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
||
| 93 | |||
| 94 | glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data); |
||
| 95 | |||
| 96 | free(data); |
||
| 97 | } |
||
| 98 | |||
| 27 | void render_text(float x, float y, void* font, const char* string) { |
99 | void render_text(float x, float y, void* font, const char* string) { |
| 28 | glRasterPos2f(x, y); |
100 | glRasterPos2f(x, y); |
| 29 | for (const char* c = string; *c != '\0'; c++) { |
101 | for (const char* c = string; *c != '\0'; c++) { |
| ... | |||
| 32 | } |
104 | } |
| 33 | 105 | ||
| 34 | void draw_cube(void) { |
106 | void draw_cube(void) { |
| 107 | glEnable(GL_TEXTURE_2D); |
||
| 108 | glBindTexture(GL_TEXTURE_2D, game.texture_id); |
||
| 35 | glBegin(GL_QUADS); |
109 | glBegin(GL_QUADS); |
| 36 | // Front Face (White) |
110 | // Front Face (Textured) |
| 37 | glColor3f(1.0f, 1.0f, 1.0f); |
111 | glColor3f(1.0f, 1.0f, 1.0f); |
| 38 | glVertex3f(-0.1f, -0.1f, 0.1f); |
112 | |
| 39 | glVertex3f( 0.1f, -0.1f, 0.1f); |
113 | // Backface |
| 40 | glVertex3f( 0.1f, 0.1f, 0.1f); |
114 | glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.1f, -0.1f, 0.1f); |
| 41 | glVertex3f(-0.1f, 0.1f, 0.1f); |
115 | glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.1f, -0.1f, 0.1f); |
| 116 | glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.1f, 0.1f, 0.1f); |
||
| 117 | glTexCoord2f(0.0f, 1.0f); glVertex3f(-0.1f, 0.1f, 0.1f); |
||
| 118 | |||
| 119 | // Top face |
||
| 120 | glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.1f, 0.1f, -0.1f); |
||
| 121 | glTexCoord2f(1.0f, 0.0f); glVertex3f(-0.1f, 0.1f, 0.1f); |
||
| 122 | glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.1f, 0.1f, 0.1f); |
||
| 123 | glTexCoord2f(0.0f, 1.0f); glVertex3f( 0.1f, 0.1f, -0.1f); |
||
| 124 | glEnd(); |
||
| 125 | glDisable(GL_TEXTURE_2D); |
||
| 42 | 126 | ||
| 127 | glBegin(GL_QUADS); |
||
| 43 | // Back Face (Yellow) |
128 | // Back Face (Yellow) |
| 44 | glColor3f(1.0f, 1.0f, 0.0f); |
129 | glColor3f(1.0f, 1.0f, 0.0f); |
| 45 | glVertex3f(-0.1f, -0.1f, -0.1f); |
130 | glVertex3f(-0.1f, -0.1f, -0.1f); |
| ... | |||
| 226 | glutCreateWindow("floating"); |
311 | glutCreateWindow("floating"); |
| 227 | 312 | ||
| 228 | init_display(); |
313 | init_display(); |
| 314 | init_texture(); |
||
| 229 | 315 | ||
| 230 | game.last_time = glutGet(GLUT_ELAPSED_TIME); |
316 | game.last_time = glutGet(GLUT_ELAPSED_TIME); |
| 231 | 317 | ||
| ... | |||
| diff --git a/textures/test.ase b/textures/test.ase |
| diff --git a/textures/test.ppm b/textures/test.ppm | |||
| 1 | P6 |
||
| 2 | 64 64 |
||
| 3 | 255 |
||
| 4 | ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&c›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿRK$c›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿc›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&c›ÿc›ÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ÿÿÿÿÿÿßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq&ßq& |
||