type = fancymenu_layout

layout-meta {
  identifier = title_screen
  render_custom_elements_behind_vanilla = false
  last_edited_time = 0
  is_enabled = true
  randommode = false
  randomgroup = 1
  randomonlyfirsttime = false
  layout_index = 0
}

layout_action_executable_blocks {
  open_screen_executable_block_identifier = 0eac517c-d9ef-415d-8f20-5e5613919af9-toz
  [executable_action_instance:85504e9c-9289-45d5-953a-720496d2d7a9-toz][action_type:menu_audio_intro_start] = toz_menu_music:sweden.ogg:30
  [executable_block:0eac517c-d9ef-415d-8f20-5e5613919af9-toz][type:generic] = [executables:85504e9c-9289-45d5-953a-720496d2d7a9-toz;]
}

menu_background {
  instance_identifier = da38f4e5-3ce2-45b5-a90d-0c90e27ad6b4-toz
  background_type = glsl
  show_background = true
  inline_shader_source = // Teachings of Zeta - title background, image pass: the scenes are drawn by the buffer passes A-D%%!serialized_property_newline!%%// (iChannel0-3, one or two scenes each, see scenes/main.glsl); per pixel exactly one of them drew%%!serialized_property_newline!%%// (alpha > 0 - FancyMenu scales every pass's alpha with the fade-in opacity, undrawn pixels stay 0).%%!serialized_property_newline!%%// Generated by modpack_pipeline/menu/gen_menu_scenes.py - edit scenes/composite.glsl.%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec4 fromBuffer(sampler2D b, vec2 uv) {%%!serialized_property_newline!%%    ivec2 size = textureSize(b, 0);%%!serialized_property_newline!%%    if (size.x < 2) return vec4(0.0);                                       // channel not routed%%!serialized_property_newline!%%    return texelFetch(b, clamp(ivec2(uv * vec2(size)), ivec2(0), size - 1), 0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%void mainImage(out vec4 fragColor, in vec2 fragCoord) {%%!serialized_property_newline!%%    vec2 uv = fragCoord / iResolution.xy;%%!serialized_property_newline!%%    vec4 c = fromBuffer(iChannel0, uv);%%!serialized_property_newline!%%    if (c.a <= 0.0) c = fromBuffer(iChannel1, uv);%%!serialized_property_newline!%%    if (c.a <= 0.0) c = fromBuffer(iChannel2, uv);%%!serialized_property_newline!%%    if (c.a <= 0.0) c = fromBuffer(iChannel3, uv);%%!serialized_property_newline!%%    fragColor = c.a <= 0.0 ? vec4(0.10, 0.08, 0.16, 1.0) : vec4(c.rgb, 1.0);  // nothing drawn yet%%!serialized_property_newline!%%}%%!serialized_property_newline!%%
  ichannel_0_source = [source:local]/config/fancymenu/assets/toz/atlas.png
  ichannel_1_source = [source:local]/config/fancymenu/assets/toz/music/envelope.png
  image_ichannel0_input = buffer_a
  image_ichannel1_input = buffer_b
  image_ichannel2_input = buffer_c
  image_ichannel3_input = buffer_d
  buffer_a_inline_source = // Teachings of Zeta - title background buffer pass: sweden (playlist slot 0 of 7)%%!serialized_property_newline!%%// Generated by modpack_pipeline/menu/gen_menu_scenes.py + gen_menu_art.py from scenes/*.glsl -%%!serialized_property_newline!%%// edit those, then re-run the generators.%%!serialized_property_newline!%%%%!serialized_property_newline!%%// generated by modpack_pipeline/menu/gen_menu_art.py - atlas 384x517%%!serialized_property_newline!%%const ivec4 R_MOUNT = ivec4(0, 2, 384, 44); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_HILLS = ivec4(0, 47, 384, 30); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_VIADUCT = ivec4(0, 78, 384, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_TOWN_FAR = ivec4(0, 103, 384, 38); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_TOWN_NEAR = ivec4(0, 142, 384, 30); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_QUAY = ivec4(0, 173, 384, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_SHIP_BIG = ivec4(0, 198, 76, 32); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_SHIP_SMALL = ivec4(153, 198, 41, 17); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_LOCO = ivec4(236, 198, 28, 17); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_CAR = ivec4(293, 198, 22, 15); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_MILL = ivec4(338, 198, 14, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_BLADES = ivec4(0, 231, 30, 30); // 6 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_BIG = ivec4(0, 262, 70, 70); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_MID = ivec4(0, 333, 46, 46); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_SMALL = ivec4(185, 333, 34, 34); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_A = ivec4(0, 380, 64, 15); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_B = ivec4(65, 380, 46, 12); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_C = ivec4(112, 380, 30, 9); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_HARBOR = ivec4(0, 396, 384, 40); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_PIER = ivec4(0, 437, 384, 22); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_LIGHTHOUSE = ivec4(0, 460, 20, 56); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_MAST = ivec4(21, 460, 12, 50); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_STEAMBOAT = ivec4(34, 460, 52, 24); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_PLANE = ivec4(139, 460, 24, 13); // 2 frame(s)%%!serialized_property_newline!%%// chimney tops: x in strip, y above strip bottom, size%%!serialized_property_newline!%%const int N_CHIM_NEAR = 5;%%!serialized_property_newline!%%const vec3 CHIM_NEAR[5] = vec3[5](vec3(4.0, 20.0, 1.0), vec3(124.0, 26.0, 1.0), vec3(188.0, 21.0, 1.0), vec3(231.0, 30.0, 1.0), vec3(317.0, 24.0, 1.0));%%!serialized_property_newline!%%const int N_CHIM_FAR = 6;%%!serialized_property_newline!%%const vec3 CHIM_FAR[6] = vec3[6](vec3(156.0, 18.0, 1.0), vec3(166.0, 20.0, 1.0), vec3(203.0, 19.0, 1.0), vec3(355.0, 27.0, 1.0), vec3(363.0, 25.0, 1.0), vec3(377.0, 22.0, 1.0));%%!serialized_property_newline!%%const int N_CHIM_HARBOR = 2;%%!serialized_property_newline!%%const vec3 CHIM_HARBOR[2] = vec3[2](vec3(310.5, 31.0, 1.6), vec3(321.5, 31.0, 1.6));%%!serialized_property_newline!%%const float STRIP_W = 384.0;%%!serialized_property_newline!%%const vec2 MILL = vec2(46.0, 17.0); // windmill base in the hills strip%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ common (all scenes)%%!serialized_property_newline!%%// Every scene draws on a PIXW px wide virtual grid (p = virtual pixel, y up, 0 at the bottom; H = height)%%!serialized_property_newline!%%// and gets the music as a Music value: see music() at the end of this file.%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define PIXW 320.0%%!serialized_property_newline!%%#define PI 3.14159265%%!serialized_property_newline!%%%%!serialized_property_newline!%%// FancyMenu variables (set every frame by Tickers in the title layout), uploaded as fmVarFloat_<name>%%!serialized_property_newline!%%uniform float fmVarFloat_toz_music_pos;     // seconds into the current track; -1 = addon missing%%!serialized_property_newline!%%uniform float fmVarFloat_toz_music_dur;     // length of the current track; 0 while it is loading%%!serialized_property_newline!%%uniform float fmVarFloat_toz_music_track;   // playlist index of the current track%%!serialized_property_newline!%%uniform int fmVarBool_toz_music_playing;     // 1 while the track plays (0 paused / stopped)%%!serialized_property_newline!%%%%!serialized_property_newline!%%float H;            // virtual height%%!serialized_property_newline!%%bool TOP_FIRST;     // atlas row 0 is the image's top row%%!serialized_property_newline!%%ivec2 ATLAS_SIZE;%%!serialized_property_newline!%%%%!serialized_property_newline!%%float hash11(float p) { p = fract(p * 0.1031); p *= p + 33.33; p *= p + p; return fract(p); }%%!serialized_property_newline!%%float hash21(vec2 p) { vec3 p3 = fract(vec3(p.xyx) * 0.1031); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.x + p3.y) * p3.z); }%%!serialized_property_newline!%%vec2 hash22(vec2 p) { vec3 p3 = fract(vec3(p.xyx) * vec3(0.1031, 0.1030, 0.0973)); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.xx + p3.yz) * p3.zy); }%%!serialized_property_newline!%%vec3 hexrgb(int h) { return vec3(float((h >> 16) & 255), float((h >> 8) & 255), float(h & 255)) / 255.0; }%%!serialized_property_newline!%%float vnoise(float x) { float i = floor(x), f = fract(x); return mix(hash11(i), hash11(i + 1.0), f * f * (3.0 - 2.0 * f)); }%%!serialized_property_newline!%%float vnoise2(vec2 p) {%%!serialized_property_newline!%%    vec2 i = floor(p), f = fract(p);%%!serialized_property_newline!%%    vec2 u = f * f * (3.0 - 2.0 * f);%%!serialized_property_newline!%%    return mix(mix(hash21(i), hash21(i + vec2(1.0, 0.0)), u.x), mix(hash21(i + vec2(0.0, 1.0)), hash21(i + 1.0), u.x), u.y);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// pixel-stepped ridge line: height of a silhouette at column x%%!serialized_property_newline!%%float ridge(float x, float seed, float amp, float scale) {%%!serialized_property_newline!%%    return floor(amp * (0.55 * vnoise(x / scale + seed) + 0.3 * vnoise(x / (scale * 0.37) + seed * 3.1) + 0.15 * vnoise(x / (scale * 0.13) + seed * 7.7)));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// 4x4 ordered dither threshold (0..1): the pixel-art way to blend two flat colours%%!serialized_property_newline!%%float bayer4(vec2 p) {%%!serialized_property_newline!%%    const int M[16] = int[16](0, 8, 2, 10, 12, 4, 14, 6, 3, 11, 1, 9, 15, 7, 13, 5);%%!serialized_property_newline!%%    int x = int(mod(p.x, 4.0)), y = int(mod(p.y, 4.0));%%!serialized_property_newline!%%    return (float(M[y * 4 + x]) + 0.5) / 16.0;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec3 dmix(vec3 a, vec3 b, float f, vec2 p) { return f > bayer4(p) ? b : a; }%%!serialized_property_newline!%%// stepped vertical gradient through a 4-colour palette (h 0..1 = c0..c3): 4 flat shades between each%%!serialized_property_newline!%%// pair (12 bands), joined by a thin ordered-dither seam instead of a wide checkerboard%%!serialized_property_newline!%%vec3 bands(vec3 c0, vec3 c1, vec3 c2, vec3 c3, float h, vec2 p) {%%!serialized_property_newline!%%    float f = clamp(h, 0.0, 0.999) * 12.0;%%!serialized_property_newline!%%    float level = clamp(floor(f + (bayer4(p) - 0.5) * 0.5), 0.0, 11.0);%%!serialized_property_newline!%%    float x = (level + 0.5) / 4.0;                                      // 0..3 across the palette%%!serialized_property_newline!%%    return x < 1.0 ? mix(c0, c1, x) : (x < 2.0 ? mix(c1, c2, x - 1.0) : mix(c2, c3, x - 2.0));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%float luma(vec3 c) { return dot(c, vec3(0.30, 0.59, 0.11)); }%%!serialized_property_newline!%%vec2 rot(vec2 v, float a) { float c = cos(a), s = sin(a); return vec2(c * v.x - s * v.y, s * v.x + c * v.y); }%%!serialized_property_newline!%%// distance from the pixel centre to segment a-b (.x) and how far along it the closest point is (.y, 0..1)%%!serialized_property_newline!%%vec2 segment(vec2 p, vec2 a, vec2 b) {%%!serialized_property_newline!%%    vec2 pa = p + 0.5 - a, ba = b - a;%%!serialized_property_newline!%%    float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);%%!serialized_property_newline!%%    return vec2(length(pa - ba * h), h);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// 3x5 pixel glyphs: 0-9 + x = pi sigma root; l = pixel inside the glyph, x from the left, y from the top%%!serialized_property_newline!%%const int GLYPH[16] = int[16](31599, 11415, 29671, 29647, 23497, 31183, 31215, 29330, 31727, 31695,%%!serialized_property_newline!%%                              1488, 2728, 3640, 31597, 30887, 4714);%%!serialized_property_newline!%%bool glyph(int g, vec2 l) {%%!serialized_property_newline!%%    if (l.x < 0.0 || l.y < 0.0 || l.x > 2.0 || l.y > 4.0) return false;%%!serialized_property_newline!%%    return ((GLYPH[g & 15] >> ((4 - int(l.y)) * 3 + (2 - int(l.x)))) & 1) == 1;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// bitmap sprite of up to 16 columns: rows[] top to bottom, bit (w-1) = leftmost pixel%%!serialized_property_newline!%%bool bitAt(int row, int w, float x) { return x >= 0.0 && x < float(w) && ((row >> (w - 1 - int(x))) & 1) == 1; }%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ atlas access (iChannel0)%%!serialized_property_newline!%%vec4 texel(int x, int y) {%%!serialized_property_newline!%%    int ty = TOP_FIRST ? y : ATLAS_SIZE.y - 1 - y;%%!serialized_property_newline!%%    return texelFetch(iChannel0, ivec2(x, ty), 0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// local: pixel inside the sprite, y counted up from the sprite's bottom row%%!serialized_property_newline!%%vec4 sprite(ivec4 r, int frame, vec2 local) {%%!serialized_property_newline!%%    if (local.x < 0.0 || local.y < 0.0 || local.x >= float(r.z) || local.y >= float(r.w)) return vec4(0.0);%%!serialized_property_newline!%%    return texel(r.x + frame * r.z + int(local.x), r.y + r.w - 1 - int(local.y));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// sprites face right; `left` mirrors them, so nothing ever flies backwards%%!serialized_property_newline!%%vec4 spriteDir(ivec4 r, int frame, vec2 local, bool left) {%%!serialized_property_newline!%%    if (left) local.x = float(r.z) - 1.0 - local.x;%%!serialized_property_newline!%%    return sprite(r, frame, local);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// a biplane with its bottom-left at `pos`, propeller spinning, puffs of exhaust trailing behind;%%!serialized_property_newline!%%// .a = coverage (1 for the plane, less for the fading puffs)%%!serialized_property_newline!%%vec4 biplane(vec2 p, vec2 pos, bool left, float t) {%%!serialized_property_newline!%%    vec2 o = floor(pos);%%!serialized_property_newline!%%    vec4 c = spriteDir(R_PLANE, int(mod(t * 16.0, 2.0)), p - o, left);%%!serialized_property_newline!%%    if (c.a > 0.5) return vec4(c.rgb, 1.0);%%!serialized_property_newline!%%    float back = left ? p.x - (o.x + float(R_PLANE.z)) : o.x - p.x;              // distance behind the tail%%!serialized_property_newline!%%    if (back >= 1.0 && back < 22.0 && p.y == o.y + 6.0 + floor(back / 11.0) && mod(back + floor(t * 12.0), 5.0) < 2.0)%%!serialized_property_newline!%%        return vec4(vec3(0.96, 0.96, 0.98), 0.9 - back / 24.0);%%!serialized_property_newline!%%    return vec4(0.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec4 strip(ivec4 r, float x, float ly) {%%!serialized_property_newline!%%    if (ly < 0.0 || ly >= float(r.w)) return vec4(0.0);%%!serialized_property_newline!%%    return texel(r.x + int(mod(x, STRIP_W)), r.y + r.w - 1 - int(ly));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%bool isKey(vec4 c, vec3 k) { return c.a > 0.5 && all(lessThan(abs(c.rgb - k), vec3(0.02))); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ music (iChannel1 = envelope.png)%%!serialized_property_newline!%%struct Music {%%!serialized_property_newline!%%    float tension;  // the song's arc, 0..1 (seconds)%%!serialized_property_newline!%%    float energy;   // loudness of the moment, 0..1%%!serialized_property_newline!%%    float accent;   // hits / note onsets, jumps up and decays in ~0.2 s%%!serialized_property_newline!%%    float hit;      // seconds since the last big hit (>= HIT_NONE: none lately) - for longer events%%!serialized_property_newline!%%    float hitSeed;  // differs per big hit: picks where/how its event happens%%!serialized_property_newline!%%    float drive;    // music time: runs 0.3x (calm) .. 1.7x (climax) real time, never jumps%%!serialized_property_newline!%%    float pos;      // seconds into the track%%!serialized_property_newline!%%    float prog;     // 0..1 through the track%%!serialized_property_newline!%%    bool live;      // false: no position (addon missing) - a slow synthetic swell instead%%!serialized_property_newline!%%    bool playing;   // false while paused: the song's state holds, hits and their events stay away%%!serialized_property_newline!%%};%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define HIT_NONE 2.5%%!serialized_property_newline!%%%%!serialized_property_newline!%%ivec2 ENV_SIZE;%%!serialized_property_newline!%%bool ENV_TOP;%%!serialized_property_newline!%%vec4 envTexel(int x, int y) {%%!serialized_property_newline!%%    int ty = ENV_TOP ? y : ENV_SIZE.y - 1 - y;%%!serialized_property_newline!%%    return texelFetch(iChannel1, ivec2(x, ty), 0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec4 envAt(int row0, int i) { return envTexel(i % ENV_SIZE.x, row0 + i / ENV_SIZE.x); }%%!serialized_property_newline!%%int u8(float v) { return int(v * 255.0 + 0.5); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%Music synthetic(float t) {%%!serialized_property_newline!%%    float s = 0.5 + 0.5 * sin(t * 0.07);%%!serialized_property_newline!%%    return Music(0.35 + 0.3 * s, 0.4 + 0.3 * s, 0.0, 9.0, 0.0, t, 0.0, fract(t / 240.0), false, true);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%Music music(int track, float t) {%%!serialized_property_newline!%%    ENV_SIZE = textureSize(iChannel1, 0);%%!serialized_property_newline!%%    float pos = fmVarFloat_toz_music_pos;%%!serialized_property_newline!%%    if (pos < 0.0 || ENV_SIZE.x < 8) return synthetic(t);%%!serialized_property_newline!%%    vec4 mark = texelFetch(iChannel1, ivec2(0, 0), 0);%%!serialized_property_newline!%%    ENV_TOP = mark.r > 0.5 && mark.g < 0.5;%%!serialized_property_newline!%%    vec4 h = envTexel(1 + track, 0);%%!serialized_property_newline!%%    int row0 = u8(h.r), n = u8(h.g) * 256 + u8(h.b);%%!serialized_property_newline!%%    float rate = float(u8(ENV_TOP ? mark.b : envTexel(0, 0).b));%%!serialized_property_newline!%%    if (row0 < 1 || n < 2 || rate < 1.0) return synthetic(t);%%!serialized_property_newline!%%    float fi = clamp(pos * rate, 0.0, float(n) - 1.001);%%!serialized_property_newline!%%    int i = int(fi);%%!serialized_property_newline!%%    float f = fract(fi);%%!serialized_property_newline!%%    vec3 v = mix(envAt(row0, i).rgb, envAt(row0, i + 1).rgb, f);%%!serialized_property_newline!%%    int drow = row0 + (n + ENV_SIZE.x - 1) / ENV_SIZE.x;%%!serialized_property_newline!%%    vec4 da = envAt(drow, i), db = envAt(drow, i + 1);%%!serialized_property_newline!%%    float drive = mix(float(u8(da.r) * 256 + u8(da.g)), float(u8(db.r) * 256 + u8(db.g)), f) * 0.01;%%!serialized_property_newline!%%    int age = u8(da.b);                                   // centiseconds since the last big hit%%!serialized_property_newline!%%    float hit = age >= 250 ? 9.0 : float(age) * 0.01 + f / rate;%%!serialized_property_newline!%%    float dur = fmVarFloat_toz_music_dur > 0.0 ? fmVarFloat_toz_music_dur : float(n) / rate;%%!serialized_property_newline!%%    // paused: the position stands still, so a hit (flash, firework, lightning...) would freeze mid-air -%%!serialized_property_newline!%%    // keep the song's state (tension, energy, drive) and drop the hits%%!serialized_property_newline!%%    if (fmVarBool_toz_music_playing == 0) return Music(v.r, v.g, 0.0, 9.0, 0.0, drive, pos, clamp(pos / dur, 0.0, 1.0), true, false);%%!serialized_property_newline!%%    return Music(v.r, v.g, v.b, hit, floor((pos - hit) * 4.0 + 0.5), drive, pos, clamp(pos / dur, 0.0, 1.0), true, true);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%%%!serialized_property_newline!%%const int N_TRACKS = 7;%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ Sweden: "Zeta by day"%%!serialized_property_newline!%%// The pack's home scene: canal town in daylight under a high sun (sprites from atlas.png, painted in%%!serialized_property_newline!%%// dusk purples and re-graded into daylight here), airships and biplanes in the sky. Music: clouds,%%!serialized_property_newline!%%// airships, planes, windmill, birds and smoke run on music time; the sun's halo grows with the tension and a ring leaves it on every hit; the light%%!serialized_property_newline!%%// turns golden as the song swells.%%!serialized_property_newline!%%%%!serialized_property_newline!%%const vec3 SW_HAZE = vec3(0.722, 0.839, 0.925);   // #b8d6ec%%!serialized_property_newline!%%%%!serialized_property_newline!%%// the landscape strips are painted in dusk purples: re-grade them into daylight%%!serialized_property_newline!%%// (desaturate, lift, cool slightly) and push distant layers into the haze%%!serialized_property_newline!%%vec3 swDay(vec3 c, float depth) {%%!serialized_property_newline!%%    float l = luma(c);%%!serialized_property_newline!%%    vec3 g = mix(c, vec3(l), 0.65) * 2.1 + vec3(0.05, 0.08, 0.10);%%!serialized_property_newline!%%    g = clamp(g * vec3(0.92, 1.0, 1.08), 0.0, 1.0);%%!serialized_property_newline!%%    return mix(g, SW_HAZE, depth);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// window / lamp key colours: daytime = mostly sky reflections, lamps off%%!serialized_property_newline!%%vec3 swKeys(vec4 c, vec2 world, float t, float depth) {%%!serialized_property_newline!%%    if (isKey(c, vec3(1.0, 0.0, 1.0))) {%%!serialized_property_newline!%%        vec2 cell = floor(world / vec2(2.0, 3.0));%%!serialized_property_newline!%%        float id = hash21(cell + depth * 17.0);%%!serialized_property_newline!%%        float glint = step(0.985, hash21(cell + floor(t / (6.0 + id * 9.0)) * 3.1));%%!serialized_property_newline!%%        vec3 glass = mix(hexrgb(0x3e5468), hexrgb(0x5e7a92), step(0.6, id));%%!serialized_property_newline!%%        return mix(mix(glass, SW_HAZE, depth), hexrgb(0xf4fbff), glint);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    if (isKey(c, vec3(1.0, 1.0, 0.0))) return mix(hexrgb(0x8a96a6), SW_HAZE, depth);%%!serialized_property_newline!%%    return c.rgb;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 swSky(vec2 p, float horizon, Music m) {%%!serialized_property_newline!%%    const int NB = 9;%%!serialized_property_newline!%%    const int BAND[9] = int[9](0xdcf0f8, 0xc6e6f6, 0xaedaf2, 0x96cced, 0x7fbde6, 0x6aaddf, 0x589cd6, 0x488ac9, 0x3b78ba);%%!serialized_property_newline!%%    float h = (p.y - horizon) / max(H - horizon, 1.0);%%!serialized_property_newline!%%    float f = clamp(h, 0.0, 0.999) * float(NB);%%!serialized_property_newline!%%    f = pow(f / float(NB), 0.9) * float(NB);%%!serialized_property_newline!%%    int i = int(f);%%!serialized_property_newline!%%    float fr = fract(f) * (H - horizon) / float(NB);%%!serialized_property_newline!%%    if (fr < 1.0 && mod(p.x + p.y, 2.0) < 1.0 && i > 0) i -= 1;      // one checker row between bands%%!serialized_property_newline!%%    vec3 col = hexrgb(BAND[clamp(i, 0, NB - 1)]);%%!serialized_property_newline!%%    // high sun: the stepped glow grows with the tension, a ring rides out from it on every hit%%!serialized_property_newline!%%    vec2 sc = vec2(0.76 * PIXW, H - 30.0);%%!serialized_property_newline!%%    float r = length(p + 0.5 - sc);%%!serialized_property_newline!%%    float g1 = 16.0 + 5.0 * m.tension, g2 = 22.0 + 9.0 * m.tension;%%!serialized_property_newline!%%    if (r < 11.0) col = r < 9.0 ? hexrgb(0xfffdf0) : hexrgb(0xfff2b8);%%!serialized_property_newline!%%    else if (r < g1) col = mix(col, hexrgb(0xfff8d8), 0.55);%%!serialized_property_newline!%%    else if (r < g2 && mod(p.x + p.y, 2.0) < 1.0) col = mix(col, hexrgb(0xfff8d8), 0.35);%%!serialized_property_newline!%%    float ring = 13.0 + 26.0 * (1.0 - m.accent);%%!serialized_property_newline!%%    if (m.accent > 0.08 && abs(r - ring) < 0.8) col = dmix(col, hexrgb(0xfffbe6), m.accent * 1.3, p);%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// the town strips are drawn in daylight colours already (gen_menu_art.town_strip): the near town shows%%!serialized_property_newline!%%// as it is, the far one sits in the haze%%!serialized_property_newline!%%vec3 swNearTown(vec3 c) { return c; }%%!serialized_property_newline!%%vec3 swFarTown(vec3 c) { return mix(mix(c, vec3(luma(c)), 0.25), SW_HAZE, 0.34); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%// white cumulus from the cloud sprites (grey-blue bodies, bright tops)%%!serialized_property_newline!%%vec3 swCloud(vec3 c) {%%!serialized_property_newline!%%    return mix(hexrgb(0xd2e2f0), hexrgb(0xffffff), smoothstep(0.42, 0.62, luma(c)));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec4 swSmoke(vec2 p, float t, vec3 chim, float offx, float baseY, float depth) {%%!serialized_property_newline!%%    vec4 acc = vec4(0.0);%%!serialized_property_newline!%%    for (int w = -1; w <= 1; w++) {%%!serialized_property_newline!%%        vec2 src = vec2(chim.x - offx + float(w) * STRIP_W, baseY + chim.y);%%!serialized_property_newline!%%        if (abs(p.x - src.x) > 40.0) continue;%%!serialized_property_newline!%%        for (int k = 0; k < 5; k++) {%%!serialized_property_newline!%%            float age = fract(t * (0.07 + 0.02 * chim.z) + float(k) / 5.0 + hash11(chim.x));%%!serialized_property_newline!%%            vec2 c = src + vec2(age * 16.0 + sin(age * 5.0 + chim.x) * 1.5, age * 20.0 * (0.6 + 0.4 * chim.z));%%!serialized_property_newline!%%            float rad = 0.8 + age * (1.6 + 1.6 * chim.z);%%!serialized_property_newline!%%            vec2 d = p + 0.5 - c;%%!serialized_property_newline!%%            if (dot(d, d) < rad * rad) {%%!serialized_property_newline!%%                if (age > 0.55 && hash21(p + floor(t * 6.0)) < (age - 0.55) * 2.2) continue;   // dissolve%%!serialized_property_newline!%%                vec3 sc = d.y > rad * 0.25 ? hexrgb(0xf4f6f8) : hexrgb(0xb4bcc8);%%!serialized_property_newline!%%                acc = vec4(mix(sc, SW_HAZE, depth * 0.6), 1.0);%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return acc;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%float SW_QUAY_Y, SW_NEAR_Y, SW_FAR_Y, SW_VIA_Y, SW_HILL_Y, SW_MOUNT_Y, SW_HORIZON;%%!serialized_property_newline!%%%%!serialized_property_newline!%%// t: music time (clouds, ships, mill, smoke); tr: real time (the train keeps its timetable)%%!serialized_property_newline!%%vec3 swScene(vec2 p, float t, float tr, bool refl, Music m) {%%!serialized_property_newline!%%    vec3 col = swSky(p, SW_HORIZON, m);%%!serialized_property_newline!%%    vec4 c;%%!serialized_property_newline!%%%%!serialized_property_newline!%%    for (int k = 0; k < 3; k++) {                                      // clouds drift, wrap%%!serialized_property_newline!%%        ivec4 r = k == 0 ? R_CLOUD_A : (k == 1 ? R_CLOUD_B : R_CLOUD_C);%%!serialized_property_newline!%%        float span = PIXW + float(r.z) + 40.0;%%!serialized_property_newline!%%        float x0 = mod(float(k) * 131.0 + t * (1.2 + 0.5 * float(k)), span) - float(r.z) - 20.0;%%!serialized_property_newline!%%        float y0 = H - 46.0 - float(k) * 17.0 + float(k == 2) * 10.0;%%!serialized_property_newline!%%        c = sprite(r, 0, p - vec2(floor(x0), floor(y0)));%%!serialized_property_newline!%%        if (c.a > 0.5) col = swCloud(c.rgb);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    {                                                                  // far airship drifting left, nose first%%!serialized_property_newline!%%        float span = PIXW + 80.0;%%!serialized_property_newline!%%        float x0 = PIXW + 40.0 - mod(t * 2.2 + 60.0, span);%%!serialized_property_newline!%%        c = spriteDir(R_SHIP_SMALL, int(mod(t * 8.0, 2.0)), p - vec2(floor(x0), floor(H - 40.0 + sin(t * 0.5) * 1.0)), true);%%!serialized_property_newline!%%        if (c.a > 0.5) col = mix(swKeys(c, p, t, 0.5), SW_HAZE, 0.45);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    c = strip(R_MOUNT, p.x + 40.0, p.y - SW_MOUNT_Y);%%!serialized_property_newline!%%    if (c.a > 0.5) col = swDay(c.rgb, 0.6);%%!serialized_property_newline!%%    {                                                                  // big airship drifting right%%!serialized_property_newline!%%        float span = PIXW + 160.0;%%!serialized_property_newline!%%        float x0 = mod(t * 4.0 + 30.0, span) - 80.0;%%!serialized_property_newline!%%        float y0 = floor(H - 78.0 + sin(t * 0.7) * 1.5);%%!serialized_property_newline!%%        c = sprite(R_SHIP_BIG, int(mod(t * 10.0, 2.0)), p - vec2(floor(x0), y0));%%!serialized_property_newline!%%        if (c.a > 0.5) col = swKeys(c, p, t, 0.0);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // two biplanes on their rounds near the airships: one high going right, one lower going left%%!serialized_property_newline!%%    for (int k = 0; k < 2; k++) {%%!serialized_property_newline!%%        bool left = k == 1;%%!serialized_property_newline!%%        float span = PIXW + 220.0;%%!serialized_property_newline!%%        float run = mod(t * (k == 0 ? 15.0 : 12.0) + float(k) * 190.0, span);%%!serialized_property_newline!%%        float x0 = left ? PIXW + 40.0 - run : run - 40.0;%%!serialized_property_newline!%%        float y0 = H - (k == 0 ? 60.0 : 96.0) + sin(t * 0.9 + float(k) * 2.0) * 3.0;%%!serialized_property_newline!%%        vec4 pl = biplane(p, vec2(x0, y0), left, tr);%%!serialized_property_newline!%%        if (pl.a > 0.0) col = mix(col, mix(pl.rgb, SW_HAZE, k == 1 ? 0.25 : 0.1), pl.a);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    c = strip(R_HILLS, p.x, p.y - SW_HILL_Y);%%!serialized_property_newline!%%    if (c.a > 0.5) col = mix(swDay(c.rgb, 0.35), hexrgb(0x6f9a6a), 0.35);     // a touch of green%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        vec2 base = vec2(MILL.x, SW_HILL_Y + MILL.y);%%!serialized_property_newline!%%        c = sprite(R_MILL, 0, p - (base + vec2(-7.0, 0.0)));%%!serialized_property_newline!%%        if (c.a > 0.5) col = mix(swKeys(c, p, t, 0.2), SW_HAZE, 0.2);%%!serialized_property_newline!%%        c = sprite(R_BLADES, int(mod(t * 5.0, 6.0)), p - (base + vec2(-15.0, 3.0)));%%!serialized_property_newline!%%        if (c.a > 0.5) col = mix(c.rgb, SW_HAZE, 0.2);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    c = strip(R_VIADUCT, p.x, p.y - SW_VIA_Y);%%!serialized_property_newline!%%    if (c.a > 0.5) col = swDay(c.rgb, 0.22);%%!serialized_property_newline!%%    {                                                                  // train on the viaduct%%!serialized_property_newline!%%        float deck = SW_VIA_Y + float(R_VIADUCT.w);%%!serialized_property_newline!%%        float period = 36.0, len = 4.0 * 22.0 + 28.0;%%!serialized_property_newline!%%        float tx = floor(mod(tr, period) / period * (PIXW + len + 120.0) - len - 60.0);%%!serialized_property_newline!%%        int wf = int(mod(floor(tx / 3.0), 2.0));%%!serialized_property_newline!%%        float lx = p.x - tx;%%!serialized_property_newline!%%        if (lx >= 0.0 && lx < 4.0 * 22.0) {%%!serialized_property_newline!%%            c = sprite(R_CAR, wf, vec2(mod(lx, 22.0), p.y - deck + 1.0));%%!serialized_property_newline!%%            if (c.a > 0.5) col = swKeys(c, p, t, 0.1);%%!serialized_property_newline!%%        } else {%%!serialized_property_newline!%%            c = sprite(R_LOCO, wf, vec2(lx - 4.0 * 22.0, p.y - deck + 1.0));%%!serialized_property_newline!%%            if (c.a > 0.5) col = swKeys(c, p, t, 0.1);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        if (!refl) {%%!serialized_property_newline!%%            for (int k = 0; k < 6; k++) {%%!serialized_property_newline!%%                float age = fract(tr * 1.1 - float(k) / 6.0);%%!serialized_property_newline!%%                vec2 cc = vec2(tx + 4.0 * 22.0 + 20.0 - age * 26.0, deck + 17.0 + age * 10.0);%%!serialized_property_newline!%%                float rad = 1.5 + age * 4.0;%%!serialized_property_newline!%%                vec2 d = p + 0.5 - cc;%%!serialized_property_newline!%%                if (dot(d, d) < rad * rad && !(age > 0.6 && hash21(p + floor(tr * 8.0)) < (age - 0.6) * 2.5))%%!serialized_property_newline!%%                    col = d.y > rad * 0.2 ? hexrgb(0xffffff) : hexrgb(0xc8d0dc);%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    float fx = 101.0;                                                  // far town + its smoke%%!serialized_property_newline!%%    if (!refl) for (int i = 0; i < N_CHIM_FAR; i++) { c = swSmoke(p, t, CHIM_FAR[i], fx, SW_FAR_Y, 0.4); if (c.a > 0.5) col = c.rgb; }%%!serialized_property_newline!%%    c = strip(R_TOWN_FAR, p.x + fx, p.y - SW_FAR_Y);%%!serialized_property_newline!%%    if (c.a > 0.5) col = isKey(c, vec3(1.0, 0.0, 1.0)) ? swKeys(c, p + vec2(fx, 0.0), t, 0.3) : swFarTown(c.rgb);%%!serialized_property_newline!%%    float nx = 17.0;                                                   // near town + its smoke%%!serialized_property_newline!%%    c = strip(R_TOWN_NEAR, p.x + nx, p.y - SW_NEAR_Y);%%!serialized_property_newline!%%    if (c.a > 0.5) col = isKey(c, vec3(1.0, 0.0, 1.0)) ? swKeys(c, p + vec2(nx, 0.0), t, 0.05) : swNearTown(c.rgb);%%!serialized_property_newline!%%    if (!refl) for (int i = 0; i < N_CHIM_NEAR; i++) { c = swSmoke(p, t, CHIM_NEAR[i], nx, SW_NEAR_Y, 0.0); if (c.a > 0.5) col = c.rgb; }%%!serialized_property_newline!%%    c = strip(R_QUAY, p.x, p.y - SW_QUAY_Y);%%!serialized_property_newline!%%    // stone/iron stay dark - lifting them like the far layers turns the lamp posts white%%!serialized_property_newline!%%    if (c.a > 0.5) col = isKey(c, vec3(1.0, 1.0, 0.0)) ? swKeys(c, p, t, 0.0) : c.rgb * vec3(1.5, 1.55, 1.7) + vec3(0.04, 0.05, 0.07);%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 sweden(vec2 p, Music m) {%%!serialized_property_newline!%%    float tr = iTime;%%!serialized_property_newline!%%    float t = 0.35 * tr + 0.65 * m.drive;%%!serialized_property_newline!%%    float waterTop = 18.0;%%!serialized_property_newline!%%    SW_QUAY_Y = waterTop - 12.0;               // quay wall top sits at waterTop%%!serialized_property_newline!%%    SW_NEAR_Y = waterTop;%%!serialized_property_newline!%%    SW_FAR_Y = waterTop + 8.0;%%!serialized_property_newline!%%    SW_VIA_Y = waterTop + 12.0;%%!serialized_property_newline!%%    SW_HILL_Y = waterTop + 26.0;%%!serialized_property_newline!%%    SW_MOUNT_Y = waterTop + 34.0;%%!serialized_property_newline!%%    SW_HORIZON = waterTop + 44.0;%%!serialized_property_newline!%%%%!serialized_property_newline!%%    vec3 col;%%!serialized_property_newline!%%    if (p.y >= waterTop) {%%!serialized_property_newline!%%        col = swScene(p, t, tr, false, m);%%!serialized_property_newline!%%    } else {%%!serialized_property_newline!%%        // canal: mirrored scene, rippled, blue; more glints when the music is loud%%!serialized_property_newline!%%        float row = waterTop - p.y;%%!serialized_property_newline!%%        float ripple = floor(sin(row * 1.3 + t * 2.2) * 1.2 + sin(row * 0.5 - t * 0.9) * 1.0);%%!serialized_property_newline!%%        vec2 rp = vec2(p.x + ripple, waterTop + row - 1.0);%%!serialized_property_newline!%%        col = swScene(rp, t, tr, true, m);%%!serialized_property_newline!%%        col = mix(col * vec3(0.62, 0.78, 0.92), hexrgb(0x3a78b0), 0.30 + row * 0.012);%%!serialized_property_newline!%%        if (hash21(vec2(floor((p.x + t * 5.0) / 5.0), p.y)) > 0.94 - 0.05 * m.energy) col = mix(col, hexrgb(0xeaf6ff), 0.7);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // brass gears in the corners (meshing pairs turn in step)%%!serialized_property_newline!%%    int f = int(mod(t * 5.0, 4.0));%%!serialized_property_newline!%%    vec4 c;%%!serialized_property_newline!%%    c = sprite(R_GEAR_MID, 3 - f, p - vec2(28.0, -22.0));%%!serialized_property_newline!%%    if (c.a > 0.5) col = c.rgb;%%!serialized_property_newline!%%    c = sprite(R_GEAR_BIG, f, p - vec2(-38.0, -16.0));%%!serialized_property_newline!%%    if (c.a > 0.5) col = c.rgb;%%!serialized_property_newline!%%    c = sprite(R_GEAR_SMALL, f, p - vec2(PIXW - 46.0, -12.0));%%!serialized_property_newline!%%    if (c.a > 0.5) col = c.rgb;%%!serialized_property_newline!%%    c = sprite(R_GEAR_BIG, 3 - f, p - vec2(PIXW - 30.0, -6.0));%%!serialized_property_newline!%%    if (c.a > 0.5) col = c.rgb;%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // birds gliding across (two-frame wing flap); more of them as the song builds%%!serialized_property_newline!%%    int birds = 3 + int(5.0 * m.tension);%%!serialized_property_newline!%%    for (int k = 0; k < 8; k++) {%%!serialized_property_newline!%%        if (k >= birds) break;%%!serialized_property_newline!%%        float fk = float(k);%%!serialized_property_newline!%%        float span = PIXW + 60.0;%%!serialized_property_newline!%%        float bx = floor(mod(t * (7.0 + 3.0 * hash11(fk)) + hash11(fk * 5.3) * span, span) - 30.0);%%!serialized_property_newline!%%        float by = floor(H - 70.0 - hash11(fk * 2.1) * 40.0 + sin(t * 0.8 + fk) * 2.0);%%!serialized_property_newline!%%        vec2 d = p - vec2(bx, by);%%!serialized_property_newline!%%        bool up = fract(t * 3.0 + fk * 0.37) < 0.5;%%!serialized_property_newline!%%        if ((d.y == 0.0 && abs(d.x) <= 1.0) || (abs(d.x) == 2.0 && d.y == (up ? 1.0 : -1.0)))%%!serialized_property_newline!%%            col = hexrgb(0x2e3a4a);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // golden light as the song swells%%!serialized_property_newline!%%    col = mix(col, col * vec3(1.08, 1.0, 0.86) + vec3(0.03, 0.02, 0.0), 0.6 * smoothstep(0.55, 1.0, m.tension));%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%%%!serialized_property_newline!%%bool ownsScene(int s) { return s == 0; }%%!serialized_property_newline!%%vec3 renderScene(int s, vec2 p, Music m) {%%!serialized_property_newline!%%    if (s == 0) return sweden(p, m);%%!serialized_property_newline!%%    return vec3(0.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ main (one buffer pass)%%!serialized_property_newline!%%// This program draws the scenes ownsScene() names (generated: one, or two light ones). The title%%!serialized_property_newline!%%// background runs up to four such programs as FancyMenu buffer passes A-D and composite.glsl picks,%%!serialized_property_newline!%%// per pixel, the one that drew there - separate programs, because one shader holding every scene made%%!serialized_property_newline!%%// the driver budget registers for the heaviest of them and ran ~20x slower.%%!serialized_property_newline!%%// Only the current track's scene draws; over the first TRANSITION seconds of its play time it dissolves%%!serialized_property_newline!%%// in pixel by pixel (4x4 ordered pattern) while the previous track's scene fills the rest; while a%%!serialized_property_newline!%%// track is still loading the previous scene stays. Pixels of other programs' scenes stay transparent.%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define TRANSITION 1.6%%!serialized_property_newline!%%%%!serialized_property_newline!%%void mainImage(out vec4 fragColor, in vec2 fragCoord) {%%!serialized_property_newline!%%    fragColor = vec4(0.0);%%!serialized_property_newline!%%    int track = clamp(int(fmVarFloat_toz_music_track + 0.5), 0, N_TRACKS - 1);%%!serialized_property_newline!%%    int prev = (track + N_TRACKS - 1) % N_TRACKS;%%!serialized_property_newline!%%    if (!ownsScene(track) && !ownsScene(prev)) return;                     // cheap for idle programs%%!serialized_property_newline!%%%%!serialized_property_newline!%%    float scale = iResolution.x / PIXW;%%!serialized_property_newline!%%    H = floor(iResolution.y / scale);%%!serialized_property_newline!%%    vec2 p = floor(fragCoord / scale);%%!serialized_property_newline!%%    Music m = music(track, iTime);%%!serialized_property_newline!%%    float k = 1.0;%%!serialized_property_newline!%%    if (m.live && m.playing && N_TRACKS > 1) {                              // paused: no half-done dissolve%%!serialized_property_newline!%%        if (fmVarFloat_toz_music_dur <= 0.0) k = (track == 0 && iTime < 8.0) ? 1.0 : 0.0;   // loading; game start%%!serialized_property_newline!%%        else k = smoothstep(0.0, TRANSITION, m.pos);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    int scene = (k >= 1.0 || bayer4(p) < k) ? track : prev;%%!serialized_property_newline!%%    if (!ownsScene(scene)) return;%%!serialized_property_newline!%%%%!serialized_property_newline!%%    ATLAS_SIZE = textureSize(iChannel0, 0);%%!serialized_property_newline!%%    vec4 m0 = texelFetch(iChannel0, ivec2(0, 0), 0);%%!serialized_property_newline!%%    TOP_FIRST = m0.r > 0.5 && m0.g < 0.5;%%!serialized_property_newline!%%    if (ATLAS_SIZE.x < 8) { fragColor = vec4(0.10, 0.08, 0.16, 1.0); return; }   // atlas not loaded yet%%!serialized_property_newline!%%    fragColor = vec4(clamp(renderScene(scene, p, m), 0.0, 1.0), 1.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%
  buffer_a_ichannel0_input = resource0
  buffer_a_ichannel1_input = resource1
  buffer_b_inline_source = // Teachings of Zeta - title background buffer pass: subwoofer_lullaby, minecraft (playlist slot 4, 6 of 7)%%!serialized_property_newline!%%// Generated by modpack_pipeline/menu/gen_menu_scenes.py + gen_menu_art.py from scenes/*.glsl -%%!serialized_property_newline!%%// edit those, then re-run the generators.%%!serialized_property_newline!%%%%!serialized_property_newline!%%// generated by modpack_pipeline/menu/gen_menu_art.py - atlas 384x517%%!serialized_property_newline!%%const ivec4 R_MOUNT = ivec4(0, 2, 384, 44); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_HILLS = ivec4(0, 47, 384, 30); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_VIADUCT = ivec4(0, 78, 384, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_TOWN_FAR = ivec4(0, 103, 384, 38); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_TOWN_NEAR = ivec4(0, 142, 384, 30); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_QUAY = ivec4(0, 173, 384, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_SHIP_BIG = ivec4(0, 198, 76, 32); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_SHIP_SMALL = ivec4(153, 198, 41, 17); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_LOCO = ivec4(236, 198, 28, 17); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_CAR = ivec4(293, 198, 22, 15); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_MILL = ivec4(338, 198, 14, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_BLADES = ivec4(0, 231, 30, 30); // 6 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_BIG = ivec4(0, 262, 70, 70); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_MID = ivec4(0, 333, 46, 46); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_SMALL = ivec4(185, 333, 34, 34); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_A = ivec4(0, 380, 64, 15); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_B = ivec4(65, 380, 46, 12); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_C = ivec4(112, 380, 30, 9); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_HARBOR = ivec4(0, 396, 384, 40); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_PIER = ivec4(0, 437, 384, 22); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_LIGHTHOUSE = ivec4(0, 460, 20, 56); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_MAST = ivec4(21, 460, 12, 50); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_STEAMBOAT = ivec4(34, 460, 52, 24); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_PLANE = ivec4(139, 460, 24, 13); // 2 frame(s)%%!serialized_property_newline!%%// chimney tops: x in strip, y above strip bottom, size%%!serialized_property_newline!%%const int N_CHIM_NEAR = 5;%%!serialized_property_newline!%%const vec3 CHIM_NEAR[5] = vec3[5](vec3(4.0, 20.0, 1.0), vec3(124.0, 26.0, 1.0), vec3(188.0, 21.0, 1.0), vec3(231.0, 30.0, 1.0), vec3(317.0, 24.0, 1.0));%%!serialized_property_newline!%%const int N_CHIM_FAR = 6;%%!serialized_property_newline!%%const vec3 CHIM_FAR[6] = vec3[6](vec3(156.0, 18.0, 1.0), vec3(166.0, 20.0, 1.0), vec3(203.0, 19.0, 1.0), vec3(355.0, 27.0, 1.0), vec3(363.0, 25.0, 1.0), vec3(377.0, 22.0, 1.0));%%!serialized_property_newline!%%const int N_CHIM_HARBOR = 2;%%!serialized_property_newline!%%const vec3 CHIM_HARBOR[2] = vec3[2](vec3(310.5, 31.0, 1.6), vec3(321.5, 31.0, 1.6));%%!serialized_property_newline!%%const float STRIP_W = 384.0;%%!serialized_property_newline!%%const vec2 MILL = vec2(46.0, 17.0); // windmill base in the hills strip%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ common (all scenes)%%!serialized_property_newline!%%// Every scene draws on a PIXW px wide virtual grid (p = virtual pixel, y up, 0 at the bottom; H = height)%%!serialized_property_newline!%%// and gets the music as a Music value: see music() at the end of this file.%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define PIXW 320.0%%!serialized_property_newline!%%#define PI 3.14159265%%!serialized_property_newline!%%%%!serialized_property_newline!%%// FancyMenu variables (set every frame by Tickers in the title layout), uploaded as fmVarFloat_<name>%%!serialized_property_newline!%%uniform float fmVarFloat_toz_music_pos;     // seconds into the current track; -1 = addon missing%%!serialized_property_newline!%%uniform float fmVarFloat_toz_music_dur;     // length of the current track; 0 while it is loading%%!serialized_property_newline!%%uniform float fmVarFloat_toz_music_track;   // playlist index of the current track%%!serialized_property_newline!%%uniform int fmVarBool_toz_music_playing;     // 1 while the track plays (0 paused / stopped)%%!serialized_property_newline!%%%%!serialized_property_newline!%%float H;            // virtual height%%!serialized_property_newline!%%bool TOP_FIRST;     // atlas row 0 is the image's top row%%!serialized_property_newline!%%ivec2 ATLAS_SIZE;%%!serialized_property_newline!%%%%!serialized_property_newline!%%float hash11(float p) { p = fract(p * 0.1031); p *= p + 33.33; p *= p + p; return fract(p); }%%!serialized_property_newline!%%float hash21(vec2 p) { vec3 p3 = fract(vec3(p.xyx) * 0.1031); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.x + p3.y) * p3.z); }%%!serialized_property_newline!%%vec2 hash22(vec2 p) { vec3 p3 = fract(vec3(p.xyx) * vec3(0.1031, 0.1030, 0.0973)); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.xx + p3.yz) * p3.zy); }%%!serialized_property_newline!%%vec3 hexrgb(int h) { return vec3(float((h >> 16) & 255), float((h >> 8) & 255), float(h & 255)) / 255.0; }%%!serialized_property_newline!%%float vnoise(float x) { float i = floor(x), f = fract(x); return mix(hash11(i), hash11(i + 1.0), f * f * (3.0 - 2.0 * f)); }%%!serialized_property_newline!%%float vnoise2(vec2 p) {%%!serialized_property_newline!%%    vec2 i = floor(p), f = fract(p);%%!serialized_property_newline!%%    vec2 u = f * f * (3.0 - 2.0 * f);%%!serialized_property_newline!%%    return mix(mix(hash21(i), hash21(i + vec2(1.0, 0.0)), u.x), mix(hash21(i + vec2(0.0, 1.0)), hash21(i + 1.0), u.x), u.y);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// pixel-stepped ridge line: height of a silhouette at column x%%!serialized_property_newline!%%float ridge(float x, float seed, float amp, float scale) {%%!serialized_property_newline!%%    return floor(amp * (0.55 * vnoise(x / scale + seed) + 0.3 * vnoise(x / (scale * 0.37) + seed * 3.1) + 0.15 * vnoise(x / (scale * 0.13) + seed * 7.7)));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// 4x4 ordered dither threshold (0..1): the pixel-art way to blend two flat colours%%!serialized_property_newline!%%float bayer4(vec2 p) {%%!serialized_property_newline!%%    const int M[16] = int[16](0, 8, 2, 10, 12, 4, 14, 6, 3, 11, 1, 9, 15, 7, 13, 5);%%!serialized_property_newline!%%    int x = int(mod(p.x, 4.0)), y = int(mod(p.y, 4.0));%%!serialized_property_newline!%%    return (float(M[y * 4 + x]) + 0.5) / 16.0;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec3 dmix(vec3 a, vec3 b, float f, vec2 p) { return f > bayer4(p) ? b : a; }%%!serialized_property_newline!%%// stepped vertical gradient through a 4-colour palette (h 0..1 = c0..c3): 4 flat shades between each%%!serialized_property_newline!%%// pair (12 bands), joined by a thin ordered-dither seam instead of a wide checkerboard%%!serialized_property_newline!%%vec3 bands(vec3 c0, vec3 c1, vec3 c2, vec3 c3, float h, vec2 p) {%%!serialized_property_newline!%%    float f = clamp(h, 0.0, 0.999) * 12.0;%%!serialized_property_newline!%%    float level = clamp(floor(f + (bayer4(p) - 0.5) * 0.5), 0.0, 11.0);%%!serialized_property_newline!%%    float x = (level + 0.5) / 4.0;                                      // 0..3 across the palette%%!serialized_property_newline!%%    return x < 1.0 ? mix(c0, c1, x) : (x < 2.0 ? mix(c1, c2, x - 1.0) : mix(c2, c3, x - 2.0));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%float luma(vec3 c) { return dot(c, vec3(0.30, 0.59, 0.11)); }%%!serialized_property_newline!%%vec2 rot(vec2 v, float a) { float c = cos(a), s = sin(a); return vec2(c * v.x - s * v.y, s * v.x + c * v.y); }%%!serialized_property_newline!%%// distance from the pixel centre to segment a-b (.x) and how far along it the closest point is (.y, 0..1)%%!serialized_property_newline!%%vec2 segment(vec2 p, vec2 a, vec2 b) {%%!serialized_property_newline!%%    vec2 pa = p + 0.5 - a, ba = b - a;%%!serialized_property_newline!%%    float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);%%!serialized_property_newline!%%    return vec2(length(pa - ba * h), h);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// 3x5 pixel glyphs: 0-9 + x = pi sigma root; l = pixel inside the glyph, x from the left, y from the top%%!serialized_property_newline!%%const int GLYPH[16] = int[16](31599, 11415, 29671, 29647, 23497, 31183, 31215, 29330, 31727, 31695,%%!serialized_property_newline!%%                              1488, 2728, 3640, 31597, 30887, 4714);%%!serialized_property_newline!%%bool glyph(int g, vec2 l) {%%!serialized_property_newline!%%    if (l.x < 0.0 || l.y < 0.0 || l.x > 2.0 || l.y > 4.0) return false;%%!serialized_property_newline!%%    return ((GLYPH[g & 15] >> ((4 - int(l.y)) * 3 + (2 - int(l.x)))) & 1) == 1;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// bitmap sprite of up to 16 columns: rows[] top to bottom, bit (w-1) = leftmost pixel%%!serialized_property_newline!%%bool bitAt(int row, int w, float x) { return x >= 0.0 && x < float(w) && ((row >> (w - 1 - int(x))) & 1) == 1; }%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ atlas access (iChannel0)%%!serialized_property_newline!%%vec4 texel(int x, int y) {%%!serialized_property_newline!%%    int ty = TOP_FIRST ? y : ATLAS_SIZE.y - 1 - y;%%!serialized_property_newline!%%    return texelFetch(iChannel0, ivec2(x, ty), 0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// local: pixel inside the sprite, y counted up from the sprite's bottom row%%!serialized_property_newline!%%vec4 sprite(ivec4 r, int frame, vec2 local) {%%!serialized_property_newline!%%    if (local.x < 0.0 || local.y < 0.0 || local.x >= float(r.z) || local.y >= float(r.w)) return vec4(0.0);%%!serialized_property_newline!%%    return texel(r.x + frame * r.z + int(local.x), r.y + r.w - 1 - int(local.y));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// sprites face right; `left` mirrors them, so nothing ever flies backwards%%!serialized_property_newline!%%vec4 spriteDir(ivec4 r, int frame, vec2 local, bool left) {%%!serialized_property_newline!%%    if (left) local.x = float(r.z) - 1.0 - local.x;%%!serialized_property_newline!%%    return sprite(r, frame, local);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// a biplane with its bottom-left at `pos`, propeller spinning, puffs of exhaust trailing behind;%%!serialized_property_newline!%%// .a = coverage (1 for the plane, less for the fading puffs)%%!serialized_property_newline!%%vec4 biplane(vec2 p, vec2 pos, bool left, float t) {%%!serialized_property_newline!%%    vec2 o = floor(pos);%%!serialized_property_newline!%%    vec4 c = spriteDir(R_PLANE, int(mod(t * 16.0, 2.0)), p - o, left);%%!serialized_property_newline!%%    if (c.a > 0.5) return vec4(c.rgb, 1.0);%%!serialized_property_newline!%%    float back = left ? p.x - (o.x + float(R_PLANE.z)) : o.x - p.x;              // distance behind the tail%%!serialized_property_newline!%%    if (back >= 1.0 && back < 22.0 && p.y == o.y + 6.0 + floor(back / 11.0) && mod(back + floor(t * 12.0), 5.0) < 2.0)%%!serialized_property_newline!%%        return vec4(vec3(0.96, 0.96, 0.98), 0.9 - back / 24.0);%%!serialized_property_newline!%%    return vec4(0.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec4 strip(ivec4 r, float x, float ly) {%%!serialized_property_newline!%%    if (ly < 0.0 || ly >= float(r.w)) return vec4(0.0);%%!serialized_property_newline!%%    return texel(r.x + int(mod(x, STRIP_W)), r.y + r.w - 1 - int(ly));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%bool isKey(vec4 c, vec3 k) { return c.a > 0.5 && all(lessThan(abs(c.rgb - k), vec3(0.02))); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ music (iChannel1 = envelope.png)%%!serialized_property_newline!%%struct Music {%%!serialized_property_newline!%%    float tension;  // the song's arc, 0..1 (seconds)%%!serialized_property_newline!%%    float energy;   // loudness of the moment, 0..1%%!serialized_property_newline!%%    float accent;   // hits / note onsets, jumps up and decays in ~0.2 s%%!serialized_property_newline!%%    float hit;      // seconds since the last big hit (>= HIT_NONE: none lately) - for longer events%%!serialized_property_newline!%%    float hitSeed;  // differs per big hit: picks where/how its event happens%%!serialized_property_newline!%%    float drive;    // music time: runs 0.3x (calm) .. 1.7x (climax) real time, never jumps%%!serialized_property_newline!%%    float pos;      // seconds into the track%%!serialized_property_newline!%%    float prog;     // 0..1 through the track%%!serialized_property_newline!%%    bool live;      // false: no position (addon missing) - a slow synthetic swell instead%%!serialized_property_newline!%%    bool playing;   // false while paused: the song's state holds, hits and their events stay away%%!serialized_property_newline!%%};%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define HIT_NONE 2.5%%!serialized_property_newline!%%%%!serialized_property_newline!%%ivec2 ENV_SIZE;%%!serialized_property_newline!%%bool ENV_TOP;%%!serialized_property_newline!%%vec4 envTexel(int x, int y) {%%!serialized_property_newline!%%    int ty = ENV_TOP ? y : ENV_SIZE.y - 1 - y;%%!serialized_property_newline!%%    return texelFetch(iChannel1, ivec2(x, ty), 0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec4 envAt(int row0, int i) { return envTexel(i % ENV_SIZE.x, row0 + i / ENV_SIZE.x); }%%!serialized_property_newline!%%int u8(float v) { return int(v * 255.0 + 0.5); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%Music synthetic(float t) {%%!serialized_property_newline!%%    float s = 0.5 + 0.5 * sin(t * 0.07);%%!serialized_property_newline!%%    return Music(0.35 + 0.3 * s, 0.4 + 0.3 * s, 0.0, 9.0, 0.0, t, 0.0, fract(t / 240.0), false, true);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%Music music(int track, float t) {%%!serialized_property_newline!%%    ENV_SIZE = textureSize(iChannel1, 0);%%!serialized_property_newline!%%    float pos = fmVarFloat_toz_music_pos;%%!serialized_property_newline!%%    if (pos < 0.0 || ENV_SIZE.x < 8) return synthetic(t);%%!serialized_property_newline!%%    vec4 mark = texelFetch(iChannel1, ivec2(0, 0), 0);%%!serialized_property_newline!%%    ENV_TOP = mark.r > 0.5 && mark.g < 0.5;%%!serialized_property_newline!%%    vec4 h = envTexel(1 + track, 0);%%!serialized_property_newline!%%    int row0 = u8(h.r), n = u8(h.g) * 256 + u8(h.b);%%!serialized_property_newline!%%    float rate = float(u8(ENV_TOP ? mark.b : envTexel(0, 0).b));%%!serialized_property_newline!%%    if (row0 < 1 || n < 2 || rate < 1.0) return synthetic(t);%%!serialized_property_newline!%%    float fi = clamp(pos * rate, 0.0, float(n) - 1.001);%%!serialized_property_newline!%%    int i = int(fi);%%!serialized_property_newline!%%    float f = fract(fi);%%!serialized_property_newline!%%    vec3 v = mix(envAt(row0, i).rgb, envAt(row0, i + 1).rgb, f);%%!serialized_property_newline!%%    int drow = row0 + (n + ENV_SIZE.x - 1) / ENV_SIZE.x;%%!serialized_property_newline!%%    vec4 da = envAt(drow, i), db = envAt(drow, i + 1);%%!serialized_property_newline!%%    float drive = mix(float(u8(da.r) * 256 + u8(da.g)), float(u8(db.r) * 256 + u8(db.g)), f) * 0.01;%%!serialized_property_newline!%%    int age = u8(da.b);                                   // centiseconds since the last big hit%%!serialized_property_newline!%%    float hit = age >= 250 ? 9.0 : float(age) * 0.01 + f / rate;%%!serialized_property_newline!%%    float dur = fmVarFloat_toz_music_dur > 0.0 ? fmVarFloat_toz_music_dur : float(n) / rate;%%!serialized_property_newline!%%    // paused: the position stands still, so a hit (flash, firework, lightning...) would freeze mid-air -%%!serialized_property_newline!%%    // keep the song's state (tension, energy, drive) and drop the hits%%!serialized_property_newline!%%    if (fmVarBool_toz_music_playing == 0) return Music(v.r, v.g, 0.0, 9.0, 0.0, drive, pos, clamp(pos / dur, 0.0, 1.0), true, false);%%!serialized_property_newline!%%    return Music(v.r, v.g, v.b, hit, floor((pos - hit) * 4.0 + 0.5), drive, pos, clamp(pos / dur, 0.0, 1.0), true, true);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%%%!serialized_property_newline!%%const int N_TRACKS = 7;%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ Subwoofer Lullaby: "Hearth at dusk"%%!serialized_property_newline!%%// Home after a long day: a timber cottage, two friends at a campfire, a swing under the old oak, a%%!serialized_property_newline!%%// pond. Over the track dusk turns into night (the lullaby). Music: the fire and the windows glow with%%!serialized_property_newline!%%// the energy; fireflies come out as the tension grows and paper sky lanterns rise at its peak; every%%!serialized_property_newline!%%// hit sends sparks up from the fire; smoke and the swing move on music time.%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 slPal(int dusk, int night, float s) { return mix(hexrgb(dusk), hexrgb(night), s); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%// a hooded friend sitting with knees up, facing right (mirrored for the other side); bit 9 = left%%!serialized_property_newline!%%const int SL_FRIEND[12] = int[12](56, 124, 126, 126, 60, 126, 255, 254, 511, 511, 1023, 975);%%!serialized_property_newline!%%const vec2 SL_FIRE = vec2(150.0, 13.0);%%!serialized_property_newline!%%#define SL_PLATEAU 25.0                         // flat ground the cottage stands on%%!serialized_property_newline!%%%%!serialized_property_newline!%%float slHills(float x) { return 46.0 + floor(vnoise(x / 40.0 + 3.0) * 14.0 + vnoise(x / 13.0) * 4.0); }%%!serialized_property_newline!%%float slHillsNear(float x) { return 34.0 + floor(vnoise(x / 28.0 + 11.0) * 10.0 + vnoise(x / 9.0 + 4.0) * 2.0); }%%!serialized_property_newline!%%float slMeadow(float x) {%%!serialized_property_newline!%%    float n = 22.0 + floor(vnoise(x / 55.0 + 9.0) * 8.0 + vnoise(x / 17.0 + 1.0) * 2.0);%%!serialized_property_newline!%%    return x < 74.0 ? SL_PLATEAU : (x < 94.0 ? floor(mix(SL_PLATEAU, n, smoothstep(74.0, 94.0, x))) : n);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// the oak's crown: a cluster of leaf clumps; returns 0 outside, else 1 + light (0..1, lit from the upper left)%%!serialized_property_newline!%%float slCrown(vec2 q, float sway) {%%!serialized_property_newline!%%    float best = 0.0;%%!serialized_property_newline!%%    for (int k = 0; k < 7; k++) {%%!serialized_property_newline!%%        float a = float(k) * 0.9 + 0.4;%%!serialized_property_newline!%%        vec2 cc = vec2(cos(a) * (14.0 + 6.0 * hash11(float(k))), sin(a) * 7.0 + 2.0) + vec2(sway * 0.5, 0.0);%%!serialized_property_newline!%%        if (k == 6) cc = vec2(sway, 6.0);%%!serialized_property_newline!%%        float r = 10.0 + 4.0 * hash11(float(k) * 3.7);%%!serialized_property_newline!%%        vec2 d = q - cc;%%!serialized_property_newline!%%        float e = length(d) / r + (vnoise2((q + 40.0) / 3.0) - 0.5) * 0.18;%%!serialized_property_newline!%%        if (e < 1.0) best = max(best, 1.0 + clamp(0.5 + (-d.x * 0.5 + d.y) / (r * 1.4), 0.0, 1.0));%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return best;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 subwoofer_lullaby(vec2 p, Music m) {%%!serialized_property_newline!%%    float t = iTime;%%!serialized_property_newline!%%    float D = 0.35 * t + 0.65 * m.drive;%%!serialized_property_newline!%%    float s = smoothstep(0.0, 0.95, m.prog);                       // dusk -> night over the track%%!serialized_property_newline!%%    vec2 c = p + 0.5;%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // sky: warm dusk at the horizon fading to night, stars come out%%!serialized_property_newline!%%    float h = clamp((p.y - 40.0) / (H - 40.0), 0.0, 1.0);%%!serialized_property_newline!%%    vec3 col = bands(slPal(0xf0a070, 0x3e3e72, s), slPal(0xb0607a, 0x2c2c5c, s), slPal(0x5a4482, 0x1c1e44, s),%%!serialized_property_newline!%%                     slPal(0x262a5e, 0x0e1030, s), h, p);%%!serialized_property_newline!%%    vec2 cell = floor(p / 5.0);%%!serialized_property_newline!%%    float st = hash21(cell + 4.0);%%!serialized_property_newline!%%    if (st < (0.06 + 0.3 * s) * h && p == cell * 5.0 + floor(hash22(cell) * 4.0))%%!serialized_property_newline!%%        col = mix(col, vec3(1.0, 0.97, 0.9), 0.4 + 0.4 * sin(t * 1.7 + st * 60.0));%%!serialized_property_newline!%%    vec2 ev = c - vec2(64.0, H - 38.0);                            // the evening star%%!serialized_property_newline!%%    float evr = 3.0 * (0.6 + 0.4 * m.energy);%%!serialized_property_newline!%%    if (length(ev) < 5.0) col = dmix(col, mix(col, vec3(1.0, 0.95, 0.8), 0.4), (5.0 - length(ev)) / 6.0, p);%%!serialized_property_newline!%%    if (abs(ev.x) + abs(ev.y) < 1.5 || (abs(ev.x) < 0.6 && abs(ev.y) < evr) || (abs(ev.y) < 0.6 && abs(ev.x) < evr))%%!serialized_property_newline!%%        col = vec3(1.0, 0.96, 0.85);%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // paper sky lanterns rising at the peak%%!serialized_property_newline!%%    float lanterns = smoothstep(0.62, 0.85, m.tension);%%!serialized_property_newline!%%    for (int k = 0; k < 6; k++) {%%!serialized_property_newline!%%        float fk = float(k);%%!serialized_property_newline!%%        float vis = smoothstep(hash11(fk * 3.9) - 0.12, hash11(fk * 3.9) + 0.12, lanterns);   // fade, no pop%%!serialized_property_newline!%%        if (vis <= 0.0) continue;%%!serialized_property_newline!%%        float ph = fract(D * 0.03 + hash11(fk * 2.3));%%!serialized_property_newline!%%        vec2 lp = floor(vec2(SL_FIRE.x + (hash11(fk * 7.1) - 0.5) * 220.0 + sin(ph * 5.0 + fk) * 6.0, 40.0 + ph * (H - 30.0)));%%!serialized_property_newline!%%        vec2 d = c - lp - 0.5;%%!serialized_property_newline!%%        if (length(d) < 5.0) col = mix(col, vec3(1.0, 0.7, 0.35), (5.0 - length(d)) / 6.0 * (1.0 - ph) * 0.35 * vis);%%!serialized_property_newline!%%        if (abs(d.x) < 1.5 && abs(d.y) < 2.0) col = mix(col, mix(d.y > 0.5 ? vec3(1.0, 0.86, 0.58) : vec3(1.0, 0.6, 0.28), col, ph * 0.5), vis);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // two hill ranges, the farther one with village lights, both fading into the dusk%%!serialized_property_newline!%%    float hl = slHills(p.x);%%!serialized_property_newline!%%    if (p.y < hl) {%%!serialized_property_newline!%%        col = dmix(slPal(0x4e4072, 0x1e2044, s), slPal(0x5e4c80, 0x262850, s), (p.y - hl + 12.0) / 12.0, p);%%!serialized_property_newline!%%        if (p.y >= hl - 1.0) col = slPal(0x8a6a8a, 0x30345e, s);%%!serialized_property_newline!%%        if (hash21(floor(p / vec2(3.0, 2.0))) < 0.03 && mod(p.x, 3.0) < 1.0 && p.y < hl - 3.0 && p.y > hl - 9.0)%%!serialized_property_newline!%%            col = vec3(1.0, 0.8, 0.45);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    float hn = slHillsNear(p.x);%%!serialized_property_newline!%%    if (p.y < hn) {%%!serialized_property_newline!%%        col = dmix(slPal(0x3a3a5e, 0x161a36, s), slPal(0x4a4a6e, 0x1e2240, s), (p.y - hn + 10.0) / 10.0, p);%%!serialized_property_newline!%%        if (p.y >= hn - 1.0) col = slPal(0x6a5a7a, 0x2a2e50, s);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // the meadow: grass darker towards the front, blades along the top, flowers%%!serialized_property_newline!%%    float md = slMeadow(p.x);%%!serialized_property_newline!%%    if (p.y < md) {%%!serialized_property_newline!%%        float depth = md - p.y;%%!serialized_property_newline!%%        col = dmix(slPal(0x34502c, 0x14241a, s), slPal(0x4a6a38, 0x1c3022, s), clamp(1.0 - depth / 16.0, 0.0, 1.0), p);%%!serialized_property_newline!%%        float blade = hash21(vec2(p.x, floor(p.y / 3.0)));%%!serialized_property_newline!%%        if (blade < 0.18 && mod(p.y, 3.0) < 2.0) col = slPal(0x5a7e42, 0x223a28, s);                 // blades%%!serialized_property_newline!%%        if (blade > 0.94 && mod(p.y, 3.0) == 0.0) col = slPal(0x2a4224, 0x101c14, s);%%!serialized_property_newline!%%        if (depth < 2.0) col = hash11(p.x * 1.3) < 0.5 ? slPal(0x7a9e52, 0x2e4a32, s) : slPal(0x6a8a4a, 0x2a4430, s);%%!serialized_property_newline!%%        float fl = hash21(floor(p / 4.0) + 9.0);                                                         // flowers%%!serialized_property_newline!%%        if (fl < 0.04 && mod(p.x, 4.0) == 1.0 && mod(p.y, 4.0) == 2.0)%%!serialized_property_newline!%%            col = fl < 0.015 ? slPal(0xf0a0c0, 0x8a6a9a, s) : (fl < 0.03 ? slPal(0xf8e8a0, 0x8a8a6a, s) : slPal(0xc0d8ff, 0x6a7aa0, s));%%!serialized_property_newline!%%        if (fl < 0.04 && mod(p.x, 4.0) == 1.0 && mod(p.y, 4.0) == 1.0) col = slPal(0x3a5a2e, 0x16261a, s);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    if (p.y == md && hash21(vec2(p.x, 3.0)) < 0.3) col = slPal(0x6a8a4a, 0x2a4430, s);                  // tufts over the edge%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // the pond on the right with lily pads, mirroring the sky%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        float e = pow((p.x - 232.0) / 34.0, 2.0) + pow((p.y - 9.0) / 6.0, 2.0);%%!serialized_property_newline!%%        if (e < 1.0) {%%!serialized_property_newline!%%            float row = 15.0 - p.y;%%!serialized_property_newline!%%            vec3 r = bands(slPal(0xf0a070, 0x3e3e72, s), slPal(0xb0607a, 0x2c2c5c, s), slPal(0x5a4482, 0x1c1e44, s),%%!serialized_property_newline!%%                           slPal(0x262a5e, 0x0e1030, s), clamp(row / 12.0, 0.0, 1.0), p);%%!serialized_property_newline!%%            col = mix(r, slPal(0x3a3a6a, 0x101430, s), 0.3);%%!serialized_property_newline!%%            if (hash21(vec2(floor((p.x + t * 3.0) / 4.0), p.y)) > 0.9) col = mix(col, slPal(0xffd8a0, 0x8a90c0, s), 0.6);%%!serialized_property_newline!%%            for (int k = 0; k < 3; k++) {%%!serialized_property_newline!%%                vec2 lp = vec2(214.0 + float(k) * 15.0, 7.0 + float(k % 2) * 4.0);%%!serialized_property_newline!%%                if (length((c - lp) * vec2(1.0, 1.8)) < 2.6) col = slPal(0x4a7a3e, 0x1e3426, s);%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%            if (e > 0.78) col = e > 0.9 ? slPal(0x2e4426, 0x121e18, s) : slPal(0x6a6a5a, 0x2a2a34, s);   // stones + bank%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // the cottage on its plateau: stone plinth sunk into the ground, timber frame, shingled roof%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        vec2 l = p - vec2(8.0, SL_PLATEAU - 3.0);%%!serialized_property_newline!%%        float w = 54.0;%%!serialized_property_newline!%%        bool base = l.x >= 0.0 && l.x < w && l.y >= 0.0 && l.y < 6.0;%%!serialized_property_newline!%%        bool wall = l.x >= 2.0 && l.x < w - 2.0 && l.y >= 6.0 && l.y < 26.0;%%!serialized_property_newline!%%        float roofY = 26.0 + floor((w * 0.5 + 4.0 - abs(l.x - w * 0.5)) * 0.62);%%!serialized_property_newline!%%        bool roof = l.x >= -4.0 && l.x < w + 4.0 && l.y >= 25.0 && l.y < roofY;%%!serialized_property_newline!%%        bool chim = l.x >= 38.0 && l.x < 43.0 && l.y >= 30.0 && l.y < 44.0;%%!serialized_property_newline!%%        if (base) {%%!serialized_property_newline!%%            bool joint = mod(l.x + floor(l.y / 3.0) * 3.0, 6.0) == 0.0 || mod(l.y, 3.0) == 0.0;%%!serialized_property_newline!%%            col = joint ? slPal(0x4a4448, 0x22222e, s) : (hash21(floor(vec2(l.x / 6.0, l.y / 3.0))) < 0.5 ? slPal(0x7a7070, 0x3a3a48, s) : slPal(0x8a8078, 0x44444e, s));%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        if (wall) {%%!serialized_property_newline!%%            col = hash21(floor(l / 2.0)) < 0.2 ? slPal(0xccb48e, 0x544c5c, s) : slPal(0xd8c09a, 0x5a5262, s);   // plaster%%!serialized_property_newline!%%            if (l.y >= 24.0) col = slPal(0x3a2418, 0x1a1214, s);                                     // eave shadow%%!serialized_property_newline!%%            if (mod(l.x - 2.0, 12.0) < 2.0 || l.y < 8.0 || l.y == 23.0 || (abs(mod(l.x - 2.0, 12.0) - (l.y - 6.0) * 0.6) < 0.8 && l.y < 16.0))%%!serialized_property_newline!%%                col = slPal(0x5a3a26, 0x2a1e1e, s);                                                  // timber beams%%!serialized_property_newline!%%            vec2 wl = vec2(mod(l.x - 6.0, 24.0), l.y - 12.0);%%!serialized_property_newline!%%            if (wl.x >= 0.0 && wl.x < 7.0 && wl.y >= 0.0 && wl.y < 8.0) {%%!serialized_property_newline!%%                col = mix(vec3(1.0, 0.72, 0.36), vec3(1.0, 0.88, 0.6), 0.35 + 0.5 * m.energy);%%!serialized_property_newline!%%                if (wl.x == 3.0 || wl.y == 4.0) col = slPal(0x5a3a26, 0x3a2418, s);%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%            if (wl.x >= -1.0 && wl.x < 8.0 && wl.y == -1.0) col = slPal(0x6a4a30, 0x2a1c18, s);      // sill%%!serialized_property_newline!%%            if (wl.x >= 0.0 && wl.x < 7.0 && wl.y == -2.0)                                           // flower box%%!serialized_property_newline!%%                col = mod(wl.x, 2.0) < 1.0 ? slPal(0xe05a6a, 0x6a3448, s) : slPal(0x4a7a3e, 0x1e3426, s);%%!serialized_property_newline!%%            if (l.x >= 22.0 && l.x < 30.0 && l.y < 20.0) {                                           // door%%!serialized_property_newline!%%                col = l.x == 22.0 || l.y == 19.0 ? slPal(0x4a2e1e, 0x22160e, s) : slPal(0x7a4a2a, 0x3a2418, s);%%!serialized_property_newline!%%                if (l.x == 28.0 && l.y == 12.0) col = slPal(0xffd27a, 0x8a7040, s);                  // knob%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        if (roof && !wall) {%%!serialized_property_newline!%%            col = mod(l.y, 3.0) == 0.0 ? slPal(0x6a2e2a, 0x2a1820, s) : slPal(0x8a3a30, 0x3a2028, s);%%!serialized_property_newline!%%            if (mod(l.x + floor(l.y / 3.0) * 2.0, 5.0) == 0.0) col = slPal(0x5a2622, 0x22141a, s);%%!serialized_property_newline!%%            if (l.x < w * 0.5 && mod(l.y, 3.0) != 0.0) col = mix(col, slPal(0xc06a4a, 0x4a3040, s), 0.25);   // lit slope%%!serialized_property_newline!%%            if (l.y >= roofY - 1.0) col = slPal(0xd07a50, 0x5a3a48, s);%%!serialized_property_newline!%%            if (l.y == 25.0) col = slPal(0x3a1a18, 0x1a0e12, s);                                     // eave edge%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        if (chim) col = mod(l.y, 3.0) == 0.0 ? slPal(0x4a4448, 0x22222e, s) : (l.x < 40.0 ? slPal(0x7a7276, 0x3a3a46, s) : slPal(0x6a6266, 0x30303c, s));%%!serialized_property_newline!%%        // smoke from the chimney, curling on music time%%!serialized_property_newline!%%        float sh = l.y - 44.0;%%!serialized_property_newline!%%        float sx = 40.5 + sh * 0.35 + sin(sh * 0.18 - D * 1.1) * 3.0;%%!serialized_property_newline!%%        if (sh >= 0.0 && sh < 50.0 && abs(l.x - sx) < 1.2 + sh * 0.1 && vnoise2(vec2((l.x - D * 2.0) / 4.0, (l.y - D * 4.0) / 4.0)) > 0.3 + sh / 70.0)%%!serialized_property_newline!%%            col = mix(slPal(0xc8b8c0, 0x5a5a78, s), col, clamp(sh / 50.0, 0.0, 0.85));%%!serialized_property_newline!%%        // warm light falling from door and windows onto the ground in front%%!serialized_property_newline!%%        if (l.y < 3.0 && l.y > -5.0 && !base) {%%!serialized_property_newline!%%            float spill = 0.0;%%!serialized_property_newline!%%            for (int k = 0; k < 3; k++) {%%!serialized_property_newline!%%                float cx = k == 0 ? 9.5 : (k == 1 ? 26.0 : 33.5);%%!serialized_property_newline!%%                spill = max(spill, 1.0 - abs(l.x - cx) / (5.0 - l.y * 0.5));%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%            if (spill > 0.0) col = dmix(col, mix(col, vec3(1.0, 0.75, 0.4), 0.45), spill * (0.5 + 0.5 * m.energy), p);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // the old oak (right): bark trunk, a crown of leaf clumps, a rope swing moving on music time%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        vec2 base = vec2(286.0, slMeadow(286.0) - 1.0);%%!serialized_property_newline!%%        vec2 l = p - base;%%!serialized_property_newline!%%        float tw = 4.5 - l.y * 0.05 + (l.y < 3.0 ? (3.0 - l.y) * 1.0 : 0.0);                       // flared roots%%!serialized_property_newline!%%        float tc = sin(l.y * 0.08) * 1.5;%%!serialized_property_newline!%%        if (l.y >= 0.0 && l.y < 40.0 && abs(l.x + 0.5 - tc) < tw) {%%!serialized_property_newline!%%            col = l.x - tc > 0.5 ? slPal(0x4a3222, 0x1a1418, s) : slPal(0x6a4a30, 0x2a2024, s);%%!serialized_property_newline!%%            if (mod(l.y + floor(hash11(floor(l.x)) * 4.0), 5.0) == 0.0) col = slPal(0x3a2618, 0x140e10, s);   // bark%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        if (l.y >= 37.0 && l.y < 41.0 && l.x > -34.0 && l.x < 2.0 && abs(l.y - 38.0 - (l.x + 34.0) * 0.06) < 1.5)%%!serialized_property_newline!%%            col = slPal(0x5a3e28, 0x221a1e, s);                                                         // branch%%!serialized_property_newline!%%        float sway = sin(D * 0.7) * (0.6 + 0.8 * m.energy);%%!serialized_property_newline!%%        vec2 q = l - vec2(-6.0, 52.0);%%!serialized_property_newline!%%        float cr = slCrown(q, sway);%%!serialized_property_newline!%%        if (cr > 0.0) {%%!serialized_property_newline!%%            float lit = cr - 1.0;%%!serialized_property_newline!%%            col = lit > 0.7 ? slPal(0x6e9246, 0x2c4430, s) : (lit > 0.45 ? slPal(0x52763a, 0x22382a, s) : (lit > 0.2 ? slPal(0x3e5e2e, 0x1a2a20, s) : slPal(0x2a4224, 0x121e18, s)));%%!serialized_property_newline!%%            if (hash21(floor(p / 2.0)) < 0.12) col *= 0.84;                                         // leaf texture%%!serialized_property_newline!%%            if (slCrown(q - vec2(0.0, 1.0), sway) == 0.0) col = slPal(0x1e3020, 0x0c140e, s);         // underside outline%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        float sw = sin(D * 0.9) * (0.25 + 0.25 * m.energy);                                        // the swing%%!serialized_property_newline!%%        vec2 pivot = vec2(-22.0, 38.0);%%!serialized_property_newline!%%        for (int r = 0; r < 2; r++) {%%!serialized_property_newline!%%            vec2 a = pivot + vec2(float(r) * 8.0, 0.0);%%!serialized_property_newline!%%            if (segment(l, a, a + vec2(sin(sw) * 24.0, -cos(sw) * 24.0)).x < 0.6) col = slPal(0xc8b088, 0x4a4250, s);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        vec2 seat = pivot + vec2(4.0 + sin(sw) * 24.0, -cos(sw) * 24.0);%%!serialized_property_newline!%%        if (abs(l.x - floor(seat.x)) <= 5.0 && (l.y == floor(seat.y) || l.y == floor(seat.y) - 1.0))%%!serialized_property_newline!%%            col = l.y == floor(seat.y) ? slPal(0x8a5a32, 0x3a2418, s) : slPal(0x5a3a22, 0x24160e, s);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // the campfire: soft glow on the grass, a ring of stones, crossed logs, layered flames%%!serialized_property_newline!%%    float glow = 12.0 + 7.0 * m.energy + vnoise(t * 6.0);%%!serialized_property_newline!%%    float fd = length((c - SL_FIRE - vec2(0.0, 2.0)) * vec2(1.0, 1.9));%%!serialized_property_newline!%%    if (fd < glow + 6.0) col = mix(col, mix(col, vec3(1.0, 0.62, 0.3), 0.5), 0.25 * clamp((glow + 6.0 - fd) / 6.0, 0.0, 1.0));%%!serialized_property_newline!%%    if (fd < glow) col = dmix(col, mix(col, vec3(1.0, 0.62, 0.3), 0.5), (glow - fd) / glow * 1.2, p);%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        vec2 l = p - SL_FIRE;%%!serialized_property_newline!%%        if (l.y >= -1.0 && l.y < 1.0 && abs(l.x) < 9.0 && mod(l.x + 9.0, 3.0) < 2.0)              // stones%%!serialized_property_newline!%%            col = l.y == 0.0 ? slPal(0x9a8a80, 0x4a4a54, s) : slPal(0x6a6266, 0x2e2e3a, s);%%!serialized_property_newline!%%        if (abs(l.y - abs(l.x) * 0.35 - 1.0) < 0.8 && abs(l.x) < 7.0 && l.y >= 1.0 && l.y < 4.0)%%!serialized_property_newline!%%            col = l.x * (l.y - 1.0) > 0.0 ? slPal(0x7a4a2a, 0x4a2a1a, s) : slPal(0x5a3a22, 0x3a2418, s);   // crossed logs%%!serialized_property_newline!%%        float hgt = 6.0 + 7.0 * m.energy + 2.0 * m.accent;%%!serialized_property_newline!%%        for (int k = 0; k < 3; k++) {                                                              // three tongues%%!serialized_property_newline!%%            float ox = float(k - 1) * 2.0;%%!serialized_property_newline!%%            float hk = hgt * (k == 1 ? 1.0 : 0.65 + 0.15 * vnoise(t * 3.0 + float(k)));%%!serialized_property_newline!%%            float fy = l.y - 2.0;%%!serialized_property_newline!%%            float wob = (vnoise(fy * 0.5 - t * 8.0 + float(k) * 4.0) - 0.5) * 3.0;%%!serialized_property_newline!%%            if (fy >= 0.0 && fy < hk && abs(l.x + 0.5 - ox - wob * fy / hk) < (1.0 - fy / hk) * (k == 1 ? 3.6 : 2.4) + 0.3)%%!serialized_property_newline!%%                col = fy < hk * 0.3 ? vec3(1.0, 0.95, 0.7) : (fy < hk * 0.65 ? vec3(1.0, 0.65, 0.2) : vec3(0.92, 0.32, 0.1));%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // two friends on logs at the fire (hooded, warm rim light on the side facing it)%%!serialized_property_newline!%%    for (int k = 0; k < 2; k++) {%%!serialized_property_newline!%%        bool right = k == 1;%%!serialized_property_newline!%%        vec2 o = SL_FIRE + vec2(right ? 6.0 : -16.0, 1.0);%%!serialized_property_newline!%%        vec2 l = p - o;%%!serialized_property_newline!%%        float lx = right ? 9.0 - l.x : l.x;                                                          // sprite faces the fire%%!serialized_property_newline!%%        if (l.y >= -2.0 && l.y < 0.0 && lx >= -1.0 && lx < 10.0) col = l.y == -1.0 ? slPal(0x7a4a2a, 0x3a2418, s) : slPal(0x4a2e1e, 0x22160e, s);   // log seat%%!serialized_property_newline!%%        if (l.y >= 0.0 && l.y < 12.0) {%%!serialized_property_newline!%%            int row = SL_FRIEND[11 - int(l.y)];%%!serialized_property_newline!%%            if (bitAt(row, 10, lx)) {%%!serialized_property_newline!%%                bool rim = !bitAt(row, 10, lx + 1.0);%%!serialized_property_newline!%%                col = rim ? mix(vec3(0.85, 0.45, 0.22), vec3(1.0, 0.72, 0.42), m.energy) : (k == 0 ? slPal(0x3a2a44, 0x18121e, s) : slPal(0x2a3a44, 0x101820, s));%%!serialized_property_newline!%%                if (l.y == 8.0 && lx == 8.0) col = vec3(1.0, 0.78, 0.6);                             // face in the firelight%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // sparks: some always, a burst on every hit%%!serialized_property_newline!%%    int sparks = 3 + int(6.0 * m.accent) + (m.hit < 1.2 ? 8 : 0);%%!serialized_property_newline!%%    for (int k = 0; k < 17; k++) {%%!serialized_property_newline!%%        if (k >= sparks) break;%%!serialized_property_newline!%%        float fk = float(k);%%!serialized_property_newline!%%        float life = k < 9 ? fract(t * (0.5 + 0.3 * hash11(fk)) + hash11(fk * 1.3)) : m.hit / 1.2;%%!serialized_property_newline!%%        vec2 sp = SL_FIRE + vec2((hash11(fk * 5.7 + floor(m.hitSeed)) - 0.5) * 12.0 * life + sin(life * 7.0 + fk) * 2.0, 6.0 + life * 34.0);%%!serialized_property_newline!%%        if (floor(sp) == p) col = mix(vec3(1.0, 0.85, 0.4), vec3(1.0, 0.4, 0.1), life);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // fireflies over the meadow, more of them as the tension grows%%!serialized_property_newline!%%    int flies = 4 + int(16.0 * m.tension * (0.4 + 0.6 * s));%%!serialized_property_newline!%%    for (int k = 0; k < 20; k++) {%%!serialized_property_newline!%%        if (k >= flies) break;%%!serialized_property_newline!%%        float fk = float(k);%%!serialized_property_newline!%%        vec2 fp = vec2(mod(hash11(fk * 3.3) * 360.0 + sin(D * 0.3 + fk) * 14.0, PIXW), 6.0 + hash11(fk * 1.7) * 30.0 + sin(D * 0.5 + fk * 2.0) * 4.0);%%!serialized_property_newline!%%        float blink = 0.5 + 0.5 * sin(t * (1.5 + hash11(fk)) + fk * 4.0);%%!serialized_property_newline!%%        if (floor(fp) == p && blink > 0.3) col = mix(col, vec3(0.85, 1.0, 0.45), blink);%%!serialized_property_newline!%%        else if (length(c - floor(fp) - 0.5) < 2.5 && blink > 0.6) col = dmix(col, mix(col, vec3(0.7, 0.9, 0.3), 0.4), blink - 0.4, p);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ Minecraft: "Sunrise over the world"%%!serialized_property_newline!%%// A blocky world at dawn, the sun rising beside the menu over the whole track (night blue at its%%!serialized_property_newline!%%// start, morning at its end). Music: the god rays and the sun's glow grow with the tension; flat%%!serialized_property_newline!%%// block clouds drift through the valley on music time; an airship fleet with a biplane escort crosses%%!serialized_property_newline!%%// again and again, faster when the music swells; the sun flares on every hit.%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define MC_B 4.0                      // block size in virtual pixels%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 mcPal(int dawn, int day, float s) { return mix(hexrgb(dawn), hexrgb(day), s); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%float mcFarH(float c) { return 52.0 + MC_B * floor(vnoise(c * 0.11 + 4.0) * 9.0 + vnoise(c * 0.37 + 1.0) * 3.0); }%%!serialized_property_newline!%%float mcMidH(float c) { return 32.0 + MC_B * floor(vnoise(c * 0.16 + 9.0) * 7.0 + vnoise(c * 0.5 + 3.0) * 2.0); }%%!serialized_property_newline!%%float mcNearH(float c) { return 12.0 + MC_B * floor(vnoise(c * 0.2 + 17.0) * 5.0 + vnoise(c * 0.6) * 1.5); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 minecraft(vec2 p, Music m) {%%!serialized_property_newline!%%    float t = iTime;%%!serialized_property_newline!%%    float D = 0.3 * t + 0.7 * m.drive;%%!serialized_property_newline!%%    float s = smoothstep(0.0, 0.9, m.prog);                       // sunrise over the track%%!serialized_property_newline!%%    float horizon = 52.0;%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // sky: night blue -> pink dawn -> morning, banded%%!serialized_property_newline!%%    float h = clamp((p.y - horizon) / (H - horizon), 0.0, 1.0);%%!serialized_property_newline!%%    vec3 col = bands(mcPal(0xf0a060, 0xe4efe8, s), mcPal(0xc0687a, 0xa8d2ef, s), mcPal(0x4a3f7e, 0x6aa8e0, s),%%!serialized_property_newline!%%                     mcPal(0x1a2250, 0x3b78c6, s), h, p);%%!serialized_property_newline!%%    // last stars fading out%%!serialized_property_newline!%%    vec2 cell = floor(p / 5.0);%%!serialized_property_newline!%%    if (hash21(cell + 2.0) < 0.25 * (1.0 - s * 2.5) && p == cell * 5.0 + floor(hash22(cell) * 4.0) && h > 0.3)%%!serialized_property_newline!%%        col = mix(col, vec3(1.0), 0.6);%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // the sun, rising in the right column; god rays + glow with the tension, a flare on hits%%!serialized_property_newline!%%    vec2 sc = vec2(272.0, horizon - 12.0 + s * 78.0);%%!serialized_property_newline!%%    vec2 d = p + 0.5 - sc;%%!serialized_property_newline!%%    float r = length(d);%%!serialized_property_newline!%%    float ray = step(0.68, fract(atan(d.y, d.x) * 9.0 / PI + D * 0.012));%%!serialized_property_newline!%%    float rays = (0.03 + 0.22 * m.tension) * clamp(1.0 - r / 140.0, 0.0, 1.0) * ray * step(14.0, r);%%!serialized_property_newline!%%    col = mix(col, mcPal(0xffc890, 0xfff6dc, s), rays * 0.8);                     // flat, not a dot grid%%!serialized_property_newline!%%    float glow = 14.0 + 6.0 * m.energy + 7.0 * m.accent;%%!serialized_property_newline!%%    if (r < glow + 6.0) col = mix(col, mcPal(0xffb070, 0xfff0c8, s), clamp((glow + 6.0 - r) / 12.0, 0.0, 1.0) * 0.6);%%!serialized_property_newline!%%    if (r < glow) col = dmix(col, mcPal(0xffd090, 0xfffbe8, s), (glow - r) / 6.0 + 0.2, p);%%!serialized_property_newline!%%    vec2 ad = abs(d);%%!serialized_property_newline!%%    if (ad.x < 10.0 && ad.y < 10.0)                                                                   // the square sun%%!serialized_property_newline!%%        col = max(ad.x, ad.y) > 9.0 ? mcPal(0xf09030, 0xffd060, s) : (max(ad.x, ad.y) > 7.0 ? mcPal(0xffc860, 0xfff0a0, s) : mcPal(0xfff0c0, 0xfffef4, s));%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // the airship fleet (atlas sprites), lit by the sunrise, crossing again and again on music time -%%!serialized_property_newline!%%    // always solid: fading sprites in by dither left ghostly dot patterns%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        for (int k = 0; k < 3; k++) {%%!serialized_property_newline!%%            float fk = float(k);%%!serialized_property_newline!%%            float span = PIXW + 220.0;%%!serialized_property_newline!%%            float x0 = mod(D * (3.0 + fk * 0.6) + fk * 70.0, span) - 120.0;%%!serialized_property_newline!%%            float y0 = floor(H - 34.0 - fk * 16.0 + sin(t * 0.6 + fk) * 1.5);%%!serialized_property_newline!%%            vec4 c = k == 1 ? sprite(R_SHIP_BIG, int(mod(t * 10.0, 2.0)), p - vec2(floor(x0), y0))%%!serialized_property_newline!%%                            : sprite(R_SHIP_SMALL, int(mod(t * 8.0, 2.0)), p - vec2(floor(x0), y0));%%!serialized_property_newline!%%            if (c.a > 0.5 && !isKey(c, vec3(1.0, 0.0, 1.0)) && !isKey(c, vec3(1.0, 1.0, 0.0)))%%!serialized_property_newline!%%                col = mix(c.rgb, mcPal(0xff9a70, 0xffffff, s), 0.25);%%!serialized_property_newline!%%            else if (c.a > 0.5) col = mcPal(0xffd27a, 0xcfe4f4, s);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        // biplanes escorting the fleet in a loose V, a little faster than the ships%%!serialized_property_newline!%%        for (int k = 0; k < 3; k++) {%%!serialized_property_newline!%%            float fk = float(k);%%!serialized_property_newline!%%            float span = PIXW + 260.0;%%!serialized_property_newline!%%            float x0 = mod(D * 7.0 + 40.0 - abs(fk - 1.0) * 30.0, span) - 90.0;           // leader ahead,%%!serialized_property_newline!%%            float y0 = floor(H - 92.0 + (fk - 1.0) * 14.0 + sin(t * 1.1 + fk * 1.7) * 2.0);   // wingmen behind, below the ships%%!serialized_property_newline!%%            vec4 pl = biplane(p, vec2(x0, y0), false, t);%%!serialized_property_newline!%%            if (pl.a > 0.0) col = mix(col, mix(pl.rgb, mcPal(0xff9a70, 0xffffff, s), 0.2), pl.a);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // far mountains with snow, in the haze of the sunrise; their sun side (right) is lit%%!serialized_property_newline!%%    float c = floor(p.x / MC_B);%%!serialized_property_newline!%%    float bx = mod(p.x, MC_B), by = mod(p.y, MC_B);%%!serialized_property_newline!%%    float far = mcFarH(c);%%!serialized_property_newline!%%    if (p.y < far) {%%!serialized_property_newline!%%        col = mcPal(0x6a5a8e, 0x8ea6c8, s);%%!serialized_property_newline!%%        if (bx == MC_B - 1.0 && mcFarH(c + 1.0) <= p.y) col = mcPal(0x9a7aa4, 0xaabcd8, s);         // lit step edge%%!serialized_property_newline!%%        if (p.y >= far - MC_B && far > 76.0)                                                          // snow cap%%!serialized_property_newline!%%            col = (bx == 0.0 && mcFarH(c - 1.0) <= p.y) ? mcPal(0xa898c8, 0xc8d8ec, s) : mcPal(0xd8c8e8, 0xf4f8ff, s);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // mid mountains: stone blocks - lit top and sun-side edges, a little grain, snow on the high peaks%%!serialized_property_newline!%%    float mid = mcMidH(c);%%!serialized_property_newline!%%    if (p.y < mid) {%%!serialized_property_newline!%%        float bh = hash21(vec2(c, floor(p.y / MC_B)));%%!serialized_property_newline!%%        col = bh < 0.5 ? mcPal(0x3e3858, 0x687286, s) : mcPal(0x433d5e, 0x6e788c, s);%%!serialized_property_newline!%%        if (hash21(p) < 0.12) col = mcPal(0x35304c, 0x5a6478, s);                                   // grain%%!serialized_property_newline!%%        if (bx == MC_B - 1.0 && mcMidH(c + 1.0) <= p.y) col = mcPal(0x6e5a7e, 0x8c96aa, s);       // sun side%%!serialized_property_newline!%%        if (bx == 0.0 && mcMidH(c - 1.0) <= p.y) col = mcPal(0x2e2a44, 0x545e72, s);               // shade side%%!serialized_property_newline!%%        if (p.y >= mid - 1.0) col = mcPal(0x8a6a8a, 0x9aa6b8, s);                                   // lit top%%!serialized_property_newline!%%        if (p.y >= mid - MC_B && mid > 56.0) {%%!serialized_property_newline!%%            col = by >= MC_B - 2.0 ? mcPal(0xe4d8f0, 0xffffff, s) : mcPal(0xc8b8dc, 0xe8eef8, s);%%!serialized_property_newline!%%            if (bx == 0.0) col = mcPal(0xa898c8, 0xc8d4e8, s);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // sea of clouds in the valley, in front of the mid mountains: flat Minecraft clouds, lit top, shaded underside, drifting on music time%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        float x = p.x + D * 3.0;%%!serialized_property_newline!%%        vec2 cell = vec2(floor(x / (MC_B * 3.0)), floor((p.y - 26.0) / MC_B));%%!serialized_property_newline!%%        bool on = cell.y >= 0.0 && cell.y < 3.0 && vnoise(cell.x * 0.33 + cell.y * 2.7) > 0.5 - 0.08 * cell.y;%%!serialized_property_newline!%%        if (on) {%%!serialized_property_newline!%%            bool topFace = vnoise(cell.x * 0.33 + (cell.y + 1.0) * 2.7) <= 0.5 - 0.08 * (cell.y + 1.0) || cell.y == 2.0;%%!serialized_property_newline!%%            col = mod(p.y - 26.0, MC_B) == 0.0 ? mcPal(0xb07a98, 0xb8c8dc, s)%%!serialized_property_newline!%%                : (topFace && mod(p.y - 26.0, MC_B) == MC_B - 1.0 ? mcPal(0xfff0f0, 0xffffff, s) : mcPal(0xeec8d4, 0xf2f6fa, s));%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // near hills: grass blocks (grass hanging over the dirt), dirt with stones, flowers on top%%!serialized_property_newline!%%    float near = mcNearH(c);%%!serialized_property_newline!%%    if (p.y < near) {%%!serialized_property_newline!%%        float depth = near - p.y;%%!serialized_property_newline!%%        float drip = floor(hash11(p.x * 1.7) * 3.0);%%!serialized_property_newline!%%        col = hash21(floor(p / 2.0)) < 0.5 ? mcPal(0x4a3426, 0x7a5a3a, s) : mcPal(0x402c20, 0x6c4e32, s);%%!serialized_property_newline!%%        if (hash21(p + 3.0) < 0.08) col = mcPal(0x2e2018, 0x5a4028, s);%%!serialized_property_newline!%%        if (depth > MC_B && hash21(floor(p / MC_B)) < 0.1) col = hash21(p) < 0.5 ? mcPal(0x3a3a44, 0x6a6a72, s) : mcPal(0x4a4a54, 0x7e7e86, s);%%!serialized_property_newline!%%        if (depth <= 2.0 + drip) col = mcPal(0x3e6a2a, 0x5a9a3a, s);                                  // grass side%%!serialized_property_newline!%%        if (depth <= 1.0) col = hash11(p.x * 3.3) < 0.3 ? mcPal(0x6a9a40, 0x92d05a, s) : mcPal(0x5a8a3a, 0x7ac04a, s);%%!serialized_property_newline!%%        if (bx == MC_B - 1.0 && mcNearH(c + 1.0) <= p.y && depth <= 2.0) col = mcPal(0x7aaa4a, 0xa0dc68, s);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        float fh = hash11(c * 5.3);                                                                     // flowers%%!serialized_property_newline!%%        if (fh < 0.22 && bx == 1.0 + floor(fh * 8.0) && p.y == near)%%!serialized_property_newline!%%            col = fh < 0.08 ? mcPal(0xb03030, 0xe83a3a, s) : (fh < 0.15 ? mcPal(0xc8b030, 0xffe040, s) : mcPal(0x9a8ac8, 0xc8b8ff, s));%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // blocky oaks: bark trunk, rounded canopy lit from the sun side%%!serialized_property_newline!%%    for (int k = 0; k < 5; k++) {%%!serialized_property_newline!%%        float tc = floor(4.0 + float(k) * 17.0 + hash11(float(k) * 7.1) * 8.0) + (k > 1 ? 32.0 : 0.0);%%!serialized_property_newline!%%        float base = mcNearH(tc);%%!serialized_property_newline!%%        vec2 l = p - vec2(tc * MC_B, base);%%!serialized_property_newline!%%        if (l.x >= 1.0 && l.x < 3.0 && l.y >= 0.0 && l.y < 11.0)%%!serialized_property_newline!%%            col = l.x < 2.0 ? mcPal(0x2e2014, 0x5a3e24, s) : mcPal(0x3e2a1a, 0x7a5432, s);            // trunk%%!serialized_property_newline!%%        vec2 q = l - vec2(2.0, 14.0);                                                                  // canopy centre%%!serialized_property_newline!%%        bool leaf = abs(q.x) <= 6.0 && abs(q.y) <= 5.0 && !(abs(q.x) >= 5.0 && abs(q.y) >= 4.0) && !(abs(q.x) >= 6.0 && abs(q.y) >= 3.0);%%!serialized_property_newline!%%        if (leaf) {%%!serialized_property_newline!%%            float lit = (q.x + q.y) / 12.0;%%!serialized_property_newline!%%            col = lit > 0.25 ? mcPal(0x3a7a30, 0x5cb444, s) : (lit > -0.25 ? mcPal(0x2a6026, 0x44923a, s) : mcPal(0x1c4420, 0x2e6a2a, s));%%!serialized_property_newline!%%            if (hash21(floor(l / 2.0) + tc * 3.0) < 0.18) col = mcPal(0x183a1a, 0x285e26, s);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // lake at the bottom: banded water, the sun's glitter column, a lighter shore line%%!serialized_property_newline!%%    if (p.y < 6.0) {%%!serialized_property_newline!%%        col = p.y > 4.0 ? mcPal(0x34487a, 0x4a8ac0, s) : mcPal(0x2a3a6a, 0x3a78b0, s);%%!serialized_property_newline!%%        if (p.y == 5.0) col = mcPal(0x5a6a9a, 0x7ab0d8, s);%%!serialized_property_newline!%%        float g = abs(p.x - sc.x) < 9.0 + 5.0 * m.energy ? 1.0 : 0.0;%%!serialized_property_newline!%%        if (hash21(vec2(floor((p.x + t * 4.0) / 3.0), p.y)) > 0.92 - 0.3 * g) col = mcPal(0xffc890, 0xffffff, s);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // the whole world catches the light as the sun rises (dawn starts dim)%%!serialized_property_newline!%%    return col * mix(0.72, 1.0, s);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%%%!serialized_property_newline!%%bool ownsScene(int s) { return s == 4 || s == 6; }%%!serialized_property_newline!%%vec3 renderScene(int s, vec2 p, Music m) {%%!serialized_property_newline!%%    if (s == 4) return subwoofer_lullaby(p, m);%%!serialized_property_newline!%%    if (s == 6) return minecraft(p, m);%%!serialized_property_newline!%%    return vec3(0.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ main (one buffer pass)%%!serialized_property_newline!%%// This program draws the scenes ownsScene() names (generated: one, or two light ones). The title%%!serialized_property_newline!%%// background runs up to four such programs as FancyMenu buffer passes A-D and composite.glsl picks,%%!serialized_property_newline!%%// per pixel, the one that drew there - separate programs, because one shader holding every scene made%%!serialized_property_newline!%%// the driver budget registers for the heaviest of them and ran ~20x slower.%%!serialized_property_newline!%%// Only the current track's scene draws; over the first TRANSITION seconds of its play time it dissolves%%!serialized_property_newline!%%// in pixel by pixel (4x4 ordered pattern) while the previous track's scene fills the rest; while a%%!serialized_property_newline!%%// track is still loading the previous scene stays. Pixels of other programs' scenes stay transparent.%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define TRANSITION 1.6%%!serialized_property_newline!%%%%!serialized_property_newline!%%void mainImage(out vec4 fragColor, in vec2 fragCoord) {%%!serialized_property_newline!%%    fragColor = vec4(0.0);%%!serialized_property_newline!%%    int track = clamp(int(fmVarFloat_toz_music_track + 0.5), 0, N_TRACKS - 1);%%!serialized_property_newline!%%    int prev = (track + N_TRACKS - 1) % N_TRACKS;%%!serialized_property_newline!%%    if (!ownsScene(track) && !ownsScene(prev)) return;                     // cheap for idle programs%%!serialized_property_newline!%%%%!serialized_property_newline!%%    float scale = iResolution.x / PIXW;%%!serialized_property_newline!%%    H = floor(iResolution.y / scale);%%!serialized_property_newline!%%    vec2 p = floor(fragCoord / scale);%%!serialized_property_newline!%%    Music m = music(track, iTime);%%!serialized_property_newline!%%    float k = 1.0;%%!serialized_property_newline!%%    if (m.live && m.playing && N_TRACKS > 1) {                              // paused: no half-done dissolve%%!serialized_property_newline!%%        if (fmVarFloat_toz_music_dur <= 0.0) k = (track == 0 && iTime < 8.0) ? 1.0 : 0.0;   // loading; game start%%!serialized_property_newline!%%        else k = smoothstep(0.0, TRANSITION, m.pos);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    int scene = (k >= 1.0 || bayer4(p) < k) ? track : prev;%%!serialized_property_newline!%%    if (!ownsScene(scene)) return;%%!serialized_property_newline!%%%%!serialized_property_newline!%%    ATLAS_SIZE = textureSize(iChannel0, 0);%%!serialized_property_newline!%%    vec4 m0 = texelFetch(iChannel0, ivec2(0, 0), 0);%%!serialized_property_newline!%%    TOP_FIRST = m0.r > 0.5 && m0.g < 0.5;%%!serialized_property_newline!%%    if (ATLAS_SIZE.x < 8) { fragColor = vec4(0.10, 0.08, 0.16, 1.0); return; }   // atlas not loaded yet%%!serialized_property_newline!%%    fragColor = vec4(clamp(renderScene(scene, p, m), 0.0, 1.0), 1.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%
  buffer_b_ichannel0_input = resource0
  buffer_b_ichannel1_input = resource1
  buffer_c_inline_source = // Teachings of Zeta - title background buffer pass: moog_city_2, mice_on_venus (playlist slot 3, 5 of 7)%%!serialized_property_newline!%%// Generated by modpack_pipeline/menu/gen_menu_scenes.py + gen_menu_art.py from scenes/*.glsl -%%!serialized_property_newline!%%// edit those, then re-run the generators.%%!serialized_property_newline!%%%%!serialized_property_newline!%%// generated by modpack_pipeline/menu/gen_menu_art.py - atlas 384x517%%!serialized_property_newline!%%const ivec4 R_MOUNT = ivec4(0, 2, 384, 44); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_HILLS = ivec4(0, 47, 384, 30); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_VIADUCT = ivec4(0, 78, 384, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_TOWN_FAR = ivec4(0, 103, 384, 38); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_TOWN_NEAR = ivec4(0, 142, 384, 30); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_QUAY = ivec4(0, 173, 384, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_SHIP_BIG = ivec4(0, 198, 76, 32); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_SHIP_SMALL = ivec4(153, 198, 41, 17); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_LOCO = ivec4(236, 198, 28, 17); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_CAR = ivec4(293, 198, 22, 15); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_MILL = ivec4(338, 198, 14, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_BLADES = ivec4(0, 231, 30, 30); // 6 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_BIG = ivec4(0, 262, 70, 70); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_MID = ivec4(0, 333, 46, 46); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_SMALL = ivec4(185, 333, 34, 34); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_A = ivec4(0, 380, 64, 15); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_B = ivec4(65, 380, 46, 12); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_C = ivec4(112, 380, 30, 9); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_HARBOR = ivec4(0, 396, 384, 40); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_PIER = ivec4(0, 437, 384, 22); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_LIGHTHOUSE = ivec4(0, 460, 20, 56); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_MAST = ivec4(21, 460, 12, 50); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_STEAMBOAT = ivec4(34, 460, 52, 24); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_PLANE = ivec4(139, 460, 24, 13); // 2 frame(s)%%!serialized_property_newline!%%// chimney tops: x in strip, y above strip bottom, size%%!serialized_property_newline!%%const int N_CHIM_NEAR = 5;%%!serialized_property_newline!%%const vec3 CHIM_NEAR[5] = vec3[5](vec3(4.0, 20.0, 1.0), vec3(124.0, 26.0, 1.0), vec3(188.0, 21.0, 1.0), vec3(231.0, 30.0, 1.0), vec3(317.0, 24.0, 1.0));%%!serialized_property_newline!%%const int N_CHIM_FAR = 6;%%!serialized_property_newline!%%const vec3 CHIM_FAR[6] = vec3[6](vec3(156.0, 18.0, 1.0), vec3(166.0, 20.0, 1.0), vec3(203.0, 19.0, 1.0), vec3(355.0, 27.0, 1.0), vec3(363.0, 25.0, 1.0), vec3(377.0, 22.0, 1.0));%%!serialized_property_newline!%%const int N_CHIM_HARBOR = 2;%%!serialized_property_newline!%%const vec3 CHIM_HARBOR[2] = vec3[2](vec3(310.5, 31.0, 1.6), vec3(321.5, 31.0, 1.6));%%!serialized_property_newline!%%const float STRIP_W = 384.0;%%!serialized_property_newline!%%const vec2 MILL = vec2(46.0, 17.0); // windmill base in the hills strip%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ common (all scenes)%%!serialized_property_newline!%%// Every scene draws on a PIXW px wide virtual grid (p = virtual pixel, y up, 0 at the bottom; H = height)%%!serialized_property_newline!%%// and gets the music as a Music value: see music() at the end of this file.%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define PIXW 320.0%%!serialized_property_newline!%%#define PI 3.14159265%%!serialized_property_newline!%%%%!serialized_property_newline!%%// FancyMenu variables (set every frame by Tickers in the title layout), uploaded as fmVarFloat_<name>%%!serialized_property_newline!%%uniform float fmVarFloat_toz_music_pos;     // seconds into the current track; -1 = addon missing%%!serialized_property_newline!%%uniform float fmVarFloat_toz_music_dur;     // length of the current track; 0 while it is loading%%!serialized_property_newline!%%uniform float fmVarFloat_toz_music_track;   // playlist index of the current track%%!serialized_property_newline!%%uniform int fmVarBool_toz_music_playing;     // 1 while the track plays (0 paused / stopped)%%!serialized_property_newline!%%%%!serialized_property_newline!%%float H;            // virtual height%%!serialized_property_newline!%%bool TOP_FIRST;     // atlas row 0 is the image's top row%%!serialized_property_newline!%%ivec2 ATLAS_SIZE;%%!serialized_property_newline!%%%%!serialized_property_newline!%%float hash11(float p) { p = fract(p * 0.1031); p *= p + 33.33; p *= p + p; return fract(p); }%%!serialized_property_newline!%%float hash21(vec2 p) { vec3 p3 = fract(vec3(p.xyx) * 0.1031); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.x + p3.y) * p3.z); }%%!serialized_property_newline!%%vec2 hash22(vec2 p) { vec3 p3 = fract(vec3(p.xyx) * vec3(0.1031, 0.1030, 0.0973)); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.xx + p3.yz) * p3.zy); }%%!serialized_property_newline!%%vec3 hexrgb(int h) { return vec3(float((h >> 16) & 255), float((h >> 8) & 255), float(h & 255)) / 255.0; }%%!serialized_property_newline!%%float vnoise(float x) { float i = floor(x), f = fract(x); return mix(hash11(i), hash11(i + 1.0), f * f * (3.0 - 2.0 * f)); }%%!serialized_property_newline!%%float vnoise2(vec2 p) {%%!serialized_property_newline!%%    vec2 i = floor(p), f = fract(p);%%!serialized_property_newline!%%    vec2 u = f * f * (3.0 - 2.0 * f);%%!serialized_property_newline!%%    return mix(mix(hash21(i), hash21(i + vec2(1.0, 0.0)), u.x), mix(hash21(i + vec2(0.0, 1.0)), hash21(i + 1.0), u.x), u.y);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// pixel-stepped ridge line: height of a silhouette at column x%%!serialized_property_newline!%%float ridge(float x, float seed, float amp, float scale) {%%!serialized_property_newline!%%    return floor(amp * (0.55 * vnoise(x / scale + seed) + 0.3 * vnoise(x / (scale * 0.37) + seed * 3.1) + 0.15 * vnoise(x / (scale * 0.13) + seed * 7.7)));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// 4x4 ordered dither threshold (0..1): the pixel-art way to blend two flat colours%%!serialized_property_newline!%%float bayer4(vec2 p) {%%!serialized_property_newline!%%    const int M[16] = int[16](0, 8, 2, 10, 12, 4, 14, 6, 3, 11, 1, 9, 15, 7, 13, 5);%%!serialized_property_newline!%%    int x = int(mod(p.x, 4.0)), y = int(mod(p.y, 4.0));%%!serialized_property_newline!%%    return (float(M[y * 4 + x]) + 0.5) / 16.0;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec3 dmix(vec3 a, vec3 b, float f, vec2 p) { return f > bayer4(p) ? b : a; }%%!serialized_property_newline!%%// stepped vertical gradient through a 4-colour palette (h 0..1 = c0..c3): 4 flat shades between each%%!serialized_property_newline!%%// pair (12 bands), joined by a thin ordered-dither seam instead of a wide checkerboard%%!serialized_property_newline!%%vec3 bands(vec3 c0, vec3 c1, vec3 c2, vec3 c3, float h, vec2 p) {%%!serialized_property_newline!%%    float f = clamp(h, 0.0, 0.999) * 12.0;%%!serialized_property_newline!%%    float level = clamp(floor(f + (bayer4(p) - 0.5) * 0.5), 0.0, 11.0);%%!serialized_property_newline!%%    float x = (level + 0.5) / 4.0;                                      // 0..3 across the palette%%!serialized_property_newline!%%    return x < 1.0 ? mix(c0, c1, x) : (x < 2.0 ? mix(c1, c2, x - 1.0) : mix(c2, c3, x - 2.0));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%float luma(vec3 c) { return dot(c, vec3(0.30, 0.59, 0.11)); }%%!serialized_property_newline!%%vec2 rot(vec2 v, float a) { float c = cos(a), s = sin(a); return vec2(c * v.x - s * v.y, s * v.x + c * v.y); }%%!serialized_property_newline!%%// distance from the pixel centre to segment a-b (.x) and how far along it the closest point is (.y, 0..1)%%!serialized_property_newline!%%vec2 segment(vec2 p, vec2 a, vec2 b) {%%!serialized_property_newline!%%    vec2 pa = p + 0.5 - a, ba = b - a;%%!serialized_property_newline!%%    float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);%%!serialized_property_newline!%%    return vec2(length(pa - ba * h), h);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// 3x5 pixel glyphs: 0-9 + x = pi sigma root; l = pixel inside the glyph, x from the left, y from the top%%!serialized_property_newline!%%const int GLYPH[16] = int[16](31599, 11415, 29671, 29647, 23497, 31183, 31215, 29330, 31727, 31695,%%!serialized_property_newline!%%                              1488, 2728, 3640, 31597, 30887, 4714);%%!serialized_property_newline!%%bool glyph(int g, vec2 l) {%%!serialized_property_newline!%%    if (l.x < 0.0 || l.y < 0.0 || l.x > 2.0 || l.y > 4.0) return false;%%!serialized_property_newline!%%    return ((GLYPH[g & 15] >> ((4 - int(l.y)) * 3 + (2 - int(l.x)))) & 1) == 1;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// bitmap sprite of up to 16 columns: rows[] top to bottom, bit (w-1) = leftmost pixel%%!serialized_property_newline!%%bool bitAt(int row, int w, float x) { return x >= 0.0 && x < float(w) && ((row >> (w - 1 - int(x))) & 1) == 1; }%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ atlas access (iChannel0)%%!serialized_property_newline!%%vec4 texel(int x, int y) {%%!serialized_property_newline!%%    int ty = TOP_FIRST ? y : ATLAS_SIZE.y - 1 - y;%%!serialized_property_newline!%%    return texelFetch(iChannel0, ivec2(x, ty), 0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// local: pixel inside the sprite, y counted up from the sprite's bottom row%%!serialized_property_newline!%%vec4 sprite(ivec4 r, int frame, vec2 local) {%%!serialized_property_newline!%%    if (local.x < 0.0 || local.y < 0.0 || local.x >= float(r.z) || local.y >= float(r.w)) return vec4(0.0);%%!serialized_property_newline!%%    return texel(r.x + frame * r.z + int(local.x), r.y + r.w - 1 - int(local.y));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// sprites face right; `left` mirrors them, so nothing ever flies backwards%%!serialized_property_newline!%%vec4 spriteDir(ivec4 r, int frame, vec2 local, bool left) {%%!serialized_property_newline!%%    if (left) local.x = float(r.z) - 1.0 - local.x;%%!serialized_property_newline!%%    return sprite(r, frame, local);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// a biplane with its bottom-left at `pos`, propeller spinning, puffs of exhaust trailing behind;%%!serialized_property_newline!%%// .a = coverage (1 for the plane, less for the fading puffs)%%!serialized_property_newline!%%vec4 biplane(vec2 p, vec2 pos, bool left, float t) {%%!serialized_property_newline!%%    vec2 o = floor(pos);%%!serialized_property_newline!%%    vec4 c = spriteDir(R_PLANE, int(mod(t * 16.0, 2.0)), p - o, left);%%!serialized_property_newline!%%    if (c.a > 0.5) return vec4(c.rgb, 1.0);%%!serialized_property_newline!%%    float back = left ? p.x - (o.x + float(R_PLANE.z)) : o.x - p.x;              // distance behind the tail%%!serialized_property_newline!%%    if (back >= 1.0 && back < 22.0 && p.y == o.y + 6.0 + floor(back / 11.0) && mod(back + floor(t * 12.0), 5.0) < 2.0)%%!serialized_property_newline!%%        return vec4(vec3(0.96, 0.96, 0.98), 0.9 - back / 24.0);%%!serialized_property_newline!%%    return vec4(0.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec4 strip(ivec4 r, float x, float ly) {%%!serialized_property_newline!%%    if (ly < 0.0 || ly >= float(r.w)) return vec4(0.0);%%!serialized_property_newline!%%    return texel(r.x + int(mod(x, STRIP_W)), r.y + r.w - 1 - int(ly));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%bool isKey(vec4 c, vec3 k) { return c.a > 0.5 && all(lessThan(abs(c.rgb - k), vec3(0.02))); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ music (iChannel1 = envelope.png)%%!serialized_property_newline!%%struct Music {%%!serialized_property_newline!%%    float tension;  // the song's arc, 0..1 (seconds)%%!serialized_property_newline!%%    float energy;   // loudness of the moment, 0..1%%!serialized_property_newline!%%    float accent;   // hits / note onsets, jumps up and decays in ~0.2 s%%!serialized_property_newline!%%    float hit;      // seconds since the last big hit (>= HIT_NONE: none lately) - for longer events%%!serialized_property_newline!%%    float hitSeed;  // differs per big hit: picks where/how its event happens%%!serialized_property_newline!%%    float drive;    // music time: runs 0.3x (calm) .. 1.7x (climax) real time, never jumps%%!serialized_property_newline!%%    float pos;      // seconds into the track%%!serialized_property_newline!%%    float prog;     // 0..1 through the track%%!serialized_property_newline!%%    bool live;      // false: no position (addon missing) - a slow synthetic swell instead%%!serialized_property_newline!%%    bool playing;   // false while paused: the song's state holds, hits and their events stay away%%!serialized_property_newline!%%};%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define HIT_NONE 2.5%%!serialized_property_newline!%%%%!serialized_property_newline!%%ivec2 ENV_SIZE;%%!serialized_property_newline!%%bool ENV_TOP;%%!serialized_property_newline!%%vec4 envTexel(int x, int y) {%%!serialized_property_newline!%%    int ty = ENV_TOP ? y : ENV_SIZE.y - 1 - y;%%!serialized_property_newline!%%    return texelFetch(iChannel1, ivec2(x, ty), 0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec4 envAt(int row0, int i) { return envTexel(i % ENV_SIZE.x, row0 + i / ENV_SIZE.x); }%%!serialized_property_newline!%%int u8(float v) { return int(v * 255.0 + 0.5); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%Music synthetic(float t) {%%!serialized_property_newline!%%    float s = 0.5 + 0.5 * sin(t * 0.07);%%!serialized_property_newline!%%    return Music(0.35 + 0.3 * s, 0.4 + 0.3 * s, 0.0, 9.0, 0.0, t, 0.0, fract(t / 240.0), false, true);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%Music music(int track, float t) {%%!serialized_property_newline!%%    ENV_SIZE = textureSize(iChannel1, 0);%%!serialized_property_newline!%%    float pos = fmVarFloat_toz_music_pos;%%!serialized_property_newline!%%    if (pos < 0.0 || ENV_SIZE.x < 8) return synthetic(t);%%!serialized_property_newline!%%    vec4 mark = texelFetch(iChannel1, ivec2(0, 0), 0);%%!serialized_property_newline!%%    ENV_TOP = mark.r > 0.5 && mark.g < 0.5;%%!serialized_property_newline!%%    vec4 h = envTexel(1 + track, 0);%%!serialized_property_newline!%%    int row0 = u8(h.r), n = u8(h.g) * 256 + u8(h.b);%%!serialized_property_newline!%%    float rate = float(u8(ENV_TOP ? mark.b : envTexel(0, 0).b));%%!serialized_property_newline!%%    if (row0 < 1 || n < 2 || rate < 1.0) return synthetic(t);%%!serialized_property_newline!%%    float fi = clamp(pos * rate, 0.0, float(n) - 1.001);%%!serialized_property_newline!%%    int i = int(fi);%%!serialized_property_newline!%%    float f = fract(fi);%%!serialized_property_newline!%%    vec3 v = mix(envAt(row0, i).rgb, envAt(row0, i + 1).rgb, f);%%!serialized_property_newline!%%    int drow = row0 + (n + ENV_SIZE.x - 1) / ENV_SIZE.x;%%!serialized_property_newline!%%    vec4 da = envAt(drow, i), db = envAt(drow, i + 1);%%!serialized_property_newline!%%    float drive = mix(float(u8(da.r) * 256 + u8(da.g)), float(u8(db.r) * 256 + u8(db.g)), f) * 0.01;%%!serialized_property_newline!%%    int age = u8(da.b);                                   // centiseconds since the last big hit%%!serialized_property_newline!%%    float hit = age >= 250 ? 9.0 : float(age) * 0.01 + f / rate;%%!serialized_property_newline!%%    float dur = fmVarFloat_toz_music_dur > 0.0 ? fmVarFloat_toz_music_dur : float(n) / rate;%%!serialized_property_newline!%%    // paused: the position stands still, so a hit (flash, firework, lightning...) would freeze mid-air -%%!serialized_property_newline!%%    // keep the song's state (tension, energy, drive) and drop the hits%%!serialized_property_newline!%%    if (fmVarBool_toz_music_playing == 0) return Music(v.r, v.g, 0.0, 9.0, 0.0, drive, pos, clamp(pos / dur, 0.0, 1.0), true, false);%%!serialized_property_newline!%%    return Music(v.r, v.g, v.b, hit, floor((pos - hit) * 4.0 + 0.5), drive, pos, clamp(pos / dur, 0.0, 1.0), true, true);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%%%!serialized_property_newline!%%const int N_TRACKS = 7;%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ Moog City 2: "Foundry in the rain"%%!serialized_property_newline!%%// Zeta's iron works at night, under a red sky and heavy rain - the dramatic, villainous cover.%%!serialized_property_newline!%%// A real street in front: brick tenements, warehouses, a factory hall, a clock tower, gas lamps.%%!serialized_property_newline!%%// Music: the rain thickens and the cloud banks race with the tension; searchlights sweep and the%%!serialized_property_newline!%%// elevated tram runs on music time; the flare stacks burn higher with the energy; the warning lights on%%!serialized_property_newline!%%// the chimneys blink on the hits; every big hit at mid tension or above throws a lightning bolt that%%!serialized_property_newline!%%// lights up the whole works.%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 mgSky(vec2 p, float D, Music m, float flash) {%%!serialized_property_newline!%%    vec3 col = bands(hexrgb(0x7a2424), hexrgb(0x4c1520), hexrgb(0x2c0c17), hexrgb(0x15070e), p.y / H * 1.1, p);%%!serialized_property_newline!%%    // layered cloud banks racing with the tension: filled bodies (darker the higher they hang), their%%!serialized_property_newline!%%    // undersides glowing red from the fires below, the glow fading up into the body%%!serialized_property_newline!%%    float n = 0.0, under = 99.0;%%!serialized_property_newline!%%    for (int k = 0; k < 4; k++) {%%!serialized_property_newline!%%        float fk = float(k);%%!serialized_property_newline!%%        float y0 = H * (0.5 + 0.13 * fk);%%!serialized_property_newline!%%        float x = p.x + D * (5.0 + 8.0 * m.tension) * (1.0 + 0.35 * fk) + fk * 77.0;%%!serialized_property_newline!%%        float edge = y0 + floor((vnoise(x / 30.0 + fk * 5.0) - 0.5) * 16.0 + (vnoise(x / 8.0 + fk) - 0.5) * 5.0);%%!serialized_property_newline!%%        if (p.y >= edge) { n = fk + 1.0; under = p.y - edge; }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    if (n > 0.0) {%%!serialized_property_newline!%%        float glow = (0.55 + 0.45 * m.energy) * (1.0 - (n - 1.0) / 4.0);%%!serialized_property_newline!%%        vec3 body = mix(hexrgb(0x4a1820), hexrgb(0x1c0810), (n - 1.0) / 3.0);%%!serialized_property_newline!%%        vec3 lit = mix(hexrgb(0x8a2e26), hexrgb(0xc8582e), glow * 0.6);%%!serialized_property_newline!%%        col = dmix(body, mix(body, lit, glow), 1.0 - under / 6.0, p);%%!serialized_property_newline!%%        if (under < 1.0) col = mix(lit, hexrgb(0xe0784a), glow * 0.5);                // the brightest rim%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return mix(col, hexrgb(0xe6dcff), flash * (n > 0.0 ? 0.55 : 0.25));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// jagged bolt from the clouds to the ground; seed picks its column and kinks%%!serialized_property_newline!%%float mgBolt(vec2 p, float seed) {%%!serialized_property_newline!%%    float x0 = seed < 0.5 ? 24.0 + 50.0 * hash11(seed * 9.1) : 250.0 + 54.0 * hash11(seed * 9.1);%%!serialized_property_newline!%%    float y = p.y;%%!serialized_property_newline!%%    if (y < 30.0 || y > H - 12.0) return 0.0;%%!serialized_property_newline!%%    float seg = floor((H - 12.0 - y) / 9.0);%%!serialized_property_newline!%%    float fy = fract((H - 12.0 - y) / 9.0);%%!serialized_property_newline!%%    float xa = x0 + (hash11(seed * 3.0 + seg) - 0.5) * 16.0 * min(seg, 1.0);%%!serialized_property_newline!%%    float xb = x0 + (hash11(seed * 3.0 + seg + 1.0) - 0.5) * 16.0;%%!serialized_property_newline!%%    float xc = floor(mix(xa, xb, fy));%%!serialized_property_newline!%%    if (abs(p.x - xc) < 0.6) return 1.0;%%!serialized_property_newline!%%    if (abs(p.x - xc) < 1.6) return 0.5;%%!serialized_property_newline!%%    float bs = 2.0 + floor(hash11(seed * 7.0) * 3.0);                 // one branch%%!serialized_property_newline!%%    if (seg == bs && abs(p.x - (xc + (fy * 12.0) * (hash11(seed) < 0.5 ? -1.0 : 1.0))) < 0.6) return 0.7;%%!serialized_property_newline!%%    return 0.0;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// silhouette colour with a cold rim on its top edge while the lightning flashes%%!serialized_property_newline!%%vec3 mgSil(vec3 base, bool topEdge, float flash) {%%!serialized_property_newline!%%    return topEdge && flash > 0.0 ? mix(base, hexrgb(0xc8b8f0), flash * 0.8) : base;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 moog_city_2(vec2 p, Music m) {%%!serialized_property_newline!%%    float t = iTime;%%!serialized_property_newline!%%    float D = 0.3 * t + 0.7 * m.drive;%%!serialized_property_newline!%%    // lightning: a big hit at mid tension or more; it flickers twice within 0.5 s%%!serialized_property_newline!%%    float bolt = 0.0, flash = 0.0;%%!serialized_property_newline!%%    if (m.tension > 0.4 && m.hit < 0.55) {%%!serialized_property_newline!%%        flash = (m.hit < 0.12 ? 1.0 : (m.hit > 0.2 && m.hit < 0.3 ? 0.7 : 0.0)) * (1.0 - m.hit);%%!serialized_property_newline!%%        bolt = flash > 0.0 ? mgBolt(p, hash11(m.hitSeed * 1.3)) : 0.0;%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    vec3 col = mgSky(p, D, m, flash);%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // searchlights from the works, sweeping on music time%%!serialized_property_newline!%%    for (int k = 0; k < 2; k++) {%%!serialized_property_newline!%%        vec2 o = vec2(k == 0 ? 54.0 : 266.0, 34.0);%%!serialized_property_newline!%%        float a = PI * 0.5 + sin(D * (0.22 + 0.07 * float(k)) + float(k) * 2.0) * 0.55;%%!serialized_property_newline!%%        vec2 dir = vec2(cos(a), sin(a));%%!serialized_property_newline!%%        vec2 d = p + 0.5 - o;%%!serialized_property_newline!%%        float along = dot(d, dir), across = abs(dot(d, vec2(-dir.y, dir.x)));%%!serialized_property_newline!%%        if (along > 0.0 && across < 0.8 + along * 0.035)%%!serialized_property_newline!%%            col = mix(col, hexrgb(0xffe6b0), clamp((0.1 + 0.22 * m.energy) * (1.0 - along / (H * 0.9)) * (across < 0.6 ? 1.6 : 0.9), 0.0, 1.0) * 0.7);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // far works: chimneys, gas holders, lit windows - silhouettes against the red glow%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        float bi = floor((p.x + 7.0) / 23.0), lx = mod(p.x + 7.0, 23.0);%%!serialized_property_newline!%%        float r = hash11(bi * 1.9);%%!serialized_property_newline!%%        float top = 52.0 + floor(r * 14.0);%%!serialized_property_newline!%%        float stackTop = top + 26.0 + floor(hash11(bi * 4.4) * 18.0);%%!serialized_property_newline!%%        bool stack = abs(lx - 11.0) < 2.0 && p.y < stackTop && r > 0.35;%%!serialized_property_newline!%%        bool holder = r < 0.35 && lx > 3.0 && lx < 20.0 && p.y < top + 10.0;%%!serialized_property_newline!%%        if (p.y < top || stack || holder) {%%!serialized_property_newline!%%            col = mgSil(hexrgb(0x1c0a12), p.y >= (stack ? stackTop : (holder ? top + 10.0 : top)) - 1.0, flash);%%!serialized_property_newline!%%            if (holder && mod(lx, 4.0) < 1.0) col = hexrgb(0x2c111a);                      // holder frame%%!serialized_property_newline!%%            if (holder && p.y >= top + 9.0) col = mgSil(hexrgb(0x3a1720), true, flash);%%!serialized_property_newline!%%            if (stack && p.y < stackTop && p.y > stackTop - 3.0 && mod(p.y, 2.0) < 1.0) col = hexrgb(0x3a1720);%%!serialized_property_newline!%%            if (!stack && !holder && p.y < top - 3.0 && mod(p.x, 4.0) < 1.0 && mod(p.y, 5.0) < 2.0%%!serialized_property_newline!%%                && hash21(floor(p / vec2(4.0, 5.0))) < 0.3)%%!serialized_property_newline!%%                col = mix(hexrgb(0x8a3a12), hexrgb(0xffa040), step(0.5, hash21(floor(p / vec2(4.0, 5.0)) + floor(t * 0.4))));%%!serialized_property_newline!%%            // warning lights on the stack tops: slow blink, and on every hit%%!serialized_property_newline!%%            if (stack && p.y == stackTop - 1.0 && abs(lx - 11.0) < 1.0) {%%!serialized_property_newline!%%                float on = step(0.5, fract(t * 0.6 + r * 3.0)) * 0.6 + m.accent;%%!serialized_property_newline!%%                col = mix(hexrgb(0x5a1010), hexrgb(0xff4a3a), clamp(on, 0.0, 1.0));%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        // smoke from the stacks, lit red from below, drifting right%%!serialized_property_newline!%%        if (r > 0.35 && p.y >= stackTop && p.y < stackTop + 40.0) {%%!serialized_property_newline!%%            float h = p.y - stackTop;%%!serialized_property_newline!%%            float sx = 11.0 + h * 0.8 + sin(h * 0.2 + D) * 2.0;%%!serialized_property_newline!%%            float n = vnoise2(vec2((p.x - D * 4.0) / 6.0, (p.y - D * 3.0) / 6.0));%%!serialized_property_newline!%%            if (abs(lx - sx) < 2.0 + h * 0.18 && n > 0.35 + h / 60.0) col = mix(hexrgb(0x5a222a), hexrgb(0x2a1218), h / 40.0);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // the crane on the right, its hook swinging on music time%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        vec2 c = vec2(232.0, 60.0);%%!serialized_property_newline!%%        bool mast = abs(p.x - c.x) < 1.5 && p.y < c.y + 34.0;%%!serialized_property_newline!%%        bool jib = p.y > c.y + 30.0 && p.y < c.y + 33.0 && p.x > c.x - 40.0 && p.x < c.x + 12.0;%%!serialized_property_newline!%%        bool lattice = jib && mod(p.x + p.y, 4.0) < 1.0;%%!serialized_property_newline!%%        float hookX = c.x - 26.0 + sin(D * 0.3) * 8.0;%%!serialized_property_newline!%%        bool cable = abs(p.x - floor(hookX)) < 0.5 && p.y < c.y + 31.0 && p.y > c.y + 6.0;%%!serialized_property_newline!%%        if (mast || (jib && !lattice) || cable) col = mgSil(hexrgb(0x1c0a12), jib && p.y >= c.y + 32.0, flash);%%!serialized_property_newline!%%        if (p.x == c.x + 11.0 && p.y == c.y + 33.0) col = mix(hexrgb(0x5a1010), hexrgb(0xff4a3a), step(0.5, fract(t * 0.8)));%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // elevated tramway on arches, a lit tram crossing on music time%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        float deck = 46.0;%%!serialized_property_newline!%%        bool beam = p.y >= deck - 2.0 && p.y < deck;%%!serialized_property_newline!%%        float ax = mod(p.x, 26.0);%%!serialized_property_newline!%%        bool pier = ax < 3.0 && p.y < deck - 2.0;%%!serialized_property_newline!%%        bool arch = p.y < deck - 2.0 && p.y > deck - 9.0 + floor(pow(abs(ax - 14.5) / 11.5, 2.0) * 6.0) && ax >= 3.0;%%!serialized_property_newline!%%        if (beam || pier || (arch && false)) col = mgSil(hexrgb(0x240c14), p.y == deck - 1.0, flash);%%!serialized_property_newline!%%        float span = PIXW + 90.0;%%!serialized_property_newline!%%        float tx = mod(D * 9.0, span + 160.0) - 80.0;%%!serialized_property_newline!%%        float lx = p.x - floor(tx);%%!serialized_property_newline!%%        if (lx >= 0.0 && lx < 60.0 && p.y >= deck && p.y < deck + 7.0 && mod(lx, 20.0) < 18.0) {%%!serialized_property_newline!%%            float cy = p.y - deck;%%!serialized_property_newline!%%            col = cy >= 6.0 ? hexrgb(0x3a1a22) : hexrgb(0x2a0f18);%%!serialized_property_newline!%%            if (cy >= 2.0 && cy < 5.0 && mod(lx, 4.0) >= 1.0 && mod(lx, 20.0) > 1.0 && mod(lx, 20.0) < 17.0)%%!serialized_property_newline!%%                col = mix(hexrgb(0xf0a050), hexrgb(0xffd890), 0.3 + 0.4 * m.energy);%%!serialized_property_newline!%%            if (lx >= 58.0 && cy >= 2.0 && cy < 4.0) col = hexrgb(0xfff0c0);                    // headlight%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        if (p.y == deck + 9.0 && p.x > floor(tx) + 4.0 && p.x < floor(tx) + 56.0 && mod(p.x, 20.0) < 1.0) col = hexrgb(0x3a1a22);  // pantographs%%!serialized_property_newline!%%        if (p.y == deck + 10.0 && p.x >= -10.0) col = mod(p.x, 6.0) < 1.0 ? hexrgb(0x3a1a22) : col;                               // wire%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // the near street: a row of real buildings - brick tenements with cornices, water tanks and fire%%!serialized_property_newline!%%    // escapes, warehouses with arched windows, a factory hall with skylights, the odd clock tower -%%!serialized_property_newline!%%    // rim-lit red by the sky, windows glowing (with the energy), gas lamps along the pavement%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        float x = p.x + 400.0, i = 0.0, x0 = 0.0;%%!serialized_property_newline!%%        for (int k = 0; k < 24; k++) { float w = 18.0 + floor(hash11(i * 3.7) * 16.0); if (x < x0 + w) break; x0 += w; i += 1.0; }%%!serialized_property_newline!%%        float w = 18.0 + floor(hash11(i * 3.7) * 16.0), lx = x - x0, rx = w - 1.0 - lx;%%!serialized_property_newline!%%        float kind = hash11(i * 5.3);                      // < .45 tenement, < .7 warehouse, < .92 factory, else tower%%!serialized_property_newline!%%        float top = kind < 0.45 ? 30.0 + floor(hash11(i * 7.1) * 18.0) : (kind < 0.7 ? 26.0 + floor(hash11(i * 7.1) * 8.0)%%!serialized_property_newline!%%                  : (kind < 0.92 ? 24.0 : 50.0));%%!serialized_property_newline!%%        float roof = top;%%!serialized_property_newline!%%        if (kind >= 0.45 && kind < 0.7) roof = top + floor((w * 0.5 - abs(lx + 0.5 - w * 0.5)) * 0.45);   // low gable%%!serialized_property_newline!%%        if (kind >= 0.7 && kind < 0.92) { float saw = mod(lx, 8.0); roof = top + floor(saw < 6.0 ? saw * 0.67 : (8.0 - saw) * 2.0); }%%!serialized_property_newline!%%        bool body = p.y >= 6.0 && p.y < roof && lx >= 0.0 && rx >= 0.0;%%!serialized_property_newline!%%        // a water tank on stilts on some tenements, a clock on the towers%%!serialized_property_newline!%%        bool tank = kind < 0.45 && hash11(i * 9.1) < 0.6 && abs(lx - w * 0.6) < 3.0 && p.y >= top + 2.0 && p.y < top + 8.0;%%!serialized_property_newline!%%        bool stilts = kind < 0.45 && hash11(i * 9.1) < 0.6 && (abs(lx - w * 0.6) == 2.0) && p.y >= top && p.y < top + 2.0;%%!serialized_property_newline!%%        bool spire = kind >= 0.92 && p.y >= top && p.y < top + 8.0 && abs(lx + 0.5 - w * 0.5) < (top + 8.0 - p.y) * 0.5;%%!serialized_property_newline!%%        if (body || tank || stilts || spire) {%%!serialized_property_newline!%%            bool edge = p.y >= roof - 1.0 || (tank && p.y >= top + 7.0);%%!serialized_property_newline!%%            vec3 brick = mod(p.y, 3.0) == 0.0 || mod(lx + floor(p.y / 3.0) * 2.0, 6.0) == 0.0 ? hexrgb(0x1a080c) : hexrgb(0x2a0e14);%%!serialized_property_newline!%%            col = kind < 0.45 ? brick : (kind < 0.7 ? hexrgb(0x241016) : hexrgb(0x1c0a10));%%!serialized_property_newline!%%            if (tank) col = mod(p.y, 2.0) < 1.0 ? hexrgb(0x2e1418) : hexrgb(0x3a1a1e);%%!serialized_property_newline!%%            if (stilts || spire) col = hexrgb(0x1c0a10);%%!serialized_property_newline!%%            if (lx == 0.0) col *= 0.75;                                                 // building seams%%!serialized_property_newline!%%            if (kind < 0.45 && p.y >= top - 2.0 && p.y < top && !tank) col = hexrgb(0x3e161c);   // cornice%%!serialized_property_newline!%%            col = mgSil(col, edge, flash);%%!serialized_property_newline!%%            if (edge && flash <= 0.0) col = mix(col, hexrgb(0x7a2a26), 0.6);                    // sky rim%%!serialized_property_newline!%%            float wid = hash21(vec2(i, floor(p.y / 6.0)) + floor(lx / 4.0) * 0.37);%%!serialized_property_newline!%%            float on = step(wid, 0.35 + 0.35 * m.tension) * (0.65 + 0.35 * vnoise(t * 0.7 + wid * 40.0));%%!serialized_property_newline!%%            vec3 lit = mix(hexrgb(0x6a2610), hexrgb(0xffb050), clamp(on * (0.6 + 0.4 * m.energy), 0.0, 1.0));%%!serialized_property_newline!%%            if (kind < 0.45 && p.y > 10.0 && p.y < top - 3.0 && lx > 1.0 && rx > 1.0 && mod(lx - 2.0, 4.0) < 2.0 && mod(p.y - 10.0, 6.0) < 3.0)%%!serialized_property_newline!%%                col = on > 0.0 ? lit : hexrgb(0x12060a);                                // window grid%%!serialized_property_newline!%%            if (kind < 0.45 && hash11(i * 4.4) < 0.5 && rx >= 1.0 && rx < 6.0 && p.y > 10.0 && p.y < top - 3.0%%!serialized_property_newline!%%                && (mod(p.y - 9.0, 6.0) == 0.0 || (rx == 1.0 || rx == 5.0) || abs(rx - 1.0 - mod(p.y - 9.0, 6.0) * 0.67) < 0.5))%%!serialized_property_newline!%%                col = hexrgb(0x3a1a20);                                                  // fire escape%%!serialized_property_newline!%%            if (kind >= 0.45 && kind < 0.7) {                                            // warehouse arches%%!serialized_property_newline!%%                float ax = mod(lx - 2.0, 7.0), ay = p.y - 10.0;%%!serialized_property_newline!%%                if (lx > 1.0 && rx > 1.0 && ax < 5.0 && ay >= 0.0 && ay < 9.0 + 2.0 - abs(ax - 2.0) && ay < top - 13.0)%%!serialized_property_newline!%%                    col = ay < 1.0 ? hexrgb(0x3e161c) : (on > 0.0 || ax == 2.0 ? lit * (ax == 2.0 ? 0.6 : 1.0) : hexrgb(0x12060a));%%!serialized_property_newline!%%                if (lx > 4.0 && rx > 4.0 && p.y < 15.0 && abs(lx + 0.5 - w * 0.5) < 4.0) col = hexrgb(0x3a1a12);   // loading door%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%            if (kind >= 0.7 && kind < 0.92) {                                            // factory: skylights + tall windows%%!serialized_property_newline!%%                float saw = mod(lx, 8.0);%%!serialized_property_newline!%%                if (saw >= 6.0 && p.y >= top + 1.0 && p.y < roof - 1.0)%%!serialized_property_newline!%%                    col = mix(hexrgb(0x8a3010), hexrgb(0xff9a40), 0.4 + 0.5 * m.energy * (0.7 + 0.3 * vnoise(t * 2.0 + floor(lx / 8.0))));%%!serialized_property_newline!%%                if (mod(lx - 3.0, 6.0) < 3.0 && lx > 2.0 && rx > 2.0 && p.y > 9.0 && p.y < top - 3.0)%%!serialized_property_newline!%%                    col = mod(p.y, 4.0) == 0.0 ? hexrgb(0x2a0e14) : lit;%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%            if (kind >= 0.92 && body) {                                                  // clock tower%%!serialized_property_newline!%%                vec2 cd = vec2(lx + 0.5 - w * 0.5, p.y - (top - 8.0));%%!serialized_property_newline!%%                if (length(cd) < 4.0) col = length(cd) > 3.2 ? hexrgb(0x5a3a22) : mix(hexrgb(0xffe8b0), hexrgb(0xffcf7a), 0.3);%%!serialized_property_newline!%%                if (length(cd) < 3.2 && (abs(cd.x) < 0.5 && cd.y > 0.0 && cd.y < 2.6 || abs(cd.y) < 0.5 && cd.x > 0.0 && cd.x < 2.0)) col = hexrgb(0x2a1008);%%!serialized_property_newline!%%                if (p.y > 9.0 && p.y < top - 14.0 && abs(lx + 0.5 - w * 0.5) < 2.0 && mod(p.y, 6.0) < 3.0) col = lit;%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%            if (p.y < 10.0 && kind < 0.45 && abs(lx + 0.5 - w * 0.5) < 2.0) col = hexrgb(0x3a1a12);   // door%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        // gas lamps along the pavement%%!serialized_property_newline!%%        float lampX = mod(p.x + 20.0, 40.0);%%!serialized_property_newline!%%        vec2 ld = vec2(lampX - 20.0, p.y - 17.0);%%!serialized_property_newline!%%        if (lampX == 20.0 && p.y >= 6.0 && p.y < 16.0) col = hexrgb(0x2a1218);%%!serialized_property_newline!%%        float lg = 7.0 + 3.0 * m.energy;%%!serialized_property_newline!%%        if (length(ld) < lg) col = dmix(col, mix(col, hexrgb(0xffb060), 0.45), (lg - length(ld)) / lg * 1.2, p);%%!serialized_property_newline!%%        if (abs(ld.x) <= 1.0 && ld.y >= -1.0 && ld.y <= 1.0) col = ld.y == 1.0 ? hexrgb(0x2a1218) : hexrgb(0xffe0a0);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        // flare stacks: two flames, higher with the energy%%!serialized_property_newline!%%        for (int k = 0; k < 2; k++) {%%!serialized_property_newline!%%            float fx = k == 0 ? 20.0 : 300.0;%%!serialized_property_newline!%%            float top = 70.0;%%!serialized_property_newline!%%            if (abs(p.x - fx) < 2.0 && p.y < top) col = mgSil(hexrgb(0x12060b), false, flash);%%!serialized_property_newline!%%            if (abs(p.x - fx) < 3.0 && (p.y == top - 1.0 || p.y == top - 12.0)) col = hexrgb(0x2a0f18);  // rings%%!serialized_property_newline!%%            float hgt = 5.0 + 11.0 * m.energy + 4.0 * m.accent;%%!serialized_property_newline!%%            float fy = p.y - top;%%!serialized_property_newline!%%            float wob = (vnoise(fy * 0.4 - t * 7.0 + float(k) * 9.0) - 0.5) * 3.0;%%!serialized_property_newline!%%            if (fy >= 0.0 && fy < hgt && abs(p.x + 0.5 - fx - wob * fy / hgt) < (1.0 - fy / hgt) * 3.2 + 0.5)%%!serialized_property_newline!%%                col = fy < hgt * 0.35 ? hexrgb(0xfff0b0) : (fy < hgt * 0.7 ? hexrgb(0xffa030) : hexrgb(0xd8401a));%%!serialized_property_newline!%%            vec2 gd = p + 0.5 - vec2(fx, top + hgt * 0.4);%%!serialized_property_newline!%%            if (length(gd) < 10.0 + 6.0 * m.energy && fy > -14.0)%%!serialized_property_newline!%%                col = dmix(col, mix(col, hexrgb(0xff8a3a), 0.45), (1.0 - length(gd) / (10.0 + 6.0 * m.energy)) * 0.9, p);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        // two meshing wheels in the bottom corners (atlas gears, dark iron lit by the furnaces)%%!serialized_property_newline!%%        int gf = int(mod(D * 3.0, 4.0));%%!serialized_property_newline!%%        vec4 g = sprite(R_GEAR_BIG, gf, p - vec2(-26.0, -24.0));%%!serialized_property_newline!%%        vec4 g2 = sprite(R_GEAR_MID, 3 - gf, p - vec2(PIXW - 40.0, -14.0));%%!serialized_property_newline!%%        if (g2.a > 0.5) g = g2;%%!serialized_property_newline!%%        if (g.a > 0.5) col = mix(g.rgb * vec3(0.42, 0.22, 0.2), hexrgb(0xff7a3a), 0.1 + 0.22 * m.energy);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // wet street: the windows' glow mirrored in streaks, rain splashing%%!serialized_property_newline!%%    if (p.y < 6.0 && sprite(R_GEAR_BIG, 0, p - vec2(-26.0, -24.0)).a < 0.5 && sprite(R_GEAR_MID, 0, p - vec2(PIXW - 40.0, -14.0)).a < 0.5) {%%!serialized_property_newline!%%        col = mix(hexrgb(0x1a0a10), hexrgb(0x2a1018), step(3.0, p.y));%%!serialized_property_newline!%%        float streak = hash21(vec2(floor(p.x / 2.0), 3.0));%%!serialized_property_newline!%%        if (streak < 0.35 && mod(p.y + floor(t * 3.0 + streak * 9.0), 3.0) < 2.0)%%!serialized_property_newline!%%            col = mix(col, hexrgb(0xb04a1a), (0.25 + 0.4 * m.energy) * (p.y / 6.0));%%!serialized_property_newline!%%        if (hash21(vec2(p.x, floor(t * 12.0))) > 0.985 - 0.02 * m.tension && p.y >= 4.0) col = hexrgb(0xc8a0b8);   // splash%%!serialized_property_newline!%%        if (flash > 0.0) col = mix(col, hexrgb(0xe6dcff), flash * 0.35);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // rain: slanted streaks, more of them the higher the tension%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        vec2 r = vec2(p.x + p.y * 0.35, p.y + t * 140.0);%%!serialized_property_newline!%%        vec2 cell = floor(r / vec2(3.0, 11.0));%%!serialized_property_newline!%%        float h = hash21(cell);%%!serialized_property_newline!%%        float len = 3.0 + floor(h * 3.0);%%!serialized_property_newline!%%        if (h < 0.08 + 0.32 * m.tension && mod(r.x, 3.0) < 1.0 && mod(r.y + h * 11.0, 11.0) < len)%%!serialized_property_newline!%%            col = mix(col, hexrgb(0xb8a0c8), 0.35 + 0.25 * flash);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // the bolt itself, on top of everything%%!serialized_property_newline!%%    if (bolt > 0.0) col = mix(col, bolt > 0.9 ? hexrgb(0xffffff) : hexrgb(0xc8b8ff), bolt);%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ Mice on Venus: "Cherry cliff at twilight"%%!serialized_property_newline!%%// A cherry tree on a sea cliff after sunset, Venus bright over the water, a lighthouse on a far rock,%%!serialized_property_newline!%%// a little sailboat. Music: blossom petals blow across as the tension grows (a gust on every big hit);%%!serialized_property_newline!%%// Venus and its glitter on the sea shine with the energy and flare on hits; the lighthouse beam turns%%!serialized_property_newline!%%// and the boat sails on music time.%%!serialized_property_newline!%%%%!serialized_property_newline!%%const vec2 MV_VENUS = vec2(232.0, 0.0);      // y from H%%!serialized_property_newline!%%#define MV_HORIZON 52.0%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 mvSky(vec2 p, float h) {%%!serialized_property_newline!%%    return bands(hexrgb(0xf2b08a), hexrgb(0xc27a9a), hexrgb(0x5a4a8a), hexrgb(0x262a60), h, p);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%float mvCliff(float x) { return 62.0 + floor(vnoise(x / 18.0 + 2.0) * 10.0) - floor(max(0.0, x - 52.0) * 0.9); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 mice_on_venus(vec2 p, Music m) {%%!serialized_property_newline!%%    float t = iTime;%%!serialized_property_newline!%%    float D = 0.35 * t + 0.65 * m.drive;%%!serialized_property_newline!%%    vec2 c = p + 0.5;%%!serialized_property_newline!%%    vec2 venus = vec2(MV_VENUS.x, H - 46.0);%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // twilight sky, the first stars, Venus with a cross flare%%!serialized_property_newline!%%    vec3 col = mvSky(p, clamp((p.y - MV_HORIZON) / (H - MV_HORIZON), 0.0, 1.0));%%!serialized_property_newline!%%    vec2 cell = floor(p / 6.0);%%!serialized_property_newline!%%    float st = hash21(cell + 2.0);%%!serialized_property_newline!%%    if (st < 0.14 * smoothstep(MV_HORIZON + 50.0, H, p.y) && p == cell * 6.0 + floor(hash22(cell) * 5.0))%%!serialized_property_newline!%%        col = mix(col, vec3(1.0), 0.35 + 0.35 * sin(t * 2.0 + st * 70.0));%%!serialized_property_newline!%%    vec2 vd = c - venus;%%!serialized_property_newline!%%    float flare = 3.0 + 3.0 * m.energy + 6.0 * m.accent;%%!serialized_property_newline!%%    float vr = length(vd);%%!serialized_property_newline!%%    if (vr < 9.0 + 4.0 * m.energy) col = dmix(col, mix(col, vec3(1.0, 0.95, 0.85), 0.35), (9.0 + 4.0 * m.energy - vr) / 10.0, p);%%!serialized_property_newline!%%    if ((abs(vd.x) < 0.6 && abs(vd.y) < flare) || (abs(vd.y) < 0.6 && abs(vd.x) < flare)) col = mix(col, vec3(1.0, 0.98, 0.92), 1.0 - max(abs(vd.x), abs(vd.y)) / (flare + 1.0));%%!serialized_property_newline!%%    if (vr < 1.6) col = vec3(1.0);%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // the sea: mirrored sky colours, wave dashes on music time, Venus' glitter path%%!serialized_property_newline!%%    if (p.y < MV_HORIZON) {%%!serialized_property_newline!%%        float row = MV_HORIZON - p.y;%%!serialized_property_newline!%%        col = mix(mvSky(vec2(p.x, MV_HORIZON + row * 2.0), clamp(row / 30.0, 0.0, 1.0)), hexrgb(0x1c1e4a), 0.35 + row * 0.012);%%!serialized_property_newline!%%        float wave = hash21(vec2(floor((p.x + D * (4.0 + row * 0.2)) / (5.0 + row * 0.3)), p.y));%%!serialized_property_newline!%%        if (wave > 0.86 && mod(p.y, 2.0) < 1.0) col = mix(col, hexrgb(0x8a7ab8), 0.5);%%!serialized_property_newline!%%        float path = 2.0 + row * 0.25 + 3.0 * m.energy;%%!serialized_property_newline!%%        if (abs(p.x - venus.x) < path && hash21(vec2(floor((p.x + t * 3.0) / 2.0), p.y + floor(t * 2.0))) > 0.7 - 0.25 * m.energy)%%!serialized_property_newline!%%            col = mix(col, vec3(1.0, 0.95, 0.85), 0.75);%%!serialized_property_newline!%%        if (p.y == MV_HORIZON - 1.0) col = mix(col, hexrgb(0xf2b08a), 0.5);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // far rock with the lighthouse; its beam turns on music time, flashing on hits%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        vec2 base = vec2(286.0, MV_HORIZON - 2.0);%%!serialized_property_newline!%%        float rk = 8.0 - abs(p.x - base.x) * 0.35 + floor(vnoise(p.x / 4.0) * 2.0);%%!serialized_property_newline!%%        if (p.y >= MV_HORIZON - 4.0 && p.y < base.y + rk && abs(p.x - base.x) < 22.0) col = p.y < base.y + rk - 1.0 ? hexrgb(0x2a2246) : hexrgb(0x4a3a6a);%%!serialized_property_newline!%%        vec4 lh = sprite(R_LIGHTHOUSE, 0, p - vec2(base.x - 10.0, base.y + 4.0));%%!serialized_property_newline!%%        if (lh.a > 0.5) col = isKey(lh, vec3(1.0, 1.0, 0.0)) || isKey(lh, vec3(1.0, 0.0, 1.0)) ? vec3(1.0, 0.92, 0.6) : mix(lh.rgb, hexrgb(0x5a4a7a), 0.25);%%!serialized_property_newline!%%        vec2 lamp = vec2(base.x, base.y + 4.0 + float(R_LIGHTHOUSE.w) - 9.0);%%!serialized_property_newline!%%        float a = D * 0.8;%%!serialized_property_newline!%%        float side = cos(a);%%!serialized_property_newline!%%        vec2 d = c - lamp;%%!serialized_property_newline!%%        float reach = 90.0 * abs(side);%%!serialized_property_newline!%%        if (d.x * side > 0.0 && abs(d.x) < reach && abs(d.y) < 1.0 + abs(d.x) * 0.06)%%!serialized_property_newline!%%            col = dmix(col, mix(col, vec3(1.0, 0.95, 0.7), 0.6), (0.35 + 0.4 * m.accent) * (1.0 - abs(d.x) / max(reach, 1.0)) * 1.8, p);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // a little sailboat crossing on music time%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        float span = PIXW + 60.0;%%!serialized_property_newline!%%        float bx = floor(mod(D * 3.0 + 120.0, span) - 30.0);%%!serialized_property_newline!%%        vec2 l = p - vec2(bx, 30.0 + floor(sin(t * 1.2) * 0.6));%%!serialized_property_newline!%%        bool hull = l.y >= 0.0 && l.y < 3.0 && l.x > -6.0 + (2.0 - l.y) && l.x < 7.0 - (2.0 - l.y) * 1.5;%%!serialized_property_newline!%%        bool sail = l.x >= 0.0 && l.y >= 3.0 && l.y < 15.0 && l.x < (15.0 - l.y) * 0.5 + 1.0;%%!serialized_property_newline!%%        bool jib = l.x < 0.0 && l.y >= 4.0 && l.y < 12.0 && l.x > -(12.0 - l.y) * 0.45;%%!serialized_property_newline!%%        if (hull) col = l.y == 2.0 ? hexrgb(0x8a5a3a) : hexrgb(0x5a3a2a);%%!serialized_property_newline!%%        if (sail) col = l.x < 2.0 ? hexrgb(0xfff0e0) : hexrgb(0xf2d4c8);%%!serialized_property_newline!%%        if (jib) col = hexrgb(0xe8c8c0);%%!serialized_property_newline!%%        if (l.x == 0.0 && l.y >= 3.0 && l.y < 16.0) col = hexrgb(0x4a3020);%%!serialized_property_newline!%%        if (l.y < 0.0 && l.y > -4.0 && abs(l.x) < 6.0 && mod(l.x + l.y + floor(t * 2.0), 3.0) < 1.0) col = mix(col, hexrgb(0xf2d4c8), 0.3);   // reflection%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // the cliff (left) with grass and a carpet of fallen petals%%!serialized_property_newline!%%    float cl = mvCliff(p.x);%%!serialized_property_newline!%%    if (p.y < cl && p.x < 110.0) {%%!serialized_property_newline!%%        float strata = vnoise2(vec2(p.x / 14.0, p.y / 4.0));%%!serialized_property_newline!%%        col = strata > 0.55 ? hexrgb(0x4a3a5e) : (strata > 0.35 ? hexrgb(0x3a2e50) : hexrgb(0x2a2240));%%!serialized_property_newline!%%        if (mod(p.y, 3.0) == 0.0 && hash21(floor(p / vec2(6.0, 3.0))) < 0.3) col = hexrgb(0x5e4a72);   // lit ledges%%!serialized_property_newline!%%        if (p.y >= cl - 3.0) col = hash21(p) < 0.25 ? hexrgb(0xf0a0c8) : hexrgb(0x5a7a4a);         // grass + petals%%!serialized_property_newline!%%        if (p.y >= cl - 1.0) col = hash21(p + 1.0) < 0.3 ? hexrgb(0xffc8e0) : hexrgb(0x7a9a5a);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // the cherry tree on the cliff%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        vec2 base = vec2(30.0, mvCliff(30.0) - 1.0);%%!serialized_property_newline!%%        vec2 l = p - base;%%!serialized_property_newline!%%        float bend = sin(l.y * 0.07) * 4.0 + l.y * 0.25;%%!serialized_property_newline!%%        if (l.y >= 0.0 && l.y < 30.0 && abs(l.x - bend) < 2.5 - l.y * 0.04) col = l.x - bend > 0.5 ? hexrgb(0x5a3a40) : hexrgb(0x3a2430);%%!serialized_property_newline!%%        for (int k = 0; k < 2; k++) {                                                              // branches%%!serialized_property_newline!%%            vec2 a = vec2(7.0, 24.0), b = k == 0 ? vec2(26.0, 36.0) : vec2(-10.0, 34.0);%%!serialized_property_newline!%%            if (segment(l, a, b).x < 1.0) col = hexrgb(0x3a2430);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        vec2 q = l - vec2(9.0, 40.0);%%!serialized_property_newline!%%        float sway = sin(D * 0.8) * 1.5 * (0.5 + m.energy);%%!serialized_property_newline!%%        float crown = length((q - vec2(sway * clamp(q.y / 10.0, 0.0, 1.0), 0.0)) / vec2(30.0, 14.0)) + (vnoise2(p / 4.0) - 0.5) * 0.4;%%!serialized_property_newline!%%        if (crown < 1.0) {%%!serialized_property_newline!%%            float lit = clamp((q.x * 0.5 + q.y) / 20.0, -1.0, 1.0);                                // lit from the sunset (right)%%!serialized_property_newline!%%            col = lit > 0.35 ? hexrgb(0xffc8e0) : (lit > -0.1 ? hexrgb(0xf0a0c8) : (lit > -0.5 ? hexrgb(0xd878a8) : hexrgb(0xa85888)));%%!serialized_property_newline!%%            if (hash21(floor(p / 2.0) + 5.0) < 0.12) col = hexrgb(0xfff0f8);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // blossom petals blowing across, more with the tension, a gust on every big hit%%!serialized_property_newline!%%    int petals = 6 + int(26.0 * m.tension) + (m.hit < 2.0 ? 10 : 0);%%!serialized_property_newline!%%    for (int k = 0; k < 42; k++) {%%!serialized_property_newline!%%        if (k >= petals) break;%%!serialized_property_newline!%%        float fk = float(k);%%!serialized_property_newline!%%        float gust = k >= 32 ? m.hit / 2.0 : -1.0;%%!serialized_property_newline!%%        float ph = gust >= 0.0 ? gust : fract(D * (0.035 + 0.02 * hash11(fk)) + hash11(fk * 3.1));%%!serialized_property_newline!%%        vec2 pp = vec2(20.0 + ph * (PIXW + 40.0) * (0.8 + 0.4 * hash11(fk * 2.2)),%%!serialized_property_newline!%%                       H - 40.0 - hash11(fk * 5.3) * 70.0 - ph * 40.0 + sin(ph * 12.0 + fk) * 6.0);%%!serialized_property_newline!%%        if (gust >= 0.0) pp = vec2(40.0 + ph * 260.0 * (0.6 + 0.6 * hash11(fk + floor(m.hitSeed))), 90.0 + hash11(fk * 7.0 + floor(m.hitSeed)) * 50.0 - ph * 30.0);%%!serialized_property_newline!%%        vec2 d = p - floor(pp);%%!serialized_property_newline!%%        bool turn = fract(ph * 6.0 + fk * 0.3) < 0.5;%%!serialized_property_newline!%%        if (d == vec2(0.0) || (turn && d == vec2(1.0, 0.0)) || (!turn && d == vec2(0.0, 1.0)))%%!serialized_property_newline!%%            col = hash11(fk) < 0.5 ? hexrgb(0xffc8e0) : hexrgb(0xf0a0c8);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%%%!serialized_property_newline!%%bool ownsScene(int s) { return s == 3 || s == 5; }%%!serialized_property_newline!%%vec3 renderScene(int s, vec2 p, Music m) {%%!serialized_property_newline!%%    if (s == 3) return moog_city_2(p, m);%%!serialized_property_newline!%%    if (s == 5) return mice_on_venus(p, m);%%!serialized_property_newline!%%    return vec3(0.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ main (one buffer pass)%%!serialized_property_newline!%%// This program draws the scenes ownsScene() names (generated: one, or two light ones). The title%%!serialized_property_newline!%%// background runs up to four such programs as FancyMenu buffer passes A-D and composite.glsl picks,%%!serialized_property_newline!%%// per pixel, the one that drew there - separate programs, because one shader holding every scene made%%!serialized_property_newline!%%// the driver budget registers for the heaviest of them and ran ~20x slower.%%!serialized_property_newline!%%// Only the current track's scene draws; over the first TRANSITION seconds of its play time it dissolves%%!serialized_property_newline!%%// in pixel by pixel (4x4 ordered pattern) while the previous track's scene fills the rest; while a%%!serialized_property_newline!%%// track is still loading the previous scene stays. Pixels of other programs' scenes stay transparent.%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define TRANSITION 1.6%%!serialized_property_newline!%%%%!serialized_property_newline!%%void mainImage(out vec4 fragColor, in vec2 fragCoord) {%%!serialized_property_newline!%%    fragColor = vec4(0.0);%%!serialized_property_newline!%%    int track = clamp(int(fmVarFloat_toz_music_track + 0.5), 0, N_TRACKS - 1);%%!serialized_property_newline!%%    int prev = (track + N_TRACKS - 1) % N_TRACKS;%%!serialized_property_newline!%%    if (!ownsScene(track) && !ownsScene(prev)) return;                     // cheap for idle programs%%!serialized_property_newline!%%%%!serialized_property_newline!%%    float scale = iResolution.x / PIXW;%%!serialized_property_newline!%%    H = floor(iResolution.y / scale);%%!serialized_property_newline!%%    vec2 p = floor(fragCoord / scale);%%!serialized_property_newline!%%    Music m = music(track, iTime);%%!serialized_property_newline!%%    float k = 1.0;%%!serialized_property_newline!%%    if (m.live && m.playing && N_TRACKS > 1) {                              // paused: no half-done dissolve%%!serialized_property_newline!%%        if (fmVarFloat_toz_music_dur <= 0.0) k = (track == 0 && iTime < 8.0) ? 1.0 : 0.0;   // loading; game start%%!serialized_property_newline!%%        else k = smoothstep(0.0, TRANSITION, m.pos);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    int scene = (k >= 1.0 || bayer4(p) < k) ? track : prev;%%!serialized_property_newline!%%    if (!ownsScene(scene)) return;%%!serialized_property_newline!%%%%!serialized_property_newline!%%    ATLAS_SIZE = textureSize(iChannel0, 0);%%!serialized_property_newline!%%    vec4 m0 = texelFetch(iChannel0, ivec2(0, 0), 0);%%!serialized_property_newline!%%    TOP_FIRST = m0.r > 0.5 && m0.g < 0.5;%%!serialized_property_newline!%%    if (ATLAS_SIZE.x < 8) { fragColor = vec4(0.10, 0.08, 0.16, 1.0); return; }   // atlas not loaded yet%%!serialized_property_newline!%%    fragColor = vec4(clamp(renderScene(scene, p, m), 0.0, 1.0), 1.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%
  buffer_c_ichannel0_input = resource0
  buffer_c_ichannel1_input = resource1
  buffer_d_inline_source = // Teachings of Zeta - title background buffer pass: aria_math, cat (playlist slot 1, 2 of 7)%%!serialized_property_newline!%%// Generated by modpack_pipeline/menu/gen_menu_scenes.py + gen_menu_art.py from scenes/*.glsl -%%!serialized_property_newline!%%// edit those, then re-run the generators.%%!serialized_property_newline!%%%%!serialized_property_newline!%%// generated by modpack_pipeline/menu/gen_menu_art.py - atlas 384x517%%!serialized_property_newline!%%const ivec4 R_MOUNT = ivec4(0, 2, 384, 44); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_HILLS = ivec4(0, 47, 384, 30); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_VIADUCT = ivec4(0, 78, 384, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_TOWN_FAR = ivec4(0, 103, 384, 38); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_TOWN_NEAR = ivec4(0, 142, 384, 30); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_QUAY = ivec4(0, 173, 384, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_SHIP_BIG = ivec4(0, 198, 76, 32); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_SHIP_SMALL = ivec4(153, 198, 41, 17); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_LOCO = ivec4(236, 198, 28, 17); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_CAR = ivec4(293, 198, 22, 15); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_MILL = ivec4(338, 198, 14, 24); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_BLADES = ivec4(0, 231, 30, 30); // 6 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_BIG = ivec4(0, 262, 70, 70); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_MID = ivec4(0, 333, 46, 46); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_GEAR_SMALL = ivec4(185, 333, 34, 34); // 4 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_A = ivec4(0, 380, 64, 15); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_B = ivec4(65, 380, 46, 12); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_CLOUD_C = ivec4(112, 380, 30, 9); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_HARBOR = ivec4(0, 396, 384, 40); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_PIER = ivec4(0, 437, 384, 22); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_LIGHTHOUSE = ivec4(0, 460, 20, 56); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_MAST = ivec4(21, 460, 12, 50); // 1 frame(s)%%!serialized_property_newline!%%const ivec4 R_STEAMBOAT = ivec4(34, 460, 52, 24); // 2 frame(s)%%!serialized_property_newline!%%const ivec4 R_PLANE = ivec4(139, 460, 24, 13); // 2 frame(s)%%!serialized_property_newline!%%// chimney tops: x in strip, y above strip bottom, size%%!serialized_property_newline!%%const int N_CHIM_NEAR = 5;%%!serialized_property_newline!%%const vec3 CHIM_NEAR[5] = vec3[5](vec3(4.0, 20.0, 1.0), vec3(124.0, 26.0, 1.0), vec3(188.0, 21.0, 1.0), vec3(231.0, 30.0, 1.0), vec3(317.0, 24.0, 1.0));%%!serialized_property_newline!%%const int N_CHIM_FAR = 6;%%!serialized_property_newline!%%const vec3 CHIM_FAR[6] = vec3[6](vec3(156.0, 18.0, 1.0), vec3(166.0, 20.0, 1.0), vec3(203.0, 19.0, 1.0), vec3(355.0, 27.0, 1.0), vec3(363.0, 25.0, 1.0), vec3(377.0, 22.0, 1.0));%%!serialized_property_newline!%%const int N_CHIM_HARBOR = 2;%%!serialized_property_newline!%%const vec3 CHIM_HARBOR[2] = vec3[2](vec3(310.5, 31.0, 1.6), vec3(321.5, 31.0, 1.6));%%!serialized_property_newline!%%const float STRIP_W = 384.0;%%!serialized_property_newline!%%const vec2 MILL = vec2(46.0, 17.0); // windmill base in the hills strip%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ common (all scenes)%%!serialized_property_newline!%%// Every scene draws on a PIXW px wide virtual grid (p = virtual pixel, y up, 0 at the bottom; H = height)%%!serialized_property_newline!%%// and gets the music as a Music value: see music() at the end of this file.%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define PIXW 320.0%%!serialized_property_newline!%%#define PI 3.14159265%%!serialized_property_newline!%%%%!serialized_property_newline!%%// FancyMenu variables (set every frame by Tickers in the title layout), uploaded as fmVarFloat_<name>%%!serialized_property_newline!%%uniform float fmVarFloat_toz_music_pos;     // seconds into the current track; -1 = addon missing%%!serialized_property_newline!%%uniform float fmVarFloat_toz_music_dur;     // length of the current track; 0 while it is loading%%!serialized_property_newline!%%uniform float fmVarFloat_toz_music_track;   // playlist index of the current track%%!serialized_property_newline!%%uniform int fmVarBool_toz_music_playing;     // 1 while the track plays (0 paused / stopped)%%!serialized_property_newline!%%%%!serialized_property_newline!%%float H;            // virtual height%%!serialized_property_newline!%%bool TOP_FIRST;     // atlas row 0 is the image's top row%%!serialized_property_newline!%%ivec2 ATLAS_SIZE;%%!serialized_property_newline!%%%%!serialized_property_newline!%%float hash11(float p) { p = fract(p * 0.1031); p *= p + 33.33; p *= p + p; return fract(p); }%%!serialized_property_newline!%%float hash21(vec2 p) { vec3 p3 = fract(vec3(p.xyx) * 0.1031); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.x + p3.y) * p3.z); }%%!serialized_property_newline!%%vec2 hash22(vec2 p) { vec3 p3 = fract(vec3(p.xyx) * vec3(0.1031, 0.1030, 0.0973)); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.xx + p3.yz) * p3.zy); }%%!serialized_property_newline!%%vec3 hexrgb(int h) { return vec3(float((h >> 16) & 255), float((h >> 8) & 255), float(h & 255)) / 255.0; }%%!serialized_property_newline!%%float vnoise(float x) { float i = floor(x), f = fract(x); return mix(hash11(i), hash11(i + 1.0), f * f * (3.0 - 2.0 * f)); }%%!serialized_property_newline!%%float vnoise2(vec2 p) {%%!serialized_property_newline!%%    vec2 i = floor(p), f = fract(p);%%!serialized_property_newline!%%    vec2 u = f * f * (3.0 - 2.0 * f);%%!serialized_property_newline!%%    return mix(mix(hash21(i), hash21(i + vec2(1.0, 0.0)), u.x), mix(hash21(i + vec2(0.0, 1.0)), hash21(i + 1.0), u.x), u.y);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// pixel-stepped ridge line: height of a silhouette at column x%%!serialized_property_newline!%%float ridge(float x, float seed, float amp, float scale) {%%!serialized_property_newline!%%    return floor(amp * (0.55 * vnoise(x / scale + seed) + 0.3 * vnoise(x / (scale * 0.37) + seed * 3.1) + 0.15 * vnoise(x / (scale * 0.13) + seed * 7.7)));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// 4x4 ordered dither threshold (0..1): the pixel-art way to blend two flat colours%%!serialized_property_newline!%%float bayer4(vec2 p) {%%!serialized_property_newline!%%    const int M[16] = int[16](0, 8, 2, 10, 12, 4, 14, 6, 3, 11, 1, 9, 15, 7, 13, 5);%%!serialized_property_newline!%%    int x = int(mod(p.x, 4.0)), y = int(mod(p.y, 4.0));%%!serialized_property_newline!%%    return (float(M[y * 4 + x]) + 0.5) / 16.0;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec3 dmix(vec3 a, vec3 b, float f, vec2 p) { return f > bayer4(p) ? b : a; }%%!serialized_property_newline!%%// stepped vertical gradient through a 4-colour palette (h 0..1 = c0..c3): 4 flat shades between each%%!serialized_property_newline!%%// pair (12 bands), joined by a thin ordered-dither seam instead of a wide checkerboard%%!serialized_property_newline!%%vec3 bands(vec3 c0, vec3 c1, vec3 c2, vec3 c3, float h, vec2 p) {%%!serialized_property_newline!%%    float f = clamp(h, 0.0, 0.999) * 12.0;%%!serialized_property_newline!%%    float level = clamp(floor(f + (bayer4(p) - 0.5) * 0.5), 0.0, 11.0);%%!serialized_property_newline!%%    float x = (level + 0.5) / 4.0;                                      // 0..3 across the palette%%!serialized_property_newline!%%    return x < 1.0 ? mix(c0, c1, x) : (x < 2.0 ? mix(c1, c2, x - 1.0) : mix(c2, c3, x - 2.0));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%float luma(vec3 c) { return dot(c, vec3(0.30, 0.59, 0.11)); }%%!serialized_property_newline!%%vec2 rot(vec2 v, float a) { float c = cos(a), s = sin(a); return vec2(c * v.x - s * v.y, s * v.x + c * v.y); }%%!serialized_property_newline!%%// distance from the pixel centre to segment a-b (.x) and how far along it the closest point is (.y, 0..1)%%!serialized_property_newline!%%vec2 segment(vec2 p, vec2 a, vec2 b) {%%!serialized_property_newline!%%    vec2 pa = p + 0.5 - a, ba = b - a;%%!serialized_property_newline!%%    float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);%%!serialized_property_newline!%%    return vec2(length(pa - ba * h), h);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// 3x5 pixel glyphs: 0-9 + x = pi sigma root; l = pixel inside the glyph, x from the left, y from the top%%!serialized_property_newline!%%const int GLYPH[16] = int[16](31599, 11415, 29671, 29647, 23497, 31183, 31215, 29330, 31727, 31695,%%!serialized_property_newline!%%                              1488, 2728, 3640, 31597, 30887, 4714);%%!serialized_property_newline!%%bool glyph(int g, vec2 l) {%%!serialized_property_newline!%%    if (l.x < 0.0 || l.y < 0.0 || l.x > 2.0 || l.y > 4.0) return false;%%!serialized_property_newline!%%    return ((GLYPH[g & 15] >> ((4 - int(l.y)) * 3 + (2 - int(l.x)))) & 1) == 1;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// bitmap sprite of up to 16 columns: rows[] top to bottom, bit (w-1) = leftmost pixel%%!serialized_property_newline!%%bool bitAt(int row, int w, float x) { return x >= 0.0 && x < float(w) && ((row >> (w - 1 - int(x))) & 1) == 1; }%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ atlas access (iChannel0)%%!serialized_property_newline!%%vec4 texel(int x, int y) {%%!serialized_property_newline!%%    int ty = TOP_FIRST ? y : ATLAS_SIZE.y - 1 - y;%%!serialized_property_newline!%%    return texelFetch(iChannel0, ivec2(x, ty), 0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// local: pixel inside the sprite, y counted up from the sprite's bottom row%%!serialized_property_newline!%%vec4 sprite(ivec4 r, int frame, vec2 local) {%%!serialized_property_newline!%%    if (local.x < 0.0 || local.y < 0.0 || local.x >= float(r.z) || local.y >= float(r.w)) return vec4(0.0);%%!serialized_property_newline!%%    return texel(r.x + frame * r.z + int(local.x), r.y + r.w - 1 - int(local.y));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// sprites face right; `left` mirrors them, so nothing ever flies backwards%%!serialized_property_newline!%%vec4 spriteDir(ivec4 r, int frame, vec2 local, bool left) {%%!serialized_property_newline!%%    if (left) local.x = float(r.z) - 1.0 - local.x;%%!serialized_property_newline!%%    return sprite(r, frame, local);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%// a biplane with its bottom-left at `pos`, propeller spinning, puffs of exhaust trailing behind;%%!serialized_property_newline!%%// .a = coverage (1 for the plane, less for the fading puffs)%%!serialized_property_newline!%%vec4 biplane(vec2 p, vec2 pos, bool left, float t) {%%!serialized_property_newline!%%    vec2 o = floor(pos);%%!serialized_property_newline!%%    vec4 c = spriteDir(R_PLANE, int(mod(t * 16.0, 2.0)), p - o, left);%%!serialized_property_newline!%%    if (c.a > 0.5) return vec4(c.rgb, 1.0);%%!serialized_property_newline!%%    float back = left ? p.x - (o.x + float(R_PLANE.z)) : o.x - p.x;              // distance behind the tail%%!serialized_property_newline!%%    if (back >= 1.0 && back < 22.0 && p.y == o.y + 6.0 + floor(back / 11.0) && mod(back + floor(t * 12.0), 5.0) < 2.0)%%!serialized_property_newline!%%        return vec4(vec3(0.96, 0.96, 0.98), 0.9 - back / 24.0);%%!serialized_property_newline!%%    return vec4(0.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec4 strip(ivec4 r, float x, float ly) {%%!serialized_property_newline!%%    if (ly < 0.0 || ly >= float(r.w)) return vec4(0.0);%%!serialized_property_newline!%%    return texel(r.x + int(mod(x, STRIP_W)), r.y + r.w - 1 - int(ly));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%bool isKey(vec4 c, vec3 k) { return c.a > 0.5 && all(lessThan(abs(c.rgb - k), vec3(0.02))); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ music (iChannel1 = envelope.png)%%!serialized_property_newline!%%struct Music {%%!serialized_property_newline!%%    float tension;  // the song's arc, 0..1 (seconds)%%!serialized_property_newline!%%    float energy;   // loudness of the moment, 0..1%%!serialized_property_newline!%%    float accent;   // hits / note onsets, jumps up and decays in ~0.2 s%%!serialized_property_newline!%%    float hit;      // seconds since the last big hit (>= HIT_NONE: none lately) - for longer events%%!serialized_property_newline!%%    float hitSeed;  // differs per big hit: picks where/how its event happens%%!serialized_property_newline!%%    float drive;    // music time: runs 0.3x (calm) .. 1.7x (climax) real time, never jumps%%!serialized_property_newline!%%    float pos;      // seconds into the track%%!serialized_property_newline!%%    float prog;     // 0..1 through the track%%!serialized_property_newline!%%    bool live;      // false: no position (addon missing) - a slow synthetic swell instead%%!serialized_property_newline!%%    bool playing;   // false while paused: the song's state holds, hits and their events stay away%%!serialized_property_newline!%%};%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define HIT_NONE 2.5%%!serialized_property_newline!%%%%!serialized_property_newline!%%ivec2 ENV_SIZE;%%!serialized_property_newline!%%bool ENV_TOP;%%!serialized_property_newline!%%vec4 envTexel(int x, int y) {%%!serialized_property_newline!%%    int ty = ENV_TOP ? y : ENV_SIZE.y - 1 - y;%%!serialized_property_newline!%%    return texelFetch(iChannel1, ivec2(x, ty), 0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec4 envAt(int row0, int i) { return envTexel(i % ENV_SIZE.x, row0 + i / ENV_SIZE.x); }%%!serialized_property_newline!%%int u8(float v) { return int(v * 255.0 + 0.5); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%Music synthetic(float t) {%%!serialized_property_newline!%%    float s = 0.5 + 0.5 * sin(t * 0.07);%%!serialized_property_newline!%%    return Music(0.35 + 0.3 * s, 0.4 + 0.3 * s, 0.0, 9.0, 0.0, t, 0.0, fract(t / 240.0), false, true);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%Music music(int track, float t) {%%!serialized_property_newline!%%    ENV_SIZE = textureSize(iChannel1, 0);%%!serialized_property_newline!%%    float pos = fmVarFloat_toz_music_pos;%%!serialized_property_newline!%%    if (pos < 0.0 || ENV_SIZE.x < 8) return synthetic(t);%%!serialized_property_newline!%%    vec4 mark = texelFetch(iChannel1, ivec2(0, 0), 0);%%!serialized_property_newline!%%    ENV_TOP = mark.r > 0.5 && mark.g < 0.5;%%!serialized_property_newline!%%    vec4 h = envTexel(1 + track, 0);%%!serialized_property_newline!%%    int row0 = u8(h.r), n = u8(h.g) * 256 + u8(h.b);%%!serialized_property_newline!%%    float rate = float(u8(ENV_TOP ? mark.b : envTexel(0, 0).b));%%!serialized_property_newline!%%    if (row0 < 1 || n < 2 || rate < 1.0) return synthetic(t);%%!serialized_property_newline!%%    float fi = clamp(pos * rate, 0.0, float(n) - 1.001);%%!serialized_property_newline!%%    int i = int(fi);%%!serialized_property_newline!%%    float f = fract(fi);%%!serialized_property_newline!%%    vec3 v = mix(envAt(row0, i).rgb, envAt(row0, i + 1).rgb, f);%%!serialized_property_newline!%%    int drow = row0 + (n + ENV_SIZE.x - 1) / ENV_SIZE.x;%%!serialized_property_newline!%%    vec4 da = envAt(drow, i), db = envAt(drow, i + 1);%%!serialized_property_newline!%%    float drive = mix(float(u8(da.r) * 256 + u8(da.g)), float(u8(db.r) * 256 + u8(db.g)), f) * 0.01;%%!serialized_property_newline!%%    int age = u8(da.b);                                   // centiseconds since the last big hit%%!serialized_property_newline!%%    float hit = age >= 250 ? 9.0 : float(age) * 0.01 + f / rate;%%!serialized_property_newline!%%    float dur = fmVarFloat_toz_music_dur > 0.0 ? fmVarFloat_toz_music_dur : float(n) / rate;%%!serialized_property_newline!%%    // paused: the position stands still, so a hit (flash, firework, lightning...) would freeze mid-air -%%!serialized_property_newline!%%    // keep the song's state (tension, energy, drive) and drop the hits%%!serialized_property_newline!%%    if (fmVarBool_toz_music_playing == 0) return Music(v.r, v.g, 0.0, 9.0, 0.0, drive, pos, clamp(pos / dur, 0.0, 1.0), true, false);%%!serialized_property_newline!%%    return Music(v.r, v.g, v.b, hit, floor((pos - hit) * 4.0 + 0.5), drive, pos, clamp(pos / dur, 0.0, 1.0), true, true);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%%%!serialized_property_newline!%%const int N_TRACKS = 7;%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ Aria Math: "Starwatch"%%!serialized_property_newline!%%// Night over the observatory hill. The starfield turns around a far pole on music time; geometric%%!serialized_property_newline!%%// constellations (fixed in the free corners around the menu) draw themselves line by line as the%%!serialized_property_newline!%%// tension rises and fade back in calm passages; a pond below mirrors the sky;%%!serialized_property_newline!%%// the telescope's beam brightens with the energy; a shooting star crosses on every big hit; tiny%%!serialized_property_newline!%%// digits and signs drift up from the open dome, more of them the busier the music gets.%%!serialized_property_newline!%%%%!serialized_property_newline!%%const vec2 AM_POLE = vec2(160.0, 560.0);%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 amSky(vec2 p, vec2 q, float t, Music m) {%%!serialized_property_newline!%%    vec3 col = bands(hexrgb(0x3b3672), hexrgb(0x28255a), hexrgb(0x1a1840), hexrgb(0x0e0c26), p.y / H * 1.05, p);%%!serialized_property_newline!%%    // milky way: a soft diagonal band in sky space, dithered over the gradient%%!serialized_property_newline!%%    float d = abs(dot(q - vec2(160.0, 120.0), normalize(vec2(0.55, 1.0))));%%!serialized_property_newline!%%    float mw = exp(-d * d / 500.0) * (0.45 + 0.55 * vnoise2(q * 0.07));%%!serialized_property_newline!%%    col = dmix(col, hexrgb(0x312d68), mw * 0.9, p);%%!serialized_property_newline!%%    col = dmix(col, hexrgb(0x433f84), (mw - 0.6) * 1.5, p);%%!serialized_property_newline!%%    // stars: one per 6x6 sky cell at most; more of them light up as the tension rises%%!serialized_property_newline!%%    vec2 cell = floor(q / 6.0);%%!serialized_property_newline!%%    float id = hash21(cell);%%!serialized_property_newline!%%    float density = 0.32 + 0.4 * m.tension + 0.25 * mw;%%!serialized_property_newline!%%    if (id < density) {%%!serialized_property_newline!%%        vec2 s = cell * 6.0 + 1.0 + floor(hash22(cell + 3.7) * 4.0);%%!serialized_property_newline!%%        vec2 d2 = floor(q) - s;%%!serialized_property_newline!%%        float tw = 0.55 + 0.45 * sin(t * (1.5 + 3.0 * id) + id * 40.0) + 0.5 * m.accent;%%!serialized_property_newline!%%        vec3 sc = id < 0.08 ? hexrgb(0xffe8b0) : (id < 0.16 ? hexrgb(0xb8d0ff) : hexrgb(0xf4f2ff));%%!serialized_property_newline!%%        bool big = hash21(cell + 9.1) > 0.9;%%!serialized_property_newline!%%        if (d2 == vec2(0.0)) col = mix(col, sc, clamp(0.45 + tw * 0.55, 0.0, 1.0));%%!serialized_property_newline!%%        else if (big && abs(d2.x) + abs(d2.y) == 1.0 && tw > 0.7) col = dmix(col, sc, 0.5, p);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// constellations in screen space, in the regions the menu leaves free: left below the music widget,%%!serialized_property_newline!%%// right column, the band between the server card and the logo%%!serialized_property_newline!%%const vec2 AM_TRI[3] = vec2[3](vec2(20.0, 130.0), vec2(62.0, 118.0), vec2(36.0, 94.0));%%!serialized_property_newline!%%const vec2 AM_PENT_C = vec2(278.0, 140.0);%%!serialized_property_newline!%%const vec2 AM_HEX_C = vec2(122.0, 136.0);%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec2 amPent(int i) { float a = PI * 0.5 + float(i) * 2.0 * PI / 5.0; return AM_PENT_C + 18.0 * vec2(cos(a), sin(a)); }%%!serialized_property_newline!%%vec2 amHex(int i) { float a = float(i) * PI / 3.0 + PI / 6.0; return AM_HEX_C + 11.0 * vec2(cos(a), sin(a)); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%// 1 on the first `part` (0..1) of segment a-b%%!serialized_property_newline!%%float amLine(vec2 p, vec2 a, vec2 b, float part) {%%!serialized_property_newline!%%    if (part <= 0.0) return 0.0;%%!serialized_property_newline!%%    vec2 s = segment(p, a, b);%%!serialized_property_newline!%%    if (s.x < 0.6 && s.y <= part) return 1.0;%%!serialized_property_newline!%%    return 0.0;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 amConstellations(vec2 p, vec3 col, Music m) {%%!serialized_property_newline!%%    vec3 gold = hexrgb(0xe8d48a);%%!serialized_property_newline!%%    float hit = 0.0;%%!serialized_property_newline!%%    float g1 = smoothstep(0.30, 0.55, m.tension) * 3.0;%%!serialized_property_newline!%%    for (int i = 0; i < 3; i++) hit = max(hit, amLine(p, AM_TRI[i], AM_TRI[(i + 1) % 3], clamp(g1 - float(i), 0.0, 1.0)));%%!serialized_property_newline!%%    float g2 = smoothstep(0.45, 0.75, m.tension) * 5.0;%%!serialized_property_newline!%%    for (int i = 0; i < 5; i++) hit = max(hit, amLine(p, amPent(i), amPent((i + 2) % 5), clamp(g2 - float(i), 0.0, 1.0)));%%!serialized_property_newline!%%    float g3 = smoothstep(0.62, 0.9, m.tension) * 6.0;%%!serialized_property_newline!%%    for (int i = 0; i < 6; i++) hit = max(hit, amLine(p, amHex(i), amHex((i + 1) % 6), clamp(g3 - float(i), 0.0, 1.0)));%%!serialized_property_newline!%%    if (hit > 0.5) col = dmix(col, gold, 0.55 + 0.4 * m.energy, p);%%!serialized_property_newline!%%    // vertex stars, always there, brighter while their figure is drawn%%!serialized_property_newline!%%    for (int i = 0; i < 14; i++) {%%!serialized_property_newline!%%        vec2 v = i < 3 ? AM_TRI[i] : (i < 8 ? amPent(i - 3) : amHex(i - 8));%%!serialized_property_newline!%%        float on = i < 3 ? g1 : (i < 8 ? g2 : g3);%%!serialized_property_newline!%%        vec2 d = p - floor(v);%%!serialized_property_newline!%%        float a = abs(d.x) + abs(d.y);%%!serialized_property_newline!%%        if (a == 0.0) col = hexrgb(0xfff6d8);%%!serialized_property_newline!%%        else if (a == 1.0 && on > 0.0) col = mix(col, gold, 0.75);%%!serialized_property_newline!%%        else if (a == 2.0 && abs(d.x) != 1.0 && on > 1.0) col = dmix(col, gold, 0.5, p);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// brass telescope from `pivot` along `dir`: tube widening to the objective, dark outline, lit upper%%!serialized_property_newline!%%// side, two rings, lens with a bright rim, finder scope on top, eyepiece and counterweight behind%%!serialized_property_newline!%%vec4 amTelescope(vec2 p, vec2 pivot, vec2 dir, float L) {%%!serialized_property_newline!%%    vec2 d = p + 0.5 - pivot;%%!serialized_property_newline!%%    vec2 n = vec2(-dir.y, dir.x);%%!serialized_property_newline!%%    float u = dot(d, dir), v = dot(d, n) * sign(n.y + 0.001);              // v > 0: the upper side%%!serialized_property_newline!%%    float r = 1.6 + 1.0 * clamp(u / L, 0.0, 1.0);%%!serialized_property_newline!%%    if (u > -4.0 && u < L && abs(v) < r) {%%!serialized_property_newline!%%        vec3 c = v > r * 0.3 ? hexrgb(0xe8b450) : (v > -r * 0.3 ? hexrgb(0xb0782e) : hexrgb(0x6b3f1c));%%!serialized_property_newline!%%        if (v > r * 0.3 && v < r * 0.3 + 0.8) c = hexrgb(0xffe08a);                 // highlight%%!serialized_property_newline!%%        if (abs(v) > r - 0.7) c = hexrgb(0x2a1a14);                                  // outline%%!serialized_property_newline!%%        if (abs(u - L * 0.3) < 0.7 || abs(u - L * 0.62) < 0.7) c = abs(v) > r - 0.7 ? hexrgb(0x2a1a14) : hexrgb(0x4a2c18);%%!serialized_property_newline!%%        if (u > L - 2.0) c = abs(v) < r - 1.2 ? hexrgb(0x1a2440) : hexrgb(0xffe08a); // objective%%!serialized_property_newline!%%        return vec4(c, 1.0);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    float rf = 1.6 + 1.0 * clamp(u / L, 0.0, 1.0);%%!serialized_property_newline!%%    if (u > L * 0.35 && u < L * 0.72 && abs(v - rf - 1.3) < 0.8) return vec4(u > L * 0.69 ? hexrgb(0xffe08a) : hexrgb(0xb0782e), 1.0);%%!serialized_property_newline!%%    if (u > L * 0.42 && u < L * 0.46 && v > rf - 0.5 && v < rf + 1.0) return vec4(hexrgb(0x4a2c18), 1.0);   // finder bracket%%!serialized_property_newline!%%    if (u > -7.0 && u <= -4.0 && abs(v) < 0.9) return vec4(hexrgb(0x3a3a46), 1.0);                       // eyepiece%%!serialized_property_newline!%%    if (u > -3.0 && u < 0.5 && v < -1.2 && v > -4.5) return vec4(v < -3.5 ? hexrgb(0x1a1a24) : hexrgb(0x2a2a36), 1.0);   // counterweight%%!serialized_property_newline!%%    return vec4(0.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%float amFar(float x) { return 40.0 + ridge(x, 3.0, 26.0, 70.0); }%%!serialized_property_newline!%%float amNear(float x) { return 16.0 + ridge(x, 11.0, 12.0, 46.0) + floor(30.0 * exp(-pow((x - 252.0) / 52.0, 2.0))); }%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 aria_math(vec2 p, Music m) {%%!serialized_property_newline!%%    float t = iTime;%%!serialized_property_newline!%%    float D = 0.3 * t + 0.7 * m.drive;%%!serialized_property_newline!%%    float ang = -mod(D * 0.0011, 2.0 * PI);%%!serialized_property_newline!%%    vec2 q = rot(p + 0.5 - AM_POLE, ang) + AM_POLE;              // sky space (turns with the music)%%!serialized_property_newline!%%    vec3 col = amSky(p, q, t, m);%%!serialized_property_newline!%%    col = amConstellations(p, col, m);%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // shooting star: one per big hit, crossing in 1.2 s%%!serialized_property_newline!%%    if (m.hit < 1.2) {%%!serialized_property_newline!%%        float u = m.hit / 1.2, sd = m.hitSeed;%%!serialized_property_newline!%%        vec2 s0 = vec2(40.0 + 240.0 * hash11(sd * 1.7), H - 6.0 - 24.0 * hash11(sd * 3.1));%%!serialized_property_newline!%%        vec2 dir = normalize(vec2(hash11(sd * 5.9) < 0.5 ? -1.0 : 1.0, -0.5));%%!serialized_property_newline!%%        vec2 head = s0 + dir * 110.0 * u;%%!serialized_property_newline!%%        vec2 s = segment(p, head - dir * 16.0 * (1.0 - u * 0.6), head);%%!serialized_property_newline!%%        if (s.x < 0.6) col = mix(col, hexrgb(0xfffbe8), clamp(s.y * (1.2 - u), 0.0, 1.0));%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // the telescope points at the pentagram; its beam leaves the objective%%!serialized_property_newline!%%    vec2 scope = vec2(252.0, amNear(252.0) + 17.0);%%!serialized_property_newline!%%    vec2 sdir = normalize(AM_PENT_C - scope);%%!serialized_property_newline!%%    vec2 tip = scope + sdir * 22.0;%%!serialized_property_newline!%%    vec2 bs = segment(p, tip, tip + (AM_PENT_C - tip) * 0.8);%%!serialized_property_newline!%%    if (bs.x < 1.2) col = mix(col, hexrgb(0xbfe6ff), clamp((0.10 + 0.32 * m.energy) * (1.0 - bs.y) * (bs.x < 0.6 ? 1.6 : 0.8), 0.0, 1.0) * 0.8);%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // a faint glow along the horizon, distant snowy mountains, the hills%%!serialized_property_newline!%%    float far = amFar(p.x);%%!serialized_property_newline!%%    col = dmix(col, hexrgb(0x4a4490), clamp(1.0 - (p.y - far) / 26.0, 0.0, 1.0) * 0.5, p);%%!serialized_property_newline!%%    float mnt = 50.0 + floor((1.0 - abs(2.0 * vnoise(p.x / 34.0 + 5.0) - 1.0)) * 24.0 + vnoise(p.x / 8.0) * 5.0);   // ridged peaks%%!serialized_property_newline!%%    if (p.y < mnt) {%%!serialized_property_newline!%%        col = hexrgb(0x252250);%%!serialized_property_newline!%%        if (p.y >= mnt - 4.0 && mnt > 70.0) col = p.y >= mnt - 1.0 ? hexrgb(0x8a86c0) : hexrgb(0x5a56a0);   // snow%%!serialized_property_newline!%%        else if (p.y >= mnt - 1.0) col = hexrgb(0x3a3672);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    if (p.y < far) {%%!serialized_property_newline!%%        col = mix(hexrgb(0x1b1840), hexrgb(0x242050), step(bayer4(p), (p.y - far + 14.0) / 14.0 * 0.6));%%!serialized_property_newline!%%        if (p.y > far - 1.0) col = hexrgb(0x3a3474);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    float near = amNear(p.x);%%!serialized_property_newline!%%    if (p.y < near) {%%!serialized_property_newline!%%        col = dmix(hexrgb(0x0c0a1c), hexrgb(0x141030), (p.y - near + 10.0) / 10.0, p);%%!serialized_property_newline!%%        if (p.y > near - 1.0) col = hexrgb(0x2f2a5e);%%!serialized_property_newline!%%        if (p.y > near - 3.0 && p.y <= near - 1.0 && hash21(vec2(p.x, 1.0)) < 0.3) col = hexrgb(0x241f4c);   // grass tufts%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    if (p.y == near && hash21(vec2(p.x, 2.0)) < 0.25) col = hexrgb(0x241f4c);%%!serialized_property_newline!%%    // pond in the foreground mirroring the sky (stars shimmer with the energy)%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        float cx = 92.0, w = 62.0 - 0.0 * p.y;%%!serialized_property_newline!%%        float e = pow((p.x - cx) / w, 2.0) + pow((p.y - 6.0) / 6.0, 2.0);%%!serialized_property_newline!%%        if (e < 1.0 && p.y < near - 1.0) {%%!serialized_property_newline!%%            float ripple = floor(sin(p.y * 1.7 + t * 1.6) * 1.1);%%!serialized_property_newline!%%            vec2 rp = vec2(p.x + ripple, 2.0 * near - p.y + 40.0);%%!serialized_property_newline!%%            vec2 rq = rot(rp + 0.5 - AM_POLE, ang) + AM_POLE;%%!serialized_property_newline!%%            vec3 r = amSky(rp, rq, t + 0.7, m);%%!serialized_property_newline!%%            col = mix(r * vec3(0.7, 0.75, 1.0), hexrgb(0x14123a), 0.25);%%!serialized_property_newline!%%            if (mod(p.y + floor(t * 1.5), 3.0) < 1.0 && hash21(vec2(floor(p.x / 6.0), p.y)) > 0.7) col = mix(col, hexrgb(0x5a56a0), 0.5);%%!serialized_property_newline!%%            if (e > 0.82) col = hexrgb(0x241f4c);                                  // bank%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // pines on the left%%!serialized_property_newline!%%    for (int i = 0; i < 6; i++) {%%!serialized_property_newline!%%        float tx = 10.0 + float(i) * 17.0 + floor(hash11(float(i) * 7.3) * 8.0);%%!serialized_property_newline!%%        float base = amNear(tx);%%!serialized_property_newline!%%        float hgt = 12.0 + floor(hash11(float(i) * 3.9) * 9.0);%%!serialized_property_newline!%%        float dy = p.y - base;%%!serialized_property_newline!%%        if (dy >= 0.0 && dy < hgt && abs(p.x - tx) <= floor((hgt - dy) * 0.38 + 0.5) - (mod(dy, 4.0) < 1.0 ? 1.0 : 0.0))%%!serialized_property_newline!%%            col = hexrgb(0x0a0918);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // the observatory: a round stone tower (masonry, arched lit windows, door with a lamp) on a%%!serialized_property_newline!%%    // foundation sunk into the hill, a slate-roofed annex with a chimney, a copper dome with panels and a%%!serialized_property_newline!%%    // lightning rod; through the open slit the lamp-lit room shows, the brass telescope reaching out of it%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        vec2 c = vec2(252.0, amNear(252.0) + 13.0);%%!serialized_property_newline!%%        vec2 d = p + 0.5 - c;%%!serialized_property_newline!%%        float r = length(d);%%!serialized_property_newline!%%        bool dome = d.y >= 0.0 && r < 13.0;%%!serialized_property_newline!%%        bool slit = dome && abs(dot(p + 0.5 - scope, vec2(-sdir.y, sdir.x))) < 3.2 && dot(p + 0.5 - scope, sdir) > 0.0;%%!serialized_property_newline!%%        // annex on the left: walls, slate roof, a window, a chimney%%!serialized_property_newline!%%        vec2 a = d - vec2(-22.0, -14.0);%%!serialized_property_newline!%%        float roofY = 10.0 + floor((9.0 - abs(a.x)) * 0.7);%%!serialized_property_newline!%%        if (abs(a.x) < 9.0 && a.y >= -6.0 && a.y < roofY) {%%!serialized_property_newline!%%            col = a.y < 10.0 ? (mod(a.y, 3.0) == 0.0 || mod(a.x + floor(a.y / 3.0) * 3.0, 6.0) == 0.0 ? hexrgb(0x16122a) : hexrgb(0x221c3a))%%!serialized_property_newline!%%                             : (mod(a.y, 2.0) == 0.0 ? hexrgb(0x1a1830) : hexrgb(0x26223e));%%!serialized_property_newline!%%            if (a.y >= roofY - 1.0) col = hexrgb(0x4a4478);                                   // starlit ridge%%!serialized_property_newline!%%            if (abs(a.x + 2.0) < 1.5 && a.y > 2.0 && a.y < 7.0) col = a.y > 5.0 || abs(a.x + 2.0) > 1.0 ? hexrgb(0x2a1a14) : mix(hexrgb(0xffc46b), hexrgb(0xffe6a8), 0.3 + 0.5 * m.energy);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        if (a.x > 3.0 && a.x < 6.0 && a.y >= roofY - 2.0 && a.y < 19.0) col = a.y > 17.0 ? hexrgb(0x3a3456) : hexrgb(0x221c3a);   // chimney%%!serialized_property_newline!%%        // the round tower: masonry shaded like a cylinder, foundation reaching into the hill%%!serialized_property_newline!%%        if (abs(d.x) < 13.0 && d.y < 0.0 && d.y > -22.0) {%%!serialized_property_newline!%%            float row = floor(d.y / 3.0);%%!serialized_property_newline!%%            bool joint = mod(d.y, 3.0) == 0.0 || mod(d.x + 13.0 + mod(row, 2.0) * 3.0, 6.0) == 0.0;%%!serialized_property_newline!%%            float shade = 1.0 - pow(abs(d.x) / 13.0, 2.0) * 0.55 + (d.x < 0.0 ? 0.08 : -0.08);%%!serialized_property_newline!%%            col = (joint ? hexrgb(0x1c1830) : (hash21(vec2(floor((d.x + 13.0 + mod(row, 2.0) * 3.0) / 6.0), row)) < 0.5 ? hexrgb(0x332c50) : hexrgb(0x3a3258))) * shade;%%!serialized_property_newline!%%            if (d.y > -2.0) col = hexrgb(0x4a4070) * shade;                                   // cornice%%!serialized_property_newline!%%            for (int w = 0; w < 2; w++) {                                                     // arched windows%%!serialized_property_newline!%%                vec2 wd = d - vec2(w == 0 ? -6.5 : 6.5, -9.0);%%!serialized_property_newline!%%                if (abs(wd.x) < 2.0 && wd.y > -4.0 && wd.y < 2.0 + (abs(wd.x) < 1.0 ? 1.0 : 0.0)) {%%!serialized_property_newline!%%                    col = mix(hexrgb(0xffc46b), hexrgb(0xffe6a8), 0.3 + 0.5 * m.energy);%%!serialized_property_newline!%%                    if (abs(wd.x) > 1.0 && wd.y > 1.0) col = hexrgb(0x2a1a14);%%!serialized_property_newline!%%                    if (wd.x == -0.5 || wd.y == -1.0) col = hexrgb(0x8a5a2a);                  // mullions%%!serialized_property_newline!%%                }%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%            vec2 dd = d - vec2(0.5, -16.0);                                                    // door%%!serialized_property_newline!%%            if (abs(dd.x) < 2.5 && dd.y > -6.0 && dd.y < 2.0 + (abs(dd.x) < 1.5 ? 1.0 : 0.0))%%!serialized_property_newline!%%                col = abs(dd.x) > 1.5 || dd.y > 1.5 ? hexrgb(0x2a1a14) : mix(hexrgb(0x8a5a2a), hexrgb(0xffc46b), 0.35 + 0.4 * m.energy);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        if (abs(d.x - 0.5) < 4.5 && d.y <= -22.0 && d.y > -24.0) col = d.y > -23.0 ? hexrgb(0x3a3456) : hexrgb(0x2a2444);   // steps%%!serialized_property_newline!%%        // the copper dome: patina panels, a seam, a lit room behind the slit%%!serialized_property_newline!%%        if (dome) {%%!serialized_property_newline!%%            float lat = d.y / 13.0;%%!serialized_property_newline!%%            float lon = d.x / max(1.0, sqrt(max(1.0, 169.0 - d.y * d.y)));%%!serialized_property_newline!%%            col = mix(hexrgb(0x2e5a56), hexrgb(0x5a9a88), clamp(0.55 - lon * 0.45 + lat * 0.25, 0.0, 1.0));%%!serialized_property_newline!%%            if (abs(fract(lon * 2.5 + 0.5) - 0.5) < 0.07) col *= 0.72;                          // panel ribs%%!serialized_property_newline!%%            if (abs(d.y - 6.5) < 0.5) col *= 0.8;                                              // seam%%!serialized_property_newline!%%            if (r > 12.0) col = hexrgb(0x1e3a38);                                              // outline%%!serialized_property_newline!%%            if (slit) col = mix(hexrgb(0x5a3018), hexrgb(0xffb060), (0.35 + 0.35 * m.energy) * (1.0 - r / 16.0));%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        if (abs(d.x) < 0.6 && d.y >= 13.0 && d.y < 18.0) col = hexrgb(0x8a8aa8);                // lightning rod%%!serialized_property_newline!%%        if (d.y >= -1.0 && d.y < 1.0 && abs(d.x) < 15.0) col = abs(d.x) > 13.0 ? hexrgb(0x6b3f1c) : hexrgb(0xb0782e);   // brass ring%%!serialized_property_newline!%%        if (d.y >= 1.0 && d.y < 3.0 && abs(d.x) > 13.0 && abs(d.x) < 15.0 && mod(d.x, 2.0) < 1.0) col = hexrgb(0x241f3a);   // railing%%!serialized_property_newline!%%        vec4 tel = amTelescope(p, scope, sdir, 22.0);%%!serialized_property_newline!%%        if (tel.a > 0.0 && (!dome || slit || r > 12.5)) col = tel.rgb;%%!serialized_property_newline!%%        // a lamp beside the door%%!serialized_property_newline!%%        vec2 ld = d - vec2(5.5, -14.0);%%!serialized_property_newline!%%        float lg = 4.0 + 2.0 * m.energy;%%!serialized_property_newline!%%        if (length(ld) < lg && abs(d.x) >= 4.0) col = dmix(col, mix(col, hexrgb(0xffc46b), 0.5), (lg - length(ld)) / lg * 1.2, p);%%!serialized_property_newline!%%        if (abs(ld.x) < 1.0 && abs(ld.y) < 1.0) col = hexrgb(0xffe6a8);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // lamp posts along the path up to the observatory%%!serialized_property_newline!%%    for (int k = 0; k < 3; k++) {%%!serialized_property_newline!%%        float lx = 172.0 + float(k) * 16.0;                                   // left of the annex%%!serialized_property_newline!%%        float base = amNear(lx);%%!serialized_property_newline!%%        vec2 d = p + 0.5 - vec2(lx + 0.5, base + 7.0);%%!serialized_property_newline!%%        if (p.x == lx && p.y >= base && p.y < base + 6.0) col = hexrgb(0x241f3a);%%!serialized_property_newline!%%        float glow = 4.0 + 2.0 * m.energy;%%!serialized_property_newline!%%        if (length(d) < glow) col = dmix(col, mix(col, hexrgb(0xffc46b), 0.5), (glow - length(d)) / glow * 1.3, p);%%!serialized_property_newline!%%        if (abs(d.x) < 1.0 && abs(d.y) < 1.0) col = hexrgb(0xffe6a8);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // digits and signs drifting up from the dome%%!serialized_property_newline!%%    int count = 3 + int(10.0 * m.tension);%%!serialized_property_newline!%%    for (int i = 0; i < 13; i++) {%%!serialized_property_newline!%%        if (i >= count) break;%%!serialized_property_newline!%%        float fi = float(i);%%!serialized_property_newline!%%        float ph = fract(D * 0.045 + hash11(fi * 4.1));%%!serialized_property_newline!%%        float gen = floor(D * 0.045 + hash11(fi * 4.1));%%!serialized_property_newline!%%        vec2 gp = vec2(240.0 + (hash11(fi + gen * 3.3) - 0.5) * 70.0 + sin(ph * 5.0 + fi) * 5.0, amNear(252.0) + 26.0 + ph * 80.0);%%!serialized_property_newline!%%        if (glyph(int(hash11(fi * 9.7 + gen) * 16.0), vec2(p.x - floor(gp.x), floor(gp.y) - p.y)))%%!serialized_property_newline!%%            col = dmix(col, hexrgb(0x9ef0ff), 1.0 - ph * 0.9, p);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ Cat: "Moonlit rooftops"%%!serialized_property_newline!%%// A cat sits on a ridge and watches the moon over the rooftops of Zeta. Music: clouds drift past the%%!serialized_property_newline!%%// moon on music time and its halo swells with the tension; more windows light up as the song builds;%%!serialized_property_newline!%%// the lantern string over the alley glows with the energy and the cat's tail sways with the music;%%!serialized_property_newline!%%// from mid tension on every big hit sends a firework up beside the menu, at the peak they keep going.%%!serialized_property_newline!%%%%!serialized_property_newline!%%const int CAT_ROWS[14] = int[14](136, 216, 248, 248, 248, 112, 240, 504, 1016, 1020, 2044, 2044, 2046, 1918);%%!serialized_property_newline!%%const vec2 CAT_MOON = vec2(262.0, 0.0);      // y set from H%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 catSky(vec2 p, float t, float D, Music m) {%%!serialized_property_newline!%%    vec3 col = bands(hexrgb(0x41608f), hexrgb(0x2c4774), hexrgb(0x1c3054), hexrgb(0x101b36), p.y / H, p);%%!serialized_property_newline!%%    vec2 cell = floor(p / 5.0);%%!serialized_property_newline!%%    float id = hash21(cell + 11.0);%%!serialized_property_newline!%%    if (id < 0.2 && p == cell * 5.0 + floor(hash22(cell) * 4.0))%%!serialized_property_newline!%%        col = mix(col, hexrgb(0xe8eeff), 0.35 + 0.35 * sin(t * 2.0 + id * 50.0));%%!serialized_property_newline!%%    // moon with a stepped halo that swells with the tension%%!serialized_property_newline!%%    vec2 mc = vec2(CAT_MOON.x, H - 40.0);%%!serialized_property_newline!%%    vec2 d = p + 0.5 - mc;%%!serialized_property_newline!%%    float r = length(d);%%!serialized_property_newline!%%    float halo = 19.0 + 9.0 * m.tension;%%!serialized_property_newline!%%    if (r < halo + 7.0) col = dmix(col, hexrgb(0x56729f), (halo + 7.0 - r) / 10.0, p);%%!serialized_property_newline!%%    if (r < halo) col = dmix(col, hexrgb(0x7891bd), (halo - r) / 9.0, p);%%!serialized_property_newline!%%    if (r < 14.0) {%%!serialized_property_newline!%%        col = hexrgb(0xf6eed2);%%!serialized_property_newline!%%        if (length(d - vec2(-4.0, 3.0)) < 3.0 || length(d - vec2(5.0, -4.0)) < 2.2 || length(d - vec2(2.0, 7.0)) < 1.6)%%!serialized_property_newline!%%            col = hexrgb(0xdcd2b0);%%!serialized_property_newline!%%        if (dot(d, normalize(vec2(-1.0, -0.7))) > 8.0 || r > 13.2) col = hexrgb(0xd6cba6);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    // two cloud banks drifting on music time, lit from above near the moon%%!serialized_property_newline!%%    for (int k = 0; k < 2; k++) {%%!serialized_property_newline!%%        float y0 = k == 0 ? H - 46.0 : H - 84.0;%%!serialized_property_newline!%%        float x = p.x + D * (2.0 + 1.2 * float(k)) + float(k) * 90.0;%%!serialized_property_newline!%%        float shape = vnoise(x / 26.0 + float(k) * 7.0) * 0.65 + vnoise(x / 9.0 + float(k) * 3.0) * 0.35;%%!serialized_property_newline!%%        float top = y0 + floor((shape - 0.35) * (k == 0 ? 18.0 : 12.0));%%!serialized_property_newline!%%        float bottom = y0 - 3.0 - floor(vnoise(x / 15.0 + 2.0) * 3.0);%%!serialized_property_newline!%%        if (p.y <= top && p.y >= bottom && shape > 0.35) {%%!serialized_property_newline!%%            float lit = clamp(1.0 - length(p - mc) / 80.0, 0.0, 1.0);%%!serialized_property_newline!%%            col = p.y >= top - 1.0 ? mix(hexrgb(0x41598a), hexrgb(0xb4c4e0), lit) : mix(hexrgb(0x22335a), hexrgb(0x5d78a8), lit * 0.7);%%!serialized_property_newline!%%            if (p.y < bottom + 1.0) col = hexrgb(0x1a2848);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// fireworks: burst `u` 0..1 (age), centre c, seed s; returns colour in .rgb, coverage in .a%%!serialized_property_newline!%%vec4 catBurst(vec2 p, vec2 c, float u, float s) {%%!serialized_property_newline!%%    vec2 d = p + 0.5 - c;%%!serialized_property_newline!%%    if (u <= 0.0 || u >= 1.0) return vec4(0.0);%%!serialized_property_newline!%%    if (u < 0.12) {                                               // the rocket climbing to its burst%%!serialized_property_newline!%%        vec2 rk = c - vec2(0.0, 26.0 * (1.0 - u / 0.12));%%!serialized_property_newline!%%        return (abs(d.x - (rk.x - c.x)) < 0.6 && d.y < rk.y - c.y + 0.5 && d.y > rk.y - c.y - 4.0) ? vec4(vec3(1.0, 0.9, 0.7), 0.9) : vec4(0.0);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    u = (u - 0.12) / 0.88;%%!serialized_property_newline!%%    float rad = 3.0 + 26.0 * (1.0 - (1.0 - u) * (1.0 - u));      // fast burst, slowing down%%!serialized_property_newline!%%    if (length(d) > rad + 4.0) return vec4(0.0);%%!serialized_property_newline!%%    vec3 tint = hexrgb(s < 0.25 ? 0xffd27a : (s < 0.5 ? 0xff7aa8 : (s < 0.75 ? 0x7ae8ff : 0xa8ff9e)));%%!serialized_property_newline!%%    float fade = 1.0 - u * u;%%!serialized_property_newline!%%    for (int i = 0; i < 18; i++) {%%!serialized_property_newline!%%        float a = float(i) / 18.0 * 2.0 * PI + s * 6.0;%%!serialized_property_newline!%%        vec2 dir = vec2(cos(a), sin(a));%%!serialized_property_newline!%%        for (int j = 0; j < 2; j++) {%%!serialized_property_newline!%%            float rr = rad * (j == 0 ? 1.0 : 0.72);%%!serialized_property_newline!%%            vec2 q = dir * rr - vec2(0.0, u * u * 12.0);%%!serialized_property_newline!%%            vec2 e = abs(d - q);%%!serialized_property_newline!%%            bool spark = hash11(float(i) * 3.1 + floor(u * 14.0) + s * 50.0) > 0.25 * u;   // twinkle out%%!serialized_property_newline!%%            bool isDot = e.x < 0.75 && e.y < 0.75, plus = u < 0.45 && j == 0 && e.x + e.y < 1.6;%%!serialized_property_newline!%%            if ((isDot || plus) && spark) return vec4(j == 0 ? mix(tint, vec3(1.0), 0.45 - 0.3 * u) : tint, fade * (j == 0 ? 1.0 : 0.7));%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    if (u < 0.25 && length(d) < 7.0) return vec4(mix(tint, vec3(1.0), 0.5), (0.25 - u) * 1.6);    // flash%%!serialized_property_newline!%%    return vec4(0.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec2 catBurstPos(float s1, float s2, float s3) {%%!serialized_property_newline!%%    // beside the menu: left column or right column, above the roofs%%!serialized_property_newline!%%    return vec2(s1 < 0.5 ? 22.0 + 46.0 * s2 : 252.0 + 50.0 * s2, H - 70.0 - 40.0 * s3);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// the near houses: width, height of the facade, roof type (< .5 gable, < .78 mansard, else stepped gable)%%!serialized_property_newline!%%float catHouseW(float i) { return 22.0 + floor(hash11(i * 3.7) * 14.0); }%%!serialized_property_newline!%%float catWall(float i) { return 24.0 + floor(hash11(i * 5.1) * 12.0); }%%!serialized_property_newline!%%float catRoofType(float i) { return hash11(i * 6.7); }%%!serialized_property_newline!%%float catRoofY(float lx, float w, float wall, float rt) {%%!serialized_property_newline!%%    float d = w * 0.5 - abs(lx + 0.5 - w * 0.5);%%!serialized_property_newline!%%    if (rt < 0.5) return wall + floor(d * 0.7);%%!serialized_property_newline!%%    if (rt < 0.78) return wall + min(floor(d * 1.7), 8.0);%%!serialized_property_newline!%%    return wall + floor(min(d, w * 0.5) / 3.0) * 3.0 + 1.0;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%vec3 catFacade(float i) {%%!serialized_property_newline!%%    float h = hash11(i * 2.9);%%!serialized_property_newline!%%    return h < 0.2 ? hexrgb(0x2c2642) : (h < 0.4 ? hexrgb(0x1e2c46) : (h < 0.6 ? hexrgb(0x1c3038) : (h < 0.8 ? hexrgb(0x3a3026) : hexrgb(0x3a2636))));%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%vec3 cat(vec2 p, Music m) {%%!serialized_property_newline!%%    float t = iTime;%%!serialized_property_newline!%%    float D = 0.35 * t + 0.65 * m.drive;%%!serialized_property_newline!%%    vec3 col = catSky(p, t, D, m);%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // fireworks: one per big hit from mid tension on (2.2 s each), plus a steady show at the peak%%!serialized_property_newline!%%    if (m.tension > 0.42 && m.hit < 2.2) {%%!serialized_property_newline!%%        float sd = m.hitSeed;%%!serialized_property_newline!%%        vec4 b = catBurst(p, catBurstPos(hash11(sd), hash11(sd * 2.3), hash11(sd * 4.1)), m.hit / 2.2, hash11(sd * 7.7));%%!serialized_property_newline!%%        if (b.a > 0.0) col = mix(col, b.rgb, clamp(b.a * 1.3, 0.0, 1.0));%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    if (m.tension > 0.72) {%%!serialized_property_newline!%%        for (int k = 0; k < 2; k++) {%%!serialized_property_newline!%%            float per = k == 0 ? 2.3 : 3.1;%%!serialized_property_newline!%%            float cyc = t / per + float(k) * 0.5;%%!serialized_property_newline!%%            float slot = floor(cyc) + float(k) * 100.0;%%!serialized_property_newline!%%            vec4 b = catBurst(p, catBurstPos(hash11(slot), hash11(slot * 2.3), hash11(slot * 4.1)), fract(cyc), hash11(slot * 7.7));%%!serialized_property_newline!%%            if (b.a > 0.0) col = mix(col, b.rgb, clamp(b.a * smoothstep(0.72, 0.86, m.tension), 0.0, 1.0));%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // far old town: gabled roofs, a gothic church with its spire and clock, a domed hall, all moonlit%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        float bi = floor((p.x + 400.0) / 11.0), lx = mod(p.x + 400.0, 11.0);%%!serialized_property_newline!%%        float base = 48.0 + floor(hash11(bi) * 16.0);%%!serialized_property_newline!%%        float top = base + (hash11(bi * 2.3) < 0.65 ? floor((5.5 - abs(lx + 0.5 - 5.5)) * 0.9) : 0.0);%%!serialized_property_newline!%%        bool chim = hash11(bi * 3.1) < 0.4 && abs(lx - 3.0) < 1.0 && p.y < base + 6.0;%%!serialized_property_newline!%%        float ch = abs(p.x + 0.5 - 62.0);                                                  // church%%!serialized_property_newline!%%        float churchTop = ch < 6.0 ? 98.0 + floor(max(0.0, 6.0 - ch) * 4.5) : (ch < 14.0 ? 74.0 + floor((14.0 - ch) * 0.8) : 0.0);%%!serialized_property_newline!%%        if (ch < 0.6 && p.y >= churchTop && p.y < churchTop + 3.0) churchTop += 3.0;       // cross%%!serialized_property_newline!%%        float dm = abs(p.x + 0.5 - 276.0);                                                 // dome%%!serialized_property_newline!%%        float domeTop = dm < 11.0 ? 70.0 + floor(sqrt(max(0.0, 121.0 - dm * dm)) * 0.9) : (dm < 14.0 ? 66.0 : 0.0);%%!serialized_property_newline!%%        if (dm < 1.5 && p.y < 84.0) domeTop = max(domeTop, 84.0);%%!serialized_property_newline!%%        float t2 = max(max(top, churchTop), domeTop);%%!serialized_property_newline!%%        if (p.y < t2 || chim) {%%!serialized_property_newline!%%            col = hexrgb(0x16233f);%%!serialized_property_newline!%%            if (p.y >= t2 - 1.0 && !chim) col = hexrgb(0x2c4068);                         // moonlit edge%%!serialized_property_newline!%%            vec2 wc = floor(p / vec2(3.0, 4.0));%%!serialized_property_newline!%%            float w = hash21(wc + 5.0);%%!serialized_property_newline!%%            if (mod(p.x, 3.0) < 1.0 && mod(p.y, 4.0) < 2.0 && p.y < t2 - 4.0 && w < 0.06 + 0.2 * m.tension)%%!serialized_property_newline!%%                col = mix(hexrgb(0xb08a4a), hexrgb(0xf2c46b), step(0.5, hash21(wc + floor(t * 0.3 + w * 9.0))));%%!serialized_property_newline!%%            if (ch < 6.0 && p.y > 80.0 && p.y < 96.0 && mod(p.y, 5.0) < 3.0 && ch > 1.0 && ch < 3.0) col = hexrgb(0x0e1830);   // tower openings%%!serialized_property_newline!%%            if (length(vec2(p.x + 0.5 - 62.0, p.y + 0.5 - 90.0)) < 2.5) col = hexrgb(0xf2e2b0);             // clock%%!serialized_property_newline!%%            if (ch >= 6.0 && ch < 14.0 && p.y > 56.0 && p.y < 70.0 && mod(p.x, 4.0) < 2.0)%%!serialized_property_newline!%%                col = mix(hexrgb(0x6a4a8a), hexrgb(0xc89a4a), step(0.5, hash21(vec2(floor(p.x / 4.0), 1.0))));  // church windows%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // near houses: facades in muted night colours, floors of windows (lit as the song builds), shutters,%%!serialized_property_newline!%%    // balconies, half-timbering, shopfronts and doors at the street, gable / mansard / stepped roofs%%!serialized_property_newline!%%    float shift = 10.0;%%!serialized_property_newline!%%    float x = p.x + shift, i = 0.0, x0 = 0.0;%%!serialized_property_newline!%%    for (int k = 0; k < 16; k++) { float w = catHouseW(i); if (x < x0 + w) break; x0 += w; i += 1.0; }%%!serialized_property_newline!%%    float w = catHouseW(i), lx = x - x0;%%!serialized_property_newline!%%    float wall = catWall(i), rt = catRoofType(i);%%!serialized_property_newline!%%    float roof = catRoofY(lx, w, wall, rt);%%!serialized_property_newline!%%    float peak = catRoofY(floor(w * 0.5), w, wall, rt);%%!serialized_property_newline!%%    float chx = floor(w * (0.22 + 0.56 * hash11(i * 8.3)));%%!serialized_property_newline!%%    float chTop = catRoofY(chx, w, wall, rt) + 6.0;%%!serialized_property_newline!%%    bool chimney = abs(lx - chx) < 2.0 && p.y < chTop && p.y >= wall;%%!serialized_property_newline!%%    bool pots = (lx == chx - 1.0 || lx == chx + 1.0) && p.y >= chTop && p.y < chTop + 2.0;%%!serialized_property_newline!%%    // smoke from the chimney, drifting away from the moon on music time%%!serialized_property_newline!%%    if (!(p.y < roof || chimney || pots) && p.y >= chTop && p.y < chTop + 34.0) {%%!serialized_property_newline!%%        float h = p.y - chTop;%%!serialized_property_newline!%%        float sx = chx - h * 0.55 + sin(h * 0.25 - D * 1.2) * 1.5;%%!serialized_property_newline!%%        float n = vnoise2(vec2((lx - D * 3.0) / 4.0, (p.y - D * 5.0) / 4.0));%%!serialized_property_newline!%%        if (abs(lx - sx) < 1.0 + h * 0.12 && n > 0.3 + h / 45.0)%%!serialized_property_newline!%%            col = mix(hexrgb(0x5a6e94), col, clamp(h / 34.0, 0.0, 0.8));%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    if (p.y < roof || chimney || pots) {%%!serialized_property_newline!%%        bool moonSide = lx > w * 0.5;%%!serialized_property_newline!%%        vec3 fac = catFacade(i);%%!serialized_property_newline!%%        bool timber = hash11(i * 4.7) < 0.3;%%!serialized_property_newline!%%        if (timber) fac = hexrgb(0x343446);%%!serialized_property_newline!%%        col = p.y < wall ? fac : (moonSide ? hexrgb(0x142040) : hexrgb(0x0b1224));%%!serialized_property_newline!%%        if (lx == 0.0 && p.y < wall) col *= 0.6;                                                   // seam between houses%%!serialized_property_newline!%%        if (p.y >= wall && !chimney && !pots) {                                                   // roof tiles%%!serialized_property_newline!%%            if (mod(p.y, 3.0) == 0.0) col = moonSide ? hexrgb(0x1c2c52) : hexrgb(0x111a32);%%!serialized_property_newline!%%            else if (mod(lx + floor(p.y / 3.0) * 2.0, 5.0) == 0.0) col = hexrgb(0x080e1c);%%!serialized_property_newline!%%            vec2 aw = vec2(lx + 0.5 - w * 0.5, p.y - wall - 2.0);                                  // attic / dormer windows%%!serialized_property_newline!%%            if (rt >= 0.5 && rt < 0.78) {%%!serialized_property_newline!%%                if (p.y < wall + 6.0 && p.y > wall + 1.0 && abs(mod(lx - 3.0, 8.0) - 2.0) < 1.5 && lx > 2.0 && lx < w - 3.0)%%!serialized_property_newline!%%                    col = hash21(vec2(i, floor(lx / 8.0))) < 0.3 + 0.3 * m.tension ? hexrgb(0xf0b860) : hexrgb(0x1a2440);%%!serialized_property_newline!%%            } else if (abs(aw.x) < 1.5 && aw.y >= 0.0 && aw.y < 3.0 && peak - wall > 6.0) {%%!serialized_property_newline!%%                col = hash11(i * 9.9) < 0.3 + 0.4 * m.tension ? hexrgb(0xffd890) : hexrgb(0x1a2440);%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%            if (rt >= 0.78 && mod(p.y - wall, 3.0) == 0.0) col = moonSide ? hexrgb(0x3a5584) : hexrgb(0x1c2c52);   // step ledges%%!serialized_property_newline!%%            if (p.y >= roof - 1.0) col = moonSide ? hexrgb(0x5a78aa) : hexrgb(0x2c4068);          // moonlit edge%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        if (chimney) col = abs(lx - chx) > 1.0 ? hexrgb(0x1a2440) : (lx > chx ? hexrgb(0x24345a) : hexrgb(0x141c34));%%!serialized_property_newline!%%        if (chimney && p.y == chTop - 1.0) col = hexrgb(0x3a4f7a);%%!serialized_property_newline!%%        if (pots) col = hexrgb(0x5a3a3a);%%!serialized_property_newline!%%        if (p.y < wall) {%%!serialized_property_newline!%%            if (timber && p.y > 8.0 && (mod(lx, 8.0) == 0.0 || mod(p.y - 8.0, 8.0) == 0.0 || abs(mod(lx, 8.0) - mod(p.y - 8.0, 8.0)) < 0.5))%%!serialized_property_newline!%%                col = hexrgb(0x16141e);                                                            // timber framing%%!serialized_property_newline!%%            float n = floor((w - 4.0) / 8.0), mg = floor((w - n * 8.0) * 0.5);%%!serialized_property_newline!%%            float wx = lx - mg, fy = mod(p.y - 8.0, 8.0), fl = floor((p.y - 8.0) / 8.0);%%!serialized_property_newline!%%            if (p.y >= 8.0 && p.y < wall - 2.0 && wx >= 0.0 && wx < n * 8.0) {%%!serialized_property_newline!%%                float cx = mod(wx, 8.0);%%!serialized_property_newline!%%                float wid = hash21(vec2(i * 7.0 + floor(wx / 8.0), fl));%%!serialized_property_newline!%%                bool shutters = hash11(i * 1.9) < 0.5;%%!serialized_property_newline!%%                bool balcony = hash11(i * 5.9 + fl) < 0.25 && fl == 1.0;%%!serialized_property_newline!%%                if (cx >= 2.0 && cx < 6.0 && fy >= 2.0 && fy < 7.0) {                              // window%%!serialized_property_newline!%%                    if (wid < 0.22 + 0.4 * m.tension) {%%!serialized_property_newline!%%                        col = mix(hexrgb(0xf0b860), hexrgb(0xffe2a0), 0.4 * m.energy);%%!serialized_property_newline!%%                        if (cx == 3.0 || fy == 4.0) col = hexrgb(0x8a5a2a);%%!serialized_property_newline!%%                        if (wid < 0.07 && cx < 4.0) col = hexrgb(0xb06a3a);                        // curtain%%!serialized_property_newline!%%                    } else {%%!serialized_property_newline!%%                        col = hexrgb(0x141c30);%%!serialized_property_newline!%%                        if (cx == 5.0 && fy == 6.0) col = hexrgb(0x5a78aa);                        // moon in the glass%%!serialized_property_newline!%%                    }%%!serialized_property_newline!%%                }%%!serialized_property_newline!%%                if (cx >= 2.0 && cx < 6.0 && fy == 1.0) col = hexrgb(0x3a4a6a);                    // sill%%!serialized_property_newline!%%                if (shutters && (cx == 1.0 || cx == 6.0) && fy >= 2.0 && fy < 7.0) col = mix(fac, hexrgb(0x0a0e18), 0.5);%%!serialized_property_newline!%%                if (balcony && cx >= 1.0 && cx < 7.0 && (fy == 1.0 || (fy == 2.0 && mod(cx, 2.0) == 0.0))) col = hexrgb(0x0e1220);%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%            if (p.y < 8.0) {                                                                        // street level%%!serialized_property_newline!%%                bool shop = hash11(i * 3.3) < 0.5;%%!serialized_property_newline!%%                if (shop && lx > 2.0 && lx < w - 3.0 && p.y >= 1.0 && p.y < 6.0) {%%!serialized_property_newline!%%                    col = mix(hexrgb(0xe0a050), hexrgb(0xffd890), 0.3 + 0.4 * m.energy);%%!serialized_property_newline!%%                    if (mod(lx, 4.0) == 0.0) col = hexrgb(0x3a2418);%%!serialized_property_newline!%%                }%%!serialized_property_newline!%%                if (shop && p.y == 6.0 && lx > 1.0 && lx < w - 2.0) col = hash11(i * 7.7) < 0.5 ? hexrgb(0x8a2a2a) : hexrgb(0x2a5a4a);   // sign%%!serialized_property_newline!%%                if (!shop && abs(lx + 0.5 - w * 0.5) < 2.0 && p.y < 6.0) col = p.y == 5.0 ? hexrgb(0xf0b860) : hexrgb(0x241820);           // door + transom%%!serialized_property_newline!%%            }%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // the cat on the ridge of the house under x = 46, facing the moon; its tail sways with the music%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        float cx = 46.0 + shift, c0 = 0.0, ci = 0.0;%%!serialized_property_newline!%%        for (int k = 0; k < 16; k++) { float cw = catHouseW(ci); if (cx < c0 + cw) break; c0 += cw; ci += 1.0; }%%!serialized_property_newline!%%        float cw = catHouseW(ci);%%!serialized_property_newline!%%        vec2 base = vec2(c0 + floor(cw * 0.5) - shift - 6.0, catRoofY(floor(cw * 0.5), cw, catWall(ci), catRoofType(ci)));%%!serialized_property_newline!%%        vec2 l = p - base;%%!serialized_property_newline!%%        if (l.y >= 0.0 && l.y < 14.0 && bitAt(CAT_ROWS[13 - int(l.y)], 12, l.x))%%!serialized_property_newline!%%            col = bitAt(CAT_ROWS[13 - int(l.y)], 12, l.x + 1.0) ? hexrgb(0x060a14) : hexrgb(0x3a5584);   // moonlit rim%%!serialized_property_newline!%%        float sway = sin(D * 1.7) * (0.6 + 0.8 * m.energy) + m.accent * 0.8;%%!serialized_property_newline!%%        for (int k = 0; k < 9; k++) {%%!serialized_property_newline!%%            float s = float(k) / 8.0;%%!serialized_property_newline!%%            vec2 tp = base + vec2(10.5 + s * 4.0 + sin(s * 2.4 + sway) * 2.0 * s, 1.0 + s * 8.0 - s * s * 2.0);%%!serialized_property_newline!%%            if (floor(tp) == p) col = hexrgb(0x060a14);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%        if (l == vec2(4.0, 13.0) || l == vec2(8.0, 13.0)) col = mix(col, hexrgb(0x3a5584), m.accent);  // ears catch the light%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%%%!serialized_property_newline!%%    // lantern string over the alley (below the menu), glowing with the energy%%!serialized_property_newline!%%    {%%!serialized_property_newline!%%        vec2 a = vec2(62.0, 40.0), b = vec2(262.0, 38.0);%%!serialized_property_newline!%%        float s = clamp((p.x - a.x) / (b.x - a.x), 0.0, 1.0);%%!serialized_property_newline!%%        float y = mix(a.y, b.y, s) - 9.0 * 4.0 * s * (1.0 - s);%%!serialized_property_newline!%%        float sw = sin(t * 0.9) * 0.6;%%!serialized_property_newline!%%        if (p.x > a.x && p.x < b.x && floor(y + sw * s * (1.0 - s) * 4.0) == p.y) col = hexrgb(0x2a2030);%%!serialized_property_newline!%%        for (int k = 0; k < 9; k++) {%%!serialized_property_newline!%%            float ls = (float(k) + 0.5) / 9.0;%%!serialized_property_newline!%%            vec2 lp = vec2(mix(a.x, b.x, ls), floor(mix(a.y, b.y, ls) - 9.0 * 4.0 * ls * (1.0 - ls) + sw * ls * (1.0 - ls) * 4.0) - 3.0);%%!serialized_property_newline!%%            vec2 d = p + 0.5 - lp - vec2(0.5, 0.0);%%!serialized_property_newline!%%            float glow = 0.35 + 0.65 * m.energy;%%!serialized_property_newline!%%            if (length(d) < 4.0 + 3.0 * glow) col = dmix(col, mix(col, hexrgb(0xffb050), 0.6), glow * (1.0 - length(d) / (4.0 + 3.0 * glow)) * 1.6, p);%%!serialized_property_newline!%%            if (abs(d.x) < 1.6 && abs(d.y) < 2.1) col = (k % 3 == 1) ? hexrgb(0xff6a4a) : hexrgb(0xffc46b);%%!serialized_property_newline!%%            if (abs(d.x) < 1.6 && d.y > 1.5 && d.y < 2.6) col = hexrgb(0x3a2a20);%%!serialized_property_newline!%%        }%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    return col;%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%%%!serialized_property_newline!%%bool ownsScene(int s) { return s == 1 || s == 2; }%%!serialized_property_newline!%%vec3 renderScene(int s, vec2 p, Music m) {%%!serialized_property_newline!%%    if (s == 1) return aria_math(p, m);%%!serialized_property_newline!%%    if (s == 2) return cat(p, m);%%!serialized_property_newline!%%    return vec3(0.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%%%!serialized_property_newline!%%// ------------------------------------------------------------------ main (one buffer pass)%%!serialized_property_newline!%%// This program draws the scenes ownsScene() names (generated: one, or two light ones). The title%%!serialized_property_newline!%%// background runs up to four such programs as FancyMenu buffer passes A-D and composite.glsl picks,%%!serialized_property_newline!%%// per pixel, the one that drew there - separate programs, because one shader holding every scene made%%!serialized_property_newline!%%// the driver budget registers for the heaviest of them and ran ~20x slower.%%!serialized_property_newline!%%// Only the current track's scene draws; over the first TRANSITION seconds of its play time it dissolves%%!serialized_property_newline!%%// in pixel by pixel (4x4 ordered pattern) while the previous track's scene fills the rest; while a%%!serialized_property_newline!%%// track is still loading the previous scene stays. Pixels of other programs' scenes stay transparent.%%!serialized_property_newline!%%%%!serialized_property_newline!%%#define TRANSITION 1.6%%!serialized_property_newline!%%%%!serialized_property_newline!%%void mainImage(out vec4 fragColor, in vec2 fragCoord) {%%!serialized_property_newline!%%    fragColor = vec4(0.0);%%!serialized_property_newline!%%    int track = clamp(int(fmVarFloat_toz_music_track + 0.5), 0, N_TRACKS - 1);%%!serialized_property_newline!%%    int prev = (track + N_TRACKS - 1) % N_TRACKS;%%!serialized_property_newline!%%    if (!ownsScene(track) && !ownsScene(prev)) return;                     // cheap for idle programs%%!serialized_property_newline!%%%%!serialized_property_newline!%%    float scale = iResolution.x / PIXW;%%!serialized_property_newline!%%    H = floor(iResolution.y / scale);%%!serialized_property_newline!%%    vec2 p = floor(fragCoord / scale);%%!serialized_property_newline!%%    Music m = music(track, iTime);%%!serialized_property_newline!%%    float k = 1.0;%%!serialized_property_newline!%%    if (m.live && m.playing && N_TRACKS > 1) {                              // paused: no half-done dissolve%%!serialized_property_newline!%%        if (fmVarFloat_toz_music_dur <= 0.0) k = (track == 0 && iTime < 8.0) ? 1.0 : 0.0;   // loading; game start%%!serialized_property_newline!%%        else k = smoothstep(0.0, TRANSITION, m.pos);%%!serialized_property_newline!%%    }%%!serialized_property_newline!%%    int scene = (k >= 1.0 || bayer4(p) < k) ? track : prev;%%!serialized_property_newline!%%    if (!ownsScene(scene)) return;%%!serialized_property_newline!%%%%!serialized_property_newline!%%    ATLAS_SIZE = textureSize(iChannel0, 0);%%!serialized_property_newline!%%    vec4 m0 = texelFetch(iChannel0, ivec2(0, 0), 0);%%!serialized_property_newline!%%    TOP_FIRST = m0.r > 0.5 && m0.g < 0.5;%%!serialized_property_newline!%%    if (ATLAS_SIZE.x < 8) { fragColor = vec4(0.10, 0.08, 0.16, 1.0); return; }   // atlas not loaded yet%%!serialized_property_newline!%%    fragColor = vec4(clamp(renderScene(scene, p, m), 0.0, 1.0), 1.0);%%!serialized_property_newline!%%}%%!serialized_property_newline!%%
  buffer_d_ichannel0_input = resource0
  buffer_d_ichannel1_input = resource1
  compile_mode = auto
  force_shadertoy_compatibility = true
  freeze_time = false
  time_scale = 1.0
  enable_blending = false
  use_input = false
  mouse_position_requires_hold = false
  opacity_multiplier = 1.0
  show_compile_errors = true
}

element {
  element_type = fancymenu_customization_item_ticker
  instance_identifier = 81075ac9-9f71-4c27-aea0-0497144a87a0-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 0
  y = 0
  width = 1
  height = 1
  stay_on_screen = false
  element_loading_requirement_container_identifier = 1003bd1d-c4dd-4491-9194-73708f6cd739-toz
  [loading_requirement_container_meta:1003bd1d-c4dd-4491-9194-73708f6cd739-toz] = [groups:][instances:5458d872-408b-4ff6-88d2-34fd4b143be3-toz;812aa490-82b5-4154-b45d-b22f24fd2a40-toz;5f11dae8-97de-4233-857c-49ea8a7c213c-toz;70602299-ac37-4bb2-995e-6783f311fd62-toz;ff933334-61b7-448c-b160-5df1d73cc5c5-toz;e099357a-e39d-4cb5-925d-c16f4ab5b046-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:5458d872-408b-4ff6-88d2-34fd4b143be3-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"aria_math.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:812aa490-82b5-4154-b45d-b22f24fd2a40-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"cat.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:5f11dae8-97de-4233-857c-49ea8a7c213c-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"moog_city_2.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:70602299-ac37-4bb2-995e-6783f311fd62-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"subwoofer_lullaby.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:ff933334-61b7-448c-b160-5df1d73cc5c5-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"mice_on_venus.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:e099357a-e39d-4cb5-925d-c16f4ab5b046-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"minecraft.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  tick_delay = 0
  is_async = false
  tick_mode = normal
  ticker_element_executable_block_identifier = 3ef80df1-b382-452b-995a-2bb403320584-toz
  [executable_action_instance:d8c72892-7e57-4606-8bba-f6d51a8921c6-toz][action_type:set_variable] = toz_music_track:0
  [executable_block:3ef80df1-b382-452b-995a-2bb403320584-toz][type:generic] = [executables:d8c72892-7e57-4606-8bba-f6d51a8921c6-toz;]
}

element {
  element_type = fancymenu_customization_item_ticker
  instance_identifier = c0f43ae8-b8f1-4741-ae24-a8751aeedf80-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 0
  y = 0
  width = 1
  height = 1
  stay_on_screen = false
  element_loading_requirement_container_identifier = cbe3e11d-51ee-4235-91ba-3bf574cb0c5c-toz
  [loading_requirement_container_meta:cbe3e11d-51ee-4235-91ba-3bf574cb0c5c-toz] = [groups:][instances:aed72d01-50fb-4f5b-ac55-6fa378f13638-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:aed72d01-50fb-4f5b-ac55-6fa378f13638-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"aria_math.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  tick_delay = 0
  is_async = false
  tick_mode = normal
  ticker_element_executable_block_identifier = 20b58ea4-fd8e-410d-96ee-992e09e8ed89-toz
  [executable_action_instance:5e0243f3-e929-469c-8e15-7546533f2cf7-toz][action_type:set_variable] = toz_music_track:1
  [executable_block:20b58ea4-fd8e-410d-96ee-992e09e8ed89-toz][type:generic] = [executables:5e0243f3-e929-469c-8e15-7546533f2cf7-toz;]
}

element {
  element_type = fancymenu_customization_item_ticker
  instance_identifier = 00d04de1-2642-44ca-816f-cc1ed8dd7f8f-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 0
  y = 0
  width = 1
  height = 1
  stay_on_screen = false
  element_loading_requirement_container_identifier = a90e80cf-2ded-4ca0-8fc2-3fcc37fc56ae-toz
  [loading_requirement_container_meta:a90e80cf-2ded-4ca0-8fc2-3fcc37fc56ae-toz] = [groups:][instances:96de4d6d-3731-4f9f-8d83-ef75dd7725bb-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:96de4d6d-3731-4f9f-8d83-ef75dd7725bb-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"cat.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  tick_delay = 0
  is_async = false
  tick_mode = normal
  ticker_element_executable_block_identifier = 34cd8e67-b040-49d0-9af5-94c3ecb1df7a-toz
  [executable_action_instance:e75c47f6-de56-44ae-b69d-ffe58539cf4a-toz][action_type:set_variable] = toz_music_track:2
  [executable_block:34cd8e67-b040-49d0-9af5-94c3ecb1df7a-toz][type:generic] = [executables:e75c47f6-de56-44ae-b69d-ffe58539cf4a-toz;]
}

element {
  element_type = fancymenu_customization_item_ticker
  instance_identifier = 530f22d5-2bb1-49a1-9fb2-9e18cb4f23c7-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 0
  y = 0
  width = 1
  height = 1
  stay_on_screen = false
  element_loading_requirement_container_identifier = 5a6895ae-a69e-4423-a03f-88ba1cd1ef3b-toz
  [loading_requirement_container_meta:5a6895ae-a69e-4423-a03f-88ba1cd1ef3b-toz] = [groups:][instances:f01ba644-6639-4b3d-9033-f2db024ec106-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:f01ba644-6639-4b3d-9033-f2db024ec106-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"moog_city_2.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  tick_delay = 0
  is_async = false
  tick_mode = normal
  ticker_element_executable_block_identifier = 0a1dfe65-5fa5-46f2-b448-d339d577f735-toz
  [executable_action_instance:a33e9407-b793-425b-b735-fa98e348ac0a-toz][action_type:set_variable] = toz_music_track:3
  [executable_block:0a1dfe65-5fa5-46f2-b448-d339d577f735-toz][type:generic] = [executables:a33e9407-b793-425b-b735-fa98e348ac0a-toz;]
}

element {
  element_type = fancymenu_customization_item_ticker
  instance_identifier = d4896696-12bc-4ef0-9c1b-e038b987ca0b-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 0
  y = 0
  width = 1
  height = 1
  stay_on_screen = false
  element_loading_requirement_container_identifier = a4e9beed-40b7-4ecd-ba25-790d260ce3dd-toz
  [loading_requirement_container_meta:a4e9beed-40b7-4ecd-ba25-790d260ce3dd-toz] = [groups:][instances:d9365970-2de5-4b27-a67b-153ea7df09d0-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:d9365970-2de5-4b27-a67b-153ea7df09d0-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"subwoofer_lullaby.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  tick_delay = 0
  is_async = false
  tick_mode = normal
  ticker_element_executable_block_identifier = abd05133-359b-4288-9877-360370a55eb4-toz
  [executable_action_instance:0405c854-1574-48be-8d89-dd54773bfce9-toz][action_type:set_variable] = toz_music_track:4
  [executable_block:abd05133-359b-4288-9877-360370a55eb4-toz][type:generic] = [executables:0405c854-1574-48be-8d89-dd54773bfce9-toz;]
}

element {
  element_type = fancymenu_customization_item_ticker
  instance_identifier = a3b96ed5-e486-4c02-9636-758351a6d2bb-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 0
  y = 0
  width = 1
  height = 1
  stay_on_screen = false
  element_loading_requirement_container_identifier = b9a9af32-83f3-40ac-92d3-258f2b552806-toz
  [loading_requirement_container_meta:b9a9af32-83f3-40ac-92d3-258f2b552806-toz] = [groups:][instances:3641772a-3a72-47a7-b496-04f056934f5f-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:3641772a-3a72-47a7-b496-04f056934f5f-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"mice_on_venus.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  tick_delay = 0
  is_async = false
  tick_mode = normal
  ticker_element_executable_block_identifier = 92de4673-9054-4c27-bfa5-008b5d56ffec-toz
  [executable_action_instance:79556c7b-8711-49ff-bbd2-4421c7d63e0f-toz][action_type:set_variable] = toz_music_track:5
  [executable_block:92de4673-9054-4c27-bfa5-008b5d56ffec-toz][type:generic] = [executables:79556c7b-8711-49ff-bbd2-4421c7d63e0f-toz;]
}

element {
  element_type = fancymenu_customization_item_ticker
  instance_identifier = 2f877924-dea5-4e31-abe2-a95a9c5601cd-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 0
  y = 0
  width = 1
  height = 1
  stay_on_screen = false
  element_loading_requirement_container_identifier = e445224c-48e6-470c-a05f-78135facfe29-toz
  [loading_requirement_container_meta:e445224c-48e6-470c-a05f-78135facfe29-toz] = [groups:][instances:a58f8b69-ec6b-43db-8eb0-0da08172c9d3-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:a58f8b69-ec6b-43db-8eb0-0da08172c9d3-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"minecraft.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  tick_delay = 0
  is_async = false
  tick_mode = normal
  ticker_element_executable_block_identifier = fb418ed1-ad01-4203-9afc-0521bdd8ceee-toz
  [executable_action_instance:2a7f3dc1-275d-458a-aaaa-39720ad5bba8-toz][action_type:set_variable] = toz_music_track:6
  [executable_block:fb418ed1-ad01-4203-9afc-0521bdd8ceee-toz][type:generic] = [executables:2a7f3dc1-275d-458a-aaaa-39720ad5bba8-toz;]
}

element {
  element_type = fancymenu_customization_item_ticker
  instance_identifier = 247bfd2c-7d32-4af5-a93e-77b397a1b9be-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 0
  y = 0
  width = 1
  height = 1
  stay_on_screen = false
  element_loading_requirement_container_identifier = e96dd480-d3bd-47ef-a85c-751efc7bf466-toz
  [loading_requirement_container_meta:e96dd480-d3bd-47ef-a85c-751efc7bf466-toz] = [groups:][instances:43cf5381-e526-45c6-967d-465a53d18035-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:43cf5381-e526-45c6-967d-465a53d18035-toz] = ["mode":"contains","text":"{"placeholder":"menu_audio_playtime_seconds","values":{"element_identifier":"toz_menu_music"}}","compare_with":"menu_audio_playtime_seconds"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  tick_delay = 0
  is_async = false
  tick_mode = normal
  ticker_element_executable_block_identifier = cf54966f-59e9-4f0a-9343-d01e3ac49a1b-toz
  [executable_action_instance:20666fc5-a586-436b-b2e5-9fbd732d31b5-toz][action_type:set_variable] = toz_music_pos:{"placeholder":"menu_audio_playtime_seconds","values":{"element_identifier":"toz_menu_music"}}
  [executable_action_instance:dd4697be-d700-4c09-938e-8e554e5ea311-toz][action_type:set_variable] = toz_music_dur:{"placeholder":"menu_audio_duration_seconds","values":{"element_identifier":"toz_menu_music"}}
  [executable_action_instance:18528294-b908-4d0a-8865-8cfd4878cfd1-toz][action_type:set_variable] = toz_music_playing:{"placeholder":"audio_playing_state","values":{"element_identifier":"toz_menu_music"}}
  [executable_block:cf54966f-59e9-4f0a-9343-d01e3ac49a1b-toz][type:generic] = [executables:20666fc5-a586-436b-b2e5-9fbd732d31b5-toz;dd4697be-d700-4c09-938e-8e554e5ea311-toz;18528294-b908-4d0a-8865-8cfd4878cfd1-toz;]
}

element {
  element_type = fancymenu_customization_item_ticker
  instance_identifier = 6ace4e82-248f-4059-8e05-1ba2176ec93a-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 0
  y = 0
  width = 1
  height = 1
  stay_on_screen = false
  element_loading_requirement_container_identifier = 6094bb88-6a76-4bb3-b121-5c01e5d271eb-toz
  [loading_requirement_container_meta:6094bb88-6a76-4bb3-b121-5c01e5d271eb-toz] = [groups:][instances:f247c793-4a74-424d-982d-0e15aa7eaed5-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:f247c793-4a74-424d-982d-0e15aa7eaed5-toz] = ["mode":"contains","text":"{"placeholder":"menu_audio_playtime_seconds","values":{"element_identifier":"toz_menu_music"}}","compare_with":"menu_audio_playtime_seconds"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  tick_delay = 0
  is_async = false
  tick_mode = normal
  ticker_element_executable_block_identifier = 0b0e558e-1e33-467a-ba8d-9fab118a561e-toz
  [executable_action_instance:3fe2c296-ce96-4b46-9dea-7feb4a9c2dd0-toz][action_type:set_variable] = toz_music_pos:-1
  [executable_action_instance:58b15071-8298-458b-8d3c-e16d76405af3-toz][action_type:set_variable] = toz_music_dur:0
  [executable_action_instance:98ada45a-c338-48a3-98fd-06d58b4a215d-toz][action_type:set_variable] = toz_music_playing:true
  [executable_block:0b0e558e-1e33-467a-ba8d-9fab118a561e-toz][type:generic] = [executables:3fe2c296-ce96-4b46-9dea-7feb4a9c2dd0-toz;58b15071-8298-458b-8d3c-e16d76405af3-toz;98ada45a-c338-48a3-98fd-06d58b4a215d-toz;]
}

element {
  element_type = image
  instance_identifier = 4a31f484-4287-4f05-b0b8-658aee808f3e-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-centered
  x = -100
  y = 6
  width = 200
  height = 50
  stay_on_screen = false
  element_loading_requirement_container_identifier = 62a1a0b2-3f25-4e75-b318-c34ab5069f45-toz
  [loading_requirement_container_meta:62a1a0b2-3f25-4e75-b318-c34ab5069f45-toz] = [groups:][instances:]
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/minecraft_title.png
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = image
  instance_identifier = db1e3179-4bda-407b-bf66-55c8d330dd6e-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = mid-centered
  x = -140
  y = -62
  width = 280
  height = 84
  stay_on_screen = false
  element_loading_requirement_container_identifier = 4b940de5-06f0-4f4c-a872-05ca8ec76ca1-toz
  [loading_requirement_container_meta:4b940de5-06f0-4f4c-a872-05ca8ec76ca1-toz] = [groups:][instances:]
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/ui/panel.png
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = slideshow
  instance_identifier = 7e51ce90-4658-478a-8507-90327ec87d9e-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = mid-centered
  x = -134
  y = -56
  width = 128
  height = 72
  stay_on_screen = false
  element_loading_requirement_container_identifier = 8af6e125-3cc0-4df6-ab84-3c84e896ec6e-toz
  [loading_requirement_container_meta:8af6e125-3cc0-4df6-ab84-3c84e896ec6e-toz] = [groups:][instances:]
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  slideshow_name = toz_server
}

element {
  element_type = text_v2
  instance_identifier = ba72f4ff-f86e-4e71-9461-795590e1e5cc-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = mid-centered
  x = 0
  y = -57
  width = 136
  height = 76
  stay_on_screen = false
  element_loading_requirement_container_identifier = 68393619-94d6-4a71-ac26-1118e14b7476-toz
  [loading_requirement_container_meta:68393619-94d6-4a71-ac26-1118e14b7476-toz] = [groups:][instances:]
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §6§lTeachings of Zeta%n%§7server.mal-zeta.de%n%%n%{"placeholder":"serverstatus","values":{"ip":"server.mal-zeta.de"}}%n%§e{"placeholder":"serverplayercount","values":{"ip":"server.mal-zeta.de"}} §7players online%n%§7Ping §f{"placeholder":"serverping","values":{"ip":"server.mal-zeta.de"}}§7 ms%n%%n%§6▶ §fClick to join
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 2
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = image
  instance_identifier = 7fe49a3e-7201-40d5-a2d0-063f708e80ae-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = mid-centered
  x = -140
  y = -62
  width = 280
  height = 84
  stay_on_screen = false
  element_loading_requirement_container_identifier = c6435f18-c5e7-492e-b0b0-788c8275ddb1-toz
  [loading_requirement_container_meta:c6435f18-c5e7-492e-b0b0-788c8275ddb1-toz] = [groups:][instances:]
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/ui/card.png
  repeat_texture = false
  nine_slice_texture = true
  nine_slice_texture_border_x = 8
  nine_slice_texture_border_y = 8
  image_tint = #FFFFFF
}

element {
  element_type = custom_button
  instance_identifier = 481e92b7-2415-40ce-9b5a-bda5cb23cc69-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = mid-centered
  x = -140
  y = -62
  width = 280
  height = 84
  stay_on_screen = false
  element_loading_requirement_container_identifier = e900342b-9318-4068-95af-ff67d4ef1f6a-toz
  [loading_requirement_container_meta:e900342b-9318-4068-95af-ff67d4ef1f6a-toz] = [groups:][instances:]
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  button_element_executable_block_identifier = d5f6ac16-84e0-4b50-b7e8-f78028caf301-toz
  [executable_action_instance:adabdc3a-5b29-49f7-99e2-6332e29830d3-toz][action_type:joinserver] = server.mal-zeta.de
  [executable_block:d5f6ac16-84e0-4b50-b7e8-f78028caf301-toz][type:generic] = [executables:adabdc3a-5b29-49f7-99e2-6332e29830d3-toz;]
  label = 
  label_scale = 1.0
  navigatable = true
  transparent_background = false
  nine_slice_custom_background = true
  nine_slice_border_x = 8
  nine_slice_border_y = 8
  underline_label_on_hover = false
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/transparent.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/card_hover.png
  description = Connect to server.mal-zeta.de
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = mc_titlescreen_singleplayer_button
  is_hidden = false
  anchor_point = mid-centered
  x = -140
  y = 30
  width = 138
  height = 20
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/button.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/button_hover.png
  nine_slice_custom_background = true
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  label_shadow = true
  navigatable = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = mc_titlescreen_options_button
  is_hidden = false
  anchor_point = mid-centered
  x = 2
  y = 30
  width = 138
  height = 20
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/button.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/button_hover.png
  nine_slice_custom_background = true
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  label_shadow = true
  navigatable = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = forge_titlescreen_mods_button
  is_hidden = false
  anchor_point = mid-centered
  x = -140
  y = 52
  width = 138
  height = 20
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/button.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/button_hover.png
  nine_slice_custom_background = true
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  label_shadow = true
  navigatable = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = mc_titlescreen_quit_button
  is_hidden = false
  anchor_point = mid-centered
  x = 2
  y = 52
  width = 138
  height = 20
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/button.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/button_hover.png
  nine_slice_custom_background = true
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  label_shadow = true
  navigatable = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = 376282
  is_hidden = false
  anchor_point = mid-centered
  x = -140
  y = 74
  width = 280
  height = 20
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/button.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/button_hover.png
  nine_slice_custom_background = true
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  label_shadow = true
  navigatable = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = 376388
  is_hidden = false
  anchor_point = mid-centered
  x = -164
  y = 30
  width = 20
  height = 20
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/button.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/button_hover.png
  nine_slice_custom_background = true
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  label_shadow = true
  navigatable = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = 604306
  is_hidden = false
  anchor_point = mid-centered
  x = -164
  y = 52
  width = 20
  height = 20
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/button.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/button_hover.png
  nine_slice_custom_background = true
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  label_shadow = true
  navigatable = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = 604388
  is_hidden = false
  anchor_point = mid-centered
  x = 144
  y = 30
  width = 20
  height = 20
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/button.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/button_hover.png
  nine_slice_custom_background = true
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  label_shadow = true
  navigatable = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = 91441
  is_hidden = false
  anchor_point = mid-centered
  x = 144
  y = 52
  width = 20
  height = 20
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/button.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/button_hover.png
  nine_slice_custom_background = true
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  label_shadow = true
  navigatable = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = minecraft_realms_notification_icons_widget
  is_hidden = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = mc_titlescreen_multiplayer_button
  is_hidden = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = mc_titlescreen_realms_button
  is_hidden = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = minecraft_logo_widget
  is_hidden = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = minecraft_splash_widget
  is_hidden = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = minecraft_branding_widget
  is_hidden = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = 9144
  is_hidden = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = 9384
  is_hidden = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = 604330
  is_hidden = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = 376354
  is_hidden = true
}

vanilla_button {
  element_type = vanilla_button
  instance_identifier = 376306
  is_hidden = true
}

element {
  element_type = image
  instance_identifier = 73b2e9fc-0a27-474a-a7f6-0c25f95d01d9-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 4
  y = 4
  width = 212
  height = 54
  stay_on_screen = false
  element_loading_requirement_container_identifier = a537ed67-896c-460f-8e85-49e362e9e1ef-toz
  [loading_requirement_container_meta:a537ed67-896c-460f-8e85-49e362e9e1ef-toz] = [groups:][instances:]
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/ui/transparent.png
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = image
  instance_identifier = df9d1f4e-a4ce-41c0-acf1-c0bbc9794c6e-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 4
  y = 4
  width = 160
  height = 32
  stay_on_screen = false
  element_loading_requirement_container_identifier = 20e62dbb-6ab3-4735-86f7-084a909e90fc-toz
  [loading_requirement_container_meta:20e62dbb-6ab3-4735-86f7-084a909e90fc-toz] = [groups:][instances:b8261380-9afd-4250-a74b-803fd6ad9a28-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if_not][req_id:b8261380-9afd-4250-a74b-803fd6ad9a28-toz] = 73b2e9fc-0a27-474a-a7f6-0c25f95d01d9-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/ui/player/bar.png
  repeat_texture = false
  nine_slice_texture = true
  nine_slice_texture_border_x = 1
  nine_slice_texture_border_y = 1
  image_tint = #FFFFFF
}

element {
  element_type = image
  instance_identifier = ea8f04e1-29d2-4400-996c-b162139463d7-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 4
  y = 4
  width = 212
  height = 54
  stay_on_screen = false
  element_loading_requirement_container_identifier = 7d075d6d-5ab5-45af-856b-84facb83c632-toz
  [loading_requirement_container_meta:7d075d6d-5ab5-45af-856b-84facb83c632-toz] = [groups:][instances:dcc8b608-59b3-46c6-b0d1-38b318a0898d-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:dcc8b608-59b3-46c6-b0d1-38b318a0898d-toz] = 73b2e9fc-0a27-474a-a7f6-0c25f95d01d9-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/ui/player/bar_open.png
  repeat_texture = false
  nine_slice_texture = true
  nine_slice_texture_border_x = 1
  nine_slice_texture_border_y = 1
  image_tint = #FFFFFF
}

element {
  element_type = image
  instance_identifier = c1fad755-4806-44e1-b26a-ccdb3a1d60ea-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 49
  y = 12
  width = 7
  height = 7
  stay_on_screen = false
  element_loading_requirement_container_identifier = fc96e6c8-bd55-4d70-81e9-711e99e6281f-toz
  [loading_requirement_container_meta:fc96e6c8-bd55-4d70-81e9-711e99e6281f-toz] = [groups:][instances:f5261672-0def-4c6b-89c4-246a9c3e7119-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:f5261672-0def-4c6b-89c4-246a9c3e7119-toz] = ["mode":"equals","text":"{"placeholder":"audio_playing_state","values":{"element_identifier":"toz_menu_music"}}","compare_with":"true"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/ui/player/equalizer.apng
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = image
  instance_identifier = 046d847b-f364-4e0d-b243-5d389acadedb-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 49
  y = 12
  width = 7
  height = 7
  stay_on_screen = false
  element_loading_requirement_container_identifier = a050fd2f-475b-40fc-9ff3-03f68e352593-toz
  [loading_requirement_container_meta:a050fd2f-475b-40fc-9ff3-03f68e352593-toz] = [groups:][instances:9d6b5535-d7a6-4a3a-8796-a4f1029d1b3e-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:9d6b5535-d7a6-4a3a-8796-a4f1029d1b3e-toz] = ["mode":"equals","text":"{"placeholder":"audio_playing_state","values":{"element_identifier":"toz_menu_music"}}","compare_with":"true"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/ui/player/eq_paused.png
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = image
  instance_identifier = 1988c20a-5259-4aae-b082-328bb4fadd07-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 11
  y = 11
  width = 32
  height = 18
  stay_on_screen = false
  element_loading_requirement_container_identifier = b02b482e-7268-4d7a-9815-ddaa6a5bb50e-toz
  [loading_requirement_container_meta:b02b482e-7268-4d7a-9815-ddaa6a5bb50e-toz] = [groups:][instances:98e44987-da73-4e12-9c48-8b59dbf63cab-toz;cbafe909-f9e6-4d6c-89b4-1f3d164c5f2a-toz;1e798713-4881-4000-9fbc-d3c5eacbd09c-toz;24786354-1cc4-43f4-9d2e-beb4844a1699-toz;d16b95a9-e41c-41a7-ab30-21ce34d291d5-toz;ea7e90dc-3920-4eb1-806a-2ebd1854a835-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:98e44987-da73-4e12-9c48-8b59dbf63cab-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"aria_math.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:cbafe909-f9e6-4d6c-89b4-1f3d164c5f2a-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"cat.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:1e798713-4881-4000-9fbc-d3c5eacbd09c-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"moog_city_2.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:24786354-1cc4-43f4-9d2e-beb4844a1699-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"subwoofer_lullaby.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:d16b95a9-e41c-41a7-ab30-21ce34d291d5-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"mice_on_venus.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:ea7e90dc-3920-4eb1-806a-2ebd1854a835-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"minecraft.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/music/sweden.png
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = text_v2
  instance_identifier = 21f59478-fcd1-43f8-b8b2-b13c42b4be0e-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 55
  y = 7
  width = 108
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = 27f5c7f3-351f-44e3-9d62-f472d2105b91-toz
  [loading_requirement_container_meta:27f5c7f3-351f-44e3-9d62-f472d2105b91-toz] = [groups:][instances:e81d126a-ade5-422c-826c-35b53ab7c5af-toz;a98b22aa-5385-4989-b123-acae5c8cd67f-toz;8d4f4d5c-ab49-479a-9269-3a9a45c3c7c1-toz;3f356e80-f049-4925-bd71-7bb10c75544d-toz;a541bcbc-9eea-436e-8257-717b4bb081c4-toz;746e13d4-af2d-4597-a67e-b4035833c71b-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:e81d126a-ade5-422c-826c-35b53ab7c5af-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"aria_math.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:a98b22aa-5385-4989-b123-acae5c8cd67f-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"cat.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:8d4f4d5c-ab49-479a-9269-3a9a45c3c7c1-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"moog_city_2.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:3f356e80-f049-4925-bd71-7bb10c75544d-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"subwoofer_lullaby.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:a541bcbc-9eea-436e-8257-717b4bb081c4-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"mice_on_venus.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:746e13d4-af2d-4597-a67e-b4035833c71b-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"minecraft.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §fSweden
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = f28032c8-8497-4893-a7d2-a4f410286556-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = cec1ef18-f96f-4a0d-8bb5-407f8f2ed2cf-toz
  [loading_requirement_container_meta:cec1ef18-f96f-4a0d-8bb5-407f8f2ed2cf-toz] = [groups:][instances:138f5448-0175-427c-98ec-85fdf5247952-toz;131b4ace-9d78-4f3c-bdc6-8bbef5525e57-toz;c16fb1a6-479e-4133-b75d-14868d71eddf-toz;6dafb883-5a37-4490-963a-dc4f6420ef56-toz;e30884f0-0e3d-48b8-90aa-366c224f9c90-toz;b6040023-9d07-4fdc-9228-d65fe18c8bf7-toz;0b5c6d65-33ac-430c-b503-a4875eec7d6f-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:138f5448-0175-427c-98ec-85fdf5247952-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"aria_math.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:131b4ace-9d78-4f3c-bdc6-8bbef5525e57-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"cat.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:c16fb1a6-479e-4133-b75d-14868d71eddf-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"moog_city_2.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:6dafb883-5a37-4490-963a-dc4f6420ef56-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"subwoofer_lullaby.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:e30884f0-0e3d-48b8-90aa-366c224f9c90-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"mice_on_venus.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:b6040023-9d07-4fdc-9228-d65fe18c8bf7-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"minecraft.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if_not][req_id:0b5c6d65-33ac-430c-b503-a4875eec7d6f-toz] = ff424ce6-db25-4d1e-bbec-9e141eefac52-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §7Kalamity
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = 2ffd560c-34bf-403f-b838-9bb311530247-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = a594f9bd-dfd3-4392-9555-57ef002e27d8-toz
  [loading_requirement_container_meta:a594f9bd-dfd3-4392-9555-57ef002e27d8-toz] = [groups:][instances:a1d5db2e-b7ab-4352-83dd-73dd18f79d27-toz;3d4f9ee5-04cc-41bc-9de1-9fe77cce003d-toz;4283b59e-5320-4c60-9b7a-35de1bc2699e-toz;cdc5aad5-a5f7-4459-b0ac-1d0ef7580719-toz;9af46f56-bcf0-45ba-9e4d-fa83cd69bbdd-toz;351592a4-9fa8-4eb7-81eb-65ce3d4a2e3d-toz;7af30681-123a-40df-befa-fd8fe24dd643-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:a1d5db2e-b7ab-4352-83dd-73dd18f79d27-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"aria_math.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:3d4f9ee5-04cc-41bc-9de1-9fe77cce003d-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"cat.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:4283b59e-5320-4c60-9b7a-35de1bc2699e-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"moog_city_2.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:cdc5aad5-a5f7-4459-b0ac-1d0ef7580719-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"subwoofer_lullaby.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:9af46f56-bcf0-45ba-9e4d-fa83cd69bbdd-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"mice_on_venus.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:351592a4-9fa8-4eb7-81eb-65ce3d4a2e3d-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"minecraft.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:7af30681-123a-40df-befa-fd8fe24dd643-toz] = ff424ce6-db25-4d1e-bbec-9e141eefac52-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §e§nKalamity
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = custom_button
  instance_identifier = ff424ce6-db25-4d1e-bbec-9e141eefac52-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 48
  y = 21
  width = 108
  height = 10
  stay_on_screen = false
  element_loading_requirement_container_identifier = a6a8f510-0d3d-4661-b306-1c15b1140370-toz
  [loading_requirement_container_meta:a6a8f510-0d3d-4661-b306-1c15b1140370-toz] = [groups:][instances:6f47f63e-19ab-4d14-b51d-e5cedd6badf1-toz;994b27c9-8c72-4d53-9b8e-09155ecdc574-toz;130139d7-8f5a-43fe-b771-570aa22d108c-toz;7d35fa8e-a5ea-4615-b28e-53df90aa090a-toz;ba79a87a-41a2-4277-803d-72b031010b3a-toz;b76e61d6-baa0-49be-b5ab-76323de516ac-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:6f47f63e-19ab-4d14-b51d-e5cedd6badf1-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"aria_math.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:994b27c9-8c72-4d53-9b8e-09155ecdc574-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"cat.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:130139d7-8f5a-43fe-b771-570aa22d108c-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"moog_city_2.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:7d35fa8e-a5ea-4615-b28e-53df90aa090a-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"subwoofer_lullaby.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:ba79a87a-41a2-4277-803d-72b031010b3a-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"mice_on_venus.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:b76e61d6-baa0-49be-b5ab-76323de516ac-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"minecraft.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  button_element_executable_block_identifier = 3cb99e18-d287-48b0-b834-a64ce817f602-toz
  [executable_action_instance:994b76b4-8c69-4241-8e22-385ff9ac5914-toz][action_type:openlink] = https://www.youtube.com/@Kalamity_Music
  [executable_block:3cb99e18-d287-48b0-b834-a64ce817f602-toz][type:generic] = [executables:994b76b4-8c69-4241-8e22-385ff9ac5914-toz;]
  label = 
  label_scale = 1.0
  navigatable = true
  transparent_background = true
  nine_slice_custom_background = false
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  underline_label_on_hover = false
  description = Orchestral cover by §eKalamity Music%n%§7Composed by C418%n%%n%§7Click to open the YouTube channel
}

element {
  element_type = image
  instance_identifier = ea487aa5-c19c-472d-a63d-f31615c2e0b1-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 11
  y = 11
  width = 32
  height = 18
  stay_on_screen = false
  element_loading_requirement_container_identifier = 33fd6af3-2ee0-4288-91d3-51b2f82babb7-toz
  [loading_requirement_container_meta:33fd6af3-2ee0-4288-91d3-51b2f82babb7-toz] = [groups:][instances:27e09ec4-d83f-4f74-badb-0a17d60d16d6-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:27e09ec4-d83f-4f74-badb-0a17d60d16d6-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"aria_math.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/music/aria_math.png
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = text_v2
  instance_identifier = bf23ee86-ed66-4a01-8e99-516908d1fd23-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 55
  y = 7
  width = 108
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = 9f0fccc0-2ccf-43a4-a123-23d88e4d69d5-toz
  [loading_requirement_container_meta:9f0fccc0-2ccf-43a4-a123-23d88e4d69d5-toz] = [groups:][instances:e3b08fae-4e79-4a10-a319-2404e6ec6d4c-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:e3b08fae-4e79-4a10-a319-2404e6ec6d4c-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"aria_math.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §fAria Math
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = 1d9c601b-9ab8-4f5b-843d-7dc2334b0597-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = e5c2e2b1-d5e5-4f42-a2c2-ccdd9ded5641-toz
  [loading_requirement_container_meta:e5c2e2b1-d5e5-4f42-a2c2-ccdd9ded5641-toz] = [groups:][instances:faaf74ff-8174-473e-abe1-6b195b0cb387-toz;aa21db92-c729-4c8c-b149-ea062779c8d1-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:faaf74ff-8174-473e-abe1-6b195b0cb387-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"aria_math.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if_not][req_id:aa21db92-c729-4c8c-b149-ea062779c8d1-toz] = bb64d79d-fc6b-4f63-83fe-f1e45c065829-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §7Kalamity
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = c2cd36a1-3fad-4fe7-9ddb-1521a220d7f7-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = b15ec283-280c-4a0c-acc8-ba9c433a56c0-toz
  [loading_requirement_container_meta:b15ec283-280c-4a0c-acc8-ba9c433a56c0-toz] = [groups:][instances:7e0477a2-dfac-4647-8e1d-db22e21b5898-toz;1ed626ee-800f-4f8b-939b-abbe221edeca-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:7e0477a2-dfac-4647-8e1d-db22e21b5898-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"aria_math.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:1ed626ee-800f-4f8b-939b-abbe221edeca-toz] = bb64d79d-fc6b-4f63-83fe-f1e45c065829-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §e§nKalamity
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = custom_button
  instance_identifier = bb64d79d-fc6b-4f63-83fe-f1e45c065829-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 48
  y = 21
  width = 108
  height = 10
  stay_on_screen = false
  element_loading_requirement_container_identifier = f6b3a84f-3b92-4dd0-bb22-2a9ac35fa93c-toz
  [loading_requirement_container_meta:f6b3a84f-3b92-4dd0-bb22-2a9ac35fa93c-toz] = [groups:][instances:bc6dee63-3e56-4dd8-b957-1607d0cdbb63-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:bc6dee63-3e56-4dd8-b957-1607d0cdbb63-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"aria_math.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  button_element_executable_block_identifier = 63b5a09b-cc35-466a-ba80-6736ae6632f2-toz
  [executable_action_instance:5f444c84-eb5b-42ee-8ba7-3556b68b1ce0-toz][action_type:openlink] = https://www.youtube.com/@Kalamity_Music
  [executable_block:63b5a09b-cc35-466a-ba80-6736ae6632f2-toz][type:generic] = [executables:5f444c84-eb5b-42ee-8ba7-3556b68b1ce0-toz;]
  label = 
  label_scale = 1.0
  navigatable = true
  transparent_background = true
  nine_slice_custom_background = false
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  underline_label_on_hover = false
  description = Orchestral cover by §eKalamity Music%n%§7Composed by C418%n%%n%§7Click to open the YouTube channel
}

element {
  element_type = image
  instance_identifier = cc65d1a4-40d1-4287-a5bd-ac85d8721f01-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 11
  y = 11
  width = 32
  height = 18
  stay_on_screen = false
  element_loading_requirement_container_identifier = 0d2a97e2-7014-4f5b-9fde-91cd4c35f0ee-toz
  [loading_requirement_container_meta:0d2a97e2-7014-4f5b-9fde-91cd4c35f0ee-toz] = [groups:][instances:3927c34d-ce74-4ba3-b821-1ee8404876fe-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:3927c34d-ce74-4ba3-b821-1ee8404876fe-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"cat.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/music/cat.png
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = text_v2
  instance_identifier = aca9c92e-4864-40e5-a74d-fa304561aed0-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 55
  y = 7
  width = 108
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = a3deab42-ea43-41ca-80a6-3a369add9c21-toz
  [loading_requirement_container_meta:a3deab42-ea43-41ca-80a6-3a369add9c21-toz] = [groups:][instances:b6b17580-68c8-4cb2-a77f-7bf4043ed1fa-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:b6b17580-68c8-4cb2-a77f-7bf4043ed1fa-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"cat.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §fCat
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = e43d3fe9-bc59-4133-a2d5-621e66402934-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = e6b3bfe6-39e9-4f7b-9941-0c161dfedc7b-toz
  [loading_requirement_container_meta:e6b3bfe6-39e9-4f7b-9941-0c161dfedc7b-toz] = [groups:][instances:310da5ae-a09b-4892-878f-2ca6ffb36cd7-toz;abc99dcd-26bc-42a5-b9a2-26072f3dfc39-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:310da5ae-a09b-4892-878f-2ca6ffb36cd7-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"cat.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if_not][req_id:abc99dcd-26bc-42a5-b9a2-26072f3dfc39-toz] = a3ede0b5-b7ad-414b-82de-8b651a1ccc27-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §7Kalamity
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = 3b484458-9168-4357-a49c-0dc7f2db8859-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = 0bba9979-3ff1-4bd4-b2d1-a40fd7cef189-toz
  [loading_requirement_container_meta:0bba9979-3ff1-4bd4-b2d1-a40fd7cef189-toz] = [groups:][instances:05c09e36-614d-4323-988d-9689c02ec77f-toz;000e4e6c-75c6-49b2-8f92-bea1832d9ba1-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:05c09e36-614d-4323-988d-9689c02ec77f-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"cat.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:000e4e6c-75c6-49b2-8f92-bea1832d9ba1-toz] = a3ede0b5-b7ad-414b-82de-8b651a1ccc27-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §e§nKalamity
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = custom_button
  instance_identifier = a3ede0b5-b7ad-414b-82de-8b651a1ccc27-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 48
  y = 21
  width = 108
  height = 10
  stay_on_screen = false
  element_loading_requirement_container_identifier = 9b78d785-b411-4ed7-a58c-d66bb001e3cd-toz
  [loading_requirement_container_meta:9b78d785-b411-4ed7-a58c-d66bb001e3cd-toz] = [groups:][instances:4627e208-cabb-406f-828c-af8c1a047a31-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:4627e208-cabb-406f-828c-af8c1a047a31-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"cat.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  button_element_executable_block_identifier = b5a53795-cf73-411a-bca3-634a3c9eddf2-toz
  [executable_action_instance:24666c5d-c2be-4ff2-a144-0bca09b6541f-toz][action_type:openlink] = https://www.youtube.com/@Kalamity_Music
  [executable_block:b5a53795-cf73-411a-bca3-634a3c9eddf2-toz][type:generic] = [executables:24666c5d-c2be-4ff2-a144-0bca09b6541f-toz;]
  label = 
  label_scale = 1.0
  navigatable = true
  transparent_background = true
  nine_slice_custom_background = false
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  underline_label_on_hover = false
  description = Orchestral cover by §eKalamity Music%n%§7Composed by C418%n%%n%§7Click to open the YouTube channel
}

element {
  element_type = image
  instance_identifier = fd0929c3-0c49-48ef-a3da-62307943e6dd-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 11
  y = 11
  width = 32
  height = 18
  stay_on_screen = false
  element_loading_requirement_container_identifier = 38373184-3a44-4b54-8639-ca47ce51406f-toz
  [loading_requirement_container_meta:38373184-3a44-4b54-8639-ca47ce51406f-toz] = [groups:][instances:7380eea8-6528-4e30-9f7e-51002d7fe397-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:7380eea8-6528-4e30-9f7e-51002d7fe397-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"moog_city_2.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/music/moog_city_2.png
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = text_v2
  instance_identifier = 87510265-63bd-4d51-8f31-39afe46feedf-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 55
  y = 7
  width = 108
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = 010bad3f-9ea5-47d0-b3c4-a3ddd5dc5cac-toz
  [loading_requirement_container_meta:010bad3f-9ea5-47d0-b3c4-a3ddd5dc5cac-toz] = [groups:][instances:bd13b4b0-23ea-407c-a28d-6cc58d42c77c-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:bd13b4b0-23ea-407c-a28d-6cc58d42c77c-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"moog_city_2.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §fMoog City 2
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = b5e40739-26c8-430a-8a81-b7ba431aafb4-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = f47a95ce-6a9f-408f-8c8e-1466afe344ea-toz
  [loading_requirement_container_meta:f47a95ce-6a9f-408f-8c8e-1466afe344ea-toz] = [groups:][instances:1d2bd19c-b3cf-44ad-b23d-2756b0688cf9-toz;9827d248-664e-456a-b5eb-b40a4f928e77-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:1d2bd19c-b3cf-44ad-b23d-2756b0688cf9-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"moog_city_2.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if_not][req_id:9827d248-664e-456a-b5eb-b40a4f928e77-toz] = 3313b156-a324-40e7-9243-b259b0293755-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §7Kalamity
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = 02165b68-5d29-4aa7-983b-51eda5b40fa7-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = bcadee50-0f7f-4b87-9b29-94fc4afebbbe-toz
  [loading_requirement_container_meta:bcadee50-0f7f-4b87-9b29-94fc4afebbbe-toz] = [groups:][instances:01a65bfe-9286-4261-834c-d5fe4d9a80bf-toz;6ebf8658-32a5-4b83-b847-b69316eb90b7-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:01a65bfe-9286-4261-834c-d5fe4d9a80bf-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"moog_city_2.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:6ebf8658-32a5-4b83-b847-b69316eb90b7-toz] = 3313b156-a324-40e7-9243-b259b0293755-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §e§nKalamity
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = custom_button
  instance_identifier = 3313b156-a324-40e7-9243-b259b0293755-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 48
  y = 21
  width = 108
  height = 10
  stay_on_screen = false
  element_loading_requirement_container_identifier = d40b5cad-a968-4ef5-8197-a2a43dc9f2c2-toz
  [loading_requirement_container_meta:d40b5cad-a968-4ef5-8197-a2a43dc9f2c2-toz] = [groups:][instances:8fe06aa6-d439-4743-980b-c7dc752f7199-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:8fe06aa6-d439-4743-980b-c7dc752f7199-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"moog_city_2.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  button_element_executable_block_identifier = 1507196a-5cc8-4f34-903b-a5f588d58d0c-toz
  [executable_action_instance:767c2f0b-3202-455e-8783-81e0022686d7-toz][action_type:openlink] = https://www.youtube.com/@Kalamity_Music
  [executable_block:1507196a-5cc8-4f34-903b-a5f588d58d0c-toz][type:generic] = [executables:767c2f0b-3202-455e-8783-81e0022686d7-toz;]
  label = 
  label_scale = 1.0
  navigatable = true
  transparent_background = true
  nine_slice_custom_background = false
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  underline_label_on_hover = false
  description = Orchestral cover by §eKalamity Music%n%§7Composed by C418%n%%n%§7Click to open the YouTube channel
}

element {
  element_type = image
  instance_identifier = bcf1a75c-9e8e-4ab6-bc61-696b34a2c0ee-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 11
  y = 11
  width = 32
  height = 18
  stay_on_screen = false
  element_loading_requirement_container_identifier = 40fedccd-766d-4e0d-b287-6eea558a1923-toz
  [loading_requirement_container_meta:40fedccd-766d-4e0d-b287-6eea558a1923-toz] = [groups:][instances:f6f096b7-713e-4291-8c61-6d9a2e733588-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:f6f096b7-713e-4291-8c61-6d9a2e733588-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"subwoofer_lullaby.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/music/subwoofer_lullaby.png
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = text_v2
  instance_identifier = 9dd07ccb-9d6f-4844-974f-39f0ad4d3271-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 55
  y = 7
  width = 108
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = 110fb7a4-40bf-4f7e-aa66-68bc8d74a73c-toz
  [loading_requirement_container_meta:110fb7a4-40bf-4f7e-aa66-68bc8d74a73c-toz] = [groups:][instances:13bba3ba-dc89-4f47-9be7-5f5afc1db714-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:13bba3ba-dc89-4f47-9be7-5f5afc1db714-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"subwoofer_lullaby.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §fSubwoofer Lullaby
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = 22e99d89-5784-4760-8672-38c833255db4-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = 323fd0f6-9b38-4ef0-aa10-b1199f686e20-toz
  [loading_requirement_container_meta:323fd0f6-9b38-4ef0-aa10-b1199f686e20-toz] = [groups:][instances:80fce3f5-8a5e-4854-9547-65c1701de4ca-toz;a8b0233d-3567-4222-9a72-006e02364ca2-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:80fce3f5-8a5e-4854-9547-65c1701de4ca-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"subwoofer_lullaby.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if_not][req_id:a8b0233d-3567-4222-9a72-006e02364ca2-toz] = f7d05c37-9c68-4df8-a6b6-8b35bc78dedd-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §7Kalamity
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = 10cc55fb-d948-49cb-8f4a-053c110ce742-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = 42683b07-aef0-4863-99e7-ccff8dbf98a3-toz
  [loading_requirement_container_meta:42683b07-aef0-4863-99e7-ccff8dbf98a3-toz] = [groups:][instances:891c19d8-1253-499c-b74a-dee714d4c589-toz;36b8df7e-19f9-4a60-a1e8-308adb5eda80-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:891c19d8-1253-499c-b74a-dee714d4c589-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"subwoofer_lullaby.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:36b8df7e-19f9-4a60-a1e8-308adb5eda80-toz] = f7d05c37-9c68-4df8-a6b6-8b35bc78dedd-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §e§nKalamity
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = custom_button
  instance_identifier = f7d05c37-9c68-4df8-a6b6-8b35bc78dedd-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 48
  y = 21
  width = 108
  height = 10
  stay_on_screen = false
  element_loading_requirement_container_identifier = 15d44ced-a2e8-4ba7-bc0b-7a130a9c8e06-toz
  [loading_requirement_container_meta:15d44ced-a2e8-4ba7-bc0b-7a130a9c8e06-toz] = [groups:][instances:c942e5a2-7a6d-41bf-9e48-3d1654738398-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:c942e5a2-7a6d-41bf-9e48-3d1654738398-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"subwoofer_lullaby.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  button_element_executable_block_identifier = cee3d5a9-7d63-43a6-817e-2f5a0c3b5ae1-toz
  [executable_action_instance:a3ea594f-19d8-4d49-a153-7f6dcfe1f630-toz][action_type:openlink] = https://www.youtube.com/@Kalamity_Music
  [executable_block:cee3d5a9-7d63-43a6-817e-2f5a0c3b5ae1-toz][type:generic] = [executables:a3ea594f-19d8-4d49-a153-7f6dcfe1f630-toz;]
  label = 
  label_scale = 1.0
  navigatable = true
  transparent_background = true
  nine_slice_custom_background = false
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  underline_label_on_hover = false
  description = Orchestral cover by §eKalamity Music%n%§7Composed by C418%n%%n%§7Click to open the YouTube channel
}

element {
  element_type = image
  instance_identifier = 41c18593-3de8-46df-9b71-67848e441ac0-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 11
  y = 11
  width = 32
  height = 18
  stay_on_screen = false
  element_loading_requirement_container_identifier = 4b2325be-67c9-4101-8b82-7c5617d9512f-toz
  [loading_requirement_container_meta:4b2325be-67c9-4101-8b82-7c5617d9512f-toz] = [groups:][instances:a414dd33-7ab3-457e-b778-bf5a3b7564f3-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:a414dd33-7ab3-457e-b778-bf5a3b7564f3-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"mice_on_venus.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/music/mice_on_venus.png
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = text_v2
  instance_identifier = f5707bff-b4c3-4336-b243-2e78db4c699d-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 55
  y = 7
  width = 108
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = b215c821-364b-4e7d-a7ea-7888acd9a046-toz
  [loading_requirement_container_meta:b215c821-364b-4e7d-a7ea-7888acd9a046-toz] = [groups:][instances:2c5f0e95-a33d-4a2c-8403-35cca7b3d3db-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:2c5f0e95-a33d-4a2c-8403-35cca7b3d3db-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"mice_on_venus.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §fMice on Venus
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = 238ef93a-3f97-423d-b47f-9354bdc604fd-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = 3c8b1610-3a7a-4620-9064-00bbb668aafe-toz
  [loading_requirement_container_meta:3c8b1610-3a7a-4620-9064-00bbb668aafe-toz] = [groups:][instances:e66ab55e-bb5d-4cff-b7b9-75550a7ba371-toz;2339999a-98ff-4a61-bcdf-b580b12d9835-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:e66ab55e-bb5d-4cff-b7b9-75550a7ba371-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"mice_on_venus.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if_not][req_id:2339999a-98ff-4a61-bcdf-b580b12d9835-toz] = d4425d8f-12bc-4dce-b4a8-f83db059e222-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §7Kalamity
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = 7c721230-623d-4e2d-86d9-907d9b1adee8-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = 443cd77f-fe32-4823-b262-ee77b9247ead-toz
  [loading_requirement_container_meta:443cd77f-fe32-4823-b262-ee77b9247ead-toz] = [groups:][instances:a5e8c894-2c64-4c71-89df-b9ee96593c2f-toz;c1c35903-86e9-4bf0-87e5-4039957dd2af-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:a5e8c894-2c64-4c71-89df-b9ee96593c2f-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"mice_on_venus.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:c1c35903-86e9-4bf0-87e5-4039957dd2af-toz] = d4425d8f-12bc-4dce-b4a8-f83db059e222-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §e§nKalamity
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = custom_button
  instance_identifier = d4425d8f-12bc-4dce-b4a8-f83db059e222-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 48
  y = 21
  width = 108
  height = 10
  stay_on_screen = false
  element_loading_requirement_container_identifier = c99ef142-72f1-4dfc-a7d6-f1bbe4c8d2a8-toz
  [loading_requirement_container_meta:c99ef142-72f1-4dfc-a7d6-f1bbe4c8d2a8-toz] = [groups:][instances:1fd02ef3-0a2c-4931-9fc9-5825221a0ac3-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:1fd02ef3-0a2c-4931-9fc9-5825221a0ac3-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"mice_on_venus.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  button_element_executable_block_identifier = ebe86ff3-e41f-46fc-a23c-a2d60f24300c-toz
  [executable_action_instance:9787f7d0-6d9b-4d75-b70d-bb166846f573-toz][action_type:openlink] = https://www.youtube.com/@Kalamity_Music
  [executable_block:ebe86ff3-e41f-46fc-a23c-a2d60f24300c-toz][type:generic] = [executables:9787f7d0-6d9b-4d75-b70d-bb166846f573-toz;]
  label = 
  label_scale = 1.0
  navigatable = true
  transparent_background = true
  nine_slice_custom_background = false
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  underline_label_on_hover = false
  description = Orchestral cover by §eKalamity Music%n%§7Composed by C418%n%%n%§7Click to open the YouTube channel
}

element {
  element_type = image
  instance_identifier = 3c9be8ef-20dd-4053-97fb-ac9d9bfcc2b5-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 11
  y = 11
  width = 32
  height = 18
  stay_on_screen = false
  element_loading_requirement_container_identifier = 52729503-9e04-4567-8a0b-65b2d22eb8fd-toz
  [loading_requirement_container_meta:52729503-9e04-4567-8a0b-65b2d22eb8fd-toz] = [groups:][instances:665dda36-4c09-4ba2-83c6-a506dc113791-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:665dda36-4c09-4ba2-83c6-a506dc113791-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"minecraft.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/music/minecraft.png
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = text_v2
  instance_identifier = 01e447ae-6e7f-4f04-9f99-7f88b6dcb70f-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 55
  y = 7
  width = 108
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = c0d52aef-fb1c-4c23-b304-b720650a3fb2-toz
  [loading_requirement_container_meta:c0d52aef-fb1c-4c23-b304-b720650a3fb2-toz] = [groups:][instances:5912b991-52fe-4afe-8d1e-55e4d4aecfbb-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:5912b991-52fe-4afe-8d1e-55e4d4aecfbb-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"minecraft.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §fMinecraft
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = c20868aa-9029-4a67-8d7b-bc7ca80ff21d-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = 4fe34694-1077-41bc-adba-eed670707a9b-toz
  [loading_requirement_container_meta:4fe34694-1077-41bc-adba-eed670707a9b-toz] = [groups:][instances:3bd5d546-7753-40b9-a8bf-6ad569a55883-toz;481fe592-5181-4a88-991f-c197a5d8a7d8-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:3bd5d546-7753-40b9-a8bf-6ad569a55883-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"minecraft.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if_not][req_id:481fe592-5181-4a88-991f-c197a5d8a7d8-toz] = e53b93e1-1d1b-4d13-bbfb-10cfb9bbdeb4-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §7Aether & Chaos
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = text_v2
  instance_identifier = f19db49e-f922-4edf-bde5-5be98f021e15-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 45
  y = 18
  width = 116
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = a1419330-86e0-40eb-a955-090fe229eb00-toz
  [loading_requirement_container_meta:a1419330-86e0-40eb-a955-090fe229eb00-toz] = [groups:][instances:887faee5-16df-4c2a-8cdd-d8e632d8e949-toz;dc51ce76-fe5f-4a56-8eee-00e71868fb93-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:887faee5-16df-4c2a-8cdd-d8e632d8e949-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"minecraft.ogg"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:dc51ce76-fe5f-4a56-8eee-00e71868fb93-toz] = e53b93e1-1d1b-4d13-bbfb-10cfb9bbdeb4-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §8by §e§nAether & Chaos
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = custom_button
  instance_identifier = e53b93e1-1d1b-4d13-bbfb-10cfb9bbdeb4-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 48
  y = 21
  width = 108
  height = 10
  stay_on_screen = false
  element_loading_requirement_container_identifier = cef328ae-6e7d-4325-9a14-c37ab10975a7-toz
  [loading_requirement_container_meta:cef328ae-6e7d-4325-9a14-c37ab10975a7-toz] = [groups:][instances:d7112293-63aa-4afa-b615-672ecb306b3b-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:d7112293-63aa-4afa-b615-672ecb306b3b-toz] = ["mode":"equals","text":"{"placeholder":"audio_element_current_track","values":{"element_identifier":"toz_menu_music"}}","compare_with":"minecraft.ogg"]$
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  button_element_executable_block_identifier = 43b3aab4-5ed4-48c3-8d77-5202a215329f-toz
  [executable_action_instance:117d33f5-201c-43d3-8be3-4302508b3d51-toz][action_type:openlink] = https://www.youtube.com/channel/UCnH0X2iMbUKSdIxN9o4mzMQ
  [executable_block:43b3aab4-5ed4-48c3-8d77-5202a215329f-toz][type:generic] = [executables:117d33f5-201c-43d3-8be3-4302508b3d51-toz;]
  label = 
  label_scale = 1.0
  navigatable = true
  transparent_background = true
  nine_slice_custom_background = false
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  underline_label_on_hover = false
  description = Cinematic remix by §eAether & Chaos%n%§7Composed by C418%n%%n%§7Click to open the YouTube channel
}

element {
  element_type = image
  instance_identifier = d17fdfad-af7a-4588-b1bc-6bc2ecd25b47-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 10
  y = 10
  width = 34
  height = 20
  stay_on_screen = false
  element_loading_requirement_container_identifier = 353e2f26-35aa-43e9-a1c9-1a4436575fa9-toz
  [loading_requirement_container_meta:353e2f26-35aa-43e9-a1c9-1a4436575fa9-toz] = [groups:][instances:]
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/ui/player/thumb_frame.png
  repeat_texture = false
  nine_slice_texture = true
  nine_slice_texture_border_x = 1
  nine_slice_texture_border_y = 1
  image_tint = #FFFFFF
}

element {
  element_type = image
  instance_identifier = b2326352-372f-44b3-9102-52999936e951-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 164
  y = 12
  width = 8
  height = 8
  stay_on_screen = false
  element_loading_requirement_container_identifier = dcdf544d-c0d4-4027-9564-8f15f45de808-toz
  [loading_requirement_container_meta:dcdf544d-c0d4-4027-9564-8f15f45de808-toz] = [groups:][instances:ea0af3e0-cf18-4d9f-98c3-87a41d1a5a1f-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:ea0af3e0-cf18-4d9f-98c3-87a41d1a5a1f-toz] = 73b2e9fc-0a27-474a-a7f6-0c25f95d01d9-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = [source:local]/config/fancymenu/assets/toz/ui/player/speaker.png
  repeat_texture = false
  nine_slice_texture = false
  nine_slice_texture_border_x = 5
  nine_slice_texture_border_y = 5
  image_tint = #FFFFFF
}

element {
  element_type = slider_v2
  instance_identifier = 80d969f6-cf7f-486e-9f3e-c6076c3a9924-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 174
  y = 12
  width = 36
  height = 8
  stay_on_screen = false
  element_loading_requirement_container_identifier = cdcaafb5-21ff-4069-8485-7d1637a46dbb-toz
  [loading_requirement_container_meta:cdcaafb5-21ff-4069-8485-7d1637a46dbb-toz] = [groups:][instances:8f92ebd5-1289-4da1-bb68-82572d430b2b-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:8f92ebd5-1289-4da1-bb68-82572d430b2b-toz] = 73b2e9fc-0a27-474a-a7f6-0c25f95d01d9-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  slider_type = decimal_range
  min_range_value = 0.0
  max_range_value = 1.0
  rounding_decimal_place = 2
  pre_selected_value = {"placeholder":"audio_element_vol","values":{"element_identifier":"toz_menu_music"}}
  slider_label = 
  slider_element_executable_block_identifier = 9f87af08-5b3a-43bd-856a-e1cf28771966-toz
  [executable_action_instance:4bcfaa3d-5324-4516-9912-62a2af755a36-toz][action_type:set_audio_element_volume] = toz_menu_music:$$value
  [executable_block:9f87af08-5b3a-43bd-856a-e1cf28771966-toz][type:generic] = [executables:4bcfaa3d-5324-4516-9912-62a2af755a36-toz;]
  tooltip = Volume
  handle_texture_normal = [source:local]/config/fancymenu/assets/toz/ui/player/volume_knob.png
  handle_texture_hovered = [source:local]/config/fancymenu/assets/toz/ui/player/volume_knob_hover.png
  slider_background_texture_normal = [source:local]/config/fancymenu/assets/toz/ui/player/volume_rail.png
  slider_background_texture_highlighted = [source:local]/config/fancymenu/assets/toz/ui/player/volume_rail.png
  nine_slice_custom_background = true
  nine_slice_border_x = 1
  nine_slice_border_y = 2
  nine_slice_slider_handle = false
  transparent_background = false
  underline_label_on_hover = false
  restart_background_animations = true
  navigatable = true
}

element {
  element_type = menu_audio_seek_bar
  instance_identifier = 6362f679-925c-42d9-ae9b-f0feb03a902b-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 56
  y = 43
  width = 80
  height = 7
  stay_on_screen = false
  element_loading_requirement_container_identifier = 8a770b10-55c0-4f5a-8b38-ba2bd3dc16ae-toz
  [loading_requirement_container_meta:8a770b10-55c0-4f5a-8b38-ba2bd3dc16ae-toz] = [groups:][instances:89ecc023-21b0-41a3-a461-06d88ae5cd8a-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:89ecc023-21b0-41a3-a461-06d88ae5cd8a-toz] = 73b2e9fc-0a27-474a-a7f6-0c25f95d01d9-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  audio_element_identifier = toz_menu_music
}

element {
  element_type = text_v2
  instance_identifier = 285aef38-5daf-4858-95c8-708ea3613785-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 138
  y = 38
  width = 74
  height = 25
  stay_on_screen = false
  element_loading_requirement_container_identifier = 62b8adfa-ba7d-4660-8ff5-9ae4b2e179ca-toz
  [loading_requirement_container_meta:62b8adfa-ba7d-4660-8ff5-9ae4b2e179ca-toz] = [groups:][instances:143912f1-50c6-41bd-9546-661a0100b854-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:143912f1-50c6-41bd-9546-661a0100b854-toz] = 73b2e9fc-0a27-474a-a7f6-0c25f95d01d9-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  source = §7{"placeholder":"audio_playtime","values":{"element_identifier":"toz_menu_music","show_percentage":"false"}}§8/§7{"placeholder":"audio_duration","values":{"element_identifier":"toz_menu_music"}}
  source_mode = direct
  shadow = true
  case_mode = normal
  scale = 1.0
  text_border = 4
  enable_scrolling = false
  auto_line_wrapping = false
  interactable = false
}

element {
  element_type = custom_button
  instance_identifier = 9977bf78-cf7d-43ec-92e1-05b83565486d-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 11
  y = 40
  width = 12
  height = 12
  stay_on_screen = false
  element_loading_requirement_container_identifier = 8bddbe9f-d4a6-44b5-9679-04c6106bbc71-toz
  [loading_requirement_container_meta:8bddbe9f-d4a6-44b5-9679-04c6106bbc71-toz] = [groups:][instances:2effc640-c0a1-4031-a099-caa5e034d299-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:2effc640-c0a1-4031-a099-caa5e034d299-toz] = 73b2e9fc-0a27-474a-a7f6-0c25f95d01d9-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  button_element_executable_block_identifier = 6eadde19-68ce-4b55-b140-e9814a85c13e-toz
  [executable_action_instance:2f5053dd-f8a1-4b1f-9336-6f586368a989-toz][action_type:audio_previous_track] = toz_menu_music
  [executable_block:6eadde19-68ce-4b55-b140-e9814a85c13e-toz][type:generic] = [executables:2f5053dd-f8a1-4b1f-9336-6f586368a989-toz;]
  label = 
  label_scale = 1.0
  navigatable = true
  transparent_background = false
  nine_slice_custom_background = false
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  underline_label_on_hover = false
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/player/prev.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/player/prev_hover.png
  description = Previous track
}

element {
  element_type = custom_button
  instance_identifier = afd4b57e-fa11-4ccd-990d-be2e8c14e627-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 25
  y = 40
  width = 12
  height = 12
  stay_on_screen = false
  element_loading_requirement_container_identifier = fde8d8ff-6450-4484-9be5-331246830820-toz
  [loading_requirement_container_meta:fde8d8ff-6450-4484-9be5-331246830820-toz] = [groups:][instances:9b4180b6-a34a-444e-a4e7-c692e0718c18-toz;a15f787b-d8d1-4520-b5b0-457c4bb14b78-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if_not][req_id:9b4180b6-a34a-444e-a4e7-c692e0718c18-toz] = ["mode":"equals","text":"{"placeholder":"audio_playing_state","values":{"element_identifier":"toz_menu_music"}}","compare_with":"true"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:a15f787b-d8d1-4520-b5b0-457c4bb14b78-toz] = 73b2e9fc-0a27-474a-a7f6-0c25f95d01d9-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  button_element_executable_block_identifier = f015b8bc-f213-48d8-b8d3-d3f8b0bac8fe-toz
  [executable_action_instance:ab099e8a-1235-4ae1-9e04-4f44971318fc-toz][action_type:audio_toggle_play] = toz_menu_music
  [executable_block:f015b8bc-f213-48d8-b8d3-d3f8b0bac8fe-toz][type:generic] = [executables:ab099e8a-1235-4ae1-9e04-4f44971318fc-toz;]
  label = 
  label_scale = 1.0
  navigatable = true
  transparent_background = false
  nine_slice_custom_background = false
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  underline_label_on_hover = false
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/player/play.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/player/play_hover.png
  description = Play
}

element {
  element_type = custom_button
  instance_identifier = f7623946-cbd0-4421-873c-75b1e2723e89-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 25
  y = 40
  width = 12
  height = 12
  stay_on_screen = false
  element_loading_requirement_container_identifier = c5c5207e-afc0-4a1f-9dd5-cb24aba980c2-toz
  [loading_requirement_container_meta:c5c5207e-afc0-4a1f-9dd5-cb24aba980c2-toz] = [groups:][instances:94f20fe4-056f-4f8e-bcb5-47c35c6146b9-toz;f94ead45-5bcb-4208-9a67-ac06fb1cc888-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_text][requirement_mode:if][req_id:94f20fe4-056f-4f8e-bcb5-47c35c6146b9-toz] = ["mode":"equals","text":"{"placeholder":"audio_playing_state","values":{"element_identifier":"toz_menu_music"}}","compare_with":"true"]$
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:f94ead45-5bcb-4208-9a67-ac06fb1cc888-toz] = 73b2e9fc-0a27-474a-a7f6-0c25f95d01d9-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  button_element_executable_block_identifier = 84970621-26bc-4d33-92fd-2b0139d7e71d-toz
  [executable_action_instance:3b12a953-9832-4960-bf7f-099242df9e03-toz][action_type:audio_toggle_play] = toz_menu_music
  [executable_block:84970621-26bc-4d33-92fd-2b0139d7e71d-toz][type:generic] = [executables:3b12a953-9832-4960-bf7f-099242df9e03-toz;]
  label = 
  label_scale = 1.0
  navigatable = true
  transparent_background = false
  nine_slice_custom_background = false
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  underline_label_on_hover = false
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/player/pause.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/player/pause_hover.png
  description = Pause
}

element {
  element_type = custom_button
  instance_identifier = 4996b510-96d1-48e3-8992-c9482efca469-toz
  appearance_delay = no_delay
  disappearance_delay = no_delay
  fade_in_v2 = no_fading
  fade_out = no_fading
  auto_sizing = false
  sticky_anchor = false
  anchor_point = top-left
  x = 39
  y = 40
  width = 12
  height = 12
  stay_on_screen = false
  element_loading_requirement_container_identifier = cc5bf09d-05c2-4834-a7f2-fd87ba4ebdf4-toz
  [loading_requirement_container_meta:cc5bf09d-05c2-4834-a7f2-fd87ba4ebdf4-toz] = [groups:][instances:f88489e0-f5be-470d-a5b9-6cca6d8ad6d3-toz;]
  [loading_requirement:fancymenu_visibility_requirement_is_element_hovered][requirement_mode:if][req_id:f88489e0-f5be-470d-a5b9-6cca6d8ad6d3-toz] = 73b2e9fc-0a27-474a-a7f6-0c25f95d01d9-toz
  enable_parallax = false
  load_once_per_session = false
  advanced_posx = -2147483648
  advanced_posy = -2147483648
  advanced_width = -2147483648
  advanced_height = -2147483648
  stretch_x = false
  stretch_y = false
  base_opacity = 1.0
  rotation_degrees = 0.0
  should_be_affected_by_decoration_overlays = false
  button_element_executable_block_identifier = afd1eee6-8e2e-4864-bc77-f3f3185b385f-toz
  [executable_action_instance:a73f0cce-82bb-476a-bbc2-7e215d471d34-toz][action_type:audio_next_track] = toz_menu_music
  [executable_block:afd1eee6-8e2e-4864-bc77-f3f3185b385f-toz][type:generic] = [executables:a73f0cce-82bb-476a-bbc2-7e215d471d34-toz;]
  label = 
  label_scale = 1.0
  navigatable = true
  transparent_background = false
  nine_slice_custom_background = false
  nine_slice_border_x = 5
  nine_slice_border_y = 5
  underline_label_on_hover = false
  backgroundnormal = [source:local]/config/fancymenu/assets/toz/ui/player/next.png
  backgroundhovered = [source:local]/config/fancymenu/assets/toz/ui/player/next_hover.png
  description = Next track
}
