From d13155bfd0407f0aef744013d992b0218fb4d352 Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Sat, 29 Oct 2022 16:28:52 -0400 Subject: [PATCH] d/jak2: Decompile `palace-ocean`, `ctysluma-part`, `nav-enemy-h` and a bunch of work on `enemy` and `nav-mesh` related files (#1984) Couldn't finish any of the enemy/nav-enemy related files for one reason or another, but quite a bit of work that will be easier to merge and iterate on instead of keeping track of the branch. enemy/idle-control has some very weird focus related code. nav-mesh/nav-control still has a bunch of CFG resolution problems that need to be manually resolved. Co-authored-by: water --- .prettierrc | 1 + .vs/launch.vs.json | 2 +- Taskfile.yml | 7 +- decompiler/config/jak2/all-types.gc | 886 +-- .../jak2/anonymous_function_types.jsonc | 16 +- decompiler/config/jak2/hacks.jsonc | 2 - decompiler/config/jak2/inputs.jsonc | 4 +- decompiler/config/jak2/label_types.jsonc | 24 +- decompiler/config/jak2/stack_structures.jsonc | 44 +- decompiler/config/jak2/type_casts.jsonc | 101 +- decompiler/config/jak2/var_names.jsonc | 29 + decompiler/config/jak2_ntsc_v1.jsonc | 2 +- goal_src/jak2/engine/ai/enemy-h.gc | 617 +- .../jak2/engine/collide/collide-shape-h.gc | 66 +- goal_src/jak2/engine/entity/entity-table.gc | 6 +- goal_src/jak2/engine/game/idle-control.gc | 25 +- goal_src/jak2/engine/nav/nav-control-h.gc | 111 +- goal_src/jak2/engine/nav/nav-enemy-h.gc | 333 +- goal_src/jak2/engine/nav/nav-mesh-h.gc | 140 +- goal_src/jak2/engine/physics/trajectory.gc | 10 +- .../engine/spatial-hash/spatial-hash-h.gc | 4 +- .../jak2/levels/city/slums/ctysluma-part.gc | 1295 +++++ .../levels/palace/outside/palace-ocean.gc | 4981 ++++++++++++++++ .../engine/collide/collide-shape-h_REF.gc | 115 +- .../jak2/engine/common_objs/crates_REF.gc | 55 +- .../jak2/engine/debug/stats-h_REF.gc | 18 - .../jak2/engine/entity/entity-table_REF.gc | 6 +- .../jak2/engine/entity/entity_REF.gc | 170 - .../jak2/engine/gfx/shrub/shrubbery_REF.gc | 56 - .../jak2/engine/nav/nav-control-h_REF.gc | 118 +- .../jak2/engine/nav/nav-enemy-h_REF.gc | 254 + .../jak2/engine/nav/nav-mesh-h_REF.gc | 189 +- .../jak2/engine/physics/trajectory_REF.gc | 57 +- .../process-drawable/process-focusable_REF.gc | 16 +- .../process-drawable/simple-focus_REF.gc | 10 +- .../engine/spatial-hash/spatial-hash-h_REF.gc | 19 +- .../jak2/engine/target/target-util_REF.gc | 82 +- .../levels/city/slums/ctysluma-part_REF.gc | 1382 +++++ .../levels/palace/outside/palace-ocean_REF.gc | 4999 +++++++++++++++++ test/offline/config/jak2/config.jsonc | 4 +- test/offline/offline_test_main.cpp | 7 + 41 files changed, 14399 insertions(+), 1864 deletions(-) create mode 100644 .prettierrc create mode 100644 test/decompiler/reference/jak2/engine/nav/nav-enemy-h_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/city/slums/ctysluma-part_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/palace/outside/palace-ocean_REF.gc diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000000..4e93b6fd56 --- /dev/null +++ b/.prettierrc @@ -0,0 +1 @@ +endOfLine: "auto" diff --git a/.vs/launch.vs.json b/.vs/launch.vs.json index 461961bfd7..5d7e140dbd 100644 --- a/.vs/launch.vs.json +++ b/.vs/launch.vs.json @@ -79,7 +79,7 @@ "--game", "jak2", "--file", - "progress" + "nav-enemy" ] }, { diff --git a/Taskfile.yml b/Taskfile.yml index d1cdd495a8..395d65a819 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -110,6 +110,7 @@ tasks: - python ./scripts/tasks/extract-zip.py --file "{{.FILE}}" --out ./savestate_out/ - '{{.MEMDUMP_BIN_RELEASE_DIR}}/memory_dump_tool ./savestate_out/eeMemory.bin --output-path ./ --game {{.GAME}} > ee-analysis.log' watch-pcsx2: + # python -m pip install -U "watchdog[watchmedo]" cmds: - watchmedo shell-command --drop --patterns="*.p2s" --recursive --command='task analyze-ee-memory FILE="${watch_src_path}"' "{{.SAVESTATE_DIR}}" vars: @@ -124,7 +125,7 @@ tasks: - '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}}' offline-tests-fast: cmds: - - '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --dump_current_output --num_threads 32' + - '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --num_threads 32 --dump_current_output --fail-on-cmp' offline-test-file: cmds: - '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --file {{.FILE}}' @@ -132,14 +133,14 @@ tasks: update-ref-tests: cmds: - cmd: python ./scripts/tasks/delete-file-or-folder.py --path failures - - cmd: '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --dump_current_output --num_threads 32' + - cmd: '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --num_threads 32 --dump_current_output --fail-on-cmp' ignore_error: true - python ./scripts/update_decomp_reference.py ./failures ./test/decompiler/reference/ --game {{.GAME}} - task: offline-tests-fast update-ref-file: cmds: - cmd: python ./scripts/tasks/delete-file-or-folder.py --path failures - - cmd: '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --file {{.FILE}} --game {{.GAME}} --dump_current_output' + - cmd: '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --file {{.FILE}} --game {{.GAME}} --dump_current_output --fail-on-cmp' ignore_error: true - python ./scripts/update_decomp_reference.py ./failures ./test/decompiler/reference/ --game {{.GAME}} - task: offline-test-file diff --git a/decompiler/config/jak2/all-types.gc b/decompiler/config/jak2/all-types.gc index 30e9b5a450..d4cb365b01 100644 --- a/decompiler/config/jak2/all-types.gc +++ b/decompiler/config/jak2/all-types.gc @@ -15958,15 +15958,15 @@ (deftype move-above-ground-params (structure) ((gnd-collide-with collide-spec :offset-assert 0) (popup float :offset-assert 4) - (dont-move-if-overlaps? basic :offset-assert 8) - (hover-if-no-ground? basic :offset-assert 12) + (dont-move-if-overlaps? symbol :offset-assert 8) + (hover-if-no-ground? symbol :offset-assert 12) (overlaps-params overlaps-others-params :inline :offset-assert 16) (new-pos vector :inline :offset-assert 48) (old-gspot-pos vector :inline :offset-assert 64) (old-gspot-normal vector :inline :offset-assert 80) (pat pat-surface :offset-assert 96) ;; was u32 - (on-ground? basic :offset-assert 100) - (do-move? basic :offset-assert 104) + (on-ground? symbol :offset-assert 100) + (do-move? symbol :offset-assert 104) ) :method-count-assert 9 :size-assert #x6c @@ -16142,8 +16142,10 @@ (set-collide-as! (_type_ collide-spec) none 48) ;; (clear-collide-with-as (_type_) none 48) (collide-shape-method-49 (_type_ int int int) none 49) ;; (restore-collide-with-as (_type_) none 49) (collide-shape-method-50 (_type_ process object float float float) none 50) ;; (backup-collide-with-as (_type_) none 50) - (collide-shape-method-51 () none 51) ;; (set-root-prim-collide-with! (_type_ collide-kind) none 51) - (water-info-init! "Initialize a [[water-info]] with the currently loaded regions." (_type_ water-info collide-action) water-info 52) ;; (set-root-prim-collide-as! (_type_ collide-kind) none 52) + (collide-shape-method-51 (_type_) none 51) ;; (set-root-prim-collide-with! (_type_ collide-kind) none 51) + (water-info-init! + "Initialize a [[water-info]] with the currently loaded regions." + (_type_ water-info collide-action) water-info 52) ;; (set-root-prim-collide-as! (_type_ collide-kind) none 52) (collide-shape-method-53 (_type_) none 53) ;; (set-collide-kinds (_type_ int collide-kind collide-kind) none 53) (collide-shape-method-54 (_type_) none 54) ;; (set-collide-offense (_type_ int collide-offense) none 54) ) @@ -16224,43 +16226,44 @@ (declare-type collide-query structure) (declare-type control-info basic) (deftype collide-shape-moving (collide-shape) - ((rider-time time-frame :offset-assert 200) - (rider-last-move vector :inline) - (trans-old vector :inline) - (poly-pat pat-surface :offset 272) - (cur-pat pat-surface) - (ground-pat pat-surface) - (status cshape-moving-flags) - (old-status cshape-moving-flags) - (prev-status cshape-moving-flags :offset-assert 304) - (reaction-flag cshape-reaction-flags) - (reaction (function control-info collide-query vector vector cshape-moving-flags)) ;; function types... - (no-reaction function) - (local-normal vector :inline) - (surface-normal vector :inline) - (poly-normal vector :inline) - (ground-poly-normal vector :inline) - (gspot-pos vector :inline) - (gspot-normal vector :inline) - (grount-touch-point vector :inline) - (ground-impact-vel meters) - (surface-angle float) - (poly-angle float) - (touch-angle float) - (coverage float) - (dynam dynamics) - (surf surface) + ((rider-time time-frame :offset-assert 200) + (rider-last-move vector :inline :offset-assert 208) + (trans-old vector :inline :offset-assert 224) + (csm-unk-vec-981i2u312 vector :inline :offset 240) + (csm-unk-vec-klj1n23 vector :inline :offset 256) + (poly-pat pat-surface :offset 272) + (cur-pat pat-surface :offset-assert 276) + (ground-pat pat-surface :offset-assert 280) + (status cshape-moving-flags :offset-assert 288) + (old-status cshape-moving-flags :offset-assert 296) + (prev-status cshape-moving-flags :offset-assert 304) + (reaction-flag cshape-reaction-flags :offset-assert 312) + (reaction (function control-info collide-query vector vector cshape-moving-flags) :offset-assert 316) + (no-reaction function :offset-assert 320) + (local-normal vector :inline :offset-assert 336) + (surface-normal vector :inline :offset-assert 352) + (poly-normal vector :inline :offset-assert 368) + (ground-poly-normal vector :inline :offset-assert 384) + (gspot-pos vector :inline :offset-assert 400) + (gspot-normal vector :inline :offset-assert 416) + (grount-touch-point vector :inline :offset-assert 432) + (ground-impact-vel meters :offset-assert 448) + (surface-angle float :offset-assert 452) + (poly-angle float :offset-assert 456) + (touch-angle float :offset-assert 460) + (coverage float :offset-assert 464) + (dynam dynamics :offset-assert 468) + (surf surface :offset-assert 472) ) :method-count-assert 68 :size-assert #x1dc :flag-assert #x44000001dc - ;; Failed to read fields. (:methods (new (symbol type process-drawable collide-list-enum) _type_ 0) (collide-shape-moving-method-55 (_type_ collide-query collide-spec float float float) symbol 55) (collide-shape-moving-method-56 (_type_ pat-surface) none 56) ;; (set-and-handle-pat! (_type_ pat-surface) none 56) (collide-shape-moving-method-57 () none 57) ;; (integrate-no-collide! (_type_ vector) none 57) - (collide-shape-moving-method-58 () none 58) ;; (dummy-58 (_type_ vector) symbol 58) + (collide-shape-moving-method-58 (_type_ vector overlaps-others-params) symbol 58) ;; (dummy-58 (_type_ vector) symbol 58) (collide-shape-moving-method-59 () none 59) ;; (integrate-for-enemy-with-move-to-ground! (_type_ vector collide-kind float symbol symbol symbol) none 59) (collide-shape-moving-method-60 () none 60) ;; (move-to-ground (_type_ float float symbol collide-kind) symbol 60) (collide-shape-moving-method-61 () none 61) ;; (move-to-ground-point! (_type_ vector vector vector) none 61) @@ -17159,7 +17162,7 @@ :flag-assert #x1b005000cc (:methods (get-trans - "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]]" + "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]])" (_type_ int) vector 20) (get-quat (_type_ int) quaternion 21) (get-transv (_type_) vector 22) @@ -18136,6 +18139,7 @@ ) (declare-type collide-query structure) + (deftype collide-cache (basic) ((num-tris int32 :offset-assert 4) (num-prims int32 :offset-assert 8) @@ -21901,7 +21905,7 @@ (src-switch-poly-id uint8 :offset-assert 9) (dest-link-poly-id uint8 :offset-assert 10) (dest-switch-poly-id uint8 :offset-assert 11) - (dest-mesh basic :offset-assert 12) + (dest-mesh nav-mesh :offset-assert 12) ) :method-count-assert 9 :size-assert #x10 @@ -21911,7 +21915,7 @@ (deftype nav-poly (structure) ((data uint8 64 :offset-assert 0 :score -1) (vertex vector 4 :inline :offset 0) ;; changed to vector from uint8 in jak 1 - (vertex0 vector :inline :offset 0 :score 999) + (vertex0 vector :inline :offset 0) (vertex1 vector :inline :offset 16) (vertex2 vector :inline :offset 32) (vertex3 vector :inline :offset 48) @@ -22026,7 +22030,7 @@ (poly-count uint8 :offset-assert 13) (nav-control-count uint8 :offset-assert 14) (max-nav-control-count uint8 :offset-assert 15) - (route uint32 :offset-assert 16) + (route (pointer nav-poly) :offset-assert 16) (poly-hash grid-hash :offset-assert 20) (nav-control-array (inline-array nav-control) :offset-assert 24) ;; 307 elts (sphere-hash sphere-hash :offset-assert 28) @@ -22037,7 +22041,7 @@ (bounds vector :inline :offset-assert 48) ;; actually a sphere (origin vector :inline :offset 48) (entity entity :offset-assert 64) - (link-array (array nav-mesh-link) :offset-assert 68) + (link-array (inline-array nav-mesh-link) :offset-assert 68) (link-count uint8 :offset-assert 72) (flags nav-mesh-flag :offset-assert 73) (pad1 uint8 2 :offset-assert 74) @@ -22053,23 +22057,23 @@ (nav-mesh-method-10 (_type_ vector vector nav-poly) nav-poly 10) ;; (tri-centroid-local (_type_ nav-poly vector) vector 10) (nav-mesh-method-11 (_type_ nav-poly vector) vector 11) ;; (get-adj-poly (_type_ nav-poly nav-poly symbol) nav-poly 11) (nav-mesh-method-12 (_type_ nav-poly vector) none 12) ;; (setup-portal (_type_ nav-poly nav-poly nav-route-portal) object 12) - (nav-mesh-method-13 (_type_ symbol symbol) none 13) ;; (initialize-mesh! (_type_) none 13) - (get-route-portal(_type_ object object nav-find-poly-parms) none 14) ;; (move-along-nav-ray! (_type_ nav-ray) none 14) + (nav-mesh-method-13 (_type_ nav-poly nav-poly) nav-poly 13) ;; (initialize-mesh! (_type_) none 13) + (get-route-portal (_type_ nav-poly nav-poly nav-route-portal) (inline-array nav-vertex) 14) ;; (move-along-nav-ray! (_type_ nav-ray) none 14) (initialize-mesh! (_type_) none 15) ;; (try-move-along-ray (_type_ nav-poly vector vector float) meters 15) (move-along-nav-ray! (_type_ nav-ray) none 16) ;; (TODO-RENAME-16 (_type_ vector nav-poly vector symbol float clip-travel-vector-to-mesh-return-info) none 16) (try-move-along-ray (_type_ nav-poly vector vector float) meters 17) ;; (update-route-table (_type_) none 17) - (nav-mesh-method-18 () none 18) ;; (dummy-18 (_type_ int vector int (pointer int8) int) none 18) - (nav-mesh-method-19 () none 19) ;; (compute-bounding-box (_type_ vector vector) none 19) - (nav-mesh-method-20 () none 20) ;; (debug-draw-poly (_type_ nav-poly rgba) none 20) - (nav-mesh-method-21 () none 21) ;; (point-in-poly? (_type_ nav-poly vector) symbol 21) + (nav-mesh-method-18 (_type_ vector nav-poly vector float symbol clamp-travel-vector-to-mesh-return-info) none 18) ;; (dummy-18 (_type_ int vector int (pointer int8) int) none 18) + (nav-mesh-method-19 (_type_) none 19) ;; (compute-bounding-box (_type_ vector vector) none 19) + (nav-mesh-method-20 (_type_ clamp-travel-vector-to-mesh-return-info) none 20) ;; (debug-draw-poly (_type_ nav-poly rgba) none 20) + (find-adjacent-bounds-one (_type_ vector nav-poly int int) none 21) ;; (point-in-poly? (_type_ nav-poly vector) symbol 21) (nav-mesh-method-22 (_type_ vector vector) none 22) ;; (find-opposite-vertices (_type_ nav-poly nav-poly) uint 22) (nav-mesh-method-23 (_type_ entity-nav-mesh) none 23) ;; (dummy-23 (_type_ nav-poly vector vector vector nav-route-portal) vector 23) (nav-mesh-method-24 (_type_) none 24) ;; (closest-point-on-boundary (_type_ nav-poly vector vector) vector 24) (nav-mesh-method-25 (_type_) none 25) ;; (project-point-into-tri-3d (_type_ nav-poly vector vector) none 25) (nav-mesh-method-26 (_type_) none 26) ;; (project-point-into-tri-2d (_type_ nav-poly vector vector) vector 26) - (new-nav-control (_type_ vector int) nav-control 27) ;; (find-poly-fast (_type_ vector meters) nav-poly 27) + (new-nav-control (_type_ process-drawable int) nav-control 27) ;; (find-poly-fast (_type_ vector meters) nav-poly 27) (nav-mesh-method-28 (_type_ object) none 28) ;; (find-poly (_type_ vector meters (pointer nav-control-flags)) nav-poly 28) - (nav-mesh-method-29 (_type_ object symbol) nav-control 29) ;; (is-in-mesh? (_type_ vector float meters) symbol 29) + (nav-mesh-method-29 (_type_ process-drawable symbol) nav-control 29) ;; (is-in-mesh? (_type_ vector float meters) symbol 29) (nav-mesh-method-30 (_type_ process-drawable) none 30) (change-to (_type_ process-drawable) none 31) (nav-mesh-method-32 "arg1 is a [[nav-mesh-link]] `id`" (_type_ uint32) none 32) @@ -22086,10 +22090,10 @@ (closest-point-on-boundary (_type_ nav-poly vector vector) none 39) (nav-mesh-method-40 (_type_ nav-poly vector object vector) none 40) (project-point-into-poly-2d (_type_ nav-poly vector vector) none 41) - (nav-mesh-method-42 (_type_ nav-find-poly-parms) symbol 42) + (nav-mesh-method-42 (_type_ nav-find-poly-parms) nav-poly 42) (nav-mesh-method-43 (_type_ nav-find-poly-parms) none 43) (nav-mesh-method-44 (_type_ vector float float) symbol 44) - (nav-mesh-method-45 "TODO - asm expression building error" (_type_ entity-perm) none 45) + (nav-mesh-method-45 "TODO - asm expression building error" (_type_ entity-perm) none 45) ;; entity-perm is wrong (nav-mesh-method-46 (_type_ object) none 46) ) ) @@ -22131,7 +22135,7 @@ (pref-dir vector :inline :offset-assert 32) (out-travel vector 2 :inline :offset-assert 48) (closest-sphere-dist2 float :offset-assert 80) - (avoiding-sphere? basic :offset-assert 84) + (avoiding-sphere? symbol :offset-assert 84) ) :method-count-assert 9 :size-assert #x58 @@ -22140,7 +22144,7 @@ (deftype nav-callback-info (structure) ((callback-count int32 :offset-assert 0) - (callback-array uint32 10 :offset-assert 4) + (callback-array (function object nav-control none) 10 :offset-assert 4) ) :method-count-assert 9 :size-assert #x2c @@ -22150,27 +22154,26 @@ (defenum nav-state-flag :type uint32 :bitfield #t - - (display-marks 0) ;; 1 - (recovery-mode 1) ;; 2 - (initialized 2) ;; 4 - (debug 3) ;; 8 - (directional-mode 4) ;; 16 - (trapped-by-sphere 5) ;; 32 - (target-poly-dirty 6) ;; 64 - (blocked 7) ;; 128 - (in-target-poly 8) ;; 256 - (at-target 9) ;; 512 - (target-inside 10) ;; 1024 - (in-mesh 11) ;; 2048 - (avoiding-sphere 12) ;; 4096 - (touching-sphere 13) ;; 8192 - (at-gap 14) ;; 16384 + (display-marks 0) + (recovery-mode 1) + (initialized 2) + (debug 3) + (directional-mode 4) + (trapped-by-sphere 5) + (target-poly-dirty 6) + (blocked 7) + (in-target-poly 8) + (at-target 9) + (target-inside 10) + (in-mesh 11) + (avoiding-sphere 12) + (touching-sphere 13) + (at-gap 14) ) (deftype nav-state (structure) ((flags nav-state-flag :offset-assert 0) - (nav basic :offset-assert 4) + (nav nav-control :offset-assert 4) (user-poly nav-poly :offset-assert 8) (mesh nav-mesh :offset-assert 12) (current-poly nav-poly :offset-assert 16) @@ -22196,52 +22199,61 @@ :flag-assert #x37000000b0 ;; Failed to read fields. (:methods - (nav-state-method-9 () none 9) - (nav-state-method-10 () none 10) - (nav-state-method-11 () none 11) - (nav-state-method-12 () none 12) - (nav-state-method-13 () none 13) - (nav-state-method-14 () none 14) - (nav-state-method-15 () none 15) - (nav-state-method-16 () none 16) - (nav-state-method-17 () none 17) - (nav-state-method-18 () none 18) - (nav-state-method-19 () none 19) - (nav-state-method-20 () none 20) + (debug-draw (_type_) none 9) + (nav-state-method-10 + "Virtual/Stub" (_type_) none 10) + (nav-state-method-11 (_type_ nav-gap-info) symbol 11) + (nav-state-method-12 (_type_ vector) vector 12) + (nav-state-method-13 (_type_ vector) vector 13) + (nav-state-method-14 (_type_ vector) vector 14) + (nav-state-method-15 (_type_ vector) vector 15) + (get-speed + "@returns `speed`" + (_type_) meters 16) + (get-rotation-rate + "@returns `rotation-rate`" + (_type_) float 17) + (nav-state-method-18 (_type_ vector object vector) none 18) + (get-current-poly + "@returns `current-poly`" + (_type_) nav-poly 19) + (copy-nav-state! + "Copies the [[nav-state]] the given pointer points to into the current object" + (_type_ (pointer nav-state)) none 20) (nav-state-method-21 () none 21) (nav-state-method-22 () none 22) (nav-state-method-23 () none 23) - (nav-state-method-24 () none 24) - (nav-state-method-25 () none 25) - (nav-state-method-26 () none 26) - (nav-state-method-27 () none 27) - (nav-state-method-28 () none 28) - (nav-state-method-29 () none 29) - (nav-state-method-30 () none 30) - (nav-state-method-31 () none 31) - (nav-state-method-32 () none 32) - (nav-state-method-33 () none 33) - (nav-state-method-34 () none 34) - (nav-state-method-35 () none 35) - (nav-state-method-36 () none 36) - (nav-state-method-37 () none 37) - (nav-state-method-38 () none 38) + (nav-state-method-24 (_type_) none 24) + (nav-state-method-25 (_type_) none 25) + (nav-state-method-26 (_type_) none 26) + (nav-state-method-27 (_type_) none 27) + (nav-state-method-28 (_type_) none 28) + (nav-state-method-29 (_type_) none 29) + (nav-state-method-30 (_type_) none 30) + (nav-state-method-31 (_type_) none 31) + (nav-state-method-32 (_type_) none 32) + (nav-state-method-33 (_type_) none 33) + (nav-state-method-34 (_type_) none 34) + (nav-state-method-35 (_type_) none 35) + (nav-state-method-36 (_type_ vector) none 36) + (nav-state-method-37 (_type_) none 37) + (set-current-poly! (_type_ nav-poly) none 38) (nav-state-method-39 () none 39) - (nav-state-method-40 () none 40) - (nav-state-method-41 () none 41) - (nav-state-method-42 () none 42) - (nav-state-method-43 () none 43) - (nav-state-method-44 () none 44) - (nav-state-method-45 () none 45) - (nav-state-method-46 () none 46) - (nav-state-method-47 () none 47) + (nav-state-method-40 (_type_) none 40) + (nav-state-method-41 (_type_ vector) symbol 41) + (nav-state-method-42 (_type_ vector) none 42) + (nav-state-method-43 (_type_ vector) none 43) + (set-velocity! (_type_ vector) none 44) + (set-heading! (_type_ vector) none 45) + (set-speed! (_type_ meters) none 46) + (nav-state-method-47 (_type_ nav-control) none 47) (nav-state-method-48 () none 48) - (nav-state-method-49 () none 49) - (nav-state-method-50 () none 50) - (nav-state-method-51 () none 51) - (nav-state-method-52 () none 52) - (nav-state-method-53 () none 53) - (nav-state-method-54 () none 54) + (nav-state-method-49 (_type_ clamp-travel-vector-to-mesh-return-info) none 49) + (nav-state-method-50 "Virtual/Stub" (_type_) none 50) + (nav-state-method-51 "TODO - #1888" () none 51) + (nav-state-method-52 (_type_) none 52) + (nav-state-method-53 (_type_) none 53) + (nav-state-method-54 (_type_) none 54) ) ) @@ -22279,8 +22291,8 @@ (sphere-mask uint8 :offset-assert 61) (pad1 uint8 2 :offset-assert 62) (sphere-id-array uint8 16 :offset-assert 64) - (extra-nav-sphere sphere :inline :offset-assert 80) - (root-nav-sphere sphere :inline :offset-assert 96) + (extra-nav-sphere vector :inline :offset-assert 80) ;; it's a sphere, but makes code look nicer + (root-nav-sphere vector :inline :offset-assert 96) ;; it's a sphere, but makes code look nicer (state nav-state :inline :offset-assert 112) ) :method-count-assert 47 @@ -22294,7 +22306,7 @@ "Is the given point ([[vector]]) outside of the [[nav-mesh]]'s `bounds` [[sphere]] radius" (_type_ vector) symbol 10) (nav-control-method-11 "TODO" (_type_ vector) vector 11) ;; (dummy-11 (_type_ vector) vector 11) - (nav-control-method-12 () none 12) ;; (TODO-RENAME-12 (_type_ nav-gap-info) symbol 12) + (nav-control-method-12 (_type_ vector vector nav-poly) nav-poly 12) ;; (TODO-RENAME-12 (_type_ nav-gap-info) symbol 12) (find-poly "TODO" (_type_ vector) nav-poly 13) ;; (dummy-13 (_type_ vector vector) vector 13) (nav-control-method-14 (_type_ nav-poly vector object vector) none 14) ;; (set-current-poly! (_type_ nav-poly) none 14) (nav-control-method-15 "TODO - same as 11" (_type_ vector) none 15) ;; (set-target-pos! (_type_ vector) none 15) @@ -22302,11 +22314,11 @@ (is-in-mesh? "TODO" (_type_ vector float) symbol 17) ;; (project-onto-nav-mesh (_type_ vector vector) vector 17) (nav-control-method-18 () none 18) ;; (find-poly (_type_ vector) nav-poly 18) (nav-control-method-19 () none 19) ;; (dummy-19 (_type_ vector collide-shape-moving vector float) none 19) - (nav-control-method-20 (_type_ vector vector vector int symbol symbol) none 20) ;; (project-point-into-tri-3d (_type_ nav-poly vector vector) vector 20) - (nav-control-method-21 () none 21) ;; (TODO-RENAME-21 (_type_ vector) nav-poly 21) - (nav-control-method-22 () none 22) ;; (TODO-RENAME-22 (_type_ vector float) symbol 22) + (nav-control-method-20 (_type_ vector nav-poly vector float symbol symbol) none 20) ;; (project-point-into-tri-3d (_type_ nav-poly vector vector) vector 20) + (nav-control-method-21 (_type_) none 21) ;; (TODO-RENAME-21 (_type_ vector) nav-poly 21) + (nav-control-method-22 (_type_ vector nav-avoid-spheres-params) float 22) ;; (TODO-RENAME-22 (_type_ vector float) symbol 22) (nav-control-method-23 "TODO" (_type_) none 23) ;; (dummy-23 (_type_ vector check-vector-collision-with-nav-spheres-info) float 23) - (nav-control-method-24 () none 24) ;; (dummy-24 (_type_ float clip-travel-vector-to-mesh-return-info) none 24) + (nav-control-method-24 (_type_ vector int) none 24) ;; (dummy-24 (_type_ float clip-travel-vector-to-mesh-return-info) none 24) (get-max-rotation-rate (_type_) float 25) ;; (is-in-mesh? (_type_ vector float) symbol 25) (get-sphere-mask (_type_) none 26) ;; (TODO-RENAME-26 (_type_) none 26) (get-target-speed (_type_) meters 27) ;; (TODO-RENAME-27 (_type_) none 27) @@ -22328,7 +22340,7 @@ (display-marks? "Returns if navigation related marks should be displayed" (_type_) symbol 43) (nav-control-method-44 () none 44) (nav-control-method-45 (_type_ vector vector vector) sphere 45) - (find-sphere "TODO" (_type_) none 46) + (find-sphere "TODO" (_type_ symbol) none 46) ) ) @@ -22380,8 +22392,8 @@ (grid-hash-method-9 (_type_ int (array float) int) none 9) (grid-hash-method-10 (_type_) none 10) (grid-hash-method-11 (_type_) none 11) - (grid-hash-method-12 (_type_) none 12) - (grid-hash-method-13 (_type_) none 13) + (grid-hash-method-12 (_type_ vector) grid-hash-box 12) + (grid-hash-method-13 (_type_ vector float) grid-hash-box 13) (draw-grid "Draws the grid-hash" (_type_ rgba) none 14) (dump-grid-info "Prints out info about the grid-hash, also draws via [[grid-hash::draw-grid]] if `debug-draw` is `#t`" @@ -27272,7 +27284,7 @@ ;; (define-extern process-drawable-delay-player function) ;; (function time-frame int :behavior process-drawable) ;; (define-extern process-drawable-fuel-cell-handler function) ;; (function process int symbol event-message-block none :behavior process-drawable) ;; (define-extern process-drawable-birth-fuel-cell function) ;; (function entity vector symbol none :behavior process-drawable) -;; (define-extern find-offending-process-focusable function) +(define-extern find-offending-process-focusable (function process-tree symbol process-focusable)) ;; (define-extern *valid-con* object) ;; string ;; (define-extern process-drawable-valid? function) ;; (function process-drawable symbol) @@ -29500,7 +29512,7 @@ (nav-engine-method-18 (_type_ nav-engine-spr-buffer) none 18) (nav-engine-method-19 (_type_ nav-engine-spr-buffer) none 19) (nav-engine-method-20 () none 20) - (nav-engine-method-21 () none 21) + (nav-engine-method-21 (_type_) none 21) ) ) @@ -29514,20 +29526,19 @@ (define-extern *default-nav-mesh* nav-mesh) ;; nav-mesh (define-extern nav-mesh-connect-from-ent (function entity-nav-mesh none)) (define-extern connection-validate (function connection none)) -(define-extern connection-list-validate (function (inline-array connection) none)) +(define-extern connection-list-validate (function (inline-array connection) symbol)) (define-extern nav-control-validate (function nav-control none)) (define-extern debug-validate-nav-poly (function nav-mesh-link nav-poly none)) (define-extern nav-dma-send-to-spr-no-flush (function object object object none)) (define-extern nav-dma-send-from-spr-no-flush (function none)) -;; TODO - local vars and docstrings "Increments and returns the provided [[int]], if the value exceeds `2`, wrap back to `0`" -(define-extern inc-mod3 (function int int)) ;; +(define-extern inc-mod3 "Increments and returns the provided [[int]], if the value exceeds `2`, wrap back to `0`" (function int int)) ;; (define-extern nav-state-patch-pointers (function none)) (define-extern vu-point-triangle-intersection? (function vector vector vector vector symbol)) ;; (define-extern poly-in-height-range? (function nav-poly float float symbol)) (define-extern init-ray-local (function nav-ray nav-poly vector vector none)) ;; (define-extern init-ray-dir-local (function nav-ray nav-poly vector vector float none)) ;; (define-extern nav-ray-test (function nav-mesh nav-poly vector vector meters)) ;; -(define-extern point-poly-distance-min (function nav-poly none)) +(define-extern point-poly-distance-min (function nav-mesh-work nav-poly float nav-poly float)) (define-extern nav-mesh-route-table-bit-index (function nav-mesh uint int int)) (define-extern ray-ccw-line-segment-intersection? (function vector vector vector vector symbol)) ;; (define-extern ray-line-segment-intersection? (function vector vector vector vector symbol)) ;; @@ -29589,9 +29600,9 @@ (define-extern circle-tangent-directions (function vector vector vector vector vector)) ;; (define-extern circle-ray-intersection? (function vector vector float vector symbol)) (define-extern find-closest-circle-ray-intersection (function vector vector float int (inline-array vector) int int)) ;; -;; (define-extern compute-dir-parm function) ;; (function vector vector vector float) -;; (define-extern vector-rotate-y-sincos! function) -;; (define-extern test-xz-point-on-line-segment? function) ;; (function vector vector vector float symbol) +(define-extern compute-dir-parm (function vector vector vector float)) +(define-extern vector-rotate-y-sincos! (function vector vector float float float)) +(define-extern test-xz-point-on-line-segment? (function vector vector vector float symbol)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; aligner ;; @@ -31927,8 +31938,8 @@ ) (deftype idle-control (structure) - ((anim uint32 :offset-assert 0) - (current uint32 :offset-assert 4) + ((anim (pointer uint32) :offset-assert 0) + (current (pointer uint32) :offset-assert 4) (counter int32 :offset-assert 8) (target int32 :offset-assert 12) ) @@ -31936,8 +31947,8 @@ :size-assert #x10 :flag-assert #xb00000010 (:methods - (idle-control-method-9 () none 9) - (idle-control-method-10 () none 10) + (idle-control-method-9 (_type_ (pointer uint32)) none 9) + (idle-control-method-10 (_type_ process-drawable) none 10) ) ) @@ -31962,6 +31973,7 @@ ;; enemy-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +++enemy-h:enemy-flag (defenum enemy-flag :type int64 :bitfield #t @@ -32001,30 +32013,54 @@ (vulnerable-backup 33) (vulnerable 34) (recover 35) + (enemy-flag36 36) + (enemy-flag37 37) + (enemy-flag38 38) + (enemy-flag39 39) + (enemy-flag40 40) + (enemy-flag41 41) + (enemy-flag42 42) + (enemy-flag43 43) ) +;; ---enemy-h:enemy-flag +;; +++enemy-h:enemy-aware +(defenum enemy-aware + :type uint64 + (enemy-aware-0 0) + (enemy-aware-2 2) + (enemy-aware-3 3) + (enemy-aware-4 4) + ) +;; ---enemy-h:enemy-aware + +(declare-type enemy process-focusable) (deftype enemy-focus (focus) - ((aware uint64 :offset-assert 16) - (flags uint64 :offset-assert 24) + ((aware enemy-aware :offset-assert 16) + (flags enemy-flag :offset-assert 24) ) :method-count-assert 14 :size-assert #x20 :flag-assert #xe00000020 (:methods - (enemy-focus-method-13 () none 13) + (try-update-focus (_type_ process-focusable enemy) symbol :replace 12) + (enemy-focus-method-13 + "TODO - enemy-aware sets `aware` on the type (see enemy.gc), but it's also an `enemy` passed to method 12...what the hell is going on? + probably related to ';; skipped : handle creation is different, want to grab more.'" + (_type_ process-focusable enemy-aware) symbol 13) ) ) (deftype enemy-info (basic) ((fact-defaults basic :offset-assert 4) - (use-die-falling basic :offset-assert 8) - (use-victory basic :offset-assert 12) - (use-jump-blocked basic :offset-assert 16) - (debug-draw-neck basic :offset-assert 20) - (jump-debug-draw basic :offset-assert 24) - (move-to-ground basic :offset-assert 28) - (hover-if-no-ground basic :offset-assert 32) - (idle-anim-script uint32 :offset-assert 36) + (use-die-falling symbol :offset-assert 8) + (use-victory symbol :offset-assert 12) + (use-jump-blocked symbol :offset-assert 16) + (debug-draw-neck symbol :offset-assert 20) + (jump-debug-draw symbol :offset-assert 24) + (move-to-ground symbol :offset-assert 28) + (hover-if-no-ground symbol :offset-assert 32) + (idle-anim-script uint32 :offset-assert 36) ;; TODO what is this (idle-anim int32 :offset-assert 40) (notice-anim int32 :offset-assert 44) (hostile-anim int32 :offset-assert 48) @@ -32046,8 +32082,8 @@ (notice-distance-delta meters :offset-assert 148) (proximity-notice-distance meters :offset-assert 152) (default-hit-points int32 :offset-assert 156) - (gnd-collide-with uint32 :offset-assert 160) - (overlaps-others-collide-with-filter uint32 :offset-assert 164) + (gnd-collide-with collide-spec :offset-assert 160) + (overlaps-others-collide-with-filter collide-spec :offset-assert 164) (penetrate-flinch uint64 :offset-assert 168) (penetrate-knocked uint64 :offset-assert 176) (movement-gravity meters :offset-assert 184) @@ -32057,7 +32093,7 @@ (attack-shove-up meters :offset-assert 200) (attack-mode basic :offset-assert 204) (attack-damage int32 :offset-assert 208) - (recover-gnd-collide-with uint32 :offset-assert 212) + (recover-gnd-collide-with collide-spec :offset-assert 212) (jump-height-min meters :offset-assert 216) (jump-height-factor float :offset-assert 220) (knocked-seek-ry-clamp float :offset-assert 224) @@ -32102,7 +32138,7 @@ :size-assert #x180 :flag-assert #xa00000180 (:methods - (enemy-info-method-9 () none 9) + (copy-enemy-info! "Copies the given [[enemy-info]] into the current [[enemy-info]]" (_type_ _type_) none 9) ) ) @@ -32134,19 +32170,32 @@ ((trans vector :inline :offset-assert 0) (quat quaternion :inline :offset-assert 16) (entity basic :offset-assert 32) - (directed? basic :offset-assert 36) - (no-initial-move-to-ground? basic :offset-assert 40) + (directed? symbol :offset-assert 36) + (no-initial-move-to-ground? symbol :offset-assert 40) ) :method-count-assert 9 :size-assert #x2c :flag-assert #x90000002c ) +;; +++enemy-h:knocked-type +(defenum knocked-type + :type uint8 + (knocked-type-1 1) + (knocked-type-2 2) + (knocked-type-3 3) + (knocked-type-4 4) + (knocked-type-5 5) + (knocked-type-6 6) + (knocked-type-7 7) + ) +;; ---enemy-h:knocked-type + (deftype enemy-attack-info (structure) ((attack-id uint32 :offset-assert 0) - (knocked-type uint8 :offset-assert 4) + (knocked-type knocked-type :offset-assert 4) (blue-juggle-count uint8 :offset-assert 5) - (attacker-handle uint64 :offset-assert 8) + (attacker-handle handle :offset-assert 8) (attack-time time-frame :offset-assert 16) (penetrate-using uint64 :offset-assert 24) (attacker-pos vector :inline :offset-assert 32) @@ -32168,19 +32217,20 @@ ) (deftype enemy (process-focusable) - ((enemy-flags enemy-flag :offset-assert 208) - (enemy-info symbol :offset-assert 216) + ((fact-info-override fact-info-enemy :offset 160 :score 100) + (enemy-flags enemy-flag :offset-assert 208) + (enemy-info enemy-info :offset-assert 216) (hit-points int32 :offset-assert 220) (gnd-collide uint32 :offset-assert 224) (attack-id uint32 :offset-assert 228) (persistent-attack-id uint32 :offset-assert 232) - (water-max-height float :offset-assert 236) - (water-surface-height float :offset-assert 240) - (desired-angle float :offset-assert 244) + (water-max-height meters :offset-assert 236) + (water-surface-height meters :offset-assert 240) + (desired-angle degrees :offset-assert 244) (jump-why uint64 :offset-assert 248) - (penetrated-by-all uint64 :offset-assert 256) - (penetrated-flinch uint64 :offset-assert 264) - (penetrated-knocked uint64 :offset-assert 272) + (penetrated-by-all penetrate :offset-assert 256) + (penetrated-flinch penetrate :offset-assert 264) + (penetrated-knocked penetrate :offset-assert 272) (reaction-time uint64 :offset-assert 280) (notice-time uint64 :offset-assert 288) (state-timeout uint64 :offset-assert 296) @@ -32196,7 +32246,7 @@ (incoming enemy-attack-info :inline :offset-assert 416) (actor-group actor-group :offset-assert 480) (actor-group-count int32 :offset-assert 484) - (neck symbol :offset-assert 488) + (neck joint-mod :offset-assert 488) (on-notice symbol :offset-assert 492) (on-active symbol :offset-assert 496) (on-hostile symbol :offset-assert 500) @@ -32208,120 +32258,144 @@ :size-assert #x214 :flag-assert #x8901a00214 (:methods - (enemy-method-27 () none 27) - (enemy-method-28 () none 28) - (enemy-method-29 () none 29) - (enemy-method-30 () none 30) - (enemy-method-31 () none 31) - (enemy-method-32 () none 32) - (enemy-method-33 () none 33) - (enemy-method-34 () none 34) - (enemy-method-35 () none 35) - (enemy-method-36 () none 36) - (enemy-method-37 () none 37) - (enemy-method-38 () none 38) - (enemy-method-39 () none 39) - (enemy-method-40 () none 40) - (enemy-method-41 () none 41) - (enemy-method-42 () none 42) - (enemy-method-43 () none 43) - (enemy-method-44 () none 44) - (enemy-method-45 () none 45) - (enemy-method-46 () none 46) - (enemy-method-47 () none 47) - (enemy-method-48 () none 48) - (enemy-method-49 () none 49) - (enemy-method-50 () none 50) - (enemy-method-51 () none 51) - (enemy-method-52 () none 52) - (enemy-method-53 () none 53) - (enemy-method-54 () none 54) - (enemy-method-55 () none 55) - (enemy-method-56 () none 56) - (enemy-method-57 () none 57) - (enemy-method-58 () none 58) - (enemy-method-59 () none 59) - (enemy-method-60 () none 60) - (enemy-method-61 () none 61) - (enemy-method-62 () none 62) - (enemy-method-63 () none 63) - (enemy-method-64 () none 64) - (enemy-method-65 () none 65) - (enemy-method-66 () none 66) - (enemy-method-67 () none 67) - (enemy-method-68 () none 68) - (enemy-method-69 () none 69) - (enemy-method-70 () none 70) - (enemy-method-71 () none 71) - (enemy-method-72 () none 72) - (enemy-method-73 () none 73) - (enemy-method-74 () none 74) - (enemy-method-75 () none 75) - (enemy-method-76 () none 76) - (enemy-method-77 () none 77) - (enemy-method-78 () none 78) - (enemy-method-79 () none 79) - (enemy-method-80 () none 80) - (enemy-method-81 () none 81) - (enemy-method-82 () none 82) - (enemy-method-83 () none 83) - (enemy-method-84 () none 84) - (enemy-method-85 () none 85) - (enemy-method-86 () none 86) - (enemy-method-87 () none 87) - (enemy-method-88 () none 88) - (enemy-method-89 () none 89) - (enemy-method-90 () none 90) - (enemy-method-91 () none 91) - (enemy-method-92 () none 92) - (enemy-method-93 () none 93) - (enemy-method-94 () none 94) - (enemy-method-95 () none 95) - (enemy-method-96 () none 96) - (enemy-method-97 () none 97) - (enemy-method-98 () none 98) - (enemy-method-99 () none 99) - (enemy-method-100 () none 100) - (enemy-method-101 () none 101) - (enemy-method-102 () none 102) - (enemy-method-103 () none 103) - (enemy-method-104 () none 104) - (enemy-method-105 () none 105) - (enemy-method-106 () none 106) - (enemy-method-107 () none 107) - (enemy-method-108 () none 108) - (enemy-method-109 () none 109) - (enemy-method-110 () none 110) - (enemy-method-111 () none 111) - (enemy-method-112 () none 112) - (enemy-method-113 () none 113) - (enemy-method-114 () none 114) - (enemy-method-115 () none 115) - (enemy-method-116 () none 116) - (enemy-method-117 () none 117) - (enemy-method-118 () none 118) - (enemy-method-119 () none 119) - (enemy-method-120 () none 120) - (enemy-method-121 () none 121) - (enemy-method-122 () none 122) - (enemy-method-123 () none 123) - (enemy-method-124 () none 124) - (enemy-method-125 () none 125) - (enemy-method-126 () none 126) - (enemy-method-127 () none 127) - (enemy-method-128 () none 128) - (enemy-method-129 () none 129) - (enemy-method-130 () none 130) - (enemy-method-131 () none 131) - (enemy-method-132 () none 132) - (enemy-method-133 () none 133) - (enemy-method-134 () none 134) - (enemy-method-135 () none 135) - (enemy-method-136 () none 136) + (dormant () _type_ :state 27) ;; TODO - these dont produce a nice decomp warning when missing + (dormant-aware () _type_ :state 28) + (hit () _type_ :state 29) + (knocked () _type_ :state 30) + (idle () _type_ :state 31) ;; TODO - these dont produce a nice decomp warning when missing + (active () _type_ :state 32) + (notice () _type_ :state 33) + (flee () _type_ :state 34) + (stare () _type_ :state 35) + (hostile () _type_ :state 36) + (victory () _type_ :state 37) + (die () _type_ :state 38) + (die-falling () _type_ :state 39) + (die-fast () _type_ :state 40) + (directed () _type_ :state 41) + (jump () _type_ :state 42) + (jump-blocked () _type_ :state 43) + (ambush () _type_ :state 44) + (view-anims () _type_ :state 45) + (enemy-method-46 "@abstract" (_type_) none 46) + (enemy-method-47 (_type_ vector) float 47) + (enemy-method-48 (_type_) none 48) + (enemy-method-49 (_type_) time-frame :behavior enemy 49) + (enemy-method-50 (_type_ vector) vector 50) + (enemy-method-51 (_type_) float 51) + (enemy-method-52 (_type_ vector) none 52) + (enemy-method-53 + "TODO" + (_type_ process-focusable) symbol 53) + (enemy-method-54 (_type_) enemy-flag 54) + (enemy-method-55 (_type_) none 55) + (enemy-method-56 (_type_ object enemy-attack-info) none 56) + (enemy-method-57 (_type_ process-focusable enemy-attack-info) none 57) + (enemy-method-58 (_type_) symbol 58) + (enemy-method-59 (_type_) penetrate 59) + (coin-flip? + "@returns The result of a 50/50 RNG roll" + (_type_) symbol 60) + (enemy-method-61 (_type_ int) int :behavior enemy 61) + (enemy-method-62 (_type_) none 62) + (enemy-method-63 (_type_ process-focusable symbol) none 63) + (enemy-method-64 (_type_) none 64) + (enemy-method-65 (_type_) none 65) + (go-ambush (_type_) none 66) + (go-stare (_type_) none 67) + (go-stare2 (_type_) none 68) + (go-directed (_type_) none 69) + (go-hostile (_type_) none 70) + (go-flee (_type_) none 71) + (enemy-method-72 (_type_) none 72) + (enemy-method-73 (_type_) none 73) + (enemy-method-74 (_type_ object object symbol) none 74) + (enemy-method-75 (_type_ process touching-shapes-entry) none 75) + (enemy-method-76 (_type_) none 76) + (enemy-method-77 (_type_) none 77) + (enemy-method-78 (_type_) none 78) + (enemy-method-79 (_type_) none 79) + (enemy-method-80 (_type_) none 80) + (enemy-method-81 (_type_) symbol 81) + (enemy-method-82 "TODO - nav-poly is a guess" (_type_ nav-poly) none 82) + (enemy-method-83 (_type_ enemy-jump-info) none 83) + (enemy-method-84 (_type_ enemy-jump-info) none 84) + (enemy-method-85 (_type_) float 85) + (enemy-method-86 (_type_) symbol 86) + (enemy-method-87 (_type_) none 87) + (enemy-method-88 (_type_) none 88) + (enemy-method-89 (_type_) none 89) + (enemy-method-90 (_type_) none 90) + (enemy-method-91 (_type_ int enemy-jump-info) none 91) + (enemy-method-92 + "TODO - nav-poly is a guess + @abstract" + (_type_ int nav-poly) none 92) + (enemy-method-93 (_type_) none 93) + (enemy-method-94 (_type_ vector float) symbol 94) + (enemy-method-95 (_type_ vector float) symbol 95) + (enemy-method-96 (_type_ float symbol) symbol 96) + (enemy-method-97 (_type_) none 97) + (enemy-method-98 (_type_ process-focusable vector) symbol 98) + (enemy-method-99 (_type_) symbol 99) + (enemy-method-100 (_type_) symbol 100) + (enemy-method-101 (_type_) none 101) + (enemy-method-102 (_type_) symbol 102) + (enemy-method-103 (_type_) collide-spec 103) + (enemy-method-104 (_type_ process uint uint) symbol :behavior process 104) + (enemy-method-105 (_type_) none 105) + (enemy-method-106 (_type_) none 106) + (enemy-method-107 (_type_) process 107) + (enemy-method-108 (_type_ object) none 108) + (enemy-method-109 (_type_ int) none 109) + (enemy-method-110 (_type_) none 110) + (enemy-method-111 (_type_) none :behavior enemy 111) + (enemy-method-112 (_type_ enemy-info) none 112) + (enemy-method-113 (_type_ enemy-info) none 113) + (enemy-method-114 "@abstract" (_type_) none 114) + (enemy-method-115 "@abstract" (_type_) none 115) + (go-idle (_type_) none 116) + (get-rand-float + "@returns the result of calling [[rand-vu]]" + (_type_) float 117) + (get-rand-float-range + "@param low The lower bound of the range (inclusive) + @param high The upper bound of the range (exclusive) + @returns A random float in the specified range" + (_type_ float float) float 118) + (get-rand-int + "@param high The upper bound of the range (exclusive) + @returns a random integer in the range 0 to `high` + @see [[rand-vu]]" + (_type_ int) int 119) + (enemy-method-120 "TODO" (_type_ int int) int 120) + (get-rand-int-range + "@param low The lower bound of the range (inclusive) + @param high The upper bound of the range (exclusive) + @returns A random integer in the specified range" + (_type_ int int) int 121) + (rng-hit? + "TODO - not the best name + @param chance The value to compare ([[>=]]) with the result from [[rand-vu]]. + @returns If `chance` is greater than the random draw" + (_type_ float) symbol 122) + (enemy-method-123 "TODO" (_type_ float) symbol 123) + (enemy-method-124 "TODO" (_type_) collide-spec 124) + (enemy-method-125 (_type_) none 125) + (enemy-method-126 (_type_ collide-query vector collide-spec float float float) symbol 126) + (enemy-method-127 (_type_) none 127) + (enemy-method-128 (_type_ vector move-above-ground-params) none 128) + (enemy-method-129 (_type_) none 129) + (enemy-method-130 (_type_) none 130) + (enemy-method-131 (_type_) none 131) + (enemy-method-132 (_type_) none 132) + (enemy-method-133 (_type_) none 133) + (enemy-method-134 (_type_ process symbol) process-focusable 134) + (enemy-method-135 (_type_ int) sound-id 135) + (enemy-method-136 (_type_) enemy-flag 136) ) ) -#| (deftype anim-info (structure) ((anim-index int32 :offset-assert 0) (travel-speed meters :offset-assert 4) @@ -32330,14 +32404,12 @@ :size-assert #x8 :flag-assert #x900000008 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; nav-enemy-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype nav-enemy-info (enemy-info) ((callback-info nav-callback-info :offset-assert 384) (use-momentum symbol :offset-assert 388) ;; guessed by decompiler @@ -32355,7 +32427,7 @@ (walk-travel-speed meters :offset-assert 436) (walk-acceleration meters :offset-assert 440) (walk-turning-acceleration meters :offset-assert 444) - (maximum-rotation-rate deg :offset-assert 448) + (maximum-rotation-rate degrees :offset-assert 448) (notice-nav-radius meters :offset-assert 452) (frustration-distance meters :offset-assert 456) (frustration-time time-frame :offset-assert 464) ;; time-frame @@ -32368,13 +32440,15 @@ :size-assert #x1ec :flag-assert #xb000001ec (:methods - (nav-enemy-info-method-10 () none 10) + (copy-nav-enemy-info! + "Copies the provided [[nav-enemy-info]] into the current object" + (_type_ nav-enemy-info) none 10) ) ) -|# (deftype nav-enemy (enemy) - ((frustration-point vector :inline :offset-assert 544) + ((enemy-info-override nav-enemy-info :offset 216 :score 100) + (frustration-point vector :inline :offset-assert 544) (move-dest vector :inline :offset-assert 560) (frustration-time time-frame :offset-assert 576) ;; time-frame (blocked-start-time time-frame :offset-assert 584) @@ -32386,51 +32460,51 @@ :size-assert #x25c :flag-assert #xb201e0025c (:methods - (nav-enemy-method-137 () none 137) - (nav-enemy-method-138 () none 138) - (nav-enemy-method-139 () none 139) - (nav-enemy-method-140 () none 140) - (nav-enemy-method-141 () none 141) - (nav-enemy-method-142 () none 142) - (nav-enemy-method-143 () none 143) - (nav-enemy-method-144 () none 144) - (nav-enemy-method-145 () none 145) - (nav-enemy-method-146 () none 146) - (nav-enemy-method-147 () none 147) - (nav-enemy-method-148 () none 148) - (nav-enemy-method-149 () none 149) - (nav-enemy-method-150 () none 150) - (nav-enemy-method-151 () none 151) - (nav-enemy-method-152 () none 152) - (nav-enemy-method-153 () none 153) - (nav-enemy-method-154 () none 154) - (nav-enemy-method-155 () none 155) - (nav-enemy-method-156 () none 156) - (nav-enemy-method-157 () none 157) - (nav-enemy-method-158 () none 158) - (nav-enemy-method-159 () none 159) - (nav-enemy-method-160 () none 160) - (nav-enemy-method-161 () none 161) - (nav-enemy-method-162 () none 162) - (nav-enemy-method-163 () none 163) - (nav-enemy-method-164 () none 164) - (nav-enemy-method-165 () none 165) - (nav-enemy-method-166 () none 166) - (nav-enemy-method-167 () none 167) - (nav-enemy-method-168 () none 168) - (nav-enemy-method-169 () none 169) - (nav-enemy-method-170 () none 170) - (nav-enemy-method-171 () none 171) - (nav-enemy-method-172 () none 172) - (nav-enemy-method-173 () none 173) - (nav-enemy-method-174 () none 174) - (nav-enemy-method-175 () none 175) - (nav-enemy-method-176 () none 176) - (nav-enemy-method-177 () none 177) + (enemy-method-113 (_type_ nav-enemy-info) none :replace 113) + (taunt () _type_ :state 137) + (pacing () _type_ :state 138) + (circling () _type_ :state 139) + (stop-chase () _type_ :state 140) + (debug-control () _type_ :state 141) + (nav-enemy-method-142 (_type_ nav-control) none 142) + (nav-enemy-method-143 (_type_ nav-control) none 143) + (nav-enemy-method-144 (_type_) time-frame :behavior nav-enemy 144) + (nav-enemy-method-145 (_type_ nav-control) none 145) + (nav-enemy-method-146 (_type_ nav-control) none 146) + (nav-enemy-method-147 (_type_ nav-control) none 147) + (nav-enemy-method-148 (_type_ nav-control) none 148) + (nav-enemy-method-149 (_type_ nav-control) none 149) + (nav-enemy-method-150 (_type_ nav-control) none 150) + (nav-enemy-method-151 (_type_ nav-control) none 151) + (nav-enemy-method-152 (_type_ nav-control) none 152) + (nav-enemy-method-153 (_type_ nav-control) none 153) + (nav-enemy-method-154 (_type_ nav-control) none 154) + (nav-enemy-method-155 (_type_) none 155) + (nav-enemy-method-156 (_type_) none 156) + (nav-enemy-method-157 (_type_ vector) nav-poly 157) + (nav-enemy-method-158 (_type_ vector) object 158) + (nav-enemy-method-159 (_type_ vector) symbol 159) + (nav-enemy-method-160 (_type_) none 160) + (nav-enemy-method-161 (_type_) none 161) + (nav-enemy-method-162 (_type_) none 162) + (nav-enemy-method-163 (_type_) none 163) + (nav-enemy-method-164 (_type_) none 164) + (nav-enemy-method-165 (_type_) none 165) + (nav-enemy-method-166 (_type_) none 166) + (nav-enemy-method-167 (_type_) none 167) + (nav-enemy-method-168 (_type_) float 168) + (nav-enemy-method-169 (_type_ float symbol) float 169) + (nav-enemy-method-170 (_type_) none 170) + (nav-enemy-method-171 (_type_) none 171) + (nav-enemy-method-172 (_type_) none 172) + (nav-enemy-method-173 (_type_) none 173) + (nav-enemy-method-174 (_type_) symbol 174) + (nav-enemy-method-175 (_type_) symbol 175) + (nav-enemy-method-176 (_type_) none :behavior nav-enemy 176) + (nav-enemy-method-177 (_type_) none 177) ) ) -#| (deftype nav-enemy-debug-control-info (basic) ((enable basic :offset-assert 4) (steering float :offset-assert 8) @@ -32440,8 +32514,6 @@ :size-assert #x10 :flag-assert #x900000010 ) -|# - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; rigid-body-h ;; @@ -32752,36 +32824,36 @@ ;; enemy ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *enemy-dummy-shadow-control* shadow-control) +(define-extern *enemy-dummy-shadow-control* shadow-control) (define-extern get-penetrate-using-from-attack-event (function process-drawable event-message-block penetrate)) -;; (define-extern enemy-init-by-other function) -;; (define-extern enemy-event-handler function) -;; (define-extern enemy-simple-post function) -;; (define-extern enemy-falling-post function) -;; (define-extern enemy-die-falling-post function) -;; (define-extern ja-group-index? function) ;; (function int symbol :behavior nav-enemy) +(define-extern enemy-init-by-other (function none :behavior enemy)) +(define-extern enemy-event-handler (function process int symbol event-message-block object :behavior enemy)) +(define-extern enemy-simple-post (function none :behavior enemy)) +(define-extern enemy-falling-post (function none :behavior enemy)) +(define-extern enemy-die-falling-post (function none :behavior enemy)) +(define-extern ja-group-index? (function int symbol :behavior enemy)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; nav-enemy ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *nav-enemy-dummy-shadow-control* shadow-control) ;; shadow-control -;; (define-extern *nav-enemy-null-callback-info* object) -;; (define-extern *nav-enemy-callback-info* object) -;; (define-extern *nav-enemy-physics-callback-info* object) -;; (define-extern nav-enemy-simple-post function) ;; (function none :behavior nav-enemy) -;; (define-extern nav-enemy-die-falling-post function) -;; (define-extern nav-enemy-travel-post function) ;; (function none :behavior nav-enemy) -;; (define-extern nav-enemy-patrol-post function) ;; (function none :behavior nav-enemy) -;; (define-extern nav-enemy-chase-post function) ;; (function none :behavior nav-enemy) -;; (define-extern nav-enemy-flee-post function) ;; (function none :behavior nav-enemy) -;; (define-extern nav-enemy-face-focus-post function) -;; (define-extern nav-enemy-stare-post function) -;; (define-extern nav-enemy-falling-post function) ;; (function none :behavior nav-enemy) -;; (define-extern nav-enemy-turn-to-face-dir function) ;; (function vector float none :behavior nav-enemy) -;; (define-extern nav-enemy-turn-to-face-point function) ;; (function vector float none :behavior nav-enemy) -;; (define-extern *nav-enemy-debug-control-info* nav-enemy-debug-control-info) -;; (define-extern nav-enemy-debug-control-post function) +(define-extern *nav-enemy-dummy-shadow-control* shadow-control) ;; shadow-control +(define-extern *nav-enemy-null-callback-info* nav-callback-info) +(define-extern *nav-enemy-callback-info* nav-callback-info) +(define-extern *nav-enemy-physics-callback-info* nav-callback-info) +(define-extern nav-enemy-simple-post (function none :behavior nav-enemy)) ;; +(define-extern nav-enemy-die-falling-post (function none :behavior nav-enemy)) +(define-extern nav-enemy-travel-post (function none :behavior nav-enemy)) ;; (function none :behavior nav-enemy) +(define-extern nav-enemy-patrol-post (function none :behavior nav-enemy)) ;; (function none :behavior nav-enemy) +(define-extern nav-enemy-chase-post (function none :behavior nav-enemy)) ;; (function none :behavior nav-enemy) +(define-extern nav-enemy-flee-post (function none :behavior nav-enemy)) ;; (function none :behavior nav-enemy) +(define-extern nav-enemy-face-focus-post (function none :behavior nav-enemy)) +(define-extern nav-enemy-stare-post (function none :behavior nav-enemy)) +(define-extern nav-enemy-falling-post (function none :behavior nav-enemy)) ;; (function none :behavior nav-enemy) +(define-extern nav-enemy-turn-to-face-dir (function vector float none :behavior nav-enemy)) ;; +(define-extern nav-enemy-turn-to-face-point (function vector float none :behavior nav-enemy)) ;; +(define-extern *nav-enemy-debug-control-info* nav-enemy-debug-control-info) +(define-extern nav-enemy-debug-control-post (function none :behavior nav-enemy)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; base-plat ;; @@ -34310,57 +34382,61 @@ ;; ctysluma-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| -(deftype ctysluma-part (UNKNOWN) +(deftype ctysluma-part (part-spawner) () - :method-count-assert 0 - :size-assert #x0 - :flag-assert #x0 - ;; Failed to read fields. + :method-count-assert 16 + :size-assert #xb0 + :flag-assert #x10003000b0 ) -|# -;; (define-extern check-drop-level-ctysluma-drop-userdata function) +(define-extern check-drop-level-ctysluma-drop-userdata (function sparticle-system sparticle-cpuinfo vector none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; neon-baron-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| -(deftype neon-baron (UNKNOWN) - () - :method-count-assert 0 - :size-assert #x0 - :flag-assert #x0 - ;; Failed to read fields. +(deftype neon-baron (process) + ( + (flags int64 :offset-assert 128) + (master-enable int64 :offset-assert 136) + (mode int64 :offset-assert 144) + (sign symbol :offset-assert 152) + (parts basic 1 :offset-assert 156) + (state-time time-frame :offset-assert 160) + (mat matrix :inline :offset-assert 176) ) -|# - -#| -(deftype hide-door-a (UNKNOWN) - () - :method-count-assert 0 - :size-assert #x0 - :flag-assert #x0 - ;; Failed to read fields. + :method-count-assert 17 + :size-assert #xf0 + :flag-assert #x11007000f0 + (:methods + (idle () _type_ :state 14) + (neon-baron-method-15 () none 15) + (neon-baron-method-16 () none 16) + ) ) -|# -;; (define-extern *baron-neon-skull* array) -;; (define-extern *city-baron-group-ids* array) -;; (define-extern *neon-baron-flashing-acc* object) +(deftype hide-door-a (com-airlock) + () + :method-count-assert 28 + :size-assert #x174 + :flag-assert #x1c01000174 + ) + +(define-extern *baron-neon-skull* (array object)) +(define-extern *city-baron-group-ids* (array int32)) +;; (define-extern *neon-baron-flashing-acc* (pointer int32)) TODO - https://github.com/open-goal/jak-project/issues/1982 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; palace-ocean ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *ocean-spheres-palace* object) -;; (define-extern *ocean-colors-palace* object) -;; (define-extern *ocean-near-indices-palace* ocean-near-indices) -;; (define-extern *ocean-trans-indices-palace* ocean-trans-indices) -;; (define-extern *ocean-mid-indices-palace* ocean-mid-indices) -;; (define-extern *ocean-mid-masks-palace* ocean-mid-masks) -;; (define-extern *ocean-map-palace* object) +(define-extern *ocean-spheres-palace* ocean-spheres) +(define-extern *ocean-colors-palace* ocean-colors) +(define-extern *ocean-near-indices-palace* ocean-near-indices) +(define-extern *ocean-trans-indices-palace* ocean-trans-indices) +(define-extern *ocean-mid-indices-palace* ocean-mid-indices) +(define-extern *ocean-mid-masks-palace* ocean-mid-masks) +(define-extern *ocean-map-palace* ocean-map) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; race-h ;; @@ -36359,21 +36435,20 @@ ) |# -#| (deftype predator (nav-enemy) - ((los los-control :inline :offset-assert 604) - (want-stop basic :offset-assert 752) - (target-pos vector :inline :offset-assert 764) - (curr-node int32 :offset-assert 780) - (hide-pos vector :inline :offset-assert 796) - (next-change uint64 :offset-assert 812) - (shoot-angle float :offset-assert 820) - (miss-amount float :offset-assert 824) - (ambient-sound-id uint32 :offset-assert 828) - (shock-effect-time time-frame :offset-assert 836) - (shock-effect-end uint64 :offset-assert 844) - (fade float :offset-assert 852) - (dest-fade float :offset-assert 856) + ((los los-control :inline :offset-assert 608) + (want-stop basic :offset-assert 756) + (target-pos vector :inline :offset-assert 768) + (curr-node int32 :offset-assert 784) + (hide-pos vector :inline :offset-assert 800) + (next-change uint64 :offset-assert 816) + (shoot-angle float :offset-assert 824) + (miss-amount float :offset-assert 828) + (ambient-sound-id uint32 :offset-assert 832) + (shock-effect-time time-frame :offset-assert 840) + (shock-effect-end uint64 :offset-assert 848) + (fade float :offset-assert 856) + (dest-fade float :offset-assert 860) ) :method-count-assert 189 :size-assert #x360 @@ -36392,7 +36467,6 @@ (predator-method-188 () none 188) ) ) -|# #| (deftype predator-manager (process) @@ -37003,7 +37077,6 @@ ;; grenadier ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype bank-info (structure) ((circle sphere :inline :offset-assert 0) (tangent-pos vector :inline :offset-assert 16) @@ -37014,19 +37087,17 @@ :size-assert #x40 :flag-assert #x900000040 ) -|# -#| (deftype grenadier (nav-enemy) - ((shot-trajectory trajectory :inline :offset-assert 604) - (hostile-path basic :offset-assert 644) - (bank bank-info :inline :offset-assert 652) - (joint basic :offset-assert 716) - (heading basic :offset-assert 720) - (move-pos vector :inline :offset-assert 732) - (move-angle float :offset-assert 748) - (status-flags uint64 :offset-assert 756) - (suppress-knockaside-timer uint64 :offset-assert 764) + ((shot-trajectory trajectory :inline :offset-assert 608) + (hostile-path path-control :offset-assert 648) + (bank bank-info :inline :offset-assert 656) + (joint joint-mod-blend-world :offset-assert 720) + (heading basic :offset-assert 724) + (move-pos vector :inline :offset-assert 736) + (move-angle float :offset-assert 752) + (status-flags uint64 :offset-assert 760) + (suppress-knockaside-timer uint64 :offset-assert 768) ) :method-count-assert 184 :size-assert #x308 @@ -37040,7 +37111,6 @@ (grenadier-method-183 () none 183) ) ) -|# ;; (define-extern *grenadier-nav-enemy-info* nav-enemy-info) ;; (define-extern pos-rotate-y<-vector+vector function) diff --git a/decompiler/config/jak2/anonymous_function_types.jsonc b/decompiler/config/jak2/anonymous_function_types.jsonc index 4a8c09ab7f..4c6339fdde 100644 --- a/decompiler/config/jak2/anonymous_function_types.jsonc +++ b/decompiler/config/jak2/anonymous_function_types.jsonc @@ -418,5 +418,19 @@ "target-gun": [ [22, "(function surface object object int object :behavior target)"] ], - "scene": [[4, "(function symbol :behavior scene-player)"]] + "scene": [[4, "(function symbol :behavior scene-player)"]], + "enemy": [[37, "(function enemy-jump-info none :behavior enemy)"]], + "nav-enemy": [ + [7, "(function enemy-jump-info none :behavior nav-enemy)"], + [84, "(function object nav-control none)"], + [85, "(function object nav-control none)"], + [86, "(function object nav-control none)"], + [87, "(function object nav-control none)"], + [88, "(function object nav-control none)"], + [89, "(function object nav-control none)"], + [90, "(function object nav-control none)"], + [91, "(function object nav-control none)"], + [92, "(function object nav-control none)"], + [93, "(function object nav-control none)"] + ] } diff --git a/decompiler/config/jak2/hacks.jsonc b/decompiler/config/jak2/hacks.jsonc index ee13fca774..f27c6c1741 100644 --- a/decompiler/config/jak2/hacks.jsonc +++ b/decompiler/config/jak2/hacks.jsonc @@ -50,7 +50,6 @@ "anim-test-sequence-list-handler", "anim-tester-get-playing-item", "(method 58 nav-graph-editor)", - "(method 120 enemy)", "start-pilot-recorder", "(anon-function 10 pilot-recorder)", "(method 0 hover-nav-control)", @@ -124,7 +123,6 @@ "(method 10 effect-control)", "(method 10 bigmap)", "(method 9 editable-region)", // condition branch assert hit - "(method 57 enemy)", "(anon-function 10 meet-brutter)", "(method 154 vehicle-racer)", "(method 188 predator)", diff --git a/decompiler/config/jak2/inputs.jsonc b/decompiler/config/jak2/inputs.jsonc index 100d2135a8..58e2437f4e 100644 --- a/decompiler/config/jak2/inputs.jsonc +++ b/decompiler/config/jak2/inputs.jsonc @@ -14,9 +14,9 @@ "CGO/GAME.CGO", "CGO/COMMON.CGO", // "DGO/LWIDEB.DGO", - // "DGO/LMEETBRT.DGO", + "DGO/LMEETBRT.DGO", "DGO/CTA.DGO", - // "DGO/PALOUT.DGO", + "DGO/PALOUT.DGO", "DGO/STD.DGO", // "DGO/FOR.DGO", // "DGO/CASEXT.DGO", diff --git a/decompiler/config/jak2/label_types.jsonc b/decompiler/config/jak2/label_types.jsonc index c71b1810f0..3c7f9ebb5d 100644 --- a/decompiler/config/jak2/label_types.jsonc +++ b/decompiler/config/jak2/label_types.jsonc @@ -189,6 +189,7 @@ ["L896", "uint64", true], ["L897", "uint64", true] ], + "nav-mesh": [["L347", "(inline-array vector)", 2]], // far label crap "game-info": [ ["L406", "uint64", true], @@ -438,5 +439,26 @@ "fma-sphere": [["L43", "attack-info"]], "process-taskable": [["L105", "attack-info"]], "nav-mesh": [["L347", "(inline-array vector)", 2]], - "gun-red-shot": [["L78", "attack-info"]] + "gun-red-shot": [["L78", "attack-info"]], + "neon-baron-part": [ + ["L604", "uint64", true], + ["L605", "uint64", true] + ], + "ctysluma-part": [["L176", "uint64", true]], + "enemy": [ + ["L759", "attack-info"], + ["L765", "uint64", true], + ["L766", "uint64", true], + ["L763", "uint64", true], + ["L764", "uint64", true] + ], + "nav-enemy": [ + ["L498", "uint64", true], + ["L499", "uint64", true], + ["L500", "uint64", true], + ["L501", "uint64", true], + ["L502", "uint64", true], + ["L503", "uint64", true], + ["L504", "uint64", true] + ] } diff --git a/decompiler/config/jak2/stack_structures.jsonc b/decompiler/config/jak2/stack_structures.jsonc index 07b05856ae..45bcc36f66 100644 --- a/decompiler/config/jak2/stack_structures.jsonc +++ b/decompiler/config/jak2/stack_structures.jsonc @@ -1054,5 +1054,47 @@ "(method 26 gun-red-shot)": [[16, "vector"]], "(method 28 gun-red-shot)": [[16, "collide-query"]], "(method 24 gun-red-shot)": [[16, "collide-query"]], - "target-gun-fire-dark": [[16, "collide-query"]] + "target-gun-fire-dark": [[16, "collide-query"]], + "(method 52 nav-state)": [ + [16, "nav-avoid-spheres-params"], + [112, "nav-ray"] + ], + "(method 31 nav-state)": [ + [16, "nav-avoid-spheres-params"], + [112, "nav-ray"] + ], + "(method 24 nav-state)": [[16, "vector"]], + "(method 34 nav-state)": [[16, "vector"]], + "(method 9 nav-control)": [[16, "vector"]], + "(method 37 nav-state)": [[16, "vector"]], + "(method 33 nav-state)": [[16, "clamp-travel-vector-to-mesh-return-info"]], + "(method 32 nav-state)": [ + [16, "check-vector-collision-with-nav-spheres-info"] + ], + "(method 28 nav-state)": [[208, "vector"]], + "(method 11 nav-state)": [ + [16, "vector"], + [32, "vector"] + ], + "(method 49 nav-state)": [[16, "nav-ray"]], + "check-drop-level-ctysluma-drop-userdata": [[16, "vector"]], + "(method 54 enemy)": [[80, "vector"]], + "enemy-falling-post": [[16, "vector"]], + "enemy-die-falling-post": [[16, "vector"]], + "(method 100 enemy)": [ + [672, "vector"], + [688, "vector"] + ], + "(method 102 nav-enemy)": [[32, "collide-query"]], + "(method 100 nav-enemy)": [ + [672, "vector"], + [688, "vector"] + ], + "(method 176 nav-enemy)": [[16, "nav-gap-info"]], + "(method 143 nav-enemy)": [[16, "vector"]], + "(code jump nav-enemy)": [[16, "enemy-jump-info"]], + "(method 145 nav-enemy)": [[16, "vector"]], + "(method 150 nav-enemy)": [[16, "vector"]], + "(anon-function 88 nav-enemy)": [[16, "vector"]], + "(anon-function 93 nav-enemy)": [[16, "vector"]] } diff --git a/decompiler/config/jak2/type_casts.jsonc b/decompiler/config/jak2/type_casts.jsonc index 8dc884b4a5..ed1d9f0a16 100644 --- a/decompiler/config/jak2/type_casts.jsonc +++ b/decompiler/config/jak2/type_casts.jsonc @@ -3201,6 +3201,10 @@ [13, "a0", "fact-info-crate"], [55, "v0", "float"] ], + "(method 0 carry-info)": [ + [44, "v1", "collide-shape-moving"], + [47, "v1", "collide-shape-moving"] + ], "crate-standard-event-handler": [ [14, "v1", "attack-info"], [15, "v1", "attack-info"], @@ -3476,14 +3480,50 @@ ], "(code notice-blue crate)": [ [19, "v1", "process-drawable"], + [21, "gp", "collide-shape-moving"], + [28, "a0", "collide-shape-moving"], [30, "v1", "collide-shape-moving"] ], - "(trans fall crate)": [[6, "v1", "float"]], + "(post fall crate)": [ + [4, "a0", "collide-shape-moving"], + [15, "v1", "collide-shape-moving"], + [26, "v1", "collide-shape-moving"], + [[34, 53], "gp", "collide-shape-moving"] + ], + "(trans fall crate)": [ + [1, "v1", "collide-shape-moving"], + [6, "v1", "float"], + [8, "v1", "collide-shape-moving"], + [24, "v1", "collide-shape-moving"], + [32, "v1", "collide-shape-moving"], + [34, "a0", "collide-shape-moving"], + [37, "a0", "collide-shape-moving"] + ], + "(enter fall crate)": [ + [35, "v0", "carry-info"], + [42, "v1", "collide-shape-moving"], + [46, "v1", "collide-shape-moving"], + [50, "a0", "collide-shape-moving"], + [54, "v1", "collide-shape-moving"] + ], + "(post carry crate)": [[[13, 16], "a0", "collide-shape-moving"]], "(event carry crate)": [[15, "a0", "vector"]], + "(code idle crate)": [[[2, 5], "a0", "collide-shape-moving"]], + "(code hide crate)": [ + [27, "v1", "collide-shape-moving"], + [95, "v1", "collide-shape-moving"], + [97, "a0", "collide-shape-moving"], + [100, "a0", "collide-shape-moving"] + ], + "(code special-contents-die crate)": [[42, "v1", "collide-shape-moving"]], "target-send-attack": [ ["_stack_", 96, "symbol"], [16, "s4", "process-focusable"] ], + "(method 36 crate)": [ + [6, "a0", "collide-shape-moving"], + [27, "a0", "collide-shape-moving"] + ], "camera-rotate-to-vector": [[63, "v1", "float"]], "target-gun-find-track": [ [182, "v0", "process-focusable"], @@ -3667,6 +3707,14 @@ [[37, 44], "s5", "(array scene)"], [83, "v0", "(array scene)"] ], + "connection-list-validate": [[5, "gp", "connection"]], + "point-poly-distance-min": [[94, "f0", "float"]], + "(method 42 nav-mesh)": [ + [12, "s4", "grid-hash-box"], + [59, "s4", "grid-hash-box"] + ], + "(method 26 nav-mesh)": [[[23, 78], "s4", "nav-engine"]], + "compute-dir-parm": [[10, "v1", "float"]], "(trans idle fma-sphere)": [[39, "a2", "process-drawable"]], "(method 10 talker)": [[29, "t9", "(function process none)"]], "(exit active talker)": [[19, "s5", "process-drawable"]], @@ -3861,5 +3909,54 @@ [60, "a0", "collide-shape"] ], "cshape-reaction-blue-shot": [[15, "v1", "gun-blue-shot"]], - "(enter fall crate)": [[[35, 40], "a0", "carry-info"]] + "(enter fall crate)": [[[35, 40], "a0", "carry-info"]], + "(method 10 idle-control)": [[64, "v1", "art-joint-anim"]], + "(method 136 enemy)": [[34, "a1", "process-focusable"]], + "(method 107 enemy)": [[17, "v0", "process-focusable"]], + "(method 96 enemy)": [[16, "a0", "process-focusable"]], + "(method 129 enemy)": [[18, "a1", "process-focusable"]], + "(method 97 enemy)": [[16, "v1", "connection"]], + "(method 75 enemy)": [[9, "s2", "process-focusable"]], + "(code notice enemy)": [[31, "v1", "art-joint-anim"]], + "(code stare enemy)": [[23, "gp", "art-joint-anim"]], + "(code victory enemy)": [[30, "v1", "art-joint-anim"]], + "(method 88 enemy)": [[28, "a1", "art-joint-anim"]], + "(code hit enemy)": [[30, "v1", "art-joint-anim"]], + "(method 51 enemy)": [[27, "a0", "process-focusable"]], + "(method 78 enemy)": [[11, "v1", "art-joint-anim"]], + "(code die enemy)": [[30, "v1", "art-joint-anim"]], + "(code die-falling enemy)": [[32, "gp", "art-joint-anim"]], + "(code view-anims enemy)": [[20, "s4", "art-joint-anim"]], + "(method 7 enemy)": [ + [14, "t9", "(function process-focusable int process-focusable)"] + ], + "nav-enemy-chase-post": [[15, "a0", "process-focusable"]], + "nav-enemy-flee-post": [[16, "a0", "process-focusable"]], + "nav-enemy-face-focus-post": [[24, "a0", "process-focusable"]], + "nav-enemy-stare-post": [[24, "a0", "process-focusable"]], + "(code active nav-enemy)": [ + [30, "v1", "art-joint-anim"], + [127, "v1", "art-joint-anim"], + [189, "v1", "art-joint-anim"], + [298, "v1", "art-joint-anim"] + ], + "(enter notice nav-enemy)": [[21, "a0", "process-focusable"]], + "(code notice nav-enemy)": [[31, "v1", "art-joint-anim"]], + "(code stare nav-enemy)": [[23, "gp", "art-joint-anim"]], + "(enter taunt nav-enemy)": [[37, "gp", "process-focusable"]], + "(code taunt nav-enemy)": [[84, "v1", "art-joint-anim"]], + "(enter pacing nav-enemy)": [[103, "gp", "process-focusable"]], + "(trans pacing nav-enemy)": [[14, "a0", "process-focusable"]], + "(code pacing nav-enemy)": [[34, "gp", "art-joint-anim"]], + "(enter circling nav-enemy)": [[69, "gp", "process-focusable"]], + "(trans circling nav-enemy)": [[14, "a0", "process-focusable"]], + "(code circling nav-enemy)": [[34, "gp", "art-joint-anim"]], + "(code hit nav-enemy)": [[30, "v1", "art-joint-anim"]], + "(code debug-control nav-enemy)": [[28, "v1", "art-joint-anim"]], + "(method 55 nav-enemy)": [[[74, 78], "a0", "process-focusable"]], + "(method 161 nav-enemy)": [[22, "v1", "process-focusable"]], + "(method 160 nav-enemy)": [ + [19, "a0", "process-focusable"], + [35, "s5", "process-focusable"] + ] } diff --git a/decompiler/config/jak2/var_names.jsonc b/decompiler/config/jak2/var_names.jsonc index 7d8e144c53..d2290e1566 100644 --- a/decompiler/config/jak2/var_names.jsonc +++ b/decompiler/config/jak2/var_names.jsonc @@ -2033,5 +2033,34 @@ }, "(method 13 los-control)": { "args": ["obj", "proc", "check-interval", "c-spec"] + }, + "(method 9 enemy-info)": { + "args": ["obj", "obj-to-copy"] + }, + "(method 119 enemy)": { + "args": ["obj", "high"] + }, + "(method 118 enemy)": { + "args": ["obj", "low", "high"] + }, + "(method 121 enemy)": { + "args": ["obj", "low", "high"] + }, + "(method 122 enemy)": { + "args": ["obj", "chance"] + }, + "(method 12 enemy)": { + "vars": { + "gp-0": "draw" + } + }, + "(method 53 enemy)": { + "args": ["obj", "proc-focus"] + }, + "(method 10 nav-enemy-info)": { + "args": ["obj", "obj-to-copy"] + }, + "(method 44 nav-state)": { + "args": ["obj", "velocity"] } } diff --git a/decompiler/config/jak2_ntsc_v1.jsonc b/decompiler/config/jak2_ntsc_v1.jsonc index ab2695a415..a553e0fd63 100644 --- a/decompiler/config/jak2_ntsc_v1.jsonc +++ b/decompiler/config/jak2_ntsc_v1.jsonc @@ -7,7 +7,7 @@ // if you want to filter to only some object names. // it will make the decompiler much faster. - "allowed_objects": [], + "allowed_objects": ["nav-enemy"], "banned_objects": ["effect-control", "ctywide-scenes", "texture-anim-tables", "traffic-engine"], //////////////////////////// diff --git a/goal_src/jak2/engine/ai/enemy-h.gc b/goal_src/jak2/engine/ai/enemy-h.gc index dcdf065624..bac8fae6e1 100644 --- a/goal_src/jak2/engine/ai/enemy-h.gc +++ b/goal_src/jak2/engine/ai/enemy-h.gc @@ -7,8 +7,7 @@ (define-extern get-penetrate-using-from-attack-event (function process-drawable event-message-block penetrate)) -;; DECOMP BEGINS - +;; +++enemy-flag (defenum enemy-flag :type int64 :bitfield #t @@ -48,322 +47,422 @@ (vulnerable-backup 33) (vulnerable 34) (recover 35) + (enemy-flag36 36) + (enemy-flag37 37) + (enemy-flag38 38) + (enemy-flag39 39) + (enemy-flag40 40) + (enemy-flag41 41) + (enemy-flag42 42) + (enemy-flag43 43) ) +;; ---enemy-flag + + +;; +++enemy-aware +(defenum enemy-aware + :type uint64 + (enemy-aware-0 0) + (enemy-aware-2 2) + (enemy-aware-3 3) + (enemy-aware-4 4) + ) +;; ---enemy-aware + + +;; +++knocked-type +(defenum knocked-type + :type uint8 + (knocked-type-1 1) + (knocked-type-2 2) + (knocked-type-3 3) + (knocked-type-4 4) + (knocked-type-5 5) + (knocked-type-6 6) + (knocked-type-7 7) + ) +;; ---knocked-type + +(declare-type enemy process-focusable) + +;; DECOMP BEGINS (deftype enemy-focus (focus) - ((aware uint64 :offset-assert 16) - (flags uint64 :offset-assert 24) + ((aware enemy-aware :offset-assert 16) + (flags enemy-flag :offset-assert 24) ) :method-count-assert 14 :size-assert #x20 :flag-assert #xe00000020 (:methods - (enemy-focus-method-13 () none 13) + (try-update-focus (_type_ process-focusable enemy) symbol :replace 12) + (enemy-focus-method-13 (_type_ process-focusable enemy-aware) symbol 13) ) ) + (deftype enemy-info (basic) - ((fact-defaults basic :offset-assert 4) - (use-die-falling basic :offset-assert 8) - (use-victory basic :offset-assert 12) - (use-jump-blocked basic :offset-assert 16) - (debug-draw-neck basic :offset-assert 20) - (jump-debug-draw basic :offset-assert 24) - (move-to-ground basic :offset-assert 28) - (hover-if-no-ground basic :offset-assert 32) - (idle-anim-script uint32 :offset-assert 36) - (idle-anim int32 :offset-assert 40) - (notice-anim int32 :offset-assert 44) - (hostile-anim int32 :offset-assert 48) - (hit-anim int32 :offset-assert 52) - (knocked-anim int32 :offset-assert 56) - (knocked-land-anim int32 :offset-assert 60) - (die-anim int32 :offset-assert 64) - (die-falling-anim int32 :offset-assert 68) - (victory-anim int32 :offset-assert 72) - (jump-wind-up-anim int32 :offset-assert 76) - (jump-in-air-anim int32 :offset-assert 80) - (jump-land-anim int32 :offset-assert 84) - (neck-joint int32 :offset-assert 88) - (look-at-joint int32 :offset-assert 92) - (bullseye-joint int32 :offset-assert 96) - (sound-hit uint128 :offset-assert 112) - (sound-die uint128 :offset-assert 128) - (notice-distance meters :offset-assert 144) - (notice-distance-delta meters :offset-assert 148) - (proximity-notice-distance meters :offset-assert 152) - (default-hit-points int32 :offset-assert 156) - (gnd-collide-with uint32 :offset-assert 160) - (overlaps-others-collide-with-filter uint32 :offset-assert 164) - (penetrate-flinch uint64 :offset-assert 168) - (penetrate-knocked uint64 :offset-assert 176) - (movement-gravity meters :offset-assert 184) - (friction float :offset-assert 188) - (slip-factor float :offset-assert 192) - (attack-shove-back meters :offset-assert 196) - (attack-shove-up meters :offset-assert 200) - (attack-mode basic :offset-assert 204) - (attack-damage int32 :offset-assert 208) - (recover-gnd-collide-with uint32 :offset-assert 212) - (jump-height-min meters :offset-assert 216) - (jump-height-factor float :offset-assert 220) - (knocked-seek-ry-clamp float :offset-assert 224) - (knocked-soft-vxz-lo float :offset-assert 228) - (knocked-soft-vxz-hi float :offset-assert 232) - (knocked-soft-vy-lo float :offset-assert 236) - (knocked-soft-vy-hi float :offset-assert 240) - (knocked-medium-vxz-lo float :offset-assert 244) - (knocked-medium-vxz-hi float :offset-assert 248) - (knocked-medium-vy-lo float :offset-assert 252) - (knocked-medium-vy-hi float :offset-assert 256) - (knocked-hard-vxz-lo float :offset-assert 260) - (knocked-hard-vxz-hi float :offset-assert 264) - (knocked-hard-vy-lo float :offset-assert 268) - (knocked-hard-vy-hi float :offset-assert 272) - (knocked-huge-vxz-lo float :offset-assert 276) - (knocked-huge-vxz-hi float :offset-assert 280) - (knocked-huge-vy-lo float :offset-assert 284) - (knocked-huge-vy-hi float :offset-assert 288) - (knocked-yellow-vxz-lo float :offset-assert 292) - (knocked-yellow-vxz-hi float :offset-assert 296) - (knocked-yellow-vy-lo float :offset-assert 300) - (knocked-yellow-vy-hi float :offset-assert 304) - (knocked-red-vxz-lo float :offset-assert 308) - (knocked-red-vxz-hi float :offset-assert 312) - (knocked-red-vy-lo float :offset-assert 316) - (knocked-red-vy-hi float :offset-assert 320) - (knocked-blue-vxz-lo float :offset-assert 324) - (knocked-blue-vxz-hi float :offset-assert 328) - (knocked-blue-vy-lo float :offset-assert 332) - (knocked-blue-vy-hi float :offset-assert 336) - (shadow-size meters :offset-assert 340) - (shadow-max-y meters :offset-assert 344) - (shadow-min-y meters :offset-assert 348) - (shadow-locus-dist meters :offset-assert 352) - (gem-joint int32 :offset-assert 356) - (gem-seg uint32 :offset-assert 360) - (gem-no-seg uint32 :offset-assert 364) - (gem-offset sphere :inline :offset-assert 368) + ((fact-defaults basic :offset-assert 4) + (use-die-falling symbol :offset-assert 8) + (use-victory symbol :offset-assert 12) + (use-jump-blocked symbol :offset-assert 16) + (debug-draw-neck symbol :offset-assert 20) + (jump-debug-draw symbol :offset-assert 24) + (move-to-ground symbol :offset-assert 28) + (hover-if-no-ground symbol :offset-assert 32) + (idle-anim-script uint32 :offset-assert 36) + (idle-anim int32 :offset-assert 40) + (notice-anim int32 :offset-assert 44) + (hostile-anim int32 :offset-assert 48) + (hit-anim int32 :offset-assert 52) + (knocked-anim int32 :offset-assert 56) + (knocked-land-anim int32 :offset-assert 60) + (die-anim int32 :offset-assert 64) + (die-falling-anim int32 :offset-assert 68) + (victory-anim int32 :offset-assert 72) + (jump-wind-up-anim int32 :offset-assert 76) + (jump-in-air-anim int32 :offset-assert 80) + (jump-land-anim int32 :offset-assert 84) + (neck-joint int32 :offset-assert 88) + (look-at-joint int32 :offset-assert 92) + (bullseye-joint int32 :offset-assert 96) + (sound-hit uint128 :offset-assert 112) + (sound-die uint128 :offset-assert 128) + (notice-distance meters :offset-assert 144) + (notice-distance-delta meters :offset-assert 148) + (proximity-notice-distance meters :offset-assert 152) + (default-hit-points int32 :offset-assert 156) + (gnd-collide-with collide-spec :offset-assert 160) + (overlaps-others-collide-with-filter collide-spec :offset-assert 164) + (penetrate-flinch uint64 :offset-assert 168) + (penetrate-knocked uint64 :offset-assert 176) + (movement-gravity meters :offset-assert 184) + (friction float :offset-assert 188) + (slip-factor float :offset-assert 192) + (attack-shove-back meters :offset-assert 196) + (attack-shove-up meters :offset-assert 200) + (attack-mode basic :offset-assert 204) + (attack-damage int32 :offset-assert 208) + (recover-gnd-collide-with collide-spec :offset-assert 212) + (jump-height-min meters :offset-assert 216) + (jump-height-factor float :offset-assert 220) + (knocked-seek-ry-clamp float :offset-assert 224) + (knocked-soft-vxz-lo float :offset-assert 228) + (knocked-soft-vxz-hi float :offset-assert 232) + (knocked-soft-vy-lo float :offset-assert 236) + (knocked-soft-vy-hi float :offset-assert 240) + (knocked-medium-vxz-lo float :offset-assert 244) + (knocked-medium-vxz-hi float :offset-assert 248) + (knocked-medium-vy-lo float :offset-assert 252) + (knocked-medium-vy-hi float :offset-assert 256) + (knocked-hard-vxz-lo float :offset-assert 260) + (knocked-hard-vxz-hi float :offset-assert 264) + (knocked-hard-vy-lo float :offset-assert 268) + (knocked-hard-vy-hi float :offset-assert 272) + (knocked-huge-vxz-lo float :offset-assert 276) + (knocked-huge-vxz-hi float :offset-assert 280) + (knocked-huge-vy-lo float :offset-assert 284) + (knocked-huge-vy-hi float :offset-assert 288) + (knocked-yellow-vxz-lo float :offset-assert 292) + (knocked-yellow-vxz-hi float :offset-assert 296) + (knocked-yellow-vy-lo float :offset-assert 300) + (knocked-yellow-vy-hi float :offset-assert 304) + (knocked-red-vxz-lo float :offset-assert 308) + (knocked-red-vxz-hi float :offset-assert 312) + (knocked-red-vy-lo float :offset-assert 316) + (knocked-red-vy-hi float :offset-assert 320) + (knocked-blue-vxz-lo float :offset-assert 324) + (knocked-blue-vxz-hi float :offset-assert 328) + (knocked-blue-vy-lo float :offset-assert 332) + (knocked-blue-vy-hi float :offset-assert 336) + (shadow-size meters :offset-assert 340) + (shadow-max-y meters :offset-assert 344) + (shadow-min-y meters :offset-assert 348) + (shadow-locus-dist meters :offset-assert 352) + (gem-joint int32 :offset-assert 356) + (gem-seg uint32 :offset-assert 360) + (gem-no-seg uint32 :offset-assert 364) + (gem-offset sphere :inline :offset-assert 368) ) :method-count-assert 10 :size-assert #x180 :flag-assert #xa00000180 (:methods - (enemy-info-method-9 () none 9) + (copy-enemy-info! (_type_ _type_) none 9) ) ) + (deftype enemy-knocked-info (structure) - ((anim-speed float :offset-assert 0) - (on-surface-count int32 :offset-assert 4) - (move-count int32 :offset-assert 8) - (land-can-land-time time-frame :offset-assert 16) + ((anim-speed float :offset-assert 0) + (on-surface-count int32 :offset-assert 4) + (move-count int32 :offset-assert 8) + (land-can-land-time time-frame :offset-assert 16) ) :method-count-assert 9 :size-assert #x18 :flag-assert #x900000018 ) + (deftype enemy-jump-info (structure) - ((flags uint8 :offset-assert 0) - (anim-speed float :offset-assert 4) - (hang-time time-frame :offset-assert 8) - (start-pos vector :inline :offset-assert 16) - (dest-pos vector :inline :offset-assert 32) - (traj trajectory :inline :offset-assert 48) + ((flags uint8 :offset-assert 0) + (anim-speed float :offset-assert 4) + (hang-time time-frame :offset-assert 8) + (start-pos vector :inline :offset-assert 16) + (dest-pos vector :inline :offset-assert 32) + (traj trajectory :inline :offset-assert 48) ) :method-count-assert 9 :size-assert #x58 :flag-assert #x900000058 ) + (deftype enemy-init-by-other-params (structure) - ((trans vector :inline :offset-assert 0) - (quat quaternion :inline :offset-assert 16) - (entity basic :offset-assert 32) - (directed? basic :offset-assert 36) - (no-initial-move-to-ground? basic :offset-assert 40) + ((trans vector :inline :offset-assert 0) + (quat quaternion :inline :offset-assert 16) + (entity basic :offset-assert 32) + (directed? symbol :offset-assert 36) + (no-initial-move-to-ground? symbol :offset-assert 40) ) :method-count-assert 9 :size-assert #x2c :flag-assert #x90000002c ) + (deftype enemy-attack-info (structure) - ((attack-id uint32 :offset-assert 0) - (knocked-type uint8 :offset-assert 4) - (blue-juggle-count uint8 :offset-assert 5) - (attacker-handle uint64 :offset-assert 8) - (attack-time time-frame :offset-assert 16) - (penetrate-using uint64 :offset-assert 24) - (attacker-pos vector :inline :offset-assert 32) - (attack-direction vector :inline :offset-assert 48) + ((attack-id uint32 :offset-assert 0) + (knocked-type knocked-type :offset-assert 4) + (blue-juggle-count uint8 :offset-assert 5) + (attacker-handle handle :offset-assert 8) + (attack-time time-frame :offset-assert 16) + (penetrate-using uint64 :offset-assert 24) + (attacker-pos vector :inline :offset-assert 32) + (attack-direction vector :inline :offset-assert 48) ) :method-count-assert 9 :size-assert #x40 :flag-assert #x900000040 ) + (deftype enemy-best-focus (structure) - ((proc basic :offset-assert 0) - (rating float :offset-assert 4) - (aware uint64 :offset-assert 8) + ((proc basic :offset-assert 0) + (rating float :offset-assert 4) + (aware uint64 :offset-assert 8) ) :method-count-assert 9 :size-assert #x10 :flag-assert #x900000010 ) + (deftype enemy (process-focusable) - ((enemy-flags enemy-flag :offset-assert 208) - (enemy-info symbol :offset-assert 216) - (hit-points int32 :offset-assert 220) - (gnd-collide uint32 :offset-assert 224) - (attack-id uint32 :offset-assert 228) - (persistent-attack-id uint32 :offset-assert 232) - (water-max-height float :offset-assert 236) - (water-surface-height float :offset-assert 240) - (desired-angle float :offset-assert 244) - (jump-why uint64 :offset-assert 248) - (penetrated-by-all uint64 :offset-assert 256) - (penetrated-flinch uint64 :offset-assert 264) - (penetrated-knocked uint64 :offset-assert 272) - (reaction-time uint64 :offset-assert 280) - (notice-time uint64 :offset-assert 288) - (state-timeout uint64 :offset-assert 296) - (auto-reset-penetrate-time uint64 :offset-assert 304) - (hit-focus-time uint64 :offset-assert 312) - (last-draw-time uint64 :offset-assert 320) - (starting-time uint64 :offset-assert 328) - (fated-time uint64 :offset-assert 336) - (focus-pos vector :inline :offset-assert 352) - (event-param-point vector :inline :offset-assert 368) - (jump-dest vector :inline :offset 368) - (focus enemy-focus :inline :offset-assert 384) - (incoming enemy-attack-info :inline :offset-assert 416) - (actor-group actor-group :offset-assert 480) - (actor-group-count int32 :offset-assert 484) - (neck symbol :offset-assert 488) - (on-notice symbol :offset-assert 492) - (on-active symbol :offset-assert 496) - (on-hostile symbol :offset-assert 500) - (on-death symbol :offset-assert 504) - (idle-anim-player idle-control :inline :offset-assert 512) - (rand-gen symbol :offset-assert 528) - ) + ((fact-info-override fact-info-enemy :offset 160) + (enemy-flags enemy-flag :offset-assert 208) + (enemy-info enemy-info :offset-assert 216) + (hit-points int32 :offset-assert 220) + (gnd-collide uint32 :offset-assert 224) + (attack-id uint32 :offset-assert 228) + (persistent-attack-id uint32 :offset-assert 232) + (water-max-height meters :offset-assert 236) + (water-surface-height meters :offset-assert 240) + (desired-angle degrees :offset-assert 244) + (jump-why uint64 :offset-assert 248) + (penetrated-by-all penetrate :offset-assert 256) + (penetrated-flinch penetrate :offset-assert 264) + (penetrated-knocked penetrate :offset-assert 272) + (reaction-time uint64 :offset-assert 280) + (notice-time uint64 :offset-assert 288) + (state-timeout uint64 :offset-assert 296) + (auto-reset-penetrate-time uint64 :offset-assert 304) + (hit-focus-time uint64 :offset-assert 312) + (last-draw-time uint64 :offset-assert 320) + (starting-time uint64 :offset-assert 328) + (fated-time uint64 :offset-assert 336) + (focus-pos vector :inline :offset-assert 352) + (event-param-point vector :inline :offset-assert 368) + (jump-dest vector :inline :offset 368) + (focus enemy-focus :inline :offset-assert 384) + (incoming enemy-attack-info :inline :offset-assert 416) + (actor-group actor-group :offset-assert 480) + (actor-group-count int32 :offset-assert 484) + (neck joint-mod :offset-assert 488) + (on-notice symbol :offset-assert 492) + (on-active symbol :offset-assert 496) + (on-hostile symbol :offset-assert 500) + (on-death symbol :offset-assert 504) + (idle-anim-player idle-control :inline :offset-assert 512) + (rand-gen symbol :offset-assert 528) + ) + :heap-base #x1a0 :method-count-assert 137 :size-assert #x214 :flag-assert #x8901a00214 (:methods - (enemy-method-27 () none 27) - (enemy-method-28 () none 28) - (enemy-method-29 () none 29) - (enemy-method-30 () none 30) - (enemy-method-31 () none 31) - (enemy-method-32 () none 32) - (enemy-method-33 () none 33) - (enemy-method-34 () none 34) - (enemy-method-35 () none 35) - (enemy-method-36 () none 36) - (enemy-method-37 () none 37) - (enemy-method-38 () none 38) - (enemy-method-39 () none 39) - (enemy-method-40 () none 40) - (enemy-method-41 () none 41) - (enemy-method-42 () none 42) - (enemy-method-43 () none 43) - (enemy-method-44 () none 44) - (enemy-method-45 () none 45) - (enemy-method-46 () none 46) - (enemy-method-47 () none 47) - (enemy-method-48 () none 48) - (enemy-method-49 () none 49) - (enemy-method-50 () none 50) - (enemy-method-51 () none 51) - (enemy-method-52 () none 52) - (enemy-method-53 () none 53) - (enemy-method-54 () none 54) - (enemy-method-55 () none 55) - (enemy-method-56 () none 56) - (enemy-method-57 () none 57) - (enemy-method-58 () none 58) - (enemy-method-59 () none 59) - (enemy-method-60 () none 60) - (enemy-method-61 () none 61) - (enemy-method-62 () none 62) - (enemy-method-63 () none 63) - (enemy-method-64 () none 64) - (enemy-method-65 () none 65) - (enemy-method-66 () none 66) - (enemy-method-67 () none 67) - (enemy-method-68 () none 68) - (enemy-method-69 () none 69) - (enemy-method-70 () none 70) - (enemy-method-71 () none 71) - (enemy-method-72 () none 72) - (enemy-method-73 () none 73) - (enemy-method-74 () none 74) - (enemy-method-75 () none 75) - (enemy-method-76 () none 76) - (enemy-method-77 () none 77) - (enemy-method-78 () none 78) - (enemy-method-79 () none 79) - (enemy-method-80 () none 80) - (enemy-method-81 () none 81) - (enemy-method-82 () none 82) - (enemy-method-83 () none 83) - (enemy-method-84 () none 84) - (enemy-method-85 () none 85) - (enemy-method-86 () none 86) - (enemy-method-87 () none 87) - (enemy-method-88 () none 88) - (enemy-method-89 () none 89) - (enemy-method-90 () none 90) - (enemy-method-91 () none 91) - (enemy-method-92 () none 92) - (enemy-method-93 () none 93) - (enemy-method-94 () none 94) - (enemy-method-95 () none 95) - (enemy-method-96 () none 96) - (enemy-method-97 () none 97) - (enemy-method-98 () none 98) - (enemy-method-99 () none 99) - (enemy-method-100 () none 100) - (enemy-method-101 () none 101) - (enemy-method-102 () none 102) - (enemy-method-103 () none 103) - (enemy-method-104 () none 104) - (enemy-method-105 () none 105) - (enemy-method-106 () none 106) - (enemy-method-107 () none 107) - (enemy-method-108 () none 108) - (enemy-method-109 () none 109) - (enemy-method-110 () none 110) - (enemy-method-111 () none 111) - (enemy-method-112 () none 112) - (enemy-method-113 () none 113) - (enemy-method-114 () none 114) - (enemy-method-115 () none 115) - (enemy-method-116 () none 116) - (enemy-method-117 () none 117) - (enemy-method-118 () none 118) - (enemy-method-119 () none 119) - (enemy-method-120 () none 120) - (enemy-method-121 () none 121) - (enemy-method-122 () none 122) - (enemy-method-123 () none 123) - (enemy-method-124 () none 124) - (enemy-method-125 () none 125) - (enemy-method-126 () none 126) - (enemy-method-127 () none 127) - (enemy-method-128 () none 128) - (enemy-method-129 () none 129) - (enemy-method-130 () none 130) - (enemy-method-131 () none 131) - (enemy-method-132 () none 132) - (enemy-method-133 () none 133) - (enemy-method-134 () none 134) - (enemy-method-135 () none 135) - (enemy-method-136 () none 136) + (dormant () _type_ :state 27) + (dormant-aware () _type_ :state 28) + (hit () _type_ :state 29) + (knocked () _type_ :state 30) + (idle () _type_ :state 31) + (active () _type_ :state 32) + (notice () _type_ :state 33) + (flee () _type_ :state 34) + (stare () _type_ :state 35) + (hostile () _type_ :state 36) + (victory () _type_ :state 37) + (die () _type_ :state 38) + (die-falling () _type_ :state 39) + (die-fast () _type_ :state 40) + (directed () _type_ :state 41) + (jump () _type_ :state 42) + (jump-blocked () _type_ :state 43) + (ambush () _type_ :state 44) + (view-anims () _type_ :state 45) + (enemy-method-46 (_type_) none 46) + (enemy-method-47 (_type_ vector) float 47) + (enemy-method-48 (_type_) none 48) + (enemy-method-49 (_type_) time-frame :behavior enemy 49) + (enemy-method-50 (_type_ vector) vector 50) + (enemy-method-51 (_type_) float 51) + (enemy-method-52 (_type_ vector) none 52) + (enemy-method-53 (_type_ process-focusable) symbol 53) + (enemy-method-54 (_type_) enemy-flag 54) + (enemy-method-55 (_type_) none 55) + (enemy-method-56 (_type_ object enemy-attack-info) none 56) + (enemy-method-57 (_type_ process-focusable enemy-attack-info) none 57) + (enemy-method-58 (_type_) symbol 58) + (enemy-method-59 (_type_) penetrate 59) + (coin-flip? (_type_) symbol 60) + (enemy-method-61 (_type_ int) int :behavior enemy 61) + (enemy-method-62 (_type_) none 62) + (enemy-method-63 (_type_ process-focusable symbol) none 63) + (enemy-method-64 (_type_) none 64) + (enemy-method-65 (_type_) none 65) + (go-ambush (_type_) none 66) + (go-stare (_type_) none 67) + (go-stare2 (_type_) none 68) + (go-directed (_type_) none 69) + (go-hostile (_type_) none 70) + (go-flee (_type_) none 71) + (enemy-method-72 (_type_) none 72) + (enemy-method-73 (_type_) none 73) + (enemy-method-74 (_type_ object object symbol) none 74) + (enemy-method-75 (_type_ process touching-shapes-entry) none 75) + (enemy-method-76 (_type_) none 76) + (enemy-method-77 (_type_) none 77) + (enemy-method-78 (_type_) none 78) + (enemy-method-79 (_type_) none 79) + (enemy-method-80 (_type_) none 80) + (enemy-method-81 (_type_) symbol 81) + (enemy-method-82 (_type_ nav-poly) none 82) + (enemy-method-83 (_type_ enemy-jump-info) none 83) + (enemy-method-84 (_type_ enemy-jump-info) none 84) + (enemy-method-85 (_type_) float 85) + (enemy-method-86 (_type_) symbol 86) + (enemy-method-87 (_type_) none 87) + (enemy-method-88 (_type_) none 88) + (enemy-method-89 (_type_) none 89) + (enemy-method-90 (_type_) none 90) + (enemy-method-91 (_type_ int enemy-jump-info) none 91) + (enemy-method-92 (_type_ int nav-poly) none 92) + (enemy-method-93 (_type_) none 93) + (enemy-method-94 (_type_ vector float) symbol 94) + (enemy-method-95 (_type_ vector float) symbol 95) + (enemy-method-96 (_type_ float symbol) symbol 96) + (enemy-method-97 (_type_) none 97) + (enemy-method-98 (_type_ process-focusable vector) symbol 98) + (enemy-method-99 (_type_) symbol 99) + (enemy-method-100 (_type_) symbol 100) + (enemy-method-101 (_type_) none 101) + (enemy-method-102 (_type_) symbol 102) + (enemy-method-103 (_type_) collide-spec 103) + (enemy-method-104 (_type_ process uint uint) symbol :behavior process 104) + (enemy-method-105 (_type_) none 105) + (enemy-method-106 (_type_) none 106) + (enemy-method-107 (_type_) process 107) + (enemy-method-108 (_type_ object) none 108) + (enemy-method-109 (_type_ int) none 109) + (enemy-method-110 (_type_) none 110) + (enemy-method-111 (_type_) none :behavior enemy 111) + (enemy-method-112 (_type_ enemy-info) none 112) + (enemy-method-113 (_type_ enemy-info) none 113) + (enemy-method-114 (_type_) none 114) + (enemy-method-115 (_type_) none 115) + (go-idle (_type_) none 116) + (get-rand-float (_type_) float 117) + (get-rand-float-range (_type_ float float) float 118) + (get-rand-int (_type_ int) int 119) + (enemy-method-120 (_type_ int int) int 120) + (get-rand-int-range (_type_ int int) int 121) + (rng-hit? (_type_ float) symbol 122) + (enemy-method-123 (_type_ float) symbol 123) + (enemy-method-124 (_type_) collide-spec 124) + (enemy-method-125 (_type_) none 125) + (enemy-method-126 (_type_ collide-query vector collide-spec float float float) symbol 126) + (enemy-method-127 (_type_) none 127) + (enemy-method-128 (_type_ vector move-above-ground-params) none 128) + (enemy-method-129 (_type_) none 129) + (enemy-method-130 (_type_) none 130) + (enemy-method-131 (_type_) none 131) + (enemy-method-132 (_type_) none 132) + (enemy-method-133 (_type_) none 133) + (enemy-method-134 (_type_ process symbol) process-focusable 134) + (enemy-method-135 (_type_ int) sound-id 135) + (enemy-method-136 (_type_) enemy-flag 136) ) ) + + +(deftype anim-info (structure) + ((anim-index int32 :offset-assert 0) + (travel-speed meters :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + + +(defmethod try-update-focus enemy-focus ((obj enemy-focus) (arg0 process-focusable) (arg1 enemy)) + (let* ((t9-0 (method-of-type focus try-update-focus)) + (s3-0 (t9-0 obj arg0)) + ) + (when (not s3-0) + (logclear! (-> obj flags) (enemy-flag lock-focus)) + (set! (-> obj aware) + (the-as + enemy-aware + (enemy-method-61 arg1 (the-as int (enemy-method-57 arg1 arg0 (the-as enemy-attack-info #f)))) + ) + ) + ) + s3-0 + ) + ) + +(defmethod enemy-focus-method-13 enemy-focus ((obj enemy-focus) (arg0 process-focusable) (arg1 enemy-aware)) + "TODO - enemy-aware sets `aware` on the type (see enemy.gc), but it's also an `enemy` passed to method 12...what the hell is going on? + probably related to ';; skipped : handle creation is different, want to grab more.'" + (let* ((t9-0 (method-of-type focus try-update-focus)) + (v0-0 (t9-0 obj arg0)) + ) + (set! (-> obj aware) arg1) + (if (not v0-0) + (logclear! (-> obj flags) (enemy-flag lock-focus)) + ) + v0-0 + ) + ) + +;; WARN: Return type mismatch enemy-flag vs none. +(defmethod clear-focused enemy-focus ((obj enemy-focus)) + (let ((t9-0 (method-of-type focus clear-focused))) + (t9-0 obj) + ) + (set! (-> obj aware) (enemy-aware enemy-aware-0)) + (logclear! (-> obj flags) (enemy-flag lock-focus)) + (none) + ) diff --git a/goal_src/jak2/engine/collide/collide-shape-h.gc b/goal_src/jak2/engine/collide/collide-shape-h.gc index 69de6067b0..ba4380c492 100644 --- a/goal_src/jak2/engine/collide/collide-shape-h.gc +++ b/goal_src/jak2/engine/collide/collide-shape-h.gc @@ -329,15 +329,15 @@ (deftype move-above-ground-params (structure) ((gnd-collide-with collide-spec :offset-assert 0) (popup float :offset-assert 4) - (dont-move-if-overlaps? basic :offset-assert 8) - (hover-if-no-ground? basic :offset-assert 12) + (dont-move-if-overlaps? symbol :offset-assert 8) + (hover-if-no-ground? symbol :offset-assert 12) (overlaps-params overlaps-others-params :inline :offset-assert 16) (new-pos vector :inline :offset-assert 48) (old-gspot-pos vector :inline :offset-assert 64) (old-gspot-normal vector :inline :offset-assert 80) (pat pat-surface :offset-assert 96) - (on-ground? basic :offset-assert 100) - (do-move? basic :offset-assert 104) + (on-ground? symbol :offset-assert 100) + (do-move? symbol :offset-assert 104) ) :method-count-assert 9 :size-assert #x6c @@ -484,7 +484,7 @@ (set-collide-as! (_type_ collide-spec) none 48) (collide-shape-method-49 (_type_ int int int) none 49) (collide-shape-method-50 (_type_ process object float float float) none 50) - (collide-shape-method-51 () none 51) + (collide-shape-method-51 (_type_) none 51) (water-info-init! (_type_ water-info collide-action) water-info 52) (collide-shape-method-53 (_type_) none 53) (collide-shape-method-54 (_type_) none 54) @@ -493,32 +493,34 @@ (deftype collide-shape-moving (collide-shape) - ((rider-time time-frame :offset-assert 200) - (rider-last-move vector :inline :offset-assert 208) - (trans-old vector :inline :offset-assert 224) - (poly-pat pat-surface :offset 272) - (cur-pat pat-surface :offset-assert 276) - (ground-pat pat-surface :offset-assert 280) - (status cshape-moving-flags :offset-assert 288) - (old-status cshape-moving-flags :offset-assert 296) - (prev-status cshape-moving-flags :offset-assert 304) - (reaction-flag cshape-reaction-flags :offset-assert 312) - (reaction (function control-info collide-query vector vector cshape-moving-flags) :offset-assert 316) - (no-reaction function :offset-assert 320) - (local-normal vector :inline :offset-assert 336) - (surface-normal vector :inline :offset-assert 352) - (poly-normal vector :inline :offset-assert 368) - (ground-poly-normal vector :inline :offset-assert 384) - (gspot-pos vector :inline :offset-assert 400) - (gspot-normal vector :inline :offset-assert 416) - (grount-touch-point vector :inline :offset-assert 432) - (ground-impact-vel meters :offset-assert 448) - (surface-angle float :offset-assert 452) - (poly-angle float :offset-assert 456) - (touch-angle float :offset-assert 460) - (coverage float :offset-assert 464) - (dynam dynamics :offset-assert 468) - (surf surface :offset-assert 472) + ((rider-time time-frame :offset-assert 200) + (rider-last-move vector :inline :offset-assert 208) + (trans-old vector :inline :offset-assert 224) + (csm-unk-vec-981i2u312 vector :inline :offset 240) + (csm-unk-vec-klj1n23 vector :inline :offset 256) + (poly-pat pat-surface :offset 272) + (cur-pat pat-surface :offset-assert 276) + (ground-pat pat-surface :offset-assert 280) + (status cshape-moving-flags :offset-assert 288) + (old-status cshape-moving-flags :offset-assert 296) + (prev-status cshape-moving-flags :offset-assert 304) + (reaction-flag cshape-reaction-flags :offset-assert 312) + (reaction (function control-info collide-query vector vector cshape-moving-flags) :offset-assert 316) + (no-reaction function :offset-assert 320) + (local-normal vector :inline :offset-assert 336) + (surface-normal vector :inline :offset-assert 352) + (poly-normal vector :inline :offset-assert 368) + (ground-poly-normal vector :inline :offset-assert 384) + (gspot-pos vector :inline :offset-assert 400) + (gspot-normal vector :inline :offset-assert 416) + (grount-touch-point vector :inline :offset-assert 432) + (ground-impact-vel meters :offset-assert 448) + (surface-angle float :offset-assert 452) + (poly-angle float :offset-assert 456) + (touch-angle float :offset-assert 460) + (coverage float :offset-assert 464) + (dynam dynamics :offset-assert 468) + (surf surface :offset-assert 472) ) :method-count-assert 68 :size-assert #x1dc @@ -528,7 +530,7 @@ (collide-shape-moving-method-55 (_type_ collide-query collide-spec float float float) symbol 55) (collide-shape-moving-method-56 (_type_ pat-surface) none 56) (collide-shape-moving-method-57 () none 57) - (collide-shape-moving-method-58 () none 58) + (collide-shape-moving-method-58 (_type_ vector overlaps-others-params) symbol 58) (collide-shape-moving-method-59 () none 59) (collide-shape-moving-method-60 () none 60) (collide-shape-moving-method-61 () none 61) diff --git a/goal_src/jak2/engine/entity/entity-table.gc b/goal_src/jak2/engine/entity/entity-table.gc index 5ce7b04119..290f9d498a 100644 --- a/goal_src/jak2/engine/entity/entity-table.gc +++ b/goal_src/jak2/engine/entity/entity-table.gc @@ -184,7 +184,7 @@ :heap-size #x4000 ) (new 'static 'entity-info - :ptype (type-ref neon-baron :method-count 19) + :ptype (type-ref neon-baron :method-count 17) :package "game" :art-group '() :pool '*16k-dead-pool* @@ -219,7 +219,3 @@ ) ) ) - - - - diff --git a/goal_src/jak2/engine/game/idle-control.gc b/goal_src/jak2/engine/game/idle-control.gc index b5abcdb312..c00fa35340 100644 --- a/goal_src/jak2/engine/game/idle-control.gc +++ b/goal_src/jak2/engine/game/idle-control.gc @@ -8,27 +8,28 @@ ;; DECOMP BEGINS (deftype idle-control-frame (uint32) - ((command uint8 :offset 0) - (anim uint8 :offset 8) - (param0 uint8 :offset 16) - (param1 uint8 :offset 24) - ) + ((command uint8 :offset 0 :size 8) + (anim uint8 :offset 8 :size 8) + (param0 uint8 :offset 16 :size 8) + (param1 uint8 :offset 24 :size 8) + ) :method-count-assert 9 :size-assert #x4 :flag-assert #x900000004 ) + (deftype idle-control (structure) - ((anim uint32 :offset-assert 0) - (current uint32 :offset-assert 4) - (counter int32 :offset-assert 8) - (target int32 :offset-assert 12) + ((anim (pointer uint32) :offset-assert 0) + (current (pointer uint32) :offset-assert 4) + (counter int32 :offset-assert 8) + (target int32 :offset-assert 12) ) :method-count-assert 11 :size-assert #x10 :flag-assert #xb00000010 (:methods - (idle-control-method-9 () none 9) - (idle-control-method-10 () none 10) + (idle-control-method-9 (_type_ (pointer uint32)) none 9) + (idle-control-method-10 (_type_ process-drawable) none 10) ) - ) \ No newline at end of file + ) diff --git a/goal_src/jak2/engine/nav/nav-control-h.gc b/goal_src/jak2/engine/nav/nav-control-h.gc index cb18127528..f820ca97df 100644 --- a/goal_src/jak2/engine/nav/nav-control-h.gc +++ b/goal_src/jak2/engine/nav/nav-control-h.gc @@ -69,7 +69,7 @@ (pref-dir vector :inline :offset-assert 32) (out-travel vector 2 :inline :offset-assert 48) (closest-sphere-dist2 float :offset-assert 80) - (avoiding-sphere? basic :offset-assert 84) + (avoiding-sphere? symbol :offset-assert 84) ) :method-count-assert 9 :size-assert #x58 @@ -78,8 +78,8 @@ (deftype nav-callback-info (structure) - ((callback-count int32 :offset-assert 0) - (callback-array uint32 10 :offset-assert 4) + ((callback-count int32 :offset-assert 0) + (callback-array (function object nav-control none) 10 :offset-assert 4) ) :method-count-assert 9 :size-assert #x2c @@ -89,7 +89,7 @@ (deftype nav-state (structure) ((flags nav-state-flag :offset-assert 0) - (nav basic :offset-assert 4) + (nav nav-control :offset-assert 4) (user-poly nav-poly :offset-assert 8) (mesh nav-mesh :offset-assert 12) (current-poly nav-poly :offset-assert 16) @@ -114,52 +114,52 @@ :size-assert #xb0 :flag-assert #x37000000b0 (:methods - (nav-state-method-9 () none 9) - (nav-state-method-10 () none 10) - (nav-state-method-11 () none 11) - (nav-state-method-12 () none 12) - (nav-state-method-13 () none 13) - (nav-state-method-14 () none 14) - (nav-state-method-15 () none 15) - (nav-state-method-16 () none 16) - (nav-state-method-17 () none 17) - (nav-state-method-18 () none 18) - (nav-state-method-19 () none 19) - (nav-state-method-20 () none 20) + (debug-draw (_type_) none 9) + (nav-state-method-10 (_type_) none 10) + (nav-state-method-11 (_type_ nav-gap-info) symbol 11) + (nav-state-method-12 (_type_ vector) vector 12) + (nav-state-method-13 (_type_ vector) vector 13) + (nav-state-method-14 (_type_ vector) vector 14) + (nav-state-method-15 (_type_ vector) vector 15) + (get-speed (_type_) meters 16) + (get-rotation-rate (_type_) float 17) + (nav-state-method-18 (_type_ vector object vector) none 18) + (get-current-poly (_type_) nav-poly 19) + (copy-nav-state! (_type_ (pointer nav-state)) none 20) (nav-state-method-21 () none 21) (nav-state-method-22 () none 22) (nav-state-method-23 () none 23) - (nav-state-method-24 () none 24) - (nav-state-method-25 () none 25) - (nav-state-method-26 () none 26) - (nav-state-method-27 () none 27) - (nav-state-method-28 () none 28) - (nav-state-method-29 () none 29) - (nav-state-method-30 () none 30) - (nav-state-method-31 () none 31) - (nav-state-method-32 () none 32) - (nav-state-method-33 () none 33) - (nav-state-method-34 () none 34) - (nav-state-method-35 () none 35) - (nav-state-method-36 () none 36) - (nav-state-method-37 () none 37) - (nav-state-method-38 () none 38) + (nav-state-method-24 (_type_) none 24) + (nav-state-method-25 (_type_) none 25) + (nav-state-method-26 (_type_) none 26) + (nav-state-method-27 (_type_) none 27) + (nav-state-method-28 (_type_) none 28) + (nav-state-method-29 (_type_) none 29) + (nav-state-method-30 (_type_) none 30) + (nav-state-method-31 (_type_) none 31) + (nav-state-method-32 (_type_) none 32) + (nav-state-method-33 (_type_) none 33) + (nav-state-method-34 (_type_) none 34) + (nav-state-method-35 (_type_) none 35) + (nav-state-method-36 (_type_ vector) none 36) + (nav-state-method-37 (_type_) none 37) + (set-current-poly! (_type_ nav-poly) none 38) (nav-state-method-39 () none 39) - (nav-state-method-40 () none 40) - (nav-state-method-41 () none 41) - (nav-state-method-42 () none 42) - (nav-state-method-43 () none 43) - (nav-state-method-44 () none 44) - (nav-state-method-45 () none 45) - (nav-state-method-46 () none 46) - (nav-state-method-47 () none 47) + (nav-state-method-40 (_type_) none 40) + (nav-state-method-41 (_type_ vector) symbol 41) + (nav-state-method-42 (_type_ vector) none 42) + (nav-state-method-43 (_type_ vector) none 43) + (set-velocity! (_type_ vector) none 44) + (set-heading! (_type_ vector) none 45) + (set-speed! (_type_ meters) none 46) + (nav-state-method-47 (_type_ nav-control) none 47) (nav-state-method-48 () none 48) - (nav-state-method-49 () none 49) - (nav-state-method-50 () none 50) + (nav-state-method-49 (_type_ clamp-travel-vector-to-mesh-return-info) none 49) + (nav-state-method-50 (_type_) none 50) (nav-state-method-51 () none 51) - (nav-state-method-52 () none 52) - (nav-state-method-53 () none 53) - (nav-state-method-54 () none 54) + (nav-state-method-52 (_type_) none 52) + (nav-state-method-53 (_type_) none 53) + (nav-state-method-54 (_type_) none 54) ) ) @@ -184,8 +184,8 @@ (sphere-mask uint8 :offset-assert 61) (pad1 uint8 2 :offset-assert 62) (sphere-id-array uint8 16 :offset-assert 64) - (extra-nav-sphere sphere :inline :offset-assert 80) - (root-nav-sphere sphere :inline :offset-assert 96) + (extra-nav-sphere vector :inline :offset-assert 80) + (root-nav-sphere vector :inline :offset-assert 96) (state nav-state :inline :offset-assert 112) ) :method-count-assert 47 @@ -195,7 +195,7 @@ (debug-draw (_type_) none 9) (point-in-bounds? (_type_ vector) symbol 10) (nav-control-method-11 (_type_ vector) vector 11) - (nav-control-method-12 () none 12) + (nav-control-method-12 (_type_ vector vector nav-poly) nav-poly 12) (find-poly (_type_ vector) nav-poly 13) (nav-control-method-14 (_type_ nav-poly vector object vector) none 14) (nav-control-method-15 (_type_ vector) none 15) @@ -203,11 +203,11 @@ (is-in-mesh? (_type_ vector float) symbol 17) (nav-control-method-18 () none 18) (nav-control-method-19 () none 19) - (nav-control-method-20 (_type_ vector vector vector int symbol symbol) none 20) - (nav-control-method-21 () none 21) - (nav-control-method-22 () none 22) + (nav-control-method-20 (_type_ vector nav-poly vector float symbol symbol) none 20) + (nav-control-method-21 (_type_) none 21) + (nav-control-method-22 (_type_ vector nav-avoid-spheres-params) float 22) (nav-control-method-23 (_type_) none 23) - (nav-control-method-24 () none 24) + (nav-control-method-24 (_type_ vector int) none 24) (get-max-rotation-rate (_type_) float 25) (get-sphere-mask (_type_) none 26) (get-target-speed (_type_) meters 27) @@ -229,13 +229,6 @@ (display-marks? (_type_) symbol 43) (nav-control-method-44 () none 44) (nav-control-method-45 (_type_ vector vector vector) sphere 45) - (find-sphere (_type_) none 46) + (find-sphere (_type_ symbol) none 46) ) ) - - -0 - - - - diff --git a/goal_src/jak2/engine/nav/nav-enemy-h.gc b/goal_src/jak2/engine/nav/nav-enemy-h.gc index f663edd09e..8b2fdc4c21 100644 --- a/goal_src/jak2/engine/nav/nav-enemy-h.gc +++ b/goal_src/jak2/engine/nav/nav-enemy-h.gc @@ -7,263 +7,108 @@ ;; DECOMP BEGINS -(defenum enemy-flag - :type int64 - :bitfield #t - (lock-focus 0) - (death-start 1) - (enable-on-active 2) - (checking-water 3) - (check-water 4) - (spawn-gem 5) - (chase-startup 6) - (attackable-backup 7) - (look-at-focus 8) - (use-notice-distance 9) - (enable-on-notice 10) - (look-at-move-dest 11) - (notice 12) - (auto-reset-penetrate 13) - (jump-check-blocked 14) - (drawn-mirrored 15) - (multi-focus 16) - (alert 17) - (victory 18) - (dangerous-backup 19) - (actor-pause-backup 20) - (trackable 21) - (called-dying 22) - (check-water-backup 23) - (no-initial-move-to-ground 24) - (cam-attack-mode 25) - (trackable-backup 26) - (enable-on-hostile 27) - (directed-ready 28) - (use-trigger 29) - (directed 30) - (dislike-combo 31) - (recover-applied-velocity 32) - (vulnerable-backup 33) - (vulnerable 34) - (recover 35) +(deftype nav-enemy-info (enemy-info) + ((callback-info nav-callback-info :offset-assert 384) + (use-momentum symbol :offset-assert 388) + (use-frustration basic :offset-assert 392) + (use-stop-chase basic :offset-assert 396) + (use-circling basic :offset-assert 400) + (use-pacing basic :offset-assert 404) + (walk-anim int32 :offset-assert 408) + (turn-anim int32 :offset-assert 412) + (run-anim int32 :offset-assert 416) + (taunt-anim int32 :offset-assert 420) + (run-travel-speed meters :offset-assert 424) + (run-acceleration meters :offset-assert 428) + (run-turning-acceleration meters :offset-assert 432) + (walk-travel-speed meters :offset-assert 436) + (walk-acceleration meters :offset-assert 440) + (walk-turning-acceleration meters :offset-assert 444) + (maximum-rotation-rate degrees :offset-assert 448) + (notice-nav-radius meters :offset-assert 452) + (frustration-distance meters :offset-assert 456) + (frustration-time time-frame :offset-assert 464) + (blocked-time time-frame :offset-assert 472) + (circle-dist-lo float :offset-assert 480) + (circle-dist-hi float :offset-assert 484) + (nav-mesh basic :offset-assert 488) ) - -(deftype enemy-focus (focus) - ((aware uint64 :offset-assert 16) - (flags uint64 :offset-assert 24) - ) - :method-count-assert 14 - :size-assert #x20 - :flag-assert #xe00000020 + :method-count-assert 11 + :size-assert #x1ec + :flag-assert #xb000001ec (:methods - (enemy-focus-method-13 () none 13) + (copy-nav-enemy-info! (_type_ nav-enemy-info) none 10) ) ) -(deftype enemy-info (basic) - ((fact-defaults basic :offset-assert 4) - (use-die-falling basic :offset-assert 8) - (use-victory basic :offset-assert 12) - (use-jump-blocked basic :offset-assert 16) - (debug-draw-neck basic :offset-assert 20) - (jump-debug-draw basic :offset-assert 24) - (move-to-ground basic :offset-assert 28) - (hover-if-no-ground basic :offset-assert 32) - (idle-anim-script uint32 :offset-assert 36) - (idle-anim int32 :offset-assert 40) - (notice-anim int32 :offset-assert 44) - (hostile-anim int32 :offset-assert 48) - (hit-anim int32 :offset-assert 52) - (knocked-anim int32 :offset-assert 56) - (knocked-land-anim int32 :offset-assert 60) - (die-anim int32 :offset-assert 64) - (die-falling-anim int32 :offset-assert 68) - (victory-anim int32 :offset-assert 72) - (jump-wind-up-anim int32 :offset-assert 76) - (jump-in-air-anim int32 :offset-assert 80) - (jump-land-anim int32 :offset-assert 84) - (neck-joint int32 :offset-assert 88) - (look-at-joint int32 :offset-assert 92) - (bullseye-joint int32 :offset-assert 96) - (sound-hit uint128 :offset-assert 112) - (sound-die uint128 :offset-assert 128) - (notice-distance meters :offset-assert 144) - (notice-distance-delta meters :offset-assert 148) - (proximity-notice-distance meters :offset-assert 152) - (default-hit-points int32 :offset-assert 156) - (gnd-collide-with uint32 :offset-assert 160) - (overlaps-others-collide-with-filter uint32 :offset-assert 164) - (penetrate-flinch uint64 :offset-assert 168) - (penetrate-knocked uint64 :offset-assert 176) - (movement-gravity meters :offset-assert 184) - (friction float :offset-assert 188) - (slip-factor float :offset-assert 192) - (attack-shove-back meters :offset-assert 196) - (attack-shove-up meters :offset-assert 200) - (attack-mode basic :offset-assert 204) - (attack-damage int32 :offset-assert 208) - (recover-gnd-collide-with uint32 :offset-assert 212) - (jump-height-min meters :offset-assert 216) - (jump-height-factor float :offset-assert 220) - (knocked-seek-ry-clamp float :offset-assert 224) - (knocked-soft-vxz-lo float :offset-assert 228) - (knocked-soft-vxz-hi float :offset-assert 232) - (knocked-soft-vy-lo float :offset-assert 236) - (knocked-soft-vy-hi float :offset-assert 240) - (knocked-medium-vxz-lo float :offset-assert 244) - (knocked-medium-vxz-hi float :offset-assert 248) - (knocked-medium-vy-lo float :offset-assert 252) - (knocked-medium-vy-hi float :offset-assert 256) - (knocked-hard-vxz-lo float :offset-assert 260) - (knocked-hard-vxz-hi float :offset-assert 264) - (knocked-hard-vy-lo float :offset-assert 268) - (knocked-hard-vy-hi float :offset-assert 272) - (knocked-huge-vxz-lo float :offset-assert 276) - (knocked-huge-vxz-hi float :offset-assert 280) - (knocked-huge-vy-lo float :offset-assert 284) - (knocked-huge-vy-hi float :offset-assert 288) - (knocked-yellow-vxz-lo float :offset-assert 292) - (knocked-yellow-vxz-hi float :offset-assert 296) - (knocked-yellow-vy-lo float :offset-assert 300) - (knocked-yellow-vy-hi float :offset-assert 304) - (knocked-red-vxz-lo float :offset-assert 308) - (knocked-red-vxz-hi float :offset-assert 312) - (knocked-red-vy-lo float :offset-assert 316) - (knocked-red-vy-hi float :offset-assert 320) - (knocked-blue-vxz-lo float :offset-assert 324) - (knocked-blue-vxz-hi float :offset-assert 328) - (knocked-blue-vy-lo float :offset-assert 332) - (knocked-blue-vy-hi float :offset-assert 336) - (shadow-size meters :offset-assert 340) - (shadow-max-y meters :offset-assert 344) - (shadow-min-y meters :offset-assert 348) - (shadow-locus-dist meters :offset-assert 352) - (gem-joint int32 :offset-assert 356) - (gem-seg uint32 :offset-assert 360) - (gem-no-seg uint32 :offset-assert 364) - (gem-offset sphere :inline :offset-assert 368) + +(deftype nav-enemy (enemy) + ((enemy-info-override nav-enemy-info :offset 216) + (frustration-point vector :inline :offset-assert 544) + (move-dest vector :inline :offset-assert 560) + (frustration-time time-frame :offset-assert 576) + (blocked-start-time time-frame :offset-assert 584) + (restore-nav-radius-time time-frame :offset-assert 592) + (nav-radius-backup float :offset-assert 600) + (circle-radial-dist float :offset 244) ) - :method-count-assert 10 - :size-assert #x180 - :flag-assert #xa00000180 + :heap-base #x1e0 + :method-count-assert 178 + :size-assert #x25c + :flag-assert #xb201e0025c (:methods - (enemy-info-method-9 () none 9) + (enemy-method-113 (_type_ nav-enemy-info) none :replace 113) + (taunt () _type_ :state 137) + (pacing () _type_ :state 138) + (circling () _type_ :state 139) + (stop-chase () _type_ :state 140) + (debug-control () _type_ :state 141) + (nav-enemy-method-142 (_type_ nav-control) none 142) + (nav-enemy-method-143 (_type_ nav-control) none 143) + (nav-enemy-method-144 (_type_) time-frame :behavior nav-enemy 144) + (nav-enemy-method-145 (_type_ nav-control) none 145) + (nav-enemy-method-146 (_type_ nav-control) none 146) + (nav-enemy-method-147 (_type_ nav-control) none 147) + (nav-enemy-method-148 (_type_ nav-control) none 148) + (nav-enemy-method-149 (_type_ nav-control) none 149) + (nav-enemy-method-150 (_type_ nav-control) none 150) + (nav-enemy-method-151 (_type_ nav-control) none 151) + (nav-enemy-method-152 (_type_ nav-control) none 152) + (nav-enemy-method-153 (_type_ nav-control) none 153) + (nav-enemy-method-154 (_type_ nav-control) none 154) + (nav-enemy-method-155 (_type_) none 155) + (nav-enemy-method-156 (_type_) none 156) + (nav-enemy-method-157 (_type_ vector) nav-poly 157) + (nav-enemy-method-158 (_type_ vector) object 158) + (nav-enemy-method-159 (_type_ vector) symbol 159) + (nav-enemy-method-160 (_type_) none 160) + (nav-enemy-method-161 (_type_) none 161) + (nav-enemy-method-162 (_type_) none 162) + (nav-enemy-method-163 (_type_) none 163) + (nav-enemy-method-164 (_type_) none 164) + (nav-enemy-method-165 (_type_) none 165) + (nav-enemy-method-166 (_type_) none 166) + (nav-enemy-method-167 (_type_) none 167) + (nav-enemy-method-168 (_type_) float 168) + (nav-enemy-method-169 (_type_ float symbol) float 169) + (nav-enemy-method-170 (_type_) none 170) + (nav-enemy-method-171 (_type_) none 171) + (nav-enemy-method-172 (_type_) none 172) + (nav-enemy-method-173 (_type_) none 173) + (nav-enemy-method-174 (_type_) symbol 174) + (nav-enemy-method-175 (_type_) symbol 175) + (nav-enemy-method-176 (_type_) none :behavior nav-enemy 176) + (nav-enemy-method-177 (_type_) none 177) ) ) -(deftype enemy-knocked-info (structure) - ((anim-speed float :offset-assert 0) - (on-surface-count int32 :offset-assert 4) - (move-count int32 :offset-assert 8) - (land-can-land-time time-frame :offset-assert 16) - ) - :method-count-assert 9 - :size-assert #x18 - :flag-assert #x900000018 - ) -(deftype enemy-jump-info (structure) - ((flags uint8 :offset-assert 0) - (anim-speed float :offset-assert 4) - (hang-time time-frame :offset-assert 8) - (start-pos vector :inline :offset-assert 16) - (dest-pos vector :inline :offset-assert 32) - (traj trajectory :inline :offset-assert 48) - ) - :method-count-assert 9 - :size-assert #x58 - :flag-assert #x900000058 - ) - -(deftype enemy-init-by-other-params (structure) - ((trans vector :inline :offset-assert 0) - (quat quaternion :inline :offset-assert 16) - (entity basic :offset-assert 32) - (directed? basic :offset-assert 36) - (no-initial-move-to-ground? basic :offset-assert 40) - ) - :method-count-assert 9 - :size-assert #x2c - :flag-assert #x90000002c - ) - -(deftype enemy-attack-info (structure) - ((attack-id uint32 :offset-assert 0) - (knocked-type uint8 :offset-assert 4) - (blue-juggle-count uint8 :offset-assert 5) - (attacker-handle uint64 :offset-assert 8) - (attack-time time-frame :offset-assert 16) - (penetrate-using uint64 :offset-assert 24) - (attacker-pos vector :inline :offset-assert 32) - (attack-direction vector :inline :offset-assert 48) - ) - :method-count-assert 9 - :size-assert #x40 - :flag-assert #x900000040 - ) - -(deftype enemy-best-focus (structure) - ((proc basic :offset-assert 0) - (rating float :offset-assert 4) - (aware uint64 :offset-assert 8) +(deftype nav-enemy-debug-control-info (basic) + ((enable basic :offset-assert 4) + (steering float :offset-assert 8) + (throttle float :offset-assert 12) ) :method-count-assert 9 :size-assert #x10 :flag-assert #x900000010 ) -(deftype nav-enemy (enemy) - ((frustration-point vector :inline :offset-assert 544) - (move-dest vector :inline :offset-assert 560) - (frustration-time time-frame :offset-assert 576) ;; time-frame - (blocked-start-time time-frame :offset-assert 584) - (restore-nav-radius-time time-frame :offset-assert 592) - (nav-radius-backup float :offset-assert 600) - (circle-radial-dist float :offset 244) - ) - :method-count-assert 178 - :size-assert #x25c - :flag-assert #xb201e0025c - (:methods - (nav-enemy-method-137 () none 137) - (nav-enemy-method-138 () none 138) - (nav-enemy-method-139 () none 139) - (nav-enemy-method-140 () none 140) - (nav-enemy-method-141 () none 141) - (nav-enemy-method-142 () none 142) - (nav-enemy-method-143 () none 143) - (nav-enemy-method-144 () none 144) - (nav-enemy-method-145 () none 145) - (nav-enemy-method-146 () none 146) - (nav-enemy-method-147 () none 147) - (nav-enemy-method-148 () none 148) - (nav-enemy-method-149 () none 149) - (nav-enemy-method-150 () none 150) - (nav-enemy-method-151 () none 151) - (nav-enemy-method-152 () none 152) - (nav-enemy-method-153 () none 153) - (nav-enemy-method-154 () none 154) - (nav-enemy-method-155 () none 155) - (nav-enemy-method-156 () none 156) - (nav-enemy-method-157 () none 157) - (nav-enemy-method-158 () none 158) - (nav-enemy-method-159 () none 159) - (nav-enemy-method-160 () none 160) - (nav-enemy-method-161 () none 161) - (nav-enemy-method-162 () none 162) - (nav-enemy-method-163 () none 163) - (nav-enemy-method-164 () none 164) - (nav-enemy-method-165 () none 165) - (nav-enemy-method-166 () none 166) - (nav-enemy-method-167 () none 167) - (nav-enemy-method-168 () none 168) - (nav-enemy-method-169 () none 169) - (nav-enemy-method-170 () none 170) - (nav-enemy-method-171 () none 171) - (nav-enemy-method-172 () none 172) - (nav-enemy-method-173 () none 173) - (nav-enemy-method-174 () none 174) - (nav-enemy-method-175 () none 175) - (nav-enemy-method-176 () none 176) - (nav-enemy-method-177 () none 177) - ) - ) diff --git a/goal_src/jak2/engine/nav/nav-mesh-h.gc b/goal_src/jak2/engine/nav/nav-mesh-h.gc index c3d6ceec1e..a94fe21fa2 100644 --- a/goal_src/jak2/engine/nav/nav-mesh-h.gc +++ b/goal_src/jak2/engine/nav/nav-mesh-h.gc @@ -67,13 +67,13 @@ (deftype nav-mesh-link (structure) - ((id uint32 :offset-assert 0) - (dest-mesh-id uint32 :offset-assert 4) - (src-link-poly-id uint8 :offset-assert 8) - (src-switch-poly-id uint8 :offset-assert 9) - (dest-link-poly-id uint8 :offset-assert 10) - (dest-switch-poly-id uint8 :offset-assert 11) - (dest-mesh basic :offset-assert 12) + ((id uint32 :offset-assert 0) + (dest-mesh-id uint32 :offset-assert 4) + (src-link-poly-id uint8 :offset-assert 8) + (src-switch-poly-id uint8 :offset-assert 9) + (dest-link-poly-id uint8 :offset-assert 10) + (dest-switch-poly-id uint8 :offset-assert 11) + (dest-mesh nav-mesh :offset-assert 12) ) :method-count-assert 9 :size-assert #x10 @@ -192,30 +192,30 @@ (deftype nav-mesh (basic) - ((work nav-mesh-work :offset-assert 4) - (poly-array (inline-array nav-poly) :offset-assert 8) - (static-sphere-count uint8 :offset-assert 12) - (poly-count uint8 :offset-assert 13) - (nav-control-count uint8 :offset-assert 14) - (max-nav-control-count uint8 :offset-assert 15) - (route uint32 :offset-assert 16) - (poly-hash grid-hash :offset-assert 20) - (nav-control-array (inline-array nav-control) :offset-assert 24) - (sphere-hash sphere-hash :offset-assert 28) - (static-sphere (inline-array sphere) :offset-assert 32) - (user-list engine :offset-assert 36) - (next-nav-mesh surface :offset-assert 40) - (prev-nav-mesh surface :offset-assert 44) - (bounds vector :inline :offset-assert 48) - (origin vector :inline :offset 48) - (entity entity :offset-assert 64) - (link-array (array nav-mesh-link) :offset-assert 68) - (link-count uint8 :offset-assert 72) - (flags nav-mesh-flag :offset-assert 73) - (pad1 uint8 2 :offset-assert 74) - (nearest-y-threshold meters :offset-assert 76) - (water-max-height meters :offset-assert 80) - (pad2 uint32 7 :offset-assert 84) + ((work nav-mesh-work :offset-assert 4) + (poly-array (inline-array nav-poly) :offset-assert 8) + (static-sphere-count uint8 :offset-assert 12) + (poly-count uint8 :offset-assert 13) + (nav-control-count uint8 :offset-assert 14) + (max-nav-control-count uint8 :offset-assert 15) + (route (pointer nav-poly) :offset-assert 16) + (poly-hash grid-hash :offset-assert 20) + (nav-control-array (inline-array nav-control) :offset-assert 24) + (sphere-hash sphere-hash :offset-assert 28) + (static-sphere (inline-array sphere) :offset-assert 32) + (user-list engine :offset-assert 36) + (next-nav-mesh surface :offset-assert 40) + (prev-nav-mesh surface :offset-assert 44) + (bounds vector :inline :offset-assert 48) + (origin vector :inline :offset 48) + (entity entity :offset-assert 64) + (link-array (inline-array nav-mesh-link) :offset-assert 68) + (link-count uint8 :offset-assert 72) + (flags nav-mesh-flag :offset-assert 73) + (pad1 uint8 2 :offset-assert 74) + (nearest-y-threshold meters :offset-assert 76) + (water-max-height meters :offset-assert 80) + (pad2 uint32 7 :offset-assert 84) ) :method-count-assert 47 :size-assert #x70 @@ -225,23 +225,23 @@ (nav-mesh-method-10 (_type_ vector vector nav-poly) nav-poly 10) (nav-mesh-method-11 (_type_ nav-poly vector) vector 11) (nav-mesh-method-12 (_type_ nav-poly vector) none 12) - (nav-mesh-method-13 (_type_ symbol symbol) none 13) - (get-route-portal (_type_ object object nav-find-poly-parms) none 14) + (nav-mesh-method-13 (_type_ nav-poly nav-poly) nav-poly 13) + (get-route-portal (_type_ nav-poly nav-poly nav-route-portal) (inline-array nav-vertex) 14) (initialize-mesh! (_type_) none 15) (move-along-nav-ray! (_type_ nav-ray) none 16) (try-move-along-ray (_type_ nav-poly vector vector float) meters 17) - (nav-mesh-method-18 () none 18) - (nav-mesh-method-19 () none 19) - (nav-mesh-method-20 () none 20) - (nav-mesh-method-21 () none 21) + (nav-mesh-method-18 (_type_ vector nav-poly vector float symbol clamp-travel-vector-to-mesh-return-info) none 18) + (nav-mesh-method-19 (_type_) none 19) + (nav-mesh-method-20 (_type_ clamp-travel-vector-to-mesh-return-info) none 20) + (find-adjacent-bounds-one (_type_ vector nav-poly int int) none 21) (nav-mesh-method-22 (_type_ vector vector) none 22) (nav-mesh-method-23 (_type_ entity-nav-mesh) none 23) (nav-mesh-method-24 (_type_) none 24) (nav-mesh-method-25 (_type_) none 25) (nav-mesh-method-26 (_type_) none 26) - (new-nav-control (_type_ vector int) nav-control 27) + (new-nav-control (_type_ process-drawable int) nav-control 27) (nav-mesh-method-28 (_type_ object) none 28) - (nav-mesh-method-29 (_type_ object symbol) nav-control 29) + (nav-mesh-method-29 (_type_ process-drawable symbol) nav-control 29) (nav-mesh-method-30 (_type_ process-drawable) none 30) (change-to (_type_ process-drawable) none 31) (nav-mesh-method-32 (_type_ uint32) none 32) @@ -254,7 +254,7 @@ (closest-point-on-boundary (_type_ nav-poly vector vector) none 39) (nav-mesh-method-40 (_type_ nav-poly vector object vector) none 40) (project-point-into-poly-2d (_type_ nav-poly vector vector) none 41) - (nav-mesh-method-42 (_type_ nav-find-poly-parms) symbol 42) + (nav-mesh-method-42 (_type_ nav-find-poly-parms) nav-poly 42) (nav-mesh-method-43 (_type_ nav-find-poly-parms) none 43) (nav-mesh-method-44 (_type_ vector float float) symbol 44) (nav-mesh-method-45 (_type_ entity-perm) none 45) @@ -401,7 +401,7 @@ (let* ((a3-0 obj) (v1-0 arg1) (a0-1 (-> arg0 vertex-count)) - (a1-1 (the-as (inline-array vector) (-> arg0 vertex0))) + (a1-1 (-> arg0 vertex)) (a2-2 (-> a3-0 work vert0-table)) (a3-2 (-> a3-0 work vert1-table)) ) @@ -423,10 +423,6 @@ #t ) -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch ;; WARN: Return type mismatch vector vs none. (defmethod closest-point-on-boundary nav-mesh ((obj nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector)) (local-vars (sv-48 vector) (sv-52 vector) (sv-56 float)) @@ -450,10 +446,6 @@ (none) ) -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch ;; WARN: Return type mismatch vector vs none. (defmethod project-point-into-poly-2d nav-mesh ((obj nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector)) (local-vars (sv-48 vector) (sv-52 vector) (sv-56 float)) @@ -486,54 +478,6 @@ (none) ) -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch (defmethod move-along-nav-ray! nav-mesh ((obj nav-mesh) (ray nav-ray)) (local-vars (next-poly-idx int) @@ -597,7 +541,7 @@ (+! (-> ray current-pos z) delta-z) (set! sv-68 (-> current-poly adj-poly next-poly-idx)) (if (!= sv-68 255) - (set! (-> ray next-poly) (the-as nav-poly (-> obj poly-array sv-68 vertex0))) + (set! (-> ray next-poly) (-> obj poly-array sv-68)) ) (cond ((and (-> ray next-poly) (zero? (logand (-> ray next-poly pat) (-> ray ignore)))) diff --git a/goal_src/jak2/engine/physics/trajectory.gc b/goal_src/jak2/engine/physics/trajectory.gc index add62fb7c1..cacb41e5f9 100644 --- a/goal_src/jak2/engine/physics/trajectory.gc +++ b/goal_src/jak2/engine/physics/trajectory.gc @@ -316,7 +316,15 @@ (when s4-1 (let ((a2-3 ((method-of-type nav-control nav-control-method-11) (the-as nav-control s4-1) arg1))) (if a2-3 - ((method-of-type nav-control nav-control-method-20) (the-as nav-control s4-1) arg1 a2-3 arg0 #x45000000 #f #f) + ((method-of-type nav-control nav-control-method-20) + (the-as nav-control s4-1) + arg1 + (the-as nav-poly a2-3) + arg0 + 2048.0 + #f + #f + ) (set! (-> arg0 quad) (the-as uint128 0)) ) ) diff --git a/goal_src/jak2/engine/spatial-hash/spatial-hash-h.gc b/goal_src/jak2/engine/spatial-hash/spatial-hash-h.gc index ea975ec1f7..02af85692f 100644 --- a/goal_src/jak2/engine/spatial-hash/spatial-hash-h.gc +++ b/goal_src/jak2/engine/spatial-hash/spatial-hash-h.gc @@ -54,8 +54,8 @@ (grid-hash-method-9 (_type_ int (array float) int) none 9) (grid-hash-method-10 (_type_) none 10) (grid-hash-method-11 (_type_) none 11) - (grid-hash-method-12 (_type_) none 12) - (grid-hash-method-13 (_type_) none 13) + (grid-hash-method-12 (_type_ vector) grid-hash-box 12) + (grid-hash-method-13 (_type_ vector float) grid-hash-box 13) (draw-grid (_type_ rgba) none 14) (dump-grid-info (_type_) none 15) (grid-hash-method-16 (_type_ grid-hash-box grid-hash-box) none 16) diff --git a/goal_src/jak2/levels/city/slums/ctysluma-part.gc b/goal_src/jak2/levels/city/slums/ctysluma-part.gc index 3dc596604c..f3b61d1565 100644 --- a/goal_src/jak2/levels/city/slums/ctysluma-part.gc +++ b/goal_src/jak2/levels/city/slums/ctysluma-part.gc @@ -5,5 +5,1300 @@ ;; name in dgo: ctysluma-part ;; dgos: CTA +;; og:ignore-from-loc + ;; DECOMP BEGINS +(deftype ctysluma-part (part-spawner) + () + :heap-base #x30 + :method-count-assert 16 + :size-assert #xb0 + :flag-assert #x10003000b0 + ) + + +(defpartgroup group-ctysluma-barrel-fire + :id 859 + :bounds (static-bspherem 0 3 0 4) + :parts ((sp-item 3693 :fade-after (meters 50) :falloff-to (meters 80)) + (sp-item 3694 :fade-after (meters 60) :falloff-to (meters 90) :period 100 :length 50) + (sp-item 3695 :fade-after (meters 20) :falloff-to (meters 20) :period 120 :length 55 :offset 20) + (sp-item 3696 :fade-after (meters 40) :falloff-to (meters 40) :period 160 :length 30 :offset 35) + (sp-item 3694 :fade-after (meters 20) :falloff-to (meters 20) :period 255 :length 60 :offset 65) + (sp-item 3695 :fade-after (meters 40) :falloff-to (meters 40) :period 375 :length 40 :offset 15) + (sp-item 3696 :fade-after (meters 60) :falloff-to (meters 90) :period 430 :length 50 :offset 85) + (sp-item 3694 :fade-after (meters 40) :falloff-to (meters 40) :period 600 :length 70 :offset 100) + (sp-item 3695 :fade-after (meters 20) :falloff-to (meters 20) :period 1250 :length 45 :offset 450) + (sp-item 3696 :fade-after (meters 60) :falloff-to (meters 90) :period 1500 :length 25 :offset 115) + (sp-item 3694 :fade-after (meters 20) :falloff-to (meters 20) :period 2100 :length 55 :offset 80) + (sp-item 3697 :fade-after (meters 20) :falloff-to (meters 10) :binding 3692) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3698 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 3699 :fade-after (meters 30) :falloff-to (meters 30)) + (sp-item 3700 :fade-after (meters 70) :flags (bit6)) + ) + ) + +(defpart 3700 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 8192.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 12.0) + (sp-flt spt-fade-a -0.4) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 10240.0) + ) + ) + +(defpart 3697 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x26 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.8 1.0) + (sp-sound (static-sound-spec "fire-pop" :volume 10000.0)) + (sp-rnd-flt spt-x (meters -0.3) (meters 0.6) 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 256.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.026666667) 1.0) + (sp-rnd-flt spt-accel-y -0.13653333 -0.27306667 1.0) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 300) + (sp-cpuinfo-flags sp-cpuinfo-flag-1 sp-cpuinfo-flag-3) + (sp-rnd-flt spt-conerot-x (degrees -20.0) (degrees 40.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + ) + ) + +(defpart 3692 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0) (meters 16) 1.0) + (sp-rnd-flt spt-y (meters 0) (meters 16) 1.0) + (sp-rnd-flt spt-z (meters 0.1) (meters 0.3) 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 256.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 96.0 32.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.026666667) (meters 0.053333335) 1.0) + (sp-flt spt-vel-y (meters 0)) + (sp-rnd-flt spt-vel-z (meters -0.0013333333) (meters 0.0026666666) 1.0) + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g -0.7111111) + (sp-flt spt-fade-b -0.7111111) + (sp-flt spt-fade-a -0.42666668) + (sp-int spt-timer 300) + (sp-cpuinfo-flags sp-cpuinfo-flag-1 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch) + (sp-int spt-next-time 180) + (sp-launcher-by-id spt-next-launcher 3701) + ) + ) + +(defpart 3701 + :init-specs ((sp-flt spt-fade-r -1.0666667) (sp-flt spt-fade-g 1.0666667) (sp-flt spt-fade-b 1.0666667)) + ) + +(defpart 3694 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x33 :page #xc)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-rnd-flt spt-num 4.0 6.0 1.0) + (sp-rnd-flt spt-x (meters 0) (meters -0.25) 1.0) + (sp-flt spt-y (meters -0.8)) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.2) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 240.0 15.0 1.0) + (sp-rnd-flt spt-g 200.0 16.0 1.0) + (sp-rnd-flt spt-b 160.0 16.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-vel-x (meters 0.00033333333)) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-rnd-flt spt-fade-r -2.1333334 -1.0666667 1.0) + (sp-rnd-flt spt-fade-g -4.266667 -2.1333334 1.0) + (sp-flt spt-fade-b -5.3333335) + (sp-flt spt-accel-y -0.4096) + (sp-int-plain-rnd spt-timer 160 79 1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300) + ) + (sp-int-plain-rnd spt-next-time 30 9 1) + (sp-launcher-by-id spt-next-launcher 3702) + (sp-rnd-int-flt spt-conerot-x (degrees -8.0) 4 728.1778) + (sp-rnd-flt spt-conerot-y (degrees -180.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 87.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0) (meters 0.5) 1.0) + ) + ) + +(defpart 3695 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x33 :page #xc)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-rnd-flt spt-num 4.0 6.0 1.0) + (sp-rnd-flt spt-x (meters 0) (meters -0.25) 1.0) + (sp-flt spt-y (meters -0.8)) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.2) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 240.0 15.0 1.0) + (sp-rnd-flt spt-g 200.0 16.0 1.0) + (sp-rnd-flt spt-b 160.0 16.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-vel-x (meters 0.00033333333)) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-rnd-flt spt-fade-r -2.1333334 -1.0666667 1.0) + (sp-rnd-flt spt-fade-g -4.266667 -2.1333334 1.0) + (sp-flt spt-fade-b -5.3333335) + (sp-flt spt-accel-y -0.4096) + (sp-int-plain-rnd spt-timer 160 79 1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300) + ) + (sp-int-plain-rnd spt-next-time 30 9 1) + (sp-launcher-by-id spt-next-launcher 3702) + (sp-rnd-int-flt spt-conerot-x (degrees -8.0) 4 728.1778) + (sp-rnd-flt spt-conerot-y (degrees -180.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 120.0) (degrees 90.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0) (meters 0.5) 1.0) + ) + ) + +(defpart 3696 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x33 :page #xc)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-rnd-flt spt-num 4.0 6.0 1.0) + (sp-rnd-flt spt-x (meters 0) (meters -0.25) 1.0) + (sp-flt spt-y (meters -0.8)) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.2) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 240.0 15.0 1.0) + (sp-rnd-flt spt-g 200.0 16.0 1.0) + (sp-rnd-flt spt-b 160.0 16.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-vel-x (meters 0.00033333333)) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-rnd-flt spt-fade-r -2.1333334 -1.0666667 1.0) + (sp-rnd-flt spt-fade-g -4.266667 -2.1333334 1.0) + (sp-flt spt-fade-b -5.3333335) + (sp-flt spt-accel-y -0.4096) + (sp-int-plain-rnd spt-timer 160 79 1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300) + ) + (sp-int-plain-rnd spt-next-time 30 9 1) + (sp-launcher-by-id spt-next-launcher 3702) + (sp-rnd-int-flt spt-conerot-x (degrees -8.0) 4 728.1778) + (sp-rnd-flt spt-conerot-y (degrees -180.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 240.0) (degrees 110.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0) (meters 0.5) 1.0) + ) + ) + +(defpart 3702 + :init-specs ((sp-flt spt-b 0.0) + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-rnd-flt spt-fade-a -0.4 -0.2 1.0) + (sp-int-plain-rnd spt-next-time 40 9 1) + (sp-launcher-by-id spt-next-launcher 3703) + ) + ) + +(defpart 3703 + :init-specs ((sp-flt spt-fade-r -0.125) (sp-flt spt-fade-g 0.4) (sp-flt spt-fade-b 0.4)) + ) + +(defpart 3693 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x33 :page #xc)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-rnd-flt spt-num 1.0 4.0 1.0) + (sp-rnd-flt spt-x (meters 0) (meters -0.25) 1.0) + (sp-flt spt-y (meters -0.8)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.3) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-flt spt-vel-x (meters 0.00033333333)) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-rnd-flt spt-fade-a -0.16 -0.16 1.0) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-4) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300) + ) + (sp-rnd-int-flt spt-conerot-x (degrees -8.0) 4 728.1778) + (sp-rnd-flt spt-conerot-y (degrees -180.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0) (meters 0.5) 1.0) + ) + ) + +(defpart 3698 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-flt spt-num 0.4) + (sp-rnd-flt spt-x (meters -0.25) (meters 0.5) 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 196.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 8.0 8.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.01) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.64) + (sp-flt spt-fade-g -0.32) + (sp-flt spt-fade-b -0.32) + (sp-rnd-flt spt-fade-a -0.017777778 -0.026666667 1.0) + (sp-flt spt-accel-y -0.027306668) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (sp-int-plain-rnd spt-next-time 150 49 1) + (sp-launcher-by-id spt-next-launcher 3704) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + ) + ) + +(defpart 3704 + :init-specs ((sp-flt spt-fade-r 0.0) (sp-flt spt-fade-g 0.0) (sp-flt spt-fade-b 0.0)) + ) + +(defpart 3699 + :init-specs ((sp-flt spt-num 0.4) + (sp-rnd-flt spt-x (meters 0) (meters 0.2) 1.0) + (sp-int spt-rot-x 8) + (sp-flt spt-r 1638.4) + (sp-flt spt-g 1331.2) + (sp-flt spt-b 1433.6) + (sp-rnd-flt spt-vel-x (meters 0) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.013333334) 1.0) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 300) + (sp-cpuinfo-flags distort) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 3705) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + ) + ) + +(defpart 3705 + :init-specs ((sp-flt spt-fade-b -0.68266666)) + ) + +(defpartgroup group-ctysluma-streetlight-glows + :id 860 + :bounds (static-bspherem 0 0 0 8) + :parts ((sp-item 5 :fade-after (meters 120) :flags (bit6) :hour-mask #b111111111110000000) + (sp-item 6 :fade-after (meters 120) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +(defpart 5 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-flt spt-rot-z (degrees -17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 32.0) + (sp-flt spt-omega 494387.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + ) + ) + +(defpart 6 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 16) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 255.0 255.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 16.0) + (sp-flt spt-omega 494387.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + ) + ) + +(defpartgroup group-ctysluma-steamescape + :id 861 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 3706 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7)) + (sp-item 3707 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7)) + ) + ) + +(defpart 3706 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 0.5 1.0 1.0) + (sp-rnd-int-flt spt-x (meters -0.8) 4 1638.4) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.3) 1.0) + (sp-rnd-flt spt-z (meters 0.2) (meters 0.2) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 128.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-z (meters 0.006666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.0016666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.64) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (sp-int-plain-rnd spt-next-time 25 24 1) + (sp-launcher-by-id spt-next-launcher 3708) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-y (degrees -5.0) (degrees 10.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 3707 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-int-flt spt-x (meters -0.4) 1 1638.4) + (sp-rnd-flt spt-y (meters 0) (meters 0.3) 1.0) + (sp-rnd-flt spt-z (meters 0.2) (meters 0.2) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 128.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-z (meters 0.006666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.0016666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.64) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (sp-int-plain-rnd spt-next-time 25 24 1) + (sp-launcher-by-id spt-next-launcher 3708) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-y (degrees -5.0) (degrees 10.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 3708 + :init-specs ((sp-rnd-flt spt-fade-a -0.064 -0.064 1.0)) + ) + +(defpartgroup group-ctysluma-steamvent + :id 862 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 3709 :fade-after (meters 60) :falloff-to (meters 60) :flags (bit7)) + (sp-item 3710 :fade-after (meters 100) :falloff-to (meters 140) :flags (bit7)) + ) + ) + +(defpart 3709 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x92 :page #xc)) + (sp-rnd-flt spt-num 0.0 5.0 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-z (meters 0.083333336) (meters 0.033333335) 1.0) + (sp-rnd-flt spt-fade-a -0.64 -0.64 1.0) + (sp-rnd-flt spt-friction 0.93 0.025 1.0) + (sp-int spt-timer 150) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (sp-func spt-func 'sparticle-motion-blur) + (sp-rnd-flt spt-launchrot-x (degrees -7.5) (degrees 15.0) 1.0) + (sp-rnd-flt spt-launchrot-y (degrees -7.5) (degrees 15.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 3710 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 1.0 3.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 128.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-z (meters 0.083333336) (meters 0.033333335) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.01) (meters 0.016666668) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.96) + (sp-rnd-flt spt-friction 0.93 0.025 1.0) + (sp-int spt-timer 150) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (sp-int-plain-rnd spt-next-time 25 24 1) + (sp-launcher-by-id spt-next-launcher 3711) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-y (degrees -5.0) (degrees 10.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 3711 + :init-specs ((sp-rnd-flt spt-fade-a -0.48 -0.48 1.0)) + ) + +(defpartgroup group-ctysluma-spray + :id 863 + :flags (unk-4) + :bounds (static-bspherem 0 -8 0 24) + :parts ((sp-item 3712 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7)) + (sp-item 3713 :fade-after (meters 60) :falloff-to (meters 60) :flags (bit7)) + ) + ) + +(defpart 3712 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 1.0 2.0 1.0) + (sp-flt spt-z (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-z (meters 0.1) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-fade-a -0.28444445 -0.28444445 1.0) + (sp-rnd-flt spt-accel-y -13.653334 1.3653333 1.0) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 3714) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + ) + ) + +(defpart 3714 + :init-specs ((sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-int spt-next-time 5) + (sp-launcher-by-id spt-next-launcher 3715) + ) + ) + +(defpart 3715 + :init-specs ((sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-int-plain-rnd spt-next-time 0 449 1) + (sp-launcher-by-id spt-next-launcher 3714) + ) + ) + +(defpart 3713 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.5 1.0) + (sp-flt spt-z (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-z (meters 0.1) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-fade-a -0.28444445 -0.28444445 1.0) + (sp-rnd-flt spt-accel-y -13.653334 1.3653333 1.0) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 3714) + (sp-rnd-flt spt-launchrot-x (degrees -30.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -30.0) (degrees 60.0) 1.0) + ) + ) + +(defpartgroup group-ctysluma-spray-check-userdata-8 + :id 864 + :flags (unk-4) + :bounds (static-bspherem 0 -8 0 24) + :parts ((sp-item 3716 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7)) + (sp-item 3717 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7)) + ) + ) + +(defun check-drop-level-ctysluma-drop-userdata ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) + (when (< (-> arg2 y) (-> arg1 user-float)) + (let ((s3-0 (new 'stack-no-clear 'vector))) + (sp-kill-particle arg0 arg1) + (set-vector! s3-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) + (let ((t9-1 sp-launch-particles-var) + (a0-3 *sp-particle-system-2d*) + (a1-2 (-> *part-id-table* 3718)) + (a2-1 *launch-matrix*) + ) + (set! (-> a2-1 trans quad) (-> s3-0 quad)) + (t9-1 a0-3 a1-2 a2-1 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + ) + ) + (sparticle-motion-blur arg0 arg1 arg2) + (none) + ) + +(defpart 3716 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-flt spt-z (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-z (meters 0.1) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-fade-a -0.14222223 -0.42666668 1.0) + (sp-rnd-flt spt-accel-y -13.653334 1.3653333 1.0) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 32768.0) + (sp-func spt-func 'check-drop-level-ctysluma-drop-userdata) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 3714) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + ) + ) + +(defpart 3717 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.5 1.0) + (sp-flt spt-z (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-z (meters 0.1) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-fade-a -0.14222223 -0.42666668 1.0) + (sp-rnd-flt spt-accel-y -13.653334 1.3653333 1.0) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 32768.0) + (sp-func spt-func 'check-drop-level-ctysluma-drop-userdata) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 3714) + (sp-rnd-flt spt-launchrot-x (degrees -30.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -30.0) (degrees 60.0) 1.0) + ) + ) + +(defpart 3718 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.05) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-flt spt-omega 10.24) + (sp-rnd-flt spt-vel-y (meters 0.01) (meters 0.026666667) 1.0) + (sp-flt spt-fade-a -0.21333334) + (sp-rnd-flt spt-accel-y -4.096 -0.68266666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 150) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 3714) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + ) + ) + +(defpartgroup group-ctysluma-chimney + :id 865 + :bounds (static-bspherem 0 0 -10 24) + :parts ((sp-item 3719 :fade-after (meters 200) :falloff-to (meters 300)) + (sp-item 3720 :fade-after (meters 200) :flags (bit6)) + ) + ) + +(defpart 3720 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1)) + (sp-rnd-flt spt-scale-x (meters 16) (meters 0.1) 1.0) + (sp-flt spt-rot-x 1228.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 240.0) + (sp-flt spt-b 100.0) + (sp-rnd-flt spt-a 12.0 4.0 1.0) + (sp-flt spt-omega 822476.8) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 6144.0) + ) + ) + +(defpart 3719 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-rnd-flt spt-num 0.0 0.5 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.03) (meters 0.01) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.026666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g -0.36) + (sp-flt spt-fade-b -4.24) + (sp-rnd-flt spt-fade-a -0.053333335 -0.053333335 1.0) + (sp-rnd-flt spt-accel-x -2.7306666 -1.3653333 1.0) + (sp-rnd-flt spt-accel-y 0.4096 0.4096 1.0) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 2400) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300) + ) + (sp-int-plain-rnd spt-next-time 25 4 1) + (sp-launcher-by-id spt-next-launcher 3721) + ) + ) + +(defpart 3721 + :init-specs ((sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-int-plain-rnd spt-next-time 10 39 1) + (sp-launcher-by-id spt-next-launcher 3722) + ) + ) + +(defpart 3722 + :init-specs ((sp-rnd-flt spt-scalevel-x (meters 0.013333334) (meters 0.0033333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.14666666) + (sp-flt spt-fade-g -0.7866667) + (sp-flt spt-fade-b -0.88) + (sp-int-plain-rnd spt-next-time 105 44 1) + (sp-launcher-by-id spt-next-launcher 3723) + ) + ) + +(defpart 3723 + :init-specs ((sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.0016666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -1.2944444) + (sp-flt spt-fade-g -0.7111111) + (sp-flt spt-fade-b -0.094444446) + (sp-int-plain-rnd spt-next-time 150 29 1) + (sp-launcher-by-id spt-next-launcher 3724) + ) + ) + +(defpart 3724 + :init-specs ((sp-flt spt-fade-r 0.0) (sp-flt spt-fade-g 0.0) (sp-flt spt-fade-b 0.0) (sp-flt spt-fade-a -0.024)) + ) + +(defpartgroup group-ctysluma-chimney-smoke + :id 866 + :bounds (static-bspherem 0 0 -12 24) + :parts ((sp-item 3725 :fade-after (meters 200) :falloff-to (meters 300))) + ) + +(defpart 3725 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-rnd-flt spt-num 0.0 0.4 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 0.0 128.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 24.0 24.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.03) (meters 0.01) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.026666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.21333334) + (sp-flt spt-fade-g -0.21333334) + (sp-flt spt-fade-b -0.21333334) + (sp-rnd-flt spt-fade-a -0.026666667 -0.026666667 1.0) + (sp-rnd-flt spt-accel-x -2.7306666 -1.3653333 1.0) + (sp-rnd-flt spt-accel-y 0.4096 0.4096 1.0) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 1800) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300) + ) + (sp-int-plain-rnd spt-next-time 75 4 1) + (sp-launcher-by-id spt-next-launcher 3726) + ) + ) + +(defpart 3726 + :init-specs ((sp-rnd-flt spt-scalevel-x (meters 0.013333334) (meters 0.0033333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int-plain-rnd spt-next-time 105 44 1) + (sp-launcher-by-id spt-next-launcher 3727) + ) + ) + +(defpart 3727 + :init-specs ((sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.0016666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + ) + ) + +(defpartgroup group-ctysluma-sign-m5-8x4 + :id 867 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 8) + :rotate ((degrees 0) (degrees 4) (degrees 0)) + :parts ((sp-item 3728 :flags (is-3d launch-asap bit7)) + (sp-item 3729 :flags (is-3d launch-asap bit7)) + (sp-item 3730 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +(defpart 3730 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1)) + (sp-rnd-flt spt-scale-x (meters 32) (meters 0.1) 1.0) + (sp-flt spt-rot-x 2048.0) + (sp-rnd-flt spt-scale-y (meters 48) (meters 0.1) 1.0) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 8.0 4.0 1.0) + (sp-flt spt-omega 822476.8) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 3728 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xd :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.1)) + (sp-flt spt-scale-x (meters 16)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00d00 -2139062144 0 1 #x3fd00d00 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 3729 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xd :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters -0.1)) + (sp-flt spt-scale-x (meters 16)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00d00 -2139062144 0 1 #x3fd00d00 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpartgroup group-ctysluma-sign-metalhead-8x4 + :id 868 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 8) + :rotate ((degrees 0) (degrees 4) (degrees 0)) + :parts ((sp-item 3731 :flags (is-3d launch-asap bit7)) + (sp-item 3732 :flags (is-3d launch-asap bit7)) + (sp-item 3730 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +(defpart 3731 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xb :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.1)) + (sp-flt spt-scale-x (meters 16)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00b00 -2139062144 0 1 #x3fd00b00 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 3732 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xb :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters -0.1)) + (sp-flt spt-scale-x (meters 16)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00b00 -2139062144 0 1 #x3fd00b00 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpartgroup group-ctysluma-sign-crimson-4x8 + :id 869 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 8) + :rotate ((degrees 0) (degrees 4) (degrees 0)) + :parts ((sp-item 3733 :flags (is-3d launch-asap bit7)) + (sp-item 3734 :flags (is-3d launch-asap bit7)) + (sp-item 3735 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +(defpart 3735 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1)) + (sp-rnd-flt spt-scale-x (meters 48) (meters 0.1) 1.0) + (sp-flt spt-rot-x 2048.0) + (sp-rnd-flt spt-scale-y (meters 32) (meters 0.1) 1.0) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 8.0 4.0 1.0) + (sp-flt spt-omega 822476.8) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +(defpart 3733 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x3 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 16)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00300 -2139062144 0 1 #x3fd00300 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 3734 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x3 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters -0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 16)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00300 -2139062144 0 1 #x3fd00300 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpartgroup group-ctysluma-sign-doctors-4x4 + :id 870 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 4) + :rotate ((degrees 0) (degrees 4) (degrees 0)) + :parts ((sp-item 3736 :flags (is-3d launch-asap bit7)) + (sp-item 3737 :flags (is-3d launch-asap bit7)) + (sp-item 3738 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +(defpart 3738 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1)) + (sp-rnd-flt spt-scale-x (meters 32) (meters 0.1) 1.0) + (sp-flt spt-rot-x 2048.0) + (sp-rnd-flt spt-scale-y (meters 32) (meters 0.1) 1.0) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 8.0 4.0 1.0) + (sp-flt spt-omega 822476.8) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +(defpart 3736 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x5 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00500 -2139062144 0 1 #x3fd00500 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 3737 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x5 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters -0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00500 -2139062144 0 1 #x3fd00500 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpartgroup group-ctysluma-sign-hiphog-4x4 + :id 871 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 4) + :rotate ((degrees 0) (degrees 4) (degrees 0)) + :parts ((sp-item 3739 :flags (is-3d launch-asap bit7)) + (sp-item 3740 :flags (is-3d launch-asap bit7)) + (sp-item 3738 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +(defpart 3739 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00900 -2139062144 0 1 #x3fd00900 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 3740 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters -0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00900 -2139062144 0 1 #x3fd00900 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpartgroup group-ctysluma-sign-blank-4x4 + :id 872 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 4) + :rotate ((degrees 0) (degrees 4) (degrees 0)) + :parts ((sp-item 3741 :flags (is-3d launch-asap bit7)) + (sp-item 3742 :flags (is-3d launch-asap bit7)) + (sp-item 3738 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +(defpart 3741 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x7 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00700 -2139062144 0 1 #x3fd00700 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 3742 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x7 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters -0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00700 -2139062144 0 1 #x3fd00700 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) diff --git a/goal_src/jak2/levels/palace/outside/palace-ocean.gc b/goal_src/jak2/levels/palace/outside/palace-ocean.gc index 72e57d214b..4ef489ac43 100644 --- a/goal_src/jak2/levels/palace/outside/palace-ocean.gc +++ b/goal_src/jak2/levels/palace/outside/palace-ocean.gc @@ -5,5 +5,4986 @@ ;; name in dgo: palace-ocean ;; dgos: PALOUT +;; og:ignore-from-loc + ;; DECOMP BEGINS +(define *ocean-spheres-palace* + (new 'static 'ocean-spheres :spheres (new 'static 'inline-array sphere 36 + (new 'static 'sphere :x -1572864.0 :z -5505024.0 :r 2224365.5) + (new 'static 'sphere :x 1572864.0 :z -5505024.0 :r 2224365.5) + (new 'static 'sphere :x 4718592.0 :z -5505024.0 :r 2224365.5) + (new 'static 'sphere :x 7864320.0 :z -5505024.0 :r 2224365.5) + (new 'static 'sphere :x 11010048.0 :z -5505024.0 :r 2224365.5) + (new 'static 'sphere :x 14155776.0 :z -5505024.0 :r 2224365.5) + (new 'static 'sphere :x -1572864.0 :z -2359296.0 :r 2224365.5) + (new 'static 'sphere :x 1572864.0 :z -2359296.0 :r 2224365.5) + (new 'static 'sphere :x 4718592.0 :z -2359296.0 :r 2224365.5) + (new 'static 'sphere :x 7864320.0 :z -2359296.0 :r 2224365.5) + (new 'static 'sphere :x 11010048.0 :z -2359296.0 :r 2224365.5) + (new 'static 'sphere :x 14155776.0 :z -2359296.0 :r 2224365.5) + (new 'static 'sphere :x -1572864.0 :z 786432.0 :r 2224365.5) + (new 'static 'sphere :x 1572864.0 :z 786432.0 :r 2224365.5) + (new 'static 'sphere :x 4718592.0 :z 786432.0 :r 2224365.5) + (new 'static 'sphere :x 7864320.0 :z 786432.0 :r 2224365.5) + (new 'static 'sphere :x 11010048.0 :z 786432.0 :r 2224365.5) + (new 'static 'sphere :x 14155776.0 :z 786432.0 :r 2224365.5) + (new 'static 'sphere :x -1572864.0 :z 3932160.0 :r 2224365.5) + (new 'static 'sphere :x 1572864.0 :z 3932160.0 :r 2224365.5) + (new 'static 'sphere :x 4718592.0 :z 3932160.0 :r 2224365.5) + (new 'static 'sphere :x 7864320.0 :z 3932160.0 :r 2224365.5) + (new 'static 'sphere :x 11010048.0 :z 3932160.0 :r 2224365.5) + (new 'static 'sphere :x 14155776.0 :z 3932160.0 :r 2224365.5) + (new 'static 'sphere :x -1572864.0 :z 7077888.0 :r 2224365.5) + (new 'static 'sphere :x 1572864.0 :z 7077888.0 :r 2224365.5) + (new 'static 'sphere :x 4718592.0 :z 7077888.0 :r 2224365.5) + (new 'static 'sphere :x 7864320.0 :z 7077888.0 :r 2224365.5) + (new 'static 'sphere :x 11010048.0 :z 7077888.0 :r 2224365.5) + (new 'static 'sphere :x 14155776.0 :z 7077888.0 :r 2224365.5) + (new 'static 'sphere :x -1572864.0 :z 10223616.0 :r 2224365.5) + (new 'static 'sphere :x 1572864.0 :z 10223616.0 :r 2224365.5) + (new 'static 'sphere :x 4718592.0 :z 10223616.0 :r 2224365.5) + (new 'static 'sphere :x 7864320.0 :z 10223616.0 :r 2224365.5) + (new 'static 'sphere :x 11010048.0 :z 10223616.0 :r 2224365.5) + (new 'static 'sphere :x 14155776.0 :z 10223616.0 :r 2224365.5) + ) + ) + ) + +(define *ocean-colors-palace* + (new 'static 'ocean-colors :colors (new 'static 'array rgba 2548 + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #xb :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2a :a #x80) + (new 'static 'rgba :r #xd :g #x25 :b #x29 :a #x80) + (new 'static 'rgba :r #xd :g #x25 :b #x29 :a #x80) + (new 'static 'rgba :r #xf :g #x26 :b #x2a :a #x80) + (new 'static 'rgba :r #xe :g #x25 :b #x29 :a #x80) + (new 'static 'rgba :r #x10 :g #x25 :b #x26 :a #x80) + (new 'static 'rgba :r #xf :g #x25 :b #x25 :a #x80) + (new 'static 'rgba :r #xf :g #x26 :b #x28 :a #x80) + (new 'static 'rgba :r #xe :g #x26 :b #x2a :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x26 :b #x2a :a #x80) + (new 'static 'rgba :r #x10 :g #x27 :b #x2a :a #x80) + (new 'static 'rgba :r #x10 :g #x27 :b #x2a :a #x80) + (new 'static 'rgba :r #x12 :g #x27 :b #x29 :a #x80) + (new 'static 'rgba :r #x14 :g #x28 :b #x29 :a #x80) + (new 'static 'rgba :r #x13 :g #x27 :b #x28 :a #x80) + (new 'static 'rgba :r #x19 :g #x27 :b #x23 :a #x80) + (new 'static 'rgba :r #x19 :g #x27 :b #x21 :a #x80) + (new 'static 'rgba :r #x19 :g #x28 :b #x23 :a #x80) + (new 'static 'rgba :r #x17 :g #x28 :b #x27 :a #x80) + (new 'static 'rgba :r #x12 :g #x27 :b #x29 :a #x80) + (new 'static 'rgba :r #xf :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #x11 :g #x27 :b #x2a :a #x80) + (new 'static 'rgba :r #x11 :g #x27 :b #x29 :a #x80) + (new 'static 'rgba :r #x12 :g #x27 :b #x29 :a #x80) + (new 'static 'rgba :r #x15 :g #x29 :b #x29 :a #x80) + (new 'static 'rgba :r #x16 :g #x28 :b #x28 :a #x80) + (new 'static 'rgba :r #x17 :g #x28 :b #x26 :a #x80) + (new 'static 'rgba :r #x20 :g #x28 :b #x1d :a #x80) + (new 'static 'rgba :r #x23 :g #x2a :b #x1f :a #x80) + (new 'static 'rgba :r #x23 :g #x2a :b #x1f :a #x80) + (new 'static 'rgba :r #x21 :g #x2a :b #x20 :a #x80) + (new 'static 'rgba :r #x1b :g #x2a :b #x26 :a #x80) + (new 'static 'rgba :r #x14 :g #x29 :b #x2a :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x12 :g #x28 :b #x2c :a #x80) + (new 'static 'rgba :r #x13 :g #x29 :b #x2c :a #x80) + (new 'static 'rgba :r #x11 :g #x27 :b #x29 :a #x80) + (new 'static 'rgba :r #x13 :g #x28 :b #x2a :a #x80) + (new 'static 'rgba :r #x16 :g #x29 :b #x2a :a #x80) + (new 'static 'rgba :r #x18 :g #x29 :b #x28 :a #x80) + (new 'static 'rgba :r #x19 :g #x2a :b #x27 :a #x80) + (new 'static 'rgba :r #x1a :g #x29 :b #x25 :a #x80) + (new 'static 'rgba :r #x27 :g #x29 :b #x19 :a #x80) + (new 'static 'rgba :r #x29 :g #x2b :b #x1b :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1b :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1b :a #x80) + (new 'static 'rgba :r #x24 :g #x2b :b #x20 :a #x80) + (new 'static 'rgba :r #x1b :g #x2b :b #x27 :a #x80) + (new 'static 'rgba :r #x12 :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #x14 :g #x2a :b #x2d :a #x80) + (new 'static 'rgba :r #x14 :g #x29 :b #x2b :a #x80) + (new 'static 'rgba :r #x13 :g #x27 :b #x29 :a #x80) + (new 'static 'rgba :r #x15 :g #x29 :b #x29 :a #x80) + (new 'static 'rgba :r #x18 :g #x2a :b #x29 :a #x80) + (new 'static 'rgba :r #x19 :g #x2a :b #x27 :a #x80) + (new 'static 'rgba :r #x1c :g #x2a :b #x26 :a #x80) + (new 'static 'rgba :r #x29 :g #x2b :b #x1b :a #x80) + (new 'static 'rgba :r #x2d :g #x2b :b #x16 :a #x80) + (new 'static 'rgba :r #x30 :g #x2c :b #x16 :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x17 :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x16 :a #x80) + (new 'static 'rgba :r #x2e :g #x2d :b #x1a :a #x80) + (new 'static 'rgba :r #x23 :g #x2c :b #x23 :a #x80) + (new 'static 'rgba :r #x17 :g #x2b :b #x2b :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2d :a #x80) + (new 'static 'rgba :r #x13 :g #x2a :b #x2c :a #x80) + (new 'static 'rgba :r #x14 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x16 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x15 :g #x29 :b #x2a :a #x80) + (new 'static 'rgba :r #x16 :g #x29 :b #x29 :a #x80) + (new 'static 'rgba :r #x19 :g #x2a :b #x29 :a #x80) + (new 'static 'rgba :r #x1a :g #x2a :b #x26 :a #x80) + (new 'static 'rgba :r #x1d :g #x2a :b #x24 :a #x80) + (new 'static 'rgba :r #x2a :g #x2b :b #x1a :a #x80) + (new 'static 'rgba :r #x31 :g #x2c :b #x14 :a #x80) + (new 'static 'rgba :r #x33 :g #x2c :b #x13 :a #x80) + (new 'static 'rgba :r #x35 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x34 :g #x2e :b #x16 :a #x80) + (new 'static 'rgba :r #x2a :g #x2c :b #x1d :a #x80) + (new 'static 'rgba :r #x1d :g #x2c :b #x27 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #x11 :g #x28 :b #x2a :a #x80) + (new 'static 'rgba :r #x12 :g #x28 :b #x2a :a #x80) + (new 'static 'rgba :r #x15 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x16 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x18 :g #x2a :b #x2a :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x2a :a #x80) + (new 'static 'rgba :r #x1b :g #x2a :b #x27 :a #x80) + (new 'static 'rgba :r #x1f :g #x2b :b #x25 :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1b :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x15 :a #x80) + (new 'static 'rgba :r #x34 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x2f :g #x2d :b #x19 :a #x80) + (new 'static 'rgba :r #x22 :g #x2c :b #x23 :a #x80) + (new 'static 'rgba :r #x16 :g #x2c :b #x2d :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x14 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x14 :g #x2a :b #x2d :a #x80) + (new 'static 'rgba :r #x11 :g #x27 :b #x28 :a #x80) + (new 'static 'rgba :r #x13 :g #x28 :b #x2a :a #x80) + (new 'static 'rgba :r #x16 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x18 :g #x2b :b #x2c :a #x80) + (new 'static 'rgba :r #x19 :g #x2b :b #x2b :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x2a :a #x80) + (new 'static 'rgba :r #x1c :g #x2b :b #x28 :a #x80) + (new 'static 'rgba :r #x1f :g #x2b :b #x26 :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1c :a #x80) + (new 'static 'rgba :r #x33 :g #x2d :b #x16 :a #x80) + (new 'static 'rgba :r #x34 :g #x2d :b #x15 :a #x80) + (new 'static 'rgba :r #x36 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x36 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x36 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x33 :g #x2d :b #x16 :a #x80) + (new 'static 'rgba :r #x28 :g #x2c :b #x1f :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x29 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x16 :g #x2c :b #x2e :a #x80) + (new 'static 'rgba :r #x15 :g #x2b :b #x2d :a #x80) + (new 'static 'rgba :r #x14 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x14 :g #x29 :b #x2b :a #x80) + (new 'static 'rgba :r #x15 :g #x2a :b #x2a :a #x80) + (new 'static 'rgba :r #x17 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x18 :g #x2b :b #x2b :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x2a :a #x80) + (new 'static 'rgba :r #x1d :g #x2c :b #x28 :a #x80) + (new 'static 'rgba :r #x1f :g #x2c :b #x26 :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1c :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x16 :a #x80) + (new 'static 'rgba :r #x34 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x36 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x36 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x34 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x2c :g #x2c :b #x1c :a #x80) + (new 'static 'rgba :r #x1d :g #x2b :b #x26 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x15 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x18 :g #x2d :b #x2f :a #x80) + (new 'static 'rgba :r #x17 :g #x2d :b #x2f :a #x80) + (new 'static 'rgba :r #x17 :g #x2d :b #x2f :a #x80) + (new 'static 'rgba :r #x16 :g #x2d :b #x2e :a #x80) + (new 'static 'rgba :r #x16 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x17 :g #x2c :b #x2d :a #x80) + (new 'static 'rgba :r #x17 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x18 :g #x2b :b #x2c :a #x80) + (new 'static 'rgba :r #x18 :g #x2c :b #x2b :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x29 :a #x80) + (new 'static 'rgba :r #x1c :g #x2b :b #x27 :a #x80) + (new 'static 'rgba :r #x1e :g #x2b :b #x25 :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1b :a #x80) + (new 'static 'rgba :r #x32 :g #x2c :b #x15 :a #x80) + (new 'static 'rgba :r #x33 :g #x2c :b #x13 :a #x80) + (new 'static 'rgba :r #x35 :g #x2d :b #x13 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x34 :g #x2d :b #x13 :a #x80) + (new 'static 'rgba :r #x2e :g #x2d :b #x1a :a #x80) + (new 'static 'rgba :r #x1f :g #x2b :b #x25 :a #x80) + (new 'static 'rgba :r #x14 :g #x2a :b #x2d :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x14 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x15 :g #x2d :b #x2f :a #x80) + (new 'static 'rgba :r #x19 :g #x2e :b #x2e :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x17 :g #x2e :b #x2f :a #x80) + (new 'static 'rgba :r #x17 :g #x2d :b #x2d :a #x80) + (new 'static 'rgba :r #x18 :g #x2d :b #x2e :a #x80) + (new 'static 'rgba :r #x17 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x16 :g #x2a :b #x2a :a #x80) + (new 'static 'rgba :r #x18 :g #x2b :b #x2a :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x29 :a #x80) + (new 'static 'rgba :r #x1d :g #x2b :b #x27 :a #x80) + (new 'static 'rgba :r #x1f :g #x2b :b #x25 :a #x80) + (new 'static 'rgba :r #x2c :g #x2d :b #x1c :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x16 :a #x80) + (new 'static 'rgba :r #x34 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x36 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x33 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x2b :g #x2b :b #x1a :a #x80) + (new 'static 'rgba :r #x1d :g #x2a :b #x24 :a #x80) + (new 'static 'rgba :r #x13 :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x15 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x19 :g #x2f :b #x2f :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x19 :g #x2f :b #x30 :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x2f :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x2e :a #x80) + (new 'static 'rgba :r #x19 :g #x2e :b #x2e :a #x80) + (new 'static 'rgba :r #x17 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x16 :g #x2b :b #x2b :a #x80) + (new 'static 'rgba :r #x18 :g #x2b :b #x2a :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x29 :a #x80) + (new 'static 'rgba :r #x1c :g #x2b :b #x26 :a #x80) + (new 'static 'rgba :r #x1e :g #x2a :b #x24 :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1c :a #x80) + (new 'static 'rgba :r #x32 :g #x2e :b #x16 :a #x80) + (new 'static 'rgba :r #x34 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x33 :g #x2e :b #x16 :a #x80) + (new 'static 'rgba :r #x2e :g #x2c :b #x18 :a #x80) + (new 'static 'rgba :r #x23 :g #x2a :b #x1e :a #x80) + (new 'static 'rgba :r #x16 :g #x28 :b #x27 :a #x80) + (new 'static 'rgba :r #x11 :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x17 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x17 :g #x2e :b #x2f :a #x80) + (new 'static 'rgba :r #x17 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x17 :g #x2e :b #x2f :a #x80) + (new 'static 'rgba :r #x17 :g #x2e :b #x2f :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x2e :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x2e :a #x80) + (new 'static 'rgba :r #x17 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x19 :g #x2d :b #x2c :a #x80) + (new 'static 'rgba :r #x1a :g #x2d :b #x2b :a #x80) + (new 'static 'rgba :r #x19 :g #x2b :b #x29 :a #x80) + (new 'static 'rgba :r #x1b :g #x2b :b #x27 :a #x80) + (new 'static 'rgba :r #x1d :g #x2b :b #x25 :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1c :a #x80) + (new 'static 'rgba :r #x31 :g #x2d :b #x17 :a #x80) + (new 'static 'rgba :r #x34 :g #x2e :b #x16 :a #x80) + (new 'static 'rgba :r #x34 :g #x2e :b #x16 :a #x80) + (new 'static 'rgba :r #x32 :g #x2e :b #x18 :a #x80) + (new 'static 'rgba :r #x2c :g #x2d :b #x1c :a #x80) + (new 'static 'rgba :r #x24 :g #x2c :b #x22 :a #x80) + (new 'static 'rgba :r #x1b :g #x2b :b #x27 :a #x80) + (new 'static 'rgba :r #x14 :g #x2a :b #x2d :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x17 :g #x32 :b #x34 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x16 :g #x2d :b #x2f :a #x80) + (new 'static 'rgba :r #x16 :g #x2d :b #x2f :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x2f :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x2e :a #x80) + (new 'static 'rgba :r #x1a :g #x2f :b #x2f :a #x80) + (new 'static 'rgba :r #x1a :g #x2e :b #x2d :a #x80) + (new 'static 'rgba :r #x18 :g #x2b :b #x2b :a #x80) + (new 'static 'rgba :r #x19 :g #x2a :b #x28 :a #x80) + (new 'static 'rgba :r #x1c :g #x2b :b #x26 :a #x80) + (new 'static 'rgba :r #x2a :g #x2d :b #x1d :a #x80) + (new 'static 'rgba :r #x30 :g #x2e :b #x1a :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x17 :a #x80) + (new 'static 'rgba :r #x33 :g #x2e :b #x16 :a #x80) + (new 'static 'rgba :r #x2f :g #x2d :b #x1a :a #x80) + (new 'static 'rgba :r #x25 :g #x2d :b #x23 :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x2a :a #x80) + (new 'static 'rgba :r #x15 :g #x2a :b #x2d :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x17 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x17 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x11 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x16 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x16 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x17 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x16 :g #x2d :b #x2e :a #x80) + (new 'static 'rgba :r #x17 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x19 :g #x2c :b #x2a :a #x80) + (new 'static 'rgba :r #x1c :g #x2c :b #x28 :a #x80) + (new 'static 'rgba :r #x2c :g #x2d :b #x1c :a #x80) + (new 'static 'rgba :r #x2e :g #x2c :b #x19 :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x17 :a #x80) + (new 'static 'rgba :r #x2d :g #x2d :b #x1b :a #x80) + (new 'static 'rgba :r #x22 :g #x2c :b #x24 :a #x80) + (new 'static 'rgba :r #x16 :g #x2b :b #x2d :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x19 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x17 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x12 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x16 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x16 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x18 :g #x2c :b #x2d :a #x80) + (new 'static 'rgba :r #x23 :g #x2d :b #x24 :a #x80) + (new 'static 'rgba :r #x29 :g #x2d :b #x1d :a #x80) + (new 'static 'rgba :r #x2f :g #x2c :b #x18 :a #x80) + (new 'static 'rgba :r #x2d :g #x2c :b #x18 :a #x80) + (new 'static 'rgba :r #x22 :g #x2b :b #x21 :a #x80) + (new 'static 'rgba :r #x18 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x19 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x18 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x16 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x14 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x1a :g #x2c :b #x2b :a #x80) + (new 'static 'rgba :r #x21 :g #x2c :b #x25 :a #x80) + (new 'static 'rgba :r #x29 :g #x2c :b #x1d :a #x80) + (new 'static 'rgba :r #x2c :g #x2c :b #x19 :a #x80) + (new 'static 'rgba :r #x25 :g #x2c :b #x20 :a #x80) + (new 'static 'rgba :r #x1a :g #x2c :b #x2a :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1a :g #x36 :b #x36 :a #x80) + (new 'static 'rgba :r #x18 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x17 :g #x33 :b #x34 :a #x80) + (new 'static 'rgba :r #x16 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x19 :g #x2c :b #x2b :a #x80) + (new 'static 'rgba :r #x20 :g #x2c :b #x25 :a #x80) + (new 'static 'rgba :r #x25 :g #x2c :b #x20 :a #x80) + (new 'static 'rgba :r #x22 :g #x2d :b #x24 :a #x80) + (new 'static 'rgba :r #x19 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x27 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x8 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1a :g #x35 :b #x35 :a #x80) + (new 'static 'rgba :r #x18 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x17 :g #x32 :b #x34 :a #x80) + (new 'static 'rgba :r #x17 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x31 :b #x32 :a #x80) + (new 'static 'rgba :r #x17 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x12 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x17 :g #x2b :b #x2b :a #x80) + (new 'static 'rgba :r #x1b :g #x2c :b #x29 :a #x80) + (new 'static 'rgba :r #x1a :g #x2c :b #x2a :a #x80) + (new 'static 'rgba :r #x16 :g #x2c :b #x2e :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1a :g #x35 :b #x35 :a #x80) + (new 'static 'rgba :r #x19 :g #x35 :b #x36 :a #x80) + (new 'static 'rgba :r #x1a :g #x35 :b #x35 :a #x80) + (new 'static 'rgba :r #x18 :g #x33 :b #x35 :a #x80) + (new 'static 'rgba :r #x17 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x13 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x14 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1a :g #x35 :b #x35 :a #x80) + (new 'static 'rgba :r #x19 :g #x35 :b #x36 :a #x80) + (new 'static 'rgba :r #x1a :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x18 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x12 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x18 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x19 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x18 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x19 :g #x33 :b #x35 :a #x80) + (new 'static 'rgba :r #x17 :g #x32 :b #x34 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x19 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x19 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x18 :g #x33 :b #x34 :a #x80) + (new 'static 'rgba :r #x17 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x18 :g #x33 :b #x34 :a #x80) + (new 'static 'rgba :r #x18 :g #x33 :b #x34 :a #x80) + (new 'static 'rgba :r #x17 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x12 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x17 :g #x32 :b #x34 :a #x80) + (new 'static 'rgba :r #x17 :g #x32 :b #x34 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x17 :g #x32 :b #x34 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x11 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x17 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x16 :g #x2f :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2c :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x13 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #xb :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x14 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xb :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xf :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xb :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + ) + +(define *ocean-near-indices-palace* + (new 'static 'ocean-near-indices + :data (new 'static 'inline-array ocean-near-index 1 (new 'static 'ocean-near-index)) + ) + ) + +(define *ocean-trans-indices-palace* + (new 'static 'ocean-trans-indices :data (new 'static 'inline-array ocean-trans-index 2304 + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + ) + ) + ) + +(define *ocean-mid-indices-palace* (new 'static 'ocean-mid-indices :data (new 'static 'array uint16 36 + #x1 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + ) + +(define *ocean-mid-masks-palace* + (new 'static 'ocean-mid-masks + :data (new 'static 'inline-array ocean-mid-mask 2 + (new 'static 'ocean-mid-mask) + (new 'static 'ocean-mid-mask :mask (new 'static 'array uint8 8 #x0 #x0 #x0 #x7f #x7f #x7f #x7f #x7f)) + ) + ) + ) + +(define *ocean-map-palace* (new 'static 'ocean-map + :start-corner (new 'static 'vector :x -3145728.0 :z -7077888.0 :w 1.0) + :far-color (new 'static 'vector :x 2.509804 :y 30.619608 :z 36.64314 :w 128.0) + ) + ) + +(set! (-> *ocean-map-palace* ocean-spheres) *ocean-spheres-palace*) + +(set! (-> *ocean-map-palace* ocean-colors) *ocean-colors-palace*) + +(set! (-> *ocean-map-palace* ocean-mid-masks) *ocean-mid-masks-palace*) + +(set! (-> *ocean-map-palace* ocean-mid-indices) *ocean-mid-indices-palace*) + +(set! (-> *ocean-map-palace* ocean-trans-indices) *ocean-trans-indices-palace*) + +(set! (-> *ocean-map-palace* ocean-near-indices) *ocean-near-indices-palace*) diff --git a/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc b/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc index d23fec6988..6ad32a617b 100644 --- a/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type collide-rider (deftype collide-rider (structure) ((rider-handle uint64 :offset-assert 0) (sticky-prim basic :offset-assert 8) @@ -13,7 +11,6 @@ :flag-assert #x900000020 ) -;; definition for method 3 of type collide-rider (defmethod inspect collide-rider ((obj collide-rider)) (when (not obj) (set! obj obj) @@ -28,7 +25,6 @@ obj ) -;; definition of type collide-rider-pool (deftype collide-rider-pool (basic) ((alloc-count int32 :offset-assert 4) (riders collide-rider 20 :inline :offset-assert 16) @@ -42,7 +38,6 @@ ) ) -;; definition for method 3 of type collide-rider-pool (defmethod inspect collide-rider-pool ((obj collide-rider-pool)) (when (not obj) (set! obj obj) @@ -55,8 +50,6 @@ obj ) -;; definition for method 10 of type collide-rider-pool -;; WARN: Return type mismatch int vs none. (defmethod prepare collide-rider-pool ((obj collide-rider-pool)) "Gets this pool ready to be used to allow allocations. This should be called once at the start of every frame." (set! (-> obj alloc-count) 0) @@ -64,7 +57,6 @@ (none) ) -;; definition of type pull-rider-info (deftype pull-rider-info (structure) ((rider collide-rider :offset-assert 0) (rider-cshape collide-shape-moving :offset-assert 4) @@ -76,7 +68,6 @@ :flag-assert #x900000020 ) -;; definition for method 3 of type pull-rider-info (defmethod inspect pull-rider-info ((obj pull-rider-info)) (when (not obj) (set! obj obj) @@ -91,22 +82,16 @@ obj ) -;; failed to figure out what this is: (kmemopen global "collide-lists") -;; definition for symbol *collide-hit-by-player-list*, type engine (define *collide-hit-by-player-list* (new 'global 'engine 'collide-hit-by-player-list 640 connection)) -;; definition for symbol *collide-hit-by-others-list*, type engine (define *collide-hit-by-others-list* (new 'global 'engine 'collide-hit-by-others-list 768 connection)) -;; definition for symbol *collide-player-list*, type engine (define *collide-player-list* (new 'global 'engine 'collide-player-list 32 connection)) -;; failed to figure out what this is: (kmemclose) -;; definition of type overlaps-others-params (deftype overlaps-others-params (structure) ((options overlaps-others-options :offset-assert 0) (collide-with-filter collide-spec :offset-assert 4) @@ -120,7 +105,6 @@ :flag-assert #x900000018 ) -;; definition for method 3 of type overlaps-others-params (defmethod inspect overlaps-others-params ((obj overlaps-others-params)) (when (not obj) (set! obj obj) @@ -137,26 +121,24 @@ obj ) -;; definition of type move-above-ground-params (deftype move-above-ground-params (structure) ((gnd-collide-with collide-spec :offset-assert 0) (popup float :offset-assert 4) - (dont-move-if-overlaps? basic :offset-assert 8) - (hover-if-no-ground? basic :offset-assert 12) + (dont-move-if-overlaps? symbol :offset-assert 8) + (hover-if-no-ground? symbol :offset-assert 12) (overlaps-params overlaps-others-params :inline :offset-assert 16) (new-pos vector :inline :offset-assert 48) (old-gspot-pos vector :inline :offset-assert 64) (old-gspot-normal vector :inline :offset-assert 80) (pat pat-surface :offset-assert 96) - (on-ground? basic :offset-assert 100) - (do-move? basic :offset-assert 104) + (on-ground? symbol :offset-assert 100) + (do-move? symbol :offset-assert 104) ) :method-count-assert 9 :size-assert #x6c :flag-assert #x90000006c ) -;; definition for method 3 of type move-above-ground-params (defmethod inspect move-above-ground-params ((obj move-above-ground-params)) (when (not obj) (set! obj obj) @@ -178,7 +160,6 @@ obj ) -;; definition of type collide-prim-core (deftype collide-prim-core (structure) ((world-sphere vector :inline :offset-assert 0) (collide-as collide-spec :offset-assert 16) @@ -193,7 +174,6 @@ :flag-assert #x900000020 ) -;; definition for method 3 of type collide-prim-core (defmethod inspect collide-prim-core ((obj collide-prim-core)) (when (not obj) (set! obj obj) @@ -211,7 +191,6 @@ obj ) -;; definition of type collide-shape-prim (deftype collide-shape-prim (basic) ((cshape collide-shape :offset-assert 4) (prim-id uint32 :offset-assert 8) @@ -246,7 +225,6 @@ ) ) -;; definition for method 3 of type collide-shape-prim (defmethod inspect collide-shape-prim ((obj collide-shape-prim)) (when (not obj) (set! obj obj) @@ -492,7 +470,6 @@ obj ) -;; definition of type collide-shape-prim-sphere (deftype collide-shape-prim-sphere (collide-shape-prim) ((pat pat-surface :offset 64) (nav-radius float :offset 68) @@ -505,7 +482,6 @@ ) ) -;; definition for method 3 of type collide-shape-prim-sphere (defmethod inspect collide-shape-prim-sphere ((obj collide-shape-prim-sphere)) (when (not obj) (set! obj obj) @@ -753,7 +729,6 @@ obj ) -;; definition of type collide-shape-prim-mesh (deftype collide-shape-prim-mesh (collide-shape-prim) ((mesh collide-mesh :offset 64) (mesh-id int32 :offset 68) @@ -768,7 +743,6 @@ ) ) -;; definition for method 3 of type collide-shape-prim-mesh (defmethod inspect collide-shape-prim-mesh ((obj collide-shape-prim-mesh)) (when (not obj) (set! obj obj) @@ -1018,7 +992,6 @@ obj ) -;; definition of type collide-shape-prim-group (deftype collide-shape-prim-group (collide-shape-prim) ((num-children uint8 :offset 64) (num-alloc-children uint8 :offset 65) @@ -1032,7 +1005,6 @@ ) ) -;; definition for method 3 of type collide-shape-prim-group (defmethod inspect collide-shape-prim-group ((obj collide-shape-prim-group)) (when (not obj) (set! obj obj) @@ -1281,7 +1253,6 @@ obj ) -;; definition of type collide-shape (deftype collide-shape (trsqv) ((actor-hash-index int16 :offset 12) (process process-drawable :offset-assert 140) @@ -1329,14 +1300,13 @@ (set-collide-as! (_type_ collide-spec) none 48) (collide-shape-method-49 (_type_ int int int) none 49) (collide-shape-method-50 (_type_ process object float float float) none 50) - (collide-shape-method-51 () none 51) + (collide-shape-method-51 (_type_) none 51) (water-info-init! (_type_ water-info collide-action) water-info 52) (collide-shape-method-53 (_type_) none 53) (collide-shape-method-54 (_type_) none 54) ) ) -;; definition for method 3 of type collide-shape (defmethod inspect collide-shape ((obj collide-shape)) (when (not obj) (set! obj obj) @@ -1580,34 +1550,35 @@ obj ) -;; definition of type collide-shape-moving (deftype collide-shape-moving (collide-shape) - ((rider-time time-frame :offset-assert 200) - (rider-last-move vector :inline :offset-assert 208) - (trans-old vector :inline :offset-assert 224) - (poly-pat pat-surface :offset 272) - (cur-pat pat-surface :offset-assert 276) - (ground-pat pat-surface :offset-assert 280) - (status cshape-moving-flags :offset-assert 288) - (old-status cshape-moving-flags :offset-assert 296) - (prev-status cshape-moving-flags :offset-assert 304) - (reaction-flag cshape-reaction-flags :offset-assert 312) - (reaction (function control-info collide-query vector vector cshape-moving-flags) :offset-assert 316) - (no-reaction function :offset-assert 320) - (local-normal vector :inline :offset-assert 336) - (surface-normal vector :inline :offset-assert 352) - (poly-normal vector :inline :offset-assert 368) - (ground-poly-normal vector :inline :offset-assert 384) - (gspot-pos vector :inline :offset-assert 400) - (gspot-normal vector :inline :offset-assert 416) - (grount-touch-point vector :inline :offset-assert 432) - (ground-impact-vel meters :offset-assert 448) - (surface-angle float :offset-assert 452) - (poly-angle float :offset-assert 456) - (touch-angle float :offset-assert 460) - (coverage float :offset-assert 464) - (dynam dynamics :offset-assert 468) - (surf surface :offset-assert 472) + ((rider-time time-frame :offset-assert 200) + (rider-last-move vector :inline :offset-assert 208) + (trans-old vector :inline :offset-assert 224) + (csm-unk-vec-981i2u312 vector :inline :offset 240) + (csm-unk-vec-klj1n23 vector :inline :offset 256) + (poly-pat pat-surface :offset 272) + (cur-pat pat-surface :offset-assert 276) + (ground-pat pat-surface :offset-assert 280) + (status cshape-moving-flags :offset-assert 288) + (old-status cshape-moving-flags :offset-assert 296) + (prev-status cshape-moving-flags :offset-assert 304) + (reaction-flag cshape-reaction-flags :offset-assert 312) + (reaction (function control-info collide-query vector vector cshape-moving-flags) :offset-assert 316) + (no-reaction function :offset-assert 320) + (local-normal vector :inline :offset-assert 336) + (surface-normal vector :inline :offset-assert 352) + (poly-normal vector :inline :offset-assert 368) + (ground-poly-normal vector :inline :offset-assert 384) + (gspot-pos vector :inline :offset-assert 400) + (gspot-normal vector :inline :offset-assert 416) + (grount-touch-point vector :inline :offset-assert 432) + (ground-impact-vel meters :offset-assert 448) + (surface-angle float :offset-assert 452) + (poly-angle float :offset-assert 456) + (touch-angle float :offset-assert 460) + (coverage float :offset-assert 464) + (dynam dynamics :offset-assert 468) + (surf surface :offset-assert 472) ) :method-count-assert 68 :size-assert #x1dc @@ -1617,7 +1588,7 @@ (collide-shape-moving-method-55 (_type_ collide-query collide-spec float float float) symbol 55) (collide-shape-moving-method-56 (_type_ pat-surface) none 56) (collide-shape-moving-method-57 () none 57) - (collide-shape-moving-method-58 () none 58) + (collide-shape-moving-method-58 (_type_ vector overlaps-others-params) symbol 58) (collide-shape-moving-method-59 () none 59) (collide-shape-moving-method-60 () none 60) (collide-shape-moving-method-61 () none 61) @@ -1630,7 +1601,6 @@ ) ) -;; definition for method 3 of type collide-shape-moving (defmethod inspect collide-shape-moving ((obj collide-shape-moving)) (when (not obj) (set! obj obj) @@ -1900,7 +1870,6 @@ obj ) -;; definition for method 0 of type collide-shape-prim (defmethod new collide-shape-prim ((allocation symbol) (type-to-make type) (arg0 collide-shape) (arg1 uint) (arg2 int)) (let ((v0-0 (object-new allocation type-to-make arg2))) (set! (-> v0-0 cshape) arg0) @@ -1914,8 +1883,6 @@ ) ) -;; definition for method 0 of type collide-shape-prim-sphere -;; WARN: Return type mismatch collide-shape-prim vs collide-shape-prim-sphere. (defmethod new collide-shape-prim-sphere ((allocation symbol) (type-to-make type) (arg0 collide-shape) (arg1 uint)) (let ((v0-0 ((method-of-type collide-shape-prim new) allocation type-to-make arg0 arg1 80))) (set! (-> (the-as collide-shape-prim-sphere v0-0) pat) @@ -1926,8 +1893,6 @@ ) ) -;; definition for method 0 of type collide-shape-prim-mesh -;; WARN: Return type mismatch collide-shape-prim vs collide-shape-prim-mesh. (defmethod new collide-shape-prim-mesh ((allocation symbol) (type-to-make type) (arg0 collide-shape) (arg1 uint) (arg2 uint)) (let ((v0-0 ((method-of-type collide-shape-prim new) allocation type-to-make arg0 arg2 80))) (set! (-> (the-as collide-shape-prim-mesh v0-0) mesh) #f) @@ -1938,8 +1903,6 @@ ) ) -;; definition for method 0 of type collide-shape-prim-group -;; WARN: Return type mismatch collide-shape-prim vs collide-shape-prim-group. (defmethod new collide-shape-prim-group ((allocation symbol) (type-to-make type) (arg0 collide-shape) (arg1 uint) (arg2 int)) (let ((v0-0 ((method-of-type collide-shape-prim new) allocation type-to-make arg0 (the-as uint arg2) 80))) (set! (-> (the-as collide-shape-prim-group v0-0) num-children) arg1) @@ -1952,13 +1915,10 @@ ) ) -;; definition for method 4 of type collide-shape-prim-group -;; WARN: Return type mismatch uint8 vs int. (defmethod length collide-shape-prim-group ((obj collide-shape-prim-group)) (the-as int (-> obj num-children)) ) -;; definition for method 0 of type collide-shape (defmethod new collide-shape ((allocation symbol) (type-to-make type) (arg0 process-drawable) (arg1 collide-list-enum)) (let ((s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> s5-0 actor-hash-index) -1) @@ -2007,9 +1967,6 @@ ) ) -;; definition for method 0 of type collide-shape-moving -;; INFO: Used lq/sq -;; WARN: Return type mismatch collide-shape vs collide-shape-moving. (defmethod new collide-shape-moving ((allocation symbol) (type-to-make type) (arg0 process-drawable) (arg1 collide-list-enum)) (let ((v0-0 ((method-of-type collide-shape new) allocation type-to-make arg0 arg1))) (set! (-> (the-as collide-shape-moving v0-0) gspot-pos y) -40959590.0) @@ -2019,7 +1976,6 @@ ) ) -;; definition for symbol *collide-shape-prim-backgnd*, type collide-shape-prim-mesh (define *collide-shape-prim-backgnd* (new 'static 'collide-shape-prim-mesh :cshape #f :prim-core (new 'static 'collide-prim-core @@ -2033,7 +1989,6 @@ ) ) -;; definition for symbol *collide-shape-prim-water*, type collide-shape-prim-mesh (define *collide-shape-prim-water* (new 'static 'collide-shape-prim-mesh :cshape #f :prim-core (new 'static 'collide-prim-core @@ -2047,8 +2002,6 @@ ) ) -;; definition (perm) for symbol *collide-rider-pool*, type collide-rider-pool (define-perm *collide-rider-pool* collide-rider-pool (new 'global 'collide-rider-pool)) -;; failed to figure out what this is: 0 diff --git a/test/decompiler/reference/jak2/engine/common_objs/crates_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/crates_REF.gc index e58e12c2b3..fb05bd563f 100644 --- a/test/decompiler/reference/jak2/engine/common_objs/crates_REF.gc +++ b/test/decompiler/reference/jak2/engine/common_objs/crates_REF.gc @@ -651,7 +651,7 @@ (vector+! (-> self draw origin) (-> self root-override2 trans) (-> self draw bounds)) (set! (-> self draw origin w) (-> self draw bounds w)) (logior! (-> self draw status) (draw-control-status no-draw)) - (let ((v1-9 (-> self root-override2 root-prim))) + (let ((v1-9 (-> (the-as collide-shape-moving (-> self root-override2)) root-prim))) (set! (-> v1-9 prim-core collide-as) (collide-spec)) (set! (-> v1-9 prim-core collide-with) (collide-spec)) ) @@ -670,9 +670,13 @@ (suspend) ) (logclear! (-> self draw status) (draw-control-status no-draw)) - (let ((v1-29 (-> self root-override2 root-prim))) - (set! (-> v1-29 prim-core collide-as) (-> self root-override2 backup-collide-as)) - (set! (-> v1-29 prim-core collide-with) (-> self root-override2 backup-collide-with)) + (let ((v1-29 (-> (the-as collide-shape-moving (-> self root-override2)) root-prim))) + (set! (-> v1-29 prim-core collide-as) + (-> (the-as collide-shape-moving (-> self root-override2)) backup-collide-as) + ) + (set! (-> v1-29 prim-core collide-with) + (-> (the-as collide-shape-moving (-> self root-override2)) backup-collide-with) + ) ) (go-virtual idle) (none) @@ -684,7 +688,7 @@ :event crate-standard-event-handler :code (behavior () (suspend) - (collide-shape-method-46 (-> self root-override2)) + (collide-shape-method-46 (the-as collide-shape-moving (-> self root-override2))) (carry-info-method-9 (-> self carry)) (logior! (-> self mask) (process-mask sleep)) (until #f @@ -714,7 +718,7 @@ (ja-post) (carry-info-method-9 (-> self carry)) (carry-info-method-13 (-> self carry)) - (collide-shape-method-46 (-> self root-override2)) + (collide-shape-method-46 (the-as collide-shape-moving (-> self root-override2))) (none) ) ) @@ -751,16 +755,22 @@ (none) ) :trans (behavior () - (when (and (logtest? (-> self root-override2 status) (cshape-moving-flags on-surface)) - (< 0.8 (-> self root-override2 surface-angle)) + (when (and (logtest? (-> (the-as collide-shape-moving (-> self root-override2)) status) (cshape-moving-flags on-surface)) + (< 0.8 (-> (the-as collide-shape-moving (-> self root-override2)) surface-angle)) ) (vector-reset! (-> self root-override2 transv)) (when (= (vector-length (-> self root-override2 transv)) 0.0) - (set! (-> self root-override2 root-prim local-sphere w) (-> self carry backup-radius)) + (set! (-> (the-as collide-shape-moving (-> self root-override2)) root-prim local-sphere w) + (-> self carry backup-radius) + ) (set! (-> self base quad) (-> self root-override2 trans quad)) - (let ((v1-16 (-> self root-override2 root-prim))) - (set! (-> v1-16 prim-core collide-as) (-> self root-override2 backup-collide-as)) - (set! (-> v1-16 prim-core collide-with) (-> self root-override2 backup-collide-with)) + (let ((v1-16 (-> (the-as collide-shape-moving (-> self root-override2)) root-prim))) + (set! (-> v1-16 prim-core collide-as) + (-> (the-as collide-shape-moving (-> self root-override2)) backup-collide-as) + ) + (set! (-> v1-16 prim-core collide-with) + (-> (the-as collide-shape-moving (-> self root-override2)) backup-collide-with) + ) ) (go-virtual idle) ) @@ -773,8 +783,13 @@ (-> self root-override2 transv) (compute-acc-due-to-gravity (-> self root-override2) (new-stack-vector0) 0.0) ) - (if (< (-> self root-override2 dynam gravity-max) (vector-length (-> self root-override2 transv))) - (vector-normalize! (-> self root-override2 transv) (-> self root-override2 dynam gravity-max)) + (if (< (-> (the-as collide-shape-moving (-> self root-override2)) dynam gravity-max) + (vector-length (-> self root-override2 transv)) + ) + (vector-normalize! + (-> self root-override2 transv) + (-> (the-as collide-shape-moving (-> self root-override2)) dynam gravity-max) + ) ) (let ((gp-1 (-> self root-override2))) (let ((a2-1 (new 'stack-no-clear 'collide-query))) @@ -834,13 +849,13 @@ ) (when v1-3 (let* ((gp-1 (-> (the-as process-drawable v1-3) root)) - (v1-4 (if (type? gp-1 collide-shape) + (v1-4 (if (type? (the-as collide-shape-moving gp-1) collide-shape) gp-1 ) ) ) (when v1-4 - (let* ((gp-2 (-> self root-override2 root-prim prim-core)) + (let* ((gp-2 (-> (the-as collide-shape-moving (-> self root-override2)) root-prim prim-core)) (a1-3 (-> (the-as collide-shape-moving v1-4) root-prim prim-core)) (f30-0 (vector-vector-distance (the-as vector gp-2) (the-as vector a1-3))) ) @@ -1162,7 +1177,7 @@ ) ) ) - (let ((v1-20 (-> self root-override2 root-prim))) + (let ((v1-20 (-> (the-as collide-shape-moving (-> self root-override2)) root-prim))) (set! (-> v1-20 prim-core collide-as) (collide-spec)) (set! (-> v1-20 prim-core collide-with) (collide-spec)) ) @@ -1302,7 +1317,7 @@ "Initialize the [[crate]]'s skeleton and other parameters based on the crate type." (case (-> obj look) (('iron) - (set! (-> obj root-override2 penetrated-by) + (set! (-> (the-as collide-shape-moving (-> obj root-override2)) penetrated-by) (penetrate flop uppercut tube vehicle flut-attack board dark-skin explode) ) (initialize-skeleton @@ -1312,7 +1327,9 @@ ) ) (('steel) - (set! (-> obj root-override2 penetrated-by) (penetrate tube vehicle flut-attack board dark-skin explode)) + (set! (-> (the-as collide-shape-moving (-> obj root-override2)) penetrated-by) + (penetrate tube vehicle flut-attack board dark-skin explode) + ) (initialize-skeleton obj (the-as skeleton-group (art-group-get-by-name *level* "skel-crate-krimson" (the-as (pointer uint32) #f))) diff --git a/test/decompiler/reference/jak2/engine/debug/stats-h_REF.gc b/test/decompiler/reference/jak2/engine/debug/stats-h_REF.gc index fc76128f19..55e4c281d1 100644 --- a/test/decompiler/reference/jak2/engine/debug/stats-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/debug/stats-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type tr-stat (deftype tr-stat (structure) ((groups uint16 :offset-assert 0) (fragments uint16 :offset-assert 2) @@ -15,7 +13,6 @@ :flag-assert #x900000010 ) -;; definition for method 3 of type tr-stat (defmethod inspect tr-stat ((obj tr-stat)) (when (not obj) (set! obj obj) @@ -32,7 +29,6 @@ obj ) -;; definition of type merc-global-stats (deftype merc-global-stats (structure) ((merc tr-stat :inline :offset-assert 0) (emerc tr-stat :inline :offset-assert 16) @@ -43,7 +39,6 @@ :flag-assert #x900000030 ) -;; definition for method 3 of type merc-global-stats (defmethod inspect merc-global-stats ((obj merc-global-stats)) (when (not obj) (set! obj obj) @@ -57,7 +52,6 @@ obj ) -;; definition of type perf-stat (deftype perf-stat (structure) ((frame-number uint32 :offset-assert 0) (count uint32 :offset-assert 4) @@ -86,7 +80,6 @@ ) ) -;; definition for method 3 of type perf-stat (defmethod inspect perf-stat ((obj perf-stat)) (when (not obj) (set! obj obj) @@ -110,7 +103,6 @@ obj ) -;; definition (debug) for function perf-stat-bucket->string (defun-debug perf-stat-bucket->string ((arg0 perf-stat-bucket)) (case arg0 (((perf-stat-bucket collide-fill)) @@ -272,7 +264,6 @@ ) ) -;; definition of type perf-stat-array (deftype perf-stat-array (inline-array-class) ((data perf-stat :inline :dynamic :offset-assert 16) ) @@ -281,7 +272,6 @@ :flag-assert #x900000010 ) -;; definition for method 3 of type perf-stat-array (defmethod inspect perf-stat-array ((obj perf-stat-array)) (when (not obj) (set! obj obj) @@ -295,11 +285,8 @@ obj ) -;; failed to figure out what this is: (set! (-> perf-stat-array heap-base) (the-as uint 52)) -;; definition for method 11 of type perf-stat -;; WARN: Return type mismatch int vs none. (defmethod reset! perf-stat ((obj perf-stat)) (let ((v1-0 (-> obj ctrl))) (+! (-> obj count) 1) @@ -320,8 +307,6 @@ (none) ) -;; definition for method 12 of type perf-stat -;; WARN: Return type mismatch int vs none. (defmethod read! perf-stat ((obj perf-stat)) (local-vars (v1-1 int) (v1-3 int)) (b! (zero? (-> obj ctrl)) cfg-2 :delay (nop!)) @@ -337,8 +322,6 @@ (none) ) -;; definition for method 13 of type perf-stat -;; WARN: Return type mismatch int vs none. (defmethod update-wait-stats perf-stat ((obj perf-stat) (arg0 uint) (arg1 uint) (arg2 uint)) (when (nonzero? (-> obj ctrl)) (+! (-> obj to-vu0-waits) arg0) @@ -349,7 +332,6 @@ (none) ) -;; failed to figure out what this is: (when (not *debug-segment*) (set! (-> perf-stat method-table 11) nothing) (set! (-> perf-stat method-table 12) nothing) diff --git a/test/decompiler/reference/jak2/engine/entity/entity-table_REF.gc b/test/decompiler/reference/jak2/engine/entity/entity-table_REF.gc index 26777e5c47..cfd393b2fa 100644 --- a/test/decompiler/reference/jak2/engine/entity/entity-table_REF.gc +++ b/test/decompiler/reference/jak2/engine/entity/entity-table_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition for symbol *entity-info*, type (array entity-info) (define *entity-info* (new 'static 'boxed-array :type entity-info (new 'static 'entity-info :ptype (type-ref stadium-part :method-count 19) @@ -179,7 +177,7 @@ :heap-size #x4000 ) (new 'static 'entity-info - :ptype (type-ref neon-baron :method-count 19) + :ptype (type-ref neon-baron :method-count 17) :package "game" :art-group '() :pool '*16k-dead-pool* @@ -188,8 +186,6 @@ ) ) -;; definition for function entity-info-lookup -;; WARN: Return type mismatch basic vs entity-info. (defun entity-info-lookup ((arg0 type)) "Given a type, return the [[entity-info]] from [[*entity-info*]] whos type matches the `ptype` field. Set's `method 13` on said type that returns the `length` diff --git a/test/decompiler/reference/jak2/engine/entity/entity_REF.gc b/test/decompiler/reference/jak2/engine/entity/entity_REF.gc index 2b8476efa4..561869a5d7 100644 --- a/test/decompiler/reference/jak2/engine/entity/entity_REF.gc +++ b/test/decompiler/reference/jak2/engine/entity/entity_REF.gc @@ -1,17 +1,11 @@ -;;-*-Lisp-*- (in-package goal) -;; definition for symbol *spawn-actors*, type symbol (define *spawn-actors* #t) -;; definition for symbol *compact-actors*, type symbol (define *compact-actors* #t) -;; definition for symbol *vis-actors*, type symbol (define *vis-actors* #t) -;; definition for method 8 of type drawable-actor -;; WARN: Return type mismatch int vs drawable-actor. (defmethod mem-usage drawable-actor ((obj drawable-actor) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 44 (-> arg0 length))) (set! (-> arg0 data 43 name) "entity") @@ -24,8 +18,6 @@ (the-as drawable-actor 0) ) -;; definition for method 8 of type drawable-inline-array-actor -;; WARN: Return type mismatch int vs drawable-inline-array-actor. (defmethod mem-usage drawable-inline-array-actor ((obj drawable-inline-array-actor) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) @@ -40,13 +32,11 @@ (the-as drawable-inline-array-actor 0) ) -;; definition for method 2 of type entity-links (defmethod print entity-links ((obj entity-links)) (format #t "#" (-> obj process) obj) obj ) -;; definition for method 2 of type entity-perm (defmethod print entity-perm ((obj entity-perm)) (format #t @@ -60,7 +50,6 @@ obj ) -;; definition for method 2 of type actor-group (defmethod print actor-group ((obj actor-group)) (format #t "# obj length)) @@ -70,8 +59,6 @@ obj ) -;; definition for method 3 of type actor-group -;; INFO: this function exists in multiple non-identical object files (defmethod inspect actor-group ((obj actor-group)) (format #t "[~8x] ~A~%" obj (-> obj type)) (format #t "~Tlength: ~D~%" (-> obj length)) @@ -83,25 +70,21 @@ obj ) -;; definition for method 22 of type entity (defmethod birth! entity ((obj entity)) (format #t "birth ~A~%" obj) obj ) -;; definition for method 23 of type entity (defmethod kill! entity ((obj entity)) (format #t "kill ~A~%" obj) obj ) -;; definition for method 2 of type entity (defmethod print entity ((obj entity)) (format #t "#<~A :name ~S @ #x~X>" (-> obj type) (res-lump-struct obj 'name structure) obj) obj ) -;; definition for method 26 of type entity (defmethod get-level entity ((obj entity)) (dotimes (v1-0 (-> *level* length)) (let ((a1-3 (-> *level* level v1-0))) @@ -117,7 +100,6 @@ (-> *level* default-level) ) -;; definition for function entity-by-name (defun entity-by-name ((arg0 string)) (dotimes (s5-0 (-> *level* length)) (let ((s4-0 (-> *level* level s5-0))) @@ -172,7 +154,6 @@ (the-as entity #f) ) -;; definition for function entity-by-type (defun entity-by-type ((arg0 type)) (dotimes (s5-0 (-> *level* length)) (let ((v1-3 (-> *level* level s5-0))) @@ -194,7 +175,6 @@ (the-as entity-actor #f) ) -;; definition for function entity-by-aid (defun entity-by-aid ((arg0 uint)) (dotimes (v1-0 (-> *level* length)) (let ((a1-3 (-> *level* level v1-0))) @@ -232,8 +212,6 @@ (the-as entity #f) ) -;; definition for function entity-actor-from-level-name -;; WARN: Return type mismatch entity vs entity-actor. (defun entity-actor-from-level-name ((arg0 level)) (let ((v0-0 (the-as entity #f))) (dotimes (s5-0 (-> *level* length)) @@ -256,8 +234,6 @@ ) ) -;; definition for method 18 of type level-group -;; WARN: Return type mismatch int vs none. (defmethod level-group-method-18 level-group ((obj level-group)) (when (not (paused?)) (dotimes (s5-0 (-> obj length)) @@ -278,7 +254,6 @@ (none) ) -;; definition for function entity-nav-mesh-by-aid (defun entity-nav-mesh-by-aid ((arg0 actor-id)) (dotimes (v1-0 (-> *level* length)) (let ((a1-3 (-> *level* level v1-0))) @@ -316,7 +291,6 @@ (the-as entity-nav-mesh #f) ) -;; definition for function nav-mesh-from-res-tag (defun nav-mesh-from-res-tag ((arg0 entity) (arg1 symbol) (arg2 int)) (let ((v1-1 (res-lump-data arg0 arg1 pointer)) (gp-0 (the-as nav-mesh #f)) @@ -337,7 +311,6 @@ ) ) -;; definition for function entity-by-meters (defun entity-by-meters ((arg0 float) (arg1 float) (arg2 float)) (dotimes (v1-0 (-> *level* length)) (let ((a3-3 (-> *level* level v1-0))) @@ -364,7 +337,6 @@ (the-as entity-actor #f) ) -;; definition for function process-by-ename (defun process-by-ename ((arg0 string)) (let ((v1-0 (entity-by-name arg0))) (if v1-0 @@ -373,7 +345,6 @@ ) ) -;; definition for function entity-process-count (defun entity-process-count ((arg0 symbol)) (let ((gp-0 0)) (dotimes (s4-0 (-> *level* length)) @@ -404,7 +375,6 @@ ) ) -;; definition for function entity-count (defun entity-count () (let ((v0-0 0)) (dotimes (v1-0 (-> *level* length)) @@ -423,8 +393,6 @@ ) ) -;; definition for function entity-remap-names -;; WARN: Return type mismatch int vs none. (defun entity-remap-names ((arg0 pair)) (let ((s5-0 (car arg0))) (while (not (null? arg0)) @@ -451,8 +419,6 @@ (none) ) -;; definition (debug) for function process-status-bits -;; WARN: Return type mismatch int vs none. (defun-debug process-status-bits ((arg0 process) (arg1 symbol)) (let* ((s5-0 arg0) (s3-0 (if (type? s5-0 process-drawable) @@ -514,7 +480,6 @@ (none) ) -;; definition for function process-entity-set! (defun process-entity-set! ((arg0 process) (arg1 entity-actor)) (set! (-> arg0 entity) arg1) (if arg1 @@ -524,13 +489,10 @@ arg1 ) -;; definition for function process-task-mask (defun process-task-mask ((arg0 process)) (-> arg0 level task-mask) ) -;; definition for method 2 of type process -;; INFO: this function exists in multiple non-identical object files (defmethod print process ((obj process)) (cond ((and (-> obj top-thread) (!= (-> obj status) 'dead)) @@ -566,7 +528,6 @@ obj ) -;; definition for method 3 of type entity (defmethod inspect entity ((obj entity)) ((the-as (function entity entity) (find-parent-method entity 3)) obj) (format #t "~Ttrans: ~`vector`P~%" (-> obj trans)) @@ -574,7 +535,6 @@ obj ) -;; definition for method 3 of type entity-nav-mesh (defmethod inspect entity-nav-mesh ((obj entity-nav-mesh)) ((the-as (function object object) (find-parent-method entity-nav-mesh 3)) obj) (format #t "~Tnav-mesh ~A~%" (-> obj nav-mesh)) @@ -584,7 +544,6 @@ obj ) -;; definition for method 3 of type entity-actor (defmethod inspect entity-actor ((obj entity-actor)) ((the-as (function entity entity) (find-parent-method entity-actor 3)) obj) (format #t "~Tetype: ~A~%" (-> obj etype)) @@ -655,8 +614,6 @@ obj ) -;; definition for method 29 of type entity-actor -;; WARN: Return type mismatch entity-actor vs none. (defmethod debug-print entity-actor ((obj entity-actor) (arg0 symbol) (arg1 type)) (let ((s4-0 (-> obj etype))) (when (or (not arg1) (and s4-0 (valid? s4-0 type #f #f 0) (type-type? s4-0 arg1))) @@ -729,8 +686,6 @@ (none) ) -;; definition for method 14 of type level-group -;; WARN: Return type mismatch int vs none. (defmethod debug-print-entities level-group ((obj level-group) (arg0 symbol) (arg1 type)) (let ((t9-0 format) (a0-1 #t) @@ -768,9 +723,6 @@ (none) ) -;; definition for method 24 of type entity-actor -;; INFO: Used lq/sq -;; WARN: Return type mismatch entity-actor vs none. (defmethod add-to-level! entity-actor ((obj entity-actor) (arg0 level-group) (arg1 level) (arg2 actor-id)) (let ((v1-4 (-> arg1 entity data (-> arg1 entity length)))) (+! (-> arg1 entity length) 1) @@ -842,7 +794,6 @@ (none) ) -;; definition for method 25 of type entity (defmethod remove-from-level! entity ((obj entity) (arg0 level-group)) (let ((v1-0 (-> obj extra))) (cond @@ -861,8 +812,6 @@ obj ) -;; definition for function update-actor-vis-box -;; WARN: Return type mismatch int vs none. (defun update-actor-vis-box ((arg0 process-drawable) (arg1 vector) (arg2 vector)) (when (and arg0 (nonzero? (-> arg0 draw)) (zero? (logand (-> arg0 draw status) (draw-control-status no-draw)))) (let ((v1-5 (-> arg0 draw origin)) @@ -880,8 +829,6 @@ (none) ) -;; definition for method 25 of type level-group -;; WARN: Return type mismatch int vs none. (defmethod update-vis-volumes level-group ((obj level-group)) (local-vars (sv-16 pointer) (sv-20 pointer) (sv-24 pointer) (sv-28 process)) (dotimes (s5-0 (-> obj length)) @@ -929,8 +876,6 @@ (none) ) -;; definition for function expand-bounding-box -;; WARN: Return type mismatch int vs none. (defun expand-bounding-box ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) (set! (-> arg0 x) (fmin (-> arg0 x) (-> arg2 x))) (set! (-> arg0 y) (fmin (-> arg0 y) (-> arg2 y))) @@ -942,45 +887,6 @@ (none) ) -;; definition for method 26 of type level-group -;; INFO: Used lq/sq -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 28 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Stack slot offset 32 signed mismatch -;; WARN: Return type mismatch int vs none. (defmethod update-vis-volumes-from-nav-mesh level-group ((obj level-group)) (local-vars (sv-16 pointer) @@ -1078,15 +984,6 @@ (none) ) -;; definition for method 27 of type level-group -;; INFO: Used lq/sq -;; WARN: Stack slot offset 20 signed mismatch -;; WARN: Stack slot offset 20 signed mismatch -;; WARN: Stack slot offset 20 signed mismatch -;; WARN: Stack slot offset 20 signed mismatch -;; WARN: Stack slot offset 20 signed mismatch -;; WARN: Stack slot offset 20 signed mismatch -;; WARN: Return type mismatch int vs none. (defmethod print-volume-sizes level-group ((obj level-group)) (local-vars (sv-16 pointer) @@ -1167,8 +1064,6 @@ (none) ) -;; definition for function expand-vis-box-with-point -;; WARN: Return type mismatch int vs none. (defun expand-vis-box-with-point ((arg0 entity) (arg1 vector)) (let ((v1-1 (res-lump-data arg0 'visvol (inline-array vector)))) (when v1-1 @@ -1188,7 +1083,6 @@ (none) ) -;; definition of type debug-actor-info (deftype debug-actor-info (basic) ((name basic :offset-assert 4) (handle handle :offset-assert 8) @@ -1200,7 +1094,6 @@ :flag-assert #x900000018 ) -;; definition for method 3 of type debug-actor-info (defmethod inspect debug-actor-info ((obj debug-actor-info)) (when (not obj) (set! obj obj) @@ -1215,14 +1108,10 @@ obj ) -;; definition for symbol *debug-actor-info*, type debug-actor-info (define *debug-actor-info* (new 'static 'debug-actor-info :name #f)) -;; definition for symbol *pid-string*, type string (define *pid-string* (new 'global 'string 128 (the-as string #f))) -;; definition (debug) for function debug-actor -;; WARN: Return type mismatch int vs none. (defun-debug debug-actor ((arg0 string)) (let ((gp-0 *debug-actor-info*)) (set! (-> gp-0 name) #f) @@ -1259,8 +1148,6 @@ (none) ) -;; definition (debug) for function draw-actor-marks -;; WARN: Return type mismatch int vs none. (defun-debug draw-actor-marks ((arg0 process)) (local-vars (sv-16 entity-actor) (sv-20 (pointer int32))) (b! @@ -1394,9 +1281,6 @@ (none) ) -;; definition for method 15 of type level-group -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod debug-draw-actors level-group ((obj level-group) (arg0 symbol)) (local-vars (sv-16 symbol) @@ -1775,20 +1659,16 @@ ) ) -;; definition for method 22 of type entity-camera (defmethod birth! entity-camera ((obj entity-camera)) (add-connection *camera-engine* *camera* nothing obj #f #f) obj ) -;; definition for method 23 of type entity-camera (defmethod kill! entity-camera ((obj entity-camera)) (remove-by-param1 *camera-engine* (the-as int obj)) obj ) -;; definition for function init-entity -;; WARN: Return type mismatch process vs none. (defun init-entity ((arg0 process) (arg1 entity-actor) (arg2 process)) (activate arg0 *entity-pool* (res-lump-struct arg1 'name basic) (the-as pointer #x70004000)) (set! (-> arg0 entity) arg1) @@ -1798,7 +1678,6 @@ (none) ) -;; definition for method 22 of type entity-actor (defmethod birth! entity-actor ((obj entity-actor)) (let* ((s5-0 (-> obj etype)) (v1-0 (entity-info-lookup s5-0)) @@ -1829,8 +1708,6 @@ obj ) -;; definition for function entity-deactivate-handler -;; WARN: Return type mismatch symbol vs none. (defun entity-deactivate-handler ((arg0 process) (arg1 entity-actor)) (when (= arg0 (-> arg1 extra process)) (logclear! (-> arg1 extra perm status) (entity-perm-status bit-1 no-kill)) @@ -1839,7 +1716,6 @@ (none) ) -;; definition for method 23 of type entity-actor (defmethod kill! entity-actor ((obj entity-actor)) (let ((a0-1 (-> obj extra process))) (if a0-1 @@ -1850,11 +1726,6 @@ obj ) -;; definition for method 17 of type bsp-header -;; INFO: Used lq/sq -;; WARN: Return type mismatch bsp-header vs none. -;; ERROR: Unsupported inline assembly instruction kind - [mfc0 s5, Count] -;; ERROR: Unsupported inline assembly instruction kind - [mfc0 v1, Count] (defmethod birth bsp-header ((obj bsp-header)) (local-vars (v1-74 int) (s5-0 int) (sv-16 int)) (.mfc0 s5-0 Count) @@ -1927,8 +1798,6 @@ (none) ) -;; definition for function check-for-rougue-process -;; WARN: Return type mismatch int vs none. (defun check-for-rougue-process ((arg0 process) (arg1 int) (arg2 int) (arg3 level)) (cond ((-> arg0 entity) @@ -2033,8 +1902,6 @@ (none) ) -;; definition for method 18 of type bsp-header -;; WARN: Return type mismatch bsp-header vs none. (defmethod deactivate-entities bsp-header ((obj bsp-header)) (let ((v1-1 (-> obj level heap base)) (a0-2 (-> obj level heap top-base)) @@ -2121,9 +1988,6 @@ (none) ) -;; definition for function process-drawable-scale-from-entity! -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun process-drawable-scale-from-entity! ((arg0 process-drawable) (arg1 entity)) (let ((v1-1 (res-lump-struct arg1 'scale structure))) (if v1-1 @@ -2135,9 +1999,6 @@ (none) ) -;; definition for function process-drawable-from-entity! -;; INFO: Used lq/sq -;; WARN: Return type mismatch process-drawable vs none. (defun process-drawable-from-entity! ((arg0 process-drawable) (arg1 entity-actor)) (logior! (-> arg0 mask) (process-mask actor-pause)) (set! (-> arg0 root trans quad) (-> arg1 extra trans quad)) @@ -2146,7 +2007,6 @@ (none) ) -;; definition for method 9 of type entity-perm (defmethod update entity-perm ((obj entity-perm) (arg0 symbol) (arg1 entity-perm-status)) (cond ((= arg0 'game) @@ -2177,8 +2037,6 @@ obj ) -;; definition for function reset-actors -;; WARN: Return type mismatch int vs none. (defun reset-actors ((arg0 symbol)) (let* ((v1-0 arg0) (s5-0 (cond @@ -2263,8 +2121,6 @@ (none) ) -;; definition for function reset-cameras -;; WARN: Return type mismatch int vs none. (defun reset-cameras () (remove-all *camera-engine*) (dotimes (gp-0 (-> *level* length)) @@ -2284,7 +2140,6 @@ (none) ) -;; definition for method 12 of type process-drawable (defmethod run-logic? process-drawable ((obj process-drawable)) (or (not (logtest? (-> obj mask) (process-mask actor-pause))) (or (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance)) @@ -2296,21 +2151,12 @@ ) ) -;; definition for method 9 of type entity-links (defmethod birth? entity-links ((obj entity-links) (arg0 vector)) (and (not (logtest? (-> obj perm status) (entity-perm-status bit-0 dead))) (< (vector-vector-distance (-> obj trans) arg0) (-> *ACTOR-bank* birth-dist)) ) ) -;; definition for method 17 of type level-group -;; INFO: Used lq/sq -;; ERROR: Stack slot load at 96 mismatch: defined as size 4, got size 16 -;; ERROR: Stack slot load at 96 mismatch: defined as size 4, got size 16 -;; ERROR: Stack slot load at 96 mismatch: defined as size 4, got size 16 -;; ERROR: Stack slot load at 96 mismatch: defined as size 4, got size 16 -;; WARN: Return type mismatch int vs none. -;; WARN: Function (method 17 level-group) has a return type of none, but the expression builder found a return statement. (defmethod actors-update level-group ((obj level-group)) (local-vars (sv-16 vector) @@ -2517,7 +2363,6 @@ ) ) -;; definition for function entity-birth-no-kill (defun entity-birth-no-kill ((arg0 entity)) (let ((gp-0 (-> arg0 extra))) (logior! (-> gp-0 perm status) (entity-perm-status no-kill)) @@ -2528,8 +2373,6 @@ ) ) -;; definition for function entity-task-complete-on -;; WARN: Return type mismatch int vs none. (defun entity-task-complete-on ((arg0 entity)) (let ((v1-0 (-> arg0 extra))) (if (nonzero? (-> v1-0 perm task)) @@ -2540,8 +2383,6 @@ (none) ) -;; definition for function entity-task-complete-off -;; WARN: Return type mismatch int vs none. (defun entity-task-complete-off ((arg0 entity)) (let ((v1-0 (-> arg0 extra))) (if (!= (-> v1-0 perm task) 1) @@ -2552,8 +2393,6 @@ (none) ) -;; definition for method 30 of type entity-actor -;; WARN: Return type mismatch entity-perm-status vs none. (defmethod toggle-status entity-actor ((obj entity-actor) (arg0 entity-perm-status) (arg1 symbol)) (let ((v1-0 (-> obj extra))) (if arg1 @@ -2565,8 +2404,6 @@ (none) ) -;; definition for function process-entity-status! -;; WARN: Return type mismatch int vs entity-perm-status. (defun process-entity-status! ((arg0 process) (arg1 entity-perm-status) (arg2 symbol)) (the-as entity-perm-status (cond ((and (-> arg0 entity) arg0 (= arg0 (-> arg0 entity extra process))) @@ -2585,8 +2422,6 @@ ) ) -;; definition for function find-nearest-entity -;; WARN: Return type mismatch entity-actor vs entity. (defun find-nearest-entity ((arg0 vector) (arg1 type)) (local-vars (v1-9 object)) (let ((gp-0 (the-as entity-actor #f))) @@ -2626,8 +2461,6 @@ ) ) -;; definition (debug) for function entity-speed-test -;; ERROR: Unsupported inline assembly instruction kind - [mfc0 s4, Count] (defun-debug entity-speed-test ((arg0 string)) (local-vars (s4-0 int)) (let ((gp-0 (entity-by-name arg0))) @@ -2647,9 +2480,6 @@ ) ) -;; definition (debug) for function dump-entity-remap -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun-debug dump-entity-remap ((arg0 object) (arg1 object)) (local-vars (sv-16 symbol) diff --git a/test/decompiler/reference/jak2/engine/gfx/shrub/shrubbery_REF.gc b/test/decompiler/reference/jak2/engine/gfx/shrub/shrubbery_REF.gc index 0a7dc269c3..7c79a04d28 100644 --- a/test/decompiler/reference/jak2/engine/gfx/shrub/shrubbery_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/shrub/shrubbery_REF.gc @@ -1,13 +1,10 @@ -;;-*-Lisp-*- (in-package goal) -;; definition for method 9 of type billboard (defmethod login billboard ((obj billboard)) (adgif-shader-login (-> obj flat)) obj ) -;; definition for method 8 of type billboard (defmethod mem-usage billboard ((obj billboard) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 34 (-> arg0 length))) (set! (-> arg0 data 33 name) "billboard") @@ -19,7 +16,6 @@ obj ) -;; definition for function mem-usage-shrub-walk (defun mem-usage-shrub-walk ((arg0 draw-node) (arg1 int) (arg2 memory-usage-block) (arg3 int)) (set! (-> arg2 length) (max 64 (-> arg2 length))) (set! (-> arg2 data 63 name) "draw-node") @@ -52,7 +48,6 @@ arg0 ) -;; definition for method 8 of type drawable-tree-instance-shrub (defmethod mem-usage drawable-tree-instance-shrub ((obj drawable-tree-instance-shrub) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) @@ -80,7 +75,6 @@ obj ) -;; definition for method 9 of type generic-shrub-fragment (defmethod login generic-shrub-fragment ((obj generic-shrub-fragment)) (let ((s5-0 (/ (-> obj cnt-qwc) (the-as uint 5)))) (dotimes (s4-0 (the-as int s5-0)) @@ -90,7 +84,6 @@ obj ) -;; definition for method 8 of type generic-shrub-fragment (defmethod mem-usage generic-shrub-fragment ((obj generic-shrub-fragment) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 27 (-> arg0 length))) (set! (-> arg0 data 25 name) "generic-shrub") @@ -108,7 +101,6 @@ obj ) -;; definition for method 3 of type prototype-shrubbery (defmethod inspect prototype-shrubbery ((obj prototype-shrubbery)) (format #t "[~8x] ~A~%" obj (-> obj type)) (format #t "~Tlength: ~D~%" (-> obj length)) @@ -119,7 +111,6 @@ obj ) -;; definition for method 8 of type prototype-shrubbery (defmethod mem-usage prototype-shrubbery ((obj prototype-shrubbery) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) @@ -134,7 +125,6 @@ obj ) -;; definition for method 9 of type prototype-shrubbery (defmethod login prototype-shrubbery ((obj prototype-shrubbery)) (dotimes (s5-0 (-> obj length)) (login (-> obj data s5-0)) @@ -142,13 +132,10 @@ obj ) -;; definition for method 5 of type prototype-shrubbery -;; WARN: Return type mismatch uint vs int. (defmethod asize-of prototype-shrubbery ((obj prototype-shrubbery)) (the-as int (+ (-> prototype-shrubbery size) (* (+ (-> obj length) -1) 32))) ) -;; definition for method 9 of type prototype-generic-shrub (defmethod login prototype-generic-shrub ((obj prototype-generic-shrub)) (dotimes (s5-0 (-> obj length)) (login (-> obj data s5-0)) @@ -156,7 +143,6 @@ obj ) -;; definition for method 9 of type shrubbery (defmethod login shrubbery ((obj shrubbery)) (let ((s5-0 (* (-> obj header data 0) 2))) (dotimes (s4-0 (the-as int s5-0)) @@ -182,7 +168,6 @@ obj ) -;; definition for method 8 of type shrubbery (defmethod mem-usage shrubbery ((obj shrubbery) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 28 (-> arg0 length))) (set! (-> arg0 data 27 name) "shrubbery") @@ -222,7 +207,6 @@ obj ) -;; definition for method 9 of type drawable-tree-instance-shrub (defmethod login drawable-tree-instance-shrub ((obj drawable-tree-instance-shrub)) (if (nonzero? (-> obj info prototype-inline-array-shrub)) (login (-> obj info prototype-inline-array-shrub)) @@ -230,17 +214,12 @@ obj ) -;; definition for symbol shrub-vu1-block, type vu-function (define shrub-vu1-block (new 'static 'vu-function :length #x26a :qlength #x135)) -;; definition for function shrub-num-tris -;; WARN: Return type mismatch uint32 vs uint. (defun shrub-num-tris ((shrub shrubbery)) (the-as uint (- (-> shrub header data 2) (the-as uint (* (-> shrub header data 1) 2)))) ) -;; definition for function shrub-make-perspective-matrix -;; INFO: Used lq/sq (defun shrub-make-perspective-matrix ((out matrix) (camera-temp matrix)) (let* ((v1-0 out) (t0-0 camera-temp) @@ -275,7 +254,6 @@ out ) -;; definition for function shrub-init-view-data (defun shrub-init-view-data ((view-data shrub-view-data)) (set! (-> view-data texture-giftag tag) (new 'static 'gif-tag64 :nloop #x1 :nreg #x4)) (set! (-> view-data texture-giftag regs) (new 'static 'gif-tag-regs @@ -295,7 +273,6 @@ #f ) -;; definition for function shrub-upload-view-data (defun shrub-upload-view-data ((dma-buff dma-buffer)) (let ((qwc 3)) (let* ((buf dma-buff) @@ -312,12 +289,10 @@ #f ) -;; definition for function shrub-time (defun shrub-time ((arg0 int) (arg1 int) (arg2 int) (arg3 int) (arg4 int)) (+ (* arg0 8) 29 (* 22 arg2) (* 11 arg1) (* (+ (* arg4 2) 15 (* 5 arg2) (* 13 arg0)) arg3) 53) ) -;; definition for function shrub-do-init-frame (defun shrub-do-init-frame ((dma-buff dma-buffer)) (dma-buffer-add-vu-function dma-buff shrub-vu1-block 1) (shrub-upload-view-data dma-buff) @@ -356,7 +331,6 @@ #f ) -;; definition for function shrub-init-frame (defun shrub-init-frame ((dma-buff dma-buffer) (test gs-test)) (shrub-do-init-frame dma-buff) (let* ((v1-0 dma-buff) @@ -382,7 +356,6 @@ #f ) -;; definition for function shrub-upload-model (defun shrub-upload-model ((shrub shrubbery) (dma-buff dma-buffer) (arg2 int)) (let* ((v1-0 dma-buff) (a3-0 (the-as dma-packet (-> v1-0 base))) @@ -423,12 +396,7 @@ #f ) -;; definition for function draw-inline-array-instance-shrub -;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition for function draw-prototype-inline-array-shrub -;; INFO: Used lq/sq -;; ERROR: Function may read a register that is not set: a2 (defun draw-prototype-inline-array-shrub ((proto-array-len int) (proto-array (inline-array prototype-bucket-shrub))) (local-vars (dma-ptr object) @@ -997,9 +965,6 @@ ) ) -;; definition for function draw-drawable-tree-instance-shrub -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun draw-drawable-tree-instance-shrub ((tree drawable-tree-instance-shrub) (level level)) (local-vars (a0-4 int) (a0-6 int) (a0-11 int) (a0-13 int)) (set! (-> *instance-shrub-work* texture-dists) (the-as uint (-> level bsp shrub-closest))) @@ -1121,8 +1086,6 @@ (none) ) -;; definition for method 10 of type drawable-tree-instance-shrub -;; WARN: Return type mismatch int vs none. (defmethod draw drawable-tree-instance-shrub ((obj drawable-tree-instance-shrub) (arg0 drawable-tree-instance-shrub) (arg1 display-frame)) (let ((v1-1 (-> *background-work* shrub-tree-count)) (a1-4 (-> *level* draw-level *draw-index*)) @@ -1135,13 +1098,10 @@ (none) ) -;; definition for method 15 of type drawable-tree-instance-shrub (defmethod unpack-vis drawable-tree-instance-shrub ((obj drawable-tree-instance-shrub) (arg0 (pointer int8)) (arg1 (pointer int8))) arg1 ) -;; definition for method 13 of type drawable-tree-instance-shrub -;; WARN: Return type mismatch int vs none. (defmethod collect-stats drawable-tree-instance-shrub ((obj drawable-tree-instance-shrub)) (when (logtest? (vu1-renderer-mask shrubbery shrub-near billboard shrubbery-vanish) (-> *display* vu1-enable-user)) (let* ((v1-4 (-> obj info prototype-inline-array-shrub)) @@ -1229,7 +1189,6 @@ (none) ) -;; definition of type dma-test (deftype dma-test (structure) ((data qword 101 :inline :offset-assert 0) ) @@ -1238,7 +1197,6 @@ :flag-assert #x900000650 ) -;; definition for method 3 of type dma-test (defmethod inspect dma-test ((obj dma-test)) (when (not obj) (set! obj obj) @@ -1250,10 +1208,8 @@ obj ) -;; definition for symbol *dma-test*, type dma-test (define *dma-test* (new 'global 'dma-test)) -;; definition of type dma-test-work (deftype dma-test-work (structure) ((upload dma-packet :inline :offset-assert 0) (end dma-packet :inline :offset-assert 16) @@ -1263,7 +1219,6 @@ :flag-assert #x900000020 ) -;; definition for method 3 of type dma-test-work (defmethod inspect dma-test-work ((obj dma-test-work)) (when (not obj) (set! obj obj) @@ -1276,7 +1231,6 @@ obj ) -;; definition for symbol *dma-test-work*, type dma-test-work (define *dma-test-work* (new 'static 'dma-test-work :upload (new 'static 'dma-packet :dma (new 'static 'dma-tag :qwc #x20 :id (dma-tag-id ref))) @@ -1284,9 +1238,6 @@ ) ) -;; definition for function init-dma-test -;; INFO: Used lq/sq -;; WARN: Return type mismatch uint128 vs none. (defun init-dma-test () (let ((a0-0 *dma-test-work*) (v1-0 (the-as object *dma-test*)) @@ -1303,11 +1254,4 @@ (none) ) -;; failed to figure out what this is: (init-dma-test) - -;; definition for function dma-test-func -;; ERROR: function was not converted to expressions. Cannot decompile. - -;; definition for function move-test-func -;; ERROR: function was not converted to expressions. Cannot decompile. diff --git a/test/decompiler/reference/jak2/engine/nav/nav-control-h_REF.gc b/test/decompiler/reference/jak2/engine/nav/nav-control-h_REF.gc index 370b9b6a56..cb05304e17 100644 --- a/test/decompiler/reference/jak2/engine/nav/nav-control-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/nav/nav-control-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type check-vector-collision-with-nav-spheres-info (deftype check-vector-collision-with-nav-spheres-info (structure) ((u float :offset-assert 0) (intersect vector :inline :offset-assert 16) @@ -12,7 +10,6 @@ :flag-assert #x900000030 ) -;; definition for method 3 of type check-vector-collision-with-nav-spheres-info (defmethod inspect check-vector-collision-with-nav-spheres-info ((obj check-vector-collision-with-nav-spheres-info)) (when (not obj) (set! obj obj) @@ -26,7 +23,6 @@ obj ) -;; definition of type nav-gap-info (deftype nav-gap-info (structure) ((dest vector :inline :offset-assert 0) (poly nav-poly :offset-assert 16) @@ -36,7 +32,6 @@ :flag-assert #x900000014 ) -;; definition for method 3 of type nav-gap-info (defmethod inspect nav-gap-info ((obj nav-gap-info)) (when (not obj) (set! obj obj) @@ -49,21 +44,19 @@ obj ) -;; definition of type nav-avoid-spheres-params (deftype nav-avoid-spheres-params (structure) ((current-pos vector :inline :offset-assert 0) (travel vector :inline :offset-assert 16) (pref-dir vector :inline :offset-assert 32) (out-travel vector 2 :inline :offset-assert 48) (closest-sphere-dist2 float :offset-assert 80) - (avoiding-sphere? basic :offset-assert 84) + (avoiding-sphere? symbol :offset-assert 84) ) :method-count-assert 9 :size-assert #x58 :flag-assert #x900000058 ) -;; definition for method 3 of type nav-avoid-spheres-params (defmethod inspect nav-avoid-spheres-params ((obj nav-avoid-spheres-params)) (when (not obj) (set! obj obj) @@ -80,17 +73,15 @@ obj ) -;; definition of type nav-callback-info (deftype nav-callback-info (structure) - ((callback-count int32 :offset-assert 0) - (callback-array uint32 10 :offset-assert 4) + ((callback-count int32 :offset-assert 0) + (callback-array (function object nav-control none) 10 :offset-assert 4) ) :method-count-assert 9 :size-assert #x2c :flag-assert #x90000002c ) -;; definition for method 3 of type nav-callback-info (defmethod inspect nav-callback-info ((obj nav-callback-info)) (when (not obj) (set! obj obj) @@ -103,10 +94,9 @@ obj ) -;; definition of type nav-state (deftype nav-state (structure) ((flags nav-state-flag :offset-assert 0) - (nav basic :offset-assert 4) + (nav nav-control :offset-assert 4) (user-poly nav-poly :offset-assert 8) (mesh nav-mesh :offset-assert 12) (current-poly nav-poly :offset-assert 16) @@ -131,56 +121,55 @@ :size-assert #xb0 :flag-assert #x37000000b0 (:methods - (nav-state-method-9 () none 9) - (nav-state-method-10 () none 10) - (nav-state-method-11 () none 11) - (nav-state-method-12 () none 12) - (nav-state-method-13 () none 13) - (nav-state-method-14 () none 14) - (nav-state-method-15 () none 15) - (nav-state-method-16 () none 16) - (nav-state-method-17 () none 17) - (nav-state-method-18 () none 18) - (nav-state-method-19 () none 19) - (nav-state-method-20 () none 20) + (debug-draw (_type_) none 9) + (nav-state-method-10 (_type_) none 10) + (nav-state-method-11 (_type_ nav-gap-info) symbol 11) + (nav-state-method-12 (_type_ vector) vector 12) + (nav-state-method-13 (_type_ vector) vector 13) + (nav-state-method-14 (_type_ vector) vector 14) + (nav-state-method-15 (_type_ vector) vector 15) + (get-speed (_type_) meters 16) + (get-rotation-rate (_type_) float 17) + (nav-state-method-18 (_type_ vector object vector) none 18) + (get-current-poly (_type_) nav-poly 19) + (copy-nav-state! (_type_ (pointer nav-state)) none 20) (nav-state-method-21 () none 21) (nav-state-method-22 () none 22) (nav-state-method-23 () none 23) - (nav-state-method-24 () none 24) - (nav-state-method-25 () none 25) - (nav-state-method-26 () none 26) - (nav-state-method-27 () none 27) - (nav-state-method-28 () none 28) - (nav-state-method-29 () none 29) - (nav-state-method-30 () none 30) - (nav-state-method-31 () none 31) - (nav-state-method-32 () none 32) - (nav-state-method-33 () none 33) - (nav-state-method-34 () none 34) - (nav-state-method-35 () none 35) - (nav-state-method-36 () none 36) - (nav-state-method-37 () none 37) - (nav-state-method-38 () none 38) + (nav-state-method-24 (_type_) none 24) + (nav-state-method-25 (_type_) none 25) + (nav-state-method-26 (_type_) none 26) + (nav-state-method-27 (_type_) none 27) + (nav-state-method-28 (_type_) none 28) + (nav-state-method-29 (_type_) none 29) + (nav-state-method-30 (_type_) none 30) + (nav-state-method-31 (_type_) none 31) + (nav-state-method-32 (_type_) none 32) + (nav-state-method-33 (_type_) none 33) + (nav-state-method-34 (_type_) none 34) + (nav-state-method-35 (_type_) none 35) + (nav-state-method-36 (_type_ vector) none 36) + (nav-state-method-37 (_type_) none 37) + (set-current-poly! (_type_ nav-poly) none 38) (nav-state-method-39 () none 39) - (nav-state-method-40 () none 40) - (nav-state-method-41 () none 41) - (nav-state-method-42 () none 42) - (nav-state-method-43 () none 43) - (nav-state-method-44 () none 44) - (nav-state-method-45 () none 45) - (nav-state-method-46 () none 46) - (nav-state-method-47 () none 47) + (nav-state-method-40 (_type_) none 40) + (nav-state-method-41 (_type_ vector) symbol 41) + (nav-state-method-42 (_type_ vector) none 42) + (nav-state-method-43 (_type_ vector) none 43) + (set-velocity! (_type_ vector) none 44) + (set-heading! (_type_ vector) none 45) + (set-speed! (_type_ meters) none 46) + (nav-state-method-47 (_type_ nav-control) none 47) (nav-state-method-48 () none 48) - (nav-state-method-49 () none 49) - (nav-state-method-50 () none 50) + (nav-state-method-49 (_type_ clamp-travel-vector-to-mesh-return-info) none 49) + (nav-state-method-50 (_type_) none 50) (nav-state-method-51 () none 51) - (nav-state-method-52 () none 52) - (nav-state-method-53 () none 53) - (nav-state-method-54 () none 54) + (nav-state-method-52 (_type_) none 52) + (nav-state-method-53 (_type_) none 53) + (nav-state-method-54 (_type_) none 54) ) ) -;; definition for method 3 of type nav-state (defmethod inspect nav-state ((obj nav-state)) (when (not obj) (set! obj obj) @@ -260,7 +249,6 @@ obj ) -;; definition of type nav-control (deftype nav-control (structure) ((flags nav-control-flag :offset-assert 0) (callback-info nav-callback-info :offset-assert 4) @@ -281,8 +269,8 @@ (sphere-mask uint8 :offset-assert 61) (pad1 uint8 2 :offset-assert 62) (sphere-id-array uint8 16 :offset-assert 64) - (extra-nav-sphere sphere :inline :offset-assert 80) - (root-nav-sphere sphere :inline :offset-assert 96) + (extra-nav-sphere vector :inline :offset-assert 80) + (root-nav-sphere vector :inline :offset-assert 96) (state nav-state :inline :offset-assert 112) ) :method-count-assert 47 @@ -292,7 +280,7 @@ (debug-draw (_type_) none 9) (point-in-bounds? (_type_ vector) symbol 10) (nav-control-method-11 (_type_ vector) vector 11) - (nav-control-method-12 () none 12) + (nav-control-method-12 (_type_ vector vector nav-poly) nav-poly 12) (find-poly (_type_ vector) nav-poly 13) (nav-control-method-14 (_type_ nav-poly vector object vector) none 14) (nav-control-method-15 (_type_ vector) none 15) @@ -300,11 +288,11 @@ (is-in-mesh? (_type_ vector float) symbol 17) (nav-control-method-18 () none 18) (nav-control-method-19 () none 19) - (nav-control-method-20 (_type_ vector vector vector int symbol symbol) none 20) - (nav-control-method-21 () none 21) - (nav-control-method-22 () none 22) + (nav-control-method-20 (_type_ vector nav-poly vector float symbol symbol) none 20) + (nav-control-method-21 (_type_) none 21) + (nav-control-method-22 (_type_ vector nav-avoid-spheres-params) float 22) (nav-control-method-23 (_type_) none 23) - (nav-control-method-24 () none 24) + (nav-control-method-24 (_type_ vector int) none 24) (get-max-rotation-rate (_type_) float 25) (get-sphere-mask (_type_) none 26) (get-target-speed (_type_) meters 27) @@ -326,11 +314,10 @@ (display-marks? (_type_) symbol 43) (nav-control-method-44 () none 44) (nav-control-method-45 (_type_ vector vector vector) sphere 45) - (find-sphere (_type_) none 46) + (find-sphere (_type_ symbol) none 46) ) ) -;; definition for method 3 of type nav-control (defmethod inspect nav-control ((obj nav-control)) (when (not obj) (set! obj obj) @@ -397,5 +384,4 @@ obj ) -;; failed to figure out what this is: 0 diff --git a/test/decompiler/reference/jak2/engine/nav/nav-enemy-h_REF.gc b/test/decompiler/reference/jak2/engine/nav/nav-enemy-h_REF.gc new file mode 100644 index 0000000000..188577c19b --- /dev/null +++ b/test/decompiler/reference/jak2/engine/nav/nav-enemy-h_REF.gc @@ -0,0 +1,254 @@ +(in-package goal) + +(deftype nav-enemy-info (enemy-info) + ((callback-info nav-callback-info :offset-assert 384) + (use-momentum symbol :offset-assert 388) + (use-frustration basic :offset-assert 392) + (use-stop-chase basic :offset-assert 396) + (use-circling basic :offset-assert 400) + (use-pacing basic :offset-assert 404) + (walk-anim int32 :offset-assert 408) + (turn-anim int32 :offset-assert 412) + (run-anim int32 :offset-assert 416) + (taunt-anim int32 :offset-assert 420) + (run-travel-speed meters :offset-assert 424) + (run-acceleration meters :offset-assert 428) + (run-turning-acceleration meters :offset-assert 432) + (walk-travel-speed meters :offset-assert 436) + (walk-acceleration meters :offset-assert 440) + (walk-turning-acceleration meters :offset-assert 444) + (maximum-rotation-rate degrees :offset-assert 448) + (notice-nav-radius meters :offset-assert 452) + (frustration-distance meters :offset-assert 456) + (frustration-time time-frame :offset-assert 464) + (blocked-time time-frame :offset-assert 472) + (circle-dist-lo float :offset-assert 480) + (circle-dist-hi float :offset-assert 484) + (nav-mesh basic :offset-assert 488) + ) + :method-count-assert 11 + :size-assert #x1ec + :flag-assert #xb000001ec + (:methods + (copy-nav-enemy-info! (_type_ nav-enemy-info) none 10) + ) + ) + +(defmethod inspect nav-enemy-info ((obj nav-enemy-info)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~1Tfact-defaults: ~A~%" (-> obj fact-defaults)) + (format #t "~1Tuse-die-falling: ~A~%" (-> obj use-die-falling)) + (format #t "~1Tuse-victory: ~A~%" (-> obj use-victory)) + (format #t "~1Tuse-jump-blocked: ~A~%" (-> obj use-jump-blocked)) + (format #t "~1Tdebug-draw-neck: ~A~%" (-> obj debug-draw-neck)) + (format #t "~1Tjump-debug-draw: ~A~%" (-> obj jump-debug-draw)) + (format #t "~1Tmove-to-ground: ~A~%" (-> obj move-to-ground)) + (format #t "~1Thover-if-no-ground: ~A~%" (-> obj hover-if-no-ground)) + (format #t "~1Tidle-anim-script: #x~X~%" (-> obj idle-anim-script)) + (format #t "~1Tidle-anim: ~D~%" (-> obj idle-anim)) + (format #t "~1Tnotice-anim: ~D~%" (-> obj notice-anim)) + (format #t "~1Thostile-anim: ~D~%" (-> obj hostile-anim)) + (format #t "~1Thit-anim: ~D~%" (-> obj hit-anim)) + (format #t "~1Tknocked-anim: ~D~%" (-> obj knocked-anim)) + (format #t "~1Tknocked-land-anim: ~D~%" (-> obj knocked-land-anim)) + (format #t "~1Tdie-anim: ~D~%" (-> obj die-anim)) + (format #t "~1Tdie-falling-anim: ~D~%" (-> obj die-falling-anim)) + (format #t "~1Tvictory-anim: ~D~%" (-> obj victory-anim)) + (format #t "~1Tjump-wind-up-anim: ~D~%" (-> obj jump-wind-up-anim)) + (format #t "~1Tjump-in-air-anim: ~D~%" (-> obj jump-in-air-anim)) + (format #t "~1Tjump-land-anim: ~D~%" (-> obj jump-land-anim)) + (format #t "~1Tneck-joint: ~D~%" (-> obj neck-joint)) + (format #t "~1Tlook-at-joint: ~D~%" (-> obj look-at-joint)) + (format #t "~1Tbullseye-joint: ~D~%" (-> obj bullseye-joint)) + (format #t "~1Tsound-hit: ~D~%" (-> obj sound-hit)) + (format #t "~1Tsound-die: ~D~%" (-> obj sound-die)) + (format #t "~1Tnotice-distance: (meters ~m)~%" (-> obj notice-distance)) + (format #t "~1Tnotice-distance-delta: (meters ~m)~%" (-> obj notice-distance-delta)) + (format #t "~1Tproximity-notice-distance: (meters ~m)~%" (-> obj proximity-notice-distance)) + (format #t "~1Tdefault-hit-points: ~D~%" (-> obj default-hit-points)) + (format #t "~1Tgnd-collide-with: ~D~%" (-> obj gnd-collide-with)) + (format #t "~1Toverlaps-others-collide-with-filter: ~D~%" (-> obj overlaps-others-collide-with-filter)) + (format #t "~1Tpenetrate-flinch: ~D~%" (-> obj penetrate-flinch)) + (format #t "~1Tpenetrate-knocked: ~D~%" (-> obj penetrate-knocked)) + (format #t "~1Tmovement-gravity: (meters ~m)~%" (-> obj movement-gravity)) + (format #t "~1Tfriction: ~f~%" (-> obj friction)) + (format #t "~1Tslip-factor: ~f~%" (-> obj slip-factor)) + (format #t "~1Tattack-shove-back: (meters ~m)~%" (-> obj attack-shove-back)) + (format #t "~1Tattack-shove-up: (meters ~m)~%" (-> obj attack-shove-up)) + (format #t "~1Tattack-mode: ~A~%" (-> obj attack-mode)) + (format #t "~1Tattack-damage: ~D~%" (-> obj attack-damage)) + (format #t "~1Trecover-gnd-collide-with: ~D~%" (-> obj recover-gnd-collide-with)) + (format #t "~1Tjump-height-min: (meters ~m)~%" (-> obj jump-height-min)) + (format #t "~1Tjump-height-factor: ~f~%" (-> obj jump-height-factor)) + (format #t "~1Tknocked-seek-ry-clamp: ~f~%" (-> obj knocked-seek-ry-clamp)) + (format #t "~1Tknocked-soft-vxz-lo: ~f~%" (-> obj knocked-soft-vxz-lo)) + (format #t "~1Tknocked-soft-vxz-hi: ~f~%" (-> obj knocked-soft-vxz-hi)) + (format #t "~1Tknocked-soft-vy-lo: ~f~%" (-> obj knocked-soft-vy-lo)) + (format #t "~1Tknocked-soft-vy-hi: ~f~%" (-> obj knocked-soft-vy-hi)) + (format #t "~1Tknocked-medium-vxz-lo: ~f~%" (-> obj knocked-medium-vxz-lo)) + (format #t "~1Tknocked-medium-vxz-hi: ~f~%" (-> obj knocked-medium-vxz-hi)) + (format #t "~1Tknocked-medium-vy-lo: ~f~%" (-> obj knocked-medium-vy-lo)) + (format #t "~1Tknocked-medium-vy-hi: ~f~%" (-> obj knocked-medium-vy-hi)) + (format #t "~1Tknocked-hard-vxz-lo: ~f~%" (-> obj knocked-hard-vxz-lo)) + (format #t "~1Tknocked-hard-vxz-hi: ~f~%" (-> obj knocked-hard-vxz-hi)) + (format #t "~1Tknocked-hard-vy-lo: ~f~%" (-> obj knocked-hard-vy-lo)) + (format #t "~1Tknocked-hard-vy-hi: ~f~%" (-> obj knocked-hard-vy-hi)) + (format #t "~1Tknocked-huge-vxz-lo: ~f~%" (-> obj knocked-huge-vxz-lo)) + (format #t "~1Tknocked-huge-vxz-hi: ~f~%" (-> obj knocked-huge-vxz-hi)) + (format #t "~1Tknocked-huge-vy-lo: ~f~%" (-> obj knocked-huge-vy-lo)) + (format #t "~1Tknocked-huge-vy-hi: ~f~%" (-> obj knocked-huge-vy-hi)) + (format #t "~1Tknocked-yellow-vxz-lo: ~f~%" (-> obj knocked-yellow-vxz-lo)) + (format #t "~1Tknocked-yellow-vxz-hi: ~f~%" (-> obj knocked-yellow-vxz-hi)) + (format #t "~1Tknocked-yellow-vy-lo: ~f~%" (-> obj knocked-yellow-vy-lo)) + (format #t "~1Tknocked-yellow-vy-hi: ~f~%" (-> obj knocked-yellow-vy-hi)) + (format #t "~1Tknocked-red-vxz-lo: ~f~%" (-> obj knocked-red-vxz-lo)) + (format #t "~1Tknocked-red-vxz-hi: ~f~%" (-> obj knocked-red-vxz-hi)) + (format #t "~1Tknocked-red-vy-lo: ~f~%" (-> obj knocked-red-vy-lo)) + (format #t "~1Tknocked-red-vy-hi: ~f~%" (-> obj knocked-red-vy-hi)) + (format #t "~1Tknocked-blue-vxz-lo: ~f~%" (-> obj knocked-blue-vxz-lo)) + (format #t "~1Tknocked-blue-vxz-hi: ~f~%" (-> obj knocked-blue-vxz-hi)) + (format #t "~1Tknocked-blue-vy-lo: ~f~%" (-> obj knocked-blue-vy-lo)) + (format #t "~1Tknocked-blue-vy-hi: ~f~%" (-> obj knocked-blue-vy-hi)) + (format #t "~1Tshadow-size: (meters ~m)~%" (-> obj shadow-size)) + (format #t "~1Tshadow-max-y: (meters ~m)~%" (-> obj shadow-max-y)) + (format #t "~1Tshadow-min-y: (meters ~m)~%" (-> obj shadow-min-y)) + (format #t "~1Tshadow-locus-dist: (meters ~m)~%" (-> obj shadow-locus-dist)) + (format #t "~1Tgem-joint: ~D~%" (-> obj gem-joint)) + (format #t "~1Tgem-seg: ~D~%" (-> obj gem-seg)) + (format #t "~1Tgem-no-seg: ~D~%" (-> obj gem-no-seg)) + (format #t "~1Tgem-offset: #~%" (-> obj gem-offset)) + (format #t "~1Tcallback-info: #~%" (-> obj callback-info)) + (format #t "~1Tuse-momentum: ~A~%" (-> obj use-momentum)) + (format #t "~1Tuse-frustration: ~A~%" (-> obj use-frustration)) + (format #t "~1Tuse-stop-chase: ~A~%" (-> obj use-stop-chase)) + (format #t "~1Tuse-circling: ~A~%" (-> obj use-circling)) + (format #t "~1Tuse-pacing: ~A~%" (-> obj use-pacing)) + (format #t "~1Twalk-anim: ~D~%" (-> obj walk-anim)) + (format #t "~1Tturn-anim: ~D~%" (-> obj turn-anim)) + (format #t "~1Trun-anim: ~D~%" (-> obj run-anim)) + (format #t "~1Ttaunt-anim: ~D~%" (-> obj taunt-anim)) + (format #t "~1Trun-travel-speed: (meters ~m)~%" (-> obj run-travel-speed)) + (format #t "~1Trun-acceleration: (meters ~m)~%" (-> obj run-acceleration)) + (format #t "~1Trun-turning-acceleration: (meters ~m)~%" (-> obj run-turning-acceleration)) + (format #t "~1Twalk-travel-speed: (meters ~m)~%" (-> obj walk-travel-speed)) + (format #t "~1Twalk-acceleration: (meters ~m)~%" (-> obj walk-acceleration)) + (format #t "~1Twalk-turning-acceleration: (meters ~m)~%" (-> obj walk-turning-acceleration)) + (format #t "~1Tmaximum-rotation-rate: (deg ~r)~%" (-> obj maximum-rotation-rate)) + (format #t "~1Tnotice-nav-radius: (meters ~m)~%" (-> obj notice-nav-radius)) + (format #t "~1Tfrustration-distance: (meters ~m)~%" (-> obj frustration-distance)) + (format #t "~1Tfrustration-time: ~D~%" (-> obj frustration-time)) + (format #t "~1Tblocked-time: ~D~%" (-> obj blocked-time)) + (format #t "~1Tcircle-dist-lo: ~f~%" (-> obj circle-dist-lo)) + (format #t "~1Tcircle-dist-hi: ~f~%" (-> obj circle-dist-hi)) + (format #t "~1Tnav-mesh: ~A~%" (-> obj nav-mesh)) + (label cfg-4) + obj + ) + +(deftype nav-enemy (enemy) + ((enemy-info-override nav-enemy-info :offset 216) + (frustration-point vector :inline :offset-assert 544) + (move-dest vector :inline :offset-assert 560) + (frustration-time time-frame :offset-assert 576) + (blocked-start-time time-frame :offset-assert 584) + (restore-nav-radius-time time-frame :offset-assert 592) + (nav-radius-backup float :offset-assert 600) + (circle-radial-dist float :offset 244) + ) + :heap-base #x1e0 + :method-count-assert 178 + :size-assert #x25c + :flag-assert #xb201e0025c + (:methods + (enemy-method-113 (_type_ nav-enemy-info) none :replace 113) + (taunt () _type_ :state 137) + (pacing () _type_ :state 138) + (circling () _type_ :state 139) + (stop-chase () _type_ :state 140) + (debug-control () _type_ :state 141) + (nav-enemy-method-142 (_type_ nav-control) none 142) + (nav-enemy-method-143 (_type_ nav-control) none 143) + (nav-enemy-method-144 (_type_) time-frame :behavior nav-enemy 144) + (nav-enemy-method-145 (_type_ nav-control) none 145) + (nav-enemy-method-146 (_type_ nav-control) none 146) + (nav-enemy-method-147 (_type_ nav-control) none 147) + (nav-enemy-method-148 (_type_ nav-control) none 148) + (nav-enemy-method-149 (_type_ nav-control) none 149) + (nav-enemy-method-150 (_type_ nav-control) none 150) + (nav-enemy-method-151 (_type_ nav-control) none 151) + (nav-enemy-method-152 (_type_ nav-control) none 152) + (nav-enemy-method-153 (_type_ nav-control) none 153) + (nav-enemy-method-154 (_type_ nav-control) none 154) + (nav-enemy-method-155 (_type_) none 155) + (nav-enemy-method-156 (_type_) none 156) + (nav-enemy-method-157 (_type_ vector) nav-poly 157) + (nav-enemy-method-158 (_type_ vector) object 158) + (nav-enemy-method-159 (_type_ vector) symbol 159) + (nav-enemy-method-160 (_type_) none 160) + (nav-enemy-method-161 (_type_) none 161) + (nav-enemy-method-162 (_type_) none 162) + (nav-enemy-method-163 (_type_) none 163) + (nav-enemy-method-164 (_type_) none 164) + (nav-enemy-method-165 (_type_) none 165) + (nav-enemy-method-166 (_type_) none 166) + (nav-enemy-method-167 (_type_) none 167) + (nav-enemy-method-168 (_type_) float 168) + (nav-enemy-method-169 (_type_ float symbol) float 169) + (nav-enemy-method-170 (_type_) none 170) + (nav-enemy-method-171 (_type_) none 171) + (nav-enemy-method-172 (_type_) none 172) + (nav-enemy-method-173 (_type_) none 173) + (nav-enemy-method-174 (_type_) symbol 174) + (nav-enemy-method-175 (_type_) symbol 175) + (nav-enemy-method-176 (_type_) none :behavior nav-enemy 176) + (nav-enemy-method-177 (_type_) none 177) + ) + ) + +(defmethod inspect nav-enemy ((obj nav-enemy)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type enemy inspect))) + (t9-0 obj) + ) + (format #t "~2Tfrustration-point: ~`vector`P~%" (-> obj frustration-point)) + (format #t "~2Tmove-dest: ~`vector`P~%" (-> obj move-dest)) + (format #t "~2Tfrustration-time: ~D~%" (-> obj frustration-time)) + (format #t "~2Tblocked-start-time: ~D~%" (-> obj blocked-start-time)) + (format #t "~2Trestore-nav-radius-time: ~D~%" (-> obj restore-nav-radius-time)) + (format #t "~2Tnav-radius-backup: ~f~%" (-> obj nav-radius-backup)) + (format #t "~2Tcircle-radial-dist: ~f~%" (-> obj desired-angle)) + (label cfg-4) + obj + ) + +(deftype nav-enemy-debug-control-info (basic) + ((enable basic :offset-assert 4) + (steering float :offset-assert 8) + (throttle float :offset-assert 12) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(defmethod inspect nav-enemy-debug-control-info ((obj nav-enemy-debug-control-info)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~1Tenable: ~A~%" (-> obj enable)) + (format #t "~1Tsteering: ~f~%" (-> obj steering)) + (format #t "~1Tthrottle: ~f~%" (-> obj throttle)) + (label cfg-4) + obj + ) + +0 diff --git a/test/decompiler/reference/jak2/engine/nav/nav-mesh-h_REF.gc b/test/decompiler/reference/jak2/engine/nav/nav-mesh-h_REF.gc index b02fd9ead4..374e9f4216 100644 --- a/test/decompiler/reference/jak2/engine/nav/nav-mesh-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/nav/nav-mesh-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type nav-mesh-work-debug (deftype nav-mesh-work-debug (structure) ((debug-vec1 vector :inline :offset-assert 0) (debug-vec2 vector :inline :offset-assert 16) @@ -22,7 +20,6 @@ :flag-assert #x9000001c0 ) -;; definition for method 3 of type nav-mesh-work-debug (defmethod inspect nav-mesh-work-debug ((obj nav-mesh-work-debug)) (when (not obj) (set! obj obj) @@ -46,7 +43,6 @@ obj ) -;; definition of type nav-mesh-work (deftype nav-mesh-work (structure) ((vert0-table int8 4 :offset-assert 0) (vert1-table int8 4 :offset-assert 4) @@ -72,7 +68,6 @@ :flag-assert #x90000013c ) -;; definition for method 3 of type nav-mesh-work (defmethod inspect nav-mesh-work ((obj nav-mesh-work)) (when (not obj) (set! obj obj) @@ -101,22 +96,20 @@ obj ) -;; definition of type nav-mesh-link (deftype nav-mesh-link (structure) - ((id uint32 :offset-assert 0) - (dest-mesh-id uint32 :offset-assert 4) - (src-link-poly-id uint8 :offset-assert 8) - (src-switch-poly-id uint8 :offset-assert 9) - (dest-link-poly-id uint8 :offset-assert 10) - (dest-switch-poly-id uint8 :offset-assert 11) - (dest-mesh basic :offset-assert 12) + ((id uint32 :offset-assert 0) + (dest-mesh-id uint32 :offset-assert 4) + (src-link-poly-id uint8 :offset-assert 8) + (src-switch-poly-id uint8 :offset-assert 9) + (dest-link-poly-id uint8 :offset-assert 10) + (dest-switch-poly-id uint8 :offset-assert 11) + (dest-mesh nav-mesh :offset-assert 12) ) :method-count-assert 9 :size-assert #x10 :flag-assert #x900000010 ) -;; definition for method 3 of type nav-mesh-link (defmethod inspect nav-mesh-link ((obj nav-mesh-link)) (when (not obj) (set! obj obj) @@ -134,7 +127,6 @@ obj ) -;; definition of type nav-poly (deftype nav-poly (structure) ((data uint8 64 :offset-assert 0) (vertex vector 4 :inline :offset 0) @@ -159,16 +151,15 @@ :flag-assert #x900000040 ) -;; definition for method 3 of type nav-poly (defmethod inspect nav-poly ((obj nav-poly)) (when (not obj) (set! obj obj) (goto cfg-4) ) (format #t "[~8x] ~A~%" obj 'nav-poly) - (format #t "~1Tdata[64] @ #x~X~%" (-> obj vertex0)) - (format #t "~1Tvertex[4] @ #x~X~%" (-> obj vertex0)) - (format #t "~1Tvertex0: ~`vector`P~%" (-> obj vertex0)) + (format #t "~1Tdata[64] @ #x~X~%" (-> obj vertex)) + (format #t "~1Tvertex[4] @ #x~X~%" (-> obj vertex)) + (format #t "~1Tvertex0: ~`vector`P~%" (-> obj vertex)) (format #t "~1Tvertex1: ~`vector`P~%" (-> obj vertex1)) (format #t "~1Tvertex2: ~`vector`P~%" (-> obj vertex2)) (format #t "~1Tvertex3: ~`vector`P~%" (-> obj vertex3)) @@ -187,7 +178,6 @@ obj ) -;; definition of type nav-vertex (deftype nav-vertex (vector) "A typedef for `vector`, not used because our code looks nicer if everything is `vector`s anyway and declared out of order (cannot use forward declared structures in inline arrays)" @@ -197,8 +187,6 @@ :flag-assert #x900000010 ) -;; definition for method 3 of type nav-vertex -;; INFO: Used lq/sq (defmethod inspect nav-vertex ((obj nav-vertex)) (when (not obj) (set! obj obj) @@ -215,7 +203,6 @@ obj ) -;; definition of type nav-sphere (deftype nav-sphere (structure) ((trans sphere :inline :offset-assert 0) ) @@ -224,7 +211,6 @@ :flag-assert #x900000010 ) -;; definition for method 3 of type nav-sphere (defmethod inspect nav-sphere ((obj nav-sphere)) (when (not obj) (set! obj obj) @@ -236,7 +222,6 @@ obj ) -;; definition of type nav-ray (deftype nav-ray (structure) ((current-pos vector :inline :offset-assert 0) (dir vector :inline :offset-assert 16) @@ -256,7 +241,6 @@ :flag-assert #x900000050 ) -;; definition for method 3 of type nav-ray (defmethod inspect nav-ray ((obj nav-ray)) (when (not obj) (set! obj obj) @@ -279,7 +263,6 @@ obj ) -;; definition of type nav-route-portal (deftype nav-route-portal (structure) ((vertex nav-vertex 2 :inline :offset-assert 0) (next-poly nav-poly :offset-assert 32) @@ -290,7 +273,6 @@ :flag-assert #x900000025 ) -;; definition for method 3 of type nav-route-portal (defmethod inspect nav-route-portal ((obj nav-route-portal)) (when (not obj) (set! obj obj) @@ -304,7 +286,6 @@ obj ) -;; definition of type nav-find-poly-parms (deftype nav-find-poly-parms (structure) ((point vector :inline :offset-assert 0) (y-threshold float :offset-assert 16) @@ -318,7 +299,6 @@ :flag-assert #x900000024 ) -;; definition for method 3 of type nav-find-poly-parms (defmethod inspect nav-find-poly-parms ((obj nav-find-poly-parms)) (when (not obj) (set! obj obj) @@ -335,7 +315,6 @@ obj ) -;; definition of type clamp-travel-vector-to-mesh-return-info (deftype clamp-travel-vector-to-mesh-return-info (structure) ((found-boundary basic :offset-assert 0) (intersection vector :inline :offset-assert 16) @@ -356,7 +335,6 @@ :flag-assert #x9000000a0 ) -;; definition for method 3 of type clamp-travel-vector-to-mesh-return-info (defmethod inspect clamp-travel-vector-to-mesh-return-info ((obj clamp-travel-vector-to-mesh-return-info)) (when (not obj) (set! obj obj) @@ -380,32 +358,31 @@ obj ) -;; definition of type nav-mesh (deftype nav-mesh (basic) - ((work nav-mesh-work :offset-assert 4) - (poly-array (inline-array nav-poly) :offset-assert 8) - (static-sphere-count uint8 :offset-assert 12) - (poly-count uint8 :offset-assert 13) - (nav-control-count uint8 :offset-assert 14) - (max-nav-control-count uint8 :offset-assert 15) - (route uint32 :offset-assert 16) - (poly-hash grid-hash :offset-assert 20) - (nav-control-array (inline-array nav-control) :offset-assert 24) - (sphere-hash sphere-hash :offset-assert 28) - (static-sphere (inline-array sphere) :offset-assert 32) - (user-list engine :offset-assert 36) - (next-nav-mesh surface :offset-assert 40) - (prev-nav-mesh surface :offset-assert 44) - (bounds vector :inline :offset-assert 48) - (origin vector :inline :offset 48) - (entity entity :offset-assert 64) - (link-array (array nav-mesh-link) :offset-assert 68) - (link-count uint8 :offset-assert 72) - (flags nav-mesh-flag :offset-assert 73) - (pad1 uint8 2 :offset-assert 74) - (nearest-y-threshold meters :offset-assert 76) - (water-max-height meters :offset-assert 80) - (pad2 uint32 7 :offset-assert 84) + ((work nav-mesh-work :offset-assert 4) + (poly-array (inline-array nav-poly) :offset-assert 8) + (static-sphere-count uint8 :offset-assert 12) + (poly-count uint8 :offset-assert 13) + (nav-control-count uint8 :offset-assert 14) + (max-nav-control-count uint8 :offset-assert 15) + (route (pointer nav-poly) :offset-assert 16) + (poly-hash grid-hash :offset-assert 20) + (nav-control-array (inline-array nav-control) :offset-assert 24) + (sphere-hash sphere-hash :offset-assert 28) + (static-sphere (inline-array sphere) :offset-assert 32) + (user-list engine :offset-assert 36) + (next-nav-mesh surface :offset-assert 40) + (prev-nav-mesh surface :offset-assert 44) + (bounds vector :inline :offset-assert 48) + (origin vector :inline :offset 48) + (entity entity :offset-assert 64) + (link-array (inline-array nav-mesh-link) :offset-assert 68) + (link-count uint8 :offset-assert 72) + (flags nav-mesh-flag :offset-assert 73) + (pad1 uint8 2 :offset-assert 74) + (nearest-y-threshold meters :offset-assert 76) + (water-max-height meters :offset-assert 80) + (pad2 uint32 7 :offset-assert 84) ) :method-count-assert 47 :size-assert #x70 @@ -415,23 +392,23 @@ (nav-mesh-method-10 (_type_ vector vector nav-poly) nav-poly 10) (nav-mesh-method-11 (_type_ nav-poly vector) vector 11) (nav-mesh-method-12 (_type_ nav-poly vector) none 12) - (nav-mesh-method-13 (_type_ symbol symbol) none 13) - (get-route-portal (_type_ object object nav-find-poly-parms) none 14) + (nav-mesh-method-13 (_type_ nav-poly nav-poly) nav-poly 13) + (get-route-portal (_type_ nav-poly nav-poly nav-route-portal) (inline-array nav-vertex) 14) (initialize-mesh! (_type_) none 15) (move-along-nav-ray! (_type_ nav-ray) none 16) (try-move-along-ray (_type_ nav-poly vector vector float) meters 17) - (nav-mesh-method-18 () none 18) - (nav-mesh-method-19 () none 19) - (nav-mesh-method-20 () none 20) - (nav-mesh-method-21 () none 21) + (nav-mesh-method-18 (_type_ vector nav-poly vector float symbol clamp-travel-vector-to-mesh-return-info) none 18) + (nav-mesh-method-19 (_type_) none 19) + (nav-mesh-method-20 (_type_ clamp-travel-vector-to-mesh-return-info) none 20) + (find-adjacent-bounds-one (_type_ vector nav-poly int int) none 21) (nav-mesh-method-22 (_type_ vector vector) none 22) (nav-mesh-method-23 (_type_ entity-nav-mesh) none 23) (nav-mesh-method-24 (_type_) none 24) (nav-mesh-method-25 (_type_) none 25) (nav-mesh-method-26 (_type_) none 26) - (new-nav-control (_type_ vector int) nav-control 27) + (new-nav-control (_type_ process-drawable int) nav-control 27) (nav-mesh-method-28 (_type_ object) none 28) - (nav-mesh-method-29 (_type_ object symbol) nav-control 29) + (nav-mesh-method-29 (_type_ process-drawable symbol) nav-control 29) (nav-mesh-method-30 (_type_ process-drawable) none 30) (change-to (_type_ process-drawable) none 31) (nav-mesh-method-32 (_type_ uint32) none 32) @@ -444,7 +421,7 @@ (closest-point-on-boundary (_type_ nav-poly vector vector) none 39) (nav-mesh-method-40 (_type_ nav-poly vector object vector) none 40) (project-point-into-poly-2d (_type_ nav-poly vector vector) none 41) - (nav-mesh-method-42 (_type_ nav-find-poly-parms) symbol 42) + (nav-mesh-method-42 (_type_ nav-find-poly-parms) nav-poly 42) (nav-mesh-method-43 (_type_ nav-find-poly-parms) none 43) (nav-mesh-method-44 (_type_ vector float float) symbol 44) (nav-mesh-method-45 (_type_ entity-perm) none 45) @@ -452,7 +429,6 @@ ) ) -;; definition for method 3 of type nav-mesh (defmethod inspect nav-mesh ((obj nav-mesh)) (when (not obj) (set! obj obj) @@ -493,7 +469,6 @@ obj ) -;; definition for function vector-normalize-unity! (defun vector-normalize-unity! ((arg0 vector)) (rlet ((acc :class vf) (Q :class vf) @@ -526,8 +501,6 @@ ) ) -;; definition for function vector-normalize-unity-copy! -;; INFO: Used lq/sq (defun vector-normalize-unity-copy! ((arg0 vector) (arg1 vector)) (rlet ((acc :class vf) (Q :class vf) @@ -561,13 +534,10 @@ ) ) -;; definition (debug) for function debug-validate-current-poly (defun-debug debug-validate-current-poly () #f ) -;; definition for function init-ray -;; WARN: Return type mismatch int vs none. (defun init-ray ((arg0 nav-ray)) (rlet ((acc :class vf) (Q :class vf) @@ -611,7 +581,6 @@ ) ) -;; definition for function point-poly-intersection? (defun point-poly-intersection? ((arg0 nav-mesh) (arg1 vector) (arg2 int) (arg3 (inline-array vector))) (let ((v1-1 (-> arg0 work vert0-table)) (a0-2 (-> arg0 work vert1-table)) @@ -634,12 +603,11 @@ #t ) -;; definition for method 37 of type nav-mesh (defmethod point-in-poly? nav-mesh ((obj nav-mesh) (arg0 nav-poly) (arg1 vector)) (let* ((a3-0 obj) (v1-0 arg1) (a0-1 (-> arg0 vertex-count)) - (a1-1 (the-as (inline-array vector) (-> arg0 vertex0))) + (a1-1 (-> arg0 vertex)) (a2-2 (-> a3-0 work vert0-table)) (a3-2 (-> a3-0 work vert1-table)) ) @@ -661,13 +629,6 @@ #t ) -;; definition for method 39 of type nav-mesh -;; INFO: Used lq/sq -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Return type mismatch vector vs none. (defmethod closest-point-on-boundary nav-mesh ((obj nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector)) (local-vars (sv-48 vector) (sv-52 vector) (sv-56 float)) (set! sv-48 (new 'stack-no-clear 'vector)) @@ -690,13 +651,6 @@ (none) ) -;; definition for method 41 of type nav-mesh -;; INFO: Used lq/sq -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Return type mismatch vector vs none. (defmethod project-point-into-poly-2d nav-mesh ((obj nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector)) (local-vars (sv-48 vector) (sv-52 vector) (sv-56 float)) (cond @@ -728,57 +682,6 @@ (none) ) -;; definition for method 16 of type nav-mesh -;; INFO: Used lq/sq -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Return type mismatch int vs none. (defmethod move-along-nav-ray! nav-mesh ((obj nav-mesh) (ray nav-ray)) (local-vars (next-poly-idx int) @@ -842,7 +745,7 @@ (+! (-> ray current-pos z) delta-z) (set! sv-68 (-> current-poly adj-poly next-poly-idx)) (if (!= sv-68 255) - (set! (-> ray next-poly) (the-as nav-poly (-> obj poly-array sv-68 vertex0))) + (set! (-> ray next-poly) (-> obj poly-array sv-68)) ) (cond ((and (-> ray next-poly) (zero? (logand (-> ray next-poly pat) (-> ray ignore)))) @@ -863,8 +766,6 @@ (none) ) -;; definition (debug) for function nav-sphere-from-cam -;; WARN: Return type mismatch int vs none. (defun-debug nav-sphere-from-cam () (let ((v1-0 (camera-pos))) (format #t "SPHEREM(~4,,1M, ~4,,1M, ~4,,1M, 1.0)~%" (-> v1-0 x) (-> v1-0 y) (-> v1-0 z)) diff --git a/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc b/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc index be594bf6fc..445bff42f0 100644 --- a/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc +++ b/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc @@ -1,29 +1,21 @@ -;;-*-Lisp-*- (in-package goal) -;; definition for method 9 of type trajectory (defmethod compute-trans-at-time trajectory ((obj trajectory) (arg0 float) (arg1 vector)) (vector+float*! arg1 (-> obj initial-position) (-> obj initial-velocity) arg0) (+! (-> arg1 y) (* 0.5 arg0 arg0 (-> obj gravity))) arg1 ) -;; definition for method 10 of type trajectory -;; INFO: Used lq/sq (defmethod compute-transv-at-time trajectory ((obj trajectory) (arg0 float) (arg1 vector)) (set! (-> arg1 quad) (-> obj initial-velocity quad)) (+! (-> arg1 y) (* arg0 (-> obj gravity))) arg1 ) -;; definition for method 11 of type trajectory (defmethod compute-time-until-apex trajectory ((obj trajectory)) (/ (- (-> obj initial-velocity y)) (-> obj gravity)) ) -;; definition for method 12 of type trajectory -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod setup-from-to-duration! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (set! (-> obj initial-position quad) (-> arg0 quad)) (set! (-> obj gravity) arg3) @@ -37,8 +29,6 @@ (none) ) -;; definition for method 13 of type trajectory -;; WARN: Return type mismatch int vs none. (defmethod setup-from-to-xz-vel! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (let ((f0-1 (/ (vector-vector-xz-distance arg1 arg0) arg2))) (setup-from-to-duration! obj arg0 arg1 f0-1 arg3) @@ -47,8 +37,6 @@ (none) ) -;; definition for method 14 of type trajectory -;; WARN: Return type mismatch int vs none. (defmethod setup-from-to-y-vel! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (let* ((f0-0 arg2) (f1-3 (- (* f0-0 f0-0) (* 2.0 (- (-> arg0 y) (-> arg1 y)) arg3))) @@ -65,8 +53,6 @@ (none) ) -;; definition for method 15 of type trajectory -;; WARN: Return type mismatch int vs none. (defmethod setup-from-to-height! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (let* ((f0-1 (+ arg2 (fmax (-> arg0 y) (-> arg1 y)))) (f1-4 (* 2.0 (- (-> arg0 y) f0-1) arg3)) @@ -81,9 +67,6 @@ (none) ) -;; definition for method 16 of type trajectory -;; WARN: Return type mismatch int vs none. -;; WARN: Function (method 16 trajectory) has a return type of none, but the expression builder found a return statement. (defmethod setup-from-to-duration-and-height! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (let ((f0-1 (- (-> arg1 y) (-> arg0 y)))) (cond @@ -116,9 +99,6 @@ (none) ) -;; definition for method 17 of type trajectory -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod debug-draw trajectory ((obj trajectory)) (let ((s5-0 (new 'stack-no-clear 'vector)) (s4-0 (new 'stack-no-clear 'vector)) @@ -145,8 +125,6 @@ (none) ) -;; definition for method 9 of type impact-control -;; INFO: Used lq/sq (defmethod initialize impact-control ((obj impact-control) (arg0 process-drawable) (arg1 int) (arg2 float) (arg3 collide-spec)) (set! (-> obj start-time) (-> self clock frame-counter)) (set! (-> obj process) (the-as (pointer process-drawable) (process->ppointer arg0))) @@ -158,9 +136,6 @@ obj ) -;; definition for method 10 of type impact-control -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod update-from-cspace impact-control ((obj impact-control)) (when (>= (-> obj joint) 0) (set! (-> obj trans 1 quad) (-> obj trans 0 quad)) @@ -171,8 +146,6 @@ (none) ) -;; definition for method 11 of type impact-control -;; INFO: Used lq/sq (defmethod impact-control-method-11 impact-control ((obj impact-control) (arg0 collide-query) (arg1 process) (arg2 pat-surface)) (set! (-> arg0 start-pos quad) (-> obj trans 1 quad)) (set! (-> arg0 move-dist quad) (-> obj dir quad)) @@ -220,16 +193,12 @@ ) ) -;; definition for method 9 of type point-tracker -;; INFO: Used lq/sq (defmethod initialize point-tracker ((obj point-tracker) (arg0 vector) (arg1 vector)) (set! (-> obj trans 0 quad) (-> arg0 quad)) (set! (-> obj trans 1 quad) (-> arg1 quad)) obj ) -;; definition for method 10 of type point-tracker -;; INFO: Used lq/sq (defmethod point-tracker-method-10 point-tracker ((obj point-tracker) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) (cond ((>= 0.0 arg3) @@ -247,7 +216,6 @@ arg0 ) -;; definition for method 11 of type point-tracker (defmethod point-tracker-method-11 point-tracker ((obj point-tracker) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) (with-pp (let ((v1-1 (point-tracker-method-10 obj (new 'stack-no-clear 'vector) arg1 arg2 arg3))) @@ -258,7 +226,6 @@ ) ) -;; definition for method 13 of type combo-tracker (defmethod combo-tracker-method-13 combo-tracker ((obj combo-tracker) (arg0 handle) (arg1 vector) (arg2 float) (arg3 vector) (arg4 float)) (cond ((send-event (handle->process arg0) 'combo) @@ -310,7 +277,6 @@ ) ) -;; definition for method 12 of type combo-tracker (defmethod combo-tracker-method-12 combo-tracker ((obj combo-tracker) (arg0 vector) (arg1 vector) (arg2 process) (arg3 time-frame)) (initialize obj arg0 arg1) (set! (-> obj target) (process->handle arg2)) @@ -318,8 +284,6 @@ obj ) -;; definition for method 11 of type combo-tracker -;; INFO: Used lq/sq (defmethod point-tracker-method-11 combo-tracker ((obj combo-tracker) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) (local-vars (at-0 int)) (with-pp @@ -344,7 +308,15 @@ (when s4-1 (let ((a2-3 ((method-of-type nav-control nav-control-method-11) (the-as nav-control s4-1) arg1))) (if a2-3 - ((method-of-type nav-control nav-control-method-20) (the-as nav-control s4-1) arg1 a2-3 arg0 #x45000000 #f #f) + ((method-of-type nav-control nav-control-method-20) + (the-as nav-control s4-1) + arg1 + (the-as nav-poly a2-3) + arg0 + 2048.0 + #f + #f + ) (set! (-> arg0 quad) (the-as uint128 0)) ) ) @@ -366,7 +338,6 @@ ) ) -;; definition for function traj2d-calc-initial-speed-using-tilt (defun traj2d-calc-initial-speed-using-tilt ((arg0 traj2d-params)) (let ((f0-4 (* (- (* (-> arg0 x) (tan (-> arg0 initial-tilt))) (-> arg0 y)) (/ 2.0 (-> arg0 gravity))))) (cond @@ -384,7 +355,6 @@ ) ) -;; definition for function traj3d-calc-initial-velocity-using-tilt (defun traj3d-calc-initial-velocity-using-tilt ((arg0 traj3d-params)) (vector-! (-> arg0 diff) (-> arg0 dest) (-> arg0 src)) (let ((s5-0 (new 'stack-no-clear 'traj2d-params))) @@ -420,9 +390,6 @@ ) ) -;; definition for method 9 of type cubic-curve -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod cubic-curve-method-9 cubic-curve ((obj cubic-curve) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) (rlet ((acc :class vf) (vf0 :class vf) @@ -467,7 +434,6 @@ ) ) -;; definition for method 10 of type cubic-curve (defmethod cubic-curve-method-10 cubic-curve ((obj cubic-curve) (arg0 vector) (arg1 float)) (let ((v1-0 (new 'stack-no-clear 'trajectory))) (let ((f0-1 (* arg1 arg1))) @@ -479,7 +445,6 @@ arg0 ) -;; definition for method 11 of type cubic-curve (defmethod cubic-curve-method-11 cubic-curve ((obj cubic-curve) (arg0 vector) (arg1 float)) (let ((v1-0 (new 'stack-no-clear 'trajectory))) (set-vector! (-> v1-0 initial-position) 0.0 1.0 (* 2.0 arg1) (* 3.0 arg1 arg1)) @@ -489,7 +454,6 @@ arg0 ) -;; definition for method 12 of type cubic-curve (defmethod cubic-curve-method-12 cubic-curve ((obj cubic-curve) (arg0 vector) (arg1 float)) (let ((v1-0 (new 'stack-no-clear 'trajectory))) (set-vector! (-> v1-0 initial-position) 0.0 0.0 2.0 (* 6.0 arg1)) @@ -499,9 +463,6 @@ arg0 ) -;; definition for method 13 of type cubic-curve -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod debug-draw-curve cubic-curve ((obj cubic-curve)) (let ((s5-0 (new 'stack-no-clear 'trajectory)) (s4-0 10) diff --git a/test/decompiler/reference/jak2/engine/process-drawable/process-focusable_REF.gc b/test/decompiler/reference/jak2/engine/process-drawable/process-focusable_REF.gc index d12dc0d2af..7207540bcd 100644 --- a/test/decompiler/reference/jak2/engine/process-drawable/process-focusable_REF.gc +++ b/test/decompiler/reference/jak2/engine/process-drawable/process-focusable_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type process-focusable (deftype process-focusable (process-drawable) ((root-override collide-shape :offset 128) (focus-status focus-status :offset-assert 200) @@ -21,7 +19,6 @@ ) ) -;; definition for method 3 of type process-focusable (defmethod inspect process-focusable ((obj process-focusable)) (when (not obj) (set! obj obj) @@ -35,10 +32,8 @@ obj ) -;; definition for method 20 of type process-focusable -;; WARN: Return type mismatch structure vs vector. (defmethod get-trans process-focusable ((obj process-focusable) (arg0 int)) - "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]]" + "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]])" (let ((gp-0 (-> obj root-override))) (the-as vector (cond ((zero? arg0) @@ -58,37 +53,28 @@ ) ) -;; definition for method 22 of type process-focusable (defmethod get-transv process-focusable ((obj process-focusable)) (-> obj root-override transv) ) -;; definition for method 21 of type process-focusable (defmethod get-quat process-focusable ((obj process-focusable) (arg0 int)) (-> obj root-override quat) ) -;; definition for method 23 of type process-focusable (defmethod process-focusable-method-23 process-focusable ((obj process-focusable) (arg0 int)) 0 ) -;; definition for method 24 of type process-focusable -;; WARN: Return type mismatch int vs meters. (defmethod get-water-height process-focusable ((obj process-focusable)) (the-as meters 0) ) -;; definition for method 26 of type process-focusable (defmethod process-focusable-method-26 process-focusable ((obj process-focusable)) 0.0 ) -;; definition for method 25 of type process-focusable -;; WARN: Return type mismatch int vs time-frame. (defmethod process-focusable-method-25 process-focusable ((obj process-focusable)) (the-as time-frame 0) ) -;; failed to figure out what this is: 0 diff --git a/test/decompiler/reference/jak2/engine/process-drawable/simple-focus_REF.gc b/test/decompiler/reference/jak2/engine/process-drawable/simple-focus_REF.gc index 6bafcd3aa3..1f48f01495 100644 --- a/test/decompiler/reference/jak2/engine/process-drawable/simple-focus_REF.gc +++ b/test/decompiler/reference/jak2/engine/process-drawable/simple-focus_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type simple-focus (deftype simple-focus (process-focusable) ((first-time? symbol :offset-assert 204) ) @@ -14,7 +12,6 @@ ) ) -;; definition for method 3 of type simple-focus (defmethod inspect simple-focus ((obj simple-focus)) (when (not obj) (set! obj obj) @@ -28,13 +25,11 @@ obj ) -;; definition for method 20 of type simple-focus (defmethod get-trans simple-focus ((obj simple-focus) (arg0 int)) - "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]]" + "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]])" (-> obj root-override trans) ) -;; definition for method 12 of type simple-focus (defmethod run-logic? simple-focus ((obj simple-focus)) (when (-> obj first-time?) (set! (-> obj first-time?) #f) @@ -42,7 +37,6 @@ ) ) -;; failed to figure out what this is: (defstate idle (simple-focus) :virtual #t :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) @@ -59,8 +53,6 @@ :code (the-as (function none :behavior simple-focus) sleep-code) ) -;; definition for function simple-focus-init-by-other -;; WARN: Return type mismatch object vs none. (defbehavior simple-focus-init-by-other simple-focus () "Initializes the new [[simple-focus]]. `first-time?` will be set to [[#t]]" (let ((root (new 'process 'trsqv))) diff --git a/test/decompiler/reference/jak2/engine/spatial-hash/spatial-hash-h_REF.gc b/test/decompiler/reference/jak2/engine/spatial-hash/spatial-hash-h_REF.gc index 40ceb8194b..658815cee4 100644 --- a/test/decompiler/reference/jak2/engine/spatial-hash/spatial-hash-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/spatial-hash/spatial-hash-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type grid-hash-word (deftype grid-hash-word (uint8) () :method-count-assert 9 @@ -9,7 +7,6 @@ :flag-assert #x900000001 ) -;; definition of type grid-hash-box (deftype grid-hash-box (structure) ((min int8 3 :offset-assert 0) (max int8 3 :offset-assert 3) @@ -20,7 +17,6 @@ :flag-assert #x900000006 ) -;; definition for method 3 of type grid-hash-box (defmethod inspect grid-hash-box ((obj grid-hash-box)) (when (not obj) (set! obj obj) @@ -33,7 +29,6 @@ obj ) -;; definition of type grid-hash (deftype grid-hash (basic) ((work grid-hash-work :offset-assert 4) (search-box grid-hash-box :inline :offset-assert 8) @@ -61,8 +56,8 @@ (grid-hash-method-9 (_type_ int (array float) int) none 9) (grid-hash-method-10 (_type_) none 10) (grid-hash-method-11 (_type_) none 11) - (grid-hash-method-12 (_type_) none 12) - (grid-hash-method-13 (_type_) none 13) + (grid-hash-method-12 (_type_ vector) grid-hash-box 12) + (grid-hash-method-13 (_type_ vector float) grid-hash-box 13) (draw-grid (_type_ rgba) none 14) (dump-grid-info (_type_) none 15) (grid-hash-method-16 (_type_ grid-hash-box grid-hash-box) none 16) @@ -77,7 +72,6 @@ ) ) -;; definition for method 3 of type grid-hash (defmethod inspect grid-hash ((obj grid-hash)) (when (not obj) (set! obj obj) @@ -105,7 +99,6 @@ obj ) -;; definition of type find-nav-sphere-ids-params (deftype find-nav-sphere-ids-params (structure) ((bsphere sphere :inline :offset-assert 0) (y-threshold float :offset-assert 16) @@ -119,7 +112,6 @@ :flag-assert #x900000020 ) -;; definition for method 3 of type find-nav-sphere-ids-params (defmethod inspect find-nav-sphere-ids-params ((obj find-nav-sphere-ids-params)) (when (not obj) (set! obj obj) @@ -136,7 +128,6 @@ obj ) -;; definition of type sphere-hash (deftype sphere-hash (grid-hash) ((sphere-array (inline-array sphere) :offset-assert 88) (max-object-count int16 :offset-assert 92) @@ -160,7 +151,6 @@ ) ) -;; definition for method 3 of type sphere-hash (defmethod inspect sphere-hash ((obj sphere-hash)) (when (not obj) (set! obj obj) @@ -193,7 +183,6 @@ obj ) -;; definition of type hash-object-info (deftype hash-object-info (structure) ((object basic :offset-assert 0) ) @@ -202,7 +191,6 @@ :flag-assert #x900000004 ) -;; definition for method 3 of type hash-object-info (defmethod inspect hash-object-info ((obj hash-object-info)) (when (not obj) (set! obj obj) @@ -214,7 +202,6 @@ obj ) -;; definition of type spatial-hash (deftype spatial-hash (sphere-hash) ((object-array (pointer hash-object-info) :offset-assert 104) (mem-object-array (pointer hash-object-info) :offset-assert 108) @@ -234,7 +221,6 @@ ) ) -;; definition for method 3 of type spatial-hash (defmethod inspect spatial-hash ((obj spatial-hash)) (when (not obj) (set! obj obj) @@ -270,5 +256,4 @@ obj ) -;; failed to figure out what this is: 0 diff --git a/test/decompiler/reference/jak2/engine/target/target-util_REF.gc b/test/decompiler/reference/jak2/engine/target/target-util_REF.gc index 39011b60e3..a5377dacbf 100644 --- a/test/decompiler/reference/jak2/engine/target/target-util_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target-util_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; failed to figure out what this is: (defskelgroup skel-jchar jakb 0 -1 ((1 (meters 999999))) :bounds (static-spherem 0 0 0 3.2) @@ -13,7 +11,6 @@ :shadow-joint-index 3 ) -;; definition for symbol *target-shadow-control*, type shadow-control (define *target-shadow-control* (new 'static 'shadow-control :settings (new 'static 'shadow-settings :center (new 'static 'vector :w (the-as float #x2)) @@ -24,7 +21,6 @@ ) ) -;; failed to figure out what this is: (defskelgroup skel-jak-highres jak-highres 0 -1 ((1 (meters 999999))) :bounds (static-spherem 0 0 0 3.2) @@ -35,7 +31,6 @@ :shadow-joint-index 3 ) -;; failed to figure out what this is: (defskelgroup skel-generic-blast collectables 10 12 ((11 (meters 999999))) :bounds (static-spherem 0 0 0 50) @@ -43,7 +38,6 @@ :sort 4 ) -;; failed to figure out what this is: (defskelgroup skel-generic-ripples collectables 13 15 ((14 (meters 999999))) :bounds (static-spherem 0 0 0 6) @@ -51,7 +45,6 @@ :sort 4 ) -;; failed to figure out what this is: (defskelgroup skel-bomb-blast collectables 0 2 ((1 (meters 999999))) :bounds (static-spherem 0 0 0 50) @@ -59,7 +52,6 @@ :sort 4 ) -;; definition of type target-bank (deftype target-bank (basic) ((jump-collide-offset meters :offset-assert 4) (jump-height-min meters :offset-assert 8) @@ -170,7 +162,6 @@ :flag-assert #x9000002a8 ) -;; definition for method 3 of type target-bank (defmethod inspect target-bank ((obj target-bank)) (when (not obj) (set! obj obj) @@ -284,7 +275,6 @@ obj ) -;; definition for symbol *TARGET-bank*, type target-bank (define *TARGET-bank* (new 'static 'target-bank :jump-collide-offset (meters 0.7) :jump-height-min (meters 1.01) @@ -390,8 +380,6 @@ ) ) -;; definition for function target-start-attack -;; WARN: Return type mismatch int vs none. (defbehavior target-start-attack target () (let* ((v1-0 *game-info*) (a0-1 (+ (-> v1-0 attack-id) 1)) @@ -406,9 +394,6 @@ (none) ) -;; definition for function target-danger-set! -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-danger-set! target ((arg0 symbol) (arg1 symbol)) (let ((s4-0 (-> self control unknown-sphere-array00 6)) (s5-0 (-> self control unknown-sphere-array00 7)) @@ -765,7 +750,6 @@ (none) ) -;; definition for function target-collide-set! (defbehavior target-collide-set! target ((arg0 symbol) (arg1 float)) (let ((gp-0 (-> self control))) (if (and (= arg0 'normal) @@ -1115,12 +1099,10 @@ 0 ) -;; definition for method 27 of type control-info (defmethod get-quaternion control-info ((obj control-info)) (-> obj unknown-quaternion00) ) -;; definition for function debounce-speed (defbehavior debounce-speed target ((arg0 float) (arg1 float) (arg2 vector) (arg3 vector)) (if (and (< 0.3 arg0) (< arg0 0.7) (< 0.0 arg1) (< (vector-dot arg2 arg3) 0.2)) (set! arg0 0.0) @@ -1128,7 +1110,6 @@ arg0 ) -;; definition for function target-align-vel-z-adjust (defbehavior target-align-vel-z-adjust target ((arg0 float)) (let ((f1-0 (-> self control unknown-float17))) (* arg0 (if (< 0.0 f1-0) @@ -1139,7 +1120,6 @@ ) ) -;; definition for method 26 of type target (defmethod process-focusable-method-26 target ((obj target)) (if (or (and (logtest? (focus-status dark) (-> obj focus-status)) (nonzero? (-> obj darkjak)) @@ -1152,9 +1132,6 @@ ) ) -;; definition for method 16 of type target -;; INFO: Used lq/sq -;; WARN: Return type mismatch control-info vs object. (defmethod apply-alignment target ((obj target) (arg0 align-opts) (arg1 transformq) (arg2 vector)) (with-pp (let ((s2-0 (new 'stack-no-clear 'vector))) @@ -1208,7 +1185,6 @@ ) ) -;; definition for function average-turn-angle (defun average-turn-angle ((arg0 target)) (let ((f30-0 0.0)) (dotimes (s5-0 8) @@ -1225,7 +1201,6 @@ ) ) -;; definition for function can-play-stance-amibent? (defbehavior can-play-stance-amibent? target () (and (or (and (= *kernel-boot-message* 'kiosk) (>= (+ -300000 (-> *display* real-clock frame-counter)) (seconds 60)) @@ -1272,12 +1247,10 @@ ) ) -;; definition for function target-height-above-ground (defbehavior target-height-above-ground target () (- (-> self control trans y) (-> self control gspot-pos y)) ) -;; definition for function can-jump? (defbehavior can-jump? target ((arg0 symbol)) (and (or (logtest? (-> self control status) (cshape-moving-flags on-surface)) (< (- (-> self clock frame-counter) (-> self control unknown-time-frame06)) @@ -1305,19 +1278,15 @@ ) ) -;; definition for function target-jump-go -;; WARN: Return type mismatch object vs none. (defbehavior target-jump-go target () (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) (none) ) -;; definition for function move-legs? (defbehavior move-legs? target () (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) ) -;; definition for function jump-hit-ground-stuck? (defbehavior jump-hit-ground-stuck? target () (or (logtest? (-> self control status) (cshape-moving-flags on-surface)) (when (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) @@ -1329,8 +1298,6 @@ ) ) -;; definition for function target-time-to-ground -;; WARN: Return type mismatch int vs time-frame. (defbehavior target-time-to-ground target () (let ((f0-0 (target-height-above-ground)) (f2-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) @@ -1345,8 +1312,6 @@ ) ) -;; definition for function fall-test -;; WARN: Return type mismatch object vs none. (defbehavior fall-test target ((arg0 (state symbol target)) (arg1 float)) (when (and (not (logtest? (-> self control status) (cshape-moving-flags on-surface))) (>= (- (-> self clock frame-counter) (-> self control unknown-time-frame06)) @@ -1365,8 +1330,6 @@ (none) ) -;; definition for function slide-down-test -;; WARN: Return type mismatch object vs none. (defbehavior slide-down-test target () (if (and (not (logtest? (-> self control status) (cshape-moving-flags on-surface csmf07))) (>= (- (-> self clock frame-counter) (-> self control unknown-time-frame06)) @@ -1380,7 +1343,6 @@ (none) ) -;; definition for function smack-surface? (defbehavior smack-surface? target ((arg0 symbol)) (and (< 0.7 (-> self control touch-angle)) (and (< (-> self control surface-angle) 0.3) @@ -1390,7 +1352,6 @@ ) ) -;; definition for function can-roll? (defbehavior can-roll? target () (and (logtest? (-> self control status) (cshape-moving-flags on-surface)) (or (not (logtest? (-> self control status) (cshape-moving-flags t-wall))) @@ -1412,7 +1373,6 @@ ) ) -;; definition for function can-duck? (defbehavior can-duck? target () (and (logtest? (-> self control status) (cshape-moving-flags on-surface)) (>= (-> self control unknown-float0000) 0.7) @@ -1424,8 +1384,6 @@ ) ) -;; definition for function can-exit-duck? -;; INFO: Used lq/sq (defun can-exit-duck? ((arg0 target)) (let ((gp-0 (new 'stack-no-clear 'collide-query))) (let ((s4-0 (new 'stack-no-clear 'inline-array 'sphere 2))) @@ -1460,7 +1418,6 @@ ) ) -;; definition for function can-hands? (defbehavior can-hands? target ((arg0 symbol)) (cond ((or (logtest? (-> self state-flags) (state-flags sf8)) @@ -1494,7 +1451,6 @@ ) ) -;; definition for function can-feet? (defbehavior can-feet? target ((arg0 symbol)) (cond ((or (logtest? (-> self state-flags) (state-flags sf8)) @@ -1514,15 +1470,12 @@ ) ) -;; definition for function are-still? (defbehavior are-still? target () (or (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (< (-> self control unknown-float05) 61440.0) ) ) -;; definition for function vector-local+! -;; INFO: Used lq/sq (defbehavior vector-local+! target ((arg0 vector) (arg1 vector)) (let ((s5-0 (new-stack-vector0))) (vector-matrix*! s5-0 arg1 (-> self control unknown-matrix01)) @@ -1530,8 +1483,6 @@ ) ) -;; definition for function move-forward -;; INFO: Used lq/sq (defbehavior move-forward target ((arg0 float)) (let ((a1-0 (new-stack-vector0)) (gp-0 (new-stack-vector0)) @@ -1542,8 +1493,6 @@ ) ) -;; definition for function set-forward-vel -;; INFO: Used lq/sq (defbehavior set-forward-vel target ((arg0 float)) (let ((gp-0 (new-stack-vector0))) (vector-matrix*! gp-0 (-> self control transv) (-> self control unknown-matrix00)) @@ -1553,9 +1502,6 @@ ) ) -;; definition for function delete-back-vel -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior delete-back-vel target () (let ((gp-0 (new-stack-vector0))) (vector-z-quaternion! gp-0 (-> self control dir-targ)) @@ -1582,8 +1528,6 @@ (none) ) -;; definition for function set-side-vel -;; INFO: Used lq/sq (defbehavior set-side-vel target ((arg0 float)) (let ((gp-0 (new-stack-vector0))) (vector-matrix*! gp-0 (-> self control transv) (-> self control unknown-matrix00)) @@ -1593,8 +1537,6 @@ ) ) -;; definition for function target-timed-invulnerable -;; WARN: Return type mismatch int vs none. (defun target-timed-invulnerable ((arg0 time-frame) (arg1 target) (arg2 int)) (with-pp (case arg2 @@ -1616,8 +1558,6 @@ ) ) -;; definition for function target-timed-invulnerable-off -;; WARN: Return type mismatch int vs none. (defun target-timed-invulnerable-off ((arg0 target) (arg1 int)) (let ((v1-0 arg1)) (cond @@ -1640,7 +1580,6 @@ (none) ) -;; definition for function target-log-attack (defbehavior target-log-attack target ((arg0 attack-info) (arg1 symbol)) (if (and (= arg1 'background) (= (-> arg0 id) 2)) (return #t) @@ -1679,9 +1618,6 @@ #t ) -;; definition for method 9 of type attack-info -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod attack-info-method-9 attack-info ((obj attack-info) (arg0 attack-info) (arg1 process-drawable) (arg2 process-drawable)) (local-vars (v1-14 float)) (rlet ((acc :class vf) @@ -1753,7 +1689,6 @@ ) ) -;; definition for method 10 of type attack-info (defmethod attack-info-method-10 attack-info ((obj attack-info) (arg0 object) (arg1 process-drawable) (arg2 process) (arg3 touching-shapes-entry)) (when (and arg3 arg1) (let ((a1-2 (prims-touching? arg3 (the-as collide-shape (-> arg1 root)) (the-as uint -1)))) @@ -1781,8 +1716,6 @@ obj ) -;; definition for method 11 of type attack-info -;; INFO: Used lq/sq (defmethod combine! attack-info ((obj attack-info) (arg0 attack-info) (arg1 process-drawable)) (let ((s4-0 (-> arg0 mask))) (set! (-> obj mask) (-> arg0 mask)) @@ -1887,7 +1820,6 @@ obj ) -;; definition for function ground-tween-initialize (defbehavior ground-tween-initialize target ((arg0 ground-tween-info) (arg1 uint) (arg2 uint) @@ -1916,8 +1848,6 @@ arg0 ) -;; definition for function ground-tween-update -;; WARN: Return type mismatch int vs none. (defbehavior ground-tween-update target ((arg0 ground-tween-info) (arg1 float) (arg2 float) (arg3 float)) (let ((f0-1 (fmax -1.0 (fmin 1.0 arg1))) (f30-0 (fmax -1.0 (fmin 1.0 arg2))) @@ -1973,7 +1903,6 @@ (none) ) -;; definition for function target-pos (defun target-pos ((arg0 int)) (let ((a1-0 *target*)) (cond @@ -1990,8 +1919,6 @@ ) ) -;; definition for function target-cam-pos -;; INFO: Used lq/sq (defun target-cam-pos () (let ((gp-0 *target*)) (cond @@ -2046,7 +1973,6 @@ ) ) -;; definition for function target-rot (defun target-rot () (let ((v1-0 *target*)) (if v1-0 @@ -2056,10 +1982,8 @@ ) ) -;; definition for method 20 of type target -;; INFO: Used lq/sq (defmethod get-trans target ((obj target) (arg0 int)) - "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]]" + "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]])" (local-vars (v0-0 vector)) (let ((v1-0 (-> obj control))) (cond @@ -2131,7 +2055,6 @@ ) ) -;; definition for method 23 of type target (defmethod process-focusable-method-23 target ((obj target) (arg0 int)) (let ((v1-0 (-> obj control))) (cond @@ -2156,7 +2079,6 @@ ) ) -;; definition for method 21 of type target (defmethod get-quat target ((obj target) (arg0 int)) (let ((v1-0 arg0)) (cond @@ -2186,12 +2108,10 @@ ) ) -;; definition for method 24 of type target (defmethod get-water-height target ((obj target)) (-> obj water surface-height) ) -;; definition for method 25 of type target (defmethod process-focusable-method-25 target ((obj target)) (-> obj neck notice-time) ) diff --git a/test/decompiler/reference/jak2/levels/city/slums/ctysluma-part_REF.gc b/test/decompiler/reference/jak2/levels/city/slums/ctysluma-part_REF.gc new file mode 100644 index 0000000000..c8f2abd9b6 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/city/slums/ctysluma-part_REF.gc @@ -0,0 +1,1382 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type ctysluma-part +(deftype ctysluma-part (part-spawner) + () + :heap-base #x30 + :method-count-assert 16 + :size-assert #xb0 + :flag-assert #x10003000b0 + ) + +;; definition for method 3 of type ctysluma-part +(defmethod inspect ctysluma-part ((obj ctysluma-part)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type part-spawner inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-barrel-fire + :id 859 + :bounds (static-bspherem 0 3 0 4) + :parts ((sp-item 3693 :fade-after (meters 50) :falloff-to (meters 80)) + (sp-item 3694 :fade-after (meters 60) :falloff-to (meters 90) :period 100 :length 50) + (sp-item 3695 :fade-after (meters 20) :falloff-to (meters 20) :period 120 :length 55 :offset 20) + (sp-item 3696 :fade-after (meters 40) :falloff-to (meters 40) :period 160 :length 30 :offset 35) + (sp-item 3694 :fade-after (meters 20) :falloff-to (meters 20) :period 255 :length 60 :offset 65) + (sp-item 3695 :fade-after (meters 40) :falloff-to (meters 40) :period 375 :length 40 :offset 15) + (sp-item 3696 :fade-after (meters 60) :falloff-to (meters 90) :period 430 :length 50 :offset 85) + (sp-item 3694 :fade-after (meters 40) :falloff-to (meters 40) :period 600 :length 70 :offset 100) + (sp-item 3695 :fade-after (meters 20) :falloff-to (meters 20) :period 1250 :length 45 :offset 450) + (sp-item 3696 :fade-after (meters 60) :falloff-to (meters 90) :period 1500 :length 25 :offset 115) + (sp-item 3694 :fade-after (meters 20) :falloff-to (meters 20) :period 2100 :length 55 :offset 80) + (sp-item 3697 :fade-after (meters 20) :falloff-to (meters 10) :binding 3692) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3692 :flags (bit1 start-dead launch-asap)) + (sp-item 3698 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 3699 :fade-after (meters 30) :falloff-to (meters 30)) + (sp-item 3700 :fade-after (meters 70) :flags (bit6)) + ) + ) + +;; failed to figure out what this is: +(defpart 3700 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.5)) + (sp-rnd-flt spt-scale-x (meters 5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 8192.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 12.0) + (sp-flt spt-fade-a -0.4) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 10240.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3697 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x26 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.8 1.0) + (sp-sound (static-sound-spec "fire-pop" :volume 10000.0)) + (sp-rnd-flt spt-x (meters -0.3) (meters 0.6) 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 256.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.026666667) 1.0) + (sp-rnd-flt spt-accel-y -0.13653333 -0.27306667 1.0) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 300) + (sp-cpuinfo-flags sp-cpuinfo-flag-1 sp-cpuinfo-flag-3) + (sp-rnd-flt spt-conerot-x (degrees -20.0) (degrees 40.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3692 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0) (meters 16) 1.0) + (sp-rnd-flt spt-y (meters 0) (meters 16) 1.0) + (sp-rnd-flt spt-z (meters 0.1) (meters 0.3) 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 256.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 96.0 32.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.026666667) (meters 0.053333335) 1.0) + (sp-flt spt-vel-y (meters 0)) + (sp-rnd-flt spt-vel-z (meters -0.0013333333) (meters 0.0026666666) 1.0) + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g -0.7111111) + (sp-flt spt-fade-b -0.7111111) + (sp-flt spt-fade-a -0.42666668) + (sp-int spt-timer 300) + (sp-cpuinfo-flags sp-cpuinfo-flag-1 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch) + (sp-int spt-next-time 180) + (sp-launcher-by-id spt-next-launcher 3701) + ) + ) + +;; failed to figure out what this is: +(defpart 3701 + :init-specs ((sp-flt spt-fade-r -1.0666667) (sp-flt spt-fade-g 1.0666667) (sp-flt spt-fade-b 1.0666667)) + ) + +;; failed to figure out what this is: +(defpart 3694 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x33 :page #xc)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-rnd-flt spt-num 4.0 6.0 1.0) + (sp-rnd-flt spt-x (meters 0) (meters -0.25) 1.0) + (sp-flt spt-y (meters -0.8)) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.2) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 240.0 15.0 1.0) + (sp-rnd-flt spt-g 200.0 16.0 1.0) + (sp-rnd-flt spt-b 160.0 16.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-vel-x (meters 0.00033333333)) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-rnd-flt spt-fade-r -2.1333334 -1.0666667 1.0) + (sp-rnd-flt spt-fade-g -4.266667 -2.1333334 1.0) + (sp-flt spt-fade-b -5.3333335) + (sp-flt spt-accel-y -0.4096) + (sp-int-plain-rnd spt-timer 160 79 1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300) + ) + (sp-int-plain-rnd spt-next-time 30 9 1) + (sp-launcher-by-id spt-next-launcher 3702) + (sp-rnd-int-flt spt-conerot-x (degrees -8.0) 4 728.1778) + (sp-rnd-flt spt-conerot-y (degrees -180.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 87.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0) (meters 0.5) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3695 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x33 :page #xc)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-rnd-flt spt-num 4.0 6.0 1.0) + (sp-rnd-flt spt-x (meters 0) (meters -0.25) 1.0) + (sp-flt spt-y (meters -0.8)) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.2) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 240.0 15.0 1.0) + (sp-rnd-flt spt-g 200.0 16.0 1.0) + (sp-rnd-flt spt-b 160.0 16.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-vel-x (meters 0.00033333333)) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-rnd-flt spt-fade-r -2.1333334 -1.0666667 1.0) + (sp-rnd-flt spt-fade-g -4.266667 -2.1333334 1.0) + (sp-flt spt-fade-b -5.3333335) + (sp-flt spt-accel-y -0.4096) + (sp-int-plain-rnd spt-timer 160 79 1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300) + ) + (sp-int-plain-rnd spt-next-time 30 9 1) + (sp-launcher-by-id spt-next-launcher 3702) + (sp-rnd-int-flt spt-conerot-x (degrees -8.0) 4 728.1778) + (sp-rnd-flt spt-conerot-y (degrees -180.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 120.0) (degrees 90.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0) (meters 0.5) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3696 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x33 :page #xc)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-rnd-flt spt-num 4.0 6.0 1.0) + (sp-rnd-flt spt-x (meters 0) (meters -0.25) 1.0) + (sp-flt spt-y (meters -0.8)) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.2) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 240.0 15.0 1.0) + (sp-rnd-flt spt-g 200.0 16.0 1.0) + (sp-rnd-flt spt-b 160.0 16.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-vel-x (meters 0.00033333333)) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-rnd-flt spt-fade-r -2.1333334 -1.0666667 1.0) + (sp-rnd-flt spt-fade-g -4.266667 -2.1333334 1.0) + (sp-flt spt-fade-b -5.3333335) + (sp-flt spt-accel-y -0.4096) + (sp-int-plain-rnd spt-timer 160 79 1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300) + ) + (sp-int-plain-rnd spt-next-time 30 9 1) + (sp-launcher-by-id spt-next-launcher 3702) + (sp-rnd-int-flt spt-conerot-x (degrees -8.0) 4 728.1778) + (sp-rnd-flt spt-conerot-y (degrees -180.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 240.0) (degrees 110.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0) (meters 0.5) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3702 + :init-specs ((sp-flt spt-b 0.0) + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-rnd-flt spt-fade-a -0.4 -0.2 1.0) + (sp-int-plain-rnd spt-next-time 40 9 1) + (sp-launcher-by-id spt-next-launcher 3703) + ) + ) + +;; failed to figure out what this is: +(defpart 3703 + :init-specs ((sp-flt spt-fade-r -0.125) (sp-flt spt-fade-g 0.4) (sp-flt spt-fade-b 0.4)) + ) + +;; failed to figure out what this is: +(defpart 3693 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x33 :page #xc)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-rnd-flt spt-num 1.0 4.0 1.0) + (sp-rnd-flt spt-x (meters 0) (meters -0.25) 1.0) + (sp-flt spt-y (meters -0.8)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.3) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-flt spt-vel-x (meters 0.00033333333)) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-rnd-flt spt-fade-a -0.16 -0.16 1.0) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-4) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300) + ) + (sp-rnd-int-flt spt-conerot-x (degrees -8.0) 4 728.1778) + (sp-rnd-flt spt-conerot-y (degrees -180.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0) (meters 0.5) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3698 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-flt spt-num 0.4) + (sp-rnd-flt spt-x (meters -0.25) (meters 0.5) 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 0.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 196.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 8.0 8.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.01) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.64) + (sp-flt spt-fade-g -0.32) + (sp-flt spt-fade-b -0.32) + (sp-rnd-flt spt-fade-a -0.017777778 -0.026666667 1.0) + (sp-flt spt-accel-y -0.027306668) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (sp-int-plain-rnd spt-next-time 150 49 1) + (sp-launcher-by-id spt-next-launcher 3704) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3704 + :init-specs ((sp-flt spt-fade-r 0.0) (sp-flt spt-fade-g 0.0) (sp-flt spt-fade-b 0.0)) + ) + +;; failed to figure out what this is: +(defpart 3699 + :init-specs ((sp-flt spt-num 0.4) + (sp-rnd-flt spt-x (meters 0) (meters 0.2) 1.0) + (sp-int spt-rot-x 8) + (sp-flt spt-r 1638.4) + (sp-flt spt-g 1331.2) + (sp-flt spt-b 1433.6) + (sp-rnd-flt spt-vel-x (meters 0) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.013333334) 1.0) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 300) + (sp-cpuinfo-flags distort) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 3705) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3705 + :init-specs ((sp-flt spt-fade-b -0.68266666)) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-streetlight-glows + :id 860 + :bounds (static-bspherem 0 0 0 8) + :parts ((sp-item 5 :fade-after (meters 120) :flags (bit6) :hour-mask #b111111111110000000) + (sp-item 6 :fade-after (meters 120) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +;; failed to figure out what this is: +(defpart 5 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 0.1) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-flt spt-rot-z (degrees -17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 32.0) + (sp-flt spt-omega 494387.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + ) + ) + +;; failed to figure out what this is: +(defpart 6 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 16) (meters 0.1) 1.0) + (sp-flt spt-rot-x 819.2) + (sp-flt spt-rot-z (degrees -17.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 255.0 255.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 16.0) + (sp-flt spt-omega 494387.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 819.2) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-steamescape + :id 861 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 3706 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7)) + (sp-item 3707 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 3706 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 0.5 1.0 1.0) + (sp-rnd-int-flt spt-x (meters -0.8) 4 1638.4) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.3) 1.0) + (sp-rnd-flt spt-z (meters 0.2) (meters 0.2) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 128.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-z (meters 0.006666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.0016666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.64) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (sp-int-plain-rnd spt-next-time 25 24 1) + (sp-launcher-by-id spt-next-launcher 3708) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-y (degrees -5.0) (degrees 10.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3707 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-int-flt spt-x (meters -0.4) 1 1638.4) + (sp-rnd-flt spt-y (meters 0) (meters 0.3) 1.0) + (sp-rnd-flt spt-z (meters 0.2) (meters 0.2) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 128.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-z (meters 0.006666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.0016666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.64) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 600) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (sp-int-plain-rnd spt-next-time 25 24 1) + (sp-launcher-by-id spt-next-launcher 3708) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-y (degrees -5.0) (degrees 10.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3708 + :init-specs ((sp-rnd-flt spt-fade-a -0.064 -0.064 1.0)) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-steamvent + :id 862 + :flags (unk-4) + :bounds (static-bspherem 0 0 0 6) + :parts ((sp-item 3709 :fade-after (meters 60) :falloff-to (meters 60) :flags (bit7)) + (sp-item 3710 :fade-after (meters 100) :falloff-to (meters 140) :flags (bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 3709 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x92 :page #xc)) + (sp-rnd-flt spt-num 0.0 5.0 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-z (meters 0.083333336) (meters 0.033333335) 1.0) + (sp-rnd-flt spt-fade-a -0.64 -0.64 1.0) + (sp-rnd-flt spt-friction 0.93 0.025 1.0) + (sp-int spt-timer 150) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (sp-func spt-func 'sparticle-motion-blur) + (sp-rnd-flt spt-launchrot-x (degrees -7.5) (degrees 15.0) 1.0) + (sp-rnd-flt spt-launchrot-y (degrees -7.5) (degrees 15.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3710 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-rnd-flt spt-num 1.0 3.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 128.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-z (meters 0.083333336) (meters 0.033333335) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.01) (meters 0.016666668) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.96) + (sp-rnd-flt spt-friction 0.93 0.025 1.0) + (sp-int spt-timer 150) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (sp-int-plain-rnd spt-next-time 25 24 1) + (sp-launcher-by-id spt-next-launcher 3711) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-y (degrees -5.0) (degrees 10.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3711 + :init-specs ((sp-rnd-flt spt-fade-a -0.48 -0.48 1.0)) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-spray + :id 863 + :flags (unk-4) + :bounds (static-bspherem 0 -8 0 24) + :parts ((sp-item 3712 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7)) + (sp-item 3713 :fade-after (meters 60) :falloff-to (meters 60) :flags (bit7)) + ) + ) + +;; failed to figure out what this is: +(defpart 3712 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 1.0 2.0 1.0) + (sp-flt spt-z (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-z (meters 0.1) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-fade-a -0.28444445 -0.28444445 1.0) + (sp-rnd-flt spt-accel-y -13.653334 1.3653333 1.0) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 3714) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3714 + :init-specs ((sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-int spt-next-time 5) + (sp-launcher-by-id spt-next-launcher 3715) + ) + ) + +;; failed to figure out what this is: +(defpart 3715 + :init-specs ((sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-int-plain-rnd spt-next-time 0 449 1) + (sp-launcher-by-id spt-next-launcher 3714) + ) + ) + +;; failed to figure out what this is: +(defpart 3713 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.5 1.0) + (sp-flt spt-z (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-z (meters 0.1) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-fade-a -0.28444445 -0.28444445 1.0) + (sp-rnd-flt spt-accel-y -13.653334 1.3653333 1.0) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 3714) + (sp-rnd-flt spt-launchrot-x (degrees -30.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -30.0) (degrees 60.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-spray-check-userdata-8 + :id 864 + :flags (unk-4) + :bounds (static-bspherem 0 -8 0 24) + :parts ((sp-item 3716 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7)) + (sp-item 3717 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7)) + ) + ) + +;; definition for function check-drop-level-ctysluma-drop-userdata +;; INFO: Used lq/sq +(defun check-drop-level-ctysluma-drop-userdata ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) + (when (< (-> arg2 y) (-> arg1 user-float)) + (let ((s3-0 (new 'stack-no-clear 'vector))) + (sp-kill-particle arg0 arg1) + (set-vector! s3-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) + (let ((t9-1 sp-launch-particles-var) + (a0-3 *sp-particle-system-2d*) + (a1-2 (-> *part-id-table* 3718)) + (a2-1 *launch-matrix*) + ) + (set! (-> a2-1 trans quad) (-> s3-0 quad)) + (t9-1 a0-3 a1-2 a2-1 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + ) + ) + (sparticle-motion-blur arg0 arg1 arg2) + (none) + ) + +;; failed to figure out what this is: +(defpart 3716 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-flt spt-z (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-z (meters 0.1) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-fade-a -0.14222223 -0.42666668 1.0) + (sp-rnd-flt spt-accel-y -13.653334 1.3653333 1.0) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 32768.0) + (sp-func spt-func 'check-drop-level-ctysluma-drop-userdata) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 3714) + (sp-rnd-flt spt-launchrot-x (degrees -5.0) (degrees 10.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -5.0) (degrees 10.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3717 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 0.0 0.5 1.0) + (sp-flt spt-z (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-z (meters 0.1) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-fade-a -0.14222223 -0.42666668 1.0) + (sp-rnd-flt spt-accel-y -13.653334 1.3653333 1.0) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc) + (sp-flt spt-userdata 32768.0) + (sp-func spt-func 'check-drop-level-ctysluma-drop-userdata) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 3714) + (sp-rnd-flt spt-launchrot-x (degrees -30.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-launchrot-z (degrees -30.0) (degrees 60.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3718 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.05) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-flt spt-omega 10.24) + (sp-rnd-flt spt-vel-y (meters 0.01) (meters 0.026666667) 1.0) + (sp-flt spt-fade-a -0.21333334) + (sp-rnd-flt spt-accel-y -4.096 -0.68266666 1.0) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 150) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 0 224 1) + (sp-launcher-by-id spt-next-launcher 3714) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-chimney + :id 865 + :bounds (static-bspherem 0 0 -10 24) + :parts ((sp-item 3719 :fade-after (meters 200) :falloff-to (meters 300)) + (sp-item 3720 :fade-after (meters 200) :flags (bit6)) + ) + ) + +;; failed to figure out what this is: +(defpart 3720 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1)) + (sp-rnd-flt spt-scale-x (meters 16) (meters 0.1) 1.0) + (sp-flt spt-rot-x 1228.8) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 240.0) + (sp-flt spt-b 100.0) + (sp-rnd-flt spt-a 12.0 4.0 1.0) + (sp-flt spt-omega 822476.8) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 6144.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3719 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-rnd-flt spt-num 0.0 0.5 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.03) (meters 0.01) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.026666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g -0.36) + (sp-flt spt-fade-b -4.24) + (sp-rnd-flt spt-fade-a -0.053333335 -0.053333335 1.0) + (sp-rnd-flt spt-accel-x -2.7306666 -1.3653333 1.0) + (sp-rnd-flt spt-accel-y 0.4096 0.4096 1.0) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 2400) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300) + ) + (sp-int-plain-rnd spt-next-time 25 4 1) + (sp-launcher-by-id spt-next-launcher 3721) + ) + ) + +;; failed to figure out what this is: +(defpart 3721 + :init-specs ((sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-int-plain-rnd spt-next-time 10 39 1) + (sp-launcher-by-id spt-next-launcher 3722) + ) + ) + +;; failed to figure out what this is: +(defpart 3722 + :init-specs ((sp-rnd-flt spt-scalevel-x (meters 0.013333334) (meters 0.0033333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.14666666) + (sp-flt spt-fade-g -0.7866667) + (sp-flt spt-fade-b -0.88) + (sp-int-plain-rnd spt-next-time 105 44 1) + (sp-launcher-by-id spt-next-launcher 3723) + ) + ) + +;; failed to figure out what this is: +(defpart 3723 + :init-specs ((sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.0016666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -1.2944444) + (sp-flt spt-fade-g -0.7111111) + (sp-flt spt-fade-b -0.094444446) + (sp-int-plain-rnd spt-next-time 150 29 1) + (sp-launcher-by-id spt-next-launcher 3724) + ) + ) + +;; failed to figure out what this is: +(defpart 3724 + :init-specs ((sp-flt spt-fade-r 0.0) (sp-flt spt-fade-g 0.0) (sp-flt spt-fade-b 0.0) (sp-flt spt-fade-a -0.024)) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-chimney-smoke + :id 866 + :bounds (static-bspherem 0 0 -12 24) + :parts ((sp-item 3725 :fade-after (meters 200) :falloff-to (meters 300))) + ) + +;; failed to figure out what this is: +(defpart 3725 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-rnd-flt spt-num 0.0 0.4 1.0) + (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 0.0 128.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 24.0 24.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.03) (meters 0.01) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.026666667) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.21333334) + (sp-flt spt-fade-g -0.21333334) + (sp-flt spt-fade-b -0.21333334) + (sp-rnd-flt spt-fade-a -0.026666667 -0.026666667 1.0) + (sp-rnd-flt spt-accel-x -2.7306666 -1.3653333 1.0) + (sp-rnd-flt spt-accel-y 0.4096 0.4096 1.0) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 1800) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300) + ) + (sp-int-plain-rnd spt-next-time 75 4 1) + (sp-launcher-by-id spt-next-launcher 3726) + ) + ) + +;; failed to figure out what this is: +(defpart 3726 + :init-specs ((sp-rnd-flt spt-scalevel-x (meters 0.013333334) (meters 0.0033333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int-plain-rnd spt-next-time 105 44 1) + (sp-launcher-by-id spt-next-launcher 3727) + ) + ) + +;; failed to figure out what this is: +(defpart 3727 + :init-specs ((sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.0016666667) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-sign-m5-8x4 + :id 867 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 8) + :rotate ((degrees 0) (degrees 4) (degrees 0)) + :parts ((sp-item 3728 :flags (is-3d launch-asap bit7)) + (sp-item 3729 :flags (is-3d launch-asap bit7)) + (sp-item 3730 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +;; failed to figure out what this is: +(defpart 3730 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1)) + (sp-rnd-flt spt-scale-x (meters 32) (meters 0.1) 1.0) + (sp-flt spt-rot-x 2048.0) + (sp-rnd-flt spt-scale-y (meters 48) (meters 0.1) 1.0) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 8.0 4.0 1.0) + (sp-flt spt-omega 822476.8) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3728 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xd :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.1)) + (sp-flt spt-scale-x (meters 16)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00d00 -2139062144 0 1 #x3fd00d00 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3729 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xd :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters -0.1)) + (sp-flt spt-scale-x (meters 16)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00d00 -2139062144 0 1 #x3fd00d00 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-sign-metalhead-8x4 + :id 868 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 8) + :rotate ((degrees 0) (degrees 4) (degrees 0)) + :parts ((sp-item 3731 :flags (is-3d launch-asap bit7)) + (sp-item 3732 :flags (is-3d launch-asap bit7)) + (sp-item 3730 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +;; failed to figure out what this is: +(defpart 3731 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xb :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.1)) + (sp-flt spt-scale-x (meters 16)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00b00 -2139062144 0 1 #x3fd00b00 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3732 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xb :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters -0.1)) + (sp-flt spt-scale-x (meters 16)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00b00 -2139062144 0 1 #x3fd00b00 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-sign-crimson-4x8 + :id 869 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 8) + :rotate ((degrees 0) (degrees 4) (degrees 0)) + :parts ((sp-item 3733 :flags (is-3d launch-asap bit7)) + (sp-item 3734 :flags (is-3d launch-asap bit7)) + (sp-item 3735 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +;; failed to figure out what this is: +(defpart 3735 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1)) + (sp-rnd-flt spt-scale-x (meters 48) (meters 0.1) 1.0) + (sp-flt spt-rot-x 2048.0) + (sp-rnd-flt spt-scale-y (meters 32) (meters 0.1) 1.0) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 8.0 4.0 1.0) + (sp-flt spt-omega 822476.8) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3733 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x3 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 16)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00300 -2139062144 0 1 #x3fd00300 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3734 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x3 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters -0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 16)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00300 -2139062144 0 1 #x3fd00300 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-sign-doctors-4x4 + :id 870 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 4) + :rotate ((degrees 0) (degrees 4) (degrees 0)) + :parts ((sp-item 3736 :flags (is-3d launch-asap bit7)) + (sp-item 3737 :flags (is-3d launch-asap bit7)) + (sp-item 3738 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +;; failed to figure out what this is: +(defpart 3738 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1)) + (sp-rnd-flt spt-scale-x (meters 32) (meters 0.1) 1.0) + (sp-flt spt-rot-x 2048.0) + (sp-rnd-flt spt-scale-y (meters 32) (meters 0.1) 1.0) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 8.0 4.0 1.0) + (sp-flt spt-omega 822476.8) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 2048.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3736 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x5 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00500 -2139062144 0 1 #x3fd00500 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3737 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x5 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters -0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00500 -2139062144 0 1 #x3fd00500 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-sign-hiphog-4x4 + :id 871 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 4) + :rotate ((degrees 0) (degrees 4) (degrees 0)) + :parts ((sp-item 3739 :flags (is-3d launch-asap bit7)) + (sp-item 3740 :flags (is-3d launch-asap bit7)) + (sp-item 3738 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +;; failed to figure out what this is: +(defpart 3739 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00900 -2139062144 0 1 #x3fd00900 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3740 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters -0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00900 -2139062144 0 1 #x3fd00900 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-ctysluma-sign-blank-4x4 + :id 872 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 4) + :rotate ((degrees 0) (degrees 4) (degrees 0)) + :parts ((sp-item 3741 :flags (is-3d launch-asap bit7)) + (sp-item 3742 :flags (is-3d launch-asap bit7)) + (sp-item 3738 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000) + ) + ) + +;; failed to figure out what this is: +(defpart 3741 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x7 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters 0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00700 -2139062144 0 1 #x3fd00700 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3742 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x7 :page #x3fd)) + (sp-flt spt-num 1.0) + (sp-flt spt-z (meters -0.05)) + (sp-flt spt-scale-x (meters 8)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 8)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 5 0 0 #x3fd00700 -2139062144 0 1 #x3fd00700 -2143272896 #x404040 0) + ) + (sp-func spt-func 'sparticle-texture-day-night) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + + + + diff --git a/test/decompiler/reference/jak2/levels/palace/outside/palace-ocean_REF.gc b/test/decompiler/reference/jak2/levels/palace/outside/palace-ocean_REF.gc new file mode 100644 index 0000000000..286d313ece --- /dev/null +++ b/test/decompiler/reference/jak2/levels/palace/outside/palace-ocean_REF.gc @@ -0,0 +1,4999 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol *ocean-spheres-palace*, type ocean-spheres +(define *ocean-spheres-palace* + (new 'static 'ocean-spheres :spheres (new 'static 'inline-array sphere 36 + (new 'static 'sphere :x -1572864.0 :z -5505024.0 :r 2224365.5) + (new 'static 'sphere :x 1572864.0 :z -5505024.0 :r 2224365.5) + (new 'static 'sphere :x 4718592.0 :z -5505024.0 :r 2224365.5) + (new 'static 'sphere :x 7864320.0 :z -5505024.0 :r 2224365.5) + (new 'static 'sphere :x 11010048.0 :z -5505024.0 :r 2224365.5) + (new 'static 'sphere :x 14155776.0 :z -5505024.0 :r 2224365.5) + (new 'static 'sphere :x -1572864.0 :z -2359296.0 :r 2224365.5) + (new 'static 'sphere :x 1572864.0 :z -2359296.0 :r 2224365.5) + (new 'static 'sphere :x 4718592.0 :z -2359296.0 :r 2224365.5) + (new 'static 'sphere :x 7864320.0 :z -2359296.0 :r 2224365.5) + (new 'static 'sphere :x 11010048.0 :z -2359296.0 :r 2224365.5) + (new 'static 'sphere :x 14155776.0 :z -2359296.0 :r 2224365.5) + (new 'static 'sphere :x -1572864.0 :z 786432.0 :r 2224365.5) + (new 'static 'sphere :x 1572864.0 :z 786432.0 :r 2224365.5) + (new 'static 'sphere :x 4718592.0 :z 786432.0 :r 2224365.5) + (new 'static 'sphere :x 7864320.0 :z 786432.0 :r 2224365.5) + (new 'static 'sphere :x 11010048.0 :z 786432.0 :r 2224365.5) + (new 'static 'sphere :x 14155776.0 :z 786432.0 :r 2224365.5) + (new 'static 'sphere :x -1572864.0 :z 3932160.0 :r 2224365.5) + (new 'static 'sphere :x 1572864.0 :z 3932160.0 :r 2224365.5) + (new 'static 'sphere :x 4718592.0 :z 3932160.0 :r 2224365.5) + (new 'static 'sphere :x 7864320.0 :z 3932160.0 :r 2224365.5) + (new 'static 'sphere :x 11010048.0 :z 3932160.0 :r 2224365.5) + (new 'static 'sphere :x 14155776.0 :z 3932160.0 :r 2224365.5) + (new 'static 'sphere :x -1572864.0 :z 7077888.0 :r 2224365.5) + (new 'static 'sphere :x 1572864.0 :z 7077888.0 :r 2224365.5) + (new 'static 'sphere :x 4718592.0 :z 7077888.0 :r 2224365.5) + (new 'static 'sphere :x 7864320.0 :z 7077888.0 :r 2224365.5) + (new 'static 'sphere :x 11010048.0 :z 7077888.0 :r 2224365.5) + (new 'static 'sphere :x 14155776.0 :z 7077888.0 :r 2224365.5) + (new 'static 'sphere :x -1572864.0 :z 10223616.0 :r 2224365.5) + (new 'static 'sphere :x 1572864.0 :z 10223616.0 :r 2224365.5) + (new 'static 'sphere :x 4718592.0 :z 10223616.0 :r 2224365.5) + (new 'static 'sphere :x 7864320.0 :z 10223616.0 :r 2224365.5) + (new 'static 'sphere :x 11010048.0 :z 10223616.0 :r 2224365.5) + (new 'static 'sphere :x 14155776.0 :z 10223616.0 :r 2224365.5) + ) + ) + ) + +;; definition for symbol *ocean-colors-palace*, type ocean-colors +(define *ocean-colors-palace* + (new 'static 'ocean-colors :colors (new 'static 'array rgba 2548 + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #xb :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2a :a #x80) + (new 'static 'rgba :r #xd :g #x25 :b #x29 :a #x80) + (new 'static 'rgba :r #xd :g #x25 :b #x29 :a #x80) + (new 'static 'rgba :r #xf :g #x26 :b #x2a :a #x80) + (new 'static 'rgba :r #xe :g #x25 :b #x29 :a #x80) + (new 'static 'rgba :r #x10 :g #x25 :b #x26 :a #x80) + (new 'static 'rgba :r #xf :g #x25 :b #x25 :a #x80) + (new 'static 'rgba :r #xf :g #x26 :b #x28 :a #x80) + (new 'static 'rgba :r #xe :g #x26 :b #x2a :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x26 :b #x2a :a #x80) + (new 'static 'rgba :r #x10 :g #x27 :b #x2a :a #x80) + (new 'static 'rgba :r #x10 :g #x27 :b #x2a :a #x80) + (new 'static 'rgba :r #x12 :g #x27 :b #x29 :a #x80) + (new 'static 'rgba :r #x14 :g #x28 :b #x29 :a #x80) + (new 'static 'rgba :r #x13 :g #x27 :b #x28 :a #x80) + (new 'static 'rgba :r #x19 :g #x27 :b #x23 :a #x80) + (new 'static 'rgba :r #x19 :g #x27 :b #x21 :a #x80) + (new 'static 'rgba :r #x19 :g #x28 :b #x23 :a #x80) + (new 'static 'rgba :r #x17 :g #x28 :b #x27 :a #x80) + (new 'static 'rgba :r #x12 :g #x27 :b #x29 :a #x80) + (new 'static 'rgba :r #xf :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #x11 :g #x27 :b #x2a :a #x80) + (new 'static 'rgba :r #x11 :g #x27 :b #x29 :a #x80) + (new 'static 'rgba :r #x12 :g #x27 :b #x29 :a #x80) + (new 'static 'rgba :r #x15 :g #x29 :b #x29 :a #x80) + (new 'static 'rgba :r #x16 :g #x28 :b #x28 :a #x80) + (new 'static 'rgba :r #x17 :g #x28 :b #x26 :a #x80) + (new 'static 'rgba :r #x20 :g #x28 :b #x1d :a #x80) + (new 'static 'rgba :r #x23 :g #x2a :b #x1f :a #x80) + (new 'static 'rgba :r #x23 :g #x2a :b #x1f :a #x80) + (new 'static 'rgba :r #x21 :g #x2a :b #x20 :a #x80) + (new 'static 'rgba :r #x1b :g #x2a :b #x26 :a #x80) + (new 'static 'rgba :r #x14 :g #x29 :b #x2a :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x12 :g #x28 :b #x2c :a #x80) + (new 'static 'rgba :r #x13 :g #x29 :b #x2c :a #x80) + (new 'static 'rgba :r #x11 :g #x27 :b #x29 :a #x80) + (new 'static 'rgba :r #x13 :g #x28 :b #x2a :a #x80) + (new 'static 'rgba :r #x16 :g #x29 :b #x2a :a #x80) + (new 'static 'rgba :r #x18 :g #x29 :b #x28 :a #x80) + (new 'static 'rgba :r #x19 :g #x2a :b #x27 :a #x80) + (new 'static 'rgba :r #x1a :g #x29 :b #x25 :a #x80) + (new 'static 'rgba :r #x27 :g #x29 :b #x19 :a #x80) + (new 'static 'rgba :r #x29 :g #x2b :b #x1b :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1b :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1b :a #x80) + (new 'static 'rgba :r #x24 :g #x2b :b #x20 :a #x80) + (new 'static 'rgba :r #x1b :g #x2b :b #x27 :a #x80) + (new 'static 'rgba :r #x12 :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #x14 :g #x2a :b #x2d :a #x80) + (new 'static 'rgba :r #x14 :g #x29 :b #x2b :a #x80) + (new 'static 'rgba :r #x13 :g #x27 :b #x29 :a #x80) + (new 'static 'rgba :r #x15 :g #x29 :b #x29 :a #x80) + (new 'static 'rgba :r #x18 :g #x2a :b #x29 :a #x80) + (new 'static 'rgba :r #x19 :g #x2a :b #x27 :a #x80) + (new 'static 'rgba :r #x1c :g #x2a :b #x26 :a #x80) + (new 'static 'rgba :r #x29 :g #x2b :b #x1b :a #x80) + (new 'static 'rgba :r #x2d :g #x2b :b #x16 :a #x80) + (new 'static 'rgba :r #x30 :g #x2c :b #x16 :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x17 :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x16 :a #x80) + (new 'static 'rgba :r #x2e :g #x2d :b #x1a :a #x80) + (new 'static 'rgba :r #x23 :g #x2c :b #x23 :a #x80) + (new 'static 'rgba :r #x17 :g #x2b :b #x2b :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2d :a #x80) + (new 'static 'rgba :r #x13 :g #x2a :b #x2c :a #x80) + (new 'static 'rgba :r #x14 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x16 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x15 :g #x29 :b #x2a :a #x80) + (new 'static 'rgba :r #x16 :g #x29 :b #x29 :a #x80) + (new 'static 'rgba :r #x19 :g #x2a :b #x29 :a #x80) + (new 'static 'rgba :r #x1a :g #x2a :b #x26 :a #x80) + (new 'static 'rgba :r #x1d :g #x2a :b #x24 :a #x80) + (new 'static 'rgba :r #x2a :g #x2b :b #x1a :a #x80) + (new 'static 'rgba :r #x31 :g #x2c :b #x14 :a #x80) + (new 'static 'rgba :r #x33 :g #x2c :b #x13 :a #x80) + (new 'static 'rgba :r #x35 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x34 :g #x2e :b #x16 :a #x80) + (new 'static 'rgba :r #x2a :g #x2c :b #x1d :a #x80) + (new 'static 'rgba :r #x1d :g #x2c :b #x27 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #x11 :g #x28 :b #x2a :a #x80) + (new 'static 'rgba :r #x12 :g #x28 :b #x2a :a #x80) + (new 'static 'rgba :r #x15 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x16 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x18 :g #x2a :b #x2a :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x2a :a #x80) + (new 'static 'rgba :r #x1b :g #x2a :b #x27 :a #x80) + (new 'static 'rgba :r #x1f :g #x2b :b #x25 :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1b :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x15 :a #x80) + (new 'static 'rgba :r #x34 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x2f :g #x2d :b #x19 :a #x80) + (new 'static 'rgba :r #x22 :g #x2c :b #x23 :a #x80) + (new 'static 'rgba :r #x16 :g #x2c :b #x2d :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x14 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x14 :g #x2a :b #x2d :a #x80) + (new 'static 'rgba :r #x11 :g #x27 :b #x28 :a #x80) + (new 'static 'rgba :r #x13 :g #x28 :b #x2a :a #x80) + (new 'static 'rgba :r #x16 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x18 :g #x2b :b #x2c :a #x80) + (new 'static 'rgba :r #x19 :g #x2b :b #x2b :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x2a :a #x80) + (new 'static 'rgba :r #x1c :g #x2b :b #x28 :a #x80) + (new 'static 'rgba :r #x1f :g #x2b :b #x26 :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1c :a #x80) + (new 'static 'rgba :r #x33 :g #x2d :b #x16 :a #x80) + (new 'static 'rgba :r #x34 :g #x2d :b #x15 :a #x80) + (new 'static 'rgba :r #x36 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x36 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x36 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x33 :g #x2d :b #x16 :a #x80) + (new 'static 'rgba :r #x28 :g #x2c :b #x1f :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x29 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x16 :g #x2c :b #x2e :a #x80) + (new 'static 'rgba :r #x15 :g #x2b :b #x2d :a #x80) + (new 'static 'rgba :r #x14 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x14 :g #x29 :b #x2b :a #x80) + (new 'static 'rgba :r #x15 :g #x2a :b #x2a :a #x80) + (new 'static 'rgba :r #x17 :g #x2a :b #x2b :a #x80) + (new 'static 'rgba :r #x18 :g #x2b :b #x2b :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x2a :a #x80) + (new 'static 'rgba :r #x1d :g #x2c :b #x28 :a #x80) + (new 'static 'rgba :r #x1f :g #x2c :b #x26 :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1c :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x16 :a #x80) + (new 'static 'rgba :r #x34 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x36 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x36 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x34 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x2c :g #x2c :b #x1c :a #x80) + (new 'static 'rgba :r #x1d :g #x2b :b #x26 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x15 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x18 :g #x2d :b #x2f :a #x80) + (new 'static 'rgba :r #x17 :g #x2d :b #x2f :a #x80) + (new 'static 'rgba :r #x17 :g #x2d :b #x2f :a #x80) + (new 'static 'rgba :r #x16 :g #x2d :b #x2e :a #x80) + (new 'static 'rgba :r #x16 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x17 :g #x2c :b #x2d :a #x80) + (new 'static 'rgba :r #x17 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x18 :g #x2b :b #x2c :a #x80) + (new 'static 'rgba :r #x18 :g #x2c :b #x2b :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x29 :a #x80) + (new 'static 'rgba :r #x1c :g #x2b :b #x27 :a #x80) + (new 'static 'rgba :r #x1e :g #x2b :b #x25 :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1b :a #x80) + (new 'static 'rgba :r #x32 :g #x2c :b #x15 :a #x80) + (new 'static 'rgba :r #x33 :g #x2c :b #x13 :a #x80) + (new 'static 'rgba :r #x35 :g #x2d :b #x13 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x34 :g #x2d :b #x13 :a #x80) + (new 'static 'rgba :r #x2e :g #x2d :b #x1a :a #x80) + (new 'static 'rgba :r #x1f :g #x2b :b #x25 :a #x80) + (new 'static 'rgba :r #x14 :g #x2a :b #x2d :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x14 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x15 :g #x2d :b #x2f :a #x80) + (new 'static 'rgba :r #x19 :g #x2e :b #x2e :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x17 :g #x2e :b #x2f :a #x80) + (new 'static 'rgba :r #x17 :g #x2d :b #x2d :a #x80) + (new 'static 'rgba :r #x18 :g #x2d :b #x2e :a #x80) + (new 'static 'rgba :r #x17 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x16 :g #x2a :b #x2a :a #x80) + (new 'static 'rgba :r #x18 :g #x2b :b #x2a :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x29 :a #x80) + (new 'static 'rgba :r #x1d :g #x2b :b #x27 :a #x80) + (new 'static 'rgba :r #x1f :g #x2b :b #x25 :a #x80) + (new 'static 'rgba :r #x2c :g #x2d :b #x1c :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x16 :a #x80) + (new 'static 'rgba :r #x34 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x36 :g #x2e :b #x14 :a #x80) + (new 'static 'rgba :r #x33 :g #x2d :b #x14 :a #x80) + (new 'static 'rgba :r #x2b :g #x2b :b #x1a :a #x80) + (new 'static 'rgba :r #x1d :g #x2a :b #x24 :a #x80) + (new 'static 'rgba :r #x13 :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x15 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x19 :g #x2f :b #x2f :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x19 :g #x2f :b #x30 :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x2f :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x2e :a #x80) + (new 'static 'rgba :r #x19 :g #x2e :b #x2e :a #x80) + (new 'static 'rgba :r #x17 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x16 :g #x2b :b #x2b :a #x80) + (new 'static 'rgba :r #x18 :g #x2b :b #x2a :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x29 :a #x80) + (new 'static 'rgba :r #x1c :g #x2b :b #x26 :a #x80) + (new 'static 'rgba :r #x1e :g #x2a :b #x24 :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1c :a #x80) + (new 'static 'rgba :r #x32 :g #x2e :b #x16 :a #x80) + (new 'static 'rgba :r #x34 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x35 :g #x2e :b #x15 :a #x80) + (new 'static 'rgba :r #x33 :g #x2e :b #x16 :a #x80) + (new 'static 'rgba :r #x2e :g #x2c :b #x18 :a #x80) + (new 'static 'rgba :r #x23 :g #x2a :b #x1e :a #x80) + (new 'static 'rgba :r #x16 :g #x28 :b #x27 :a #x80) + (new 'static 'rgba :r #x11 :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x17 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x17 :g #x2e :b #x2f :a #x80) + (new 'static 'rgba :r #x17 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x17 :g #x2e :b #x2f :a #x80) + (new 'static 'rgba :r #x17 :g #x2e :b #x2f :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x2e :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x2e :a #x80) + (new 'static 'rgba :r #x17 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x19 :g #x2d :b #x2c :a #x80) + (new 'static 'rgba :r #x1a :g #x2d :b #x2b :a #x80) + (new 'static 'rgba :r #x19 :g #x2b :b #x29 :a #x80) + (new 'static 'rgba :r #x1b :g #x2b :b #x27 :a #x80) + (new 'static 'rgba :r #x1d :g #x2b :b #x25 :a #x80) + (new 'static 'rgba :r #x2b :g #x2c :b #x1c :a #x80) + (new 'static 'rgba :r #x31 :g #x2d :b #x17 :a #x80) + (new 'static 'rgba :r #x34 :g #x2e :b #x16 :a #x80) + (new 'static 'rgba :r #x34 :g #x2e :b #x16 :a #x80) + (new 'static 'rgba :r #x32 :g #x2e :b #x18 :a #x80) + (new 'static 'rgba :r #x2c :g #x2d :b #x1c :a #x80) + (new 'static 'rgba :r #x24 :g #x2c :b #x22 :a #x80) + (new 'static 'rgba :r #x1b :g #x2b :b #x27 :a #x80) + (new 'static 'rgba :r #x14 :g #x2a :b #x2d :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x17 :g #x32 :b #x34 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x16 :g #x2d :b #x2f :a #x80) + (new 'static 'rgba :r #x16 :g #x2d :b #x2f :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x2f :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x2e :a #x80) + (new 'static 'rgba :r #x1a :g #x2f :b #x2f :a #x80) + (new 'static 'rgba :r #x1a :g #x2e :b #x2d :a #x80) + (new 'static 'rgba :r #x18 :g #x2b :b #x2b :a #x80) + (new 'static 'rgba :r #x19 :g #x2a :b #x28 :a #x80) + (new 'static 'rgba :r #x1c :g #x2b :b #x26 :a #x80) + (new 'static 'rgba :r #x2a :g #x2d :b #x1d :a #x80) + (new 'static 'rgba :r #x30 :g #x2e :b #x1a :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x17 :a #x80) + (new 'static 'rgba :r #x33 :g #x2e :b #x16 :a #x80) + (new 'static 'rgba :r #x2f :g #x2d :b #x1a :a #x80) + (new 'static 'rgba :r #x25 :g #x2d :b #x23 :a #x80) + (new 'static 'rgba :r #x1a :g #x2b :b #x2a :a #x80) + (new 'static 'rgba :r #x15 :g #x2a :b #x2d :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x17 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x17 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x11 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x16 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x16 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x17 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x18 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x16 :g #x2d :b #x2e :a #x80) + (new 'static 'rgba :r #x17 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x19 :g #x2c :b #x2a :a #x80) + (new 'static 'rgba :r #x1c :g #x2c :b #x28 :a #x80) + (new 'static 'rgba :r #x2c :g #x2d :b #x1c :a #x80) + (new 'static 'rgba :r #x2e :g #x2c :b #x19 :a #x80) + (new 'static 'rgba :r #x32 :g #x2d :b #x17 :a #x80) + (new 'static 'rgba :r #x2d :g #x2d :b #x1b :a #x80) + (new 'static 'rgba :r #x22 :g #x2c :b #x24 :a #x80) + (new 'static 'rgba :r #x16 :g #x2b :b #x2d :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x19 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x17 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x12 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x16 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x16 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x18 :g #x2c :b #x2d :a #x80) + (new 'static 'rgba :r #x23 :g #x2d :b #x24 :a #x80) + (new 'static 'rgba :r #x29 :g #x2d :b #x1d :a #x80) + (new 'static 'rgba :r #x2f :g #x2c :b #x18 :a #x80) + (new 'static 'rgba :r #x2d :g #x2c :b #x18 :a #x80) + (new 'static 'rgba :r #x22 :g #x2b :b #x21 :a #x80) + (new 'static 'rgba :r #x18 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x19 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x18 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x16 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x14 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x1a :g #x2c :b #x2b :a #x80) + (new 'static 'rgba :r #x21 :g #x2c :b #x25 :a #x80) + (new 'static 'rgba :r #x29 :g #x2c :b #x1d :a #x80) + (new 'static 'rgba :r #x2c :g #x2c :b #x19 :a #x80) + (new 'static 'rgba :r #x25 :g #x2c :b #x20 :a #x80) + (new 'static 'rgba :r #x1a :g #x2c :b #x2a :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1a :g #x36 :b #x36 :a #x80) + (new 'static 'rgba :r #x18 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x17 :g #x33 :b #x34 :a #x80) + (new 'static 'rgba :r #x16 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x19 :g #x2c :b #x2b :a #x80) + (new 'static 'rgba :r #x20 :g #x2c :b #x25 :a #x80) + (new 'static 'rgba :r #x25 :g #x2c :b #x20 :a #x80) + (new 'static 'rgba :r #x22 :g #x2d :b #x24 :a #x80) + (new 'static 'rgba :r #x19 :g #x2c :b #x2c :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x27 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x8 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1a :g #x35 :b #x35 :a #x80) + (new 'static 'rgba :r #x18 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x17 :g #x32 :b #x34 :a #x80) + (new 'static 'rgba :r #x17 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x31 :b #x32 :a #x80) + (new 'static 'rgba :r #x17 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x12 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x17 :g #x2b :b #x2b :a #x80) + (new 'static 'rgba :r #x1b :g #x2c :b #x29 :a #x80) + (new 'static 'rgba :r #x1a :g #x2c :b #x2a :a #x80) + (new 'static 'rgba :r #x16 :g #x2c :b #x2e :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1a :g #x35 :b #x35 :a #x80) + (new 'static 'rgba :r #x19 :g #x35 :b #x36 :a #x80) + (new 'static 'rgba :r #x1a :g #x35 :b #x35 :a #x80) + (new 'static 'rgba :r #x18 :g #x33 :b #x35 :a #x80) + (new 'static 'rgba :r #x17 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x32 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x13 :g #x2e :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x15 :g #x2c :b #x2f :a #x80) + (new 'static 'rgba :r #x14 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1a :g #x35 :b #x35 :a #x80) + (new 'static 'rgba :r #x19 :g #x35 :b #x36 :a #x80) + (new 'static 'rgba :r #x1a :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x18 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x12 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x18 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x19 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x18 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x19 :g #x33 :b #x35 :a #x80) + (new 'static 'rgba :r #x17 :g #x32 :b #x34 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x19 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x19 :g #x34 :b #x35 :a #x80) + (new 'static 'rgba :r #x18 :g #x33 :b #x34 :a #x80) + (new 'static 'rgba :r #x17 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x18 :g #x33 :b #x34 :a #x80) + (new 'static 'rgba :r #x18 :g #x33 :b #x34 :a #x80) + (new 'static 'rgba :r #x17 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x12 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x17 :g #x32 :b #x34 :a #x80) + (new 'static 'rgba :r #x17 :g #x32 :b #x34 :a #x80) + (new 'static 'rgba :r #x15 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x17 :g #x32 :b #x34 :a #x80) + (new 'static 'rgba :r #x16 :g #x31 :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x11 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x17 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x30 :b #x33 :a #x80) + (new 'static 'rgba :r #x16 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x16 :g #x2f :b #x33 :a #x80) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x15 :g #x2f :b #x32 :a #x80) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2c :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x15 :g #x2e :b #x32 :a #x80) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x14 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x13 :g #x2d :b #x31 :a #x80) + (new 'static 'rgba :r #x14 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #xb :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x14 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x31 :a #x80) + (new 'static 'rgba :r #x13 :g #x2c :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x29 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x13 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x12 :g #x2b :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x12 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x12 :g #x2b :b #x30 :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x29 :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xb :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x11 :g #x2a :b #x2f :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xf :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #x10 :g #x29 :b #x2e :a #x80) + (new 'static 'rgba :r #xf :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x26 :b #x2b :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x28 :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #xa :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xe :g #x28 :b #x2d :a #x80) + (new 'static 'rgba :r #xd :g #x27 :b #x2c :a #x80) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x8 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xd :g #x26 :b #x2c :a #x80) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #x9 :g #x23 :b #x29 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x27 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xc :g #x25 :b #x2b :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x29 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x27 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x5 :g #x21 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x26 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #xb :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #xb :g #x25 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x24 :b #x2a :a #x80) + (new 'static 'rgba :r #x7 :g #x22 :b #x28 :a #x80) + (new 'static 'rgba :r #x4 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1e :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x2 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x24 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x1f :b #x25 :a #x80) + (new 'static 'rgba :r #x3 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba :r #x4 :g #x20 :b #x25 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + ) + +;; definition for symbol *ocean-near-indices-palace*, type ocean-near-indices +(define *ocean-near-indices-palace* + (new 'static 'ocean-near-indices + :data (new 'static 'inline-array ocean-near-index 1 (new 'static 'ocean-near-index)) + ) + ) + +;; definition for symbol *ocean-trans-indices-palace*, type ocean-trans-indices +(define *ocean-trans-indices-palace* + (new 'static 'ocean-trans-indices :data (new 'static 'inline-array ocean-trans-index 2304 + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + ) + ) + ) + +;; definition for symbol *ocean-mid-indices-palace*, type ocean-mid-indices +(define *ocean-mid-indices-palace* (new 'static 'ocean-mid-indices :data (new 'static 'array uint16 36 + #x1 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + ) + +;; definition for symbol *ocean-mid-masks-palace*, type ocean-mid-masks +(define *ocean-mid-masks-palace* + (new 'static 'ocean-mid-masks + :data (new 'static 'inline-array ocean-mid-mask 2 + (new 'static 'ocean-mid-mask) + (new 'static 'ocean-mid-mask :mask (new 'static 'array uint8 8 #x0 #x0 #x0 #x7f #x7f #x7f #x7f #x7f)) + ) + ) + ) + +;; definition for symbol *ocean-map-palace*, type ocean-map +(define *ocean-map-palace* (new 'static 'ocean-map + :start-corner (new 'static 'vector :x -3145728.0 :z -7077888.0 :w 1.0) + :far-color (new 'static 'vector :x 2.509804 :y 30.619608 :z 36.64314 :w 128.0) + ) + ) + +;; failed to figure out what this is: +(set! (-> *ocean-map-palace* ocean-spheres) *ocean-spheres-palace*) + +;; failed to figure out what this is: +(set! (-> *ocean-map-palace* ocean-colors) *ocean-colors-palace*) + +;; failed to figure out what this is: +(set! (-> *ocean-map-palace* ocean-mid-masks) *ocean-mid-masks-palace*) + +;; failed to figure out what this is: +(set! (-> *ocean-map-palace* ocean-mid-indices) *ocean-mid-indices-palace*) + +;; failed to figure out what this is: +(set! (-> *ocean-map-palace* ocean-trans-indices) *ocean-trans-indices-palace*) + +;; failed to figure out what this is: +(set! (-> *ocean-map-palace* ocean-near-indices) *ocean-near-indices-palace*) + + + + diff --git a/test/offline/config/jak2/config.jsonc b/test/offline/config/jak2/config.jsonc index c883fdbd18..976654a183 100644 --- a/test/offline/config/jak2/config.jsonc +++ b/test/offline/config/jak2/config.jsonc @@ -5,7 +5,9 @@ "CGO/COMMON.CGO", "CGO/GAME.CGO", "DGO/CWI.DGO", - "DGO/STD.DGO" + "DGO/STD.DGO", + "DGO/PALOUT.DGO", + "DGO/CTA.DGO" ], "skip_compile_files": [], diff --git a/test/offline/offline_test_main.cpp b/test/offline/offline_test_main.cpp index 5b8aa5a7ac..1d0612394a 100644 --- a/test/offline/offline_test_main.cpp +++ b/test/offline/offline_test_main.cpp @@ -471,6 +471,7 @@ int main(int argc, char* argv[]) { int max_files = -1; std::string single_file = ""; uint32_t num_threads = 1; + bool fail_on_cmp = false; CLI::App app{"OpenGOAL - Offline Reference Test Runner"}; app.add_option("--iso_data_path", iso_data_path, "The path to the folder with the ISO data files") @@ -487,6 +488,7 @@ int main(int argc, char* argv[]) { app.add_option("-f,--file", single_file, "Limit the offline test routine to a single file to decompile/compile -- useful " "when you are just iterating on a single file"); + app.add_flag("--fail-on-cmp", fail_on_cmp, "Fail the tests immediately if the comparison fails"); app.validate_positionals(); CLI11_PARSE(app, argc, argv); @@ -550,8 +552,13 @@ int main(int argc, char* argv[]) { result.compare = compare(decompiler, work_group, dump_current_output); if (!result.compare.total_pass) { result.exit_code = 1; + if (fail_on_cmp) { + return result; + } } + // TODO - if anything has failed, skip compiling + Timer compile_timer; result.compile = compile(decompiler, work_group, config.value(), game_name); result.time_spent_compiling = compile_timer.getSeconds();