commit ef1bd9e234595c93abc727b95bad834f9f35959f Author: jusax23 Date: Fri Jul 28 21:04:54 2023 +0200 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..2008c32 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,730 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys", +] + +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + +[[package]] +name = "fdeflate" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gl_matrix" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df64d0245c589931a0b5a385a63e7db2aeff209bdd471df0417e0f230a4c33ae" +dependencies = [ + "rand", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "j4rs" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81d7d940f91519a518dd367b0711e6fcb9250a4eccfba98229f40f0d506c4af6" +dependencies = [ + "cesu8", + "dirs", + "dunce", + "fs_extra", + "futures", + "glob", + "java-locator", + "jni-sys", + "lazy_static", + "libc", + "libloading", + "log", + "serde", + "serde_json", + "sha2", +] + +[[package]] +name = "j_game" +version = "0.1.0" +dependencies = [ + "gl_matrix", + "j4rs", + "miniquad", + "png", + "serde", +] + +[[package]] +name = "java-locator" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90003f2fd9c52f212c21d8520f1128da0080bad6fff16b68fe6e7f2f0c3780c2" +dependencies = [ + "glob", + "lazy_static", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "libloading" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d580318f95776505201b28cf98eb1fa5e4be3b689633ba6a3e6cd880ff22d8cb" +dependencies = [ + "cfg-if", + "windows-sys", +] + +[[package]] +name = "log" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "miniquad" +version = "0.3.15" +dependencies = [ + "libc", + "ndk-sys", + "objc", + "winapi", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "ndk-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "pin-project-lite" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "png" +version = "0.17.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" +dependencies = [ + "bitflags", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.10", + "redox_syscall", + "thiserror", +] + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "serde" +version = "1.0.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63ba2516aa6bf82e0b19ca8b50019d52df58455d3cf9bdaf6315225fdd0c560a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "401797fe7833d72109fedec6bfcbe67c0eed9b99772f26eb8afd261f0abc6fd3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "syn" +version = "2.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..c6587ef --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "j_game" +version = "0.1.0" +edition = "2021" +crate-type = ["cdylib"] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +gl_matrix = "0.0.2" +j4rs = "0.17.0" +miniquad = { path = '../jucraft/miniquad' } +png = "0.17.9" +serde = "1.0.177" diff --git a/assets/images/avatar.png b/assets/images/avatar.png new file mode 100644 index 0000000..eefcd63 Binary files /dev/null and b/assets/images/avatar.png differ diff --git a/assets/models/Kirche.obj b/assets/models/Kirche.obj new file mode 100644 index 0000000..ad04f71 --- /dev/null +++ b/assets/models/Kirche.obj @@ -0,0 +1,3765 @@ +# Blender v3.0.1 OBJ File: 'Kirche.blend' +# www.blender.org +mtllib Kirche.mtl +o Unbenannt-Kirche.001 +v -1.884742 0.513141 -1.267469 +v -2.207658 0.663141 -1.105239 +v -1.883178 0.663141 -1.107708 +v -2.209527 0.513141 -1.265792 +v 3.220762 1.787641 -0.424844 +v 3.220762 0.015894 -0.424844 +v 3.501447 1.407942 -0.414304 +v 3.501447 0.015894 -0.414304 +v 3.487926 1.407942 -0.647459 +v -2.209527 0.015894 -1.265792 +v 3.179141 0.015894 -0.660467 +v 3.179141 1.237940 -0.660467 +v -1.884742 0.015894 -1.267469 +v -3.323601 0.015894 0.426190 +v -3.317803 0.721641 0.886394 +v -3.317803 0.015894 0.886394 +v 3.487926 0.015894 -0.647459 +v -2.839640 4.936641 -0.359326 +v -2.946595 8.180540 -0.635625 +v -3.066350 4.936641 -0.364602 +v -3.144974 4.936641 -0.446979 +v -3.222989 4.936641 -0.528709 +v 3.126882 1.917940 -0.531849 +v 3.129882 1.917940 -0.662554 +v -3.323601 0.721641 0.426190 +v -2.826844 4.936641 -0.906646 +v -2.670298 4.936641 -0.742581 +v -2.675574 4.936641 -0.515872 +v 2.717990 0.015894 -1.110761 +v 2.611755 0.015894 -1.184814 +v -3.217709 4.936641 -0.755418 +v -3.053643 4.936641 -0.911964 +v 2.611755 1.237940 -1.184814 +v 2.426046 2.869840 0.521607 +v 2.470893 2.869840 0.521307 +v -2.941006 4.936641 -0.909323 +v 2.454289 1.567941 -0.911325 +v -3.065903 4.936641 0.972224 +v -3.222489 4.936641 0.808250 +v -3.315999 4.599142 0.844446 +v -2.754687 4.936641 -0.440386 +v 3.141612 1.917940 0.831334 +v 3.141612 4.263141 0.831334 +v 2.658054 4.263141 1.004796 +v 2.464373 1.237940 0.801800 +v 2.464373 2.404341 0.801800 +v 2.464373 4.263141 0.801800 +v 2.938546 4.263141 1.011317 +v 3.070678 4.263141 0.783045 +v 2.660720 4.263141 0.332193 +v 2.699722 4.263141 0.394360 +v 2.470893 4.263141 0.521307 +v 2.538696 4.263141 0.547985 +v 2.687156 4.263141 0.931506 +v 2.938564 1.297788 1.011346 +v 2.658054 1.297941 1.004796 +v 3.145635 2.654440 0.644084 +v 2.533530 4.263141 0.770479 +v -3.089303 4.599142 0.331398 +v -2.785861 4.599142 0.338438 +v -2.785861 3.703140 0.338438 +v -3.053105 4.936641 0.424904 +v -2.826398 4.936641 0.430180 +v -3.089303 3.703140 0.331398 +v 3.141612 1.237940 0.831334 +v -2.583293 4.599142 0.861533 +v -2.675036 4.936641 0.820996 +v 2.717990 1.237940 -1.110761 +v -3.106438 4.599142 1.063968 +v -2.954667 4.936641 1.067620 +v -2.953713 4.936641 0.974900 +v -2.802947 4.599142 1.071140 +v -2.781012 3.703140 -1.010373 +v 2.466995 2.591503 0.689023 +v 2.430593 2.404341 0.802290 +v -2.781012 4.599142 -1.010373 +v -2.564618 4.599142 -0.783565 +v 3.051116 2.791889 -0.304943 +v 3.119643 2.726740 -0.368944 +v -2.564618 3.703140 -0.783565 +v -3.308915 4.599142 0.540912 +v -3.217171 4.936641 0.581450 +v -2.798787 4.599142 -0.253595 +v -2.948418 4.936641 -0.361802 +v -2.955483 4.936641 -0.257236 +v -2.672814 4.936641 -0.896970 +v -2.750458 4.936641 -0.826651 +v -3.315999 3.703140 0.844446 +v -3.106438 3.703140 1.063968 +v -3.308915 3.703140 0.540912 +v 2.299419 0.015894 1.261227 +v 1.973009 0.015894 1.264522 +v 1.973011 0.129841 1.264593 +v -3.112180 4.599142 -0.260877 +v 1.970187 0.663141 1.118817 +v 2.296361 0.663141 1.115237 +v 2.299419 0.513141 1.261227 +v 1.973011 0.513141 1.264593 +v 2.299419 0.131841 1.261227 +v -2.802947 3.703140 1.071140 +v 3.124509 1.917940 -0.428454 +v 3.155483 1.876011 -0.427293 +v -2.839143 4.936641 0.977633 +v 2.299419 1.653141 1.261227 +v 2.409013 1.653141 1.260126 +v 2.427653 1.753141 1.113775 +v -2.946149 8.180540 0.701203 +v 2.296361 1.753141 1.115237 +v -2.669760 4.936641 0.594288 +v 2.427653 0.015894 1.113775 +v 2.409013 0.015894 1.260126 +v -3.135171 4.936641 0.503209 +v -3.321347 4.599142 -0.801209 +v -3.328667 3.703140 -0.487725 +v -3.328667 4.599142 -0.487725 +v -3.321347 3.703140 -0.801209 +v -3.094498 3.703140 -1.017694 +v -2.514014 0.015894 1.092212 +v -2.509516 3.703140 0.275669 +v -2.514014 2.012840 1.092212 +v -2.514014 3.703140 1.092212 +v -3.094498 4.599142 -1.017695 +v 2.430593 1.237940 0.802290 +v -2.576253 4.599142 0.558091 +v -2.576253 3.703140 0.558091 +v -0.477739 0.663141 1.145762 +v -0.807628 0.663141 1.149338 +v -0.476168 0.513141 1.289673 +v -0.476168 0.015894 1.289673 +v 2.888763 0.015894 -0.894273 +v -0.804768 0.513141 1.293055 +v -0.804768 0.015894 1.293055 +v -2.329842 1.753141 -1.104345 +v -2.207658 1.753141 -1.105239 +v -2.209527 1.653141 -1.265792 +v -2.318118 1.653141 -1.265231 +v 2.420499 3.440584 0.177653 +v -2.318118 0.015894 -1.265231 +v 3.061143 0.015894 -0.887528 +v -2.329842 0.015894 -1.104345 +v -2.571940 4.599142 -0.470081 +v -2.685344 4.936641 -0.361883 +v 2.389932 1.716440 -1.194711 +v 2.399127 1.753141 -1.139811 +v 2.398187 1.716741 -1.194343 +v 2.270779 1.653141 -1.289013 +v 2.375654 1.653141 -1.289574 +v 2.275957 1.753141 -1.138915 +v -0.339770 0.015894 1.288282 +v -0.342062 0.663141 1.144269 +v -0.477739 1.753141 1.145762 +v -0.342062 1.753141 1.144269 +v -0.476168 1.653141 1.289673 +v -0.339770 0.513141 1.288282 +v 2.270779 0.015894 -1.289013 +v 2.270779 0.513141 -1.289013 +v 0.446512 1.753141 -1.125127 +v 0.584536 1.753141 -1.126239 +v 0.579796 1.653141 -1.280296 +v 2.389932 0.015894 -1.194711 +v 2.375654 0.015894 -1.289574 +v 2.398187 0.015894 -1.194343 +v 2.398187 1.237940 -1.194343 +v -0.339770 1.653141 1.288282 +v 2.399127 1.301941 -1.139811 +v 2.275957 0.663141 -1.138915 +v -2.583293 3.703140 0.861533 +v 2.398442 1.255274 -1.179574 +v 2.402745 1.567941 -0.913437 +v -2.672999 4.936641 -0.625373 +v -2.568299 4.936641 -0.626777 +v -3.312478 4.936641 0.692725 +v -3.219868 4.936641 0.695926 +v -3.220315 4.936641 -0.640901 +v -3.324986 4.936641 -0.644512 +v -3.199109 4.936641 0.436155 +v -3.112180 3.703140 -0.260877 +v -2.682566 3.703140 -0.364507 +v -2.571940 3.703140 -0.470081 +v -2.798787 3.703140 -0.253595 +v 2.447172 1.237940 0.802050 +v -2.681039 3.703140 0.954807 +v -1.883178 1.753141 -1.107708 +v -1.747550 1.653141 -1.268183 +v -1.884742 1.653141 -1.267469 +v -1.748280 0.663141 -1.108670 +v -1.748280 1.753141 -1.108670 +v -3.325257 2.903141 0.276774 +v -1.747550 0.513141 -1.268183 +v -1.747550 0.015894 -1.268183 +v 2.888763 1.237940 -0.894273 +v 3.061143 1.237741 -0.887528 +v 3.189128 1.237940 -0.882252 +v 3.189128 0.015894 -0.882252 +v -3.325257 3.703140 0.276774 +v 2.414271 3.440540 -0.204170 +v 2.461133 3.135874 -0.387663 +v 1.352686 1.753141 -1.131972 +v 1.492232 1.753141 -1.133066 +v 1.488309 1.653141 -1.285014 +v 1.352686 0.663141 -1.131972 +v 1.492232 0.663141 -1.133066 +v 1.350000 0.015894 -1.284247 +v 1.350000 0.513141 -1.284247 +v 1.488309 0.015894 -1.285014 +v 1.350000 1.653141 -1.284247 +v 1.488309 0.513141 -1.285014 +v 2.411265 3.135841 -0.387637 +v 2.417375 3.757240 -0.013006 +v 2.434692 1.237940 1.058504 +v 2.434692 0.015894 1.058504 +v 2.434692 1.979540 1.058504 +v 2.427653 1.887941 1.113775 +v 0.916088 1.753141 1.130377 +v 0.916088 0.015894 1.130377 +v 0.916088 1.887941 1.130377 +v 1.055319 0.015894 1.274001 +v 0.917265 0.015894 1.275428 +v 0.917265 1.653141 1.275428 +v 1.055319 1.653141 1.274001 +v 1.051187 1.753141 1.128958 +v 1.055319 0.513141 1.274001 +v 1.051187 0.663141 1.128958 +v 0.467396 0.663141 1.135359 +v 0.131900 0.513141 1.283504 +v 0.471151 0.513141 1.280018 +v 0.471151 0.015894 1.280018 +v 0.129364 0.663141 1.139055 +v 3.041341 1.428041 -0.747702 +v 2.940185 1.302007 -0.844876 +v 2.467510 2.683441 -0.661902 +v 2.463054 2.999771 -0.470161 +v 2.406865 2.384241 -0.660492 +v -3.315366 0.015894 1.079559 +v -3.330903 2.903141 -0.221628 +v -3.330903 0.015894 -0.221627 +v -3.330903 0.721641 -0.221628 +v -3.325730 0.721641 0.240487 +v -3.325730 0.015894 0.240487 +v -2.506762 3.703140 -0.224924 +v 1.970187 1.753141 1.118817 +v 1.834195 0.663141 1.120278 +v 1.836166 0.015894 1.266007 +v 1.834195 1.753141 1.120278 +v 1.973011 1.653141 1.264593 +v 1.836166 0.513141 1.266007 +v 1.836166 1.653141 1.266007 +v -3.393849 1.911340 0.945175 +v -3.317059 1.911340 0.944338 +v -3.315366 0.721641 1.079559 +v -3.494855 0.015894 1.076780 +v -3.316109 1.911340 1.021614 +v -3.392956 1.911340 1.020349 +v -3.494855 0.721641 1.076780 +v -3.497182 0.015894 0.888804 +v -3.497182 0.721641 0.888803 +v -0.008060 0.663141 1.140541 +v 0.131900 1.653141 1.283504 +v 0.129364 1.753141 1.139055 +v -0.959068 1.653141 1.294627 +v -0.807628 1.753141 1.149338 +v -0.962861 1.753141 1.151045 +v -0.004052 0.015894 1.284874 +v -0.008060 1.753141 1.140541 +v -0.004052 1.653141 1.284874 +v -0.004052 0.513141 1.284874 +v -0.804768 1.653141 1.293055 +v -0.962861 0.015894 1.151045 +v -0.959068 0.015894 1.294627 +v -3.400079 1.911340 0.370644 +v -3.324242 1.911340 0.370479 +v -3.400998 1.911340 0.296768 +v -3.505105 0.721641 0.242896 +v -3.325093 1.911340 0.296198 +v -3.502667 0.721641 0.427643 +v -3.505105 0.015894 0.242896 +v -3.502667 0.015894 0.427643 +v 3.179424 1.864240 0.586420 +v 3.176625 1.865440 0.664009 +v 3.455100 1.407942 0.596170 +v 3.188897 0.015894 0.586999 +v 3.165708 1.877741 0.831485 +v 3.178588 1.864599 0.609586 +v 3.455100 0.015894 0.596170 +v 3.446527 0.015894 0.833557 +v 3.165708 0.015894 0.831485 +v 3.145726 1.917940 0.644125 +v 3.446527 1.407942 0.833557 +v 3.165708 1.237940 0.831485 +v 2.895030 1.237940 1.049923 +v 2.704559 1.237940 1.053442 +v 2.895030 0.015894 1.049923 +v 2.738498 1.297941 1.006666 +v 3.188886 1.848522 0.586776 +v 2.703502 0.015894 1.052334 +v 2.704559 0.015894 1.053442 +v 1.805978 0.513141 -1.286667 +v 1.807991 0.663141 -1.135344 +v 1.805978 0.015894 -1.286667 +v -1.392628 0.663141 1.155752 +v -1.256321 0.015894 1.154320 +v -1.392628 1.753141 1.155752 +v -1.390144 1.653141 1.299084 +v -1.252853 1.653141 1.297650 +v -1.256321 1.753141 1.154320 +v -1.252853 0.015894 1.297650 +v -1.390144 0.015894 1.299084 +v -1.390144 0.513141 1.299084 +v 0.101034 0.015894 -1.277777 +v 0.446512 0.663141 -1.125127 +v 0.101034 0.513141 -1.277777 +v 0.442919 0.513141 -1.279553 +v 0.102335 0.663141 -1.122616 +v 0.442919 0.015894 -1.279553 +v 2.709991 4.879840 -0.748488 +v 2.876193 4.933240 -0.701289 +v 2.895108 4.879840 -0.744096 +v 2.975747 4.933240 -0.444113 +v 2.979251 4.933240 -0.593326 +v 3.022907 4.879840 -0.610225 +v 2.718532 4.933240 -0.344469 +v 2.867744 4.933240 -0.340964 +v 2.618926 4.933240 -0.601776 +v 2.726890 4.933240 -0.704834 +v 3.018554 4.879840 -0.425199 +v 2.576120 4.879840 -0.620691 +v 2.615382 4.933240 -0.452472 +v 2.884643 4.879840 -0.297310 +v 2.698249 4.816740 -0.778822 +v 2.546392 4.816740 -0.633826 +v 2.699617 4.879840 -0.301661 +v 2.571727 4.879840 -0.435573 +v 3.048373 4.816740 -0.412023 +v 3.053239 4.816740 -0.621967 +v 2.908284 4.816740 -0.773916 +v 2.686481 4.816740 -0.271935 +v 2.541394 4.816740 -0.423830 +v 2.896384 4.816740 -0.266976 +v 3.063283 4.747640 -0.405435 +v 3.068538 4.747640 -0.627889 +v 2.679853 4.747640 -0.256933 +v 2.692327 4.747640 -0.794121 +v 2.914872 4.747640 -0.788824 +v 2.526136 4.747640 -0.418000 +v 2.526136 4.263141 -0.418000 +v 2.679853 4.263141 -0.256933 +v 3.068538 4.263141 -0.627889 +v 2.531390 4.747640 -0.640455 +v 2.902347 4.747640 -0.251770 +v 2.531390 4.263141 -0.640455 +v 2.692327 4.263141 -0.794121 +v 2.902347 4.263141 -0.251770 +v 3.063283 4.263141 -0.405435 +v 2.914872 4.263141 -0.788824 +v -2.453570 1.887941 1.167461 +v -2.468312 2.011041 1.092945 +v -2.502030 1.913940 -1.087280 +v -2.452683 1.914741 -1.087123 +v -2.508155 3.757240 0.032582 +v 2.399127 1.887941 -1.139811 +v -2.329842 1.887941 -1.104345 +v -2.317893 1.887941 1.165969 +v -2.317897 1.891241 1.163999 +v 0.915694 1.956241 1.089206 +v 0.602952 1.957641 1.091832 +v -2.502028 0.015894 -1.087280 +v 0.604282 0.015894 1.133855 +v 0.602952 0.015894 1.091832 +v 0.915694 0.015894 1.089206 +v -1.257231 1.947740 1.118277 +v -0.962861 1.887941 1.151045 +v 0.604282 1.887941 1.133855 +v -0.963831 1.946741 1.115632 +v -2.452683 0.015894 -1.087123 +v -1.256321 1.887941 1.154320 +v -2.468312 0.015894 1.092945 +v -2.453570 0.015894 1.167461 +v -1.257231 0.015894 1.118277 +v -0.963831 0.015894 1.115632 +v -2.317893 1.753141 1.165969 +v -2.317893 0.015894 1.165969 +v 0.604282 1.753141 1.133855 +v -3.315366 3.703140 1.079559 +v 1.944228 0.663141 -1.136369 +v 1.944228 1.753141 -1.136369 +v 2.707689 1.887941 -0.850414 +v 2.709701 1.887941 -0.901236 +v 2.709701 0.015894 -0.901236 +v 1.807991 1.753141 -1.135344 +v 1.942369 0.015894 -1.287297 +v 1.805978 1.653141 -1.286667 +v 1.942369 0.513141 -1.287297 +v 1.942369 1.653141 -1.287297 +v 2.707689 1.302141 -0.850414 +v 2.709701 1.237940 -0.901236 +v -3.211240 4.936641 0.954252 +v -3.144170 4.936641 0.890303 +v 0.887806 1.753141 -1.128457 +v 1.028023 1.753141 -1.129584 +v 1.024676 1.653141 -1.282590 +v 0.886905 1.653141 -1.281804 +v 3.354802 0.015894 -0.164565 +v 3.354802 1.157942 -0.164565 +v 3.206287 1.307741 -0.169402 +v 3.359676 0.015894 -0.291637 +v 3.359676 1.157942 -0.291637 +v -1.716735 0.513141 1.302369 +v 3.213504 1.307941 -0.297078 +v 3.213504 0.015894 -0.297078 +v 1.028023 0.663141 -1.129584 +v 1.024676 0.015894 -1.282590 +v 0.886905 0.015894 -1.281804 +v 0.886905 0.513141 -1.281804 +v 1.024676 0.513141 -1.282590 +v 0.887806 0.663141 -1.128457 +v -1.717500 0.663141 1.159359 +v -1.716737 0.015894 1.302015 +v 3.164453 0.015894 1.044883 +v 3.164453 1.237940 1.044883 +v 3.040576 1.438040 0.920943 +v 3.156991 1.237940 0.831430 +v 2.432449 1.237940 0.918318 +v 2.569364 1.418041 0.911820 +v -1.854119 0.015894 1.303764 +v -1.716735 1.653141 1.302369 +v -1.854119 0.513141 1.303764 +v -1.854119 1.653141 1.303764 +v -1.856042 0.663141 1.160897 +v -1.856042 1.753141 1.160897 +v -1.717500 1.753141 1.159359 +v 0.579796 0.015894 -1.280296 +v -1.420124 0.513141 -1.269896 +v -1.420124 0.015894 -1.269896 +v 0.584536 0.663141 -1.126239 +v 0.442919 1.653141 -1.279553 +v -1.416551 0.663141 -1.111215 +v 0.579796 0.513141 -1.280296 +v 1.380609 0.015894 1.270688 +v 1.517678 1.653141 1.269264 +v 1.380609 0.513141 1.270688 +v 1.380609 1.653141 1.270688 +v 1.515363 1.753141 1.123821 +v 1.515363 0.663141 1.123821 +v 1.377269 1.753141 1.125339 +v 1.377269 0.663141 1.125339 +v 1.517678 0.015894 1.269264 +v 1.517678 0.122739 1.269264 +v 1.517678 0.513141 1.269264 +v 2.709010 1.259979 -0.883790 +v -2.180022 0.663141 1.164462 +v -2.179501 0.013841 1.307037 +v -2.179501 0.513141 1.307037 +v 3.187961 0.015894 0.346394 +v 3.187961 1.307941 0.346394 +v 3.348268 0.015894 0.348789 +v 3.343261 0.015894 0.484328 +v 3.343261 1.157942 0.484328 +v 3.188524 1.307941 0.480460 +v 3.188524 0.015894 0.480460 +v 2.461138 4.263141 -0.387683 +v 3.348268 1.157942 0.348789 +v 3.119643 4.263141 -0.368944 +v 3.188253 1.307941 0.415894 +v 2.924005 4.263141 -0.186225 +v 2.653354 4.263141 -0.195721 +v 2.940185 4.263141 -0.844876 +v 3.129882 4.263141 -0.662554 +v 2.659415 4.263141 -0.851517 +v 2.467510 4.263141 -0.661902 +v 2.467510 2.384241 -0.661902 +v 3.124509 2.726740 -0.428454 +v -1.416551 1.753141 -1.111215 +v -1.283247 1.653141 -1.270639 +v -1.420124 1.653141 -1.269896 +v -1.283247 0.015894 -1.270639 +v -1.279421 1.753141 -1.112283 +v -1.283247 0.513141 -1.270639 +v -0.370478 0.513141 -1.275336 +v -0.370478 0.015894 -1.275336 +v -0.506240 1.653141 -1.274647 +v -0.370478 1.653141 -1.275336 +v -0.503931 1.753141 -1.118053 +v -0.368678 1.753141 -1.119077 +v -0.506239 0.015894 -1.274647 +v -0.506240 0.513141 -1.274647 +v -0.503931 0.663141 -1.118053 +v -0.368678 0.663141 -1.119077 +v -1.279421 0.663141 -1.112283 +v -3.331746 1.911340 -0.282567 +v -3.510319 0.721641 -0.219127 +v -3.407529 1.911340 -0.281286 +v -3.408578 1.911340 -0.362542 +v -2.818028 3.703140 -1.011237 +v -2.502030 3.703140 -1.087280 +v -3.330903 3.703140 -0.221628 +v -3.513055 0.015894 -0.422262 +v -3.510319 0.015894 -0.219127 +v -3.332795 1.911340 -0.363822 +v 2.413829 2.384241 -0.660653 +v -3.513055 0.721641 -0.422262 +v -3.333638 0.015894 -0.424762 +v 2.402745 1.887941 -0.913437 +v -3.333638 0.721641 -0.424762 +v -3.341065 0.015894 -1.089363 +v -3.339165 0.015894 -0.885830 +v -3.341065 0.721641 -1.089363 +v -3.341065 3.703140 -1.089363 +v -3.339165 0.721641 -0.885830 +v -0.034189 0.513141 -1.277069 +v -0.034189 0.015894 -1.277069 +v -0.029293 0.663141 -1.121630 +v 0.467396 1.753141 1.135359 +v -2.180022 1.753141 1.164462 +v -2.316661 1.653141 1.308419 +v -2.316661 0.015894 1.308419 +v -2.179501 1.653141 1.307037 +v 0.471151 1.653141 1.280018 +v 0.608981 1.653141 1.278603 +v 0.608981 0.015894 1.278603 +v -2.693141 4.936641 0.966382 +v -2.755378 4.936641 0.897666 +v -0.029293 1.753141 -1.121630 +v 0.101034 1.653141 -1.277777 +v -0.034189 1.653141 -1.277069 +v 0.102335 1.753141 -1.122616 +v -0.985908 0.663141 -1.114443 +v -0.989702 0.513141 -1.272128 +v -0.989702 0.015894 -1.272128 +v 3.104427 2.726372 -0.179864 +v 3.213504 2.620641 -0.297078 +v 3.220762 2.620641 -0.424844 +v 1.943542 0.607778 -1.192074 +v 2.603704 3.178192 -0.245304 +v -3.207940 4.936641 -0.909406 +v -3.135525 4.936641 -0.833788 +v 2.530093 2.966549 0.462330 +v 2.660720 3.180240 0.332193 +v 2.986556 4.933240 0.595113 +v 2.983142 4.933240 0.744366 +v 2.626231 4.933240 0.586663 +v 2.583423 4.879840 0.567748 +v 2.579124 4.879840 0.752907 +v 2.717386 4.879840 0.439992 +v 2.883537 4.933240 0.487059 +v 2.902412 4.879840 0.444343 +v 3.025951 4.879840 0.763281 +v 3.030210 4.879840 0.578214 +v 2.734193 4.933240 0.483605 +v 2.875049 4.933240 0.847476 +v 2.622686 4.933240 0.735968 +v 2.706920 4.879840 0.886779 +v 2.725835 4.933240 0.843971 +v 3.060542 4.816740 0.566472 +v 2.915588 4.816740 0.414525 +v 2.705644 4.816740 0.409659 +v 2.922176 4.747640 0.399615 +v 2.903690 4.816740 0.921463 +v 3.055679 4.816740 0.776416 +v 2.891946 4.879840 0.891130 +v 3.070678 4.747640 0.783045 +v 3.075841 4.747640 0.560550 +v 2.693786 4.816740 0.916506 +v 2.548789 4.816740 0.764649 +v 2.553695 4.816740 0.554613 +v 2.533530 4.747640 0.770479 +v 2.909652 4.747640 0.936670 +v 2.538696 4.747640 0.547985 +v 2.922176 4.263141 0.399615 +v 3.075841 4.263141 0.560550 +v 2.699722 4.747640 0.394360 +v 2.687156 4.747640 0.931506 +v 2.909652 4.263141 0.936670 +v -0.835319 0.015894 -1.272898 +v -0.835319 0.513141 -1.272898 +v -0.832888 0.663141 -1.115596 +v -0.832888 1.753141 -1.115596 +v -2.937775 4.936641 0.427650 +v -0.985908 1.753141 -1.114443 +v -0.989702 1.653141 -1.272128 +v -2.937581 4.936641 0.334917 +v -0.835319 1.653141 -1.272898 +v 2.954383 2.868440 0.334147 +v 2.954383 4.263141 0.334147 +v 3.148105 2.660440 0.537051 +v 3.148105 4.263141 0.537051 +v -3.339741 1.911340 -0.946872 +v -3.518540 0.721641 -0.883422 +v -3.414670 1.911340 -0.944557 +v -3.521161 0.721641 -1.089785 +v -3.415734 1.911340 -1.027021 +v -3.340489 1.911340 -1.028321 +v -3.518540 0.015894 -0.883422 +v -3.521161 0.015894 -1.089785 +v 2.818164 5.525241 0.700332 +v 2.804687 5.829940 0.665515 +v 2.789571 5.525241 0.699724 +v 2.819762 5.525241 0.631397 +v 2.839504 5.525241 0.652037 +v 2.791209 5.525241 0.630697 +v 2.770568 5.525241 0.650440 +v 2.838805 5.525241 0.680590 +v 2.769870 5.525241 0.678993 +v 2.833907 5.511442 0.599383 +v 2.775424 5.511442 0.731739 +v 2.737163 5.511442 0.691654 +v 2.872079 5.511442 0.639427 +v 2.870818 5.511442 0.694736 +v 2.738464 5.511442 0.636253 +v 2.778507 5.511442 0.598082 +v 2.900565 5.489339 0.628400 +v 2.846235 5.489339 0.571485 +v 2.830734 5.511442 0.733000 +v 2.898715 5.489339 0.707062 +v 2.767570 5.489339 0.569634 +v 2.710656 5.489339 0.623967 +v 2.753398 5.460340 0.781589 +v 2.708806 5.489339 0.702631 +v 2.686385 5.460340 0.711310 +v 2.841802 5.489339 0.761396 +v 2.763139 5.489339 0.759545 +v 2.850480 5.460340 0.783816 +v 2.920760 5.460340 0.716803 +v 2.938022 5.426342 0.613901 +v 2.922988 5.460340 0.619720 +v 2.688613 5.460340 0.614227 +v 2.758891 5.460340 0.547215 +v 2.855933 5.460340 0.549533 +v 2.935487 5.426342 0.723310 +v 2.944707 5.389440 0.611388 +v 2.746890 5.426342 0.796315 +v 2.671352 5.426342 0.717129 +v 2.743982 5.389440 0.802902 +v 2.753072 5.426342 0.532180 +v 2.673885 5.426342 0.607720 +v 2.750427 5.389440 0.525545 +v 2.862481 5.426342 0.534714 +v 2.865352 5.389440 0.528220 +v 2.667300 5.389440 0.604810 +v 2.856300 5.426342 0.798851 +v 2.941982 5.389440 0.726179 +v 2.664624 5.389440 0.719733 +v 2.858905 5.389440 0.805577 +v 2.865352 4.964540 0.528220 +v 2.944707 4.964540 0.611388 +v 2.750427 4.964540 0.525545 +v 2.667300 4.964540 0.604810 +v 2.664624 4.964540 0.719733 +v 2.941982 4.964540 0.726179 +v 2.743982 4.964540 0.802902 +v 2.858905 4.964540 0.805577 +v -2.681012 4.936641 0.448284 +v -2.746573 4.936641 0.513774 +v -2.672456 4.936641 0.709749 +v -2.579774 4.936641 0.709812 +v -2.937802 4.936641 -1.014054 +v 3.187961 2.620641 0.346394 +v 3.176625 2.620641 0.664009 +v 3.179424 2.620641 0.586420 +v 3.206155 2.620840 -0.169351 +v -3.220471 4.936641 -0.374321 +v 3.188886 2.610540 0.586776 +v 3.188524 2.614940 0.480460 +v 3.206155 0.015894 -0.169351 +v 2.782176 5.525241 -0.488755 +v 2.797252 5.829940 -0.522873 +v 2.762433 5.525241 -0.509395 +v 2.831369 5.525241 -0.507798 +v 2.832069 5.525241 -0.536351 +v 2.763133 5.525241 -0.537948 +v 2.810729 5.525241 -0.488055 +v 2.783773 5.525241 -0.557691 +v 2.812366 5.525241 -0.557082 +v 2.864776 5.511442 -0.549012 +v 2.826511 5.511442 -0.589097 +v 2.863475 5.511442 -0.493612 +v 2.771203 5.511442 -0.590358 +v 2.768031 5.511442 -0.456741 +v 2.834365 5.489339 -0.426993 +v 2.823430 5.511442 -0.455439 +v 2.838798 5.489339 -0.616904 +v 2.731118 5.511442 -0.552094 +v 2.729858 5.511442 -0.496786 +v 2.701370 5.489339 -0.485758 +v 2.703220 5.489339 -0.564421 +v 2.891280 5.489339 -0.481326 +v 2.893131 5.489339 -0.559988 +v 2.760135 5.489339 -0.618754 +v 2.755702 5.489339 -0.428844 +v 2.751456 5.460340 -0.641174 +v 2.848539 5.460340 -0.638947 +v 2.681176 5.460340 -0.574161 +v 2.855047 5.426342 -0.653674 +v 2.915551 5.460340 -0.568669 +v 2.930587 5.426342 -0.574488 +v 2.843045 5.460340 -0.404573 +v 2.913326 5.460340 -0.471585 +v 2.678951 5.460340 -0.477079 +v 2.745635 5.426342 -0.656209 +v 2.746003 5.460340 -0.406892 +v 2.928050 5.426342 -0.465079 +v 2.666450 5.426342 -0.580669 +v 2.851508 5.389440 -0.382904 +v 2.739455 5.426342 -0.392073 +v 2.736587 5.389440 -0.385578 +v 2.663915 5.426342 -0.471259 +v 2.934636 5.389440 -0.462168 +v 2.848865 5.426342 -0.389538 +v 2.657230 5.389440 -0.468747 +v 2.857955 5.389440 -0.660259 +v 2.659957 5.389440 -0.583538 +v 2.743034 5.389440 -0.662935 +v 2.937312 5.389440 -0.577091 +v 2.937312 4.964540 -0.577091 +v 2.934636 4.964540 -0.462168 +v 2.851508 4.964540 -0.382904 +v 2.743034 4.964540 -0.662935 +v 2.857955 4.964540 -0.660259 +v 2.736587 4.964540 -0.385578 +v 2.659957 4.964540 -0.583538 +v 2.657230 4.964540 -0.468747 +v -2.508361 3.703140 0.065445 +v -2.507998 3.703140 -0.000286 +v 2.406885 2.683323 -0.660491 +v 2.658221 1.299728 1.004801 +v 2.653394 3.193098 -0.195748 +v 2.924005 2.913070 -0.186218 +v -3.326552 3.703140 -0.485508 +v -3.312593 3.703140 0.848015 +v 2.408252 2.823471 -0.576034 +v 2.655331 3.191091 -0.195655 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vt 0.089844 0.414062 +vn 0.9999 0.0000 -0.0116 +vn -1.0000 0.0000 0.0098 +vn -0.0375 0.0000 0.9993 +vn 0.9983 0.0000 -0.0579 +vn -0.0052 0.0000 -1.0000 +vn 0.9994 0.0000 0.0355 +vn 0.0421 0.0000 -0.9991 +vn -0.7208 0.0841 0.6880 +vn -0.9999 0.0002 0.0119 +vn 0.9962 0.0841 0.0230 +vn -0.6877 0.0841 -0.7211 +vn -0.6881 0.0841 -0.7207 +vn -0.7234 -0.0000 0.6904 +vn 0.0234 0.0841 -0.9962 +vn -0.9962 0.0841 -0.0237 +vn -0.9962 0.0841 -0.0227 +vn -0.6976 0.2647 0.6658 +vn 0.6879 0.0841 0.7209 +vn -0.7235 0.0000 0.6903 +vn 0.6633 0.0000 0.7484 +vn 0.0000 1.0000 0.0000 +vn 0.5718 0.0000 -0.8204 +vn 0.6904 -0.0001 0.7235 +vn 0.0226 0.0841 -0.9962 +vn 0.9998 0.0001 0.0220 +vn -0.9119 0.4102 -0.0094 +vn 0.9120 0.4101 0.0094 +vn 0.7235 0.0000 -0.6904 +vn 0.9997 0.0000 0.0232 +vn 0.0124 0.5159 0.8565 +vn 0.7169 0.6948 0.0584 +vn 0.7162 0.6954 0.0590 +vn 0.0057 0.5164 0.8563 +vn 0.9051 0.4209 0.0612 +vn -0.6089 0.4211 -0.6723 +vn 0.7235 0.0000 -0.6903 +vn 0.6089 0.4211 0.6723 +vn 0.0000 -0.8000 -0.6000 +vn 0.0101 -0.0006 0.9999 +vn -0.9051 0.4209 -0.0611 +vn -0.0232 -0.0000 0.9997 +vn 0.0103 0.0000 0.9999 +vn -0.9997 0.0000 -0.0233 +vn 0.8041 0.5927 -0.0460 +vn 0.8039 0.5930 -0.0466 +vn -0.0236 0.0000 0.9997 +vn -0.0230 0.2646 0.9641 +vn 0.0232 0.0000 -0.9997 +vn -0.0230 0.2648 0.9640 +vn 0.0057 0.8253 0.5646 +vn 0.0237 0.0841 -0.9962 +vn 0.0229 0.2646 -0.9641 +vn 0.0063 0.8251 0.5650 +vn -0.9962 0.0841 -0.0235 +vn 0.6881 0.0841 0.7208 +vn 0.9962 0.0841 0.0231 +vn 0.9962 0.0841 0.0233 +vn -0.6879 0.0841 -0.7209 +vn -0.6972 0.2648 0.6661 +vn 0.6974 0.2648 -0.6660 +vn -0.0238 0.0841 0.9962 +vn -0.9999 0.0001 0.0115 +vn -0.6592 0.2962 -0.6912 +vn -0.6904 0.0001 -0.7234 +vn 0.4140 0.6898 -0.5939 +vn -0.9549 0.2962 -0.0217 +vn -0.9548 0.2962 -0.0228 +vn -0.9997 -0.0000 -0.0232 +vn 0.6977 0.2647 -0.6657 +vn 0.7207 0.0841 -0.6882 +vn 0.0074 0.6923 0.7215 +vn -0.0039 0.8488 -0.5286 +vn -0.0027 0.8492 -0.5280 +vn -0.9999 0.0000 0.0109 +vn -0.0052 0.7290 -0.6844 +vn 0.0057 0.5162 0.8565 +vn -0.0035 0.7307 -0.6827 +vn -0.9974 0.0000 -0.0727 +vn 0.6798 0.4209 -0.6005 +vn -0.6798 0.4211 0.6005 +vn -0.0056 0.8318 -0.5551 +vn -0.0030 0.8320 -0.5547 +vn -0.0040 0.8323 -0.5544 +vn -0.0021 0.8315 -0.5555 +vn 0.0063 0.8212 0.5706 +vn -0.0044 0.8388 -0.5444 +vn 0.9889 0.0000 -0.1488 +vn -0.0054 0.0000 -1.0000 +vn 0.0445 0.0000 -0.9990 +vn 0.0446 0.0000 -0.9990 +vn 0.0102 0.0000 0.9999 +vn 0.0058 0.8214 0.5703 +vn 0.0340 0.6479 -0.7610 +vn 0.9641 0.2647 0.0225 +vn 0.0337 0.6475 -0.7613 +vn 0.0312 0.6466 -0.7622 +vn -0.0122 0.4212 -0.9069 +vn 0.0122 0.4210 0.9070 +vn 0.9999 0.0000 -0.0160 +vn 0.9999 0.0000 -0.0172 +vn 0.0315 0.4103 -0.9114 +vn -0.6595 0.2963 -0.6908 +vn 0.0100 0.0000 0.9999 +vn 0.9920 0.0000 0.1263 +vn -0.6909 0.2964 0.6594 +vn -0.6909 0.2965 0.6594 +vn -0.0313 0.4214 0.9063 +vn 0.0234 -0.0001 -0.9997 +vn -0.6601 0.4101 0.6294 +vn 0.6601 0.4101 -0.6294 +vn -0.9997 -0.0001 -0.0233 +vn -0.6903 0.0000 -0.7235 +vn 0.0313 0.4212 -0.9064 +vn 0.6593 0.2962 0.6910 +vn 0.6593 0.2963 0.6910 +vn -0.0217 0.2965 0.9548 +vn -0.7230 -0.0000 0.6909 +vn 0.0000 0.9806 -0.1961 +vn 0.9997 0.0001 0.0234 +vn 0.6904 0.0000 0.7234 +vn -0.6904 0.0000 -0.7234 +vn -0.6657 0.2648 -0.6977 +vn -0.6657 0.2647 -0.6977 +vn 0.0144 0.0000 0.9999 +vn 0.0145 0.0000 0.9999 +vn -0.7233 -0.0001 0.6905 +vn 0.6904 -0.0000 0.7235 +vn -0.0028 0.8477 -0.5305 +vn -0.0038 0.8473 -0.5312 +vn -0.0227 0.2965 0.9548 +vn -0.9999 0.0000 0.0117 +vn -0.0075 -0.0002 -1.0000 +vn 0.0412 0.0000 -0.9992 +vn 0.0391 0.0000 -0.9992 +vn 0.9990 0.0000 0.0450 +vn -0.0043 0.8354 -0.5497 +vn -0.0055 0.0000 -1.0000 +vn -0.0030 0.8359 -0.5489 +vn -0.0008 0.5158 -0.8567 +vn 0.0110 0.0000 0.9999 +vn 0.0059 0.8234 0.5675 +vn -0.9997 0.0000 0.0230 +vn -1.0000 0.0000 0.0081 +vn 0.0060 0.8233 0.5676 +vn 0.0321 0.5940 -0.8038 +vn 0.0322 0.5940 -0.8038 +vn 0.8012 0.5973 0.0361 +vn -0.0008 0.5183 -0.8552 +vn -0.9999 0.0000 0.0123 +vn -0.0209 0.5162 -0.8562 +vn -1.0000 0.0000 0.0094 +vn -0.7002 0.7139 0.0079 +vn -0.6965 0.7175 -0.0038 +vn -0.9999 0.0001 0.0113 +vn 0.9998 0.0000 -0.0194 +vn 0.0061 0.8246 0.5657 +vn 0.0108 -0.0006 0.9999 +vn 0.0058 0.8247 0.5656 +vn -0.0109 0.0487 -0.9988 +vn -0.0155 0.0000 0.9999 +vn -0.0164 0.0488 0.9987 +vn -0.9962 0.0860 0.0118 +vn -0.9999 0.0000 0.0128 +vn -0.9999 -0.0000 0.0124 +vn -0.9962 0.0859 0.0123 +vn -0.0155 0.0486 0.9987 +vn -0.0134 0.0485 -0.9987 +vn 0.9998 0.0000 -0.0176 +vn 0.0063 0.8207 0.5714 +vn 0.0101 0.0000 0.9999 +vn -0.0134 -0.0000 -0.9999 +vn 0.0057 0.8222 0.5691 +vn 0.0062 0.8220 0.5694 +vn 0.0058 0.8209 0.5711 +vn -0.9997 0.0000 0.0264 +vn 0.0111 0.0000 0.9999 +vn -0.9962 0.0866 0.0124 +vn -0.0134 0.0464 -0.9988 +vn -0.0075 0.0468 -0.9989 +vn 0.0022 0.0477 0.9989 +vn 0.0081 0.0468 0.9989 +vn -0.9962 0.0865 0.0131 +vn -0.9999 0.0000 0.0132 +vn 0.0081 0.0000 1.0000 +vn 0.8555 0.5174 0.0225 +vn 0.8573 0.5140 0.0282 +vn 0.8563 0.5160 0.0229 +vn 0.8552 0.5181 0.0164 +vn 0.8585 0.5124 0.0189 +vn 0.8579 0.5129 0.0310 +vn -0.0074 0.0000 1.0000 +vn 0.0156 0.5337 0.8456 +vn 0.0344 -0.0001 -0.9994 +vn 0.9993 0.0000 0.0361 +vn -0.0182 0.6211 0.7835 +vn 0.0000 -1.0000 0.0000 +vn 0.0353 0.0000 -0.9994 +vn -0.0234 0.0000 0.9997 +vn -0.0232 -0.0005 0.9997 +vn 0.0185 0.0000 0.9998 +vn -0.9999 0.0000 0.0133 +vn 0.9997 0.0000 -0.0258 +vn 0.0060 0.8202 0.5721 +vn -0.0072 0.0000 -1.0000 +vn -0.0037 0.7117 -0.7025 +vn 0.9997 0.0000 -0.0242 +vn 0.0104 0.0000 0.9999 +vn -0.0051 0.7174 -0.6967 +vn -0.0036 0.7190 -0.6950 +vn 0.0184 0.6293 -0.7769 +vn 0.5621 0.6294 -0.5366 +vn 0.4156 0.7987 0.4352 +vn 0.7769 0.6294 0.0182 +vn 0.7770 0.6293 0.0183 +vn 0.5622 0.6293 -0.5366 +vn -0.5366 0.6293 -0.5621 +vn -0.5366 0.6293 -0.5622 +vn -0.0183 0.6293 0.7769 +vn -0.6235 0.4299 -0.6530 +vn -0.6235 0.4297 -0.6531 +vn -0.5620 0.6293 0.5367 +vn -0.7769 0.6293 -0.0184 +vn 0.9022 0.4307 0.0209 +vn 0.5367 0.6293 0.5620 +vn 0.6533 0.4300 -0.6232 +vn 0.6528 0.4308 -0.6231 +vn 0.0214 0.4299 -0.9026 +vn -0.6529 0.4299 0.6236 +vn 0.6233 0.4300 0.6532 +vn 0.6233 0.4308 0.6526 +vn -0.9027 0.4297 -0.0215 +vn 0.0211 0.4308 -0.9022 +vn 0.9026 0.4299 0.0212 +vn -0.9026 0.4299 -0.0214 +vn 0.9768 0.2130 0.0231 +vn -0.0213 0.4297 0.9027 +vn 0.9765 0.2143 0.0226 +vn -0.6530 0.4297 0.6236 +vn -0.0212 0.4300 0.9026 +vn -0.7063 0.2142 0.6747 +vn 0.0232 0.2130 -0.9768 +vn -0.9766 0.2137 -0.0232 +vn 0.6746 0.2129 0.7068 +vn 0.7070 0.2129 -0.6744 +vn 0.7065 0.2142 -0.6746 +vn -0.6746 0.2142 -0.7065 +vn -0.9765 0.2142 -0.0231 +vn 0.0228 0.2142 -0.9765 +vn 0.6746 0.2137 0.7066 +vn -0.0231 0.2130 0.9768 +vn -0.7068 0.2130 0.6746 +vn -0.6745 0.2142 -0.7065 +vn -0.0227 0.2142 0.9765 +vn 0.9997 0.0000 0.0236 +vn 0.6906 0.0000 0.7233 +vn -0.9997 0.0000 -0.0236 +vn 0.0094 0.5161 0.8565 +vn -0.0056 0.5147 -0.8574 +vn 0.0238 0.0000 -0.9997 +vn -0.0067 0.5168 -0.8561 +vn -0.0064 0.5197 -0.8544 +vn -0.0077 0.0000 -1.0000 +vn -0.6906 0.0000 -0.7233 +vn 0.0094 0.5164 0.8563 +vn 0.7233 0.0000 -0.6906 +vn 0.0095 0.5162 0.8564 +vn 0.0094 0.5163 0.8564 +vn 0.0079 0.5183 0.8552 +vn 0.0095 0.5193 0.8546 +vn 0.0093 0.5192 0.8546 +vn 0.0067 0.5191 0.8547 +vn 0.0079 0.5191 0.8547 +vn 0.0092 0.5186 0.8549 +vn 0.0094 0.5127 0.8585 +vn 0.0090 0.0000 1.0000 +vn 0.9997 0.0000 -0.0252 +vn 0.0084 0.0000 1.0000 +vn -1.0000 0.0000 0.0096 +vn -1.0000 -0.0000 0.0097 +vn 0.9995 0.0000 -0.0316 +vn -0.9996 0.0000 0.0274 +vn 0.0032 0.0000 -1.0000 +vn -0.9810 0.0000 0.1941 +vn -0.0160 0.0000 0.9999 +vn -0.1388 0.0000 -0.9903 +vn -0.0315 0.4101 0.9115 +vn 0.0255 0.0000 0.9997 +vn -0.6174 0.0000 -0.7866 +vn -0.0046 0.0000 -1.0000 +vn -0.0042 0.8336 -0.5523 +vn 0.9048 0.4243 0.0358 +vn -0.0025 0.8343 -0.5513 +vn -0.0051 0.7102 -0.7040 +vn -0.6294 0.4101 -0.6601 +vn 0.6294 0.4100 0.6601 +vn -0.0044 0.8371 -0.5470 +vn -0.0031 0.8376 -0.5462 +vn -0.0322 0.0000 0.9995 +vn 0.9993 0.0000 0.0383 +vn 0.0073 0.6909 0.7229 +vn 0.0372 0.0000 -0.9993 +vn -0.0057 0.0000 -1.0000 +vn 0.7154 0.6982 0.0274 +vn 0.7089 0.7041 0.0412 +vn 0.0101 -0.0007 0.9999 +vn -0.9997 0.0000 0.0259 +vn -0.9996 0.0000 0.0278 +vn -0.0051 0.0000 -1.0000 +vn -0.0052 0.7124 -0.7017 +vn 0.0073 0.6934 0.7205 +vn -0.0036 0.7141 -0.7000 +vn 0.9998 0.0000 -0.0219 +vn 1.0000 0.0000 0.0059 +vn -0.0074 0.0000 -1.0000 +vn 0.0158 0.5336 0.8456 +vn -0.9998 0.0000 0.0176 +vn 0.0187 0.0000 0.9998 +vn 0.0057 0.4111 -0.9116 +vn 0.8489 0.5286 0.0050 +vn -0.0123 0.5265 -0.8501 +vn -0.0062 -0.0000 1.0000 +vn -0.0063 0.0000 1.0000 +vn 0.0188 0.0000 0.9998 +vn 0.9999 -0.0002 -0.0160 +vn 0.0149 0.6247 0.7807 +vn -0.7958 0.6054 0.0127 +vn 0.0064 0.8193 0.5734 +vn 0.0109 0.0000 0.9999 +vn 0.0112 0.0000 0.9999 +vn 0.0108 0.0000 0.9999 +vn 0.0127 -0.0007 0.9999 +vn -0.9997 0.0000 0.0225 +vn -0.9997 0.0000 0.0233 +vn 1.0000 0.0000 -0.0084 +vn -0.0030 0.8394 -0.5435 +vn -0.0053 0.7268 -0.6869 +vn 1.0000 0.0000 0.0046 +vn 0.0059 0.8241 0.5665 +vn -0.0076 0.0000 -1.0000 +vn 0.0062 0.8239 0.5667 +vn 0.0079 0.6970 0.7170 +vn 0.0194 0.6007 -0.7993 +vn 0.0305 0.6210 -0.7832 +vn 0.9999 0.0000 -0.0159 +vn 0.9992 0.0000 0.0395 +vn 0.9992 0.0000 0.0396 +vn 0.0389 0.0000 -0.9992 +vn 0.0149 0.0000 -0.9999 +vn -0.0250 0.0000 0.9997 +vn 0.9993 0.0000 0.0369 +vn 0.6955 0.7181 0.0257 +vn 0.6833 0.7302 -0.0029 +vn 0.5723 0.0389 -0.8191 +vn 0.6930 0.0000 -0.7210 +vn 0.0236 0.0000 -0.9997 +vn 0.0239 0.0000 -0.9997 +vn -0.0029 0.8460 -0.5331 +vn 0.9997 0.0000 0.0229 +vn 0.9994 0.0018 0.0349 +vn -0.0042 0.8456 -0.5339 +vn -0.0041 0.8423 -0.5390 +vn -0.0027 0.8428 -0.5382 +vn -0.0036 0.7285 -0.6851 +vn 0.0139 0.0512 0.9986 +vn -0.9999 0.0000 0.0135 +vn -0.0210 0.4259 -0.9045 +vn -0.9961 0.0868 0.0129 +vn -0.0139 0.0000 -0.9999 +vn 0.0354 0.4536 -0.8905 +vn 0.0139 0.0000 0.9999 +vn -0.9999 0.0000 0.0112 +vn 0.0169 0.0507 0.9986 +vn -0.9961 0.0868 0.0134 +vn -0.0169 0.0512 -0.9985 +vn 0.0397 0.0000 -0.9992 +vn -0.0139 0.0513 -0.9986 +vn -0.0232 0.0000 -0.9997 +vn 0.0409 0.0000 -0.9992 +vn 0.0025 0.0000 -1.0000 +vn 1.0000 0.0000 0.0055 +vn 0.0040 0.0000 1.0000 +vn -0.0036 0.7214 -0.6925 +vn 0.9999 0.0000 -0.0115 +vn -0.0075 0.0000 -1.0000 +vn -0.0073 0.0000 -1.0000 +vn -0.0052 0.7197 -0.6943 +vn -0.9999 0.0000 0.0120 +vn -0.9995 0.0000 0.0315 +vn -1.0000 0.0000 0.0086 +vn 0.0058 0.8228 0.5683 +vn 0.0062 0.8226 0.5685 +vn 0.0058 0.8187 0.5742 +vn 0.0063 0.8185 0.5745 +vn 1.0000 0.0000 -0.0037 +vn 0.9995 0.0000 -0.0324 +vn -0.6760 0.4100 0.6123 +vn -0.0049 0.0000 -1.0000 +vn -0.0034 0.7165 -0.6975 +vn 0.9995 0.0000 -0.0308 +vn -0.0028 0.8410 -0.5410 +vn -0.0041 0.8406 -0.5417 +vn -1.0000 0.0000 0.0059 +vn -0.0051 0.7149 -0.6992 +vn -0.0051 0.7246 -0.6892 +vn -0.9997 0.0000 0.0241 +vn 0.0058 0.8195 0.5730 +vn -0.0035 0.7260 -0.6876 +vn -0.0014 0.0000 -1.0000 +vn -0.0158 0.0000 0.9999 +vn -0.9999 0.0001 0.0120 +vn -0.9999 0.0001 0.0126 +vn -0.9999 0.0000 0.0126 +vn -0.9962 0.0841 -0.0232 +vn 0.0233 -0.0000 -0.9997 +vn 0.7393 0.6721 0.0420 +vn 0.9984 0.0000 0.0567 +vn 0.0375 0.0000 -0.9993 +vn 0.9962 0.0841 0.0234 +vn 0.9548 0.2962 0.0225 +vn -0.0037 0.7093 -0.7049 +vn 0.9997 0.0000 0.0234 +vn 0.9999 0.0000 -0.0123 +vn -0.0054 0.7074 -0.7068 +vn -0.9994 0.0000 0.0345 +vn 0.7900 0.6124 0.0313 +vn 0.5363 0.4945 -0.6840 +vn 0.5352 0.4939 -0.6852 +vn 0.0073 0.6969 0.7172 +vn -0.6550 0.4212 0.6273 +vn 0.6635 0.0000 0.7481 +vn 0.6550 0.4214 -0.6272 +vn -0.7066 0.0000 0.7076 +vn 0.0080 0.6952 0.7188 +vn 0.9996 0.0000 -0.0285 +vn 0.0080 0.6962 0.7178 +vn -0.7058 -0.0000 -0.7084 +vn 0.0073 0.6960 0.7181 +vn 0.6632 0.0000 0.7484 +vn 0.6024 0.7980 0.0143 +vn 0.6014 0.7988 0.0138 +vn -0.7770 0.6293 -0.0180 +vn 0.0183 0.6285 -0.7776 +vn 0.7770 0.6292 0.0179 +vn 0.0180 0.6291 -0.7771 +vn 0.0139 0.7989 -0.6013 +vn -0.0233 0.0000 0.9997 +vn -0.7776 0.6285 -0.0185 +vn 0.4152 0.7989 0.4352 +vn -0.5623 0.6290 0.5368 +vn -0.6015 0.7987 -0.0140 +vn -0.6021 0.7983 -0.0143 +vn -0.4358 0.7982 0.4158 +vn 0.4354 0.7988 -0.4151 +vn 0.7769 0.6294 0.0178 +vn -0.4152 0.7988 -0.4354 +vn 0.5621 0.6293 -0.5366 +vn -0.4159 0.7983 -0.4357 +vn 0.4164 0.7980 0.4357 +vn -0.5367 0.6286 -0.5628 +vn 0.5630 0.6284 -0.5368 +vn 0.0140 0.7987 -0.6015 +vn 0.4356 0.7985 -0.4156 +vn -0.4352 0.7987 0.4156 +vn 0.9026 0.4300 0.0208 +vn 0.0209 0.4307 -0.9022 +vn 0.0212 0.4299 -0.9026 +vn 0.5364 0.6292 0.5624 +vn 0.6233 0.4300 0.6531 +vn 0.9765 0.2141 0.0227 +vn -0.6530 0.4299 0.6235 +vn 0.6233 0.4297 0.6533 +vn -0.0212 0.4299 0.9026 +vn -0.6232 0.4296 -0.6535 +vn 0.9028 0.4297 0.0209 +vn -0.9027 0.4297 -0.0211 +vn -0.9026 0.4300 -0.0210 +vn -0.6532 0.4297 0.6235 +vn 0.5364 0.6294 0.5623 +vn -0.6232 0.4300 -0.6533 +vn -0.6742 0.2142 -0.7068 +vn -0.9765 0.2142 -0.0227 +vn 0.6743 0.2137 0.7068 +vn -0.9766 0.2137 -0.0228 +vn 0.0226 0.2143 -0.9765 +vn -0.7069 0.2130 0.6744 +vn 0.0231 0.2130 -0.9768 +vn -0.6743 0.2143 -0.7067 +vn 0.6744 0.2142 0.7067 +vn -0.7065 0.2142 0.6745 +vn 0.9998 0.0000 0.0215 +vn 0.6903 0.0000 0.7235 +vn -0.0053 0.0000 -1.0000 +vn -0.0052 0.7222 -0.6917 +vn -0.9999 0.0000 0.0147 +vn -0.0037 0.7237 -0.6901 +vn 0.9999 0.0000 -0.0155 +vn -0.0236 -0.0002 0.9997 +vn 0.9121 0.4100 0.0019 +vn -0.9121 0.4100 -0.0019 +vn -0.0040 0.8439 -0.5364 +vn -0.0027 0.8445 -0.5355 +vn -0.0050 0.0000 -1.0000 +vn 0.0067 0.0000 -1.0000 +vn 0.9997 0.0000 0.0231 +vn 0.0134 0.0512 0.9986 +vn -0.9961 0.0876 0.0126 +vn 0.0308 0.0486 0.9983 +vn -0.9961 0.0876 0.0129 +vn 0.0023 0.0525 -0.9986 +vn -0.0172 0.0512 -0.9985 +vn 0.0134 0.0000 0.9999 +vn -0.9999 0.0000 0.0127 +vn -0.0211 0.1126 0.9934 +vn 0.0023 0.0000 -1.0000 +vn 0.7181 0.1124 -0.6868 +vn -0.6868 0.1124 -0.7181 +vn 0.9934 0.1124 0.0243 +vn 0.0244 0.1124 -0.9934 +vn -0.9934 0.1124 -0.0243 +vn -0.7203 0.1126 0.6845 +vn 0.2835 0.9198 -0.2712 +vn -0.2847 0.9196 0.2706 +vn -0.2834 0.9200 0.2705 +vn -0.3919 0.9200 -0.0096 +vn 0.6868 0.1124 0.7181 +vn 0.2845 0.9195 -0.2712 +vn 0.3925 0.9197 0.0089 +vn -0.2706 0.9199 -0.2838 +vn 0.6163 0.7874 0.0140 +vn 0.3932 0.9194 0.0096 +vn 0.4468 0.7868 -0.4259 +vn 0.0096 0.9195 -0.3929 +vn -0.0083 0.9200 0.3918 +vn -0.2705 0.9202 -0.2829 +vn -0.3915 0.9202 -0.0092 +vn 0.2712 0.9198 0.2835 +vn 0.6170 0.7868 0.0145 +vn 0.4460 0.7873 -0.4258 +vn 0.0092 0.9197 -0.3924 +vn 0.2712 0.9196 0.2841 +vn -0.0089 0.9197 0.3925 +vn 0.0145 0.7869 -0.6170 +vn -0.4268 0.7858 -0.4477 +vn -0.4266 0.7863 -0.4469 +vn 0.0145 0.7869 -0.6169 +vn -0.5745 0.6081 0.5478 +vn 0.4261 0.7868 0.4464 +vn -0.0187 0.6080 0.7937 +vn 0.9157 0.4013 0.0210 +vn 0.5478 0.6081 0.5745 +vn -0.5477 0.6090 -0.5737 +vn -0.7937 0.6080 -0.0187 +vn 0.0190 0.6075 -0.7941 +vn -0.6182 0.7859 -0.0145 +vn 0.0187 0.6080 -0.7937 +vn -0.5737 0.6090 0.5477 +vn -0.0182 0.6089 0.7930 +vn -0.5478 0.6081 -0.5745 +vn -0.0141 0.7864 0.6176 +vn 0.7930 0.6090 0.0182 +vn 0.4261 0.7869 0.4464 +vn -0.4473 0.7859 0.4270 +vn -0.0145 0.7859 0.6182 +vn 0.5746 0.6074 -0.5485 +vn 0.5477 0.6090 0.5737 +vn 0.9159 0.4008 0.0212 +vn 0.5741 0.6080 -0.5484 +vn -0.7930 0.6089 -0.0182 +vn 0.7937 0.6081 0.0187 +vn -0.4474 0.7858 0.4270 +vn 0.9840 0.1767 0.0228 +vn -0.7121 0.1774 0.6793 +vn 0.0219 0.4012 -0.9157 +vn -0.6322 0.4013 -0.6628 +vn 0.6322 0.4008 0.6631 +vn 0.0229 0.1750 -0.9843 +vn -0.9159 0.4008 -0.0212 +vn -0.6792 0.1768 -0.7123 +vn 0.6628 0.4013 -0.6322 +vn -0.6793 0.1773 -0.7121 +vn 0.6322 0.4013 0.6627 +vn -0.6631 0.4008 0.6322 +vn 0.9843 0.1751 0.0234 +vn -0.6322 0.4008 -0.6630 +vn -0.0212 0.4008 0.9159 +vn -0.9157 0.4013 -0.0210 +vn -0.0210 0.4014 0.9157 +vn 0.7124 0.1750 -0.6796 +vn -0.9838 0.1777 -0.0228 +vn 0.6617 0.4030 -0.6322 +vn 0.7123 0.1753 -0.6796 +vn -0.9839 0.1774 -0.0229 +vn 0.0228 0.1753 -0.9842 +vn -0.7120 0.1777 0.6793 +vn 0.0212 0.4029 -0.9150 +vn -0.6628 0.4013 0.6322 +vn 0.6799 0.1777 0.7114 +vn 0.9997 0.0000 0.0237 +vn 0.6909 0.0000 0.7229 +vn -0.0140 0.7985 0.6019 +vn 0.6796 0.1750 0.7124 +vn -0.0228 0.1777 0.9838 +vn -0.6901 0.0000 -0.7237 +vn -0.0229 0.1774 0.9839 +vn 0.0224 0.2965 -0.9548 +vn 0.7235 -0.0001 -0.6904 +vn 0.0006 0.4100 -0.9121 +vn 0.9064 0.4214 0.0277 +vn -0.7233 0.0000 0.6905 +vn 0.6446 0.4100 0.6453 +vn 0.0224 0.2964 -0.9548 +vn -0.9065 0.4212 -0.0277 +vn -0.6445 0.4102 -0.6452 +vn 0.7290 0.6840 0.0263 +vn 0.9999 0.0000 -0.0163 +vn 0.6826 0.0000 0.7308 +vn 0.7184 0.6951 0.0256 +vn 0.6289 0.4214 0.6534 +vn 0.6904 0.0001 0.7234 +vn 0.7291 0.6839 0.0258 +vn 0.7301 0.6828 0.0260 +vn -0.6289 0.4212 -0.6535 +vn 1.0000 0.0000 -0.0035 +vn 0.9994 0.0000 0.0353 +vn 0.6931 0.0000 -0.7208 +vn 1.0000 0.0000 -0.0034 +vn -0.5408 -0.0000 0.8411 +vn -0.7181 0.1124 0.6868 +vn 0.9934 0.1124 0.0244 +vn -0.9934 0.1124 -0.0244 +vn 0.6928 0.0000 -0.7212 +vn -0.0376 0.0000 0.9993 +vn -0.0244 0.1124 0.9934 +vn -0.6868 0.1124 -0.7180 +vn 1.0000 0.0000 -0.0042 +vn 0.9994 0.0000 0.0360 +vn 0.7202 0.1126 -0.6845 +vn 0.6869 0.1124 0.7180 +vn 0.3919 0.9200 0.0096 +vn 0.2834 0.9200 -0.2706 +vn 0.3914 0.9202 0.0092 +vn 0.2847 0.9196 -0.2706 +vn 0.0211 0.1126 -0.9934 +vn 0.0090 0.9197 -0.3925 +vn -0.0145 0.7869 0.6170 +vn 0.4473 0.7859 -0.4270 +vn -0.2712 0.9198 -0.2835 +vn -0.2845 0.9195 0.2712 +vn -0.0096 0.9196 0.3928 +vn 0.0083 0.9200 -0.3919 +vn -0.0092 0.9198 0.3924 +vn -0.6170 0.7869 -0.0145 +vn 0.6182 0.7859 0.0145 +vn -0.3925 0.9197 -0.0090 +vn 0.2706 0.9199 0.2838 +vn -0.2712 0.9196 -0.2841 +vn -0.6163 0.7874 -0.0140 +vn -0.3932 0.9194 -0.0097 +vn -0.2835 0.9198 0.2712 +vn 0.2706 0.9202 0.2828 +vn 0.0145 0.7859 -0.6182 +vn -0.4261 0.7869 -0.4464 +vn -0.4460 0.7873 0.4258 +vn -0.4468 0.7868 0.4259 +vn 0.0141 0.7864 -0.6176 +vn -0.0145 0.7868 0.6170 +vn 0.0182 0.6089 -0.7930 +vn 0.6627 0.4013 -0.6322 +vn 0.5478 0.6082 0.5745 +vn 0.5737 0.6090 -0.5477 +vn 0.0212 0.4008 -0.9159 +vn 0.5745 0.6082 -0.5478 +vn 0.7930 0.6089 0.0182 +vn -0.5741 0.6080 0.5485 +vn 0.4266 0.7863 0.4469 +vn -0.5746 0.6074 0.5485 +vn -0.0190 0.6075 0.7941 +vn 0.9157 0.4014 0.0210 +vn 0.4268 0.7858 0.4477 +vn -0.6322 0.4013 -0.6627 +vn 0.0210 0.4014 -0.9157 +vn -0.6322 0.4008 -0.6631 +vn 0.6631 0.4008 -0.6322 +vn -0.0229 0.1750 0.9843 +vn -0.7124 0.1750 0.6796 +vn 0.6792 0.1767 0.7123 +vn -0.7123 0.1753 0.6796 +vn -0.0212 0.4029 0.9150 +vn 0.7121 0.1774 -0.6793 +vn -0.6796 0.1750 -0.7124 +vn -0.6618 0.4030 0.6322 +vn 0.0229 0.1774 -0.9839 +vn -0.6627 0.4013 0.6322 +vn -0.0219 0.4012 0.9157 +vn -0.6799 0.1776 -0.7114 +vn -0.9157 0.4014 -0.0210 +vn 0.9838 0.1777 0.0228 +vn 0.6323 0.4007 0.6631 +vn 0.7120 0.1777 -0.6794 +vn -0.9843 0.1750 -0.0234 +vn 0.0228 0.1777 -0.9838 +vn -0.9840 0.1767 -0.0228 +vn -0.0228 0.1753 0.9842 +vn 0.9839 0.1774 0.0229 +vn 0.6793 0.1774 0.7121 +vn 0.6901 0.0000 0.7237 +vn -0.9997 0.0000 -0.0238 +vn -0.6909 0.0000 -0.7229 +vn 0.9997 0.0000 0.0233 +vn 0.7274 0.6861 0.0088 +vn 0.7277 0.6855 0.0237 +vn 0.7327 0.6804 -0.0120 +vn 0.0086 0.5163 0.8564 +vn 0.7212 0.0841 -0.6876 +vn 0.6907 0.2965 -0.6595 +vn 0.6912 0.2965 -0.6591 +vn 0.9548 0.2963 0.0220 +vn -0.0237 0.0841 0.9962 +vn -0.0227 0.0841 0.9962 +vn -0.9641 0.2647 -0.0225 +vn -0.9640 0.2648 -0.0227 +vn 0.0219 0.2647 -0.9641 +vn 0.7210 0.0841 -0.6878 +vn 0.6657 0.2648 0.6976 +vn 0.6760 0.4102 -0.6122 +vn 0.6659 0.2647 0.6975 +vn -0.0006 0.4100 0.9121 +vn 0.9641 0.2647 0.0224 +vn -0.7205 0.0841 0.6883 +vn -1.0000 0.0005 -0.0055 +vn 0.7273 0.6837 0.0595 +vn 0.7174 0.6955 0.0402 +vn 0.9983 0.0001 0.0574 +vn -0.0325 0.0000 0.9995 +vn 0.9998 -0.0001 0.0221 +vn 0.4159 0.7979 0.4362 +vn 0.6018 0.7986 0.0141 +vn 0.6015 0.7987 0.0140 +vn 0.4353 0.7987 -0.4155 +vn 0.4355 0.7985 -0.4156 +vn 0.0143 0.7980 -0.6024 +vn -0.6025 0.7980 -0.0143 +vn -0.4161 0.7981 -0.4359 +vn -0.4158 0.7986 -0.4351 +vn -0.6024 0.7980 -0.0143 +vn 0.0140 0.7985 -0.6019 +vn -0.4360 0.7980 0.4161 +vn -0.4354 0.7984 0.4159 +vn -0.0141 0.7985 0.6018 +vn -0.0140 0.7987 0.6015 +vn 0.0391 -0.0003 -0.9992 +vn 0.0074 0.6943 0.7197 +vn 0.0079 0.6937 0.7202 +vn 0.0081 0.6926 0.7213 +vn 0.0078 0.6919 0.7220 +vn 0.9998 0.0000 -0.0199 +vn 0.0073 0.6897 0.7240 +vn 0.0080 0.6889 0.7248 +vn -0.9998 0.0000 0.0173 +vn 0.0080 0.6900 0.7237 +vn 1.0000 0.0000 -0.0053 +vn 0.0108 -0.0002 0.9999 +vn 0.0074 0.6975 0.7165 +vn -0.9998 0.0000 0.0209 +vn -0.6810 0.0620 0.7297 +vn 0.0110 -0.0002 0.9999 +vn -0.9997 0.0001 -0.0233 +vn -0.7234 -0.0001 0.6904 +vn 0.0234 0.0000 -0.9997 +vn 0.9994 -0.0001 0.0353 +vn 0.0000 0.9999 -0.0156 +vn -1.0000 0.0022 0.0092 +vn -0.9999 0.0001 0.0129 +vn -0.9999 0.0002 0.0125 +vn -0.9999 0.0001 0.0118 +vn -0.0071 0.0013 -1.0000 +vn -0.0076 -0.0003 -1.0000 +vn -0.0075 0.0002 -1.0000 +vn -0.0077 0.0004 -1.0000 +vn -0.0075 -0.0001 -1.0000 +vn -0.0072 -0.0015 -1.0000 +vn -0.0074 0.0016 -1.0000 +vn -0.0078 -0.0018 -1.0000 +vn -0.0077 -0.0010 -1.0000 +vn -0.0078 0.0027 -1.0000 +vn -0.0074 -0.0011 -1.0000 +vn -0.0080 0.0059 -1.0000 +vn -0.0076 -0.0009 -1.0000 +vn -0.0075 0.0005 -1.0000 +vn -0.0073 -0.0022 -1.0000 +vn -0.0081 0.0078 -0.9999 +vn -0.0073 -0.0033 -1.0000 +vn -0.0179 0.6210 0.7836 +vn 0.0061 -0.9998 -0.0205 +vn -0.0150 -0.9999 0.0001 +vn 0.0071 0.5134 -0.8581 +vn 0.0094 0.5160 0.8565 +vn 0.0092 0.5186 0.8550 +vn -0.7028 -0.0000 -0.7113 +vn -0.6446 -0.0135 -0.7644 +vn 0.9999 -0.0001 -0.0161 +vn 0.0146 0.6252 0.7803 +vn -0.0351 -0.0000 0.9994 +vn 0.9967 0.0000 0.0815 +vn -0.9999 -0.0001 0.0115 +vn -0.0233 0.0000 -0.9997 +vn -0.9999 0.0001 0.0119 +vn -0.9999 0.0000 0.0125 +vn 0.0105 0.0054 0.9999 +vn 0.0111 -0.0007 0.9999 +vn 0.0107 0.0009 0.9999 +vn 0.0110 0.0002 0.9999 +vn 0.0110 0.0001 0.9999 +vn -0.7061 -0.0000 0.7081 +vn 0.7169 0.6947 0.0587 +vn -0.0141 0.7983 0.6021 +vn 0.7688 0.6389 0.0273 +vn 0.7509 0.6582 0.0542 +vn 0.7168 0.6946 0.0609 +vn 0.7184 0.6951 0.0265 +vn -0.5412 0.0000 0.8409 +vn 0.7277 0.6859 -0.0012 +vn 0.7272 0.6838 0.0599 +vn 0.9994 0.0001 0.0355 +vn 0.9984 0.0000 0.0564 +vn 0.0108 -0.0013 0.9999 +vn 0.0109 -0.0003 0.9999 +vn 0.0110 0.0004 0.9999 +vn 0.0112 0.0011 0.9999 +vn -0.0064 0.5162 -0.8565 +vn 0.0111 -0.0006 0.9999 +vn 0.0105 0.0000 0.9999 +vn 0.0109 0.0003 0.9999 +vn 0.0000 0.0000 1.0000 +vn -0.0200 0.5165 -0.8561 +vn 0.0101 0.5159 0.8566 +vn 0.0094 0.5165 0.8562 +vn 0.0096 0.5162 0.8564 +vn 0.0000 -1.0000 -0.0016 +vn 0.8180 0.5749 0.0188 +vn -0.0079 0.5192 -0.8546 +vn -0.0352 0.0000 0.9994 +vn 0.7184 0.6951 0.0263 +vn -0.0063 0.5159 -0.8566 +vn -0.0065 0.5165 -0.8563 +usemtl None +s off +f 135/1/1 2/2/1 4/3/1 +f 185/4/2 1/5/2 3/6/2 +f 5/7/3 6/8/3 7/9/3 +f 8/10/4 9/11/4 7/9/4 +f 10/12/5 4/3/5 13/13/5 +f 453/14/6 404/15/6 454/16/6 +f 17/17/4 9/11/4 8/10/4 +f 11/18/7 12/19/7 17/17/7 +f 1/5/5 13/13/5 4/3/5 +f 20/20/8 19/21/8 21/22/8 +f 22/23/8 21/22/8 19/21/8 +f 8/10/3 7/9/3 6/8/3 +f 235/24/9 586/25/9 498/26/9 +f 19/21/10 170/27/10 27/28/10 +f 31/29/11 19/21/11 535/30/11 +f 32/31/12 535/30/12 19/21/12 +f 45/32/13 423/33/13 44/34/13 +f 32/31/14 19/21/14 36/35/14 +f 26/36/14 36/35/14 19/21/14 +f 174/37/15 22/23/15 19/21/15 +f 31/29/16 174/37/16 19/21/16 +f 39/38/17 40/39/17 397/40/17 +f 18/41/18 41/42/18 19/21/18 +f 28/43/18 19/21/18 41/42/18 +f 46/44/19 45/32/19 44/34/19 +f 47/45/19 46/44/19 44/34/19 +f 43/46/20 48/47/20 55/48/20 +f 585/49/21 49/50/21 43/46/21 +f 52/51/21 53/52/21 50/53/21 +f 30/54/22 33/55/22 29/56/22 +f 520/57/23 72/58/23 66/59/23 +f 577/60/24 107/61/24 63/62/24 +f 287/63/25 57/64/25 42/65/25 +f 68/66/22 29/56/22 33/55/22 +f 69/67/26 70/68/26 71/69/26 +f 70/68/27 72/58/27 71/69/27 +f 125/70/28 60/71/28 124/72/28 +f 124/72/29 66/59/29 167/73/29 +f 46/44/30 74/74/30 75/75/30 +f 35/76/30 75/75/30 74/74/30 +f 726/77/31 529/78/31 78/79/31 +f 79/80/32 78/79/32 529/78/32 +f 75/75/33 35/76/33 34/81/33 +f 83/82/34 84/83/34 85/84/34 +f 86/85/35 76/86/35 87/87/35 +f 73/88/36 76/86/36 80/89/36 +f 397/40/8 107/61/8 39/38/8 +f 77/90/37 86/85/37 87/87/37 +f 89/91/38 88/92/38 728/93/38 +f 93/94/39 92/95/39 91/96/39 +f 85/84/40 84/83/40 94/97/40 +f 85/84/41 94/97/41 83/82/41 +f 97/98/42 98/99/42 93/94/42 +f 40/39/43 90/100/43 88/92/43 +f 91/96/42 99/101/42 93/94/42 +f 97/98/42 93/94/42 99/101/42 +f 101/102/44 102/103/44 9/11/44 +f 5/7/44 9/11/44 102/103/44 +f 7/9/45 9/11/45 5/7/45 +f 100/104/46 72/58/46 89/91/46 +f 17/17/7 12/19/7 9/11/7 +f 24/105/7 9/11/7 12/19/7 +f 103/106/47 71/69/47 72/58/47 +f 61/107/48 59/108/48 60/71/48 +f 71/69/49 38/109/49 69/67/49 +f 104/110/50 105/111/50 106/112/50 +f 62/113/51 107/61/51 577/60/51 +f 577/60/52 59/108/52 62/113/52 +f 104/110/53 106/112/53 108/114/53 +f 173/115/54 107/61/54 82/116/54 +f 103/106/55 521/117/55 107/61/55 +f 67/118/18 107/61/18 521/117/18 +f 67/118/56 653/119/56 107/61/56 +f 109/120/57 107/61/57 653/119/57 +f 82/116/58 107/61/58 112/121/58 +f 62/113/58 112/121/58 107/61/58 +f 69/67/59 38/109/59 397/40/59 +f 652/122/60 60/71/60 63/62/60 +f 103/106/61 107/61/61 71/69/61 +f 38/109/61 71/69/61 107/61/61 +f 115/123/43 116/124/43 114/125/43 +f 188/126/62 274/127/62 271/128/62 +f 31/29/63 535/30/63 113/129/63 +f 534/130/64 122/131/64 113/129/64 +f 33/55/65 37/132/65 68/66/65 +f 174/37/66 31/29/66 113/129/66 +f 22/23/67 174/37/67 115/123/67 +f 61/107/28 60/71/28 125/70/28 +f 580/133/48 60/71/48 59/108/48 +f 47/45/68 52/51/68 74/74/68 +f 35/76/68 74/74/68 52/51/68 +f 109/120/69 124/72/69 652/122/69 +f 107/61/70 652/122/70 63/62/70 +f 131/134/71 128/135/71 126/136/71 +f 128/135/42 131/134/42 132/137/42 +f 133/138/72 134/139/72 135/1/72 +f 128/135/42 132/137/42 129/140/42 +f 133/138/73 135/1/73 136/141/73 +f 128/135/74 153/142/74 126/136/74 +f 138/143/5 136/141/5 10/12/5 +f 2/2/75 3/6/75 1/5/75 +f 35/76/76 137/144/76 34/81/76 +f 134/139/1 2/2/1 135/1/1 +f 2/2/77 1/5/77 4/3/77 +f 133/138/78 136/141/78 138/143/78 +f 4/3/5 10/12/5 136/141/5 +f 135/1/5 4/3/5 136/141/5 +f 133/138/78 138/143/78 140/145/78 +f 141/146/79 41/42/79 142/147/79 +f 83/82/80 142/147/80 41/42/80 +f 143/148/81 144/149/81 145/150/81 +f 146/151/82 143/148/82 147/152/82 +f 148/153/83 144/149/83 146/151/83 +f 146/151/84 144/149/84 143/148/84 +f 153/142/85 152/154/85 151/155/85 +f 157/156/86 158/157/86 159/158/86 +f 160/159/87 161/160/87 147/152/87 +f 146/151/88 147/152/88 161/160/88 +f 160/159/89 143/148/89 162/161/89 +f 163/162/90 162/161/90 143/148/90 +f 145/150/90 163/162/90 143/148/90 +f 160/159/87 147/152/87 143/148/87 +f 129/140/91 164/163/91 128/135/91 +f 153/142/91 128/135/91 164/163/91 +f 154/164/91 129/140/91 149/165/91 +f 154/164/91 164/163/91 129/140/91 +f 153/142/92 164/163/92 152/154/92 +f 155/166/88 156/167/88 161/160/88 +f 146/151/88 161/160/88 156/167/88 +f 163/162/93 168/168/93 33/55/93 +f 165/169/93 33/55/93 168/168/93 +f 109/120/94 653/119/94 124/72/94 +f 165/169/95 169/170/95 33/55/95 +f 169/170/96 37/132/96 33/55/96 +f 125/70/29 124/72/29 167/73/29 +f 81/171/43 90/100/43 40/39/43 +f 33/55/90 30/54/90 163/162/90 +f 170/27/97 171/172/97 77/90/97 +f 171/172/98 170/27/98 141/146/98 +f 162/161/90 163/162/90 30/54/90 +f 169/170/99 144/149/99 360/173/99 +f 168/168/100 163/162/100 145/150/100 +f 165/169/100 168/168/100 144/149/100 +f 145/150/100 144/149/100 168/168/100 +f 172/174/101 173/115/101 81/171/101 +f 32/31/102 122/131/102 535/30/102 +f 99/101/103 91/96/103 111/175/103 +f 111/175/104 110/176/104 106/112/104 +f 111/175/103 105/111/103 99/101/103 +f 99/101/103 105/111/103 97/98/103 +f 104/110/103 97/98/103 105/111/103 +f 111/175/104 106/112/104 105/111/104 +f 21/22/105 22/23/105 115/123/105 +f 20/20/106 21/22/106 94/97/106 +f 115/123/107 174/37/107 175/177/107 +f 122/131/108 655/178/108 76/86/108 +f 81/171/109 112/121/109 176/179/109 +f 59/108/110 176/179/110 112/121/110 +f 81/171/111 40/39/111 172/174/111 +f 81/171/112 176/179/112 59/108/112 +f 113/129/113 175/177/113 174/37/113 +f 28/43/114 41/42/114 141/146/114 +f 83/82/115 41/42/115 18/41/115 +f 18/41/116 84/83/116 83/82/116 +f 44/34/117 423/33/117 724/180/117 +f 495/181/21 116/124/21 507/182/21 +f 177/183/118 114/125/118 727/184/118 +f 141/146/119 77/90/119 171/172/119 +f 180/185/120 178/186/120 141/146/120 +f 179/187/120 141/146/120 178/186/120 +f 116/124/121 113/129/121 117/188/121 +f 112/121/122 81/171/122 82/116/122 +f 62/113/123 59/108/123 112/121/123 +f 181/189/124 46/44/124 123/190/124 +f 75/75/125 123/190/125 46/44/125 +f 507/182/21 116/124/21 117/188/21 +f 69/67/126 396/191/126 40/39/126 +f 81/171/112 64/192/112 90/100/112 +f 100/104/127 182/193/127 66/59/127 +f 167/73/127 66/59/127 182/193/127 +f 183/194/128 184/195/128 185/4/128 +f 69/67/46 89/91/46 72/58/46 +f 189/196/5 190/197/5 185/4/5 +f 184/195/5 189/196/5 185/4/5 +f 13/13/5 1/5/5 190/197/5 +f 185/4/5 190/197/5 1/5/5 +f 183/194/129 187/198/129 184/195/129 +f 84/83/130 20/20/130 94/97/130 +f 507/182/131 235/24/131 495/181/131 +f 183/194/2 185/4/2 3/6/2 +f 180/185/41 83/82/41 177/183/41 +f 522/199/132 483/200/132 361/201/132 +f 192/202/133 193/203/133 194/204/133 +f 130/205/134 191/206/134 139/207/134 +f 139/207/134 191/206/134 192/202/134 +f 193/203/135 12/19/135 11/18/135 +f 11/18/135 194/204/135 193/203/135 +f 198/208/136 199/209/136 200/210/136 +f 139/207/133 192/202/133 194/204/133 +f 203/211/137 204/212/137 205/213/137 +f 206/214/137 205/213/137 204/212/137 +f 198/208/138 200/210/138 206/214/138 +f 207/215/137 205/213/137 206/214/137 +f 200/210/137 207/215/137 206/214/137 +f 208/216/139 196/217/139 197/218/139 +f 110/176/104 210/219/104 106/112/104 +f 216/220/140 214/221/140 213/222/140 +f 219/223/141 220/224/141 221/225/141 +f 441/226/142 444/227/142 440/228/142 +f 219/223/143 215/229/143 218/230/143 +f 219/223/144 221/225/144 214/221/144 +f 219/223/143 214/221/143 215/229/143 +f 220/224/42 219/223/42 218/230/42 +f 217/231/42 222/232/42 218/230/42 +f 220/224/42 218/230/42 222/232/42 +f 263/233/91 227/234/91 225/235/91 +f 229/236/145 192/202/145 230/237/145 +f 191/206/145 230/237/145 192/202/145 +f 192/202/146 229/236/146 193/203/146 +f 12/19/147 193/203/147 229/236/147 +f 231/238/148 208/216/148 232/239/148 +f 197/218/148 232/239/148 208/216/148 +f 119/240/21 195/241/21 64/192/21 +f 188/126/149 383/242/149 195/241/149 +f 729/243/150 231/238/150 723/244/150 +f 507/182/151 506/245/151 591/246/151 +f 235/24/152 188/126/152 119/240/152 +f 722/247/153 240/248/153 235/24/153 +f 235/24/154 274/127/154 188/126/154 +f 243/249/42 245/250/42 246/251/42 +f 247/252/42 246/251/42 245/250/42 +f 245/250/155 98/99/155 241/253/155 +f 247/252/156 241/253/156 244/254/156 +f 92/95/157 93/94/157 243/249/157 +f 98/99/42 243/249/42 93/94/42 +f 245/250/42 243/249/42 98/99/42 +f 247/252/158 245/250/158 241/253/158 +f 248/255/159 249/256/159 15/257/159 +f 234/258/160 250/259/160 251/260/160 +f 252/261/161 253/262/161 254/263/161 +f 248/255/162 256/264/162 253/262/162 +f 248/255/21 252/261/21 249/256/21 +f 252/261/163 250/259/163 383/242/163 +f 254/263/164 256/264/164 255/265/164 +f 253/262/165 256/264/165 254/263/165 +f 250/259/166 252/261/166 254/263/166 +f 256/264/167 248/255/167 15/257/167 +f 253/262/21 252/261/21 248/255/21 +f 250/259/160 254/263/160 251/260/160 +f 258/266/168 225/235/168 259/267/168 +f 260/268/169 261/269/169 262/270/169 +f 226/271/42 225/235/42 227/234/42 +f 258/266/170 263/233/170 225/235/170 +f 255/265/171 256/264/171 16/272/171 +f 265/273/172 258/266/172 259/267/172 +f 265/273/173 259/267/173 264/274/173 +f 263/233/170 258/266/170 266/275/170 +f 265/273/170 266/275/170 258/266/170 +f 260/268/174 267/276/174 261/269/174 +f 254/263/164 255/265/164 251/260/164 +f 256/264/171 15/257/171 16/272/171 +f 260/268/175 268/277/175 269/278/175 +f 270/279/21 271/128/21 272/280/21 +f 416/281/176 302/282/176 430/283/176 +f 262/270/175 268/277/175 260/268/175 +f 272/280/177 273/284/177 270/279/177 +f 273/284/178 272/280/178 238/285/178 +f 272/280/179 274/127/179 238/285/179 +f 271/128/180 270/279/180 275/286/180 +f 131/134/91 269/278/91 132/137/91 +f 131/134/91 267/276/91 269/278/91 +f 267/276/91 260/268/91 269/278/91 +f 25/287/181 271/128/181 275/286/181 +f 270/279/182 273/284/182 275/286/182 +f 272/280/21 271/128/21 274/127/21 +f 275/286/183 276/288/183 277/289/183 +f 276/288/171 273/284/171 239/290/171 +f 25/287/184 277/289/184 14/291/184 +f 238/285/171 239/290/171 273/284/171 +f 25/287/184 275/286/184 277/289/184 +f 273/284/183 276/288/183 275/286/183 +f 279/292/185 280/293/185 294/294/185 +f 282/295/186 280/293/186 42/65/186 +f 279/292/187 294/294/187 283/296/187 +f 278/297/187 283/296/187 294/294/187 +f 42/65/188 280/293/188 279/292/188 +f 279/292/189 287/63/189 42/65/189 +f 288/298/190 280/293/190 282/295/190 +f 289/299/191 286/300/191 288/298/191 +f 282/295/191 289/299/191 288/298/191 +f 290/301/192 55/48/192 291/302/192 +f 281/303/193 294/294/193 284/304/193 +f 284/304/194 280/293/194 285/305/194 +f 291/302/195 293/306/195 56/307/195 +f 307/308/196 417/309/196 378/310/196 +f 285/305/194 280/293/194 288/298/194 +f 284/304/197 294/294/197 280/293/197 +f 285/305/191 288/298/191 286/300/191 +f 297/311/5 299/312/5 207/215/5 +f 55/48/198 48/47/198 293/306/198 +f 293/306/199 724/180/199 56/307/199 +f 290/301/200 291/302/200 296/313/200 +f 453/14/196 459/314/196 211/315/196 +f 292/316/200 290/301/200 296/313/200 +f 391/317/201 297/311/201 389/318/201 +f 200/210/202 202/319/202 207/215/202 +f 205/213/5 207/215/5 299/312/5 +f 303/320/203 304/321/203 305/322/203 +f 202/319/204 389/318/204 298/323/204 +f 298/323/201 389/318/201 297/311/201 +f 297/311/205 207/215/205 202/319/205 +f 303/320/203 305/322/203 302/282/203 +f 306/324/206 301/325/206 305/322/206 +f 306/324/207 304/321/207 307/308/207 +f 306/324/206 305/322/206 304/321/206 +f 307/308/207 304/321/207 308/326/207 +f 303/320/207 308/326/207 304/321/207 +f 313/327/208 310/328/208 312/329/208 +f 312/329/209 311/330/209 313/327/209 +f 312/329/5 314/331/5 311/330/5 +f 309/332/5 311/330/5 314/331/5 +f 315/333/210 316/334/210 317/335/210 +f 317/335/211 319/336/211 320/337/211 +f 322/338/212 318/339/212 715/340/212 +f 318/339/213 320/337/213 319/336/213 +f 325/341/214 320/337/214 318/339/214 +f 316/334/215 319/336/215 317/335/215 +f 324/342/210 316/334/210 315/333/210 +f 324/342/216 315/333/216 326/343/216 +f 323/344/217 324/342/217 326/343/217 +f 322/338/218 321/345/218 328/346/218 +f 315/333/219 329/347/219 330/348/219 +f 326/343/220 315/333/220 330/348/220 +f 331/349/221 327/350/221 332/351/221 +f 321/345/221 327/350/221 331/349/221 +f 328/346/218 321/345/218 331/349/218 +f 323/344/222 326/343/222 332/351/222 +f 333/352/223 334/353/223 325/341/223 +f 328/346/224 325/341/224 322/338/224 +f 335/354/225 320/337/225 334/353/225 +f 317/335/226 320/337/226 335/354/226 +f 315/333/227 317/335/227 329/347/227 +f 336/355/228 332/351/228 337/356/228 +f 338/357/229 333/352/229 328/346/229 +f 333/352/230 325/341/230 328/346/230 +f 337/356/231 326/343/231 330/348/231 +f 329/347/232 317/335/232 335/354/232 +f 327/350/222 323/344/222 332/351/222 +f 325/341/233 334/353/233 320/337/233 +f 332/351/234 326/343/234 337/356/234 +f 339/358/235 340/359/235 333/352/235 +f 338/357/236 331/349/236 336/355/236 +f 333/352/237 340/359/237 334/353/237 +f 325/341/224 318/339/224 322/338/224 +f 331/349/238 332/351/238 336/355/238 +f 328/346/239 331/349/239 338/357/239 +f 336/355/240 337/356/240 341/360/240 +f 342/361/241 335/354/241 343/362/241 +f 337/356/242 330/348/242 344/363/242 +f 341/360/13 344/363/13 345/364/13 +f 339/358/243 333/352/243 338/357/243 +f 335/354/244 334/353/244 343/362/244 +f 343/362/245 334/353/245 340/359/245 +f 330/348/246 329/347/246 348/365/246 +f 344/363/247 330/348/247 348/365/247 +f 329/347/248 335/354/248 342/361/248 +f 349/366/249 339/358/249 338/357/249 +f 338/357/250 336/355/250 349/366/250 +f 341/360/251 337/356/251 344/363/251 +f 329/347/252 342/361/252 348/365/252 +f 349/366/253 336/355/253 341/360/253 +f 349/366/41 341/360/41 346/367/41 +f 351/368/21 468/369/21 350/370/21 +f 353/371/254 340/359/254 339/358/254 +f 352/372/255 353/371/255 339/358/255 +f 347/373/254 340/359/254 353/371/254 +f 348/365/256 350/370/256 344/363/256 +f 364/374/257 213/222/257 212/375/257 +f 352/372/255 339/358/255 349/366/255 +f 357/376/258 209/377/258 358/378/258 +f 342/361/259 343/362/259 354/379/259 +f 209/377/260 196/217/260 358/378/260 +f 361/201/261 358/378/261 360/173/261 +f 384/380/262 148/153/262 166/381/262 +f 348/365/263 351/368/263 350/370/263 +f 342/361/263 351/368/263 348/365/263 +f 364/374/264 75/75/264 34/81/264 +f 343/362/265 340/359/265 347/373/265 +f 365/382/266 364/374/266 209/377/266 +f 209/377/267 373/383/267 365/382/267 +f 209/377/268 721/384/268 373/383/268 +f 373/383/269 721/384/269 370/385/269 +f 370/385/270 721/384/270 356/386/270 +f 356/386/271 721/384/271 120/387/271 +f 359/388/272 721/384/272 209/377/272 +f 365/382/264 371/389/264 372/390/264 +f 356/386/273 363/391/273 370/385/273 +f 375/392/274 363/391/274 362/393/274 +f 373/383/275 370/385/275 378/310/275 +f 379/394/275 373/383/275 378/310/275 +f 375/392/276 305/322/276 370/385/276 +f 301/325/276 370/385/276 305/322/276 +f 369/395/277 364/374/277 368/396/277 +f 369/395/278 215/229/278 214/221/278 +f 216/220/279 369/395/279 214/221/279 +f 367/397/280 368/396/280 365/382/280 +f 382/398/280 367/397/280 365/382/280 +f 372/390/280 382/398/280 365/382/280 +f 373/383/281 379/394/281 371/389/281 +f 364/374/278 369/395/278 216/220/278 +f 379/394/281 262/270/281 371/389/281 +f 378/310/276 370/385/276 301/325/276 +f 362/393/140 380/399/140 375/392/140 +f 364/374/277 365/382/277 368/396/277 +f 357/376/282 358/378/282 374/400/282 +f 355/401/283 356/386/283 376/402/283 +f 376/402/284 356/386/284 118/403/284 +f 355/401/283 376/402/283 377/404/283 +f 140/145/285 358/378/285 133/138/285 +f 361/201/285 133/138/285 358/378/285 +f 366/405/282 357/376/282 374/400/282 +f 374/400/285 358/378/285 140/145/285 +f 172/174/286 40/39/286 173/115/286 +f 377/404/287 363/391/287 355/401/287 +f 120/387/284 118/403/284 356/386/284 +f 45/32/125 46/44/125 181/189/125 +f 386/406/288 470/407/288 231/238/288 +f 299/312/289 297/311/289 390/408/289 +f 391/317/289 390/408/289 297/311/289 +f 392/409/289 390/408/289 391/317/289 +f 393/410/289 392/409/289 391/317/289 +f 389/318/290 385/411/290 393/410/290 +f 387/412/291 470/407/291 386/406/291 +f 381/413/196 377/404/196 376/402/196 +f 389/318/292 393/410/292 391/317/292 +f 297/311/293 202/319/293 298/323/293 +f 396/191/294 397/40/294 40/39/294 +f 69/67/295 397/40/295 396/191/295 +f 398/414/296 399/415/296 400/416/296 +f 398/414/297 400/416/297 401/417/297 +f 402/418/298 403/419/298 663/420/298 +f 405/421/299 406/422/299 402/418/299 +f 407/423/300 308/326/300 300/424/300 +f 47/45/68 74/74/68 46/44/68 +f 405/421/301 408/425/301 406/422/301 +f 412/426/302 413/427/302 411/428/302 +f 401/417/302 411/428/302 413/427/302 +f 408/425/303 403/419/303 406/422/303 +f 408/425/301 405/421/301 409/429/301 +f 402/418/299 406/422/299 403/419/299 +f 414/430/302 411/428/302 401/417/302 +f 400/416/302 414/430/302 401/417/302 +f 404/15/304 403/419/304 408/425/304 +f 308/326/305 407/423/305 417/309/305 +f 308/326/275 417/309/275 307/308/275 +f 224/431/306 517/432/306 512/433/306 +f 266/275/170 149/165/170 263/233/170 +f 265/273/307 257/434/307 266/275/307 +f 411/428/308 414/430/308 203/211/308 +f 410/435/309 201/436/309 204/212/309 +f 204/212/308 203/211/308 414/430/308 +f 266/275/310 257/434/310 154/164/310 +f 410/435/311 204/212/311 414/430/311 +f 400/416/312 410/435/312 414/430/312 +f 266/275/170 154/164/170 149/165/170 +f 418/437/313 286/300/313 289/299/313 +f 399/415/314 201/436/314 410/435/314 +f 419/438/315 55/48/315 290/301/315 +f 204/212/316 201/436/316 206/214/316 +f 206/214/316 201/436/316 198/208/316 +f 290/301/317 292/316/317 419/438/317 +f 418/437/317 419/438/317 292/316/317 +f 65/439/318 420/440/318 421/441/318 +f 289/299/318 421/441/318 420/440/318 +f 418/437/313 289/299/313 419/438/313 +f 419/438/319 289/299/319 420/440/319 +f 123/190/320 423/33/320 181/189/320 +f 45/32/320 181/189/320 423/33/320 +f 421/441/321 282/295/321 65/439/321 +f 42/65/322 65/439/322 282/295/322 +f 289/299/322 282/295/322 421/441/322 +f 212/375/99 210/219/99 422/442/99 +f 291/302/323 210/219/323 211/315/323 +f 233/443/324 502/444/324 360/173/324 +f 291/302/323 211/315/323 296/313/323 +f 724/180/325 423/33/325 210/219/325 +f 210/219/326 423/33/326 422/442/326 +f 123/190/326 422/442/326 423/33/326 +f 106/112/104 212/375/104 213/222/104 +f 424/445/170 425/446/170 426/447/170 +f 427/448/170 426/447/170 425/446/170 +f 427/448/327 430/283/327 429/449/327 +f 512/433/328 228/450/328 224/431/328 +f 150/451/329 264/274/329 152/154/329 +f 127/452/330 151/155/330 261/269/330 +f 407/423/331 424/445/331 417/309/331 +f 407/423/91 425/446/91 424/445/91 +f 436/453/332 472/454/332 474/455/332 +f 432/456/5 433/457/5 189/196/5 +f 190/197/5 189/196/5 433/457/5 +f 314/331/88 312/329/88 431/458/88 +f 435/459/88 431/458/88 312/329/88 +f 312/329/333 310/328/333 435/459/333 +f 311/330/334 523/460/334 313/327/334 +f 437/461/88 431/458/88 435/459/88 +f 159/158/88 437/461/88 435/459/88 +f 157/156/335 159/158/335 435/459/335 +f 310/328/333 157/156/333 435/459/333 +f 186/462/336 436/453/336 432/456/336 +f 187/198/337 186/462/337 184/195/337 +f 438/463/207 439/464/207 440/228/207 +f 441/226/207 440/228/207 439/464/207 +f 441/226/338 439/464/338 442/465/338 +f 446/466/207 447/467/207 438/463/207 +f 448/468/207 438/463/207 447/467/207 +f 439/464/207 438/463/207 448/468/207 +f 183/194/339 2/2/339 134/139/339 +f 441/226/340 442/465/340 444/227/340 +f 246/251/91 448/468/91 447/467/91 +f 98/99/341 96/469/341 95/470/341 +f 246/251/91 447/467/91 243/249/91 +f 394/471/342 230/237/342 191/206/342 +f 395/472/343 449/473/343 191/206/343 +f 394/471/343 191/206/343 449/473/343 +f 439/464/344 448/468/344 442/465/344 +f 395/472/345 387/412/345 449/473/345 +f 426/447/170 451/474/170 424/445/170 +f 426/447/170 452/475/170 451/474/170 +f 394/471/346 449/473/346 386/406/346 +f 387/412/346 386/406/346 449/473/346 +f 388/476/347 395/472/347 130/205/347 +f 191/206/347 130/205/347 395/472/347 +f 453/14/348 454/16/348 455/477/348 +f 457/478/349 458/479/349 459/314/349 +f 455/477/350 461/480/350 456/481/350 +f 458/479/351 457/478/351 461/480/351 +f 456/481/350 461/480/350 457/478/350 +f 455/477/348 454/16/348 461/480/348 +f 347/373/265 354/379/265 343/362/265 +f 454/16/352 463/482/352 461/480/352 +f 458/479/352 461/480/352 463/482/352 +f 456/481/349 457/478/349 459/314/349 +f 221/225/176 445/483/176 444/227/176 +f 443/484/176 244/254/176 442/465/176 +f 12/19/353 229/236/353 24/105/353 +f 467/485/354 24/105/354 466/486/354 +f 466/486/21 351/368/21 354/379/21 +f 466/486/355 230/237/355 468/369/355 +f 230/237/356 386/406/356 468/369/356 +f 469/487/21 460/488/21 350/370/21 +f 469/487/21 350/370/21 468/369/21 +f 472/454/357 473/489/357 474/455/357 +f 101/102/358 23/490/358 471/491/358 +f 467/485/21 347/373/21 462/492/21 +f 23/490/358 467/485/358 471/491/358 +f 24/105/358 467/485/358 23/490/358 +f 351/368/259 342/361/259 354/379/259 +f 460/488/68 469/487/68 232/239/68 +f 231/238/68 232/239/68 469/487/68 +f 464/493/21 353/371/21 352/372/21 +f 466/486/21 468/369/21 351/368/21 +f 462/492/359 471/491/359 467/485/359 +f 460/488/43 232/239/43 197/218/43 +f 464/493/21 462/492/21 353/371/21 +f 354/379/21 467/485/21 466/486/21 +f 472/454/360 476/494/360 473/489/360 +f 474/455/332 432/456/332 436/453/332 +f 433/457/88 432/456/88 475/495/88 +f 474/455/88 475/495/88 432/456/88 +f 477/496/88 475/495/88 474/455/88 +f 473/489/88 477/496/88 474/455/88 +f 478/497/308 479/498/308 480/499/308 +f 481/500/308 478/497/308 480/499/308 +f 482/501/361 483/200/361 481/500/361 +f 482/501/362 481/500/362 480/499/362 +f 189/196/337 184/195/337 186/462/337 +f 432/456/363 189/196/363 186/462/363 +f 484/502/308 485/503/308 479/498/308 +f 480/499/308 479/498/308 485/503/308 +f 237/504/364 489/505/364 490/506/364 +f 491/507/21 489/505/21 492/508/21 +f 178/186/21 240/248/21 179/187/21 +f 493/509/21 73/88/21 494/510/21 +f 80/89/21 494/510/21 73/88/21 +f 240/248/21 494/510/21 80/89/21 +f 179/187/21 240/248/21 80/89/21 +f 177/183/21 727/184/21 495/181/21 +f 240/248/21 177/183/21 495/181/21 +f 180/185/21 177/183/21 240/248/21 +f 178/186/21 180/185/21 240/248/21 +f 490/506/365 496/511/365 497/512/365 +f 492/508/21 489/505/21 498/26/21 +f 233/443/366 470/407/366 387/412/366 +f 118/403/196 16/272/196 14/291/196 +f 492/508/367 500/513/367 491/507/367 +f 496/511/368 500/513/368 501/514/368 +f 502/444/369 233/443/369 387/412/369 +f 237/504/370 497/512/370 236/515/370 +f 237/504/370 490/506/370 497/512/370 +f 274/127/371 237/504/371 238/285/371 +f 489/505/372 491/507/372 490/506/372 +f 491/507/373 500/513/373 490/506/373 +f 492/508/374 498/26/374 503/516/374 +f 500/513/368 503/516/368 501/514/368 +f 387/412/375 395/472/375 502/444/375 +f 490/506/365 500/513/365 496/511/365 +f 500/513/376 492/508/376 503/516/376 +f 233/443/377 723/244/377 499/517/377 +f 169/170/378 502/444/378 37/132/378 +f 504/518/379 506/245/379 366/405/379 +f 507/182/379 366/405/379 506/245/379 +f 357/376/379 366/405/379 507/182/379 +f 494/510/379 357/376/379 507/182/379 +f 494/510/380 722/247/380 357/376/380 +f 240/248/381 495/181/381 235/24/381 +f 478/497/382 487/519/382 509/520/382 +f 481/500/383 487/519/383 478/497/383 +f 479/498/5 478/497/5 510/521/5 +f 486/522/384 576/523/384 482/501/384 +f 157/156/385 313/327/385 525/524/385 +f 509/520/5 510/521/5 478/497/5 +f 494/510/21 507/182/21 117/188/21 +f 493/509/21 494/510/21 117/188/21 +f 483/200/383 487/519/383 481/500/383 +f 487/519/386 511/525/386 509/520/386 +f 508/526/387 501/514/387 503/516/387 +f 372/390/140 371/389/140 512/433/140 +f 450/527/140 429/449/140 513/528/140 +f 524/529/388 509/520/388 511/525/388 +f 514/530/389 381/413/389 515/531/389 +f 452/475/170 515/531/170 451/474/170 +f 452/475/170 516/532/170 515/531/170 +f 517/432/390 518/533/390 382/398/390 +f 516/532/170 514/530/170 515/531/170 +f 512/433/391 517/432/391 382/398/391 +f 382/398/140 372/390/140 512/433/140 +f 514/530/392 516/532/392 513/528/392 +f 514/530/393 513/528/393 380/399/393 +f 516/532/394 452/475/394 513/528/394 +f 519/534/395 382/398/395 518/533/395 +f 72/58/396 520/57/396 521/117/396 +f 413/427/397 412/426/397 437/461/397 +f 100/104/127 66/59/127 72/58/127 +f 519/534/42 518/533/42 227/234/42 +f 227/234/42 518/533/42 226/271/42 +f 517/432/42 226/271/42 518/533/42 +f 437/461/398 434/535/398 413/427/398 +f 434/535/399 437/461/399 159/158/399 +f 367/397/395 382/398/395 519/534/395 +f 522/199/400 523/460/400 524/529/400 +f 522/199/401 525/524/401 523/460/401 +f 434/535/399 159/158/399 158/157/399 +f 401/417/402 413/427/402 398/414/402 +f 415/536/402 398/414/402 413/427/402 +f 311/330/5 309/332/5 524/529/5 +f 523/460/5 311/330/5 524/529/5 +f 158/157/385 415/536/385 434/535/385 +f 434/535/403 415/536/403 413/427/403 +f 431/458/397 437/461/397 412/426/397 +f 510/521/5 509/520/5 309/332/5 +f 524/529/5 309/332/5 509/520/5 +f 525/524/334 313/327/334 523/460/334 +f 522/199/384 487/519/384 483/200/384 +f 511/525/388 522/199/388 524/529/388 +f 488/537/404 526/538/404 527/539/404 +f 476/494/206 488/537/206 473/489/206 +f 527/539/405 526/538/405 579/540/405 +f 427/448/406 425/446/406 430/283/406 +f 527/539/308 528/541/308 477/496/308 +f 475/495/308 477/496/308 528/541/308 +f 578/542/405 579/540/405 526/538/405 +f 488/537/206 477/496/206 473/489/206 +f 527/539/407 477/496/407 488/537/407 +f 188/126/408 195/241/408 119/240/408 +f 182/193/21 121/543/21 167/73/21 +f 125/70/21 119/240/21 61/107/21 +f 121/543/21 119/240/21 125/70/21 +f 167/73/21 121/543/21 125/70/21 +f 250/259/409 234/258/409 121/543/409 +f 383/242/409 250/259/409 121/543/409 +f 16/272/196 251/260/196 255/265/196 +f 498/26/410 508/526/410 503/516/410 +f 15/257/411 271/128/411 25/287/411 +f 118/403/409 120/387/409 234/258/409 +f 121/543/409 234/258/409 120/387/409 +f 15/257/412 14/291/412 16/272/412 +f 90/100/21 64/192/21 195/241/21 +f 39/38/413 107/61/413 173/115/413 +f 89/91/21 728/93/21 383/242/21 +f 121/543/21 89/91/21 383/242/21 +f 100/104/21 89/91/21 121/543/21 +f 182/193/21 100/104/21 121/543/21 +f 239/290/196 277/289/196 276/288/196 +f 117/188/414 122/131/414 493/509/414 +f 73/88/414 493/509/414 122/131/414 +f 530/544/415 531/545/415 471/491/415 +f 531/545/416 409/429/416 5/7/416 +f 6/8/416 5/7/416 409/429/416 +f 409/429/416 531/545/416 408/425/416 +f 408/425/416 531/545/416 530/544/416 +f 101/102/417 471/491/417 102/103/417 +f 108/114/176 106/112/176 213/222/176 +f 19/21/418 28/43/418 170/27/418 +f 5/7/417 102/103/417 531/545/417 +f 471/491/417 531/545/417 102/103/417 +f 28/43/419 141/146/419 170/27/419 +f 392/409/420 532/546/420 156/167/420 +f 384/380/420 156/167/420 532/546/420 +f 179/187/421 80/89/421 77/90/421 +f 384/380/422 532/546/422 385/411/422 +f 393/410/422 385/411/422 532/546/422 +f 384/380/423 166/381/423 156/167/423 +f 156/167/5 155/166/5 392/409/5 +f 390/408/5 392/409/5 155/166/5 +f 166/381/424 146/151/424 156/167/424 +f 395/472/425 68/66/425 37/132/425 +f 196/217/426 533/547/426 197/218/426 +f 725/548/427 533/547/427 196/217/427 +f 388/476/345 29/56/345 68/66/345 +f 395/472/345 388/476/345 68/66/345 +f 532/546/422 392/409/422 393/410/422 +f 448/468/428 246/251/428 242/549/428 +f 247/252/365 242/549/365 246/251/365 +f 440/228/91 217/231/91 438/463/91 +f 113/129/429 535/30/429 534/130/429 +f 222/232/91 217/231/91 440/228/91 +f 43/46/430 420/440/430 42/65/430 +f 122/131/431 534/130/431 535/30/431 +f 197/218/432 533/547/432 460/488/432 +f 465/550/432 460/488/432 533/547/432 +f 445/483/433 223/551/433 222/232/433 +f 444/227/142 445/483/142 440/228/142 +f 222/232/434 223/551/434 221/225/434 +f 448/468/344 443/484/344 442/465/344 +f 443/484/435 448/468/435 242/549/435 +f 52/51/436 50/53/436 536/552/436 +f 537/553/436 536/552/436 50/53/436 +f 244/254/365 242/549/365 247/252/365 +f 35/76/264 536/552/264 137/144/264 +f 42/65/430 420/440/430 65/439/430 +f 220/224/434 222/232/434 221/225/434 +f 98/99/155 95/470/155 241/253/155 +f 445/483/437 222/232/437 440/228/437 +f 502/444/99 169/170/99 360/173/99 +f 165/169/99 144/149/99 169/170/99 +f 55/48/438 420/440/438 43/46/438 +f 52/51/436 536/552/436 35/76/436 +f 648/554/439 538/555/439 644/556/439 +f 539/557/440 538/555/440 648/554/440 +f 540/558/441 541/559/441 542/560/441 +f 543/561/442 544/562/442 545/563/442 +f 546/564/443 547/565/443 539/557/443 +f 548/566/444 544/562/444 543/561/444 +f 646/567/43 647/568/43 641/569/43 +f 643/570/445 544/562/445 548/566/445 +f 650/571/446 642/572/446 649/573/446 +f 550/574/447 540/558/447 542/560/447 +f 539/557/448 648/554/448 549/575/448 +f 551/576/449 550/574/449 542/560/449 +f 550/574/450 647/568/450 646/567/450 +f 550/574/451 646/567/451 540/558/451 +f 552/577/452 649/573/452 647/568/452 +f 544/562/453 643/570/453 538/555/453 +f 539/557/454 547/565/454 538/555/454 +f 646/567/455 645/578/455 548/566/455 +f 545/563/456 538/555/456 547/565/456 +f 548/566/457 540/558/457 646/567/457 +f 648/554/458 650/571/458 549/575/458 +f 548/566/459 543/561/459 541/559/459 +f 540/558/217 548/566/217 541/559/217 +f 544/562/460 538/555/460 545/563/460 +f 643/570/461 548/566/461 645/578/461 +f 643/570/462 644/556/462 538/555/462 +f 647/568/19 649/573/19 632/579/19 +f 647/568/463 550/574/463 552/577/463 +f 546/564/464 553/580/464 547/565/464 +f 554/581/225 547/565/225 553/580/225 +f 555/582/465 545/563/465 554/581/465 +f 552/577/221 550/574/221 551/576/221 +f 554/581/244 553/580/244 556/583/244 +f 543/561/466 545/563/466 555/582/466 +f 546/564/467 539/557/467 549/575/467 +f 545/563/226 547/565/226 554/581/226 +f 557/584/468 558/585/468 559/586/468 +f 560/587/469 561/588/469 558/585/469 +f 562/589/470 542/560/470 563/590/470 +f 558/585/471 546/564/471 559/586/471 +f 559/586/472 551/576/472 557/584/472 +f 541/559/473 543/561/473 564/591/473 +f 558/585/237 561/588/237 553/580/237 +f 558/585/474 553/580/474 546/564/474 +f 563/590/475 541/559/475 564/591/475 +f 542/560/476 541/559/476 563/590/476 +f 549/575/218 552/577/218 559/586/218 +f 551/576/477 542/560/477 562/589/477 +f 557/584/236 551/576/236 562/589/236 +f 559/586/218 552/577/218 551/576/218 +f 559/586/478 546/564/478 549/575/478 +f 543/561/479 555/582/479 564/591/479 +f 556/583/245 553/580/245 561/588/245 +f 557/584/250 562/589/250 566/592/250 +f 564/591/480 555/582/480 567/593/480 +f 565/594/481 564/591/481 567/593/481 +f 567/593/68 53/52/68 565/594/68 +f 570/595/112 51/596/112 567/593/112 +f 566/592/482 560/587/482 557/584/482 +f 563/590/483 564/591/483 565/594/483 +f 555/582/484 554/581/484 570/595/484 +f 571/597/19 565/594/19 58/598/19 +f 567/593/112 51/596/112 53/52/112 +f 561/588/29 49/50/29 569/599/29 +f 571/597/485 563/590/485 565/594/485 +f 570/595/486 554/581/486 556/583/486 +f 566/592/253 562/589/253 571/597/253 +f 555/582/487 570/595/487 567/593/487 +f 560/587/488 558/585/488 557/584/488 +f 566/592/41 571/597/41 54/600/41 +f 562/589/489 563/590/489 571/597/489 +f 42/65/490 57/64/490 43/46/490 +f 570/595/355 556/583/355 568/601/355 +f 556/583/265 561/588/265 569/599/265 +f 568/601/265 556/583/265 569/599/265 +f 572/602/491 560/587/491 566/592/491 +f 49/50/29 561/588/29 560/587/29 +f 573/603/492 574/604/492 484/502/492 +f 575/605/493 486/522/493 485/503/493 +f 485/503/494 486/522/494 480/499/494 +f 482/501/494 480/499/494 486/522/494 +f 574/604/495 575/605/495 485/503/495 +f 575/605/496 574/604/496 581/606/496 +f 485/503/492 484/502/492 574/604/492 +f 70/68/497 69/67/497 72/58/497 +f 436/453/262 187/198/262 472/454/262 +f 580/133/498 577/60/498 60/71/498 +f 580/133/499 59/108/499 577/60/499 +f 578/542/500 576/523/500 581/606/500 +f 654/607/29 66/59/29 124/72/29 +f 578/542/501 581/606/501 579/540/501 +f 574/604/502 573/603/502 579/540/502 +f 581/606/502 574/604/502 579/540/502 +f 528/541/502 527/539/502 573/603/502 +f 579/540/502 573/603/502 527/539/502 +f 582/608/265 583/609/265 584/610/265 +f 537/553/503 50/53/503 582/608/503 +f 584/610/504 585/49/504 57/64/504 +f 581/606/496 576/523/496 575/605/496 +f 50/53/503 583/609/503 582/608/503 +f 508/526/505 586/25/505 587/611/505 +f 588/612/506 589/613/506 587/611/506 +f 476/494/314 526/538/314 488/537/314 +f 583/609/265 585/49/265 584/610/265 +f 586/25/507 588/612/507 587/611/507 +f 590/614/508 589/613/508 588/612/508 +f 569/599/21 583/609/21 568/601/21 +f 589/613/509 590/614/509 506/245/509 +f 590/614/510 591/246/510 506/245/510 +f 588/612/21 586/25/21 590/614/21 +f 590/614/21 586/25/21 591/246/21 +f 508/526/511 592/615/511 505/616/511 +f 587/611/512 593/617/512 592/615/512 +f 236/515/371 238/285/371 237/504/371 +f 594/618/513 595/619/513 596/620/513 +f 508/526/511 587/611/511 592/615/511 +f 506/245/514 504/518/514 589/613/514 +f 597/621/515 595/619/515 598/622/515 +f 595/619/516 599/623/516 600/624/516 +f 601/625/517 598/622/517 595/619/517 +f 587/611/512 589/613/512 593/617/512 +f 599/623/518 595/619/518 597/621/518 +f 593/617/514 589/613/514 504/518/514 +f 595/619/519 600/624/519 602/626/519 +f 596/620/520 595/619/520 602/626/520 +f 597/621/521 598/622/521 603/627/521 +f 604/628/522 596/620/522 602/626/522 +f 605/629/523 604/628/523 602/626/523 +f 605/629/524 602/626/524 600/624/524 +f 601/625/525 595/619/525 594/618/525 +f 598/622/526 606/630/526 603/627/526 +f 601/625/527 607/631/527 606/630/527 +f 608/632/528 599/623/528 609/633/528 +f 607/631/529 610/634/529 606/630/529 +f 601/625/530 606/630/530 598/622/530 +f 603/627/531 606/630/531 611/635/531 +f 599/623/532 597/621/532 609/633/532 +f 596/620/533 612/636/533 594/618/533 +f 600/624/534 599/623/534 608/632/534 +f 605/629/535 600/624/535 608/632/535 +f 594/618/536 607/631/536 601/625/536 +f 607/631/537 613/637/537 610/634/537 +f 606/630/538 610/634/538 611/635/538 +f 597/621/539 603/627/539 609/633/539 +f 612/636/540 607/631/540 594/618/540 +f 604/628/541 612/636/541 596/620/541 +f 603/627/542 611/635/542 614/638/542 +f 608/632/543 609/633/543 615/639/543 +f 615/639/544 609/633/544 614/638/544 +f 609/633/545 603/627/545 614/638/545 +f 616/640/546 617/641/546 618/642/546 +f 612/636/547 613/637/547 607/631/547 +f 619/643/548 620/644/548 621/645/548 +f 622/646/549 623/647/549 624/648/549 +f 621/645/550 622/646/550 619/643/550 +f 615/639/551 614/638/551 625/649/551 +f 617/641/552 615/639/552 618/642/552 +f 626/650/553 611/635/553 627/651/553 +f 617/641/554 605/629/554 608/632/554 +f 614/638/555 611/635/555 626/650/555 +f 620/644/556 617/641/556 616/640/556 +f 621/645/557 620/644/557 616/640/557 +f 614/638/558 626/650/558 625/649/558 +f 604/628/559 619/643/559 612/636/559 +f 622/646/560 624/648/560 613/637/560 +f 619/643/561 613/637/561 612/636/561 +f 617/641/562 620/644/562 605/629/562 +f 620/644/563 619/643/563 604/628/563 +f 611/635/564 610/634/564 627/651/564 +f 622/646/565 613/637/565 619/643/565 +f 628/652/566 623/647/566 622/646/566 +f 627/651/567 610/634/567 624/648/567 +f 618/642/568 615/639/568 625/649/568 +f 613/637/569 624/648/569 610/634/569 +f 617/641/554 608/632/554 615/639/554 +f 605/629/570 620/644/570 604/628/570 +f 628/652/571 629/653/571 623/647/571 +f 630/654/572 631/655/572 632/579/572 +f 626/650/573 627/651/573 633/656/573 +f 626/650/574 633/656/574 634/657/574 +f 628/652/575 622/646/575 621/645/575 +f 635/658/576 636/659/576 637/660/576 +f 631/655/577 625/649/577 634/657/577 +f 633/656/578 635/658/578 638/661/578 +f 636/659/579 624/648/579 623/647/579 +f 634/657/580 633/656/580 638/661/580 +f 639/662/581 628/652/581 621/645/581 +f 616/640/582 618/642/582 630/654/582 +f 640/663/583 629/653/583 628/652/583 +f 625/649/584 626/650/584 634/657/584 +f 639/662/585 616/640/585 630/654/585 +f 618/642/586 625/649/586 631/655/586 +f 621/645/587 616/640/587 639/662/587 +f 636/659/588 623/647/588 637/660/588 +f 631/655/589 634/657/589 641/569/589 +f 627/651/590 624/648/590 636/659/590 +f 637/660/591 623/647/591 629/653/591 +f 641/569/592 634/657/592 638/661/592 +f 633/656/593 636/659/593 635/658/593 +f 632/579/594 631/655/594 641/569/594 +f 633/656/595 627/651/595 636/659/595 +f 630/654/596 618/642/596 631/655/596 +f 642/572/597 640/663/597 639/662/597 +f 637/660/414 643/570/414 635/658/414 +f 637/660/36 629/653/36 644/556/36 +f 645/578/414 635/658/414 643/570/414 +f 644/556/598 629/653/598 648/554/598 +f 650/571/599 640/663/599 642/572/599 +f 649/573/600 549/575/600 650/571/600 +f 637/660/36 644/556/36 643/570/36 +f 640/663/601 628/652/601 639/662/601 +f 638/661/43 646/567/43 641/569/43 +f 639/662/602 630/654/602 642/572/602 +f 638/661/603 635/658/603 645/578/603 +f 638/661/603 645/578/603 646/567/603 +f 642/572/604 630/654/604 632/579/604 +f 642/572/446 632/579/446 649/573/446 +f 640/663/599 650/571/599 648/554/599 +f 632/579/19 641/569/19 647/568/19 +f 640/663/598 648/554/598 629/653/598 +f 76/86/605 36/35/605 26/36/605 +f 651/664/606 124/72/606 60/71/606 +f 64/192/112 81/171/112 59/108/112 +f 124/72/607 653/119/607 654/607/607 +f 655/178/608 36/35/608 76/86/608 +f 69/67/609 40/39/609 88/92/609 +f 124/72/610 651/664/610 652/122/610 +f 32/31/611 36/35/611 122/131/611 +f 655/178/612 122/131/612 36/35/612 +f 651/664/613 60/71/613 652/122/613 +f 57/64/614 657/665/614 658/666/614 +f 196/217/615 209/377/615 137/144/615 +f 78/79/616 79/80/616 462/492/616 +f 659/667/617 196/217/617 656/668/617 +f 462/492/616 464/493/616 78/79/616 +f 77/90/36 76/86/36 86/85/36 +f 94/97/618 21/22/618 660/669/618 +f 142/147/619 83/82/619 141/146/619 +f 658/666/620 661/670/620 662/671/620 +f 662/671/621 656/668/621 658/666/621 +f 660/669/622 21/22/622 115/123/622 +f 241/253/140 96/469/140 108/114/140 +f 662/671/623 281/303/623 458/479/623 +f 459/314/623 458/479/623 281/303/623 +f 656/668/624 454/16/624 659/667/624 +f 466/486/625 24/105/625 229/236/625 +f 294/294/626 662/671/626 661/670/626 +f 287/63/627 657/665/627 57/64/627 +f 664/672/628 665/673/628 666/674/628 +f 667/675/629 668/676/629 665/673/629 +f 665/673/630 669/677/630 666/674/630 +f 353/371/21 462/492/21 347/373/21 +f 466/486/631 229/236/631 230/237/631 +f 661/670/632 278/297/632 294/294/632 +f 658/666/632 278/297/632 661/670/632 +f 670/678/633 665/673/633 664/672/633 +f 665/673/634 671/679/634 669/677/634 +f 458/479/635 463/482/635 662/671/635 +f 656/668/635 662/671/635 463/482/635 +f 279/292/636 283/296/636 657/665/636 +f 658/666/636 657/665/636 283/296/636 +f 672/680/637 665/673/637 668/676/637 +f 667/675/638 665/673/638 670/678/638 +f 278/297/636 658/666/636 283/296/636 +f 667/675/639 673/681/639 668/676/639 +f 294/294/626 281/303/626 662/671/626 +f 668/676/640 673/681/640 674/682/640 +f 667/675/641 675/683/641 673/681/641 +f 672/680/642 668/676/642 674/682/642 +f 671/679/643 665/673/643 672/680/643 +f 672/680/644 674/682/644 676/684/644 +f 454/16/635 656/668/635 463/482/635 +f 677/685/645 678/686/645 679/687/645 +f 674/682/646 673/681/646 680/688/646 +f 669/677/647 671/679/647 681/689/647 +f 682/690/648 677/685/648 666/674/648 +f 664/672/649 679/687/649 670/678/649 +f 671/679/650 672/680/650 676/684/650 +f 677/685/651 679/687/651 664/672/651 +f 683/691/652 681/689/652 684/692/652 +f 675/683/653 685/693/653 686/694/653 +f 682/690/654 669/677/654 681/689/654 +f 679/687/655 675/683/655 670/678/655 +f 681/689/656 671/679/656 676/684/656 +f 675/683/653 686/694/653 673/681/653 +f 683/691/657 682/690/657 681/689/657 +f 682/690/658 666/674/658 669/677/658 +f 677/685/659 664/672/659 666/674/659 +f 670/678/660 675/683/660 667/675/660 +f 687/695/661 674/682/661 680/688/661 +f 681/689/662 676/684/662 684/692/662 +f 683/691/663 688/696/663 682/690/663 +f 688/696/664 677/685/664 682/690/664 +f 673/681/646 686/694/646 680/688/646 +f 676/684/665 674/682/665 687/695/665 +f 684/692/662 676/684/662 687/695/662 +f 688/696/666 678/686/666 677/685/666 +f 689/697/667 680/688/667 690/698/667 +f 687/695/558 689/697/558 691/699/558 +f 692/700/668 693/701/668 694/702/668 +f 685/693/569 693/701/569 686/694/569 +f 695/703/669 696/704/669 678/686/669 +f 684/692/551 687/695/551 691/699/551 +f 696/704/565 685/693/565 678/686/565 +f 680/688/670 686/694/670 690/698/670 +f 684/692/568 691/699/568 697/705/568 +f 698/706/671 690/698/671 692/700/671 +f 690/698/672 686/694/672 693/701/672 +f 696/704/673 693/701/673 685/693/673 +f 699/707/674 683/691/674 697/705/674 +f 678/686/675 685/693/675 679/687/675 +f 688/696/676 683/691/676 699/707/676 +f 678/686/548 688/696/548 695/703/548 +f 700/708/566 694/702/566 696/704/566 +f 695/703/677 688/696/677 699/707/677 +f 696/704/678 694/702/678 693/701/678 +f 683/691/552 684/692/552 697/705/552 +f 679/687/679 685/693/679 675/683/679 +f 687/695/555 680/688/555 689/697/555 +f 689/697/680 698/706/680 701/709/680 +f 689/697/681 690/698/681 698/706/681 +f 691/699/682 689/697/682 701/709/682 +f 690/698/683 693/701/683 692/700/683 +f 702/710/684 703/711/684 704/712/684 +f 705/713/577 691/699/577 701/709/577 +f 703/711/685 705/713/685 704/712/685 +f 702/710/686 706/714/686 707/715/686 +f 704/712/687 705/713/687 708/716/687 +f 707/715/688 699/707/688 703/711/688 +f 692/700/689 694/702/689 709/717/689 +f 701/709/690 698/706/690 710/718/690 +f 699/707/691 697/705/691 703/711/691 +f 707/715/581 700/708/581 695/703/581 +f 711/719/692 692/700/692 709/717/692 +f 703/711/693 697/705/693 705/713/693 +f 695/703/694 699/707/694 707/715/694 +f 698/706/695 711/719/695 710/718/695 +f 697/705/696 691/699/696 705/713/696 +f 700/708/697 712/720/697 694/702/697 +f 700/708/698 696/704/698 695/703/698 +f 709/717/699 694/702/699 712/720/699 +f 708/716/700 701/709/700 710/718/700 +f 698/706/701 692/700/701 711/719/701 +f 705/713/702 701/709/702 708/716/702 +f 707/715/703 703/711/703 702/710/703 +f 706/714/704 712/720/704 700/708/704 +f 706/714/705 700/708/705 707/715/705 +f 716/721/414 711/719/414 717/722/414 +f 714/723/706 706/714/706 715/340/706 +f 712/720/36 713/724/36 709/717/36 +f 702/710/446 718/725/446 715/340/446 +f 708/716/707 719/726/707 720/727/707 +f 711/719/414 709/717/414 717/722/414 +f 704/712/19 708/716/19 720/727/19 +f 710/718/708 711/719/708 716/721/708 +f 702/710/706 715/340/706 706/714/706 +f 718/725/19 704/712/19 720/727/19 +f 702/710/446 704/712/446 718/725/446 +f 710/718/707 719/726/707 708/716/707 +f 710/718/708 716/721/708 719/726/708 +f 714/723/709 712/720/709 706/714/709 +f 717/722/36 709/717/36 713/724/36 +f 447/467/91 446/466/91 243/249/91 +f 713/724/709 712/720/709 714/723/709 +f 656/668/710 582/608/710 584/610/710 +f 582/608/711 137/144/711 537/553/711 +f 582/608/712 196/217/712 137/144/712 +f 536/552/713 537/553/713 137/144/713 +f 19/21/70 87/87/70 26/36/70 +f 19/21/714 27/28/714 87/87/714 +f 76/86/715 26/36/715 87/87/715 +f 27/28/716 77/90/716 87/87/716 +f 77/90/717 27/28/717 170/27/717 +f 20/20/718 84/83/718 19/21/718 +f 18/41/719 19/21/719 84/83/719 +f 61/107/48 64/192/48 59/108/48 +f 119/240/21 64/192/21 61/107/21 +f 383/242/21 90/100/21 195/241/21 +f 40/39/720 39/38/720 173/115/720 +f 82/116/721 81/171/721 173/115/721 +f 577/60/722 63/62/722 60/71/722 +f 109/120/723 652/122/723 107/61/723 +f 67/118/724 521/117/724 66/59/724 +f 520/57/725 66/59/725 521/117/725 +f 521/117/726 103/106/726 72/58/726 +f 654/607/727 653/119/727 66/59/727 +f 67/118/728 66/59/728 653/119/728 +f 107/61/729 397/40/729 38/109/729 +f 722/247/730 721/384/730 359/388/730 +f 721/384/380 121/543/380 120/387/380 +f 79/80/731 530/544/731 471/491/731 +f 659/667/732 530/544/732 529/78/732 +f 404/15/733 530/544/733 659/667/733 +f 404/15/734 663/420/734 403/419/734 +f 346/367/21 345/364/21 465/550/21 +f 345/364/21 460/488/21 465/550/21 +f 460/488/21 345/364/21 350/370/21 +f 345/364/256 344/363/256 350/370/256 +f 345/364/13 346/367/13 341/360/13 +f 346/367/21 464/493/21 352/372/21 +f 346/367/21 465/550/21 464/493/21 +f 349/366/41 346/367/41 352/372/41 +f 57/64/735 585/49/735 43/46/735 +f 560/587/491 572/602/491 49/50/491 +f 566/592/41 54/600/41 572/602/41 +f 572/602/21 43/46/21 49/50/21 +f 572/602/21 44/34/21 48/47/21 +f 583/609/21 569/599/21 585/49/21 +f 571/597/19 58/598/19 54/600/19 +f 47/45/21 44/34/21 54/600/21 +f 58/598/21 47/45/21 54/600/21 +f 570/595/355 568/601/355 51/596/355 +f 583/609/21 51/596/21 568/601/21 +f 583/609/21 50/53/21 51/596/21 +f 51/596/21 50/53/21 53/52/21 +f 52/51/21 47/45/21 53/52/21 +f 58/598/21 53/52/21 47/45/21 +f 565/594/68 53/52/68 58/598/68 +f 715/340/736 318/339/736 714/723/736 +f 318/339/737 319/336/737 714/723/737 +f 319/336/738 713/724/738 714/723/738 +f 319/336/739 316/334/739 713/724/739 +f 713/724/740 316/334/740 717/722/740 +f 316/334/741 324/342/741 717/722/741 +f 719/726/742 327/350/742 720/727/742 +f 324/342/743 323/344/743 716/721/743 +f 716/721/744 323/344/744 719/726/744 +f 323/344/745 327/350/745 719/726/745 +f 717/722/746 324/342/746 716/721/746 +f 720/727/747 321/345/747 718/725/747 +f 327/350/748 321/345/748 720/727/748 +f 321/345/749 322/338/749 718/725/749 +f 322/338/750 715/340/750 718/725/750 +f 395/472/751 37/132/751 502/444/751 +f 224/431/752 225/235/752 226/271/752 +f 224/431/753 228/450/753 225/235/753 +f 228/450/168 259/267/168 225/235/168 +f 257/434/754 150/451/754 154/164/754 +f 152/154/344 154/164/344 150/451/344 +f 164/163/344 154/164/344 152/154/344 +f 151/155/74 126/136/74 153/142/74 +f 127/452/755 131/134/755 126/136/755 +f 261/269/756 131/134/756 127/452/756 +f 267/276/756 131/134/756 261/269/756 +f 427/448/365 429/449/365 426/447/365 +f 429/449/365 428/728/365 426/447/365 +f 426/447/757 428/728/757 452/475/757 +f 428/728/758 450/527/758 452/475/758 +f 450/527/394 513/528/394 452/475/394 +f 303/320/759 302/282/759 308/326/759 +f 308/326/759 302/282/759 300/424/759 +f 407/423/760 300/424/760 416/281/760 +f 416/281/761 430/283/761 407/423/761 +f 425/446/761 407/423/761 430/283/761 +f 371/389/762 261/269/762 151/155/762 +f 98/99/763 97/98/763 96/469/763 +f 108/114/764 96/469/764 97/98/764 +f 104/110/764 108/114/764 97/98/764 +f 377/404/140 380/399/140 362/393/140 +f 514/530/389 380/399/389 381/413/389 +f 496/511/196 236/515/196 497/512/196 +f 724/180/765 423/33/765 56/307/765 +f 375/392/766 513/528/766 429/449/766 +f 592/615/196 504/518/196 505/616/196 +f 455/477/196 459/314/196 453/14/196 +f 285/305/196 281/303/196 284/304/196 +f 409/429/196 402/418/196 663/420/196 +f 17/17/196 6/8/196 11/18/196 +f 479/498/196 510/521/196 140/145/196 +f 367/397/196 519/534/196 227/234/196 +f 438/463/196 217/231/196 369/395/196 +f 379/394/196 378/310/196 140/145/196 +f 175/177/767 113/129/767 115/123/767 +f 660/669/768 115/123/768 94/97/768 +f 117/188/121 113/129/121 122/131/121 +f 76/86/769 73/88/769 122/131/769 +f 77/90/36 80/89/36 76/86/36 +f 141/146/421 179/187/421 77/90/421 +f 180/185/120 141/146/120 83/82/120 +f 177/183/41 83/82/41 94/97/41 +f 94/97/13 115/123/13 114/125/13 +f 116/124/43 115/123/43 113/129/43 +f 453/14/770 663/420/770 404/15/770 +f 101/102/771 24/105/771 23/490/771 +f 235/24/772 591/246/772 586/25/772 +f 498/26/773 489/505/773 235/24/773 +f 585/49/21 569/599/21 49/50/21 +f 271/128/774 249/256/774 188/126/774 +f 249/256/149 252/261/149 188/126/149 +f 495/181/196 114/125/196 727/184/196 +f 507/182/775 591/246/775 235/24/775 +f 187/198/776 183/194/776 361/201/776 +f 183/194/777 134/139/777 361/201/777 +f 134/139/385 133/138/385 361/201/385 +f 361/201/778 360/173/778 525/524/778 +f 360/173/385 144/149/385 148/153/385 +f 148/153/779 385/411/779 360/173/779 +f 385/411/780 389/318/780 360/173/780 +f 360/173/781 389/318/781 199/209/781 +f 578/542/782 476/494/782 361/201/782 +f 476/494/783 472/454/783 361/201/783 +f 472/454/784 187/198/784 361/201/784 +f 199/209/785 198/208/785 360/173/785 +f 198/208/786 399/415/786 360/173/786 +f 360/173/787 399/415/787 398/414/787 +f 483/200/788 482/501/788 361/201/788 +f 482/501/789 576/523/789 361/201/789 +f 576/523/132 578/542/132 361/201/132 +f 398/414/790 158/157/790 360/173/790 +f 158/157/791 157/156/791 360/173/791 +f 360/173/792 157/156/792 525/524/792 +f 525/524/789 522/199/789 361/201/789 +f 110/176/104 211/315/104 210/219/104 +f 188/126/149 252/261/149 383/242/149 +f 235/24/153 119/240/153 721/384/153 +f 721/384/153 722/247/153 235/24/153 +f 235/24/62 489/505/62 274/127/62 +f 416/281/176 300/424/176 302/282/176 +f 291/302/793 55/48/793 293/306/793 +f 424/445/794 451/474/794 381/413/794 +f 451/474/795 515/531/795 381/413/795 +f 381/413/196 378/310/196 424/445/196 +f 424/445/196 378/310/196 417/309/196 +f 378/310/196 301/325/196 307/308/196 +f 301/325/196 306/324/196 307/308/196 +f 293/306/41 48/47/41 724/180/41 +f 48/47/41 44/34/41 724/180/41 +f 30/54/196 29/56/196 388/476/196 +f 388/476/196 130/205/196 6/8/196 +f 130/205/196 139/207/196 11/18/196 +f 139/207/196 194/204/196 11/18/196 +f 11/18/196 6/8/196 130/205/196 +f 6/8/196 409/429/196 388/476/196 +f 409/429/196 663/420/196 388/476/196 +f 162/161/196 30/54/196 388/476/196 +f 211/315/196 160/159/196 388/476/196 +f 160/159/196 162/161/196 388/476/196 +f 418/437/196 292/316/196 286/300/196 +f 292/316/196 296/313/196 281/303/196 +f 286/300/196 292/316/196 281/303/196 +f 296/313/196 211/315/196 459/314/196 +f 211/315/196 388/476/196 663/420/196 +f 453/14/196 211/315/196 663/420/196 +f 459/314/196 281/303/196 296/313/196 +f 200/210/202 199/209/202 202/319/202 +f 202/319/204 199/209/204 389/318/204 +f 364/374/267 216/220/267 213/222/267 +f 384/380/262 385/411/262 148/153/262 +f 359/388/796 357/376/796 722/247/796 +f 365/382/797 373/383/797 371/389/797 +f 356/386/798 355/401/798 363/391/798 +f 375/392/267 370/385/267 363/391/267 +f 379/394/281 268/277/281 262/270/281 +f 231/238/799 469/487/799 468/369/799 +f 468/369/800 386/406/800 231/238/800 +f 374/400/196 140/145/196 376/402/196 +f 140/145/196 381/413/196 376/402/196 +f 224/431/306 226/271/306 517/432/306 +f 265/273/307 264/274/307 257/434/307 +f 400/416/312 399/415/312 410/435/312 +f 399/415/314 198/208/314 201/436/314 +f 419/438/315 420/440/315 55/48/315 +f 422/442/99 123/190/99 212/375/99 +f 123/190/99 75/75/99 212/375/99 +f 723/244/801 233/443/801 360/173/801 +f 210/219/802 291/302/802 724/180/802 +f 106/112/104 210/219/104 212/375/104 +f 512/433/328 259/267/328 228/450/328 +f 150/451/329 257/434/329 264/274/329 +f 127/452/330 126/136/330 151/155/330 +f 183/194/339 3/6/339 2/2/339 +f 221/225/176 223/551/176 445/483/176 +f 443/484/176 242/549/176 244/254/176 +f 464/493/803 465/550/803 725/548/803 +f 230/237/259 394/471/259 386/406/259 +f 462/492/804 79/80/804 471/491/804 +f 354/379/21 347/373/21 467/485/21 +f 366/405/196 374/400/196 236/515/196 +f 374/400/196 376/402/196 239/290/196 +f 236/515/196 374/400/196 239/290/196 +f 118/403/196 234/258/196 16/272/196 +f 376/402/196 118/403/196 239/290/196 +f 505/616/196 504/518/196 366/405/196 +f 236/515/196 501/514/196 366/405/196 +f 501/514/196 505/616/196 366/405/196 +f 14/291/196 239/290/196 118/403/196 +f 274/127/805 489/505/805 237/504/805 +f 470/407/806 499/517/806 723/244/806 +f 231/238/806 470/407/806 723/244/806 +f 486/522/384 575/605/384 576/523/384 +f 157/156/385 310/328/385 313/327/385 +f 508/526/387 505/616/387 501/514/387 +f 450/527/140 428/728/140 429/449/140 +f 158/157/385 398/414/385 415/536/385 +f 522/199/384 511/525/384 487/519/384 +f 16/272/196 234/258/196 251/260/196 +f 498/26/807 586/25/807 508/526/807 +f 15/257/808 249/256/808 271/128/808 +f 15/257/412 25/287/412 14/291/412 +f 239/290/196 14/291/196 277/289/196 +f 214/221/809 221/225/809 213/222/809 +f 221/225/810 444/227/810 213/222/810 +f 442/465/810 244/254/810 213/222/810 +f 244/254/811 241/253/811 213/222/811 +f 241/253/812 108/114/812 213/222/812 +f 213/222/813 444/227/813 442/465/813 +f 166/381/424 148/153/424 146/151/424 +f 725/548/814 465/550/814 533/547/814 +f 436/453/262 186/462/262 187/198/262 +f 726/77/815 725/548/815 730/729/815 +f 476/494/314 578/542/314 526/538/314 +f 236/515/371 239/290/371 238/285/371 +f 649/573/816 552/577/816 549/575/816 +f 656/668/817 584/610/817 658/666/817 +f 584/610/818 57/64/818 658/666/818 +f 78/79/616 464/493/616 726/77/616 +f 196/217/819 730/729/819 725/548/819 +f 659/667/820 529/78/820 726/77/820 +f 241/253/140 95/470/140 96/469/140 +f 287/63/821 279/292/821 657/665/821 +f 582/608/822 656/668/822 196/217/822 +f 383/242/196 88/92/196 728/93/196 +f 79/80/823 529/78/823 530/544/823 +f 659/667/824 454/16/824 404/15/824 +f 404/15/825 408/425/825 530/544/825 +f 572/602/21 48/47/21 43/46/21 +f 572/602/21 54/600/21 44/34/21 +f 264/274/826 259/267/826 371/389/826 +f 259/267/827 512/433/827 371/389/827 +f 371/389/140 262/270/140 261/269/140 +f 151/155/828 152/154/828 371/389/828 +f 152/154/829 264/274/829 371/389/829 +f 377/404/140 381/413/140 380/399/140 +f 496/511/196 501/514/196 236/515/196 +f 729/243/830 723/244/830 358/378/830 +f 430/283/831 302/282/831 375/392/831 +f 302/282/832 305/322/832 375/392/832 +f 375/392/833 380/399/833 513/528/833 +f 429/449/831 430/283/831 375/392/831 +f 592/615/196 593/617/196 504/518/196 +f 455/477/196 456/481/196 459/314/196 +f 285/305/196 286/300/196 281/303/196 +f 409/429/196 405/421/196 402/418/196 +f 17/17/196 8/10/196 6/8/196 +f 155/166/196 161/160/196 160/159/196 +f 160/159/196 140/145/196 314/331/196 +f 140/145/196 138/143/196 10/12/196 +f 140/145/196 10/12/196 13/13/196 +f 390/408/196 155/166/196 160/159/196 +f 205/213/196 299/312/196 160/159/196 +f 299/312/196 390/408/196 160/159/196 +f 412/426/196 411/428/196 160/159/196 +f 411/428/196 203/211/196 160/159/196 +f 203/211/196 205/213/196 160/159/196 +f 140/145/196 13/13/196 190/197/196 +f 140/145/196 190/197/196 433/457/196 +f 314/331/196 431/458/196 160/159/196 +f 431/458/196 412/426/196 160/159/196 +f 140/145/196 433/457/196 475/495/196 +f 573/603/196 140/145/196 528/541/196 +f 475/495/196 528/541/196 140/145/196 +f 573/603/196 484/502/196 140/145/196 +f 484/502/196 479/498/196 140/145/196 +f 510/521/196 309/332/196 140/145/196 +f 309/332/196 314/331/196 140/145/196 +f 129/140/196 132/137/196 379/394/196 +f 132/137/196 269/278/196 268/277/196 +f 268/277/196 379/394/196 132/137/196 +f 379/394/196 368/396/196 149/165/196 +f 227/234/196 263/233/196 368/396/196 +f 263/233/196 149/165/196 368/396/196 +f 227/234/196 368/396/196 367/397/196 +f 149/165/196 129/140/196 379/394/196 +f 110/176/196 111/175/196 91/96/196 +f 92/95/196 243/249/196 211/315/196 +f 243/249/196 446/466/196 211/315/196 +f 110/176/196 91/96/196 211/315/196 +f 91/96/196 92/95/196 211/315/196 +f 369/395/196 211/315/196 446/466/196 +f 217/231/196 218/230/196 215/229/196 +f 215/229/196 369/395/196 217/231/196 +f 446/466/196 438/463/196 369/395/196 +f 378/310/196 381/413/196 140/145/196 +f 140/145/196 160/159/196 368/396/196 +f 160/159/196 211/315/196 369/395/196 +f 368/396/196 160/159/196 369/395/196 +f 368/396/196 379/394/196 140/145/196 +f 727/184/196 114/125/196 116/124/196 +f 728/93/196 88/92/196 90/100/196 +f 89/91/609 69/67/609 88/92/609 +f 495/181/834 727/184/834 116/124/834 +f 177/183/13 94/97/13 114/125/13 +f 729/243/835 208/216/835 231/238/835 +f 137/144/836 209/377/836 364/374/836 +f 364/374/837 212/375/837 75/75/837 +f 34/81/838 137/144/838 364/374/838 +f 233/443/21 499/517/21 470/407/21 +f 494/510/196 240/248/196 722/247/196 +f 383/242/834 728/93/834 90/100/834 +f 721/384/839 119/240/839 121/543/839 +f 101/102/840 9/11/840 24/105/840 +f 359/388/841 209/377/841 357/376/841 +f 726/77/842 464/493/842 725/548/842 +f 196/217/843 659/667/843 730/729/843 +f 723/244/830 360/173/830 358/378/830 +f 358/378/844 196/217/844 208/216/844 +f 208/216/845 729/243/845 358/378/845 +l 295 296 diff --git a/assets/models/test.obj b/assets/models/test.obj new file mode 100644 index 0000000..128381d --- /dev/null +++ b/assets/models/test.obj @@ -0,0 +1,358 @@ +# Blender v3.0.1 OBJ File: 'test.blend' +# www.blender.org +mtllib test.mtl +o Cylinder +v 0.000000 -1.000000 -1.000000 +v 0.000000 1.000000 -1.000000 +v 0.195090 -1.000000 -0.980785 +v 0.195090 1.000000 -0.980785 +v 0.382683 -1.000000 -0.923880 +v 0.382683 1.000000 -0.923880 +v 0.555570 -1.000000 -0.831470 +v 0.555570 1.000000 -0.831470 +v 0.707107 -1.000000 -0.707107 +v 0.707107 1.000000 -0.707107 +v 0.831470 -1.000000 -0.555570 +v 0.831470 1.000000 -0.555570 +v 0.923880 -1.000000 -0.382683 +v 0.923880 1.000000 -0.382683 +v 0.980785 -1.000000 -0.195090 +v 0.980785 1.000000 -0.195090 +v 1.000000 -1.000000 0.000000 +v 1.000000 1.000000 0.000000 +v 0.980785 -1.000000 0.195090 +v 0.980785 1.000000 0.195090 +v 0.923880 -1.000000 0.382683 +v 0.923880 1.000000 0.382683 +v 0.831470 -1.000000 0.555570 +v 0.831470 1.000000 0.555570 +v 0.707107 -1.000000 0.707107 +v 0.707107 1.000000 0.707107 +v 0.555570 -1.000000 0.831470 +v 0.555570 1.000000 0.831470 +v 0.382683 -1.000000 0.923880 +v 0.382683 1.000000 0.923880 +v 0.195090 -1.000000 0.980785 +v 0.195090 1.000000 0.980785 +v -0.000000 -1.000000 1.000000 +v -0.000000 1.000000 1.000000 +v -0.195090 -1.000000 0.980785 +v -0.195090 1.000000 0.980785 +v -0.382683 -1.000000 0.923880 +v -0.382683 1.000000 0.923880 +v -0.555570 -1.000000 0.831470 +v -0.555570 1.000000 0.831470 +v -0.707107 -1.000000 0.707107 +v -0.707107 1.000000 0.707107 +v -0.831469 -1.000000 0.555570 +v -0.831469 1.000000 0.555570 +v -0.923880 -1.000000 0.382684 +v -0.923880 1.000000 0.382684 +v -0.980785 -1.000000 0.195090 +v -0.980785 1.000000 0.195090 +v -1.000000 -1.000000 -0.000000 +v -1.000000 1.000000 -0.000000 +v -0.980785 -1.000000 -0.195090 +v -0.980785 1.000000 -0.195090 +v -0.923879 -1.000000 -0.382684 +v -0.923879 1.000000 -0.382684 +v -0.831470 -1.000000 -0.555570 +v -0.831470 1.000000 -0.555570 +v -0.707107 -1.000000 -0.707107 +v -0.707107 1.000000 -0.707107 +v -0.555570 -1.000000 -0.831470 +v -0.555570 1.000000 -0.831470 +v -0.382683 -1.000000 -0.923880 +v -0.382683 1.000000 -0.923880 +v -0.195090 -1.000000 -0.980785 +v -0.195090 1.000000 -0.980785 +vt 1.000000 0.997706 +vt 0.968750 0.002263 +vt 1.000000 0.002263 +vt 0.968750 0.997706 +vt 0.937500 0.002263 +vt 0.937500 0.997706 +vt 0.906250 0.002263 +vt 0.906250 0.997706 +vt 0.875000 0.002263 +vt 0.875000 0.997706 +vt 0.843750 0.002263 +vt 0.843750 0.997706 +vt 0.812500 0.002263 +vt 0.812500 0.997706 +vt 0.781250 0.002263 +vt 0.781250 0.997706 +vt 0.750000 0.002263 +vt 0.750000 0.997706 +vt 0.718750 0.002263 +vt 0.718750 0.997706 +vt 0.687500 0.002263 +vt 0.687500 0.997706 +vt 0.656250 0.002263 +vt 0.656250 0.997706 +vt 0.625000 0.002263 +vt 0.625000 0.997706 +vt 0.593750 0.002263 +vt 0.593750 0.997706 +vt 0.562500 0.002263 +vt 0.562500 0.997706 +vt 0.531250 0.002263 +vt 0.531250 0.997706 +vt 0.500000 0.002263 +vt 0.500000 0.997706 +vt 0.468750 0.002263 +vt 0.468750 0.997706 +vt 0.437500 0.002263 +vt 0.437500 0.997706 +vt 0.406250 0.002263 +vt 0.406250 0.997706 +vt 0.375000 0.002263 +vt 0.375000 0.997706 +vt 0.343750 0.002263 +vt 0.343750 0.997706 +vt 0.312500 0.002263 +vt 0.312500 0.997706 +vt 0.281250 0.002263 +vt 0.281250 0.997706 +vt 0.250000 0.002263 +vt 0.250000 0.997706 +vt 0.218750 0.002263 +vt 0.218750 0.997706 +vt 0.187500 0.002263 +vt 0.187500 0.997706 +vt 0.156250 0.002263 +vt 0.156250 0.997706 +vt 0.125000 0.002263 +vt 0.125000 0.997706 +vt 0.093750 0.002263 +vt 0.093750 0.997706 +vt 0.062500 0.002263 +vt 0.181687 0.201134 +vt 0.247276 0.042790 +vt 0.405620 0.108378 +vt 0.062500 0.997706 +vt 0.031250 0.002263 +vt 0.031250 0.997706 +vt 0.000000 0.002263 +vt 0.799411 0.155388 +vt 0.708963 0.020022 +vt 0.573596 0.110470 +vt 0.340032 0.266722 +vt 0.317297 0.273619 +vt 0.247276 0.266722 +vt 0.293654 0.275948 +vt 0.270010 0.273619 +vt 0.226323 0.255523 +vt 0.207958 0.240451 +vt 0.192886 0.222086 +vt 0.174791 0.178399 +vt 0.172462 0.154756 +vt 0.174791 0.131113 +vt 0.181687 0.108378 +vt 0.192886 0.087426 +vt 0.207958 0.069061 +vt 0.226323 0.053989 +vt 0.270010 0.035893 +vt 0.293654 0.033564 +vt 0.317297 0.035893 +vt 0.340032 0.042790 +vt 0.360984 0.053989 +vt 0.379349 0.069061 +vt 0.394421 0.087426 +vt 0.412516 0.131113 +vt 0.414845 0.154756 +vt 0.412516 0.178399 +vt 0.405620 0.201134 +vt 0.394421 0.222086 +vt 0.379349 0.240451 +vt 0.360984 0.255523 +vt 0.000000 0.997706 +vt 0.664045 0.245837 +vt 0.686504 0.248049 +vt 0.708963 0.245837 +vt 0.730558 0.239286 +vt 0.750461 0.228648 +vt 0.767906 0.214331 +vt 0.782222 0.196886 +vt 0.792861 0.176984 +vt 0.801624 0.132929 +vt 0.799411 0.110470 +vt 0.792861 0.088875 +vt 0.782222 0.068972 +vt 0.767906 0.051527 +vt 0.750461 0.037211 +vt 0.730558 0.026573 +vt 0.686504 0.017810 +vt 0.664045 0.020022 +vt 0.642450 0.026573 +vt 0.622547 0.037211 +vt 0.605102 0.051527 +vt 0.590786 0.068972 +vt 0.580147 0.088875 +vt 0.571384 0.132929 +vt 0.573596 0.155388 +vt 0.580147 0.176984 +vt 0.590786 0.196886 +vt 0.605102 0.214331 +vt 0.622547 0.228648 +vt 0.642450 0.239286 +vn 0.0980 0.0000 -0.9952 +vn 0.2903 0.0000 -0.9569 +vn 0.4714 0.0000 -0.8819 +vn 0.6344 0.0000 -0.7730 +vn 0.7730 0.0000 -0.6344 +vn 0.8819 0.0000 -0.4714 +vn 0.9569 0.0000 -0.2903 +vn 0.9952 0.0000 -0.0980 +vn 0.9952 0.0000 0.0980 +vn 0.9569 0.0000 0.2903 +vn 0.8819 0.0000 0.4714 +vn 0.7730 0.0000 0.6344 +vn 0.6344 0.0000 0.7730 +vn 0.4714 0.0000 0.8819 +vn 0.2903 0.0000 0.9569 +vn 0.0980 0.0000 0.9952 +vn -0.0980 0.0000 0.9952 +vn -0.2903 0.0000 0.9569 +vn -0.4714 0.0000 0.8819 +vn -0.6344 0.0000 0.7730 +vn -0.7730 0.0000 0.6344 +vn -0.8819 0.0000 0.4714 +vn -0.9569 0.0000 0.2903 +vn -0.9952 0.0000 0.0980 +vn -0.9952 0.0000 -0.0980 +vn -0.9569 0.0000 -0.2903 +vn -0.8819 0.0000 -0.4714 +vn -0.7730 0.0000 -0.6344 +vn -0.6344 0.0000 -0.7730 +vn -0.4714 0.0000 -0.8819 +vn 0.0000 1.0000 0.0000 +vn -0.2903 0.0000 -0.9569 +vn -0.0980 0.0000 -0.9952 +vn 0.0000 -1.0000 0.0000 +usemtl Material.001 +s off +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 5/5/2 3/2/2 +f 6/6/3 7/7/3 5/5/3 +f 8/8/4 9/9/4 7/7/4 +f 10/10/5 11/11/5 9/9/5 +f 12/12/6 13/13/6 11/11/6 +f 14/14/7 15/15/7 13/13/7 +f 16/16/8 17/17/8 15/15/8 +f 18/18/9 19/19/9 17/17/9 +f 20/20/10 21/21/10 19/19/10 +f 22/22/11 23/23/11 21/21/11 +f 24/24/12 25/25/12 23/23/12 +f 26/26/13 27/27/13 25/25/13 +f 28/28/14 29/29/14 27/27/14 +f 30/30/15 31/31/15 29/29/15 +f 32/32/16 33/33/16 31/31/16 +f 34/34/17 35/35/17 33/33/17 +f 36/36/18 37/37/18 35/35/18 +f 38/38/19 39/39/19 37/37/19 +f 40/40/20 41/41/20 39/39/20 +f 42/42/21 43/43/21 41/41/21 +f 44/44/22 45/45/22 43/43/22 +f 46/46/23 47/47/23 45/45/23 +f 48/48/24 49/49/24 47/47/24 +f 50/50/25 51/51/25 49/49/25 +f 52/52/26 53/53/26 51/51/26 +f 54/54/27 55/55/27 53/53/27 +f 56/56/28 57/57/28 55/55/28 +f 58/58/29 59/59/29 57/57/29 +f 60/60/30 61/61/30 59/59/30 +f 54/62/31 38/63/31 22/64/31 +f 62/65/32 63/66/32 61/61/32 +f 64/67/33 1/68/33 63/66/33 +f 15/69/34 31/70/34 47/71/34 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 6/6/2 5/5/2 +f 6/6/3 8/8/3 7/7/3 +f 8/8/4 10/10/4 9/9/4 +f 10/10/5 12/12/5 11/11/5 +f 12/12/6 14/14/6 13/13/6 +f 14/14/7 16/16/7 15/15/7 +f 16/16/8 18/18/8 17/17/8 +f 18/18/9 20/20/9 19/19/9 +f 20/20/10 22/22/10 21/21/10 +f 22/22/11 24/24/11 23/23/11 +f 24/24/12 26/26/12 25/25/12 +f 26/26/13 28/28/13 27/27/13 +f 28/28/14 30/30/14 29/29/14 +f 30/30/15 32/32/15 31/31/15 +f 32/32/16 34/34/16 33/33/16 +f 34/34/17 36/36/17 35/35/17 +f 36/36/18 38/38/18 37/37/18 +f 38/38/19 40/40/19 39/39/19 +f 40/40/20 42/42/20 41/41/20 +f 42/42/21 44/44/21 43/43/21 +f 44/44/22 46/46/22 45/45/22 +f 46/46/23 48/48/23 47/47/23 +f 48/48/24 50/50/24 49/49/24 +f 50/50/25 52/52/25 51/51/25 +f 52/52/26 54/54/26 53/53/26 +f 54/54/27 56/56/27 55/55/27 +f 56/56/28 58/58/28 57/57/28 +f 58/58/29 60/60/29 59/59/29 +f 60/60/30 62/65/30 61/61/30 +f 6/72/31 4/73/31 62/74/31 +f 4/73/31 2/75/31 62/74/31 +f 2/75/31 64/76/31 62/74/31 +f 62/74/31 60/77/31 58/78/31 +f 58/78/31 56/79/31 62/74/31 +f 56/79/31 54/62/31 62/74/31 +f 54/62/31 52/80/31 50/81/31 +f 50/81/31 48/82/31 46/83/31 +f 46/83/31 44/84/31 42/85/31 +f 42/85/31 40/86/31 38/63/31 +f 38/63/31 36/87/31 34/88/31 +f 34/88/31 32/89/31 30/90/31 +f 30/90/31 28/91/31 26/92/31 +f 26/92/31 24/93/31 22/64/31 +f 22/64/31 20/94/31 18/95/31 +f 18/95/31 16/96/31 14/97/31 +f 14/97/31 12/98/31 10/99/31 +f 10/99/31 8/100/31 6/72/31 +f 54/62/31 50/81/31 38/63/31 +f 50/81/31 46/83/31 38/63/31 +f 46/83/31 42/85/31 38/63/31 +f 38/63/31 34/88/31 30/90/31 +f 30/90/31 26/92/31 38/63/31 +f 26/92/31 22/64/31 38/63/31 +f 22/64/31 18/95/31 6/72/31 +f 18/95/31 14/97/31 6/72/31 +f 14/97/31 10/99/31 6/72/31 +f 6/72/31 62/74/31 54/62/31 +f 6/72/31 54/62/31 22/64/31 +f 62/65/32 64/67/32 63/66/32 +f 64/67/33 2/101/33 1/68/33 +f 63/102/34 1/103/34 3/104/34 +f 3/104/34 5/105/34 7/106/34 +f 7/106/34 9/107/34 11/108/34 +f 11/108/34 13/109/34 15/69/34 +f 15/69/34 17/110/34 19/111/34 +f 19/111/34 21/112/34 23/113/34 +f 23/113/34 25/114/34 27/115/34 +f 27/115/34 29/116/34 31/70/34 +f 31/70/34 33/117/34 35/118/34 +f 35/118/34 37/119/34 39/120/34 +f 39/120/34 41/121/34 43/122/34 +f 43/122/34 45/123/34 47/71/34 +f 47/71/34 49/124/34 51/125/34 +f 51/125/34 53/126/34 47/71/34 +f 53/126/34 55/127/34 47/71/34 +f 55/127/34 57/128/34 63/102/34 +f 57/128/34 59/129/34 63/102/34 +f 59/129/34 61/130/34 63/102/34 +f 63/102/34 3/104/34 15/69/34 +f 3/104/34 7/106/34 15/69/34 +f 7/106/34 11/108/34 15/69/34 +f 15/69/34 19/111/34 23/113/34 +f 23/113/34 27/115/34 15/69/34 +f 27/115/34 31/70/34 15/69/34 +f 31/70/34 35/118/34 47/71/34 +f 35/118/34 39/120/34 47/71/34 +f 39/120/34 43/122/34 47/71/34 +f 47/71/34 55/127/34 63/102/34 +f 63/102/34 15/69/34 47/71/34 diff --git a/assets/shader/default.fsh.glsl b/assets/shader/default.fsh.glsl new file mode 100644 index 0000000..6221322 --- /dev/null +++ b/assets/shader/default.fsh.glsl @@ -0,0 +1,22 @@ +#version 100 +precision mediump float; + +varying vec2 texcoord; +varying vec3 v_normal; +varying float v_position; +uniform sampler2D u_image0; +uniform vec2 fog; + +void main() { + + float fogAmount = smoothstep(fog.x, fog.y, v_position); + + float light = -dot(vec3(0.0, -1.0, 0.0), v_normal) / 3.0 + 1.0 + (1.0/3.0); + + gl_FragColor = + texture2D(u_image0, texcoord) + * vec4(1.0 - fogAmount, 1.0 - fogAmount, 1.0 - fogAmount, 1.0 - fogAmount) + * vec4(light, light, light, 1.0); + if(gl_FragColor.a < 0.0000001) + discard; +} \ No newline at end of file diff --git a/assets/shader/default.vsh.glsl b/assets/shader/default.vsh.glsl new file mode 100644 index 0000000..0360638 --- /dev/null +++ b/assets/shader/default.vsh.glsl @@ -0,0 +1,30 @@ +#version 100 +precision mediump float; + +attribute vec3 pos; +attribute vec2 uv; +attribute vec3 normal; +uniform vec3 wpos; + +varying vec2 texcoord; +varying vec3 v_normal; +varying float v_position; + +uniform mat4 view; +uniform mat4 proj; + +void main() { + mat4 drawProj = mat4( + vec4(-1.0, 0.0, 0.0, 0.0), + vec4(0.0, 1.0, 0.0, 0.0), + vec4(0.0, 0.0, -1.0, 0.0), + vec4(-wpos.x, wpos.y, -wpos.z, 1.0) + ); + texcoord = uv; + + v_normal = normal; + + gl_Position = proj * view * drawProj * vec4(pos, 1.0); + + v_position = length((view * drawProj * vec4(pos, 1.0)).xyz); +} \ No newline at end of file diff --git a/bots/MyBot.class b/bots/MyBot.class new file mode 100644 index 0000000..110888b Binary files /dev/null and b/bots/MyBot.class differ diff --git a/bots/MyBot.java b/bots/MyBot.java new file mode 100644 index 0000000..7f1f6a2 --- /dev/null +++ b/bots/MyBot.java @@ -0,0 +1,39 @@ +package bots; + +import javaState.Bot; +import javaState.Controller; +import javaState.GameState; + +public class MyBot extends Bot { + + float dir = 0; + + @Override + public String getStudentName() { + return "Max Mustermann"; + } + + @Override + public int getMatrikel() { + return 1337; + } + + @Override + public String getName() { + return "example Bot"; + } + + @Override + public void init(GameState state) { + + } + + @Override + public Controller executeTurn(GameState state, Controller controller) { + dir+=0.01; + controller.dirX = Math.cos(dir); + controller.dirY = Math.sin(dir); + + return controller; + } +} \ No newline at end of file diff --git a/javaState/Bot.class b/javaState/Bot.class new file mode 100644 index 0000000..ba39c31 Binary files /dev/null and b/javaState/Bot.class differ diff --git a/javaState/Bot.java b/javaState/Bot.java new file mode 100644 index 0000000..f20f2cf --- /dev/null +++ b/javaState/Bot.java @@ -0,0 +1,13 @@ +package javaState; + +public abstract class Bot extends Player{ + + public abstract String getStudentName(); + + public abstract int getMatrikel(); + + @Override + public final PlayerType getType() { + return PlayerType.AI; + } +} diff --git a/javaState/Controller.class b/javaState/Controller.class new file mode 100644 index 0000000..0790087 Binary files /dev/null and b/javaState/Controller.class differ diff --git a/javaState/Controller.java b/javaState/Controller.java new file mode 100644 index 0000000..df9b769 --- /dev/null +++ b/javaState/Controller.java @@ -0,0 +1,10 @@ +package javaState; + +public class Controller { + public double dirX = 0; + public double dirY = 0; + + public String toString() { + return "[" + dirX + ", " + dirY + "]"; + } +} diff --git a/javaState/GameState.class b/javaState/GameState.class new file mode 100644 index 0000000..f85c226 Binary files /dev/null and b/javaState/GameState.class differ diff --git a/javaState/GameState.java b/javaState/GameState.java new file mode 100644 index 0000000..1d97eb6 --- /dev/null +++ b/javaState/GameState.java @@ -0,0 +1,7 @@ +package javaState; + +public class GameState { + public double posX = 0; + public double posY = 0; + +} diff --git a/javaState/Player$PlayerType.class b/javaState/Player$PlayerType.class new file mode 100644 index 0000000..d2ce18d Binary files /dev/null and b/javaState/Player$PlayerType.class differ diff --git a/javaState/Player.class b/javaState/Player.class new file mode 100644 index 0000000..7d7cad8 Binary files /dev/null and b/javaState/Player.class differ diff --git a/javaState/Player.java b/javaState/Player.java new file mode 100644 index 0000000..1c13b00 --- /dev/null +++ b/javaState/Player.java @@ -0,0 +1,20 @@ +package javaState; + +public abstract class Player { + + enum PlayerType{ + Human, + AI + } + + public abstract String getName(); + + public abstract void init(GameState state); + + public abstract Controller executeTurn(GameState state, Controller controller); + + public abstract PlayerType getType(); + + +} + diff --git a/src/game.rs b/src/game.rs new file mode 100644 index 0000000..606b5fd --- /dev/null +++ b/src/game.rs @@ -0,0 +1,61 @@ +use std::collections::HashMap; +use std::vec; + +use self::bots::*; +use self::player::Player; + +mod bots; +mod player; + +pub struct Game { + bots: Vec, + bot_names: HashMap, + pub players: Vec +} + +impl Game { + pub fn new() -> Self { + let mut out = Self { + bots: vec![], + players: vec![], + bot_names: HashMap::new() + }; + + out.load_bots(".".to_string()); + + out + } + + pub fn load_bots(&mut self, classpath: String) { + for cl in list_bot_classes() { + let bot = Bot::new(&cl, &classpath); + if bot.is_ok() { + let mut bot: Bot = bot.unwrap(); + let name = bot.get_name(); + if !self.bot_names.contains_key(&name) { + println!("Loaded Bot: „{}”", name); + self.bot_names.insert(name, self.bots.len()); + self.bots.push(bot); + + } + } + } + } + + pub fn add_player(&mut self, bot: usize) { + self.players.push(Player::new(bot)); + } + + pub fn tick(&mut self){ + for p in self.players.iter_mut(){ + let state = GameState{ + posX: p.x, + posY: p.y, + }; + let cont = self.bots[p.get_bot()].tick(&state); + p.dir_x = cont.dirX; + p.dir_y = cont.dirY; + p.move_player(0.05); + } + } +} diff --git a/src/game/bots.rs b/src/game/bots.rs new file mode 100644 index 0000000..ab23ef9 --- /dev/null +++ b/src/game/bots.rs @@ -0,0 +1,75 @@ +use j4rs::{errors::J4RsError, *}; +use serde::{Deserialize, Serialize}; +use std::fs; + +pub struct Bot { + jvm: Jvm, + bot: Instance, +} + +#[derive(Serialize, Deserialize, Debug)] +#[allow(non_snake_case)] +pub struct Controller { + pub dirX: f64, + pub dirY: f64, +} + +#[derive(Serialize, Deserialize, Debug)] +#[allow(non_snake_case)] +pub struct GameState { + pub posX: f64, + pub posY: f64, +} + +impl Bot { + pub fn new(name: &String, classpath: &String) -> Result { + let jvm = JvmBuilder::new() + .classpath_entries(vec![ + ClasspathEntry::new(classpath), + ClasspathEntry::new("./javaState.jar"), + ]) + .build()?; + let bot = jvm.create_instance(&name, &[])?; + jvm.cast(&bot, "javaState.Bot")?; + Ok(Bot { jvm, bot }) + } + + pub fn get_name(&mut self) -> String { + let result = self.jvm.invoke(&self.bot, "getName", &[]).unwrap(); + self.jvm.to_rust(result).unwrap() + } + pub fn tick(&mut self, state: &GameState) -> Controller { + + let controller = Controller { + dirX: 1.0, + dirY: 0.0, + }; + let j_controller = InvocationArg::new(&controller, "javaState.Controller"); + let j_gamestate = InvocationArg::new(state, "javaState.GameState"); + + let j_ret_controller = self.jvm + .invoke(&self.bot, "executeTurn", &[j_gamestate, j_controller]) + .unwrap(); + let controller2: Controller = self.jvm.to_rust(j_ret_controller).unwrap(); + controller2 + } +} + +pub fn list_bot_classes() -> Vec { + let mut out: Vec = vec![]; + + if let Ok(paths) = fs::read_dir("./bots") { + for path in paths { + if let Ok(p) = path { + if p.path().is_file() { + if p.path().extension().unwrap() == "class" { + let mut str = String::from("bots."); + str.push_str(p.path().file_stem().unwrap().to_str().unwrap()); + out.push(str); + } + } + } + } + } + out +} diff --git a/src/game/player.rs b/src/game/player.rs new file mode 100644 index 0000000..50eca3e --- /dev/null +++ b/src/game/player.rs @@ -0,0 +1,27 @@ +pub struct Player { + pub x: f64, + pub y: f64, + pub dir_x: f64, + pub dir_y: f64, + bot: usize, +} + +impl Player { + pub fn new(bot: usize) -> Self { + Self { + x: 0., + y: 0., + dir_x: 0., + dir_y: 0., + bot + } + } + pub fn move_player(&mut self, delta: f64) { + self.x += self.dir_x * delta; + self.y += self.dir_y * delta; + } + + pub fn get_bot(&self) -> usize{ + self.bot + } +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..4bcb8b5 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,48 @@ +use std::env; + +use game::Game; +use j4rs::{ + jni_sys::{jint, JavaVM}, + prelude::jobject, +}; +use miniquad::*; +use no_stage::NoStage; +use stage::Stage; +use tools::parse_arg; + +mod game; +mod no_stage; +mod stage; +mod tools; +mod render_tools; + +fn main() { + let args = parse_arg(env::args().collect()); + let mut game = Game::new(); + + game.add_player(0); + + if args.contains_key("n") { + let mut no_stage = NoStage::new(game); + no_stage.run(); + } else { + start( + conf::Conf { + window_title: "Jucraft".to_string(), + window_height: 900, + window_width: 900 * 16 / 9, + ..Default::default() + }, + move |mut ctx| Box::new(Stage::new(&mut ctx, game)), + ); + } +} + +const JNI_VERSION_1_6: jint = 0x00010006; + +#[allow(non_snake_case)] +#[no_mangle] +pub extern "C" fn jni_onload(env: *mut JavaVM, _reserved: jobject) -> jint { + j4rs::set_java_vm(env); + JNI_VERSION_1_6 +} diff --git a/src/no_stage.rs b/src/no_stage.rs new file mode 100644 index 0000000..3141c60 --- /dev/null +++ b/src/no_stage.rs @@ -0,0 +1,22 @@ +use crate::game::Game; + + + +pub struct NoStage { + game: Game +} + +impl NoStage{ + pub fn new(game: Game) -> Self { + Self { + game + } + } +} + + +impl NoStage{ + pub fn run(&mut self){ + + } +} \ No newline at end of file diff --git a/src/render_tools.rs b/src/render_tools.rs new file mode 100644 index 0000000..8def567 --- /dev/null +++ b/src/render_tools.rs @@ -0,0 +1,12 @@ +use gl_matrix::common::{Vec3, Vec2}; + +pub mod graphics; +pub mod default_solid_shader; + +#[derive(Debug)] +#[repr(C)] +pub struct Vertex { + pub pos: Vec3, + pub normal: Vec3, + pub uv: Vec2 +} \ No newline at end of file diff --git a/src/render_tools/default_solid_shader.rs b/src/render_tools/default_solid_shader.rs new file mode 100644 index 0000000..ac66523 --- /dev/null +++ b/src/render_tools/default_solid_shader.rs @@ -0,0 +1,28 @@ +use gl_matrix::common::*; +use miniquad::*; + +pub const VERTEX: &str = include_str!(concat!("../../assets/shader/default.vsh.glsl")); + +pub const FRAGMENT: &str = include_str!(concat!("../../assets/shader/default.fsh.glsl")); + +pub fn meta() -> ShaderMeta { + ShaderMeta { + images: vec!["u_image0".to_string()], + uniforms: UniformBlockLayout { + uniforms: vec![ + UniformDesc::new("view", UniformType::Mat4), + UniformDesc::new("proj", UniformType::Mat4), + UniformDesc::new("fog", UniformType::Float2), + UniformDesc::new("wpos", UniformType::Float3), + ], + }, + } +} + +#[repr(C)] +pub struct Uniforms { + pub view: Mat4, + pub proj: Mat4, + pub fog: Vec2, + pub wpos: Vec3, +} diff --git a/src/render_tools/graphics.rs b/src/render_tools/graphics.rs new file mode 100644 index 0000000..2b1c7d4 --- /dev/null +++ b/src/render_tools/graphics.rs @@ -0,0 +1,182 @@ +use std::collections::HashMap; + +use gl_matrix::common::{Vec2, Vec3}; +use miniquad::*; + +use super::Vertex; + +#[derive(Debug)] +pub struct Graphics { + pub textures: HashMap, + pub pipelines: HashMap, + pub models: HashMap, +} + +impl Graphics { + pub fn new() -> Self { + Graphics { + textures: HashMap::new(), + pipelines: HashMap::new(), + models: HashMap::new(), + } + } + pub fn load_texture(&mut self, ctx: &mut Context, bytes: &[u8], id: String) -> Texture { + let decoder = png::Decoder::new(bytes); + let mut reader = decoder.read_info().unwrap(); + let mut buf = vec![0; reader.output_buffer_size()]; + let info = reader.next_frame(&mut buf).unwrap(); + let bytes = &buf[..info.buffer_size()]; + let text = Texture::from_data_and_format( + ctx, + bytes, + TextureParams { + format: TextureFormat::RGBA8, + wrap: TextureWrap::Repeat, + filter: FilterMode::Nearest, + width: info.width, + height: info.height, + }, + ); + + //text.set_filter_min_mag(ctx, FilterMode::Linear, FilterMode::Nearest); + + self.textures.insert(id, text); + + text + } + pub fn add_pipeline(&mut self, pipeline: Pipeline, id: String) { + self.pipelines.insert(id, pipeline); + } + pub fn add_model( + &mut self, + ctx: &mut Context, + vertices: Vec, + indices: Vec, + id: String, + ) { + let vertex_buffer = Buffer::immutable(ctx, BufferType::VertexBuffer, &vertices); + let index_buffer = Buffer::immutable(ctx, BufferType::IndexBuffer, &indices); + self.models + .insert(id, (vertex_buffer, index_buffer, indices.len())); + } + + pub fn add_model_obj(&mut self, ctx: &mut Context, txt: String, id: String) { + let mut vertices: Vec = vec![]; + let mut indices: Vec = vec![]; + let mut verts: Vec = vec![]; + let mut texts: Vec = vec![]; + let mut normals: Vec = vec![]; + 'lloop: for line in txt.lines() { + if line.starts_with("v ") { + verts.push(parse_vec3(String::from(line))); + } else if line.starts_with("vt ") { + texts.push(parse_vec2(String::from(line))); + } else if line.starts_with("vn ") { + normals.push(parse_vec3(String::from(line))); + } else if line.starts_with("f ") { + let words: Vec<&str> = line.split(" ").collect(); + if words.len() < 4 { + continue; + } + let mut local_verts: Vec = vec![]; + + for i in 1..words.len() { + let vert = parse_vertex(String::from(words[i]), &verts, &texts, &normals); + if vert.is_none() { + println!("err"); + continue 'lloop; + } + local_verts.push(vert.unwrap()); + } + if local_verts.len() != 3 { + println!("Skipp not triangulated Face"); + continue; + } + let index_offset = vertices.len() as i32; + let index_amount = local_verts.len() as i32; + for vert in local_verts { + vertices.push(vert); + } + for i in 0..index_amount { + indices.push(index_offset + i); + } + } + } + //println!("verts: {:?}", vertices); + //println!("indecies: {:?}", indices); + let vertex_buffer = Buffer::immutable(ctx, BufferType::VertexBuffer, &vertices); + let index_buffer = Buffer::immutable(ctx, BufferType::IndexBuffer, &indices); + self.models + .insert(id, (vertex_buffer, index_buffer, indices.len())); + } +} + +fn parse_vertex( + text: String, + verts: &Vec, + texts: &Vec, + normals: &Vec, +) -> Option { + let words: Vec<&str> = text.split("/").collect(); + let mut out: Vertex = Vertex { + pos: [0.0; 3], + normal: [0.0; 3], + uv: [0.0; 2], + }; + if words.len() == 1 || words.len() == 3 { + let v_index: isize = words[0].parse().unwrap_or(-1); + if v_index < 0 { + println!("pos err"); + return None; + } + out.pos = verts.get(v_index as usize - 1).unwrap_or(&[0.0; 3]).clone(); + + if words.len() == 3 && words[1].len() > 0 { + let v_index: isize = words[1].parse().unwrap_or(-1); + //println!("m: {}", v_index); + if v_index < 0 { + println!("uv err"); + return None; + } + out.uv = texts.get(v_index as usize - 1).unwrap_or(&[0.0; 2]).clone(); + } + if words.len() == 3 { + let v_index: isize = words[2].parse().unwrap_or(-1); + if v_index < 0 { + println!("normal err"); + return None; + } + out.normal = normals + .get(v_index as usize - 1) + .unwrap_or(&[0.0; 3]) + .clone(); + } + } else { + return None; + } + Some(out) +} + +fn parse_vec2(line: String) -> Vec2 { + let words: Vec<&str> = line.split(" ").collect(); + let mut out: Vec2 = [0.0; 2]; + for i in 0..2 { + if i >= words.len() { + continue; + } + out[i] = words[i + 1].parse().unwrap_or(0.0); + } + out[1] = -out[1] + 1.; + out +} +fn parse_vec3(line: String) -> Vec3 { + let words: Vec<&str> = line.split(" ").collect(); + let mut out: Vec3 = [0.0; 3]; + for i in 0..3 { + if i >= words.len() { + continue; + } + out[i] = words[i + 1].parse().unwrap_or(0.0); + } + out +} diff --git a/src/stage.rs b/src/stage.rs new file mode 100644 index 0000000..8a5accd --- /dev/null +++ b/src/stage.rs @@ -0,0 +1,283 @@ +use gl_matrix::common::{Vec2, Vec3, PI}; +use gl_matrix::mat4; +use miniquad::*; + +use crate::game::Game; + +use crate::render_tools::default_solid_shader; +use crate::render_tools::graphics::Graphics; +use crate::tools::Sides; + +pub struct Player { + pub rot: Vec2, + pub pos: Vec3, +} + +pub struct Stage { + game: Game, + graphics: Graphics, + pipeline: Pipeline, + player: Player, + mouse_grab: bool, + fullscreen: bool, + s_move: Sides, +} + +impl Stage { + pub fn new(ctx: &mut Context, game: Game) -> Self { + let mut graphics = Graphics::new(); + + graphics.add_model_obj( + ctx, + String::from(include_str!(concat!("../assets/models/Kirche.obj"))), + "test".to_string(), + ); + + graphics.load_texture( + ctx, + include_bytes!(concat!("../assets/images/avatar.png")), + "avatar".to_string(), + ); + + let shader = Shader::new( + ctx, + default_solid_shader::VERTEX, + default_solid_shader::FRAGMENT, + default_solid_shader::meta(), + ) + .unwrap(); + + let pipeline = Pipeline::with_params( + ctx, + &[BufferLayout::default()], + &[ + VertexAttribute::with_buffer("pos", VertexFormat::Float3, 0), + VertexAttribute::with_buffer("normal", VertexFormat::Float3, 0), + VertexAttribute::with_buffer("uv", VertexFormat::Float2, 0), + ], + shader, + PipelineParams { + depth_test: Comparison::LessOrEqual, + depth_write: true, + cull_face: CullFace::Back, + front_face_order: FrontFaceOrder::CounterClockwise, + color_blend: Some(BlendState::new( + Equation::Add, + BlendFactor::One, + BlendFactor::OneMinusValue(BlendValue::SourceAlpha), + )), + alpha_blend: Some(BlendState::new( + Equation::Add, + BlendFactor::One, + BlendFactor::Zero, + )), + + ..Default::default() + }, + ); + + Self { + game, + graphics, + pipeline, + player: Player { + rot: [0., 0.], + pos: [0., 0., -4.], + }, + s_move: Sides::all(false), + mouse_grab: false, + fullscreen: false, + } + } +} + +impl EventHandler for Stage { + fn update(&mut self, ctx: &mut Context) { + let delta_s = 1. / 60.; + + if self.s_move.top { + self.player.pos[1] += delta_s * 10.0; + } + if self.s_move.bottom { + self.player.pos[1] -= delta_s * 10.0; + } + if self.s_move.front { + self.player.pos[2] += self.player.rot[1].to_radians().cos() * delta_s * 10.0; + self.player.pos[0] -= self.player.rot[1].to_radians().sin() * delta_s * 10.0; + } + if self.s_move.back { + self.player.pos[2] -= self.player.rot[1].to_radians().cos() * delta_s * 10.0; + self.player.pos[0] += self.player.rot[1].to_radians().sin() * delta_s * 10.0; + } + if self.s_move.left { + self.player.pos[2] += self.player.rot[1].to_radians().sin() * delta_s * 10.0; + self.player.pos[0] += self.player.rot[1].to_radians().cos() * delta_s * 10.0; + } + if self.s_move.right { + self.player.pos[2] -= self.player.rot[1].to_radians().sin() * delta_s * 10.0; + self.player.pos[0] -= self.player.rot[1].to_radians().cos() * delta_s * 10.0; + } + self.game.tick(); + } + + fn draw(&mut self, ctx: &mut Context) { + ctx.begin_default_pass(PassAction::clear_color(0.75, 0.85, 0.8, 1.0)); + + //render + ctx.apply_pipeline(&self.pipeline); + let (w, h) = ctx.screen_size(); + let mut proj_matrix = mat4::create(); + mat4::perspective( + &mut proj_matrix, + 90.0f32.to_radians(), + w as f32 / h as f32, + 0.1, + Some(10000.0), + ); + + let mut cammat = mat4::create(); + let mut cammat1 = mat4::create(); + + mat4::identity(&mut cammat); + mat4::rotate_x(&mut cammat1, &cammat, -(self.player.rot[0] / 180. * PI)); + mat4::rotate_y(&mut cammat, &cammat1, self.player.rot[1] / 180. * PI); + mat4::translate( + &mut cammat1, + &cammat, + &[ + self.player.pos[0], + -self.player.pos[1], // - self.player.eyes, + self.player.pos[2], + ], + ); + + let mut view_matrix = mat4::create(); + mat4::look_at( + &mut view_matrix, + &[0., 0., 0.], + &[0., 0., 0.], + &[0., 0., 0.], + ); + mat4::multiply(&mut cammat, &cammat1, &view_matrix); + + ctx.apply_uniforms(&default_solid_shader::Uniforms { + proj: proj_matrix, + view: cammat, + fog: [140.0, 160.0], + wpos: [ + self.game.players[0].x as f32, + 0., + self.game.players[0].y as f32, + ], + }); + + ctx.apply_bindings(&Bindings { + vertex_buffers: vec![self.graphics.models["test"].0].clone(), + index_buffer: self.graphics.models["test"].1, + images: vec![self.graphics.textures["avatar"]], + }); + ctx.draw(0, self.graphics.models["test"].2 as i32, 1); + + ctx.end_render_pass(); + ctx.commit_frame(); + } + + fn key_down_event( + &mut self, + _ctx: &mut Context, + keycode: KeyCode, + _keymods: KeyMods, + _repeatt: bool, + ) { + if keycode == KeyCode::Space { + self.s_move.top = true; + } else if keycode == KeyCode::LeftShift { + self.s_move.bottom = true; + } else if keycode == KeyCode::W { + self.s_move.front = true; + } else if keycode == KeyCode::A { + self.s_move.left = true; + } else if keycode == KeyCode::S { + self.s_move.back = true; + } else if keycode == KeyCode::D { + self.s_move.right = true; + } else if keycode == KeyCode::K { + } + } + + fn key_up_event(&mut self, ctx: &mut Context, keycode: KeyCode, _keymods: KeyMods) { + if keycode == KeyCode::F11 { + if self.fullscreen { + ctx.set_fullscreen(false); + ctx.set_window_size(1000, 800); + self.fullscreen = false; + } else { + ctx.set_fullscreen(true); + self.fullscreen = true; + } + if self.mouse_grab { + //println!("reloc"); + ctx.set_cursor_grab(false); + ctx.show_mouse(true); + self.mouse_grab = false; + } + } else if keycode == KeyCode::Escape { + ctx.set_cursor_grab(false); + ctx.show_mouse(true); + self.mouse_grab = false; + } else if keycode == KeyCode::Space { + self.s_move.top = false; + } else if keycode == KeyCode::LeftShift { + self.s_move.bottom = false; + } else if keycode == KeyCode::W { + self.s_move.front = false; + } else if keycode == KeyCode::A { + self.s_move.left = false; + } else if keycode == KeyCode::S { + self.s_move.back = false; + } else if keycode == KeyCode::D { + self.s_move.right = false; + } + } + + fn window_minimized_event(&mut self, ctx: &mut Context) { + ctx.set_cursor_grab(false); + ctx.show_mouse(true); + self.mouse_grab = false; + } + + fn mouse_button_down_event( + &mut self, + ctx: &mut Context, + button: MouseButton, + _x: f32, + _y: f32, + ) { + if button == MouseButton::Left { + if !self.mouse_grab { + ctx.set_cursor_grab(true); + ctx.show_mouse(false); + self.mouse_grab = true; + } + } + } + + fn raw_mouse_motion(&mut self, _ctx: &mut Context, x: f32, y: f32) { + if self.mouse_grab { + self.player.rot[0] -= y / 10.0; + self.player.rot[1] += x / 10.0; + } + if self.player.rot[0] > 90.0 { + self.player.rot[0] = 90.; + } + if self.player.rot[0] < -90.0 { + self.player.rot[0] = -90.; + } + if self.player.rot[1] > 180.0 { + self.player.rot[1] -= 360.; + } + if self.player.rot[1] < -180.0 { + self.player.rot[1] += 360.; + } + } +} diff --git a/src/tools.rs b/src/tools.rs new file mode 100644 index 0000000..1d96130 --- /dev/null +++ b/src/tools.rs @@ -0,0 +1,43 @@ +use std::collections::HashMap; + +pub fn parse_arg(args: Vec) -> HashMap { + let mut map: HashMap = HashMap::new(); + let mut index = String::new(); + + for val in args { + if val.starts_with('-') { + if !index.is_empty() { + map.insert(String::from(&index), String::from("")); + index.clear(); + } + index = val[1..].to_string(); + } else if !index.is_empty() { + map.insert(index.clone(), val); + index.clear(); + } + } + if !index.is_empty() { + map.insert(index, String::from("")); + } + + map +} + +#[derive(Debug)] +pub struct Sides { + pub top: T, + pub bottom: T, + pub left: T, + pub right: T, + pub front: T, + pub back: T, +} + +impl Sides { + pub fn all(v: T) -> Sides { + Sides { top: v, bottom: v, left: v, right: v, front: v, back: v } + } + pub fn are_all(&self, v:T) -> bool { + self.top == v && self.bottom == v && self.left == v && self.right == v && self.front == v && self.back == v + } +} \ No newline at end of file